diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 63f62ca..ca73a14 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,6 +26,8 @@ jobs: with: fetch-depth: 0 persist-credentials: false + - name: Sync tags + run: git fetch --tags --force - name: semantic-release uses: cycjimmy/semantic-release-action@v6 id: semver diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1fda7fb..46e0558 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,7 +30,14 @@ We are committed to providing a welcoming environment for everyone. Disrespectfu ## Before You Start -**Open an issue first.** Before writing any code, please [open an issue](../../issues/new) to discuss your proposed change. This helps avoid duplicate work and ensures your contribution aligns with the project's direction. +**Open an issue first.** Before writing any code for a non-trivial change, you must [open an issue](../../issues/new) to discuss your proposed change. This helps avoid duplicate work and ensures your contribution aligns with the project's direction. **Pull requests submitted without a corresponding issue may be closed at the maintainers' discretion.** + +**Trivial fixes are exempt** and may be submitted directly as a PR. Examples: +- Typo and grammar corrections +- Documentation clarifications +- Small one-line bug fixes with an obvious cause + +If you're not sure whether your change qualifies as trivial, open an issue first. When opening an issue: - Use a clear, descriptive title @@ -149,7 +156,7 @@ This project uses [Semantic Versioning](https://semver.org/). Versions are manag 2. Open a pull request against the `dev` branch of this repository 3. In the PR description: - Summarize what your changes do and why - - Reference the related issue (e.g., `Closes #123`) + - Reference the related issue (e.g., `Closes #123`) — required for non-trivial changes - Note any relevant testing steps or environment details 4. Be responsive to feedback — maintainers may request changes. Pull requests with no activity for an extended period may be closed. diff --git a/Dockerfile b/Dockerfile index c91f9ac..c9224e6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,15 @@ FROM node:22-slim AS base # Install bash & curl for entrypoint script compatibility, graphicsmagick for pdf2pic, and vips-dev & build-base for sharp -RUN apt-get update && apt-get install -y bash curl graphicsmagick libvips-dev build-essential +RUN apt-get update && apt-get install -y \ + bash \ + curl \ + openssl \ + graphicsmagick \ + libvips-dev \ + build-essential \ + pciutils \ + && rm -rf /var/lib/apt/lists/* # All deps stage FROM base AS deps @@ -27,6 +35,31 @@ FROM base ARG VERSION=dev ARG BUILD_DATE ARG VCS_REF +ARG TARGETARCH + +# go-pmtiles (regional map extracts). Pinned so the CLI's stdout format stays +# in sync with parseDryRunOutput(). +ARG PMTILES_VERSION=1.30.2 +# Upstream releases don't ship a checksums file, so pin per-arch SHA256 here. +# When bumping PMTILES_VERSION, regenerate these with: +# curl -fsSL | sha256sum +ARG PMTILES_SHA256_AMD64=2cd3aa18868297fc88425038f794efdc0995e0275f4ca16fa496dd79e245a40c +ARG PMTILES_SHA256_ARM64=804cdf071834e1156af554c1a26cc42b56b9cde5a2db9c6e3653d16fb846d5fa +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) PMTILES_ARCH=x86_64; PMTILES_SHA256="${PMTILES_SHA256_AMD64}" ;; \ + arm64) PMTILES_ARCH=arm64; PMTILES_SHA256="${PMTILES_SHA256_ARM64}" ;; \ + *) echo "Unsupported TARGETARCH: ${TARGETARCH}" >&2; exit 1 ;; \ + esac; \ + TARBALL="go-pmtiles_${PMTILES_VERSION}_Linux_${PMTILES_ARCH}.tar.gz"; \ + cd /tmp; \ + curl -fsSL -o "$TARBALL" \ + "https://github.com/protomaps/go-pmtiles/releases/download/v${PMTILES_VERSION}/${TARBALL}"; \ + echo "${PMTILES_SHA256} ${TARBALL}" | sha256sum -c -; \ + tar -xzf "$TARBALL" -C /usr/local/bin pmtiles; \ + rm -f "$TARBALL"; \ + chmod +x /usr/local/bin/pmtiles; \ + /usr/local/bin/pmtiles version # Labels LABEL org.opencontainers.image.title="Project N.O.M.A.D" \ @@ -43,13 +76,19 @@ ENV NODE_ENV=production WORKDIR /app COPY --from=production-deps /app/node_modules /app/node_modules COPY --from=build /app/build /app -# Copy root package.json for version info -COPY package.json /app/version.json +# Generate version.json from the VERSION build-arg so the image tag is the +# single source of truth (previously copied root package.json, which drifted +# from the tag when semantic-release did not commit the bump back). +RUN echo "{\"version\":\"${VERSION}\"}" > /app/version.json # Copy docs and README for access within the container COPY admin/docs /app/docs COPY README.md /app/README.md +# Empty Calibre library, seeded into storage/books on Calibre-Web install +# (see DockerService._runPreinstallActions__CalibreWeb) +COPY install/calibre-empty-library/metadata.db /app/assets/calibre/metadata.db + # Copy entrypoint script and ensure it's executable COPY install/entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh diff --git a/FAQ.md b/FAQ.md index fee06f8..1823c7b 100644 --- a/FAQ.md +++ b/FAQ.md @@ -20,7 +20,9 @@ Long answer: Custom storage paths, mount points, and external drives (like iSCSI ## Can I run NOMAD on MAC, WSL2, or a non-Debian-based Distro? -See [Why does NOMAD require a Debian-based OS?](#why-does-nomad-require-a-debian-based-os) +**WSL2 on Windows** is community-supported via the [WSL2 install guide](https://www.projectnomad.us/install/wsl2) — covers two install paths (native Docker and Docker Desktop) with all known gotchas documented and empirical performance numbers comparing WSL2 to bare-metal. + +**macOS and other non-Debian Linux distros** aren't officially supported. See [Why does NOMAD require a Debian-based OS?](#why-does-nomad-require-a-debian-based-os) for details. ## Why does NOMAD require a Debian-based OS? @@ -28,7 +30,7 @@ Project N.O.M.A.D. is currently designed to run on Debian-based Linux distributi Support for other operating systems will come in the future, but because our development resources are limited as a free and open-source project, we needed to prioritize our efforts and focus on a narrower set of supported platforms for the initial release. We chose Debian-based Linux as our starting point because it's widely used, easy to spin up, and provides a stable environment for running Docker containers. -Community members have provided guides for running N.O.M.A.D. on other platforms (e.g. WSL2, Mac, etc.) in our Discord community and [Github Discussions](https://github.com/Crosstalk-Solutions/project-nomad/discussions), so if you're interested in running N.O.M.A.D. on a non-Debian-based system, we recommend checking there for any available resources or guides. However, keep in mind that if you choose to run N.O.M.A.D. on a non-Debian-based system, you may encounter issues that we won't be able to provide support for, and you may need to have a higher level of technical expertise to troubleshoot and resolve any problems that arise. +For Windows users, the [WSL2 install guide](https://www.projectnomad.us/install/wsl2) provides a community-supported path. Community members have also published guides for other platforms (e.g. macOS) in our Discord community and [Github Discussions](https://github.com/Crosstalk-Solutions/project-nomad/discussions), so if you're interested in running N.O.M.A.D. on a non-Debian-based system, we recommend checking there for any available resources or guides. However, keep in mind that if you choose to run N.O.M.A.D. on a non-Debian-based system, you may encounter issues that we won't be able to provide support for, and you may need to have a higher level of technical expertise to troubleshoot and resolve any problems that arise. ## Can I run NOMAD on a Raspberry Pi or other ARM-based device? Project N.O.M.A.D. is currently designed to run on x86-64 architecture, and we have not yet tested or optimized it for ARM-based devices like the Raspberry Pi (and have not published any official images for ARM architecture). diff --git a/README.md b/README.md index 99890c6..b380417 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ --- -Project N.O.M.A.D. is a self-contained, offline-first knowledge and education server packed with critical tools, knowledge, and AI to keep you informed and empowered—anytime, anywhere. +Project N.O.M.A.D. is a self-contained, offline-first knowledge and education server packed with critical tools, knowledge, and AI to keep you informed and empowered — anytime, anywhere. ## Installation & Quickstart Project N.O.M.A.D. can be installed on any Debian-based operating system (we recommend Ubuntu). Installation is completely terminal-based, and all tools and resources are designed to be accessed through the browser, so there's no need for a desktop environment if you'd rather setup N.O.M.A.D. as a "server" and access it through other clients. @@ -32,7 +32,7 @@ sudo bash install_nomad.sh Project N.O.M.A.D. is now installed on your device! Open a browser and navigate to `http://localhost:8080` (or `http://DEVICE_IP:8080`) to start exploring! -For a complete step-by-step walkthrough (including Ubuntu installation), see the [Installation Guide](https://www.projectnomad.us/install). +For a complete step-by-step walkthrough (including Ubuntu installation), see the [Installation Guide](https://www.projectnomad.us/install). For Windows users, see the [WSL2 install guide](https://www.projectnomad.us/install/wsl2) — community-supported path covering native Docker and Docker Desktop install routes. ### Advanced Installation For more control over the installation process, copy and paste the [Docker Compose template](https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/management_compose.yaml) into a `docker-compose.yml` file and customize it to your liking (be sure to replace any placeholders with your actual values). Then, run `docker compose up -d` to start the Command Center and its dependencies. Note: this method is recommended for advanced users only, as it requires familiarity with Docker and manual configuration before starting. @@ -48,6 +48,8 @@ N.O.M.A.D. is a management UI ("Command Center") and API that orchestrates a col - **Data Tools** — encryption, encoding, and analysis via [CyberChef](https://gchq.github.io/CyberChef/) - **Notes** — local note-taking via [FlatNotes](https://github.com/dullage/flatnotes) - **System Benchmark** — hardware scoring with a [community leaderboard](https://benchmark.projectnomad.us) +- **Supply Depot** — a one-click app catalog (PDF tools, file browser, e-book library, password manager, and more) plus the ability to run your own custom Docker containers +- **Automatic Updates** — opt-in, hands-off updates for the core software, installed apps, and offline content, on a schedule you control - **Easy Setup Wizard** — guided first-time configuration with curated content collections N.O.M.A.D. also includes built-in tools like a Wikipedia content selector, ZIM library manager, and content explorer. @@ -59,18 +61,19 @@ N.O.M.A.D. also includes built-in tools like a Wikipedia content selector, ZIM l | Information Library | Kiwix | Offline Wikipedia, medical references, survival guides, ebooks | | AI Assistant | Ollama + Qdrant | Built-in chat with document upload and semantic search | | Education Platform | Kolibri | Khan Academy courses, progress tracking, multi-user support | -| Offline Maps | ProtoMaps | Downloadable regional maps with search and navigation | +| Offline Maps | ProtoMaps | Downloadable regional maps for offline viewing and search | | Data Tools | CyberChef | Encryption, encoding, hashing, and data analysis | | Notes | FlatNotes | Local note-taking with markdown support | | System Benchmark | Built-in | Hardware scoring, Builder Tags, and community leaderboard | +| Supply Depot | Built-in | One-click app catalog + bring-your-own custom Docker containers | ## Device Requirements While many similar offline survival computers are designed to be run on bare-minimum, lightweight hardware, Project N.O.M.A.D. is quite the opposite. To install and run the available AI tools, we highly encourage the use of a beefy, GPU-backed device to make the most of your install. -At it's core, however, N.O.M.A.D. is still very lightweight. For a barebones installation of the management application itself, the following minimal specs are required: +At its core, however, N.O.M.A.D. is still very lightweight. For a barebones installation of the management application itself, the following minimal specs are required: -*Note: Project N.O.M.A.D. is not sponsored by any hardware manufacturer and is designed to be as hardware-agnostic as possible. The harware listed below is for example/comparison use only* +*Note: Project N.O.M.A.D. is not sponsored by any hardware manufacturer and is designed to be as hardware-agnostic as possible. The hardware listed below is for example/comparison use only* #### Minimum Specs - Processor: 2 GHz dual-core processor or better @@ -79,7 +82,7 @@ At it's core, however, N.O.M.A.D. is still very lightweight. For a barebones ins - OS: Debian-based (Ubuntu recommended) - Stable internet connection (required during install only) -To run LLM's and other included AI tools: +To run LLMs and other included AI tools: #### Optimal Specs - Processor: AMD Ryzen 7 or Intel Core i7 or better @@ -91,12 +94,12 @@ To run LLM's and other included AI tools: **For detailed build recommendations at three price points ($150–$1,000+), see the [Hardware Guide](https://www.projectnomad.us/hardware).** -Again, Project N.O.M.A.D. itself is quite lightweight - it's the tools and resources you choose to install with N.O.M.A.D. that will determine the specs required for your unique deployment +Again, Project N.O.M.A.D. itself is quite lightweight — it's the tools and resources you choose to install with N.O.M.A.D. that will determine the specs required for your unique deployment #### Running AI models on a different host -By default, N.O.M.A.D.'s installer will attempt to setup Ollama on the host when the AI Assistant is installed. However, if you would like to run the AI model on a different host, you can go to the settings of of the AI assistant and input a URL for either an ollama or OpenAI-compatible API server (such as LM Studio). -Note that if you use Ollama on a different host, you must start the server with this option `OLLAMA_HOST=0.0.0.0`. -Ollama is the preferred way to use the AI assistant as it has features such as model download that OpenAI API does not support. So when using LM Studio for example, you will have to use LM Studio to download models. +By default, N.O.M.A.D.'s installer will attempt to setup Ollama on the host when the AI Assistant is installed. However, if you would like to run the AI model on a different host, you can go to the settings of the AI assistant and input a URL for either an ollama or OpenAI-compatible API server (such as LM Studio). +Note that if you use Ollama on a different host, you must start the server with this option: `OLLAMA_HOST=0.0.0.0`. +Ollama is the preferred way to use the AI assistant, as it has features such as model download that OpenAI API does not support. So when using LM Studio, for example, you will have to use LM Studio to download models. You are responsible for the setup of Ollama/OpenAI server on the other host. ## Frequently Asked Questions (FAQ) @@ -105,25 +108,62 @@ For answers to common questions about Project N.O.M.A.D., please see our [FAQ](F ## About Internet Usage & Privacy Project N.O.M.A.D. is designed for offline usage. An internet connection is only required during the initial installation (to download dependencies) and if you (the user) decide to download additional tools and resources at a later time. Otherwise, N.O.M.A.D. does not require an internet connection and has ZERO built-in telemetry. -To test internet connectivity, N.O.M.A.D. attempts to make a request to Cloudflare's utility endpoint, `https://1.1.1.1/cdn-cgi/trace` and checks for a successful response. +To test internet connectivity, N.O.M.A.D. first attempts to make a request to Cloudflare's utility endpoint, `https://1.1.1.1/cdn-cgi/trace`. If that endpoint is unreachable (for example, because your network blocks `1.1.1.1`), it falls back to other endpoints the application already contacts (the GitHub API and the Project N.O.M.A.D. API) and considers the connection online if any of them respond. + +You can override the endpoint used for this check in two ways. The connectivity test URL can be configured from the UI under **Settings → Advanced** (stored locally on your instance), or you can set the `INTERNET_STATUS_TEST_URL` environment variable. When set, the environment variable always takes precedence over the UI-configured value. If neither is set, the built-in defaults above are used. ## About Security -By design, Project N.O.M.A.D. is intended to be open and available without hurdles - it includes no authentication. If you decide to connect your device to a local network after install (e.g. for allowing other devices to access it's resources), you can block/open ports to control which services are exposed. +By design, Project N.O.M.A.D. is intended to be open and available without hurdles — it includes no authentication. If you decide to connect your device to a local network after install (e.g. for allowing other devices to access its resources), you can block/open ports to control which services are exposed. -**Will authentication be added in the future?** Maybe. It's not currently a priority, but if there's enough demand for it, we may consider building in an optional authentication layer in a future release to support uses cases where multiple users need access to the same instance but with different permission levels (e.g. family use with parental controls, classroom use with teacher/admin accounts, etc.). We have a suggestion for this on our public roadmap, so if this is something you'd like to see, please upvote it here: https://roadmap.projectnomad.us/posts/1/user-authentication-please-build-in-user-auth-with-admin-user-roles +**Will authentication be added in the future?** Maybe. It's not currently a priority, but if there's enough demand for it, we may consider building in an optional authentication layer in a future release to support use cases where multiple users need access to the same instance but with different permission levels (e.g. family use with parental controls, classroom use with teacher/admin accounts, etc.). We have a suggestion for this on our public roadmap, so if this is something you'd like to see, please upvote it here: https://roadmap.projectnomad.us/posts/1/user-authentication-please-build-in-user-auth-with-admin-user-roles For now, we recommend using network-level controls to manage access if you're planning to expose your N.O.M.A.D. instance to other devices on a local network. N.O.M.A.D. is not designed to be exposed directly to the internet, and we strongly advise against doing so unless you really know what you're doing, have taken appropriate security measures, and understand the risks involved. ## Contributing Contributions are welcome and appreciated! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to the project. +### Testing Auto-Updates (Dry Run) + +The Command Center can automatically install **minor/patch** updates of itself during a configurable window, after a cool-off period, and only when pre-flight checks pass (sufficient disk for the new image, no downloads or app installs in progress). Major versions always require a manual update. + +Because exercising this logic with real version bumps is impractical, an Ace command runs the **entire decision pipeline without ever triggering an update**. Run it from the `admin/` directory: + +```bash +# 1) Deterministic scenario suite — no network, DB, or Docker required. +# Proves every branch (major-only, cool-off, prerelease/draft, window wrap, …) +# and exits non-zero on failure, so it's safe to wire into CI. +node ace auto-update:dry-run --scenarios + +# 2) Simulate "what would happen if I were running 1.32.0 right now?" +# against the LIVE GitHub releases feed and real pre-flight checks: +node ace auto-update:dry-run --current=1.32.0 --force-enabled + +# 3) Fully offline simulation with a canned release list and a fixed clock: +node ace auto-update:dry-run --current=1.32.0 --force-enabled \ + --releases-file=./fixtures/releases.json --now=2026-06-04T21:00:00Z \ + --window-start=20:00 --window-end=23:00 --cooloff=72 --skip-preflight +``` + +It prints the resolved decision — current version, whether the clock is inside the window, the eligible target (if any), and pre-flight blockers — ending in a clear verdict such as `WOULD UPDATE → v1.33.2` or `WOULD NOT UPDATE (outside-window): …`. **No real update is ever requested.** + +| Flag | Description | +|------|-------------| +| `--scenarios` | Run the built-in deterministic scenario suite and exit | +| `--current=` | Simulate this currently-running version (e.g. `1.32.0`) | +| `--force-enabled` | Treat auto-update as enabled, ignoring the saved setting | +| `--cooloff=` | Override the cool-off period | +| `--window-start=` / `--window-end=` | Override the update window | +| `--now=` | Simulate the clock at a specific time | +| `--releases-file=` | Use a local JSON releases array instead of fetching GitHub (offline) | +| `--skip-preflight` | Bypass the Docker/disk/queue pre-flight checks | + ## Community & Resources - **Website:** [www.projectnomad.us](https://www.projectnomad.us) - Learn more about the project - **Discord:** [Join the Community](https://discord.com/invite/crosstalksolutions) - Get help, share your builds, and connect with other NOMAD users - **Benchmark Leaderboard:** [benchmark.projectnomad.us](https://benchmark.projectnomad.us) - See how your hardware stacks up against other NOMAD builds -- **Troubleshooting Guide:** [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Find solutions to common issues - **FAQ:** [FAQ.md](FAQ.md) - Find answers to frequently asked questions +- **Community Add-Ons:** [admin/docs/community-add-ons.md](admin/docs/community-add-ons.md) - Third-party content packs built by the community ## License diff --git a/admin/.env.example b/admin/.env.example index 05a03fd..738d505 100644 --- a/admin/.env.example +++ b/admin/.env.example @@ -1,6 +1,10 @@ PORT=8080 HOST=localhost LOG_LEVEL=info +# Optional: override the URL used to test internet connectivity. +# Defaults to https://1.1.1.1/cdn-cgi/trace with fallbacks to hosts the app +# already contacts. Leave unset to use the defaults. +# INTERNET_STATUS_TEST_URL=https://1.1.1.1/cdn-cgi/trace APP_KEY=some_random_key NODE_ENV=development SESSION_DRIVER=cookie @@ -12,6 +16,9 @@ DB_PASSWORD=password DB_SSL=false REDIS_HOST=localhost REDIS_PORT=6379 +# Optional: Redis logical database index (0-15). Defaults to 0 if unset. +# Set this when sharing a Redis instance across services to avoid key collisions. +# REDIS_DB=0 # Storage path for NOMAD content (ZIM files, maps, etc.) # On Windows dev, use an absolute path like: C:/nomad-storage # On Linux production, use: /opt/project-nomad/storage diff --git a/admin/adonisrc.ts b/admin/adonisrc.ts index 37046d2..9b82ee0 100644 --- a/admin/adonisrc.ts +++ b/admin/adonisrc.ts @@ -55,6 +55,9 @@ export default defineConfig({ () => import('@adonisjs/transmit/transmit_provider'), () => import('#providers/map_static_provider'), () => import('#providers/kiwix_migration_provider'), + () => import('#providers/qdrant_restart_policy_provider'), + () => import('#providers/version_check_provider'), + () => import('#providers/gpu_passthrough_remediation_provider'), ], /* @@ -106,6 +109,10 @@ export default defineConfig({ pattern: 'resources/views/**/*.edge', reloadServer: false, }, + { + pattern: 'resources/geodata/**/*.geojson', + reloadServer: false, + }, { pattern: 'public/**', reloadServer: false, diff --git a/admin/app/controllers/benchmark_controller.ts b/admin/app/controllers/benchmark_controller.ts index b3e5343..da483c0 100644 --- a/admin/app/controllers/benchmark_controller.ts +++ b/admin/app/controllers/benchmark_controller.ts @@ -5,6 +5,7 @@ import { runBenchmarkValidator, submitBenchmarkValidator } from '#validators/ben import { RunBenchmarkJob } from '#jobs/run_benchmark_job' import type { BenchmarkType } from '../../types/benchmark.js' import { randomUUID } from 'node:crypto' +import logger from '@adonisjs/core/services/logger' @inject() export default class BenchmarkController { @@ -52,9 +53,10 @@ export default class BenchmarkController { result, }) } catch (error) { + logger.error({ err: error }, '[BenchmarkController] Benchmark run failed') return response.status(500).send({ success: false, - error: error.message, + error: 'An internal error occurred while running the benchmark.', }) } } @@ -181,9 +183,10 @@ export default class BenchmarkController { } catch (error) { // Pass through the status code from the service if available, otherwise default to 400 const statusCode = (error as any).statusCode || 400 + logger.error({ err: error }, '[BenchmarkController] Benchmark submit failed') return response.status(statusCode).send({ success: false, - error: error.message, + error: 'Failed to submit benchmark results.', }) } } diff --git a/admin/app/controllers/chats_controller.ts b/admin/app/controllers/chats_controller.ts index 005e60d..ff25f8b 100644 --- a/admin/app/controllers/chats_controller.ts +++ b/admin/app/controllers/chats_controller.ts @@ -5,6 +5,7 @@ import { createSessionSchema, updateSessionSchema, addMessageSchema } from '#val import KVStore from '#models/kv_store' import { SystemService } from '#services/system_service' import { SERVICE_NAMES } from '../../constants/service_names.js' +import logger from '@adonisjs/core/services/logger' @inject() export default class ChatsController { @@ -45,8 +46,9 @@ export default class ChatsController { const session = await this.chatService.createSession(data.title, data.model) return response.status(201).json(session) } catch (error) { + logger.error({ err: error }, '[ChatsController] Failed to create session') return response.status(500).json({ - error: error instanceof Error ? error.message : 'Failed to create session', + error: 'Failed to create session', }) } } @@ -56,8 +58,9 @@ export default class ChatsController { const suggestions = await this.chatService.getChatSuggestions() return response.status(200).json({ suggestions }) } catch (error) { + logger.error({ err: error }, '[ChatsController] Failed to get suggestions') return response.status(500).json({ - error: error instanceof Error ? error.message : 'Failed to get suggestions', + error: 'Failed to get suggestions', }) } } @@ -69,8 +72,9 @@ export default class ChatsController { const session = await this.chatService.updateSession(sessionId, data) return session } catch (error) { + logger.error({ err: error }, '[ChatsController] Failed to update session') return response.status(500).json({ - error: error instanceof Error ? error.message : 'Failed to update session', + error: 'Failed to update session', }) } } @@ -81,8 +85,9 @@ export default class ChatsController { await this.chatService.deleteSession(sessionId) return response.status(204) } catch (error) { + logger.error({ err: error }, '[ChatsController] Failed to delete session') return response.status(500).json({ - error: error instanceof Error ? error.message : 'Failed to delete session', + error: 'Failed to delete session', }) } } @@ -94,8 +99,9 @@ export default class ChatsController { const message = await this.chatService.addMessage(sessionId, data.role, data.content) return response.status(201).json(message) } catch (error) { + logger.error({ err: error }, '[ChatsController] Failed to add message') return response.status(500).json({ - error: error instanceof Error ? error.message : 'Failed to add message', + error: 'Failed to add message', }) } } @@ -105,8 +111,9 @@ export default class ChatsController { const result = await this.chatService.deleteAllSessions() return response.status(200).json(result) } catch (error) { + logger.error({ err: error }, '[ChatsController] Failed to delete all sessions') return response.status(500).json({ - error: error instanceof Error ? error.message : 'Failed to delete all sessions', + error: 'Failed to delete all sessions', }) } } diff --git a/admin/app/controllers/maps_controller.ts b/admin/app/controllers/maps_controller.ts index f5fb0f3..097d9fb 100644 --- a/admin/app/controllers/maps_controller.ts +++ b/admin/app/controllers/maps_controller.ts @@ -4,6 +4,8 @@ import { assertNotPrivateUrl, downloadCollectionValidator, filenameParamValidator, + mapExtractPreflightValidator, + mapExtractValidator, remoteDownloadValidator, remoteDownloadValidatorOptional, } from '#validators/common' @@ -87,6 +89,28 @@ export default class MapsController { } } + async listCountries({}: HttpContext) { + return { countries: await this.mapService.listCountries() } + } + + async listCountryGroups({}: HttpContext) { + return { groups: await this.mapService.listCountryGroups() } + } + + async extractPreflight({ request }: HttpContext) { + const payload = await request.validateUsing(mapExtractPreflightValidator) + return await this.mapService.extractPreflight(payload) + } + + async extractRegion({ request }: HttpContext) { + const payload = await request.validateUsing(mapExtractValidator) + const result = await this.mapService.extractRegion(payload) + return { + message: 'Extract started successfully', + ...result, + } + } + async styles({ request, response }: HttpContext) { // Automatically ensure base assets are present before generating styles const baseAssetsExist = await this.mapService.ensureBaseAssets() @@ -137,9 +161,11 @@ export default class MapsController { vine.compile( vine.object({ name: vine.string().trim().minLength(1).maxLength(255), - longitude: vine.number(), - latitude: vine.number(), + longitude: vine.number().min(-180).max(180), + latitude: vine.number().min(-90).max(90), color: vine.string().trim().maxLength(20).optional(), + notes: vine.string().trim().nullable().optional(), + marker_type: vine.string().trim().maxLength(20).optional(), }) ) ) @@ -148,6 +174,8 @@ export default class MapsController { longitude: payload.longitude, latitude: payload.latitude, color: payload.color ?? 'orange', + notes: payload.notes ?? null, + marker_type: payload.marker_type ?? 'pin', }) return marker } @@ -163,11 +191,19 @@ export default class MapsController { vine.object({ name: vine.string().trim().minLength(1).maxLength(255).optional(), color: vine.string().trim().maxLength(20).optional(), + longitude: vine.number().min(-180).max(180).optional(), + latitude: vine.number().min(-90).max(90).optional(), + notes: vine.string().trim().nullable().optional(), + marker_type: vine.string().trim().maxLength(20).optional(), }) ) ) if (payload.name !== undefined) marker.name = payload.name if (payload.color !== undefined) marker.color = payload.color + if (payload.longitude !== undefined) marker.longitude = payload.longitude + if (payload.latitude !== undefined) marker.latitude = payload.latitude + if (payload.notes !== undefined) marker.notes = payload.notes + if (payload.marker_type !== undefined) marker.marker_type = payload.marker_type await marker.save() return marker } diff --git a/admin/app/controllers/ollama_controller.ts b/admin/app/controllers/ollama_controller.ts index e58d249..9174616 100644 --- a/admin/app/controllers/ollama_controller.ts +++ b/admin/app/controllers/ollama_controller.ts @@ -5,10 +5,11 @@ import { RagService } from '#services/rag_service' import Service from '#models/service' import KVStore from '#models/kv_store' import { modelNameSchema } from '#validators/download' -import { chatSchema, getAvailableModelsSchema } from '#validators/ollama' +import { chatSchema, getAvailableModelsSchema, unloadChatModelsSchema } from '#validators/ollama' +import { assertNotCloudMetadataUrl } from '#validators/common' import { inject } from '@adonisjs/core' import type { HttpContext } from '@adonisjs/core/http' -import { DEFAULT_QUERY_REWRITE_MODEL, RAG_CONTEXT_LIMITS, SYSTEM_PROMPTS } from '../../constants/ollama.js' +import { RAG_CONTEXT_LIMITS, SYSTEM_PROMPTS } from '../../constants/ollama.js' import { SERVICE_NAMES } from '../../constants/service_names.js' import logger from '@adonisjs/core/services/logger' type Message = { role: 'system' | 'user' | 'assistant'; content: string } @@ -33,6 +34,19 @@ export default class OllamaController { }) } + /** + * Send Ollama `keep_alive: 0` hints to every currently-loaded chat model + * except the embedding model and (optionally) a target model to preserve. + * Used by the chat UI to enforce the "one chat model at a time" invariant + * on model-switch, session-switch, and page-load. Best-effort: a failure + * here should not block the calling flow. + */ + async unloadChatModels({ request, response }: HttpContext) { + const { targetModel } = await request.validateUsing(unloadChatModelsSchema) + const unloaded = await this.ollamaService.unloadAllChatModelsExcept(targetModel ?? null) + return response.status(200).json({ unloaded }) + } + async chat({ request, response }: HttpContext) { const reqData = await request.validateUsing(chatSchema) @@ -59,7 +73,7 @@ export default class OllamaController { // Query rewriting for better RAG retrieval with manageable context // Will return user's latest message if no rewriting is needed - const rewrittenQuery = await this.rewriteQueryWithContext(reqData.messages) + const rewrittenQuery = await this.rewriteQueryWithContext(reqData.messages, reqData.model) logger.debug(`[OllamaController] Rewritten query for RAG: "${rewrittenQuery}"`) if (rewrittenQuery) { @@ -92,8 +106,17 @@ export default class OllamaController { `[RAG] Injecting ${trimmedDocs.length}/${relevantDocs.length} results (model: ${reqData.model}, maxResults: ${maxResults}, maxTokens: ${maxTokens || 'unlimited'})` ) + // Label each context block with its source title when available (a neutral, + // honest provenance signal) but never the raw relevance score — nomic cosine + // scores for genuinely relevant passages sit ~0.4-0.6, and surfacing e.g. + // "42%" primes the model to distrust correct context. Scores stay in the logs + // above for debugging. const contextText = trimmedDocs - .map((doc, idx) => `[Context ${idx + 1}] (Relevance: ${(doc.score * 100).toFixed(1)}%)\n${doc.text}`) + .map((doc, idx) => { + const title = doc.metadata?.full_title || doc.metadata?.article_title + const label = title ? `[Context ${idx + 1} — ${title}]` : `[Context ${idx + 1}]` + return `${label}\n${doc.text}` + }) .join('\n\n') const systemMessage = { @@ -157,7 +180,7 @@ export default class OllamaController { await this.chatService.addMessage(sessionId, 'assistant', fullContent) const messageCount = await this.chatService.getMessageCount(sessionId) if (messageCount <= 2 && userContent) { - this.chatService.generateTitle(sessionId, userContent, fullContent).catch((err) => { + this.chatService.generateTitle(sessionId, userContent, fullContent, reqData.model).catch((err) => { logger.error(`[OllamaController] Title generation failed: ${err instanceof Error ? err.message : err}`) }) } @@ -172,7 +195,7 @@ export default class OllamaController { await this.chatService.addMessage(sessionId, 'assistant', result.message.content) const messageCount = await this.chatService.getMessageCount(sessionId) if (messageCount <= 2 && userContent) { - this.chatService.generateTitle(sessionId, userContent, result.message.content).catch((err) => { + this.chatService.generateTitle(sessionId, userContent, result.message.content, reqData.model).catch((err) => { logger.error(`[OllamaController] Title generation failed: ${err instanceof Error ? err.message : err}`) }) } @@ -212,20 +235,29 @@ export default class OllamaController { return response.status(404).send({ success: false, message: 'Ollama service record not found.' }) } - // Clear path: null or empty URL removes remote config and marks service as not installed + // Clear path: null or empty URL removes remote config. If a local nomad_ollama container + // still exists (user had previously installed AI Assistant locally), restart it and keep + // the service marked installed. Otherwise fall back to uninstalled. if (!remoteUrl || remoteUrl.trim() === '') { await KVStore.clearValue('ai.remoteOllamaUrl') - ollamaService.installed = false + const hasLocalContainer = await this._startLocalOllamaContainerIfExists() + ollamaService.installed = hasLocalContainer ollamaService.installation_status = 'idle' await ollamaService.save() - return { success: true, message: 'Remote Ollama configuration cleared.' } + return { + success: true, + message: hasLocalContainer + ? 'Remote Ollama cleared. Local Ollama container restored.' + : 'Remote Ollama configuration cleared.', + } } - // Validate URL format - if (!remoteUrl.startsWith('http')) { + try { + assertNotCloudMetadataUrl(remoteUrl) + } catch (err) { return response.status(400).send({ success: false, - message: 'Invalid URL. Must start with http:// or https://', + message: err instanceof Error ? err.message : 'Invalid URL.', }) } @@ -253,6 +285,10 @@ export default class OllamaController { ollamaService.installation_status = 'idle' await ollamaService.save() + // Stop the local nomad_ollama container (if running) so it doesn't compete with the + // remote host for GPU / port 11434. Preserves the container and its models volume. + await this._stopLocalOllamaContainer() + // Install Qdrant if not already installed (fire-and-forget) const qdrantService = await Service.query().where('service_name', SERVICE_NAMES.QDRANT).first() if (qdrantService && !qdrantService.installed) { @@ -270,6 +306,50 @@ export default class OllamaController { return { success: true, message: 'Remote Ollama configured.' } } + private async _stopLocalOllamaContainer(): Promise { + try { + const containers = await this.dockerService.docker.listContainers({ all: true }) + const ollamaContainer = containers.find((c) => + c.Names.includes(`/${SERVICE_NAMES.OLLAMA}`) + ) + if (!ollamaContainer || ollamaContainer.State !== 'running') { + return + } + await this.dockerService.docker.getContainer(ollamaContainer.Id).stop() + this.dockerService.invalidateServicesStatusCache() + logger.info('[OllamaController] Stopped local nomad_ollama (remote Ollama configured)') + } catch (error: any) { + logger.error( + { err: error }, + '[OllamaController] Failed to stop local nomad_ollama; remote Ollama is still active' + ) + } + } + + private async _startLocalOllamaContainerIfExists(): Promise { + try { + const containers = await this.dockerService.docker.listContainers({ all: true }) + const ollamaContainer = containers.find((c) => + c.Names.includes(`/${SERVICE_NAMES.OLLAMA}`) + ) + if (!ollamaContainer) { + return false + } + if (ollamaContainer.State !== 'running') { + await this.dockerService.docker.getContainer(ollamaContainer.Id).start() + this.dockerService.invalidateServicesStatusCache() + logger.info('[OllamaController] Started local nomad_ollama (remote Ollama cleared)') + } + return true + } catch (error: any) { + logger.error( + { err: error }, + '[OllamaController] Failed to start local nomad_ollama on remote clear' + ) + return false + } + } + async deleteModel({ request }: HttpContext) { const reqData = await request.validateUsing(modelNameSchema) await this.ollamaService.deleteModel(reqData.model) @@ -312,17 +392,31 @@ export default class OllamaController { } private async rewriteQueryWithContext( - messages: Message[] + messages: Message[], + model: string ): Promise { + const lastUserMessage = [...messages].reverse().find(msg => msg.role === 'user') + try { + // Skip the entire RAG pipeline if there are no documents to search + const hasDocuments = await this.ragService.hasDocuments() + if (!hasDocuments) { + return null + } + // Get recent conversation history (last 6 messages for 3 turns) const recentMessages = messages.slice(-6) - // Skip rewriting for short conversations. Rewriting adds latency with - // little RAG benefit until there is enough context to matter. + // Skip rewriting on the very first turn — with only one user message + // there is no prior context to fold in, so the rewrite would just echo + // the message back at the cost of an extra LLM round-trip. From the + // first follow-up onward we need the rewrite so the RAG query carries + // entities and topics from earlier turns ("the bars" → "Hershey's bars + // chocolate poisoning dog"); without it, embeddings match nothing and + // the assistant loses the thread. const userMessages = recentMessages.filter(msg => msg.role === 'user') - if (userMessages.length <= 2) { - return userMessages[userMessages.length - 1]?.content || null + if (userMessages.length < 2) { + return lastUserMessage?.content || null } const conversationContext = recentMessages @@ -336,17 +430,8 @@ export default class OllamaController { }) .join('\n') - const installedModels = await this.ollamaService.getModels(true) - const rewriteModelAvailable = installedModels?.some(model => model.name === DEFAULT_QUERY_REWRITE_MODEL) - if (!rewriteModelAvailable) { - logger.warn(`[RAG] Query rewrite model "${DEFAULT_QUERY_REWRITE_MODEL}" not available. Skipping query rewriting.`) - const lastUserMessage = [...messages].reverse().find(msg => msg.role === 'user') - return lastUserMessage?.content || null - } - - // FUTURE ENHANCEMENT: allow the user to specify which model to use for rewriting const response = await this.ollamaService.chat({ - model: DEFAULT_QUERY_REWRITE_MODEL, + model, messages: [ { role: 'system', @@ -367,7 +452,6 @@ export default class OllamaController { `[RAG] Query rewriting failed: ${error instanceof Error ? error.message : error}` ) // Fallback to last user message if rewriting fails - const lastUserMessage = [...messages].reverse().find(msg => msg.role === 'user') return lastUserMessage?.content || null } } diff --git a/admin/app/controllers/rag_controller.ts b/admin/app/controllers/rag_controller.ts index 55b5ef6..7738d0f 100644 --- a/admin/app/controllers/rag_controller.ts +++ b/admin/app/controllers/rag_controller.ts @@ -1,11 +1,14 @@ import { RagService } from '#services/rag_service' import { EmbedFileJob } from '#jobs/embed_file_job' +import KbRatioRegistry from '#models/kb_ratio_registry' import { inject } from '@adonisjs/core' import type { HttpContext } from '@adonisjs/core/http' import app from '@adonisjs/core/services/app' import { randomBytes } from 'node:crypto' import { sanitizeFilename } from '../utils/fs.js' -import { deleteFileSchema, getJobStatusSchema } from '#validators/rag' +import { basename } from 'node:path' +import { deleteFileSchema, embedFileSchema, estimateBatchSchema, fileSourceSchema, getJobStatusSchema } from '#validators/rag' +import logger from '@adonisjs/core/services/logger' @inject() export default class RagController { @@ -65,6 +68,11 @@ export default class RagController { return response.status(200).json({ files }) } + public async getFileWarnings({ response }: HttpContext) { + const result = await this.ragService.computeFileWarnings() + return response.status(200).json(result) + } + public async deleteFile({ request, response }: HttpContext) { const { source } = await request.validateUsing(deleteFileSchema) const result = await this.ragService.deleteFileBySource(source) @@ -74,6 +82,21 @@ export default class RagController { return response.status(200).json({ message: result.message }) } + public async embedFile({ request, response }: HttpContext) { + const { source, force } = await request.validateUsing(embedFileSchema) + const result = await this.ragService.embedSingleFile(source, force ?? false) + if (!result.success) { + const status = { + not_found: 404, + inflight: 409, + delete_failed: 500, + dispatch_failed: 500, + }[result.code] + return response.status(status).json({ error: result.message, code: result.code }) + } + return response.status(202).json({ message: result.message }) + } + public async getFailedJobs({ response }: HttpContext) { const jobs = await EmbedFileJob.listFailedJobs() return response.status(200).json(jobs) @@ -87,12 +110,83 @@ export default class RagController { }) } + public async cancelAllJobs({ response }: HttpContext) { + const result = await EmbedFileJob.cancelAllJobs() + return response.status(200).json({ + message: `Cancelled ${result.cancelled} job${result.cancelled !== 1 ? 's' : ''}${result.filesDeleted > 0 ? `, deleted ${result.filesDeleted} file${result.filesDeleted !== 1 ? 's' : ''}` : ''}.`, + ...result, + }) + } + + public async policyPromptState({ response }: HttpContext) { + const result = await this.ragService.getPolicyPromptState() + return response.status(200).json(result) + } + public async scanAndSync({ response }: HttpContext) { try { const syncResult = await this.ragService.scanAndSyncStorage() return response.status(200).json(syncResult) } catch (error) { - return response.status(500).json({ error: 'Error scanning and syncing storage', details: error.message }) + logger.error({ err: error }, '[RagController] Error scanning and syncing storage') + return response.status(500).json({ error: 'Error scanning and syncing storage' }) } } + + public async reembedAll({ response }: HttpContext) { + try { + const result = await this.ragService.reembedAll() + return response.status(200).json(result) + } catch (error) { + logger.error({ err: error }, '[RagController] Error during re-embed all') + return response.status(500).json({ error: 'Error during re-embed all' }) + } + } + + public async resetAndRebuild({ response }: HttpContext) { + try { + const result = await this.ragService.resetAndRebuild() + return response.status(200).json(result) + } catch (error) { + logger.error({ err: error }, '[RagController] Error during reset and rebuild') + return response.status(500).json({ error: 'Error during reset and rebuild' }) + } + } + + public async health({ response }: HttpContext) { + const result = await this.ragService.checkQdrantHealth() + return response.status(200).json(result) + } + + public async estimateBatch({ request, response }: HttpContext) { + const { files } = await request.validateUsing(estimateBatchSchema) + // The registry matches on basename prefixes; if a caller passes a full path + // (e.g. /app/storage/zim/wikipedia_en_simple_…), strip directories first so + // patterns like `wikipedia_en_simple_` still match. + const normalized = files.map((f) => ({ + filename: basename(f.filename), + sizeBytes: f.sizeBytes, + })) + const result = await KbRatioRegistry.estimateBatch(normalized) + return response.status(200).json(result) + } + + public async getFileContent({ request, response }: HttpContext) { + const { source } = await request.validateUsing(fileSourceSchema) + const result = await this.ragService.readFileContent(source) + if (!result) { + return response.status(404).json({ error: 'File not found or not viewable' }) + } + return response.status(200).json(result) + } + + public async downloadFile({ request, response }: HttpContext) { + const { source } = await request.validateUsing(fileSourceSchema) + const filePath = await this.ragService.resolveDownloadPath(source) + if (!filePath) { + return response.status(404).json({ error: 'File not found' }) + } + const fileName = filePath.split(/[/\\]/).at(-1) ?? 'download' + return response.attachment(filePath, fileName) + } } diff --git a/admin/app/controllers/settings_controller.ts b/admin/app/controllers/settings_controller.ts index 24cb4ce..4675d4b 100644 --- a/admin/app/controllers/settings_controller.ts +++ b/admin/app/controllers/settings_controller.ts @@ -3,9 +3,10 @@ import { BenchmarkService } from '#services/benchmark_service' import { MapService } from '#services/map_service' import { OllamaService } from '#services/ollama_service' import { SystemService } from '#services/system_service' -import { getSettingSchema, updateSettingSchema } from '#validators/settings' +import { getSettingSchema, updateSettingSchema, validateSettingValue } from '#validators/settings' import { inject } from '@adonisjs/core' import type { HttpContext } from '@adonisjs/core/http' +import env from '#start/env' @inject() export default class SettingsController { @@ -110,6 +111,19 @@ export default class SettingsController { }) } + async advanced({ inertia }: HttpContext) { + // When the env var is set it always takes precedence over the stored value, + // so surface that to the UI to disable the field and explain the override. + const envOverride = Boolean(env.get('INTERNET_STATUS_TEST_URL')?.trim()) + const internetStatusTestUrl = await KVStore.getValue('system.internetStatusTestUrl') + return inertia.render('settings/advanced', { + advanced: { + internetStatusTestUrl: internetStatusTestUrl ?? '', + internetStatusTestUrlEnvOverride: envOverride, + }, + }) + } + async getSetting({ request, response }: HttpContext) { const { key } = await getSettingSchema.validate({ key: request.qs().key }); const value = await KVStore.getValue(key); @@ -118,6 +132,10 @@ export default class SettingsController { async updateSetting({ request, response }: HttpContext) { const reqData = await request.validateUsing(updateSettingSchema) + const valueError = validateSettingValue(reqData.key, reqData.value) + if (valueError) { + return response.status(422).send({ success: false, message: valueError }) + } await this.systemService.updateSetting(reqData.key, reqData.value) return response.status(200).send({ success: true, message: 'Setting updated successfully' }) } diff --git a/admin/app/controllers/supply_depot_controller.ts b/admin/app/controllers/supply_depot_controller.ts new file mode 100644 index 0000000..5225dd4 --- /dev/null +++ b/admin/app/controllers/supply_depot_controller.ts @@ -0,0 +1,13 @@ +import { SystemService } from '#services/system_service' +import { inject } from '@adonisjs/core' +import type { HttpContext } from '@adonisjs/core/http' + +@inject() +export default class SupplyDepotController { + constructor(private systemService: SystemService) {} + + async index({ inertia }: HttpContext) { + const services = await this.systemService.getServices({ installedOnly: false }) + return inertia.render('supply-depot', { system: { services } }) + } +} diff --git a/admin/app/controllers/system_controller.ts b/admin/app/controllers/system_controller.ts index fbc872a..22f2cde 100644 --- a/admin/app/controllers/system_controller.ts +++ b/admin/app/controllers/system_controller.ts @@ -2,10 +2,38 @@ import { DockerService } from '#services/docker_service'; import { SystemService } from '#services/system_service' import { SystemUpdateService } from '#services/system_update_service' import { ContainerRegistryService } from '#services/container_registry_service' +import { AutoUpdateService } from '#services/auto_update_service' +import { AppAutoUpdateService } from '#services/app_auto_update_service' +import { ContentAutoUpdateService } from '#services/content_auto_update_service' +import { DownloadService } from '#services/download_service' +import { QueueService } from '#services/queue_service' import { CheckServiceUpdatesJob } from '#jobs/check_service_updates_job' -import { affectServiceValidator, checkLatestVersionValidator, installServiceValidator, subscribeToReleaseNotesValidator, updateServiceValidator } from '#validators/system'; +import { + affectServiceValidator, + checkLatestVersionValidator, + customAppValidator, + deleteCustomAppValidator, + installServiceValidator, + preflightCustomValidator, + preflightValidator, + serviceLogsValidator, + subscribeToReleaseNotesValidator, + uninstallServiceValidator, + updateCustomAppValidator, + updateServiceValidator, + setServiceAutoUpdateValidator, + setServiceCustomUrlValidator, + normalizeCustomUrl, +} from '#validators/system' +import { + DEFAULT_CPUS, + DEFAULT_MEMORY_MB, + evaluateCustomApp, +} from '#services/custom_app_guard' import { inject } from '@adonisjs/core' import type { HttpContext } from '@adonisjs/core/http' +import logger from '@adonisjs/core/services/logger' +import Service from '#models/service' @inject() export default class SystemController { @@ -107,6 +135,82 @@ export default class SystemController { response.send({ logs }); } + async getAutoUpdateStatus({ response }: HttpContext) { + // Construct inline reusing already-injected singletons + the QueueService + // singleton (its constructor is private to prevent Redis connection leaks, + // so we must not let the container new a fresh one). + const autoUpdateService = new AutoUpdateService( + this.dockerService, + new DownloadService(QueueService.getInstance()), + this.systemService, + this.systemUpdateService, + this.containerRegistryService + ) + + try { + const status = await autoUpdateService.getStatus() + response.send(status) + } catch (error) { + logger.error({ err: error }, '[SystemController] Failed to get auto-update status') + response.status(500).send({ error: 'Failed to retrieve auto-update status' }) + } + } + + async getAppAutoUpdateStatus({ response }: HttpContext) { + // Constructed inline reusing already-injected singletons + the QueueService + // singleton (its constructor is private to prevent Redis connection leaks), + // mirroring getAutoUpdateStatus. Apps need no SystemUpdateService (no sidecar). + const appAutoUpdateService = new AppAutoUpdateService( + this.dockerService, + new DownloadService(QueueService.getInstance()), + this.systemService, + this.containerRegistryService + ) + + try { + const status = await appAutoUpdateService.getStatus() + response.send(status) + } catch (error) { + logger.error({ err: error }, '[SystemController] Failed to get app auto-update status') + response.status(500).send({ error: 'Failed to retrieve app auto-update status' }) + } + } + + async getContentAutoUpdateStatus({ response }: HttpContext) { + // Mirrors getAppAutoUpdateStatus. Content auto-update needs only the + // DownloadService (for the active-download pre-flight); the catalog and + // collection-update services default-construct inside the service. + const contentAutoUpdateService = new ContentAutoUpdateService( + new DownloadService(QueueService.getInstance()) + ) + + try { + const status = await contentAutoUpdateService.getStatus() + response.send(status) + } catch (error) { + logger.error({ err: error }, '[SystemController] Failed to get content auto-update status') + response.status(500).send({ error: 'Failed to retrieve content auto-update status' }) + } + } + + async setServiceAutoUpdate({ request, response }: HttpContext) { + const payload = await request.validateUsing(setServiceAutoUpdateValidator) + const service = await Service.query().where('service_name', payload.service_name).first() + if (!service) { + return response.status(404).send({ error: `Service ${payload.service_name} not found` }) + } + + service.auto_update_enabled = payload.enabled + // Re-enabling clears any prior self-disable so the app gets a fresh start. + if (payload.enabled) { + service.auto_update_consecutive_failures = 0 + service.auto_update_disabled_reason = null + } + await service.save() + + return response.send({ success: true, message: 'App auto-update preference updated' }) + } + async subscribeToReleaseNotes({ request }: HttpContext) { const reqData = await request.validateUsing(subscribeToReleaseNotesValidator); @@ -144,7 +248,8 @@ export default class SystemController { ) response.send({ versions: updates }) } catch (error) { - response.status(500).send({ error: `Failed to fetch versions: ${error.message}` }) + logger.error({ err: error }, `[SystemController] Failed to fetch versions for ${serviceName}`) + response.status(500).send({ error: 'Failed to fetch available versions for this service.' }) } } @@ -178,4 +283,525 @@ export default class SystemController { return 'amd64' } } + + /** + * Pre-install preflight check: reports port conflicts and resource warnings for a service. + * Results are advisory — the UI shows warnings but allows the user to force-proceed. + */ + async preflightCheck({ request, response }: HttpContext) { + const payload = await request.validateUsing(preflightValidator) + + const service = await Service.query().where('service_name', payload.service_name).first() + if (!service) { + return response.status(404).send({ error: `Service ${payload.service_name} not found` }) + } + + // Extract host ports from container_config — the MySQL driver may return JSON columns + // as an already-parsed object rather than a string, so guard before calling JSON.parse. + const rawConfig = service.container_config + const config = rawConfig + ? typeof rawConfig === 'object' + ? rawConfig + : JSON.parse(rawConfig as string) + : null + const portBindings: Record = + config?.HostConfig?.PortBindings ?? {} + const hostPorts = Object.values(portBindings) + .flat() + .map((b) => parseInt(b.HostPort, 10)) + .filter((p) => !isNaN(p)) + + // Parse resource requirements from metadata (same object-guard as container_config) + let minMemoryMB = 256 + let minDiskMB = 512 + try { + const rawMeta = service.metadata + const meta = rawMeta + ? typeof rawMeta === 'object' + ? rawMeta + : JSON.parse(rawMeta as string) + : null + if (meta?.minMemoryMB) minMemoryMB = meta.minMemoryMB + if (meta?.minDiskMB) minDiskMB = meta.minDiskMB + } catch {} + + const [{ conflicts: portConflicts }, resourceWarnings] = await Promise.all([ + this.dockerService.checkPortConflicts(hostPorts), + this.systemService.checkResourceWarnings(minMemoryMB, minDiskMB), + ]) + + return response.send({ portConflicts, resourceWarnings }) + } + + /** Return the next suggested host port for a custom app (8600+ range). */ + async suggestCustomPort({ response }: HttpContext) { + const port = await this.systemService.getNextSuggestedCustomPort() + return response.send({ port }) + } + + /** + * Service-less preflight for the custom-app form: given host ports, volumes and an image, + * report port conflicts, host resource warnings, overridable guard warnings (risky bind + * mounts / untrusted or moving-tag images), and hard blocks (docker socket, system dirs, + * malformed image). Lets the form give live feedback before a Service record exists. + */ + async preflightCustomApp({ request, response }: HttpContext) { + const payload = await request.validateUsing(preflightCustomValidator) + const [{ conflicts }, resourceWarnings] = await Promise.all([ + this.dockerService.checkPortConflicts(payload.ports ?? []), + this.systemService.checkResourceWarnings(256, 512), + ]) + // When editing, the app's own container legitimately holds its ports — don't flag those. + const portConflicts = payload.exclude_service + ? conflicts.filter((c) => c.usedBy !== payload.exclude_service) + : conflicts + const guard = evaluateCustomApp({ image: payload.image, volumes: payload.volumes }) + return response.send({ + portConflicts, + resourceWarnings: [...resourceWarnings, ...guard.warnings], + blocked: guard.blocked, + }) + } + + /** Create and immediately begin installing a custom app container. */ + async createCustomApp({ request, response }: HttpContext) { + const payload = await request.validateUsing(customAppValidator) + + // Derive a stable service_name from the friendly name + const slug = payload.friendly_name + .toLowerCase() + .replace(/[^a-z0-9]+/g, '_') + .replace(/^_+|_+$/g, '') + const serviceName = `nomad_custom_${slug}` + + const existing = await Service.query().where('service_name', serviceName).first() + if (existing) { + return response.status(409).send({ + success: false, + message: `A custom app named "${payload.friendly_name}" already exists. Choose a different name.`, + }) + } + + // Reject duplicate host ports within the request — Docker would otherwise fail at + // start time with an opaque "port is already allocated" error. + const hostPorts = (payload.ports ?? []).map((p) => p.host) + const duplicateHostPorts = [...new Set(hostPorts.filter((p, i) => hostPorts.indexOf(p) !== i))] + if (duplicateHostPorts.length) { + return response.status(422).send({ + success: false, + message: `Duplicate host port(s): ${duplicateHostPorts.join(', ')}. Each host port can map to only one container.`, + }) + } + + // Security guardrails: hard-block dangerous bind mounts / malformed images regardless of + // force; surface overridable warnings (risky paths, untrusted/moving-tag images) unless forced. + const guard = evaluateCustomApp({ image: payload.image, volumes: payload.volumes }) + if (guard.blocked.length) { + return response.status(422).send({ + success: false, + message: guard.blocked.join(' '), + blocked: guard.blocked, + }) + } + if (!payload.force && guard.warnings.length) { + return response.status(409).send({ + success: false, + message: guard.warnings.join(' '), + warnings: guard.warnings, + }) + } + + // Advisory preflight: surface port conflicts before creating the record so a failed + // install doesn't leave a phantom card. The user can re-submit with force=true to override. + if (!payload.force && hostPorts.length) { + const { conflicts } = await this.dockerService.checkPortConflicts(hostPorts) + if (conflicts.length) { + return response.status(409).send({ + success: false, + message: `Port conflict: ${conflicts + .map((c) => `${c.port} (in use by ${c.usedBy})`) + .join(', ')}.`, + portConflicts: conflicts, + }) + } + } + + const { containerConfig, uiLocation } = this.buildCustomContainerConfig(payload) + + await Service.create({ + service_name: serviceName, + friendly_name: payload.friendly_name, + container_image: payload.image, + container_config: JSON.stringify(containerConfig), + ui_location: uiLocation, + icon: payload.icon || 'IconBrandDocker', + installed: false, + installation_status: 'idle', + is_dependency_service: false, + is_custom: true, + category: payload.category ?? 'custom', + depends_on: null, + }) + + const result = await this.dockerService.createContainerPreflight(serviceName) + if (result.success) { + return response.send({ success: true, message: result.message, service_name: serviceName }) + } + return response.status(400).send({ success: false, message: result.message }) + } + + /** Delete a custom app: stop + remove its container, then delete the DB record. */ + async deleteCustomApp({ request, response }: HttpContext) { + const payload = await request.validateUsing(deleteCustomAppValidator) + + const service = await Service.query().where('service_name', payload.service_name).first() + if (!service) { + return response.status(404).send({ error: `Service ${payload.service_name} not found` }) + } + if (!service.is_custom) { + return response.status(403).send({ error: 'Only custom apps can be deleted.' }) + } + + await this.dockerService.removeCustomAppContainer(payload.service_name, payload.remove_image ?? false) + await service.delete() + + return response.send({ success: true, message: `Custom app ${payload.service_name} deleted` }) + } + + /** Uninstall a curated catalog app: stop + remove its container (optionally its image) and + * return the card to the available catalog. App data under the storage path stays on disk, + * so a later reinstall picks it back up. Custom apps are removed via deleteCustomApp instead, + * which also drops their DB record. */ + async uninstallService({ request, response }: HttpContext) { + const payload = await request.validateUsing(uninstallServiceValidator) + + const service = await Service.query().where('service_name', payload.service_name).first() + if (!service) { + return response.status(404).send({ error: `Service ${payload.service_name} not found` }) + } + if (service.is_custom) { + return response.status(403).send({ error: 'Custom apps are removed via delete.' }) + } + if (service.is_dependency_service) { + return response.status(403).send({ error: 'Dependency services cannot be uninstalled directly.' }) + } + if (!service.installed) { + return response.status(409).send({ error: `Service ${payload.service_name} is not installed` }) + } + + const result = await this.dockerService.uninstallService( + payload.service_name, + payload.remove_image ?? false + ) + if (!result.success) { + return response.status(500).send({ success: false, message: result.message }) + } + return response.send({ success: true, message: result.message }) + } + + /** Set or clear an app's custom launch URL (works for curated and custom apps). Purely a + * metadata change — no container is touched. An empty/invalid value clears the override, after + * which the default host + port link is used again. */ + async setServiceCustomUrl({ request, response }: HttpContext) { + const payload = await request.validateUsing(setServiceCustomUrlValidator) + + const service = await Service.query().where('service_name', payload.service_name).first() + if (!service) { + return response.status(404).send({ success: false, message: `Service ${payload.service_name} not found` }) + } + // Hidden dependency services (e.g. Qdrant) aren't user-launchable, so they have no link to set. + if (service.is_dependency_service) { + return response.status(403).send({ success: false, message: 'This service cannot be configured.' }) + } + + // Reject a non-empty value that isn't a valid http(s) URL; an empty value clears the override. + const normalized = normalizeCustomUrl(payload.custom_url) + if (payload.custom_url && payload.custom_url.trim() && !normalized) { + return response.status(422).send({ + success: false, + message: 'Custom URL must be a valid http(s) address (e.g. https://jellyfin.myhomelab.net).', + }) + } + + service.custom_url = normalized + await service.save() + + return response.send({ success: true, custom_url: service.custom_url }) + } + + /** Re-pull a custom app's image and recreate its container in place (preserving volumes). */ + async updateCustomApp_pullLatest({ request, response }: HttpContext) { + const payload = await request.validateUsing(installServiceValidator) + + const service = await Service.query().where('service_name', payload.service_name).first() + if (!service) { + return response.status(404).send({ success: false, message: `Service ${payload.service_name} not found` }) + } + if (!service.is_custom) { + return response.status(403).send({ success: false, message: 'Only custom apps can be updated this way.' }) + } + + const result = await this.dockerService.recreateCustomAppContainer(payload.service_name, { + forcePull: true, + }) + if (result.success) { + return response.send({ success: true, message: result.message }) + } + return response.status(400).send({ success: false, message: result.message }) + } + + /** Return the last N lines of a service container's logs. */ + async getServiceLogs({ params, request, response }: HttpContext) { + // Scope to managed services only — otherwise any sibling container's logs (admin app, + // database) would be readable by name on this unauthenticated API surface. + const service = await Service.query().where('service_name', params.name).first() + if (!service) { + return response.status(404).send({ success: false, message: `Service ${params.name} not found` }) + } + const { tail } = await request.validateUsing(serviceLogsValidator) + const result = await this.dockerService.getContainerLogs(params.name, tail ?? 200) + if (!result.success) { + return response.status(404).send({ success: false, message: result.message }) + } + return response.send({ success: true, logs: result.logs }) + } + + /** Return a one-shot CPU/memory usage snapshot for a running service container. */ + async getServiceStats({ params, response }: HttpContext) { + // Scope to managed services only (see getServiceLogs). + const service = await Service.query().where('service_name', params.name).first() + if (!service) { + return response.status(404).send({ success: false, message: `Service ${params.name} not found` }) + } + const result = await this.dockerService.getContainerStats(params.name) + if (!result.success) { + return response.status(404).send({ success: false, message: result.message }) + } + return response.send({ success: true, running: result.running ?? false, stats: result.stats ?? null }) + } + + /** Return an app's current configuration in the editable form-shape. */ + async getCustomApp({ params, response }: HttpContext) { + const service = await Service.query().where('service_name', params.name).first() + if (!service) { + return response.status(404).send({ error: `Service ${params.name} not found` }) + } + // Custom and curated apps are both editable; hidden dependency services (e.g. Qdrant) are not. + if (service.is_dependency_service) { + return response.status(403).send({ error: 'This service cannot be edited.' }) + } + return response.send({ success: true, app: this.parseCustomContainerConfig(service) }) + } + + /** Reconfigure an app: validate + guard, persist the new config, then recreate the container. + * Works for both custom apps and curated (pre-configured) apps. Editing a curated app marks it + * user-modified so the seeder stops overwriting the user's changes. */ + async updateCustomApp({ request, response }: HttpContext) { + const payload = await request.validateUsing(updateCustomAppValidator) + + const service = await Service.query().where('service_name', payload.service_name).first() + if (!service) { + return response.status(404).send({ success: false, message: `Service ${payload.service_name} not found` }) + } + // Custom and curated apps are both editable; hidden dependency services (e.g. Qdrant) are not. + if (service.is_dependency_service) { + return response.status(403).send({ success: false, message: 'This service cannot be edited.' }) + } + + // Reject duplicate host ports within the request. + const hostPorts = (payload.ports ?? []).map((p) => p.host) + const duplicateHostPorts = [...new Set(hostPorts.filter((p, i) => hostPorts.indexOf(p) !== i))] + if (duplicateHostPorts.length) { + return response.status(422).send({ + success: false, + message: `Duplicate host port(s): ${duplicateHostPorts.join(', ')}. Each host port can map to only one container.`, + }) + } + + // Security guardrails (same posture as create). + const guard = evaluateCustomApp({ image: payload.image, volumes: payload.volumes }) + if (guard.blocked.length) { + return response.status(422).send({ success: false, message: guard.blocked.join(' '), blocked: guard.blocked }) + } + if (!payload.force && guard.warnings.length) { + return response.status(409).send({ success: false, message: guard.warnings.join(' '), warnings: guard.warnings }) + } + + // Port conflicts — but ignore ports already held by this app's own container. + if (!payload.force && hostPorts.length) { + const { conflicts } = await this.dockerService.checkPortConflicts(hostPorts) + const external = conflicts.filter((c) => c.usedBy !== payload.service_name) + if (external.length) { + return response.status(409).send({ + success: false, + message: `Port conflict: ${external + .map((c) => `${c.port} (in use by ${c.usedBy})`) + .join(', ')}.`, + portConflicts: external, + }) + } + } + + // Merge the form fields into the app's existing config rather than rebuilding from scratch, + // so advanced settings a curated app ships with (GPU device requests, special env, etc.) are + // preserved across an edit. + // Preserve an explicit scheme (e.g. ui_location "https:8480") across an edit — otherwise a + // TLS-serving app's Open link would silently revert to http after any reconfigure. + const prevScheme = (service.ui_location || '').match(/^(https?):\d+$/)?.[1] + const { containerConfig, uiLocation } = this.mergeCustomContainerConfig( + service.container_config, + payload + ) + service.friendly_name = payload.friendly_name + service.container_image = payload.image + service.container_config = JSON.stringify(containerConfig) + service.ui_location = prevScheme && uiLocation && /^\d+$/.test(uiLocation) + ? `${prevScheme}:${uiLocation}` + : uiLocation + service.category = payload.category ?? service.category ?? 'custom' + if (payload.icon) service.icon = payload.icon + // Flag as user-modified so the seeder stops overwriting this app's config on future runs. + service.is_user_modified = true + await service.save() + + const result = await this.dockerService.recreateCustomAppContainer(payload.service_name) + if (result.success) { + return response.send({ success: true, message: result.message, service_name: payload.service_name }) + } + return response.status(400).send({ success: false, message: result.message }) + } + + /** + * Build a Docker container config (HostConfig + ExposedPorts + Env) from custom-app form input, + * applying default resource caps. Shared by create and update so both stay in lockstep. + */ + private buildCustomContainerConfig(payload: { + ports?: { container: number; host: number }[] + volumes?: { host_path: string; container_path: string }[] + env?: string[] + memory_mb?: number + cpus?: number + }): { containerConfig: Record; uiLocation: string | null } { + const portBindings: Record = {} + const exposedPorts: Record = {} + for (const { container, host } of payload.ports ?? []) { + portBindings[`${container}/tcp`] = [{ HostPort: String(host) }] + exposedPorts[`${container}/tcp`] = {} + } + + const binds = (payload.volumes ?? []).map( + ({ host_path, container_path }) => `${host_path}:${container_path}` + ) + + // Resource caps so a runaway custom container can't starve the host. Memory is bytes; + // NanoCpus is CPUs × 1e9. Defaults are generous and user-overridable. + const memoryBytes = (payload.memory_mb ?? DEFAULT_MEMORY_MB) * 1024 * 1024 + const nanoCpus = Math.round((payload.cpus ?? DEFAULT_CPUS) * 1e9) + + const containerConfig: Record = { + HostConfig: { + RestartPolicy: { Name: 'unless-stopped' }, + PortBindings: portBindings, + Memory: memoryBytes, + NanoCpus: nanoCpus, + ...(binds.length ? { Binds: binds } : {}), + }, + ExposedPorts: exposedPorts, + ...(payload.env?.length ? { Env: payload.env } : {}), + } + + const firstHostPort = payload.ports?.[0]?.host + const uiLocation = firstHostPort ? String(firstHostPort) : null + return { containerConfig, uiLocation } + } + + /** + * Merge custom-app form input into an app's *existing* container config. Used by the edit path so + * editing a curated app only changes the fields exposed in the form (image/ports/volumes/env and, + * if supplied, resource caps) while preserving everything else it ships with (GPU DeviceRequests, + * User, custom HostConfig keys, etc.). Unlike buildCustomContainerConfig, resource caps are NOT + * defaulted here — a curated app intentionally left uncapped stays uncapped unless the user sets one. + */ + private mergeCustomContainerConfig( + existingRaw: string | null, + payload: { + ports?: { container: number; host: number }[] + volumes?: { host_path: string; container_path: string }[] + env?: string[] + memory_mb?: number + cpus?: number + } + ): { containerConfig: Record; uiLocation: string | null } { + const parsed = existingRaw + ? typeof existingRaw === 'object' + ? existingRaw + : JSON.parse(existingRaw as string) + : {} + // Deep clone so we never mutate the parsed source. + const containerConfig: Record = JSON.parse(JSON.stringify(parsed ?? {})) + containerConfig.HostConfig = containerConfig.HostConfig ?? {} + // Keep a restart policy if the existing config lacked one. + containerConfig.HostConfig.RestartPolicy = + containerConfig.HostConfig.RestartPolicy ?? { Name: 'unless-stopped' } + + const portBindings: Record = {} + const exposedPorts: Record = {} + for (const { container, host } of payload.ports ?? []) { + portBindings[`${container}/tcp`] = [{ HostPort: String(host) }] + exposedPorts[`${container}/tcp`] = {} + } + containerConfig.HostConfig.PortBindings = portBindings + containerConfig.ExposedPorts = exposedPorts + + const binds = (payload.volumes ?? []).map( + ({ host_path, container_path }) => `${host_path}:${container_path}` + ) + if (binds.length) containerConfig.HostConfig.Binds = binds + else delete containerConfig.HostConfig.Binds + + if (payload.env?.length) containerConfig.Env = payload.env + else delete containerConfig.Env + + // Only touch resource caps when the user explicitly set them — preserve existing/uncapped otherwise. + if (payload.memory_mb != null) { + containerConfig.HostConfig.Memory = payload.memory_mb * 1024 * 1024 + } + if (payload.cpus != null) { + containerConfig.HostConfig.NanoCpus = Math.round(payload.cpus * 1e9) + } + + const firstHostPort = payload.ports?.[0]?.host + const uiLocation = firstHostPort ? String(firstHostPort) : null + return { containerConfig, uiLocation } + } + + /** Inverse of buildCustomContainerConfig: turn a stored Service into the editable form-shape. */ + private parseCustomContainerConfig(service: Service) { + const raw = service.container_config + const config = raw ? (typeof raw === 'object' ? raw : JSON.parse(raw as string)) : {} + const hostConfig = config?.HostConfig ?? {} + + const ports = Object.entries(hostConfig.PortBindings ?? {}).map(([key, val]: [string, any]) => ({ + container: Number.parseInt(key, 10), + host: Number.parseInt(val?.[0]?.HostPort, 10), + })) + + const volumes = (hostConfig.Binds ?? []).map((bind: string) => { + const idx = bind.indexOf(':') + return { host_path: bind.slice(0, idx), container_path: bind.slice(idx + 1) } + }) + + return { + service_name: service.service_name, + friendly_name: service.friendly_name, + image: service.container_image, + category: service.category ?? 'custom', + icon: service.icon ?? 'IconBrandDocker', + ports, + volumes, + env: (config?.Env ?? []) as string[], + memory_mb: hostConfig.Memory ? Math.round(hostConfig.Memory / (1024 * 1024)) : undefined, + cpus: hostConfig.NanoCpus ? hostConfig.NanoCpus / 1e9 : undefined, + } + } } \ No newline at end of file diff --git a/admin/app/controllers/zim_controller.ts b/admin/app/controllers/zim_controller.ts index 96adf63..aed0136 100644 --- a/admin/app/controllers/zim_controller.ts +++ b/admin/app/controllers/zim_controller.ts @@ -6,9 +6,14 @@ import { remoteDownloadWithMetadataValidator, selectWikipediaValidator, } from '#validators/common' -import { listRemoteZimValidator } from '#validators/zim' +import { addCustomLibraryValidator, browseLibraryValidator, idParamValidator, listRemoteZimValidator } from '#validators/zim' import { inject } from '@adonisjs/core' +import logger from '@adonisjs/core/services/logger' import type { HttpContext } from '@adonisjs/core/http' +import { createWriteStream } from 'fs' +import { rename } from 'fs/promises' +import { join, resolve, sep } from 'path' +import { ZIM_STORAGE_PATH, ensureDirectoryExists, sanitizeFilename } from '../utils/fs.js' @inject() export default class ZimController { @@ -56,6 +61,14 @@ export default class ZimController { } } + async rescanLibrary({}: HttpContext) { + const result = await this.zimService.rescanLibrary() + return { + message: 'Kiwix library rescanned', + ...result, + } + } + async delete({ request, response }: HttpContext) { const payload = await request.validateUsing(filenameParamValidator) @@ -75,6 +88,87 @@ export default class ZimController { } } + async upload({ request, response }: HttpContext) { + let filename: string | null = null + let tmpPath: string | null = null + let uploadError: string | null = null + + try { + const basePath = resolve(join(process.cwd(), ZIM_STORAGE_PATH)) + await ensureDirectoryExists(basePath) + + request.multipart.onFile('*', {}, async (part) => { + const clientName = part.filename || '' + if (!clientName.toLowerCase().endsWith('.zim')) { + part.resume() + uploadError = 'INVALID_TYPE' + return + } + + const sanitized = sanitizeFilename(clientName) + const finalPath = resolve(join(basePath, sanitized)) + + if (!finalPath.startsWith(basePath + sep)) { + part.resume() + uploadError = 'INVALID_FILENAME' + return + } + + const { access } = await import('fs/promises') + const exists = await access(finalPath).then(() => true).catch(() => false) + if (exists) { + part.resume() + uploadError = 'DUPLICATE_FILENAME' + return + } + + filename = sanitized + tmpPath = finalPath + '.tmp' + const ws = createWriteStream(tmpPath) + + await new Promise((res, rej) => { + ws.on('error', rej) + ws.on('finish', res) + part.on('error', rej) + part.pipe(ws) + }) + + await rename(tmpPath, finalPath) + tmpPath = null + }) + + await request.multipart.process() + + if (uploadError === 'INVALID_TYPE') { + return response.status(422).send({ message: 'Only .zim files are accepted' }) + } + if (uploadError === 'INVALID_FILENAME') { + return response.status(422).send({ message: 'Invalid filename' }) + } + if (uploadError === 'DUPLICATE_FILENAME') { + return response.status(409).send({ message: 'A ZIM file with that name already exists' }) + } + if (!filename) { + return response.status(400).send({ message: 'No file received' }) + } + + const { added } = await this.zimService.registerLocalUpload(filename) + + return response.status(201).send({ + message: 'ZIM file uploaded and registered successfully', + filename, + added, + }) + } catch (error) { + logger.error('[ZimController] Upload failed:', error) + if (tmpPath) { + const { unlink } = await import('fs/promises') + await unlink(tmpPath).catch(() => {}) + } + return response.status(500).send({ message: 'Upload failed' }) + } + } + // Wikipedia selector endpoints async getWikipediaState({}: HttpContext) { @@ -85,4 +179,51 @@ export default class ZimController { const payload = await request.validateUsing(selectWikipediaValidator) return this.zimService.selectWikipedia(payload.optionId) } + + // Custom library endpoints + + async listCustomLibraries({}: HttpContext) { + return this.zimService.listCustomLibraries() + } + + async addCustomLibrary({ request, response }: HttpContext) { + const payload = await request.validateUsing(addCustomLibraryValidator) + assertNotPrivateUrl(payload.base_url) + try { + const source = await this.zimService.addCustomLibrary(payload.name, payload.base_url) + return { message: 'Custom library added', library: source } + } catch (error) { + if (error.message === 'Maximum of 10 custom libraries allowed') { + return response.status(400).send({ message: error.message }) + } + throw error + } + } + + async removeCustomLibrary({ request, response }: HttpContext) { + const payload = await request.validateUsing(idParamValidator) + try { + await this.zimService.removeCustomLibrary(payload.params.id) + return { message: 'Custom library removed' } + } catch (error) { + if (error.message === 'Custom library not found') { + return response.status(404).send({ message: error.message }) + } + throw error + } + } + + async browseLibrary({ request, response }: HttpContext) { + const payload = await request.validateUsing(browseLibraryValidator) + try { + return await this.zimService.browseLibraryUrl(payload.url) + } catch (error) { + if (error.message?.includes('loopback or link-local')) { + return response.status(400).send({ message: error.message }) + } + return response.status(502).send({ + message: 'Could not fetch directory listing from the provided URL', + }) + } + } } diff --git a/admin/app/jobs/app_auto_update_job.ts b/admin/app/jobs/app_auto_update_job.ts new file mode 100644 index 0000000..3008901 --- /dev/null +++ b/admin/app/jobs/app_auto_update_job.ts @@ -0,0 +1,78 @@ +import { Job } from 'bullmq' +import { QueueService } from '#services/queue_service' +import { DockerService } from '#services/docker_service' +import { DownloadService } from '#services/download_service' +import { SystemService } from '#services/system_service' +import { ContainerRegistryService } from '#services/container_registry_service' +import { AppAutoUpdateService } from '#services/app_auto_update_service' +import logger from '@adonisjs/core/services/logger' + +/** + * Hourly job that evaluates whether any opted-in installed apps should auto-update + * right now and, if so, updates them. All gating (master switch, per-app opt-in, + * window, cool-off, pre-flight, per-app backoff) lives in {@link AppAutoUpdateService}; + * this job is just the scheduled trigger. Runs hourly so it can act anywhere inside a + * user's window regardless of the window's length. Mirrors {@link AutoUpdateJob}. + */ +export class AppAutoUpdateJob { + static get queue() { + return 'system' + } + + static get key() { + return 'app-auto-update' + } + + async handle(_job: Job) { + logger.info('[AppAutoUpdateJob] Evaluating app auto-updates...') + + const dockerService = new DockerService() + const appAutoUpdateService = new AppAutoUpdateService( + dockerService, + new DownloadService(QueueService.getInstance()), + new SystemService(dockerService), + new ContainerRegistryService() + ) + + const result = await appAutoUpdateService.attempt() + logger.info(`[AppAutoUpdateJob] ${result.updated} updated: ${result.reason}`) + return result + } + + static async schedule() { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + + await queue.upsertJobScheduler( + 'hourly-app-auto-update', + { pattern: '0 * * * *' }, // Top of every hour; attempt() gates on the window + { + name: this.key, + opts: { + removeOnComplete: { count: 12 }, + removeOnFail: { count: 5 }, + }, + } + ) + + logger.info('[AppAutoUpdateJob] App auto-update evaluation scheduled with cron: 0 * * * *') + } + + static async dispatch() { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + + const job = await queue.add( + this.key, + {}, + { + attempts: 1, + removeOnComplete: { count: 12 }, + removeOnFail: { count: 5 }, + } + ) + + logger.info(`[AppAutoUpdateJob] Dispatched ad-hoc app auto-update evaluation job ${job.id}`) + return job + } +} diff --git a/admin/app/jobs/auto_update_job.ts b/admin/app/jobs/auto_update_job.ts new file mode 100644 index 0000000..5131e7a --- /dev/null +++ b/admin/app/jobs/auto_update_job.ts @@ -0,0 +1,80 @@ +import { Job } from 'bullmq' +import { QueueService } from '#services/queue_service' +import { DockerService } from '#services/docker_service' +import { DownloadService } from '#services/download_service' +import { SystemService } from '#services/system_service' +import { SystemUpdateService } from '#services/system_update_service' +import { ContainerRegistryService } from '#services/container_registry_service' +import { AutoUpdateService } from '#services/auto_update_service' +import logger from '@adonisjs/core/services/logger' + +/** + * Hourly job that evaluates whether the NOMAD application should auto-update right + * now and, if so, requests it. All gating (opt-in, window, eligibility, cool-off, + * pre-flight, backoff) lives in {@link AutoUpdateService}; this job is just the + * scheduled trigger. Runs hourly so it can act anywhere inside a user's window + * regardless of the window's length. + */ +export class AutoUpdateJob { + static get queue() { + return 'system' + } + + static get key() { + return 'auto-update' + } + + async handle(_job: Job) { + logger.info('[AutoUpdateJob] Evaluating auto-update...') + + const dockerService = new DockerService() + const autoUpdateService = new AutoUpdateService( + dockerService, + new DownloadService(QueueService.getInstance()), + new SystemService(dockerService), + new SystemUpdateService(), + new ContainerRegistryService() + ) + + const result = await autoUpdateService.attempt() + logger.info(`[AutoUpdateJob] ${result.updated ? 'Updating' : 'No update'}: ${result.reason}`) + return result + } + + static async schedule() { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + + await queue.upsertJobScheduler( + 'hourly-auto-update', + { pattern: '0 * * * *' }, // Top of every hour; attempt() gates on the window + { + name: this.key, + opts: { + removeOnComplete: { count: 12 }, + removeOnFail: { count: 5 }, + }, + } + ) + + logger.info('[AutoUpdateJob] Auto-update evaluation scheduled with cron: 0 * * * *') + } + + static async dispatch() { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + + const job = await queue.add( + this.key, + {}, + { + attempts: 1, + removeOnComplete: { count: 12 }, + removeOnFail: { count: 5 }, + } + ) + + logger.info(`[AutoUpdateJob] Dispatched ad-hoc auto-update evaluation job ${job.id}`) + return job + } +} diff --git a/admin/app/jobs/check_service_updates_job.ts b/admin/app/jobs/check_service_updates_job.ts index 6fb7335..cdbf68e 100644 --- a/admin/app/jobs/check_service_updates_job.ts +++ b/admin/app/jobs/check_service_updates_job.ts @@ -39,6 +39,14 @@ export class CheckServiceUpdatesJob { const latestUpdate = updates.length > 0 ? updates[0].tag : null + // Stamp/clear the cool-off anchor only when the available version *changes*. + // Registry tags carry no publish date, so the auto-update cool-off is measured + // from when a version was first detected; leaving the timestamp untouched while + // the same version persists keeps the cool-off clock running. + if (latestUpdate !== service.available_update_version) { + service.available_update_first_seen_at = latestUpdate ? DateTime.now() : null + } + service.available_update_version = latestUpdate service.update_checked_at = DateTime.now() await service.save() @@ -95,7 +103,7 @@ export class CheckServiceUpdatesJob { } static async scheduleNightly() { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) await queue.upsertJobScheduler( @@ -114,7 +122,7 @@ export class CheckServiceUpdatesJob { } static async dispatch() { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const job = await queue.add( diff --git a/admin/app/jobs/check_update_job.ts b/admin/app/jobs/check_update_job.ts index 046d9c0..aaac08d 100644 --- a/admin/app/jobs/check_update_job.ts +++ b/admin/app/jobs/check_update_job.ts @@ -42,7 +42,7 @@ export class CheckUpdateJob { } static async scheduleNightly() { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) await queue.upsertJobScheduler( @@ -61,7 +61,7 @@ export class CheckUpdateJob { } static async dispatch() { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const job = await queue.add(this.key, {}, { diff --git a/admin/app/jobs/content_auto_update_job.ts b/admin/app/jobs/content_auto_update_job.ts new file mode 100644 index 0000000..f331162 --- /dev/null +++ b/admin/app/jobs/content_auto_update_job.ts @@ -0,0 +1,72 @@ +import { Job } from 'bullmq' +import { QueueService } from '#services/queue_service' +import { DownloadService } from '#services/download_service' +import { ContentAutoUpdateService } from '#services/content_auto_update_service' +import logger from '@adonisjs/core/services/logger' + +/** + * Hourly job that evaluates whether any installed content (ZIM/map) should + * auto-update right now and, if so, dispatches the downloads. All gating (master + * switch, content window, cool-off, per-window data cap, pre-flight, backoff) + * lives in {@link ContentAutoUpdateService}; this job is just the scheduled + * trigger. Runs hourly so it can act anywhere inside a user's window regardless + * of the window's length. Mirrors {@link AppAutoUpdateJob}. + */ +export class ContentAutoUpdateJob { + static get queue() { + return 'system' + } + + static get key() { + return 'content-auto-update' + } + + async handle(_job: Job) { + logger.info('[ContentAutoUpdateJob] Evaluating content auto-updates...') + + const contentAutoUpdateService = new ContentAutoUpdateService( + new DownloadService(QueueService.getInstance()) + ) + + const result = await contentAutoUpdateService.attempt() + logger.info(`[ContentAutoUpdateJob] ${result.started} started: ${result.reason}`) + return result + } + + static async schedule() { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + + await queue.upsertJobScheduler( + 'hourly-content-auto-update', + { pattern: '0 * * * *' }, // Top of every hour; attempt() gates on the window + { + name: this.key, + opts: { + removeOnComplete: { count: 12 }, + removeOnFail: { count: 5 }, + }, + } + ) + + logger.info('[ContentAutoUpdateJob] Content auto-update evaluation scheduled with cron: 0 * * * *') + } + + static async dispatch() { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + + const job = await queue.add( + this.key, + {}, + { + attempts: 1, + removeOnComplete: { count: 12 }, + removeOnFail: { count: 5 }, + } + ) + + logger.info(`[ContentAutoUpdateJob] Dispatched ad-hoc content auto-update evaluation job ${job.id}`) + return job + } +} diff --git a/admin/app/jobs/download_model_job.ts b/admin/app/jobs/download_model_job.ts index 4e27a49..c79d59e 100644 --- a/admin/app/jobs/download_model_job.ts +++ b/admin/app/jobs/download_model_job.ts @@ -21,6 +21,25 @@ export class DownloadModelJob { return createHash('sha256').update(modelName).digest('hex').slice(0, 16) } + /** In-memory registry of abort controllers for active model download jobs */ + static abortControllers: Map = new Map() + + /** + * Redis key used to signal cancellation across processes. Uses a `model-cancel` prefix + * so it cannot collide with content download cancel signals (`nomad:download:cancel:*`). + */ + static cancelKey(jobId: string): string { + return `nomad:download:model-cancel:${jobId}` + } + + /** Signal cancellation via Redis so the worker process can pick it up on its next poll tick */ + static async signalCancel(jobId: string): Promise { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + const client = await queue.client + await client.set(this.cancelKey(jobId), '1', { EX: 300 }) // 5 min TTL + } + async handle(job: Job) { const { modelName } = job.data as DownloadModelJobParams @@ -41,55 +60,108 @@ export class DownloadModelJob { `[DownloadModelJob] Ollama service is ready. Initiating download for ${modelName}` ) - // Services are ready, initiate the download with progress tracking - const result = await ollamaService.downloadModel(modelName, (progressPercent) => { - if (progressPercent) { - job.updateProgress(Math.floor(progressPercent)).catch((err) => { - if (err?.code !== -1) throw err - }) - logger.info( - `[DownloadModelJob] Model ${modelName}: ${progressPercent}%` - ) + // Register abort controller for this job — used both by in-process cancels (same process + // as the API server) and as the target of the Redis poll loop below. + const abortController = new AbortController() + DownloadModelJob.abortControllers.set(job.id!, abortController) + + // Get Redis client for checking cancel signals from the API process + const queueService = QueueService.getInstance() + const cancelRedis = await queueService.getQueue(DownloadModelJob.queue).client + + // Track whether cancellation was explicitly requested by the user. Only user-initiated + // cancels become UnrecoverableError — other failures (e.g., transient network errors) + // should still benefit from BullMQ's retry logic. + let userCancelled = false + + // Poll Redis for cancel signal every 2s — independent of progress events so cancellation + // works even when the pull is mid-blob and not emitting progress updates. + let cancelPollInterval: ReturnType | null = setInterval(async () => { + try { + const val = await cancelRedis.get(DownloadModelJob.cancelKey(job.id!)) + if (val) { + await cancelRedis.del(DownloadModelJob.cancelKey(job.id!)) + userCancelled = true + abortController.abort('user-cancel') + } + } catch { + // Redis errors are non-fatal; in-process AbortController covers same-process cancels } + }, 2000) - // Store detailed progress in job data for clients to query - job.updateData({ - ...job.data, - status: 'downloading', - progress: progressPercent, - progress_timestamp: new Date().toISOString(), - }).catch((err) => { - if (err?.code !== -1) throw err - }) - }) + try { + // Services are ready, initiate the download with progress tracking + const result = await ollamaService.downloadModel( + modelName, + (progressPercent, bytes) => { + if (progressPercent) { + job.updateProgress(Math.floor(progressPercent)).catch((err) => { + if (err?.code !== -1) throw err + }) + } - if (!result.success) { - logger.error( - `[DownloadModelJob] Failed to initiate download for model ${modelName}: ${result.message}` + // Store detailed progress in job data for clients to query + job.updateData({ + ...job.data, + status: 'downloading', + progress: progressPercent, + downloadedBytes: bytes?.downloadedBytes, + totalBytes: bytes?.totalBytes, + progress_timestamp: new Date().toISOString(), + }).catch((err) => { + if (err?.code !== -1) throw err + }) + }, + abortController.signal, + job.id! ) - // Don't retry errors that will never succeed (e.g., Ollama version too old) - if (result.retryable === false) { - throw new UnrecoverableError(result.message) - } - throw new Error(`Failed to initiate download for model: ${result.message}`) - } - logger.info(`[DownloadModelJob] Successfully completed download for model ${modelName}`) - return { - modelName, - message: result.message, + if (!result.success) { + logger.error( + `[DownloadModelJob] Failed to initiate download for model ${modelName}: ${result.message}` + ) + // User-initiated cancel — must be unrecoverable to avoid the 40-attempt retry storm. + // The downloadModel() catch block returns retryable: false for cancels, so this branch + // catches both Ollama version mismatches (existing) AND user cancels (new). + if (result.retryable === false) { + throw new UnrecoverableError(result.message) + } + throw new Error(`Failed to initiate download for model: ${result.message}`) + } + + logger.info(`[DownloadModelJob] Successfully completed download for model ${modelName}`) + return { + modelName, + message: result.message, + } + } catch (error: any) { + // Belt-and-suspenders: if downloadModel didn't recognize the cancel (e.g., the abort + // fired after the response stream completed but before our code returned), the cancel + // flag tells us this was a user action and should be unrecoverable. + if (userCancelled || abortController.signal.reason === 'user-cancel') { + if (!(error instanceof UnrecoverableError)) { + throw new UnrecoverableError(`Model download cancelled: ${error.message ?? error}`) + } + } + throw error + } finally { + if (cancelPollInterval !== null) { + clearInterval(cancelPollInterval) + cancelPollInterval = null + } + DownloadModelJob.abortControllers.delete(job.id!) } } static async getByModelName(modelName: string): Promise { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const jobId = this.getJobId(modelName) return await queue.getJob(jobId) } static async dispatch(params: DownloadModelJobParams) { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const jobId = this.getJobId(params.modelName) diff --git a/admin/app/jobs/embed_file_job.ts b/admin/app/jobs/embed_file_job.ts index eef45a8..ba52ca8 100644 --- a/admin/app/jobs/embed_file_job.ts +++ b/admin/app/jobs/embed_file_job.ts @@ -4,9 +4,11 @@ import { EmbedJobWithProgress } from '../../types/rag.js' import { RagService } from '#services/rag_service' import { DockerService } from '#services/docker_service' import { OllamaService } from '#services/ollama_service' +import KbIngestState from '#models/kb_ingest_state' import { createHash } from 'crypto' import logger from '@adonisjs/core/services/logger' import fs from 'node:fs/promises' +import { ZIM_BATCH_SIZE } from '../../constants/zim_extraction.js' export interface EmbedFileJobParams { filePath: string @@ -16,6 +18,11 @@ export interface EmbedFileJobParams { batchOffset?: number // Current batch offset (for ZIM files) totalArticles?: number // Total articles in ZIM (for progress tracking) isFinalBatch?: boolean // Whether this is the last batch (prevents premature deletion) + // Running total of chunks embedded across prior batches in this dispatch chain. + // Carried forward so the final batch can persist an accurate `chunks_embedded` + // count via KbIngestState.markIndexed (see #933 — without this, only the last + // batch's chunk count was stored while Qdrant held the full set). + chunksSoFar?: number } export class EmbedFileJob { @@ -27,6 +34,12 @@ export class EmbedFileJob { return 'embed-file' } + // Delay between continuation batches when embedding runs CPU-only. Gives the OS + // scheduler a brief idle window so sshd / disk-collector / other services don't + // starve during long multi-batch ZIM ingestions. Skipped entirely when the + // embedding model is GPU-offloaded — see OllamaService.isEmbeddingGpuAccelerated(). + static readonly CPU_BATCH_DELAY_MS = 1000 + static getJobId(filePath: string): string { return createHash('sha256').update(filePath).digest('hex').slice(0, 16) } @@ -77,8 +90,16 @@ export class EmbedFileJob { logger.info(`[EmbedFileJob] Services ready. Processing file: ${fileName}`) - // Update progress starting - await this.safeUpdateProgress(job, 5) + // Anchor initial progress to where we are in the overall file. For a + // continuation batch midway through a multi-batch ZIM (e.g. offset 100k of + // 600k), the hardcoded 5 used to make the gauge briefly flash 0→5→real, + // which read as a backward jump. Fall back to 5 for single-batch files + // where totalArticles isn't set. + const initialPercent = + totalArticles && totalArticles > 0 + ? Math.min(99, Math.round(((batchOffset || 0) / totalArticles) * 100)) + : 5 + await this.safeUpdateProgress(job, initialPercent) await job.updateData({ ...job.data, status: 'processing', @@ -87,9 +108,25 @@ export class EmbedFileJob { logger.info(`[EmbedFileJob] Processing file: ${filePath}`) - // Progress callback: maps service-reported 0-100% into the 5-95% job range + // Progress callback. For multi-batch ZIM ingestions, scale the service-reported + // 0-100% (which is % through the current batch's chunks) into the overall-file + // frame so the UI gauge climbs monotonically across the many continuation jobs + // BullMQ creates per file. Without this, every new continuation jobId resets the + // gauge to ~5% and the user sees ingestion progress "jumping around" between + // each batch's local frame and the end-of-batch overall-file overwrite below. + // + // For single-batch files (uploaded PDFs, txts) totalArticles is undefined and + // we fall back to the original 5-95% per-job range, which is what the UI expects + // for a one-shot file with no continuations. const onProgress = async (percent: number) => { - await this.safeUpdateProgress(job, Math.min(95, Math.round(5 + percent * 0.9))) + const useOverallFrame = totalArticles && totalArticles > 0 + if (useOverallFrame) { + const articlesDone = (batchOffset || 0) + (percent / 100) * ZIM_BATCH_SIZE + const overallPercent = Math.min(99, Math.round((articlesDone / totalArticles) * 100)) + await this.safeUpdateProgress(job, overallPercent) + } else { + await this.safeUpdateProgress(job, Math.min(95, Math.round(5 + percent * 0.9))) + } } // Process and embed the file @@ -114,18 +151,59 @@ export class EmbedFileJob { `[EmbedFileJob] Batch complete. Dispatching next batch at offset ${nextOffset}` ) - // Dispatch next batch (not final yet) + // Pace continuation batches when embedding is CPU-bound. Sustained 100% CPU + // saturation across all cores during multi-batch ZIM ingestion can starve + // other services (sshd has been seen to lose responsiveness hard enough to + // require a power-cycle). When GPU-accelerated, embeddings stream through + // the GPU and CPUs stay free — no pacing needed. + const isGpuAccelerated = await ollamaService.isEmbeddingGpuAccelerated() + if (!isGpuAccelerated) { + logger.info( + `[EmbedFileJob] Embedding is CPU-only — pacing ${EmbedFileJob.CPU_BATCH_DELAY_MS}ms before dispatching next batch` + ) + await new Promise((resolve) => setTimeout(resolve, EmbedFileJob.CPU_BATCH_DELAY_MS)) + } + + // Bail before re-populating the queue if this job was cancelled mid-batch. + // cancelAllJobs() obliterates the queue (including this active job), but a + // worker already inside handle() would otherwise dispatch its continuation + // afterwards and silently revive a cancelled ZIM ingestion. If our own job + // key is gone, the cancel happened — skip the dispatch. Mirrors the + // "tolerate external removal" handling in safeUpdateProgress above. + const stillQueued = await QueueService.getInstance() + .getQueue(EmbedFileJob.queue) + .getJob(job.id!) + if (!stillQueued) { + logger.info( + `[EmbedFileJob] Job ${fileName} was cancelled; skipping continuation dispatch` + ) + return { success: false, cancelled: true, fileName, filePath } + } + + // Dispatch next batch (not final yet). Carry forward the running + // chunk count so the final batch can persist an accurate total (#933). + const chunksSoFarNext = (job.data.chunksSoFar || 0) + (result.chunks || 0) await EmbedFileJob.dispatch({ filePath, fileName, batchOffset: nextOffset, totalArticles: totalArticles || result.totalArticles, isFinalBatch: false, // Explicitly not final + chunksSoFar: chunksSoFarNext, }) - // Calculate progress based on articles processed + // Calculate progress based on articles processed. + // + // nextOffset counts entries passing our isArticleEntry() filter, but the + // denominator (totalArticles = archive.articleCount) uses libzim's + // narrower article definition. On ZIMs that pack one logical article as + // several sub-pages (e.g. iFixit), nextOffset outruns articleCount and a + // raw ratio overflows past 100%, which the UI pins at 99% for the entire + // tail so the file looks stuck (#903). Grow the denominator once we pass + // the reported count so the gauge keeps creeping forward monotonically, + // and never report 100% before the genuinely-final batch (handled below). const progress = totalArticles - ? Math.round((nextOffset / totalArticles) * 100) + ? Math.min(99, Math.round((nextOffset / Math.max(totalArticles, nextOffset + ZIM_BATCH_SIZE)) * 100)) : 50 await this.safeUpdateProgress(job, progress) @@ -133,7 +211,7 @@ export class EmbedFileJob { ...job.data, status: 'batch_completed', lastBatchAt: Date.now(), - chunks: (job.data.chunks || 0) + (result.chunks || 0), + chunks: chunksSoFarNext, }) return { @@ -147,8 +225,11 @@ export class EmbedFileJob { } } - // Final batch or non-batched file - mark as complete - const totalChunks = (job.data.chunks || 0) + (result.chunks || 0) + // Final batch or non-batched file - mark as complete. + // chunksSoFar carries the accumulated count from prior dispatched batches + // (each continuation passes it forward — see EmbedFileJobParams). For a + // non-batched file it is undefined and we just count this single result. + const totalChunks = (job.data.chunksSoFar || 0) + (result.chunks || 0) await this.safeUpdateProgress(job, 100) await job.updateData({ ...job.data, @@ -157,6 +238,18 @@ export class EmbedFileJob { chunks: totalChunks, }) + // Persist the post-job state so scanAndSyncStorage knows this file is done. + // BullMQ's :completed retention (50 jobs) ages out, so the state row is + // the only durable record of "this file finished embedding". + try { + await KbIngestState.markIndexed(filePath, totalChunks) + } catch (stateErr) { + logger.warn( + `[EmbedFileJob] Failed to persist ingest state for ${fileName}: %s`, + stateErr instanceof Error ? stateErr.message : String(stateErr) + ) + } + const batchMsg = isZimBatch ? ` (final batch, total chunks: ${totalChunks})` : '' logger.info( `[EmbedFileJob] Successfully embedded ${result.chunks} chunks from file: ${fileName}${batchMsg}` @@ -170,73 +263,149 @@ export class EmbedFileJob { message: `Successfully embedded ${result.chunks} chunks`, } } catch (error) { - logger.error(`[EmbedFileJob] Error embedding file ${fileName}:`, error) + // A chunk that still exceeds the model's context after OllamaService's truncate-and-retry is + // permanently oversized for this install (e.g. a model whose context is smaller than our safe + // cap). Re-embedding the whole file 30x re-processes everything and can never succeed — that is + // the "endless queue loop" / "api/embed for weeks" (#881/#944/#959). Mark it unrecoverable so + // BullMQ stops after one pass instead of storming. + let normalizedError = error + if (!(error instanceof UnrecoverableError) && OllamaService.isContextLengthError(error)) { + logger.warn( + `[EmbedFileJob] Context-length overflow persisted for ${fileName} after truncation; not retrying.` + ) + normalizedError = new UnrecoverableError( + error instanceof Error ? error.message : 'Embedding input exceeds the model context length' + ) + } + + logger.error(`[EmbedFileJob] Error embedding file ${fileName}:`, normalizedError) await job.updateData({ ...job.data, status: 'failed', failedAt: Date.now(), - error: error instanceof Error ? error.message : 'Unknown error', + error: normalizedError instanceof Error ? normalizedError.message : 'Unknown error', }) - throw error + // Only persist `failed` for unrecoverable errors. Retryable errors get + // automatic BullMQ retries (30 attempts); marking state failed on every + // transient blip would suppress the retry-driven recovery path. + if (normalizedError instanceof UnrecoverableError) { + try { + await KbIngestState.markFailed( + filePath, + normalizedError instanceof Error ? normalizedError.message : 'Unknown error' + ) + } catch (stateErr) { + logger.warn( + `[EmbedFileJob] Failed to persist failed state for ${fileName}: %s`, + stateErr instanceof Error ? stateErr.message : String(stateErr) + ) + } + } + + throw normalizedError } } static async listActiveJobs(): Promise { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const jobs = await queue.getJobs(['waiting', 'active', 'delayed']) - return jobs.map((job) => ({ - jobId: job.id!.toString(), - fileName: (job.data as EmbedFileJobParams).fileName, - filePath: (job.data as EmbedFileJobParams).filePath, - progress: typeof job.progress === 'number' ? job.progress : 0, - status: ((job.data as any).status as string) ?? 'waiting', - })) + return jobs.map((job) => { + const data = job.data as EmbedFileJobParams & { + status?: string + lastBatchAt?: number + startedAt?: number + chunks?: number + } + return { + jobId: job.id!.toString(), + fileName: data.fileName, + filePath: data.filePath, + progress: typeof job.progress === 'number' ? job.progress : 0, + status: data.status ?? 'waiting', + lastBatchAt: data.lastBatchAt, + startedAt: data.startedAt, + chunks: data.chunks, + } + }) } static async getByFilePath(filePath: string): Promise { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const jobId = this.getJobId(filePath) return await queue.getJob(jobId) } - static async dispatch(params: EmbedFileJobParams) { - const queueService = new QueueService() + static async dispatch(params: EmbedFileJobParams, options?: { force?: boolean }) { + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) - const jobId = this.getJobId(params.filePath) + + // Continuation batches (batchOffset > 0) must NOT reuse the deterministic + // per-file jobId. Two BullMQ dedupe paths would otherwise silently swallow them: + // 1) The parent batch's handle() calls dispatch() before returning, so the + // parent job is still `active` and locked — queue.add() with the same + // jobId returns the locked parent rather than enqueueing the new batch. + // 2) After the parent completes, its entry stays in `completed` (held by + // `removeOnComplete: { count: 50 }`), still tripping jobId dedupe. + // Letting BullMQ auto-generate a unique jobId for continuation batches stacks + // them as independent queue entries that each process via handle(). + // Initial dispatches keep the deterministic jobId so re-triggering an install + // (UI re-click, sync rescan, etc.) is still idempotent. + // `force` skips the deterministic jobId for bulk callers (reembedAll / + // resetAndRebuild) where historical entries in :completed would otherwise + // silently swallow the new dispatch. + const isContinuation = !!(params.batchOffset && params.batchOffset > 0) + const force = !!options?.force + const initialJobId = this.getJobId(params.filePath) + + const jobOptions: Parameters[2] = { + attempts: 30, + backoff: { + type: 'fixed', + delay: 60000, // Check every 60 seconds for service readiness + }, + removeOnComplete: { count: 50 }, // Keep last 50 completed jobs for history + removeOnFail: { count: 20 }, // Keep last 20 failed jobs for debugging + } + if (!isContinuation && !force) { + jobOptions.jobId = initialJobId + } try { - const job = await queue.add(this.key, params, { - jobId, - attempts: 30, - backoff: { - type: 'fixed', - delay: 60000, // Check every 60 seconds for service readiness - }, - removeOnComplete: { count: 50 }, // Keep last 50 completed jobs for history - removeOnFail: { count: 20 } // Keep last 20 failed jobs for debugging - }) + const job = await queue.add(this.key, params, jobOptions) - logger.info(`[EmbedFileJob] Dispatched embedding job for file: ${params.fileName}`) + const label = isContinuation + ? ` (continuation @ offset ${params.batchOffset})` + : force + ? ' (forced re-dispatch)' + : '' + logger.info( + `[EmbedFileJob] Dispatched embedding job for file: ${params.fileName}${label}` + ) return { job, created: true, - jobId, + jobId: job.id ?? initialJobId, message: `File queued for embedding: ${params.fileName}`, } } catch (error) { - if (error.message && error.message.includes('job already exists')) { - const existing = await queue.getJob(jobId) + if ( + !isContinuation && + !force && + error.message && + error.message.includes('job already exists') + ) { + const existing = await queue.getJob(initialJobId) logger.info(`[EmbedFileJob] Job already exists for file: ${params.fileName}`) return { job: existing, created: false, - jobId, + jobId: initialJobId, message: `Embedding job already exists for: ${params.fileName}`, } } @@ -245,7 +414,7 @@ export class EmbedFileJob { } static async listFailedJobs(): Promise { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) // Jobs that have failed at least once are in 'delayed' (retrying) or terminal 'failed' state. // We identify them by job.data.status === 'failed' set in the catch block of handle(). @@ -264,7 +433,7 @@ export class EmbedFileJob { } static async cleanupFailedJobs(): Promise<{ cleaned: number; filesDeleted: number }> { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const allJobs = await queue.getJobs(['waiting', 'delayed', 'failed']) const failedJobs = allJobs.filter((job) => (job.data as any).status === 'failed') @@ -290,6 +459,46 @@ export class EmbedFileJob { return { cleaned, filesDeleted } } + /** Unconditionally clear every embedding job regardless of state. + * + * cleanupFailedJobs only removes jobs explicitly tagged status === 'failed', + * which leaves stuck jobs (waiting / active / delayed / paused that never + * reached 'failed') unreachable from the UI — the operator's only recourse was + * flushing Redis by hand. This wipes the whole queue, including a locked active + * job, via obliterate({ force: true }) (plain obliterate/job.remove throw on a + * locked job). It touches only Redis, so it is safe while Qdrant/Ollama are + * offline — which is exactly when jobs pile up and wedge. */ + static async cancelAllJobs(): Promise<{ cancelled: number; filesDeleted: number }> { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + const jobs = await queue.getJobs(['waiting', 'active', 'delayed', 'paused', 'failed']) + + let filesDeleted = 0 + for (const job of jobs) { + const filePath = (job.data as EmbedFileJobParams).filePath + // Same guard as cleanupFailedJobs: only delete user uploads, never ZIM + // library files or Nomad docs that live outside the uploads path. + if (filePath && filePath.includes(RagService.UPLOADS_STORAGE_PATH)) { + try { + await fs.unlink(filePath) + filesDeleted++ + } catch { + // File may already be deleted — that's fine + } + } + } + + const cancelled = jobs.length + + // force: true removes the locked/active job too. An in-flight worker may keep + // running its current batch in memory; the self-exists guard in handle() + // prevents it from dispatching a continuation back into the cleared queue. + await queue.obliterate({ force: true }) + + logger.info(`[EmbedFileJob] Cancelled ${cancelled} jobs, deleted ${filesDeleted} files`) + return { cancelled, filesDeleted } + } + static async getStatus(filePath: string): Promise<{ exists: boolean status?: string diff --git a/admin/app/jobs/run_benchmark_job.ts b/admin/app/jobs/run_benchmark_job.ts index 0ae41e8..962e663 100644 --- a/admin/app/jobs/run_benchmark_job.ts +++ b/admin/app/jobs/run_benchmark_job.ts @@ -53,7 +53,7 @@ export class RunBenchmarkJob { } static async dispatch(params: RunBenchmarkJobParams) { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) try { @@ -89,7 +89,7 @@ export class RunBenchmarkJob { } static async getJob(benchmarkId: string): Promise { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) return await queue.getJob(benchmarkId) } diff --git a/admin/app/jobs/run_download_job.ts b/admin/app/jobs/run_download_job.ts index 12b3532..c9a5999 100644 --- a/admin/app/jobs/run_download_job.ts +++ b/admin/app/jobs/run_download_job.ts @@ -6,7 +6,36 @@ import { createHash } from 'crypto' import { DockerService } from '#services/docker_service' import { ZimService } from '#services/zim_service' import { MapService } from '#services/map_service' +import { RagService } from '#services/rag_service' +import { OllamaService } from '#services/ollama_service' import { EmbedFileJob } from './embed_file_job.js' +import { basename, join, resolve, sep } from 'node:path' +import { ZIM_STORAGE_PATH } from '../utils/fs.js' + +/** Maps live under `/storage/maps/pmtiles`; no shared constant exists. */ +const MAP_STORAGE_PATH = '/storage/maps' + +/** + * Guard for the outdated-file deletion in {@link RunDownloadJob} `onComplete`: + * returns true only when `oldFilePath` sits under the expected content storage + * root for its type AND its filename carries this resource's id prefix. This + * makes the delete explicit and bounded — we only ever remove the replaced + * resource's own previous file, never another file, even if the + * InstalledResource row is stale or malformed. + */ +function isSafeOldContentPath( + oldFilePath: string, + resourceId: string, + filetype: string +): boolean { + const root = + filetype === 'zim' + ? join(process.cwd(), ZIM_STORAGE_PATH) + : join(process.cwd(), MAP_STORAGE_PATH) + const resolved = resolve(oldFilePath) + if (!resolved.startsWith(root + sep)) return false + return basename(resolved).startsWith(`${resourceId}_`) +} export class RunDownloadJob { static get queue() { @@ -31,10 +60,10 @@ export class RunDownloadJob { /** Signal cancellation via Redis so the worker process can pick it up */ static async signalCancel(jobId: string): Promise { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const client = await queue.client - await client.set(this.cancelKey(jobId), '1', 'EX', 300) // 5 min TTL + await client.set(this.cancelKey(jobId), '1', { EX: 300 }) // 5 min TTL } async handle(job: Job) { @@ -46,7 +75,7 @@ export class RunDownloadJob { RunDownloadJob.abortControllers.set(job.id!, abortController) // Get Redis client for checking cancel signals from the API process - const queueService = new QueueService() + const queueService = QueueService.getInstance() const cancelRedis = await queueService.getQueue(RunDownloadJob.queue).client let lastKnownProgress: Pick = { @@ -98,6 +127,11 @@ export class RunDownloadJob { lastKnownProgress = { downloadedBytes: progress.downloadedBytes, totalBytes: progress.totalBytes } }, async onComplete(url) { + // The previous file recorded for this resource (if any). Hoisted out of + // the metadata block below so the ZIM branch can decide whether this + // download is a content UPDATE (replacing a prior file) vs a fresh + // install, which changes how we reconcile the knowledge base. + let oldFilePath: string | null = null try { // Create InstalledResource entry if metadata was provided if (resourceMetadata) { @@ -111,9 +145,9 @@ export class RunDownloadJob { .where('resource_id', resourceMetadata.resource_id) .where('resource_type', filetype as 'zim' | 'map') .first() - const oldFilePath = oldEntry?.file_path ?? null + oldFilePath = oldEntry?.file_path ?? null - await InstalledResource.updateOrCreate( + const installed = await InstalledResource.updateOrCreate( { resource_id: resourceMetadata.resource_id, resource_type: filetype as 'zim' | 'map' }, { version: resourceMetadata.version, @@ -125,15 +159,45 @@ export class RunDownloadJob { } ) - // Delete the old file if it differs from the new one - if (oldFilePath && oldFilePath !== filepath) { + // A completed auto-update is the authoritative success signal for the + // per-resource backoff — clear it here (NOT at dispatch time, which + // would reset the counter every window and defeat self-disable). The + // matching terminal-failure increment lives in the worker `failed` + // handler (commands/queue/work.ts). Manual downloads (auto !== true) + // never touch the counter. + if (resourceMetadata.auto === true) { try { - await deleteFileIfExists(oldFilePath) - console.log(`[RunDownloadJob] Deleted old file: ${oldFilePath}`) - } catch (deleteError) { + const { recordResourceUpdateSuccess } = await import( + '../utils/content_auto_update_backoff.js' + ) + await recordResourceUpdateSuccess(installed) + } catch (error) { + console.error( + `[RunDownloadJob] Error clearing auto-update backoff for ${resourceMetadata.resource_id}:`, + error + ) + } + } + + // Step 1: delete the OUTDATED file if it differs from the new one. + // Guarded by isSafeOldContentPath so we can ONLY ever delete the + // replaced resource's own previous file — never another resource's + // file, even if the InstalledResource row is stale/malformed. + if (oldFilePath && oldFilePath !== filepath) { + if (isSafeOldContentPath(oldFilePath, resourceMetadata.resource_id, filetype)) { + try { + await deleteFileIfExists(oldFilePath) + console.log(`[RunDownloadJob] Deleted old file: ${oldFilePath}`) + } catch (deleteError) { + console.warn( + `[RunDownloadJob] Failed to delete old file ${oldFilePath}:`, + deleteError + ) + } + } else { console.warn( - `[RunDownloadJob] Failed to delete old file ${oldFilePath}:`, - deleteError + `[RunDownloadJob] Refusing to delete unexpected old file path for ` + + `${resourceMetadata.resource_id} (${filetype}): ${oldFilePath}` ) } } @@ -144,16 +208,77 @@ export class RunDownloadJob { const zimService = new ZimService(dockerService) await zimService.downloadRemoteSuccessCallback([url], true) - // Only dispatch embedding job if AI Assistant (Ollama) is installed + // Only touch the knowledge base if AI Assistant (Ollama) is installed const ollamaUrl = await dockerService.getServiceURL('nomad_ollama') if (ollamaUrl) { - try { - await EmbedFileJob.dispatch({ - fileName: url.split('/').pop() || '', - filePath: filepath, - }) - } catch (error) { - console.error(`[RunDownloadJob] Error dispatching EmbedFileJob for URL ${url}:`, error) + // A content UPDATE replaces a prior file at a DIFFERENT path + // (version is in the filename). A fresh install has no prior row; + // a same-version re-download keeps the same path. The two cases + // reconcile the KB differently. + const isReplacement = !!oldFilePath && oldFilePath !== filepath + + if (isReplacement) { + // CONTENT UPDATE: mirror the REPLACED file's prior indexed state + // rather than the global Always/Manual policy. reconcileReplaced- + // ContentFile removes the old file's points and re-queues the new + // file IFF the old one was indexed and Qdrant is running; it is a + // no-op otherwise (not installed / old not indexed / Qdrant down). + // The user already chose whether this content is in the KB, so we + // honor that choice in both directions. See the method for the + // full 5-step contract. + try { + const ragService = new RagService(dockerService, new OllamaService()) + const outcome = await ragService.reconcileReplacedContentFile({ + oldFilePath: oldFilePath!, + newFilePath: filepath, + fileName: url.split('/').pop() || '', + }) + console.log( + `[RunDownloadJob] KB reconciliation for replaced ${filepath}: ${outcome}` + ) + } catch (error) { + console.error( + `[RunDownloadJob] Error reconciling knowledge base for replaced file ${filepath}:`, + error + ) + } + } else { + // FRESH INSTALL (or same-version re-download): respect the global + // ingest policy. Under Manual, record the file as pending_decision + // so the KB panel surfaces the per-file Index affordance (PR #909) + // instead of silently auto-embedding behind the user's back. Unset + // is treated as Always to preserve legacy behavior — mirrors + // rag_service.ts:1587-1588. + const { default: KVStore } = await import('#models/kv_store') + const { default: KbIngestState } = await import('#models/kb_ingest_state') + const policyRaw = await KVStore.getValue('rag.defaultIngestPolicy') + const policy: 'Always' | 'Manual' = policyRaw === 'Manual' ? 'Manual' : 'Always' + + if (policy === 'Manual') { + try { + // firstOrCreate so a re-download doesn't demote an existing + // indexed/failed row — user keeps prior state and can re-index + // explicitly from the KB panel if they want fresh content. + await KbIngestState.firstOrCreate( + { file_path: filepath }, + { file_path: filepath, state: 'pending_decision', chunks_embedded: 0 } + ) + } catch (error) { + console.error( + `[RunDownloadJob] Error recording pending_decision state for ${filepath}:`, + error + ) + } + } else { + try { + await EmbedFileJob.dispatch({ + fileName: url.split('/').pop() || '', + filePath: filepath, + }) + } catch (error) { + console.error(`[RunDownloadJob] Error dispatching EmbedFileJob for URL ${url}:`, error) + } + } } } } else if (filetype === 'map') { @@ -199,7 +324,7 @@ export class RunDownloadJob { } static async getByUrl(url: string): Promise { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const jobId = this.getJobId(url) return await queue.getJob(jobId) @@ -229,7 +354,7 @@ export class RunDownloadJob { } static async dispatch(params: RunDownloadJobParams) { - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue(this.queue) const jobId = this.getJobId(params.url) diff --git a/admin/app/jobs/run_extract_pmtiles_job.ts b/admin/app/jobs/run_extract_pmtiles_job.ts new file mode 100644 index 0000000..b216d14 --- /dev/null +++ b/admin/app/jobs/run_extract_pmtiles_job.ts @@ -0,0 +1,294 @@ +import { Job, UnrecoverableError } from 'bullmq' +import { spawn, ChildProcess } from 'child_process' +import { createHash } from 'crypto' +import { readdir, stat } from 'fs/promises' +import { basename, dirname, join } from 'path' +import { QueueService } from '#services/queue_service' +import logger from '@adonisjs/core/services/logger' +import { DownloadProgressData } from '../../types/downloads.js' +import { PMTILES_BINARY_PATH, buildPmtilesExtractArgs } from '../../constants/map_regions.js' +import { deleteFileIfExists } from '../utils/fs.js' + +export interface RunExtractPmtilesJobParams { + sourceUrl: string + outputFilepath: string + /** Path to a GeoJSON FeatureCollection file passed to `pmtiles extract --region`. */ + regionFilepath: string + maxzoom?: number + /** Hint for progress reporting; obtained from `pmtiles extract --dry-run` preflight */ + estimatedBytes?: number + filetype: 'map' + title?: string + resourceMetadata?: { + resource_id: string + version: string + collection_ref: string | null + } +} + +export class RunExtractPmtilesJob { + static get queue() { + return 'pmtiles-extract' + } + + static get key() { + return 'run-pmtiles-extract' + } + + /** In-memory registry of active child processes so in-process cancels can SIGTERM them */ + static childProcesses: Map = new Map() + + static getJobId(sourceUrl: string, regionFilepath: string, maxzoom?: number): string { + const payload = JSON.stringify({ sourceUrl, regionFilepath, maxzoom: maxzoom ?? null }) + return createHash('sha256').update(payload).digest('hex').slice(0, 16) + } + + /** Redis key used to signal cancellation across processes */ + static cancelKey(jobId: string): string { + return `nomad:download:pmtiles-cancel:${jobId}` + } + + static async signalCancel(jobId: string): Promise { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + const client = await queue.client + await client.set(this.cancelKey(jobId), '1', { EX: 300 }) + } + + /** Awaits job.updateProgress and swallows BullMQ stale-job errors (code -1), + * which occur when the job was removed from Redis (e.g. cancelled) between + * the await being issued and the Redis write completing. Anything else + * re-throws so it's caught by the surrounding try rather than becoming an + * unhandled rejection. */ + private async safeUpdateProgress(job: Job, progress: DownloadProgressData): Promise { + try { + await job.updateProgress(progress) + } catch (err: any) { + if (err?.code !== -1) throw err + } + } + + async handle(job: Job) { + const params = job.data as RunExtractPmtilesJobParams + const { sourceUrl, outputFilepath, regionFilepath, maxzoom, estimatedBytes } = params + + logger.info( + `[RunExtractPmtilesJob] Starting extract: source=${sourceUrl} region=${regionFilepath} ` + + `maxzoom=${maxzoom ?? 'source-max'} out=${outputFilepath}` + ) + + const queueService = QueueService.getInstance() + const cancelRedis = await queueService.getQueue(RunExtractPmtilesJob.queue).client + + let userCancelled = false + let proc: ChildProcess | null = null + let lastReportedBytes = -1 + + // One 2s tick polls the Redis cancel signal and reads file-size for progress. pmtiles + // writes incrementally but rewrites directories near the end so progress isn't strictly + // monotonic — we cap at 99% and skip emit when bytes are unchanged to avoid Redis chatter. + const tick = setInterval(async () => { + try { + const val = await cancelRedis.get(RunExtractPmtilesJob.cancelKey(job.id!)) + if (val) { + await cancelRedis.del(RunExtractPmtilesJob.cancelKey(job.id!)) + userCancelled = true + proc?.kill('SIGTERM') + } + } catch { + // Redis errors non-fatal — in-memory handle also covers same-process cancels + } + + try { + const fileStat = await stat(outputFilepath) + const downloadedBytes = Number(fileStat.size) + if (downloadedBytes === lastReportedBytes) return + lastReportedBytes = downloadedBytes + + const totalBytes = estimatedBytes ?? 0 + const percent = + totalBytes > 0 ? Math.min(99, Math.floor((downloadedBytes / totalBytes) * 100)) : 0 + + await this.safeUpdateProgress(job, { + percent, + downloadedBytes, + totalBytes, + lastProgressTime: Date.now(), + } as DownloadProgressData) + } catch { + // File doesn't exist yet (subprocess still setting up) + } + }, 2000) + + try { + const args = buildPmtilesExtractArgs({ + sourceUrl, + outputFilepath, + regionFilepath, + maxzoom, + downloadThreads: 8, + overfetch: 0.2, + }) + proc = spawn(PMTILES_BINARY_PATH, args, { stdio: ['ignore', 'pipe', 'pipe'] }) + RunExtractPmtilesJob.childProcesses.set(job.id!, proc) + + proc.stdout?.on('data', (chunk) => { + logger.debug(`[RunExtractPmtilesJob:${job.id}] ${chunk.toString().trimEnd()}`) + }) + proc.stderr?.on('data', (chunk) => { + logger.debug(`[RunExtractPmtilesJob:${job.id}] ${chunk.toString().trimEnd()}`) + }) + + const exitCode: number = await new Promise((resolve, reject) => { + proc!.on('close', (code) => resolve(code ?? -1)) + proc!.on('error', (err) => reject(err)) + }) + + if (exitCode !== 0) { + await deleteFileIfExists(outputFilepath) + if (userCancelled) { + throw new UnrecoverableError(`Extract cancelled by user (exit ${exitCode})`) + } + throw new Error(`pmtiles extract exited with code ${exitCode}`) + } + + // Final progress bump — tick caps at 99 so the UI doesn't flicker to 100 mid-extract + const finalStat = await stat(outputFilepath) + await this.safeUpdateProgress(job, { + percent: 100, + downloadedBytes: Number(finalStat.size), + totalBytes: estimatedBytes ?? Number(finalStat.size), + lastProgressTime: Date.now(), + } as DownloadProgressData) + + // Reuse the HTTP download path's post-download hook so the file is registered and + // the previous version (if any) is deleted + await this.onComplete(params) + + logger.info( + `[RunExtractPmtilesJob] Completed extract: out=${outputFilepath} size=${finalStat.size} bytes` + ) + + return { sourceUrl, outputFilepath } + } catch (error: any) { + if (userCancelled && !(error instanceof UnrecoverableError)) { + throw new UnrecoverableError(`Extract cancelled: ${error.message ?? error}`) + } + throw error + } finally { + clearInterval(tick) + RunExtractPmtilesJob.childProcesses.delete(job.id!) + } + } + + private async onComplete(params: RunExtractPmtilesJobParams) { + if (!params.resourceMetadata) return + + const [{ default: InstalledResource }, { DateTime }, fsUtils] = await Promise.all([ + import('#models/installed_resource'), + import('luxon'), + import('../utils/fs.js'), + ]) + + const fileStat = await fsUtils.getFileStatsIfExists(params.outputFilepath) + + const existing = await InstalledResource.query() + .where('resource_id', params.resourceMetadata.resource_id) + .where('resource_type', 'map') + .first() + const oldFilePath = existing?.file_path ?? null + + await InstalledResource.updateOrCreate( + { + resource_id: params.resourceMetadata.resource_id, + resource_type: 'map', + }, + { + version: params.resourceMetadata.version, + collection_ref: params.resourceMetadata.collection_ref, + url: params.sourceUrl, + file_path: params.outputFilepath, + file_size_bytes: fileStat ? Number(fileStat.size) : null, + installed_at: DateTime.now(), + } + ) + + if (oldFilePath && oldFilePath !== params.outputFilepath) { + try { + await fsUtils.deleteFileIfExists(oldFilePath) + } catch (err) { + logger.warn(`[RunExtractPmtilesJob] Failed to delete old file ${oldFilePath}: ${err}`) + } + } + + // Fallback: scan the pmtiles dir for orphans with the same resource_id that the DB + // lookup above didn't catch — e.g. a prior extract crashed before writing its + // InstalledResource row, or an earlier bug wrote a file without registering it. + // Matches both curated (`_YYYY-MM.pmtiles`) and regional (`_YYYYMMDD_zN.pmtiles`) + // naming — prefix-only so new filename formats don't silently miss. + const dir = dirname(params.outputFilepath) + const keepName = basename(params.outputFilepath) + const prefix = `${params.resourceMetadata.resource_id}_` + try { + const entries = await readdir(dir) + for (const entry of entries) { + if (entry === keepName || !entry.endsWith('.pmtiles')) continue + if (!entry.startsWith(prefix)) continue + const orphanPath = join(dir, entry) + if (orphanPath === oldFilePath) continue + try { + await fsUtils.deleteFileIfExists(orphanPath) + logger.info(`[RunExtractPmtilesJob] Pruned orphan pmtiles ${orphanPath}`) + } catch (err) { + logger.warn(`[RunExtractPmtilesJob] Failed to prune orphan ${orphanPath}: ${err}`) + } + } + } catch (err) { + logger.warn(`[RunExtractPmtilesJob] Directory scan for orphans failed: ${err}`) + } + } + + static async getById(jobId: string): Promise { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + return await queue.getJob(jobId) + } + + static async dispatch(params: RunExtractPmtilesJobParams) { + const queueService = QueueService.getInstance() + const queue = queueService.getQueue(this.queue) + const jobId = this.getJobId(params.sourceUrl, params.regionFilepath, params.maxzoom) + + const existing = await queue.getJob(jobId) + if (existing) { + const state = await existing.getState() + if (state === 'active' || state === 'waiting' || state === 'delayed') { + return { + job: existing, + created: false, + message: `Extract job already exists for these params`, + } + } + // Stale (completed/failed) — remove so we can re-dispatch under the same deterministic id + try { + await existing.remove() + } catch { + // Already gone or locked — add() below will still report a meaningful error + } + } + + // Fewer attempts than HTTP downloads — a failed extract usually means the source URL + // rotated or the CDN is throttling, and resuming mid-extract isn't supported by the CLI + const job = await queue.add(this.key, params, { + jobId, + attempts: 3, + backoff: { type: 'exponential', delay: 60000 }, + removeOnComplete: true, + }) + return { + job, + created: true, + message: `Dispatched pmtiles extract job`, + } + } +} diff --git a/admin/app/middleware/compression_middleware.ts b/admin/app/middleware/compression_middleware.ts index 0661ac7..9c11411 100644 --- a/admin/app/middleware/compression_middleware.ts +++ b/admin/app/middleware/compression_middleware.ts @@ -3,7 +3,21 @@ import type { HttpContext } from '@adonisjs/core/http' import type { NextFn } from '@adonisjs/core/types/http' import compression from 'compression' -const compress = env.get('DISABLE_COMPRESSION') ? null : compression() +// Skip compression for Server-Sent Events. The compression library buffers +// response writes to determine encoding, which collapses per-token streaming +// into a single block delivered after generation completes (regression in +// v1.31.0-rc.2, reported in #781 by @toasterking). +const compress = env.get('DISABLE_COMPRESSION') + ? null + : compression({ + filter: (req: any, res: any) => { + const contentType = res.getHeader('Content-Type') + if (typeof contentType === 'string' && contentType.includes('text/event-stream')) { + return false + } + return compression.filter(req, res) + }, + }) export default class CompressionMiddleware { async handle({ request, response }: HttpContext, next: NextFn) { diff --git a/admin/app/models/chat_message.ts b/admin/app/models/chat_message.ts index da93e00..f0633ff 100644 --- a/admin/app/models/chat_message.ts +++ b/admin/app/models/chat_message.ts @@ -18,7 +18,7 @@ export default class ChatMessage extends BaseModel { @column() declare content: string - @belongsTo(() => ChatSession, { foreignKey: 'id', localKey: 'session_id' }) + @belongsTo(() => ChatSession, { foreignKey: 'session_id', localKey: 'id' }) declare session: BelongsTo @column.dateTime({ autoCreate: true }) diff --git a/admin/app/models/custom_library_source.ts b/admin/app/models/custom_library_source.ts new file mode 100644 index 0000000..478d9a0 --- /dev/null +++ b/admin/app/models/custom_library_source.ts @@ -0,0 +1,24 @@ +import { DateTime } from 'luxon' +import { BaseModel, column, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm' + +export default class CustomLibrarySource extends BaseModel { + static namingStrategy = new SnakeCaseNamingStrategy() + + @column({ isPrimary: true }) + declare id: number + + @column() + declare name: string + + @column() + declare base_url: string + + @column() + declare is_default: boolean + + @column.dateTime({ autoCreate: true }) + declare created_at: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + declare updated_at: DateTime +} diff --git a/admin/app/models/installed_resource.ts b/admin/app/models/installed_resource.ts index cee2866..0cfe36b 100644 --- a/admin/app/models/installed_resource.ts +++ b/admin/app/models/installed_resource.ts @@ -30,4 +30,25 @@ export default class InstalledResource extends BaseModel { @column.dateTime() declare installed_at: DateTime + + // ── Content auto-update state (global opt-in; gated by `contentAutoUpdate.enabled`) ── + + /** Newest catalog version (YYYY-MM) detected, or null when already current. */ + @column() + declare available_update_version: string | null + + /** Size (bytes) of the available update, captured from the catalog. */ + @column() + declare available_update_size_bytes: number | null + + /** Cool-off anchor: when the current available update was first detected. */ + @column.dateTime() + declare available_update_first_seen_at: DateTime | null + + /** Per-resource failure backoff so one flapping download self-disables. */ + @column() + declare auto_update_consecutive_failures: number + + @column() + declare auto_update_disabled_reason: string | null } diff --git a/admin/app/models/kb_ingest_state.ts b/admin/app/models/kb_ingest_state.ts new file mode 100644 index 0000000..2add407 --- /dev/null +++ b/admin/app/models/kb_ingest_state.ts @@ -0,0 +1,77 @@ +import { DateTime } from 'luxon' +import { BaseModel, column, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm' +import type { KbIngestStateValue } from '../../types/kb_ingest_state.js' + +const LAST_ERROR_MAX_LEN = 1024 + +/** + * Tracks the per-file decision and outcome of AI knowledge-base ingestion. + * + * The row exists for any embeddable file the scanner has seen and is independent + * of `installed_resources` (which only covers curated downloads). Replaces the + * earlier "any chunks in qdrant ⇒ embedded" binary check, which conflated + * partially-stalled ingestions with fully-indexed files. See RFC #883. + */ +export default class KbIngestState extends BaseModel { + static table = 'kb_ingest_state' + static namingStrategy = new SnakeCaseNamingStrategy() + + @column({ isPrimary: true }) + declare id: number + + @column() + declare file_path: string + + @column() + declare state: KbIngestStateValue + + @column() + declare chunks_embedded: number + + @column() + declare last_error: string | null + + @column.dateTime({ autoCreate: true }) + declare created_at: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + declare updated_at: DateTime + + static async getOrCreate(filePath: string): Promise { + return this.firstOrCreate( + { file_path: filePath }, + { file_path: filePath, state: 'pending_decision', chunks_embedded: 0 } + ) + } + + static async markIndexed(filePath: string, chunksEmbedded: number): Promise { + const row = await this.getOrCreate(filePath) + row.state = 'indexed' + row.chunks_embedded = chunksEmbedded + row.last_error = null + await row.save() + } + + static async markFailed(filePath: string, errorMessage: string): Promise { + const row = await this.getOrCreate(filePath) + row.state = 'failed' + row.last_error = errorMessage.slice(0, LAST_ERROR_MAX_LEN) + await row.save() + } + + static async markBrowseOnly(filePath: string): Promise { + const row = await this.getOrCreate(filePath) + row.state = 'browse_only' + await row.save() + } + + static async markStalled(filePath: string): Promise { + const row = await this.getOrCreate(filePath) + row.state = 'stalled' + await row.save() + } + + static async remove(filePath: string): Promise { + await this.query().where('file_path', filePath).delete() + } +} diff --git a/admin/app/models/kb_ratio_registry.ts b/admin/app/models/kb_ratio_registry.ts new file mode 100644 index 0000000..1d8e2e3 --- /dev/null +++ b/admin/app/models/kb_ratio_registry.ts @@ -0,0 +1,79 @@ +import { DateTime } from 'luxon' +import { BaseModel, column, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm' +import { + findChunksPerMb, + estimateChunkCount, + estimateBatch, + type BatchEstimate, + type BatchEstimateInput, +} from '../utils/kb_ratio_lookup.js' + +/** + * Self-calibrating registry of `{filename-prefix → chunks_per_mb}` ratios used + * for disk-footprint and time-to-embed estimates surfaced in the KB panel. + * + * Migration seeds the registry with heuristic defaults from the RFC #883 + * appendix; Phase 4 self-calibration will update rows in place as ZIMs finish + * ingesting and the real ratio becomes known. Lookup is longest-prefix-match + * (see `kb_ratio_lookup.ts`) so a specific entry (`wikipedia_en_simple_`) + * overrides a broader one (`wikipedia_en_`). + */ +export default class KbRatioRegistry extends BaseModel { + static table = 'kb_ratio_registry' + static namingStrategy = new SnakeCaseNamingStrategy() + + @column({ isPrimary: true }) + declare id: number + + @column() + declare pattern: string + + @column() + declare chunks_per_mb: number + + @column() + declare sample_count: number + + @column() + declare notes: string | null + + @column.dateTime({ autoCreate: true }) + declare created_at: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + declare updated_at: DateTime + + /** Look up chunks_per_mb for a filename by longest-prefix match. */ + static async lookup(filename: string): Promise { + const rows = await this.all() + return findChunksPerMb(filename, rows) + } + + /** + * Estimate total chunks for a file of the given size on disk. + * + * `ignoreCatchAll` excludes the empty-pattern fallback, returning `null` for + * filenames that only the catch-all would match. The partial_stall warning + * uses this so it never flags ZIMs the registry can't specifically + * characterize (e.g. PDF/link-out-heavy archives whose byte size wildly + * over-predicts embeddable chunks). See #913. + */ + static async estimateChunks( + filename: string, + fileSizeBytes: number, + opts: { ignoreCatchAll?: boolean } = {} + ): Promise { + const rows = await this.all() + return estimateChunkCount(filename, fileSizeBytes, rows, opts) + } + + /** + * Aggregate an embedding-disk-cost estimate across a batch of files. Used by + * the curated-tier-change UI to show "you're about to add ~X GB of + * embeddings on top of the ZIM downloads" before the user commits. + */ + static async estimateBatch(files: BatchEstimateInput[]): Promise { + const rows = await this.all() + return estimateBatch(files, rows) + } +} diff --git a/admin/app/models/service.ts b/admin/app/models/service.ts index 1c06ed5..8d192ef 100644 --- a/admin/app/models/service.ts +++ b/admin/app/models/service.ts @@ -59,9 +59,42 @@ export default class Service extends BaseModel { @column() declare ui_location: string | null + // User-set override for the launch ("Open") link (e.g. a reverse-proxy/local-DNS host like + // https://jellyfin.myhomelab.net). When null, the default host + port link derived from + // ui_location is used. Only affects user-facing links — never internal service-to-service URLs. + @column() + declare custom_url: string | null + @column() declare metadata: string | null + @column({ + serialize(value) { + return Boolean(value) + }, + }) + declare is_custom: boolean + + @column({ + serialize(value) { + return Boolean(value) + }, + }) + declare is_user_modified: boolean + + @column() + declare category: string | null + + // When true the service is sunset: hidden from the install catalog unless it is already + // installed (see SystemService.getServices). Lets a deprecated app stay manageable for users who + // still run it while keeping new users from installing it. + @column({ + serialize(value) { + return Boolean(value) + }, + }) + declare is_deprecated: boolean + @column() declare source_repo: string | null @@ -71,6 +104,28 @@ export default class Service extends BaseModel { @column.dateTime() declare update_checked_at: DateTime | null + // Per-app opt-in for automatic updates. An app auto-updates only when both this + // and the global `appAutoUpdate.enabled` master switch are on. + @column({ + serialize(value) { + return Boolean(value) + }, + }) + declare auto_update_enabled: boolean + + // When the current `available_update_version` was first detected — the anchor for + // the auto-update cool-off (registry tags carry no publish timestamp). + @column.dateTime() + declare available_update_first_seen_at: DateTime | null + + // Per-app auto-update failure backoff; at the threshold the app self-disables via + // `auto_update_disabled_reason` without affecting other apps. + @column() + declare auto_update_consecutive_failures: number + + @column() + declare auto_update_disabled_reason: string | null + @column.dateTime({ autoCreate: true }) declare created_at: DateTime diff --git a/admin/app/services/app_auto_update_service.ts b/admin/app/services/app_auto_update_service.ts new file mode 100644 index 0000000..c6317b6 --- /dev/null +++ b/admin/app/services/app_auto_update_service.ts @@ -0,0 +1,398 @@ +import { inject } from '@adonisjs/core' +import logger from '@adonisjs/core/services/logger' +import { DateTime } from 'luxon' +import KVStore from '#models/kv_store' +import Service from '#models/service' +import { DockerService } from '#services/docker_service' +import { DownloadService } from '#services/download_service' +import { SystemService } from '#services/system_service' +import { ContainerRegistryService } from '#services/container_registry_service' +import { isNewerVersion, parseMajorVersion } from '../utils/version.js' +import { isWithinWindow } from '../utils/update_window.js' +import { + checkImageDiskSpace, + type Blocker, + type PreflightResult, +} from '../utils/image_disk_preflight.js' + +/** + * Defaults shared with the core auto-update. App auto-updates intentionally reuse + * the SAME window/cool-off settings (`autoUpdate.windowStart/windowEnd/cooloffHours`); + * only the enable flag (`appAutoUpdate.enabled`) is separate. + */ +const DEFAULT_WINDOW_START = '02:00' +const DEFAULT_WINDOW_END = '05:00' +const DEFAULT_COOLOFF_HOURS = 72 + +/** Per-app genuine failures before that app self-disables (others keep running). */ +const MAX_CONSECUTIVE_FAILURES = 3 + +export interface AppAutoUpdateConfig { + /** Global master switch (`appAutoUpdate.enabled`). */ + enabled: boolean + windowStart: string + windowEnd: string + cooloffHours: number +} + +/** An installed app that should be auto-updated this run. */ +export interface AppUpdateTarget { + service: Service + /** Exact registry tag to update to (the value in `available_update_version`). */ + targetVersion: string +} + +/** Per-app eligibility verdict (drives both selection and the status UI). */ +export interface AppEligibility { + eligible: boolean + reason: string + cooloffRemainingHours: number | null +} + +export interface AppAutoUpdateAppStatus { + service_name: string + friendly_name: string | null + auto_update_enabled: boolean + current_version: string + available_update_version: string | null + first_seen_at: string | null + eligible: boolean + reason: string + cooloff_remaining_hours: number | null + consecutive_failures: number + auto_disabled_reason: string | null +} + +export interface AppAutoUpdateStatus extends AppAutoUpdateConfig { + withinWindow: boolean + lastAttemptAt: string | null + lastResult: string | null + apps: AppAutoUpdateAppStatus[] +} + +/** + * Decision + safety layer for automatic updates of installed sibling apps (the + * containers NOMAD deploys via the Docker socket and manages in Supply Depot). + * + * This is the app-side counterpart to {@link AutoUpdateService} and intentionally + * reuses its generic window/disk pre-flight helpers. Unlike the core update, an + * app update needs no sidecar — the admin container recreates its siblings directly + * via {@link DockerService.updateContainer} (in-process pull → rename → health-check + * → rollback). Auto-update only decides *whether* each opted-in app should update now + * (master switch on + per-app toggle on + in window + an eligible minor/patch past + * its cool-off + pre-flight passes) and then drives the existing update path. + * + * Minor/patch-only is already guaranteed upstream by + * {@link ContainerRegistryService.getAvailableUpdates} (same-major filter); the + * major-version check here is defense-in-depth. + */ +@inject() +export class AppAutoUpdateService { + constructor( + private dockerService: DockerService, + private downloadService: DownloadService, + private systemService: SystemService, + private containerRegistryService: ContainerRegistryService + ) {} + + /** Read the global master switch plus the shared window/cool-off settings. */ + async getConfig(): Promise { + const [enabled, windowStart, windowEnd, cooloffHours] = await Promise.all([ + KVStore.getValue('appAutoUpdate.enabled'), + KVStore.getValue('autoUpdate.windowStart'), + KVStore.getValue('autoUpdate.windowEnd'), + KVStore.getValue('autoUpdate.cooloffHours'), + ]) + + const parsedCooloff = Number(cooloffHours) + return { + enabled: enabled ?? false, + windowStart: windowStart || DEFAULT_WINDOW_START, + windowEnd: windowEnd || DEFAULT_WINDOW_END, + // `Number(null) === 0`, so an unset value must fall through to the default + // rather than silently resolving to a zero cool-off. An explicit 0 is honored. + cooloffHours: + cooloffHours !== null && Number.isFinite(parsedCooloff) && parsedCooloff >= 0 + ? parsedCooloff + : DEFAULT_COOLOFF_HOURS, + } + } + + /** + * Pure per-app eligibility verdict. An app is eligible when it has a detected + * update that is the same major (defense-in-depth), strictly newer, not self- + * disabled, and past its cool-off (measured from first-detected). + */ + appEligibility(service: Service, cooloffHours: number, now: DateTime): AppEligibility { + if (!service.available_update_version) { + return { eligible: false, reason: 'Up to date', cooloffRemainingHours: null } + } + if (service.auto_update_disabled_reason) { + return { + eligible: false, + reason: 'Auto-update disabled after repeated failures', + cooloffRemainingHours: null, + } + } + + const currentTag = this.containerRegistryService.parseImageReference( + service.container_image + ).tag + if (currentTag === 'latest') { + return { + eligible: false, + reason: 'Pinned to :latest — cannot version-check', + cooloffRemainingHours: null, + } + } + if (parseMajorVersion(service.available_update_version) !== parseMajorVersion(currentTag)) { + return { + eligible: false, + reason: 'Major version — manual update required', + cooloffRemainingHours: null, + } + } + if (!isNewerVersion(service.available_update_version, currentTag)) { + return { eligible: false, reason: 'Up to date', cooloffRemainingHours: null } + } + if (!service.available_update_first_seen_at) { + return { eligible: false, reason: 'Cool-off pending', cooloffRemainingHours: cooloffHours } + } + + const ageHours = now.diff(service.available_update_first_seen_at, 'hours').hours + const remaining = cooloffHours - ageHours + if (remaining > 0) { + const rounded = Math.ceil(remaining) + return { + eligible: false, + reason: `In cool-off (${rounded}h remaining)`, + cooloffRemainingHours: rounded, + } + } + + return { + eligible: true, + reason: `Eligible → ${service.available_update_version}`, + cooloffRemainingHours: 0, + } + } + + /** Installed, opted-in apps that are eligible to update right now. */ + async getEligibleApps(config: AppAutoUpdateConfig, now: DateTime): Promise { + const apps = await Service.query().where('installed', true).where('auto_update_enabled', true) + const targets: AppUpdateTarget[] = [] + for (const service of apps) { + const verdict = this.appEligibility(service, config.cooloffHours, now) + if (verdict.eligible) { + targets.push({ service, targetVersion: service.available_update_version! }) + } + } + return targets + } + + /** + * Run-wide pre-flight checked once per attempt (independent of any single app): + * never auto-update while content/model downloads are running. Transient → `skip`. + */ + async runGlobalPreflight(): Promise { + const blockers: Blocker[] = [] + try { + const downloads = await this.downloadService.listDownloadJobs() + const active = downloads.filter( + (d) => !!d.status && ['waiting', 'active', 'delayed'].includes(d.status) + ) + if (active.length > 0) { + blockers.push({ reason: `${active.length} download(s) in progress`, severity: 'skip' }) + } + } catch (error) { + logger.warn(`[AppAutoUpdateService] Could not check active downloads: ${error.message}`) + } + return { ok: blockers.length === 0, blockers } + } + + /** Per-app pre-flight: not already mid-operation (`skip`) and enough disk (`failure`). */ + async runAppPreflight(target: AppUpdateTarget): Promise { + const blockers: Blocker[] = [] + const service = target.service + + if (service.installation_status !== 'idle') { + blockers.push({ + reason: `App has an operation in progress (status: ${service.installation_status})`, + severity: 'skip', + }) + } + + const hostArch = await this.getHostArch() + const targetImage = `${this.imageBase(service.container_image)}:${target.targetVersion}` + const diskBlocker = await checkImageDiskSpace({ + image: targetImage, + hostArch, + containerRegistryService: this.containerRegistryService, + systemService: this.systemService, + }) + if (diskBlocker) blockers.push(diskBlocker) + + return { ok: blockers.length === 0, blockers } + } + + /** + * Entry point invoked by AppAutoUpdateJob. Gates on the master switch + window, + * then runs each eligible app through pre-flight and {@link DockerService.updateContainer}. + * A failing app self-disables after repeated failures without affecting the others. + */ + async attempt(): Promise<{ updated: number; reason: string }> { + const config = await this.getConfig() + const now = DateTime.now() + + if (!config.enabled) { + return { updated: 0, reason: 'App auto-update is disabled' } + } + if (!isWithinWindow(config.windowStart, config.windowEnd, now)) { + const reason = `Outside update window (${config.windowStart}-${config.windowEnd})` + await this.recordRun(reason) + return { updated: 0, reason } + } + + const eligible = await this.getEligibleApps(config, now) + if (eligible.length === 0) { + const reason = 'No eligible app updates (all current, in cool-off, or major-only)' + await this.recordRun(reason) + return { updated: 0, reason } + } + + const global = await this.runGlobalPreflight() + if (!global.ok) { + const reason = `Pre-flight blocked: ${global.blockers.map((b) => b.reason).join('; ')}` + await this.recordRun(reason) + return { updated: 0, reason } + } + + let updated = 0 + let failed = 0 + let skipped = 0 + + for (const target of eligible) { + const name = target.service.service_name + const preflight = await this.runAppPreflight(target) + if (!preflight.ok) { + const summary = preflight.blockers.map((b) => b.reason).join('; ') + if (preflight.blockers.some((b) => b.severity === 'failure')) { + await this.recordAppFailure(target.service, summary) + failed++ + } else { + logger.info(`[AppAutoUpdateService] Skipped ${name}: ${summary}`) + skipped++ + } + continue + } + + logger.info(`[AppAutoUpdateService] Updating ${name} → ${target.targetVersion}`) + const result = await this.dockerService.updateContainer(name, target.targetVersion) + if (result.success) { + await this.recordAppSuccess(target.service) + updated++ + } else { + await this.recordAppFailure(target.service, result.message) + failed++ + } + } + + const reason = `${updated} updated, ${failed} failed, ${skipped} skipped` + await this.recordRun(reason) + logger.info(`[AppAutoUpdateService] Run complete: ${reason}`) + return { updated, reason } + } + + /** Clear an app's failure backoff after a successful auto-update. */ + private async recordAppSuccess(service: Service): Promise { + // updateContainer already advanced container_image and cleared + // available_update_version on its own (fresh) row; here we only touch the + // backoff fields, so Lucid persists just those dirty columns. + service.auto_update_consecutive_failures = 0 + service.auto_update_disabled_reason = null + await service.save() + } + + /** Record an app failure and self-disable it once the threshold is reached. */ + private async recordAppFailure(service: Service, reason: string): Promise { + const failures = (service.auto_update_consecutive_failures || 0) + 1 + service.auto_update_consecutive_failures = failures + if (failures >= MAX_CONSECUTIVE_FAILURES) { + service.auto_update_disabled_reason = `Auto-update disabled after ${failures} consecutive failures. Last error: ${reason}` + logger.error( + `[AppAutoUpdateService] ${service.service_name} auto-disabled after ${failures} failures` + ) + } + await service.save() + logger.error( + `[AppAutoUpdateService] ${service.service_name} failure ${failures}/${MAX_CONSECUTIVE_FAILURES}: ${reason}` + ) + } + + /** Record the global last-attempt summary for the settings UI. */ + private async recordRun(reason: string): Promise { + await KVStore.setValue('appAutoUpdate.lastAttemptAt', DateTime.now().toISO()!) + await KVStore.setValue('appAutoUpdate.lastResult', reason) + } + + /** Full state snapshot for the settings UI (opted-in apps + their eligibility). */ + async getStatus(): Promise { + const config = await this.getConfig() + const now = DateTime.now() + + const apps = await Service.query().where('installed', true).where('auto_update_enabled', true) + const appStatuses: AppAutoUpdateAppStatus[] = apps.map((service) => { + const verdict = this.appEligibility(service, config.cooloffHours, now) + return { + service_name: service.service_name, + friendly_name: service.friendly_name, + auto_update_enabled: service.auto_update_enabled, + current_version: this.containerRegistryService.parseImageReference(service.container_image) + .tag, + available_update_version: service.available_update_version, + first_seen_at: service.available_update_first_seen_at?.toISO() ?? null, + eligible: verdict.eligible, + reason: verdict.reason, + cooloff_remaining_hours: verdict.cooloffRemainingHours, + consecutive_failures: service.auto_update_consecutive_failures || 0, + auto_disabled_reason: service.auto_update_disabled_reason, + } + }) + + const [lastAttemptAt, lastResult] = await Promise.all([ + KVStore.getValue('appAutoUpdate.lastAttemptAt'), + KVStore.getValue('appAutoUpdate.lastResult'), + ]) + + return { + ...config, + withinWindow: isWithinWindow(config.windowStart, config.windowEnd, now), + lastAttemptAt: lastAttemptAt || null, + lastResult: lastResult || null, + apps: appStatuses, + } + } + + /** Strip the tag from an image reference, leaving "registry/namespace/repo". */ + private imageBase(image: string): string { + return image.includes(':') ? image.substring(0, image.lastIndexOf(':')) : image + } + + /** Map the Docker daemon's architecture string to OCI naming (amd64/arm64/...). */ + private async getHostArch(): Promise { + try { + const info = await this.dockerService.docker.info() + const arch = info.Architecture || '' + const archMap: Record = { + x86_64: 'amd64', + aarch64: 'arm64', + armv7l: 'arm', + amd64: 'amd64', + arm64: 'arm64', + } + return archMap[arch] || arch.toLowerCase() + } catch { + return 'amd64' + } + } +} diff --git a/admin/app/services/auto_update_service.ts b/admin/app/services/auto_update_service.ts new file mode 100644 index 0000000..6d2bee7 --- /dev/null +++ b/admin/app/services/auto_update_service.ts @@ -0,0 +1,580 @@ +import { inject } from '@adonisjs/core' +import logger from '@adonisjs/core/services/logger' +import axios from 'axios' +import { DateTime } from 'luxon' +import KVStore from '#models/kv_store' +import Service from '#models/service' +import { DockerService } from '#services/docker_service' +import { DownloadService } from '#services/download_service' +import { SystemService } from '#services/system_service' +import { SystemUpdateService } from '#services/system_update_service' +import { ContainerRegistryService } from '#services/container_registry_service' +import { isNewerVersion, parseMajorVersion } from '../utils/version.js' +import { isWithinWindow as isWithinWindowUtil } from '../utils/update_window.js' +import { + checkImageDiskSpace, + type Blocker, + type PreflightResult, +} from '../utils/image_disk_preflight.js' + +/** Docker image repository for the NOMAD admin/core image (tag applied per-release). */ +const NOMAD_IMAGE_REPO = 'ghcr.io/crosstalk-solutions/project-nomad' +const RELEASES_URL = 'https://api.github.com/repos/Crosstalk-Solutions/project-nomad/releases' + +/** Defaults for user-configurable settings (server-local time window + cool-off). */ +const DEFAULT_WINDOW_START = '02:00' +const DEFAULT_WINDOW_END = '05:00' +const DEFAULT_COOLOFF_HOURS = 72 + +/** Genuine failures before auto-update disables itself to avoid an update loop. */ +const MAX_CONSECUTIVE_FAILURES = 3 + +/** + * Only tags matching strict semver are eligible. Defense-in-depth: the selected + * tag becomes `target_tag`, which the sidecar interpolates into a host-side `sed` + * (install/sidecar-updater/update-watcher.sh) — so a malformed tag must never be + * able to reach it, even though releases come from a trusted repo. + */ +const SEMVER_TAG = /^\d+\.\d+\.\d+$/ + +/** Cache the GitHub releases feed in-process to avoid hammering the API. */ +const RELEASES_CACHE_TTL_MS = 15 * 60 * 1000 +/** Briefly remember a failed fetch so repeated calls don't each block on the timeout. */ +const RELEASES_FAILURE_TTL_MS = 60 * 1000 + +export interface AutoUpdateConfig { + enabled: boolean + windowStart: string + windowEnd: string + cooloffHours: number +} + +export interface EligibleTarget { + version: string + tag: string + publishedAt: string +} + +// Pre-flight types/primitives are shared with AppAutoUpdateService; re-exported +// here for back-compat with existing imports of this module. +export type { Blocker, BlockerSeverity, PreflightResult } from '../utils/image_disk_preflight.js' + +/** Minimal shape of a GitHub release entry we depend on. */ +export interface GithubRelease { + tag_name?: string + published_at?: string + draft?: boolean + prerelease?: boolean +} + +/** + * Inputs that can be injected to exercise the decision pipeline deterministically + * (used by the dry-run command/tests). All are optional; when omitted the real + * settings/clock/GitHub feed/pre-flight are used, exactly as production runs. + */ +export interface EvaluateOverrides { + currentVersion?: string + releases?: GithubRelease[] + now?: DateTime + forceEnabled?: boolean + windowStart?: string + windowEnd?: string + cooloffHours?: number + /** Treat pre-flight as passing without touching Docker/disk/queues. */ + skipPreflight?: boolean + /** Substitute a canned pre-flight result. */ + fakePreflight?: PreflightResult +} + +export type DecisionOutcome = + | 'disabled' + | 'outside-window' + | 'eligibility-error' + | 'no-eligible' + | 'blocked' + | 'ready' + +/** Side-effect-free verdict of the decision pipeline. */ +export interface AutoUpdateDecision { + enabled: boolean + currentVersion: string + config: AutoUpdateConfig + withinWindow: boolean + eligibleTarget: EligibleTarget | null + preflight: PreflightResult | null + outcome: DecisionOutcome + reason: string +} + +export interface AutoUpdateStatus extends AutoUpdateConfig { + currentVersion: string + withinWindow: boolean + eligibleTarget: EligibleTarget | null + lastAttemptAt: string | null + lastResult: string | null + lastError: string | null + consecutiveFailures: number + autoDisabledReason: string | null +} + +/** + * Decision + safety layer for automatic updates of the NOMAD application itself. + * + * It does NOT recreate containers — that remains the sidecar's job. This service + * decides *whether* an update should run right now (opt-in, in-window, an eligible + * minor/patch release exists past its cool-off, pre-flight checks pass) and, if so, + * drives the existing {@link SystemUpdateService.requestUpdate} with an explicit, + * eligibility-vetted image tag. + * + * The window/pre-flight helpers are intentionally generic so a future PR can reuse + * them to auto-update installed apps (driving DockerService.updateContainer instead). + */ +@inject() +export class AutoUpdateService { + constructor( + private dockerService: DockerService, + private downloadService: DownloadService, + private systemService: SystemService, + private systemUpdateService: SystemUpdateService, + private containerRegistryService: ContainerRegistryService + ) {} + + /** In-process cache of the last successful releases fetch (per-process). */ + private static releasesCache: { releases: GithubRelease[]; at: number } | null = null + /** Timestamp of the last failed fetch, for short-lived negative caching. */ + private static releasesFailureAt = 0 + + /** Read user-configurable settings, applying defaults. */ + async getConfig(): Promise { + const [enabled, windowStart, windowEnd, cooloffHours] = await Promise.all([ + KVStore.getValue('autoUpdate.enabled'), + KVStore.getValue('autoUpdate.windowStart'), + KVStore.getValue('autoUpdate.windowEnd'), + KVStore.getValue('autoUpdate.cooloffHours'), + ]) + + const parsedCooloff = Number(cooloffHours) + return { + enabled: enabled ?? false, + windowStart: windowStart || DEFAULT_WINDOW_START, + windowEnd: windowEnd || DEFAULT_WINDOW_END, + // `Number(null) === 0`, so an *unset* value must fall through to the default + // rather than silently resolving to a zero cool-off. An explicit 0 is honored. + cooloffHours: + cooloffHours != null && Number.isFinite(parsedCooloff) && parsedCooloff >= 0 + ? parsedCooloff + : DEFAULT_COOLOFF_HOURS, + } + } + + /** + * Determine whether `now` falls inside the configured update window. The window + * is interpreted in the container's local time (set via the TZ env var). Windows + * that wrap past midnight (start > end, e.g. 22:00-02:00) are handled. + */ + isWithinWindow(config: AutoUpdateConfig, now: DateTime = DateTime.now()): boolean { + return isWithinWindowUtil(config.windowStart, config.windowEnd, now) + } + + /** + * Find the newest release that is safe to auto-apply: same major version as the + * running build (major bumps are deliberately left for manual update), strictly + * newer than current, and published at least `cooloffHours` ago. Prereleases and + * drafts are ignored — auto-update never rides early access. + * + * Returns null when nothing qualifies (e.g. only a major bump is newer, or the + * newest eligible release is still inside its cool-off window). + */ + async getEligibleTarget(config: AutoUpdateConfig): Promise { + const releases = await this.fetchReleases() + return this.selectEligibleTarget( + releases, + SystemService.getAppVersion(), + config.cooloffHours, + DateTime.now() + ) + } + + /** + * Fetch the published GitHub releases for the NOMAD repo, cached in-process. + * A successful result is reused for {@link RELEASES_CACHE_TTL_MS} so repeated + * status-page loads don't each hit (and risk rate-limiting) the unauthenticated + * GitHub API. A recent failure is negatively cached for {@link RELEASES_FAILURE_TTL_MS} + * so back-to-back calls while offline don't each block on the request timeout. + */ + async fetchReleases(): Promise { + const now = Date.now() + const cached = AutoUpdateService.releasesCache + if (cached && now - cached.at < RELEASES_CACHE_TTL_MS) { + return cached.releases + } + if (now - AutoUpdateService.releasesFailureAt < RELEASES_FAILURE_TTL_MS) { + throw new Error('GitHub releases fetch recently failed; backing off') + } + + try { + const response = await axios.get(RELEASES_URL, { + headers: { Accept: 'application/vnd.github+json' }, + timeout: 5000, + }) + if (!Array.isArray(response.data)) { + throw new Error('Unexpected response from GitHub releases API') + } + AutoUpdateService.releasesCache = { releases: response.data, at: now } + return response.data + } catch (error) { + AutoUpdateService.releasesFailureAt = now + throw error + } + } + + /** + * Pure selection of the newest auto-applicable release from a release list. + * Extracted so the dry-run command and tests can drive it with fixtures. + * Same major as `currentVersion`, strictly newer, published on/before + * `now - cooloffHours`, prereleases/drafts excluded. Returns null for dev + * builds or when nothing qualifies. + */ + selectEligibleTarget( + releases: GithubRelease[], + currentVersion: string, + cooloffHours: number, + now: DateTime + ): EligibleTarget | null { + if (currentVersion === 'dev' || currentVersion === '0.0.0') { + return null + } + const currentMajor = parseMajorVersion(currentVersion) + const cutoff = now.minus({ hours: cooloffHours }) + + const candidates = releases + .filter((r) => r && !r.draft && !r.prerelease && r.tag_name && r.published_at) + .map((r) => ({ + version: String(r.tag_name).replace(/^v/, '').trim(), + publishedAt: String(r.published_at), + })) + .filter((r) => SEMVER_TAG.test(r.version)) + .filter((r) => parseMajorVersion(r.version) === currentMajor) + .filter((r) => isNewerVersion(r.version, currentVersion)) + .filter((r) => DateTime.fromISO(r.publishedAt) <= cutoff) + .sort((a, b) => (isNewerVersion(a.version, b.version) ? -1 : 1)) + + const best = candidates[0] + if (!best) return null + + return { + version: best.version, + tag: `v${best.version}`, + publishedAt: best.publishedAt, + } + } + + /** + * Pre-flight checks that gate an auto-update. `skip` blockers are transient + * (retry next window, no penalty); `failure` blockers count toward the backoff + * that eventually auto-disables auto-update. + */ + async runPreflight(targetTag: string): Promise { + const blockers: Blocker[] = [] + + // 1. Sidecar must be present to perform the update. + if (!this.systemUpdateService.isSidecarAvailable()) { + blockers.push({ reason: 'Update sidecar is not available', severity: 'failure' }) + } + + // 2. No system update already running. + const updateStatus = this.systemUpdateService.getUpdateStatus() + if (updateStatus && !['idle', 'complete', 'error'].includes(updateStatus.stage)) { + blockers.push({ + reason: `A system update is already in progress (stage: ${updateStatus.stage})`, + severity: 'skip', + }) + } + + // 3. No content/model downloads in progress. + try { + const downloads = await this.downloadService.listDownloadJobs() + const active = downloads.filter( + (d) => !!d.status && ['waiting', 'active', 'delayed'].includes(d.status) + ) + if (active.length > 0) { + blockers.push({ + reason: `${active.length} download(s) in progress`, + severity: 'skip', + }) + } + } catch (error) { + logger.warn(`[AutoUpdateService] Could not check active downloads: ${error.message}`) + } + + // 4. No app (container) install/update in progress. + try { + const installing = await Service.query().whereNot('installation_status', 'idle') + if (installing.length > 0) { + blockers.push({ + reason: `${installing.length} app install/update(s) in progress`, + severity: 'skip', + }) + } + } catch (error) { + logger.warn(`[AutoUpdateService] Could not check app installations: ${error.message}`) + } + + // 5. Sufficient host storage for the new image. + const diskBlocker = await this.checkDiskSpace(targetTag) + if (diskBlocker) blockers.push(diskBlocker) + + return { ok: blockers.length === 0, blockers } + } + + /** Returns a disk blocker if free space is insufficient, otherwise null. */ + private async checkDiskSpace(targetTag: string): Promise { + const hostArch = await this.getHostArch() + return checkImageDiskSpace({ + image: `${NOMAD_IMAGE_REPO}:${targetTag}`, + hostArch, + containerRegistryService: this.containerRegistryService, + systemService: this.systemService, + }) + } + + /** Map the Docker daemon's architecture string to OCI naming (amd64/arm64/...). */ + private async getHostArch(): Promise { + try { + const info = await this.dockerService.docker.info() + const arch = info.Architecture || '' + const archMap: Record = { + x86_64: 'amd64', + aarch64: 'arm64', + armv7l: 'arm', + amd64: 'amd64', + arm64: 'arm64', + } + return archMap[arch] || arch.toLowerCase() + } catch { + return 'amd64' + } + } + + /** + * Side-effect-free core of the decision pipeline. Resolves the effective config + * (settings, overridable), checks the window, finds an eligible target, and runs + * pre-flight — returning a verdict WITHOUT requesting an update or mutating any + * persisted state. Both {@link attempt} (production) and {@link dryRun} (testing) + * are built on this so a dry run faithfully reflects what a real run would do. + */ + async evaluate(overrides: EvaluateOverrides = {}): Promise { + const baseConfig = await this.getConfig() + const config: AutoUpdateConfig = { + enabled: overrides.forceEnabled ?? baseConfig.enabled, + windowStart: overrides.windowStart ?? baseConfig.windowStart, + windowEnd: overrides.windowEnd ?? baseConfig.windowEnd, + cooloffHours: overrides.cooloffHours ?? baseConfig.cooloffHours, + } + const now = overrides.now ?? DateTime.now() + const currentVersion = overrides.currentVersion ?? SystemService.getAppVersion() + + const base = { + enabled: config.enabled, + currentVersion, + config, + withinWindow: false, + eligibleTarget: null as EligibleTarget | null, + preflight: null as PreflightResult | null, + } + + if (!config.enabled) { + return { ...base, outcome: 'disabled', reason: 'Auto-update is disabled' } + } + + const withinWindow = this.isWithinWindow(config, now) + if (!withinWindow) { + return { + ...base, + outcome: 'outside-window', + reason: `Outside update window (${config.windowStart}-${config.windowEnd})`, + } + } + + let eligibleTarget: EligibleTarget | null + try { + const releases = overrides.releases ?? (await this.fetchReleases()) + eligibleTarget = this.selectEligibleTarget(releases, currentVersion, config.cooloffHours, now) + } catch (error) { + return { + ...base, + withinWindow, + outcome: 'eligibility-error', + reason: `Failed to determine eligible version: ${error.message}`, + } + } + + if (!eligibleTarget) { + return { + ...base, + withinWindow, + outcome: 'no-eligible', + reason: 'No eligible minor/patch update available (or still in cool-off)', + } + } + + const preflight = overrides.fakePreflight + ? overrides.fakePreflight + : overrides.skipPreflight + ? { ok: true, blockers: [] } + : await this.runPreflight(eligibleTarget.tag) + + if (!preflight.ok) { + const summary = preflight.blockers.map((b) => b.reason).join('; ') + return { + ...base, + withinWindow, + eligibleTarget, + preflight, + outcome: 'blocked', + reason: `Pre-flight blocked: ${summary}`, + } + } + + return { + ...base, + withinWindow, + eligibleTarget, + preflight, + outcome: 'ready', + reason: `Ready to update to ${eligibleTarget.tag}`, + } + } + + /** + * Run the full decision pipeline WITHOUT requesting an update or recording any + * state. Accepts the same injectable overrides as {@link evaluate}, so callers can + * simulate any scenario (a given current version, a canned release list, a fixed + * clock, a forced window) and see exactly what a real run would decide. + */ + async dryRun(overrides: EvaluateOverrides = {}): Promise { + return this.evaluate(overrides) + } + + /** + * The entry point invoked by AutoUpdateJob. Evaluates the decision pipeline and, + * when everything passes, requests the update with the vetted tag — recording the + * outcome to the KVStore (for the UI) and applying failure backoff. + */ + async attempt(): Promise<{ updated: boolean; reason: string }> { + const decision = await this.evaluate() + + switch (decision.outcome) { + case 'disabled': + return { updated: false, reason: decision.reason } + + case 'outside-window': + case 'no-eligible': + // A failed release lookup is transient (offline-first appliances are + // routinely without connectivity) — treat as a skip so it never trips the + // backoff that auto-disables the feature. Only real update-request failures + // (the `ready` case below) count toward MAX_CONSECUTIVE_FAILURES. + case 'eligibility-error': + await this.recordSkip(decision.reason) + return { updated: false, reason: decision.reason } + + case 'blocked': { + const hasFailure = decision.preflight!.blockers.some((b) => b.severity === 'failure') + if (hasFailure) { + await this.recordFailure(decision.reason) + } else { + await this.recordSkip(decision.reason) + } + return { updated: false, reason: decision.reason } + } + + case 'ready': { + const target = decision.eligibleTarget! + const result = await this.systemUpdateService.requestUpdate({ + targetTag: target.tag, + requester: 'auto-update', + }) + + if (result.success) { + await this.recordSuccess(target) + logger.info(`[AutoUpdateService] Auto-update requested: ${target.tag}`) + return { updated: true, reason: `Update requested: ${target.tag}` } + } + + await this.recordFailure(`Update request failed: ${result.message}`) + return { updated: false, reason: result.message } + } + } + } + + // --- Outcome recording ----------------------------------------------------- + + private async recordSuccess(target: EligibleTarget): Promise { + await KVStore.setValue('autoUpdate.lastAttemptAt', DateTime.now().toISO()!) + await KVStore.setValue('autoUpdate.lastResult', `Update requested: ${target.tag}`) + await KVStore.clearValue('autoUpdate.lastError') + await KVStore.setValue('autoUpdate.consecutiveFailures', '0') + } + + private async recordSkip(reason: string): Promise { + await KVStore.setValue('autoUpdate.lastAttemptAt', DateTime.now().toISO()!) + await KVStore.setValue('autoUpdate.lastResult', reason) + logger.info(`[AutoUpdateService] Skipped: ${reason}`) + } + + private async recordFailure(reason: string): Promise { + await KVStore.setValue('autoUpdate.lastAttemptAt', DateTime.now().toISO()!) + await KVStore.setValue('autoUpdate.lastResult', reason) + await KVStore.setValue('autoUpdate.lastError', reason) + + const prior = Number(await KVStore.getValue('autoUpdate.consecutiveFailures')) || 0 + const failures = prior + 1 + await KVStore.setValue('autoUpdate.consecutiveFailures', String(failures)) + logger.error(`[AutoUpdateService] Failure ${failures}/${MAX_CONSECUTIVE_FAILURES}: ${reason}`) + + if (failures >= MAX_CONSECUTIVE_FAILURES) { + await KVStore.setValue('autoUpdate.enabled', false) + await KVStore.setValue( + 'autoUpdate.autoDisabledReason', + `Auto-update disabled after ${failures} consecutive failures. Last error: ${reason}` + ) + logger.error( + `[AutoUpdateService] Auto-update auto-disabled after ${failures} consecutive failures` + ) + } + } + + /** Full state snapshot for the settings UI. */ + async getStatus(): Promise { + const config = await this.getConfig() + const currentVersion = SystemService.getAppVersion() + + let eligibleTarget: EligibleTarget | null = null + try { + eligibleTarget = await this.getEligibleTarget(config) + } catch (error) { + logger.warn(`[AutoUpdateService] getStatus eligibility lookup failed: ${error.message}`) + } + + const [lastAttemptAt, lastResult, lastError, consecutiveFailures, autoDisabledReason] = + await Promise.all([ + KVStore.getValue('autoUpdate.lastAttemptAt'), + KVStore.getValue('autoUpdate.lastResult'), + KVStore.getValue('autoUpdate.lastError'), + KVStore.getValue('autoUpdate.consecutiveFailures'), + KVStore.getValue('autoUpdate.autoDisabledReason'), + ]) + + return { + ...config, + currentVersion, + withinWindow: this.isWithinWindow(config), + eligibleTarget, + lastAttemptAt: lastAttemptAt || null, + lastResult: lastResult || null, + lastError: lastError || null, + consecutiveFailures: Number(consecutiveFailures) || 0, + autoDisabledReason: autoDisabledReason || null, + } + } +} diff --git a/admin/app/services/benchmark_service.ts b/admin/app/services/benchmark_service.ts index 80247f7..710b7ad 100644 --- a/admin/app/services/benchmark_service.ts +++ b/admin/app/services/benchmark_service.ts @@ -317,6 +317,23 @@ export class BenchmarkService { } } + // Fallback: AMD discrete cards. si.graphics() returns empty inside Docker for AMD, + // the nvidia-smi path doesn't apply, and the APU regex only catches integrated parts. + // SystemService.getSystemInfo() already handles AMD via the marker file + Ollama log + // probe added in PR #804, so reuse that plumbing rather than duplicating it here. + if (!gpuModel) { + try { + const systemService = new (await import('./system_service.js')).SystemService(this.dockerService) + const sysInfo = await systemService.getSystemInfo() + const sysGpuModel = sysInfo?.graphics?.controllers?.[0]?.model + if (sysGpuModel) { + gpuModel = sysGpuModel + } + } catch (sysError: any) { + logger.warn(`[BenchmarkService] system_service AMD fallback failed: ${sysError.message}`) + } + } + return { cpu_model: `${cpu.manufacturer} ${cpu.brand}`, cpu_cores: cpu.physicalCores, @@ -597,8 +614,7 @@ export class BenchmarkService { await this.dockerService.docker.getImage(SYSBENCH_IMAGE).inspect() } catch { this._updateStatus('starting', `Pulling sysbench image...`) - const pullStream = await this.dockerService.docker.pull(SYSBENCH_IMAGE) - await new Promise((resolve) => this.dockerService.docker.modem.followProgress(pullStream, resolve)) + await this.dockerService.pullImage(SYSBENCH_IMAGE) } } diff --git a/admin/app/services/chat_service.ts b/admin/app/services/chat_service.ts index 18b0108..a5d07c9 100644 --- a/admin/app/services/chat_service.ts +++ b/admin/app/services/chat_service.ts @@ -1,10 +1,11 @@ import ChatSession from '#models/chat_session' import ChatMessage from '#models/chat_message' +import KVStore from '#models/kv_store' import logger from '@adonisjs/core/services/logger' import { DateTime } from 'luxon' import { inject } from '@adonisjs/core' import { OllamaService } from './ollama_service.js' -import { DEFAULT_QUERY_REWRITE_MODEL, SYSTEM_PROMPTS } from '../../constants/ollama.js' +import { SYSTEM_PROMPTS } from '../../constants/ollama.js' import { toTitleCase } from '../utils/misc.js' @inject() @@ -36,17 +37,23 @@ export class ChatService { return [] // If no models are available, return empty suggestions } - // Larger models generally give "better" responses, so pick the largest one - const largestModel = models.reduce((prev, current) => { - return prev.size > current.size ? prev : current - }) + // Prefer the user's selected chat model. Fall back to the smallest + // installed model — picking the largest by file size is unsafe: if any + // installed model exceeds available VRAM (e.g. llama3.1:405b on a 96 GB + // GPU), Ollama spends minutes trying to load it and the request 500s. + // Suggestions are short prompts that don't benefit from a flagship model. + const lastModel = await KVStore.getValue('chat.lastModel') + const preferred = lastModel ? models.find((m) => m.name === lastModel) : undefined + const chosen = + preferred ?? + models.reduce((prev, current) => (prev.size < current.size ? prev : current)) - if (!largestModel) { + if (!chosen) { return [] } const response = await this.ollamaService.chat({ - model: largestModel.name, + model: chosen.name, messages: [ { role: 'user', @@ -232,29 +239,22 @@ export class ChatService { } } - async generateTitle(sessionId: number, userMessage: string, assistantMessage: string) { + async generateTitle(sessionId: number, userMessage: string, assistantMessage: string, model: string) { try { - const models = await this.ollamaService.getModels() - const titleModelAvailable = models?.some((m) => m.name === DEFAULT_QUERY_REWRITE_MODEL) - let title: string - if (!titleModelAvailable) { - title = userMessage.slice(0, 57) + (userMessage.length > 57 ? '...' : '') - } else { - const response = await this.ollamaService.chat({ - model: DEFAULT_QUERY_REWRITE_MODEL, - messages: [ - { role: 'system', content: SYSTEM_PROMPTS.title_generation }, - { role: 'user', content: userMessage }, - { role: 'assistant', content: assistantMessage }, - ], - }) + const response = await this.ollamaService.chat({ + model, + messages: [ + { role: 'system', content: SYSTEM_PROMPTS.title_generation }, + { role: 'user', content: userMessage }, + { role: 'assistant', content: assistantMessage }, + ], + }) - title = response?.message?.content?.trim() - if (!title) { - title = userMessage.slice(0, 57) + (userMessage.length > 57 ? '...' : '') - } + title = response?.message?.content?.trim() + if (!title) { + title = userMessage.slice(0, 57) + (userMessage.length > 57 ? '...' : '') } await this.updateSession(sessionId, { title }) diff --git a/admin/app/services/collection_manifest_service.ts b/admin/app/services/collection_manifest_service.ts index bc69368..ac9f6e3 100644 --- a/admin/app/services/collection_manifest_service.ts +++ b/admin/app/services/collection_manifest_service.ts @@ -5,6 +5,9 @@ import { DateTime } from 'luxon' import { join } from 'path' import CollectionManifest from '#models/collection_manifest' import InstalledResource from '#models/installed_resource' +import WikipediaSelection from '#models/wikipedia_selection' +import { QueueService } from './queue_service.js' +import { RunDownloadJob } from '#jobs/run_download_job' import { zimCategoriesSpecSchema, mapsSpecSchema, wikipediaSpecSchema } from '#validators/curated_collections' import { ensureDirectoryExists, @@ -98,10 +101,74 @@ export class CollectionManifestService { const installedResources = await InstalledResource.query().where('resource_type', 'zim') const installedMap = new Map(installedResources.map((r) => [r.resource_id, r])) - return spec.categories.map((category) => ({ - ...category, - installedTierSlug: this.getInstalledTierForCategory(category.tiers, installedMap), - })) + // In-flight ZIM download resource IDs from the BullMQ queue. Used to + // surface the user's tier intent immediately on submit, before any single + // file has finished downloading. Failed jobs are excluded so a stuck + // queue entry doesn't keep claiming the user's pick forever. + const inFlightIds = await this.getInFlightZimResourceIds() + + return spec.categories.map((category) => { + const installedTierSlug = this.getInstalledTierForCategory(category.tiers, installedMap) + const downloadingTierSlug = this.getDownloadingTierForCategory( + category.tiers, + installedMap, + inFlightIds, + installedTierSlug + ) + return { ...category, installedTierSlug, downloadingTierSlug } + }) + } + + private async getInFlightZimResourceIds(): Promise> { + const ids = new Set() + try { + const queue = QueueService.getInstance().getQueue(RunDownloadJob.queue) + const jobs = await queue.getJobs(['waiting', 'active', 'delayed']) + for (const job of jobs) { + if (job.data?.filetype !== 'zim') continue + const resourceId = job.data?.resourceMetadata?.resource_id + if (typeof resourceId === 'string') ids.add(resourceId) + } + } catch (error) { + // Don't fail the whole categories endpoint if the queue is briefly + // unreachable — just report no in-flight downloads. + logger.warn('[CollectionManifestService] Could not read download queue:', error?.message || error) + } + return ids + } + + /** + * Highest tier whose every resource is installed OR has an in-flight + * download. Returns undefined when there are no in-flight downloads for this + * category, or when the result would just duplicate installedTierSlug (i.e. + * everything that's downloading is already installed — nothing new to show). + */ + getDownloadingTierForCategory( + tiers: SpecTier[], + installedMap: Map, + inFlightIds: Set, + installedTierSlug: string | undefined + ): string | undefined { + if (inFlightIds.size === 0) return undefined + + // Cheap pre-check: any of this category's resources actually in flight? + const anyInFlight = tiers.some((tier) => + CollectionManifestService.resolveTierResources(tier, tiers).some((r) => inFlightIds.has(r.id)) + ) + if (!anyInFlight) return undefined + + const reversedTiers = [...tiers].reverse() + for (const tier of reversedTiers) { + const resolved = CollectionManifestService.resolveTierResources(tier, tiers) + if (resolved.length === 0) continue + const allAccountedFor = resolved.every( + (r) => installedMap.has(r.id) || inFlightIds.has(r.id) + ) + if (allAccountedFor) { + return tier.slug === installedTierSlug ? undefined : tier.slug + } + } + return undefined } async getMapCollectionsWithStatus(): Promise { @@ -218,10 +285,17 @@ export class CollectionManifestService { const seenZimIds = new Set() + // Only skip the single Wikipedia file tracked by WikipediaSelection — not every file + // starting with `wikipedia_en_`. Curated category tiers (e.g. Medicine → Comprehensive) + // ship Wikipedia-themed ZIMs like `wikipedia_en_medicine_maxi` that must reconcile + // normally; otherwise their InstalledResource row gets wiped on every restart and the + // tier detection silently downgrades. + const wikipediaSelection = await WikipediaSelection.query().first() + const managedWikipediaFilename = wikipediaSelection?.filename ?? null + for (const file of zimFiles) { console.log(`Processing ZIM file: ${file.name}`) - // Skip Wikipedia files (managed by WikipediaSelection model) - if (file.name.startsWith('wikipedia_en_')) continue + if (managedWikipediaFilename && file.name === managedWikipediaFilename) continue const parsed = CollectionManifestService.parseZimFilename(file.name) console.log(`Parsed ZIM filename:`, parsed) diff --git a/admin/app/services/collection_update_service.ts b/admin/app/services/collection_update_service.ts index b1e06d1..8b4e388 100644 --- a/admin/app/services/collection_update_service.ts +++ b/admin/app/services/collection_update_service.ts @@ -1,16 +1,15 @@ import logger from '@adonisjs/core/services/logger' -import env from '#start/env' import axios from 'axios' +import { DateTime } from 'luxon' import InstalledResource from '#models/installed_resource' import { RunDownloadJob } from '../jobs/run_download_job.js' import { ZIM_STORAGE_PATH } from '../utils/fs.js' import { join } from 'path' import type { - ResourceUpdateCheckRequest, ResourceUpdateInfo, ContentUpdateCheckResult, } from '../../types/collections.js' -import { NOMAD_API_DEFAULT_BASE_URL } from '../../constants/misc.js' +import { KiwixCatalogService, reconcileResourceUpdateState } from './kiwix_catalog_service.js' const MAP_STORAGE_PATH = '/storage/maps' @@ -18,16 +17,13 @@ const ZIM_MIME_TYPES = ['application/x-zim', 'application/x-openzim', 'applicati const PMTILES_MIME_TYPES = ['application/vnd.pmtiles', 'application/octet-stream'] export class CollectionUpdateService { + /** + * Check every installed resource against the upstream catalogs locally (Kiwix + * OPDS for ZIMs, GitHub for maps) — no longer routed through the external + * project-nomad-api. Side-effect: persists each resource's available-update + * state (version + cool-off anchor) so the auto-updater can act on it later. + */ async checkForUpdates(): Promise { - const nomadAPIURL = env.get('NOMAD_API_URL') || NOMAD_API_DEFAULT_BASE_URL - if (!nomadAPIURL) { - return { - updates: [], - checked_at: new Date().toISOString(), - error: 'Nomad API is not configured. Set the NOMAD_API_URL environment variable.', - } - } - const installed = await InstalledResource.all() if (installed.length === 0) { return { @@ -36,51 +32,53 @@ export class CollectionUpdateService { } } - const requestBody: ResourceUpdateCheckRequest = { - resources: installed.map((r) => ({ - resource_id: r.resource_id, - resource_type: r.resource_type, - installed_version: r.version, - })), - } - try { - const response = await axios.post(`${nomadAPIURL}/api/v1/resources/check-updates`, requestBody, { - timeout: 15000, - }) - - logger.info( - `[CollectionUpdateService] Update check complete: ${response.data.length} update(s) available` + const catalog = new KiwixCatalogService() + const latestByKey = await catalog.getLatestForResources( + installed.map((r) => ({ resource_id: r.resource_id, resource_type: r.resource_type })) ) + const now = DateTime.now() + const updates: ResourceUpdateInfo[] = [] + for (const resource of installed) { + const latest = latestByKey.get(`${resource.resource_type}:${resource.resource_id}`) ?? null + await reconcileResourceUpdateState(resource, latest, now) + + if (latest && latest.version > resource.version) { + updates.push({ + resource_id: resource.resource_id, + resource_type: resource.resource_type, + installed_version: resource.version, + latest_version: latest.version, + download_url: latest.download_url, + size_bytes: latest.size_bytes || undefined, + }) + } + } + + logger.info( + `[CollectionUpdateService] Local update check complete: ${updates.length} update(s) available` + ) + + const enriched = await this.enrichWithSizes(updates) return { - updates: response.data, + updates: enriched, checked_at: new Date().toISOString(), } } catch (error) { - if (axios.isAxiosError(error) && error.response) { - logger.error( - `[CollectionUpdateService] Nomad API returned ${error.response.status}: ${JSON.stringify(error.response.data)}` - ) - return { - updates: [], - checked_at: new Date().toISOString(), - error: `Nomad API returned status ${error.response.status}`, - } - } - const message = - error instanceof Error ? error.message : 'Unknown error contacting Nomad API' + const message = error instanceof Error ? error.message : 'Unknown error during update check' logger.error(`[CollectionUpdateService] Failed to check for updates: ${message}`) return { updates: [], checked_at: new Date().toISOString(), - error: `Failed to contact Nomad API: ${message}`, + error: 'Failed to check for content updates. Please try again later.', } } } async applyUpdate( - update: ResourceUpdateInfo + update: ResourceUpdateInfo, + options?: { auto?: boolean } ): Promise<{ success: boolean; jobId?: string; error?: string }> { // Check if a download is already in progress for this URL const existingJob = await RunDownloadJob.getByUrl(update.download_url) @@ -105,10 +103,13 @@ export class CollectionUpdateService { update.resource_type === 'zim' ? ZIM_MIME_TYPES : PMTILES_MIME_TYPES, forceNew: true, filetype: update.resource_type, + title: update.resource_id, + totalBytes: update.size_bytes, resourceMetadata: { resource_id: update.resource_id, version: update.latest_version, collection_ref: null, + auto: options?.auto ?? false, }, }) @@ -126,21 +127,42 @@ export class CollectionUpdateService { async applyAllUpdates( updates: ResourceUpdateInfo[] ): Promise<{ results: Array<{ resource_id: string; success: boolean; jobId?: string; error?: string }> }> { - const results: Array<{ - resource_id: string - success: boolean - jobId?: string - error?: string - }> = [] - - for (const update of updates) { - const result = await this.applyUpdate(update) - results.push({ resource_id: update.resource_id, ...result }) - } + const results = await Promise.all( + updates.map(async (update) => { + const result = await this.applyUpdate(update) + return { resource_id: update.resource_id, ...result } + }) + ) return { results } } + /** + * Fetch Content-Length for each update URL in parallel. HEAD failures are non-fatal — + * the update row just renders without a size. Bounded to HEAD_TIMEOUT_MS so a slow + * mirror doesn't block the whole check. + */ + private async enrichWithSizes(updates: ResourceUpdateInfo[]): Promise { + const HEAD_TIMEOUT_MS = 5000 + + return await Promise.all( + updates.map(async (update) => { + if (update.size_bytes) return update // Trust upstream if it already gave us one + try { + const head = await axios.head(update.download_url, { + timeout: HEAD_TIMEOUT_MS, + maxRedirects: 5, + validateStatus: (s) => s >= 200 && s < 400, + }) + const len = Number(head.headers['content-length']) + return Number.isFinite(len) && len > 0 ? { ...update, size_bytes: len } : update + } catch { + return update + } + }) + ) + } + private buildFilename(update: ResourceUpdateInfo): string { if (update.resource_type === 'zim') { return `${update.resource_id}_${update.latest_version}.zim` diff --git a/admin/app/services/container_registry_service.ts b/admin/app/services/container_registry_service.ts index 01251fc..2fc465d 100644 --- a/admin/app/services/container_registry_service.ts +++ b/admin/app/services/container_registry_service.ts @@ -139,11 +139,17 @@ export class ContainerRegistryService { allTags.push(...data.tags) } - // Handle pagination via Link header + // Handle pagination via Link header. Per the OCI/Docker registry spec the next-page + // URL is relative (e.g. "/v2//tags/list?last=&n=1000"), so it must be + // resolved against the registry origin before re-fetching — assigning the raw relative + // path to `url` makes fetch() throw "Failed to parse URL". This silently broke update + // checks for any repo with >1000 tags (e.g. ollama/ollama, filebrowser/filebrowser), + // which is the root cause of #945. new URL(relative, base) also passes absolute + // next-URLs through unchanged, so it's safe for registries that return those. const linkHeader = response.headers.get('link') if (linkHeader) { const match = linkHeader.match(/<([^>]+)>;\s*rel="next"/) - url = match ? match[1] : '' + url = match ? new URL(match[1], `https://${parsed.registry}`).toString() : '' } else { url = '' } @@ -200,6 +206,66 @@ export class ContainerRegistryService { } } + /** + * Estimate the compressed download size (in bytes) of an image tag for the + * given host architecture by summing its layer sizes from the manifest. + * + * Resolves a multi-arch manifest list/index down to the platform-specific + * manifest before summing `layers[].size`. Returns null on any failure so + * callers can fall back to a conservative fixed threshold rather than + * silently skipping a disk pre-flight check. + */ + async getImageDownloadSize( + parsed: ParsedImageReference, + tag: string, + hostArch: string + ): Promise { + try { + const token = await this.getToken(parsed.registry, parsed.fullName) + const manifestAccept = [ + 'application/vnd.oci.image.index.v1+json', + 'application/vnd.docker.distribution.manifest.list.v2+json', + 'application/vnd.oci.image.manifest.v1+json', + 'application/vnd.docker.distribution.manifest.v2+json', + ].join(', ') + + const fetchManifest = async (ref: string) => + this.fetchWithRetry(`https://${parsed.registry}/v2/${parsed.fullName}/manifests/${ref}`, { + headers: { Authorization: `Bearer ${token}`, Accept: manifestAccept }, + }) + + const topRes = await fetchManifest(tag) + if (!topRes.ok) return null + + let manifest = (await topRes.json()) as { + mediaType?: string + layers?: Array<{ size?: number }> + manifests?: Array<{ digest?: string; platform?: { architecture?: string } }> + } + + // Multi-arch manifest list/index — resolve to the host-arch child manifest. + if (manifest.manifests?.length) { + const match = + manifest.manifests.find((m) => m.platform?.architecture === hostArch) || + manifest.manifests[0] + if (!match?.digest) return null + + const childRes = await fetchManifest(match.digest) + if (!childRes.ok) return null + manifest = (await childRes.json()) as { layers?: Array<{ size?: number }> } + } + + if (!manifest.layers?.length) return null + + return manifest.layers.reduce((total, layer) => total + (layer.size || 0), 0) + } catch (error) { + logger.warn( + `[ContainerRegistryService] Failed to get image size for ${parsed.fullName}:${tag}: ${error.message}` + ) + return null + } + } + /** * Extract the source repository URL from an image's OCI labels. * Uses the standardized `org.opencontainers.image.source` label. diff --git a/admin/app/services/content_auto_update_service.ts b/admin/app/services/content_auto_update_service.ts new file mode 100644 index 0000000..fd798ab --- /dev/null +++ b/admin/app/services/content_auto_update_service.ts @@ -0,0 +1,550 @@ +import logger from '@adonisjs/core/services/logger' +import { DateTime } from 'luxon' +import KVStore from '#models/kv_store' +import InstalledResource from '#models/installed_resource' +import { DownloadService } from '#services/download_service' +import { CollectionUpdateService } from '#services/collection_update_service' +import { + KiwixCatalogService, + reconcileResourceUpdateState, + type CatalogResult, +} from '#services/kiwix_catalog_service' +import { isWithinWindow, parseWindowMinutes } from '../utils/update_window.js' +import { recordResourceUpdateFailure } from '../utils/content_auto_update_backoff.js' +import type { Blocker, PreflightResult } from '../utils/image_disk_preflight.js' + +/** + * Content auto-update is opt-in via a single global master switch and runs on + * its OWN window + per-window data cap (deliberately separate from the core/app + * `autoUpdate.*` window, since ZIM downloads are multi-GB and bandwidth + * sensitive). Defaults err toward an overnight window with no cap; the UI + * strongly recommends setting a cap. + */ +const DEFAULT_WINDOW_START = '02:00' +const DEFAULT_WINDOW_END = '05:00' +const DEFAULT_COOLOFF_HOURS = 72 + +/** Whole-feature failures (e.g. catalog unreachable) before it self-disables. */ +const MAX_FEATURE_FAILURES = 3 + +export interface ContentAutoUpdateConfig { + /** Global master switch (`contentAutoUpdate.enabled`). */ + enabled: boolean + windowStart: string + windowEnd: string + cooloffHours: number + /** Max NEW bytes initiated per window instance. 0 = unlimited. */ + maxBytesPerWindow: number +} + +/** Per-resource eligibility verdict (drives both selection and the status UI). */ +export interface ContentEligibility { + eligible: boolean + reason: string + cooloffRemainingHours: number | null +} + +/** An eligible resource paired with the catalog facts needed to download it. */ +export interface ContentCandidate { + resource: InstalledResource + version: string + download_url: string + size_bytes: number + installed_at: DateTime +} + +/** Outcome of the cap-bounded greedy selection. */ +export interface ContentSelection { + selected: ContentCandidate[] + /** Single files larger than the whole cap — never auto-started (manual only). */ + skippedOversize: ContentCandidate[] + /** Fit the cap but not this window's remaining budget — retried next window. */ + deferred: ContentCandidate[] +} + +export interface ContentAutoUpdateResourceStatus { + resource_id: string + resource_type: 'zim' | 'map' + current_version: string + available_update_version: string | null + size_bytes: number | null + eligible: boolean + reason: string + cooloff_remaining_hours: number | null + exceeds_cap: boolean + consecutive_failures: number + auto_disabled_reason: string | null +} + +export interface ContentAutoUpdateStatus extends ContentAutoUpdateConfig { + withinWindow: boolean + windowBytesUsed: number + lastAttemptAt: string | null + lastResult: string | null + lastError: string | null + autoDisabledReason: string | null + resources: ContentAutoUpdateResourceStatus[] +} + +/** + * Decision + safety layer for automatic content (ZIM/map) updates. This is the + * content-side counterpart to {@link AppAutoUpdateService}: it decides *whether* + * each installed resource with an available update should be downloaded now + * (master switch on + in the content window + past cool-off + within the data + * cap) and then drives the existing manual download path + * ({@link CollectionUpdateService.applyUpdate} → {@link RunDownloadJob}). + * + * It never installs synchronously — it dispatches resumable download jobs and + * lets the existing job-completion path advance the installed version and + * rebuild the Kiwix library. + */ +export class ContentAutoUpdateService { + constructor( + private downloadService: DownloadService, + private catalog: KiwixCatalogService = new KiwixCatalogService(), + private collectionUpdateService: CollectionUpdateService = new CollectionUpdateService() + ) {} + + /** Read the master switch plus the content-specific window/cool-off/cap. */ + async getConfig(): Promise { + const [enabled, windowStart, windowEnd, cooloffHours, maxBytes] = await Promise.all([ + KVStore.getValue('contentAutoUpdate.enabled'), + KVStore.getValue('contentAutoUpdate.windowStart'), + KVStore.getValue('contentAutoUpdate.windowEnd'), + KVStore.getValue('contentAutoUpdate.cooloffHours'), + KVStore.getValue('contentAutoUpdate.maxBytesPerWindow'), + ]) + + const parsedCooloff = Number(cooloffHours) + const parsedCap = Number(maxBytes) + return { + enabled: enabled ?? false, + windowStart: windowStart || DEFAULT_WINDOW_START, + windowEnd: windowEnd || DEFAULT_WINDOW_END, + // `Number(null) === 0`, so an unset value must fall through to the default + // rather than silently resolving to a zero cool-off. An explicit 0 is honored. + cooloffHours: + cooloffHours !== null && Number.isFinite(parsedCooloff) && parsedCooloff >= 0 + ? parsedCooloff + : DEFAULT_COOLOFF_HOURS, + maxBytesPerWindow: + maxBytes !== null && Number.isFinite(parsedCap) && parsedCap >= 0 ? parsedCap : 0, + } + } + + /** + * Pure per-resource eligibility verdict. A resource is eligible when it has a + * detected newer version, is not self-disabled, and is past its cool-off + * (measured from first-detected). Version comparison is a lexicographic + * compare of the YYYY-MM stamps, which sorts chronologically. + */ + resourceEligibility( + resource: InstalledResource, + cooloffHours: number, + now: DateTime + ): ContentEligibility { + if (!resource.available_update_version) { + return { eligible: false, reason: 'Up to date', cooloffRemainingHours: null } + } + if (resource.auto_update_disabled_reason) { + return { + eligible: false, + reason: 'Auto-update disabled after repeated failures', + cooloffRemainingHours: null, + } + } + if (!(resource.available_update_version > resource.version)) { + return { eligible: false, reason: 'Up to date', cooloffRemainingHours: null } + } + if (!resource.available_update_first_seen_at) { + return { eligible: false, reason: 'Cool-off pending', cooloffRemainingHours: cooloffHours } + } + + const ageHours = now.diff(resource.available_update_first_seen_at, 'hours').hours + const remaining = cooloffHours - ageHours + if (remaining > 0) { + const rounded = Math.ceil(remaining) + return { + eligible: false, + reason: `In cool-off (${rounded}h remaining)`, + cooloffRemainingHours: rounded, + } + } + + return { + eligible: true, + reason: `Eligible → ${resource.available_update_version}`, + cooloffRemainingHours: 0, + } + } + + /** + * Pure cap-bounded greedy selection. Oldest-installed first (stale content is + * prioritized), tie-broken smallest-first for predictability. + * + * - size unknown (0) → deferred (can't budget safely) + * - size > the WHOLE cap → skippedOversize (never auto-started; manual only) + * - size ≤ remaining budget → selected + * - otherwise → deferred (fits the cap, not this window) + */ + selectUnderCap( + candidates: ContentCandidate[], + capBytes: number, + usedBytes: number + ): ContentSelection { + const cap = capBytes > 0 ? capBytes : Number.POSITIVE_INFINITY + let remaining = Math.max(0, cap - usedBytes) + + const selected: ContentCandidate[] = [] + const skippedOversize: ContentCandidate[] = [] + const deferred: ContentCandidate[] = [] + + const ordered = [...candidates].sort((a, b) => { + const at = a.installed_at?.toMillis?.() ?? 0 + const bt = b.installed_at?.toMillis?.() ?? 0 + if (at !== bt) return at - bt + return a.size_bytes - b.size_bytes + }) + + for (const candidate of ordered) { + if (candidate.size_bytes <= 0) { + deferred.push(candidate) + } else if (candidate.size_bytes > cap) { + skippedOversize.push(candidate) + } else if (candidate.size_bytes <= remaining) { + selected.push(candidate) + remaining -= candidate.size_bytes + } else { + deferred.push(candidate) + } + } + + return { selected, skippedOversize, deferred } + } + + /** + * Run-wide pre-flight: never auto-update content while ANY download is already + * running. Because content downloads are multi-GB and resumable, an in-flight + * download from a prior window naturally blocks new starts here — exactly the + * "let in-flight finish, don't start new" behavior we want. Transient → `skip`. + */ + async runGlobalPreflight(): Promise { + const blockers: Blocker[] = [] + try { + const downloads = await this.downloadService.listDownloadJobs() + const active = downloads.filter( + (d) => !!d.status && ['waiting', 'active', 'delayed'].includes(d.status) + ) + if (active.length > 0) { + blockers.push({ reason: `${active.length} download(s) in progress`, severity: 'skip' }) + } + } catch (error) { + const message = error instanceof Error ? error.message : String(error) + logger.warn(`[ContentAutoUpdateService] Could not check active downloads: ${message}`) + } + return { ok: blockers.length === 0, blockers } + } + + /** + * Entry point invoked by ContentAutoUpdateJob. Gates on the master switch + + * window, runs the local catalog check, then downloads as many eligible + * resources as fit under the per-window data cap. + */ + async attempt(): Promise<{ started: number; reason: string }> { + const config = await this.getConfig() + const now = DateTime.now() + + if (!config.enabled) { + return { started: 0, reason: 'Content auto-update is disabled' } + } + if (!isWithinWindow(config.windowStart, config.windowEnd, now)) { + const reason = `Outside update window (${config.windowStart}-${config.windowEnd})` + await this.recordRun(reason) + return { started: 0, reason } + } + + try { + // Reset the per-window budget once per window instance (the cron fires + // hourly but a window can span several hours). + await this.maybeResetWindowBudget(config, now) + + // Local catalog check + persist available-update state for every resource. + const installed = await InstalledResource.all() + const latestByKey = await this.catalog.getLatestForResources( + installed.map((r) => ({ resource_id: r.resource_id, resource_type: r.resource_type })) + ) + for (const resource of installed) { + const latest = latestByKey.get(`${resource.resource_type}:${resource.resource_id}`) ?? null + await reconcileResourceUpdateState(resource, latest, now) + } + + const eligible = installed.filter( + (r) => this.resourceEligibility(r, config.cooloffHours, now).eligible + ) + if (eligible.length === 0) { + await this.recordFeatureSuccess() + const reason = 'No eligible content updates' + await this.recordRun(reason) + return { started: 0, reason } + } + + const global = await this.runGlobalPreflight() + if (!global.ok) { + await this.recordFeatureSuccess() + const reason = `Pre-flight blocked: ${global.blockers.map((b) => b.reason).join('; ')}` + await this.recordRun(reason) + return { started: 0, reason } + } + + const candidates: ContentCandidate[] = eligible.map((r) => { + const latest = latestByKey.get(`${r.resource_type}:${r.resource_id}`) as CatalogResult + return { + resource: r, + version: latest.version, + download_url: latest.download_url, + size_bytes: r.available_update_size_bytes ?? latest.size_bytes ?? 0, + installed_at: r.installed_at, + } + }) + + const usedBytes = await this.getWindowBytesUsed() + const { selected, skippedOversize, deferred } = this.selectUnderCap( + candidates, + config.maxBytesPerWindow, + usedBytes + ) + + let started = 0 + let failed = 0 + let initiatedBytes = 0 + for (const candidate of selected) { + const result = await this.collectionUpdateService.applyUpdate( + { + resource_id: candidate.resource.resource_id, + resource_type: candidate.resource.resource_type, + installed_version: candidate.resource.version, + latest_version: candidate.version, + download_url: candidate.download_url, + size_bytes: candidate.size_bytes || undefined, + }, + { auto: true } + ) + + if (result.success) { + // Success is NOT recorded here: applyUpdate only enqueues a resumable + // download. The per-resource backoff is cleared once the download + // actually completes (RunDownloadJob.onComplete) and incremented when it + // fails terminally (the worker `failed` handler). Recording success on + // dispatch would reset the counter every window and defeat self-disable. + initiatedBytes += candidate.size_bytes + started++ + logger.info( + `[ContentAutoUpdateService] Started ${candidate.resource.resource_id} → ${candidate.version}` + ) + } else { + // A failure to even enqueue is a genuine auto-update failure; no job runs, + // so no terminal `failed` event will follow — count it here. + await recordResourceUpdateFailure(candidate.resource, result.error ?? 'dispatch failed') + failed++ + } + } + + if (initiatedBytes > 0) { + await this.addWindowBytesUsed(initiatedBytes) + } + + const parts = [`${started} started`] + if (failed) parts.push(`${failed} failed`) + if (skippedOversize.length) parts.push(`${skippedOversize.length} skipped (exceeds cap)`) + if (deferred.length) parts.push(`${deferred.length} deferred (over budget)`) + const reason = parts.join(', ') + + await this.recordFeatureSuccess() + await this.recordRun(reason) + logger.info(`[ContentAutoUpdateService] Run complete: ${reason}`) + return { started, reason } + } catch (error) { + const message = error instanceof Error ? error.message : String(error) + await this.recordFeatureFailure(message) + await this.recordRun(`Failed: ${message}`) + logger.error(`[ContentAutoUpdateService] Run failed: ${message}`) + return { started: 0, reason: `Failed: ${message}` } + } + } + + /** + * Evaluate what the next run *would* do, without hitting the network, + * persisting state, or dispatching anything. Operates on the available-update + * state already persisted by the last check (manual or auto), so run a "Check + * for Content Updates" first if you want fresh catalog data. Used by the + * `content-auto-update:dry-run` command. + */ + async dryRun( + overrides: { + now?: DateTime + forceEnabled?: boolean + cooloffHours?: number + windowStart?: string + windowEnd?: string + maxBytesPerWindow?: number + windowBytesUsed?: number + } = {} + ): Promise<{ + enabled: boolean + withinWindow: boolean + config: ContentAutoUpdateConfig + eligibleCount: number + selection: ContentSelection + }> { + const base = await this.getConfig() + const config: ContentAutoUpdateConfig = { + enabled: overrides.forceEnabled ? true : base.enabled, + windowStart: overrides.windowStart ?? base.windowStart, + windowEnd: overrides.windowEnd ?? base.windowEnd, + cooloffHours: overrides.cooloffHours ?? base.cooloffHours, + maxBytesPerWindow: overrides.maxBytesPerWindow ?? base.maxBytesPerWindow, + } + const now = overrides.now ?? DateTime.now() + const withinWindow = isWithinWindow(config.windowStart, config.windowEnd, now) + + const pending = await InstalledResource.query().whereNotNull('available_update_version') + const eligible = pending.filter( + (r) => this.resourceEligibility(r, config.cooloffHours, now).eligible + ) + const candidates: ContentCandidate[] = eligible.map((r) => ({ + resource: r, + version: r.available_update_version!, + download_url: '(dry-run)', + size_bytes: r.available_update_size_bytes ?? 0, + installed_at: r.installed_at, + })) + + const usedBytes = overrides.windowBytesUsed ?? (await this.getWindowBytesUsed()) + const selection = this.selectUnderCap(candidates, config.maxBytesPerWindow, usedBytes) + + return { + enabled: config.enabled, + withinWindow, + config, + eligibleCount: eligible.length, + selection, + } + } + + // ── Per-window budget ───────────────────────────────────────────────────────── + + /** Most-recent window-open boundary as an absolute timestamp (handles wrap). */ + windowStartBoundary(windowStart: string, now: DateTime): DateTime { + const minutes = parseWindowMinutes(windowStart) ?? 0 + const todayStart = now.startOf('day').plus({ minutes }) + return now >= todayStart ? todayStart : todayStart.minus({ days: 1 }) + } + + /** Reset the window budget exactly once per entry into the window. */ + private async maybeResetWindowBudget( + config: ContentAutoUpdateConfig, + now: DateTime + ): Promise { + const boundary = this.windowStartBoundary(config.windowStart, now) + const resetAtRaw = await KVStore.getValue('contentAutoUpdate.windowResetAt') + const resetAt = resetAtRaw ? DateTime.fromISO(resetAtRaw) : null + if (!resetAt || !resetAt.isValid || resetAt < boundary) { + await KVStore.setValue('contentAutoUpdate.windowBytesUsed', '0') + await KVStore.setValue('contentAutoUpdate.windowResetAt', now.toISO()!) + } + } + + private async getWindowBytesUsed(): Promise { + const raw = await KVStore.getValue('contentAutoUpdate.windowBytesUsed') + const num = Number(raw) + return Number.isFinite(num) && num > 0 ? num : 0 + } + + private async addWindowBytesUsed(bytes: number): Promise { + const used = await this.getWindowBytesUsed() + await KVStore.setValue('contentAutoUpdate.windowBytesUsed', String(used + bytes)) + } + + // ── Backoff + run recording ─────────────────────────────────────────────────── + // Per-resource backoff lives in ../utils/content_auto_update_backoff.ts so the + // job-completion path and the worker `failed` handler can share it without an + // import cycle. The feature-level backoff below stays here. + + /** Clear the feature-level backoff after a clean run. */ + private async recordFeatureSuccess(): Promise { + await KVStore.setValue('contentAutoUpdate.consecutiveFailures', '0') + await KVStore.clearValue('contentAutoUpdate.lastError') + } + + /** Record a whole-feature failure and self-disable the feature at the threshold. */ + private async recordFeatureFailure(reason: string): Promise { + const raw = await KVStore.getValue('contentAutoUpdate.consecutiveFailures') + const failures = (Number(raw) || 0) + 1 + await KVStore.setValue('contentAutoUpdate.consecutiveFailures', String(failures)) + await KVStore.setValue('contentAutoUpdate.lastError', reason) + if (failures >= MAX_FEATURE_FAILURES) { + await KVStore.setValue('contentAutoUpdate.enabled', false) + await KVStore.setValue( + 'contentAutoUpdate.autoDisabledReason', + `Content auto-update disabled after ${failures} consecutive failures. Last error: ${reason}` + ) + logger.error( + `[ContentAutoUpdateService] Feature auto-disabled after ${failures} consecutive failures` + ) + } + } + + private async recordRun(reason: string): Promise { + await KVStore.setValue('contentAutoUpdate.lastAttemptAt', DateTime.now().toISO()!) + await KVStore.setValue('contentAutoUpdate.lastResult', reason) + } + + // ── Status snapshot ─────────────────────────────────────────────────────────── + + /** Full state snapshot for the settings UI (resources with pending updates). */ + async getStatus(): Promise { + const config = await this.getConfig() + const now = DateTime.now() + + const pending = await InstalledResource.query().whereNotNull('available_update_version') + const resources: ContentAutoUpdateResourceStatus[] = pending.map((resource) => { + const verdict = this.resourceEligibility(resource, config.cooloffHours, now) + const size = resource.available_update_size_bytes ?? null + const exceedsCap = + config.maxBytesPerWindow > 0 && size !== null && size > config.maxBytesPerWindow + return { + resource_id: resource.resource_id, + resource_type: resource.resource_type, + current_version: resource.version, + available_update_version: resource.available_update_version, + size_bytes: size, + eligible: verdict.eligible && !exceedsCap, + reason: exceedsCap ? 'Exceeds data cap — update manually' : verdict.reason, + cooloff_remaining_hours: verdict.cooloffRemainingHours, + exceeds_cap: exceedsCap, + consecutive_failures: resource.auto_update_consecutive_failures || 0, + auto_disabled_reason: resource.auto_update_disabled_reason, + } + }) + + const [lastAttemptAt, lastResult, lastError, autoDisabledReason, windowBytesUsed] = + await Promise.all([ + KVStore.getValue('contentAutoUpdate.lastAttemptAt'), + KVStore.getValue('contentAutoUpdate.lastResult'), + KVStore.getValue('contentAutoUpdate.lastError'), + KVStore.getValue('contentAutoUpdate.autoDisabledReason'), + this.getWindowBytesUsed(), + ]) + + return { + ...config, + withinWindow: isWithinWindow(config.windowStart, config.windowEnd, now), + windowBytesUsed, + lastAttemptAt: lastAttemptAt || null, + lastResult: lastResult || null, + lastError: lastError || null, + autoDisabledReason: autoDisabledReason || null, + resources, + } + } +} diff --git a/admin/app/services/countries_service.ts b/admin/app/services/countries_service.ts new file mode 100644 index 0000000..b6ebf0f --- /dev/null +++ b/admin/app/services/countries_service.ts @@ -0,0 +1,308 @@ +import { access, readFile, writeFile, mkdir } from 'fs/promises' +import { join, resolve } from 'path' +import { createHash } from 'crypto' +import { tmpdir } from 'os' +import logger from '@adonisjs/core/services/logger' +import type { Country, CountryCode, CountryGroup } from '../../types/maps.js' + +interface NEFeature { + type: 'Feature' + properties: Record + geometry: unknown +} + +interface NEFeatureCollection { + type: 'FeatureCollection' + features: NEFeature[] +} + +const COUNTRY_GEOJSON_PATH = join( + process.cwd(), + 'resources', + 'geodata', + 'ne_50m_admin_0_countries.geojson' +) + +// Natural Earth country polygons are land-only (no territorial waters), so a +// strict intersect leaves tiles fully over the ocean out of the extract — +// coastal cities render as grey off their coast. Inflate each polygon outward +// by ~11 km to pull in adjacent tiles without ballooning the extract size. +const REGION_BUFFER_DEGREES = 0.1 + +const GROUP_ORDER = [ + 'north-america', + 'south-america', + 'europe', + 'africa', + 'asia', + 'oceania', +] + +const GROUP_META: Record = { + 'North America': { + id: 'north-america', + name: 'North America', + description: 'All countries in North America and the Caribbean.', + }, + 'South America': { + id: 'south-america', + name: 'South America', + description: 'All countries in South America.', + }, + Europe: { + id: 'europe', + name: 'Europe', + description: 'All countries in Europe.', + }, + Africa: { + id: 'africa', + name: 'Africa', + description: 'All countries in Africa.', + }, + Asia: { + id: 'asia', + name: 'Asia', + description: 'All countries in Asia.', + }, + Oceania: { + id: 'oceania', + name: 'Oceania', + description: 'Australia, New Zealand, and Pacific island nations.', + }, +} + +export class CountriesService { + private static instance: CountriesService | null = null + private loadPromise: Promise | null = null + private countries: Country[] = [] + private byCode: Map = new Map() + private groups: CountryGroup[] = [] + + static getInstance(): CountriesService { + if (!this.instance) { + this.instance = new CountriesService() + } + return this.instance + } + + private async ensureLoaded(): Promise { + if (this.byCode.size > 0) return + if (!this.loadPromise) { + this.loadPromise = this.load() + } + await this.loadPromise + } + + private async load(): Promise { + const raw = await readFile(COUNTRY_GEOJSON_PATH, 'utf8') + const fc = JSON.parse(raw) as NEFeatureCollection + + // Natural Earth reuses a sovereign state's ISO_A2 for its dependencies + // (e.g. AU covers both Australia and Australian territories). Sort so the + // sovereign mainland wins the ISO-code slot, and skip any subsequent + // same-code dependency — otherwise the "AU" entry ends up being some tiny + // island territory. + const sortedFeatures = [...fc.features].sort((a, b) => typeRank(a) - typeRank(b)) + + const countries: Country[] = [] + const byCode = new Map() + const groupCodes: Record = {} + + for (const feature of sortedFeatures) { + const p = feature.properties + const code = resolveIso2(p) + if (!code) continue + if (byCode.has(code)) continue + + const continent = typeof p.CONTINENT === 'string' ? p.CONTINENT : 'Other' + if (continent === 'Antarctica' || continent === 'Seven seas (open ocean)') continue + + const country: Country = { + code, + code3: resolveIso3(p) ?? code, + name: typeof p.NAME === 'string' ? p.NAME : code, + continent, + subregion: typeof p.SUBREGION === 'string' ? p.SUBREGION : continent, + population: typeof p.POP_EST === 'number' ? p.POP_EST : 0, + } + + countries.push(country) + byCode.set(code, { country, feature }) + + if (GROUP_META[continent]) { + const groupId = GROUP_META[continent].id + if (!groupCodes[groupId]) groupCodes[groupId] = [] + groupCodes[groupId].push(code) + } + } + + countries.sort((a, b) => a.name.localeCompare(b.name)) + + const groups: CountryGroup[] = GROUP_ORDER.flatMap((groupId) => { + const meta = Object.values(GROUP_META).find((m) => m.id === groupId) + if (!meta) return [] + const codes = (groupCodes[groupId] ?? []).slice().sort() + if (codes.length === 0) return [] + return [{ id: meta.id, name: meta.name, description: meta.description, countries: codes }] + }) + + this.countries = countries + this.byCode = byCode + this.groups = groups + + logger.info( + `[CountriesService] Loaded ${countries.length} countries across ${groups.length} groups` + ) + } + + async list(): Promise { + await this.ensureLoaded() + return this.countries + } + + async listGroups(): Promise { + await this.ensureLoaded() + return this.groups + } + + /** Throws when a supplied code does not map to a known country. */ + async resolveCodes(codes: CountryCode[]): Promise { + await this.ensureLoaded() + const normalized = [...new Set(codes.map((c) => c.toUpperCase()))].sort() + const unknown = normalized.filter((c) => !this.byCode.has(c)) + if (unknown.length > 0) { + throw new Error(`Unknown country code(s): ${unknown.join(', ')}`) + } + return normalized + } + + /** + * Filename is keyed on a hash of the sorted ISO codes + buffer size so + * repeated calls with the same selection reuse the same path, and bumping + * the buffer auto-invalidates stale files. + */ + async writeRegionFile(codes: CountryCode[]): Promise { + await this.ensureLoaded() + const resolved = await this.resolveCodes(codes) + const key = `b${REGION_BUFFER_DEGREES}:${resolved.join(',')}` + const hash = createHash('sha1').update(key).digest('hex').slice(0, 12) + + const dir = resolve(tmpdir(), 'nomad-pmtiles-regions') + await mkdir(dir, { recursive: true }) + const filepath = join(dir, `region-${hash}.geojson`) + + try { + await access(filepath) + return filepath + } catch {} + + const fc = { + type: 'FeatureCollection', + features: resolved.map((code) => { + const entry = this.byCode.get(code)! + return { + type: 'Feature', + properties: { iso: code, name: entry.country.name }, + geometry: bufferGeometry(entry.feature.geometry, REGION_BUFFER_DEGREES), + } + }), + } + + await writeFile(filepath, JSON.stringify(fc)) + return filepath + } +} + +function typeRank(f: NEFeature): number { + const t = typeof f.properties.TYPE === 'string' ? f.properties.TYPE : '' + if (t === 'Sovereign country') return 0 + if (t === 'Country') return 1 + if (t === 'Sovereignty') return 2 + if (t === 'Disputed') return 3 + if (t === 'Dependency') return 4 + return 5 +} + +function resolveIso2(p: Record): CountryCode | null { + // Natural Earth's ISO_A2 sometimes holds political escapes like "CN-TW" for + // Taiwan or "-99" for countries involved in disputes. Only accept clean + // 2-letter codes; fall back to ISO_A2_EH (which reliably has the real code). + const primary = typeof p.ISO_A2 === 'string' ? p.ISO_A2 : null + if (primary && /^[A-Z]{2}$/i.test(primary)) return primary.toUpperCase() + const fallback = typeof p.ISO_A2_EH === 'string' ? p.ISO_A2_EH : null + if (fallback && /^[A-Z]{2}$/i.test(fallback)) return fallback.toUpperCase() + return null +} + +/** + * Inflate each polygon ring outward by `buffer` degrees via per-vertex + * averaged-normal offset. Not geodesically accurate — but at small buffers + * (<= 0.2°) it's within a few percent of a proper geodesic buffer at + * country scale, which is plenty for tile-inclusion purposes. + */ +function bufferGeometry(geometry: unknown, buffer: number): unknown { + const geom = geometry as { type: string; coordinates: any } + if (geom?.type === 'Polygon') { + return { type: 'Polygon', coordinates: bufferPolygonRings(geom.coordinates, buffer) } + } + if (geom?.type === 'MultiPolygon') { + return { + type: 'MultiPolygon', + coordinates: geom.coordinates.map((poly: number[][][]) => + bufferPolygonRings(poly, buffer) + ), + } + } + return geometry +} + +function bufferPolygonRings(rings: number[][][], buffer: number): number[][][] { + return rings.map((ring) => bufferRing(ring, buffer)) +} + +function bufferRing(ring: number[][], buffer: number): number[][] { + if (ring.length < 4) return ring + const sign = signedArea(ring) > 0 ? 1 : -1 + const n = ring.length - 1 + const out: number[][] = [] + for (let i = 0; i < n; i++) { + const prev = ring[(i - 1 + n) % n] + const curr = ring[i] + const next = ring[(i + 1) % n] + const e1x = curr[0] - prev[0] + const e1y = curr[1] - prev[1] + const e2x = next[0] - curr[0] + const e2y = next[1] - curr[1] + const l1 = Math.hypot(e1x, e1y) || 1 + const l2 = Math.hypot(e2x, e2y) || 1 + const n1x = (e1y / l1) * sign + const n1y = (-e1x / l1) * sign + const n2x = (e2y / l2) * sign + const n2y = (-e2x / l2) * sign + const sumX = n1x + n2x + const sumY = n1y + n2y + const sl = Math.hypot(sumX, sumY) || 1 + out.push([curr[0] + (sumX / sl) * buffer, curr[1] + (sumY / sl) * buffer]) + } + out.push(out[0]) + return out +} + +function signedArea(ring: number[][]): number { + let a = 0 + for (let i = 0; i < ring.length - 1; i++) { + a += ring[i][0] * ring[i + 1][1] - ring[i + 1][0] * ring[i][1] + } + return a / 2 +} + +function resolveIso3(p: Record): string | null { + const primary = typeof p.ISO_A3 === 'string' ? p.ISO_A3 : null + if (primary && primary !== '-99') return primary.toUpperCase() + const fallback = typeof p.ISO_A3_EH === 'string' ? p.ISO_A3_EH : null + if (fallback && fallback !== '-99') return fallback.toUpperCase() + const adm = typeof p.ADM0_A3 === 'string' ? p.ADM0_A3 : null + if (adm && adm !== '-99') return adm.toUpperCase() + return null +} + diff --git a/admin/app/services/custom_app_guard.ts b/admin/app/services/custom_app_guard.ts new file mode 100644 index 0000000..cd1f00e --- /dev/null +++ b/admin/app/services/custom_app_guard.ts @@ -0,0 +1,167 @@ +import { dirname, normalize } from 'node:path' +import env from '#start/env' + +/** + * Security guardrails for user-defined ("custom app") containers. + * + * project-nomad runs containers as host siblings via the mounted Docker socket (DooD), so a + * misconfigured bind mount or image is a real host-takeover vector. The posture here is + * "guardrails with warnings": hard-block the genuinely catastrophic, warn-but-allow the merely + * risky so a trusted admin keeps their power without an easy foot-gun. + */ + +export interface GuardEvaluation { + /** Hard rejections — the install cannot proceed until these are fixed. */ + blocked: string[] + /** Advisory warnings — overridable via the "install anyway" force flag. */ + warnings: string[] +} + +/** Absolute host directories that must never be bind-mounted into a custom container. */ +const SYSTEM_BLOCK_PREFIXES = ['/etc', '/proc', '/sys', '/boot', '/dev', '/run', '/var/run'] + +/** Registries we ship curated apps from; anything else is allowed but warned on. */ +const TRUSTED_REGISTRIES = ['docker.io', 'registry-1.docker.io', 'ghcr.io', 'lscr.io', 'quay.io'] + +/** Resolve the managed storage root (where bind mounts are expected to live). */ +export function getStorageRoot(): string { + return normalize(env.get('NOMAD_STORAGE_PATH', '/opt/project-nomad/storage')).replace(/\/+$/, '') +} + +/** Normalize an absolute path: collapse `..`/`.` segments and strip any trailing slash. */ +function normalizeHostPath(p: string): string { + return normalize(p).replace(/\/+$/, '') || '/' +} + +/** True when `child` equals `ancestor` or sits beneath it. */ +function isWithin(child: string, ancestor: string): boolean { + return child === ancestor || child.startsWith(ancestor + '/') +} + +/** + * Evaluate user-supplied bind mounts. Hard-blocks the Docker socket, core system directories, + * and any mount at or above project-nomad's own install tree (which would expose its code/data). + * Warns on any host path outside the managed storage root. + */ +export function evaluateBindMounts( + volumes: { host_path: string; container_path: string }[] +): GuardEvaluation { + const blocked: string[] = [] + const warnings: string[] = [] + + const storageRoot = getStorageRoot() + // The install tree is the parent of the storage root (e.g. /opt/project-nomad). Mounting it — + // or any ancestor, up to and including `/` — would hand a container project-nomad's own files. + const installRoot = dirname(storageRoot) + + for (const { host_path: hostPath, container_path: containerPath } of volumes) { + const host = normalizeHostPath(hostPath) + + if (!hostPath.startsWith('/')) { + blocked.push(`Volume host path "${hostPath}" must be an absolute path.`) + continue + } + if (!containerPath.startsWith('/')) { + blocked.push(`Volume container path "${containerPath}" must be an absolute path.`) + continue + } + + // A colon is Docker's bind delimiter (host:container:options). A path containing one would be + // re-split by Docker into a different mount than the one validated here — reject it outright so + // the checks below can't be bypassed by a parse-differential. (The validator blocks this too; + // this keeps the guard self-defending for any caller that skips validation.) + if (hostPath.includes(':') || containerPath.includes(':')) { + blocked.push(`Volume paths must not contain a colon (":"): "${hostPath}" → "${containerPath}".`) + continue + } + + // The Docker socket is the most dangerous mount of all — full control of the host daemon. + if (host.endsWith('docker.sock') || /\/docker\.sock$/.test(host)) { + blocked.push( + `Mounting the Docker socket ("${hostPath}") is not allowed — it grants full host control.` + ) + continue + } + + // Core system directories. + if (host === '/' || SYSTEM_BLOCK_PREFIXES.some((p) => isWithin(host, p))) { + blocked.push(`Mounting system directory "${hostPath}" is not allowed.`) + continue + } + + // At or above project-nomad's own install tree (covers `/`, `/opt`, `/opt/project-nomad`). + if (host === installRoot || isWithin(installRoot, host)) { + blocked.push( + `Mounting "${hostPath}" would expose project-nomad's own files and is not allowed.` + ) + continue + } + + // Anything outside the managed storage root is allowed but flagged. + if (!isWithin(host, storageRoot)) { + warnings.push( + `Volume "${hostPath}" is outside the managed storage root (${storageRoot}). Make sure you trust this image with access to that path.` + ) + } + } + + return { blocked, warnings } +} + +/** + * Evaluate a Docker image reference. Hard-blocks malformed references; warns on moving tags + * (`:latest`/untagged) and images from registries outside the trusted set. + */ +export function evaluateImageReference(image: string): GuardEvaluation { + const blocked: string[] = [] + const warnings: string[] = [] + + const ref = image.trim() + // Loose validity check: no whitespace/control chars, and a sane character set for an image ref. + if (!ref || /\s/.test(ref) || !/^[\w./:@-]+$/.test(ref)) { + blocked.push(`"${image}" is not a valid image reference.`) + return { blocked, warnings } + } + + // Split off any digest, then any tag, to inspect the registry and tag. + const [nameAndTag] = ref.split('@') + const firstSegment = nameAndTag.split('/')[0] + const hasRegistryHost = + nameAndTag.includes('/') && (firstSegment.includes('.') || firstSegment.includes(':')) + const registry = hasRegistryHost ? firstSegment.split(':')[0] : 'docker.io' + + if (!TRUSTED_REGISTRIES.includes(registry)) { + warnings.push( + `Image is from "${registry}", which is outside project-nomad's trusted registries. Only install images you trust.` + ) + } + + // Determine the tag (ignore a colon that's part of a registry host:port in the first segment). + const remainder = hasRegistryHost ? nameAndTag.slice(firstSegment.length + 1) : nameAndTag + const tag = remainder.includes(':') ? remainder.split(':').pop() : undefined + const hasDigest = ref.includes('@sha256:') + if (!hasDigest && (!tag || tag === 'latest')) { + warnings.push( + `Image "${image}" uses a moving tag (${tag ? ':latest' : 'no tag'}). Pin a specific version for reproducible installs.` + ) + } + + return { blocked, warnings } +} + +/** Combine bind-mount and image evaluations into a single result. */ +export function evaluateCustomApp(input: { + image?: string + volumes?: { host_path: string; container_path: string }[] +}): GuardEvaluation { + const bind = evaluateBindMounts(input.volumes ?? []) + const img = input.image ? evaluateImageReference(input.image) : { blocked: [], warnings: [] } + return { + blocked: [...bind.blocked, ...img.blocked], + warnings: [...bind.warnings, ...img.warnings], + } +} + +/** Default resource caps applied to custom containers unless the user overrides them. */ +export const DEFAULT_MEMORY_MB = 1024 +export const DEFAULT_CPUS = 1 diff --git a/admin/app/services/docker_service.ts b/admin/app/services/docker_service.ts index 2f0b6e8..68a631a 100644 --- a/admin/app/services/docker_service.ts +++ b/admin/app/services/docker_service.ts @@ -5,12 +5,22 @@ import { inject } from '@adonisjs/core' import transmit from '@adonisjs/transmit/services/main' import { doResumableDownloadWithRetry } from '../utils/downloads.js' import { join } from 'path' -import { ZIM_STORAGE_PATH } from '../utils/fs.js' +import os from 'node:os' +import env from '#start/env' +import { + ZIM_STORAGE_PATH, + BOOKS_STORAGE_PATH, + CALIBRE_EMPTY_LIBRARY_ASSET_PATH, + VAULTWARDEN_STORAGE_PATH, + MESHCORE_WEB_STORAGE_PATH, + MEDIA_STORAGE_PATH, + JELLYFIN_MEDIA_SUBFOLDERS, +} from '../utils/fs.js' import { KiwixLibraryService } from './kiwix_library_service.js' import { SERVICE_NAMES } from '../../constants/service_names.js' import { exec } from 'child_process' import { promisify } from 'util' -// import { readdir } from 'fs/promises' +import { readFile, mkdir, copyFile, chown, chmod, access, writeFile } from 'node:fs/promises' import KVStore from '#models/kv_store' import { BROADCAST_CHANNELS } from '../../constants/broadcast.js' import { KIWIX_LIBRARY_CMD } from '../../constants/kiwix.js' @@ -20,6 +30,19 @@ export class DockerService { public docker: Docker private activeInstallations: Set = new Set() public static NOMAD_NETWORK = 'project-nomad_default' + public static ADMIN_CONTAINER_NAME = 'nomad_admin' + // The admin's own storage mount destination inside its container (compose maps + // :/app/storage). Used to locate the backing host path (#938). + public static ADMIN_STORAGE_DEST = '/app/storage' + // Hardcoded production default host storage root. A seeded/frozen child bind can + // still carry this prefix even after NOMAD_STORAGE_PATH is set elsewhere, so it's + // matched alongside the env value when relocating binds (#938). + public static DEFAULT_HOST_STORAGE_ROOT = '/opt/project-nomad/storage' + + // Resolved once: the host filesystem path backing the admin's /app/storage mount. + // Child-service binds are rewritten to live under this so relocating the admin + // storage volume relocates every child app too (#938). null = not yet resolved. + private _hostStorageRoot: string | null = null private _servicesStatusCache: { data: { service_name: string; status: string }[]; expiresAt: number } | null = null private _servicesStatusInflight: Promise<{ service_name: string; status: string }[]> | null = null @@ -36,6 +59,27 @@ export class DockerService { } } + /** + * Pull a Docker image and resolve only when the pull genuinely completes. + * + * dockerode's `followProgress(stream, onFinished)` reports failures via the + * first argument of onFinished. Every call site used to pass the Promise's + * `resolve` directly as that callback, so a failed pull (dropped/metered + * connection, bad manifest, registry error, disk full mid-pull) resolved as + * if it had succeeded — and the code then tried to create/start a container + * from a missing or partial image, surfacing a confusing downstream error. + * Rejecting on that error here lets callers fail fast with the real cause (#790). + */ + async pullImage(imageName: string): Promise { + const pullStream = await this.docker.pull(imageName) + await new Promise((resolve, reject) => { + this.docker.modem.followProgress(pullStream, (error: Error | null) => { + if (error) reject(error) + else resolve() + }) + }) + } + async affectContainer( serviceName: string, action: 'start' | 'stop' | 'restart' @@ -110,10 +154,10 @@ export class DockerService { message: `Invalid action: ${action}. Use 'start', 'stop', or 'restart'.`, } } catch (error: any) { - logger.error(`Error starting service ${serviceName}: ${error.message}`) + logger.error({ err: error }, `[DockerService] Error controlling service ${serviceName}`) return { success: false, - message: `Failed to start service ${serviceName}: ${error.message}`, + message: `Failed to ${action} service ${serviceName}. Check server logs for details.`, } } } @@ -198,6 +242,12 @@ export class DockerService { const hostname = process.env.NODE_ENV === 'production' ? serviceName : 'localhost' + // "https:8480" / "http:8480" — explicit scheme + port (e.g. an app serving its own TLS). + const schemePort = service.ui_location?.match(/^(https?):(\d+)$/) + if (schemePort) { + return `${schemePort[1]}://${hostname}:${schemePort[2]}` + } + // First, check if ui_location is set and is a valid port number if (service.ui_location && parseInt(service.ui_location, 10)) { return `http://${hostname}:${service.ui_location}` @@ -291,8 +341,12 @@ export class DockerService { /** * Force reinstall a service by stopping, removing, and recreating its container. - * This method will also clear any associated volumes/data. - * Handles edge cases gracefully (e.g., container not running, container not found). + * + * Volume handling: removes Docker-managed named volumes whose name equals + * `serviceName`, starts with `${serviceName}_`, or carries a `service=${serviceName}` + * label. Host bind mounts are NOT touched — any data living on a bind-mounted + * host path (ZIM stores, model caches, MySQL data dir, etc.) survives the reinstall. + * Anonymous volumes (random hash names) are also not matched. */ async forceReinstall(serviceName: string): Promise<{ success: boolean; message: string }> { try { @@ -355,8 +409,8 @@ export class DockerService { ) } } catch (error: any) { - logger.warn(`Error during container cleanup: ${error.message}`) - this._broadcast(serviceName, 'cleanup-warning', `Warning during cleanup: ${error.message}`) + logger.warn({ err: error }, `[DockerService] Error during container cleanup for ${serviceName}`) + this._broadcast(serviceName, 'cleanup-warning', 'Warning during container cleanup. Check server logs for details.') } // Step 3: Clear volumes/data if needed @@ -365,7 +419,10 @@ export class DockerService { const volumes = await this.docker.listVolumes() const serviceVolumes = volumes.Volumes?.filter( - (v) => v.Name.includes(serviceName) || v.Labels?.service === serviceName + (v) => + v.Name === serviceName || + v.Name.startsWith(`${serviceName}_`) || + v.Labels?.service === serviceName ) || [] for (const vol of serviceVolumes) { @@ -382,11 +439,11 @@ export class DockerService { this._broadcast(serviceName, 'no-volumes', `No volumes found to clear`) } } catch (error: any) { - logger.warn(`Error during volume cleanup: ${error.message}`) + logger.warn({ err: error }, `[DockerService] Error during volume cleanup for ${serviceName}`) this._broadcast( serviceName, 'volume-cleanup-warning', - `Warning during volume cleanup: ${error.message}` + 'Warning during volume cleanup. Check server logs for details.' ) } @@ -411,22 +468,136 @@ export class DockerService { message: `Service ${serviceName} force reinstall initiated successfully. You can receive updates via server-sent events.`, } } catch (error: any) { - logger.error(`Force reinstall failed for ${serviceName}: ${error.message}`) + logger.error({ err: error }, `[DockerService] Force reinstall failed for ${serviceName}`) await this._cleanupFailedInstallation(serviceName) return { success: false, - message: `Failed to force reinstall service ${serviceName}: ${error.message}`, + message: `Failed to force reinstall service ${serviceName}. Check server logs for details.`, } } } + /** + * Translate low-level dockerode errors into something a non-technical user can + * act on. Currently handles host port conflicts — the most common install + * failure, where a service can't bind its port because something on the host + * already holds it (classic case: a native Ollama install owns 11434). Returns + * the original message unchanged for anything we don't recognize. (#934) + */ + private _humanizeDockerError(error: any, serviceName: string): string { + const raw: string = error?.message ?? String(error) + // dockerode surfaces port conflicts as e.g. + // "...Bind for 0.0.0.0:11434 failed: port is already allocated" + // "...listen tcp 0.0.0.0:8090: bind: address already in use" + const portMatch = raw.match(/(?:Bind for [^:]+:(\d+) failed: port is already allocated|:(\d+): bind: address already in use)/i) + if (portMatch) { + const port = portMatch[1] || portMatch[2] + const portText = port ? `port ${port}` : 'a required port' + if (port === '11434' || serviceName === SERVICE_NAMES.OLLAMA) { + return `Couldn't start because ${portText} is already in use on this machine. This usually means Ollama is already installed and running directly on the host (outside NOMAD). Stop and disable the host Ollama service (e.g. "sudo systemctl stop ollama" then "sudo systemctl disable ollama"), then try again.` + } + return `Couldn't start because ${portText} is already in use on this machine. Stop whatever is using ${portText} on the host, then try again.` + } + return raw + } + + /** + * Resolve the host filesystem path that backs the admin container's storage + * directory (`/app/storage`). Child services are created via the Docker socket, + * so their bind mounts need the path on the *host*, not inside the admin + * container. Deriving it from the admin's own mount means whatever host path + * the admin storage volume is mapped to in compose, child apps follow it + * automatically (#938). + * + * Falls back to NOMAD_STORAGE_PATH / the production default if the admin + * container or its storage mount can't be inspected. + */ + private async _resolveHostStorageRoot(): Promise { + if (this._hostStorageRoot) return this._hostStorageRoot + const fallback = env.get('NOMAD_STORAGE_PATH', DockerService.DEFAULT_HOST_STORAGE_ROOT) + try { + const adminStorageDest = DockerService.ADMIN_STORAGE_DEST + const containers = await this.docker.listContainers({ all: true }) + // Prefer the well-known admin container name; fall back to matching this + // process's own container by hostname (Docker defaults it to the short id). + let adminInfo = containers.find((c) => + c.Names.includes(`/${DockerService.ADMIN_CONTAINER_NAME}`) + ) + if (!adminInfo) { + const hn = os.hostname() + adminInfo = containers.find((c) => c.Id.startsWith(hn)) + } + if (!adminInfo) return (this._hostStorageRoot = fallback) + + const inspected = await this.docker.getContainer(adminInfo.Id).inspect() + const mount = (inspected.Mounts ?? []).find( + (m: any) => m.Type === 'bind' && m.Destination === adminStorageDest + ) + if (mount?.Source) { + logger.info(`[DockerService] Resolved host storage root from admin mount: ${mount.Source}`) + return (this._hostStorageRoot = mount.Source) + } + return (this._hostStorageRoot = fallback) + } catch (err: any) { + logger.warn( + `[DockerService] Could not resolve host storage root, using fallback ${fallback}: ${err.message}` + ) + // Deliberately NOT cached: a transient Docker error (e.g. socket not ready at + // early boot) shouldn't lock this process into the fallback for its lifetime — + // caching here could permanently re-hide #938 after Docker recovers. Retry next call. + return fallback + } + } + + /** + * Rewrite the host side of a service's storage bind mounts so they point at the + * resolved host storage root. If the admin storage actually lives elsewhere on the + * host, swap a known storage-root prefix so the child container mounts the same + * physical location (#938). + * + * A bind's prefix may be the current NOMAD_STORAGE_PATH *or* the hardcoded default: + * curated services re-bake their config from the env every boot, but user-modified + * curated services and custom apps freeze their binds at edit time and can still + * carry the default prefix even after NOMAD_STORAGE_PATH is changed. Matching both + * (rather than only the current env, and short-circuiting when env == root) means + * the documented "set NOMAD_STORAGE_PATH and relocate the volume" path also fixes + * those frozen-prefix apps instead of leaving them mounting an empty directory. + * Idempotent: binds already under `root` match no other prefix and are left alone. + */ + private async _applyHostStorageRoot(containerConfig: any): Promise { + const binds: string[] | undefined = containerConfig?.HostConfig?.Binds + if (!binds?.length) return + const root = await this._resolveHostStorageRoot() + // Known host-side prefixes a seeded/frozen bind might carry. Exclude `root` itself + // so binds already pointing at the resolved location are never rewritten. + const seededRoots = [ + env.get('NOMAD_STORAGE_PATH', DockerService.DEFAULT_HOST_STORAGE_ROOT), + DockerService.DEFAULT_HOST_STORAGE_ROOT, + ].filter((r) => r !== root) + if (!seededRoots.length) return + containerConfig.HostConfig.Binds = binds.map((b) => { + // bind format: ":[:opts]" — hostSrc is a Linux abs path. + const firstColon = b.indexOf(':') + if (firstColon < 0) return b + const hostSrc = b.slice(0, firstColon) + const rest = b.slice(firstColon) // includes leading ':' + const seededRoot = seededRoots.find( + (r) => hostSrc === r || hostSrc.startsWith(r + '/') + ) + if (seededRoot) { + return `${root}${hostSrc.slice(seededRoot.length)}${rest}` + } + return b + }) + } + /** * Handles the long-running process of creating a Docker container for a service. * NOTE: This method should not be called directly. Instead, use `createContainerPreflight` to check prerequisites first * This method will also transmit server-sent events to the client to notify of progress. * @param serviceName * @returns - */ + */ async _createContainer( service: Service & { dependencies?: Service[] }, containerConfig: any @@ -434,6 +605,10 @@ export class DockerService { try { this._broadcast(service.service_name, 'initializing', '') + // Point storage binds at wherever the admin's storage volume actually lives + // on the host (covers dependency installs too — they recurse through here). + await this._applyHostStorageRoot(containerConfig) + let dependencies = [] if (service.depends_on) { const dependency = await Service.query().where('service_name', service.depends_on).first() @@ -479,13 +654,12 @@ export class DockerService { ) } else { // Start pulling the Docker image and wait for it to complete - const pullStream = await this.docker.pull(service.container_image) this._broadcast( service.service_name, 'pulling', `Pulling Docker image ${service.container_image}...` ) - await new Promise((res) => this.docker.modem.followProgress(pullStream, res)) + await this.pullImage(service.container_image) } if (service.service_name === SERVICE_NAMES.KIWIX) { @@ -497,9 +671,46 @@ export class DockerService { ) } + if (service.service_name === SERVICE_NAMES.CALIBREWEB) { + await this._runPreinstallActions__CalibreWeb() + this._broadcast( + service.service_name, + 'preinstall-complete', + `Pre-install actions for Calibre-Web completed successfully.` + ) + } + + if (service.service_name === SERVICE_NAMES.VAULTWARDEN) { + await this._runPreinstallActions__Vaultwarden() + this._broadcast( + service.service_name, + 'preinstall-complete', + `Pre-install actions for Vaultwarden completed successfully.` + ) + } + + if (service.service_name === SERVICE_NAMES.JELLYFIN) { + await this._runPreinstallActions__Jellyfin() + this._broadcast( + service.service_name, + 'preinstall-complete', + `Pre-install actions for Jellyfin completed successfully.` + ) + } + + if (service.service_name === SERVICE_NAMES.MESHCORE_WEB) { + await this._runPreinstallActions__MeshCoreWeb() + this._broadcast( + service.service_name, + 'preinstall-complete', + `Pre-install actions for MeshCore Web completed successfully.` + ) + } + // GPU-aware configuration for Ollama let finalImage = service.container_image let gpuHostConfig = containerConfig?.HostConfig || {} + let amdGpuConfigured = false if (service.service_name === SERVICE_NAMES.OLLAMA) { const gpuResult = await this._detectGPUType() @@ -523,16 +734,50 @@ export class DockerService { ], } } else if (gpuResult.type === 'amd') { - this._broadcast( - service.service_name, - 'gpu-config', - `AMD GPU detected. ROCm GPU acceleration is not yet supported in this version — proceeding with CPU-only configuration. GPU support for AMD will be available in a future update.` - ) - logger.warn('[DockerService] AMD GPU detected but ROCm support is not yet enabled. Using CPU-only configuration.') - // TODO: Re-enable AMD GPU support once ROCm image and device discovery are validated. - // When re-enabling: - // 1. Switch image to 'ollama/ollama:rocm' - // 2. Restore _discoverAMDDevices() to map /dev/kfd and /dev/dri/* into the container + // AMD acceleration is opt-out via the 'ai.amdGpuAcceleration' KV key (default-on). + // Per memory feedback: KV values can be string or boolean — coerce explicitly. + const amdEnabledRaw = await KVStore.getValue('ai.amdGpuAcceleration') + const amdAccelerationEnabled = String(amdEnabledRaw) !== 'false' + + if (amdAccelerationEnabled) { + this._broadcast( + service.service_name, + 'gpu-config', + `AMD GPU detected. Using ROCm image with /dev/kfd and /dev/dri passthrough...` + ) + + finalImage = 'ollama/ollama:rocm' + + // The pull-if-missing earlier in this function used service.container_image + // (the DB-pinned tag, e.g. ollama/ollama:0.18.2). The AMD branch overrides + // to a different tag — so we need to pull :rocm separately if it's not local. + const rocmImageExists = await this._checkImageExists(finalImage) + if (!rocmImageExists) { + this._broadcast( + service.service_name, + 'pulling', + `Pulling Docker image ${finalImage}...` + ) + await this.pullImage(finalImage) + } + + const amdDevices = await this._discoverAMDDevices() + gpuHostConfig = { + ...gpuHostConfig, + Devices: amdDevices, + } + amdGpuConfigured = true + logger.info( + `[DockerService] Configured ROCm image and ${amdDevices.length} AMD device entries for Ollama` + ) + } else { + this._broadcast( + service.service_name, + 'gpu-config', + `AMD GPU detected but acceleration is disabled via ai.amdGpuAcceleration. Using CPU-only configuration.` + ) + logger.info('[DockerService] AMD GPU acceleration disabled by KV opt-out; using CPU-only configuration.') + } } else if (gpuResult.toolkitMissing) { this._broadcast( service.service_name, @@ -555,6 +800,14 @@ export class DockerService { if (flashAttentionEnabled !== false) { ollamaEnv.push('OLLAMA_FLASH_ATTENTION=1') } + if (amdGpuConfigured) { + // gfx-aware HSA override — only set for cards that actually need it. See + // _resolveAmdHsaOverride() for the resolution order and gfx → version mapping. + const hsaOverride = await this._resolveAmdHsaOverride() + if (hsaOverride) { + ollamaEnv.push(`HSA_OVERRIDE_GFX_VERSION=${hsaOverride}`) + } + } } this._broadcast( @@ -628,14 +881,15 @@ export class DockerService { `Service ${service.service_name} installation completed successfully.` ) } catch (error: any) { + const friendly = this._humanizeDockerError(error, service.service_name) this._broadcast( service.service_name, 'error', - `Error installing service ${service.service_name}: ${error.message}` + `Error installing service ${service.service_name}: ${friendly}` ) // Mark install as failed and cleanup await this._cleanupFailedInstallation(service.service_name) - throw new Error(`Failed to install service ${service.service_name}: ${error.message}`) + throw new Error(`Failed to install service ${service.service_name}: ${friendly}`) } } @@ -664,10 +918,10 @@ export class DockerService { return { success: true, message: `Service ${serviceName} container removed successfully` } } catch (error: any) { - logger.error(`Error removing service container: ${error.message}`) + logger.error({ err: error }, `[DockerService] Error removing service container ${serviceName}`) return { success: false, - message: `Failed to remove service ${serviceName} container: ${error.message}`, + message: `Failed to remove service ${serviceName} container. Check server logs for details.`, } } } @@ -726,12 +980,249 @@ export class DockerService { } } + /** + * Calibre-Web cannot create a library from scratch — without an existing Calibre database it + * dead-ends at the "Database Configuration" page. Seed an empty library (bundled in the admin + * image) into storage/books so the user just points Calibre-Web at /books and starts adding + * books. Only seeds when no metadata.db already exists, so an existing library is never clobbered. + * Ownership is handed to the container user (PUID/PGID 1000 in the seeder) so Calibre-Web can + * write to the library and create book folders on upload. + */ + private async _runPreinstallActions__CalibreWeb(): Promise { + // Keep in sync with the PUID/PGID set on the Calibre-Web service in the seeder. + const CALIBRE_WEB_UID = 1000 + const CALIBRE_WEB_GID = 1000 + + const booksDir = join(process.cwd(), BOOKS_STORAGE_PATH) + const metadataPath = join(booksDir, 'metadata.db') + const assetPath = join(process.cwd(), CALIBRE_EMPTY_LIBRARY_ASSET_PATH) + + this._broadcast( + SERVICE_NAMES.CALIBREWEB, + 'preinstall', + `Running pre-install actions for Calibre-Web...` + ) + + try { + await mkdir(booksDir, { recursive: true }) + + // Don't clobber an existing library — only seed when there's no metadata.db yet. + const alreadyHasLibrary = await access(metadataPath) + .then(() => true) + .catch(() => false) + + if (alreadyHasLibrary) { + this._broadcast( + SERVICE_NAMES.CALIBREWEB, + 'preinstall', + `Existing Calibre library found in books folder — leaving it as-is.` + ) + } else { + await copyFile(assetPath, metadataPath) + this._broadcast( + SERVICE_NAMES.CALIBREWEB, + 'preinstall', + `Seeded an empty Calibre library into the books folder.` + ) + } + + // Hand the books folder + library to the Calibre-Web container user so it can read/write + // the library and create book folders on upload (Docker creates bind dirs as root otherwise). + await chown(booksDir, CALIBRE_WEB_UID, CALIBRE_WEB_GID) + await chown(metadataPath, CALIBRE_WEB_UID, CALIBRE_WEB_GID) + } catch (error: any) { + this._broadcast( + SERVICE_NAMES.CALIBREWEB, + 'preinstall-error', + `Failed to prepare the Calibre library: ${error.message}` + ) + throw new Error(`Pre-install action failed: ${error.message}`) + } + } + + /** + * Ensure a self-signed TLS cert (cert.pem + key.pem) exists in `certDir`, generating one if not. + * Used by apps that need a secure (HTTPS) context but run on a LAN appliance with no public DNS to + * get a trusted cert for. Idempotent: an existing pair is left untouched, so the cert is stable + * across reinstalls (no fresh browser warning each time) and a cert an admin swapped in by hand is + * never clobbered. The private key is locked to 0600; the cert stays world-readable. + */ + private async _ensureSelfSignedCert( + certDir: string, + commonName: string + ): Promise<{ certPath: string; keyPath: string }> { + const certPath = join(certDir, 'cert.pem') + const keyPath = join(certDir, 'key.pem') + + await mkdir(certDir, { recursive: true }) + + const alreadyHasCert = await Promise.all([ + access(certPath) + .then(() => true) + .catch(() => false), + access(keyPath) + .then(() => true) + .catch(() => false), + ]).then(([c, k]) => c && k) + + if (alreadyHasCert) return { certPath, keyPath } + + // 10-year self-signed cert. CN/SAN are cosmetic for a self-signed cert (the browser warns + // regardless), but a SAN keeps it structurally valid for clients that require one. + const execAsync = promisify(exec) + await execAsync( + `openssl req -x509 -newkey rsa:2048 -nodes ` + + `-keyout "${keyPath}" -out "${certPath}" -days 3650 ` + + `-subj "/CN=${commonName}" ` + + `-addext "subjectAltName=DNS:nomad,DNS:localhost"` + ) + + await chmod(keyPath, 0o600) + await chmod(certPath, 0o644) + + return { certPath, keyPath } + } + + /** + * Vaultwarden's web vault refuses to run without a secure context — over plain HTTP it shows + * "You need to enable HTTPS!" and you can't register or unlock. We give it a self-signed TLS + * cert in its /data volume so it serves HTTPS out of the box (paired with the ROCKET_TLS env and + * the `https:8480` ui_location set in the seeder). Users click through a one-time browser warning; + * after that the vault is fully functional offline. + */ + private async _runPreinstallActions__Vaultwarden(): Promise { + const dataDir = join(process.cwd(), VAULTWARDEN_STORAGE_PATH) + + this._broadcast( + SERVICE_NAMES.VAULTWARDEN, + 'preinstall', + `Running pre-install actions for Vaultwarden...` + ) + + try { + await this._ensureSelfSignedCert(dataDir, 'Project NOMAD Vaultwarden') + this._broadcast( + SERVICE_NAMES.VAULTWARDEN, + 'preinstall', + `Vaultwarden HTTPS certificate is ready.` + ) + } catch (error: any) { + this._broadcast( + SERVICE_NAMES.VAULTWARDEN, + 'preinstall-error', + `Failed to prepare the Vaultwarden certificate: ${error.message}` + ) + throw new Error(`Pre-install action failed: ${error.message}`) + } + } + + /** + * The MeshCore web client (aXistem's prebuilt image) is stock nginx serving a static Flutter build + * over plain HTTP. The client reaches a radio over Web Bluetooth / Web Serial, which browsers only + * permit from a secure (HTTPS) context — so over plain HTTP the app loads but can't connect to a + * thing. We generate a self-signed cert and a small SSL nginx config here; the seeder bind-mounts + * both into the container (the config over the image's default.conf) so it serves the same static + * files over HTTPS instead. Same one-time-browser-warning approach as Vaultwarden. + */ + private async _runPreinstallActions__MeshCoreWeb(): Promise { + const appDir = join(process.cwd(), MESHCORE_WEB_STORAGE_PATH) + const certDir = join(appDir, 'certs') + const nginxConfPath = join(appDir, 'nginx-ssl.conf') + + this._broadcast( + SERVICE_NAMES.MESHCORE_WEB, + 'preinstall', + `Running pre-install actions for MeshCore Web...` + ) + + try { + await this._ensureSelfSignedCert(certDir, 'Project NOMAD MeshCore Web') + + // SSL server block bind-mounted over the image's default.conf. Serves the Flutter build that + // already lives at /usr/share/nginx/html in the image, over HTTPS only, with the SPA fallback + // that single-page apps need. Cert paths match the /certs bind mount set in the seeder. + const nginxConf = + [ + 'server {', + ' listen 443 ssl;', + ' server_name _;', + ' ssl_certificate /certs/cert.pem;', + ' ssl_certificate_key /certs/key.pem;', + ' root /usr/share/nginx/html;', + ' index index.html;', + ' location / {', + ' try_files $uri $uri/ /index.html;', + ' }', + '}', + ].join('\n') + '\n' + await writeFile(nginxConfPath, nginxConf) + await chmod(nginxConfPath, 0o644) + + this._broadcast( + SERVICE_NAMES.MESHCORE_WEB, + 'preinstall', + `MeshCore Web HTTPS certificate and config are ready.` + ) + } catch (error: any) { + this._broadcast( + SERVICE_NAMES.MESHCORE_WEB, + 'preinstall-error', + `Failed to prepare MeshCore Web: ${error.message}` + ) + throw new Error(`Pre-install action failed: ${error.message}`) + } + } + + /** + * Jellyfin works best when each library points at its own subfolder. Pointing one library at the + * whole media root and another at a subfolder inside it makes Jellyfin report a "duplicate path" + * and silently drop the nested library's content. To steer users toward the one-folder-per-type + * layout (and match the documentation), we pre-create the suggested subfolders under the shared + * media root so they're ready to pick in the setup wizard. Idempotent: only missing folders are + * created (mkdir is a no-op on existing ones) and nothing the user added is ever touched. + */ + private async _runPreinstallActions__Jellyfin(): Promise { + const mediaDir = join(process.cwd(), MEDIA_STORAGE_PATH) + + this._broadcast( + SERVICE_NAMES.JELLYFIN, + 'preinstall', + `Running pre-install actions for Jellyfin...` + ) + + try { + await mkdir(mediaDir, { recursive: true }) + for (const name of JELLYFIN_MEDIA_SUBFOLDERS) { + await mkdir(join(mediaDir, name), { recursive: true }) + } + this._broadcast( + SERVICE_NAMES.JELLYFIN, + 'preinstall', + `Prepared media folders: ${JELLYFIN_MEDIA_SUBFOLDERS.join(', ')}.` + ) + } catch (error: any) { + this._broadcast( + SERVICE_NAMES.JELLYFIN, + 'preinstall-error', + `Failed to prepare the Jellyfin media folders: ${error.message}` + ) + throw new Error(`Pre-install action failed: ${error.message}`) + } + } + private async _cleanupFailedInstallation(serviceName: string): Promise { try { const service = await Service.query().where('service_name', serviceName).first() if (service) { - service.installation_status = 'error' - await service.save() + if (service.is_custom) { + // Custom apps have no seeder definition to fall back to — leaving the row would + // surface a phantom, un-installable card. Remove the record entirely so a failed + // install cleanly disappears. (The 'error' broadcast has already fired upstream.) + await service.delete() + } else { + service.installation_status = 'error' + await service.save() + } } this.activeInstallations.delete(serviceName) @@ -819,6 +1310,7 @@ export class DockerService { await service.save() const containerConfig = this._parseContainerConfig(service.container_config) + await this._applyHostStorageRoot(containerConfig) // Step 4: Recreate container directly (skipping _createContainer to avoid re-downloading // the bootstrap ZIM — ZIM files already exist on disk) @@ -857,7 +1349,10 @@ export class DockerService { /** * Detect GPU type and toolkit availability. * Primary: Check Docker runtimes via docker.info() (works from inside containers). - * Fallback: lspci for host-based installs and AMD detection. + * Secondary: Read /app/storage/.nomad-gpu-type written by install_nomad.sh — needed + * for AMD detection because lspci isn't available inside the admin container and + * AMD has no Docker runtime registration to query. + * Fallback: lspci for host-based installs. */ private async _detectGPUType(): Promise<{ type: 'nvidia' | 'amd' | 'none'; toolkitMissing?: boolean }> { try { @@ -874,6 +1369,24 @@ export class DockerService { logger.warn(`[DockerService] Could not query Docker info for GPU runtimes: ${error.message}`) } + // Secondary: install_nomad.sh writes the host-detected GPU type to a marker file in + // the storage volume so the admin container (which lacks lspci) can read it. + try { + const marker = (await readFile('/app/storage/.nomad-gpu-type', 'utf8')).trim() + if (marker === 'nvidia') { + // Hardware present but Docker doesn't have nvidia runtime → toolkit missing + logger.warn('[DockerService] NVIDIA GPU recorded in marker file but NVIDIA Container Toolkit is not installed') + return { type: 'none', toolkitMissing: true } + } + if (marker === 'amd') { + logger.info('[DockerService] AMD GPU detected via install-time marker file') + await this._persistGPUType('amd') + return { type: 'amd' } + } + } catch { + // No marker file — fall through to lspci attempt for host-based installs + } + // Fallback: lspci for host-based installs (not available inside Docker) const execAsync = promisify(exec) @@ -937,60 +1450,84 @@ export class DockerService { } /** - * Discover AMD GPU DRI devices dynamically. - * Returns an array of device configurations for Docker. + * Resolve the HSA_OVERRIDE_GFX_VERSION value for the host's AMD GPU. + * + * gfx1030 (RX 6800/6700/etc.), gfx1100/1101/1102 (RX 7900/7800/7600) are on AMD's + * official ROCm allowlist — forcing an override on these breaks GPU discovery. + * gfx1035 / gfx1036 (RDNA 2 iGPUs like 680M) need 10.3.0 to coerce to gfx1030. + * gfx1103 / gfx1150 / gfx1151 (RDNA 3/3.5 iGPUs like 780M / 890M / Strix Halo) need 11.0.0. + * + * Resolution order: + * 1. KV `ai.amdHsaOverride` — manual user override; accepts 'none' (disable) or a semver-style value. + * 2. Marker file `/app/storage/.nomad-amd-gfx` written by install_nomad.sh. + * 3. Default: '11.0.0' — preserves prior behavior so existing iGPU users don't regress on + * upgrade. Discrete-card users on existing installs can opt out via the KV. + * + * Returns null when no override should be applied. */ - // private async _discoverAMDDevices(): Promise< - // Array<{ PathOnHost: string; PathInContainer: string; CgroupPermissions: string }> - // > { - // try { - // const devices: Array<{ - // PathOnHost: string - // PathInContainer: string - // CgroupPermissions: string - // }> = [] + private async _resolveAmdHsaOverride(): Promise { + const manualRaw = await KVStore.getValue('ai.amdHsaOverride') + if (manualRaw !== null && manualRaw !== undefined && String(manualRaw).trim() !== '') { + const manual = String(manualRaw).trim().toLowerCase() + if (manual === 'none' || manual === 'off' || manual === 'false') { + logger.info('[DockerService] HSA override disabled via ai.amdHsaOverride') + return null + } + if (/^\d+\.\d+\.\d+$/.test(manual)) { + logger.info(`[DockerService] HSA override forced to ${manual} via ai.amdHsaOverride`) + return manual + } + logger.warn(`[DockerService] Ignoring invalid ai.amdHsaOverride value: ${manualRaw}`) + } - // // Always add /dev/kfd (Kernel Fusion Driver) - // devices.push({ - // PathOnHost: '/dev/kfd', - // PathInContainer: '/dev/kfd', - // CgroupPermissions: 'rwm', - // }) + try { + const gfx = (await readFile('/app/storage/.nomad-amd-gfx', 'utf8')).trim() + const mapped = this._mapGfxToHsaOverride(gfx) + logger.info(`[DockerService] AMD gfx marker '${gfx}' → HSA override ${mapped ?? 'none'}`) + return mapped + } catch { + // Marker absent — most likely an existing install upgraded without re-running + // install_nomad.sh. Fall through to the default. + } - // // Discover DRI devices in /dev/dri/ - // try { - // const driDevices = await readdir('/dev/dri') - // for (const device of driDevices) { - // const devicePath = `/dev/dri/${device}` - // devices.push({ - // PathOnHost: devicePath, - // PathInContainer: devicePath, - // CgroupPermissions: 'rwm', - // }) - // } - // logger.info( - // `[DockerService] Discovered ${driDevices.length} DRI devices: ${driDevices.join(', ')}` - // ) - // } catch (error) { - // logger.warn(`[DockerService] Could not read /dev/dri directory: ${error.message}`) - // // Fallback to common device names if directory read fails - // const fallbackDevices = ['card0', 'renderD128'] - // for (const device of fallbackDevices) { - // devices.push({ - // PathOnHost: `/dev/dri/${device}`, - // PathInContainer: `/dev/dri/${device}`, - // CgroupPermissions: 'rwm', - // }) - // } - // logger.info(`[DockerService] Using fallback DRI devices: ${fallbackDevices.join(', ')}`) - // } + logger.info('[DockerService] No AMD gfx marker; defaulting HSA override to 11.0.0 for backward compatibility') + return '11.0.0' + } - // return devices - // } catch (error) { - // logger.error(`[DockerService] Error discovering AMD devices: ${error.message}`) - // return [] - // } - // } + private _mapGfxToHsaOverride(gfx: string): string | null { + // Officially supported by ROCm — no override needed + if (gfx === 'gfx1030' || gfx === 'gfx1100' || gfx === 'gfx1101' || gfx === 'gfx1102') { + return null + } + // RDNA 2 variants + iGPUs (gfx1031..gfx1036, e.g. Rembrandt 680M) + if (/^gfx103[1-6]$/.test(gfx)) { + return '10.3.0' + } + // RDNA 3 / 3.5 mobile parts (Phoenix 780M = gfx1103, Strix 890M = gfx1150, Strix Halo = gfx1151) + if (gfx === 'gfx1103' || gfx === 'gfx1150' || gfx === 'gfx1151') { + return '11.0.0' + } + return '11.0.0' + } + + /** + * Build the Docker Devices array for AMD GPU passthrough. + * + * Returns /dev/kfd (Kernel Fusion Driver, required by ROCm) and /dev/dri (the DRM + * device tree). Passing /dev/dri as a single directory entry mirrors Docker CLI + * --device behavior — the daemon expands it to all child devices (card*, renderD*) + * regardless of how the host enumerates them. This avoids the brittle hardcoded + * fallback (card0/renderD128) the prior implementation used, which was wrong on + * systems where the AMD GPU enumerates as card1+ (e.g. UM890 Pro 780M iGPU). + */ + private async _discoverAMDDevices(): Promise< + Array<{ PathOnHost: string; PathInContainer: string; CgroupPermissions: string }> + > { + return [ + { PathOnHost: '/dev/kfd', PathInContainer: '/dev/kfd', CgroupPermissions: 'rwm' }, + { PathOnHost: '/dev/dri', PathInContainer: '/dev/dri', CgroupPermissions: 'rwm' }, + ] + } /** * Update a service container to a new image version while preserving volumes and data. @@ -1011,20 +1548,82 @@ export class DockerService { if (this.activeInstallations.has(serviceName)) { return { success: false, message: `Service ${serviceName} already has an operation in progress` } } + // DB-level guard mirrors the install path. Unlike the in-memory Set above, this survives a + // page reload and is visible to other clients, so a second Update click (or one from another + // tab) is rejected cleanly instead of racing two updateContainer runs into Docker 304/400 + // errors (stop/rename on a container the first run already moved). + if (service.installation_status === 'installing') { + return { success: false, message: `Service ${serviceName} already has an update in progress` } + } this.activeInstallations.add(serviceName) + // Persist the in-progress flag so the Apps page can durably disable the Update button while + // the (often multi-GB, multi-minute) pull runs. Cleared in the finally below. + service.installation_status = 'installing' + await service.save() - // Compute new image string + // newImage = the semver tag we record in the DB after the update (e.g. ollama/ollama:0.23.2). + // runtimeImage = the tag we actually pull and run. For AMD-on-Ollama these diverge: we run + // the rolling :rocm tag because per-version ROCm tags aren't always published, but the DB + // must keep the semver tag so the Apps page shows the actual version (not literally "rocm") + // and the registry update-check parses a valid tag (instead of looping on the same update). const currentImage = service.container_image const imageBase = currentImage.includes(':') ? currentImage.substring(0, currentImage.lastIndexOf(':')) : currentImage const newImage = `${imageBase}:${targetVersion}` + let runtimeImage = newImage - // Step 1: Pull new image - this._broadcast(serviceName, 'update-pulling', `Pulling image ${newImage}...`) - const pullStream = await this.docker.pull(newImage) - await new Promise((res) => this.docker.modem.followProgress(pullStream, res)) + // GPU detection runs before the pull so AMD updates pull ollama/ollama:rocm rather + // than the standard tag. Detection result is reused below when building the new + // container config (devices, env). Non-Ollama services skip this entirely. + let updatedDeviceRequests: any[] | undefined = undefined + let updatedAmdDevices: any[] | undefined = undefined + let updatedAmdGpuConfigured = false + if (serviceName === SERVICE_NAMES.OLLAMA) { + const gpuResult = await this._detectGPUType() + if (gpuResult.type === 'nvidia') { + this._broadcast( + serviceName, + 'update-gpu-config', + `NVIDIA container runtime detected. Configuring updated container with GPU support...` + ) + updatedDeviceRequests = [ + { Driver: 'nvidia', Count: -1, Capabilities: [['gpu']] }, + ] + } else if (gpuResult.type === 'amd') { + const amdEnabledRaw = await KVStore.getValue('ai.amdGpuAcceleration') + const amdAccelerationEnabled = String(amdEnabledRaw) !== 'false' + if (amdAccelerationEnabled) { + this._broadcast( + serviceName, + 'update-gpu-config', + `AMD GPU detected. Using ROCm image with /dev/kfd and /dev/dri passthrough...` + ) + runtimeImage = 'ollama/ollama:rocm' + updatedAmdDevices = await this._discoverAMDDevices() + updatedAmdGpuConfigured = true + } else { + this._broadcast( + serviceName, + 'update-gpu-config', + `AMD GPU detected but acceleration is disabled via ai.amdGpuAcceleration. Using CPU-only configuration.` + ) + } + } else if (gpuResult.toolkitMissing) { + this._broadcast( + serviceName, + 'update-gpu-config', + `NVIDIA GPU detected but NVIDIA Container Toolkit is not installed. Using CPU-only configuration. Install the toolkit and reinstall AI Assistant for GPU acceleration: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html` + ) + } else { + this._broadcast(serviceName, 'update-gpu-config', `No GPU detected. Using CPU-only configuration.`) + } + } + + // Step 1: Pull new image (runtimeImage diverges from newImage for AMD, see above) + this._broadcast(serviceName, 'update-pulling', `Pulling image ${runtimeImage}...`) + await this.pullImage(runtimeImage) // Step 2: Find and stop existing container this._broadcast(serviceName, 'update-stopping', `Stopping current container...`) @@ -1047,55 +1646,58 @@ export class DockerService { // Step 3: Rename old container as safety net const oldName = `${serviceName}_old` + + // Clear any stale rollback container left behind by a previously failed update. + // Otherwise the rename below collides with the existing `_old` and throws, + // which wedges every subsequent retry on the same error. + const staleOld = (await this.docker.listContainers({ all: true })).find((c) => + c.Names.includes(`/${oldName}`) + ) + if (staleOld) { + try { + await this.docker.getContainer(staleOld.Id).remove({ force: true }) + } catch { + // Best effort — if it can't be removed the rename below will surface the error. + } + } + await oldContainer.rename({ name: oldName }) + // Restore the previous container after a failed update: rename the renamed-aside + // old container back into place and start it, so a failure anywhere between here + // and the health check never leaves the service down. + const rollbackToOld = async () => { + const containers = await this.docker.listContainers({ all: true }) + const oldRef = containers.find((c) => c.Names.includes(`/${oldName}`)) + if (oldRef) { + const rollbackContainer = this.docker.getContainer(oldRef.Id) + await rollbackContainer.rename({ name: serviceName }).catch(() => {}) + await rollbackContainer.start().catch(() => {}) + } + } + // Step 4: Create new container with inspected config + new image this._broadcast(serviceName, 'update-creating', `Creating updated container...`) const hostConfig = inspectData.HostConfig || {} - // Re-run GPU detection for Ollama so updates always reflect the current GPU environment. - // This handles cases where the NVIDIA Container Toolkit was installed after the initial - // Ollama setup, and ensures DeviceRequests are always built fresh rather than relying on - // round-tripping the Docker inspect format back into the create API. - let updatedDeviceRequests: any[] | undefined = undefined - if (serviceName === SERVICE_NAMES.OLLAMA) { - const gpuResult = await this._detectGPUType() - - if (gpuResult.type === 'nvidia') { - this._broadcast( - serviceName, - 'update-gpu-config', - `NVIDIA container runtime detected. Configuring updated container with GPU support...` - ) - updatedDeviceRequests = [ - { - Driver: 'nvidia', - Count: -1, - Capabilities: [['gpu']], - }, - ] - } else if (gpuResult.type === 'amd') { - this._broadcast( - serviceName, - 'update-gpu-config', - `AMD GPU detected. ROCm GPU acceleration is not yet supported — using CPU-only configuration.` - ) - } else if (gpuResult.toolkitMissing) { - this._broadcast( - serviceName, - 'update-gpu-config', - `NVIDIA GPU detected but NVIDIA Container Toolkit is not installed. Using CPU-only configuration. Install the toolkit and reinstall AI Assistant for GPU acceleration: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html` - ) - } else { - this._broadcast(serviceName, 'update-gpu-config', `No GPU detected. Using CPU-only configuration.`) + // GPU detection already ran above (before the pull) so we know the right image, devices, + // and whether HSA_OVERRIDE needs injection. For AMD, replace any prior HSA_OVERRIDE in + // the inspect-captured env so updates from older containers pick up the current value. + const baseEnv = inspectData.Config?.Env || [] + let finalEnv = baseEnv + if (updatedAmdGpuConfigured) { + const hsaOverride = await this._resolveAmdHsaOverride() + finalEnv = baseEnv.filter((e: string) => !e.startsWith('HSA_OVERRIDE_GFX_VERSION=')) + if (hsaOverride) { + finalEnv.push(`HSA_OVERRIDE_GFX_VERSION=${hsaOverride}`) } } const newContainerConfig: any = { - Image: newImage, + Image: runtimeImage, name: serviceName, - Env: inspectData.Config?.Env || undefined, + Env: finalEnv.length > 0 ? finalEnv : undefined, Cmd: inspectData.Config?.Cmd || undefined, ExposedPorts: inspectData.Config?.ExposedPorts || undefined, WorkingDir: inspectData.Config?.WorkingDir || undefined, @@ -1105,7 +1707,7 @@ export class DockerService { PortBindings: hostConfig.PortBindings || undefined, RestartPolicy: hostConfig.RestartPolicy || undefined, DeviceRequests: serviceName === SERVICE_NAMES.OLLAMA ? updatedDeviceRequests : (hostConfig.DeviceRequests || undefined), - Devices: hostConfig.Devices || undefined, + Devices: serviceName === SERVICE_NAMES.OLLAMA && updatedAmdDevices ? updatedAmdDevices : (hostConfig.Devices || undefined), }, NetworkingConfig: inspectData.NetworkSettings?.Networks ? { @@ -1129,16 +1731,35 @@ export class DockerService { } catch (createError: any) { // Rollback: rename old container back this._broadcast(serviceName, 'update-rollback', `Failed to create new container: ${createError.message}. Rolling back...`) - const rollbackContainer = this.docker.getContainer((await this.docker.listContainers({ all: true })).find((c) => c.Names.includes(`/${oldName}`))!.Id) - await rollbackContainer.rename({ name: serviceName }) - await rollbackContainer.start() + await rollbackToOld() this.activeInstallations.delete(serviceName) return { success: false, message: `Failed to create updated container: ${createError.message}` } } - // Step 5: Start new container + // Step 5: Start new container. If the start itself throws (bad device/GPU config, + // a host port already bound, image incompatibility), roll back to the previous + // container instead of leaving the service stopped with no replacement running. this._broadcast(serviceName, 'update-starting', `Starting updated container...`) - await newContainer.start() + try { + await newContainer.start() + } catch (startError: any) { + this._broadcast( + serviceName, + 'update-rollback', + `Updated container failed to start: ${startError.message}. Rolling back to previous version...` + ) + try { + await newContainer.remove({ force: true }) + } catch { + // Best effort — leave the half-created container for manual cleanup if needed. + } + await rollbackToOld() + this.activeInstallations.delete(serviceName) + return { + success: false, + message: `Update failed: new container did not start (${startError.message}). Rolled back to previous version.`, + } + } // Step 6: Health check — verify container stays running for 5 seconds await new Promise((resolve) => setTimeout(resolve, 5000)) @@ -1184,14 +1805,7 @@ export class DockerService { // Best effort cleanup } - // Restore old container - const oldContainers = await this.docker.listContainers({ all: true }) - const oldRef = oldContainers.find((c) => c.Names.includes(`/${oldName}`)) - if (oldRef) { - const rollbackContainer = this.docker.getContainer(oldRef.Id) - await rollbackContainer.rename({ name: serviceName }) - await rollbackContainer.start() - } + await rollbackToOld() this.activeInstallations.delete(serviceName) return { @@ -1204,10 +1818,25 @@ export class DockerService { this._broadcast( serviceName, 'update-rollback', - `Update failed: ${error.message}` + 'Update failed. Check server logs for details.' ) - logger.error(`[DockerService] Update failed for ${serviceName}: ${error.message}`) - return { success: false, message: `Update failed: ${error.message}` } + logger.error({ err: error }, `[DockerService] Update failed for ${serviceName}`) + return { success: false, message: 'Update failed. Check server logs for details.' } + } finally { + // Always clear the in-progress flag we set above, on every exit path (success, rollback, + // not-found, or thrown error). The success path already persisted the new image/version on + // this same in-memory model, so saving again with idle preserves that — it only flips the + // status. The existing activeInstallations.delete() calls on each branch handle the + // in-memory lock; this just keeps the durable DB flag honest. + const svc = await Service.query().where('service_name', serviceName).first() + if (svc && svc.installation_status === 'installing') { + svc.installation_status = 'idle' + try { + await svc.save() + } catch (saveErr: any) { + logger.error({ err: saveErr }, `[DockerService] Failed to reset installation_status for ${serviceName}`) + } + } } } @@ -1240,6 +1869,334 @@ export class DockerService { } } + /** + * Check whether any of the supplied host ports are already bound by a running or stopped + * Docker container. Uses the Docker API exclusively — probing ports via net.createServer() + * would only test the admin container's own network namespace (DooD pattern), not the host. + */ + async checkPortConflicts( + ports: number[] + ): Promise<{ conflicts: { port: number; usedBy: string }[] }> { + if (!ports.length) return { conflicts: [] } + + try { + const containers = await this.docker.listContainers({ all: true }) + const bound = new Map() + + for (const c of containers) { + const name = (c.Names[0] || '').replace('/', '') + for (const p of c.Ports) { + if (p.PublicPort) bound.set(p.PublicPort, name || c.Id.slice(0, 12)) + } + } + + const conflicts = ports + .filter((p) => bound.has(p)) + .map((p) => ({ port: p, usedBy: bound.get(p)! })) + + return { conflicts } + } catch (error: any) { + logger.warn(`[DockerService] checkPortConflicts failed: ${error.message}`) + return { conflicts: [] } + } + } + + /** + * Remove a custom-app container and, when `removeImage` is set, its backing image too. Called + * before deleting the DB record. Image removal is best-effort: a shared/in-use image is left alone. + */ + async removeCustomAppContainer( + serviceName: string, + removeImage = false + ): Promise<{ success: boolean; message: string }> { + try { + const containers = await this.docker.listContainers({ all: true }) + const container = containers.find((c) => c.Names.includes(`/${serviceName}`)) + + if (!container) return { success: true, message: 'No container found — nothing to remove' } + + const imageRef = container.Image + const c = this.docker.getContainer(container.Id) + if (container.State === 'running') await c.stop() + await c.remove({ force: true }) + + if (removeImage && imageRef) { + try { + await this.docker.getImage(imageRef).remove() + } catch (imgErr: any) { + // Non-fatal: the image may be shared with another container or already gone. + logger.warn(`[DockerService] Could not remove image ${imageRef} for ${serviceName}: ${imgErr.message}`) + } + } + + this.invalidateServicesStatusCache() + return { success: true, message: `Container ${serviceName} removed` } + } catch (error: any) { + logger.error({ err: error }, `[DockerService] removeCustomAppContainer failed for ${serviceName}`) + return { success: false, message: error.message } + } + } + + /** + * Uninstall a curated catalog app: stop and remove its container (and, optionally, its image), + * then mark the record not-installed so the card returns to the available catalog. Host + * bind-mount data is deliberately left on disk — a later reinstall picks it back up. Contrast + * with forceReinstall, which clears volumes and immediately recreates the container. + */ + async uninstallService( + serviceName: string, + removeImage = false + ): Promise<{ success: boolean; message: string }> { + const service = await Service.query().where('service_name', serviceName).first() + if (!service || !service.installed) { + return { success: false, message: `Service ${serviceName} not found or not installed` } + } + + // Container/image removal is shared with custom-app deletion — the lookup is by container + // name, which is the service_name for curated and custom apps alike. + const removal = await this.removeCustomAppContainer(serviceName, removeImage) + if (!removal.success) return removal + + service.installed = false + service.installation_status = 'idle' + await service.save() + this.invalidateServicesStatusCache() + + return { success: true, message: `Service ${serviceName} uninstalled` } + } + + /** Find a container by its managed service name (`/serviceName`), or null. */ + private async _findContainerByName(serviceName: string) { + const containers = await this.docker.listContainers({ all: true }) + return containers.find((c) => c.Names.includes(`/${serviceName}`)) ?? null + } + + /** + * Decode the multiplexed stream Docker returns for non-TTY container logs. Each frame is an + * 8-byte header ([streamType, 0,0,0, big-endian payloadSize]) followed by the payload. + */ + private _demuxDockerLog(buf: Buffer): string { + let out = '' + let offset = 0 + while (offset + 8 <= buf.length) { + const size = buf.readUInt32BE(offset + 4) + offset += 8 + if (offset + size > buf.length) { + out += buf.toString('utf8', offset) + break + } + out += buf.toString('utf8', offset, offset + size) + offset += size + } + return out + } + + /** Return the last `tail` lines of a service container's combined stdout/stderr. */ + async getContainerLogs( + serviceName: string, + tail = 200 + ): Promise<{ success: boolean; logs?: string; message?: string }> { + try { + const info = await this._findContainerByName(serviceName) + if (!info) return { success: false, message: `No container found for ${serviceName}` } + + const container = this.docker.getContainer(info.Id) + const inspect = await container.inspect() + const tty = inspect.Config?.Tty ?? false + + const buf = (await container.logs({ + stdout: true, + stderr: true, + follow: false, + tail, + timestamps: false, + })) as unknown as Buffer + + const logs = tty ? buf.toString('utf8') : this._demuxDockerLog(buf) + return { success: true, logs } + } catch (error: any) { + logger.error({ err: error }, `[DockerService] getContainerLogs failed for ${serviceName}`) + return { success: false, message: error.message } + } + } + + /** + * Return a single resource-usage snapshot (CPU %, memory) for a running service container. + * Uses Docker's non-streaming stats, which include precpu_stats so CPU % is computable. + */ + async getContainerStats(serviceName: string): Promise<{ + success: boolean + running?: boolean + stats?: { cpuPercent: number; memUsageBytes: number; memLimitBytes: number; memPercent: number } + message?: string + }> { + try { + const info = await this._findContainerByName(serviceName) + if (!info) return { success: false, message: `No container found for ${serviceName}` } + if (info.State !== 'running') return { success: true, running: false } + + const container = this.docker.getContainer(info.Id) + const s: any = await container.stats({ stream: false }) + + const cpuDelta = + (s.cpu_stats?.cpu_usage?.total_usage ?? 0) - (s.precpu_stats?.cpu_usage?.total_usage ?? 0) + const systemDelta = + (s.cpu_stats?.system_cpu_usage ?? 0) - (s.precpu_stats?.system_cpu_usage ?? 0) + const numCpus = + s.cpu_stats?.online_cpus ?? s.cpu_stats?.cpu_usage?.percpu_usage?.length ?? 1 + const cpuPercent = + systemDelta > 0 && cpuDelta > 0 ? (cpuDelta / systemDelta) * numCpus * 100 : 0 + + // Subtract page cache from usage to better reflect the container's working set. + const cache = s.memory_stats?.stats?.cache ?? s.memory_stats?.stats?.inactive_file ?? 0 + const memUsageBytes = Math.max(0, (s.memory_stats?.usage ?? 0) - cache) + const memLimitBytes = s.memory_stats?.limit ?? 0 + const memPercent = memLimitBytes > 0 ? (memUsageBytes / memLimitBytes) * 100 : 0 + + return { + success: true, + running: true, + stats: { + cpuPercent: Math.round(cpuPercent * 10) / 10, + memUsageBytes, + memLimitBytes, + memPercent: Math.round(memPercent * 10) / 10, + }, + } + } catch (error: any) { + logger.error({ err: error }, `[DockerService] getContainerStats failed for ${serviceName}`) + return { success: false, message: error.message } + } + } + + /** + * Wait for a freshly started container to be "ready". If the image declares a HEALTHCHECK we poll + * its health until healthy/unhealthy (up to timeoutMs); otherwise we fall back to a 5s settle and + * a plain Running check. Returns whether it's ready plus a reason when not. + */ + private async _awaitContainerReady( + container: any, + timeoutMs = 30000 + ): Promise<{ ready: boolean; reason?: string }> { + let inspect = await container.inspect() + const hasHealthcheck = !!inspect.State?.Health + + if (!hasHealthcheck) { + await new Promise((r) => setTimeout(r, 5000)) + inspect = await container.inspect() + return inspect.State?.Running + ? { ready: true } + : { ready: false, reason: 'container did not stay running' } + } + + const deadline = Date.now() + timeoutMs + while (Date.now() < deadline) { + inspect = await container.inspect() + if (!inspect.State?.Running) return { ready: false, reason: 'container exited' } + const status = inspect.State?.Health?.Status + if (status === 'healthy') return { ready: true } + if (status === 'unhealthy') return { ready: false, reason: 'failed its health check' } + await new Promise((r) => setTimeout(r, 2000)) + } + // Still in "starting" at timeout — accept it if it's at least running rather than roll back a slow boot. + return inspect.State?.Running ? { ready: true } : { ready: false, reason: 'health check timed out' } + } + + /** + * Recreate a custom app's container from its (already-updated) Service record, preserving data. + * Uses the same rename-and-rollback safety net as the update flow: the live container is renamed + * aside, a new one is created from the new config/image, health-gated, and only then is the old one + * removed — otherwise we roll back to it. Bind-mounted data is untouched throughout. Pass + * `forcePull` to always re-pull the image first (used by the "update" action for moving tags). + */ + async recreateCustomAppContainer( + serviceName: string, + opts: { forcePull?: boolean } = {} + ): Promise<{ success: boolean; message: string }> { + const service = await Service.query().where('service_name', serviceName).first() + if (!service) return { success: false, message: `Service ${serviceName} not found` } + + const containerConfig = this._parseContainerConfig(service.container_config) + const oldInfo = await this._findContainerByName(serviceName) + const oldName = `${serviceName}_old` + + // Clear any stale `_old` left behind by a previous recreate that died mid-flight. Without this, + // the rename below would fail (name in use) and the rollback path would then destroy the live + // container and resurrect the stale one in its place. + const staleOld = await this._findContainerByName(oldName) + if (staleOld) { + await this.docker.getContainer(staleOld.Id).remove({ force: true }).catch(() => {}) + } + + try { + // Stop + rename the existing container aside as a rollback safety net. + if (oldInfo) { + const oldContainer = this.docker.getContainer(oldInfo.Id) + if (oldInfo.State === 'running') await oldContainer.stop({ t: 10 }).catch(() => {}) + await oldContainer.rename({ name: oldName }) + } + + // Pull the image if it's missing locally, or always when forcePull (e.g. :latest updates). + if (opts.forcePull || !(await this._checkImageExists(service.container_image))) { + await this.pullImage(service.container_image) + } + + const newContainer = await this.docker.createContainer({ + Image: service.container_image, + name: serviceName, + Labels: { + ...(containerConfig?.Labels ?? {}), + 'com.docker.compose.project': 'project-nomad-managed', + 'io.project-nomad.managed': 'true', + }, + ...(containerConfig?.User && { User: containerConfig.User }), + HostConfig: containerConfig?.HostConfig ?? {}, + ...(containerConfig?.ExposedPorts && { ExposedPorts: containerConfig.ExposedPorts }), + ...(containerConfig?.Env && { Env: containerConfig.Env }), + ...(service.container_command ? { Cmd: service.container_command.split(' ') } : {}), + ...(process.env.NODE_ENV === 'production' && { + NetworkingConfig: { EndpointsConfig: { [DockerService.NOMAD_NETWORK]: {} } }, + }), + }) + await newContainer.start() + + // Health gate before discarding the old container. + const readiness = await this._awaitContainerReady(newContainer) + if (!readiness.ready) throw new Error(`recreated container ${readiness.reason}`) + + if (oldInfo) { + const oldRef = await this._findContainerByName(oldName) + if (oldRef) await this.docker.getContainer(oldRef.Id).remove({ force: true }) + } + service.installed = true + service.installation_status = 'idle' + await service.save() + this.invalidateServicesStatusCache() + return { success: true, message: `Service ${serviceName} reconfigured successfully` } + } catch (error: any) { + logger.error({ err: error }, `[DockerService] recreateCustomAppContainer failed for ${serviceName}`) + // Roll back: discard the failed new container and restore the renamed original. + try { + const failedNew = await this._findContainerByName(serviceName) + if (failedNew) { + const c = this.docker.getContainer(failedNew.Id) + await c.stop({ t: 5 }).catch(() => {}) + await c.remove({ force: true }).catch(() => {}) + } + const renamed = await this._findContainerByName(oldName) + if (renamed) { + const c = this.docker.getContainer(renamed.Id) + await c.rename({ name: serviceName }) + await c.start().catch(() => {}) + } + } catch (rollbackError: any) { + logger.error({ err: rollbackError }, `[DockerService] rollback failed for ${serviceName}`) + } + this.invalidateServicesStatusCache() + return { success: false, message: `Reconfigure failed and was rolled back: ${error.message}` } + } + } + /** * Check if a Docker image exists locally. * @param imageName - The name and tag of the image (e.g., "nginx:latest") diff --git a/admin/app/services/docs_service.ts b/admin/app/services/docs_service.ts index ef861a3..4ada614 100644 --- a/admin/app/services/docs_service.ts +++ b/admin/app/services/docs_service.ts @@ -12,9 +12,12 @@ export class DocsService { 'home': 1, 'getting-started': 2, 'use-cases': 3, - 'faq': 4, - 'about': 5, - 'release-notes': 6, + 'supply-depot-apps': 4, + 'community-add-ons': 5, + 'updates': 6, + 'faq': 7, + 'about': 8, + 'release-notes': 9, } async getDocs() { @@ -91,6 +94,7 @@ export class DocsService { private static readonly TITLE_OVERRIDES: Record = { 'faq': 'FAQ', + 'community-add-ons': 'Community Add-Ons', } private prettify(filename: string) { diff --git a/admin/app/services/download_service.ts b/admin/app/services/download_service.ts index 8d0f489..de0e1cb 100644 --- a/admin/app/services/download_service.ts +++ b/admin/app/services/download_service.ts @@ -1,10 +1,18 @@ import { inject } from '@adonisjs/core' import { QueueService } from './queue_service.js' import { RunDownloadJob } from '#jobs/run_download_job' +import { RunExtractPmtilesJob } from '#jobs/run_extract_pmtiles_job' +import type { RunExtractPmtilesJobParams } from '#jobs/run_extract_pmtiles_job' import { DownloadModelJob } from '#jobs/download_model_job' import { DownloadJobWithProgress, DownloadProgressData, RunDownloadJobParams } from '../../types/downloads.js' +import type { Job, Queue } from 'bullmq' import { normalize } from 'path' import { deleteFileIfExists } from '../utils/fs.js' +import transmit from '@adonisjs/transmit/services/main' +import { BROADCAST_CHANNELS } from '../../constants/broadcast.js' + +type FileJobState = 'waiting' | 'active' | 'delayed' | 'failed' +type TaggedJob = { job: Job; state: FileJobState } @inject() export class DownloadService { @@ -24,27 +32,32 @@ export class DownloadService { return { percent: parseInt(String(progress), 10) || 0 } } - async listDownloadJobs(filetype?: string): Promise { - // Get regular file download jobs (zim, map, etc.) — query each state separately so we can - // tag each job with its actual BullMQ state rather than guessing from progress data. - const queue = this.queueService.getQueue(RunDownloadJob.queue) - type FileJobState = 'waiting' | 'active' | 'delayed' | 'failed' - - const [waitingJobs, activeJobs, delayedJobs, failedJobs] = await Promise.all([ + /** Fetch all non-completed jobs from a queue, tagged with their current BullMQ state */ + private async fetchJobsWithStates(queueName: string): Promise { + const queue = this.queueService.getQueue(queueName) + const [waiting, active, delayed, failed] = await Promise.all([ queue.getJobs(['waiting']), queue.getJobs(['active']), queue.getJobs(['delayed']), queue.getJobs(['failed']), ]) - - const taggedFileJobs: Array<{ job: (typeof waitingJobs)[0]; state: FileJobState }> = [ - ...waitingJobs.map((j) => ({ job: j, state: 'waiting' as const })), - ...activeJobs.map((j) => ({ job: j, state: 'active' as const })), - ...delayedJobs.map((j) => ({ job: j, state: 'delayed' as const })), - ...failedJobs.map((j) => ({ job: j, state: 'failed' as const })), + return [ + ...waiting.map((j) => ({ job: j, state: 'waiting' as const })), + ...active.map((j) => ({ job: j, state: 'active' as const })), + ...delayed.map((j) => ({ job: j, state: 'delayed' as const })), + ...failed.map((j) => ({ job: j, state: 'failed' as const })), ] + } - const fileDownloads = taggedFileJobs.map(({ job, state }) => { + async listDownloadJobs(filetype?: string): Promise { + const modelQueue = this.queueService.getQueue(DownloadModelJob.queue) + const [fileTagged, extractTagged, modelJobs] = await Promise.all([ + this.fetchJobsWithStates(RunDownloadJob.queue), + this.fetchJobsWithStates(RunExtractPmtilesJob.queue), + modelQueue.getJobs(['waiting', 'active', 'delayed', 'failed']), + ]) + + const fileDownloads = fileTagged.map(({ job, state }) => { const parsed = this.parseProgress(job.progress) return { jobId: job.id!.toString(), @@ -61,26 +74,36 @@ export class DownloadService { } }) - // Get Ollama model download jobs - const modelQueue = this.queueService.getQueue(DownloadModelJob.queue) - const modelJobs = await modelQueue.getJobs(['waiting', 'active', 'delayed', 'failed']) + const extractDownloads = extractTagged.map(({ job, state }) => { + const parsed = this.parseProgress(job.progress) + return { + jobId: job.id!.toString(), + url: job.data.sourceUrl, + progress: parsed.percent, + filepath: normalize(job.data.outputFilepath), + filetype: job.data.filetype || 'map', + title: job.data.title || undefined, + downloadedBytes: parsed.downloadedBytes, + totalBytes: parsed.totalBytes || job.data.estimatedBytes || undefined, + lastProgressTime: parsed.lastProgressTime, + status: state, + failedReason: job.failedReason || undefined, + } + }) const modelDownloads = modelJobs.map((job) => ({ jobId: job.id!.toString(), - url: job.data.modelName || 'Unknown Model', // Use model name as url + url: job.data.modelName || 'Unknown Model', progress: parseInt(job.progress.toString(), 10), - filepath: job.data.modelName || 'Unknown Model', // Use model name as filepath + filepath: job.data.modelName || 'Unknown Model', filetype: 'model', status: (job.failedReason ? 'failed' : 'active') as 'active' | 'failed', failedReason: job.failedReason || undefined, })) - const allDownloads = [...fileDownloads, ...modelDownloads] - - // Filter by filetype if specified + const allDownloads = [...fileDownloads, ...extractDownloads, ...modelDownloads] const filtered = allDownloads.filter((job) => !filetype || job.filetype === filetype) - // Sort: active downloads first (by progress desc), then failed at the bottom return filtered.sort((a, b) => { if (a.status === 'failed' && b.status !== 'failed') return 1 if (a.status !== 'failed' && b.status === 'failed') return -1 @@ -89,7 +112,11 @@ export class DownloadService { } async removeFailedJob(jobId: string): Promise { - for (const queueName of [RunDownloadJob.queue, DownloadModelJob.queue]) { + for (const queueName of [ + RunDownloadJob.queue, + RunExtractPmtilesJob.queue, + DownloadModelJob.queue, + ]) { const queue = this.queueService.getQueue(queueName) const job = await queue.getJob(jobId) if (job) { @@ -148,11 +175,60 @@ export class DownloadService { const queue = this.queueService.getQueue(RunDownloadJob.queue) const job = await queue.getJob(jobId) - if (!job) { - // Job already completed (removeOnComplete: true) or doesn't exist - return { success: true, message: 'Job not found (may have already completed)' } + if (job) { + return await this._cancelFileDownloadJob(jobId, job, queue) } + const extractQueue = this.queueService.getQueue(RunExtractPmtilesJob.queue) + const extractJob = await extractQueue.getJob(jobId) + + if (extractJob) { + return await this._cancelExtractJob(jobId, extractJob, extractQueue) + } + + const modelQueue = this.queueService.getQueue(DownloadModelJob.queue) + const modelJob = await modelQueue.getJob(jobId) + + if (modelJob) { + return await this._cancelModelDownloadJob(jobId, modelJob, modelQueue) + } + + return { success: true, message: 'Job not found (may have already completed)' } + } + + private async _cancelExtractJob( + jobId: string, + job: Job, + queue: Queue + ): Promise<{ success: boolean; message: string }> { + const outputFilepath = job.data.outputFilepath + + await RunExtractPmtilesJob.signalCancel(jobId) + + // Same-process fallback when worker and API share a process + RunExtractPmtilesJob.childProcesses.get(jobId)?.kill('SIGTERM') + RunExtractPmtilesJob.childProcesses.delete(jobId) + + await this._pollForTerminalState(job, jobId) + await this._removeJobWithLockFallback(job, queue, RunExtractPmtilesJob.queue, jobId) + + if (outputFilepath) { + try { + await deleteFileIfExists(outputFilepath) + } catch { + // File may not exist yet (subprocess may not have opened it) + } + } + + return { success: true, message: 'Extract cancelled and partial file deleted' } + } + + /** Cancel a content download (zim, map, pmtiles, etc.) */ + private async _cancelFileDownloadJob( + jobId: string, + job: any, + queue: any + ): Promise<{ success: boolean; message: string }> { const filepath = job.data.filepath // Signal the worker process to abort the download via Redis @@ -162,45 +238,8 @@ export class DownloadService { RunDownloadJob.abortControllers.get(jobId)?.abort('user-cancel') RunDownloadJob.abortControllers.delete(jobId) - // Poll for terminal state (up to 4s at 250ms intervals) — cooperates with BullMQ's lifecycle - // instead of force-removing an active job and losing the worker's failure/cleanup path. - const POLL_INTERVAL_MS = 250 - const POLL_TIMEOUT_MS = 4000 - const deadline = Date.now() + POLL_TIMEOUT_MS - let reachedTerminal = false - - while (Date.now() < deadline) { - await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS)) - try { - const state = await job.getState() - if (state === 'failed' || state === 'completed' || state === 'unknown') { - reachedTerminal = true - break - } - } catch { - reachedTerminal = true // getState() throws if job is already gone - break - } - } - - if (!reachedTerminal) { - console.warn(`[DownloadService] cancelJob: job ${jobId} did not reach terminal state within timeout, removing anyway`) - } - - // Remove the BullMQ job - try { - await job.remove() - } catch { - // Lock contention fallback: clear lock and retry once - try { - const client = await queue.client - await client.del(`bull:${RunDownloadJob.queue}:${jobId}:lock`) - const updatedJob = await queue.getJob(jobId) - if (updatedJob) await updatedJob.remove() - } catch { - // Best effort - job will be cleaned up on next dismiss attempt - } - } + await this._pollForTerminalState(job, jobId) + await this._removeJobWithLockFallback(job, queue, RunDownloadJob.queue, jobId) // Delete the partial file from disk if (filepath) { @@ -229,4 +268,87 @@ export class DownloadService { return { success: true, message: 'Download cancelled and partial file deleted' } } + + /** Cancel an Ollama model download — mirrors the file cancel pattern but skips file cleanup */ + private async _cancelModelDownloadJob( + jobId: string, + job: any, + queue: any + ): Promise<{ success: boolean; message: string }> { + const modelName: string = job.data?.modelName ?? 'unknown' + + // Signal the worker process to abort the pull via Redis + await DownloadModelJob.signalCancel(jobId) + + // Also try in-memory abort (works if worker is in same process) + DownloadModelJob.abortControllers.get(jobId)?.abort('user-cancel') + DownloadModelJob.abortControllers.delete(jobId) + + await this._pollForTerminalState(job, jobId) + await this._removeJobWithLockFallback(job, queue, DownloadModelJob.queue, jobId) + + // Broadcast a cancelled event so the frontend hook clears the entry. We use percent: -2 + // (distinct from -1 = error) so the hook can route it to a 2s auto-clear instead of the + // 15s error display. The frontend ALSO removes the entry optimistically from the API + // response, so this is belt-and-suspenders for cases where the SSE arrives first. + transmit.broadcast(BROADCAST_CHANNELS.OLLAMA_MODEL_DOWNLOAD, { + model: modelName, + jobId, + percent: -2, + status: 'cancelled', + timestamp: new Date().toISOString(), + }) + + // Note on partial blob cleanup: Ollama manages model blobs internally at + // /root/.ollama/models/blobs/. We deliberately do NOT call /api/delete here — Ollama's + // expected behavior is to retain partial blobs so a re-pull resumes from where it left + // off. If the user wants to reclaim that space, they can re-pull and let it complete, + // or delete the partially-downloaded model from the AI Settings page. + return { success: true, message: 'Model download cancelled' } + } + + /** Wait up to 4s (250ms intervals) for the job to reach a terminal state */ + private async _pollForTerminalState(job: any, jobId: string): Promise { + const POLL_INTERVAL_MS = 250 + const POLL_TIMEOUT_MS = 4000 + const deadline = Date.now() + POLL_TIMEOUT_MS + + while (Date.now() < deadline) { + await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS)) + try { + const state = await job.getState() + if (state === 'failed' || state === 'completed' || state === 'unknown') { + return + } + } catch { + return // getState() throws if job is already gone + } + } + + console.warn( + `[DownloadService] cancelJob: job ${jobId} did not reach terminal state within timeout, removing anyway` + ) + } + + /** Remove a BullMQ job, clearing a stale worker lock if the first attempt fails */ + private async _removeJobWithLockFallback( + job: any, + queue: any, + queueName: string, + jobId: string + ): Promise { + try { + await job.remove() + } catch { + // Lock contention fallback: clear lock and retry once + try { + const client = await queue.client + await client.del(`bull:${queueName}:${jobId}:lock`) + const updatedJob = await queue.getJob(jobId) + if (updatedJob) await updatedJob.remove() + } catch { + // Best effort - job will be cleaned up on next dismiss attempt + } + } + } } diff --git a/admin/app/services/kiwix_catalog_service.ts b/admin/app/services/kiwix_catalog_service.ts new file mode 100644 index 0000000..e7f0422 --- /dev/null +++ b/admin/app/services/kiwix_catalog_service.ts @@ -0,0 +1,338 @@ +import axios from 'axios' +import { XMLParser } from 'fast-xml-parser' +import { DateTime } from 'luxon' +import logger from '@adonisjs/core/services/logger' +import InstalledResource from '#models/installed_resource' +import { isRawListRemoteZimFilesResponse } from '../../util/zim.js' + +/** + * Local, in-process freshness check for installed content (Kiwix ZIM files + + * PMTiles maps). This replaces the former dependency on the external + * project-nomad-api `/api/v1/resources/check-updates` endpoint — every NOMAD + * instance now queries the upstream catalogs directly. + * + * Downloads have always gone straight to the Kiwix/GitHub mirrors regardless of + * who performed the check, so moving the check in-process only shifts the + * lightweight *catalog* lookup. To stay mirror-respectful the auto-updater gates + * these calls behind the update window and bounds their concurrency; sizes come + * from the catalog metadata so we avoid per-file HEAD requests. + * + * Robustness over the old API: ZIM lookups use the OPDS exact `name=` filter + * (no lossy keyword stripping) and every returned link is still validated + * against the authoritative `^_YYYY-MM\.zim$` filename regex, so a substring + * match in the catalog can never resolve to the wrong book. Parsing is fully + * defensive — a malformed entry is skipped, never thrown. + */ + +const KIWIX_CATALOG_URL = 'https://browse.library.kiwix.org/catalog/v2/entries' +const GITHUB_PMTILES_URL = + 'https://api.github.com/repos/Crosstalk-Solutions/project-nomad-maps/contents/pmtiles' + +const CATALOG_TIMEOUT_MS = 15000 +/** Bounded paginated fallback scan when the exact `name=` lookup comes up empty. */ +const KIWIX_PAGE_SIZE = 60 +const MAX_KIWIX_FETCHES = 5 +/** Concurrent ZIM catalog lookups — keep small to avoid hammering the mirror. */ +const ZIM_CHECK_CONCURRENCY = 4 + +/** The newest available version of a single resource (a YYYY-MM date stamp). */ +export interface CatalogResult { + version: string + download_url: string + size_bytes: number +} + +interface CatalogZimEntry { + name: string | null + download_url: string + file_name: string + size_bytes: number +} + +interface GithubContentEntry { + name: string + download_url: string | null + size: number +} + +function escapeRegex(input: string): string { + return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') +} + +export class KiwixCatalogService { + private parser = new XMLParser({ + ignoreAttributes: false, + attributeNamePrefix: '', + textNodeName: '#text', + }) + + /** + * Resolve the newest available version for a batch of installed resources. + * Returns a map keyed by `":"`; resources with no + * available newer version (or a failed lookup) are simply absent. + * + * ZIMs are checked one OPDS request each (bounded concurrency). All maps are + * resolved from a single GitHub directory listing. + */ + async getLatestForResources( + resources: Array<{ resource_id: string; resource_type: 'zim' | 'map' }> + ): Promise> { + const result = new Map() + const zims = resources.filter((r) => r.resource_type === 'zim') + const maps = resources.filter((r) => r.resource_type === 'map') + + await this.forEachWithConcurrency(zims, ZIM_CHECK_CONCURRENCY, async (r) => { + try { + const latest = await this.getLatestZim(r.resource_id) + if (latest) result.set(`zim:${r.resource_id}`, latest) + } catch (error) { + logger.warn( + `[KiwixCatalogService] ZIM check failed for ${r.resource_id}: ${error instanceof Error ? error.message : error}` + ) + } + }) + + if (maps.length > 0) { + try { + const listing = await this.fetchMapListing() + for (const r of maps) { + const latest = this.pickNewestMap(listing, r.resource_id) + if (latest) result.set(`map:${r.resource_id}`, latest) + } + } catch (error) { + logger.warn( + `[KiwixCatalogService] Map listing fetch failed: ${error instanceof Error ? error.message : error}` + ) + } + } + + return result + } + + /** Newest catalog version of a single ZIM book, or null if none/older. */ + async getLatestZim(resourceId: string): Promise { + const pattern = new RegExp(`^${escapeRegex(resourceId)}_(\\d{4}-\\d{2})\\.zim$`) + + // 1. Exact-name lookup (the robust path). + const named = await this.fetchZimEntries({ name: resourceId, count: 50, start: 0 }) + const exact = this.pickNewestZim(named, pattern) + if (exact) return exact + + // 2. Fallback: bounded keyword scan in case the catalog ignored `name=` or + // indexes the book under a slightly different name. + return this.scanZimByQuery(resourceId, pattern) + } + + /** Newest catalog version of a single PMTiles map, or null if none/older. */ + async getLatestMap(resourceId: string): Promise { + const listing = await this.fetchMapListing() + return this.pickNewestMap(listing, resourceId) + } + + // ── ZIM internals ─────────────────────────────────────────────────────────── + + private pickNewestZim(entries: CatalogZimEntry[], pattern: RegExp): CatalogResult | null { + let latest: CatalogResult | null = null + for (const entry of entries) { + const match = entry.file_name.match(pattern) + if (!match) continue + const version = match[1] + if (!latest || version > latest.version) { + latest = { version, download_url: entry.download_url, size_bytes: entry.size_bytes } + } + } + return latest + } + + private async scanZimByQuery( + resourceId: string, + pattern: RegExp + ): Promise { + let start = 0 + let total = 0 + let latest: CatalogResult | null = null + + for (let i = 0; i < MAX_KIWIX_FETCHES; i++) { + const { entries, totalResults } = await this.fetchZimEntriesPage({ + q: resourceId, + count: KIWIX_PAGE_SIZE, + start, + }) + total = totalResults + if (entries.length === 0) break + start += entries.length + + const candidate = this.pickNewestZim(entries, pattern) + if (candidate && (!latest || candidate.version > latest.version)) { + latest = candidate + } + if (start >= total) break + } + return latest + } + + private async fetchZimEntries(params: { + name?: string + q?: string + count: number + start: number + }): Promise { + const { entries } = await this.fetchZimEntriesPage(params) + return entries + } + + private async fetchZimEntriesPage(params: { + name?: string + q?: string + count: number + start: number + }): Promise<{ entries: CatalogZimEntry[]; totalResults: number }> { + const res = await axios.get(KIWIX_CATALOG_URL, { + params: { + start: params.start, + count: params.count, + lang: 'eng', + ...(params.name ? { name: params.name } : {}), + ...(params.q ? { q: params.q } : {}), + }, + responseType: 'text', + timeout: CATALOG_TIMEOUT_MS, + }) + return this.parseZimEntries(res.data) + } + + private parseZimEntries(xml: string): { entries: CatalogZimEntry[]; totalResults: number } { + let parsed: any + try { + parsed = this.parser.parse(xml) + } catch { + return { entries: [], totalResults: 0 } + } + if (!isRawListRemoteZimFilesResponse(parsed)) { + return { entries: [], totalResults: 0 } + } + + const feed = parsed.feed + const totalResults = Number(feed?.totalResults) + const rawEntries = feed?.entry + ? Array.isArray(feed.entry) + ? feed.entry + : [feed.entry] + : [] + + const entries: CatalogZimEntry[] = [] + for (const raw of rawEntries) { + if (!raw || typeof raw !== 'object') continue + const links = Array.isArray(raw.link) ? raw.link : raw.link ? [raw.link] : [] + const downloadLink = links.find( + (link: any) => + link && + typeof link === 'object' && + link.type === 'application/x-zim' && + typeof link.href === 'string' + ) + if (!downloadLink) continue + + // The OPDS href ends with `.meta4`; strip it to get the real .zim URL. + const href: string = downloadLink.href + const download_url = href.endsWith('.meta4') ? href.slice(0, -'.meta4'.length) : href + const file_name = download_url.split('/').pop() || '' + if (!file_name) continue + + const size_bytes = Number.parseInt(downloadLink.length, 10) || 0 + entries.push({ + name: typeof raw.name === 'string' ? raw.name : null, + download_url, + file_name, + size_bytes, + }) + } + + return { entries, totalResults: Number.isFinite(totalResults) ? totalResults : 0 } + } + + // ── Map internals ──────────────────────────────────────────────────────────── + + private async fetchMapListing(): Promise { + const res = await axios.get(GITHUB_PMTILES_URL, { + headers: { Accept: 'application/vnd.github+json' }, + timeout: CATALOG_TIMEOUT_MS, + }) + return Array.isArray(res.data) ? res.data : [] + } + + private pickNewestMap(listing: GithubContentEntry[], resourceId: string): CatalogResult | null { + const pattern = new RegExp(`^${escapeRegex(resourceId)}_(\\d{4}-\\d{2})\\.pmtiles$`) + let latest: CatalogResult | null = null + for (const file of listing) { + if (!file || typeof file.name !== 'string' || !file.download_url) continue + const match = file.name.match(pattern) + if (!match) continue + const version = match[1] + if (!latest || version > latest.version) { + latest = { + version, + download_url: file.download_url, + size_bytes: typeof file.size === 'number' ? file.size : 0, + } + } + } + return latest + } + + // ── Shared ─────────────────────────────────────────────────────────────────── + + private async forEachWithConcurrency( + items: T[], + concurrency: number, + worker: (item: T) => Promise + ): Promise { + let cursor = 0 + const runners = Array.from({ length: Math.min(concurrency, items.length) }, async () => { + while (cursor < items.length) { + const index = cursor++ + await worker(items[index]) + } + }) + await Promise.all(runners) + } +} + +/** + * Persist the latest-known available-update state onto an installed resource. + * Shared by the manual check and the auto-updater so both keep the cool-off + * anchor consistent. + * + * The first-seen anchor is reset **only** when the available version string + * actually changes, so a manual "Check for updates" never resets the auto + * cool-off clock. State is cleared entirely once the resource is current (the + * update got installed, or the upstream release was withdrawn). + */ +export async function reconcileResourceUpdateState( + resource: InstalledResource, + latest: CatalogResult | null, + now: DateTime +): Promise { + const hasUpdate = latest !== null && latest.version > resource.version + + if (hasUpdate) { + if (resource.available_update_version !== latest!.version) { + resource.available_update_version = latest!.version + resource.available_update_first_seen_at = now + } + // Keep the cached size fresh even when the version is unchanged (the catalog + // may report a size it lacked on a previous check). + const size = latest!.size_bytes || null + if (resource.available_update_size_bytes !== size) { + resource.available_update_size_bytes = size + } + } else if (resource.available_update_version !== null) { + resource.available_update_version = null + resource.available_update_size_bytes = null + resource.available_update_first_seen_at = null + } + + if (resource.$isDirty) { + await resource.save() + } +} diff --git a/admin/app/services/kiwix_library_service.ts b/admin/app/services/kiwix_library_service.ts index 28e6576..81f63fa 100644 --- a/admin/app/services/kiwix_library_service.ts +++ b/admin/app/services/kiwix_library_service.ts @@ -2,7 +2,7 @@ import { XMLBuilder, XMLParser } from 'fast-xml-parser' import { readFile, writeFile, rename, readdir } from 'fs/promises' import { join } from 'path' import { Archive } from '@openzim/libzim' -import { KIWIX_LIBRARY_XML_PATH, ZIM_STORAGE_PATH, ensureDirectoryExists } from '../utils/fs.js' +import { KIWIX_LIBRARY_XML_PATH, ZIM_STORAGE_PATH, ensureDirectoryExists, isValidZimFile } from '../utils/fs.js' import logger from '@adonisjs/core/services/logger' import { randomUUID } from 'node:crypto' @@ -54,8 +54,12 @@ export class KiwixLibraryService { * * Returns null on any error so callers can fall back gracefully. */ - private _readZimMetadata(zimFilePath: string): Partial | null { + private async _readZimMetadata(zimFilePath: string): Promise | null> { try { + if (!(await isValidZimFile(zimFilePath))) { + logger.warn(`[KiwixLibraryService] Skipping invalid/corrupted ZIM file: ${zimFilePath}`) + return null + } const archive = new Archive(zimFilePath) const getMeta = (key: string): string | undefined => { @@ -183,7 +187,71 @@ export class KiwixLibraryService { .filter((b) => b.id && b.path) } - async rebuildFromDisk(opts?: { excludeFilenames?: string[] }): Promise { + /** + * Returns the number of books currently listed in the library XML, or 0 if the + * file doesn't exist yet. Used to report a before/after delta on a manual rescan. + */ + async getBookCount(): Promise { + try { + const content = await readFile(this.getLibraryFilePath(), 'utf-8') + return this._parseExistingBooks(content).length + } catch (err: any) { + if (err.code === 'ENOENT') return 0 + throw err + } + } + + /** + * True if the library XML parses and has a root. A truncated or + * corrupt file (e.g. an interrupted write) fails this even though it exists, + * so the caller can rebuild rather than leave Kiwix serving a broken library. + * An empty-but-well-formed library is considered valid (nothing to repair). + */ + private _isValidLibraryXml(xmlContent: string): boolean { + try { + const parser = new XMLParser({ + ignoreAttributes: false, + attributeNamePrefix: '@_', + isArray: (name) => name === 'book', + }) + const parsed = parser.parse(xmlContent) + return parsed?.library !== undefined && parsed?.library !== null + } catch { + return false + } + } + + /** + * Boot-time safety net: if the library XML is missing or unparseable, rebuild + * it from the ZIM files on disk so Kiwix (running in library mode with + * --monitorLibrary) doesn't come up serving an empty/broken library with no + * path to recovery. This covers files lost or corrupted outside the normal + * download flow (storage relocation, interrupted write, manual deletion). + * + * Returns true if a rebuild was performed. Filesystem errors other than + * "not found" are surfaced rather than masked by a rebuild. + */ + async ensureLibraryXmlHealthy(): Promise { + let content: string + try { + content = await readFile(this.getLibraryFilePath(), 'utf-8') + } catch (err: any) { + if (err?.code === 'ENOENT') { + logger.warn('[KiwixLibraryService] Library XML missing on startup; rebuilding from disk.') + await this.rebuildFromDisk() + return true + } + throw err + } + + if (this._isValidLibraryXml(content)) return false + + logger.warn('[KiwixLibraryService] Library XML present but invalid; rebuilding from disk.') + await this.rebuildFromDisk() + return true + } + + async rebuildFromDisk(opts?: { excludeFilenames?: string[] }): Promise { const dirPath = join(process.cwd(), ZIM_STORAGE_PATH) await ensureDirectoryExists(dirPath) @@ -197,21 +265,27 @@ export class KiwixLibraryService { const excludeSet = new Set(opts?.excludeFilenames ?? []) const zimFiles = entries.filter((name) => name.endsWith('.zim') && !excludeSet.has(name)) - const books: KiwixBook[] = zimFiles.map((filename) => { - const meta = this._readZimMetadata(join(dirPath, filename)) + const books: KiwixBook[] = [] + for (const filename of zimFiles) { + const meta = await this._readZimMetadata(join(dirPath, filename)) + if (meta === null) { + logger.warn(`[KiwixLibraryService] Skipping unreadable ZIM file: ${filename}`) + continue + } const containerPath = `${CONTAINER_DATA_PATH}/${filename}` - return { + books.push({ ...meta, // Override fields that must be derived locally, not from ZIM metadata id: meta?.id ?? filename.slice(0, -4), path: containerPath, title: meta?.title ?? this._filenameToTitle(filename), - } - }) + }) + } const xml = this._buildXml(books) await this._atomicWrite(xml) logger.info(`[KiwixLibraryService] Rebuilt library XML with ${books.length} book(s).`) + return books.length } async addBook(filename: string): Promise { @@ -239,7 +313,12 @@ export class KiwixLibraryService { } const fullPath = join(process.cwd(), ZIM_STORAGE_PATH, zimFilename) - const meta = this._readZimMetadata(fullPath) + const meta = await this._readZimMetadata(fullPath) + + if (meta === null) { + logger.error(`[KiwixLibraryService] Cannot add ${zimFilename}: file is invalid or corrupted.`) + return + } existingBooks.push({ ...meta, diff --git a/admin/app/services/map_service.ts b/admin/app/services/map_service.ts index 9e4363b..7aa20a7 100644 --- a/admin/app/services/map_service.ts +++ b/admin/app/services/map_service.ts @@ -16,10 +16,36 @@ import { import { join, resolve, sep } from 'path' import urlJoin from 'url-join' import { RunDownloadJob } from '#jobs/run_download_job' +import { RunExtractPmtilesJob } from '#jobs/run_extract_pmtiles_job' import logger from '@adonisjs/core/services/logger' +import { assertNotPrivateUrl } from '#validators/common' import InstalledResource from '#models/installed_resource' import { CollectionManifestService } from './collection_manifest_service.js' +import { decideSupersededDeletion } from '../utils/superseded_resource.js' import type { CollectionWithStatus, MapsSpec } from '../../types/collections.js' +import type { Country, CountryCode, CountryGroup, MapExtractPreflight } from '../../types/maps.js' +import { + EXTRACT_DEFAULT_MAX_ZOOM, + EXTRACT_MAX_ZOOM, + EXTRACT_MIN_ZOOM, + PMTILES_BINARY_PATH, + WORLD_BASEMAP_FILENAME, + WORLD_BASEMAP_MAX_ZOOM, + WORLD_BASEMAP_SOURCE_NAME, + buildPmtilesExtractArgs, +} from '../../constants/map_regions.js' +import { CountriesService } from './countries_service.js' +import { execFile } from 'child_process' +import { createHash, randomBytes } from 'crypto' +import { tmpdir } from 'os' +import { promisify } from 'util' + +const execFileAsync = promisify(execFile) +const DRY_RUN_TIMEOUT_MS = 60_000 +const DRY_RUN_MAX_BUFFER = 256 * 1024 +// Real extract of z0-5 world tiles; generous to tolerate slow/metered links +// since a failure leaves the map grey for uncovered regions. +const WORLD_BASEMAP_EXTRACT_TIMEOUT_MS = 5 * 60_000 const PROTOMAPS_BUILDS_METADATA_URL = 'https://build-metadata.protomaps.dev/builds.json' const PROTOMAPS_BUILD_BASE_URL = 'https://build.protomaps.com' @@ -52,10 +78,15 @@ export class MapService implements IMapService { private readonly baseAssetsTarFile = 'base-assets.tar.gz' private readonly baseDirPath = join(process.cwd(), this.mapStoragePath) private baseAssetsExistCache: boolean | null = null + private worldBasemapReady = false + private worldBasemapInFlight: Promise | null = null async listRegions() { const files = (await this.listAllMapStorageItems()).filter( - (item) => item.type === 'file' && item.name.endsWith('.pmtiles') + (item) => + item.type === 'file' && + item.name.endsWith('.pmtiles') && + item.name !== WORLD_BASEMAP_FILENAME ) return { @@ -119,6 +150,13 @@ export class MapService implements IMapService { const downloadFilenames: string[] = [] for (const resource of toDownload) { + try { + assertNotPrivateUrl(resource.url) + } catch { + logger.warn(`[MapService] Blocked download from private/loopback URL: ${resource.url}`) + continue + } + const existing = await RunDownloadJob.getActiveByUrl(resource.url) if (existing) { logger.warn(`[MapService] Download already in progress for URL ${resource.url}, skipping.`) @@ -162,10 +200,18 @@ export class MapService implements IMapService { const parsed = CollectionManifestService.parseMapFilename(filename) if (!parsed) continue - const filepath = join(process.cwd(), this.mapStoragePath, 'pmtiles', filename) + const pmtilesDir = join(process.cwd(), this.mapStoragePath, 'pmtiles') + const filepath = join(pmtilesDir, filename) const stats = await getFileStatsIfExists(filepath) try { + // Capture the prior install for this resource_id before updateOrCreate + // overwrites it, so we know the old file to clean up (#634). + const prior = await InstalledResource.query() + .where('resource_id', parsed.resource_id) + .where('resource_type', 'map') + .first() + const { DateTime } = await import('luxon') await InstalledResource.updateOrCreate( { resource_id: parsed.resource_id, resource_type: 'map' }, @@ -178,6 +224,31 @@ export class MapService implements IMapService { } ) logger.info(`[MapService] Created InstalledResource entry for: ${parsed.resource_id}`) + + // Remove the superseded prior version's pmtiles file if every safety + // rail passes (see decideSupersededDeletion). Maps have no library index, + // so a direct delete of the recorded old file is sufficient. + const decision = decideSupersededDeletion({ + existing: prior ? { file_path: prior.file_path, version: prior.version } : null, + newFilePath: filepath, + newVersion: parsed.version, + newFileExists: !!stats, + storageBaseDir: pmtilesDir, + }) + if (decision.delete && decision.path) { + try { + await deleteFileIfExists(decision.path) + logger.info( + `[MapService] Removed superseded ${parsed.resource_id} file: ${decision.path}` + ) + } catch (err) { + logger.warn(`[MapService] Failed to remove superseded file ${decision.path}:`, err) + } + } else if (decision.reason !== 'first_install' && decision.reason !== 'same_file') { + logger.info( + `[MapService] Kept prior ${parsed.resource_id} file (reason: ${decision.reason})` + ) + } } catch (error) { logger.error(`[MapService] Failed to create InstalledResource for ${filename}:`, error) } @@ -244,6 +315,7 @@ export class MapService implements IMapService { url: string ): Promise<{ filename: string; size: number } | { message: string }> { try { + assertNotPrivateUrl(url) const parsed = new URL(url) if (!parsed.pathname.endsWith('.pmtiles')) { throw new Error(`Invalid PMTiles file URL: ${url}. URL must end with .pmtiles`) @@ -263,11 +335,12 @@ export class MapService implements IMapService { } const contentLength = response.headers['content-length'] - const size = contentLength ? parseInt(contentLength, 10) : 0 + const size = contentLength ? parseInt(contentLength.toString(), 10) : 0 return { filename, size } } catch (error: any) { - return { message: `Preflight check failed: ${error.message}` } + logger.error({ err: error }, '[MapService] Preflight check failed for URL') + return { message: 'Preflight check failed. Please verify the URL is valid and accessible.' } } } @@ -317,11 +390,76 @@ export class MapService implements IMapService { async ensureBaseAssets(): Promise { const exists = await this.checkBaseAssetsExist() - if (exists) { - return true + if (!exists) { + const downloaded = await this.downloadBaseAssets() + if (!downloaded) return false } - return await this.downloadBaseAssets() + try { + await this.ensureWorldBasemap() + } catch (err) { + logger.warn(`[MapService] World basemap setup failed, continuing without it: ${err}`) + } + + return true + } + + /** + * Extract a low-zoom global basemap once so the map isn't grey outside a + * regional extract's polygon. Cheap (~15 MB, a handful of HTTP range + * requests) and layered underneath regional sources at render time. + * + * Memoizes success in-process, and de-duplicates concurrent callers via a + * shared in-flight promise so two simultaneous `/maps` requests on a cold + * start don't both launch `pmtiles extract` against the same output path. + */ + private async ensureWorldBasemap(): Promise { + if (this.worldBasemapReady) return + if (this.worldBasemapInFlight) return this.worldBasemapInFlight + this.worldBasemapInFlight = this._setupWorldBasemap().finally(() => { + this.worldBasemapInFlight = null + }) + return this.worldBasemapInFlight + } + + private async _setupWorldBasemap(): Promise { + const basePath = resolve(join(this.baseDirPath, 'pmtiles')) + const filepath = resolve(join(basePath, WORLD_BASEMAP_FILENAME)) + if (!filepath.startsWith(basePath + sep)) { + throw new Error('Invalid world basemap path') + } + + await ensureDirectoryExists(basePath) + + const existing = await getFileStatsIfExists(filepath) + if (existing && Number(existing.size) > 0) { + this.worldBasemapReady = true + return + } + + const info = await this.getGlobalMapInfo() + const args = buildPmtilesExtractArgs({ + sourceUrl: info.url, + outputFilepath: filepath, + maxzoom: WORLD_BASEMAP_MAX_ZOOM, + downloadThreads: 4, + }) + + logger.info( + `[MapService] Extracting world basemap (z0-${WORLD_BASEMAP_MAX_ZOOM}) from ${info.url}` + ) + try { + await execFileAsync(PMTILES_BINARY_PATH, args, { + timeout: WORLD_BASEMAP_EXTRACT_TIMEOUT_MS, + maxBuffer: DRY_RUN_MAX_BUFFER, + }) + this.worldBasemapReady = true + } catch (err: any) { + await deleteFileIfExists(filepath) + throw new Error( + `pmtiles extract for world basemap failed: ${err.message}. stderr: ${err.stderr ?? ''}` + ) + } } private async checkBaseAssetsExist(useCache: boolean = true): Promise { @@ -353,27 +491,76 @@ export class MapService implements IMapService { return await listDirectoryContentsRecursive(this.baseDirPath) } + /** + * Compare two map-file versions (YYYY-MM, or null for an undated legacy file). Returns >0 if + * `a` is newer than `b`, <0 if older, 0 if equal. A dated build is always newer than an undated + * legacy file; two dated builds compare lexicographically (correct for zero-padded YYYY-MM). + */ + private static compareMapVersions(a: string | null, b: string | null): number { + if (a === b) return 0 + if (a === null) return -1 + if (b === null) return 1 + return a < b ? -1 : 1 + } + private generateSourcesArray(host: string | null, regions: FileEntry[], protocol: string = 'http'): BaseStylesFile['sources'][] { const sources: BaseStylesFile['sources'][] = [] const baseUrl = this.getPublicFileBaseUrl(host, 'pmtiles', protocol) + // World basemap goes first so its layers render underneath regional extracts. + // Only emitted when ensureWorldBasemap() succeeded — otherwise the style would + // reference a file that doesn't exist and produce 404s on every tile request. + if (this.worldBasemapReady) { + const worldSource: BaseStylesFile['sources'] = {} + worldSource[WORLD_BASEMAP_SOURCE_NAME] = { + type: 'vector', + attribution: PMTILES_ATTRIBUTION, + url: `pmtiles://${urlJoin(baseUrl, WORLD_BASEMAP_FILENAME)}`, + } + sources.push(worldSource) + } + + // Dedupe by region name, keeping only the newest file per region. The source name is the + // date-stripped region (e.g. both "washington.pmtiles" and "washington_2025-12.pmtiles" map + // to "washington"). Emitting both produces duplicate source keys and duplicate layer ids, + // which MapLibre rejects outright — blanking the ENTIRE map, not just that region. Old copies + // linger when a newer curated version installs (#634), so guard against it here so the style + // stays valid even if cleanup hasn't run. A dated build beats an undated legacy file; between + // two dated builds the later YYYY-MM wins (lexicographic compare is correct for that format). + const bestByRegion = new Map() for (const region of regions) { if (region.type === 'file' && region.name.endsWith('.pmtiles')) { - // Strip .pmtiles and date suffix (e.g. "alaska_2025-12" -> "alaska") for stable source names const parsed = CollectionManifestService.parseMapFilename(region.name) const regionName = parsed ? parsed.resource_id : region.name.replace('.pmtiles', '') - const source: BaseStylesFile['sources'] = {} - const sourceUrl = urlJoin(baseUrl, region.name) - - source[regionName] = { - type: 'vector', - attribution: PMTILES_ATTRIBUTION, - url: `pmtiles://${sourceUrl}`, + const version = parsed?.version ?? null + const existing = bestByRegion.get(regionName) + if (!existing || MapService.compareMapVersions(version, existing.version) > 0) { + if (existing) { + logger.warn( + `[MapService] Duplicate map region "${regionName}": using "${region.name}" over "${existing.region.name}" (keeping newest)` + ) + } + bestByRegion.set(regionName, { region, version }) + } else { + logger.warn( + `[MapService] Duplicate map region "${regionName}": skipping "${region.name}" in favor of "${existing.region.name}" (keeping newest)` + ) } - sources.push(source) } } + for (const [regionName, { region }] of bestByRegion) { + const source: BaseStylesFile['sources'] = {} + const sourceUrl = urlJoin(baseUrl, region.name) + + source[regionName] = { + type: 'vector', + attribution: PMTILES_ATTRIBUTION, + url: `pmtiles://${sourceUrl}`, + } + sources.push(source) + } + return sources } @@ -479,12 +666,206 @@ export class MapService implements IMapService { } } + async listCountries(): Promise { + return CountriesService.getInstance().list() + } + + async listCountryGroups(): Promise { + return CountriesService.getInstance().listGroups() + } + + async extractPreflight(params: { + countries: CountryCode[] + maxzoom?: number + }): Promise { + this.validateMaxzoom(params.maxzoom) + const countries = await CountriesService.getInstance().resolveCodes(params.countries) + const regionFilepath = await CountriesService.getInstance().writeRegionFile(countries) + const info = await this.getGlobalMapInfo() + return this.runDryRun(info, regionFilepath, params.maxzoom) + } + + private async runDryRun( + info: { url: string; date: string; key: string }, + regionFilepath: string, + maxzoom?: number + ): Promise { + const dryRunOutput = join(tmpdir(), `pmtiles-dry-run-${randomBytes(6).toString('hex')}.pmtiles`) + const args = buildPmtilesExtractArgs({ + sourceUrl: info.url, + outputFilepath: dryRunOutput, + regionFilepath, + maxzoom, + dryRun: true, + }) + + let stdout = '' + let stderr = '' + try { + const result = await execFileAsync(PMTILES_BINARY_PATH, args, { + timeout: DRY_RUN_TIMEOUT_MS, + maxBuffer: DRY_RUN_MAX_BUFFER, + }) + stdout = result.stdout + stderr = result.stderr + } catch (err: any) { + throw new Error( + `pmtiles extract --dry-run failed: ${err.message}. stderr: ${err.stderr ?? ''}` + ) + } + + const parsed = this.parseDryRunOutput(stdout + '\n' + stderr) + + return { + tiles: parsed.tiles, + bytes: parsed.bytes, + source: { url: info.url, date: info.date, key: info.key }, + } + } + + async extractRegion(params: { + countries: CountryCode[] + maxzoom?: number + label?: string + estimatedBytes?: number + }): Promise<{ filename: string; jobId?: string }> { + this.validateMaxzoom(params.maxzoom) + const countriesService = CountriesService.getInstance() + const countries = await countriesService.resolveCodes(params.countries) + const regionFilepath = await countriesService.writeRegionFile(countries) + const maxzoom = params.maxzoom ?? EXTRACT_DEFAULT_MAX_ZOOM + + const [baseAssetsExist, info, groups] = await Promise.all([ + this.ensureBaseAssets(), + this.getGlobalMapInfo(), + countriesService.listGroups(), + ]) + if (!baseAssetsExist) { + throw new Error( + 'Base map assets are missing and could not be downloaded. Please check your connection and try again.' + ) + } + + const groupMatch = findExactGroupMatch(countries, groups) + const slug = this.buildRegionSlug(countries, groupMatch) + const dateSlug = info.key.replace('.pmtiles', '') + const filename = `${slug}_${dateSlug}_z${maxzoom}.pmtiles` + const basePath = resolve(join(this.baseDirPath, 'pmtiles')) + const filepath = resolve(join(basePath, filename)) + + if (!filepath.startsWith(basePath + sep)) { + throw new Error('Invalid filename') + } + + let estimatedBytes = params.estimatedBytes ?? 0 + if (estimatedBytes === 0) { + try { + const preflight = await this.runDryRun(info, regionFilepath, maxzoom) + estimatedBytes = preflight.bytes + } catch (err) { + logger.warn(`[MapService] extractRegion preflight failed, proceeding without estimate: ${err}`) + } + } + + const title = params.label ?? this.buildRegionTitle(countries, groupMatch) + + const result = await RunExtractPmtilesJob.dispatch({ + sourceUrl: info.url, + outputFilepath: filepath, + regionFilepath, + maxzoom, + estimatedBytes, + filetype: 'map', + title, + resourceMetadata: { + resource_id: slug, + version: dateSlug, + collection_ref: null, + }, + }) + + if (!result.job) { + throw new Error('Failed to dispatch extract job') + } + + logger.info( + `[MapService] Dispatched extract job ${result.job.id} for ${filename} ` + + `(countries=[${countries.join(',')}] maxzoom=${maxzoom} est=${estimatedBytes} bytes)` + ) + + return { + filename, + jobId: result.job.id, + } + } + + private buildRegionSlug(countries: CountryCode[], groupMatch: CountryGroup | null): string { + if (groupMatch) return groupMatch.id + if (countries.length === 1) return countries[0].toLowerCase() + const hash = createHash('sha1').update(countries.join(',')).digest('hex').slice(0, 8) + return `custom-${hash}` + } + + private buildRegionTitle(countries: CountryCode[], groupMatch: CountryGroup | null): string { + if (groupMatch) return groupMatch.name + if (countries.length === 1) return countries[0] + if (countries.length <= 3) return countries.join(', ') + return `${countries.slice(0, 2).join(', ')} +${countries.length - 2} more` + } + + private validateMaxzoom(maxzoom: number | undefined): void { + if (typeof maxzoom !== 'number') return + if ( + !Number.isInteger(maxzoom) || + maxzoom < EXTRACT_MIN_ZOOM || + maxzoom > EXTRACT_MAX_ZOOM + ) { + throw new Error( + `maxzoom must be an integer in [${EXTRACT_MIN_ZOOM}, ${EXTRACT_MAX_ZOOM}]` + ) + } + } + + // go-pmtiles output format isn't stable across versions — parse loosely and + // fall back to zeros. The extract can still proceed without an estimate. + private parseDryRunOutput(output: string): { tiles: number; bytes: number } { + let bytes = 0 + let tiles = 0 + + const byteLine = output.match(/archive\s+size\s+of\s+([\d,.]+)\s*(B|KB|MB|GB|TB|bytes?)?/i) + if (byteLine) { + const raw = parseFloat(byteLine[1].replace(/,/g, '')) + const unit = (byteLine[2] ?? 'B').toUpperCase() + const multipliers: Record = { + B: 1, + BYTE: 1, + BYTES: 1, + KB: 1_000, + MB: 1_000_000, + GB: 1_000_000_000, + TB: 1_000_000_000_000, + } + bytes = Math.round(raw * (multipliers[unit] ?? 1)) + } + + const tileLine = output.match(/(?:tiles\s+to\s+extract|tiles)[^\d]*([\d,]+)/i) + if (tileLine) { + tiles = parseInt(tileLine[1].replace(/,/g, ''), 10) || 0 + } + + return { tiles, bytes } + } + async delete(file: string): Promise { let fileName = file if (!fileName.endsWith('.pmtiles')) { fileName += '.pmtiles' } + if (fileName === WORLD_BASEMAP_FILENAME) { + throw new Error('The world basemap cannot be deleted') + } + const basePath = resolve(join(this.baseDirPath, 'pmtiles')) const fullPath = resolve(join(basePath, fileName)) @@ -563,3 +944,16 @@ export class MapService implements IMapService { return baseUrl } } + +function findExactGroupMatch( + countries: CountryCode[], + groups: CountryGroup[] +): CountryGroup | null { + return ( + groups.find( + (g) => + g.countries.length === countries.length && + g.countries.every((c, i) => c === countries[i]) + ) ?? null + ) +} diff --git a/admin/app/services/ollama_service.ts b/admin/app/services/ollama_service.ts index dacf131..be319e9 100644 --- a/admin/app/services/ollama_service.ts +++ b/admin/app/services/ollama_service.ts @@ -3,7 +3,7 @@ import OpenAI from 'openai' import type { ChatCompletionChunk, ChatCompletionMessageParam } from 'openai/resources/chat/completions.js' import type { Stream } from 'openai/streaming.js' import { NomadOllamaModel } from '../../types/ollama.js' -import { FALLBACK_RECOMMENDED_OLLAMA_MODELS } from '../../constants/ollama.js' +import { EMBEDDING_MODEL_NAME, FALLBACK_RECOMMENDED_OLLAMA_MODELS } from '../../constants/ollama.js' import fs from 'node:fs/promises' import path from 'node:path' import logger from '@adonisjs/core/services/logger' @@ -53,6 +53,7 @@ export class OllamaService { private baseUrl: string | null = null private initPromise: Promise | null = null private isOllamaNative: boolean | null = null + private activeDownloads: Map> = new Map() constructor() {} @@ -91,10 +92,46 @@ export class OllamaService { /** * Downloads a model from Ollama with progress tracking. Only works with Ollama backends. * Use dispatchModelDownload() for background job processing where possible. + * + * @param signal Optional AbortSignal — when triggered, the underlying axios stream is cancelled + * and the method returns a non-retryable failure so callers can mark the job + * unrecoverable in BullMQ and avoid the 40-attempt retry storm. + * @param jobId Optional BullMQ job id — included in progress broadcasts so the frontend can + * correlate Transmit events to a cancellable job. */ async downloadModel( model: string, - progressCallback?: (percent: number) => void + progressCallback?: ( + percent: number, + bytes?: { downloadedBytes: number; totalBytes: number } + ) => void, + signal?: AbortSignal, + jobId?: string + ): Promise<{ success: boolean; message: string; retryable?: boolean }> { + // Deduplicate concurrent downloads of the same model + const existing = this.activeDownloads.get(model) + if (existing) { + logger.info(`[OllamaService] Download already in progress for "${model}", waiting on existing download.`) + return existing + } + + const downloadPromise = this._doDownloadModel(model, progressCallback, signal, jobId) + this.activeDownloads.set(model, downloadPromise) + try { + return await downloadPromise + } finally { + this.activeDownloads.delete(model) + } + } + + private async _doDownloadModel( + model: string, + progressCallback?: ( + percent: number, + bytes?: { downloadedBytes: number; totalBytes: number } + ) => void, + signal?: AbortSignal, + jobId?: string ): Promise<{ success: boolean; message: string; retryable?: boolean }> { await this._ensureDependencies() if (!this.baseUrl) { @@ -121,15 +158,45 @@ export class OllamaService { } } - // Stream pull via Ollama native API + // Stream pull via Ollama native API. axios supports `signal` natively for AbortController + // integration — when triggered, the request errors with code 'ERR_CANCELED' which we detect + // in the catch block below to return a non-retryable cancel result. const pullResponse = await axios.post( `${this.baseUrl}/api/pull`, { model, stream: true }, - { responseType: 'stream', timeout: 0 } + { responseType: 'stream', timeout: 0, signal } ) + // Ollama's pull API reports progress per-digest (each blob). A single model can contain + // multiple blobs (weights, tokenizer, template, etc.) and each is reported in turn. + // Aggregate across all digests so the UI shows a single monotonically-increasing total, + // matching the behavior of the content download progress (Active Downloads section). + const digestProgress = new Map() + + // Throttle broadcasts to once per BROADCAST_THROTTLE_MS — Ollama can emit hundreds of + // progress events per second for fast connections, which would flood the Transmit SSE + // channel and cause jittery speed calculations on the frontend. + const BROADCAST_THROTTLE_MS = 500 + let lastBroadcastAt = 0 + await new Promise((resolve, reject) => { let buffer = '' + // If the abort fires after headers are received but mid-stream, axios's signal handling + // destroys the stream which surfaces as an 'error' event — wire the signal listener so + // the promise rejects promptly with a recognizable cancel reason. + const onAbort = () => { + const err: any = new Error('Download cancelled') + err.code = 'ERR_CANCELED' + pullResponse.data.destroy(err) + } + if (signal) { + if (signal.aborted) { + onAbort() + return + } + signal.addEventListener('abort', onAbort, { once: true }) + } + pullResponse.data.on('data', (chunk: Buffer) => { buffer += chunk.toString() const lines = buffer.split('\n') @@ -138,23 +205,74 @@ export class OllamaService { if (!line.trim()) continue try { const parsed = JSON.parse(line) - if (parsed.completed && parsed.total) { - const percent = parseFloat(((parsed.completed / parsed.total) * 100).toFixed(2)) - this.broadcastDownloadProgress(model, percent) - if (progressCallback) progressCallback(percent) + if (parsed.completed && parsed.total && parsed.digest) { + // Update this digest's progress — take the max seen value so transient + // out-of-order updates don't make the aggregate jump backwards. + const existing = digestProgress.get(parsed.digest) + digestProgress.set(parsed.digest, { + completed: Math.max(existing?.completed ?? 0, parsed.completed), + total: Math.max(existing?.total ?? 0, parsed.total), + }) + + // Compute aggregate across all known blobs + let aggCompleted = 0 + let aggTotal = 0 + for (const { completed, total } of digestProgress.values()) { + aggCompleted += completed + aggTotal += total + } + + const percent = aggTotal > 0 + ? parseFloat(((aggCompleted / aggTotal) * 100).toFixed(2)) + : 0 + + // Throttle broadcasts. Always call the progressCallback though — the worker + // uses it to update job state in Redis, which should reflect the latest view. + const now = Date.now() + if (now - lastBroadcastAt >= BROADCAST_THROTTLE_MS) { + lastBroadcastAt = now + this.broadcastDownloadProgress(model, percent, jobId, { + downloadedBytes: aggCompleted, + totalBytes: aggTotal, + }) + } + if (progressCallback) { + progressCallback(percent, { + downloadedBytes: aggCompleted, + totalBytes: aggTotal, + }) + } } } catch { // ignore parse errors on partial lines } } }) - pullResponse.data.on('end', resolve) - pullResponse.data.on('error', reject) + pullResponse.data.on('end', () => { + if (signal) signal.removeEventListener('abort', onAbort) + resolve() + }) + pullResponse.data.on('error', (err: any) => { + if (signal) signal.removeEventListener('abort', onAbort) + reject(err) + }) }) logger.info(`[OllamaService] Model "${model}" downloaded successfully.`) return { success: true, message: 'Model downloaded successfully.' } } catch (error) { + // Detect axios cancel (signal-triggered abort). Don't broadcast an error event for + // user-initiated cancels — the cancel handler in DownloadService already broadcasts + // a cancelled state. Returning retryable: false prevents BullMQ retries. + const isCancelled = + axios.isCancel(error) || + (error as any)?.code === 'ERR_CANCELED' || + (error as any)?.name === 'CanceledError' + if (isCancelled) { + logger.info(`[OllamaService] Model "${model}" download cancelled by user.`) + return { success: false, message: 'Download cancelled', retryable: false } + } + const errorMessage = error instanceof Error ? error.message : String(error) logger.error( `[OllamaService] Failed to download model "${model}": ${errorMessage}` @@ -351,9 +469,55 @@ export class OllamaService { } } + /** + * Hard char cap per embed input, applied as a runtime safety net regardless of + * which backend path runs. The chunker in RagService caps at MAX_SAFE_TOKENS=1600 + * (3200 chars at the conservative 2 chars/token estimate), but dense technical + * content has been observed to slip past on multi-batch ZIM ingestion (#881). + * + * 4000 chars ≈ 1000–2000 tokens depending on density, which keeps us comfortably + * under nomic-embed-text:v1.5's default 2048-token context even on the OpenAI-compat + * fallback path (which can't pass `truncate:true`/`num_ctx` to the model). + */ + public static readonly EMBED_MAX_INPUT_CHARS = 4000 + + /** + * Aggressive 2048-safe character cap, applied only on a context-length retry. nomic-embed-text:v1.5 + * defaults to a 2048-token context, and on the OpenAI-compat fallback path (or an older Ollama that + * ignores num_ctx for embeddings) we cannot widen it at request time. 2000 chars stays under 2048 + * tokens even for the densest content (~1 char/token code/markup), so an oversized chunk gets + * truncated-and-kept instead of silently dropped from Qdrant — and the embed job stops re-embedding + * the whole file 30x on the one bad chunk (#881). + */ + public static readonly EMBED_CONTEXT_SAFE_CHARS = 2000 + + /** + * True if the error is the model rejecting input that exceeds its context window + * ("input length exceeds the context length"). Matches both the native /api/embed axios error + * shape and the OpenAI-compat BadRequestError. Drives the truncate-and-retry here and the + * non-retryable classification in EmbedFileJob (#881). + */ + public static isContextLengthError(err: unknown): boolean { + const parts: string[] = [] + if (err instanceof Error && err.message) parts.push(err.message) + const anyErr = err as any + const data = anyErr?.response?.data + if (data) parts.push(typeof data === 'string' ? data : JSON.stringify(data)) + if (anyErr?.error) parts.push(typeof anyErr.error === 'string' ? anyErr.error : JSON.stringify(anyErr.error)) + const haystack = parts.join(' ').toLowerCase() + return ( + (haystack.includes('context length') && haystack.includes('exceed')) || + haystack.includes('input length exceeds') + ) + } + /** * Generate embeddings for the given input strings. * Tries the Ollama native /api/embed endpoint first, falls back to /v1/embeddings. + * + * If the first attempt fails because a chunk exceeds the model's context window, retries once + * with an aggressive 2048-safe truncation (EMBED_CONTEXT_SAFE_CHARS) so the chunk is embedded + * (start-of-chunk) rather than silently dropped from Qdrant (#881). */ public async embed(model: string, input: string[]): Promise<{ embeddings: number[][] }> { await this._ensureDependencies() @@ -361,11 +525,52 @@ export class OllamaService { throw new Error('AI service is not initialized.') } + const cap = (arr: string[], max: number) => arr.map((s) => (s.length > max ? s.slice(0, max) : s)) + + // Generous pre-cap (#881): fine for the native path (num_ctx=8192) but can still exceed a + // 2048-context fallback on dense content. The context-length retry below is the hard backstop. + const safeInput = cap(input, OllamaService.EMBED_MAX_INPUT_CHARS) + try { - // Prefer Ollama native endpoint (supports batch input natively) + return await this._embedWithFallback(model, safeInput) + } catch (err) { + if (!OllamaService.isContextLengthError(err)) throw err + // One or more chunks exceeded the model's context even after the pre-cap — typically an + // older Ollama that ignores num_ctx for embeddings, or the OpenAI-compat fallback path. + // Retry once, truncated hard enough to fit a 2048-token context at any density, so the + // chunk is embedded (truncated) instead of dropped and the job doesn't storm. + const hardCapped = cap(input, OllamaService.EMBED_CONTEXT_SAFE_CHARS) + const reduced = hardCapped.reduce((n, s, i) => (s.length < safeInput[i].length ? n + 1 : n), 0) + logger.warn( + '[OllamaService] embed: context-length overflow; retrying %d/%d inputs hard-capped at %d chars', + reduced, + input.length, + OllamaService.EMBED_CONTEXT_SAFE_CHARS + ) + return await this._embedWithFallback(model, hardCapped) + } + } + + /** + * Single embed attempt: native /api/embed first, then the OpenAI-compat /v1/embeddings fallback. + * Both paths request num_ctx/truncate (Ollama's OpenAI-compat shim forwards them). A context-length + * error from the native path is re-thrown rather than falling back, because the fallback has a + * smaller effective context and would only fail the same way — the caller (embed) retries it + * truncated instead. + */ + private async _embedWithFallback(model: string, input: string[]): Promise<{ embeddings: number[][] }> { + try { + // Pass num_ctx explicitly so we don't depend on the embedding model's modelfile defaults. + // Some installs ship nomic-embed-text:v1.5 with num_ctx=2048; 8192 matches its RoPE-extrapolated + // max. truncate:true is a server-side net for any chunk that still overshoots. const response = await axios.post( `${this.baseUrl}/api/embed`, - { model, input }, + { + model, + input, + truncate: true, + options: { num_ctx: 8192 }, + }, { timeout: 60000 } ) // Some backends (e.g. LM Studio) return HTTP 200 for unknown endpoints with an incompatible @@ -374,16 +579,134 @@ export class OllamaService { throw new Error('Invalid /api/embed response — missing embeddings array') } return { embeddings: response.data.embeddings } - } catch { - // Fall back to OpenAI-compatible /v1/embeddings - // Explicitly request float format — some backends (e.g. LM Studio) don't reliably - // implement the base64 encoding the OpenAI SDK requests by default. - logger.info('[OllamaService] /api/embed unavailable, falling back to /v1/embeddings') - const results = await this.openai.embeddings.create({ model, input, encoding_format: 'float' }) + } catch (err) { + // Let context-length errors bubble so embed() can retry with a smaller cap; the fallback + // endpoint (smaller effective context, no num_ctx honored on older Ollama) can't help here. + if (OllamaService.isContextLengthError(err)) throw err + // Log the original error so we know *why* we fell back. Earlier bare catches here masked + // recurring failures for months (#369, #670, #881). + logger.warn( + '[OllamaService] /api/embed failed, falling back to /v1/embeddings: %s', + err instanceof Error ? err.message : String(err) + ) + // Fall back to OpenAI-compatible /v1/embeddings. Explicitly request float format — some + // backends (e.g. LM Studio) don't reliably implement the base64 the OpenAI SDK defaults to. + // truncate/num_ctx are forwarded by Ollama's OpenAI-compat shim; the SDK types omit them, + // hence the cast. We only ever talk to a local Ollama here, not real OpenAI. + const results = await this.openai!.embeddings.create({ + model, + input, + encoding_format: 'float', + truncate: true, + options: { num_ctx: 8192 }, + } as any) return { embeddings: results.data.map((e) => e.embedding as number[]) } } } + /** + * Returns true if Ollama is currently running an embedding model with non-zero VRAM + * (i.e., GPU-offloaded). Returns false if the model is running CPU-only OR if it's + * not currently loaded OR if /api/ps is unreachable. + * + * Used by EmbedFileJob to pace continuation batches when the embedding model is + * CPU-bound — sustained 100% CPU on a multi-batch ZIM ingestion can starve other + * services (sshd, etc.) hard enough to require a power-cycle. AMD ROCm installs + * hit this today because Ollama's ROCm build doesn't accelerate nomic-bert; on + * NVIDIA, nomic-embed-text runs at 100% GPU and pacing is unnecessary. + * + * Only the Ollama-native endpoint is supported — backends that expose + * `/v1/embeddings` (LM Studio, llama.cpp) don't surface placement info. + */ + public async isEmbeddingGpuAccelerated(): Promise { + await this._ensureDependencies() + if (!this.baseUrl) return false + + try { + const response = await axios.get(`${this.baseUrl}/api/ps`, { timeout: 5000 }) + const models: Array<{ name?: string; size_vram?: number }> = response.data?.models ?? [] + // Match any loaded model whose name signals it's an embedding model. + // nomic-embed-text, mxbai-embed-large, snowflake-arctic-embed, etc. all follow this convention. + return models.some( + (m) => m.name?.toLowerCase().includes('embed') && (m.size_vram ?? 0) > 0 + ) + } catch (err: any) { + // /api/ps unreachable (Ollama down, non-native backend, etc.) — fail closed: assume CPU, + // which means we'll pace. Better to over-pace than risk box-killing CPU saturation. + logger.warn( + `[OllamaService] Could not check embedding placement via /api/ps: ${err?.message ?? err}` + ) + return false + } + } + + /** + * Enforces the "at most one chat model resident in VRAM" invariant by firing + * `keep_alive: 0` against every currently-loaded model except (a) the + * embedding model (always exempt) and (b) `targetModel` (the one we want + * loaded next — leaving it alone preserves a hot model when the target is + * already loaded). + * + * Best-effort: queries `/api/ps` and POSTs unload hints in parallel. Network + * or Ollama errors are swallowed and logged — neither chat nor page-load + * should fail just because the unload housekeeping didn't go through. + * + * Returns the list of model names that were sent the unload hint, so the + * caller (and tests) can confirm what actually happened. + * + * Pass `targetModel: null` to unload every chat model (used for the future + * "free up VRAM" path; not exposed yet but the helper supports it). + * + * Note that `keep_alive: 0` is a post-completion hint, not a force-kill — + * Ollama defers eviction until the runner is idle, so in-flight inference + * on the same model is never interrupted. See the design doc for the race + * analysis behind this. + */ + public async unloadAllChatModelsExcept(targetModel: string | null): Promise { + await this._ensureDependencies() + if (!this.baseUrl) return [] + + let loadedModels: string[] = [] + try { + const response = await axios.get(`${this.baseUrl}/api/ps`, { timeout: 5000 }) + loadedModels = (response.data?.models ?? []) + .map((m: { name?: string }) => m.name) + .filter((name: unknown): name is string => typeof name === 'string') + } catch (err: any) { + logger.warn( + `[OllamaService] unloadAllChatModelsExcept: /api/ps unreachable, skipping unload sweep: ${err?.message ?? err}` + ) + return [] + } + + const toUnload = loadedModels.filter( + (name) => name !== EMBEDDING_MODEL_NAME && name !== targetModel + ) + + await Promise.all( + toUnload.map(async (modelName) => { + try { + await axios.post( + `${this.baseUrl}/api/generate`, + { model: modelName, prompt: '', keep_alive: 0 }, + { timeout: 10000 } + ) + } catch (err: any) { + logger.warn( + `[OllamaService] Failed to send unload hint for ${modelName}: ${err?.message ?? err}` + ) + } + }) + ) + + if (toUnload.length > 0) { + logger.info( + `[OllamaService] Sent unload hint for ${toUnload.length} chat model(s): ${toUnload.join(', ')}` + ) + } + return toUnload + } + public async getModels(includeEmbeddings = false): Promise { await this._ensureDependencies() if (!this.baseUrl) { @@ -628,10 +951,19 @@ export class OllamaService { }) } - private broadcastDownloadProgress(model: string, percent: number) { + private broadcastDownloadProgress( + model: string, + percent: number, + jobId?: string, + bytes?: { downloadedBytes: number; totalBytes: number } + ) { + // Conditional spread on jobId/bytes — Transmit's Broadcastable type rejects fields whose + // value is `undefined`, so we omit each key entirely when its value isn't available. transmit.broadcast(BROADCAST_CHANNELS.OLLAMA_MODEL_DOWNLOAD, { model, percent, + ...(jobId ? { jobId } : {}), + ...(bytes ? { downloadedBytes: bytes.downloadedBytes, totalBytes: bytes.totalBytes } : {}), timestamp: new Date().toISOString(), }) logger.info(`[OllamaService] Download progress for model "${model}": ${percent}%`) diff --git a/admin/app/services/queue_service.ts b/admin/app/services/queue_service.ts index fa3a050..5e31e2f 100644 --- a/admin/app/services/queue_service.ts +++ b/admin/app/services/queue_service.ts @@ -1,9 +1,25 @@ import { Queue } from 'bullmq' import queueConfig from '#config/queue' +// Process-wide singleton. Instantiating a fresh QueueService per dispatch / +// status lookup leaks connections, and under sustained job churn (e.g. +// multi-batch ZIM ingestion enqueueing a continuation every few seconds) it +// saturates Redis's maxclients within hours. All queues additionally reuse the +// single shared ioredis instance exported from #config/queue (#885). export class QueueService { private queues: Map = new Map() + private static _instance: QueueService | null = null + + private constructor() {} + + static getInstance(): QueueService { + if (!QueueService._instance) { + QueueService._instance = new QueueService() + } + return QueueService._instance + } + getQueue(name: string): Queue { if (!this.queues.has(name)) { const queue = new Queue(name, { @@ -18,5 +34,6 @@ export class QueueService { for (const queue of this.queues.values()) { await queue.close() } + this.queues.clear() } } diff --git a/admin/app/services/rag_service.ts b/admin/app/services/rag_service.ts index 0e9550e..29b65cf 100644 --- a/admin/app/services/rag_service.ts +++ b/admin/app/services/rag_service.ts @@ -16,10 +16,28 @@ import { removeStopwords } from 'stopword' import { randomUUID } from 'node:crypto' import { join, resolve, sep } from 'node:path' import KVStore from '#models/kv_store' +import KbIngestState from '#models/kb_ingest_state' +import { decideScanAction, type IngestPolicy } from '../utils/kb_ingest_decision.js' +import { decideContentReindex, type ReindexOutcome } from '../utils/content_reindex_decision.js' +import KbRatioRegistry from '#models/kb_ratio_registry' +import { decideWarnings } from '../utils/kb_warning_decision.js' +import type { FileWarning, FileWarningsResult, StoredFileInfo } from '../../types/rag.js' +import type { KbIngestStateValue } from '../../types/kb_ingest_state.js' import { ZIMExtractionService } from './zim_extraction_service.js' import { ZIM_BATCH_SIZE } from '../../constants/zim_extraction.js' +import { EMBEDDING_MODEL_NAME } from '../../constants/ollama.js' import { ProcessAndEmbedFileResponse, ProcessZIMFileResponse, RAGResult, RerankedRAGResult } from '../../types/rag.js' +export type EmbedSingleFileFailureCode = + | 'not_found' + | 'inflight' + | 'delete_failed' + | 'dispatch_failed' + +export type EmbedSingleFileResult = + | { success: true; message: string } + | { success: false; code: EmbedSingleFileFailureCode; message: string } + @inject() export class RagService { private qdrant: QdrantClient | null = null @@ -28,8 +46,11 @@ export class RagService { private resolvedEmbeddingModel: string | null = null public static UPLOADS_STORAGE_PATH = 'storage/kb_uploads' public static CONTENT_COLLECTION_NAME = 'nomad_knowledge_base' - public static EMBEDDING_MODEL = 'nomic-embed-text:v1.5' public static EMBEDDING_DIMENSION = 768 // Nomic Embed Text v1.5 dimension is 768 + // Upper bound on distinct sources returned by Qdrant's facet API. Real + // NOMADs cap out at a few hundred ZIM files + uploaded PDFs; 10k leaves + // generous headroom without paying the cost of an unbounded request. + public static FACET_SOURCE_LIMIT = 10_000 public static MODEL_CONTEXT_LENGTH = 2048 // nomic-embed-text has 2K token context public static MAX_SAFE_TOKENS = 1600 // Leave buffer for prefix and tokenization variance public static TARGET_TOKENS_PER_CHUNK = 1500 // Target 1500 tokens per chunk for embedding @@ -52,14 +73,33 @@ export class RagService { this.qdrantInitPromise = (async () => { const qdrantUrl = await this.dockerService.getServiceURL(SERVICE_NAMES.QDRANT) if (!qdrantUrl) { - throw new Error('Qdrant service is not installed or running.') + throw new Error('Qdrant vector database is offline. Restart the AI Assistant service in Settings to restore the Knowledge Base.') } this.qdrant = new QdrantClient({ url: qdrantUrl }) - })() + })().catch((err) => { + this.qdrantInitPromise = null + this.qdrant = null + throw err + }) } return this.qdrantInitPromise } + public async checkQdrantHealth(): Promise<{ online: boolean; message?: string }> { + try { + await this._ensureDependencies() + await this.qdrant!.getCollections() + return { online: true } + } catch { + this.qdrant = null + this.qdrantInitPromise = null + return { + online: false, + message: 'Qdrant vector database is offline. Restart the AI Assistant service in Settings to restore the Knowledge Base.', + } + } + } + private async _ensureDependencies() { if (!this.qdrant) { await this._initializeQdrantClient() @@ -251,25 +291,25 @@ export class RagService { if (!this.embeddingModelVerified) { const allModels = await this.ollamaService.getModels(true) const embeddingModel = - allModels.find((model) => model.name === RagService.EMBEDDING_MODEL) ?? + allModels.find((model) => model.name === EMBEDDING_MODEL_NAME) ?? allModels.find((model) => model.name.toLowerCase().includes('nomic-embed-text')) if (!embeddingModel) { try { - const downloadResult = await this.ollamaService.downloadModel(RagService.EMBEDDING_MODEL) + const downloadResult = await this.ollamaService.downloadModel(EMBEDDING_MODEL_NAME) if (!downloadResult.success) { throw new Error(downloadResult.message || 'Unknown error during model download') } } catch (modelError) { logger.error( - `[RAG] Embedding model ${RagService.EMBEDDING_MODEL} not found locally and failed to download:`, + `[RAG] Embedding model ${EMBEDDING_MODEL_NAME} not found locally and failed to download:`, modelError ) this.embeddingModelVerified = false return null } } - this.resolvedEmbeddingModel = embeddingModel?.name ?? RagService.EMBEDDING_MODEL + this.resolvedEmbeddingModel = embeddingModel?.name ?? EMBEDDING_MODEL_NAME this.embeddingModelVerified = true } @@ -326,7 +366,7 @@ export class RagService { logger.debug(`[RAG] Embedding batch ${batchIdx + 1}/${totalBatches} (${batch.length} chunks)`) - const response = await this.ollamaService.embed(this.resolvedEmbeddingModel ?? RagService.EMBEDDING_MODEL, batch) + const response = await this.ollamaService.embed(this.resolvedEmbeddingModel ?? EMBEDDING_MODEL_NAME, batch) embeddings.push(...response.embeddings) @@ -481,13 +521,13 @@ export class RagService { `[RAG] Extracting ZIM content (batch: offset=${startOffset}, size=${ZIM_BATCH_SIZE})` ) - const zimChunks = await zimExtractionService.extractZIMContent(filepath, { - startOffset, - batchSize: ZIM_BATCH_SIZE, - }) + const { chunks: zimChunks, totalArticles } = await zimExtractionService.extractZIMContent( + filepath, + { startOffset, batchSize: ZIM_BATCH_SIZE } + ) logger.info( - `[RAG] Extracted ${zimChunks.length} chunks from ZIM file with enhanced metadata` + `[RAG] Extracted ${zimChunks.length} chunks from ZIM file with enhanced metadata (file totalArticles=${totalArticles})` ) // Process each chunk individually with its metadata @@ -532,9 +572,12 @@ export class RagService { } } - // Count unique articles processed in this batch + // Count unique articles processed in this batch. hasMoreBatches gates on the article + // count — zimChunks.length counts section-level chunks (multiple per article under the + // 'structured' strategy), so comparing it to ZIM_BATCH_SIZE (an article limit) caps + // processing at the first batch for any real archive. const articlesInBatch = new Set(zimChunks.map((c) => c.documentId)).size - const hasMoreBatches = zimChunks.length === ZIM_BATCH_SIZE + const hasMoreBatches = articlesInBatch >= ZIM_BATCH_SIZE logger.info( `[RAG] Successfully embedded ${totalChunks} total chunks from ${articlesInBatch} articles (hasMore: ${hasMoreBatches})` @@ -560,6 +603,7 @@ export class RagService { chunks: totalChunks, hasMoreBatches, articlesProcessed: articlesInBatch, + totalArticles, } } @@ -779,12 +823,12 @@ export class RagService { if (!this.embeddingModelVerified) { const allModels = await this.ollamaService.getModels(true) const embeddingModel = - allModels.find((model) => model.name === RagService.EMBEDDING_MODEL) ?? + allModels.find((model) => model.name === EMBEDDING_MODEL_NAME) ?? allModels.find((model) => model.name.toLowerCase().includes('nomic-embed-text')) if (!embeddingModel) { logger.warn( - `[RAG] ${RagService.EMBEDDING_MODEL} not found. Cannot perform similarity search.` + `[RAG] ${EMBEDDING_MODEL_NAME} not found. Cannot perform similarity search.` ) this.embeddingModelVerified = false return [] @@ -816,7 +860,7 @@ export class RagService { return [] } - const response = await this.ollamaService.embed(this.resolvedEmbeddingModel ?? RagService.EMBEDDING_MODEL, [prefixedQuery]) + const response = await this.ollamaService.embed(this.resolvedEmbeddingModel ?? EMBEDDING_MODEL_NAME, [prefixedQuery]) // Perform semantic search with a higher limit to enable reranking const searchLimit = limit * 3 // Get more results for reranking @@ -968,6 +1012,29 @@ export class RagService { } } + // Boost when query keywords match the chunk's section/article heading. ZIM + // content carries this structural metadata (already fetched, no extra cost), + // and a query term appearing in a heading is a strong relevance signal that + // body-text matching alone misses. Same conservative, score-scaled, diminishing + // -returns shape as the boosts above, so it can't promote a weak match. + const headingText = [result.full_title, result.section_title, result.article_title] + .filter(Boolean) + .join(' ') + .toLowerCase() + if (headingText) { + const headingHits = queryKeywords.filter((kw) => + headingText.includes(kw.toLowerCase()) + ).length + if (headingHits > 0) { + const headingRatio = headingHits / Math.max(queryKeywords.length, 1) + const headingBoost = Math.sqrt(headingRatio) * 0.1 * result.score + logger.debug( + `[RAG] Heading match: ${headingHits}/${queryKeywords.length} - Boost: ${headingBoost.toFixed(3)}` + ) + finalScore += headingBoost + } + } + finalScore = Math.min(1.0, finalScore + keywordBoost) return { @@ -1013,44 +1080,260 @@ export class RagService { * Retrieve all unique source files that have been stored in the knowledge base. * @returns Array of unique full source paths */ - public async getStoredFiles(): Promise { + public async hasDocuments(): Promise { + try { + await this._ensureCollection(RagService.CONTENT_COLLECTION_NAME, RagService.EMBEDDING_DIMENSION) + const collectionInfo = await this.qdrant!.getCollection(RagService.CONTENT_COLLECTION_NAME) + return (collectionInfo.points_count ?? 0) > 0 + } catch { + return false + } + } + + public async getStoredFiles(): Promise { try { await this._ensureCollection( RagService.CONTENT_COLLECTION_NAME, RagService.EMBEDDING_DIMENSION ) + // Use Qdrant's facet API to enumerate distinct `source` values in one + // call. The previous scroll-loop walked every point in the collection + // (3M+ on a fully-ingested NOMAD) just to learn the ~40 unique sources, + // which made this endpoint take 50+ seconds. Facet returns the unique + // values directly. `exact: true` so the count we'll reuse for warnings + // matches what would be reported by an exhaustive walk. const sources = new Set() - let offset: string | number | null | Record = null - const batchSize = 100 + const facetResult = await this.qdrant!.facet(RagService.CONTENT_COLLECTION_NAME, { + key: 'source', + limit: RagService.FACET_SOURCE_LIMIT, + exact: true, + }) + for (const hit of facetResult.hits) { + if (typeof hit.value === 'string') sources.add(hit.value) + } - // Scroll through all points in the collection (only fetch source field) - do { - const scrollResult = await this.qdrant!.scroll(RagService.CONTENT_COLLECTION_NAME, { - limit: batchSize, - offset: offset, - with_payload: ['source'], - with_vector: false, - }) + // Union the Qdrant-derived list with the disk-backed file paths the + // state machine has tracked. Without this, files known to the scanner + // but with zero embedded chunks (video-only ZIMs, failed-before-first- + // chunk ingestions, browse_only opt-outs) never get a row in Stored + // Files — which means warnings keyed off those files (#895 zero_chunks + // in particular) have no row to attach to. The state machine is the + // authoritative "what's on disk?" view; Qdrant is "what made it into + // the vector store?". Both are needed to render the KB UI honestly. + const stateByPath = new Map() + try { + const stateRows = await KbIngestState.query().select('file_path', 'state', 'chunks_embedded') + for (const row of stateRows) { + sources.add(row.file_path) + stateByPath.set(row.file_path, { + state: row.state, + chunks_embedded: row.chunks_embedded, + }) + } + } catch (error) { + // Non-fatal: if the state machine query fails for any reason we'd + // rather return the Qdrant-derived list than 500 the whole panel. + logger.warn( + { err: error }, + '[RagService.getStoredFiles] state-machine union skipped; returning Qdrant-only list' + ) + } - // Extract unique source values from payloads - scrollResult.points.forEach((point) => { - const source = point.payload?.source - if (source && typeof source === 'string') { - sources.add(source) + const uploadsAbsPath = resolve(join(process.cwd(), RagService.UPLOADS_STORAGE_PATH)) + return await Promise.all( + Array.from(sources).map(async (source) => { + const row = stateByPath.get(source) + const fileName = source.split(/[/\\]/).at(-1) ?? source + const isUserUpload = resolve(source).startsWith(uploadsAbsPath + sep) + const stats = await getFileStatsIfExists(source) + return { + source, + state: row?.state ?? null, + chunksEmbedded: row?.chunks_embedded ?? 0, + fileName, + size: stats?.size ?? null, + uploadedAt: stats?.modifiedTime.toISOString() ?? null, + isUserUpload, } }) - - offset = scrollResult.next_page_offset || null - } while (offset !== null) - - return Array.from(sources) + ) } catch (error) { logger.error('Error retrieving stored files:', error) return [] } } + /** + * Resolve a stored-file `source` to an absolute disk path, but only if the + * path lives under the uploads directory. Mirrors the docs_service traversal + * guard: resolve, then require the resolved path to be strictly inside the + * base + path separator (so siblings of `kb_uploads` can't slip through). + * Returns null for anything else — ZIMs, admin docs, README, or paths + * outside the app entirely. The viewer/download endpoints lean on this so + * they don't need to repeat the check. + */ + private resolveUploadPath(source: string): string | null { + const uploadsAbsPath = resolve(join(process.cwd(), RagService.UPLOADS_STORAGE_PATH)) + const resolved = resolve(source) + if (!resolved.startsWith(uploadsAbsPath + sep)) return null + return resolved + } + + private static readonly VIEWABLE_TEXT_EXTENSIONS: ReadonlySet = new Set([ + 'md', 'txt', 'csv', 'json', 'yaml', 'yml', 'toml', 'xml', 'html', + ]) + + /** + * Read the text content of a user-uploaded file for in-browser viewing. + * Returns null when the source is outside uploads, missing, or not a + * recognized text extension. The extension allowlist is intentionally narrow + * — PDFs/EPUBs/ZIMs round-trip through Download, not the viewer. + */ + public async readFileContent( + source: string + ): Promise<{ content: string; extension: string; fileName: string } | null> { + const resolved = this.resolveUploadPath(source) + if (!resolved) return null + + const extension = resolved.split('.').at(-1)?.toLowerCase() ?? '' + if (!RagService.VIEWABLE_TEXT_EXTENSIONS.has(extension)) return null + + const stats = await getFileStatsIfExists(resolved) + if (!stats) return null + + try { + const { readFile } = await import('node:fs/promises') + const content = await readFile(resolved, 'utf-8') + const fileName = resolved.split(/[/\\]/).at(-1) ?? resolved + return { content, extension, fileName } + } catch (error) { + logger.warn({ err: error, source }, '[RagService.readFileContent] read failed') + return null + } + } + + /** + * Resolve a download-target path for a stored upload. Returns null if the + * source isn't an upload or the file is missing on disk. + */ + public async resolveDownloadPath(source: string): Promise { + const resolved = this.resolveUploadPath(source) + if (!resolved) return null + const stats = await getFileStatsIfExists(resolved) + return stats ? resolved : null + } + + /** + * Compute whether the first-chat JIT prompt should fire and surface the file + * count the banner uses in its copy ("Index your N existing files?"). The + * banner appears when the user hasn't yet picked a global ingest policy + * (`rag.defaultIngestPolicy` unset) and the scanner has actually seen at + * least one embeddable file — i.e., the prompt is actionable, not theoretical + * on a freshly-installed empty NOMAD. + * + * Once the user picks a policy (Always or Manual) via the banner buttons or + * the KB modal toggle, `shouldPrompt` flips to false for good. + */ + public async getPolicyPromptState(): Promise<{ + shouldPrompt: boolean + hasContent: boolean + totalFiles: number + }> { + const policy = await KVStore.getValue('rag.defaultIngestPolicy') + const countRow = await KbIngestState.query().count('* as total').first() + const totalFiles = Number((countRow as any)?.$extras?.total ?? 0) + return { + shouldPrompt: policy === null && totalFiles > 0, + hasContent: totalFiles > 0, + totalFiles, + } + } + + /** + * Compute conditional warnings (RFC #883 §6) for every source the scanner + * sees on disk. Returns `{ ok, warnings }` — `ok: false` distinguishes a + * computation failure (Qdrant unreachable, DB outage, FS error) from the + * healthy-but-empty case, which is critical because the whole point of this + * surface is to expose silent failures; reporting "everything healthy" when + * we couldn't actually check would reintroduce the bug we set out to fix. + * + * Per-source chunk counts come from a single Qdrant scroll over the + * collection's points; expected-chunk estimates come from the ratio + * registry. Files in the scanner's directories that have no qdrant points + * at all show up with `chunksInQdrant: 0` so Warning A can fire. + */ + public async computeFileWarnings(): Promise { + try { + await this._ensureCollection( + RagService.CONTENT_COLLECTION_NAME, + RagService.EMBEDDING_DIMENSION + ) + + // Per-source chunk count via Qdrant's facet API. Was a full scroll of + // every point in the collection, which on a fully-ingested NOMAD takes + // ~50s for a 3M-point KB just to count ~40 sources. Facet returns the + // distinct values + counts in a single call. `exact: true` because the + // counts feed Warning A's zero_chunks decision — approximate counts + // could mis-fire warnings near thresholds. + const chunksBySource = new Map() + const facetResult = await this.qdrant!.facet(RagService.CONTENT_COLLECTION_NAME, { + key: 'source', + limit: RagService.FACET_SOURCE_LIMIT, + exact: true, + }) + for (const hit of facetResult.hits) { + if (typeof hit.value === 'string') chunksBySource.set(hit.value, hit.count) + } + + // Scan the filesystem the same way scanAndSyncStorage does so Warning A + // can fire on files with zero qdrant points (the headline "video-only + // ZIM" case). + const KB_UPLOADS_PATH = join(process.cwd(), RagService.UPLOADS_STORAGE_PATH) + const ZIM_PATH = join(process.cwd(), ZIM_STORAGE_PATH) + const allSources = new Set(chunksBySource.keys()) + const sizeByPath = new Map() + + for (const dir of [KB_UPLOADS_PATH, ZIM_PATH]) { + try { + const entries = await listDirectoryContentsRecursive(dir) + for (const entry of entries) { + if (entry.type !== 'file') continue + allSources.add(entry.key) + const stat = await getFileStatsIfExists(entry.key) + if (stat) sizeByPath.set(entry.key, Number(stat.size)) + } + } catch (error: any) { + if (error?.code !== 'ENOENT') throw error + } + } + + const out: Record = {} + for (const source of allSources) { + const fileSizeBytes = sizeByPath.get(source) ?? 0 + const chunksInQdrant = chunksBySource.get(source) ?? 0 + const fileName = source.split(/[/\\]/).pop() ?? source + // ignoreCatchAll: the partial_stall warning must only fire when the + // registry has a *specific* expectation for this file. The empty-pattern + // fallback (100 chunks/MB) over-predicts wildly for atypical ZIMs that + // are mostly PDFs/images/link-outs (e.g. military-medicine), producing + // false "ingestion stalled" warnings. Suppress Warning B in that case. (#913) + const expectedChunks = + fileSizeBytes > 0 + ? await KbRatioRegistry.estimateChunks(fileName, fileSizeBytes, { ignoreCatchAll: true }) + : null + + const warnings = decideWarnings({ fileSizeBytes, chunksInQdrant, expectedChunks }) + if (warnings.length > 0) out[source] = warnings + } + + return { ok: true, warnings: out } + } catch (error) { + logger.error('[RAG] Error computing file warnings:', error) + return { ok: false, warnings: {} } + } + } + /** * Delete all Qdrant points associated with a given source path and remove * the corresponding file from disk if it lives under the uploads directory. @@ -1085,6 +1368,11 @@ export class RagService { logger.warn(`[RAG] File was removed from knowledge base but doesn't live in Nomad's uploads directory, so it can't be safely removed. Skipping deletion of physical file...`) } + // Drop the ingest state row last so the file disappears entirely. Without + // this, the next scanAndSyncStorage would see `indexed + no chunks` for a + // path that no longer exists in storage and try to re-embed nothing. + await KbIngestState.remove(source) + return { success: true, message: 'File removed from knowledge base.' } } catch (error) { logger.error('[RAG] Error deleting file from knowledge base:', error) @@ -1092,6 +1380,98 @@ export class RagService { } } + /** + * Reconcile the knowledge base after a curated content file (a ZIM) is + * replaced on disk by a newer downloaded version. Called from + * `RunDownloadJob.onComplete` once the new file is written and the old file + * has been deleted from disk. + * + * The decision (see `decideContentReindex` for the exhaustive, tested + * contract) mirrors the REPLACED file's prior indexed state instead of the + * global `rag.defaultIngestPolicy`. On a content update the user has already + * chosen whether this content belongs in the AI knowledge base, so we honor + * that choice in both directions: + * + * 1. (caller already deleted the outdated file from disk) + * 2. Qdrant not installed → no-op (no knowledge base exists) + * 3. Old file WAS indexed + Qdrant + * running → delete ONLY the old file's points + * (filter `source == oldFilePath`), drop + * its ingest-state row, and queue the new + * file for embedding — BYPASSING the + * Always/Manual policy on purpose. + * 4. Old file NOT indexed → no-op (respect the prior un-indexed / + * browse-only choice; do NOT auto-embed + * even under an Always policy) + * 5. Old indexed but Qdrant NOT + * currently running → no-op. We can't remove the stale points, + * and a queued embed job could be cleared + * before Qdrant returns. Acting half-way is + * wasteful, so we defer entirely. Accepted + * tradeoff: the old file's points linger in + * Qdrant until a future re-index; they are + * NOT auto-reaped here. + * + * Point deletion is exact: ZIM chunks are stored with `source` equal to the + * full file path (see embedAndStoreText callers), so filtering on the old path + * can only ever remove the replaced file's own points. + * + * Returns the decision outcome for logging/tests; never throws on a Qdrant + * hiccup mid-reindex (logged and surfaced as `qdrant_not_running` semantics by + * the caller's try/catch). + */ + public async reconcileReplacedContentFile(params: { + oldFilePath: string + newFilePath: string + fileName: string + }): Promise { + const { oldFilePath, newFilePath, fileName } = params + + const isReplacement = !!oldFilePath && oldFilePath !== newFilePath + + // Step 2: is the knowledge base even installed? Short-circuits before any + // KB-state lookup, per the spec ordering. + const qdrantInstalled = isReplacement + ? !!(await this.dockerService.getServiceURL(SERVICE_NAMES.QDRANT)) + : false + + // Steps 3/4: was the OUTDATED file actually indexed? The state row is the + // authoritative signal (RFC #883) — chunk presence alone can't distinguish + // a fully-indexed file from a stalled ingestion. + let oldFileWasIndexed = false + if (isReplacement && qdrantInstalled) { + const oldState = await KbIngestState.query().where('file_path', oldFilePath).first() + oldFileWasIndexed = oldState?.state === 'indexed' + } + + // Step 5: only check liveness once we know we'd otherwise act. The health + // check is a real network round-trip, so we avoid it on the common no-op + // paths above. + let qdrantRunning = false + if (isReplacement && qdrantInstalled && oldFileWasIndexed) { + qdrantRunning = (await this.checkQdrantHealth()).online + } + + const outcome = decideContentReindex({ + isReplacement, + qdrantInstalled, + oldFileWasIndexed, + qdrantRunning, + }) + + if (outcome === 'reindex') { + // Order matters: remove the stale points and state row BEFORE queueing the + // new embed so a fresh index can't be conflated with the old one. Each step + // targets only `oldFilePath` / `newFilePath` — never another resource. + await this._deletePointsBySource(oldFilePath) + await KbIngestState.remove(oldFilePath) + const { EmbedFileJob } = await import('#jobs/embed_file_job') + await EmbedFileJob.dispatch({ fileName, filePath: newFilePath }) + } + + return outcome + } + public async discoverNomadDocs(force?: boolean): Promise<{ success: boolean; message: string }> { try { const README_PATH = join(process.cwd(), 'README.md') @@ -1149,12 +1529,182 @@ export class RagService { } } + /** + * Walk kb_uploads and zim storage directories, returning the full path of + * every embeddable file. Non-embeddable types (e.g. kiwix-library.xml) are + * filtered out so they aren't dispatched only to fail with "Unsupported file + * type" and retry on every sync. + */ + private async _discoverKbFiles(): Promise { + const KB_UPLOADS_PATH = join(process.cwd(), RagService.UPLOADS_STORAGE_PATH) + const ZIM_PATH = join(process.cwd(), ZIM_STORAGE_PATH) + const filesInStorage: string[] = [] + + for (const [label, dirPath] of [ + [RagService.UPLOADS_STORAGE_PATH, KB_UPLOADS_PATH] as const, + [ZIM_STORAGE_PATH, ZIM_PATH] as const, + ]) { + try { + const contents = await listDirectoryContentsRecursive(dirPath) + contents.forEach((entry) => { + if (entry.type === 'file') filesInStorage.push(entry.key) + }) + logger.debug(`[RAG] Found ${contents.length} files in ${label}`) + } catch (error) { + if (error.code === 'ENOENT') { + logger.debug(`[RAG] ${label} directory does not exist, skipping`) + } else { + throw error + } + } + } + + return filesInStorage.filter((f) => determineFileType(f) !== 'unknown') + } + + /** + * Dispatch one EmbedFileJob per file path. Returns honest counts: `queuedCount` + * is jobs newly enqueued, `dedupedCount` is jobs that hit BullMQ's per-file + * jobId dedupe (an existing :completed/:waiting/etc. entry was returned + * instead of a new enqueue), and `failedPaths` lists files whose dispatch + * threw. Pass `force: true` for bulk callers that need to bypass dedupe + * entirely. Per-file errors are logged but don't abort the batch — callers + * must inspect `failedPaths` to surface partial failure to the operator. + */ + private async _dispatchEmbedJobsFor( + filePaths: string[], + options?: { force?: boolean } + ): Promise<{ queuedCount: number; dedupedCount: number; failedPaths: string[] }> { + const { EmbedFileJob } = await import('#jobs/embed_file_job') + let queuedCount = 0 + let dedupedCount = 0 + const failedPaths: string[] = [] + for (const filePath of filePaths) { + try { + const fileName = filePath.split(/[/\\]/).pop() || filePath + const stats = await getFileStatsIfExists(filePath) + const result = await EmbedFileJob.dispatch( + { + filePath, + fileName, + fileSize: stats?.size, + }, + { force: options?.force } + ) + if (result.created) { + queuedCount++ + } else { + dedupedCount++ + } + } catch (fileError) { + failedPaths.push(filePath) + logger.error(`[RAG] Error dispatching job for file ${filePath}:`, fileError) + } + } + return { queuedCount, dedupedCount, failedPaths } + } + + /** + * Dispatch an embed job for a single stored file. Wraps `_dispatchEmbedJobsFor` + * with the safety checks needed for a user-triggered per-row action: + * 1. The source must be known to the scanner OR have a state row — prevents + * arbitrary path dispatch from the public API. + * 2. We refuse if any inflight job (waiting/active/delayed/paused) already + * targets this filePath. Otherwise a double-click or a rapid retry could + * enqueue duplicate jobs, producing duplicate chunks. + * 3. When `force` is true (Re-embed of an already-indexed file), we + * pre-delete the prior Qdrant points so the new run doesn't stack on + * top of the old ones. For force=false (Index of a never-embedded file), + * there's nothing to clear. + */ + public async embedSingleFile( + source: string, + force: boolean = false + ): Promise { + const stateRow = await KbIngestState.query().where('file_path', source).first() + if (!stateRow) { + const knownFiles = await this._discoverKbFiles() + if (!knownFiles.includes(source)) { + return { + success: false, + code: 'not_found', + message: 'File is not a tracked knowledge-base source.', + } + } + } + + const { EmbedFileJob } = await import('#jobs/embed_file_job') + const { QueueService } = await import('#services/queue_service') + const queue = QueueService.getInstance().getQueue(EmbedFileJob.queue) + const inflight = await queue.getJobs(['waiting', 'active', 'delayed', 'paused']) + if (inflight.some((j) => j.data?.filePath === source)) { + return { + success: false, + code: 'inflight', + message: 'A job for this file is already in progress. Wait for it to finish before re-queuing.', + } + } + + if (force) { + try { + await this._deletePointsBySource(source) + } catch (err) { + logger.error(`[RAG] Failed to delete prior points for ${source}; aborting re-embed:`, err) + return { + success: false, + code: 'delete_failed', + message: 'Failed to clear prior embeddings before re-embed.', + } + } + } + + const result = await this._dispatchEmbedJobsFor([source], { force }) + if (result.failedPaths.length > 0) { + return { + success: false, + code: 'dispatch_failed', + message: 'Failed to dispatch embed job for this file.', + } + } + return { + success: true, + message: force ? 'Re-embed queued for this file.' : 'Indexing queued for this file.', + } + } + + /** + * Delete all Qdrant points whose `source` payload matches the given path. + * Unlike deleteFileBySource(), this does NOT touch the file on disk — used + * by reembedAll() where the file must remain so it can be re-ingested. + */ + private async _deletePointsBySource(source: string): Promise { + await this._ensureCollection( + RagService.CONTENT_COLLECTION_NAME, + RagService.EMBEDDING_DIMENSION + ) + await this.qdrant!.delete(RagService.CONTENT_COLLECTION_NAME, { + filter: { must: [{ key: 'source', match: { value: source } }] }, + }) + } + + /** + * Returns true if the file-embeddings queue has any in-flight work + * (waiting, active, delayed, or paused). Bulk re-embed actions use this + * to refuse mid-flight to avoid racing with deletes/dispatches already + * in progress. + */ + private async _hasInflightEmbedJobs(): Promise { + const { EmbedFileJob } = await import('#jobs/embed_file_job') + const { QueueService } = await import('#services/queue_service') + const queue = QueueService.getInstance().getQueue(EmbedFileJob.queue) + const counts = await queue.getJobCounts('waiting', 'active', 'delayed', 'paused') + return (counts.waiting || 0) + (counts.active || 0) + (counts.delayed || 0) + (counts.paused || 0) > 0 + } + /** * Scans the knowledge base storage directories and syncs with Qdrant. * Identifies files that exist in storage but haven't been embedded yet, * and dispatches EmbedFileJob for each missing file. - * - * @returns Object containing success status, message, and counts of scanned/queued files */ public async scanAndSyncStorage(): Promise<{ success: boolean @@ -1165,87 +1715,106 @@ export class RagService { try { logger.info('[RAG] Starting knowledge base sync scan') - const KB_UPLOADS_PATH = join(process.cwd(), RagService.UPLOADS_STORAGE_PATH) - const ZIM_PATH = join(process.cwd(), ZIM_STORAGE_PATH) - - const filesInStorage: string[] = [] - - // Force resync of Nomad docs await this.discoverNomadDocs(true).catch((error) => { logger.error('[RAG] Error during Nomad docs discovery in sync process:', error) }) - // Scan kb_uploads directory - try { - const kbContents = await listDirectoryContentsRecursive(KB_UPLOADS_PATH) - kbContents.forEach((entry) => { - if (entry.type === 'file') { - filesInStorage.push(entry.key) - } - }) - logger.debug(`[RAG] Found ${kbContents.length} files in ${RagService.UPLOADS_STORAGE_PATH}`) - } catch (error) { - if (error.code === 'ENOENT') { - logger.debug(`[RAG] ${RagService.UPLOADS_STORAGE_PATH} directory does not exist, skipping`) - } else { - throw error - } - } + const filesInStorage = await this._discoverKbFiles() + logger.info(`[RAG] Found ${filesInStorage.length} embeddable files in storage`) - // Scan zim directory - try { - const zimContents = await listDirectoryContentsRecursive(ZIM_PATH) - zimContents.forEach((entry) => { - if (entry.type === 'file') { - filesInStorage.push(entry.key) - } - }) - logger.debug(`[RAG] Found ${zimContents.length} files in ${ZIM_STORAGE_PATH}`) - } catch (error) { - if (error.code === 'ENOENT') { - logger.debug(`[RAG] ${ZIM_STORAGE_PATH} directory does not exist, skipping`) - } else { - throw error - } - } - - logger.info(`[RAG] Found ${filesInStorage.length} total files in storage directories`) - - // Get all stored sources from Qdrant await this._ensureCollection( RagService.CONTENT_COLLECTION_NAME, RagService.EMBEDDING_DIMENSION ) + // Collect every unique `source` already in Qdrant so we can skip files + // that have already been embedded. Facet returns the distinct values in + // a single call rather than scrolling the whole collection. const sourcesInQdrant = new Set() - let offset: string | number | null | Record = null - const batchSize = 100 - - // Scroll through all points to get sources - do { - const scrollResult = await this.qdrant!.scroll(RagService.CONTENT_COLLECTION_NAME, { - limit: batchSize, - offset: offset, - with_payload: ['source'], // Only fetch source field for efficiency - with_vector: false, - }) - - scrollResult.points.forEach((point) => { - const source = point.payload?.source - if (source && typeof source === 'string') { - sourcesInQdrant.add(source) - } - }) - - offset = scrollResult.next_page_offset || null - } while (offset !== null) + const facetResult = await this.qdrant!.facet(RagService.CONTENT_COLLECTION_NAME, { + key: 'source', + limit: RagService.FACET_SOURCE_LIMIT, + exact: true, + }) + for (const hit of facetResult.hits) { + if (typeof hit.value === 'string') sourcesInQdrant.add(hit.value) + } logger.info(`[RAG] Found ${sourcesInQdrant.size} unique sources in Qdrant`) - // Find files that are in storage but not in Qdrant - const filesToEmbed = filesInStorage.filter((filePath) => !sourcesInQdrant.has(filePath)) + // Load all known per-file ingest states. The state row is authoritative + // over the "any chunks in Qdrant" heuristic — it captures user choices + // (browse_only) and terminal outcomes (failed, stalled) that aren't visible + // from Qdrant alone. See RFC #883 for the full state machine. + const stateRows = await KbIngestState.all() + const stateByPath = new Map(stateRows.map((row) => [row.file_path, row])) - logger.info(`[RAG] Found ${filesToEmbed.length} files that need embedding`) + // Non-embeddable files (e.g. kiwix-library.xml in /storage/zim) would otherwise + // be dispatched to EmbedFileJob, fail with "Unsupported file type", and retry + // on every sync — filter them out before state decisions. + const embeddableFiles = filesInStorage.filter( + (filePath) => determineFileType(filePath) !== 'unknown' + ) + + // Read the global ingest policy. Unset is treated as 'Always' so legacy + // installs keep their current behavior until the user explicitly opts + // into Manual mode from the KB panel. + const policyRaw = await KVStore.getValue('rag.defaultIngestPolicy') + const policy: IngestPolicy = policyRaw === 'Manual' ? 'Manual' : 'Always' + + const filesToEmbed: string[] = [] + let backfilled = 0 + let createdRows = 0 + let createdPending = 0 + let skipped = 0 + + for (const filePath of embeddableFiles) { + const stateRow = stateByPath.get(filePath) ?? null + const action = decideScanAction(stateRow, sourcesInQdrant.has(filePath), policy) + + switch (action.kind) { + case 'skip': + skipped++ + break + case 'backfill_indexed': + // Pre-RFC install (or a fresh admin pointed at an existing Qdrant volume): + // chunks already exist with no state row, so trust Qdrant and record + // `indexed` without re-embedding. chunks_embedded is left 0 because + // we don't count points-per-source during the scroll above. + await KbIngestState.create({ + file_path: filePath, + state: 'indexed', + chunks_embedded: 0, + }) + backfilled++ + break + case 'create_pending': + // Manual mode: record that we've seen the file but don't dispatch. + // The KB panel surfaces a per-card "Index" affordance for these. + await KbIngestState.create({ + file_path: filePath, + state: 'pending_decision', + chunks_embedded: 0, + }) + createdPending++ + break + case 'dispatch': + if (action.createStateRow) { + await KbIngestState.create({ + file_path: filePath, + state: 'pending_decision', + chunks_embedded: 0, + }) + createdRows++ + } + filesToEmbed.push(filePath) + break + } + } + + logger.info( + `[RAG] Scan results (policy=${policy}): ${filesToEmbed.length} to embed, ${backfilled} backfilled, ${createdRows} new pending, ${createdPending} waiting on user, ${skipped} skipped` + ) if (filesToEmbed.length === 0) { return { @@ -1256,41 +1825,193 @@ export class RagService { } } - // Import EmbedFileJob dynamically to avoid circular dependencies - const { EmbedFileJob } = await import('#jobs/embed_file_job') - - // Dispatch jobs for files that need embedding - let queuedCount = 0 - for (const filePath of filesToEmbed) { - try { - const fileName = filePath.split(/[/\\]/).pop() || filePath - const stats = await getFileStatsIfExists(filePath) - - logger.info(`[RAG] Dispatching embed job for: ${fileName}`) - await EmbedFileJob.dispatch({ - filePath: filePath, - fileName: fileName, - fileSize: stats?.size, - }) - queuedCount++ - logger.debug(`[RAG] Successfully dispatched job for ${fileName}`) - } catch (fileError) { - logger.error(`[RAG] Error dispatching job for file ${filePath}:`, fileError) - } - } - + const { queuedCount, dedupedCount } = await this._dispatchEmbedJobsFor(filesToEmbed) + const dedupeNote = dedupedCount > 0 ? ` (${dedupedCount} already queued)` : '' return { success: true, - message: `Scanned ${filesInStorage.length} files, queued ${queuedCount} for embedding`, + message: `Scanned ${filesInStorage.length} files, queued ${queuedCount} for embedding${dedupeNote}`, filesScanned: filesInStorage.length, filesQueued: queuedCount, } } catch (error) { logger.error('[RAG] Error scanning and syncing knowledge base:', error) - return { - success: false, - message: 'Error scanning and syncing knowledge base', + return { success: false, message: 'Error scanning and syncing knowledge base' } + } + } + + /** + * Re-embed every file on disk (per-file replace). For each discovered file: + * delete its existing Qdrant points by `source` match, then dispatch a fresh + * EmbedFileJob. Files are NOT removed from disk. Any orphan points (points + * whose source file no longer exists) are intentionally preserved — use + * resetAndRebuild() if a clean slate is required. + * + * Refuses to run if the embeddings queue already has in-flight work. + */ + public async reembedAll(): Promise<{ + success: boolean + message: string + filesScanned?: number + filesQueued?: number + failedPaths?: string[] + }> { + try { + if (await this._hasInflightEmbedJobs()) { + return { + success: false, + message: 'Embed jobs are already in progress. Wait for the queue to drain (or clean up failed jobs) before triggering a bulk re-embed.', + } } + + logger.info('[RAG] Starting full re-embed (per-file replace)') + + await this.discoverNomadDocs(true).catch((error) => { + logger.error('[RAG] Error re-running Nomad docs discovery during re-embed:', error) + }) + + const filesInStorage = await this._discoverKbFiles() + + await this._ensureCollection( + RagService.CONTENT_COLLECTION_NAME, + RagService.EMBEDDING_DIMENSION + ) + + // Per-file: delete-then-dispatch. We tried dispatch-then-delete but that + // opens a race where a fast worker can write new points before our + // delete-by-source runs, wiping both. Instead we delete first, then + // dispatch — and if dispatch fails, we surface the failed paths in the + // response so the operator knows which files dropped out (rather than + // silently leaving them unindexed). A subsequent sync rescan picks them + // back up. Note: a delete-failure aborts the per-file pair (we don't + // dispatch a job whose old points are still present, since they'd live + // alongside the new vectors forever). + const { EmbedFileJob } = await import('#jobs/embed_file_job') + let queuedCount = 0 + const failedPaths: string[] = [] + for (const filePath of filesInStorage) { + try { + await this._deletePointsBySource(filePath) + } catch (err) { + logger.error(`[RAG] Failed to delete prior points for ${filePath}; skipping dispatch:`, err) + failedPaths.push(filePath) + continue + } + try { + const fileName = filePath.split(/[/\\]/).pop() || filePath + const stats = await getFileStatsIfExists(filePath) + const result = await EmbedFileJob.dispatch( + { filePath, fileName, fileSize: stats?.size }, + { force: true } + ) + if (result.created) queuedCount++ + } catch (fileError) { + // Old points already deleted but the new job never made it onto the + // queue. Logged + surfaced so an operator can rerun a sync. + logger.error(`[RAG] Re-embed dispatch failed for ${filePath} after delete; file is now unindexed until next sync:`, fileError) + failedPaths.push(filePath) + } + } + + logger.info( + `[RAG] Re-embed dispatched ${queuedCount}/${filesInStorage.length} files` + + (failedPaths.length > 0 ? ` (${failedPaths.length} failed)` : '') + ) + + const failureSuffix = + failedPaths.length > 0 + ? ` ${failedPaths.length} file${failedPaths.length === 1 ? '' : 's'} failed to dispatch and are temporarily unindexed — run a sync rescan to recover.` + : '' + + return { + success: failedPaths.length === 0, + message: + `Re-embedding ${queuedCount} file${queuedCount === 1 ? '' : 's'}. Existing points were replaced.` + + failureSuffix, + filesScanned: filesInStorage.length, + filesQueued: queuedCount, + ...(failedPaths.length > 0 ? { failedPaths } : {}), + } + } catch (error) { + logger.error('[RAG] Error during re-embed:', error) + return { success: false, message: 'Error during re-embed' } + } + } + + /** + * Destructive rebuild. Drops the entire Qdrant collection (wiping every + * point including orphans), recreates it with the correct dimension, clears + * the Nomad-docs discovery flag, then dispatches an EmbedFileJob for every + * file currently on disk. + * + * Refuses to run if the embeddings queue already has in-flight work. + */ + public async resetAndRebuild(): Promise<{ + success: boolean + message: string + filesScanned?: number + filesQueued?: number + failedPaths?: string[] + }> { + try { + if (await this._hasInflightEmbedJobs()) { + return { + success: false, + message: 'Embed jobs are already in progress. Wait for the queue to drain (or clean up failed jobs) before triggering a reset.', + } + } + + logger.info('[RAG] Starting destructive reset & rebuild') + + await this._initializeQdrantClient() + try { + await this.qdrant!.deleteCollection(RagService.CONTENT_COLLECTION_NAME) + logger.info(`[RAG] Dropped collection ${RagService.CONTENT_COLLECTION_NAME}`) + } catch (err) { + // Collection may not exist yet on a fresh install — log and continue. + logger.warn(`[RAG] deleteCollection failed (may not exist): ${(err as Error).message}`) + } + + await this._ensureCollection( + RagService.CONTENT_COLLECTION_NAME, + RagService.EMBEDDING_DIMENSION + ) + + // Force Nomad docs to be re-dispatched. + await KVStore.setValue('rag.docsEmbedded', false) + await this.discoverNomadDocs(true).catch((error) => { + logger.error('[RAG] Error re-running Nomad docs discovery after reset:', error) + }) + + const filesInStorage = await this._discoverKbFiles() + const { queuedCount, failedPaths } = await this._dispatchEmbedJobsFor(filesInStorage, { + force: true, + }) + + logger.info( + `[RAG] Reset complete — dispatched ${queuedCount}/${filesInStorage.length} files` + + (failedPaths.length > 0 ? ` (${failedPaths.length} failed)` : '') + ) + + // Collection was already dropped, so dispatch failures here mean the + // file is gone from Qdrant with no pending job to repopulate it. Surface + // the count + paths so the operator can rerun a sync rescan to recover. + const failureSuffix = + failedPaths.length > 0 + ? ` ${failedPaths.length} file${failedPaths.length === 1 ? '' : 's'} failed to dispatch and are temporarily unindexed — run a sync rescan to recover.` + : '' + + return { + success: failedPaths.length === 0, + message: + `Collection wiped. Queued ${queuedCount} file${queuedCount === 1 ? '' : 's'} for a full rebuild.` + + failureSuffix, + filesScanned: filesInStorage.length, + filesQueued: queuedCount, + ...(failedPaths.length > 0 ? { failedPaths } : {}), + } + } catch (error) { + logger.error('[RAG] Error during reset & rebuild:', error) + return { success: false, message: 'Error during reset & rebuild' } } } } diff --git a/admin/app/services/system_service.ts b/admin/app/services/system_service.ts index 5701de3..6f9d041 100644 --- a/admin/app/services/system_service.ts +++ b/admin/app/services/system_service.ts @@ -1,4 +1,5 @@ import Service from '#models/service' +import InstalledResource from '#models/installed_resource' import { inject } from '@adonisjs/core' import { DockerService } from '#services/docker_service' import { ServiceSlim } from '../../types/services.js' @@ -12,6 +13,7 @@ import { } from '../../types/system.js' import { SERVICE_NAMES } from '../../constants/service_names.js' import { readFileSync } from 'node:fs' +import { readFile } from 'node:fs/promises' import path, { join } from 'node:path' import { getAllFilesystems, getFile } from '../utils/fs.js' import axios from 'axios' @@ -34,29 +36,54 @@ export class SystemService { } async getInternetStatus(): Promise { - const DEFAULT_TEST_URL = 'https://1.1.1.1/cdn-cgi/trace' + // Primary endpoint stays Cloudflare's privacy-respecting utility endpoint. + // The fallbacks are hosts the application already contacts elsewhere + // (GitHub API for update checks, the Project N.O.M.A.D. API for release-note + // subscriptions), so no new third-party services are introduced. They exist + // to avoid false "offline" reports on networks that block 1.1.1.1. + const DEFAULT_TEST_URLS = [ + 'https://1.1.1.1/cdn-cgi/trace', + 'https://api.github.com', + 'https://api.projectnomad.us', + ] const MAX_ATTEMPTS = 3 - let testUrl = DEFAULT_TEST_URL - let customTestUrl = env.get('INTERNET_STATUS_TEST_URL')?.trim() + let testUrls = DEFAULT_TEST_URLS - // check that customTestUrl is a valid URL, if provided + // Resolve the test endpoint in priority order: the INTERNET_STATUS_TEST_URL + // env var always wins (legacy override for operators who intentionally point + // connectivity checks at a specific endpoint), then the UI-configurable value + // stored in KVStore, and finally the built-in defaults. + const envTestUrl = env.get('INTERNET_STATUS_TEST_URL')?.trim() + const kvTestUrl = (await KVStore.getValue('system.internetStatusTestUrl'))?.trim() + const customTestUrl = envTestUrl || kvTestUrl + + // If a custom test URL is provided and valid, use it exclusively. if (customTestUrl && customTestUrl !== '') { try { new URL(customTestUrl) - testUrl = customTestUrl + testUrls = [customTestUrl] } catch (error) { logger.warn( - `Invalid INTERNET_STATUS_TEST_URL: ${customTestUrl}. Falling back to default URL.` + `Invalid internet status test URL: ${customTestUrl}. Falling back to default URLs.` ) } } for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) { try { - const res = await axios.get(testUrl, { timeout: 5000 }) - return res.status === 200 + // Probe all test endpoints in parallel and resolve as soon as the first one + // responds. Any HTTP response (including non-2xx) means we reached the + // internet, so accept all status codes rather than requiring a strict 200. + await Promise.any( + testUrls.map((testUrl) => { + logger.debug(`[SystemService] Checking internet connectivity via: ${testUrl}`) + return axios.get(testUrl, { timeout: 5000, validateStatus: () => true }) + }) + ) + return true } catch (error) { + // Promise.any only rejects (with an AggregateError) when every endpoint failed. logger.warn( `Internet status check attempt ${attempt}/${MAX_ATTEMPTS} failed: ${error instanceof Error ? error.message : error}` ) @@ -72,6 +99,89 @@ export class SystemService { return false } + /** + * Probe Ollama startup logs for the canonical "inference compute" line that records + * which compute backend was selected. This catches silent CPU fallback (e.g. when + * /dev/kfd is mounted but ROCm initialization fails, or NVML dies after an update) + * which the older nvidia-smi exec probe could not detect. + * + * Returns the parsed library, GPU model name, and VRAM in MiB, or null when: + * - the Ollama container is not running + * - the line has not been emitted (Ollama still starting up) + * - logs show CPU-only operation (no GPU detected) + */ + async getOllamaInferenceComputeFromLogs(): Promise<{ + library: 'CUDA' | 'ROCm' + name: string + vramMiB: number + } | null> { + try { + const containers = await this.dockerService.docker.listContainers({ all: false }) + const ollamaContainer = containers.find((c) => c.Names.includes(`/${SERVICE_NAMES.OLLAMA}`)) + if (!ollamaContainer) return null + + const container = this.dockerService.docker.getContainer(ollamaContainer.Id) + + // Read logs only from the first 5 minutes after container start. The + // "inference compute" line is written once during Ollama's GPU discovery + // phase, within seconds of startup. Using tail:N here is fragile: under + // active embedding workloads we've seen >1000 lines/min, which pushes the + // line past any reasonable tail in minutes. Pinning to the startup window + // is bounded (~5 min of logs regardless of container uptime) and never + // ages out. + // + // Fall back to the previous tail:500 strategy if StartedAt is missing or + // unparseable — we can't construct a since/until window without it, but + // tail:500 is still useful when the container just started and the line + // is still recent. + const inspect = await container.inspect() + const startedAtRaw = inspect?.State?.StartedAt + const startedAtMs = startedAtRaw ? new Date(startedAtRaw).getTime() : NaN + const hasValidStartedAt = Number.isFinite(startedAtMs) && startedAtMs > 0 + + const logsOpts: { stdout: true; stderr: true; follow: false; since?: number; until?: number; tail?: number } = { + stdout: true, + stderr: true, + follow: false, + } + if (hasValidStartedAt) { + const startedAtSec = Math.floor(startedAtMs / 1000) + logsOpts.since = startedAtSec + logsOpts.until = startedAtSec + 300 // 5-minute window + } else { + logger.warn( + `[SystemService] nomad_ollama State.StartedAt missing or invalid (${startedAtRaw ?? 'undefined'}); falling back to tail:500 for inference-compute probe` + ) + logsOpts.tail = 500 + } + const buf = (await container.logs(logsOpts)) as unknown as Buffer + const logs = buf.toString('utf8') + + const lines = logs.split('\n').filter((l) => l.includes('msg="inference compute"')) + if (lines.length === 0) return null + + const lastLine = lines[lines.length - 1] + const libraryMatch = lastLine.match(/library=(CUDA|ROCm)/) + if (!libraryMatch) return null + + const descMatch = lastLine.match(/description="([^"]+)"/) + const totalMatch = lastLine.match(/total="([0-9.]+)\s*GiB"/) + + return { + library: libraryMatch[1] as 'CUDA' | 'ROCm', + name: + descMatch?.[1] || + (libraryMatch[1] === 'CUDA' ? 'NVIDIA GPU' : 'AMD GPU'), + vramMiB: totalMatch ? Math.round(Number.parseFloat(totalMatch[1]) * 1024) : 0, + } + } catch (error) { + logger.warn( + `[SystemService] Failed to probe Ollama logs for inference compute line: ${error instanceof Error ? error.message : error}` + ) + return null + } + } + async getNvidiaSmiInfo(): Promise< | Array<{ vendor: string; model: string; vram: number }> | { error: string } @@ -218,15 +328,26 @@ export class SystemService { 'installed', 'installation_status', 'ui_location', + 'custom_url', 'friendly_name', 'description', 'icon', 'powered_by', 'display_order', 'container_image', - 'available_update_version' + 'available_update_version', + 'auto_update_enabled', + 'is_custom', + 'is_user_modified', + 'is_deprecated', + 'category' ) .where('is_dependency_service', false) + // Deprecated/sunset apps stay visible only while still installed, so the user can manage and + // uninstall them — they never reappear in the install catalog once removed. + .where((q) => { + q.where('is_deprecated', false).orWhere('installed', true) + }) if (installedOnly) { query.where('installed', true) } @@ -250,10 +371,16 @@ export class SystemService { installation_status: service.installation_status, status: status ? status.status : 'unknown', ui_location: service.ui_location || '', + custom_url: service.custom_url, powered_by: service.powered_by, display_order: service.display_order, container_image: service.container_image, available_update_version: service.available_update_version, + auto_update_enabled: service.auto_update_enabled, + is_custom: service.is_custom, + is_user_modified: service.is_user_modified, + is_deprecated: service.is_deprecated, + category: service.category, }) } @@ -317,10 +444,14 @@ export class SystemService { logger.error('Error reading disk info file:', error) } - // GPU health tracking — detect when host has NVIDIA GPU but Ollama can't access it + // GPU health tracking — detect when host has a GPU runtime but Ollama can't access it. + // Primary probe: parse Ollama's "inference compute" startup log line for both NVIDIA + // and AMD. Secondary probe (NVIDIA only): nvidia-smi exec, retained as a fallback for + // hardware enrichment when log parsing has not yet captured a startup line. let gpuHealth: GpuHealthStatus = { status: 'no_gpu', hasNvidiaRuntime: false, + hasRocmRuntime: false, ollamaGpuAccessible: false, } @@ -339,28 +470,85 @@ export class SystemService { os.kernel = dockerInfo.KernelVersion } - // If si.graphics() returned no controllers (common inside Docker), - // fall back to nvidia runtime + nvidia-smi detection - if (!graphics.controllers || graphics.controllers.length === 0) { + // si.graphics() in the admin container uses lspci (pciutils ships in + // the image for AMD detection). lspci has no real VRAM info for + // discrete GPUs, so systeminformation parses the first PCI memory + // Region (BAR0, typically 1-32 MiB) as `vram`. nvidia-smi / ROCm + // tooling enrichment also can't run since neither is in the admin + // image. No real dGPU has under 256 MiB, so any discrete-GPU controller + // below that threshold needs the probes below to give us real data. + // Applies to both NVIDIA and AMD; Intel iGPUs are exempt because their + // shared-system-memory VRAM reading via lspci can legitimately be small. + const DGPU_BOGUS_VRAM_THRESHOLD_MIB = 256 + const isDiscreteGpuVendor = (vendor: string) => + /nvidia|advanced micro devices|amd|ati/i.test(vendor) + const isBogusDgpuVram = (c: { vendor?: string; vram?: number | null }) => + isDiscreteGpuVendor(c.vendor || '') && + typeof c.vram === 'number' && + c.vram < DGPU_BOGUS_VRAM_THRESHOLD_MIB + + // Clear the bogus value up front. If a probe replaces the entry below + // we get the real VRAM; if no probe succeeds (Ollama not installed, + // passthrough_failed) the UI falls back to "N/A" instead of showing + // "1 MB" / "32 MB". The lspci model/vendor strings stay since they're + // still useful for identifying the card. + const hasLspciBogusDgpuVram = (graphics.controllers || []).some(isBogusDgpuVram) + if (hasLspciBogusDgpuVram) { + for (const c of graphics.controllers) { + if (isBogusDgpuVram(c)) c.vram = null + } + } + + // Run the probes when controllers are empty (common inside Docker) or + // when lspci gave us bogus discrete-GPU BAR0 values that need replacing. + if ( + !graphics.controllers || + graphics.controllers.length === 0 || + hasLspciBogusDgpuVram + ) { const runtimes = dockerInfo.Runtimes || {} - if ('nvidia' in runtimes) { - gpuHealth.hasNvidiaRuntime = true - const nvidiaInfo = await this.getNvidiaSmiInfo() - if (Array.isArray(nvidiaInfo)) { - graphics.controllers = nvidiaInfo.map((gpu) => ({ - model: gpu.model, - vendor: gpu.vendor, - bus: '', - vram: gpu.vram, - vramDynamic: false, // assume false here, we don't actually use this field for our purposes. - })) + gpuHealth.hasNvidiaRuntime = 'nvidia' in runtimes + + // AMD doesn't register a Docker runtime. Detection sources, in priority order: + // 1. KV 'gpu.type' (set by DockerService._detectGPUType after first Ollama install) + // 2. Marker file at /app/storage/.nomad-gpu-type (written by install_nomad.sh) + // The marker file matters because the System page should reflect AMD presence + // even before AI Assistant has been installed for the first time. + let savedGpuType: string | null | undefined = await KVStore.getValue('gpu.type') as string | undefined + if (!savedGpuType) { + try { + savedGpuType = (await readFile('/app/storage/.nomad-gpu-type', 'utf8')).trim() + } catch {} + } + const amdEnabledRaw = await KVStore.getValue('ai.amdGpuAcceleration') + const amdAccelerationEnabled = String(amdEnabledRaw) !== 'false' + gpuHealth.hasRocmRuntime = savedGpuType === 'amd' && amdAccelerationEnabled + + if (gpuHealth.hasNvidiaRuntime || gpuHealth.hasRocmRuntime) { + gpuHealth.gpuVendor = gpuHealth.hasNvidiaRuntime ? 'nvidia' : 'amd' + + // Primary probe: Ollama log parsing — works for both vendors and catches silent fallback + const logInfo = await this.getOllamaInferenceComputeFromLogs() + if (logInfo) { + graphics.controllers = [ + { + model: logInfo.name, + vendor: logInfo.library === 'CUDA' ? 'NVIDIA' : 'AMD', + bus: '', + vram: logInfo.vramMiB, + vramDynamic: false, + }, + ] gpuHealth.status = 'ok' gpuHealth.ollamaGpuAccessible = true - } else if (nvidiaInfo === 'OLLAMA_NOT_FOUND') { - // No local Ollama container — check if a remote Ollama URL is configured - const externalOllamaGpu = await this.getExternalOllamaGpuInfo() - if (externalOllamaGpu) { - graphics.controllers = externalOllamaGpu.map((gpu) => ({ + } else if (gpuHealth.hasNvidiaRuntime) { + // NVIDIA secondary path: nvidia-smi exec preserves prior behavior when + // the log parser hasn't seen a startup line yet (e.g. log rotation, + // very fresh container). Distinguishes "no Ollama container" from + // "container exists but GPU broken". + const nvidiaInfo = await this.getNvidiaSmiInfo() + if (Array.isArray(nvidiaInfo)) { + graphics.controllers = nvidiaInfo.map((gpu) => ({ model: gpu.model, vendor: gpu.vendor, bus: '', @@ -369,25 +557,66 @@ export class SystemService { })) gpuHealth.status = 'ok' gpuHealth.ollamaGpuAccessible = true + } else if (nvidiaInfo === 'OLLAMA_NOT_FOUND') { + const externalOllamaGpu = await this.getExternalOllamaGpuInfo() + if (externalOllamaGpu) { + graphics.controllers = externalOllamaGpu.map((gpu) => ({ + model: gpu.model, + vendor: gpu.vendor, + bus: '', + vram: gpu.vram, + vramDynamic: false, + })) + gpuHealth.status = 'ok' + gpuHealth.ollamaGpuAccessible = true + } else { + gpuHealth.status = 'ollama_not_installed' + } } else { - gpuHealth.status = 'ollama_not_installed' + const externalOllamaGpu = await this.getExternalOllamaGpuInfo() + if (externalOllamaGpu) { + graphics.controllers = externalOllamaGpu.map((gpu) => ({ + model: gpu.model, + vendor: gpu.vendor, + bus: '', + vram: gpu.vram, + vramDynamic: false, + })) + gpuHealth.status = 'ok' + gpuHealth.ollamaGpuAccessible = true + } else { + gpuHealth.status = 'passthrough_failed' + logger.warn( + `NVIDIA runtime detected but GPU passthrough failed: ${typeof nvidiaInfo === 'string' ? nvidiaInfo : JSON.stringify(nvidiaInfo)}` + ) + } } } else { - const externalOllamaGpu = await this.getExternalOllamaGpuInfo() - if (externalOllamaGpu) { - graphics.controllers = externalOllamaGpu.map((gpu) => ({ - model: gpu.model, - vendor: gpu.vendor, - bus: '', - vram: gpu.vram, - vramDynamic: false, - })) - gpuHealth.status = 'ok' - gpuHealth.ollamaGpuAccessible = true + // AMD path: no nvidia-smi equivalent worth running — log parser is authoritative. + // Distinguish "Ollama not running" from "Ollama running but no GPU log line". + const containers = await this.dockerService.docker.listContainers({ all: false }) + const ollamaRunning = containers.some((c) => + c.Names.includes(`/${SERVICE_NAMES.OLLAMA}`) + ) + if (!ollamaRunning) { + const externalOllamaGpu = await this.getExternalOllamaGpuInfo() + if (externalOllamaGpu) { + graphics.controllers = externalOllamaGpu.map((gpu) => ({ + model: gpu.model, + vendor: gpu.vendor, + bus: '', + vram: gpu.vram, + vramDynamic: false, + })) + gpuHealth.status = 'ok' + gpuHealth.ollamaGpuAccessible = true + } else { + gpuHealth.status = 'ollama_not_installed' + } } else { gpuHealth.status = 'passthrough_failed' logger.warn( - `NVIDIA runtime detected but GPU passthrough failed: ${typeof nvidiaInfo === 'string' ? nvidiaInfo : JSON.stringify(nvidiaInfo)}` + 'AMD GPU detected but Ollama logs show no ROCm initialization — passthrough or HSA override may have failed' ) } } @@ -640,6 +869,31 @@ export class SystemService { if (key === 'ai.assistantCustomName') { invalidateAssistantNameCache() } + // Re-enabling auto-update after a backoff-driven auto-disable clears the + // failure state so it gets a fresh start instead of immediately re-tripping. + if (key === 'autoUpdate.enabled' && (value === true || value === 'true')) { + await KVStore.setValue('autoUpdate.consecutiveFailures', '0') + await KVStore.clearValue('autoUpdate.autoDisabledReason') + } + // Re-enabling the global app auto-update master switch clears every app's + // per-app failure backoff so previously self-disabled apps get a fresh start. + if (key === 'appAutoUpdate.enabled' && (value === true || value === 'true')) { + await Service.query().update({ + auto_update_consecutive_failures: 0, + auto_update_disabled_reason: null, + }) + } + // Re-enabling content auto-update clears the feature-level backoff and every + // resource's per-resource backoff so previously self-disabled content gets a + // fresh start. + if (key === 'contentAutoUpdate.enabled' && (value === true || value === 'true')) { + await KVStore.setValue('contentAutoUpdate.consecutiveFailures', '0') + await KVStore.clearValue('contentAutoUpdate.autoDisabledReason') + await InstalledResource.query().update({ + auto_update_consecutive_failures: 0, + auto_update_disabled_reason: null, + }) + } } /** @@ -742,4 +996,83 @@ export class SystemService { } }) } + + /** + * Check whether the host has enough free memory and disk to comfortably run an app. + * Returns an array of human-readable warning strings; an empty array means no concerns. + * These are advisory only — the caller decides whether to block or warn. + */ + async checkResourceWarnings(minMemoryMB: number, minDiskMB: number): Promise { + const warnings: string[] = [] + + try { + const mem = await si.mem() + const availableMB = Math.floor(mem.available / 1024 / 1024) + if (availableMB < minMemoryMB) { + warnings.push( + `Low memory: ${availableMB} MB available, this app recommends at least ${minMemoryMB} MB free.` + ) + } + } catch (err: any) { + logger.warn(`[SystemService] checkResourceWarnings mem check failed: ${err.message}`) + } + + try { + const storagePath = env.get('NOMAD_STORAGE_PATH', '/opt/project-nomad/storage') + const fsSizes = await si.fsSize() + // Find the filesystem whose mount point is the longest prefix of storagePath + const fs = fsSizes + .filter((f) => storagePath.startsWith(f.mount)) + .sort((a, b) => b.mount.length - a.mount.length)[0] + + if (fs) { + const availableDiskMB = Math.floor((fs.size - fs.used) / 1024 / 1024) + if (availableDiskMB < minDiskMB) { + warnings.push( + `Low disk space: ${availableDiskMB} MB available on ${fs.mount}, this app recommends at least ${minDiskMB} MB free.` + ) + } + } + } catch (err: any) { + logger.warn(`[SystemService] checkResourceWarnings disk check failed: ${err.message}`) + } + + return warnings + } + + /** + * Return the next suggested host port for a custom app in the 8600+ range. + * Looks at existing custom service records and all Docker container port bindings. + */ + async getNextSuggestedCustomPort(): Promise { + const CUSTOM_PORT_START = 8600 + const occupied = new Set() + + try { + // Ports used by existing custom services in the DB + const customServices = await Service.query().where('is_custom', true) + for (const svc of customServices) { + const config = svc.container_config ? JSON.parse(svc.container_config) : null + const bindings = config?.HostConfig?.PortBindings ?? {} + for (const binding of Object.values(bindings) as any[]) { + const port = parseInt(binding?.[0]?.HostPort, 10) + if (!isNaN(port)) occupied.add(port) + } + } + + // Ports used by any running Docker container in the 8600+ range + const containers = await this.dockerService.docker.listContainers({ all: true }) + for (const c of containers) { + for (const p of c.Ports) { + if (p.PublicPort && p.PublicPort >= CUSTOM_PORT_START) occupied.add(p.PublicPort) + } + } + } catch (err: any) { + logger.warn(`[SystemService] getNextSuggestedCustomPort probe failed: ${err.message}`) + } + + let candidate = CUSTOM_PORT_START + while (occupied.has(candidate)) candidate += 10 + return candidate + } } diff --git a/admin/app/services/system_update_service.ts b/admin/app/services/system_update_service.ts index 20031eb..502b9f1 100644 --- a/admin/app/services/system_update_service.ts +++ b/admin/app/services/system_update_service.ts @@ -18,9 +18,18 @@ export class SystemUpdateService { private static LOG_FILE = join(SystemUpdateService.SHARED_DIR, 'update-log') /** - * Requests a system update by creating a request file that the sidecar will detect + * Requests a system update by creating a request file that the sidecar will detect. + * + * @param options.targetTag - Explicit Docker image tag to install (e.g. "v1.33.2"). + * When omitted, falls back to the cached `system.latestVersion` (manual-update + * behavior). Auto-update passes an eligibility-vetted tag here, which may differ + * from `system.latestVersion` when the newest release is a major bump. + * @param options.requester - Identifier recorded in the request file for auditing. */ - async requestUpdate(): Promise<{ success: boolean; message: string }> { + async requestUpdate(options?: { + targetTag?: string + requester?: string + }): Promise<{ success: boolean; message: string }> { try { const currentStatus = this.getUpdateStatus() if (currentStatus && !['idle', 'complete', 'error'].includes(currentStatus.stage)) { @@ -30,13 +39,18 @@ export class SystemUpdateService { } } - // Determine the Docker image tag to install. - const latestVersion = await KVStore.getValue('system.latestVersion') + // Determine the Docker image tag to install. Prefer an explicit caller-supplied + // tag; otherwise use the cached latest version. + let targetTag = options?.targetTag + if (!targetTag) { + const latestVersion = await KVStore.getValue('system.latestVersion') + targetTag = latestVersion ? `v${latestVersion}` : 'latest' + } const requestData = { requested_at: new Date().toISOString(), - requester: 'admin-api', - target_tag: latestVersion ? `v${latestVersion}` : 'latest', + requester: options?.requester ?? 'admin-api', + target_tag: targetTag, } await writeFile(SystemUpdateService.REQUEST_FILE, JSON.stringify(requestData, null, 2)) @@ -47,10 +61,10 @@ export class SystemUpdateService { message: 'System update initiated. The admin container will restart during the process.', } } catch (error) { - logger.error('[SystemUpdateService]: Failed to request system update:', error) + logger.error({ err: error }, '[SystemUpdateService] Failed to request system update') return { success: false, - message: `Failed to request update: ${error.message}`, + message: 'Failed to request system update. Check server logs for details.', } } } diff --git a/admin/app/services/zim_extraction_service.ts b/admin/app/services/zim_extraction_service.ts index e60042d..196add9 100644 --- a/admin/app/services/zim_extraction_service.ts +++ b/admin/app/services/zim_extraction_service.ts @@ -5,6 +5,7 @@ import logger from '@adonisjs/core/services/logger' import { ExtractZIMChunkingStrategy, ExtractZIMContentOptions, ZIMContentChunk, ZIMArchiveMetadata } from '../../types/zim.js' import { randomUUID } from 'node:crypto' import { access } from 'node:fs/promises' +import { isValidZimFile } from '../utils/fs.js' export class ZIMExtractionService { @@ -39,7 +40,10 @@ export class ZIMExtractionService { * @param filePath - Path to the ZIM file * @param opts - Options including maxArticles, strategy, onProgress, startOffset, and batchSize */ - async extractZIMContent(filePath: string, opts: ExtractZIMContentOptions = {}): Promise { + async extractZIMContent( + filePath: string, + opts: ExtractZIMContentOptions = {} + ): Promise<{ chunks: ZIMContentChunk[]; totalArticles: number }> { try { logger.info(`[ZIMExtractionService]: Processing ZIM file at path: ${filePath}`) @@ -51,7 +55,13 @@ export class ZIMExtractionService { logger.error(`[ZIMExtractionService]: ZIM file not accessible: ${filePath}`) throw new Error(`ZIM file not found or not accessible: ${filePath}`) } - + + // Validate ZIM magic number before opening with native library. + // A corrupted file causes a native C++ abort that cannot be caught by JS. + if (!(await isValidZimFile(filePath))) { + throw new Error(`ZIM file is invalid or corrupted: ${filePath}`) + } + const archive = new Archive(filePath) // Extract archive-level metadata once @@ -154,7 +164,7 @@ export class ZIMExtractionService { textPreview: c.text.substring(0, 100) }))) logger.debug("Total structured sections extracted:", toReturn.length) - return toReturn + return { chunks: toReturn, totalArticles: archive.articleCount } } catch (error) { logger.error('Error processing ZIM file:', error) throw error @@ -209,7 +219,10 @@ export class ZIMExtractionService { const sections: Array<{ heading: string; text: string; level: number }> = []; let currentSection = { heading: 'Introduction', content: [] as string[], level: 2 }; - $('body').children().each((_, element) => { + // Walk the full DOM rather than only direct children of . Modern ZIMs (Devdocs, + // Wikipedia, FreeCodeCamp, etc.) wrap article content in a container div, which under + // .children() would be a single non-heading/non-paragraph element and yield zero sections. + $('body').find('h2, h3, h4, p, ul, ol, dl, table').each((_, element) => { const $el = $(element); const tagName = element.tagName?.toLowerCase(); @@ -246,6 +259,20 @@ export class ZIMExtractionService { }); } + // Fallback: if the selector walk produced no sections but the body has meaningful + // text (unusual structure, minimal markup), emit one section with the full body text + // so the article still contributes to the knowledge base. + if (sections.length === 0) { + const bodyText = $('body').text().replace(/\s+/g, ' ').trim(); + if (bodyText.length > 0) { + sections.push({ + heading: title || 'Content', + text: bodyText, + level: 2, + }); + } + } + return { title, sections, diff --git a/admin/app/services/zim_service.ts b/admin/app/services/zim_service.ts index bee4309..5a362e0 100644 --- a/admin/app/services/zim_service.ts +++ b/admin/app/services/zim_service.ts @@ -4,8 +4,11 @@ import { RemoteZimFileEntry, } from '../../types/zim.js' import axios from 'axios' +import * as cheerio from 'cheerio' import { XMLParser } from 'fast-xml-parser' import { isRawListRemoteZimFilesResponse, isRawRemoteZimFileEntry } from '../../util/zim.js' +import { findReplacedWikipediaFiles } from '../utils/zim_filename.js' +import { decideSupersededDeletion } from '../utils/superseded_resource.js' import logger from '@adonisjs/core/services/logger' import { DockerService } from './docker_service.js' import { inject } from '@adonisjs/core' @@ -22,11 +25,14 @@ import vine from '@vinejs/vine' import { wikipediaOptionsFileSchema } from '#validators/curated_collections' import WikipediaSelection from '#models/wikipedia_selection' import InstalledResource from '#models/installed_resource' +import CollectionManifest from '#models/collection_manifest' import { RunDownloadJob } from '#jobs/run_download_job' import { SERVICE_NAMES } from '../../constants/service_names.js' import { CollectionManifestService } from './collection_manifest_service.js' import { KiwixLibraryService } from './kiwix_library_service.js' import type { CategoryWithStatus } from '../../types/collections.js' +import CustomLibrarySource from '#models/custom_library_source' +import { assertNotPrivateUrl } from '#validators/common' const ZIM_MIME_TYPES = ['application/x-zim', 'application/x-openzim', 'application/octet-stream'] const WIKIPEDIA_OPTIONS_URL = 'https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/collections/wikipedia.json' @@ -40,7 +46,21 @@ export class ZimService { await ensureDirectoryExists(dirPath) const all = await listDirectoryContents(dirPath) - const files = all.filter((item) => item.name.endsWith('.zim')) + const zimEntries = all.filter((item) => item.name.endsWith('.zim')) + + const files = await Promise.all( + zimEntries.map(async (entry) => { + const filePath = entry.type === 'file' ? entry.key : join(dirPath, entry.name) + const stats = await getFileStatsIfExists(filePath) + return { + ...entry, + title: null, + summary: null, + author: null, + size_bytes: stats ? Number(stats.size) : null, + } + }) + ) return { files, @@ -57,84 +77,105 @@ export class ZimService { query?: string }): Promise { const LIBRARY_BASE_URL = 'https://browse.library.kiwix.org/catalog/v2/entries' + // Kiwix returns pages of content unaware of what the user has installed locally. When + // the installed set is large, a single 12-item Kiwix page can come back with everything + // already installed → 0 post-filter items → frontend deadlock (#731). Accumulate across + // upstream pages so we return a useful batch. Bounded by MAX_KIWIX_FETCHES so a heavily + // saturated install doesn't hang a single request; the frontend scroll loop + auto-fetch + // effect handle continuation. + const KIWIX_PAGE_SIZE = 60 + const MAX_KIWIX_FETCHES = 5 - const res = await axios.get(LIBRARY_BASE_URL, { - params: { - start: start, - count: count, - lang: 'eng', - ...(query ? { q: query } : {}), - }, - responseType: 'text', - }) - - const data = res.data const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '', textNodeName: '#text', }) - const result = parser.parse(data) - if (!isRawListRemoteZimFilesResponse(result)) { - throw new Error('Invalid response format from remote library') - } - - const entries = result.feed.entry - ? Array.isArray(result.feed.entry) - ? result.feed.entry - : [result.feed.entry] - : [] - - const filtered = entries.filter((entry: any) => { - return isRawRemoteZimFileEntry(entry) - }) - - const mapped: (RemoteZimFileEntry | null)[] = filtered.map((entry: RawRemoteZimFileEntry) => { - const downloadLink = entry.link.find((link: any) => { - return ( - typeof link === 'object' && - 'rel' in link && - 'length' in link && - 'href' in link && - 'type' in link && - link.type === 'application/x-zim' - ) - }) - - if (!downloadLink) { - return null - } - - // downloadLink['href'] will end with .meta4, we need to remove that to get the actual download URL - const download_url = downloadLink['href'].substring(0, downloadLink['href'].length - 6) - const file_name = download_url.split('/').pop() || `${entry.title}.zim` - const sizeBytes = parseInt(downloadLink['length'], 10) - - return { - id: entry.id, - title: entry.title, - updated: entry.updated, - summary: entry.summary, - size_bytes: sizeBytes || 0, - download_url: download_url, - author: entry.author.name, - file_name: file_name, - } - }) - - // Filter out any null entries (those without a valid download link) - // or files that already exist in the local storage + // Snapshot locally-installed files once — the filesystem won't change mid-request. const existing = await this.list() const existingKeys = new Set(existing.files.map((file) => file.name)) - const withoutExisting = mapped.filter( - (entry): entry is RemoteZimFileEntry => entry !== null && !existingKeys.has(entry.file_name) - ) + + const accumulated: RemoteZimFileEntry[] = [] + const seenIds = new Set() + let currentStart = start + let totalResults = 0 + + for (let i = 0; i < MAX_KIWIX_FETCHES; i++) { + const res = await axios.get(LIBRARY_BASE_URL, { + params: { + start: currentStart, + count: KIWIX_PAGE_SIZE, + lang: 'eng', + ...(query ? { q: query } : {}), + }, + responseType: 'text', + }) + + const parsed = parser.parse(res.data) + if (!isRawListRemoteZimFilesResponse(parsed)) { + throw new Error('Invalid response format from remote library') + } + totalResults = parsed.feed.totalResults + + const rawEntries = parsed.feed.entry + ? Array.isArray(parsed.feed.entry) + ? parsed.feed.entry + : [parsed.feed.entry] + : [] + + // Empty upstream response — bail even if totalResults suggests more (transient Kiwix + // hiccup or totalResults drift between pages). Prevents a pointless spin. + if (rawEntries.length === 0) break + + // Advance by actual returned count, not requested count. Short pages at the tail + // would otherwise cause us to skip entries on the next fetch. + currentStart += rawEntries.length + + for (const raw of rawEntries) { + if (!isRawRemoteZimFileEntry(raw)) continue + const entry = raw as RawRemoteZimFileEntry + + const downloadLink = entry.link.find( + (link: any) => + typeof link === 'object' && + 'rel' in link && + 'length' in link && + 'href' in link && + 'type' in link && + link.type === 'application/x-zim' + ) + if (!downloadLink) continue + + // downloadLink['href'] ends with .meta4; strip that to get the actual .zim URL. + const download_url = downloadLink['href'].substring(0, downloadLink['href'].length - 6) + const file_name = download_url.split('/').pop() || `${entry.title}.zim` + if (existingKeys.has(file_name)) continue + if (seenIds.has(entry.id)) continue + seenIds.add(entry.id) + + const sizeBytes = parseInt(downloadLink['length'], 10) + accumulated.push({ + id: entry.id, + title: entry.title, + updated: entry.updated, + summary: entry.summary, + size_bytes: sizeBytes || 0, + download_url, + author: entry.author.name, + file_name, + }) + } + + if (accumulated.length >= count) break + if (currentStart >= totalResults) break + } return { - items: withoutExisting, - has_more: result.feed.totalResults > start, - total_count: result.feed.totalResults, + items: accumulated, + has_more: currentStart < totalResults, + total_count: totalResults, + next_start: currentStart, } } @@ -276,7 +317,7 @@ export class ZimService { if (restart) { // Check if there are any remaining ZIM download jobs before restarting const { QueueService } = await import('./queue_service.js') - const queueService = new QueueService() + const queueService = QueueService.getInstance() const queue = queueService.getQueue('downloads') // Get all active and waiting jobs @@ -319,6 +360,8 @@ export class ZimService { } // Create InstalledResource entries for downloaded files + const zimStorageDir = join(process.cwd(), ZIM_STORAGE_PATH) + let removedSupersededZim = false for (const url of urls) { // Skip Wikipedia files (managed separately) if (url.includes('wikipedia_en_')) continue @@ -329,10 +372,17 @@ export class ZimService { const parsed = CollectionManifestService.parseZimFilename(filename) if (!parsed) continue - const filepath = join(process.cwd(), ZIM_STORAGE_PATH, filename) + const filepath = join(zimStorageDir, filename) const stats = await getFileStatsIfExists(filepath) try { + // Capture the prior install for this resource_id BEFORE updateOrCreate + // overwrites it, so we know the old file path to clean up (#634). + const prior = await InstalledResource.query() + .where('resource_id', parsed.resource_id) + .where('resource_type', 'zim') + .first() + const { DateTime } = await import('luxon') await InstalledResource.updateOrCreate( { resource_id: parsed.resource_id, resource_type: 'zim' }, @@ -345,10 +395,170 @@ export class ZimService { } ) logger.info(`[ZimService] Created InstalledResource entry for: ${parsed.resource_id}`) + + // Remove the superseded prior version's file if (and only if) every + // safety rail passes — see decideSupersededDeletion. The InstalledResource + // row already points at the new file, so we delete the old file directly + // (NOT via this.delete(), which would drop the row by resource_id). + const decision = decideSupersededDeletion({ + existing: prior ? { file_path: prior.file_path, version: prior.version } : null, + newFilePath: filepath, + newVersion: parsed.version, + newFileExists: !!stats, + storageBaseDir: zimStorageDir, + }) + if (decision.delete && decision.path) { + try { + await deleteFileIfExists(decision.path) + removedSupersededZim = true + logger.info( + `[ZimService] Removed superseded ${parsed.resource_id} file: ${decision.path}` + ) + } catch (err) { + logger.warn(`[ZimService] Failed to remove superseded file ${decision.path}:`, err) + } + } else if (decision.reason !== 'first_install' && decision.reason !== 'same_file') { + logger.info( + `[ZimService] Kept prior ${parsed.resource_id} file (reason: ${decision.reason})` + ) + } } catch (error) { logger.error(`[ZimService] Failed to create InstalledResource for ${filename}:`, error) } } + + // If we removed any superseded ZIM, rebuild the Kiwix library so its XML no + // longer references the deleted file. The earlier rebuild in this flow ran + // while both versions were still on disk. + if (removedSupersededZim) { + try { + await new KiwixLibraryService().rebuildFromDisk() + logger.info('[ZimService] Rebuilt Kiwix library after removing superseded ZIM(s).') + } catch (err) { + logger.error('[ZimService] Failed to rebuild Kiwix library after cleanup:', err) + } + } + } + + /** + * Rebuilds the kiwix library XML from whatever ZIM files are currently on disk. + * + * This is the manual counterpart to the automatic rebuilds that run after a + * download or delete. It exists for the sideload case: a user copies a .zim file + * onto the box (USB, SSH, network share) outside the download flow, and kiwix has + * no way to discover it without regenerating the library index. + * + * In library mode (--monitorLibrary) kiwix-serve hot-reloads the XML on its own, so + * no restart is needed. Only legacy glob-mode containers are restarted to pick up + * the change. Returns the book count before and after plus the number added. + */ + async rescanLibrary(): Promise<{ before: number; after: number; added: number }> { + const kiwixLibraryService = new KiwixLibraryService() + const before = await kiwixLibraryService.getBookCount() + const after = await kiwixLibraryService.rebuildFromDisk() + + const isLegacy = await this.dockerService.isKiwixOnLegacyConfig() + if (isLegacy) { + logger.info('[ZimService] Kiwix in legacy mode — restarting container after rescan.') + await this.dockerService + .affectContainer(SERVICE_NAMES.KIWIX, 'restart') + .catch((error) => { + logger.error('[ZimService] Failed to restart KIWIX container after rescan:', error) + }) + } + + return { before, after, added: Math.max(0, after - before) } + } + + async registerLocalUpload(filename: string): Promise<{ added: number }> { + let added = 0 + try { + const result = await this.rescanLibrary() + added = result.added + } catch (err) { + logger.error('[ZimService] Failed to rebuild kiwix library after local upload:', err) + } + + const parsed = CollectionManifestService.parseZimFilename(filename) + if (parsed) { + const filepath = join(process.cwd(), ZIM_STORAGE_PATH, filename) + const stats = await getFileStatsIfExists(filepath) + try { + const { DateTime } = await import('luxon') + await InstalledResource.updateOrCreate( + { resource_id: parsed.resource_id, resource_type: 'zim' }, + { + version: parsed.version, + url: `local-upload://${filename}`, + file_path: filepath, + file_size_bytes: stats ? Number(stats.size) : null, + installed_at: DateTime.now(), + } + ) + } catch (error) { + logger.error(`[ZimService] Failed to create InstalledResource for ${filename}:`, error) + } + } + + // If the uploaded file matches a known Wikipedia option, mark it as installed + try { + const manifest = await CollectionManifest.find('wikipedia') + if (manifest) { + const spec = manifest.spec_data as { options: Array<{ id: string; url: string | null }> } + const matchedOption = spec.options.find( + (opt) => opt.url && opt.url.split('/').pop() === filename + ) + if (matchedOption && matchedOption.url) { + const existing = await WikipediaSelection.query().first() + if (existing) { + existing.option_id = matchedOption.id + existing.url = matchedOption.url + existing.filename = filename + existing.status = 'installed' + await existing.save() + } else { + await WikipediaSelection.create({ + option_id: matchedOption.id, + url: matchedOption.url, + filename, + status: 'installed', + }) + } + logger.info(`[ZimService] Marked Wikipedia option '${matchedOption.id}' as installed from local upload`) + + // Remove any other wikipedia_en_*.zim files, same as the download flow + const allFiles = await this.list() + const staleWikipediaFiles = allFiles.files.filter( + (f) => f.name.startsWith('wikipedia_en_') && f.name !== filename + ) + for (const stale of staleWikipediaFiles) { + try { + await this.delete(stale.name) + logger.info(`[ZimService] Deleted stale Wikipedia file after upload: ${stale.name}`) + } catch (err) { + logger.warn(`[ZimService] Could not delete stale Wikipedia file: ${stale.name}`, err) + } + } + } + } + } catch (error) { + logger.error(`[ZimService] Failed to update WikipediaSelection for ${filename}:`, error) + } + + const ollamaUrl = await this.dockerService.getServiceURL('nomad_ollama') + if (ollamaUrl) { + try { + const { EmbedFileJob } = await import('#jobs/embed_file_job') + await EmbedFileJob.dispatch({ + fileName: filename, + filePath: join(process.cwd(), ZIM_STORAGE_PATH, filename), + }) + } catch (error) { + logger.error(`[ZimService] EmbedFileJob dispatch failed after local upload:`, error) + } + } + + return { added } } async delete(file: string): Promise { @@ -387,6 +597,21 @@ export class ZimService { .delete() logger.info(`[ZimService] Deleted InstalledResource entry for: ${parsed.resource_id}`) } + + // If this file was the active Wikipedia selection, clear the selection + try { + const selection = await WikipediaSelection.query().first() + if (selection && selection.filename === fileName) { + selection.option_id = 'none' + selection.status = 'none' + selection.filename = null + selection.url = null + await selection.save() + logger.info(`[ZimService] Cleared WikipediaSelection after deleting ${fileName}`) + } + } catch (error) { + logger.error(`[ZimService] Failed to clear WikipediaSelection after deleting ${fileName}:`, error) + } } // Wikipedia selector methods @@ -552,40 +777,192 @@ export class ZimService { } async onWikipediaDownloadComplete(url: string, success: boolean): Promise { + const filename = url.split('/').pop() || '' const selection = await this.getWikipediaSelection() - if (!selection || selection.url !== url) { - logger.warn(`[ZimService] Wikipedia download complete callback for unknown URL: ${url}`) - return + // Determine which Wikipedia option this file belongs to by matching filename + let matchedOptionId: string | null = null + try { + const options = await this.getWikipediaOptions() + for (const opt of options) { + if (opt.url && opt.url.split('/').pop() === filename) { + matchedOptionId = opt.id + break + } + } + } catch { + // If we can't fetch options, try to continue with existing selection } if (success) { - // Update status to installed - selection.status = 'installed' - await selection.save() + // Update or create the selection record + // Match by filename (not URL) so mirror downloads are recognized + if (selection) { + selection.option_id = matchedOptionId || selection.option_id + selection.url = url + selection.filename = filename + selection.status = 'installed' + await selection.save() + } else { + await WikipediaSelection.create({ + option_id: matchedOptionId || 'unknown', + url: url, + filename: filename, + status: 'installed', + }) + } - logger.info(`[ZimService] Wikipedia download completed successfully: ${selection.filename}`) + logger.info(`[ZimService] Wikipedia download completed successfully: ${filename}`) - // Delete the old Wikipedia file if it exists and is different - // We need to find what was previously installed + // Delete prior versions of THIS specific Wikipedia variant only. + // Earlier logic deleted anything starting with `wikipedia_en_`, which silently + // wiped distinct corpora the user had installed independently (issue #884). const existingFiles = await this.list() - const wikipediaFiles = existingFiles.files.filter((f) => - f.name.startsWith('wikipedia_en_') && f.name !== selection.filename + const wikipediaFiles = findReplacedWikipediaFiles( + filename, + existingFiles.files.map((f) => f.name) ) for (const oldFile of wikipediaFiles) { try { - await this.delete(oldFile.name) - logger.info(`[ZimService] Deleted old Wikipedia file: ${oldFile.name}`) + await this.delete(oldFile) + logger.info(`[ZimService] Deleted old Wikipedia file: ${oldFile}`) } catch (error) { - logger.warn(`[ZimService] Could not delete old Wikipedia file: ${oldFile.name}`, error) + logger.warn(`[ZimService] Could not delete old Wikipedia file: ${oldFile}`, error) } } } else { - // Download failed - keep the selection record but mark as failed - selection.status = 'failed' - await selection.save() - logger.error(`[ZimService] Wikipedia download failed for: ${selection.filename}`) + // Download failed - update selection if it matches this file + if (selection && (!selection.filename || selection.filename === filename)) { + selection.status = 'failed' + await selection.save() + logger.error(`[ZimService] Wikipedia download failed for: ${filename}`) + } else { + logger.error(`[ZimService] Wikipedia download failed for: ${filename} (no matching selection)`) + } } } + + // Custom library source management + + async listCustomLibraries(): Promise { + return CustomLibrarySource.all() + } + + async addCustomLibrary(name: string, baseUrl: string): Promise { + const count = await CustomLibrarySource.query().count('* as total') + const total = Number(count[0].$extras.total) + if (total >= 10) { + throw new Error('Maximum of 10 custom libraries allowed') + } + + // Ensure URL ends with / + const normalizedUrl = baseUrl.endsWith('/') ? baseUrl : baseUrl + '/' + + return CustomLibrarySource.create({ + name, + base_url: normalizedUrl, + }) + } + + async removeCustomLibrary(id: number): Promise { + const source = await CustomLibrarySource.find(id) + if (!source) { + throw new Error('Custom library not found') + } + if (source.is_default) { + throw new Error('Cannot remove a built-in mirror') + } + await source.delete() + } + + async browseLibraryUrl(url: string): Promise<{ + directories: { name: string; url: string }[] + files: { name: string; url: string; size_bytes: number | null }[] + }> { + assertNotPrivateUrl(url) + + const normalizedUrl = url.endsWith('/') ? url : url + '/' + + const res = await axios.get(normalizedUrl, { + responseType: 'text', + timeout: 15000, + headers: { + 'Accept': 'text/html', + }, + }) + + const html: string = res.data + const directories: { name: string; url: string }[] = [] + const files: { name: string; url: string; size_bytes: number | null }[] = [] + + const $ = cheerio.load(html) + + $('a').each((_, el) => { + const href = el.attribs?.href + if (!href || href === '../' || href === './' || href === '/' || href.startsWith('?') || href.startsWith('#')) { + return + } + if (href.startsWith('/') || href.startsWith('http://') || href.startsWith('https://')) { + return + } + + if (href.endsWith('/')) { + const dirName = decodeURIComponent(href.replace(/\/$/, '')) + directories.push({ + name: dirName, + url: new URL(href, normalizedUrl).toString(), + }) + return + } + + if (href.endsWith('.zim')) { + const fileName = decodeURIComponent(href) + + // Apache/Nginx autoindex put the date + size in the text node directly + // following within a
. Walk forward across text siblings until
+        // we find a parseable size token.
+        let trailingText = ''
+        let sibling = el.next
+        while (sibling && sibling.type === 'text') {
+          trailingText += sibling.data
+          if (/\n/.test(sibling.data)) break
+          sibling = sibling.next
+        }
+
+        files.push({
+          name: fileName,
+          url: new URL(href, normalizedUrl).toString(),
+          size_bytes: this._parseListingSize(trailingText),
+        })
+      }
+    })
+
+    directories.sort((a, b) => a.name.localeCompare(b.name))
+    files.sort((a, b) => a.name.localeCompare(b.name))
+
+    return { directories, files }
+  }
+
+  /**
+   * Parse a directory-listing size token out of the text that follows an anchor.
+   * Apache renders e.g. `   2024-01-15 10:30  5.1G`; Nginx renders raw bytes.
+   * Returns bytes or null if no size token is found.
+   */
+  private _parseListingSize(text: string): number | null {
+    // Skip the date/time columns; grab the last numeric token (with optional suffix)
+    // before a newline. Matches `5.1G`, `5368709120`, `1.2T`, etc.
+    const sizeMatch = /([\d.]+\s*[KMGT]?B?|\d+)\s*$/i.exec(text.split('\n')[0].trim())
+    if (!sizeMatch) return null
+
+    const sizeStr = sizeMatch[1].replace(/\s|B$/gi, '')
+    const num = parseFloat(sizeStr)
+    if (isNaN(num)) return null
+
+    if (/^\d+$/.test(sizeStr)) return num
+
+    const suffix = sizeStr.slice(-1).toUpperCase()
+    const multipliers: Record = { K: 1024, M: 1024 ** 2, G: 1024 ** 3, T: 1024 ** 4 }
+    return multipliers[suffix] ? Math.round(num * multipliers[suffix]) : null
+  }
 }
diff --git a/admin/app/utils/content_auto_update_backoff.ts b/admin/app/utils/content_auto_update_backoff.ts
new file mode 100644
index 0000000..c9a83e7
--- /dev/null
+++ b/admin/app/utils/content_auto_update_backoff.ts
@@ -0,0 +1,51 @@
+import logger from '@adonisjs/core/services/logger'
+import type InstalledResource from '#models/installed_resource'
+
+/**
+ * Per-resource failure backoff for content (ZIM/map) auto-updates, shared by the
+ * three places that observe an auto-update's real lifecycle:
+ *
+ *   - {@link ContentAutoUpdateService.attempt} — a dispatch that fails to even
+ *     enqueue (counts as a failure; no job runs so no terminal event follows).
+ *   - `RunDownloadJob.onComplete` — a download that actually finished (success).
+ *   - the worker `failed` handler in `commands/queue/work.ts` — a download that
+ *     exhausted its retries (terminal failure).
+ *
+ * Kept in a dependency-light util (not on ContentAutoUpdateService) on purpose:
+ * RunDownloadJob is imported by CollectionUpdateService, which is imported by
+ * ContentAutoUpdateService, so importing the service back into the job would
+ * close an import cycle. Only the InstalledResource model and the logger are
+ * touched here.
+ */
+
+/** Genuine consecutive auto-update failures before a resource self-disables. */
+export const MAX_CONSECUTIVE_FAILURES = 3
+
+/** Clear a resource's failure backoff after a successful auto-update. */
+export async function recordResourceUpdateSuccess(resource: InstalledResource): Promise {
+  if (resource.auto_update_consecutive_failures === 0 && !resource.auto_update_disabled_reason) {
+    return
+  }
+  resource.auto_update_consecutive_failures = 0
+  resource.auto_update_disabled_reason = null
+  await resource.save()
+}
+
+/** Record an auto-update failure and self-disable the resource at the threshold. */
+export async function recordResourceUpdateFailure(
+  resource: InstalledResource,
+  reason: string
+): Promise {
+  const failures = (resource.auto_update_consecutive_failures || 0) + 1
+  resource.auto_update_consecutive_failures = failures
+  if (failures >= MAX_CONSECUTIVE_FAILURES) {
+    resource.auto_update_disabled_reason = `Auto-update disabled after ${failures} consecutive failures. Last error: ${reason}`
+    logger.error(
+      `[ContentAutoUpdate] ${resource.resource_id} auto-disabled after ${failures} failures`
+    )
+  }
+  await resource.save()
+  logger.error(
+    `[ContentAutoUpdate] ${resource.resource_id} failure ${failures}/${MAX_CONSECUTIVE_FAILURES}: ${reason}`
+  )
+}
diff --git a/admin/app/utils/content_reindex_decision.ts b/admin/app/utils/content_reindex_decision.ts
new file mode 100644
index 0000000..52a5ff3
--- /dev/null
+++ b/admin/app/utils/content_reindex_decision.ts
@@ -0,0 +1,58 @@
+/**
+ * Decision for reconciling the AI knowledge base (Qdrant) after a curated
+ * content file (a ZIM) is replaced by a newer downloaded version.
+ *
+ * This is the pure, I/O-free core of `RagService.reconcileReplacedContentFile`.
+ * Keeping the branching here (mirrors `decideScanAction` in
+ * `kb_ingest_decision.ts`) makes the contract exhaustively testable without a
+ * database or a live Qdrant.
+ *
+ * The logic deliberately MIRRORS the replaced file's prior indexed state rather
+ * than applying the global `rag.defaultIngestPolicy`: on a content *update* the
+ * user has already made an indexing choice for this content, so we honor it in
+ * both directions (re-index a previously-indexed file even under Manual; leave a
+ * previously-unindexed file alone even under Always). Fresh installs still go
+ * through the normal policy path — those return `not_a_replacement` here.
+ *
+ * Outcomes (evaluated top-down, short-circuiting):
+ * - `not_a_replacement` — no prior file, or the new file has the same path
+ *   (same-version re-download). Caller defers to normal ingest policy.
+ * - `qdrant_not_installed` (step 2) — no knowledge base exists; nothing to do.
+ * - `old_not_indexed` (step 4) — the replaced file was never embedded
+ *   (no state row, or state ≠ `indexed`); leave the new file un-indexed.
+ * - `qdrant_not_running` (step 5) — the replaced file WAS indexed but Qdrant is
+ *   currently offline. We do nothing: we can't remove the stale points, and a
+ *   queued embed job could be dropped before Qdrant returns. Acting half-way is
+ *   wasteful, so we defer entirely (accepted tradeoff: stale points linger).
+ * - `reindex` (step 3) — the replaced file was indexed and Qdrant is running:
+ *   delete ONLY the old file's points, drop its state row, and queue the new
+ *   file for embedding.
+ *
+ * Note the install-before-indexed ordering: step 2 short-circuits before any KB
+ * state lookup, matching the spec.
+ */
+export type ReindexOutcome =
+  | 'not_a_replacement'
+  | 'qdrant_not_installed'
+  | 'old_not_indexed'
+  | 'qdrant_not_running'
+  | 'reindex'
+
+export interface ContentReindexInput {
+  /** The replaced file existed AND its path differs from the new file's path. */
+  isReplacement: boolean
+  /** `nomad_qdrant` service exists (installed), regardless of running state. */
+  qdrantInstalled: boolean
+  /** The replaced file's `KbIngestState.state === 'indexed'`. */
+  oldFileWasIndexed: boolean
+  /** Qdrant answered a live health check (currently reachable). */
+  qdrantRunning: boolean
+}
+
+export function decideContentReindex(input: ContentReindexInput): ReindexOutcome {
+  if (!input.isReplacement) return 'not_a_replacement'
+  if (!input.qdrantInstalled) return 'qdrant_not_installed'
+  if (!input.oldFileWasIndexed) return 'old_not_indexed'
+  if (!input.qdrantRunning) return 'qdrant_not_running'
+  return 'reindex'
+}
diff --git a/admin/app/utils/downloads.ts b/admin/app/utils/downloads.ts
index 1c26a74..bfe189a 100644
--- a/admin/app/utils/downloads.ts
+++ b/admin/app/utils/downloads.ts
@@ -6,6 +6,7 @@ import axios from 'axios'
 import { Transform } from 'stream'
 import { deleteFileIfExists, ensureDirectoryExists, getFileStatsIfExists } from './fs.js'
 import { createWriteStream } from 'fs'
+import { rename } from 'fs/promises'
 import path from 'path'
 
 /**
@@ -27,13 +28,16 @@ export async function doResumableDownload({
   const dirname = path.dirname(filepath)
   await ensureDirectoryExists(dirname)
 
-  // Check if partial file exists for resume
+  // Stage download to a .tmp file so consumers (e.g. Kiwix) never see a partial file
+  const tempPath = filepath + '.tmp'
+
+  // Check if partial .tmp file exists for resume
   let startByte = 0
   let appendMode = false
 
-  const existingStats = await getFileStatsIfExists(filepath)
+  const existingStats = await getFileStatsIfExists(tempPath)
   if (existingStats && !forceNew) {
-    startByte = existingStats.size
+    startByte = Number(existingStats.size)
     appendMode = true
   }
 
@@ -43,8 +47,15 @@ export async function doResumableDownload({
     timeout,
   })
 
-  const contentType = headResponse.headers['content-type'] || ''
-  const totalBytes = parseInt(headResponse.headers['content-length'] || '0')
+  // Some upstream hosts (notably download.kiwix.org for .zim files) don't set a
+  // Content-Type header at all. Per RFC 7231 §3.1.1.5, "if no Content-Type is
+  // provided" the recipient may treat it as application/octet-stream — which is
+  // already in every binary-content allowlist we use (ZIM, PMTILES, base assets).
+  // Without this default, the validator below throws `MIME type  is not allowed`
+  // and breaks all downloads from kiwix's primary host (#848).
+  const contentType =
+    headResponse.headers['content-type']?.toString() || 'application/octet-stream'
+  const totalBytes = parseInt(headResponse.headers['content-length']?.toString() || '0', 10)
   const supportsRangeRequests = headResponse.headers['accept-ranges'] === 'bytes'
 
   // If allowedMimeTypes is provided, check content type
@@ -55,14 +66,24 @@ export async function doResumableDownload({
     }
   }
 
-  // If file is already complete and not forcing overwrite just return filepath
-  if (startByte === totalBytes && totalBytes > 0 && !forceNew) {
+  // If final file already exists at correct size, return early (idempotent)
+  const finalFileStats = await getFileStatsIfExists(filepath)
+  if (finalFileStats && Number(finalFileStats.size) === totalBytes && totalBytes > 0 && !forceNew) {
     return filepath
   }
 
-  // If server doesn't support range requests and we have a partial file, delete it
+  // If .tmp file is already at correct size (complete but never renamed), just rename it
+  if (startByte === totalBytes && totalBytes > 0 && !forceNew) {
+    await rename(tempPath, filepath)
+    if (onComplete) {
+      await onComplete(url, filepath)
+    }
+    return filepath
+  }
+
+  // If server doesn't support range requests and we have a partial .tmp file, delete it
   if (!supportsRangeRequests && startByte > 0) {
-    await deleteFileIfExists(filepath)
+    await deleteFileIfExists(tempPath)
     startByte = 0
     appendMode = false
   }
@@ -72,17 +93,29 @@ export async function doResumableDownload({
     headers.Range = `bytes=${startByte}-`
   }
 
-  const response = await axios.get(url, {
-    responseType: 'stream',
-    headers,
-    signal,
-    timeout,
-  })
+  const fetchStream = (hdrs: Record) =>
+    axios.get(url, { responseType: 'stream', headers: hdrs, signal, timeout })
+
+  let response = await fetchStream(headers)
 
   if (response.status !== 200 && response.status !== 206) {
     throw new Error(`Failed to download: HTTP ${response.status}`)
   }
 
+  // If we requested a range but the server returned 200 (ignored the Range header),
+  // appending would corrupt the .tmp file — delete it and restart from byte 0.
+  if (headers.Range && response.status === 200) {
+    response.data.destroy()
+    await deleteFileIfExists(tempPath)
+    startByte = 0
+    appendMode = false
+    delete headers.Range
+    response = await fetchStream(headers)
+    if (response.status !== 200 && response.status !== 206) {
+      throw new Error(`Failed to download: HTTP ${response.status}`)
+    }
+  }
+
   return new Promise((resolve, reject) => {
     let downloadedBytes = startByte
     let lastProgressTime = Date.now()
@@ -131,11 +164,10 @@ export async function doResumableDownload({
       },
     })
 
-    const writeStream = createWriteStream(filepath, {
+    const writeStream = createWriteStream(tempPath, {
       flags: appendMode ? 'a' : 'w',
     })
 
-    // Handle errors and cleanup
     const cleanup = (error?: Error) => {
       clearStallTimer()
       progressStream.destroy()
@@ -149,7 +181,6 @@ export async function doResumableDownload({
     response.data.on('error', cleanup)
     progressStream.on('error', cleanup)
     writeStream.on('error', cleanup)
-    writeStream.on('error', cleanup)
 
     signal?.addEventListener('abort', () => {
       cleanup(new Error('Download aborted'))
@@ -157,6 +188,20 @@ export async function doResumableDownload({
 
     writeStream.on('finish', async () => {
       clearStallTimer()
+      try {
+        // Atomically move the completed .tmp file to the final path
+        await rename(tempPath, filepath)
+      } catch (renameError) {
+        // A parallel job may have completed the same file first — treat as success
+        // if the destination already exists at the expected size.
+        const existing = await getFileStatsIfExists(filepath)
+        if (existing && Number(existing.size) === totalBytes && totalBytes > 0) {
+          // fall through to resolve
+        } else {
+          reject(renameError)
+          return
+        }
+      }
       if (onProgress) {
         onProgress({
           downloadedBytes,
@@ -207,7 +252,7 @@ export async function doResumableDownloadWithRetry({
       })
 
       return result // return on success
-    } catch (error) {
+    } catch (error: any) {
       attempt++
       lastError = error as Error
 
diff --git a/admin/app/utils/fs.ts b/admin/app/utils/fs.ts
index c3ee398..69b5463 100644
--- a/admin/app/utils/fs.ts
+++ b/admin/app/utils/fs.ts
@@ -1,4 +1,4 @@
-import { mkdir, readdir, readFile, stat, unlink } from 'fs/promises'
+import { mkdir, open, readdir, readFile, stat, unlink } from 'fs/promises'
 import path, { join } from 'path'
 import { FileEntry } from '../../types/files.js'
 import { createReadStream } from 'fs'
@@ -6,6 +6,22 @@ import { LSBlockDevice, NomadDiskInfoRaw } from '../../types/system.js'
 
 export const ZIM_STORAGE_PATH = '/storage/zim'
 export const KIWIX_LIBRARY_XML_PATH = '/storage/zim/kiwix-library.xml'
+export const BOOKS_STORAGE_PATH = '/storage/books'
+// Shared media root (Jellyfin reads it as /media; File Browser shows it as "media"). Per-type
+// subfolders are pre-created on Jellyfin install — see _runPreinstallActions__Jellyfin.
+export const MEDIA_STORAGE_PATH = '/storage/media'
+export const JELLYFIN_MEDIA_SUBFOLDERS = ['Movies', 'TV Shows', 'Music', 'Photos']
+// Empty Calibre library bundled into the admin image (see install/calibre-empty-library/).
+// Seeded into storage/books on Calibre-Web install so it doesn't dead-end at db config.
+export const CALIBRE_EMPTY_LIBRARY_ASSET_PATH = 'assets/calibre/metadata.db'
+// Vaultwarden's /data volume. A self-signed TLS cert is generated here on install so the
+// web vault has the secure context (HTTPS) it requires — see _runPreinstallActions__Vaultwarden.
+export const VAULTWARDEN_STORAGE_PATH = '/storage/vaultwarden'
+// MeshCore Web's working dir. On install a self-signed cert (certs/) and an SSL nginx config
+// (nginx-ssl.conf) are generated here, then bind-mounted into the container so the static client is
+// served over HTTPS — required for its Web Bluetooth/Serial connections. See
+// _runPreinstallActions__MeshCoreWeb.
+export const MESHCORE_WEB_STORAGE_PATH = '/storage/meshcore-web'
 
 export async function listDirectoryContents(path: string): Promise {
   const entries = await readdir(path, { withFileTypes: true })
@@ -99,6 +115,28 @@ export async function getFileStatsIfExists(
   }
 }
 
+/**
+ * Validates that a file has the ZIM magic number (0x44D495A).
+ * Must be called before passing a file to @openzim/libzim Archive,
+ * because a corrupted ZIM causes a native C++ abort that cannot be
+ * caught by JS try/catch.
+ */
+export async function isValidZimFile(filePath: string): Promise {
+  let fh
+  try {
+    fh = await open(filePath, 'r')
+    const buf = Buffer.alloc(4)
+    const { bytesRead } = await fh.read(buf, 0, 4, 0)
+    if (bytesRead < 4) return false
+    // ZIM magic number: 72 17 32 04 (little-endian 0x044D4953)
+    return buf[0] === 0x5a && buf[1] === 0x49 && buf[2] === 0x4d && buf[3] === 0x04
+  } catch {
+    return false
+  } finally {
+    await fh?.close()
+  }
+}
+
 export async function deleteFileIfExists(path: string): Promise {
   try {
     await unlink(path)
diff --git a/admin/app/utils/image_disk_preflight.ts b/admin/app/utils/image_disk_preflight.ts
new file mode 100644
index 0000000..cabf4e3
--- /dev/null
+++ b/admin/app/utils/image_disk_preflight.ts
@@ -0,0 +1,83 @@
+import logger from '@adonisjs/core/services/logger'
+import type { ContainerRegistryService } from '#services/container_registry_service'
+import type { SystemService } from '#services/system_service'
+
+/**
+ * Shared pre-flight primitives for update flows (core app + installed apps).
+ * Kept framework-light (plain functions + injected service instances) so both
+ * {@link AutoUpdateService} and {@link AppAutoUpdateService} reuse one implementation.
+ */
+
+export type BlockerSeverity = 'skip' | 'failure'
+
+export interface Blocker {
+  reason: string
+  severity: BlockerSeverity
+}
+
+export interface PreflightResult {
+  ok: boolean
+  blockers: Blocker[]
+}
+
+/** Require free space >= imageSize * factor to cover decompressed layers + headroom. */
+export const DISK_SAFETY_FACTOR = 2
+/** Conservative fallback when the registry image size can't be determined. */
+export const MIN_FREE_BYTES = 5 * 1024 * 1024 * 1024 // 5 GiB
+
+/** Free bytes on the root filesystem (best-effort, falls back to max available). */
+export async function getFreeBytes(systemService: SystemService): Promise {
+  const info = await systemService.getSystemInfo()
+  if (!info?.fsSize?.length) return null
+  const root = info.fsSize.find((f) => f.mount === '/')
+  if (root) return root.available
+  return Math.max(...info.fsSize.map((f) => f.available))
+}
+
+function gib(bytes: number): string {
+  return `${(bytes / 1024 / 1024 / 1024).toFixed(1)} GiB`
+}
+
+/**
+ * Returns a `failure` disk blocker if free space is insufficient for the given
+ * image reference, otherwise null. Mirrors the core update's behavior: estimate
+ * the image's compressed download size from the registry manifest, require
+ * `size * DISK_SAFETY_FACTOR` (or {@link MIN_FREE_BYTES} when size is unknown),
+ * and never block on transient lookup errors (returns null on failure).
+ *
+ * @param image Full image reference INCLUDING tag (e.g. "ollama/ollama:0.23.2").
+ */
+export async function checkImageDiskSpace(params: {
+  image: string
+  hostArch: string
+  containerRegistryService: ContainerRegistryService
+  systemService: SystemService
+}): Promise {
+  const { image, hostArch, containerRegistryService, systemService } = params
+  try {
+    const parsed = containerRegistryService.parseImageReference(image)
+    const imageSize = await containerRegistryService.getImageDownloadSize(
+      parsed,
+      parsed.tag,
+      hostArch
+    )
+    const required = imageSize !== null ? imageSize * DISK_SAFETY_FACTOR : MIN_FREE_BYTES
+
+    const free = await getFreeBytes(systemService)
+    if (free === null) {
+      logger.warn('[ImageDiskPreflight] Could not determine free disk space; skipping disk check')
+      return null
+    }
+
+    if (free < required) {
+      return {
+        reason: `Insufficient disk space: ${gib(free)} free, ${gib(required)} required`,
+        severity: 'failure',
+      }
+    }
+    return null
+  } catch (error) {
+    logger.warn(`[ImageDiskPreflight] Disk space check failed: ${error.message}`)
+    return null
+  }
+}
diff --git a/admin/app/utils/kb_ingest_decision.ts b/admin/app/utils/kb_ingest_decision.ts
new file mode 100644
index 0000000..72794d5
--- /dev/null
+++ b/admin/app/utils/kb_ingest_decision.ts
@@ -0,0 +1,70 @@
+import type { KbIngestStateValue } from '../../types/kb_ingest_state.js'
+
+/**
+ * Decision returned by `decideScanAction` describing what scanAndSyncStorage
+ * should do for one file given its current state row (if any), whether Qdrant
+ * already has chunks for it, and the global ingest policy.
+ *
+ * - `skip` — file is in a settled state (already indexed, deliberately not
+ *   indexed, or in a manual-recovery state); no auto-dispatch.
+ * - `dispatch` — file needs to be (re-)embedded; an EmbedFileJob should be
+ *   dispatched. `createStateRow` indicates whether a new state row needs to
+ *   be created before dispatch (i.e. first time the scanner has seen it).
+ * - `backfill_indexed` — Qdrant has chunks but no state row exists yet
+ *   (pre-RFC install, or new admin instance pointed at an existing Qdrant
+ *   volume). Create a row in `indexed` state without re-embedding.
+ * - `create_pending` — Manual mode: record that we've seen the file but
+ *   don't dispatch. Frontend surfaces a per-card "Index" affordance.
+ */
+export type ScanAction =
+  | { kind: 'skip' }
+  | { kind: 'dispatch'; createStateRow: boolean }
+  | { kind: 'backfill_indexed' }
+  | { kind: 'create_pending' }
+
+export interface KbIngestStateRow {
+  state: KbIngestStateValue
+}
+
+/**
+ * Global auto-index policy stored at KV `rag.defaultIngestPolicy`. Unset is
+ * treated as `Always` so existing installs keep their current behavior until
+ * the user opts into Manual mode through the KB panel.
+ */
+export type IngestPolicy = 'Always' | 'Manual'
+
+/**
+ * Decide what scanAndSyncStorage should do for a single embeddable file.
+ *
+ * Replaces the earlier `!sourcesInQdrant.has(filePath)` binary check, which
+ * couldn't tell a fully-indexed file from a stalled mid-batch ingestion, and
+ * couldn't honor a user's "browse only" choice. The state row is now the
+ * authoritative answer; Qdrant chunk presence is corroborating evidence.
+ */
+export function decideScanAction(
+  stateRow: KbIngestStateRow | null,
+  hasChunksInQdrant: boolean,
+  policy: IngestPolicy = 'Always'
+): ScanAction {
+  if (!stateRow) {
+    if (hasChunksInQdrant) return { kind: 'backfill_indexed' }
+    return policy === 'Always'
+      ? { kind: 'dispatch', createStateRow: true }
+      : { kind: 'create_pending' }
+  }
+
+  switch (stateRow.state) {
+    case 'indexed':
+      return hasChunksInQdrant ? { kind: 'skip' } : { kind: 'dispatch', createStateRow: false }
+    case 'pending_decision':
+      // Manual mode: file is waiting for the user to opt in via per-card Index.
+      // Always mode: treat as "user-equivalent of auto-index" and dispatch.
+      return policy === 'Always'
+        ? { kind: 'dispatch', createStateRow: false }
+        : { kind: 'skip' }
+    case 'browse_only':
+    case 'failed':
+    case 'stalled':
+      return { kind: 'skip' }
+  }
+}
diff --git a/admin/app/utils/kb_job_health.ts b/admin/app/utils/kb_job_health.ts
new file mode 100644
index 0000000..d5e154f
--- /dev/null
+++ b/admin/app/utils/kb_job_health.ts
@@ -0,0 +1,50 @@
+/**
+ * Visual status assigned to an in-flight (or stuck) embedding job, used to
+ * pick the colored status pill in the KB Processing Queue. See RFC #883 §5.
+ *
+ * - `waiting`  — queued, no batch has started yet
+ * - `healthy`  — last batch < 2 minutes ago
+ * - `slow`     — last batch 2-5 minutes ago (CPU-paced multi-batch ingestion
+ *                falls into this band; not necessarily a problem)
+ * - `stalled`  — last batch > 5 minutes ago (likely a real problem)
+ * - `failed`   — job recorded a failed status
+ */
+export type JobHealthStatus = 'waiting' | 'healthy' | 'slow' | 'stalled' | 'failed'
+
+export interface JobHealthInput {
+  /** BullMQ job.data.status — set by EmbedFileJob.handle on transitions. */
+  status: string
+  /** 0-100. 0 means no work observed yet on this job-row. */
+  progress: number
+  /** ms epoch of the last completed batch. Multi-batch ZIMs update this on
+   * every continuation; single-batch jobs leave it unset until completion. */
+  lastBatchAt?: number
+  /** ms epoch of the first batch start. Used as a fallback "last activity"
+   * signal for jobs that haven't yet completed their first batch. */
+  startedAt?: number
+  /** Current ms epoch. Injected for testability. */
+  now: number
+}
+
+const SLOW_THRESHOLD_MS = 2 * 60 * 1000
+const STALLED_THRESHOLD_MS = 5 * 60 * 1000
+
+export function computeJobHealth(input: JobHealthInput): JobHealthStatus {
+  if (input.status === 'failed') return 'failed'
+
+  // No progress recorded and no activity timestamps — job is still queued.
+  if (
+    input.progress === 0 &&
+    input.lastBatchAt === undefined &&
+    input.startedAt === undefined
+  ) {
+    return 'waiting'
+  }
+
+  const lastActivity = input.lastBatchAt ?? input.startedAt ?? input.now
+  const stalenessMs = input.now - lastActivity
+
+  if (stalenessMs > STALLED_THRESHOLD_MS) return 'stalled'
+  if (stalenessMs > SLOW_THRESHOLD_MS) return 'slow'
+  return 'healthy'
+}
diff --git a/admin/app/utils/kb_ratio_lookup.ts b/admin/app/utils/kb_ratio_lookup.ts
new file mode 100644
index 0000000..e5e7185
--- /dev/null
+++ b/admin/app/utils/kb_ratio_lookup.ts
@@ -0,0 +1,109 @@
+export interface RatioRow {
+  pattern: string
+  chunks_per_mb: number
+}
+
+/**
+ * Bytes of on-disk storage one embedded chunk consumes inside Qdrant.
+ *
+ * Rough composition for our pipeline:
+ *   - vector: 768 dims × float32 = 3,072 B
+ *   - chunk text payload: ~3,000 B (target 1,500 tokens × 2 chars/token)
+ *   - source/metadata payload + Qdrant indexes: ~2,000 B
+ *
+ * Used for surfacing pre-ingest disk-cost estimates; the actual figure
+ * varies with collection params and will be replaced by self-calibration
+ * (RFC #883 Phase 4) once we have real measurements.
+ */
+export const BYTES_PER_CHUNK_ON_DISK = 8_000
+
+export interface BatchEstimateInput {
+  filename: string
+  sizeBytes: number
+}
+
+export interface BatchEstimate {
+  totalChunks: number
+  totalBytes: number
+  hasUnknown: boolean
+}
+
+/**
+ * Aggregate an embedding-disk-cost estimate across a batch of files (curated
+ * tier add, multi-upload, sync preview, etc). `hasUnknown` is true when at
+ * least one file did not match any registry row — the totals only include
+ * matched files, so callers should annotate "estimate excludes unknown files"
+ * when surfacing the figure.
+ */
+export function estimateBatch(
+  files: BatchEstimateInput[],
+  rows: RatioRow[]
+): BatchEstimate {
+  let totalChunks = 0
+  let hasUnknown = false
+  for (const f of files) {
+    const chunks = estimateChunkCount(f.filename, f.sizeBytes, rows)
+    if (chunks === null) {
+      hasUnknown = true
+    } else {
+      totalChunks += chunks
+    }
+  }
+  return {
+    totalChunks,
+    totalBytes: totalChunks * BYTES_PER_CHUNK_ON_DISK,
+    hasUnknown,
+  }
+}
+
+/**
+ * Pick the chunks_per_mb estimate for a filename by longest-prefix match.
+ *
+ * Patterns are filename prefixes (`devdocs_`, `wikipedia_en_simple_`, ...).
+ * The longest matching prefix wins, so a specific entry (`wikipedia_en_simple_`)
+ * overrides the broader fallback (`wikipedia_en_`). An empty-string pattern in
+ * the registry serves as a catch-all that matches every input.
+ *
+ * Returns `null` if no row matches and no empty-string fallback is present —
+ * caller decides whether to surface "unknown" or use its own default.
+ *
+ * `ignoreCatchAll` excludes the empty-string catch-all row from matching, so a
+ * filename that only the fallback would have matched returns `null` instead.
+ * Callers that need a *specific* expectation (e.g. the partial_stall warning,
+ * which must not fire on atypical ZIMs the registry can't actually characterize)
+ * pass this; rough aggregate estimates (disk cost) leave it off. See #913.
+ */
+export function findChunksPerMb(
+  filename: string,
+  rows: RatioRow[],
+  opts: { ignoreCatchAll?: boolean } = {}
+): number | null {
+  let best: RatioRow | null = null
+  for (const row of rows) {
+    if (opts.ignoreCatchAll && row.pattern === '') continue
+    if (!filename.startsWith(row.pattern)) continue
+    if (best === null || row.pattern.length > best.pattern.length) {
+      best = row
+    }
+  }
+  return best === null ? null : best.chunks_per_mb
+}
+
+/**
+ * Estimate the number of embedding chunks a ZIM-style file will produce given
+ * its size on disk in bytes. Returns `null` when the registry has nothing to
+ * match against. Caller is responsible for converting the estimate into either
+ * a disk-footprint estimate (chunks × bytes-per-chunk in Qdrant) or a time
+ * estimate (chunks ÷ chunks-per-minute-on-this-hardware).
+ */
+export function estimateChunkCount(
+  filename: string,
+  fileSizeBytes: number,
+  rows: RatioRow[],
+  opts: { ignoreCatchAll?: boolean } = {}
+): number | null {
+  const ratio = findChunksPerMb(filename, rows, opts)
+  if (ratio === null) return null
+  const megabytes = fileSizeBytes / (1024 * 1024)
+  return Math.round(ratio * megabytes)
+}
diff --git a/admin/app/utils/kb_warning_decision.ts b/admin/app/utils/kb_warning_decision.ts
new file mode 100644
index 0000000..4551566
--- /dev/null
+++ b/admin/app/utils/kb_warning_decision.ts
@@ -0,0 +1,70 @@
+/**
+ * Conditional warnings surfaced on Stored Files rows in the KB panel.
+ * See RFC #883 §6 — these warnings appear ONLY when their triggering condition
+ * is met, never on healthy files, to keep the panel silent in the common case.
+ *
+ * - `zero_chunks`   — a non-trivial file produced 0 embedding chunks. Common
+ *                     cause: video-only or image-only ZIMs that the pipeline
+ *                     completes "successfully" with no extractable text.
+ *                     AI Assistant cannot reference this content.
+ * - `partial_stall` — the file has embedded chunks but well below the count
+ *                     expected from the ratio registry. Likely a mid-batch
+ *                     stall (which the binary "any chunks ⇒ embedded" check
+ *                     used to mask). Surfaces a Retry affordance.
+ */
+import type { FileWarning } from '../../types/rag.js'
+
+export type { FileWarning }
+
+/** Files smaller than this are too small to flag as suspicious zero-chunk
+ *  cases — a 5 KB upload that produces 0 chunks is much more likely to be a
+ *  legitimate edge case (placeholder file) than the gigabyte-scale video ZIM
+ *  problem this warning targets. */
+export const ZERO_CHUNKS_MIN_SIZE_BYTES = 100 * 1024 * 1024 // 100 MB
+
+/** Fraction of expected chunks below which we consider a file partially
+ *  stalled. 0.5 (50%) matches the threshold described in RFC #883 §6 Warning B. */
+export const PARTIAL_STALL_RATIO_THRESHOLD = 0.5
+
+export interface WarningInputs {
+  /** Source file size on disk in bytes. */
+  fileSizeBytes: number
+  /** Distinct chunks present in Qdrant for this source. */
+  chunksInQdrant: number
+  /** Best estimate of chunks the file should produce, from the ratio
+   *  registry. `null` when no registry pattern matches and no fallback is
+   *  configured — Warning B is suppressed in that case (we'd rather be silent
+   *  than wrong). */
+  expectedChunks: number | null
+}
+
+export function decideWarnings(inputs: WarningInputs): FileWarning[] {
+  const warnings: FileWarning[] = []
+
+  // Warning A: file is large but produced nothing. Almost always a video-only
+  // or image-only ZIM; AI Assistant literally cannot reference this content.
+  if (
+    inputs.chunksInQdrant === 0 &&
+    inputs.fileSizeBytes > ZERO_CHUNKS_MIN_SIZE_BYTES
+  ) {
+    warnings.push({ kind: 'zero_chunks', fileSizeBytes: inputs.fileSizeBytes })
+  }
+
+  // Warning B: chunks present but far below expectation. Suppresses when we
+  // have no expectation (registry miss) since the comparison would be
+  // meaningless and we'd rather under-warn than mislead.
+  if (
+    inputs.expectedChunks !== null &&
+    inputs.expectedChunks > 0 &&
+    inputs.chunksInQdrant > 0 &&
+    inputs.chunksInQdrant < inputs.expectedChunks * PARTIAL_STALL_RATIO_THRESHOLD
+  ) {
+    warnings.push({
+      kind: 'partial_stall',
+      chunksEmbedded: inputs.chunksInQdrant,
+      chunksExpected: inputs.expectedChunks,
+    })
+  }
+
+  return warnings
+}
diff --git a/admin/app/utils/superseded_resource.ts b/admin/app/utils/superseded_resource.ts
new file mode 100644
index 0000000..9094953
--- /dev/null
+++ b/admin/app/utils/superseded_resource.ts
@@ -0,0 +1,72 @@
+import { resolve, sep } from 'node:path'
+
+/**
+ * Decides whether a curated resource's PREVIOUSLY-installed file should be
+ * deleted now that a newer version has been downloaded (issue #634 — old map
+ * and ZIM versions accumulated on disk indefinitely because only Wikipedia had
+ * version cleanup).
+ *
+ * This is intentionally a pure function so every safety rail is unit-testable
+ * without touching the DB or filesystem. The caller looks up the prior
+ * `InstalledResource` row, records the new version, then asks this whether the
+ * old file is safe to remove.
+ *
+ * Safety rails (a "delete" decision requires ALL of these):
+ *  - There was a prior install for this exact resource_id (`existing` non-null).
+ *    Untracked / sideloaded files have no row and are therefore never touched.
+ *  - The old file path actually differs from the new one (a genuine version
+ *    swap, not a re-download of the same file).
+ *  - The new file is confirmed present on disk — we never remove the old copy
+ *    before the replacement is verified.
+ *  - The new version is strictly newer than the recorded one, so a re-install
+ *    or downgrade can't wipe a newer file.
+ *  - The old path resolves to within the resource's storage directory, so a
+ *    malformed DB value can't direct a delete outside the content store.
+ */
+
+export interface SupersededInputs {
+  /** Prior InstalledResource row for this resource_id, or null on first install. */
+  existing: { file_path: string; version: string } | null
+  /** Absolute path of the newly downloaded file. */
+  newFilePath: string
+  /** Version of the newly downloaded file (e.g. "2026-05"). */
+  newVersion: string
+  /** Whether the new file is confirmed present on disk. */
+  newFileExists: boolean
+  /** Absolute storage directory the old file must live under to be eligible. */
+  storageBaseDir: string
+}
+
+export type SupersededReason =
+  | 'first_install'
+  | 'same_file'
+  | 'new_file_missing'
+  | 'not_newer'
+  | 'outside_storage'
+  | 'superseded'
+
+export interface SupersededDecision {
+  delete: boolean
+  /** Resolved old path to delete — set only when `delete` is true. */
+  path?: string
+  reason: SupersededReason
+}
+
+export function decideSupersededDeletion(inputs: SupersededInputs): SupersededDecision {
+  const { existing, newFilePath, newVersion, newFileExists, storageBaseDir } = inputs
+
+  if (!existing) return { delete: false, reason: 'first_install' }
+  if (existing.file_path === newFilePath) return { delete: false, reason: 'same_file' }
+  if (!newFileExists) return { delete: false, reason: 'new_file_missing' }
+  // Versions are zero-padded date strings (YYYY-MM / YYYY-MM-DD), so a lexical
+  // compare orders them correctly. Require strictly newer.
+  if (!(newVersion > existing.version)) return { delete: false, reason: 'not_newer' }
+
+  const resolvedOld = resolve(existing.file_path)
+  const base = resolve(storageBaseDir)
+  if (resolvedOld !== base && !resolvedOld.startsWith(base + sep)) {
+    return { delete: false, reason: 'outside_storage' }
+  }
+
+  return { delete: true, path: resolvedOld, reason: 'superseded' }
+}
diff --git a/admin/app/utils/update_window.ts b/admin/app/utils/update_window.ts
new file mode 100644
index 0000000..87597ab
--- /dev/null
+++ b/admin/app/utils/update_window.ts
@@ -0,0 +1,35 @@
+import { DateTime } from 'luxon'
+
+/**
+ * Shared update-window helpers used by both the core auto-update
+ * ({@link AutoUpdateService}) and the per-app auto-update ({@link AppAutoUpdateService}).
+ *
+ * The window is interpreted in the container's local time (set via the TZ env var).
+ * Windows that wrap past midnight (start > end, e.g. 22:00-02:00) are supported.
+ */
+
+/** Parse an "HH:MM" 24-hour string into minutes-since-midnight, or null if malformed. */
+export function parseWindowMinutes(hhmm: string): number | null {
+  const match = /^([01]\d|2[0-3]):([0-5]\d)$/.exec(hhmm)
+  if (!match) return null
+  return Number(match[1]) * 60 + Number(match[2])
+}
+
+/** Whether `now` falls inside the [windowStart, windowEnd) window (handles midnight wrap). */
+export function isWithinWindow(
+  windowStart: string,
+  windowEnd: string,
+  now: DateTime = DateTime.now()
+): boolean {
+  const start = parseWindowMinutes(windowStart)
+  const end = parseWindowMinutes(windowEnd)
+  if (start === null || end === null) return false
+
+  const current = now.hour * 60 + now.minute
+  if (start === end) return false // zero-length window
+  if (start < end) {
+    return current >= start && current < end
+  }
+  // Wraps midnight
+  return current >= start || current < end
+}
diff --git a/admin/app/utils/zim_filename.ts b/admin/app/utils/zim_filename.ts
new file mode 100644
index 0000000..a2fb5b2
--- /dev/null
+++ b/admin/app/utils/zim_filename.ts
@@ -0,0 +1,26 @@
+/**
+ * Strip the trailing `_YYYY-MM(-DD).zim` date suffix from a Kiwix-style ZIM
+ * filename so different release dates of the same variant share a stem
+ * (e.g., `wikipedia_en_all_nopic`) while distinct corpora keep distinct stems
+ * (`wikipedia_en_simple_all_nopic`, `wikipedia_en_medicine_nopic`, etc.).
+ */
+export function zimFilenameStem(name: string): string {
+  return name.replace(/_\d{4}-\d{2}(?:-\d{2})?\.zim$/i, '')
+}
+
+/**
+ * Of the existing files, return only those that are prior-version replacements
+ * of `currentFilename` — same Wikipedia variant stem, different release. Used
+ * by the post-download cleanup to avoid deleting unrelated Wikipedia corpora
+ * the user has installed independently (issue #884).
+ */
+export function findReplacedWikipediaFiles(
+  currentFilename: string,
+  existingNames: string[]
+): string[] {
+  const currentStem = zimFilenameStem(currentFilename)
+  return existingNames.filter(
+    (n) =>
+      n.startsWith('wikipedia_en_') && n !== currentFilename && zimFilenameStem(n) === currentStem
+  )
+}
diff --git a/admin/app/validators/common.ts b/admin/app/validators/common.ts
index 8fe78bd..077dcd3 100644
--- a/admin/app/validators/common.ts
+++ b/admin/app/validators/common.ts
@@ -1,4 +1,5 @@
 import vine from '@vinejs/vine'
+import ipaddr from 'ipaddr.js'
 
 /**
  * Checks whether a URL points to a loopback or link-local address.
@@ -13,22 +14,100 @@ import vine from '@vinejs/vine'
  */
 export function assertNotPrivateUrl(urlString: string): void {
   const parsed = new URL(urlString)
-  const hostname = parsed.hostname.toLowerCase()
 
-  const blockedPatterns = [
-    /^localhost$/,
-    /^127\.\d+\.\d+\.\d+$/,
-    /^0\.0\.0\.0$/,
-    /^169\.254\.\d+\.\d+$/, // Link-local / cloud metadata
-    /^\[::1\]$/,
-    /^\[?fe80:/i, // IPv6 link-local
-    /^\[::ffff:/i, // IPv4-mapped IPv6 (e.g. [::ffff:7f00:1] = 127.0.0.1)
-    /^\[::\]$/, // IPv6 all-zeros (equivalent to 0.0.0.0)
-  ]
+  // Normalize the host before classifying it:
+  //  - lowercase for the `localhost` comparison
+  //  - strip the surrounding brackets `URL.hostname` leaves on IPv6 literals
+  //    (`http://[::1]/` → `::1`)
+  //  - strip any trailing root dot(s): `localhost.` and `127.0.0.1.` resolve to
+  //    the same target as the dotless form, so they must not slip past the
+  //    checks below (#911).
+  const hostname = parsed.hostname
+    .toLowerCase()
+    .replace(/^\[|\]$/g, '')
+    .replace(/\.+$/, '')
 
-  if (blockedPatterns.some((re) => re.test(hostname))) {
+  if (hostname === 'localhost') {
     throw new Error(`Download URL must not point to a loopback or link-local address: ${hostname}`)
   }
+
+  // Anything that isn't a literal IP (DNS names, bare LAN hostnames like
+  // `nomad3`, external FQDNs) is allowed — LAN appliances need them, and DNS
+  // rebinding is a fetch-time concern outside this guard's scope. Classifying
+  // literal addresses with ipaddr.js (rather than a regex list) catches
+  // alternate encodings and normalizes address ranges correctly (#922).
+  if (!ipaddr.isValid(hostname)) return
+
+  let addr = ipaddr.parse(hostname)
+  if (addr.kind() === 'ipv6' && (addr as ipaddr.IPv6).isIPv4MappedAddress()) {
+    // e.g. ::ffff:127.0.0.1 — classify by the embedded IPv4 so a mapped
+    // loopback/link-local is blocked while a mapped public IP is allowed.
+    addr = (addr as ipaddr.IPv6).toIPv4Address()
+  }
+
+  const range = addr.range()
+  if (range === 'loopback' || range === 'linkLocal' || range === 'unspecified') {
+    throw new Error(
+      `Download URL must not point to a loopback or link-local address: ${addr.toNormalizedString()}`
+    )
+  }
+}
+
+/**
+ * Narrower SSRF guard for "remote service" URLs the user points NOMAD at
+ * (e.g. an OpenAI-compatible endpoint like LM Studio, llama.cpp, vLLM, or a
+ * sibling Ollama container). Unlike `assertNotPrivateUrl`, this intentionally
+ * ALLOWS loopback, link-local-ish, and RFC1918 hosts because the legitimate
+ * target is frequently on the same host or LAN (host.docker.internal,
+ * the docker bridge gateway, or a LAN IP).
+ *
+ * It blocks only:
+ *   - the cloud instance-metadata IP (169.254.169.254), to avoid leaking
+ *     IAM creds on a misconfigured cloud VM
+ *   - non-HTTP schemes (file:, gopher:, etc.)
+ */
+// Canonical cloud instance-metadata addresses. AWS, GCP, Azure, DigitalOcean,
+// Oracle Cloud, and Alibaba all expose IMDS at 169.254.169.254 over IPv4;
+// AWS additionally exposes it at fd00:ec2::254 over IPv6.
+// Compared after `ipaddr.toNormalizedString()`, which expands IPv6 to its
+// fully-zero-padded form (e.g. `fd00:ec2::254` → `fd00:ec2:0:0:0:0:0:254`).
+const BLOCKED_METADATA_IPV4 = new Set(['169.254.169.254'])
+const BLOCKED_METADATA_IPV6 = new Set([
+  ipaddr.parse('fd00:ec2::254').toNormalizedString(),
+])
+
+export function assertNotCloudMetadataUrl(urlString: string): void {
+  const parsed = new URL(urlString)
+
+  if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
+    throw new Error(`URL must use http or https scheme: ${parsed.protocol}`)
+  }
+
+  // Node's WHATWG URL parser keeps the brackets on IPv6 literals
+  // (`http://[::1]/` → hostname `[::1]`), so strip them before parsing.
+  const hostname = parsed.hostname.toLowerCase().replace(/^\[|\]$/g, '')
+
+  // If the hostname isn't an IP literal it's a DNS name; allow it. (DNS
+  // rebinding is out of scope here — would require resolving and re-checking
+  // at fetch time.)
+  if (!ipaddr.isValid(hostname)) return
+
+  let addr = ipaddr.parse(hostname)
+
+  // Unwrap IPv4-mapped IPv6 (e.g. ::ffff:169.254.169.254, ::ffff:a9fe:a9fe,
+  // and the fully-expanded 0:0:0:0:0:ffff:a9fe:a9fe) so the IPv4 check below
+  // sees the embedded address.
+  if (addr.kind() === 'ipv6' && (addr as ipaddr.IPv6).isIPv4MappedAddress()) {
+    addr = (addr as ipaddr.IPv6).toIPv4Address()
+  }
+
+  const canonical = addr.toNormalizedString()
+
+  const blocked =
+    addr.kind() === 'ipv4' ? BLOCKED_METADATA_IPV4 : BLOCKED_METADATA_IPV6
+  if (blocked.has(canonical)) {
+    throw new Error(`URL must not point to the cloud instance metadata endpoint: ${canonical}`)
+  }
 }
 
 export const remoteDownloadValidator = vine.compile(
@@ -100,6 +179,7 @@ const resourceUpdateInfoBase = vine.object({
   installed_version: vine.string().trim(),
   latest_version: vine.string().trim().minLength(1),
   download_url: vine.string().url({ require_tld: false }).trim(),
+  size_bytes: vine.number().positive().optional(),
 })
 
 export const applyContentUpdateValidator = vine.compile(resourceUpdateInfoBase)
@@ -111,3 +191,31 @@ export const applyAllContentUpdatesValidator = vine.compile(
       .minLength(1),
   })
 )
+
+// --- Map extract (regional pmtiles download) ---
+
+// ISO 3166-1 alpha-2, 2 letters. Loose regex; CountriesService.resolveCodes
+// does the authoritative check against the polygon dataset.
+const countryCodeSchema = vine
+  .string()
+  .trim()
+  .toUpperCase()
+  .regex(/^[A-Z]{2}$/)
+
+const countriesArraySchema = vine.array(countryCodeSchema).minLength(1).maxLength(300)
+
+export const mapExtractPreflightValidator = vine.compile(
+  vine.object({
+    countries: countriesArraySchema.clone(),
+    maxzoom: vine.number().min(0).max(15).optional(),
+  })
+)
+
+export const mapExtractValidator = vine.compile(
+  vine.object({
+    countries: countriesArraySchema.clone(),
+    maxzoom: vine.number().min(0).max(15).optional(),
+    label: vine.string().trim().minLength(1).maxLength(64).optional(),
+    estimatedBytes: vine.number().min(0).optional(),
+  })
+)
diff --git a/admin/app/validators/ollama.ts b/admin/app/validators/ollama.ts
index d83ed3b..1784ada 100644
--- a/admin/app/validators/ollama.ts
+++ b/admin/app/validators/ollama.ts
@@ -14,6 +14,12 @@ export const chatSchema = vine.compile(
   })
 )
 
+export const unloadChatModelsSchema = vine.compile(
+  vine.object({
+    targetModel: vine.string().trim().minLength(1).nullable().optional(),
+  })
+)
+
 export const getAvailableModelsSchema = vine.compile(
   vine.object({
     sort: vine.enum(['pulls', 'name'] as const).optional(),
diff --git a/admin/app/validators/rag.ts b/admin/app/validators/rag.ts
index a9124b4..b57fcee 100644
--- a/admin/app/validators/rag.ts
+++ b/admin/app/validators/rag.ts
@@ -11,3 +11,30 @@ export const deleteFileSchema = vine.compile(
     source: vine.string(),
   })
 )
+
+export const embedFileSchema = vine.compile(
+  vine.object({
+    source: vine.string().minLength(1),
+    force: vine.boolean().optional(),
+  })
+)
+
+export const fileSourceSchema = vine.compile(
+  vine.object({
+    source: vine.string().minLength(1),
+  })
+)
+
+export const estimateBatchSchema = vine.compile(
+  vine.object({
+    files: vine
+      .array(
+        vine.object({
+          filename: vine.string().minLength(1).maxLength(255),
+          sizeBytes: vine.number().min(0),
+        })
+      )
+      .minLength(1)
+      .maxLength(500),
+  })
+)
diff --git a/admin/app/validators/settings.ts b/admin/app/validators/settings.ts
index fff9d38..089e922 100644
--- a/admin/app/validators/settings.ts
+++ b/admin/app/validators/settings.ts
@@ -1,5 +1,6 @@
 import vine from "@vinejs/vine";
 import { SETTINGS_KEYS } from "../../constants/kv_store.js";
+import type { KVStoreKey } from "../../types/kv_store.js";
 
 export const getSettingSchema = vine.compile(vine.object({
     key: vine.enum(SETTINGS_KEYS),
@@ -8,4 +9,60 @@ export const getSettingSchema = vine.compile(vine.object({
 export const updateSettingSchema = vine.compile(vine.object({
     key: vine.enum(SETTINGS_KEYS),
     value: vine.any().optional(),
-}))
\ No newline at end of file
+}))
+
+const HHMM_PATTERN = /^([01]\d|2[0-3]):[0-5]\d$/
+
+/**
+ * Validate the *value* for keys that have format constraints beyond the generic
+ * enum/any check (the generic validator only constrains the key). Returns an
+ * error message string when invalid, or null when the value is acceptable.
+ */
+export function validateSettingValue(key: KVStoreKey, value: unknown): string | null {
+    switch (key) {
+        case 'autoUpdate.windowStart':
+        case 'autoUpdate.windowEnd':
+        case 'contentAutoUpdate.windowStart':
+        case 'contentAutoUpdate.windowEnd':
+            if (typeof value !== 'string' || !HHMM_PATTERN.test(value)) {
+                return 'Time window values must be in 24-hour HH:MM format (e.g. "20:00").'
+            }
+            return null
+        case 'autoUpdate.cooloffHours':
+        case 'contentAutoUpdate.cooloffHours': {
+            const num = Number(value)
+            if (!Number.isInteger(num) || num < 0 || num > 8760) {
+                return 'Cool-off must be a whole number of hours between 0 and 8760.'
+            }
+            return null
+        }
+        case 'system.internetStatusTestUrl': {
+            // Empty clears the setting (reverts to env var / built-in defaults).
+            if (value === '' || value === undefined || value === null) {
+                return null
+            }
+            if (typeof value !== 'string') {
+                return 'Test URL must be a string.'
+            }
+            try {
+                const url = new URL(value)
+                if (url.protocol !== 'http:' && url.protocol !== 'https:') {
+                    return 'Test URL must use http or https.'
+                }
+            } catch {
+                return 'Test URL must be a valid URL (e.g. "https://example.com").'
+            }
+            return null
+        }
+        case 'contentAutoUpdate.maxBytesPerWindow': {
+            // Per-window download budget in bytes. 0 = unlimited.
+            const num = Number(value)
+            if (!Number.isInteger(num) || num < 0) {
+                return 'The per-window data cap must be a whole number of bytes (0 = unlimited).'
+            }
+            return null
+        }
+        default:
+            return null
+    }
+}
\ No newline at end of file
diff --git a/admin/app/validators/system.ts b/admin/app/validators/system.ts
index 41eb6a6..45a1144 100644
--- a/admin/app/validators/system.ts
+++ b/admin/app/validators/system.ts
@@ -31,3 +31,142 @@ export const updateServiceValidator = vine.compile(
     target_version: vine.string().trim(),
   })
 )
+
+export const preflightValidator = vine.compile(
+  vine.object({
+    service_name: vine.string().trim(),
+  })
+)
+
+// Toggle per-app automatic updates (opt-in). The global master switch lives in
+// the KVStore (`appAutoUpdate.enabled`) and flows through the settings endpoint.
+export const setServiceAutoUpdateValidator = vine.compile(
+  vine.object({
+    service_name: vine.string().trim(),
+    enabled: vine.boolean(),
+  })
+)
+
+// Shared sub-schema for a volume bind mapping. A colon is Docker's bind delimiter
+// (host:container:options) — forbid it in either field so a path can't smuggle in an
+// extra segment that the guard reads as safe but Docker re-parses as a different mount.
+const volumeSchema = vine.object({
+  host_path: vine.string().trim().regex(/^[^:]+$/),
+  container_path: vine.string().trim().regex(/^[^:]+$/),
+})
+
+// Environment variables must be KEY=value (value may be empty), matching Docker's Env format.
+const envVarSchema = vine.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*=[\s\S]*$/)
+
+// Service-less preflight for the custom-app form: evaluates ports, volumes and image together.
+export const preflightCustomValidator = vine.compile(
+  vine.object({
+    image: vine.string().trim().optional(),
+    ports: vine.array(vine.number().min(1).max(65535)).optional(),
+    volumes: vine.array(volumeSchema).optional(),
+    // When editing, ignore port conflicts caused by this app's own running container.
+    exclude_service: vine.string().trim().optional(),
+  })
+)
+
+export const customAppValidator = vine.compile(
+  vine.object({
+    friendly_name: vine.string().trim().minLength(1).maxLength(100),
+    image: vine.string().trim().minLength(1),
+    ports: vine
+      .array(
+        vine.object({
+          container: vine.number().min(1).max(65535),
+          host: vine.number().min(1024).max(65535),
+        })
+      )
+      .optional(),
+    volumes: vine.array(volumeSchema).optional(),
+    env: vine.array(envVarSchema).optional(),
+    category: vine
+      .enum(['productivity', 'media', 'security', 'networking', 'utility', 'ai', 'education', 'custom'])
+      .optional(),
+    icon: vine.string().trim().optional(),
+    // Optional resource caps (advanced). Default caps are applied when omitted.
+    memory_mb: vine.number().min(64).optional(),
+    cpus: vine.number().min(0.1).max(64).optional(),
+    // When true, bypass advisory preflight (port conflicts / guard warnings) and install anyway.
+    force: vine.boolean().optional(),
+  })
+)
+
+// Set or clear an app's custom launch URL. A null/empty value clears the override; a non-empty
+// value is normalized + validated to a http(s) URL by normalizeCustomUrl in the controller.
+export const setServiceCustomUrlValidator = vine.compile(
+  vine.object({
+    service_name: vine.string().trim(),
+    custom_url: vine.string().trim().nullable(),
+  })
+)
+
+/**
+ * Normalize a user-supplied custom app URL (backend twin of the inertia helper in
+ * lib/navigation.ts). Accepts a bare host or a full URL; prepends http:// when no scheme is
+ * present. Returns the normalized href, or null when empty (clears the override) or not a valid
+ * http(s) URL. Restricting to http/https blocks javascript:/data: from ever being stored.
+ */
+export function normalizeCustomUrl(input: string | null | undefined): string | null {
+  const trimmed = (input ?? '').trim()
+  if (!trimmed) return null
+  const withScheme = /^https?:\/\//i.test(trimmed) ? trimmed : `http://${trimmed}`
+  try {
+    const url = new URL(withScheme)
+    if (url.protocol !== 'http:' && url.protocol !== 'https:') return null
+    return url.href
+  } catch {
+    return null
+  }
+}
+
+export const deleteCustomAppValidator = vine.compile(
+  vine.object({
+    service_name: vine.string().trim(),
+    // When true, also remove the backing Docker image (best-effort).
+    remove_image: vine.boolean().optional(),
+  })
+)
+
+export const uninstallServiceValidator = vine.compile(
+  vine.object({
+    service_name: vine.string().trim(),
+    // When true, also remove the backing Docker image (best-effort).
+    remove_image: vine.boolean().optional(),
+  })
+)
+
+export const serviceLogsValidator = vine.compile(
+  vine.object({
+    tail: vine.number().min(1).max(2000).optional(),
+  })
+)
+
+// Reconfigure an existing custom app: the create shape plus the target service_name.
+export const updateCustomAppValidator = vine.compile(
+  vine.object({
+    service_name: vine.string().trim(),
+    friendly_name: vine.string().trim().minLength(1).maxLength(100),
+    image: vine.string().trim().minLength(1),
+    ports: vine
+      .array(
+        vine.object({
+          container: vine.number().min(1).max(65535),
+          host: vine.number().min(1024).max(65535),
+        })
+      )
+      .optional(),
+    volumes: vine.array(volumeSchema).optional(),
+    env: vine.array(envVarSchema).optional(),
+    category: vine
+      .enum(['productivity', 'media', 'security', 'networking', 'utility', 'ai', 'education', 'custom'])
+      .optional(),
+    icon: vine.string().trim().optional(),
+    memory_mb: vine.number().min(64).optional(),
+    cpus: vine.number().min(0.1).max(64).optional(),
+    force: vine.boolean().optional(),
+  })
+)
diff --git a/admin/app/validators/zim.ts b/admin/app/validators/zim.ts
index 2c18271..5463e52 100644
--- a/admin/app/validators/zim.ts
+++ b/admin/app/validators/zim.ts
@@ -7,3 +7,30 @@ export const listRemoteZimValidator = vine.compile(
     query: vine.string().optional(),
   })
 )
+
+export const addCustomLibraryValidator = vine.compile(
+  vine.object({
+    name: vine.string().trim().minLength(1).maxLength(100),
+    base_url: vine
+      .string()
+      .url({ require_tld: false })
+      .trim(),
+  })
+)
+
+export const browseLibraryValidator = vine.compile(
+  vine.object({
+    url: vine
+      .string()
+      .url({ require_tld: false })
+      .trim(),
+  })
+)
+
+export const idParamValidator = vine.compile(
+  vine.object({
+    params: vine.object({
+      id: vine.number(),
+    }),
+  })
+)
diff --git a/admin/commands/app_auto_update/dry_run.ts b/admin/commands/app_auto_update/dry_run.ts
new file mode 100644
index 0000000..40baa96
--- /dev/null
+++ b/admin/commands/app_auto_update/dry_run.ts
@@ -0,0 +1,227 @@
+import { BaseCommand, flags } from '@adonisjs/core/ace'
+import type { CommandOptions } from '@adonisjs/core/types/ace'
+
+/**
+ * Exercise the app auto-update decision logic WITHOUT ever triggering a real update.
+ *
+ *   # Prove the per-app eligibility + window logic deterministically (no DB/Docker):
+ *   node ace app-auto-update:dry-run --scenarios
+ *
+ *   # Show, against the live DB, which opted-in apps WOULD update right now:
+ *   node ace app-auto-update:dry-run
+ */
+export default class AppAutoUpdateDryRun extends BaseCommand {
+  static commandName = 'app-auto-update:dry-run'
+  static description = 'Dry-run the app auto-update decision logic (never triggers an update)'
+
+  @flags.boolean({ description: 'Run the built-in deterministic scenario suite and exit' })
+  declare scenarios: boolean
+
+  static options: CommandOptions = {
+    startApp: true,
+  }
+
+  async run() {
+    const { DateTime } = await import('luxon')
+    const { DockerService } = await import('#services/docker_service')
+    const { DownloadService } = await import('#services/download_service')
+    const { SystemService } = await import('#services/system_service')
+    const { ContainerRegistryService } = await import('#services/container_registry_service')
+    const { QueueService } = await import('#services/queue_service')
+    const { AppAutoUpdateService } = await import('#services/app_auto_update_service')
+    const { isWithinWindow } = await import('../../app/utils/update_window.js')
+
+    const dockerService = new DockerService()
+    const svc = new AppAutoUpdateService(
+      dockerService,
+      new DownloadService(QueueService.getInstance()),
+      new SystemService(dockerService),
+      new ContainerRegistryService()
+    )
+
+    if (this.scenarios) {
+      const ok = this.runScenarios(svc, DateTime, isWithinWindow)
+      if (!ok) this.exitCode = 1
+      return
+    }
+
+    // --- Live read-only snapshot (no update triggered) ----------------------
+    const status = await svc.getStatus()
+    this.logger.log('')
+    this.logger.log(`  Master switch   : ${status.enabled ? 'enabled' : 'disabled'}`)
+    this.logger.log(
+      `  Window          : ${status.windowStart}-${status.windowEnd} ` +
+        `(currently ${status.withinWindow ? 'inside' : 'outside'})`
+    )
+    this.logger.log(`  Cool-off hours  : ${status.cooloffHours}`)
+    this.logger.log('')
+    if (status.apps.length === 0) {
+      this.logger.info('No apps are opted into auto-update.')
+      return
+    }
+    this.logger.log('Opted-in apps:')
+    for (const app of status.apps) {
+      const tag = app.eligible ? this.colors.green('WOULD UPDATE') : this.colors.dim('skip')
+      this.logger.log(
+        `  ${tag}  ${app.friendly_name || app.service_name}: ${app.current_version}` +
+          `${app.available_update_version ? ' → ' + app.available_update_version : ''} — ${app.reason}`
+      )
+    }
+  }
+
+  /**
+   * Deterministic acceptance suite over the pure decision helpers — no DB or Docker.
+   * Uses ContainerRegistryService.parseImageReference (pure) via appEligibility.
+   */
+  private runScenarios(svc: any, DateTime: any, isWithinWindow: any): boolean {
+    const now = DateTime.fromISO('2026-06-04T12:00:00Z')
+    const daysAgo = (d: number) => now.minus({ days: d })
+    const hoursAgo = (h: number) => now.minus({ hours: h })
+
+    const mk = (o: Record) => ({
+      service_name: 'nomad_test',
+      container_image: 'ollama/ollama:0.18.1',
+      available_update_version: null,
+      available_update_first_seen_at: null,
+      auto_update_disabled_reason: null,
+      ...o,
+    })
+
+    type Case = { name: string; service: any; cooloff: number; expect: boolean }
+    const cases: Case[] = [
+      { name: 'no update → not eligible', service: mk({}), cooloff: 72, expect: false },
+      {
+        name: 'major bump → not eligible',
+        service: mk({
+          available_update_version: '1.0.0',
+          available_update_first_seen_at: daysAgo(10),
+        }),
+        cooloff: 72,
+        expect: false,
+      },
+      {
+        name: 'minor newer inside cool-off → not eligible',
+        service: mk({
+          available_update_version: '0.19.0',
+          available_update_first_seen_at: hoursAgo(10),
+        }),
+        cooloff: 72,
+        expect: false,
+      },
+      {
+        name: 'minor newer past cool-off → eligible',
+        service: mk({
+          available_update_version: '0.19.0',
+          available_update_first_seen_at: daysAgo(5),
+        }),
+        cooloff: 72,
+        expect: true,
+      },
+      {
+        name: 'null first-seen → not eligible',
+        service: mk({ available_update_version: '0.19.0', available_update_first_seen_at: null }),
+        cooloff: 72,
+        expect: false,
+      },
+      {
+        name: 'self-disabled → not eligible',
+        service: mk({
+          available_update_version: '0.19.0',
+          available_update_first_seen_at: daysAgo(30),
+          auto_update_disabled_reason: 'disabled',
+        }),
+        cooloff: 72,
+        expect: false,
+      },
+      {
+        name: ':latest pinned → not eligible',
+        service: mk({
+          container_image: 'foo/bar:latest',
+          available_update_version: '1.2.3',
+          available_update_first_seen_at: daysAgo(30),
+        }),
+        cooloff: 72,
+        expect: false,
+      },
+      {
+        name: 'cool-off 0 applies immediately',
+        service: mk({
+          available_update_version: '0.18.2',
+          available_update_first_seen_at: hoursAgo(1),
+        }),
+        cooloff: 0,
+        expect: true,
+      },
+    ]
+
+    type WinCase = { name: string; start: string; end: string; at: string; expect: boolean }
+    const at = (hhmm: string) => `2026-06-04T${hhmm}:00`
+    const windows: WinCase[] = [
+      {
+        name: 'normal 20:00-23:00 @ 21:00 → in',
+        start: '20:00',
+        end: '23:00',
+        at: at('21:00'),
+        expect: true,
+      },
+      {
+        name: 'normal 20:00-23:00 @ 19:00 → out',
+        start: '20:00',
+        end: '23:00',
+        at: at('19:00'),
+        expect: false,
+      },
+      {
+        name: 'wrap 22:00-02:00 @ 01:00 → in',
+        start: '22:00',
+        end: '02:00',
+        at: at('01:00'),
+        expect: true,
+      },
+      {
+        name: 'wrap 22:00-02:00 @ 12:00 → out',
+        start: '22:00',
+        end: '02:00',
+        at: at('12:00'),
+        expect: false,
+      },
+    ]
+
+    let passed = 0
+    let failed = 0
+
+    this.logger.log('')
+    this.logger.log('Eligibility scenarios:')
+    for (const c of cases) {
+      const got = svc.appEligibility(c.service, c.cooloff, now).eligible
+      const ok = got === c.expect
+      this.report(ok, `${c.name} (expected ${c.expect}, got ${got})`)
+      ok ? passed++ : failed++
+    }
+
+    this.logger.log('')
+    this.logger.log('Window scenarios:')
+    for (const c of windows) {
+      const got = isWithinWindow(c.start, c.end, DateTime.fromISO(c.at))
+      const ok = got === c.expect
+      this.report(ok, `${c.name} (expected ${c.expect}, got ${got})`)
+      ok ? passed++ : failed++
+    }
+
+    this.logger.log('')
+    if (failed === 0) {
+      this.logger.success(`All ${passed} scenarios passed`)
+    } else {
+      this.logger.error(`${failed} scenario(s) failed, ${passed} passed`)
+    }
+    return failed === 0
+  }
+
+  private report(ok: boolean, message: string) {
+    if (ok) {
+      this.logger.log(`  ${this.colors.green('✓')} ${message}`)
+    } else {
+      this.logger.log(`  ${this.colors.red('✗')} ${message}`)
+    }
+  }
+}
diff --git a/admin/commands/auto_update/dry_run.ts b/admin/commands/auto_update/dry_run.ts
new file mode 100644
index 0000000..9590ef2
--- /dev/null
+++ b/admin/commands/auto_update/dry_run.ts
@@ -0,0 +1,302 @@
+import { BaseCommand, flags } from '@adonisjs/core/ace'
+import type { CommandOptions } from '@adonisjs/core/types/ace'
+import { readFile } from 'node:fs/promises'
+
+/**
+ * Exercise the auto-update decision pipeline WITHOUT ever triggering a real update.
+ *
+ *   # Prove the core logic deterministically (no network/DB/Docker):
+ *   node ace auto-update:dry-run --scenarios
+ *
+ *   # Simulate "what would happen if I were running 1.32.0 right now"
+ *   # against the live GitHub releases feed and real pre-flight checks:
+ *   node ace auto-update:dry-run --current=1.32.0 --force-enabled
+ *
+ *   # Fully offline simulation with a canned release list + fixed clock:
+ *   node ace auto-update:dry-run --current=1.32.0 --force-enabled \
+ *     --releases-file=./fixtures/releases.json --now=2026-06-04T21:00:00Z \
+ *     --window-start=20:00 --window-end=23:00 --skip-preflight
+ */
+export default class AutoUpdateDryRun extends BaseCommand {
+  static commandName = 'auto-update:dry-run'
+  static description = 'Dry-run the auto-update decision pipeline (never triggers an update)'
+
+  @flags.boolean({ description: 'Run the built-in deterministic scenario suite and exit' })
+  declare scenarios: boolean
+
+  @flags.string({ description: 'Simulate this currently-running version (e.g. 1.32.0)' })
+  declare current: string
+
+  @flags.boolean({ description: 'Ignore the persisted enabled setting and treat as enabled' })
+  declare forceEnabled: boolean
+
+  @flags.string({ description: 'Override cool-off hours' })
+  declare cooloff: string
+
+  @flags.string({ description: 'Override window start (HH:MM)' })
+  declare windowStart: string
+
+  @flags.string({ description: 'Override window end (HH:MM)' })
+  declare windowEnd: string
+
+  @flags.string({ description: 'Simulate the clock at this ISO timestamp' })
+  declare now: string
+
+  @flags.string({ description: 'Path to a JSON file with a GitHub releases array (offline)' })
+  declare releasesFile: string
+
+  @flags.boolean({ description: 'Bypass Docker/disk/queue pre-flight checks' })
+  declare skipPreflight: boolean
+
+  static options: CommandOptions = {
+    startApp: true,
+  }
+
+  async run() {
+    const { DateTime } = await import('luxon')
+    const { DockerService } = await import('#services/docker_service')
+    const { DownloadService } = await import('#services/download_service')
+    const { SystemService } = await import('#services/system_service')
+    const { SystemUpdateService } = await import('#services/system_update_service')
+    const { ContainerRegistryService } = await import('#services/container_registry_service')
+    const { QueueService } = await import('#services/queue_service')
+    const { AutoUpdateService } = await import('#services/auto_update_service')
+
+    const dockerService = new DockerService()
+    const svc = new AutoUpdateService(
+      dockerService,
+      new DownloadService(QueueService.getInstance()),
+      new SystemService(dockerService),
+      new SystemUpdateService(),
+      new ContainerRegistryService()
+    )
+
+    if (this.scenarios) {
+      const ok = this.runScenarios(svc, DateTime)
+      if (!ok) {
+        this.exitCode = 1
+      }
+      return
+    }
+
+    // --- Live / simulated single dry run ------------------------------------
+    const overrides: Record = {}
+    if (this.current) overrides.currentVersion = this.current
+    if (this.forceEnabled) overrides.forceEnabled = true
+    if (this.cooloff) overrides.cooloffHours = Number(this.cooloff)
+    if (this.windowStart) overrides.windowStart = this.windowStart
+    if (this.windowEnd) overrides.windowEnd = this.windowEnd
+    if (this.skipPreflight) overrides.skipPreflight = true
+    if (this.now) overrides.now = DateTime.fromISO(this.now)
+    if (this.releasesFile) {
+      const raw = await readFile(this.releasesFile, 'utf-8')
+      overrides.releases = JSON.parse(raw)
+    }
+
+    this.logger.info('Running auto-update dry run (no update will be triggered)...')
+    const decision = await svc.dryRun(overrides)
+
+    this.logger.log('')
+    this.logger.log(`  Current version : ${decision.currentVersion}`)
+    this.logger.log(`  Enabled         : ${decision.enabled}`)
+    this.logger.log(
+      `  Window          : ${decision.config.windowStart}-${decision.config.windowEnd} ` +
+        `(currently ${decision.withinWindow ? 'inside' : 'outside'})`
+    )
+    this.logger.log(`  Cool-off hours  : ${decision.config.cooloffHours}`)
+    this.logger.log(
+      `  Eligible target : ${decision.eligibleTarget ? decision.eligibleTarget.tag + ' (published ' + decision.eligibleTarget.publishedAt + ')' : '—'}`
+    )
+    if (decision.preflight) {
+      if (decision.preflight.ok) {
+        this.logger.log(`  Pre-flight      : ok`)
+      } else {
+        this.logger.log(`  Pre-flight      : BLOCKED`)
+        for (const b of decision.preflight.blockers) {
+          this.logger.log(`      - [${b.severity}] ${b.reason}`)
+        }
+      }
+    } else {
+      this.logger.log(`  Pre-flight      : (not reached)`)
+    }
+    this.logger.log('')
+
+    const verdict =
+      decision.outcome === 'ready'
+        ? `WOULD UPDATE → ${decision.eligibleTarget!.tag}`
+        : `WOULD NOT UPDATE (${decision.outcome}): ${decision.reason}`
+    if (decision.outcome === 'ready') {
+      this.logger.success(verdict)
+    } else {
+      this.logger.info(verdict)
+    }
+  }
+
+  /**
+   * Deterministic acceptance suite over the pure decision helpers — no network,
+   * DB, or Docker. Proves every branch reviewers care about.
+   */
+  private runScenarios(svc: any, DateTime: any): boolean {
+    const NOW = '2026-06-04T12:00:00Z'
+    const now = DateTime.fromISO(NOW)
+    const daysAgo = (d: number) => now.minus({ days: d }).toISO()
+    const hoursAgo = (h: number) => now.minus({ hours: h }).toISO()
+    const rel = (tag: string, published: string, extra: object = {}) => ({
+      tag_name: tag,
+      published_at: published,
+      ...extra,
+    })
+
+    type EligCase = {
+      name: string
+      releases: any[]
+      current: string
+      cooloff: number
+      expect: string | null
+    }
+
+    const eligibility: EligCase[] = [
+      {
+        name: 'only a major bump is newer → none (major requires manual)',
+        releases: [rel('v2.0.0', daysAgo(10))],
+        current: '1.32.0',
+        cooloff: 72,
+        expect: null,
+      },
+      {
+        name: 'same-major minor newer but inside cool-off → none',
+        releases: [rel('v1.33.0', hoursAgo(10))],
+        current: '1.32.0',
+        cooloff: 72,
+        expect: null,
+      },
+      {
+        name: 'same-major patch past cool-off → selected',
+        releases: [rel('v1.32.1', daysAgo(5))],
+        current: '1.32.0',
+        cooloff: 72,
+        expect: '1.32.1',
+      },
+      {
+        name: 'mixed: newest same-major past cool-off wins; major/in-cooloff/prerelease ignored',
+        releases: [
+          rel('v2.0.0', daysAgo(30)),
+          rel('v1.34.0', hoursAgo(5)),
+          rel('v1.33.2', daysAgo(4)),
+          rel('v1.33.5', daysAgo(1), { prerelease: true }),
+          rel('v1.33.0', daysAgo(8)),
+        ],
+        current: '1.32.9',
+        cooloff: 72,
+        expect: '1.33.2',
+      },
+      {
+        name: 'draft releases ignored',
+        releases: [rel('v1.33.0', daysAgo(5), { draft: true })],
+        current: '1.32.0',
+        cooloff: 72,
+        expect: null,
+      },
+      {
+        name: 'malformed tag with injection chars → ignored (M2)',
+        releases: [rel('v1.33.0|; e reboot', daysAgo(10))],
+        current: '1.32.0',
+        cooloff: 72,
+        expect: null,
+      },
+      {
+        name: 'dev build never updates',
+        releases: [rel('v1.33.0', daysAgo(10))],
+        current: 'dev',
+        cooloff: 72,
+        expect: null,
+      },
+      {
+        name: 'cool-off of 0 applies immediately',
+        releases: [rel('v1.32.1', hoursAgo(1))],
+        current: '1.32.0',
+        cooloff: 0,
+        expect: '1.32.1',
+      },
+    ]
+
+    type WinCase = { name: string; start: string; end: string; at: string; expect: boolean }
+    const at = (hhmm: string) => `2026-06-04T${hhmm}:00`
+    const windows: WinCase[] = [
+      {
+        name: 'normal 20:00-23:00 @ 21:00 → in',
+        start: '20:00',
+        end: '23:00',
+        at: at('21:00'),
+        expect: true,
+      },
+      {
+        name: 'normal 20:00-23:00 @ 19:00 → out',
+        start: '20:00',
+        end: '23:00',
+        at: at('19:00'),
+        expect: false,
+      },
+      {
+        name: 'wrap 22:00-02:00 @ 23:00 → in',
+        start: '22:00',
+        end: '02:00',
+        at: at('23:00'),
+        expect: true,
+      },
+      {
+        name: 'wrap 22:00-02:00 @ 01:00 → in',
+        start: '22:00',
+        end: '02:00',
+        at: at('01:00'),
+        expect: true,
+      },
+      {
+        name: 'wrap 22:00-02:00 @ 12:00 → out',
+        start: '22:00',
+        end: '02:00',
+        at: at('12:00'),
+        expect: false,
+      },
+    ]
+
+    let passed = 0
+    let failed = 0
+
+    this.logger.log('')
+    this.logger.log('Eligibility scenarios:')
+    for (const c of eligibility) {
+      const got = svc.selectEligibleTarget(c.releases, c.current, c.cooloff, now)
+      const gotVersion = got ? got.version : null
+      const ok = gotVersion === c.expect
+      this.report(ok, `${c.name} (expected ${c.expect ?? 'none'}, got ${gotVersion ?? 'none'})`)
+      ok ? passed++ : failed++
+    }
+
+    this.logger.log('')
+    this.logger.log('Window scenarios:')
+    for (const c of windows) {
+      const cfg = { enabled: true, windowStart: c.start, windowEnd: c.end, cooloffHours: 72 }
+      const got = svc.isWithinWindow(cfg, DateTime.fromISO(c.at))
+      const ok = got === c.expect
+      this.report(ok, `${c.name} (expected ${c.expect}, got ${got})`)
+      ok ? passed++ : failed++
+    }
+
+    this.logger.log('')
+    if (failed === 0) {
+      this.logger.success(`All ${passed} scenarios passed`)
+    } else {
+      this.logger.error(`${failed} scenario(s) failed, ${passed} passed`)
+    }
+    return failed === 0
+  }
+
+  private report(ok: boolean, message: string) {
+    if (ok) {
+      this.logger.log(`  ${this.colors.green('✓')} ${message}`)
+    } else {
+      this.logger.log(`  ${this.colors.red('✗')} ${message}`)
+    }
+  }
+}
diff --git a/admin/commands/content_auto_update/dry_run.ts b/admin/commands/content_auto_update/dry_run.ts
new file mode 100644
index 0000000..679803c
--- /dev/null
+++ b/admin/commands/content_auto_update/dry_run.ts
@@ -0,0 +1,218 @@
+import { BaseCommand, flags } from '@adonisjs/core/ace'
+import type { CommandOptions } from '@adonisjs/core/types/ace'
+import { isWithinWindow } from '../../app/utils/update_window.js'
+
+/**
+ * Exercise the content auto-update decision pipeline WITHOUT ever dispatching a
+ * real download.
+ *
+ *   # Prove the core selection/eligibility/window logic deterministically
+ *   # (no network/DB):
+ *   node ace content-auto-update:dry-run --scenarios
+ *
+ *   # Evaluate what the next run would do against the currently-persisted
+ *   # available-update state (run a "Check for Content Updates" first to refresh
+ *   # it), forcing the feature on and overriding the cap:
+ *   node ace content-auto-update:dry-run --force-enabled --cap=20 --window-start=00:00 --window-end=23:59
+ */
+export default class ContentAutoUpdateDryRun extends BaseCommand {
+  static commandName = 'content-auto-update:dry-run'
+  static description = 'Dry-run the content auto-update decision pipeline (never dispatches a download)'
+
+  @flags.boolean({ description: 'Run the built-in deterministic scenario suite and exit' })
+  declare scenarios: boolean
+
+  @flags.boolean({ description: 'Ignore the persisted enabled setting and treat as enabled' })
+  declare forceEnabled: boolean
+
+  @flags.string({ description: 'Override cool-off hours' })
+  declare cooloff: string
+
+  @flags.string({ description: 'Override window start (HH:MM)' })
+  declare windowStart: string
+
+  @flags.string({ description: 'Override window end (HH:MM)' })
+  declare windowEnd: string
+
+  @flags.string({ description: 'Override per-window data cap in GB (0 = unlimited)' })
+  declare cap: string
+
+  @flags.string({ description: 'Override bytes already used this window' })
+  declare usedBytes: string
+
+  @flags.string({ description: 'Simulate the clock at this ISO timestamp' })
+  declare now: string
+
+  static options: CommandOptions = {
+    startApp: true,
+  }
+
+  async run() {
+    const { DateTime } = await import('luxon')
+    const { DownloadService } = await import('#services/download_service')
+    const { QueueService } = await import('#services/queue_service')
+    const { ContentAutoUpdateService } = await import('#services/content_auto_update_service')
+
+    const svc = new ContentAutoUpdateService(new DownloadService(QueueService.getInstance()))
+
+    if (this.scenarios) {
+      const ok = this.runScenarios(svc, DateTime)
+      if (!ok) this.exitCode = 1
+      return
+    }
+
+    const BYTES_PER_GB = 1024 * 1024 * 1024
+    const overrides: Record = {}
+    if (this.forceEnabled) overrides.forceEnabled = true
+    if (this.cooloff) overrides.cooloffHours = Number(this.cooloff)
+    if (this.windowStart) overrides.windowStart = this.windowStart
+    if (this.windowEnd) overrides.windowEnd = this.windowEnd
+    if (this.cap) overrides.maxBytesPerWindow = Math.round(Number(this.cap) * BYTES_PER_GB)
+    if (this.usedBytes) overrides.windowBytesUsed = Number(this.usedBytes)
+    if (this.now) overrides.now = DateTime.fromISO(this.now)
+
+    this.logger.info('Running content auto-update dry run (no download will be dispatched)...')
+    const d = await svc.dryRun(overrides)
+
+    this.logger.log('')
+    this.logger.log(`  Enabled         : ${d.enabled}`)
+    this.logger.log(
+      `  Window          : ${d.config.windowStart}-${d.config.windowEnd} ` +
+        `(currently ${d.withinWindow ? 'inside' : 'outside'})`
+    )
+    this.logger.log(`  Cool-off hours  : ${d.config.cooloffHours}`)
+    this.logger.log(
+      `  Data cap        : ${d.config.maxBytesPerWindow > 0 ? d.config.maxBytesPerWindow + ' bytes' : 'unlimited'}`
+    )
+    this.logger.log(`  Eligible        : ${d.eligibleCount}`)
+    this.logger.log(`  Would start     : ${d.selection.selected.map((c) => c.resource.resource_id).join(', ') || '—'}`)
+    this.logger.log(
+      `  Skipped (cap)   : ${d.selection.skippedOversize.map((c) => c.resource.resource_id).join(', ') || '—'}`
+    )
+    this.logger.log(
+      `  Deferred (budget): ${d.selection.deferred.map((c) => c.resource.resource_id).join(', ') || '—'}`
+    )
+    this.logger.log('')
+  }
+
+  /**
+   * Deterministic acceptance suite over the pure decision helpers — no network
+   * or dispatch. Mirrors the per-resource eligibility, cap selection, and window
+   * branches reviewers care about.
+   */
+  private runScenarios(svc: any, DateTime: any): boolean {
+    const now = DateTime.fromISO('2026-06-04T03:00:00Z')
+    const daysAgo = (d: number) => now.minus({ days: d })
+    const hoursAgo = (h: number) => now.minus({ hours: h })
+
+    const res = (o: Record = {}) => ({
+      resource_id: 'res',
+      version: '2024-01',
+      available_update_version: null,
+      available_update_size_bytes: null,
+      available_update_first_seen_at: null,
+      auto_update_disabled_reason: null,
+      auto_update_consecutive_failures: 0,
+      installed_at: daysAgo(100),
+      ...o,
+    })
+    const cand = (id: string, size: number, installedAt: any = daysAgo(100)) => ({
+      resource: res({ resource_id: id }),
+      version: '2024-06',
+      download_url: `(test)`,
+      size_bytes: size,
+      installed_at: installedAt,
+    })
+
+    let passed = 0
+    let failed = 0
+    const report = (ok: boolean, message: string) => {
+      this.logger.log(`  ${ok ? this.colors.green('✓') : this.colors.red('✗')} ${message}`)
+      ok ? passed++ : failed++
+    }
+
+    this.logger.log('')
+    this.logger.log('Eligibility scenarios:')
+    report(
+      svc.resourceEligibility(res(), 72, now).eligible === false,
+      'no available update → not eligible'
+    )
+    report(
+      svc.resourceEligibility(
+        res({ available_update_version: '2024-06', available_update_first_seen_at: hoursAgo(10) }),
+        72,
+        now
+      ).eligible === false,
+      'inside cool-off → not eligible'
+    )
+    report(
+      svc.resourceEligibility(
+        res({ available_update_version: '2024-06', available_update_first_seen_at: daysAgo(5) }),
+        72,
+        now
+      ).eligible === true,
+      'past cool-off → eligible'
+    )
+    report(
+      svc.resourceEligibility(
+        res({
+          available_update_version: '2024-06',
+          available_update_first_seen_at: daysAgo(30),
+          auto_update_disabled_reason: 'disabled',
+        }),
+        72,
+        now
+      ).eligible === false,
+      'self-disabled → not eligible'
+    )
+
+    this.logger.log('')
+    this.logger.log('Cap selection scenarios:')
+    {
+      const s = svc.selectUnderCap([cand('a', 1000), cand('b', 2000)], 10000, 0)
+      report(s.selected.length === 2, 'under cap selects all')
+    }
+    {
+      const s = svc.selectUnderCap([cand('huge', 50000)], 20000, 0)
+      report(
+        s.selected.length === 0 && s.skippedOversize.length === 1,
+        'oversize file → skipped, never selected'
+      )
+    }
+    {
+      const s = svc.selectUnderCap([cand('mid', 8000)], 10000, 5000)
+      report(s.selected.length === 0 && s.deferred.length === 1, 'over remaining budget → deferred')
+    }
+    {
+      const s = svc.selectUnderCap([cand('a', 0)], 10000, 0)
+      report(s.selected.length === 0 && s.deferred.length === 1, 'unknown size → deferred')
+    }
+    {
+      const s = svc.selectUnderCap([cand('big', 9_999_999_999)], 0, 0)
+      report(s.selected.length === 1, 'cap 0 → unlimited')
+    }
+
+    this.logger.log('')
+    this.logger.log('Window scenarios:')
+    report(
+      isWithinWindow('02:00', '05:00', DateTime.fromISO('2026-06-04T03:00:00')) === true,
+      'normal 02:00-05:00 @ 03:00 → in'
+    )
+    report(
+      isWithinWindow('22:00', '02:00', DateTime.fromISO('2026-06-04T01:00:00')) === true,
+      'wrap 22:00-02:00 @ 01:00 → in'
+    )
+    report(
+      isWithinWindow('22:00', '02:00', DateTime.fromISO('2026-06-04T12:00:00')) === false,
+      'wrap 22:00-02:00 @ 12:00 → out'
+    )
+
+    this.logger.log('')
+    if (failed === 0) {
+      this.logger.success(`All ${passed} scenarios passed`)
+    } else {
+      this.logger.error(`${failed} scenario(s) failed, ${passed} passed`)
+    }
+    return failed === 0
+  }
+}
diff --git a/admin/commands/queue/work.ts b/admin/commands/queue/work.ts
index 31bb1cc..aa18dd8 100644
--- a/admin/commands/queue/work.ts
+++ b/admin/commands/queue/work.ts
@@ -3,11 +3,15 @@ import type { CommandOptions } from '@adonisjs/core/types/ace'
 import { Worker } from 'bullmq'
 import queueConfig from '#config/queue'
 import { RunDownloadJob } from '#jobs/run_download_job'
+import { RunExtractPmtilesJob } from '#jobs/run_extract_pmtiles_job'
 import { DownloadModelJob } from '#jobs/download_model_job'
 import { RunBenchmarkJob } from '#jobs/run_benchmark_job'
 import { EmbedFileJob } from '#jobs/embed_file_job'
 import { CheckUpdateJob } from '#jobs/check_update_job'
 import { CheckServiceUpdatesJob } from '#jobs/check_service_updates_job'
+import { AutoUpdateJob } from '#jobs/auto_update_job'
+import { AppAutoUpdateJob } from '#jobs/app_auto_update_job'
+import { ContentAutoUpdateJob } from '#jobs/content_auto_update_job'
 
 export default class QueueWork extends BaseCommand {
   static commandName = 'queue:work'
@@ -89,6 +93,36 @@ export default class QueueWork extends BaseCommand {
             )
           }
         }
+
+        // Terminal failure of an AUTO content update → advance that resource's
+        // backoff (self-disables after MAX_CONSECUTIVE_FAILURES). BullMQ emits
+        // `failed` on every attempt, so gate on the final attempt to count each
+        // doomed download once, not once per retry. Manual downloads (auto !== true)
+        // are deliberately excluded.
+        const meta = job?.data?.resourceMetadata
+        const isTerminal = (job?.attemptsMade ?? 0) >= (job?.opts?.attempts ?? 1)
+        if (job?.name === RunDownloadJob.key && meta?.auto === true && isTerminal) {
+          try {
+            const { default: InstalledResource } = await import('#models/installed_resource')
+            const { recordResourceUpdateFailure } = await import(
+              '../../app/utils/content_auto_update_backoff.js'
+            )
+            const resource = await InstalledResource.query()
+              .where('resource_id', meta.resource_id)
+              .where('resource_type', job.data.filetype)
+              .first()
+            if (resource) {
+              await recordResourceUpdateFailure(
+                resource,
+                err instanceof Error ? err.message : String(err)
+              )
+            }
+          } catch (e: any) {
+            this.logger.error(
+              `[${queueName}] Failed to record content auto-update backoff: ${e.message}`
+            )
+          }
+        }
       })
 
       worker.on('completed', (job) => {
@@ -102,6 +136,9 @@ export default class QueueWork extends BaseCommand {
     // Schedule nightly update checks (idempotent, will persist over restarts)
     await CheckUpdateJob.scheduleNightly()
     await CheckServiceUpdatesJob.scheduleNightly()
+    await AutoUpdateJob.schedule()
+    await AppAutoUpdateJob.schedule()
+    await ContentAutoUpdateJob.schedule()
 
     // Safety net: log unhandled rejections instead of crashing the worker process.
     // Individual job errors are already caught by BullMQ; this catches anything that
@@ -126,18 +163,26 @@ export default class QueueWork extends BaseCommand {
     const queues = new Map()
 
     handlers.set(RunDownloadJob.key, new RunDownloadJob())
+    handlers.set(RunExtractPmtilesJob.key, new RunExtractPmtilesJob())
     handlers.set(DownloadModelJob.key, new DownloadModelJob())
     handlers.set(RunBenchmarkJob.key, new RunBenchmarkJob())
     handlers.set(EmbedFileJob.key, new EmbedFileJob())
     handlers.set(CheckUpdateJob.key, new CheckUpdateJob())
     handlers.set(CheckServiceUpdatesJob.key, new CheckServiceUpdatesJob())
+    handlers.set(AutoUpdateJob.key, new AutoUpdateJob())
+    handlers.set(AppAutoUpdateJob.key, new AppAutoUpdateJob())
+    handlers.set(ContentAutoUpdateJob.key, new ContentAutoUpdateJob())
 
     queues.set(RunDownloadJob.key, RunDownloadJob.queue)
+    queues.set(RunExtractPmtilesJob.key, RunExtractPmtilesJob.queue)
     queues.set(DownloadModelJob.key, DownloadModelJob.queue)
     queues.set(RunBenchmarkJob.key, RunBenchmarkJob.queue)
     queues.set(EmbedFileJob.key, EmbedFileJob.queue)
     queues.set(CheckUpdateJob.key, CheckUpdateJob.queue)
     queues.set(CheckServiceUpdatesJob.key, CheckServiceUpdatesJob.queue)
+    queues.set(AutoUpdateJob.key, AutoUpdateJob.queue)
+    queues.set(AppAutoUpdateJob.key, AppAutoUpdateJob.queue)
+    queues.set(ContentAutoUpdateJob.key, ContentAutoUpdateJob.queue)
 
     return [handlers, queues]
   }
@@ -149,6 +194,9 @@ export default class QueueWork extends BaseCommand {
   private getConcurrencyForQueue(queueName: string): number {
     const concurrencyMap: Record = {
       [RunDownloadJob.queue]: 3,
+      // pmtiles extract hits the Protomaps CDN with many parallel range reads per job;
+      // cap concurrency at 2 so a second extract doesn't starve the first.
+      [RunExtractPmtilesJob.queue]: 2,
       [DownloadModelJob.queue]: 2, // Lower concurrency for resource-intensive model downloads
       [RunBenchmarkJob.queue]: 1, // Run benchmarks one at a time for accurate results
       [EmbedFileJob.queue]: 2, // Lower concurrency for embedding jobs, can be resource intensive
diff --git a/admin/config/bodyparser.ts b/admin/config/bodyparser.ts
index c995755..2c85bd9 100644
--- a/admin/config/bodyparser.ts
+++ b/admin/config/bodyparser.ts
@@ -41,7 +41,7 @@ const bodyParserConfig = defineConfig({
      */
     autoProcess: true,
     convertEmptyStringsToNull: true,
-    processManually: [],
+    processManually: ['/api/zim/upload'],
 
     /**
      * Maximum limit of data to parse including all files
diff --git a/admin/config/logger.ts b/admin/config/logger.ts
index 981e167..3ce310e 100644
--- a/admin/config/logger.ts
+++ b/admin/config/logger.ts
@@ -18,7 +18,14 @@ const loggerConfig = defineConfig({
         targets:
           targets()
             .pushIf(!app.inProduction, targets.pretty())
+            // Production: write JSON to both the persisted log file (for Debug
+            // Info bundle export) AND stdout (so `docker logs nomad_admin` and
+            // any external log aggregator can see runtime telemetry — RAG
+            // retrieval scores, query rewrites, etc.). Writing to fd 1 via
+            // pino/file is the standard way to do this; without it, prod
+            // installs are effectively running blind from a debugger's POV.
             .pushIf(app.inProduction, targets.file({ destination: "/app/storage/logs/admin.log", mkdir: true }))
+            .pushIf(app.inProduction, targets.file({ destination: 1 }))
             .toArray(),
       },
     },
diff --git a/admin/config/queue.ts b/admin/config/queue.ts
index 25053b8..5b33d1e 100644
--- a/admin/config/queue.ts
+++ b/admin/config/queue.ts
@@ -1,10 +1,42 @@
 import env from '#start/env'
+import logger from '@adonisjs/core/services/logger'
+import { Redis } from 'ioredis'
+
+// BullMQ treats a plain `{host, port}` connection object as a recipe: every
+// Queue / Worker instantiates its own ioredis client from it, and script
+// commands executed against those clients can spawn further short-lived
+// connections. Under sustained ZIM ingestion this leaked ~1 client/sec until
+// Redis maxclients was exhausted (#885). Passing a single shared ioredis
+// instance instead gives BullMQ a pool to reuse — Workers still duplicate it
+// once for their blocking client, which is expected and bounded.
+// `maxRetriesPerRequest: null` is mandatory for connections shared with BullMQ.
+const sharedConnection = new Redis({
+  host: env.get('REDIS_HOST'),
+  port: env.get('REDIS_PORT') ?? 6379,
+  db: env.get('REDIS_DB') ?? 0,
+  maxRetriesPerRequest: null,
+  // Don't open the socket at module import time. Importing this file (during
+  // `node ace migration:run`, `db:seed`, `queue:work`, or HTTP boot) otherwise
+  // races Docker's network/DNS lifecycle: on a fresh `up` the `redis` name is
+  // not yet resolvable (EAI_AGAIN), and on a recreate the embedded DNS briefly
+  // serves the previous container's IP (ECONNREFUSED to the stale address).
+  // Lazy-connecting defers the first dial until BullMQ actually needs Redis —
+  // after the entrypoint has confirmed it is reachable — so each (re)connect
+  // re-resolves the current IP instead of hammering a stale one.
+  lazyConnect: true,
+  // Bounded, backing-off retry so a transient outage doesn't busy-loop.
+  retryStrategy: (times) => Math.min(times * 200, 2000),
+})
+
+// Without an `error` listener ioredis logs the raw "[ioredis] Unhandled error
+// event" lines and, on some Node versions, an EventEmitter `error` with no
+// listener can crash the process. Route them through the app logger instead.
+sharedConnection.on('error', (err) => {
+  logger.error({ err }, 'Shared Redis connection error')
+})
 
 const queueConfig = {
-  connection: {
-    host: env.get('REDIS_HOST'),
-    port: env.get('REDIS_PORT') ?? 6379,
-  },
+  connection: sharedConnection,
 }
 
 export default queueConfig
diff --git a/admin/config/transmit.ts b/admin/config/transmit.ts
index 43f1d42..40c2936 100644
--- a/admin/config/transmit.ts
+++ b/admin/config/transmit.ts
@@ -8,6 +8,7 @@ export default defineConfig({
     driver: redis({
       host: env.get('REDIS_HOST'),
       port: env.get('REDIS_PORT'),
+      db: env.get('REDIS_DB') ?? 0,
       keyPrefix: 'transmit:',
     })
   }
diff --git a/admin/constants/kv_store.ts b/admin/constants/kv_store.ts
index c49416c..35b9617 100644
--- a/admin/constants/kv_store.ts
+++ b/admin/constants/kv_store.ts
@@ -1,3 +1,3 @@
 import { KVStoreKey } from "../types/kv_store.js";
 
-export const SETTINGS_KEYS: KVStoreKey[] = ['chat.suggestionsEnabled', 'chat.lastModel', 'ui.hasVisitedEasySetup', 'ui.theme', 'system.earlyAccess', 'ai.assistantCustomName', 'ai.remoteOllamaUrl', 'ai.ollamaFlashAttention'];
\ No newline at end of file
+export const SETTINGS_KEYS: KVStoreKey[] = ['chat.suggestionsEnabled', 'chat.lastModel', 'ui.hasVisitedEasySetup', 'ui.theme', 'system.earlyAccess', 'system.internetStatusTestUrl', 'ai.assistantCustomName', 'ai.remoteOllamaUrl', 'ai.ollamaFlashAttention', 'rag.defaultIngestPolicy', 'autoUpdate.enabled', 'autoUpdate.windowStart', 'autoUpdate.windowEnd', 'autoUpdate.cooloffHours', 'appAutoUpdate.enabled', 'contentAutoUpdate.enabled', 'contentAutoUpdate.windowStart', 'contentAutoUpdate.windowEnd', 'contentAutoUpdate.cooloffHours', 'contentAutoUpdate.maxBytesPerWindow'];
\ No newline at end of file
diff --git a/admin/constants/map_regions.ts b/admin/constants/map_regions.ts
new file mode 100644
index 0000000..75f2922
--- /dev/null
+++ b/admin/constants/map_regions.ts
@@ -0,0 +1,32 @@
+export const PMTILES_BINARY_PATH = '/usr/local/bin/pmtiles'
+
+// Clamp these so a user can't ask for nonsense that never extracts
+export const EXTRACT_MIN_ZOOM = 0
+export const EXTRACT_MAX_ZOOM = 15
+export const EXTRACT_DEFAULT_MAX_ZOOM = 15
+
+// Low-zoom global fallback extracted once during base-asset setup (~15 MB). Layered
+// underneath regional extracts so the map isn't grey outside a region's polygon.
+export const WORLD_BASEMAP_FILENAME = 'world.pmtiles'
+export const WORLD_BASEMAP_MAX_ZOOM = 5
+export const WORLD_BASEMAP_SOURCE_NAME = 'world'
+
+export interface PmtilesExtractArgOptions {
+  sourceUrl: string
+  outputFilepath: string
+  regionFilepath?: string
+  maxzoom?: number
+  dryRun?: boolean
+  downloadThreads?: number
+  overfetch?: number
+}
+
+export function buildPmtilesExtractArgs(opts: PmtilesExtractArgOptions): string[] {
+  const args = ['extract', opts.sourceUrl, opts.outputFilepath]
+  if (opts.regionFilepath) args.push(`--region=${opts.regionFilepath}`)
+  if (typeof opts.maxzoom === 'number') args.push(`--maxzoom=${opts.maxzoom}`)
+  if (opts.dryRun) args.push('--dry-run')
+  if (typeof opts.downloadThreads === 'number') args.push(`--download-threads=${opts.downloadThreads}`)
+  if (typeof opts.overfetch === 'number') args.push(`--overfetch=${opts.overfetch}`)
+  return args
+}
diff --git a/admin/constants/ollama.ts b/admin/constants/ollama.ts
index 5581832..17268d8 100644
--- a/admin/constants/ollama.ts
+++ b/admin/constants/ollama.ts
@@ -64,6 +64,8 @@ export const FALLBACK_RECOMMENDED_OLLAMA_MODELS: NomadOllamaModel[] = [
 
 export const DEFAULT_QUERY_REWRITE_MODEL = 'qwen2.5:3b' // default to qwen2.5 for query rewriting with good balance of text task performance and resource usage
 
+export const EMBEDDING_MODEL_NAME = 'nomic-embed-text:v1.5'
+
 /**
  * Adaptive RAG context limits based on model size.
  * Smaller models get overwhelmed with too much context, so we cap it.
@@ -84,18 +86,27 @@ export const SYSTEM_PROMPTS = {
  - Use tables when presenting structured data.
 `,
   rag_context: (context: string) => `
-You have access to relevant information from the knowledge base. This context has been retrieved based on semantic similarity to the user's question.
+Information has been retrieved from the NOMAD knowledge base that MAY be relevant to the
+user's question. It was selected by automated similarity search, which is imperfect — some
+or all of it may be unrelated to what the user actually asked.
 
 [Knowledge Base Context]
 ${context}
 
-IMPORTANT INSTRUCTIONS:
-1. If the user's question is directly related to the context above, use this information to provide accurate, detailed answers.
-2. Always cite or reference the context when using it (e.g., "According to the information available..." or "Based on the knowledge base...").
-3. If the context is only partially relevant, combine it with your general knowledge but be clear about what comes from the knowledge base.
-4. If the context is not relevant to the user's question, you can respond using your general knowledge without forcing the context into your answer. Do not mention the context if it's not relevant.
-5. Never fabricate information that isn't in the context or your training data.
-6. If you're unsure or you don't have enough information to answer the user's question, acknowledge the limitations.
+HOW TO ANSWER:
+1. First, silently judge whether the context genuinely addresses the user's question. Use
+   it ONLY when it really contains relevant information. Do not force a connection that
+   isn't there: poetic, narrative, tangential, or topically-unrelated passages are NOT
+   relevant just because they share a word with the question — ignore them.
+2. When the context is relevant, base your answer on it and answer directly and specifically.
+3. When the context does not actually address the question, ignore it completely and answer
+   from your own general knowledge. Do this silently — do not mention the knowledge base,
+   the context, or the fact that it lacked an answer, and do not apologize.
+4. Never narrate your retrieval or reasoning process. Do not write "according to Context 1",
+   "the context is unrelated, but", "I couldn't find specific context", or similar. Just
+   give the answer as if you simply knew it.
+5. Do not fabricate specifics (numbers, names, procedures) that are neither supported by
+   genuinely relevant context nor part of your reliable knowledge.
 
 Format your response using markdown for readability.
 `,
diff --git a/admin/constants/service_names.ts b/admin/constants/service_names.ts
index 8009222..8bbc817 100644
--- a/admin/constants/service_names.ts
+++ b/admin/constants/service_names.ts
@@ -5,4 +5,17 @@ export const SERVICE_NAMES = {
   CYBERCHEF: 'nomad_cyberchef',
   FLATNOTES: 'nomad_flatnotes',
   KOLIBRI: 'nomad_kolibri',
+  KOLIBRI_GEN2: 'nomad_kolibri_2',
+  // Supply Depot — curated catalog (ports 8400–8499)
+  STIRLING_PDF: 'nomad_stirling_pdf',
+  FILEBROWSER: 'nomad_filebrowser',
+  CALIBREWEB: 'nomad_calibreweb',
+  IT_TOOLS: 'nomad_it_tools',
+  EXCALIDRAW: 'nomad_excalidraw',
+  MESHTASTIC_WEB: 'nomad_meshtastic_web',
+  MESHTASTICD: 'nomad_meshtasticd',
+  MESHCORE_WEB: 'nomad_meshcore_web',
+  HOMEBOX: 'nomad_homebox',
+  VAULTWARDEN: 'nomad_vaultwarden',
+  JELLYFIN: 'nomad_jellyfin',
 }
diff --git a/admin/constants/supply_depot_docs.ts b/admin/constants/supply_depot_docs.ts
new file mode 100644
index 0000000..a4ad6cb
--- /dev/null
+++ b/admin/constants/supply_depot_docs.ts
@@ -0,0 +1,29 @@
+import { SERVICE_NAMES } from './service_names.js'
+
+// In-app docs page (admin/docs/supply-depot-apps.md) served at /docs/supply-depot-apps.
+export const SUPPLY_DEPOT_DOC_PAGE = 'supply-depot-apps'
+
+// Maps a Supply Depot service to its section anchor on that page. Only services listed here get a
+// "Docs" item in the Manage dropdown, so the link never points at a section that doesn't exist yet.
+// Each anchor MUST match the heading id set in the .md file (e.g. `## Vaultwarden {% #vaultwarden %}`).
+// Add an entry here the moment that app's section is written.
+export const SUPPLY_DEPOT_DOC_ANCHORS: Record = {
+  [SERVICE_NAMES.STIRLING_PDF]: 'stirling-pdf',
+  [SERVICE_NAMES.FILEBROWSER]: 'file-browser',
+  [SERVICE_NAMES.CALIBREWEB]: 'calibre-web',
+  [SERVICE_NAMES.IT_TOOLS]: 'it-tools',
+  [SERVICE_NAMES.EXCALIDRAW]: 'excalidraw',
+  [SERVICE_NAMES.HOMEBOX]: 'homebox',
+  [SERVICE_NAMES.VAULTWARDEN]: 'vaultwarden',
+  [SERVICE_NAMES.JELLYFIN]: 'jellyfin',
+  [SERVICE_NAMES.MESHTASTIC_WEB]: 'meshtastic-web',
+  [SERVICE_NAMES.KOLIBRI]: 'kolibri',
+  [SERVICE_NAMES.KOLIBRI_GEN2]: 'kolibri',
+  [SERVICE_NAMES.MESHCORE_WEB]: 'meshcore-web',
+}
+
+// Returns the in-app docs link for a service, or null if it has no documentation section.
+export function getSupplyDepotDocLink(serviceName: string): string | null {
+  const anchor = SUPPLY_DEPOT_DOC_ANCHORS[serviceName]
+  return anchor ? `/docs/${SUPPLY_DEPOT_DOC_PAGE}#${anchor}` : null
+}
diff --git a/admin/database/migrations/1772000000001_add_supply_depot_fields_to_services.ts b/admin/database/migrations/1772000000001_add_supply_depot_fields_to_services.ts
new file mode 100644
index 0000000..b88c66f
--- /dev/null
+++ b/admin/database/migrations/1772000000001_add_supply_depot_fields_to_services.ts
@@ -0,0 +1,34 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+
+export default class extends BaseSchema {
+  protected tableName = 'services'
+
+  async up() {
+    this.schema.alterTable(this.tableName, (table) => {
+      table.boolean('is_custom').notNullable().defaultTo(false)
+      table.string('category').nullable()
+    })
+
+    // Backfill categories for existing curated services
+    this.defer(async (db) => {
+      const updates: Array<{ service_name: string; category: string }> = [
+        { service_name: 'nomad_kiwix_server', category: 'education' },
+        { service_name: 'nomad_kolibri', category: 'education' },
+        { service_name: 'nomad_ollama', category: 'ai' },
+        { service_name: 'nomad_cyberchef', category: 'utility' },
+        { service_name: 'nomad_flatnotes', category: 'productivity' },
+      ]
+
+      for (const { service_name, category } of updates) {
+        await db.from('services').where('service_name', service_name).update({ category })
+      }
+    })
+  }
+
+  async down() {
+    this.schema.alterTable(this.tableName, (table) => {
+      table.dropColumn('is_custom')
+      table.dropColumn('category')
+    })
+  }
+}
diff --git a/admin/database/migrations/1772000000002_add_user_modified_to_services.ts b/admin/database/migrations/1772000000002_add_user_modified_to_services.ts
new file mode 100644
index 0000000..b4b359a
--- /dev/null
+++ b/admin/database/migrations/1772000000002_add_user_modified_to_services.ts
@@ -0,0 +1,20 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+
+export default class extends BaseSchema {
+  protected tableName = 'services'
+
+  async up() {
+    this.schema.alterTable(this.tableName, (table) => {
+      // Set when a user edits a curated (non-custom) app. Tells the seeder to stop
+      // overwriting that service's container_config on subsequent runs, so the user's
+      // customizations (e.g. a changed port) survive reboots and upgrades.
+      table.boolean('is_user_modified').notNullable().defaultTo(false)
+    })
+  }
+
+  async down() {
+    this.schema.alterTable(this.tableName, (table) => {
+      table.dropColumn('is_user_modified')
+    })
+  }
+}
diff --git a/admin/database/migrations/1772000000003_add_app_auto_update_fields_to_services.ts b/admin/database/migrations/1772000000003_add_app_auto_update_fields_to_services.ts
new file mode 100644
index 0000000..6a7feea
--- /dev/null
+++ b/admin/database/migrations/1772000000003_add_app_auto_update_fields_to_services.ts
@@ -0,0 +1,28 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+
+export default class extends BaseSchema {
+  protected tableName = 'services'
+
+  async up() {
+    this.schema.alterTable(this.tableName, (table) => {
+      // Per-app opt-in for automatic updates (gated additionally by the global
+      // `appAutoUpdate.enabled` master switch). Default off — auto-update is opt-in.
+      table.boolean('auto_update_enabled').notNullable().defaultTo(false)
+      // Cool-off anchor: when the currently-available update was first detected.
+      // Registry tags carry no publish date, so cool-off is measured from first-seen.
+      table.timestamp('available_update_first_seen_at').nullable()
+      // Per-app failure backoff so one flapping app self-disables without affecting others.
+      table.integer('auto_update_consecutive_failures').notNullable().defaultTo(0)
+      table.string('auto_update_disabled_reason', 255).nullable()
+    })
+  }
+
+  async down() {
+    this.schema.alterTable(this.tableName, (table) => {
+      table.dropColumn('auto_update_enabled')
+      table.dropColumn('available_update_first_seen_at')
+      table.dropColumn('auto_update_consecutive_failures')
+      table.dropColumn('auto_update_disabled_reason')
+    })
+  }
+}
diff --git a/admin/database/migrations/1775100000001_create_custom_library_sources_table.ts b/admin/database/migrations/1775100000001_create_custom_library_sources_table.ts
new file mode 100644
index 0000000..baa3c77
--- /dev/null
+++ b/admin/database/migrations/1775100000001_create_custom_library_sources_table.ts
@@ -0,0 +1,42 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+
+export default class extends BaseSchema {
+  protected tableName = 'custom_library_sources'
+
+  async up() {
+    this.schema.createTable(this.tableName, (table) => {
+      table.increments('id').primary()
+      table.string('name', 100).notNullable()
+      table.string('base_url', 2048).notNullable()
+      table.boolean('is_default').notNullable().defaultTo(false)
+      table.timestamp('created_at').notNullable()
+      table.timestamp('updated_at').notNullable()
+    })
+
+    // Seed default Kiwix mirrors
+    const now = new Date().toISOString().slice(0, 19).replace('T', ' ')
+    const defaults = [
+      { name: 'Debian CDN (Global)', base_url: 'https://cdimage.debian.org/mirror/kiwix.org/zim/' },
+      { name: 'Your.org (US)', base_url: 'https://ftpmirror.your.org/pub/kiwix/zim/' },
+      { name: 'FAU Erlangen (DE)', base_url: 'https://ftp.fau.de/kiwix/zim/' },
+      { name: 'Dotsrc (DK)', base_url: 'https://mirrors.dotsrc.org/kiwix/zim/' },
+      { name: 'MirrorService (UK)', base_url: 'https://www.mirrorservice.org/sites/download.kiwix.org/zim/' },
+    ]
+
+    for (const d of defaults) {
+      await this.defer(async (db) => {
+        await db.table(this.tableName).insert({
+          name: d.name,
+          base_url: d.base_url,
+          is_default: true,
+          created_at: now,
+          updated_at: now,
+        })
+      })
+    }
+  }
+
+  async down() {
+    this.schema.dropTable(this.tableName)
+  }
+}
diff --git a/admin/database/migrations/1776000000001_create_kb_ingest_state_table.ts b/admin/database/migrations/1776000000001_create_kb_ingest_state_table.ts
new file mode 100644
index 0000000..18e8ab4
--- /dev/null
+++ b/admin/database/migrations/1776000000001_create_kb_ingest_state_table.ts
@@ -0,0 +1,26 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+
+export default class extends BaseSchema {
+  protected tableName = 'kb_ingest_state'
+
+  async up() {
+    this.schema.createTable(this.tableName, (table) => {
+      table.increments('id').primary()
+      // utf8mb4 caps an indexed varchar at 768 chars (3072 byte InnoDB key limit);
+      // 512 leaves headroom and is plenty for any NOMAD-managed file path.
+      table.string('file_path', 512).notNullable().unique()
+      table
+        .enum('state', ['pending_decision', 'indexed', 'browse_only', 'failed', 'stalled'])
+        .notNullable()
+        .defaultTo('pending_decision')
+      table.integer('chunks_embedded').notNullable().defaultTo(0)
+      table.text('last_error').nullable()
+      table.timestamp('created_at').notNullable()
+      table.timestamp('updated_at').notNullable()
+    })
+  }
+
+  async down() {
+    this.schema.dropTable(this.tableName)
+  }
+}
diff --git a/admin/database/migrations/1776100000001_create_kb_ratio_registry_table.ts b/admin/database/migrations/1776100000001_create_kb_ratio_registry_table.ts
new file mode 100644
index 0000000..604e6e8
--- /dev/null
+++ b/admin/database/migrations/1776100000001_create_kb_ratio_registry_table.ts
@@ -0,0 +1,64 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+import { DateTime } from 'luxon'
+
+const SEED_ROWS: Array<{ pattern: string; chunks_per_mb: number; notes: string }> = [
+  // Dense technical reference — every paragraph carries content
+  { pattern: 'devdocs_', chunks_per_mb: 1100, notes: 'Heuristic seed: dense API references' },
+  // Encyclopedia prose — Simple English & general Wikipedia variants
+  {
+    pattern: 'wikipedia_en_simple_',
+    chunks_per_mb: 270,
+    notes: 'Heuristic seed: Simple English Wikipedia',
+  },
+  {
+    pattern: 'wikipedia_en_',
+    chunks_per_mb: 270,
+    notes: 'Heuristic seed: general Wikipedia variants',
+  },
+  // Sparse text, image-heavy
+  { pattern: 'ifixit_', chunks_per_mb: 50, notes: 'Heuristic seed: image-heavy repair guides' },
+  // Q&A pages — moderate density, mostly short answers
+  {
+    pattern: 'cooking.stackexchange.com_',
+    chunks_per_mb: 200,
+    notes: 'Heuristic seed: Stack Exchange Q&A',
+  },
+  // Video-only ZIMs produce zero text chunks. Listing these explicitly keeps
+  // the cost estimator from spinning up "indexing in progress" UI for content
+  // that has no embeddable text whatsoever.
+  { pattern: 'lrnselfreliance_', chunks_per_mb: 0, notes: 'Heuristic seed: video-only ZIM' },
+  { pattern: 'ted_', chunks_per_mb: 0, notes: 'Heuristic seed: video-only ZIM' },
+  { pattern: 'freedom-of-religion_', chunks_per_mb: 0, notes: 'Heuristic seed: video-only ZIM' },
+  // Empty-pattern fallback — every filename startsWith('') is true. The lookup
+  // picks the longest matching pattern, so this only fires for ZIMs that match
+  // none of the above (medium prose density).
+  { pattern: '', chunks_per_mb: 100, notes: 'Heuristic fallback' },
+]
+
+export default class extends BaseSchema {
+  protected tableName = 'kb_ratio_registry'
+
+  async up() {
+    this.schema.createTable(this.tableName, (table) => {
+      table.increments('id').primary()
+      table.string('pattern', 255).notNullable().unique()
+      table.integer('chunks_per_mb').unsigned().notNullable()
+      // 0 = heuristic seed, >0 = number of observed ZIMs that have updated this entry.
+      // Phase 4 self-calibration increments this on each successful ingestion.
+      table.integer('sample_count').notNullable().defaultTo(0)
+      table.text('notes').nullable()
+      table.timestamp('created_at').notNullable()
+      table.timestamp('updated_at').notNullable()
+    })
+
+    const now = DateTime.utc().toSQL({ includeOffset: false }) as string
+    const rows = SEED_ROWS.map((row) => ({ ...row, created_at: now, updated_at: now }))
+    this.defer(async (db) => {
+      await db.table(this.tableName).multiInsert(rows)
+    })
+  }
+
+  async down() {
+    this.schema.dropTable(this.tableName)
+  }
+}
diff --git a/admin/database/migrations/1776200000001_add_content_auto_update_fields_to_installed_resources.ts b/admin/database/migrations/1776200000001_add_content_auto_update_fields_to_installed_resources.ts
new file mode 100644
index 0000000..b9f5c0d
--- /dev/null
+++ b/admin/database/migrations/1776200000001_add_content_auto_update_fields_to_installed_resources.ts
@@ -0,0 +1,36 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+
+export default class extends BaseSchema {
+  protected tableName = 'installed_resources'
+
+  async up() {
+    this.schema.alterTable(this.tableName, (table) => {
+      // The newest catalog version detected for this resource (a YYYY-MM date
+      // stamp), or null when the installed copy is already current. Written by
+      // every freshness check (manual or auto) via reconcileResourceUpdateState.
+      table.string('available_update_version').nullable()
+      // Size of the available update (bytes), captured from the catalog so the
+      // status UI and the per-window data-cap selection don't need to re-query
+      // the mirror on every poll.
+      table.bigInteger('available_update_size_bytes').nullable()
+      // Cool-off anchor: when the currently-available update was first detected.
+      // ZIM/map versions carry no publish date we can trust, so cool-off is
+      // measured from first-seen (mirrors the per-app auto-update fields).
+      table.timestamp('available_update_first_seen_at').nullable()
+      // Per-resource failure backoff so one flapping download self-disables
+      // without affecting the rest of the auto-update run.
+      table.integer('auto_update_consecutive_failures').notNullable().defaultTo(0)
+      table.string('auto_update_disabled_reason', 255).nullable()
+    })
+  }
+
+  async down() {
+    this.schema.alterTable(this.tableName, (table) => {
+      table.dropColumn('available_update_version')
+      table.dropColumn('available_update_size_bytes')
+      table.dropColumn('available_update_first_seen_at')
+      table.dropColumn('auto_update_consecutive_failures')
+      table.dropColumn('auto_update_disabled_reason')
+    })
+  }
+}
diff --git a/admin/database/migrations/1776200000001_add_custom_url_to_services.ts b/admin/database/migrations/1776200000001_add_custom_url_to_services.ts
new file mode 100644
index 0000000..91a1cf2
--- /dev/null
+++ b/admin/database/migrations/1776200000001_add_custom_url_to_services.ts
@@ -0,0 +1,22 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+
+export default class extends BaseSchema {
+  protected tableName = 'services'
+
+  async up() {
+    this.schema.alterTable(this.tableName, (table) => {
+      // User-set override for an app's launch ("Open") link, used when the instance sits behind a
+      // reverse proxy or local DNS (e.g. https://jellyfin.myhomelab.net). When null, the default
+      // host + port link (derived from ui_location) is used. Stored separately from ui_location so
+      // the default is always recoverable, and deliberately NOT synced by the service seeder so a
+      // curated app's override survives reseeds/upgrades.
+      table.string('custom_url').nullable()
+    })
+  }
+
+  async down() {
+    this.schema.alterTable(this.tableName, (table) => {
+      table.dropColumn('custom_url')
+    })
+  }
+}
diff --git a/admin/database/migrations/1776300000001_deprecate_legacy_kolibri.ts b/admin/database/migrations/1776300000001_deprecate_legacy_kolibri.ts
new file mode 100644
index 0000000..571b036
--- /dev/null
+++ b/admin/database/migrations/1776300000001_deprecate_legacy_kolibri.ts
@@ -0,0 +1,43 @@
+import { BaseSchema } from '@adonisjs/lucid/schema'
+import { SERVICE_NAMES } from '../../constants/service_names.js'
+
+export default class extends BaseSchema {
+  protected tableName = 'services'
+
+  async up() {
+    // Generic deprecation flag (reusable for future sunsets): a deprecated service is hidden from
+    // the install catalog unless it is already installed — see SystemService.getServices().
+    this.schema.alterTable(this.tableName, (table) => {
+      table.boolean('is_deprecated').notNullable().defaultTo(false)
+    })
+
+    // Sunset the legacy treehouses/kolibri:0.12.8 entry, replaced by the learningequality Gen 2
+    // entry seeded as `nomad_kolibri_2`. The seeder is additive + sync-existing and never deletes,
+    // so without this step every existing deployment keeps an orphaned `nomad_kolibri` row and can
+    // still install the dead 6-year-old image. Conditional handling keeps it data-safe:
+    this.defer(async (db) => {
+      // Never installed → just an orphaned catalog row; drop it outright.
+      await db
+        .from(this.tableName)
+        .where('service_name', SERVICE_NAMES.KOLIBRI)
+        .where('installed', false)
+        .delete()
+
+      // Currently installed → a running 0.12.8 container holds port 8300 + a bind mount. Keep the
+      // row (it's Nomad's only handle to open/stop/uninstall that container) but flag it deprecated
+      // so it shows a "Legacy" badge and drops out of the catalog once the user uninstalls it.
+      await db
+        .from(this.tableName)
+        .where('service_name', SERVICE_NAMES.KOLIBRI)
+        .where('installed', true)
+        .update({ is_deprecated: true })
+    })
+  }
+
+  async down() {
+    // Note: the legacy-row deletion in up() is a one-way data change and is not restored here.
+    this.schema.alterTable(this.tableName, (table) => {
+      table.dropColumn('is_deprecated')
+    })
+  }
+}
diff --git a/admin/database/seeders/service_seeder.ts b/admin/database/seeders/service_seeder.ts
index 4bf1087..77362b1 100644
--- a/admin/database/seeders/service_seeder.ts
+++ b/admin/database/seeders/service_seeder.ts
@@ -5,16 +5,31 @@ import env from '#start/env'
 import { SERVICE_NAMES } from '../../constants/service_names.js'
 import { KIWIX_LIBRARY_CMD } from '../../constants/kiwix.js'
 
+type ServiceSeedRecord = Omit<
+  ModelAttributes,
+  | 'created_at'
+  | 'updated_at'
+  | 'id'
+  | 'available_update_version'
+  | 'update_checked_at'
+  | 'metadata'
+  | 'is_user_modified'
+  | 'is_deprecated'
+  | 'custom_url'
+  | 'auto_update_enabled'
+  | 'available_update_first_seen_at'
+  | 'auto_update_consecutive_failures'
+  | 'auto_update_disabled_reason'
+> & { metadata?: string | null }
+
 export default class ServiceSeeder extends BaseSeeder {
   // Use environment variable with fallback to production default
   private static NOMAD_STORAGE_ABS_PATH = env.get(
     'NOMAD_STORAGE_PATH',
     '/opt/project-nomad/storage'
   )
-  private static DEFAULT_SERVICES: Omit<
-    ModelAttributes,
-    'created_at' | 'updated_at' | 'metadata' | 'id' | 'available_update_version' | 'update_checked_at'
-  >[] = [
+  private static DEFAULT_SERVICES: ServiceSeedRecord[] = [
+    // ── Core / original services ──────────────────────────────────────────────
     {
       service_name: SERVICE_NAMES.KIWIX,
       friendly_name: 'Information Library',
@@ -38,13 +53,15 @@ export default class ServiceSeeder extends BaseSeeder {
       installed: false,
       installation_status: 'idle',
       is_dependency_service: false,
+      is_custom: false,
+      category: 'education',
       depends_on: null,
     },
     {
       service_name: SERVICE_NAMES.QDRANT,
       friendly_name: 'Qdrant Vector Database',
       powered_by: null,
-      display_order: 100, // Dependency service, not shown directly
+      display_order: 100,
       description: 'Vector database for storing and searching embeddings',
       icon: 'IconRobot',
       container_image: 'qdrant/qdrant:v1.16',
@@ -57,11 +74,15 @@ export default class ServiceSeeder extends BaseSeeder {
           PortBindings: { '6333/tcp': [{ HostPort: '6333' }], '6334/tcp': [{ HostPort: '6334' }] },
         },
         ExposedPorts: { '6333/tcp': {}, '6334/tcp': {} },
+        // Disable anonymous telemetry — NOMAD is offline-first
+        Env: ['QDRANT__TELEMETRY_DISABLED=true'],
       }),
       ui_location: '6333',
       installed: false,
       installation_status: 'idle',
       is_dependency_service: true,
+      is_custom: false,
+      category: null,
       depends_on: null,
     },
     {
@@ -71,7 +92,7 @@ export default class ServiceSeeder extends BaseSeeder {
       display_order: 3,
       description: 'Local AI chat that runs entirely on your hardware - no internet required',
       icon: 'IconWand',
-      container_image: 'ollama/ollama:0.18.1',
+      container_image: 'ollama/ollama:0.24.0',
       source_repo: 'https://github.com/ollama/ollama',
       container_command: 'serve',
       container_config: JSON.stringify({
@@ -86,6 +107,8 @@ export default class ServiceSeeder extends BaseSeeder {
       installed: false,
       installation_status: 'idle',
       is_dependency_service: false,
+      is_custom: false,
+      category: 'ai',
       depends_on: SERVICE_NAMES.QDRANT,
     },
     {
@@ -95,7 +118,7 @@ export default class ServiceSeeder extends BaseSeeder {
       display_order: 11,
       description: 'Swiss Army knife for data encoding, encryption, and analysis',
       icon: 'IconChefHat',
-      container_image: 'ghcr.io/gchq/cyberchef:10.22.1',
+      container_image: 'ghcr.io/gchq/cyberchef:10.24.0',
       source_repo: 'https://github.com/gchq/CyberChef',
       container_command: null,
       container_config: JSON.stringify({
@@ -109,6 +132,8 @@ export default class ServiceSeeder extends BaseSeeder {
       installed: false,
       installation_status: 'idle',
       is_dependency_service: false,
+      is_custom: false,
+      category: 'utility',
       depends_on: null,
     },
     {
@@ -134,42 +159,417 @@ export default class ServiceSeeder extends BaseSeeder {
       installed: false,
       installation_status: 'idle',
       is_dependency_service: false,
+      is_custom: false,
+      category: 'productivity',
       depends_on: null,
     },
     {
-      service_name: SERVICE_NAMES.KOLIBRI,
-      friendly_name: 'Education Platform',
+      // "Kolibri Gen 2" — the upstream-official learningequality image replacing the ~6-year-old
+      // community treehouses/kolibri:0.12.8. This is a distinct catalog entry (own service_name,
+      // volume, and ports), not an in-place upgrade: the new image uses a different repo, mounts at
+      // /kolibri instead of /root/.kolibri, and crosses 7 minor versions of Kolibri's own data
+      // schema. Existing 0.12.8 installs are sunset via the deprecate-legacy-kolibri migration and
+      // keep running on 8300 until uninstalled; content is re-imported into the fresh Gen 2 install.
+      service_name: SERVICE_NAMES.KOLIBRI_GEN2,
+      friendly_name: 'Education Platform (Gen 2)',
       powered_by: 'Kolibri',
       display_order: 2,
       description: 'Interactive learning platform with video courses and exercises',
       icon: 'IconSchool',
-      container_image: 'treehouses/kolibri:0.12.8',
+      container_image: 'learningequality/kolibri:0.19.4',
       source_repo: 'https://github.com/learningequality/kolibri',
       container_command: null,
       container_config: JSON.stringify({
         HostConfig: {
           RestartPolicy: { Name: 'unless-stopped' },
-          PortBindings: { '8080/tcp': [{ HostPort: '8300' }] },
-          Binds: [`${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/kolibri:/root/.kolibri`],
+          // 8080 = web UI. 8311 = zip-content server (interactive exercises / HTML5 apps), served
+          // from a separate "alternate origin" the browser connects to DIRECTLY. KOLIBRI_ZIP_CONTENT_PORT
+          // sets the port Kolibri both LISTENS on inside the container AND advertises in content URLs,
+          // so the internal port, the published host port, and that env value must all be identical
+          // (8311) — otherwise content URLs point at a host port that doesn't route to the listener
+          // and every content page fails with ERR_CONNECTION_REFUSED. The image's default 8081 is
+          // unused here. The image refuses to start without /kolibri mounted (KOLIBRI_HOME = /kolibri).
+          PortBindings: { '8080/tcp': [{ HostPort: '8310' }], '8311/tcp': [{ HostPort: '8311' }] },
+          Binds: [`${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/kolibri-gen2:/kolibri`],
         },
-        ExposedPorts: { '8080/tcp': {} },
+        ExposedPorts: { '8080/tcp': {}, '8311/tcp': {} },
+        Env: ['KOLIBRI_ZIP_CONTENT_PORT=8311'],
       }),
-      ui_location: '8300',
+      ui_location: '8310',
       installed: false,
       installation_status: 'idle',
       is_dependency_service: false,
+      is_custom: false,
+      category: 'education',
       depends_on: null,
     },
+
+    // ── Supply Depot — curated catalog (ports 8400–8499) ─────────────────────
+
+    {
+      service_name: SERVICE_NAMES.STIRLING_PDF,
+      friendly_name: 'Stirling PDF',
+      powered_by: 'Stirling-Tools',
+      display_order: 20,
+      description: 'Locally-hosted PDF manipulation tool — merge, split, compress, convert, and more',
+      icon: 'IconFileDescription',
+      container_image: 'ghcr.io/stirling-tools/s-pdf:2.13.1',
+      source_repo: 'https://github.com/Stirling-Tools/Stirling-PDF',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '8080/tcp': [{ HostPort: '8400' }] },
+          Binds: [
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/stirling-pdf/configs:/configs`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/stirling-pdf/logs:/logs`,
+          ],
+        },
+        ExposedPorts: { '8080/tcp': {} },
+        // Stirling v2 ignores the old v1 `DOCKER_ENABLE_SECURITY` flag and ships with
+        // `security.enableLogin: true` in settings.yml, so it boots behind a login wall.
+        // For a single-user offline appliance we open it straight to the tools. Users who
+        // want a login can flip this to `true` via Manage > Edit (env overrides settings.yml).
+        Env: ['SECURITY_ENABLELOGIN=false', 'LANGS=en_GB'],
+      }),
+      ui_location: '8400',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'productivity',
+      depends_on: null,
+    },
+    {
+      service_name: SERVICE_NAMES.FILEBROWSER,
+      friendly_name: 'File Browser',
+      powered_by: 'FileBrowser',
+      display_order: 21,
+      description: 'Web-based file manager — browse, upload, download, and organize files on your device',
+      icon: 'IconFolderOpen',
+      container_image: 'filebrowser/filebrowser:v2',
+      source_repo: 'https://github.com/filebrowser/filebrowser',
+      // Browsable root is storage/filebrowser/files (persistent, so files created at the top level
+      // survive updates), with the user-facing content folders mounted in beneath it. We deliberately
+      // do NOT mount the sensitive/app-internal folders (vaultwarden, ollama, qdrant, logs, other
+      // apps' config + *.db). They simply aren't present in the container, so they can't be browsed,
+      // downloaded, or deleted — this is the guardrail. FileBrowser's own rules feature would need a
+      // wrapper script / imported config shipped into the container, which the catalog model doesn't
+      // support, so mount selection is how we scope visibility. To expose another content folder,
+      // add a `${STORAGE}/:/srv/` bind here.
+      // The DB lives in storage/filebrowser/db (mounted at /db, a SIBLING of the root, not under it)
+      // so FileBrowser's own .filebrowser.db never shows up in the user's file listing. User: root so
+      // it can read/write folders owned by other UIDs.
+      container_command: '--root /srv --database /db/.filebrowser.db',
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '80/tcp': [{ HostPort: '8410' }] },
+          Binds: [
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/filebrowser/files:/srv`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/filebrowser/db:/db`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/books:/srv/books`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/maps:/srv/maps`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/media:/srv/media`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/kb_uploads:/srv/kb_uploads`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/zim:/srv/zim`,
+          ],
+        },
+        ExposedPorts: { '80/tcp': {} },
+        // Without an initial password FileBrowser generates a random one and prints it only to
+        // the container logs, which a non-technical user can't reach. Seed a known admin/nomad
+        // login on first run instead (only applies when the DB doesn't exist yet); the docs tell
+        // users to change it. FB_NOAUTH / --noauth don't work on this image (v2.63.x), so a login
+        // stays, which is the safer default anyway for a read/write/delete file manager.
+        // NOTE: FB_PASSWORD must be a bcrypt hash, not plaintext. The value below is the hash of
+        // "nomad" (generated via `filebrowser hash nomad`). Login is admin / nomad.
+        Env: [
+          'FB_USERNAME=admin',
+          'FB_PASSWORD=$2a$10$Dvu3XTiLxvPTzvdOKu6y6.AmadN6Zt0ddLwK.8MQ.RCIQWunWBQXa',
+        ],
+        User: 'root'
+      }),
+      ui_location: '8410',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'utility',
+      depends_on: null,
+    },
+    {
+      service_name: SERVICE_NAMES.CALIBREWEB,
+      friendly_name: 'Calibre Web',
+      powered_by: 'Calibre-Web',
+      display_order: 22,
+      description: 'Web-based e-book reader and library manager for your Calibre collection',
+      icon: 'IconBook',
+      container_image: 'linuxserver/calibre-web:0.6.26-ls386',
+      source_repo: 'https://github.com/janeczku/calibre-web',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '8083/tcp': [{ HostPort: '8420' }] },
+          Binds: [
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/calibreweb/config:/config`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/books:/books`,
+          ],
+        },
+        ExposedPorts: { '8083/tcp': {} },
+        Env: ['PUID=1000', 'PGID=1000'],
+      }),
+      ui_location: '8420',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'media',
+      depends_on: null,
+      metadata: JSON.stringify({ minMemoryMB: 512, minDiskMB: 5120 }),
+    },
+    {
+      service_name: SERVICE_NAMES.IT_TOOLS,
+      friendly_name: 'IT Tools',
+      powered_by: 'IT-Tools',
+      display_order: 23,
+      description: 'Collection of handy utilities for developers — UUID, hash, encoding, formatters, and more',
+      icon: 'IconTool',
+      container_image: 'ghcr.io/corentinth/it-tools:2024.10.22-7ca5933',
+      source_repo: 'https://github.com/CorentinTh/it-tools',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '80/tcp': [{ HostPort: '8430' }] },
+        },
+        ExposedPorts: { '80/tcp': {} },
+      }),
+      ui_location: '8430',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'utility',
+      depends_on: null,
+    },
+    {
+      service_name: SERVICE_NAMES.EXCALIDRAW,
+      friendly_name: 'Excalidraw',
+      powered_by: 'Excalidraw',
+      display_order: 24,
+      description: 'Virtual whiteboard for sketching hand-drawn-style diagrams — works fully offline',
+      icon: 'IconPencil',
+      container_image: 'excalidraw/excalidraw:sha-4bfc5bb',
+      source_repo: 'https://github.com/excalidraw/excalidraw',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '80/tcp': [{ HostPort: '8440' }] },
+        },
+        ExposedPorts: { '80/tcp': {} },
+      }),
+      ui_location: '8440',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'productivity',
+      depends_on: null,
+    },
+    {
+      service_name: SERVICE_NAMES.MESHTASTIC_WEB,
+      friendly_name: 'Meshtastic Web',
+      powered_by: 'Meshtastic',
+      display_order: 30,
+      description: 'Browser-based client for managing Meshtastic mesh radio devices',
+      icon: 'IconWifi',
+      container_image: 'ghcr.io/meshtastic/web:2.7.1',
+      source_repo: 'https://github.com/meshtastic/web',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          // meshtastic/web serves on 8080 inside the container, not 80.
+          PortBindings: { '8080/tcp': [{ HostPort: '8450' }] },
+        },
+        ExposedPorts: { '8080/tcp': {} },
+      }),
+      ui_location: '8450',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'networking',
+      depends_on: null,
+    },
+    {
+      service_name: SERVICE_NAMES.MESHCORE_WEB,
+      friendly_name: 'MeshCore Web',
+      powered_by: 'MeshCore',
+      display_order: 32,
+      description: 'Browser-based client for MeshCore mesh radio devices',
+      icon: 'IconAntenna',
+      // aXistem's prebuilt image of Liam Cottle's MeshCore web client (MeshCore is a sibling LoRa
+      // mesh project to Meshtastic).
+      container_image: 'ghcr.io/axistem-dev/meshcore-web:v1.45.0',
+      source_repo: 'https://github.com/aXistem-dev/meshcore-web',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          // The image is stock nginx:alpine serving the Flutter build over HTTP on 80. MeshCore's
+          // client reaches a radio via Web Bluetooth / Web Serial, which browsers only permit from a
+          // secure (HTTPS) context — so we serve it over HTTPS. _runPreinstallActions__MeshCoreWeb
+          // writes a self-signed cert + an SSL server config into storage/meshcore-web; we bind both
+          // in (the config over the image's default.conf) and publish 443. The https: prefix on
+          // ui_location builds an https:// Open link (one-time cert warning, same as Vaultwarden).
+          PortBindings: { '443/tcp': [{ HostPort: '8500' }] },
+          Binds: [
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/meshcore-web/nginx-ssl.conf:/etc/nginx/conf.d/default.conf:ro`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/meshcore-web/certs:/certs:ro`,
+          ],
+        },
+        ExposedPorts: { '443/tcp': {} },
+      }),
+      ui_location: 'https:8500',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'networking',
+      depends_on: null,
+    },
+    {
+      service_name: SERVICE_NAMES.HOMEBOX,
+      friendly_name: 'Homebox',
+      powered_by: 'Homebox',
+      display_order: 25,
+      description: 'Home inventory and asset management — track everything you own',
+      icon: 'IconBox',
+      // Maintained fork. The original hay-kot/homebox was archived June 2024;
+      // sysadminsmedia is the official continuation (drop-in: same 7745 port + /data volume,
+      // migrates an existing DB forward, telemetry off by default).
+      container_image: 'ghcr.io/sysadminsmedia/homebox:0.26.2',
+      source_repo: 'https://github.com/sysadminsmedia/homebox',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '7745/tcp': [{ HostPort: '8470' }] },
+          Binds: [`${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/homebox:/data`],
+        },
+        ExposedPorts: { '7745/tcp': {} },
+      }),
+      ui_location: '8470',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'productivity',
+      depends_on: null,
+    },
+    {
+      service_name: SERVICE_NAMES.VAULTWARDEN,
+      friendly_name: 'Vaultwarden',
+      powered_by: 'Vaultwarden',
+      display_order: 26,
+      description: 'Lightweight Bitwarden-compatible password manager server — secure your credentials offline',
+      icon: 'IconShieldLock',
+      container_image: 'vaultwarden/server:1.36.0',
+      source_repo: 'https://github.com/dani-garcia/vaultwarden',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '80/tcp': [{ HostPort: '8480' }] },
+          Binds: [`${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/vaultwarden:/data`],
+        },
+        ExposedPorts: { '80/tcp': {} },
+        // ROCKET_TLS points at the self-signed cert generated on install by
+        // DockerService._runPreinstallActions__Vaultwarden. Vaultwarden's web vault needs a secure
+        // context (HTTPS) or it refuses to register/unlock, so it ships HTTPS-on-by-default.
+        Env: [
+          'WEBSOCKET_ENABLED=true',
+          'ROCKET_TLS={certs="/data/cert.pem",key="/data/key.pem"}',
+        ],
+      }),
+      // https: prefix tells getServiceLink to build an https:// Open link on this port.
+      ui_location: 'https:8480',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'security',
+      depends_on: null,
+      metadata: JSON.stringify({ minMemoryMB: 256, minDiskMB: 512 }),
+    },
+    {
+      service_name: SERVICE_NAMES.JELLYFIN,
+      friendly_name: 'Jellyfin',
+      powered_by: 'Jellyfin',
+      display_order: 27,
+      description: 'Open-source media server — stream your video, music, and photo libraries',
+      icon: 'IconMovie',
+      container_image: 'jellyfin/jellyfin:10.11.11',
+      source_repo: 'https://github.com/jellyfin/jellyfin',
+      container_command: null,
+      container_config: JSON.stringify({
+        HostConfig: {
+          RestartPolicy: { Name: 'unless-stopped' },
+          PortBindings: { '8096/tcp': [{ HostPort: '8490' }] },
+          Binds: [
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/jellyfin/config:/config`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/jellyfin/cache:/cache`,
+            `${ServiceSeeder.NOMAD_STORAGE_ABS_PATH}/media:/media`,
+          ],
+        },
+        ExposedPorts: { '8096/tcp': {} },
+      }),
+      ui_location: '8490',
+      installed: false,
+      installation_status: 'idle',
+      is_dependency_service: false,
+      is_custom: false,
+      category: 'media',
+      depends_on: null,
+      metadata: JSON.stringify({ minMemoryMB: 2048, minDiskMB: 20480 }),
+    },
   ]
 
   async run() {
-    const existingServices = await Service.query().select('service_name')
-    const existingServiceNames = new Set(existingServices.map((service) => service.service_name))
+    const existingServices = await Service.query().select([
+      'service_name',
+      'is_custom',
+      'is_user_modified',
+    ])
+    const existingServiceMap = new Map(existingServices.map((s) => [s.service_name, s]))
 
     const newServices = ServiceSeeder.DEFAULT_SERVICES.filter(
-      (service) => !existingServiceNames.has(service.service_name)
+      (service) => !existingServiceMap.has(service.service_name)
     )
 
-    await Service.createMany([...newServices])
+    if (newServices.length > 0) {
+      await Service.createMany([...newServices])
+    }
+
+    // Keep curated services in sync with the catalog. Custom services are user-defined and must
+    // never be overwritten. User-modified curated services (a user edited their config) are
+    // likewise left alone so the edit survives reboots. ui_location is synced too so a catalog
+    // change to an app's link/scheme/port (e.g. Vaultwarden moving to https:8480, or a corrected
+    // internal port) reaches existing non-modified installs on update, not just fresh ones.
+    for (const service of ServiceSeeder.DEFAULT_SERVICES) {
+      const existing = existingServiceMap.get(service.service_name)
+      if (existing && !existing.is_custom && !existing.is_user_modified) {
+        await Service.query().where('service_name', service.service_name).update({
+          container_config: service.container_config,
+          container_command: service.container_command ?? null,
+          metadata: (service as any).metadata ?? null,
+          category: service.category,
+          ui_location: service.ui_location,
+        })
+      }
+    }
   }
 }
diff --git a/admin/docs/api-reference.md b/admin/docs/api-reference.md
index 5cf126f..c14348c 100644
--- a/admin/docs/api-reference.md
+++ b/admin/docs/api-reference.md
@@ -148,6 +148,15 @@ ZIM files provide offline Wikipedia, books, and other content via Kiwix.
 | POST | `/api/maps/download-collection` | Download an entire collection by slug (async) |
 | DELETE | `/api/maps/:filename` | Delete a local map file |
 
+### Map Markers
+
+| Method | Path | Description |
+|--------|------|-------------|
+| GET | `/api/maps/markers` | List map markers |
+| POST | `/api/maps/markers` | Add map marker (body: {"name": "Test Marker", "notes": "Example note", "longitude": 0.0, "latitude": 0.0, "color": "yellow", "marker_type": "pin"} ) |
+| PATCH | `/api/maps/markers/{id}` | Update a  map marker (body: {"name": "Test Marker", "notes": "Example note", "longitude": 0.0, "latitude": 0.0, "color": "yellow", "marker_type": "pin"} ) fields that don't change can be omitted|
+| DELETE | `/api/maps/markers/{id}` | Delete a map marker | 
+
 ---
 
 ## Downloads
diff --git a/admin/docs/community-add-ons.md b/admin/docs/community-add-ons.md
new file mode 100644
index 0000000..525c136
--- /dev/null
+++ b/admin/docs/community-add-ons.md
@@ -0,0 +1,48 @@
+# Community Add-Ons
+
+Project N.O.M.A.D. ships with a curated set of built-in tools and content, but the community has started building add-ons that extend the platform with specialized offline content packs. These are third-party projects, not maintained by the N.O.M.A.D. team. Install them at your own discretion, and please direct any bugs or feature requests to the add-on's own repository.
+
+Have you built a NOMAD add-on? Open an issue on the [Project N.O.M.A.D. GitHub repository](https://github.com/Crosstalk-Solutions/project-nomad/issues/new) or send us a note through the [contact form on projectnomad.us](https://www.projectnomad.us/contact), and we'll review it for inclusion on this page.
+
+---
+
+## ZIM Content Packs
+
+ZIM content packs drop additional offline reference material into your existing Kiwix library. They typically ship with an `install.sh` script that downloads source material, builds a ZIM file with `zimwriterfs`, and registers it with your running Kiwix container.
+
+### U.S. Military Field Manuals
+
+**Repository:** [github.com/jrsphoto/ZIM-military-field-manuals](https://github.com/jrsphoto/ZIM-military-field-manuals)
+
+Roughly 180 public-domain U.S. military field manuals covering field medicine, survival, combat first aid, map reading, and more. Built into a searchable ZIM that drops into your Kiwix library.
+
+Final ZIM size is around 2 GB. The builder downloads about 2 GB of source PDFs from archive.org during the build.
+
+### W3Schools Programming Archive
+
+**Repository:** [github.com/kennethbrewer3/ZIM-w3schools-offline](https://github.com/kennethbrewer3/ZIM-w3schools-offline)
+
+A full offline copy of the W3Schools programming tutorials, covering HTML, CSS, JavaScript, Python, SQL, and more. Good for learning to code, looking up syntax, or teaching programming in an environment without internet.
+
+Final ZIM size is around 700 MB. The builder downloads about 6 GB of source files from a GitHub mirror during the build.
+
+---
+
+## Installing a Community Add-On
+
+Each add-on has its own install instructions, but most ZIM packs follow the same shape:
+
+1. Clone the add-on's repository onto your NOMAD host over SSH.
+2. Check the README for required build dependencies. Most need `git`, `python3`, `unzip`, and `zim-tools`.
+3. Run the included `install.sh` with a `--deploy` flag, pointing it at your Kiwix library path (`/opt/project-nomad/storage/zim`) and your Kiwix container name (`nomad_kiwix_server`).
+4. The script builds the ZIM, copies it into your Kiwix library, registers it with Kiwix, and restarts the Kiwix container.
+
+Once the script finishes, the new content will appear in your Information Library the next time you load it.
+
+Expect the initial build to take anywhere from a few minutes to an hour or more depending on the add-on's size and your host's CPU.
+
+---
+
+## A Note on Support
+
+These add-ons are community-built and community-maintained. If something goes wrong with an install script or the content inside a ZIM, please open an issue on the add-on's own repository rather than Project N.O.M.A.D.'s. We're happy to help if the issue is with NOMAD itself, for example if Kiwix isn't picking up a new ZIM after an install, but we can't maintain or support third-party content.
diff --git a/admin/docs/faq.md b/admin/docs/faq.md
index aa8aac1..1a73ea6 100644
--- a/admin/docs/faq.md
+++ b/admin/docs/faq.md
@@ -73,7 +73,7 @@ This helps you balance content coverage against storage usage.
 2. Type your question or request
 3. The AI responds in conversational style
 
-The AI must be installed first — enable it during Easy Setup or install it from the [Apps](/settings/apps) page.
+The AI must be installed first — enable it during Easy Setup or install it from the [Supply Depot](/supply-depot) page.
 
 ### How do I upload documents to the Knowledge Base?
 1. Go to **[Knowledge Base →](/knowledge-base)**
@@ -104,7 +104,7 @@ The Early Access Channel lets you opt in to receive release candidate builds wit
 2. Refresh the page (Ctrl+R or Cmd+R)
 3. Go back to the Command Center and try again
 4. Check Settings → System to see if the service is running
-5. Try restarting the service (Stop, then Start in Apps manager)
+5. Try restarting the service (Stop, then Start in the Supply Depot)
 
 ### Maps show a gray/blank area
 
@@ -114,6 +114,18 @@ The Maps feature requires downloaded map data. If you see a blank area:
 3. Wait for downloads to complete
 4. Return to Maps and refresh
 
+### ERROR: Failed to load the XML library file '/data/kiwix-library.xml'
+
+This usually means the Information Library service started before its Kiwix library index was fully initialized.
+
+Try this recovery flow:
+1. Go to **[Supply Depot](/supply-depot)**
+2. Stop **Information Library (Kiwix)**
+3. Wait 10-15 seconds, then start it again
+4. If the error persists, run **Force Reinstall** for Information Library from the same page
+
+After restart/reinstall completes, refresh the Information Library page.
+
 ### AI responses are slow
 
 Local AI requires significant computing power. To improve speed:
@@ -128,7 +140,7 @@ N.O.M.A.D. automatically detects NVIDIA GPUs when the NVIDIA Container Toolkit i
 
 1. **Install an NVIDIA GPU** in your server (if not already present)
 2. **Install the NVIDIA Container Toolkit** on the host — follow the [official installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
-3. **Reinstall the AI Assistant** — Go to [Apps](/settings/apps), find AI Assistant, and click **Force Reinstall**
+3. **Reinstall the AI Assistant** — Go to [Supply Depot](/supply-depot), find AI Assistant, and click **Force Reinstall**
 
 N.O.M.A.D. will detect the GPU during installation and configure the AI to use it automatically. You'll see "NVIDIA container runtime detected" in the installation progress.
 
@@ -139,7 +151,7 @@ N.O.M.A.D. will detect the GPU during installation and configure the AI to use i
 When you add or swap a GPU, N.O.M.A.D. needs to reconfigure the AI container to use it:
 
 1. Make sure the **NVIDIA Container Toolkit** is installed on the host
-2. Go to **[Apps](/settings/apps)**
+2. Go to **[Supply Depot](/supply-depot)**
 3. Find the **AI Assistant** and click **Force Reinstall**
 
 Force Reinstall recreates the AI container with GPU support enabled. Without this step, the AI continues to run on CPU only.
@@ -151,7 +163,7 @@ N.O.M.A.D. checks whether your GPU is actually accessible inside the AI containe
 ### AI Chat not available
 
 The AI Chat page requires the AI Assistant to be installed first:
-1. Go to **[Apps](/settings/apps)**
+1. Go to **[Supply Depot](/supply-depot)**
 2. Install the **AI Assistant**
 3. Wait for the installation to complete
 4. The AI Chat will then be accessible from the home screen or [Chat](/chat)
@@ -159,7 +171,7 @@ The AI Chat page requires the AI Assistant to be installed first:
 ### Knowledge Base upload stuck
 
 If a document upload appears stuck in the Knowledge Base:
-1. Check that the AI Assistant is running in **Settings → Apps**
+1. Check that the AI Assistant is running in **Settings → Supply Depot**
 2. Large documents take time to process — wait a few minutes
 3. Try uploading a smaller document to verify the system is working
 4. Check **Settings → System** for any error messages
@@ -178,7 +190,7 @@ If submission fails, check the error message for details.
 The service might still be starting up. Wait 1-2 minutes and try again.
 
 If the problem persists:
-1. Go to **Settings → Apps**
+1. Go to **Settings → Supply Depot**
 2. Find the problematic service
 3. Click **Restart**
 4. Wait 30 seconds, then try again
@@ -221,12 +233,17 @@ Yes, while you have internet access. Updates include:
 - Security improvements
 - Performance enhancements
 
+### Can N.O.M.A.D. update itself automatically?
+Yes. N.O.M.A.D. can keep its software, its installed apps, and its content current on its own. Automatic updates are **opt-in and off by default** — you turn on what you want from **Settings → Updates** (and, for apps, a per-app toggle in the Supply Depot). They only run inside a time window you choose, after safety checks, and never apply major version jumps automatically. See the **[Updates guide](/docs/updates)** for a full walkthrough.
+
 ### How do I update content (Wikipedia, etc.)?
 Content updates are separate from software updates:
 1. Go to **Settings → Content Manager** or **Content Explorer**
 2. Check for newer versions of your installed content
 3. Download updated versions as needed
 
+You can also turn on **automatic content updates** so installed Wikipedia/ZIM libraries and map regions refresh on their own overnight — see the [Updates guide](/docs/updates).
+
 Tip: New Wikipedia snapshots are released approximately monthly.
 
 ### What happens if an update fails?
diff --git a/admin/docs/getting-started.md b/admin/docs/getting-started.md
index 3287da5..de65ddc 100644
--- a/admin/docs/getting-started.md
+++ b/admin/docs/getting-started.md
@@ -37,7 +37,7 @@ The Information Library stores compressed versions of websites and references th
 - Classic books from Project Gutenberg
 
 **How to use it:**
-1. Click **Information Library** from the Command Center home screen or [Apps](/settings/apps) page
+1. Click **Information Library** from the Command Center home screen or the [Supply Depot](/supply-depot)
 2. Choose a collection (like Wikipedia)
 3. Search or browse just like the regular website
 
@@ -54,7 +54,7 @@ The Education Platform provides complete educational courses that work offline.
 - Works for all ages
 
 **How to use it:**
-1. Click **Education Platform** from the Command Center home screen or [Apps](/settings/apps) page
+1. Click **Education Platform** from the Command Center home screen or the [Supply Depot](/supply-depot)
 2. Sign in or create a learner account
 3. Browse courses and start learning
 
@@ -82,9 +82,9 @@ N.O.M.A.D. includes a built-in AI chat interface powered by Ollama. It runs enti
 
 **Tip:** Be specific in your questions. Instead of "tell me about plants," try "what vegetables grow well in shade?"
 
-**Note:** The AI Assistant must be installed first. Enable it during Easy Setup or install it from the [Apps](/settings/apps) page.
+**Note:** The AI Assistant must be installed first. Enable it during Easy Setup or install it from the [Supply Depot](/supply-depot).
 
-**GPU Acceleration:** If your server has an NVIDIA GPU with the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) installed, N.O.M.A.D. will automatically use it for AI — dramatically faster responses (10-20x improvement). If you add a GPU later, go to [Apps](/settings/apps) and **Force Reinstall** the AI Assistant to enable it.
+**GPU Acceleration:** If your server has an NVIDIA GPU with the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) installed, N.O.M.A.D. will automatically use it for AI — dramatically faster responses (10-20x improvement). If you add a GPU later, go to the [Supply Depot](/supply-depot) and **Force Reinstall** the AI Assistant to enable it.
 
 ---
 
@@ -141,7 +141,7 @@ View maps without internet. Download the regions you need before going offline.
 
 As your needs change, you can add more content anytime:
 
-- **More apps:** Settings → Apps
+- **More apps:** Settings → Supply Depot
 - **More references:** Settings → Content Explorer or Content Manager
 - **More map regions:** Settings → Maps Manager
 - **More educational content:** Through Kolibri's built-in content browser
@@ -184,6 +184,8 @@ While you have internet, periodically check for updates:
 
 Content updates (Wikipedia, maps, etc.) can be managed separately from software updates.
 
+**Automatic updates:** N.O.M.A.D. can also keep itself current without you having to check. Software, installed apps, and content can each be set to update automatically on an opt-in basis, with safety checks and a time window you control. See the **[Updates guide](/docs/updates)** for the full picture.
+
 **Early Access Channel:** Want the latest features before they hit stable? Enable the Early Access Channel from the Check for Updates page to receive release candidate builds. You can switch back to stable anytime.
 
 ### Monitoring System Health
diff --git a/admin/docs/home.md b/admin/docs/home.md
index a059a4f..f8d92ff 100644
--- a/admin/docs/home.md
+++ b/admin/docs/home.md
@@ -15,12 +15,12 @@ Think of it as having Wikipedia, Khan Academy, an AI assistant, and offline maps
 ### Browse Offline Knowledge
 Access millions of Wikipedia articles, medical references, how-to guides, and ebooks — all stored locally on your server. No internet required.
 
-*Launch the Information Library from the home screen or the [Apps](/settings/apps) page.*
+*Launch the Information Library from the home screen or the [Supply Depot](/supply-depot).*
 
 ### Learn Something New
 Khan Academy courses covering math, science, economics, and more. Complete with videos and exercises, all available offline.
 
-*Launch the Education Platform from the home screen or the [Apps](/settings/apps) page.*
+*Launch the Education Platform from the home screen or the [Supply Depot](/supply-depot).*
 
 ### Chat with AI
 Ask questions, get explanations, brainstorm ideas, or get help with writing. Your local AI assistant works completely offline — and you can upload documents to the Knowledge Base for document-aware responses.
@@ -60,7 +60,7 @@ Or explore the **[Getting Started Guide](/docs/getting-started)** for a walkthro
 |--------------|---------|
 | Chat with the AI | [AI Chat →](/chat) |
 | Upload documents for AI | [Knowledge Base →](/knowledge-base) |
-| Download more content | [Install Apps →](/settings/apps) |
+| Install more apps | [Supply Depot →](/supply-depot) |
 | Add Wikipedia/reference content | [Content Explorer →](/settings/zim/remote-explorer) |
 | Manage installed content | [Content Manager →](/settings/zim) |
 | Download map regions | [Maps Manager →](/settings/maps) |
@@ -80,4 +80,6 @@ N.O.M.A.D. works best when kept up to date while you have internet access. This
 
 When you go offline, you'll have everything you need — the last synced versions of all your content.
 
+You can update on demand, or turn on **automatic updates** so N.O.M.A.D. keeps its software, apps, and content current on its own while you have internet. See the **[Updates guide](/docs/updates)** for how it works.
+
 **[Check for Updates →](/settings/update)**
diff --git a/admin/docs/release-notes.md b/admin/docs/release-notes.md
index 08715c8..540bd66 100644
--- a/admin/docs/release-notes.md
+++ b/admin/docs/release-notes.md
@@ -1,5 +1,276 @@
 # Release Notes
 
+## Version 1.33.0 - June 23, 2026
+
+### Features
+- **Supply Depot — Custom Apps**: The Supply Depot is NOMAD's new home for installable apps, and it now lets you run your *own* custom Docker containers — not just the curated catalog. Specify an image, port mappings, volume binds, environment variables, and memory/CPU limits, and NOMAD spins it up as a managed sibling container. A live, debounced pre-flight check warns about port conflicts and resource limits as you type and hard-blocks unsafe configurations, with an "install anyway" override for warning-only cases (e.g. an untrusted registry or a `:latest` tag). Installed custom apps can be edited, updated (re-pull latest + recreate with a safe rollback if the new container fails), and removed (optionally deleting the image), and every installed app — curated or custom — gets per-container **Logs** and **Stats** modals. Host-path binds are hardened against escapes and logs/stats are scoped to NOMAD-managed containers only. Thanks @jakeaturner for the contribution!
+- **Supply Depot — Curated App Onboarding & Fixes**: Each curated app now ships with NOMAD-specific getting-started docs (first run, default logins, where data lives, what does and doesn't work offline), deep-linked from a **Manage › Docs** item on the card. Alongside it is a round of install fixes so the nine documented apps — Stirling PDF, File Browser, Calibre-Web, IT Tools, Excalidraw, Homebox, Vaultwarden, Jellyfin, Meshtastic Web — work out of the box: seeded logins instead of random passwords buried in logs, a bundled Calibre library, HTTPS-by-default where the app requires a secure context (Vaultwarden), corrected internal ports (Meshtastic Web), pre-created media folders (Jellyfin), and a swap to a maintained image (Homebox). You can now also **edit curated apps**, not just custom ones — edits are merged into the app's existing config (preserving advanced settings like GPU device requests) and flag the app so the seeder stops overwriting it, while untouched apps still receive catalog updates. Thanks @chriscrosstalk for the contribution!
+- **Automatic Core Updates**: NOMAD's own admin/core image can now update itself hands-off, gated by layered safety checks. It's opt-in and off by default, runs only inside a user-configured time window, and applies only same-major, strictly-newer GA releases (major bumps stay manual) past a configurable cool-off — behind pre-flight checks for the update sidecar, no in-flight updates/downloads/installs, and sufficient host disk. It auto-disables after repeated genuine failures, while transient offline release lookups are treated as harmless skips. Settings → Updates exposes the toggle, window, cool-off, and live status. This is the first leg of the auto-update trilogy. Thanks @jakeaturner for the contribution!
+- **Automatic App Updates**: Installed apps (the "Supply Depot" sibling containers) can now keep themselves up to date with opt-in, hands-off minor/patch updates, mirroring the core auto-update feature. Updates are gated behind a two-level opt-in — a global master switch in Settings → Updates **and** a per-app toggle in the Supply Depot — and respect the shared update window, cool-off period, disk/in-progress pre-flight checks, and per-app failure backoff. Major versions are never auto-applied. Thanks @jakeaturner for the contribution!
+- **Automatic Content Updates**: Completing the auto-update trilogy, installed Kiwix ZIM files and PMTiles maps can now update themselves on an opt-in basis. Content updates run on their own dedicated overnight window and bandwidth cap (separate from the app/core schedule, since content downloads are multi-GB), check the upstream Kiwix and PMTiles catalogs directly (no more reliance on external Project N.O.M.A.D. API), and keep the AI Knowledge Base in sync when a ZIM is replaced. Thanks @jakeaturner for the contribution!
+- **Supply Depot — Custom Launch URLs**: You can now override an app's "Open" link with a reverse-proxy or local-DNS address (e.g. `https://jellyfin.myhomelab.net`). The override is stored separately so the default link is always recoverable, survives reseeds/upgrades, and is validated on both client and server. Thanks @jakeaturner for the contribution!
+- **Supply Depot — Version & Update visibility**: App cards now show the installed version next to the app name (e.g. `Kiwix · 3.7.0`), and the "Update available" pill now stands out with a solid desert-orange fill so available updates actually draw the eye. Thanks @chriscrosstalk for the contribution!
+- **Maps — Persistent View**: The Maps page now remembers your position and zoom across refreshes instead of resetting to the default US-wide view. The saved view is bounds-checked, so a corrupt value safely falls back to the default. Thanks @chriscrosstalk for the contribution!
+- **Content Manager — Rescan Library**: A new "Rescan Library" button rebuilds the Kiwix index from the ZIM files currently on disk, so files **sideloaded** outside NOMAD's download flow (USB stick, SSH, network share) can be served without dropping to a terminal. It reports how many new books were found and, in library mode, hot-reloads without a container restart. Thanks @chriscrosstalk for the contribution!
+- **Configuration — Redis database selection**: Added a `REDIS_DB` environment variable so operators can pick a Redis logical database (0–15) for the job queue and live-update transport. This prevents key collisions when a single Redis instance is shared across multiple stacks (common in homelabs). Defaults to db 0, preserving existing behavior. Thanks @johno10661 for the contribution!
+- **Advanced Settings — Internet Test URL**: Added a new Advanced Settings page with an option to override the default internet test "beacon" URL (more advanced settings to come). Previously, overriding this URL required an ENV variable change and container restart. The legacy ENV variable is still respected if you've set it. Thanks @jakeaturner for the contribution!
+- **RAG**: Embedding jobs can now be cancelled, allowing users to clear stuck jobs that haven't explicitly failed. Thanks @jakeaturner for the contribution!
+
+### Bug Fixes
+- **Storage**: When the admin storage volume is relocated to another disk, child apps (Kiwix, Ollama, Qdrant, Flatnotes, Kolibri) now automatically follow to the new location instead of mounting the old, empty path. The host storage root is now derived from the admin's actual mount, with an explicit `NOMAD_STORAGE_PATH` override and clearer compose comments. Thanks @chriscrosstalk for the fix!
+- **System**: A failed service update now rolls back to the previous container if the new one fails to start, so the service stays up on the old version instead of being left down. Also clears any stale leftover container so a retry can't wedge indefinitely. Thanks @chriscrosstalk for the fix!
+- **System**: Service install failures caused by a host port conflict (commonly a native Ollama install already on port 11434) now show a clear, actionable message with the exact commands to resolve it, instead of a raw Docker error. Thanks @chriscrosstalk for the fix!
+- **System**: The per-service Update button is now disabled and shows "Updating..." while an update is in flight, preventing double-clicks that previously raced into Docker errors. The in-progress state is durable, so it survives a page reload during a multi-GB pull. Thanks @chriscrosstalk for the fix!
+- **System Updates**: Update checks no longer crash for images with more than 1,000 tags (e.g Ollama). Registry pagination URLs are now resolved correctly, so the "Check for Updates" flow returns versions instead of failing silently — fixing Ollama appearing pinned at an old version. Thanks @chriscrosstalk for the fix!
+- **System**: Internet status checks no longer report "No internet connection" on networks that block or hijack Cloudflare's 1.1.1.1. The check now probes additional hosts the app already contacts (GitHub and the Project N.O.M.A.D. API) in parallel and accepts any HTTP response as "online." Thanks @akashsalan for the fix!
+- **AI Assistant**: Oversized embedding chunks are now truncated and retried instead of being silently dropped, ending the retry storm that could peg the GPU and flood logs (the "api/embed for weeks" issue). The OpenAI-compatible fallback path now also passes context and truncation settings. Thanks @chriscrosstalk for the fix!
+- **AI Assistant**: Chat suggestions now use your selected model (falling back to the *smallest* installed model) instead of the largest. This prevents a flagship model that exceeds available VRAM from hanging the chat page and returning a 500 error. Thanks @johno10661 for the fix!
+- **AI Assistant**: The assistant no longer disclaims "Sorry, I couldn't find specific context regarding X..." when relevant material was actually retrieved. The RAG prompt now treats retrieved context as the authoritative source and falls back to general knowledge silently, the model-visible relevance scores that primed smaller models to distrust correct context were replaced with neutral source-title labels, and a conservative heading-match boost improves the ranking of already-retrieved chunks. Thanks @jakeaturner for the fix!
+- **Knowledge Base**: The embedded-chunk count for batched ZIM ingestion is now persisted accurately across continuation batches, instead of reporting only the final batch's count. Thanks @Metbcy for the fix!
+- **Knowledge Base**: The "ingestion may have stalled" (partial-stall) warning no longer fires falsely on link-out- or PDF-heavy ZIMs that legitimately have little embeddable text. Thanks @chriscrosstalk for the fix!
+- **Knowledge Base**: ZIM ingestion progress no longer freezes at 99% on multi-page archives (e.g. iFixit). Progress now creeps forward monotonically and only reports 100% on the genuinely final batch. Thanks @chriscrosstalk for the fix!
+- **Content**: Installing a newer version of a curated map or ZIM now removes the superseded file from disk, preventing silent accumulation of orphaned content (potentially hundreds of GB). Deletion is gated behind strict safety rails — only tracked, genuinely-replaced, strictly-newer files within the content store are ever removed; sideloaded files are never touched. Thanks @chriscrosstalk for the fix!
+- **Content**: Curated Wikipedia-themed ZIMs (e.g. `wikipedia_en_medicine_maxi` from Medicine → Comprehensive) are no longer wiped on restart. Reconciliation now skips only the single file actually managed by the Wikipedia selector, matched by exact filename. Thanks @chriscrosstalk for the fix!
+- **Maps**: Having both an old and new copy of the same map region on disk no longer blanks the entire map. Map sources are now de-duplicated to the newest file per region, and already-broken installs recover automatically on the next page load. Thanks @chriscrosstalk for the fix!
+- **Information Library (Kiwix)**: Kiwix now self-heals a missing or corrupt library file on startup by rebuilding it from the ZIM files on disk, instead of coming up with an empty library and no path to recovery. Thanks @chriscrosstalk for the fix!
+- **Docker**: Failed image pulls (dropped/metered connection, bad manifest, disk full mid-pull) are now correctly treated as failures across all pull paths, instead of proceeding to create a container from a missing or partial image and surfacing a confusing downstream error. Thanks @chriscrosstalk for the fix!
+- **Security**: Hardened the private-URL/SSRF guard by replacing the regex blocklist with proper IP-range classification (`ipaddr.js`) and normalizing the host first. This blocks alternate IP encodings and trailing-dot bypasses (e.g. `localhost.`) while no longer over-blocking legitimate public addresses. RFC1918 ranges and bare LAN hostnames remain allowed for local appliances. Thanks @chriscrosstalk for the fix!
+- **Install**: Hardened the install script — the NVIDIA toolkit GPG step now runs non-interactively so it doesn't silently skip on non-TTY installs, and helper-script downloads now retry to reduce transient partial-install failures. Thanks @Gujiassh for the fix!
+
+### Improvements
+- **License & Docs**: Corrected the package license metadata to `Apache-2.0` (the project has been Apache-2.0 for some time), added a real project description, and fixed a dead Troubleshooting link plus several README typos. Thanks @aqilaziz for the contribution!
+- **Docs**: Fixed a few typos and punctuation in the README. Thanks @teccdev for the contribution!
+- **Dependencies**: Bumped React and React DOM. Thanks @jakeaturner for the contribution!
+- **Dependencies**: Bumped autoprefixer. Thanks @jakeaturner for the contribution!
+- **Dependencies**: Bumped BullMQ to 5.77.6 and updated affected job calls to the new arguments shape. Thanks @jakeaturner for the contribution!
+- **Supply Depot**: Pinned all curated image versions to ensure consistent baseline deployments. Thanks @jakeaturner for the contribution!
+- **Supply Depot**: Bumped the default versions of CyberChef to 10.24.0 and Ollama to 0.24.0. Thanks @jakeaturner for the contribution!
+
+## Version 1.32.1 - May 27, 2026
+
+### Features
+
+### Bug Fixes
+- fix(logging): also write production logs to stdout for docker visibility (#870). Thanks @chriscrosstalk for the contribution!
+- fix(KB): cursor on Always/Manual ingest policy buttons (#927). Thanks @chriscrosstalk for the contribution!
+
+### Improvements
+- perf(KB): swap Qdrant full-scroll for facet on source enumeration (#928). Thanks @chriscrosstalk for the contribution!
+- chore(deps): bump various dependencies. Thanks @jakeaturner for the contribution!
+
+## Version 1.32.0 - May 20, 2026
+
+### Features
+- **AI:** improved AMD GPU acceleration for Ollama via ROCm + HSA override (#804)
+- **chat:** confirm-on-switch + one-chat-model-at-a-time enforcement (#ffa70a5)
+- **content-manager:** add sortable file size column (#698), closes #685
+- **content-updates:** show size, surface downloads in Active Downloads (#299b767)
+- **Content:** custom ZIM library sources with pre-seeded mirrors (#593) (#62e75fd), closes #576
+- **easy-setup:** split AI into its own conditional step (issue #905) (#0617d54), closes #907
+- **GPU:** auto-remediate nomad_ollama passthrough loss on admin boot (#755) (#2997637), closes #208 #804
+- **KB:** Always/Manual ingest policy toggle (RFC #883 §1/§4) (#894) (#8eb8809), closes #880 #886 #886 #886 #888 #888 #888 #888 #888
+- **KB:** conditional warnings A + B on Stored Files (RFC #883 §6) (#563f86a), closes #891 #891 #890 #881
+- **KB:** first-chat JIT prompt for ingest policy (RFC #883 Phase 3 task 12) (#fd153b4), closes #894 #894 #894
+- **KB:** group admin docs into single row in Stored Files (RFC #883 §9) (#c64ec97)
+- **KB:** guardrail modal at 50GB / 10%-free thresholds (RFC #883 §7) (#cf3a924), closes #897 #897 #894 #899
+- **KB:** per-file ingest action + state indicator on Stored Files (RFC #883 §5) (#d850cb9), closes #907 #907 #907 #908
+- **KB:** per-file ingest state machine (Phase 1 of RFC #883) (#888) (#743549c), closes #880 #886 #886 #886
+- **KB:** ratio registry for disk + time estimates (Phase 1B of RFC #883) (#159d57b)
+- **KB:** status pill + last-activity timestamp on Processing Queue (RFC #883 §5/§10) (#43ca584)
+- **KB:** surface embedding-disk estimate in curated tier-change modal (RFC #883 §1) (#e68c753), closes #891 #891
+- **KB:** wizard AI policy step (RFC #883 Phase 3 task 13) (#7a681d0), closes #899 #894 #894 #899
+- **Maps:** regional map downloads via go-pmtiles extract (#780) (#94059b0)
+- **maps:** show map coordinates on mouse move (#786) (#08838b1)
+
+### Bug Fixes
+- **AI:** add truncation DEBUG log (#e3b758f)
+- **AI:** improve remote Ollama url validation to prevent SSRF vulnerability (#989a401)
+- **AI:** pre-cap embed input + log fallback reason (#881) (#2dec5bf), closes #369 #670
+- **AI:** preserve semver tag in DB on AMD Ollama updates (#019a5a4)
+- **AI:** rewrite RAG query on first follow-up (off-by-one in skip-rewrite threshold) (#43645e4)
+- **AI:** vendor-aware AMD HSA override + benchmark discrete-GPU detection (#a2e2f7f), closes #804 #804 #810
+- **API:** accept notes, marker_type, and position on markers endpoints (#770) (#132ec9c), closes #768
+- **API:** skip compression for Server-Sent Events (#798) (#4b21ea6)
+- **content:** show selected tier on cards while downloads are in flight (#059cf2a), closes #36b6d8e
+- **DockerService:** improve volume logic and documentation in forceReinstall (#501860a)
+- **Downloads:** treat missing Content-Type as octet-stream (#848) (#3abf338)
+- **install:** warn loudly on non-x86_64 architectures before pulling images (#797) (#cb129d2), closes #419
+- **KB:** add re-embed and reset & rebuild opts to fix broken embeddings (#886) (#4c21196)
+- **KB:** align chunks_per_mb column type with TS contract (#4d6b140)
+- **KB:** blank-screen on panel open + tooltips on bulk-action buttons (#633a3c3), closes #892 #895 #post-#892
+- **KB:** guardrail bypass during estimate load + Transition sibling (PR #901 review) (#7e768f3)
+- **KB:** remove redundant Refresh button from Processing Queue (#4e8cadd), closes #893
+- **KB:** respect Manual ingest policy on post-download dispatch (#a5fe52f), closes #909
+- **KB:** silent maybe-later error + redundant prompt-state refetches (PR #899 review) (#9a684a5)
+- **KB:** surface file-warning compute failures instead of masking as healthy (PR #895 review) (#a0047c1)
+- **KB:** TierSelectionModal hook order + register IconLibrary (#6e5284e), closes #915
+- **KB:** union Stored Files list with state-machine file paths (#898) (#8ed0bdf), closes #886 #888 #888
+- **Maps:** render notes in marker popup when populated (#f41027c), closes #770
+- **Maps:** send filename instead of full path to delete endpoint (#6a68bac)
+- **models:** correct inverted belongsTo keys on ChatMessage.session (#921) (#82f67de)
+- **queue:** singleton QueueService to stop ioredis connection leak (#ba53702), closes #872
+- **RAG:** add start button in kb modal and ensure restart policy exists (#700) (#2d8a02f)
+- **RAG:** anchor continuation-batch initial progress to overall-file frame (#889) (#f304d80)
+- **RAG:** pace continuation batches when embedding is CPU-only (#a22c640)
+- **RAG:** pass num_ctx and truncate to Ollama embed call (#763) (#7bebedc), closes #756 #369 #670
+- **RAG:** report ZIM ingestion progress in overall-file frame (#d28eb9b)
+- **RAG:** unbreak multi-batch ZIM ingestion (jobId dedupe) (#74cef75)
+- **security:** canonicalize hostnames to block IPv4-mapped IPv6 IMDS bypass (#736c9bd)
+- **security:** match IPv6 SSRF patterns against unbracketed hostnames (#b3dac9b)
+- **System:** correct AMD VRAM in Graphics card + harden log probe (#d2f2172), closes #835 #850 #208
+- **System:** correct NVIDIA VRAM in Graphics card (#835) (#6c799dd), closes #804
+- **System:** self-heal stale updateAvailable flag after sidecar-driven update (#825) (#318276c)
+- **System:** validate StartedAt with fallback to tail:500 (PR review) (#662a6c4)
+- **UI:** Country Picker UX polish + auto-refresh stored files (#817) (#8c06b5b), closes #780
+- **UI:** four fixes for the System Update page (#827) (#3a2e92a)
+- **UI:** improve global map banner display logic (#702) (#5517e82)
+- **UI:** wire map file delete confirmation to API (#732) (#e561ce8)
+- **ZIM:** preserve co-existing Wikipedia corpora on cleanup (#884) (#5e2c599)
+
+### Improvements
+
+## Version 1.31.1 - April 21, 2026
+
+### Features
+- feat(content): custom ZIM library sources with pre-seeded mirrors (#593). Thanks @chriscrosstalk!
+- feat(content-manager): add sortable file size column (#698). Thanks @chriscrosstalk!
+- feat(ai-chat): allow cancelling in-progress model downloads (#701). Thanks @chriscrosstalk!
+- feat(content-updates): show size, surface downloads in Active Downloads (#773). Thanks @chriscrosstalk!
+- feat(maps): regional map downloads via go-pmtiles extract (#780). Thanks @bgauger!
+- feat(maps): show map coordinates on mouse move (#786). Thanks @kennethbrewer3!
+- feat(AI): re-enable AMD GPU acceleration for Ollama via ROCm + HSA override (#804). Thanks @chriscrosstalk!
+- feat(GPU): auto-remediate nomad_ollama passthrough loss on admin boot (#878). Thanks @chriscrosstalk!
+- feat(KB): per-file ingest state machine (Phase 1 of RFC #883) (#888). Thanks @chriscrosstalk!
+- feat(KB): ratio registry for disk + time estimates (Phase 1B of RFC #883) (#891). Thanks @chriscrosstalk!
+- feat(KB): group admin docs into single row in Stored Files (§9) (#892). Thanks @chriscrosstalk!
+- feat(KB): status pill + last-activity on Processing Queue (§5/§10) (#893). Thanks @chriscrosstalk!
+- feat(KB): Always/Manual ingest policy toggle (§1/§4) (#894). Thanks @chriscrosstalk!
+- feat(KB): conditional warnings A + B on Stored Files (§6) (#895). Thanks @chriscrosstalk!
+- feat(KB): surface embedding-disk estimate in curated tier-change modal (§1) (#897). Thanks @chriscrosstalk!
+- feat(KB): first-chat JIT prompt for ingest policy (Phase 3 task 12) (#899). Thanks @chriscrosstalk!
+- feat(KB): wizard AI policy step (Phase 3 task 13) (#900). Thanks @chriscrosstalk!
+- feat(KB): guardrail modal at 50GB / 10%-free thresholds (§7) (#901). Thanks @chriscrosstalk!
+- feat(easy-setup): split AI into its own conditional step (#908). Thanks @chriscrosstalk!
+- feat(KB): per-file ingest action + state indicator on Stored Files (§5) (#909). Thanks @chriscrosstalk!
+- feat(chat): confirm-on-switch + one-chat-model-at-a-time enforcement (#916). Thanks @chriscrosstalk!
+
+### Bug Fixes
+- fix(downloads): stage downloads to .tmp to prevent Kiwix loading partial files (#448). Thanks @artbird309!
+- fix(security): close remaining security audit items 3 & 4 (CWE-918, CWE-209) (#552). Thanks @LuisMIguelFurlanettoSousa!
+- fix(ai-chat): add null check to model name (#645). Thanks @hestela!
+- fix(ai-chat): qwen2.5 loading on every chat message (#649). Thanks @hestela!
+- fix(disk-collector): fix storage reporting for NFS mounts (#686). Thanks @bgauger!
+- fix(rag): add start button in kb modal and ensure restart policy exists (#700). Thanks @hestela!
+- fix(admin): only hide global map banner after download (#702). Thanks @Gujiassh!
+- fix(maps): wire delete confirmation to API (#732). Thanks @cuyua9!
+- fix: prevent ZIM corrupt file crash and deduplicate Ollama download logs (#741). Thanks @jakeaturner!
+- fix(ai): stop local nomad_ollama when remote Ollama is configured (#744). Thanks @chriscrosstalk!
+- fix(rag): repair ZIM embedding pipeline (sync filter, batch gate, DOM walk) (#745). Thanks @chriscrosstalk!
+- fix(zim): accumulate across Kiwix pages to prevent empty Content Explorer (#746). Thanks @chriscrosstalk!
+- fix(qdrant): disable anonymous telemetry by default (#747). Thanks @chriscrosstalk!
+- fix(disk-display): gate NAS Storage label on network filesystem type (#749). Thanks @bgauger!
+- fix(docker): write /app/version.json from VERSION build-arg (#754). Thanks @chriscrosstalk!
+- fix(rag): pass num_ctx and truncate to Ollama embed call (#763). Thanks @chriscrosstalk!
+- fix(api): accept notes, marker_type, and position on markers endpoints (#770). Thanks @jrsphoto!
+- fix(install): warn loudly on non-x86_64 architectures before pulling images (#797). Thanks @chriscrosstalk!
+- fix(stream): skip compression for Server-Sent Events (#798). Thanks @chriscrosstalk!
+- fix(maps): Country Picker UX polish + auto-refresh stored files (#817). Thanks @chriscrosstalk!
+- fix(System): self-heal stale updateAvailable flag after sidecar-driven update (#825). Thanks @jakeaturner!
+- fix(settings/update): four UI/UX fixes for the System Update page (#827). Thanks @chriscrosstalk!
+- fix(Maps): send filename instead of full path to delete endpoint (#829). Thanks @bgauger!
+- fix(Maps): render notes in marker popup when populated (#830). Thanks @chriscrosstalk!
+- fix(AI): vendor-aware AMD HSA override + benchmark discrete-GPU detection (#832). Thanks @chriscrosstalk!
+- fix(System): correct NVIDIA VRAM in Graphics card (#850). Thanks @bgauger!
+- fix(Downloads): treat missing Content-Type as octet-stream (#859). Thanks @bgauger!
+- fix(AI): preserve semver tag in DB on AMD Ollama updates (#868). Thanks @chriscrosstalk!
+- fix(AI): rewrite RAG query on first chat follow-up (#869). Thanks @chriscrosstalk!
+- fix(RAG): unbreak multi-batch ZIM ingestion (jobId dedupe) (#872). Thanks @chriscrosstalk!
+- fix(RAG): pace continuation batches when embedding is CPU-only (#873). Thanks @chriscrosstalk!
+- fix(queue): singleton QueueService to stop ioredis connection leak (#877). Thanks @chriscrosstalk!
+- fix(System): correct AMD VRAM in Graphics card + harden log probe (#879). Thanks @chriscrosstalk!
+- fix(RAG): report ZIM ingestion progress in overall-file frame (#880). Thanks @chriscrosstalk!
+- fix(KB): add re-embed and reset & rebuild options to fix broken embeddings (#886). Thanks @jakeaturner!
+- fix(ZIM): preserve co-existing Wikipedia corpora on cleanup (#887). Thanks @chriscrosstalk!
+- fix(RAG): anchor continuation-batch initial progress to overall-file frame (#889). Thanks @chriscrosstalk!
+- fix(AI): pre-cap embed input + log fallback reason (#890). Thanks @chriscrosstalk!
+- fix(KB): remove redundant Refresh button from Processing Queue (#896). Thanks @chriscrosstalk!
+- fix(KB): union Stored Files list with state-machine file paths (#898). Thanks @chriscrosstalk!
+- fix(KB): blank-screen on panel open + tooltips on bulk-action buttons (#907). Thanks @chriscrosstalk!
+- fix(KB): TierSelectionModal hook order + register IconLibrary (#917). Thanks @chriscrosstalk!
+- fix(content): show selected tier on cards while downloads are in flight (#918). Thanks @chriscrosstalk!
+- fix(KB): respect Manual ingest policy on post-download dispatch (#919). Thanks @chriscrosstalk!
+- fix(AI): improve remote Ollama url validation to prevent SSRF vuln (#920). Thanks @jakeaturner!
+- fix(models): correct inverted belongsTo keys on ChatMessage.session (#921). Thanks @jakeaturner!
+
+### Improvements
+- docs: add Community Add-Ons page with field manuals + W3Schools packs (#753). Thanks @chriscrosstalk!
+- docs: add map marker API reference (#783). Thanks @kennethbrewer3!
+- docs: require linked issue for non-trivial PRs (#799). Thanks @chriscrosstalk!
+- docs(map): updated notes on the map pin api (#803). Thanks @kennethbrewer3!
+- docs: link to new WSL2 install guide from README and FAQ (#811). Thanks @chriscrosstalk!
+- build(deps): bump picomatch in /admin (#544). Thanks @dependabot[bot]!
+- build(deps): bump lodash from 4.17.23 to 4.18.1 in /admin (#643). Thanks @dependabot[bot]!
+- build(deps-dev): bump vite from 6.4.1 to 6.4.2 in /admin (#677). Thanks @dependabot[bot]!
+- build(deps): bump axios from 1.13.5 to 1.15.0 in /admin (#708). Thanks @dependabot[bot]!
+- build(deps): bump @adonisjs/http-server from 7.8.0 to 7.8.1 in /admin (#724). Thanks @dependabot[bot]!
+- build(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /admin (#729). Thanks @dependabot[bot]!
+- build(deps): bump protocol-buffers-schema from 3.6.0 to 3.6.1 in /admin (#736). Thanks @dependabot[bot]!
+- build(deps): bump protobufjs from 7.5.4 to 7.5.5 in /admin (#737). Thanks @dependabot[bot]!
+
+## Version 1.31.1 - April 21, 2026
+
+### Features
+- **AI Assistant**: Added improved support for AMD GPU acceleration for Ollama via ROCm + HSA override. Thanks @chriscrosstalk for the contribution!
+- **Content Explorer**: Added support for custom ZIM library sources and pre-seeded ZIM library mirrors in addition to the default Kiwix library. Thanks @chriscrosstalk for the contribution!
+- **Content Manager**: Content update sizes and downloads are now properly displayed in Active Downloads with progress bars and friendly names. Thanks @chriscrosstalk for the contribution!
+- **Maps**: Map regions can now be extracted and downloaded locally from PMTiles to avoid the need for a full global map download for users who only want specific regions. Thanks @bgauger for the contribution!
+
+### Bug Fixes
+- **API**: Compression is now skipped for Server-Sent Events (SSE) responses to prevent issues with streaming endpoints. Thanks @chriscrosstalk for the fix!
+- **Maps**: Fixed logic issues with the global map banner display. Thanks @Gujiassh for the fix!
+- **Maps**: The selected map file is now properly deleted after confirming the action in the UI. Thanks @cuyua9 for the fix!
+- **System**: Fixed an issue where the a pending update could still be indicated in the UI even after the system was updated successfully. Thanks @jakeaturner for the fix!
+
+### Improvements
+- **Build**: The Command Center image now uses the VERSION build arg to write `app/version.json` with the current version for improved version tracking and debugging, even in RC environments. Thanks @chriscrosstalk for the contribution!
+- **Content Manager**: Added a sortable file size column to the ZIM files table in the Content Manager for easier management of storage space. Thanks @chriscrosstalk for the contribution!
+- **Dependencies**: All package.json dependencies have been pinned to specific versions to ensure stability and reduce the risk of unexpected breaking changes/supply-chain compromises from upstream packages. Thanks @jakeaturner for the contribution!
+- **Dependencies**: Updated various dependencies to close security vulnerabilities and improve stability
+- **Docs**: Update CONTIRBUTING.md to require an issue to be opened before submitting a PR for non-trivial changes to ensure proper discussion and review of proposed changes. Thanks @chriscrosstalk for the contribution!
+- **Docs**: Added the map markers endpoints to the API reference documentation. Thanks @kennethbrewer3 for the contribution!
+- **Docs**: Added a link to the new WSL2 install guide in the README and FAQ. Thanks @chriscrosstalk for the contribution!
+- **Install**: The install script now warns loudly if the user is attempting to install on a non-x86_64/amd64 platform to prevent unsupported installations and potential issues. Thanks @chriscrosstalk for the contribution!
+- **Maps**: The maps API endpoints now properly accept and validate notes, marker_type, and position data for map markers and persist them in the database for retrieval in the UI. Thanks @jrsphoto for the contribution!
+- **Maps**: The current coordinates of the mouse pointer can now be displayed in the map viewer for easier navigation and exploration. Thanks @kennethbrewer3 for the contribution!
+- **RAG**: NOMAD now properly passed `num_ctx` and truncation to the Ollama embedding endpoint to ensure that the context window of the model is best utilized for embeddings. Thanks @chriscrosstalk for the contribution!
+- **RAG**: Added a manual start button for Qdrant and a self-healing mechanism for Qdrant's restart-policy to ensure that the vector database is running properly for embedding and retrieval tasks. Thanks @hestela for the contribution!
+
+## Version 1.31.1 - April 21, 2026
+
+### Features
+
+### Bug Fixes
+- **AI Assistant**: In-progress model downloads can now be cancelled properly and the progress UI now matches that of file downloads. Thanks @chriscrosstalk for the contribution!
+- **AI Assistant**: Fixed an issue where the AI Assistant settings page could crash if a model object did not have a details property. Thanks @hestela for the fix!
+- **AI Assistant**: Fixed an issue with non-embeddable files being queued for embedding and flooding logs with errors. Thanks @sbruschke for the bug report and @chriscrosstalk for the fix!
+- **AI Assistant**: Fixed an issue with ZIM batch embedding using the wrong batch count and causing remaining batches to be skipped. Thanks @sbruschke for the bug report and @chriscrosstalk for the fix!
+- **AI Assistant**: Fixed an issue with ZIM content extraction only extracting the first-level children of the article body and thus missing a lot of content. Thanks @sbruschke for the bug report and @chriscrosstalk for the fix!
+- **Disk Collector**: Improved reporting for NFS mount stats and display in the UI. Thanks @bgauger and @bravosierra99 for the contribution!
+- **Downloads**: Downloads are now staged to .tmp files and atomically renamed upon completion to prevent issues with incomplete/corrupt files. Thanks @artbird309 for the contribution!
+- **Downloads**: Removed a duplicate error listener and improved stability when handling Range requests for file downloads. Thanks @jakeaturner for the contribution!
+- **Downloads**: Added improved handling for corrupt ZIM file downloads and removed duplicate Ollama download logs. Thanks @aegisman for the contribution!
+- **Security**: Closed a potential SSRF vulnerability in the map file download functionality by implementing stricter URL validation and blocking private IP ranges. Thanks @LuisMIguelFurlanettoSousa for the fix!
+- **Security**: Sanitized error messages from the backend to prevent potential information disclosure. Thanks @LuisMIguelFurlanettoSousa for the fix!
+- **UI**: Fixed an issue with broken pagination for the Content Explorer that could cause some users to see a "No records found" message indefinitely. Thanks @johno10661 for the bug report and @chriscrosstalk for the fix!
+- **UI**: Fixed an issue where all storage devices could report as "NAS Storage" regardless of actual type. Thanks @bgauger for the fix!
+
+### Improvements
+- **AI Assistant**: Now uses the currently loaded model for query rewriting and chat title generation for improved performance and consistency. Thanks @hestela for the contribution!
+- **AI Assistant**: When a remote Ollama URL is configured, the Command Center will now attempt to stop NOMAD's local Ollama container to free up resources and avoid confusion. Thanks @chriscrosstalk for the contribution!
+- **Dependencies**: Updated various dependencies to close security vulnerabilities and improve stability
+- **Docs**: Added a "Community Add-Ons" page to the documentation to highlight some of the amazing community contributions that have been made since launch. Thanks @chriscrosstalk for the contribution!
+- **Privacy**: Added the appropriate environment variable to disable telemetry for the Qdrant container. Note that this will only take effect on new installations of if the Qdrant container is force re-installed on existing installations. Thanks @berkdamerc for the find and @chriscrosstalk for the contribution!
+
 ## Version 1.31.0 - April 3, 2026
 
 ### Features
diff --git a/admin/docs/supply-depot-apps.md b/admin/docs/supply-depot-apps.md
new file mode 100644
index 0000000..7118132
--- /dev/null
+++ b/admin/docs/supply-depot-apps.md
@@ -0,0 +1,284 @@
+# Supply Depot Apps
+
+The Supply Depot is where you install extra apps onto your NOMAD beyond the built-in tools. Each app runs in its own container on your NOMAD, fully offline, and shows up with an **Open** button once it finishes installing.
+
+This page covers what you need to know to get up and running with each app *on NOMAD specifically*: whether you log in, what the default credentials are, where your files end up, and anything you need to have on hand first. It does not cover how to use the apps themselves. Each app is its own open-source project with its own documentation, and we link out to that for every one.
+
+A quick note on logins: some of these apps have their own accounts, separate from your NOMAD login. Where an app asks you to sign in, we tell you the starting credentials and whether you should change them.
+
+---
+
+## Managing your apps
+
+Every app you install gets a **Manage** menu on its card. From there you can:
+
+- **Docs** — jump straight to the NOMAD getting-started notes for that app (the same per-app sections you'll find below).
+- **Edit** — change an app's settings: port mappings, volume binds, environment variables, and memory/CPU limits. This works for curated apps too, not just custom ones. Your edits are merged into the app's existing setup, so advanced settings (like GPU access on the AI Assistant) are preserved, and an edited app stops getting overwritten by catalog updates.
+- **Logs** and **Stats** — open a live view of an app's log output or its current memory and CPU use, handy when something isn't behaving.
+- **Update** and **Remove** — pull the latest version of an app, or remove it (optionally deleting its image too). If an update's new container fails to start, NOMAD automatically rolls back to the version that was working.
+
+**Seeing what version you're running:** Each app card shows the installed version right next to the app name (for example, `Kiwix · 3.7.0`). When a newer version is available, an orange **Update available** pill appears on the card so it's easy to spot at a glance.
+
+**Custom "Open" links:** By default the **Open** button points at the app on your NOMAD's own address. If you run a reverse proxy or local DNS and would rather open an app at a friendlier address (for example `https://jellyfin.myhomelab.net`), use **Manage › Edit** to set a custom launch URL. NOMAD keeps your original link safely on file, so you can always switch back, and the override sticks across upgrades.
+
+**Keeping apps updated automatically:** Installed apps can update themselves hands-off. This is opt-in at two levels — a master switch in **Settings → Updates** and a per-app toggle in the Supply Depot — and only minor and patch updates are ever applied automatically (major versions always stay manual). See the [Updates guide](/docs/updates) for the full story.
+
+---
+
+## Bringing your own app
+
+Beyond the curated catalog, the Supply Depot can run **your own Docker container** as a managed app alongside everything else. Click **Add a custom app** and tell NOMAD:
+
+- the **image** to pull (for example `ghcr.io/owner/app:1.2.3`),
+- any **port mappings**, **volume binds**, **environment variables**, and **memory/CPU limits** it needs.
+
+As you fill it in, NOMAD runs a live pre-flight check and warns you about things like port conflicts or risky settings. Some warnings (an untrusted registry, or a `:latest` tag that can't be version-tracked) are advisory and you can choose **Install anyway**; genuinely unsafe configurations are blocked outright.
+
+Once installed, a custom app behaves like any other: it gets the same **Manage** menu (Edit, Logs, Stats, Update, Remove), shows its version on the card, and can opt in to automatic updates. NOMAD hardens host-path binds and scopes logs and stats to its own managed containers, so a custom app can't reach outside what you give it.
+
+> A custom app is exactly that — yours. NOMAD runs it and gets out of the way; it doesn't provide setup docs or support for software outside the curated catalog. Check the project's own documentation for how to use it.
+
+---
+
+## Stirling PDF {% #stirling-pdf %}
+
+A full toolbox for working with PDFs, all on your own hardware. Merge and split files, convert to and from PDF, compress, rotate, add or remove passwords, OCR scanned documents so they're searchable, sign, stamp, and redact. There are over 50 tools in here, and because it runs locally, none of your documents ever leave your NOMAD.
+
+**Official site:** [stirlingpdf.com](https://stirlingpdf.com) · **Source:** [github.com/Stirling-Tools/Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF)
+
+**First time you open it:** It opens straight to the tools, no login required. We set Stirling up to skip its login screen, since on a NOMAD it's a personal tool on your own network and a password wall just gets in the way. You'll see "Guest" in the bottom-left corner, which is normal.
+
+**Heads up, it's a slow starter:** Stirling PDF is a big Java application. After you install it, give it 30 to 60 seconds to finish starting up before it loads cleanly. It also wants a good chunk of memory (around a gigabyte), so it's happier on a NOMAD with room to spare.
+
+**Want a password on it?** If you'd rather Stirling require a login (say a few people share your NOMAD and you want this app locked down), you can turn its login back on from NOMAD:
+
+1. On the Supply Depot page, find Stirling PDF and click **Manage > Edit**.
+2. Under **Environment Variables**, change `SECURITY_ENABLELOGIN=false` to `SECURITY_ENABLELOGIN=true`.
+3. Save. NOMAD rebuilds the app, and the login screen comes back.
+
+The first time you sign in after that, use username `admin` and password `stirling`. Stirling will make you set your own password right away. Note that this is the only way to flip the login back on: Stirling's own settings menu is locked behind being logged in, so once login is off you turn it on from NOMAD's Edit screen, not from inside Stirling.
+
+**Your data:** Your settings live in the `storage/stirling-pdf` folder on your NOMAD. The PDFs you work on are uploaded for the operation and downloaded back to your own device. Stirling isn't a long-term library, so it's not holding onto your documents.
+
+**Where your PDFs come from (and why you don't see your NOMAD's files):** Stirling works on files from whatever device you're using, your laptop, phone, or tablet. You click "Open from computer," pick a PDF, work on it, then download the result back to that device. Stirling can't reach into files stored elsewhere on your NOMAD, so it won't show you your books folder, your Knowledge Base documents, or anything sitting in File Browser. If the PDF you want is already on your NOMAD, download it from wherever it lives first (File Browser, for example), then open that copy in Stirling. It's one extra step, but it's also why your files stay exactly where you put them instead of getting pulled into another app.
+
+**Works offline:** All of the PDF tools run locally on your NOMAD, so the toolbox itself works fully offline. A few side features reach out to the internet and won't do anything when you're disconnected: the "Google Drive" import option, and the links in the footer (Survey, Discord, GitHub). None of those matter for actually working on PDFs. The one core feature with an online piece is OCR, which reads text out of scanned pages: it ships with English already installed, and adding other languages is the only part that would need a connection.
+
+## File Browser {% #file-browser %}
+
+A web-based file manager for your NOMAD. Browse folders, upload and download files, create folders, rename, move, and delete, all from your browser with nothing to install on your computer. It's a handy way to move files on and off the device or tidy things up without dropping into a command line.
+
+**Official site:** [filebrowser.org](https://filebrowser.org) · **Source:** [github.com/filebrowser/filebrowser](https://github.com/filebrowser/filebrowser)
+
+**First time you open it:** You'll get a login screen. Sign in with username `admin` and password `nomad`. **Change that password right away.** It's the same default on every NOMAD, so until you change it, anyone on your network who knows it could get in. Click the settings gear, open your profile settings, and set a new password.
+
+Unlike most of the apps here, File Browser keeps its login on purpose. It can rename and delete real files on your NOMAD, so a password is the right call even on your own network.
+
+**What you can see:** File Browser shows you your NOMAD's content folders in one place:
+
+- **books** - e-books, including anything you want Calibre-Web to read
+- **maps** - downloaded map data
+- **media** - video, music, and photos, including anything you want Jellyfin to serve
+- **zim** - downloaded offline content like Wikipedia and other reference libraries
+- **kb_uploads** - documents you've added to the Knowledge Base
+
+You can upload, download, rename, move, and delete inside these, and anything you drop in the top level is saved too. The behind-the-scenes folders that the apps actually run on (things like the AI models, the search index, and the password vault) are deliberately kept out of File Browser, so you can't browse or delete them by accident.
+
+> **A word on deleting:** what you delete here is really gone, there's no recycle bin. The content is mostly replaceable (you can re-download a map or a Wikipedia library), but if you delete a book or a video you added yourself, that copy is gone. Delete with the same care you would on your own computer.
+
+**Works offline:** Fully offline. File Browser runs entirely on your NOMAD and doesn't reach out to the internet for anything, so it works exactly the same connected or not.
+
+## Calibre-Web {% #calibre-web %}
+
+A web-based reader and library manager for your e-book collection. Read books right in your browser, organize them by author, series, and tags, and send them to a Kindle or other e-reader. It pairs with the books folder on your NOMAD, so your whole library lives on the device and goes wherever it goes.
+
+**Official site:** [github.com/janeczku/calibre-web](https://github.com/janeczku/calibre-web)
+
+**First time you open it:** Calibre-Web needs a library to point at, and NOMAD sets up an empty one for you during install, so you won't get stuck on a setup error. Here's the one-time flow:
+
+1. Open Calibre-Web. It lands on a **Database Configuration** screen.
+2. In the **Location of Calibre Database** box, type `/books` and click **Save**. You'll see "Database Settings updated" and your (empty) library opens.
+3. That's it for setup. Your library is ready to fill.
+
+If it asks you to sign in at any point, the default login is `admin` / `admin123`. **Change that password** once you're in (click `admin` in the top right, then Edit). It's the same default on every NOMAD.
+
+**Adding books:** Uploading through the web page is turned off by default. To turn it on, go to **Admin** (top right) and edit the basic configuration to allow uploads, then you'll get an Upload button. You can also drop e-book files straight into the books folder using File Browser, then use Calibre-Web's "scan" to pick them up.
+
+**Your data:** Your library lives in the `books` folder on your NOMAD (the same `books` you see in File Browser). Every book you add is stored there, so backing up that one folder backs up your whole collection.
+
+**Works offline:** Reading and managing your library works fully offline. The one feature that reaches out to the internet is "fetch metadata," which pulls book covers and descriptions from online sources. That part won't do anything when you're offline, but it doesn't affect reading or organizing the books you already have.
+
+## IT Tools {% #it-tools %}
+
+A collection of over 100 small utilities you'd otherwise go hunting for online: hash generators, base64 and URL encoders, JSON and SQL formatters, UUID generators, a QR code maker, color converters, and a lot more. It all runs locally on your NOMAD, so you can use it with no internet connection.
+
+**Official site:** [it-tools.tech](https://it-tools.tech) · **Source:** [github.com/CorentinTh/it-tools](https://github.com/CorentinTh/it-tools)
+
+**First time you open it:** It opens straight to the tools. No login, no account, no setup. Pick a tool from the sidebar and use it.
+
+**Your data:** There's nothing to manage. IT Tools doesn't store anything on your NOMAD between sessions, so there are no files, no library to set up, and no credentials to keep track of. It's the simplest app in the Supply Depot.
+
+**Works offline:** Every tool runs right in your browser against the copy on your NOMAD. Nothing here reaches out to the internet, so all of it keeps working when you're offline.
+
+## Excalidraw {% #excalidraw %}
+
+A virtual whiteboard for quick, hand-drawn-style diagrams and sketches. Draw boxes, arrows, and freehand shapes, drop in text and images, and lay out a flowchart, a network diagram, or a rough idea in seconds. The whole thing has a friendly, sketched-on-a-napkin look, and it runs right in your browser.
+
+**Official site:** [excalidraw.com](https://excalidraw.com) · **Source:** [github.com/excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
+
+**First time you open it:** It opens straight to a blank canvas. No login, no account, no setup. Pick a shape from the toolbar and start drawing. You'll see a short welcome note reminding you that your work is saved in your browser, which leads to the one thing worth understanding about Excalidraw on NOMAD.
+
+**Where your drawings live (read this part):** This version of Excalidraw has no storage on your NOMAD. Your drawing is saved inside the web browser you're using, on that one device. A few things follow from that:
+
+- Your drawing is **not shared between devices**. What you draw on your laptop won't show up when you open Excalidraw on your phone, because each browser keeps its own copy.
+- If you **clear your browser data**, or use a private/incognito window, the drawing is gone. There's no copy on the NOMAD to fall back on.
+- So **save your work to a file.** Use the menu (top-left) to **Save to...** an `.excalidraw` file, and put it somewhere safe, for example your media or documents folder via File Browser. To pick it back up later, use **Open** and load that file. This is the only way to keep a drawing for the long term or move it to another device.
+
+**Your data:** Because everything stays in your browser, there are no NOMAD folders or credentials to manage for Excalidraw. The files you save are wherever you choose to put them.
+
+**Works offline:** The whiteboard itself works offline, you can draw, edit, and save files with no internet. Three things to know:
+
+- **The signature hand-drawn font comes from the internet.** When your NOMAD is offline, Excalidraw can't fetch it and falls back to a plain font, so your diagrams look a little less sketchy. Your drawings themselves are completely unaffected, only the on-screen font changes.
+- **Excalidraw sends anonymous usage analytics when your NOMAD is online.** The app's makers include basic page-view tracking (through a service called Simple Analytics) that records that the app was opened. It doesn't see your drawings, and it can't reach anything when your NOMAD is offline, but we want you to know it's there since NOMAD is otherwise built to keep to itself.
+- **A few buttons are cloud features that don't work on NOMAD.** "Live collaboration," "Sign up," and "Excalidraw+" all point to the makers' paid online service and need the internet. They're not part of your offline whiteboard, so you can ignore them. The same goes for the shape **Library** browser, which pulls from an online gallery.
+
+## Homebox {% #homebox %}
+
+A home inventory system for keeping track of everything you own. Catalog your belongings into locations and labels, attach photos, record serial numbers, purchase prices, warranty dates, and receipts, and find anything with a search. It's a genuinely useful tool for insurance records, warranty tracking, and knowing what you have and where it is.
+
+**Official site:** [homebox.software](https://homebox.software) · **Source:** [github.com/sysadminsmedia/homebox](https://github.com/sysadminsmedia/homebox)
+
+**First time you open it:** Homebox lands on a login screen, but you don't have an account yet, so you create one. Click **Register**, then fill in:
+
+- **your email** (used as your username to log in),
+- **your name**,
+- **a password** (Homebox shows a strength meter and won't let you register until the password is strong enough, so use a real one).
+
+Click **Register**, then log in with that email and password. The first account you create is the **owner** of this Homebox. There are no default credentials to change, the account is yours from the start.
+
+**Sharing your NOMAD with others?** By default Homebox lets anyone who can reach it create their own account. That's fine if it's just you, or if you trust everyone on your network. If you'd rather lock it down so no one else can register after you've made your account:
+
+1. Create your owner account first (above).
+2. On the Supply Depot page, find Homebox and click **Manage > Edit**.
+3. Under **Environment Variables**, add `HBOX_OPTIONS_ALLOW_REGISTRATION=false`.
+4. Save. NOMAD rebuilds the app, and the Register button stops creating new accounts. You can still log in normally.
+
+**Your data:** Everything Homebox stores lives in one folder on your NOMAD, `storage/homebox`, as a single database file (plus any photos and receipts you attach). Backing up that one folder backs up your entire inventory.
+
+**Works offline:** Fully offline. Homebox runs entirely on your NOMAD, keeps all your data locally, and has no usage tracking, so it works exactly the same whether your NOMAD is connected or not. The links in its header (GitHub, Discord, the project website) need the internet, but they're just shortcuts to the project's pages and have nothing to do with your inventory.
+
+## Vaultwarden {% #vaultwarden %}
+
+A private password manager that runs on your own NOMAD. It's compatible with Bitwarden, so you can store logins, secure notes, and card details in an encrypted vault, and use the official Bitwarden browser extensions and phone apps to access it, all pointed at your NOMAD instead of someone else's cloud.
+
+**Official site:** [bitwarden.com](https://bitwarden.com) (for the apps and extensions) · **Source:** [github.com/dani-garcia/vaultwarden](https://github.com/dani-garcia/vaultwarden)
+
+**First time you open it, you'll see a security warning. That's expected, here's why:** A password manager will only run over a secure (HTTPS) connection, so NOMAD sets Vaultwarden up with HTTPS automatically. Because your NOMAD is your own private device and not a public website, it uses a self-signed security certificate, and browsers show a warning the first time they see one. It looks alarming but it's normal for a device on your own network. To get past it once:
+
+1. Click **Open** on the Vaultwarden card. Your browser shows something like *"Your connection is not private"* or *"Not secure."*
+2. Click **Advanced**, then **Proceed to (your NOMAD's address)**. (On some browsers the button says "Continue" or "Accept the Risk.")
+3. You'll land on the Vaultwarden vault. Your browser remembers your choice, so you won't see the warning again on that device.
+
+**Creating your vault:** On the login page, click **Create account**, then set your **email** and a **master password**.
+
+> **Your master password cannot be recovered.** Vaultwarden has no "forgot password" email and no reset, by design, because it never sees your password. If you forget it, the vault and everything in it is locked for good. Choose something strong that you won't lose, and consider writing it down somewhere physically safe.
+
+**Sharing your NOMAD with others?** By default anyone who can reach Vaultwarden can create their own account (each account is separate and encrypted). If you'd rather no one else can register after you've set yours up:
+
+1. Create your own account first.
+2. On the Supply Depot page, find Vaultwarden and click **Manage > Edit**.
+3. Under **Environment Variables**, add `SIGNUPS_ALLOWED=false`.
+4. Save. NOMAD rebuilds the app and new sign-ups are turned off; existing accounts keep working.
+
+**Using it from your phone and browser:** Install the official Bitwarden app or browser extension, and on its login screen choose **self-hosted** (or "Server URL") and enter `https://(your NOMAD's address):8480`. Note that some phone apps are stricter about self-signed certificates and may refuse to connect; the web vault you open from NOMAD always works.
+
+**Your data:** Your encrypted vault lives in the `storage/vaultwarden` folder on your NOMAD. Backing up that folder backs up everything. (The built-in admin panel is turned off unless you set an admin token, which most people don't need.)
+
+**Works offline:** Fully offline and private. Vaultwarden runs entirely on your NOMAD, stores your vault locally, and phones home to nobody. The Bitwarden apps and extensions also keep a local copy of your vault, so they can read your passwords even when your NOMAD or your phone is offline.
+
+## Jellyfin {% #jellyfin %}
+
+Your own media server. Point Jellyfin at a folder of movies, TV shows, music, and photos on your NOMAD, and it organizes everything with artwork and details and streams it to a web browser, phone, tablet, smart TV, or the Jellyfin apps. It's a private, offline alternative to the big streaming services for media you already own.
+
+**Official site:** [jellyfin.org](https://jellyfin.org) · **Source:** [github.com/jellyfin/jellyfin](https://github.com/jellyfin/jellyfin)
+
+**First time you open it, you'll go through a setup wizard.** It's a few quick screens:
+
+1. **Language** - pick your display language and click Next.
+2. **Create your admin account** - enter a username and password. This is the main account that controls the server, so give it a real password and keep track of it. (You can add more users, including limited ones for kids, later from the Dashboard.)
+3. **Add your media** - click **Add Media Library** and pick a content type. To make this easy, NOMAD has already created a matching folder for each type inside your media folder, so you just point each library at the one that fits:
+   - **Movies** library → the `Movies` folder
+   - **Shows** library → the `TV Shows` folder
+   - **Music** library → the `Music` folder
+   - **Photos** library → the `Photos` folder
+
+   **Point each library at its own folder, not at the whole `media` folder.** This matters: if you point one library at `media` itself (which contains all the others) and another library at, say, `Music` inside it, Jellyfin sees the same files claimed twice, calls it a "duplicate path," and your music silently won't show up. One folder per library keeps everything tidy and working. You can also skip this step and add libraries later from the Dashboard.
+4. **Metadata, remote access, finish** - accept the defaults on the remaining screens and finish. Then sign in with the account you just made.
+
+**Getting your media in:** Put your files in the matching subfolder of the **media** folder on your NOMAD (the same `media` folder you see in File Browser): movies in **Movies**, series in **TV Shows**, music in **Music** (a folder per album works great), pictures in **Photos**. The easiest workflow is to upload files with File Browser (or drop them in however you like), then in Jellyfin click **Scan Library** to pick them up. Jellyfin reads sub-folders, so a whole album folder dropped into **Music** comes in as one album. It also works best when files are named clearly (for example `Movie Name (2020).mp4`), which helps it match the right artwork and details.
+
+**Your data:** Your media lives in `storage/media`. Jellyfin's own settings, user accounts, and the artwork it downloads live in `storage/jellyfin`. Your media files are never modified, Jellyfin only reads them.
+
+**Works offline:** Streaming your own media works fully offline, that's the whole point. The one piece that uses the internet is **fetching metadata**: when Jellyfin adds a movie or show, it tries to download a cover image, description, and cast info from online databases. Offline, it can't do that, so items show up with plain names and no artwork, but they still play perfectly. Once you're back online, a library scan fills in the missing artwork.
+
+> **A note on playback performance:** Jellyfin plays most files effortlessly, but if a video's format isn't supported by your device, Jellyfin has to convert it on the fly ("transcoding"), which is heavy work for the processor. NOMAD doesn't set up graphics-card acceleration for this by default, so very large or high-resolution videos may stutter on a modest NOMAD. Playing files in a widely-supported format (like MP4/H.264) avoids transcoding and plays smoothest.
+
+## Meshtastic Web {% #meshtastic-web %}
+
+A browser-based control panel for [Meshtastic](https://meshtastic.org) devices. Meshtastic is off-grid, long-range radio messaging: small, inexpensive LoRa radios that form their own mesh network and send text messages and GPS locations for miles with no cell service, no internet, and no fees. This app is how you configure those radios and read and send messages from a full-size screen.
+
+**Official site:** [meshtastic.org](https://meshtastic.org) · **Source:** [github.com/meshtastic/web](https://github.com/meshtastic/web)
+
+**You need a Meshtastic radio to use this.** This app is just the control panel. On its own it opens to a "No devices connected" screen, because the actual work happens on a physical Meshtastic device (and the network of other radios it talks to). If you don't have one yet, the app won't do much.
+
+**First time you open it:** It opens straight in, no login. Click **New Connection** and you'll see three ways to connect to your radio:
+
+- **HTTP** - connect to a radio that's already joined to your Wi-Fi, by typing its IP address. **This is the method to use on NOMAD** (see below).
+- **Bluetooth** - pair with a nearby radio over Bluetooth.
+- **Serial** - connect to a radio plugged into a USB port.
+
+**The NOMAD-specific catch (Bluetooth and Serial need HTTPS):** Browsers only allow a website to use Bluetooth or USB when the page is loaded over a secure (HTTPS) connection. NOMAD serves Meshtastic Web over plain HTTP, so on NOMAD the **Bluetooth and Serial options won't connect**, your browser blocks them. The one that works is **HTTP**: put your Meshtastic radio on the same Wi-Fi network (Meshtastic radios can join Wi-Fi), then connect to it here by its IP address. If you specifically need to pair over USB or Bluetooth, do that from the official Meshtastic phone app or the Meshtastic website instead.
+
+**Your data:** There's nothing to set up or store on your NOMAD for this app. Your radio's settings live on the radio itself, and this app's preferences live in your browser. There's no NOMAD folder to manage.
+
+**Works offline:** Fully offline, which is the entire point of Meshtastic. The app is served from your NOMAD, and talking to your radios happens over your local network or radio, never the internet. The only online bits are the links in the footer (Vercel, legal), which don't matter for using your mesh.
+
+## Education Platform (Kolibri) {% #kolibri %}
+
+A complete offline learning platform from Learning Equality. Kolibri pulls together video lessons, exercises, and readings into structured channels, organizes them into classes and lessons, tracks learner progress, and works entirely on your NOMAD with no internet. It's built for schools and learners in places with little or no connectivity.
+
+**Official site:** [learningequality.org/kolibri](https://learningequality.org/kolibri) · **Source:** [github.com/learningequality/kolibri](https://github.com/learningequality/kolibri)
+
+**First time you open it, you'll go through a quick setup wizard.** Pick your facility type and create the **admin account** (this is the super-user that manages the whole device, so give it a real password and keep track of it). Once you're in, you import learning content as **channels**.
+
+**Importing content:** Kolibri's content is delivered as channels you import. Open **Device → Channels → Import**, and either pull channels from Kolibri Studio (online) or import from a local drive or another Kolibri device if you already have the content files. There's a lot available, so import just the channels you need; they can be large.
+
+**Migrating content from Education Platform (Gen 1):** Earlier NOMAD releases shipped a much older Kolibri (the `treehouses/kolibri:0.12.8` image). The Education Platform "Gen 2" is a newer, upstream-official Kolibri and installs **fresh** — your old channels and learner data are **not** carried over automatically, because the two versions store data too differently to migrate safely. If you were running the old one and want to import your existing channels into the new one, here's the process:
+
+1. Install "Education Platform (Gen 2)" from the catalog (it runs alongside the old one on a different port, so nothing is disrupted while you set it up).
+2. Launch the new one, walk through the setup wizard, then from the sidebar menu, navigate to **Device > Channels > Import**. Choose the "Local network or internet" option, and then "Add new device". In the dialog that appears, enter the IP address of your NOMAD with the old Education Platform port (8300 by default, so for example `http://192.168.1.36:8300`), give it a name (anything you'd like), and click "Add", and then "Continue". 
+3. You can now select individual channels from the old Education Platform, or choose "Select entire channels instead" to import everything at once. Click "Import" when ready, and the transfer will start.
+3. Once you're happy with the new install and have any content copied over, uninstall the old Education Platform from its card (it carries a **legacy** badge). It's also recommended to choose to remove the old image and data volume when uninstalling to avoid confusion and free up space, but if you want to keep it around for a while just in case, that's totally fine too.
+
+**Your data:** Your imported channels, classes, and learner progress live in the `storage/kolibri-gen2` folder on your NOMAD. Backing up that folder backs up your whole Kolibri.
+
+**Works offline:** Fully offline once content is imported, that's what Kolibri is for. The only step that uses the internet is importing channels from Kolibri Studio; everything after that, browsing lessons, doing exercises, tracking progress, runs entirely on your NOMAD.
+## MeshCore Web {% #meshcore-web %}
+
+A browser-based client for [MeshCore](https://meshcore.co.uk) radios. MeshCore is another take on off-grid, long-range LoRa mesh messaging, a sibling to Meshtastic: small radios that form their own network and pass text and location for miles with no cell service, no internet, and no fees. This app is how you configure a MeshCore radio and read and send messages from a full-size screen. If you're not already running MeshCore gear, the Meshtastic client above is the more common starting point. This one is here for people who use MeshCore.
+
+**Official site:** [meshcore.co.uk](https://meshcore.co.uk) · **Source:** [github.com/aXistem-dev/meshcore-web](https://github.com/aXistem-dev/meshcore-web) (a packaged build of Liam Cottle's MeshCore client)
+
+**You need a MeshCore radio to use this.** Like the Meshtastic client, this is just the control panel. With no radio connected, there's nothing for it to talk to.
+
+**First time you open it, you'll see a security warning. That's expected, here's why:** MeshCore connects to your radio over USB or Bluetooth, and browsers only let a web page use USB or Bluetooth when the page is loaded over a secure (HTTPS) connection. So NOMAD serves this app over HTTPS, and because your NOMAD is a private device with no public web address, it uses a self-signed certificate that browsers warn about the first time they see it. To get past it once:
+
+1. Click **Open** on the MeshCore Web card. Your browser shows something like *"Your connection is not private"* or *"Not secure."*
+2. Click **Advanced**, then **Proceed to (your NOMAD's address)**. (On some browsers the button says "Continue" or "Accept the Risk.")
+3. You'll land in MeshCore Web. Your browser remembers your choice, so you won't see the warning again on that device.
+
+**Connecting your radio:** Use **Chrome or Edge**, which have the best support for browser USB and Bluetooth. Plug the radio into the computer you're browsing from (USB), or have it nearby (Bluetooth), then connect to it from inside the app. The radio connects to **the computer you're using**, not to the NOMAD itself, so connect from a device that has the radio plugged in or in Bluetooth range. Some phones are stricter about self-signed certificates and may refuse to connect; a desktop Chrome or Edge is the most reliable.
+
+**Your data:** There's nothing to set up or store on your NOMAD for this app. Your radio's settings live on the radio itself, and the app's preferences live in your browser. There's no NOMAD folder to manage.
+
+**Works offline:** Fully offline, which is the whole point of MeshCore. The app is served from your NOMAD and talks to your radio directly over USB or Bluetooth, never the internet.
diff --git a/admin/docs/updates.md b/admin/docs/updates.md
new file mode 100644
index 0000000..0d372f9
--- /dev/null
+++ b/admin/docs/updates.md
@@ -0,0 +1,67 @@
+# Keeping N.O.M.A.D. Updated
+
+N.O.M.A.D. works best when it's kept current while you have internet, so it's ready with the latest software and content the next time you go offline. This page explains what can be updated, how to do it on demand, and how to let N.O.M.A.D. handle it for you automatically.
+
+---
+
+## The three kinds of updates
+
+There are three separate things that can be updated, and you control each one independently:
+
+1. **Software (the core)** — N.O.M.A.D. itself: the Command Center, new features, bug fixes, and security improvements.
+2. **Apps** — the installable apps from the [Supply Depot](/supply-depot) (Kiwix, the AI Assistant, and any others you've added).
+3. **Content** — your offline material: Wikipedia and other Kiwix libraries, and downloaded map regions.
+
+You can update any of these on demand, or set any of them to update automatically.
+
+---
+
+## Updating on demand
+
+To check for and install updates yourself:
+
+1. Go to **[Settings → Check for Updates](/settings/update)**.
+2. If a software update is available, click to install it. N.O.M.A.D. downloads the update and restarts (usually 2–5 minutes).
+3. Apps can be updated from their card in the [Supply Depot](/supply-depot) using **Manage › Update**.
+4. Content is managed from **Settings → Content Manager** and **Content Explorer**, where you can download newer versions of installed libraries and maps.
+
+If a software or app update ever fails, N.O.M.A.D. is designed to recover gracefully — the previous working version keeps running, so your server stays up.
+
+---
+
+## Automatic updates
+
+N.O.M.A.D. can keep itself current without you having to remember to check. **Automatic updates are opt-in and off by default** — nothing updates on its own until you turn it on. You manage all of it from **Settings → Updates**.
+
+A few things are true across all three:
+
+- **You choose a time window.** Automatic updates only run during the hours you set, so they never interrupt you mid-use.
+- **Major versions are never automatic.** Only minor and patch updates apply on their own; a big version jump always waits for you to do it manually, on purpose.
+- **Safety checks come first.** Before applying anything, N.O.M.A.D. confirms there's enough disk space and that no other update, download, or install is already in progress.
+- **Being offline is harmless.** If N.O.M.A.D. can't reach the internet to check, it simply skips that round and tries again later.
+
+### Automatic software (core) updates
+
+Turn this on from **Settings → Updates**. When enabled, N.O.M.A.D. updates its own core to newer releases within the same major version, during your chosen window, after a configurable **cool-off** period (so a brand-new release has time to prove itself before your server takes it). The same page shows the toggle, the window, the cool-off setting, and live status. If updates fail repeatedly for a real reason, N.O.M.A.D. turns the feature back off and lets you know rather than retrying forever.
+
+### Automatic app updates
+
+App auto-updates are opt-in at **two levels**: a master switch in **Settings → Updates**, *and* a per-app toggle on each app's card in the [Supply Depot](/supply-depot). Both have to be on for an app to update itself. App updates share the same update window and cool-off as the core, apply only minor and patch versions, and back off automatically for any individual app that keeps failing.
+
+### Automatic content updates
+
+Installed Wikipedia/ZIM libraries and map regions can refresh themselves too. Because content downloads are large (often many gigabytes), content updates run on their **own dedicated overnight window** with a **bandwidth cap**, separate from the software and app schedule. N.O.M.A.D. checks the upstream Kiwix and map catalogs directly, and when a Wikipedia library is replaced with a newer version, it keeps the AI Knowledge Base in sync automatically.
+
+---
+
+## Early Access Channel
+
+Want new features before they reach the stable release? Enable the **Early Access Channel** from the [Check for Updates](/settings/update) page to receive release-candidate builds. Early-access builds may contain rough edges — you can switch back to stable at any time.
+
+---
+
+## Before you go offline
+
+Whatever you choose, the habit that matters most is simple: **update while you still have internet.** Whether you do it by hand or let automatic updates handle it, make sure your software and content are current before you head somewhere without a connection. When you're offline, you'll have the last synced versions of everything ready to go.
+
+**[Check for Updates →](/settings/update)** · **[See what's new in each version →](/docs/release-notes)**
diff --git a/admin/inertia/components/ActiveEmbedJobs.tsx b/admin/inertia/components/ActiveEmbedJobs.tsx
index 9da78bc..bb8fbd1 100644
--- a/admin/inertia/components/ActiveEmbedJobs.tsx
+++ b/admin/inertia/components/ActiveEmbedJobs.tsx
@@ -1,6 +1,12 @@
+import { useEffect, useState } from 'react'
 import useEmbedJobs from '~/hooks/useEmbedJobs'
 import HorizontalBarChart from './HorizontalBarChart'
 import StyledSectionHeader from './StyledSectionHeader'
+import {
+  JOB_HEALTH_DISPLAY,
+  computeJobHealth,
+  formatTimeAgo,
+} from '~/lib/kb_job_health_display'
 
 interface ActiveEmbedJobsProps {
   withHeader?: boolean
@@ -9,31 +15,70 @@ interface ActiveEmbedJobsProps {
 const ActiveEmbedJobs = ({ withHeader = false }: ActiveEmbedJobsProps) => {
   const { data: jobs } = useEmbedJobs()
 
+  // Re-render every 5s to keep per-job "last activity Xs ago" timestamps fresh.
+  const [tick, setTick] = useState(() => Date.now())
+  useEffect(() => {
+    const id = setInterval(() => setTick(Date.now()), 5000)
+    return () => clearInterval(id)
+  }, [])
+
   return (
     <>
       {withHeader && (
         
       )}
+
       
{jobs && jobs.length > 0 ? ( - jobs.map((job) => ( -
- -
- )) + jobs.map((job) => { + const health = computeJobHealth({ + status: job.status, + progress: job.progress, + lastBatchAt: job.lastBatchAt, + startedAt: job.startedAt, + now: tick, + }) + const display = JOB_HEALTH_DISPLAY[health] + const lastActivityMs = job.lastBatchAt ?? job.startedAt + return ( +
+
+ + + {display.label} + + {lastActivityMs !== undefined && ( + + · last activity {formatTimeAgo(lastActivityMs, tick)} + + )} + {typeof job.chunks === 'number' && job.chunks > 0 && ( + + · {job.chunks.toLocaleString()} chunks + + )} +
+ +
+ ) + }) ) : (

No files are currently being processed

)} diff --git a/admin/inertia/components/ActiveModelDownloads.tsx b/admin/inertia/components/ActiveModelDownloads.tsx index c927126..d9640ca 100644 --- a/admin/inertia/components/ActiveModelDownloads.tsx +++ b/admin/inertia/components/ActiveModelDownloads.tsx @@ -1,50 +1,214 @@ +import { useCallback, useRef, useState } from 'react' import useOllamaModelDownloads from '~/hooks/useOllamaModelDownloads' -import HorizontalBarChart from './HorizontalBarChart' import StyledSectionHeader from './StyledSectionHeader' -import { IconAlertTriangle } from '@tabler/icons-react' +import StyledModal from './StyledModal' +import { IconAlertTriangle, IconLoader2, IconX } from '@tabler/icons-react' +import api from '~/lib/api' +import { useModals } from '~/context/ModalContext' +import { formatBytes } from '~/lib/util' interface ActiveModelDownloadsProps { withHeader?: boolean } +function formatSpeed(bytesPerSec: number): string { + if (bytesPerSec <= 0) return '0 B/s' + if (bytesPerSec < 1024) return `${Math.round(bytesPerSec)} B/s` + if (bytesPerSec < 1024 * 1024) return `${(bytesPerSec / 1024).toFixed(1)} KB/s` + return `${(bytesPerSec / (1024 * 1024)).toFixed(1)} MB/s` +} + const ActiveModelDownloads = ({ withHeader = false }: ActiveModelDownloadsProps) => { - const { downloads } = useOllamaModelDownloads() + const { downloads, removeDownload } = useOllamaModelDownloads() + const { openModal, closeAllModals } = useModals() + const [cancellingModels, setCancellingModels] = useState>(new Set()) + + // Track previous downloadedBytes for speed calculation — mirrors the approach in + // ActiveDownloads.tsx so content + model downloads feel identical. + const prevBytesRef = useRef>(new Map()) + const speedRef = useRef>(new Map()) + + const getSpeed = useCallback((model: string, currentBytes?: number): number => { + if (!currentBytes || currentBytes <= 0) return 0 + + const prev = prevBytesRef.current.get(model) + const now = Date.now() + + if (prev && prev.bytes > 0 && currentBytes > prev.bytes) { + const deltaBytes = currentBytes - prev.bytes + const deltaSec = (now - prev.time) / 1000 + if (deltaSec > 0) { + const instantSpeed = deltaBytes / deltaSec + + // Simple moving average (last 5 samples) + const samples = speedRef.current.get(model) || [] + samples.push(instantSpeed) + if (samples.length > 5) samples.shift() + speedRef.current.set(model, samples) + + const avg = samples.reduce((a, b) => a + b, 0) / samples.length + prevBytesRef.current.set(model, { bytes: currentBytes, time: now }) + return avg + } + } + + // Only set initial observation; never advance timestamp when bytes unchanged + if (!prev) { + prevBytesRef.current.set(model, { bytes: currentBytes, time: now }) + } + return speedRef.current.get(model)?.at(-1) || 0 + }, []) + + const runCancel = async (download: { model: string; jobId?: string }) => { + // Defensive guard: stale broadcasts during a hot upgrade may not include jobId. + // Without it we have nothing to call the cancel API with. + if (!download.jobId) return + + setCancellingModels((prev) => new Set(prev).add(download.model)) + try { + await api.cancelDownloadJob(download.jobId) + // Optimistically clear the entry — the Transmit cancelled broadcast usually + // arrives within a second but we don't want to leave the row hanging if it doesn't. + removeDownload(download.model) + // Clean up speed tracking refs for this model + prevBytesRef.current.delete(download.model) + speedRef.current.delete(download.model) + } finally { + setCancellingModels((prev) => { + const next = new Set(prev) + next.delete(download.model) + return next + }) + } + } + + const confirmCancel = (download: { model: string; jobId?: string }) => { + if (!download.jobId) return + + openModal( + { + closeAllModals() + runCancel(download) + }} + onCancel={closeAllModals} + open={true} + confirmText="Cancel Download" + cancelText="Keep Downloading" + > +
+

+ Stop downloading {download.model}? +

+

+ Any data already downloaded will remain on disk. If you re-download + this model later, it will resume from where it left off rather than + starting over. +

+
+
, + 'confirm-cancel-model-download-modal' + ) + } return ( <> {withHeader && }
{downloads && downloads.length > 0 ? ( - downloads.map((download) => ( -
- {download.error ? ( -
- -
-

{download.model}

-

{download.error}

+ downloads.map((download) => { + const isCancelling = cancellingModels.has(download.model) + const canCancel = !!download.jobId && !download.error + const speed = getSpeed(download.model, download.downloadedBytes) + const hasBytes = !!(download.downloadedBytes && download.totalBytes) + + return ( +
+ {download.error ? ( +
+ +
+

+ {download.model} +

+

{download.error}

+
-
- ) : ( - - )} -
- )) + ) : ( +
+ {/* Title + Cancel button row */} +
+
+

+ {download.model} +

+ + ollama + +
+ {canCancel && ( + isCancelling ? ( + + ) : ( + + ) + )} +
+ + {/* Size info */} +
+ + {hasBytes + ? `${formatBytes(download.downloadedBytes!, 1)} / ${formatBytes(download.totalBytes!, 1)}` + : `${download.percent.toFixed(1)}% / 100%`} + +
+ + {/* Progress bar */} +
+
+
+
+
15 + ? 'left-2 text-white drop-shadow-md' + : 'right-2 text-desert-green' + }`} + > + {Math.round(download.percent)}% +
+
+ + {/* Status indicator */} +
+
+ + Downloading...{speed > 0 ? ` ${formatSpeed(speed)}` : ''} + +
+
+ )} +
+ ) + }) ) : (

No active model downloads

)} diff --git a/admin/inertia/components/AppUrlModal.tsx b/admin/inertia/components/AppUrlModal.tsx new file mode 100644 index 0000000..760a259 --- /dev/null +++ b/admin/inertia/components/AppUrlModal.tsx @@ -0,0 +1,113 @@ +import { useEffect, useState } from 'react' +import StyledModal from './StyledModal' +import StyledButton from './StyledButton' +import Input from './inputs/Input' +import { getServiceLink, normalizeCustomUrl } from '~/lib/navigation' +import { ServiceSlim } from '../../types/services' +import api from '~/lib/api' + +interface AppUrlModalProps { + open: boolean + /** The app whose launch URL is being configured. Null while closed. */ + service: ServiceSlim | null + onClose: () => void + /** Called after a successful save/clear so the parent can refresh the link. */ + onSaved: () => void + showError: (msg: string) => void +} + +/** + * Set or clear an app's custom launch URL — used when the instance sits behind a reverse proxy or + * local DNS (e.g. https://jellyfin.myhomelab.net). Leaving the field empty clears the override and + * reverts to the default host + port link. Works for both curated and custom apps. + */ +export default function AppUrlModal({ open, service, onClose, onSaved, showError }: AppUrlModalProps) { + const [value, setValue] = useState('') + const [submitting, setSubmitting] = useState(false) + + // Prefill from the app's stored override each time the modal opens for a service. + useEffect(() => { + if (open && service) setValue(service.custom_url ?? '') + }, [open, service]) + + const trimmed = value.trim() + const normalized = normalizeCustomUrl(value) + const isInvalid = trimmed.length > 0 && !normalized + // What clicking "Open" will actually resolve to once saved. + const previewLink = service ? getServiceLink(service.ui_location || '', value) : '' + const usingDefault = !normalized + + async function handleSave() { + if (!service || isInvalid) return + setSubmitting(true) + // Empty clears the override; the backend re-normalizes/validates the value too. + const result = await api.setServiceCustomUrl(service.service_name, trimmed ? trimmed : null) + setSubmitting(false) + if (!result?.success) { + showError('Failed to save custom URL.') + return + } + onSaved() + } + + const appName = service?.friendly_name || service?.service_name || 'this app' + + return ( + +
+

+ Set where {appName} opens from — useful + if you reach it through a reverse proxy or local DNS. Leave this empty to use the default + address ({service?.ui_location ? `host + port ${service.ui_location}` : 'host + port'}). +

+ +
+
+ setValue(e.target.value)} + error={isInvalid} + className="flex-1 min-w-0" + /> + {value.length > 0 && ( + setValue('')} className="mb-1.5"> + Clear + + )} +
+ {isInvalid ? ( +

+ Enter a valid http(s) address (e.g. https://jellyfin.myhomelab.net). A bare host like + "jellyfin.lan" becomes http://jellyfin.lan. +

+ ) : ( + <> +

+ No scheme? We'll default to http://.

+

+ Opens as:{' '} + {previewLink} + {usingDefault ? ' (default)' : ''} +

+ + )} +
+
+
+ ) +} diff --git a/admin/inertia/components/CategoryCard.tsx b/admin/inertia/components/CategoryCard.tsx index ae60b4c..6b63b4d 100644 --- a/admin/inertia/components/CategoryCard.tsx +++ b/admin/inertia/components/CategoryCard.tsx @@ -2,7 +2,7 @@ import { formatBytes } from '~/lib/util' import DynamicIcon, { DynamicIconName } from './DynamicIcon' import type { CategoryWithStatus, SpecTier } from '../../types/collections' import classNames from 'classnames' -import { IconChevronRight, IconCircleCheck } from '@tabler/icons-react' +import { IconChevronRight, IconCircleCheck, IconLoader2 } from '@tabler/icons-react' export interface CategoryCardProps { category: CategoryWithStatus @@ -29,14 +29,34 @@ const CategoryCard: React.FC = ({ category, selectedTier, onC const minSize = getTierTotalSize(category.tiers[0], category.tiers) const maxSize = getTierTotalSize(category.tiers[category.tiers.length - 1], category.tiers) - // Determine which tier to highlight: selectedTier (wizard) > installedTierSlug (persisted) - const highlightedTierSlug = selectedTier?.slug || category.installedTierSlug + // Priority order for the prominent corner badge + lime border: + // 1. selectedTier — in-session wizard pick (highest priority, reflects + // what the user is editing right now) + // 2. downloadingTierSlug — backend-derived from in-flight downloads, so + // the card shows the user's intent immediately after Submit, before + // any single file has finished downloading + // 3. installedTierSlug — fully on disk + const downloadingTier = !selectedTier && category.downloadingTierSlug + ? category.tiers.find((t) => t.slug === category.downloadingTierSlug) + : null + const installedTier = !selectedTier && !downloadingTier && category.installedTierSlug + ? category.tiers.find((t) => t.slug === category.installedTierSlug) + : null + const badgeTier = selectedTier || downloadingTier || installedTier + const badgeStatus: 'selected' | 'downloading' | 'installed' | null = selectedTier + ? 'selected' + : downloadingTier + ? 'downloading' + : installedTier + ? 'installed' + : null + const highlightedTierSlug = badgeTier?.slug return (
onClick?.(category)} > @@ -46,10 +66,17 @@ const CategoryCard: React.FC = ({ category, selectedTier, onC

{category.name}

- {selectedTier ? ( + {badgeTier ? (
- - {selectedTier.name} + {badgeStatus === 'downloading' ? ( + + ) : ( + + )} + + {badgeTier.name} + {badgeStatus === 'downloading' && ' (downloading)'} +
) : ( diff --git a/admin/inertia/components/CountryPickerModal.tsx b/admin/inertia/components/CountryPickerModal.tsx new file mode 100644 index 0000000..1b29334 --- /dev/null +++ b/admin/inertia/components/CountryPickerModal.tsx @@ -0,0 +1,414 @@ +import { useEffect, useMemo, useRef, useState } from 'react' +import { useQuery } from '@tanstack/react-query' +import { IconCheck, IconSearch, IconX } from '@tabler/icons-react' +import StyledModal, { StyledModalProps } from './StyledModal' +import LoadingSpinner from './LoadingSpinner' +import api from '~/lib/api' +import { formatBytes } from '~/lib/util' +import classNames from '~/lib/classNames' +import { + EXTRACT_DEFAULT_MAX_ZOOM, + EXTRACT_MAX_ZOOM, + EXTRACT_MIN_ZOOM, +} from '../../constants/map_regions' +import type { + Country, + CountryCode, + CountryGroup, + MapExtractPreflight, +} from '../../types/maps' + +export type CountryPickerModalProps = Omit< + StyledModalProps, + | 'onConfirm' + | 'open' + | 'confirmText' + | 'cancelText' + | 'confirmVariant' + | 'children' + | 'title' + | 'large' +> & { + onDownloadStart?: () => void + /** Filenames of pmtiles already on disk; used to badge already-installed countries. */ + installedFilenames?: string[] +} + +// Single-country extracts use the slug `{iso2 lowercase}_{dateSlug}_z{maxzoom}.pmtiles`, +// matching MapService.buildRegionSlug (which lowercases the alpha-2 country code). +// dateSlug comes from the upstream pmtiles key with `.pmtiles` stripped — currently +// YYYYMMDD but we accept any digits/dashes. Group / custom filenames don't reverse-map +// to country codes, so we skip them here. +const SINGLE_COUNTRY_FILENAME_RE = /^([a-z]{2})_[\w-]+_z\d+\.pmtiles$/ + +const CountryPickerModal: React.FC = ({ + onDownloadStart, + installedFilenames = [], + ...modalProps +}) => { + const [selected, setSelected] = useState>(new Set()) + const [search, setSearch] = useState('') + const [maxzoom, setMaxzoom] = useState(EXTRACT_DEFAULT_MAX_ZOOM) + const [preflight, setPreflight] = useState(null) + const [loading, setLoading] = useState(false) + const [downloading, setDownloading] = useState(false) + const [errorMessage, setErrorMessage] = useState(null) + const preflightRequestIdRef = useRef(0) + + const { data: countries = [], isLoading: countriesLoading } = useQuery({ + queryKey: ['maps-countries'], + queryFn: () => api.listCountries(), + staleTime: Infinity, + }) + + const { data: groups = [] } = useQuery({ + queryKey: ['maps-country-groups'], + queryFn: () => api.listCountryGroups(), + staleTime: Infinity, + }) + + const grouped = useMemo(() => { + const q = search.trim().toLowerCase() + const filtered = q + ? countries.filter( + (c) => c.name.toLowerCase().includes(q) || c.code.toLowerCase().includes(q) + ) + : countries + + const buckets: Record = {} + for (const country of filtered) { + if (!buckets[country.continent]) buckets[country.continent] = [] + buckets[country.continent].push(country) + } + return Object.entries(buckets).sort(([a], [b]) => a.localeCompare(b)) + }, [countries, search]) + + const selectedCountries = useMemo( + () => countries.filter((c) => selected.has(c.code)), + [countries, selected] + ) + + const installedCountrySet = useMemo(() => { + const set = new Set() + for (const filename of installedFilenames) { + const match = SINGLE_COUNTRY_FILENAME_RE.exec(filename) + if (match) set.add(match[1].toUpperCase() as CountryCode) + } + return set + }, [installedFilenames]) + + function toggleCountry(code: CountryCode) { + setSelected((prev) => { + const next = new Set(prev) + if (next.has(code)) next.delete(code) + else next.add(code) + return next + }) + } + + function toggleGroup(group: CountryGroup) { + setSelected((prev) => { + const next = new Set(prev) + const allIn = group.countries.every((c) => next.has(c)) + if (allIn) { + group.countries.forEach((c) => next.delete(c)) + } else { + group.countries.forEach((c) => next.add(c)) + } + return next + }) + } + + function clearAll() { + setSelected(new Set()) + } + + // Auto-refresh the preflight whenever selection or maxzoom changes. Debounced + // so rapid multi-select clicks and slider drags collapse into a single CDN + // round-trip. Loading state only flips after the debounce expires so the UI + // stays interactive during the wait. Stale-safe via requestId so an earlier + // slow response can't clobber a later one. + useEffect(() => { + if (selected.size === 0) { + setPreflight(null) + setErrorMessage(null) + setLoading(false) + preflightRequestIdRef.current++ + return + } + + setErrorMessage(null) + const timer = setTimeout(async () => { + const requestId = ++preflightRequestIdRef.current + setLoading(true) + try { + const res = await api.extractMapPreflight({ + countries: [...selected], + maxzoom, + }) + if (requestId !== preflightRequestIdRef.current) return + if (!res) throw new Error('Preflight returned no data') + setPreflight(res) + } catch (err: any) { + if (requestId !== preflightRequestIdRef.current) return + console.error('Preflight failed:', err) + setErrorMessage(err?.message ?? 'Estimate failed') + } finally { + if (requestId === preflightRequestIdRef.current) setLoading(false) + } + }, 1500) + + return () => clearTimeout(timer) + }, [selected, maxzoom]) + + async function startDownload() { + if (selected.size === 0) { + setErrorMessage('Pick at least one country before downloading.') + return + } + if (loading || !preflight) { + setErrorMessage('Still estimating size — hold on a moment.') + return + } + try { + setDownloading(true) + setErrorMessage(null) + await api.extractMapRegion({ + countries: [...selected], + maxzoom, + estimatedBytes: preflight?.bytes, + }) + onDownloadStart?.() + } catch (err: any) { + console.error('Extract dispatch failed:', err) + setErrorMessage(err?.message ?? 'Download failed') + } finally { + setDownloading(false) + } + } + + return ( + +
+
+
+ + setSearch(e.target.value)} + placeholder={`Search ${countries.length} countries...`} + className="w-full pl-9 pr-3 py-2 rounded-md border border-border-default bg-surface-primary text-text-primary text-sm focus:outline-none focus:ring-2 focus:ring-desert-green" + /> +
+ {selected.size > 0 && ( + + )} +
+ + {groups.length > 0 && ( +
+

+ Quick picks +

+
+ {groups.map((group) => { + const allIn = + group.countries.length > 0 && + group.countries.every((c) => selected.has(c)) + return ( + + ) + })} +
+
+ )} + +
+ {countriesLoading ? ( +
+ +
+ ) : grouped.length === 0 ? ( +

+ No countries match "{search}". +

+ ) : ( + grouped.map(([continent, list]) => ( +
+
+ {continent} +
+
    + {list.map((country) => { + const isSelected = selected.has(country.code) + const isInstalled = installedCountrySet.has(country.code) + return ( +
  • + +
  • + ) + })} +
+
+ )) + )} +
+ + {selectedCountries.length > 0 && ( +
+

+ {selectedCountries.length} selected +

+
+ {selectedCountries.map((country) => ( + + {country.name} + + + ))} +
+
+ )} + +
+ + setMaxzoom(parseInt(e.target.value, 10))} + className="w-full accent-desert-green" + disabled={downloading} + /> +
+ z{EXTRACT_MIN_ZOOM} (world) + z{EXTRACT_MAX_ZOOM} (street) +
+

+ Lower zoom = smaller file, less detail. Zoom 15 shows individual streets; + zoom 10 shows city-level detail. +

+
+ +
+ 0} + /> +
+ +
+
+ ) +} + +type PreflightStatusProps = { + errorMessage: string | null + loading: boolean + preflight: MapExtractPreflight | null + hasSelection: boolean +} + +function PreflightStatus({ errorMessage, loading, preflight, hasSelection }: PreflightStatusProps) { + if (errorMessage) { + return

{errorMessage}

+ } + if (loading) { + return

Estimating size…

+ } + if (preflight) { + return ( +

+ {preflight.tiles.toLocaleString()} tiles, ~{formatBytes(preflight.bytes, 1)}{' '} + (source build {preflight.source.date}) +

+ ) + } + if (!hasSelection) { + return

Pick at least one country to estimate size.

+ } + return

Estimating size…

+} + +export default CountryPickerModal diff --git a/admin/inertia/components/CustomAppModal.tsx b/admin/inertia/components/CustomAppModal.tsx new file mode 100644 index 0000000..77ada8f --- /dev/null +++ b/admin/inertia/components/CustomAppModal.tsx @@ -0,0 +1,540 @@ +import { useEffect, useState } from 'react' +import StyledModal from './StyledModal' +import StyledButton from './StyledButton' +import Alert from './Alert' +import api from '~/lib/api' +import Input from './inputs/Input' +import Select from './inputs/Select' +import DynamicIcon, { DynamicIconName } from './DynamicIcon' +import { IconTrash } from '@tabler/icons-react' + +interface PortMapping { + container: string + host: string +} + +interface VolumeMapping { + host_path: string + container_path: string +} + +interface EnvVar { + value: string +} + +export interface CustomAppInitial { + service_name: string + friendly_name: string | null + image: string + category: string + icon: string + ports: Array<{ container: number; host: number }> + volumes: Array<{ host_path: string; container_path: string }> + env: string[] + memory_mb?: number + cpus?: number +} + +interface CustomAppModalProps { + open: boolean + onClose: () => void + onCreated: (serviceName: string) => void + showError: (msg: string) => void + /** 'edit' reconfigures an existing custom app (prefilled from `initial`); defaults to 'create'. */ + mode?: 'create' | 'edit' + initial?: CustomAppInitial | null +} + +const CATEGORY_OPTIONS = [ + { value: 'custom', label: 'Custom' }, + { value: 'productivity', label: 'Productivity' }, + { value: 'media', label: 'Media' }, + { value: 'security', label: 'Security' }, + { value: 'networking', label: 'Networking' }, + { value: 'utility', label: 'Utility' }, + { value: 'ai', label: 'AI' }, + { value: 'education', label: 'Education' }, +] + +// Curated subset of the DynamicIcon map suitable for custom apps. +const ICON_OPTIONS = [ + { value: 'IconBrandDocker', label: 'Docker (default)' }, + { value: 'IconBox', label: 'Box' }, + { value: 'IconServer', label: 'Server' }, + { value: 'IconDatabase', label: 'Database' }, + { value: 'IconCode', label: 'Code' }, + { value: 'IconTool', label: 'Tool' }, + { value: 'IconWorld', label: 'Web' }, + { value: 'IconShieldLock', label: 'Security' }, + { value: 'IconMovie', label: 'Media' }, + { value: 'IconBook', label: 'Book' }, + { value: 'IconNotes', label: 'Notes' }, + { value: 'IconCpu', label: 'Compute' }, + { value: 'IconRobot', label: 'AI / Bot' }, + { value: 'IconWifi', label: 'Network' }, + { value: 'IconHome', label: 'Home' }, +] + +export default function CustomAppModal({ + open, + onClose, + onCreated, + showError, + mode = 'create', + initial = null, +}: CustomAppModalProps) { + const isEdit = mode === 'edit' + const [friendlyName, setFriendlyName] = useState('') + const [image, setImage] = useState('') + const [category, setCategory] = useState('custom') + const [icon, setIcon] = useState('IconBrandDocker') + const [ports, setPorts] = useState([{ container: '', host: '' }]) + const [volumes, setVolumes] = useState([]) + const [envVars, setEnvVars] = useState([]) + const [memoryMb, setMemoryMb] = useState('') + const [cpus, setCpus] = useState('') + const [submitting, setSubmitting] = useState(false) + const [portConflicts, setPortConflicts] = useState>([]) + const [resourceWarnings, setResourceWarnings] = useState([]) + const [blocked, setBlocked] = useState([]) + const [forceInstall, setForceInstall] = useState(false) + const [checkingPreflight, setCheckingPreflight] = useState(false) + const [suggestedPort, setSuggestedPort] = useState(null) + + // On open: prefill from the existing app (edit) or fetch a suggested port (create). + useEffect(() => { + if (!open) return + if (isEdit && initial) { + setFriendlyName(initial.friendly_name ?? '') + setImage(initial.image) + setCategory(initial.category) + setIcon(initial.icon || 'IconBrandDocker') + setPorts( + initial.ports.length + ? initial.ports.map((p) => ({ container: String(p.container), host: String(p.host) })) + : [{ container: '', host: '' }] + ) + setVolumes(initial.volumes) + setEnvVars(initial.env.map((v) => ({ value: v }))) + setMemoryMb(initial.memory_mb != null ? String(initial.memory_mb) : '') + setCpus(initial.cpus != null ? String(initial.cpus) : '') + return + } + api.suggestCustomPort().then((res) => { + if (res?.port) { + setSuggestedPort(res.port) + setPorts([{ container: '', host: String(res.port) }]) + } + }) + }, [open, isEdit, initial]) + + // Live preflight: whenever ports, volumes or the image change, debounce a check for port + // conflicts, resource/guard warnings and hard blocks so the user gets feedback before submitting. + useEffect(() => { + if (!open) return + const validPorts = ports + .map((p) => parseInt(p.host, 10)) + .filter((p) => !isNaN(p)) + const validVolumes = volumes.filter((v) => v.host_path && v.container_path) + + if (validPorts.length === 0 && validVolumes.length === 0 && !image.trim()) { + setPortConflicts([]) + setResourceWarnings([]) + setBlocked([]) + setCheckingPreflight(false) + return + } + + setCheckingPreflight(true) + const handle = setTimeout(async () => { + const res = await api.preflightCustomApp({ + image: image.trim() || undefined, + ports: validPorts.length ? validPorts : undefined, + volumes: validVolumes.length ? validVolumes : undefined, + exclude_service: isEdit && initial ? initial.service_name : undefined, + }) + if (res) { + setPortConflicts(res.portConflicts ?? []) + setResourceWarnings(res.resourceWarnings ?? []) + setBlocked(res.blocked ?? []) + } + setCheckingPreflight(false) + }, 400) + + return () => clearTimeout(handle) + }, [open, ports, volumes, image]) + + function resetForm() { + setFriendlyName('') + setImage('') + setCategory('custom') + setIcon('IconBrandDocker') + setPorts([{ container: '', host: '' }]) + setVolumes([]) + setEnvVars([]) + setMemoryMb('') + setCpus('') + setPortConflicts([]) + setResourceWarnings([]) + setBlocked([]) + setForceInstall(false) + setSuggestedPort(null) + } + + function handleClose() { + resetForm() + onClose() + } + + // ── Port row helpers ────────────────────────────────────────────────────── + function updatePort(idx: number, field: keyof PortMapping, value: string) { + setPorts((prev) => prev.map((p, i) => (i === idx ? { ...p, [field]: value } : p))) + } + function addPort() { + const nextHost = suggestedPort ? suggestedPort + ports.length * 10 : 8600 + ports.length * 10 + setPorts((prev) => [...prev, { container: '', host: String(nextHost) }]) + } + function removePort(idx: number) { + setPorts((prev) => prev.filter((_, i) => i !== idx)) + } + + // ── Volume row helpers ──────────────────────────────────────────────────── + function updateVolume(idx: number, field: keyof VolumeMapping, value: string) { + setVolumes((prev) => prev.map((v, i) => (i === idx ? { ...v, [field]: value } : v))) + } + function addVolume() { + setVolumes((prev) => [...prev, { host_path: '', container_path: '' }]) + } + function removeVolume(idx: number) { + setVolumes((prev) => prev.filter((_, i) => i !== idx)) + } + + // ── Env var helpers ─────────────────────────────────────────────────────── + function updateEnv(idx: number, value: string) { + setEnvVars((prev) => prev.map((e, i) => (i === idx ? { value } : e))) + } + function addEnv() { + setEnvVars((prev) => [...prev, { value: '' }]) + } + function removeEnv(idx: number) { + setEnvVars((prev) => prev.filter((_, i) => i !== idx)) + } + + // ── Submit ──────────────────────────────────────────────────────────────── + async function handleSubmit() { + if (!friendlyName.trim() || !image.trim()) { + showError('Name and image are required.') + return + } + if (blocked.length > 0) { + showError('Resolve the blocked issues before installing.') + return + } + + const validPorts = ports + .filter((p) => p.container && p.host) + .map((p) => ({ container: parseInt(p.container, 10), host: parseInt(p.host, 10) })) + .filter((p) => !isNaN(p.container) && !isNaN(p.host)) + + const validVolumes = volumes.filter((v) => v.host_path && v.container_path) + const validEnv = envVars.map((e) => e.value).filter(Boolean) + const parsedMemory = parseInt(memoryMb, 10) + const parsedCpus = parseFloat(cpus) + + setSubmitting(true) + try { + const common = { + friendly_name: friendlyName.trim(), + image: image.trim(), + ports: validPorts.length ? validPorts : undefined, + volumes: validVolumes.length ? validVolumes : undefined, + env: validEnv.length ? validEnv : undefined, + category, + icon, + memory_mb: !isNaN(parsedMemory) ? parsedMemory : undefined, + cpus: !isNaN(parsedCpus) ? parsedCpus : undefined, + // The user has already acknowledged any conflicts via the "install anyway" checkbox. + force: forceInstall, + } + const result = + isEdit && initial + ? await api.updateCustomApp({ service_name: initial.service_name, ...common }) + : await api.createCustomApp(common) + + if (result?.success && result.service_name) { + resetForm() + onCreated(result.service_name) + } else { + // Check if it's a port conflict error — show warnings and let user force + if (result?.message?.toLowerCase().includes('port') || result?.message?.toLowerCase().includes('conflict')) { + showError(result.message) + } else { + showError(result?.message || 'Failed to create custom app.') + } + } + } catch (err: any) { + showError(err?.message || 'Unexpected error creating custom app.') + } finally { + setSubmitting(false) + } + } + + const hasWarnings = portConflicts.length > 0 || resourceWarnings.length > 0 + const hasBlocks = blocked.length > 0 + const canSubmit = + friendlyName.trim() && image.trim() && !hasBlocks && (!hasWarnings || forceInstall) + + return ( + +
+ {/* Image + Name */} +
+ setImage(e.target.value)} + required + /> + setFriendlyName(e.target.value)} + required + /> +
+ + {/* Category + Icon */} +
+ setIcon(newVal)} + options={ICON_OPTIONS} + className="flex-1 min-w-0" + /> +
+ +
+
+
+ + {/* Port Mappings */} +
+
+ + Add Port +
+ {ports.length === 0 && ( +

No port mappings — the app won't be accessible from a browser.

+ )} +
+ {ports.map((p, idx) => ( +
+ updatePort(idx, 'container', e.target.value)} + className='w-full' + /> + + updatePort(idx, 'host', e.target.value)} + className='w-full' + /> + +
+ ))} +
+

Host ports should be in the 8600+ range. Custom apps get ports starting at {suggestedPort ?? 8600}.

+ {checkingPreflight && ( +

Checking port availability…

+ )} +
+ + {/* Volume Mappings */} +
+
+ + Add Volume +
+ {volumes.length === 0 && ( +

No volumes — data won't persist across restarts.

+ )} +
+ {volumes.map((v, idx) => ( +
+ updateVolume(idx, 'host_path', e.target.value)} + className='w-full' + /> + : + updateVolume(idx, 'container_path', e.target.value)} + className='w-full' + /> + +
+ ))} +
+
+ + {/* Environment Variables */} +
+
+ + Add Variable +
+
+ {envVars.map((e, idx) => ( +
+ updateEnv(idx, ev.target.value)} + className='w-full font-mono' + /> + +
+ ))} + {envVars.length === 0 && ( +

No environment variables provided.

+ )} +
+
+ + {/* Advanced: resource limits */} +
+ +
+ setMemoryMb(e.target.value)} + className='w-full' + /> + setCpus(e.target.value)} + className='w-full' + /> +
+

Caps prevent a runaway container from starving the host. Leave blank to use the defaults (1024 MB / 1 CPU).

+
+ + {/* Hard blocks — must be resolved before installing */} + {hasBlocks && ( +
+ {blocked.map((b, i) => ( + + ))} +
+ )} + + {/* Warnings */} + {hasWarnings && ( +
+ {portConflicts.map((c) => ( + + ))} + {resourceWarnings.map((w, i) => ( + + ))} + +
+ )} + +

+ Containers are created with --restart=unless-stopped. Data is not persisted unless you add volume mounts above. +

+
+ + ) +} diff --git a/admin/inertia/components/KbGuardrailModal.tsx b/admin/inertia/components/KbGuardrailModal.tsx new file mode 100644 index 0000000..498cc4c --- /dev/null +++ b/admin/inertia/components/KbGuardrailModal.tsx @@ -0,0 +1,109 @@ +import { Fragment } from 'react' +import { Dialog, Transition } from '@headlessui/react' +import { IconAlertTriangle, IconX } from '@tabler/icons-react' +import { formatBytes } from '~/lib/util' +import StyledButton from './StyledButton' +import type { GuardrailVerdict } from '~/lib/kb_guardrail' + +/** + * One-time confirmation modal for bulk indexing actions that trip the + * disk-usage thresholds in `lib/kb_guardrail.ts`. The caller (e.g. + * TierSelectionModal) decides whether to show the modal by evaluating the + * guardrail BEFORE submit; this component just presents the verdict and + * passes the user's choice back via `onConfirm` / `onCancel`. + */ +interface KbGuardrailModalProps { + isOpen: boolean + verdict: GuardrailVerdict + onConfirm: () => void + onCancel: () => void +} + +export default function KbGuardrailModal({ + isOpen, + verdict, + onConfirm, + onCancel, +}: KbGuardrailModalProps) { + // The primary number to surface — every triggered reason carries the same + // estimateBytes, so just grab the first one. `0` is a defensive fallback + // for the (impossible-by-construction) "open with empty verdict" case. + const estimateBytes = verdict.reasons[0]?.estimateBytes ?? 0 + const freeReason = verdict.reasons.find((r) => r.kind === 'over_free_disk') + + return ( + + + +
+ + +
+
+ + +
+
+ + + Confirm large AI indexing operation + +
+ +
+ +
+

+ Indexing this batch for the AI Assistant will use approximately{' '} + {formatBytes(estimateBytes, 1)} of disk space for embeddings, on top of the raw downloads. +

+ + {freeReason && ( +

+ That's more than 10% of your remaining free disk space ({formatBytes(freeReason.freeBytes, 1)} free). Embedding can take several hours and is hard to interrupt cleanly once started. +

+ )} + +

+ If you'd rather review per-item before indexing, cancel here and switch your Auto-index setting to Manual from the Knowledge Base panel. +

+
+ +
+ + Cancel + + + Proceed anyway + +
+
+
+
+
+
+
+ ) +} diff --git a/admin/inertia/components/LoadingSpinner.tsx b/admin/inertia/components/LoadingSpinner.tsx index 493e9b0..8744ac4 100644 --- a/admin/inertia/components/LoadingSpinner.tsx +++ b/admin/inertia/components/LoadingSpinner.tsx @@ -8,7 +8,7 @@ interface LoadingSpinnerProps { const LoadingSpinner: React.FC = ({ text, - fullscreen = true, + fullscreen = false, iconOnly = false, light = false, className, @@ -29,9 +29,12 @@ const LoadingSpinner: React.FC = ({ } return ( -
-
-
{!iconOnly && {text || 'Loading'}}
+
+
+
+ {!iconOnly &&
{text || 'Loading'}
}
) diff --git a/admin/inertia/components/ServiceLogsModal.tsx b/admin/inertia/components/ServiceLogsModal.tsx new file mode 100644 index 0000000..12cfdaf --- /dev/null +++ b/admin/inertia/components/ServiceLogsModal.tsx @@ -0,0 +1,52 @@ +import { useEffect, useState } from 'react' +import StyledModal from './StyledModal' +import api from '~/lib/api' + +interface ServiceLogsModalProps { + serviceName: string + friendlyName: string + open: boolean + onClose: () => void +} + +/** Shows the tail of a service container's logs with a manual refresh. */ +export default function ServiceLogsModal({ + serviceName, + friendlyName, + open, + onClose, +}: ServiceLogsModalProps) { + const [logs, setLogs] = useState('') + const [loading, setLoading] = useState(false) + + async function load() { + setLoading(true) + const res = await api.getServiceLogs(serviceName, 500) + setLogs(res?.success ? res.logs || '' : 'Unable to load logs for this container.') + setLoading(false) + } + + useEffect(() => { + if (open) load() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [open, serviceName]) + + return ( + +
+        {logs || (loading ? 'Loading…' : 'No log output.')}
+      
+
+ ) +} diff --git a/admin/inertia/components/ServiceStatsModal.tsx b/admin/inertia/components/ServiceStatsModal.tsx new file mode 100644 index 0000000..e61b18b --- /dev/null +++ b/admin/inertia/components/ServiceStatsModal.tsx @@ -0,0 +1,102 @@ +import { useEffect, useState } from 'react' +import StyledModal from './StyledModal' +import { formatBytes } from '~/lib/util' +import api from '~/lib/api' + +interface Stats { + cpuPercent: number + memUsageBytes: number + memLimitBytes: number + memPercent: number +} + +interface ServiceStatsModalProps { + serviceName: string + friendlyName: string + open: boolean + onClose: () => void +} + +function Bar({ percent, label, value }: { percent: number; label: string; value: string }) { + const clamped = Math.min(100, Math.max(0, percent)) + return ( +
+
+ {label} + {value} +
+
+
90 ? 'bg-desert-red' : clamped > 70 ? 'bg-desert-orange' : 'bg-desert-green' + }`} + style={{ width: `${clamped}%` }} + /> +
+
+ ) +} + +/** Polls and displays live CPU/memory usage for a running service container. */ +export default function ServiceStatsModal({ + serviceName, + friendlyName, + open, + onClose, +}: ServiceStatsModalProps) { + const [stats, setStats] = useState(null) + const [running, setRunning] = useState(true) + const [loading, setLoading] = useState(false) + + useEffect(() => { + if (!open) return + let cancelled = false + + async function poll() { + const res = await api.getServiceStats(serviceName) + if (cancelled || !res) return + setRunning(res.running) + setStats(res.stats) + setLoading(false) + } + + setLoading(true) + poll() + const id = setInterval(poll, 2000) + return () => { + cancelled = true + clearInterval(id) + } + }, [open, serviceName]) + + return ( + +
+ {!running ? ( +

+ This app is not running. Start it to see live resource usage. +

+ ) : !stats ? ( +

+ {loading ? 'Loading…' : 'No stats available.'} +

+ ) : ( + <> + + +

Updates every 2 seconds.

+ + )} +
+
+ ) +} diff --git a/admin/inertia/components/StyledModal.tsx b/admin/inertia/components/StyledModal.tsx index 0e0d784..9634590 100644 --- a/admin/inertia/components/StyledModal.tsx +++ b/admin/inertia/components/StyledModal.tsx @@ -13,6 +13,7 @@ export type StyledModalProps = { confirmIcon?: StyledButtonProps['icon'] confirmVariant?: StyledButtonProps['variant'] confirmLoading?: boolean + confirmDisabled?: boolean open: boolean onCancel?: () => void onConfirm?: () => void @@ -33,6 +34,7 @@ const StyledModal: React.FC = ({ confirmIcon, confirmVariant = 'action', confirmLoading = false, + confirmDisabled = false, onCancel, onConfirm, icon, @@ -94,6 +96,7 @@ const StyledModal: React.FC = ({ }} icon={confirmIcon} loading={confirmLoading} + disabled={confirmDisabled} > {confirmText} diff --git a/admin/inertia/components/TierSelectionModal.tsx b/admin/inertia/components/TierSelectionModal.tsx index 0a67169..255adb3 100644 --- a/admin/inertia/components/TierSelectionModal.tsx +++ b/admin/inertia/components/TierSelectionModal.tsx @@ -1,12 +1,28 @@ -import { Fragment, useState, useEffect } from 'react' +import { Fragment, useState, useEffect, useMemo } from 'react' import { Dialog, Transition } from '@headlessui/react' import { IconX, IconCheck, IconInfoCircle } from '@tabler/icons-react' +import { useQuery } from '@tanstack/react-query' import type { CategoryWithStatus, SpecTier, SpecResource } from '../../types/collections' import { resolveTierResources } from '~/lib/collections' import { formatBytes } from '~/lib/util' +import api from '~/lib/api' import classNames from 'classnames' import DynamicIcon, { DynamicIconName } from './DynamicIcon' import StyledButton from './StyledButton' +import KbGuardrailModal from './KbGuardrailModal' +import { evaluateGuardrail, type GuardrailVerdict } from '~/lib/kb_guardrail' +import { useSystemInfo } from '~/hooks/useSystemInfo' +import { getPrimaryDiskInfo } from '~/hooks/useDiskDisplayData' + +/** + * Filename for the embed-estimate registry lookup. Strips the URL path so + * patterns like `wikipedia_en_simple_` continue to match upstream filenames + * regardless of mirror domain. + */ +function resourceFilename(resource: SpecResource): string { + const last = resource.url.split('/').pop() + return last && last.length > 0 ? last : resource.id +} interface TierSelectionModalProps { isOpen: boolean @@ -33,13 +49,70 @@ const TierSelectionModal: React.FC = ({ } }, [isOpen, category, selectedTierSlug]) - if (!category) return null - - // Get all resources for a tier (including inherited resources) + // Get all resources for a tier (including inherited resources). Defined as a + // hook-safe closure (always callable, returns [] when no category) so the + // memo below can depend on `category` without breaking hook order. const getAllResourcesForTier = (tier: SpecTier): SpecResource[] => { + if (!category) return [] return resolveTierResources(tier, category.tiers) } + // Pre-compute the selected tier's resources outside the JSX so hooks below + // don't re-run on every render. Empty array when no selection. + const selectedTierResources = useMemo(() => { + if (!category || !localSelectedSlug) return [] + const tier = category.tiers.find((t) => t.slug === localSelectedSlug) + return tier ? resolveTierResources(tier, category.tiers) : [] + }, [category, localSelectedSlug]) + + const embedEstimateRequest = useMemo( + () => + selectedTierResources.map((r) => ({ + filename: resourceFilename(r), + sizeBytes: Math.round(r.size_mb * 1024 * 1024), + })), + [selectedTierResources] + ) + + const { data: embedEstimate, isLoading: isEstimating } = useQuery({ + queryKey: ['embedEstimateBatch', embedEstimateRequest], + queryFn: () => api.estimateEmbeddingBatch(embedEstimateRequest), + enabled: embedEstimateRequest.length > 0, + staleTime: 5 * 60_000, + }) + + const { data: ingestPolicySetting } = useQuery({ + queryKey: ['ingestPolicy'], + queryFn: () => api.getSetting('rag.defaultIngestPolicy'), + }) + + // System info for the disk-free side of the guardrail. Shared queryKey with + // the home / easy-setup pages so we don't refetch when the user already has + // a fresh copy in cache from a sibling component. + const { data: systemInfo } = useSystemInfo({ enabled: true }) + + // Open state for the guardrail modal — separate from the tier modal so the + // user sees the warning as an overlay without losing their tier selection + // underneath. Cancel returns to the tier modal as-is; Proceed closes both + // and runs the original onSelectTier path. + const [guardrailVerdict, setGuardrailVerdict] = useState(null) + + // Compute disk-free bytes from system info; 0 means "unknown", which the + // guardrail helper treats as "skip the relative-disk check". + // Must be declared before the `!category` early return so the hook count + // stays constant across renders (category transitions null → non-null when + // the user opens the modal). + const freeBytes = useMemo(() => { + const primary = getPrimaryDiskInfo(systemInfo?.disk, systemInfo?.fsSize) + if (!primary) return 0 + return Math.max(0, primary.totalSize - primary.totalUsed) + }, [systemInfo]) + + const ingestPolicy: 'Always' | 'Manual' = + ingestPolicySetting?.value === 'Manual' ? 'Manual' : 'Always' + + if (!category) return null + const getTierTotalSize = (tier: SpecTier): number => { return getAllResourcesForTier(tier).reduce((acc, r) => acc + r.size_mb * 1024 * 1024, 0) } @@ -53,17 +126,43 @@ const TierSelectionModal: React.FC = ({ } } - const handleSubmit = () => { - if (!localSelectedSlug) return - - const selectedTier = category.tiers.find(t => t.slug === localSelectedSlug) + /** + * Runs the original onSelectTier-then-onClose flow. Pulled out of + * handleSubmit so the guardrail modal's confirm path can call it after + * the user has consented to the large operation. + */ + const finalizeSubmit = () => { + if (!localSelectedSlug || !category) return + const selectedTier = category.tiers.find((t) => t.slug === localSelectedSlug) if (selectedTier) { onSelectTier(category, selectedTier) } onClose() } + const handleSubmit = () => { + if (!localSelectedSlug || !category) return + + // Guardrail only runs when we have an estimate AND the global policy + // would auto-index this batch. Under Manual the user has already opted + // out of automatic ingestion, so the bulk-disk warning would be a false + // alarm — the files would just queue as pending_decision. + if (ingestPolicy === 'Always' && embedEstimate) { + const verdict = evaluateGuardrail({ + estimateBytes: embedEstimate.totalBytes, + freeBytes, + }) + if (verdict.trips) { + setGuardrailVerdict(verdict) + return + } + } + + finalizeSubmit() + } + return ( + <> = ({ })}
+ {/* Embedding-cost preview — visible whenever a tier is + selected. The estimate uses #891's ratio registry to + project how much extra disk space the AI Assistant will + need for these files on top of the raw downloads. */} + {localSelectedSlug && embedEstimate && embedEstimate.totalBytes > 0 && ( +
+
+ +
+

+ +~{formatBytes(embedEstimate.totalBytes, 1)} + {' '}of additional storage if these are indexed for the AI Assistant + {embedEstimate.hasUnknown && ( + (estimate excludes some files we have no prior data for) + )} + . +

+

+ {ingestPolicy === 'Always' ? ( + <> + Your Auto-index setting is Always, so these files will be indexed automatically once downloaded. You can change this in the Knowledge Base settings. + + ) : ( + <> + Your Auto-index setting is Manual, so these files will sit unindexed until you opt in from the Knowledge Base settings. + + )} +

+
+
+
+ )} + {/* Info note */} -
+

You can change your selection at any time. Click Submit to confirm your choice. @@ -218,7 +350,7 @@ const TierSelectionModal: React.FC = ({ variant='primary' size='lg' onClick={handleSubmit} - disabled={!localSelectedSlug} + disabled={!localSelectedSlug || (embedEstimateRequest.length > 0 && isEstimating)} > Submit @@ -229,6 +361,18 @@ const TierSelectionModal: React.FC = ({

+ {guardrailVerdict && ( + { + setGuardrailVerdict(null) + finalizeSubmit() + }} + onCancel={() => setGuardrailVerdict(null)} + /> + )} + ) } diff --git a/admin/inertia/components/ZimUploader/index.tsx b/admin/inertia/components/ZimUploader/index.tsx new file mode 100644 index 0000000..7f08398 --- /dev/null +++ b/admin/inertia/components/ZimUploader/index.tsx @@ -0,0 +1,95 @@ +import Uppy from '@uppy/core' +import Dashboard from '@uppy/react/dashboard' +import XHRUpload from '@uppy/xhr-upload' +import '@uppy/core/css/style.min.css' +import '@uppy/dashboard/css/style.min.css' +import { useEffect, useRef, useState } from 'react' + +interface ZimUploaderProps { + onUploadComplete: (added: number) => void + existingFilenames: string[] +} + +export default function ZimUploader({ onUploadComplete, existingFilenames }: ZimUploaderProps) { + const existingFilenamesRef = useRef(existingFilenames) + useEffect(() => { + existingFilenamesRef.current = existingFilenames + }, [existingFilenames]) + + // Keep the latest callback in a ref so the Uppy lifecycle effect below does + // not depend on it. The parent passes a new inline function on every render, + // and if that identity were in the effect deps, a re-render mid-upload (e.g. + // a window-focus refetch) would tear down and `uppy.destroy()` the instance, + // aborting the in-flight upload. + const onUploadCompleteRef = useRef(onUploadComplete) + useEffect(() => { + onUploadCompleteRef.current = onUploadComplete + }, [onUploadComplete]) + + const [uppy] = useState(() => + new Uppy({ + restrictions: { + maxNumberOfFiles: 5, + allowedFileTypes: ['.zim'], + }, + autoProceed: false, + }).use(XHRUpload, { + endpoint: '/api/zim/upload', + fieldName: 'file', + getResponseError: (responseText) => { + try { + const body = JSON.parse(responseText) + if (body?.message) return new Error(body.message) + } catch {} + return new Error('Upload failed') + }, + }) + ) + + useEffect(() => { + const handleFileAdded = (file: { id: string; name: string }) => { + if (existingFilenamesRef.current.includes(file.name)) { + uppy.removeFile(file.id) + uppy.info('A ZIM file with that name already exists', 'error', 6000) + return + } + + const isWikipedia = (name: string) => name.startsWith('wikipedia_en_') + if (isWikipedia(file.name)) { + const alreadyQueued = uppy.getFiles().some((f) => f.id !== file.id && isWikipedia(f.name)) + if (alreadyQueued) { + uppy.removeFile(file.id) + uppy.info('Only one Wikipedia file can be uploaded at a time', 'error', 6000) + } + } + } + const handleComplete = (result: { + successful: Array<{ response?: { body?: { added?: number } } }> + failed: Array + }) => { + // Uppy emits `complete` even when uploads fail or are aborted. Only treat + // the run as a success when nothing failed — otherwise leave the uploader + // open so the Dashboard can surface the error instead of closing it with a + // false "Upload complete" toast. + if (result.failed.length > 0) return + const added = result.successful.reduce((sum, f) => sum + (f.response?.body?.added ?? 0), 0) + onUploadCompleteRef.current(added) + } + uppy.on('file-added', handleFileAdded) + uppy.on('complete', handleComplete) + return () => { + uppy.off('file-added', handleFileAdded) + uppy.off('complete', handleComplete) + uppy.destroy() + } + }, [uppy]) + + return ( + + ) +} diff --git a/admin/inertia/components/chat/KbPolicyPromptBanner.tsx b/admin/inertia/components/chat/KbPolicyPromptBanner.tsx new file mode 100644 index 0000000..b2fd99b --- /dev/null +++ b/admin/inertia/components/chat/KbPolicyPromptBanner.tsx @@ -0,0 +1,126 @@ +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' +import { usePage } from '@inertiajs/react' +import { IconBrain } from '@tabler/icons-react' +import api from '~/lib/api' +import StyledButton from '~/components/StyledButton' +import { useNotifications } from '~/context/NotificationContext' + +/** + * First-chat onboarding banner (RFC #883 Phase 3 task 12). + * + * Renders above the chat header when the scanner has seen at least one + * embeddable file AND the user has not yet picked a global ingest policy + * (`rag.defaultIngestPolicy` unset). Two buttons let the user decide once, + * after which the prompt never returns: + * + * - "Index existing content" → sets policy=Always and dispatches a sync so + * anything already on disk + in `pending_decision` gets queued for embed. + * - "Maybe later" → sets policy=Manual. New content waits in + * `pending_decision` until the user opts in from the KB modal. + * + * The "dismiss without deciding" X is intentionally NOT here. Dismissing + * without setting policy would make the banner reappear on every visit until + * a choice is recorded — annoying. The two action buttons each set policy, + * and the user can change their mind any time via the Always/Manual radio in + * the KB modal. + */ +export default function KbPolicyPromptBanner() { + const queryClient = useQueryClient() + const { addNotification } = useNotifications() + // Inertia injects `aiAssistantName` as a shared page prop on chat-mounted + // pages so the banner pulls the user-set name when surfaced. Default to + // "AI Assistant" when accessed outside that context (no-op for chat pages, + // but keeps the component safe for future reuse elsewhere). + const aiAssistantName = + usePage<{ aiAssistantName?: string }>().props?.aiAssistantName || 'AI Assistant' + + const { data: promptState } = useQuery({ + queryKey: ['kbPolicyPromptState'], + queryFn: () => api.getKbPolicyPromptState(), + staleTime: Infinity, + }) + + const indexNowMutation = useMutation({ + mutationFn: async () => { + await api.updateSetting('rag.defaultIngestPolicy', 'Always') + await api.syncRAGStorage() + }, + onSuccess: () => { + addNotification({ + type: 'success', + message: `${aiAssistantName} will index your existing content. You can track progress in the Knowledge Base panel.`, + }) + queryClient.invalidateQueries({ queryKey: ['kbPolicyPromptState'] }) + queryClient.invalidateQueries({ queryKey: ['ingestPolicy'] }) + queryClient.invalidateQueries({ queryKey: ['embed-jobs'] }) + queryClient.invalidateQueries({ queryKey: ['storedFiles'] }) + }, + onError: (error: any) => { + addNotification({ + type: 'error', + message: error?.message || 'Could not start indexing. Try again from the Knowledge Base panel.', + }) + }, + }) + + const maybeLaterMutation = useMutation({ + mutationFn: () => api.updateSetting('rag.defaultIngestPolicy', 'Manual'), + onSuccess: () => { + addNotification({ + type: 'success', + message: 'Your content stays unindexed for now. You can opt in any time from the Knowledge Base panel.', + }) + queryClient.invalidateQueries({ queryKey: ['kbPolicyPromptState'] }) + queryClient.invalidateQueries({ queryKey: ['ingestPolicy'] }) + }, + onError: (error: any) => { + addNotification({ + type: 'error', + message: error?.message || 'Could not save your choice. Try again.', + }) + }, + }) + + if (!promptState?.shouldPrompt) return null + + const fileCount = promptState.totalFiles + const isBusy = indexNowMutation.isPending || maybeLaterMutation.isPending + + return ( +
+
+ +
+

+ + {fileCount === 1 + ? `Index your existing file for ${aiAssistantName}?` + : `Index your ${fileCount.toLocaleString()} existing files for ${aiAssistantName}?`} + + {' '}When indexed, {aiAssistantName} can reference them while answering your questions. +

+
+
+ indexNowMutation.mutate()} + variant="primary" + size="sm" + disabled={isBusy} + loading={indexNowMutation.isPending} + > + Index existing content + + maybeLaterMutation.mutate()} + variant="ghost" + size="sm" + disabled={isBusy} + loading={maybeLaterMutation.isPending} + > + Maybe later + +
+
+
+ ) +} diff --git a/admin/inertia/components/chat/KnowledgeBaseModal.tsx b/admin/inertia/components/chat/KnowledgeBaseModal.tsx index e77a0c9..cd47d04 100644 --- a/admin/inertia/components/chat/KnowledgeBaseModal.tsx +++ b/admin/inertia/components/chat/KnowledgeBaseModal.tsx @@ -1,24 +1,142 @@ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' -import { useRef, useState } from 'react' +import { useEffect, useRef, useState } from 'react' import FileUploader from '~/components/file-uploader' import StyledButton from '~/components/StyledButton' +import type { DynamicIconName } from '~/lib/icons' import StyledSectionHeader from '~/components/StyledSectionHeader' import StyledTable from '~/components/StyledTable' import { useNotifications } from '~/context/NotificationContext' import api from '~/lib/api' -import { IconX } from '@tabler/icons-react' +import { + groupAndSortKbFiles, + type KbFileGroup, + type KbFileSort, + type KbFileSortKey, +} from '~/lib/kb_file_grouping' +import type { KbIngestStateValue } from '../../../types/kb_ingest_state' +import { formatBytes } from '~/lib/util' +import { + IconArrowsSort, + IconDownload, + IconEye, + IconSortAscending, + IconSortDescending, + IconX, +} from '@tabler/icons-react' import { useModals } from '~/context/ModalContext' import StyledModal from '../StyledModal' import ActiveEmbedJobs from '~/components/ActiveEmbedJobs' +import { SERVICE_NAMES } from '../../../constants/service_names' interface KnowledgeBaseModalProps { aiAssistantName?: string onClose: () => void } -function sourceToDisplayName(source: string): string { - const parts = source.split(/[/\\]/) - return parts[parts.length - 1] +// File extensions the in-browser viewer can render. Must stay in sync with +// `RagService.VIEWABLE_TEXT_EXTENSIONS` — anything outside this set falls back +// to Download. +const VIEWABLE_EXTENSIONS = new Set(['md', 'txt', 'csv', 'json', 'yaml', 'yml', 'toml', 'xml', 'html']) + +function isViewableExtension(filename: string): boolean { + const ext = filename.split('.').at(-1)?.toLowerCase() ?? '' + return VIEWABLE_EXTENSIONS.has(ext) +} + +function renderSortHeader( + label: string, + key: KbFileSortKey, + sort: KbFileSort, + setSort: (s: KbFileSort) => void +): React.ReactNode { + const active = sort.key === key + const Icon = !active ? IconArrowsSort : sort.direction === 'asc' ? IconSortAscending : IconSortDescending + return ( + + ) +} + +/** + * Compact label for the per-row ingestion state. Files that exist in Qdrant + * with no `kb_ingest_state` row (`state === null`) are legacy/pre-RFC-883 + * installs whose chunks are real, so we display them as "Indexed" rather than + * surfacing the absent-row detail. Admin-docs group has no pill (the "Managed + * by NOMAD" message in the action column carries the same signal). + */ +function renderStatePill(record: KbFileGroup): React.ReactNode { + if (record.bucket === 'admin_docs') return null + const effective: KbIngestStateValue = record.state ?? 'indexed' + + const base = 'inline-flex items-center text-xs font-medium rounded px-2 py-0.5 border' + switch (effective) { + case 'indexed': + return ( + + Indexed + + ) + case 'pending_decision': + case 'browse_only': + return ( + + Not Indexed + + ) + case 'failed': + return ( + + Failed + + ) + case 'stalled': + return ( + + Stalled + + ) + } +} + +type RowAction = + | { kind: 'index'; label: string; force: boolean; variant: 'primary'; icon: DynamicIconName } + | { kind: 'reembed'; label: string; force: true; variant: 'secondary'; icon: DynamicIconName } + +/** + * Pick the single adaptive per-row action button. Returns null when no action + * makes sense for the current state (e.g. healthy indexed file with no + * warnings — bulk Re-embed All covers that case). `hasWarnings` lets us + * surface a Re-embed affordance specifically when a file *looks* indexed but + * has zero chunks or a stalled-mid-ingestion warning attached. + */ +function pickRowAction(record: KbFileGroup, hasWarnings: boolean): RowAction | null { + if (record.bucket === 'admin_docs') return null + const effective: KbIngestStateValue = record.state ?? 'indexed' + switch (effective) { + case 'indexed': + return hasWarnings + ? { kind: 'reembed', label: 'Re-embed', force: true, variant: 'secondary', icon: 'IconRefreshAlert' } + : null + case 'pending_decision': + return { kind: 'index', label: 'Index', force: false, variant: 'primary', icon: 'IconDownload' } + case 'browse_only': + return { kind: 'index', label: 'Index', force: true, variant: 'primary', icon: 'IconDownload' } + case 'failed': + case 'stalled': + return { kind: 'index', label: 'Retry', force: true, variant: 'primary', icon: 'IconRefresh' } + } } export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", onClose }: KnowledgeBaseModalProps) { @@ -26,16 +144,77 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o const [files, setFiles] = useState([]) const [isUploading, setIsUploading] = useState(false) const [confirmDeleteSource, setConfirmDeleteSource] = useState(null) + const [confirmReembed, setConfirmReembed] = useState<{ source: string; displayName: string } | null>(null) + const [bulkMode, setBulkMode] = useState(null) + const [resetTyped, setResetTyped] = useState('') + const [sort, setSort] = useState({ key: 'name', direction: 'asc' }) + const [viewerSource, setViewerSource] = useState(null) const fileUploaderRef = useRef>(null) const { openModal, closeModal } = useModals() const queryClient = useQueryClient() + const [isStartingQdrant, setIsStartingQdrant] = useState(false) + + const { data: healthStatus } = useQuery({ + queryKey: ['qdrantHealth'], + queryFn: () => api.checkRAGHealth(), + refetchInterval: isStartingQdrant ? 3_000 : 30_000, + }) + const qdrantOffline = healthStatus?.online === false + + useEffect(() => { + if (!qdrantOffline) setIsStartingQdrant(false) + }, [qdrantOffline]) + const { data: storedFiles = [], isLoading: isLoadingFiles } = useQuery({ queryKey: ['storedFiles'], queryFn: () => api.getStoredRAGFiles(), select: (data) => data || [], }) + // Per-file conditional warnings (RFC #883 §6). `ok: false` means the + // computation itself failed (Qdrant/DB/FS) — distinct from `ok: true` with + // an empty map, which means everything is healthy. We surface the failure + // explicitly so a silent backend failure doesn't masquerade as health. + const { data: warningsResult } = useQuery({ + queryKey: ['kbFileWarnings'], + queryFn: () => api.getKbFileWarnings(), + refetchInterval: 30_000, + }) + const fileWarnings = warningsResult?.warnings ?? {} + const warningsUnavailable = warningsResult !== undefined && warningsResult.ok === false + + // Global auto-index policy. KVStore returns `null` for an unset key, which + // we treat as 'Always' for backward compatibility with installs that predate + // this UI. The user can opt into Manual mode from the toggle below. + const { data: ingestPolicySetting } = useQuery({ + queryKey: ['ingestPolicy'], + queryFn: () => api.getSetting('rag.defaultIngestPolicy'), + }) + const ingestPolicy: 'Always' | 'Manual' = + ingestPolicySetting?.value === 'Manual' ? 'Manual' : 'Always' + + const updateIngestPolicyMutation = useMutation({ + mutationFn: (policy: 'Always' | 'Manual') => + api.updateSetting('rag.defaultIngestPolicy', policy), + onSuccess: (_data, policy) => { + queryClient.invalidateQueries({ queryKey: ['ingestPolicy'] }) + addNotification({ + type: 'success', + message: + policy === 'Always' + ? 'New content will be auto-indexed for AI.' + : 'New content will wait for you to opt in.', + }) + }, + onError: (error: any) => { + addNotification({ + type: 'error', + message: error?.message || 'Failed to update indexing policy.', + }) + }, + }) + const uploadMutation = useMutation({ mutationFn: (file: File) => api.uploadDocument(file), }) @@ -53,6 +232,25 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o }, }) + const embedMutation = useMutation({ + mutationFn: ({ source, force }: { source: string; force: boolean }) => + api.embedSingleRAGFile(source, force), + onSuccess: (data) => { + addNotification({ + type: 'success', + message: data?.message || 'File queued for embedding.', + }) + setConfirmReembed(null) + queryClient.invalidateQueries({ queryKey: ['storedFiles'] }) + queryClient.invalidateQueries({ queryKey: ['embed-jobs'] }) + queryClient.invalidateQueries({ queryKey: ['kbFileWarnings'] }) + }, + onError: (error: any) => { + addNotification({ type: 'error', message: error?.message || 'Failed to queue file.' }) + setConfirmReembed(null) + }, + }) + const cleanupFailedMutation = useMutation({ mutationFn: () => api.cleanupFailedEmbedJobs(), onSuccess: (data) => { @@ -64,6 +262,31 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o }, }) + const cancelAllMutation = useMutation({ + mutationFn: () => api.cancelAllEmbedJobs(), + onSuccess: (data) => { + addNotification({ type: 'success', message: data?.message || 'All embedding jobs cancelled.' }) + queryClient.invalidateQueries({ queryKey: ['embed-jobs'] }) + queryClient.invalidateQueries({ queryKey: ['failedEmbedJobs'] }) + queryClient.invalidateQueries({ queryKey: ['storedFiles'] }) + queryClient.invalidateQueries({ queryKey: ['kbFileWarnings'] }) + }, + onError: (error: any) => { + addNotification({ type: 'error', message: error?.message || 'Failed to cancel jobs.' }) + }, + }) + + const startQdrantMutation = useMutation({ + mutationFn: () => api.affectService(SERVICE_NAMES.QDRANT, 'start'), + onSuccess: () => { + setIsStartingQdrant(true) + queryClient.invalidateQueries({ queryKey: ['qdrantHealth'] }) + }, + onError: (error: any) => { + addNotification({ type: 'error', message: error?.message || 'Failed to start Qdrant.' }) + }, + }) + const syncMutation = useMutation({ mutationFn: () => api.syncRAGStorage(), onSuccess: (data) => { @@ -80,6 +303,44 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o }, }) + const reembedMutation = useMutation({ + mutationFn: () => api.reembedAllRAG(), + onSuccess: (data) => { + addNotification({ + type: data?.success ? 'success' : 'error', + message: data?.message || 'Re-embed completed.', + }) + queryClient.invalidateQueries({ queryKey: ['storedFiles'] }) + queryClient.invalidateQueries({ queryKey: ['embed-jobs'] }) + setBulkMode(null) + setResetTyped('') + }, + onError: () => { + addNotification({ type: 'error', message: 'Failed to re-embed knowledge base.' }) + setBulkMode(null) + }, + }) + + const resetMutation = useMutation({ + mutationFn: () => api.resetAndRebuildRAG(), + onSuccess: (data) => { + addNotification({ + type: data?.success ? 'success' : 'error', + message: data?.message || 'Reset complete.', + }) + queryClient.invalidateQueries({ queryKey: ['storedFiles'] }) + queryClient.invalidateQueries({ queryKey: ['embed-jobs'] }) + setBulkMode(null) + setResetTyped('') + }, + onError: () => { + addNotification({ type: 'error', message: 'Failed to reset knowledge base.' }) + setBulkMode(null) + }, + }) + + const bulkBusy = reembedMutation.isPending || resetMutation.isPending + const handleUpload = async () => { if (files.length === 0) return setIsUploading(true) @@ -111,6 +372,31 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o } } + const handleConfirmCancelAll = () => { + openModal( + { + cancelAllMutation.mutate() + closeModal('confirm-cancel-all-modal') + }} + onCancel={() => closeModal('confirm-cancel-all-modal')} + open={true} + confirmText='Cancel All Jobs' + cancelText='Keep Jobs' + confirmVariant='danger' + > +

+ This stops every embedding job — including ones still in progress or + stuck — and clears the processing queue. The uploaded source files for those jobs are + deleted, so you'll need to re-upload anything you still want indexed. Stored files that + already finished embedding are not affected. Are you sure you want to proceed? +

+
, + 'confirm-cancel-all-modal' + ) + } + const handleConfirmSync = () => { openModal(
+ {qdrantOffline && ( +
+ + Knowledge Base unavailable: The Qdrant vector database is offline. + + startQdrantMutation.mutate()} + loading={startQdrantMutation.isPending || isStartingQdrant} + disabled={startQdrantMutation.isPending || isStartingQdrant} + > + {isStartingQdrant ? 'Starting…' : 'Start Qdrant'} + +
+ )}
Upload @@ -227,52 +529,219 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o
-
-
- - cleanupFailedMutation.mutate()} - loading={cleanupFailedMutation.isPending} - disabled={cleanupFailedMutation.isPending} +
+
+
+

+ Auto-index new content for AI? +

+

+ Indexed content typically uses 5–10× the original file size on disk. + Changes apply to new content added after this setting changes. +

+
+
- Clean Up Failed - + {(['Always', 'Manual'] as const).map((option) => { + const isActive = ingestPolicy === option + return ( + + ) + })} +
+
+
+ +
+
+ +
+ cleanupFailedMutation.mutate()} + loading={cleanupFailedMutation.isPending} + disabled={cleanupFailedMutation.isPending || qdrantOffline} + > + Clean Up Failed + + {/* Not gated on qdrantOffline: clearing stuck jobs must work during + a Qdrant/Ollama outage, which is exactly when they wedge. */} + + Cancel All Jobs + +
-
+
- - Sync Storage - +
+ { setResetTyped(''); setBulkMode('reset') }} + disabled={isUploading || qdrantOffline || bulkBusy} + loading={resetMutation.isPending} + title="Drop the entire embeddings collection and re-embed everything from scratch. Permanently removes vectors for files no longer on disk. Destructive: requires typing RESET to confirm." + > + Reset & Rebuild + + setBulkMode('reembed')} + disabled={isUploading || qdrantOffline || bulkBusy || storedFiles.length === 0} + loading={reembedMutation.isPending} + title="Re-embed every file on disk, replacing existing vectors file-by-file. Vectors for files no longer on disk are preserved. Use this if the chunker or embedding model has changed." + > + Re-embed All + + + Sync Storage + + +
- + {warningsUnavailable && ( +
+ + + File warnings unavailable — couldn't read storage state. Retrying… + +
+ )} + className="font-semibold" rowLines={true} columns={[ { accessor: 'source', - title: 'File Name', + title: renderSortHeader('File Name', 'name', sort, setSort), render(record) { - return {sourceToDisplayName(record.source)} + const warnings = fileWarnings[record.source] ?? [] + const pill = renderStatePill(record) + return ( +
+ + {record.displayName} + + {(pill || warnings.length > 0) && ( +
+ {pill} + {warnings.map((w, i) => ( + + + {w.kind === 'zero_chunks' && ( + + Embedded 0 chunks — this file has no text content. + AI Assistant cannot reference it. + + )} + {w.kind === 'partial_stall' && ( + + Only {w.chunksEmbedded.toLocaleString()} of est.{' '} + {w.chunksExpected.toLocaleString()} chunks embedded — + ingestion may have stalled. + + )} + + ))} +
+ )} +
+ ) + }, + }, + { + accessor: 'size', + title: renderSortHeader('Size', 'size', sort, setSort), + className: 'whitespace-nowrap', + render(record) { + // The collapsed admin_docs group has no single size — leave blank + // rather than misleadingly summing across N files. + if (record.bucket === 'admin_docs' || record.size === null) { + return + } + return {formatBytes(record.size)} + }, + }, + { + accessor: 'uploadedAt', + title: renderSortHeader('Uploaded', 'uploadedAt', sort, setSort), + className: 'whitespace-nowrap', + render(record) { + if (record.bucket === 'admin_docs' || !record.uploadedAt) { + return + } + const d = new Date(record.uploadedAt) + return ( + + {d.toLocaleDateString()} + + ) }, }, { accessor: 'source', title: '', render(record) { + // Admin docs are auto-discovered and managed by NOMAD itself — + // deleting one would just be re-embedded on the next sync, so + // we surface them as informational only and hide Delete. + if (record.bucket === 'admin_docs') { + return ( +
+ + Managed by NOMAD + +
+ ) + } + const isConfirming = confirmDeleteSource === record.source const isDeleting = deleteMutation.isPending && confirmDeleteSource === record.source if (isConfirming) { @@ -298,14 +767,59 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o
) } + + const warnings = fileWarnings[record.source] ?? [] + const action = pickRowAction(record, warnings.length > 0) + const actionPendingForThisRow = + embedMutation.isPending && embedMutation.variables?.source === record.source + + const canView = record.isUserUpload && isViewableExtension(record.displayName) && record.size !== null + const canDownload = record.isUserUpload && record.size !== null + return ( -
+
+ {action && ( + { + if (action.kind === 'reembed') { + setConfirmReembed({ source: record.source, displayName: record.displayName }) + } else { + embedMutation.mutate({ source: record.source, force: action.force }) + } + }} + disabled={qdrantOffline || deleteMutation.isPending || embedMutation.isPending} + loading={actionPendingForThisRow} + > + {action.label} + + )} + {canView && ( + setViewerSource(record.source)} + >View + )} + {canDownload && ( + { + window.location.href = `/api/rag/files/download?source=${encodeURIComponent(record.source)}` + }} + >Download + )} setConfirmDeleteSource(record.source)} - disabled={deleteMutation.isPending} + disabled={deleteMutation.isPending || embedMutation.isPending} loading={deleteMutation.isPending && confirmDeleteSource === record.source} >Delete
@@ -313,12 +827,189 @@ export default function KnowledgeBaseModal({ aiAssistantName = "AI Assistant", o }, }, ]} - data={storedFiles.map((source) => ({ source }))} + data={groupAndSortKbFiles(storedFiles, sort)} loading={isLoadingFiles} />
+ + {bulkMode === 'reembed' && ( + reembedMutation.mutate()} + onCancel={() => setBulkMode(null)} + > +
+

+ This will re-process every document currently in your knowledge base — about + {storedFiles.length} file{storedFiles.length === 1 ? '' : 's'}. + For each file, NOMAD will delete the existing embeddings from Qdrant and queue a fresh + embedding job using the current chunking and embedding model. +

+
+

What this is for

+

+ Use this when the embedding model or chunking logic has changed, or when you suspect + stored vectors are stale. Files on disk are not deleted, and any orphan + points whose source file is no longer present will be preserved untouched (see + Reset & Rebuild if you want a fully clean slate). +

+
+
+

Heads up

+
    +
  • Embedding {storedFiles.length} file{storedFiles.length === 1 ? '' : 's'} may take a long time, especially for large PDFs or ZIM archives.
  • +
  • On systems without GPU acceleration, expect sustained high CPU usage for the duration.
  • +
  • Knowledge Base search results may be incomplete until every file finishes re-embedding.
  • +
  • If embed jobs are already in progress, this action will be refused — wait for the queue to drain first.
  • +
+
+
+
+ )} + + {bulkMode === 'reset' && ( + { + if (resetTyped === 'RESET') resetMutation.mutate() + }} + onCancel={() => { setBulkMode(null); setResetTyped('') }} + > +
+

+ This will permanently delete every point in the + nomad_knowledge_base Qdrant collection and rebuild from the + {storedFiles.length} file{storedFiles.length === 1 ? '' : 's'} currently + on disk. The collection is dropped, recreated, and every file is re-queued for embedding. +

+
+

How this differs from Re-embed All

+
    +
  • Re-embed All replaces vectors file-by-file. Any orphan points (vectors whose source file was deleted from disk at some point) are preserved.
  • +
  • Reset & Rebuild drops the entire collection. Orphan points are gone forever. Only files currently on disk will exist in Qdrant afterwards.
  • +
+
+
+

This action is destructive and cannot be undone

+
    +
  • Knowledge Base search will be empty until embedding finishes (potentially hours on CPU-only systems).
  • +
  • For a few seconds during the reset, the Qdrant collection does not exist — any chat-with-RAG queries in that window may return a "collection not found" error. Avoid using chat until the rebuild has begun.
  • +
  • If embed jobs are already in progress, this action will be refused — wait for the queue to drain first.
  • +
+
+
+ + setResetTyped(e.target.value)} + placeholder='RESET' + autoFocus + className='w-full rounded border border-border-subtle bg-surface-primary px-3 py-2 text-text-primary focus:outline-none focus:ring-2 focus:ring-red-500' + /> + {resetTyped.length > 0 && resetTyped !== 'RESET' && ( +

Type RESET exactly (uppercase, no spaces) to enable the confirm button.

+ )} +
+
+
+ )} + + {confirmReembed && ( + + embedMutation.mutate({ source: confirmReembed.source, force: true }) + } + onCancel={() => setConfirmReembed(null)} + > +
+

+ This will delete the existing embeddings for{' '} + {confirmReembed.displayName} and queue + a fresh embedding job. The file on disk is not touched. +

+
+

Heads up

+
    +
  • For large ZIM archives this can take a long time, especially on CPU-only systems.
  • +
  • Search results that referenced this file will be incomplete until the new embedding finishes.
  • +
  • If a job for this file is already running, the re-embed will be refused — wait for it to finish first.
  • +
+
+
+
+ )} + + {viewerSource && ( + setViewerSource(null)} + /> + )}
) } + +function FileViewerModal({ source, onClose }: { source: string; onClose: () => void }) { + const { data, isLoading, isFetched } = useQuery({ + queryKey: ['rag', 'file-content', source], + queryFn: () => api.getFileContent(source), + staleTime: 60_000, + }) + + // Title falls back to the trailing path segment so the modal still has a + // useful header while the fetch is in-flight or if it failed. + const fallbackName = source.split(/[/\\]/).at(-1) ?? source + const title = data?.fileName ?? fallbackName + // `catchInternal` swallows errors and resolves to undefined, surfacing a + // toast — so the "couldn't load" branch is gated on a finished-but-empty + // fetch rather than on react-query's `isError`. + const showError = isFetched && !data + + return ( + +
+ {isLoading && ( +
Loading…
+ )} + {showError && ( +
+ Couldn't load file. It may have been moved or its type isn't viewable. +
+ )} + {data && ( +
+            {data.content}
+          
+ )} +
+
+ ) +} diff --git a/admin/inertia/components/chat/index.tsx b/admin/inertia/components/chat/index.tsx index 577579a..9be60d4 100644 --- a/admin/inertia/components/chat/index.tsx +++ b/admin/inertia/components/chat/index.tsx @@ -2,6 +2,7 @@ import { useState, useCallback, useEffect, useRef, useMemo } from 'react' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import ChatSidebar from './ChatSidebar' import ChatInterface from './ChatInterface' +import KbPolicyPromptBanner from './KbPolicyPromptBanner' import StyledModal from '../StyledModal' import api from '~/lib/api' import { formatBytes } from '~/lib/util' @@ -32,6 +33,8 @@ export default function Chat({ const [activeSessionId, setActiveSessionId] = useState(null) const [messages, setMessages] = useState([]) const [selectedModel, setSelectedModel] = useState('') + const [pendingModelSwitch, setPendingModelSwitch] = useState(null) + const pageLoadNormalizedRef = useRef(false) const [isStreamingResponse, setIsStreamingResponse] = useState(false) const streamAbortRef = useRef(null) @@ -150,6 +153,62 @@ export default function Chat({ } }, [selectedModel]) + // Page-load normalization: enforce the "one chat model at a time" invariant + // when the chat page first mounts. Anything stacked from a prior session + // gets `keep_alive: 0` so it can be evicted; the embedding model is exempt + // server-side. We wait for `selectedModel` to be populated by the + // first-installed / lastModel effect so the request has a target to preserve. + useEffect(() => { + if (!enabled) return + if (!selectedModel) return + if (pageLoadNormalizedRef.current) return + pageLoadNormalizedRef.current = true + api.unloadChatModels(selectedModel).catch((err) => { + console.warn('Failed to normalize loaded models on chat-page mount:', err) + }) + }, [enabled, selectedModel]) + + const handleUserSelectedModel = useCallback( + (newModel: string) => { + if (newModel === selectedModel) return + // No active chat session yet → no conversation to lose, no popup needed. + // Just update the dropdown silently; the next "New Chat" will use it. + if (!activeSessionId) { + setSelectedModel(newModel) + return + } + // Active session: defer the actual model swap until the user confirms. + // Setting `pendingModelSwitch` drives the dropdown's effective value + // *and* opens the confirm modal — clearing it on cancel reverts the + // visible selection without us having to touch `selectedModel`. + setPendingModelSwitch(newModel) + }, + [selectedModel, activeSessionId] + ) + + const handleConfirmModelSwitch = useCallback(async () => { + const newModel = pendingModelSwitch + if (!newModel) return + // Best-effort unload of the previously-active chat model. Fire-and-forget: + // Ollama queues the eviction until the runner is idle, so an in-flight + // request on the old model finishes cleanly. We don't await this before + // clearing the session — UI responsiveness wins over housekeeping. + api.unloadChatModels(newModel).catch((err) => { + console.warn('Failed to unload previous chat model:', err) + }) + setSelectedModel(newModel) + setPendingModelSwitch(null) + // Clear the active session and messages — the next user message will + // lazily create a new session via the existing handleSendMessage path, + // which already calls api.createChatSession with `selectedModel`. + setActiveSessionId(null) + setMessages([]) + }, [pendingModelSwitch]) + + const handleCancelModelSwitch = useCallback(() => { + setPendingModelSwitch(null) + }, []) + const handleNewChat = useCallback(() => { // Just clear the active session and messages - don't create a session yet setActiveSessionId(null) @@ -201,8 +260,19 @@ export default function Chat({ if (sessionData?.model) { setSelectedModel(sessionData.model) } + + // Enforce the one-chat-model-at-a-time invariant: ask the backend to + // unload anything that isn't the target session's model. Fire-and-forget; + // this is housekeeping. Note we pass the *session's* model here rather + // than reading `selectedModel`, because setSelectedModel above is async + // and the effect-driven page-load normalize wouldn't catch a sidebar + // click after the first render. + const targetModel = sessionData?.model ?? selectedModel ?? null + api.unloadChatModels(targetModel).catch((err) => { + console.warn('Failed to unload non-target chat models on session switch:', err) + }) }, - [installedModels, queryClient] + [installedModels, queryClient, selectedModel] ) const handleSendMessage = useCallback( @@ -351,6 +421,23 @@ export default function Chat({ ) return ( + <> + {pendingModelSwitch && ( + +

+ Switching to {pendingModelSwitch} will start a new chat. Your current + conversation stays available in the sidebar. +

+
+ )}
+

{activeSession?.title || 'New Chat'} @@ -394,8 +482,8 @@ export default function Chat({ ) : ( setMarkerName(e.target.value)} - onKeyDown={(e) => { - if (e.key === 'Enter') handleSaveMarker() - if (e.key === 'Escape') setPlacingMarker(null) - }} - className="block w-full rounded border border-gray-300 px-2 py-1 text-sm placeholder:text-gray-400 focus:outline-none focus:border-gray-500" + {markers.map((marker) => ( + { + e.originalEvent.stopPropagation() + setSelectedMarkerId(marker.id === selectedMarkerId ? null : marker.id) + setPlacingMarker(null) + }} + > + c.id === marker.color)?.hex} + active={marker.id === selectedMarkerId} /> -
- {PIN_COLORS.map((c) => ( - - ))} -
-
- - -
-

- - )} - + + ))} - {/* Marker panel overlay */} - + {selectedMarker && ( + setSelectedMarkerId(null)} + closeOnClick={false} + > +
{selectedMarker.name}
+ {selectedMarker.notes && selectedMarker.notes.trim() && ( +
+ {selectedMarker.notes} +
+ )} +
+ )} + + {placingMarker && ( + setPlacingMarker(null)} + closeOnClick={false} + > +
+ setMarkerName(e.target.value)} + onKeyDown={(e) => { + if (e.key === 'Enter') handleSaveMarker() + if (e.key === 'Escape') setPlacingMarker(null) + }} + className="block w-full rounded border border-gray-300 px-2 py-1 text-sm placeholder:text-gray-400 focus:outline-none focus:border-gray-500" + /> + +
+ {PIN_COLORS.map((c) => ( + + ))} +
+ +
+ + + +
+
+
+ )} + +
+ +
+ +
) } diff --git a/admin/inertia/components/maps/ScaleUnitToggle.tsx b/admin/inertia/components/maps/ScaleUnitToggle.tsx new file mode 100644 index 0000000..ba0bceb --- /dev/null +++ b/admin/inertia/components/maps/ScaleUnitToggle.tsx @@ -0,0 +1,46 @@ +type ScaleUnit = 'imperial' | 'metric' + +type ScaleUnitToggleProps = { + scaleUnit: ScaleUnit + onChange: (unit: ScaleUnit) => void + onMouseEnter?: () => void +} + +export default function ScaleUnitToggle({ + scaleUnit, + onChange, + onMouseEnter, +}: ScaleUnitToggleProps) { + return ( +
+
+ + + +
+
+ ) +} diff --git a/admin/inertia/components/updates/AppAutoUpdateSection.tsx b/admin/inertia/components/updates/AppAutoUpdateSection.tsx new file mode 100644 index 0000000..8dc29a7 --- /dev/null +++ b/admin/inertia/components/updates/AppAutoUpdateSection.tsx @@ -0,0 +1,101 @@ +import StyledSectionHeader from '~/components/StyledSectionHeader' +import Switch from '~/components/inputs/Switch' +import api from '~/lib/api' +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { useNotifications } from '~/context/NotificationContext' +import { useAppAutoUpdateStatus } from '~/hooks/useAppAutoUpdateStatus' + +export default function AppAutoUpdateSection() { + const { addNotification } = useNotifications() + const queryClient = useQueryClient() + const { data: status, isLoading } = useAppAutoUpdateStatus() + + const enabled = status?.enabled ?? false + + const toggleMutation = useMutation({ + mutationFn: (value: boolean) => api.updateSetting('appAutoUpdate.enabled', value), + onSuccess: (_data, value) => { + queryClient.invalidateQueries({ queryKey: ['app-auto-update-status'] }) + addNotification({ + type: 'success', + message: value ? 'App automatic updates enabled.' : 'App automatic updates disabled.', + }) + }, + onError: () => { + addNotification({ type: 'error', message: 'Failed to update app auto-update setting.' }) + }, + }) + + return ( + <> + +
+ toggleMutation.mutate(value)} + disabled={toggleMutation.isPending || isLoading} + label="Enable Automatic App Updates" + description="Automatically install minor and patch updates for apps you've opted in (toggle each app in Supply Depot). Major versions always require a manual update. Uses the same update window and cool-off period as the core schedule above." + /> + + {enabled && status && ( +
+

+ Update window: + {status.windowStart}–{status.windowEnd} ( + {status.withinWindow ? 'currently inside' : 'currently outside'}); cool-off{' '} + {status.cooloffHours}h. + {status.lastResult && ( + <> + {' '} + Last run: + {status.lastResult} + {status.lastAttemptAt + ? ` (${new Date(status.lastAttemptAt).toLocaleString()})` + : ''} + + )} +

+ + {status.apps.length === 0 ? ( +

+ No apps are opted in yet. Enable auto-update on individual apps from the Supply Depot. +

+ ) : ( +
    + {status.apps.map((app) => ( +
  • +
    +

    + {app.friendly_name || app.service_name} +

    +

    + {app.current_version} + {app.available_update_version + ? ` → ${app.available_update_version}` + : ' (up to date)'} +

    + {app.auto_disabled_reason && ( +

    {app.auto_disabled_reason}

    + )} +
    + + {app.reason} + +
  • + ))} +
+ )} +
+ )} +
+ + ) +} diff --git a/admin/inertia/components/updates/ContentAutoUpdateSection.tsx b/admin/inertia/components/updates/ContentAutoUpdateSection.tsx new file mode 100644 index 0000000..0581c2d --- /dev/null +++ b/admin/inertia/components/updates/ContentAutoUpdateSection.tsx @@ -0,0 +1,249 @@ +import { useEffect, useState } from 'react' +import StyledButton from '~/components/StyledButton' +import StyledSectionHeader from '~/components/StyledSectionHeader' +import Alert from '~/components/Alert' +import api from '~/lib/api' +import Input from '~/components/inputs/Input' +import Switch from '~/components/inputs/Switch' +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { useNotifications } from '~/context/NotificationContext' +import { useContentAutoUpdateStatus } from '~/hooks/useContentAutoUpdateStatus' +import { formatBytes } from '~/lib/util' + +const COOLOFF_OPTIONS = [ + { value: 24, label: '24 hours (1 day)' }, + { value: 48, label: '48 hours (2 days)' }, + { value: 72, label: '72 hours (3 days)' }, + { value: 168, label: '7 days' }, +] + +const BYTES_PER_GB = 1024 * 1024 * 1024 + +export default function ContentAutoUpdateSection() { + const { addNotification } = useNotifications() + const queryClient = useQueryClient() + const { data: status, isLoading } = useContentAutoUpdateStatus() + + const [windowStart, setWindowStart] = useState('02:00') + const [windowEnd, setWindowEnd] = useState('05:00') + const [cooloff, setCooloff] = useState(72) + // Data cap is stored in bytes but edited in GB (0 = unlimited). + const [capGb, setCapGb] = useState('0') + + // Seed editable fields once the persisted status loads. + useEffect(() => { + if (status) { + setWindowStart(status.windowStart) + setWindowEnd(status.windowEnd) + setCooloff(status.cooloffHours) + setCapGb( + status.maxBytesPerWindow > 0 + ? String(Math.round((status.maxBytesPerWindow / BYTES_PER_GB) * 100) / 100) + : '0' + ) + } + }, [status?.windowStart, status?.windowEnd, status?.cooloffHours, status?.maxBytesPerWindow]) + + const enabled = status?.enabled ?? false + const autoDisabled = !!status?.autoDisabledReason + + const toggleMutation = useMutation({ + mutationFn: (value: boolean) => api.updateSetting('contentAutoUpdate.enabled', value), + onSuccess: (_data, value) => { + queryClient.invalidateQueries({ queryKey: ['content-auto-update-status'] }) + addNotification({ + type: 'success', + message: value + ? 'Automatic content updates enabled.' + : 'Automatic content updates disabled.', + }) + }, + onError: () => { + addNotification({ type: 'error', message: 'Failed to update content auto-update setting.' }) + }, + }) + + const handleSaveSchedule = async () => { + const parsedGb = Number(capGb) + if (!Number.isFinite(parsedGb) || parsedGb < 0) { + addNotification({ type: 'error', message: 'Data cap must be 0 or a positive number of GB.' }) + return + } + const capBytes = Math.round(parsedGb * BYTES_PER_GB) + try { + await api.updateSetting('contentAutoUpdate.windowStart', windowStart) + await api.updateSetting('contentAutoUpdate.windowEnd', windowEnd) + await api.updateSetting('contentAutoUpdate.cooloffHours', String(cooloff)) + await api.updateSetting('contentAutoUpdate.maxBytesPerWindow', String(capBytes)) + queryClient.invalidateQueries({ queryKey: ['content-auto-update-status'] }) + addNotification({ type: 'success', message: 'Content update schedule saved.' }) + } catch { + addNotification({ type: 'error', message: 'Failed to save content update schedule.' }) + } + } + + return ( + <> + +
+ {autoDisabled && ( + + )} + + toggleMutation.mutate(value)} + disabled={toggleMutation.isPending || isLoading} + label="Enable Automatic Content Updates" + description="Automatically download newer versions of your installed Information Library content (ZIM files) and maps during your chosen window. Content downloads can be very large, so set a per-window data cap to limit how much is pulled at once. We recommend allowing at least 0.5 GB per update window to ensure most updates can be pulled in a timely manner, but you can set a lower cap if you have very limited bandwidth and don't mind some updates being skipped (they will still appear in the UI and can be updated manually). If an update repeatedly fails to download within the window, it will be automatically disabled and require manual intervention to re-enable." + /> + +
+ setWindowStart(e.target.value)} + disabled={!enabled} + helpText="Local server time" + /> + setWindowEnd(e.target.value)} + disabled={!enabled} + helpText="Local server time" + /> +
+ +

Delay after a new version appears

+ +
+ setCapGb(e.target.value)} + disabled={!enabled} + helpText="Per window. 0 = unlimited" + /> +
+ +
+ + Save Schedule + +
+ + {enabled && status && ( +
+

+ Update window: + {status.windowStart}–{status.windowEnd} ( + {status.withinWindow ? 'currently inside' : 'currently outside'}); cool-off{' '} + {status.cooloffHours}h; data cap{' '} + {status.maxBytesPerWindow > 0 ? formatBytes(status.maxBytesPerWindow) : 'unlimited'} + {status.maxBytesPerWindow > 0 && ( + <> ({formatBytes(status.windowBytesUsed)} used this window) + )} + . + {status.lastResult && ( + <> + {' '} + Last run: + {status.lastResult} + {status.lastAttemptAt + ? ` (${new Date(status.lastAttemptAt).toLocaleString()})` + : ''} + + )} +

+ + {status.lastError && ( +

+ Last error: + {status.lastError} +

+ )} + + {status.resources.length === 0 ? ( +

+ All installed content is up to date. New versions will appear here when detected. +

+ ) : ( +
    + {status.resources.map((resource) => ( +
  • +
    +

    + {resource.resource_id}{' '} + + {resource.resource_type} + +

    +

    + {resource.current_version} + {resource.available_update_version + ? ` → ${resource.available_update_version}` + : ' (up to date)'} + {resource.size_bytes ? ` · ${formatBytes(resource.size_bytes)}` : ''} +

    + {resource.auto_disabled_reason && ( +

    {resource.auto_disabled_reason}

    + )} +
    + + {resource.exceeds_cap ? 'Skipped — exceeds data cap, update manually' : resource.reason} + +
  • + ))} +
+ )} +
+ )} +
+ + ) +} diff --git a/admin/inertia/components/updates/ContentUpdatesSection.tsx b/admin/inertia/components/updates/ContentUpdatesSection.tsx new file mode 100644 index 0000000..21dbbdb --- /dev/null +++ b/admin/inertia/components/updates/ContentUpdatesSection.tsx @@ -0,0 +1,227 @@ +import { useState } from 'react' +import StyledButton from '~/components/StyledButton' +import StyledTable from '~/components/StyledTable' +import StyledSectionHeader from '~/components/StyledSectionHeader' +import ActiveDownloads from '~/components/ActiveDownloads' +import Alert from '~/components/Alert' +import type { ContentUpdateCheckResult, ResourceUpdateInfo } from '../../../types/collections' +import api from '~/lib/api' +import { useQueryClient } from '@tanstack/react-query' +import { useNotifications } from '~/context/NotificationContext' +import { formatBytes } from '~/lib/util' + +export default function ContentUpdatesSection() { + const { addNotification } = useNotifications() + const queryClient = useQueryClient() + const [checkResult, setCheckResult] = useState(null) + const [isChecking, setIsChecking] = useState(false) + const [applyingIds, setApplyingIds] = useState>(new Set()) + const [isApplyingAll, setIsApplyingAll] = useState(false) + + const handleCheck = async () => { + setIsChecking(true) + try { + const result = await api.checkForContentUpdates() + if (result) { + setCheckResult(result) + } + } catch { + setCheckResult({ + updates: [], + checked_at: new Date().toISOString(), + error: 'Failed to check for content updates', + }) + } finally { + setIsChecking(false) + } + } + + const handleApply = async (update: ResourceUpdateInfo) => { + setApplyingIds((prev) => new Set(prev).add(update.resource_id)) + try { + const result = await api.applyContentUpdate(update) + if (result?.success) { + addNotification({ type: 'success', message: `Update started for ${update.resource_id}` }) + // Remove from the updates list + setCheckResult((prev) => + prev + ? { ...prev, updates: prev.updates.filter((u) => u.resource_id !== update.resource_id) } + : prev + ) + // Force Active Downloads to refetch now — small updates finish before the next + // idle poll fires, so without this the user wouldn't see them. + queryClient.invalidateQueries({ queryKey: ['download-jobs'] }) + } else { + addNotification({ type: 'error', message: result?.error || 'Failed to start update' }) + } + } catch { + addNotification({ type: 'error', message: `Failed to start update for ${update.resource_id}` }) + } finally { + setApplyingIds((prev) => { + const next = new Set(prev) + next.delete(update.resource_id) + return next + }) + } + } + + const handleApplyAll = async () => { + if (!checkResult?.updates.length) return + setIsApplyingAll(true) + try { + const result = await api.applyAllContentUpdates(checkResult.updates) + if (result?.results) { + const succeeded = result.results.filter((r) => r.success).length + const failed = result.results.filter((r) => !r.success).length + if (succeeded > 0) { + addNotification({ type: 'success', message: `Started ${succeeded} update(s)` }) + } + if (failed > 0) { + addNotification({ type: 'error', message: `${failed} update(s) could not be started` }) + } + // Remove successful updates from the list + const successIds = new Set(result.results.filter((r) => r.success).map((r) => r.resource_id)) + setCheckResult((prev) => + prev + ? { ...prev, updates: prev.updates.filter((u) => !successIds.has(u.resource_id)) } + : prev + ) + if (successIds.size > 0) { + queryClient.invalidateQueries({ queryKey: ['download-jobs'] }) + } + } + } catch { + addNotification({ type: 'error', message: 'Failed to apply updates' }) + } finally { + setIsApplyingAll(false) + } + } + + return ( +
+ + +
+
+

+ Check if newer versions of your installed ZIM files and maps are available. +

+ + Check for Content Updates + +
+ + {checkResult?.error && ( + + )} + + {checkResult && !checkResult.error && checkResult.updates.length === 0 && ( + + )} + + {checkResult && checkResult.updates.length > 0 && ( +
+
+

+ {checkResult.updates.length} update(s) available +

+ + Update All ({checkResult.updates.length}) + +
+ ( + {record.resource_id} + ), + }, + { + accessor: 'resource_type', + title: 'Type', + render: (record) => ( + + {record.resource_type === 'zim' ? 'ZIM' : 'Map'} + + ), + }, + { + accessor: 'size_bytes', + title: 'Size', + render: (record) => ( + + {record.size_bytes ? formatBytes(record.size_bytes, 1) : '—'} + + ), + }, + { + accessor: 'installed_version', + title: 'Version', + render: (record) => ( + + {record.installed_version} → {record.latest_version} + + ), + }, + { + accessor: 'resource_id', + title: '', + render: (record) => ( + handleApply(record)} + loading={applyingIds.has(record.resource_id)} + > + Update + + ), + }, + ]} + /> +
+ )} + + {checkResult?.checked_at && ( +

+ Last checked: {new Date(checkResult.checked_at).toLocaleString()} +

+ )} +
+ + +
+ ) +} diff --git a/admin/inertia/components/updates/CoreAutoUpdateSection.tsx b/admin/inertia/components/updates/CoreAutoUpdateSection.tsx new file mode 100644 index 0000000..fcebbb3 --- /dev/null +++ b/admin/inertia/components/updates/CoreAutoUpdateSection.tsx @@ -0,0 +1,185 @@ +import { useEffect, useState } from 'react' +import StyledButton from '~/components/StyledButton' +import StyledSectionHeader from '~/components/StyledSectionHeader' +import Alert from '~/components/Alert' +import api from '~/lib/api' +import Input from '~/components/inputs/Input' +import Switch from '~/components/inputs/Switch' +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { useNotifications } from '~/context/NotificationContext' +import { useAutoUpdateStatus } from '~/hooks/useAutoUpdateStatus' + +const COOLOFF_OPTIONS = [ + { value: 24, label: '24 hours (1 day)' }, + { value: 48, label: '48 hours (2 days)' }, + { value: 72, label: '72 hours (3 days)' }, + { value: 168, label: '7 days' }, +] + +export default function CoreAutoUpdateSection() { + const { addNotification } = useNotifications() + const queryClient = useQueryClient() + const { data: status, isLoading } = useAutoUpdateStatus() + + const [windowStart, setWindowStart] = useState('02:00') + const [windowEnd, setWindowEnd] = useState('05:00') + const [cooloff, setCooloff] = useState(72) + + // Seed editable fields once the persisted status loads. + useEffect(() => { + if (status) { + setWindowStart(status.windowStart) + setWindowEnd(status.windowEnd) + setCooloff(status.cooloffHours) + } + }, [status?.windowStart, status?.windowEnd, status?.cooloffHours]) + + const saveMutation = useMutation({ + mutationFn: ({ key, value }: { key: string; value: any }) => api.updateSetting(key, value), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['auto-update-status'] }) + }, + onError: () => { + addNotification({ type: 'error', message: 'Failed to update auto-update setting.' }) + }, + }) + + const enabled = status?.enabled ?? false + const autoDisabled = !!status?.autoDisabledReason + + const handleToggle = (value: boolean) => { + saveMutation.mutate( + { key: 'autoUpdate.enabled', value }, + { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['auto-update-status'] }) + addNotification({ + type: 'success', + message: value ? 'Automatic updates enabled.' : 'Automatic updates disabled.', + }) + }, + } + ) + } + + const handleSaveWindow = async () => { + try { + await api.updateSetting('autoUpdate.windowStart', windowStart) + await api.updateSetting('autoUpdate.windowEnd', windowEnd) + await api.updateSetting('autoUpdate.cooloffHours', String(cooloff)) + queryClient.invalidateQueries({ queryKey: ['auto-update-status'] }) + addNotification({ type: 'success', message: 'Auto-update schedule saved.' }) + } catch { + addNotification({ type: 'error', message: 'Failed to save auto-update schedule.' }) + } + } + + return ( + <> + +
+ {autoDisabled && ( + + )} + + + +
+ setWindowStart(e.target.value)} + disabled={!enabled} + helpText="Local server time" + /> + setWindowEnd(e.target.value)} + disabled={!enabled} + helpText="Local server time" + /> +
+ +

Delay after a release is published

+ +
+
+ +
+ + Save Schedule + +
+ + {enabled && status && ( +
+

+ Status: + {status.eligibleTarget + ? `Eligible update ready: ${status.eligibleTarget.version}` + : 'No eligible update — system is current or the latest release is a major version / still in cool-off.'} +

+

+ Update window: + {status.withinWindow ? 'Currently inside the window' : 'Currently outside the window'} +

+ {status.lastResult && ( +

+ Last check: + {status.lastResult} + {status.lastAttemptAt + ? ` (${new Date(status.lastAttemptAt).toLocaleString()})` + : ''} +

+ )} + {status.lastError && ( +

+ Last error: + {status.lastError} +

+ )} +
+ )} +
+ + ) +} diff --git a/admin/inertia/hooks/useAppAutoUpdateStatus.ts b/admin/inertia/hooks/useAppAutoUpdateStatus.ts new file mode 100644 index 0000000..810a572 --- /dev/null +++ b/admin/inertia/hooks/useAppAutoUpdateStatus.ts @@ -0,0 +1,11 @@ +import { useQuery } from '@tanstack/react-query' +import api from '~/lib/api' +import { AppAutoUpdateStatus } from '../../types/system' + +export const useAppAutoUpdateStatus = () => { + return useQuery({ + queryKey: ['app-auto-update-status'], + queryFn: () => api.getAppAutoUpdateStatus(), + refetchOnWindowFocus: false, + }) +} diff --git a/admin/inertia/hooks/useAutoUpdateStatus.ts b/admin/inertia/hooks/useAutoUpdateStatus.ts new file mode 100644 index 0000000..57e5c22 --- /dev/null +++ b/admin/inertia/hooks/useAutoUpdateStatus.ts @@ -0,0 +1,11 @@ +import { useQuery } from '@tanstack/react-query' +import api from '~/lib/api' +import { AutoUpdateStatus } from '../../types/system' + +export const useAutoUpdateStatus = () => { + return useQuery({ + queryKey: ['auto-update-status'], + queryFn: () => api.getAutoUpdateStatus(), + refetchOnWindowFocus: false, + }) +} diff --git a/admin/inertia/hooks/useContentAutoUpdateStatus.ts b/admin/inertia/hooks/useContentAutoUpdateStatus.ts new file mode 100644 index 0000000..85974dc --- /dev/null +++ b/admin/inertia/hooks/useContentAutoUpdateStatus.ts @@ -0,0 +1,11 @@ +import { useQuery } from '@tanstack/react-query' +import api from '~/lib/api' +import { ContentAutoUpdateStatus } from '../../types/system' + +export const useContentAutoUpdateStatus = () => { + return useQuery({ + queryKey: ['content-auto-update-status'], + queryFn: () => api.getContentAutoUpdateStatus(), + refetchOnWindowFocus: false, + }) +} diff --git a/admin/inertia/hooks/useDiskDisplayData.ts b/admin/inertia/hooks/useDiskDisplayData.ts index 1d8b15d..415fae9 100644 --- a/admin/inertia/hooks/useDiskDisplayData.ts +++ b/admin/inertia/hooks/useDiskDisplayData.ts @@ -19,36 +19,66 @@ export function getAllDiskDisplayItems( ): DiskDisplayItem[] { const validDisks = disks?.filter((d) => d.totalSize > 0) || [] + // If /app/storage is backed by a network filesystem (NFS/CIFS), it won't + // appear in the block-device list. Prepend it so NAS and OS disk are both + // shown. Local-disk-backed /app/storage is already reported in disk[] and + // fsSize[], so skip it here to avoid a phantom "NAS Storage" entry. + const NETWORK_FS_TYPES = new Set(['nfs', 'nfs4', 'cifs', 'smbfs', 'smb2', 'smb3']) + const storageMount = fsSize?.find( + (fs) => + fs.mount === '/app/storage' && fs.size > 0 && NETWORK_FS_TYPES.has(fs.type?.toLowerCase()) + ) + const storageMountItem: DiskDisplayItem[] = storageMount + ? [ + { + label: 'NAS Storage', + value: storageMount.use || 0, + total: formatBytes(storageMount.size), + used: formatBytes(storageMount.used), + subtext: `${formatBytes(storageMount.used)} / ${formatBytes(storageMount.size)}`, + totalBytes: storageMount.size, + usedBytes: storageMount.used, + }, + ] + : [] + if (validDisks.length > 0) { - return validDisks.map((disk) => ({ - label: disk.name || 'Unknown', - value: disk.percentUsed || 0, - total: formatBytes(disk.totalSize), - used: formatBytes(disk.totalUsed), - subtext: `${formatBytes(disk.totalUsed || 0)} / ${formatBytes(disk.totalSize || 0)}`, - totalBytes: disk.totalSize, - usedBytes: disk.totalUsed, - })) + return [ + ...storageMountItem, + ...validDisks.map((disk) => ({ + label: disk.name || 'Unknown', + value: disk.percentUsed || 0, + total: formatBytes(disk.totalSize), + used: formatBytes(disk.totalUsed), + subtext: `${formatBytes(disk.totalUsed || 0)} / ${formatBytes(disk.totalSize || 0)}`, + totalBytes: disk.totalSize, + usedBytes: disk.totalUsed, + })), + ] } if (fsSize && fsSize.length > 0) { const seen = new Set() const uniqueFs = fsSize.filter((fs) => { if (fs.size <= 0 || seen.has(fs.size)) return false + if (storageMount && fs.mount === '/app/storage') return false seen.add(fs.size) return true }) const realDevices = uniqueFs.filter((fs) => fs.fs.startsWith('/dev/')) const displayFs = realDevices.length > 0 ? realDevices : uniqueFs - return displayFs.map((fs) => ({ - label: fs.fs || 'Unknown', - value: fs.use || 0, - total: formatBytes(fs.size), - used: formatBytes(fs.used), - subtext: `${formatBytes(fs.used)} / ${formatBytes(fs.size)}`, - totalBytes: fs.size, - usedBytes: fs.used, - })) + return [ + ...storageMountItem, + ...displayFs.map((fs) => ({ + label: fs.fs || 'Unknown', + value: fs.use || 0, + total: formatBytes(fs.size), + used: formatBytes(fs.used), + subtext: `${formatBytes(fs.used)} / ${formatBytes(fs.size)}`, + totalBytes: fs.size, + usedBytes: fs.used, + })), + ] } return [] @@ -59,6 +89,15 @@ export function getPrimaryDiskInfo( disks: NomadDiskInfo[] | undefined, fsSize: Systeminformation.FsSizeData[] | undefined ): { totalSize: number; totalUsed: number } | null { + // First, check if /app/storage is on a dedicated filesystem (e.g. NFS mount). + // This is the most accurate source since it reflects the actual backing + // store for NOMAD content, regardless of whether it's a local disk or + // network-attached storage. + const storageMount = fsSize?.find((fs) => fs.mount === '/app/storage' && fs.size > 0) + if (storageMount) { + return { totalSize: storageMount.size, totalUsed: storageMount.used } + } + const validDisks = disks?.filter((d) => d.totalSize > 0) || [] if (validDisks.length > 0) { const diskWithRoot = validDisks.find((d) => diff --git a/admin/inertia/hooks/useDownloads.ts b/admin/inertia/hooks/useDownloads.ts index 3cdb859..b03399d 100644 --- a/admin/inertia/hooks/useDownloads.ts +++ b/admin/inertia/hooks/useDownloads.ts @@ -19,8 +19,9 @@ const useDownloads = (props: useDownloadsProps) => { queryFn: () => api.listDownloadJobs(props.filetype), refetchInterval: (query) => { const data = query.state.data - // Only poll when there are active downloads; otherwise use a slower interval - return data && data.length > 0 ? 2000 : 30000 + // Idle poll is kept tight so newly-dispatched jobs surface quickly — small ZIM + // updates can complete in ~2s, so a 30s idle interval almost always missed them. + return data && data.length > 0 ? 2000 : 3000 }, enabled: props.enabled ?? true, }) diff --git a/admin/inertia/hooks/useMapMarkers.ts b/admin/inertia/hooks/useMapMarkers.ts index ba999eb..a0e818e 100644 --- a/admin/inertia/hooks/useMapMarkers.ts +++ b/admin/inertia/hooks/useMapMarkers.ts @@ -18,6 +18,7 @@ export interface MapMarker { longitude: number latitude: number color: PinColorId + notes: string | null createdAt: string } @@ -36,6 +37,7 @@ export function useMapMarkers() { longitude: m.longitude, latitude: m.latitude, color: m.color as PinColorId, + notes: m.notes ?? null, createdAt: m.created_at, })) ) @@ -54,6 +56,7 @@ export function useMapMarkers() { longitude: result.longitude, latitude: result.latitude, color: result.color as PinColorId, + notes: result.notes ?? null, createdAt: result.created_at, } setMarkers((prev) => [...prev, marker]) diff --git a/admin/inertia/hooks/useOllamaModelDownloads.ts b/admin/inertia/hooks/useOllamaModelDownloads.ts index 8fc5460..d99e708 100644 --- a/admin/inertia/hooks/useOllamaModelDownloads.ts +++ b/admin/inertia/hooks/useOllamaModelDownloads.ts @@ -1,11 +1,25 @@ -import { useEffect, useRef, useState } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useTransmit } from 'react-adonis-transmit' export type OllamaModelDownload = { model: string percent: number timestamp: string + /** + * BullMQ job id — included on progress events from v1.32+ so the frontend can + * call the cancel API. Optional for backward compat with stale broadcasts during + * a hot upgrade. + */ + jobId?: string + /** + * Aggregate bytes across all blobs in the model pull, summed from Ollama's + * per-digest progress events on the backend. Optional for backward compat. + */ + downloadedBytes?: number + totalBytes?: number error?: string + /** Set to 'cancelled' alongside percent === -2 when the user cancels the download */ + status?: 'cancelled' } export default function useOllamaModelDownloads() { @@ -13,6 +27,19 @@ export default function useOllamaModelDownloads() { const [downloads, setDownloads] = useState>(new Map()) const timeoutsRef = useRef>>(new Set()) + /** + * Optimistically remove a download from local state — used by the cancel UI to clear + * the entry immediately on a successful API call, in case the Transmit cancelled + * broadcast arrives late or the SSE connection drops at exactly the wrong moment. + */ + const removeDownload = useCallback((model: string) => { + setDownloads((current) => { + const next = new Map(current) + next.delete(model) + return next + }) + }, []) + useEffect(() => { const unsubscribe = subscribe('ollama-model-download', (data: OllamaModelDownload) => { setDownloads((prev) => { @@ -30,6 +57,21 @@ export default function useOllamaModelDownloads() { }) }, 15000) timeoutsRef.current.add(errorTimeout) + } else if (data.percent === -2) { + // Download cancelled — clear quickly (matches the completion TTL). + // Component-level optimistic removal usually beats this branch, but it's + // here as a safety net for cases where the cancel comes from another tab + // or another client. + const cancelTimeout = setTimeout(() => { + timeoutsRef.current.delete(cancelTimeout) + setDownloads((current) => { + const next = new Map(current) + next.delete(data.model) + return next + }) + }, 2000) + timeoutsRef.current.add(cancelTimeout) + updated.delete(data.model) } else if (data.percent >= 100) { // If download is complete, keep it for a short time before removing to allow UI to show 100% progress updated.set(data.model, data) @@ -60,5 +102,5 @@ export default function useOllamaModelDownloads() { const downloadsArray = Array.from(downloads.values()) - return { downloads: downloadsArray, activeCount: downloads.size } + return { downloads: downloadsArray, activeCount: downloads.size, removeDownload } } diff --git a/admin/inertia/layouts/SettingsLayout.tsx b/admin/inertia/layouts/SettingsLayout.tsx index 0ecad83..6dc868d 100644 --- a/admin/inertia/layouts/SettingsLayout.tsx +++ b/admin/inertia/layouts/SettingsLayout.tsx @@ -1,5 +1,7 @@ import { + IconAdjustments, IconArrowBigUpLines, + IconBox, IconChartBar, IconDashboard, IconFolder, @@ -7,7 +9,6 @@ import { IconHeart, IconMapRoute, IconSettings, - IconTerminal2, IconWand, IconZoom } from '@tabler/icons-react' @@ -23,7 +24,7 @@ export default function SettingsLayout({ children }: { children: React.ReactNode const navigation = [ ...(aiAssistantInstallStatus.isInstalled ? [{ name: aiAssistantName, href: '/settings/models', icon: IconWand, current: false }] : []), - { name: 'Apps', href: '/settings/apps', icon: IconTerminal2, current: false }, + { name: 'Supply Depot', href: '/supply-depot', icon: IconBox, current: false }, { name: 'Benchmark', href: '/settings/benchmark', icon: IconChartBar, current: false }, { name: 'Content Explorer', href: '/settings/zim/remote-explorer', icon: IconZoom, current: false }, { name: 'Content Manager', href: '/settings/zim', icon: IconFolder, current: false }, @@ -42,6 +43,7 @@ export default function SettingsLayout({ children }: { children: React.ReactNode current: false, }, { name: 'System', href: '/settings/system', icon: IconSettings, current: false }, + { name: 'Advanced', href: '/settings/advanced', icon: IconAdjustments, current: false }, { name: 'Support the Project', href: '/settings/support', icon: IconHeart, current: false }, { name: 'Legal Notices', href: '/settings/legal', icon: IconGavel, current: false }, ] diff --git a/admin/inertia/lib/api.ts b/admin/inertia/lib/api.ts index ab608ed..97f6e40 100644 --- a/admin/inertia/lib/api.ts +++ b/admin/inertia/lib/api.ts @@ -2,9 +2,10 @@ import axios, { AxiosError, AxiosInstance } from 'axios' import { ListRemoteZimFilesResponse, ListZimFilesResponse } from '../../types/zim' import { ServiceSlim } from '../../types/services' import { FileEntry } from '../../types/files' -import { CheckLatestVersionResult, SystemInformationResponse, SystemUpdateStatus } from '../../types/system' +import { AppAutoUpdateStatus, AutoUpdateStatus, CheckLatestVersionResult, ContentAutoUpdateStatus, SystemInformationResponse, SystemUpdateStatus } from '../../types/system' import { DownloadJobWithProgress, WikipediaState } from '../../types/downloads' -import { EmbedJobWithProgress } from '../../types/rag' +import type { Country, CountryCode, CountryGroup, MapExtractPreflight } from '../../types/maps' +import { EmbedJobWithProgress, FileWarningsResult, StoredFileInfo } from '../../types/rag' import type { CategoryWithStatus, CollectionWithStatus, ContentUpdateCheckResult, ResourceUpdateInfo } from '../../types/collections' import { catchInternal } from './util' import { NomadChatResponse, NomadInstalledModel, NomadOllamaModel, OllamaChatRequest } from '../../types/ollama' @@ -130,6 +131,15 @@ class API { })() } + async deleteMapRegionFile(filename: string): Promise<{ message: string }> { + return catchInternal(async () => { + const response = await this.client.delete<{ message: string }>( + `/maps/${encodeURIComponent(filename)}` + ) + return response.data + })() + } + async downloadRemoteZimFile( url: string, metadata?: { title: string; summary?: string; author?: string; size_bytes?: number } @@ -262,6 +272,24 @@ class API { })() } + /** + * Ask the backend to send Ollama `keep_alive: 0` to every currently-loaded + * chat model except `targetModel` (and the embedding model, which is always + * exempt server-side). Fire-and-forget — the chat UI doesn't await this + * before creating a new session, since unload is housekeeping. + * + * Pass `null` to unload every chat model. + */ + async unloadChatModels(targetModel: string | null) { + return catchInternal(async () => { + const response = await this.client.post<{ unloaded: string[] }>( + '/ollama/unload-chat-models', + { targetModel } + ) + return response.data + })() + } + async getAvailableModels(params: { query?: string; recommendedOnly?: boolean; limit?: number; force?: boolean }) { return catchInternal(async () => { const response = await this.client.get<{ @@ -451,13 +479,41 @@ class API { })() } + async cancelAllEmbedJobs(): Promise<{ message: string; cancelled: number; filesDeleted: number } | undefined> { + return catchInternal(async () => { + const response = await this.client.delete<{ message: string; cancelled: number; filesDeleted: number }>('/rag/jobs') + return response.data + })() + } + + async checkRAGHealth() { + return catchInternal(async () => { + const response = await this.client.get<{ online: boolean; message?: string }>('/rag/health') + return response.data + })() + } + async getStoredRAGFiles() { return catchInternal(async () => { - const response = await this.client.get<{ files: string[] }>('/rag/files') + const response = await this.client.get<{ files: StoredFileInfo[] }>('/rag/files') return response.data.files })() } + async embedSingleRAGFile(source: string, force: boolean = false) { + return catchInternal(async () => { + const response = await this.client.post<{ message: string }>('/rag/files/embed', { source, force }) + return response.data + })() + } + + async getKbFileWarnings() { + return catchInternal(async () => { + const response = await this.client.get('/rag/file-warnings') + return response.data + })() + } + async deleteRAGFile(source: string) { return catchInternal(async () => { const response = await this.client.delete<{ message: string }>('/rag/files', { data: { source } }) @@ -465,6 +521,17 @@ class API { })() } + async getFileContent(source: string) { + return catchInternal(async () => { + const response = await this.client.get<{ + content: string + extension: string + fileName: string + }>('/rag/files/content', { params: { source } }) + return response.data + })() + } + async getSystemInfo() { return catchInternal(async () => { const response = await this.client.get('/system/info') @@ -493,6 +560,39 @@ class API { })() } + async getAutoUpdateStatus() { + return catchInternal(async () => { + const response = await this.client.get('/system/auto-update/status') + return response.data + })() + } + + async getAppAutoUpdateStatus() { + return catchInternal(async () => { + const response = await this.client.get('/system/apps/auto-update/status') + return response.data + })() + } + + async getContentAutoUpdateStatus() { + return catchInternal(async () => { + const response = await this.client.get( + '/system/content/auto-update/status' + ) + return response.data + })() + } + + async setServiceAutoUpdate(serviceName: string, enabled: boolean) { + return catchInternal(async () => { + const response = await this.client.post<{ success: boolean; message: string }>( + '/system/services/auto-update', + { service_name: serviceName, enabled } + ) + return response.data + })() + } + async healthCheck() { return catchInternal(async () => { const response = await this.client.get<{ status: string }>('/health', { @@ -541,6 +641,46 @@ class API { })() } + async listCountries() { + return catchInternal(async () => { + const response = await this.client.get<{ countries: Country[] }>('/maps/countries') + return response.data.countries + })() + } + + async listCountryGroups() { + return catchInternal(async () => { + const response = await this.client.get<{ groups: CountryGroup[] }>('/maps/country-groups') + return response.data.groups + })() + } + + async extractMapPreflight(params: { countries: CountryCode[]; maxzoom?: number }) { + return catchInternal(async () => { + const response = await this.client.post( + '/maps/extract-preflight', + params + ) + return response.data + })() + } + + async extractMapRegion(params: { + countries: CountryCode[] + maxzoom?: number + label?: string + estimatedBytes?: number + }) { + return catchInternal(async () => { + const response = await this.client.post<{ + message: string + filename: string + jobId?: string + }>('/maps/extract', params) + return response.data + })() + } + async listCuratedMapCollections() { return catchInternal(async () => { const response = await this.client.get( @@ -574,7 +714,7 @@ class API { async listMapMarkers() { return catchInternal(async () => { const response = await this.client.get< - Array<{ id: number; name: string; longitude: number; latitude: number; color: string; created_at: string }> + Array<{ id: number; name: string; longitude: number; latitude: number; color: string; notes: string | null; created_at: string }> >('/maps/markers') return response.data })() @@ -583,7 +723,7 @@ class API { async createMapMarker(data: { name: string; longitude: number; latitude: number; color?: string }) { return catchInternal(async () => { const response = await this.client.post< - { id: number; name: string; longitude: number; latitude: number; color: string; created_at: string } + { id: number; name: string; longitude: number; latitude: number; color: string; notes: string | null; created_at: string } >('/maps/markers', data) return response.data })() @@ -624,6 +764,42 @@ class API { })() } + async listCustomLibraries() { + return catchInternal(async () => { + const response = await this.client.get<{ id: number; name: string; base_url: string; is_default: boolean }[]>( + '/zim/custom-libraries' + ) + return response.data + })() + } + + async addCustomLibrary(name: string, base_url: string) { + return catchInternal(async () => { + const response = await this.client.post<{ + message: string + library: { id: number; name: string; base_url: string } + }>('/zim/custom-libraries', { name, base_url }) + return response.data + })() + } + + async removeCustomLibrary(id: number) { + return catchInternal(async () => { + const response = await this.client.delete<{ message: string }>(`/zim/custom-libraries/${id}`) + return response.data + })() + } + + async browseLibrary(url: string) { + return catchInternal(async () => { + const response = await this.client.get<{ + directories: { name: string; url: string }[] + files: { name: string; url: string; size_bytes: number | null }[] + }>('/zim/browse-library', { params: { url } }) + return response.data + })() + } + async deleteZimFile(filename: string) { return catchInternal(async () => { const response = await this.client.delete<{ message: string }>(`/zim/${filename}`) @@ -637,6 +813,18 @@ class API { })() } + async rescanZimLibrary() { + return catchInternal(async () => { + const response = await this.client.post<{ + message: string + before: number + after: number + added: number + }>('/zim/rescan-library') + return response.data + })() + } + async listDownloadJobs(filetype?: string): Promise { return catchInternal(async () => { const endpoint = filetype ? `/downloads/jobs/${filetype}` : '/downloads/jobs' @@ -727,6 +915,52 @@ class API { })() } + async reembedAllRAG() { + return catchInternal(async () => { + const response = await this.client.post<{ + success: boolean + message: string + filesScanned?: number + filesQueued?: number + }>('/rag/re-embed-all') + return response.data + })() + } + + async resetAndRebuildRAG() { + return catchInternal(async () => { + const response = await this.client.post<{ + success: boolean + message: string + filesScanned?: number + filesQueued?: number + }>('/rag/reset-and-rebuild') + return response.data + })() + } + + async estimateEmbeddingBatch(files: { filename: string; sizeBytes: number }[]) { + return catchInternal(async () => { + const response = await this.client.post<{ + totalChunks: number + totalBytes: number + hasUnknown: boolean + }>('/rag/estimate-batch', { files }) + return response.data + })() + } + + async getKbPolicyPromptState() { + return catchInternal(async () => { + const response = await this.client.get<{ + shouldPrompt: boolean + hasContent: boolean + totalFiles: number + }>('/rag/policy-prompt-state') + return response.data + })() + } + // Wikipedia selector methods async getWikipediaState(): Promise { @@ -795,6 +1029,171 @@ class API { return response.data })() } + + async preflightCheck(service_name: string) { + return catchInternal(async () => { + const response = await this.client.get<{ + portConflicts: Array<{ port: number; usedBy: string }> + resourceWarnings: string[] + }>('/system/services/preflight', { params: { service_name } }) + return response.data + })() + } + + async suggestCustomPort() { + return catchInternal(async () => { + const response = await this.client.get<{ port: number }>('/system/services/suggest-port') + return response.data + })() + } + + async preflightCustomApp(payload: { + image?: string + ports?: number[] + volumes?: Array<{ host_path: string; container_path: string }> + exclude_service?: string + }) { + return catchInternal(async () => { + const response = await this.client.post<{ + portConflicts: Array<{ port: number; usedBy: string }> + resourceWarnings: string[] + blocked: string[] + }>('/system/services/preflight-custom', payload) + return response.data + })() + } + + async createCustomApp(payload: { + friendly_name: string + image: string + ports?: Array<{ container: number; host: number }> + volumes?: Array<{ host_path: string; container_path: string }> + env?: string[] + category?: string + icon?: string + memory_mb?: number + cpus?: number + force?: boolean + }) { + return catchInternal(async () => { + const response = await this.client.post<{ + success: boolean + message: string + service_name: string + }>('/system/services/custom', payload) + return response.data + })() + } + + async setServiceCustomUrl(service_name: string, custom_url: string | null) { + return catchInternal(async () => { + const response = await this.client.put<{ success: boolean; custom_url: string | null }>( + '/system/services/custom-url', + { service_name, custom_url } + ) + return response.data + })() + } + + async deleteCustomApp(service_name: string, remove_image = false) { + return catchInternal(async () => { + const response = await this.client.delete<{ success: boolean; message: string }>( + '/system/services/custom', + { data: { service_name, remove_image } } + ) + return response.data + })() + } + + async uninstallService(service_name: string, remove_image = false) { + return catchInternal(async () => { + const response = await this.client.post<{ success: boolean; message: string }>( + '/system/services/uninstall', + { service_name, remove_image } + ) + return response.data + })() + } + + async updateCustomAppImage(service_name: string) { + return catchInternal(async () => { + const response = await this.client.post<{ success: boolean; message: string }>( + '/system/services/custom/update', + { service_name } + ) + return response.data + })() + } + + async getServiceLogs(service_name: string, tail = 200) { + return catchInternal(async () => { + const response = await this.client.get<{ success: boolean; logs: string }>( + `/system/services/${service_name}/logs`, + { params: { tail } } + ) + return response.data + })() + } + + async getServiceStats(service_name: string) { + return catchInternal(async () => { + const response = await this.client.get<{ + success: boolean + running: boolean + stats: { + cpuPercent: number + memUsageBytes: number + memLimitBytes: number + memPercent: number + } | null + }>(`/system/services/${service_name}/stats`) + return response.data + })() + } + + async getCustomApp(service_name: string) { + return catchInternal(async () => { + const response = await this.client.get<{ + success: boolean + app: { + service_name: string + friendly_name: string | null + image: string + category: string + icon: string + ports: Array<{ container: number; host: number }> + volumes: Array<{ host_path: string; container_path: string }> + env: string[] + memory_mb?: number + cpus?: number + } + }>(`/system/services/custom/${service_name}`) + return response.data + })() + } + + async updateCustomApp(payload: { + service_name: string + friendly_name: string + image: string + ports?: Array<{ container: number; host: number }> + volumes?: Array<{ host_path: string; container_path: string }> + env?: string[] + category?: string + icon?: string + memory_mb?: number + cpus?: number + force?: boolean + }) { + return catchInternal(async () => { + const response = await this.client.put<{ + success: boolean + message: string + service_name: string + }>('/system/services/custom', payload) + return response.data + })() + } } export default new API() diff --git a/admin/inertia/lib/global_map_banner.ts b/admin/inertia/lib/global_map_banner.ts new file mode 100644 index 0000000..1693dac --- /dev/null +++ b/admin/inertia/lib/global_map_banner.ts @@ -0,0 +1,10 @@ +export function hasDownloadedGlobalMap( + globalMapKey: string | null | undefined, + storedMapFiles: Array<{ name: string }> +): boolean { + if (!globalMapKey) { + return false + } + + return storedMapFiles.some((file) => file.name === globalMapKey || /^\d{8}\.pmtiles$/.test(file.name)) +} diff --git a/admin/inertia/lib/icons.ts b/admin/inertia/lib/icons.ts index cf9484d..ce58a2e 100644 --- a/admin/inertia/lib/icons.ts +++ b/admin/inertia/lib/icons.ts @@ -1,49 +1,68 @@ import { + IconAntenna, IconArrowUp, + IconBook, IconBooks, + IconBox, IconBrain, + IconBrandDocker, + IconBroadcast, IconChefHat, IconCheck, + IconChevronDown, IconChevronLeft, IconChevronRight, + IconCircleCheck, IconCloudDownload, IconCloudUpload, + IconCode, + IconCopy, IconCpu, IconDatabase, IconDownload, + IconExternalLink, + IconFileDescription, + IconFolderOpen, IconHome, + IconInfoCircle, IconLogs, + IconMap, + IconMenu2, + IconMoon, + IconMovie, IconNotes, + IconPencil, + IconPlant, IconPlayerPlay, + IconPlayerStop, IconPlus, IconRefresh, IconRefreshAlert, IconRobot, IconSchool, + IconSearch, + IconServer, IconSettings, + IconShieldCheck, + IconShieldLock, + IconStethoscope, + IconSun, + IconTool, IconTrash, IconUpload, IconWand, + IconWifi, IconWorld, IconX, IconAlertTriangle, IconXboxX, - IconCircleCheck, - IconInfoCircle, IconBug, IconCopy, + IconLibrary, IconServer, IconMenu2, IconArrowLeft, IconArrowRight, - IconSun, - IconMoon, - IconStethoscope, - IconShieldCheck, - IconTool, - IconPlant, - IconCode, - IconMap, } from '@tabler/icons-react' /** @@ -54,15 +73,21 @@ import { * very limited subset of the full Tabler Icons library. */ export const icons = { + IconAntenna, IconAlertTriangle, IconArrowLeft, IconArrowRight, IconArrowUp, + IconBook, IconBooks, + IconBox, IconBrain, + IconBrandDocker, + IconBroadcast, IconBug, IconChefHat, IconCheck, + IconChevronDown, IconChevronLeft, IconChevronRight, IconCircleCheck, @@ -73,29 +98,39 @@ export const icons = { IconCpu, IconDatabase, IconDownload, + IconExternalLink, + IconFileDescription, + IconFolderOpen, IconHome, IconInfoCircle, + IconLibrary, IconLogs, IconMap, IconMenu2, IconMoon, + IconMovie, IconNotes, + IconPencil, IconPlant, IconPlayerPlay, + IconPlayerStop, IconPlus, IconRefresh, IconRefreshAlert, IconRobot, IconSchool, + IconSearch, IconServer, IconSettings, IconShieldCheck, + IconShieldLock, IconStethoscope, IconSun, IconTool, IconTrash, IconUpload, IconWand, + IconWifi, IconWorld, IconX, IconXboxX diff --git a/admin/inertia/lib/kb_file_grouping.ts b/admin/inertia/lib/kb_file_grouping.ts new file mode 100644 index 0000000..cfe0789 --- /dev/null +++ b/admin/inertia/lib/kb_file_grouping.ts @@ -0,0 +1,160 @@ +import type { KbIngestStateValue } from '../../types/kb_ingest_state.js' +import type { StoredFileInfo } from '../../types/rag.js' + +/** + * Knowledge-base files come back as a list of `{source, state, chunksEmbedded}` + * objects from `/api/rag/files`. The UI groups them so the user sees the + * categories that matter to them — ZIMs, uploaded documents, and a single + * rolled-up entry for Project NOMAD's bundled docs (rather than the 12+ + * individual markdown files those break into). + * + * Bucket assignment is purely by path prefix; matching is done on `/` so the + * server-emitted absolute paths work regardless of which Linux mount the admin + * container uses. + */ +export type KbFileBucket = 'zim' | 'upload' | 'admin_docs' | 'other' + +const ADMIN_DOCS_PREFIXES = ['/app/docs/', '/app/README.md'] +const ZIM_PREFIX = '/app/storage/zim/' +const UPLOADS_PREFIX = '/app/storage/kb_uploads/' + +export function classifyKbFile(source: string): KbFileBucket { + if ( + ADMIN_DOCS_PREFIXES.some((p) => + p.endsWith('/') ? source.startsWith(p) : source === p + ) + ) { + return 'admin_docs' + } + if (source.startsWith(ZIM_PREFIX)) return 'zim' + if (source.startsWith(UPLOADS_PREFIX)) return 'upload' + return 'other' +} + +export function sourceToDisplayName(source: string): string { + const parts = source.split(/[/\\]/) + return parts[parts.length - 1] || source +} + +export interface KbFileGroup { + bucket: KbFileBucket + /** Source path used as the row's stable React key. For collapsed admin docs + * this is a synthetic marker; individual file paths live in `members`. */ + source: string + displayName: string + /** Number of underlying files this row represents (1 for non-collapsed). */ + count: number + /** All member source paths — populated for collapsed groups, empty otherwise. */ + members: string[] + /** Per-file ingestion state. `null` for the collapsed admin_docs group and + * for any source that exists in Qdrant but has no state row yet. */ + state: KbIngestStateValue | null + /** Chunks currently embedded for this source; 0 for state-row-less or + * zero-chunk files. Always 0 for the collapsed admin_docs group. */ + chunksEmbedded: number + /** File size in bytes from disk. Null for the collapsed admin_docs group, + * and for any file the scanner couldn't stat. */ + size: number | null + /** Last-modified timestamp (ISO 8601). Null for collapsed groups and for + * files the scanner couldn't stat. */ + uploadedAt: string | null + /** True when the row corresponds to a user upload — drives whether the + * view/download buttons render. False for the collapsed admin_docs group. */ + isUserUpload: boolean +} + +const BUCKET_SORT_ORDER: KbFileBucket[] = ['zim', 'upload', 'admin_docs', 'other'] + +export type KbFileSortKey = 'name' | 'size' | 'uploadedAt' +export type KbFileSortDirection = 'asc' | 'desc' +export interface KbFileSort { + key: KbFileSortKey + direction: KbFileSortDirection +} + +const DEFAULT_SORT: KbFileSort = { key: 'name', direction: 'asc' } + +function compareForSort(a: StoredFileInfo, b: StoredFileInfo, sort: KbFileSort): number { + // Files the scanner couldn't stat sort to the end regardless of direction so + // they don't pollute the top of size/uploaded-at views. + const aMissing = sort.key !== 'name' && (sort.key === 'size' ? a.size === null : a.uploadedAt === null) + const bMissing = sort.key !== 'name' && (sort.key === 'size' ? b.size === null : b.uploadedAt === null) + if (aMissing && !bMissing) return 1 + if (!aMissing && bMissing) return -1 + + let cmp = 0 + if (sort.key === 'size') { + cmp = (a.size ?? 0) - (b.size ?? 0) + } else if (sort.key === 'uploadedAt') { + cmp = (a.uploadedAt ?? '').localeCompare(b.uploadedAt ?? '') + } + if (cmp === 0) { + // Tiebreak (and primary key for 'name') is filename — keeps stable order. + cmp = sourceToDisplayName(a.source).localeCompare(sourceToDisplayName(b.source)) + } + return sort.direction === 'desc' ? -cmp : cmp +} + +/** + * Group stored-file rows into table rows for the Stored Files panel. + * + * - Admin docs (`/app/docs/*`, README) collapse into a single + * "Project NOMAD documentation · N files" row. + * - ZIMs, uploads, and others stay as individual rows, sorted within their + * bucket by the active sort key. Bucket order itself is fixed — sorting + * never flattens or reorders the groups themselves. + */ +export function groupAndSortKbFiles( + files: StoredFileInfo[], + sort: KbFileSort = DEFAULT_SORT +): KbFileGroup[] { + const buckets: Record = { + zim: [], + upload: [], + admin_docs: [], + other: [], + } + for (const file of files) { + buckets[classifyKbFile(file.source)].push(file) + } + + const groups: KbFileGroup[] = [] + + for (const bucket of BUCKET_SORT_ORDER) { + const members = buckets[bucket] + if (members.length === 0) continue + + if (bucket === 'admin_docs') { + groups.push({ + bucket, + source: '__admin_docs_group__', + displayName: `Project NOMAD documentation · ${members.length} file${members.length === 1 ? '' : 's'}`, + count: members.length, + members: members.map((m) => m.source), + state: null, + chunksEmbedded: 0, + size: null, + uploadedAt: null, + isUserUpload: false, + }) + continue + } + + for (const file of members.sort((a, b) => compareForSort(a, b, sort))) { + groups.push({ + bucket, + source: file.source, + displayName: sourceToDisplayName(file.source), + count: 1, + members: [], + state: file.state, + chunksEmbedded: file.chunksEmbedded, + size: file.size, + uploadedAt: file.uploadedAt, + isUserUpload: file.isUserUpload, + }) + } + } + + return groups +} diff --git a/admin/inertia/lib/kb_guardrail.ts b/admin/inertia/lib/kb_guardrail.ts new file mode 100644 index 0000000..28ab1a3 --- /dev/null +++ b/admin/inertia/lib/kb_guardrail.ts @@ -0,0 +1,74 @@ +/** + * Auto-index guardrail thresholds and pure decision logic (RFC #883 §7). + * + * The guardrail fires when a user is about to commit to a bulk indexing + * action (curated tier change, large multi-file upload, etc.) that would + * use a substantial amount of disk for embedding storage. It's a one-time + * confirmation step at scary thresholds — it doesn't fire for ordinary + * everyday operations. After the user confirms once for a given batch + * the action proceeds as it would have without the guardrail. + * + * Thresholds are intentionally conservative to avoid surprise consumption + * of a user's storage. Tweak both constants if the field experience + * suggests we're nagging users too aggressively. + */ + +/** Absolute upper bound: estimates at or above this trip the guardrail. */ +export const GUARDRAIL_ABSOLUTE_BYTES = 50 * 1024 * 1024 * 1024 // 50 GB + +/** Relative-to-free-disk bound: estimates >= 10% of free disk trip too. */ +export const GUARDRAIL_FREE_DISK_RATIO = 0.1 + +export type GuardrailReason = + | { + kind: 'over_absolute' + estimateBytes: number + thresholdBytes: number + } + | { + kind: 'over_free_disk' + estimateBytes: number + freeBytes: number + thresholdBytes: number + } + +export type GuardrailVerdict = { + trips: boolean + reasons: GuardrailReason[] +} + +/** + * Decide whether a bulk indexing action should be gated behind the + * guardrail modal. Caller passes the precomputed embedding-storage + * estimate (from `KbRatioRegistry.estimateBatch` in #891 / #897) and + * the free-disk figure from system info. Pass `freeBytes = 0` to skip + * the relative-disk check when free space isn't known. + */ +export function evaluateGuardrail(input: { + estimateBytes: number + freeBytes: number +}): GuardrailVerdict { + const reasons: GuardrailReason[] = [] + + if (input.estimateBytes >= GUARDRAIL_ABSOLUTE_BYTES) { + reasons.push({ + kind: 'over_absolute', + estimateBytes: input.estimateBytes, + thresholdBytes: GUARDRAIL_ABSOLUTE_BYTES, + }) + } + + if (input.freeBytes > 0) { + const relativeThreshold = input.freeBytes * GUARDRAIL_FREE_DISK_RATIO + if (input.estimateBytes >= relativeThreshold) { + reasons.push({ + kind: 'over_free_disk', + estimateBytes: input.estimateBytes, + freeBytes: input.freeBytes, + thresholdBytes: relativeThreshold, + }) + } + } + + return { trips: reasons.length > 0, reasons } +} diff --git a/admin/inertia/lib/kb_job_health_display.ts b/admin/inertia/lib/kb_job_health_display.ts new file mode 100644 index 0000000..4860a23 --- /dev/null +++ b/admin/inertia/lib/kb_job_health_display.ts @@ -0,0 +1,63 @@ +import { computeJobHealth, type JobHealthStatus } from '../../app/utils/kb_job_health.js' + +export { computeJobHealth, type JobHealthStatus } from '../../app/utils/kb_job_health.js' + +/** + * Visual presentation for each health status — pill color, dot color, and the + * short label rendered alongside the dot. Kept in one place so backend health + * decisions (`computeJobHealth`) and frontend rendering stay in sync. + */ +export const JOB_HEALTH_DISPLAY: Record< + JobHealthStatus, + { dot: string; label: string; ariaLabel: string } +> = { + waiting: { + dot: 'bg-gray-400 dark:bg-gray-500', + label: 'Waiting', + ariaLabel: 'Job is queued and waiting to start', + }, + healthy: { + dot: 'bg-green-500', + label: 'Active', + ariaLabel: 'Job is embedding at a normal rate', + }, + slow: { + dot: 'bg-yellow-500', + label: 'Slow', + ariaLabel: 'Job has not made progress for at least 2 minutes', + }, + stalled: { + dot: 'bg-red-500', + label: 'Stalled', + ariaLabel: 'Job has not made progress for at least 5 minutes', + }, + failed: { + dot: 'bg-red-700', + label: 'Failed', + ariaLabel: 'Job failed', + }, +} + +/** + * Format a relative timestamp as "Xs ago", "Xm ago", "Xh ago" with sensible + * thresholds for the KB Processing Queue's "Last activity" line. + */ +export function formatTimeAgo(timestampMs: number, now: number): string { + const seconds = Math.max(0, Math.floor((now - timestampMs) / 1000)) + if (seconds < 5) return 'just now' + if (seconds < 60) return `${seconds}s ago` + const minutes = Math.floor(seconds / 60) + if (minutes < 60) return `${minutes}m ago` + const hours = Math.floor(minutes / 60) + return `${hours}h ago` +} + +/** + * Convenience wrapper that resolves a job's health status without the caller + * having to remember to pass `now`. Mostly for ergonomic frontend use. + */ +export function computeJobHealthNow( + input: Omit[0], 'now'> +): JobHealthStatus { + return computeJobHealth({ ...input, now: Date.now() }) +} diff --git a/admin/inertia/lib/navigation.ts b/admin/inertia/lib/navigation.ts index 49040ef..88eea02 100644 --- a/admin/inertia/lib/navigation.ts +++ b/admin/inertia/lib/navigation.ts @@ -1,6 +1,39 @@ +/** + * Normalize a user-supplied custom app URL. Accepts a bare host ("jellyfin.lan", + * "10.0.0.5:8096") or a full URL; when no scheme is present, http:// is prepended + * (LAN resources are usually plain HTTP). Returns the normalized href, or null when + * the input is empty (clears the override) or not a valid http(s) URL. Restricting to + * http/https is the XSS guard — javascript:/data: URLs never make it into an href. + */ +export function normalizeCustomUrl(input: string | null | undefined): string | null { + const trimmed = (input ?? '').trim(); + if (!trimmed) return null; + const withScheme = /^https?:\/\//i.test(trimmed) ? trimmed : `http://${trimmed}`; + try { + const url = new URL(withScheme); + if (url.protocol !== 'http:' && url.protocol !== 'https:') return null; + return url.href; + } catch { + return null; + } +} + +export function getServiceLink(ui_location: string, customUrl?: string | null): string { + // A user-set custom URL (reverse proxy / local DNS) overrides the computed default. Only + // accepted when it normalizes to a valid http(s) URL — otherwise fall through to the default. + const normalizedCustom = normalizeCustomUrl(customUrl); + if (normalizedCustom) { + return normalizedCustom; + } + + // "https:8480" / "http:8480" — an explicit scheme + port served on the current host. Checked + // before the URL parse below because new URL("https:8480") would mis-parse 8480 as the host. + const schemePort = ui_location.match(/^(https?):(\d+)$/); + if (schemePort) { + return `${schemePort[1]}://${window.location.hostname}:${schemePort[2]}`; + } -export function getServiceLink(ui_location: string): string { // Check if the ui location is a valid URL try { const url = new URL(ui_location); diff --git a/admin/inertia/pages/docs/show.tsx b/admin/inertia/pages/docs/show.tsx index 27695cd..95fc696 100644 --- a/admin/inertia/pages/docs/show.tsx +++ b/admin/inertia/pages/docs/show.tsx @@ -1,8 +1,22 @@ import { Head } from '@inertiajs/react' +import { useEffect } from 'react' import MarkdocRenderer from '~/components/MarkdocRenderer' import DocsLayout from '~/layouts/DocsLayout' export default function Show({ content }: { content: any; }) { + // Deep-link support: when arriving at /docs/# (e.g. from a Supply Depot app's + // "Docs" menu item), scroll to that section. The content renders synchronously from props, so a + // double rAF lets the headings paint before we look one up. + useEffect(() => { + const hash = decodeURIComponent(window.location.hash.replace(/^#/, '')) + if (!hash) return + requestAnimationFrame(() => + requestAnimationFrame(() => { + document.getElementById(hash)?.scrollIntoView({ behavior: 'smooth', block: 'start' }) + }) + ) + }, [content]) + return ( diff --git a/admin/inertia/pages/easy-setup/index.tsx b/admin/inertia/pages/easy-setup/index.tsx index 2036faf..da97cf8 100644 --- a/admin/inertia/pages/easy-setup/index.tsx +++ b/admin/inertia/pages/easy-setup/index.tsx @@ -61,7 +61,7 @@ function buildCoreCapabilities(aiAssistantName: string): Capability[] { 'Interactive exercises and quizzes', 'Progress tracking for learners', ], - services: [SERVICE_NAMES.KOLIBRI], + services: [SERVICE_NAMES.KOLIBRI_GEN2], icon: 'IconSchool', }, { @@ -106,7 +106,7 @@ const ADDITIONAL_TOOLS: Capability[] = [ }, ] -type WizardStep = 1 | 2 | 3 | 4 +type WizardStep = 1 | 2 | 3 | 4 | 5 const CURATED_MAP_COLLECTIONS_KEY = 'curated-map-collections' const CURATED_CATEGORIES_KEY = 'curated-categories' @@ -122,6 +122,13 @@ export default function EasySetupWizard(props: { const [selectedServices, setSelectedServices] = useState([]) const [selectedMapCollections, setSelectedMapCollections] = useState([]) const [selectedAiModels, setSelectedAiModels] = useState([]) + // Auto-index policy for the AI Assistant Knowledge Base. Defaults to + // 'Always' so a new user who keeps the default behavior gets the "just + // works" experience — downloads become searchable automatically. Persisted + // to KVStore['rag.defaultIngestPolicy'] on wizard submit (same key #894's + // KB modal toggle reads/writes) so the JIT prompt at first chat sees a + // decided policy and doesn't ask again. + const [ingestPolicy, setIngestPolicy] = useState<'Always' | 'Manual'>('Always') const [isProcessing, setIsProcessing] = useState(false) const [showAdditionalTools, setShowAdditionalTools] = useState(false) const [remoteOllamaEnabled, setRemoteOllamaEnabled] = useState( @@ -192,6 +199,19 @@ export default function EasySetupWizard(props: { // Services that are already installed const installedServices = props.system.services.filter((service) => service.installed) + // Canonical "is AI part of this user's setup?" predicate (RFC #883 / issue #905). + // Single source consumed by step-indicator render, navigation skip logic, the + // review summary, and handleFinish. The AI step renders if and only if this + // is true; if false, the wizard collapses to 4 steps and the AI step is + // skipped on both forward and back nav. + const isAiInSetup = useMemo( + () => + selectedServices.includes(SERVICE_NAMES.OLLAMA) || + installedServices.some((s) => s.service_name === SERVICE_NAMES.OLLAMA) || + remoteOllamaEnabled, + [selectedServices, installedServices, remoteOllamaEnabled] + ) + const toggleMapCollection = (slug: string) => { setSelectedMapCollections((prev) => prev.includes(slug) ? prev.filter((s) => s !== slug) : [...prev, slug] @@ -306,24 +326,29 @@ export default function EasySetupWizard(props: { // Get primary disk/filesystem info for storage projection const storageInfo = getPrimaryDiskInfo(systemInfo?.disk, systemInfo?.fsSize) + // Final step number (4 when AI is off, 5 when AI is on). Centralizing this + // here so canProceedToNextStep / handleNext / handleBack / the bottom-bar + // Next-vs-Finish switch all read the same value. + const finalStep: WizardStep = isAiInSetup ? 5 : 4 + const canProceedToNextStep = () => { if (!isOnline) return false // Must be online to proceed - if (currentStep === 1) return true // Can skip app installation - if (currentStep === 2) return true // Can skip map downloads - if (currentStep === 3) return true // Can skip ZIM downloads - return false + // Every step before the review is skippable; the review step shows Finish, not Next. + return currentStep < finalStep } const handleNext = () => { - if (currentStep < 4) { - setCurrentStep((prev) => (prev + 1) as WizardStep) - } + if (currentStep >= finalStep) return + // Skip the AI step (4) on forward nav when isAiInSetup is false. + const next = currentStep === 3 && !isAiInSetup ? 5 : currentStep + 1 + setCurrentStep(next as WizardStep) } const handleBack = () => { - if (currentStep > 1) { - setCurrentStep((prev) => (prev - 1) as WizardStep) - } + if (currentStep <= 1) return + // Skip the AI step (4) on back nav when isAiInSetup is false. + const prev = currentStep === 5 && !isAiInSetup ? 3 : currentStep - 1 + setCurrentStep(prev as WizardStep) } const handleFinish = async () => { @@ -338,6 +363,21 @@ export default function EasySetupWizard(props: { setIsProcessing(true) try { + // Persist the auto-index policy choice before kicking off downloads so + // any content that finishes during this same wizard run sees the right + // policy. Skipped when AI is not in the user's setup; the KV stays null + // and the first-chat JIT prompt (#899) handles the decision later if/when + // the user enables AI. Uses the canonical isAiInSetup predicate so step + // 3 / step 4 / step 5 / handleFinish never disagree (issue #905). + if (isAiInSetup) { + try { + await api.updateSetting('rag.defaultIngestPolicy', ingestPolicy) + } catch (err) { + // Non-fatal: the user can still set the policy from the KB modal. + console.warn('Could not persist ingest policy from wizard:', err) + } + } + // If using remote Ollama, configure it first before other installs if (remoteOllamaEnabled && remoteOllamaUrl) { const remoteResult = await api.configureRemoteOllama(remoteOllamaUrl) @@ -430,12 +470,25 @@ export default function EasySetupWizard(props: { }, []) const renderStepIndicator = () => { - const steps = [ - { number: 1, label: 'Apps' }, - { number: 2, label: 'Maps' }, - { number: 3, label: 'Content' }, - { number: 4, label: 'Review' }, - ] + // `step` is the stable WizardStep value (1=Apps, 2=Maps, 3=Content, + // 4=AI, 5=Review). `displayNumber` is the sequential position shown in + // the dot (always 1..N) so users see "1 2 3 4" when AI is off and + // "1 2 3 4 5" when AI is on, with no gap. + const baseSteps: Array<{ step: WizardStep; label: string }> = isAiInSetup + ? [ + { step: 1, label: 'Apps' }, + { step: 2, label: 'Maps' }, + { step: 3, label: 'Content' }, + { step: 4, label: 'AI' }, + { step: 5, label: 'Review' }, + ] + : [ + { step: 1, label: 'Apps' }, + { step: 2, label: 'Maps' }, + { step: 3, label: 'Content' }, + { step: 5, label: 'Review' }, + ] + const steps = baseSteps.map((s, idx) => ({ ...s, displayNumber: idx + 1 })) return ( + + {isBrowsing && ( +
+
+
+ )} + + {browseError && ( + + )} + + {!isBrowsing && !browseError && browseData && ( +
+ {browseData.directories.length === 0 && browseData.files.length === 0 ? ( +

+ No directories or ZIM files found at this location. +

+ ) : ( + + + + + + + + + + {browseData.directories.map((dir) => ( + navigateToDirectory(dir.name, dir.url)} + > + + + + + ))} + {browseData.files.map((file) => ( + + + + + + ))} + +
NameSize
+ + + {dir.name} + + -- + +
+ + + {file.name} + + + {file.size_bytes ? formatBytes(file.size_bytes) : '--'} + + confirmCustomDownload(file)} + > + Download + +
+ )} +
+ )} +
+ )} + + + {/* Manage Custom Libraries Modal */} + setManageModalOpen(false)} + cancelText="Close" + > +
+
+

+ Add Kiwix mirrors or other ZIM file sources for faster downloads. +

+ + {/* Existing libraries */} + {customLibraries && customLibraries.length > 0 && ( +
+ {customLibraries.map((lib) => ( +
+
+

+ {lib.name} + {lib.is_default && ( + (built-in) + )} +

+

{lib.base_url}

+
+ {!lib.is_default && ( + + )} +
+ ))} +
+ )} + + {/* Add new library form */} +
+ setNewLibraryName(e.target.value)} + /> + setNewLibraryUrl(e.target.value)} + /> + addLibraryMutation.mutate()} + disabled={ + !newLibraryName.trim() || + !newLibraryUrl.trim() || + addLibraryMutation.isPending + } + > + Add Library + +
+
+
+
diff --git a/admin/inertia/pages/supply-depot.tsx b/admin/inertia/pages/supply-depot.tsx new file mode 100644 index 0000000..3bf700e --- /dev/null +++ b/admin/inertia/pages/supply-depot.tsx @@ -0,0 +1,1167 @@ +import { Head, router } from '@inertiajs/react' +import { useEffect, useRef, useState } from 'react' +import { + IconAlertTriangle, + IconArrowRight, + IconArrowUp, + IconBook, + IconBox, + IconBrandDocker, + IconChartBar, + IconClockBolt, + IconCloudDownload, + IconFileText, + IconPackage, + IconPencil, + IconPlayerPlay, + IconPlayerStop, + IconRefresh, + IconSearch, + IconTrash, + IconWorld, +} from '@tabler/icons-react' +import AppLayout from '~/layouts/AppLayout' +import DynamicIcon, { DynamicIconName } from '~/components/DynamicIcon' +import StyledButton from '~/components/StyledButton' +import StyledModal from '~/components/StyledModal' +import InstallActivityFeed from '~/components/InstallActivityFeed' +import LoadingSpinner from '~/components/LoadingSpinner' +import Alert from '~/components/Alert' +import CustomAppModal, { CustomAppInitial } from '~/components/CustomAppModal' +import AppUrlModal from '~/components/AppUrlModal' +import ServiceLogsModal from '~/components/ServiceLogsModal' +import ServiceStatsModal from '~/components/ServiceStatsModal' +import StyledSectionHeader from '~/components/StyledSectionHeader' +import UpdateServiceModal from '~/components/UpdateServiceModal' +import useErrorNotification from '~/hooks/useErrorNotification' +import { useNotifications } from '~/context/NotificationContext' +import useInternetStatus from '~/hooks/useInternetStatus' +import { useAppAutoUpdateStatus } from '~/hooks/useAppAutoUpdateStatus' +import useServiceInstallationActivity from '~/hooks/useServiceInstallationActivity' +import { useTransmit } from 'react-adonis-transmit' +import { BROADCAST_CHANNELS } from '../../constants/broadcast' +import { ServiceSlim } from '../../types/services' +import { getServiceLink } from '~/lib/navigation' +import { getSupplyDepotDocLink } from '../../constants/supply_depot_docs' +import api from '~/lib/api' +import { toTitleCase } from '../../app/utils/misc' +import { SERVICE_NAMES } from '../../constants/service_names' + +function extractTag(containerImage: string): string { + if (!containerImage) return '' + const parts = containerImage.split(':') + return parts.length > 1 ? parts[parts.length - 1] : 'latest' +} + +const CATEGORIES = [ + { id: 'all', label: 'All' }, + { id: 'installed', label: 'Installed' }, + { id: 'productivity', label: 'Productivity' }, + { id: 'media', label: 'Media' }, + { id: 'security', label: 'Security' }, + { id: 'networking', label: 'Networking' }, + { id: 'utility', label: 'Utility' }, + { id: 'ai', label: 'AI' }, + { id: 'education', label: 'Education' }, + { id: 'custom', label: 'Custom' }, +] + +const CATEGORY_COLORS: Record = { + productivity: 'border border-desert-green-light bg-desert-green-lighter text-desert-green-dark', + media: 'border border-desert-tan-light bg-desert-tan-lighter text-desert-tan-dark', + security: 'border border-desert-red-light bg-desert-red-lighter text-desert-red-dark', + networking: 'border border-desert-stone-light bg-desert-stone-lighter text-desert-stone-dark', + utility: 'border border-desert-olive-light bg-desert-olive-lighter text-desert-olive-dark', + ai: 'border border-desert-green bg-desert-green-light text-desert-green-darker', + education: 'border border-desert-orange-light bg-desert-orange-lighter text-desert-orange-dark', + custom: 'border border-border-subtle bg-surface-secondary text-text-secondary', +} + +type Modal = + | { type: 'install'; service: ServiceSlim } + | { type: 'start'; service: ServiceSlim } + | { type: 'stop'; service: ServiceSlim } + | { type: 'restart'; service: ServiceSlim } + | { type: 'reinstall'; service: ServiceSlim } + | { type: 'delete'; service: ServiceSlim } + | { type: 'uninstall'; service: ServiceSlim } + | { type: 'logs'; service: ServiceSlim } + | { type: 'stats'; service: ServiceSlim } + | { type: 'update'; service: ServiceSlim } + | null + +export default function SupplyDepotPage(props: { system: { services: ServiceSlim[] } }) { + const { showError } = useErrorNotification() + const { addNotification } = useNotifications() + const { isOnline } = useInternetStatus() + const { subscribe } = useTransmit() + const installActivity = useServiceInstallationActivity() + // Global master switch for app auto-updates (Settings → Updates). Per-app + // toggles are inert until this is on, so the UI reflects that state. + const { data: appAutoUpdateStatus } = useAppAutoUpdateStatus() + const appAutoUpdateMasterEnabled = appAutoUpdateStatus?.enabled ?? false + + const [activeCategory, setActiveCategory] = useState('all') + const [search, setSearch] = useState('') + const [modal, setModal] = useState(null) + const [loading, setLoading] = useState(false) + const [checkingUpdates, setCheckingUpdates] = useState(false) + const [openDropdown, setOpenDropdown] = useState(null) + const [customAppOpen, setCustomAppOpen] = useState(false) + const [editApp, setEditApp] = useState(null) + // App whose custom launch URL is being configured (null while the modal is closed). + const [urlApp, setUrlApp] = useState(null) + const [removeImage, setRemoveImage] = useState(false) + // Optimistic per-app auto-update toggle state, keyed by service_name. Lets the + // toggle reflect instantly without a full page reload (props come from Inertia). + const [autoUpdateOverrides, setAutoUpdateOverrides] = useState>({}) + + // Preflight state — scoped to the current install modal + const [preflight, setPreflight] = useState<{ + portConflicts: Array<{ port: number; usedBy: string }> + resourceWarnings: string[] + } | null>(null) + const [preflightLoading, setPreflightLoading] = useState(false) + const [forceInstall, setForceInstall] = useState(false) + + const dropdownRef = useRef(null) + + // Auto-reload when installation completes + useEffect(() => { + if (!installActivity.length) return + if (installActivity.some((a) => a.type === 'completed' || a.type === 'update-complete')) { + setTimeout(() => window.location.reload(), 3000) + } + }, [installActivity]) + + // Listen for service update-check completion (manual or nightly), then reload so + // refreshed available_update_version values surface on the cards. + useEffect(() => { + const unsubscribe = subscribe(BROADCAST_CHANNELS.SERVICE_UPDATES, () => { + setCheckingUpdates(false) + window.location.reload() + }) + return () => { + unsubscribe() + } + }, []) + + // Close dropdown on outside click + useEffect(() => { + function handleClick(e: MouseEvent) { + if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) { + setOpenDropdown(null) + } + } + document.addEventListener('mousedown', handleClick) + return () => document.removeEventListener('mousedown', handleClick) + }, []) + + // Run preflight when install modal opens + useEffect(() => { + if (modal?.type !== 'install') { + setPreflight(null) + setForceInstall(false) + return + } + setPreflightLoading(true) + api + .preflightCheck(modal.service.service_name) + .then((res) => { + if (res) setPreflight(res) + }) + .catch(() => { }) // non-fatal; proceed without warnings + .finally(() => setPreflightLoading(false)) + }, [modal]) + + // ── Filtering ───────────────────────────────────────────────────────────── + const filteredServices = props.system.services.filter((s) => { + if (activeCategory === 'installed' && !s.installed) return false + if (activeCategory !== 'all' && activeCategory !== 'installed') { + if (s.category !== activeCategory) return false + } + if (search.trim()) { + const q = search.toLowerCase() + return ( + s.friendly_name?.toLowerCase().includes(q) || + s.description?.toLowerCase().includes(q) || + s.powered_by?.toLowerCase().includes(q) || + s.category?.toLowerCase().includes(q) + ) + } + return true + }) + + const installedServices = filteredServices.filter((s) => s.installed) + const availableServices = filteredServices.filter((s) => !s.installed) + + // Whether the new Kolibri (Gen 2) install exists — gates the "Migrate content to Gen 2" action on + // the legacy Kolibri card. Computed from the full (unfiltered) list so a search filter can't hide it. + const educationGen2Installed = props.system.services.some( + (s) => s.service_name === SERVICE_NAMES.KOLIBRI_GEN2 && s.installed + ) + + // ── Actions ─────────────────────────────────────────────────────────────── + async function handleInstall(service: ServiceSlim) { + const hasWarnings = + (preflight?.portConflicts.length ?? 0) > 0 || (preflight?.resourceWarnings.length ?? 0) > 0 + + if (hasWarnings && !forceInstall) return + + // Keep the modal open with a spinning confirm button while the request is in + // flight; close it once the install job is dispatched. Progress then streams + // via the InstallActivityFeed broadcast, so we drop the loading flag here. + setLoading(true) + const result = await api.installService(service.service_name) + setModal(null) + setLoading(false) + if (!result?.success) showError(result?.message || 'Failed to start installation.') + } + + async function handleAffect(service: ServiceSlim, action: 'start' | 'stop' | 'restart') { + setLoading(true) + const result = await api.affectService(service.service_name, action) + setModal(null) + if (!result?.success) { + setLoading(false) + showError(result?.message || `Failed to ${action} service.`) + } else { + // Keep loading=true so the overlay covers the page until it reloads. + setTimeout(() => window.location.reload(), 1500) + } + } + + async function handleForceReinstall(service: ServiceSlim) { + setLoading(true) + const result = await api.forceReinstallService(service.service_name) + setModal(null) + setLoading(false) + if (!result?.success) showError(result?.message || 'Failed to start reinstall.') + } + + async function handleDelete(service: ServiceSlim) { + setLoading(true) + const result = await api.deleteCustomApp(service.service_name, removeImage) + setRemoveImage(false) + setModal(null) + if (!result?.success) { + setLoading(false) + showError(result?.message || 'Failed to delete app.') + } else { + setTimeout(() => window.location.reload(), 1000) + } + } + + async function handleUninstall(service: ServiceSlim) { + setLoading(true) + const result = await api.uninstallService(service.service_name, removeImage) + setRemoveImage(false) + setModal(null) + if (!result?.success) { + setLoading(false) + showError(result?.message || 'Failed to uninstall app.') + } else { + setTimeout(() => window.location.reload(), 1000) + } + } + + async function handleUpdate(service: ServiceSlim) { + setOpenDropdown(null) + setLoading(true) + const result = await api.updateCustomAppImage(service.service_name) + setLoading(false) + if (!result?.success) showError(result?.message || 'Failed to update app.') + else setTimeout(() => window.location.reload(), 1500) + } + + // Manual trigger for the catalog-wide update check. Results stream back over the + // SERVICE_UPDATES broadcast (handled by the effect above), which reloads the page. + async function handleCheckUpdates() { + if (!isOnline) { + showError('You must have an internet connection to check for updates.') + return + } + try { + setCheckingUpdates(true) + const response = await api.checkServiceUpdates() + if (!response?.success) throw new Error(response?.message || 'Failed to dispatch update check') + } catch (error: any) { + showError(`Failed to check for updates: ${error?.message || 'Unknown error'}`) + setCheckingUpdates(false) + } + } + + // Versioned update for a curated (non-custom) catalog app. Progress + reload are handled + // by the installActivity effect (update-complete) above. + async function handleUpdateService(service: ServiceSlim, targetVersion: string) { + setLoading(true) + const result = await api.updateService(service.service_name, targetVersion) + setLoading(false) + if (!result?.success) showError(result?.message || 'Failed to update service.') + } + + // Toggle per-app automatic updates (opt-in). Optimistically reflects the new + // state, reverting if the request fails. Gated by the global master switch in + // Settings → Updates; this only sets the per-app preference. + async function handleToggleAutoUpdate(service: ServiceSlim, enabled: boolean) { + setOpenDropdown(null) + setAutoUpdateOverrides((prev) => ({ ...prev, [service.service_name]: enabled })) + const result = await api.setServiceAutoUpdate(service.service_name, enabled) + if (!result?.success) { + setAutoUpdateOverrides((prev) => ({ ...prev, [service.service_name]: !enabled })) + showError(result?.message || 'Failed to update auto-update preference.') + return + } + const appName = service.friendly_name || service.service_name + addNotification({ + message: `Auto-updates for ${appName} are ${enabled ? 'on' : 'off'}.`, + type: 'success', + }) + } + + function handleCustomAppCreated() { + setCustomAppOpen(false) + // Page will reload when installation completes via broadcast + } + + async function handleEdit(service: ServiceSlim) { + setOpenDropdown(null) + setLoading(true) + const res = await api.getCustomApp(service.service_name) + setLoading(false) + if (res?.success && res.app) { + setEditApp(res.app) + } else { + showError('Could not load this app for editing.') + } + } + + function handleEdited() { + setEditApp(null) + setTimeout(() => window.location.reload(), 1500) + } + + function handleSetUrl(service: ServiceSlim) { + setOpenDropdown(null) + setUrlApp(service) + } + + function handleUrlSaved() { + setUrlApp(null) + // Reload so the new link flows through to the card, /home, and settings. + window.location.reload() + } + + // ── Install modal helpers ───────────────────────────────────────────────── + const hasPreflightWarnings = + (preflight?.portConflicts.length ?? 0) > 0 || (preflight?.resourceWarnings.length ?? 0) > 0 + + return ( + + + + {loading && !modal && } + +
+ {!isOnline && ( + + )} + + {/* ── Hero / controls panel ─────────────────────────────────────────── */} +
+ {/* Green header band */} +
+ {/* Diagonal line pattern */} +
+
+
+
+
+ +
+

+ Supply Depot +

+

+ Browse and install curated apps, or add your own custom apps by providing a Docker + image. +

+
+
+
+ + {/* Controls body */} +
+ {/* Activity feed (shown only while installing) */} + {installActivity.length > 0 && ( + + )} + + {/* Search + Add Custom App */} +
+
+ + setSearch(e.target.value)} + className="w-full pl-9 pr-4 py-2 rounded-md bg-surface-secondary border border-desert-stone-lighter text-text-primary text-sm focus:outline-none focus:ring-1 focus:ring-desert-green placeholder:text-text-muted/50" + /> +
+ + Check for Updates + + setCustomAppOpen(true)} + > + Add Custom App + +
+ + {/* Category filters */} +
+ {CATEGORIES.map((cat) => ( + + ))} +
+
+ + {/* Bottom accent bar */} +
+
+ + {/* App cards */} + {filteredServices.length === 0 ? ( +
+ +

No apps match your filter.

+
+ ) : ( +
+ {installedServices.length > 0 && ( +
+ +
+ {installedServices.map((service) => ( + setModal({ type: 'install', service })} + onStart={() => setModal({ type: 'start', service })} + onStop={() => setModal({ type: 'stop', service })} + onRestart={() => setModal({ type: 'restart', service })} + onReinstall={() => setModal({ type: 'reinstall', service })} + onDelete={() => setModal({ type: 'delete', service })} + onUninstall={() => setModal({ type: 'uninstall', service })} + onLogs={() => setModal({ type: 'logs', service })} + onStats={() => setModal({ type: 'stats', service })} + onEdit={() => handleEdit(service)} + onSetUrl={() => handleSetUrl(service)} + onUpdate={() => handleUpdate(service)} + onUpdateVersion={() => setModal({ type: 'update', service })} + autoUpdateEnabled={ + autoUpdateOverrides[service.service_name] ?? service.auto_update_enabled + } + autoUpdateMasterEnabled={appAutoUpdateMasterEnabled} + onToggleAutoUpdate={(enabled) => handleToggleAutoUpdate(service, enabled)} + migrationInstructionsHref={(service.service_name.startsWith(SERVICE_NAMES.KOLIBRI) && educationGen2Installed) ? getSupplyDepotDocLink(SERVICE_NAMES.KOLIBRI) || undefined : undefined} + migrationInstructionsText={(service.service_name === SERVICE_NAMES.KOLIBRI) ? 'How to migrate content to Gen 2' : "How to migrate content from Gen 1"} + /> + ))} +
+
+ )} + + {availableServices.length > 0 && ( +
+ +
+ {availableServices.map((service) => ( + setModal({ type: 'install', service })} + onStart={() => setModal({ type: 'start', service })} + onStop={() => setModal({ type: 'stop', service })} + onRestart={() => setModal({ type: 'restart', service })} + onReinstall={() => setModal({ type: 'reinstall', service })} + onDelete={() => setModal({ type: 'delete', service })} + onUninstall={() => setModal({ type: 'uninstall', service })} + onLogs={() => setModal({ type: 'logs', service })} + onStats={() => setModal({ type: 'stats', service })} + onEdit={() => handleEdit(service)} + onSetUrl={() => handleSetUrl(service)} + onUpdate={() => handleUpdate(service)} + onUpdateVersion={() => setModal({ type: 'update', service })} + /> + ))} +
+
+ )} +
+ )} +
+ + {/* ── Modals ─────────────────────────────────────────────────────────── */} + + {/* Install modal */} + {modal?.type === 'install' && ( + { + if (loading) return + setModal(null) + }} + onConfirm={() => handleInstall(modal.service)} + confirmText="Install" + confirmIcon="IconDownload" + confirmVariant="primary" + confirmLoading={loading} + > +
+

+ This will download and start {modal.service.friendly_name} + {modal.service.ui_location && ( + <> on port {modal.service.ui_location} + )}. +

+ {modal.service.powered_by && ( +

Powered by {modal.service.powered_by}

+ )} + + {preflightLoading && ( +
+ + Checking for conflicts… +
+ )} + + {!preflightLoading && preflight && hasPreflightWarnings && ( +
+ {preflight.portConflicts.map((c) => ( + + ))} + {preflight.resourceWarnings.map((w, i) => ( + + ))} + +
+ )} +
+
+ )} + + {/* Start modal */} + {modal?.type === 'start' && ( + { + if (loading) return + setModal(null) + }} + onConfirm={() => handleAffect(modal.service, 'start')} + confirmText="Start" + confirmIcon="IconPlayerPlay" + confirmVariant="primary" + confirmLoading={loading} + > +

This will start the container.

+
+ )} + + {/* Stop modal */} + {modal?.type === 'stop' && ( + { + if (loading) return + setModal(null) + }} + onConfirm={() => handleAffect(modal.service, 'stop')} + confirmText="Stop" + confirmIcon="IconPlayerStop" + confirmVariant="action" + confirmLoading={loading} + > +

The container will be stopped. Your data is preserved.

+
+ )} + + {/* Restart modal */} + {modal?.type === 'restart' && ( + { + if (loading) return + setModal(null) + }} + onConfirm={() => handleAffect(modal.service, 'restart')} + confirmText="Restart" + confirmIcon="IconRefresh" + confirmVariant="action" + confirmLoading={loading} + > +

The container will be briefly stopped and restarted.

+
+ )} + + {/* Force reinstall modal */} + {modal?.type === 'reinstall' && ( + { + if (loading) return + setModal(null) + }} + onConfirm={() => handleForceReinstall(modal.service)} + confirmText="Wipe & Reinstall" + confirmIcon="IconRefresh" + confirmVariant="danger" + confirmLoading={loading} + icon={} + > +
+

This will delete all app data and cannot be undone.

+

The container and its associated volumes will be removed, then a fresh installation will begin.

+
+
+ )} + + {/* Delete custom app modal */} + {modal?.type === 'delete' && ( + { + if (loading) return + setRemoveImage(false) + setModal(null) + }} + onConfirm={() => handleDelete(modal.service)} + confirmText="Delete" + confirmIcon="IconTrash" + confirmVariant="danger" + confirmLoading={loading} + icon={} + > +
+

This will permanently remove this custom app.

+

The container will be stopped and removed. Host volume data will remain on disk.

+ +
+
+ )} + + {/* Uninstall curated app modal */} + {modal?.type === 'uninstall' && ( + { + if (loading) return + setRemoveImage(false) + setModal(null) + }} + onConfirm={() => handleUninstall(modal.service)} + confirmText="Uninstall" + confirmIcon="IconTrash" + confirmVariant="danger" + confirmLoading={loading} + icon={} + > +
+

This will remove the app from this device.

+

The container will be stopped and removed, and the app returns to the catalog below. App data under the storage folder stays on disk, so reinstalling brings it back as it was.

+ +
+
+ )} + + {/* Logs modal */} + {modal?.type === 'logs' && ( + setModal(null)} + /> + )} + + {/* Stats modal */} + {modal?.type === 'stats' && ( + setModal(null)} + /> + )} + + {/* Versioned update modal (curated apps with an available update) */} + {modal?.type === 'update' && ( + { + if (loading) return + setModal(null) + }} + onUpdate={(targetVersion) => { + const service = modal.service + setModal(null) + handleUpdateService(service, targetVersion) + }} + showError={showError} + /> + )} + + {/* Custom app creation modal */} + setCustomAppOpen(false)} + onCreated={handleCustomAppCreated} + showError={showError} + /> + + {/* Custom app edit modal */} + setEditApp(null)} + onCreated={handleEdited} + showError={showError} + /> + + {/* Custom launch URL modal */} + setUrlApp(null)} + onSaved={handleUrlSaved} + showError={showError} + /> + + ) +} + +// ── App Card component ──────────────────────────────────────────────────────── + +interface AppCardProps { + service: ServiceSlim + openDropdown: string | null + dropdownRef: React.RefObject + onOpenDropdown: (name: string | null) => void + onInstall: () => void + onStart: () => void + onStop: () => void + onRestart: () => void + onReinstall: () => void + onDelete: () => void + onUninstall: () => void + onLogs: () => void + onStats: () => void + onEdit: () => void + onSetUrl: () => void + onUpdate: () => void + onUpdateVersion: () => void + // Installed-only: per-app auto-update preference + toggle handler. + autoUpdateEnabled?: boolean + // Global master switch (Settings → Updates). When off, per-app toggles are inert. + autoUpdateMasterEnabled?: boolean + onToggleAutoUpdate?: (enabled: boolean) => void + migrationInstructionsHref?: string + migrationInstructionsText?: string +} + +function AppCard({ + service, + openDropdown, + dropdownRef, + onOpenDropdown, + onInstall, + onStart, + onStop, + onRestart, + onReinstall, + onDelete, + onUninstall, + onLogs, + onStats, + onEdit, + onSetUrl, + onUpdate, + onUpdateVersion, + autoUpdateEnabled, + autoUpdateMasterEnabled, + onToggleAutoUpdate, + migrationInstructionsHref, + migrationInstructionsText, +}: AppCardProps) { + const isRunning = service.status === 'running' + const isStopped = service.installed && !isRunning + const catColor = service.category ? CATEGORY_COLORS[service.category] ?? CATEGORY_COLORS.custom : CATEGORY_COLORS.custom + const isDropdownOpen = openDropdown === service.service_name + // Port pill: an ui_location may carry an explicit scheme ("https:8480") — show just the port, + // with a lock when it's served over HTTPS, rather than the raw "https:8480" string. + const uiIsPath = !!service.ui_location && service.ui_location.startsWith('/') + const uiIsHttps = /^https:/.test(service.ui_location || '') + const uiPort = service.ui_location && !uiIsPath ? service.ui_location.replace(/^https?:/, '') : null + // Per-app documentation link (in-app docs page, anchored to this app's section). Null for apps + // without a doc section (custom apps, undocumented catalog apps) so the Docs item is hidden. + const docLink = getSupplyDepotDocLink(service.service_name) + + // Subtitle under the app name: the powered-by name plus the installed image tag + // (e.g. "Kiwix · 3.7.0"). Only installed apps have a meaningful running version; a + // not-yet-installed catalog entry shows just the powered-by name. Null when neither exists. + const version = service.installed ? extractTag(service.container_image) : '' + const subtitle = + !service.powered_by && !version ? null : ( +

+ {service.powered_by} + {service.powered_by && version ? ' · ' : ''} + {version ? {version} : null} +

+ ) + + function toggleDropdown(e: React.MouseEvent) { + e.stopPropagation() + onOpenDropdown(isDropdownOpen ? null : service.service_name) + } + + return ( +
+ {/* Installed accent spine (rounded to follow the card corners — the card no longer clips + overflow so the Manage dropdown can open above the card without being cut off) */} + {service.installed ? ( +
+ ) : null} + + {/* Top row: icon + status badge */} +
+
+
+ {service.icon ? ( + + ) : ( + + )} +
+
+

+ {service.friendly_name ?? service.service_name} +

+ {subtitle} +
+
+ + {/* Status indicator */} +
+ {service.installation_status === 'installing' ? ( + + + Installing + + ) : isRunning ? ( + + + Running + + ) : isStopped ? ( + + + Stopped + + ) : null} +
+
+ + {/* Description */} + {service.description && ( +

+ {service.description} +

+ )} + + {/* Metadata row: category badge + port pill */} +
+ {service.category && ( + + {toTitleCase(service.category)} + + )} + {service.is_custom ? ( + + custom + + ) : null} + {service.is_user_modified && !service.is_custom ? ( + + modified + + ) : null} + {service.is_deprecated ? ( + + legacy + + ) : null} + {uiPort && ( + + {uiIsHttps ? '🔒 ' : ''}:{uiPort} + + )} + {service.available_update_version && !service.is_custom && ( + + )} +
+ + {/* Action buttons */} +
+ {!service.installed && service.installation_status !== 'installing' && ( + + Install + + )} + + {service.installed ? ( + <> + {/* Open button — shown when the app has a default location or a user-set custom URL */} + {(service.ui_location || service.custom_url) && ( + + + Open + + + )} + + {/* Manage dropdown */} +
+ + Manage + + + {isDropdownOpen && ( +
+ {docLink && ( + e.stopPropagation()} + className="flex items-center gap-2 w-full px-3 py-2 text-xs transition-colors text-left cursor-pointer text-text-primary hover:bg-surface-secondary" + > + + Docs + + )} + {isStopped && ( + } label="Start" onClick={onStart} /> + )} + {isRunning && ( + } label="Stop" onClick={onStop} /> + )} + } label="Restart" onClick={onRestart} /> + } label="Logs" onClick={onLogs} /> + } label="Stats" onClick={onStats} /> + } label="Edit" onClick={onEdit} /> + } label="Set custom URL" onClick={onSetUrl} /> + { + migrationInstructionsHref ? ( + e.stopPropagation()} + className="flex items-center gap-2 w-full px-3 py-2 text-xs transition-colors text-left cursor-pointer text-text-primary hover:bg-surface-secondary" + > + + {migrationInstructionsText || 'Migration instructions'} + + ) : (null) + } + {!service.is_custom && onToggleAutoUpdate ? ( + autoUpdateMasterEnabled ? ( + + } + label={`Auto-update: ${autoUpdateEnabled ? 'On' : 'Off'}`} + onClick={() => onToggleAutoUpdate(!autoUpdateEnabled)} + /> + ) : ( + } + label="App auto-updates off — open Settings" + onClick={() => router.visit('/settings/update')} + /> + ) + ) : null} + {service.available_update_version && !service.is_custom ? ( + } + label={`Update to ${service.available_update_version}`} + onClick={onUpdateVersion} + /> + ) : null} + {service.is_custom ? ( + } label="Update (pull latest)" onClick={onUpdate} /> + ) : null} + } label="Force Reinstall" onClick={onReinstall} danger /> + {service.is_custom ? ( + } label="Delete" onClick={onDelete} danger /> + ) : ( + } label="Uninstall" onClick={onUninstall} danger /> + )} +
+ )} +
+ + ) : null} + + {service.installation_status === 'installing' && ( +
+ + In progress… +
+ )} +
+
+ ) +} + +function DropdownItem({ + icon, + label, + onClick, + danger = false, +}: { + icon: React.ReactNode + label: string + onClick: () => void + danger?: boolean +}) { + return ( + + ) +} diff --git a/admin/package-lock.json b/admin/package-lock.json index d34cc88..0a18db6 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -7,102 +7,105 @@ "": { "name": "project-nomad-admin", "version": "0.0.0", - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "@adonisjs/auth": "^9.4.0", - "@adonisjs/core": "^6.18.0", - "@adonisjs/cors": "^2.2.1", - "@adonisjs/inertia": "^3.1.1", - "@adonisjs/lucid": "^21.8.2", - "@adonisjs/session": "^7.5.1", - "@adonisjs/shield": "^8.2.0", - "@adonisjs/static": "^1.1.1", - "@adonisjs/transmit": "^2.0.2", - "@adonisjs/transmit-client": "^1.0.0", - "@adonisjs/vite": "^4.0.0", - "@chonkiejs/core": "^0.0.7", - "@headlessui/react": "^2.2.4", - "@inertiajs/react": "^2.0.13", - "@markdoc/markdoc": "^0.5.2", - "@openzim/libzim": "^4.0.0", - "@protomaps/basemaps": "^5.7.0", - "@qdrant/js-client-rest": "^1.16.2", - "@tabler/icons-react": "^3.34.0", - "@tailwindcss/vite": "^4.1.10", - "@tanstack/react-query": "^5.81.5", - "@tanstack/react-query-devtools": "^5.83.0", - "@tanstack/react-virtual": "^3.13.12", - "@uppy/core": "^5.2.0", - "@uppy/dashboard": "^5.1.0", - "@uppy/react": "^5.1.1", - "@vinejs/vine": "^3.0.1", - "@vitejs/plugin-react": "^4.6.0", - "autoprefixer": "^10.4.21", - "axios": "^1.13.5", - "better-sqlite3": "^12.1.1", - "bullmq": "^5.65.1", - "cheerio": "^1.2.0", - "compression": "^1.8.1", - "dockerode": "^4.0.7", - "edge.js": "^6.2.1", - "fast-xml-parser": "^5.5.7", - "fuse.js": "^7.1.0", - "jszip": "^3.10.1", - "luxon": "^3.6.1", - "maplibre-gl": "^4.7.1", - "mysql2": "^3.14.1", - "ollama": "^0.6.3", - "openai": "^6.27.0", - "pdf-parse": "^2.4.5", - "pdf2pic": "^3.2.0", - "pino-pretty": "^13.0.0", - "pmtiles": "^4.4.0", - "postcss": "^8.5.6", - "react": "^19.1.0", - "react-adonis-transmit": "^1.0.1", - "react-dom": "^19.1.0", - "react-map-gl": "^8.1.0", - "react-markdown": "^10.1.0", - "reflect-metadata": "^0.2.2", - "remark-gfm": "^4.0.1", - "sharp": "^0.34.5", - "stopword": "^3.1.5", - "systeminformation": "^5.31.0", - "tailwindcss": "^4.2.1", - "tar": "^7.5.11", - "tesseract.js": "^7.0.0", - "url-join": "^5.0.0", - "yaml": "^2.8.3" + "@adonisjs/auth": "9.6.0", + "@adonisjs/core": "6.19.3", + "@adonisjs/cors": "2.2.1", + "@adonisjs/inertia": "3.1.1", + "@adonisjs/lucid": "21.8.2", + "@adonisjs/session": "7.7.1", + "@adonisjs/shield": "8.2.0", + "@adonisjs/static": "1.1.1", + "@adonisjs/transmit": "2.0.2", + "@adonisjs/transmit-client": "1.1.0", + "@adonisjs/vite": "4.0.0", + "@chonkiejs/core": "0.0.7", + "@headlessui/react": "2.2.9", + "@inertiajs/react": "2.3.13", + "@markdoc/markdoc": "0.5.4", + "@openzim/libzim": "4.0.0", + "@protomaps/basemaps": "5.7.0", + "@qdrant/js-client-rest": "1.16.2", + "@tabler/icons-react": "3.36.1", + "@tailwindcss/vite": "4.3.0", + "@tanstack/react-query": "5.90.20", + "@tanstack/react-query-devtools": "5.91.3", + "@tanstack/react-virtual": "3.13.18", + "@uppy/core": "5.2.0", + "@uppy/dashboard": "5.1.0", + "@uppy/react": "5.1.1", + "@uppy/xhr-upload": "5.2.0", + "@vinejs/vine": "3.0.1", + "@vitejs/plugin-react": "4.7.0", + "autoprefixer": "10.5.0", + "axios": "1.17.0", + "better-sqlite3": "12.6.2", + "bullmq": "5.77.6", + "cheerio": "1.2.0", + "compression": "1.8.1", + "dockerode": "4.0.9", + "edge.js": "6.4.0", + "fast-xml-parser": "5.7.0", + "fuse.js": "7.1.0", + "ioredis": "5.10.1", + "ipaddr.js": "2.4.0", + "jszip": "3.10.1", + "luxon": "3.7.2", + "maplibre-gl": "4.7.1", + "mysql2": "3.22.5", + "ollama": "0.6.3", + "openai": "6.38.0", + "pdf-parse": "2.4.5", + "pdf2pic": "3.2.0", + "pino-pretty": "13.1.3", + "pmtiles": "4.4.0", + "postcss": "8.5.15", + "react": "19.2.7", + "react-adonis-transmit": "1.0.1", + "react-dom": "19.2.7", + "react-map-gl": "8.1.0", + "react-markdown": "10.1.0", + "reflect-metadata": "0.2.2", + "remark-gfm": "4.0.1", + "sharp": "0.34.5", + "stopword": "3.1.5", + "systeminformation": "5.31.6", + "tailwindcss": "4.2.2", + "tar": "7.5.11", + "tesseract.js": "7.0.0", + "url-join": "5.0.0", + "yaml": "2.8.3" }, "devDependencies": { - "@adonisjs/assembler": "^7.8.2", - "@adonisjs/eslint-config": "^2.0.0", - "@adonisjs/prettier-config": "^1.4.4", - "@adonisjs/tsconfig": "^1.4.0", - "@japa/assert": "^4.0.1", - "@japa/plugin-adonisjs": "^4.0.0", - "@japa/runner": "^4.2.0", + "@adonisjs/assembler": "7.8.2", + "@adonisjs/eslint-config": "2.1.2", + "@adonisjs/prettier-config": "1.4.5", + "@adonisjs/tsconfig": "1.4.1", + "@japa/assert": "4.2.0", + "@japa/plugin-adonisjs": "4.0.0", + "@japa/runner": "4.5.0", "@swc/core": "1.11.24", - "@tanstack/eslint-plugin-query": "^5.81.2", - "@types/compression": "^1.8.1", - "@types/dockerode": "^4.0.1", - "@types/luxon": "^3.6.2", - "@types/node": "^22.15.18", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", - "@types/stopword": "^2.0.3", - "eslint": "^9.26.0", - "hot-hook": "^0.4.0", - "prettier": "^3.5.3", - "ts-node-maintained": "^10.9.5", - "typescript": "~5.8.3", - "vite": "^6.4.1" + "@tanstack/eslint-plugin-query": "5.91.4", + "@types/compression": "1.8.1", + "@types/dockerode": "4.0.1", + "@types/luxon": "3.7.1", + "@types/node": "22.19.7", + "@types/react": "19.2.10", + "@types/react-dom": "19.2.3", + "@types/stopword": "2.0.3", + "eslint": "9.39.2", + "hot-hook": "0.4.0", + "prettier": "3.8.1", + "ts-node-maintained": "10.9.6", + "typescript": "5.8.3", + "vite": "6.4.2" } }, "node_modules/@adobe/css-tools": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", - "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.5.0.tgz", + "integrity": "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==", "dev": true, "license": "MIT" }, @@ -219,9 +222,9 @@ } }, "node_modules/@adonisjs/bodyparser": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/@adonisjs/bodyparser/-/bodyparser-10.1.3.tgz", - "integrity": "sha512-FtxUbVYDHrW94z4+w1dOTq31TLkD3wAoyVVCQLY9irNOBrjSH9ucKP4tq8tq2jeQffoRh3R2j7jp2VW8psSQcA==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@adonisjs/bodyparser/-/bodyparser-10.1.5.tgz", + "integrity": "sha512-eioO/rdmjzujIe6ZlSOdnEWh/GFyqQC6l+TzowYA5ukOhMw2LGd+ruZt+Frm/zHtwdzRraciVFSx7zGYRh4XkA==", "license": "MIT", "dependencies": { "@paralleldrive/cuid2": "^2.2.2", @@ -341,9 +344,9 @@ "license": "MIT" }, "node_modules/@adonisjs/core/node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", + "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", "license": "MIT", "engines": { "node": ">=18" @@ -408,13 +411,13 @@ } }, "node_modules/@adonisjs/eslint-plugin": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@adonisjs/eslint-plugin/-/eslint-plugin-2.2.1.tgz", - "integrity": "sha512-FlMAjhWYOHpWtzQY8+VLtXHyHJ6ts15PCZ2xgSH7OcKsBiwQSEUPXH6nGiY0hlG09Li/Jqco4fEhmrf7KEi4jQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@adonisjs/eslint-plugin/-/eslint-plugin-2.2.2.tgz", + "integrity": "sha512-OAIrljEpbhyikG+BQ8r7195GoRDPmMEBUfSfr6ajM6IPtQMPAb/oKzeXF8XTy2CxupUoGhMd2n8+sx/pgL1m4g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.51.0", + "@typescript-eslint/utils": "^8.56.0", "micromatch": "^4.0.8", "read-package-up": "^12.0.0" }, @@ -422,7 +425,7 @@ "node": ">=20.6.0" }, "peerDependencies": { - "eslint": "^9.9.1" + "eslint": "^9.9.1 || ^10.0.0" } }, "node_modules/@adonisjs/events": { @@ -469,9 +472,9 @@ } }, "node_modules/@adonisjs/fold/node_modules/@poppinss/utils": { - "version": "7.0.0-next.6", - "resolved": "https://registry.npmjs.org/@poppinss/utils/-/utils-7.0.0-next.6.tgz", - "integrity": "sha512-1OQDbCKmFROvWpmzvkQV/mCzBXSwhED8SJfJ0HiYKiLNEqYM8Kpa4EK0AfmXGQc+DdIj6eqib/vT8i5tJ2fatw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@poppinss/utils/-/utils-7.0.1.tgz", + "integrity": "sha512-mveSvLI2YPC114mK5HCuSYfUtjpClf1wHG1VCqZJCp4U2ypPhIt62Iku5urh0kPAFvnvCVHx2bXBSH14qMTOlQ==", "license": "MIT", "dependencies": { "@poppinss/exception": "^1.2.3", @@ -520,9 +523,9 @@ } }, "node_modules/@adonisjs/http-server": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@adonisjs/http-server/-/http-server-7.8.0.tgz", - "integrity": "sha512-aVMOpExPDNwxjnKGnc4g4sJTIQC3CfNwzWfPFWJm4WnAGXxdI3OxI2zU9FTopB50y0OVK3dWO4/c1Fu6U4vjWQ==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@adonisjs/http-server/-/http-server-7.8.1.tgz", + "integrity": "sha512-ScwKHJstXQbkQXSNqD6MOESowZ+WhRyDXxjSQV/T7IpyMEg/F8NxpR5jAvrpw1BaGzd3t50LrgTrb7ouD8DOpA==", "license": "MIT", "dependencies": { "@paralleldrive/cuid2": "^2.2.2", @@ -861,12 +864,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -875,29 +878,29 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -923,13 +926,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz", - "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -939,13 +942,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -964,36 +967,36 @@ } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1003,61 +1006,61 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.0" + "@babel/types": "^7.29.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -1067,12 +1070,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1082,12 +1085,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1097,31 +1100,31 @@ } }, "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", "debug": "^4.3.1" }, "engines": { @@ -1129,13 +1132,13 @@ } }, "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1148,9 +1151,9 @@ "license": "Apache-2.0" }, "node_modules/@borewit/text-codec": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", - "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", "license": "MIT", "funding": { "type": "github", @@ -1195,46 +1198,60 @@ } }, "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.1.tgz", - "integrity": "sha512-fRHyv6/f542qQqiRGalrfJl/evD39mAvbJLCekPazhiextEatq1Jx1K/i9gSd5NNO0ds03ek0Cbo/4uVKmOBcw==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.2.0.tgz", + "integrity": "sha512-ssJFvn/UXhQQeICw3SR/fZPmYVj+JM2mP+Lx7bZ51cOeHaMWOKp3AUMuyM3QR82aFFXTfcAp67P5GpPjGmbZWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@chevrotain/gast": "11.1.1", - "@chevrotain/types": "11.1.1", + "@chevrotain/gast": "11.2.0", + "@chevrotain/types": "11.2.0", "lodash-es": "4.17.23" } }, + "node_modules/@chevrotain/cst-dts-gen/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "dev": true, + "license": "MIT" + }, "node_modules/@chevrotain/gast": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.1.tgz", - "integrity": "sha512-Ko/5vPEYy1vn5CbCjjvnSO4U7GgxyGm+dfUZZJIWTlQFkXkyym0jFYrWEU10hyCjrA7rQtiHtBr0EaZqvHFZvg==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.2.0.tgz", + "integrity": "sha512-c+KoD6eSI1xjAZZoNUW+V0l13UEn+a4ShmUrjIKs1BeEWCji0Kwhmqn5FSx1K4BhWL7IQKlV7wLR4r8lLArORQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@chevrotain/types": "11.1.1", + "@chevrotain/types": "11.2.0", "lodash-es": "4.17.23" } }, + "node_modules/@chevrotain/gast/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "dev": true, + "license": "MIT" + }, "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.1.tgz", - "integrity": "sha512-ctRw1OKSXkOrR8VTvOxrQ5USEc4sNrfwXHa1NuTcR7wre4YbjPcKw+82C2uylg/TEwFRgwLmbhlln4qkmDyteg==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.2.0.tgz", + "integrity": "sha512-lG73pBFqbXODTbXhdZwv0oyUaI+3Irm+uOv5/W79lI3g5hasYaJnVJOm3H2NkhA0Ef4XLBU4Scr7TJDJwgFkAw==", "dev": true, "license": "Apache-2.0" }, "node_modules/@chevrotain/types": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.1.tgz", - "integrity": "sha512-wb2ToxG8LkgPYnKe9FH8oGn3TMCBdnwiuNC5l5y+CtlaVRbCytU0kbVsk6CGrqTL4ZN4ksJa0TXOYbxpbthtqw==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.2.0.tgz", + "integrity": "sha512-vBMSj/lz/LqolbGQEHB0tlpW5BnljHVtp+kzjQfQU+5BtGMTuZCPVgaAjtKvQYXnHb/8i/02Kii00y0tsuwfsw==", "dev": true, "license": "Apache-2.0" }, "node_modules/@chevrotain/utils": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.1.tgz", - "integrity": "sha512-71eTYMzYXYSFPrbg/ZwftSaSDld7UYlS8OQa3lNnn9jzNtpFbaReRRyghzqS7rI3CDaorqpPJJcXGHK+FE1TVQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.2.0.tgz", + "integrity": "sha512-+7whECg4yNWHottjvr2To2BRxL4XJVjIyyv5J4+bJ0iMOVU8j/8n1qPDLZS/90W/BObDR8VNL46lFbzY/Hosmw==", "dev": true, "license": "Apache-2.0" }, @@ -1286,9 +1303,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.0.tgz", + "integrity": "sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==", "license": "MIT", "optional": true, "dependencies": { @@ -1754,24 +1771,31 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "dev": true, "license": "MIT", "dependencies": { @@ -1819,20 +1843,20 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", + "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -1842,10 +1866,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "dev": true, "license": "MIT", "dependencies": { @@ -1920,22 +1951,22 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz", - "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.10" + "@floating-ui/utils": "^0.2.11" } }, "node_modules/@floating-ui/dom": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz", - "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.7.4", - "@floating-ui/utils": "^0.2.10" + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" } }, "node_modules/@floating-ui/react": { @@ -1954,12 +1985,12 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.7.tgz", - "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.7.5" + "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", @@ -1967,15 +1998,15 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", "license": "MIT" }, "node_modules/@grpc/grpc-js": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", - "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.8.0", @@ -1986,14 +2017,14 @@ } }, "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", - "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.1.tgz", + "integrity": "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==", "license": "Apache-2.0", "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", - "protobufjs": "^7.5.3", + "protobufjs": "^7.5.5", "yargs": "^17.7.2" }, "bin": { @@ -2042,29 +2073,43 @@ } }, "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -2094,9 +2139,9 @@ } }, "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", "license": "MIT", "engines": { "node": ">=18" @@ -2185,6 +2230,9 @@ "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2201,6 +2249,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2217,6 +2268,9 @@ "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2233,6 +2287,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2249,6 +2306,9 @@ "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2265,6 +2325,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2281,6 +2344,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2297,6 +2363,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2313,6 +2382,9 @@ "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2335,6 +2407,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2357,6 +2432,9 @@ "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2379,6 +2457,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2401,6 +2482,9 @@ "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2423,6 +2507,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2445,6 +2532,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2467,6 +2557,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2587,10 +2680,37 @@ "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/@internationalized/date": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.2.tgz", + "integrity": "sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.7.tgz", + "integrity": "sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.9.tgz", + "integrity": "sha512-kzP/M/mbQxODlmOt4bIQZ2SBVUWUSqMLXooXixnX7noche8WHaQcA+nwFN1K2KCF/cp+LDUhcJsCicwkvhD1pg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, "node_modules/@ioredis/commands": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.0.tgz", - "integrity": "sha512-eUgLqrMf8nJkZxT24JvVRrQya1vZkQh8BBeYNwGDqa5I0VUi8ACx7uFvAaLxintokpTenkK6DASvo/bvNbBGow==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.1.tgz", + "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==", "license": "MIT" }, "node_modules/@isaacs/cliui": { @@ -2658,12 +2778,12 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -2721,22 +2841,67 @@ } }, "node_modules/@japa/core": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@japa/core/-/core-10.3.0.tgz", - "integrity": "sha512-+vaqMiPnVaxlKH1sAwRQ80AwzlPysPKivhB8q1I2+BGe35lNrfiHKGMC52fuGAZBNuH5W2nInSCxr4cN/BTEIQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@japa/core/-/core-10.4.0.tgz", + "integrity": "sha512-1zvKL29i7r/4jqTNBsw91hk1tp6wbqFXvyV2p+Og4axDRhIXjSAfauRvBL9QuB80bOa+pDIMQ5kCTaCplSm0Eg==", "devOptional": true, "license": "MIT", "dependencies": { - "@poppinss/hooks": "^7.2.5", - "@poppinss/macroable": "^1.0.4", - "@poppinss/string": "^1.2.0", + "@poppinss/hooks": "^7.3.0", + "@poppinss/macroable": "^1.1.0", + "@poppinss/string": "^1.7.1", "async-retry": "^1.3.3", - "emittery": "^1.0.3", - "string-width": "^7.2.0", - "time-span": "^5.1.0" + "emittery": "^1.2.0", + "string-width": "^8.1.0" }, "engines": { - "node": ">=18.16.0" + "node": ">=24.0.0" + } + }, + "node_modules/@japa/core/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@japa/core/node_modules/string-width": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@japa/core/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@japa/errors-printer": { @@ -2755,17 +2920,29 @@ "node": ">=18.16.0" } }, - "node_modules/@japa/errors-printer/node_modules/youch": { - "version": "4.1.0-beta.13", - "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.13.tgz", - "integrity": "sha512-3+AG1Xvt+R7M7PSDudhbfbwiyveW6B8PLBIwTyEC598biEYIjHhC89i6DBEvR0EZUjGY3uGSnC429HpIa2Z09g==", + "node_modules/@japa/errors-printer/node_modules/@poppinss/dumper": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.7.0.tgz", + "integrity": "sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==", "devOptional": true, "license": "MIT", "dependencies": { "@poppinss/colors": "^4.1.5", - "@poppinss/dumper": "^0.6.5", - "@speed-highlight/core": "^1.2.9", - "cookie-es": "^2.0.0", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@japa/errors-printer/node_modules/youch": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.1.tgz", + "integrity": "sha512-mxW3qiSnl+GRxXsaUMzv2Mbada1Y8CDltET9UxejDQe6DBYlSekghl5U5K0ReAikcHDi0G1vKZEmmo/NWAGKLA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.6", + "@poppinss/dumper": "^0.7.0", + "@speed-highlight/core": "^1.2.14", + "cookie-es": "^3.0.1", "youch-core": "^0.3.3" } }, @@ -2838,18 +3015,18 @@ } }, "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", + "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", + "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0" @@ -2868,22 +3045,22 @@ } }, "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", "license": "MIT", "dependencies": { "@types/node": "*", - "jest-regex-util": "30.0.1" + "jest-regex-util": "30.4.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.34.0" @@ -2893,13 +3070,13 @@ } }, "node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", "@types/istanbul-lib-coverage": "^2.0.6", "@types/istanbul-reports": "^3.0.4", "@types/node": "*", @@ -3005,9 +3182,9 @@ "license": "ISC" }, "node_modules/@mapbox/tiny-sdf": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.7.tgz", - "integrity": "sha512-25gQLQMcpivjOSA40g3gO6qgiFPDpWRoMfd+G/GoppPIeP6JDaMMkMrEJnMZhKyyS6iKwVt5YKu02vCUyJM3Ug==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.2.0.tgz", + "integrity": "sha512-LVL4wgI9YAum5V+LNVQO6QgFBPw7/MIIY4XJPNsPDMrjEwcE+JfKk1LuIl8GnF197ejVdC9QdPaxrx5gfgdGXg==", "license": "BSD-2-Clause" }, "node_modules/@mapbox/unitbezier": { @@ -3086,9 +3263,9 @@ } }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.4.tgz", + "integrity": "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==", "cpu": [ "arm64" ], @@ -3099,9 +3276,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.4.tgz", + "integrity": "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==", "cpu": [ "x64" ], @@ -3112,9 +3289,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.4.tgz", + "integrity": "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==", "cpu": [ "arm" ], @@ -3125,9 +3302,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.4.tgz", + "integrity": "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==", "cpu": [ "arm64" ], @@ -3138,9 +3315,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.4.tgz", + "integrity": "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==", "cpu": [ "x64" ], @@ -3151,9 +3328,9 @@ ] }, "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.4.tgz", + "integrity": "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==", "cpu": [ "x64" ], @@ -3258,6 +3435,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3274,6 +3454,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3290,6 +3473,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3306,6 +3492,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3322,6 +3511,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3359,6 +3551,18 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@nodable/entities": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.1.tgz", + "integrity": "sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3413,6 +3617,28 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@npmcli/agent/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -3457,18 +3683,18 @@ } }, "node_modules/@openzim/libzim/node_modules/@types/node": { - "version": "24.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.10.tgz", - "integrity": "sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==", + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.1.tgz", + "integrity": "sha512-RSpUJGmvsJ1ZeBehQZFhIdpsz+bIpES0nIQXko4Ybq+N+kX6XvOq3Jo+iJ82FWLdblFq85AsMikd3m35jgezYg==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@openzim/libzim/node_modules/dotenv": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", - "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -3478,9 +3704,9 @@ } }, "node_modules/@openzim/libzim/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/@paralleldrive/cuid2": { @@ -3518,13 +3744,13 @@ } }, "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", + "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": "^14.18.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/pkgr" @@ -3551,18 +3777,20 @@ } }, "node_modules/@poppinss/cliui": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@poppinss/cliui/-/cliui-6.7.0.tgz", - "integrity": "sha512-ihlhDUHw4Lfx6Euo8SSDar/rHHD8T1aFXJ1Z3NYSYjHcr9rSK5iy6zC5xvQJCeGY1BTninW520iKv/hd4lS0tA==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@poppinss/cliui/-/cliui-6.8.1.tgz", + "integrity": "sha512-o/ssbwr+r6woG65rk9eFHnn9dVUphZr/Rk+4+05ENVMBWYpYhTJGdE9RobTG5JLFubvO4gWIyFeNlC+I4EM6eA==", "license": "MIT", "dependencies": { "@poppinss/colors": "^4.1.6", + "cli-boxes": "^4.0.1", "cli-table3": "^0.6.5", - "cli-truncate": "^5.1.1", - "log-update": "^7.0.2", + "cli-truncate": "^5.2.0", + "log-update": "^7.2.0", "pretty-hrtime": "^1.0.3", - "string-width": "^8.1.0", - "supports-color": "^10.2.2" + "string-width": "^8.2.0", + "supports-color": "^10.2.2", + "terminal-size": "^4.0.1" } }, "node_modules/@poppinss/cliui/node_modules/ansi-regex": { @@ -3578,13 +3806,13 @@ } }, "node_modules/@poppinss/cliui/node_modules/string-width": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.1.tgz", - "integrity": "sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { "node": ">=20" @@ -3594,12 +3822,12 @@ } }, "node_modules/@poppinss/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -3650,9 +3878,9 @@ } }, "node_modules/@poppinss/macroable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@poppinss/macroable/-/macroable-1.1.0.tgz", - "integrity": "sha512-y/YKzZDuG8XrpXpM7Z1RdQpiIc0MAKyva24Ux1PB4aI7RiSI/79K8JVDcdyubriTm7vJ1LhFs8CrZpmPnx/8Pw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@poppinss/macroable/-/macroable-1.1.2.tgz", + "integrity": "sha512-FAVBRzzWhYP5mA3lCwLH1A0fKBqq5anyjGet90Z81aRK5c/+LTGUE1zJhZrErjaenBSOOI9BVUs3WVmotneFQA==", "license": "MIT" }, "node_modules/@poppinss/matchit": { @@ -3703,15 +3931,15 @@ } }, "node_modules/@poppinss/string": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@poppinss/string/-/string-1.7.1.tgz", - "integrity": "sha512-OrLzv/nGDU6l6dLXIQHe8nbNSWWfuSbpB/TW5nRpZFf49CLuQlIHlSPN9IdSUv2vG+59yGM6LoibsaHn8B8mDw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@poppinss/string/-/string-1.7.2.tgz", + "integrity": "sha512-A182GLDfi36iDCbhDrHB0xzrPM1fO3GHnhCDIdadf8C6eycgct4m7zusbLwEh6GPaj2Pz5BVos7XK16w7tZ7wQ==", "license": "MIT", "dependencies": { "@types/pluralize": "^0.0.33", "case-anything": "^3.1.2", "pluralize": "^8.0.0", - "slugify": "^1.6.6" + "slugify": "^1.6.9" } }, "node_modules/@poppinss/types": { @@ -3756,25 +3984,24 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", "license": "BSD-3-Clause", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@protobufjs/aspromise": "^1.1.1" } }, "node_modules/@protobufjs/float": { @@ -3784,9 +4011,9 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.2.tgz", + "integrity": "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { @@ -3802,9 +4029,9 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "license": "BSD-3-Clause" }, "node_modules/@protomaps/basemaps": { @@ -3844,16 +4071,13 @@ } }, "node_modules/@react-aria/focus": { - "version": "3.21.3", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.3.tgz", - "integrity": "sha512-FsquWvjSCwC2/sBk4b+OqJyONETUIXQ2vM0YdPAuC+QFQh2DT6TIBo6dOZVSezlhudDla69xFBd6JvCFq1AbUw==", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.22.1.tgz", + "integrity": "sha512-CPxtkyrBi/HYY5P3lE/57sQ6qfa0lN8E55TOm89H0kNGv0lKt+/0zP7lWERzBjRr5IxBVrQX4gFEowBN52LPaA==", "license": "Apache-2.0", "dependencies": { - "@react-aria/interactions": "^3.26.0", - "@react-aria/utils": "^3.32.0", - "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" + "react-aria": "^3.48.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", @@ -3861,80 +4085,24 @@ } }, "node_modules/@react-aria/interactions": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz", - "integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==", + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.28.1.tgz", + "integrity": "sha512-Bqb+HrD5I5MHS2SKBhISYqo2SW8Y2dfzgF/Y1lIJq7xqLxheo9vzxPGEHhz+XzkgGfoqEJx8A6a3C7uiqS3HWA==", "license": "Apache-2.0", "dependencies": { - "@react-aria/ssr": "^3.9.10", - "@react-aria/utils": "^3.32.0", - "@react-stately/flags": "^3.1.2", - "@react-types/shared": "^3.32.1", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/ssr": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz", - "integrity": "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/utils": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz", - "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==", - "license": "Apache-2.0", - "dependencies": { - "@react-aria/ssr": "^3.9.10", - "@react-stately/flags": "^3.1.2", - "@react-stately/utils": "^3.11.0", - "@react-types/shared": "^3.32.1", + "@react-types/shared": "^3.34.0", "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" + "react-aria": "^3.48.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, - "node_modules/@react-stately/flags": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz", - "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, - "node_modules/@react-stately/utils": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz", - "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, "node_modules/@react-types/shared": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.32.1.tgz", - "integrity": "sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.35.0.tgz", + "integrity": "sha512-iNWvuzEwANttpQpdlu8nPBtdHb0mcCMj1ZTH//iRB5E/14IAnyRlR25rxH7pNLyzHINsPGEKnWvpwDMCT6vziQ==", "license": "Apache-2.0", "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" @@ -3947,9 +4115,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", + "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", "cpu": [ "arm" ], @@ -3960,9 +4128,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", + "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", "cpu": [ "arm64" ], @@ -3973,9 +4141,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", + "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", "cpu": [ "arm64" ], @@ -3986,9 +4154,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", + "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", "cpu": [ "x64" ], @@ -3999,9 +4167,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", + "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", "cpu": [ "arm64" ], @@ -4012,9 +4180,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", + "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", "cpu": [ "x64" ], @@ -4025,12 +4193,15 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", + "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4038,12 +4209,15 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", + "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", "cpu": [ "arm" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4051,12 +4225,15 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", + "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4064,12 +4241,15 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", + "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4077,12 +4257,15 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", + "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", "cpu": [ "loong64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4090,12 +4273,15 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", + "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", "cpu": [ "loong64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4103,12 +4289,15 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", + "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4116,12 +4305,15 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", + "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", "cpu": [ "ppc64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4129,12 +4321,15 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", + "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4142,12 +4337,15 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", + "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", "cpu": [ "riscv64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4155,12 +4353,15 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", + "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4168,12 +4369,15 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", + "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4181,12 +4385,15 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", + "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4194,9 +4401,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", + "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", "cpu": [ "x64" ], @@ -4207,9 +4414,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", + "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", "cpu": [ "arm64" ], @@ -4220,9 +4427,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", + "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", "cpu": [ "arm64" ], @@ -4233,9 +4440,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", + "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", "cpu": [ "ia32" ], @@ -4246,9 +4453,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz", + "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==", "cpu": [ "x64" ], @@ -4259,9 +4466,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz", + "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==", "cpu": [ "x64" ], @@ -4279,9 +4486,9 @@ "license": "MIT" }, "node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "license": "MIT" }, "node_modules/@sindresorhus/is": { @@ -4310,21 +4517,21 @@ } }, "node_modules/@speed-highlight/core": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.14.tgz", - "integrity": "sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==", + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.16.tgz", + "integrity": "sha512-yNm/fYEcnpRjYduLMaddTK9XKYil6xB88+qFg79ZdZhHu1PadfoQmFW7pVTx7FZqMBNcUuThiAhxhENgtAO2/w==", "devOptional": true, "license": "CC0-1.0" }, "node_modules/@stylistic/eslint-plugin": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.7.1.tgz", - "integrity": "sha512-zjTUwIsEfT+k9BmXwq1QEFYsb4afBlsI1AXFyWQBgggMzwBFOuu92pGrE5OFx90IOjNl+lUbQoTG7f8S0PkOdg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz", + "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/types": "^8.56.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "estraverse": "^5.3.0", @@ -4334,7 +4541,7 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": ">=9.0.0" + "eslint": "^9.0.0 || ^10.0.0" } }, "node_modules/@swc/core": { @@ -4383,7 +4590,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4400,7 +4606,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4417,7 +4622,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "Apache-2.0", "optional": true, "os": [ @@ -4434,7 +4638,9 @@ "cpu": [ "arm64" ], - "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4451,7 +4657,9 @@ "cpu": [ "arm64" ], - "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4468,7 +4676,9 @@ "cpu": [ "x64" ], - "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4485,7 +4695,9 @@ "cpu": [ "x64" ], - "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4502,7 +4714,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4519,7 +4730,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4536,7 +4746,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -4554,18 +4763,18 @@ "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", - "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==", + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" } }, "node_modules/@swc/types": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", - "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.26.tgz", + "integrity": "sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -4573,9 +4782,9 @@ } }, "node_modules/@tabler/icons": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.36.1.tgz", - "integrity": "sha512-f4Jg3Fof/Vru5ioix/UO4GX+sdDsF9wQo47FbtvG+utIYYVQ/QVAC0QYgcBbAjQGfbdOh2CCf0BgiFOF9Ixtjw==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.44.0.tgz", + "integrity": "sha512-Wn0AOZG9sg0L+bjfMqq4eNhC6pQjIrk94LvvWYNYkY8KH8wC3YILRzQlrnVJc4FUeMxH/AK97QsYCX35H3LndA==", "license": "MIT", "funding": { "type": "github", @@ -4599,53 +4808,53 @@ } }, "node_modules/@tailwindcss/node": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", - "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", + "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", "license": "MIT", "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.21.0", "jiti": "^2.6.1", - "lightningcss": "1.30.2", + "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", - "tailwindcss": "4.1.18" + "tailwindcss": "4.3.0" } }, "node_modules/@tailwindcss/node/node_modules/tailwindcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", "license": "MIT" }, "node_modules/@tailwindcss/oxide": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", - "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", + "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", "license": "MIT", "engines": { - "node": ">= 10" + "node": ">= 20" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-x64": "4.1.18", - "@tailwindcss/oxide-freebsd-x64": "4.1.18", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-x64-musl": "4.1.18", - "@tailwindcss/oxide-wasm32-wasi": "4.1.18", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + "@tailwindcss/oxide-android-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-x64": "4.3.0", + "@tailwindcss/oxide-freebsd-x64": "4.3.0", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-x64-musl": "4.3.0", + "@tailwindcss/oxide-wasm32-wasi": "4.3.0", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", - "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", + "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", "cpu": [ "arm64" ], @@ -4655,13 +4864,13 @@ "android" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", - "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", "cpu": [ "arm64" ], @@ -4671,13 +4880,13 @@ "darwin" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", - "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", + "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", "cpu": [ "x64" ], @@ -4687,13 +4896,13 @@ "darwin" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", - "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", + "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", "cpu": [ "x64" ], @@ -4703,13 +4912,13 @@ "freebsd" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", - "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", "cpu": [ "arm" ], @@ -4719,77 +4928,89 @@ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", - "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", - "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", - "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", - "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", - "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", + "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -4804,75 +5025,21 @@ "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.1.0", + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" + "tslib": "^2.8.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { - "version": "1.7.1", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { - "version": "1.7.1", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/tslib": { - "version": "2.8.1", - "inBundle": true, - "license": "0BSD", - "optional": true - }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", - "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", "cpu": [ "arm64" ], @@ -4882,13 +5049,13 @@ "win32" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", - "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", "cpu": [ "x64" ], @@ -4898,27 +5065,27 @@ "win32" ], "engines": { - "node": ">= 10" + "node": ">= 20" } }, "node_modules/@tailwindcss/vite": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", - "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz", + "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==", "license": "MIT", "dependencies": { - "@tailwindcss/node": "4.1.18", - "@tailwindcss/oxide": "4.1.18", - "tailwindcss": "4.1.18" + "@tailwindcss/node": "4.3.0", + "@tailwindcss/oxide": "4.3.0", + "tailwindcss": "4.3.0" }, "peerDependencies": { - "vite": "^5.2.0 || ^6 || ^7" + "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "node_modules/@tailwindcss/vite/node_modules/tailwindcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", "license": "MIT" }, "node_modules/@tanstack/eslint-plugin-query": { @@ -5066,6 +5233,39 @@ "path-browserify": "^1.0.1" } }, + "node_modules/@ts-morph/common/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -5190,9 +5390,9 @@ } }, "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", "license": "MIT", "dependencies": { "@types/ms": "*" @@ -5229,9 +5429,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "license": "MIT" }, "node_modules/@types/estree-jsx": { @@ -5354,9 +5554,9 @@ "optional": true }, "node_modules/@types/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==", + "version": "4.17.24", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", "license": "MIT" }, "node_modules/@types/lodash-es": { @@ -5454,9 +5654,9 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", "license": "MIT" }, "node_modules/@types/range-parser": { @@ -5485,6 +5685,12 @@ "@types/react": "^19.2.0" } }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "license": "MIT" + }, "node_modules/@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", @@ -5583,20 +5789,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz", - "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.0.tgz", + "integrity": "sha512-bFNvl9ZczlVb+wR2Akszf3gHfKVj/8WanXaGJ3UstTA7brNKg0cNdk6X1Psu5V7MZ2oQtzZKOEzIUehaoxbDGw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.54.0", - "@typescript-eslint/type-utils": "8.54.0", - "@typescript-eslint/utils": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0", + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/type-utils": "8.61.0", + "@typescript-eslint/utils": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5606,9 +5812,9 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.54.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "@typescript-eslint/parser": "^8.61.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { @@ -5622,16 +5828,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz", - "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.0.tgz", + "integrity": "sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0", + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "debug": "^4.4.3" }, "engines": { @@ -5642,19 +5848,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz", - "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.0.tgz", + "integrity": "sha512-DV42F7MLJO6Rax7SK1yg43tcnEfGUrurSpSxKuVX+a3RCTzBlH3fuxprrOJXKCJGAaw82xXocikJ0uQaqwXgGA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.54.0", - "@typescript-eslint/types": "^8.54.0", + "@typescript-eslint/tsconfig-utils": "^8.61.0", + "@typescript-eslint/types": "^8.61.0", "debug": "^4.4.3" }, "engines": { @@ -5665,18 +5871,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz", - "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.0.tgz", + "integrity": "sha512-IWdXFHFSb6mlC3HPc7QsLDm5zYEbUla6trDEHf32D3/dnuUyXd87plScSNXSbm0/RxMvObpI17sv/EDTGrGZkA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0" + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5687,9 +5893,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", - "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.0.tgz", + "integrity": "sha512-O5Amvdv9ztMpxpf+vmFULGG78IE6Qwdr3bCGvqwG4nwc9H2qXkOYJJnRbRHyMkQTjv1d03olqwwwzHLMqpFePQ==", "dev": true, "license": "MIT", "engines": { @@ -5700,21 +5906,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz", - "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.0.tgz", + "integrity": "sha512-TuBiQYIkd97yBfInHCTKVYMbX4kvEmpOEuixIuzCU9p8BGT1SfyyO0d0IfDMbPIHcjn/hWnusUX5e8v5Xg+X8A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0", - "@typescript-eslint/utils": "8.54.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/utils": "8.61.0", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5724,14 +5930,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.0.tgz", + "integrity": "sha512-9QTQpZ5Iin4CdIodfbDQFSeiSJKidgYJYug1P9CC2xWgUTvlmixViqDZNciMjwLBZyJnG4tGmPl97rVAFb1AJg==", "dev": true, "license": "MIT", "engines": { @@ -5743,21 +5949,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz", - "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.0.tgz", + "integrity": "sha512-42zatd5qSvvcV1JdDBCLxYRznvP4eIHpPoZXdkPFnAmanA4FuZ5dibSnCBggY8hQnqajPpoGjXFdZ7fIJKQnlA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.54.0", - "@typescript-eslint/tsconfig-utils": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0", + "@typescript-eslint/project-service": "8.61.0", + "@typescript-eslint/tsconfig-utils": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "debug": "^4.4.3", - "minimatch": "^9.0.5", + "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5767,20 +5973,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz", - "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.0.tgz", + "integrity": "sha512-3bzFt7ImFMW/jVYwJamDoe/dMOdFLSC6pom6rRjdh4SZJEYupyMzem8e7vKZLclLfpHjlwSAXOUxtKxGXUiLqA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0" + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5790,19 +5996,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", - "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.0.tgz", + "integrity": "sha512-QVLZu3ZPQEE+HICQyAMZ2yLQhxf0meY/wx6Hx14YcTNj13JB3qHlX3lJ02L3fLGHgERRH71kvYDwiXIguT3AjQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.54.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.61.0", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5812,28 +6018,55 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", + "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", "license": "ISC" }, + "node_modules/@uppy/companion-client": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-5.1.1.tgz", + "integrity": "sha512-DzrOWTbIZHvtgAFXBMYHk2wD27NjpBSVhY2tEiEIUhPd2CxbFRZjHM/N3HOt3VwZEAP471QWFLlJRWPcIY3A2Q==", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^7.1.1", + "namespace-emitter": "^2.0.1", + "p-retry": "^6.1.0" + }, + "peerDependencies": { + "@uppy/core": "^5.1.1" + } + }, "node_modules/@uppy/components": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@uppy/components/-/components-1.1.0.tgz", - "integrity": "sha512-omiNBzJn49FQznkSwOIGn3TKz+3r4T+y8sxWIBDMO6De2genzywRk1drAWO9GbSAF3htlVuvamNojQ2pSLeh3w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@uppy/components/-/components-1.2.0.tgz", + "integrity": "sha512-rtIr+77Rw/q5Vw++xazF1dCg2d4A4zT9CV+ZyN8Rsx8xiIr2CxCR4TaHHBy+WeC0b7Mk6yNuJ0wUa34tFJ6pKg==", "license": "MIT", "dependencies": { "clsx": "^2.1.1", "dequal": "^2.0.3", - "preact": "^10.5.13", + "preact": "^10.26.10", "pretty-bytes": "^6.1.1" }, "peerDependencies": { - "@uppy/core": "^5.1.1", - "@uppy/image-editor": "^4.0.2", - "@uppy/screen-capture": "^5.0.1", - "@uppy/webcam": "^5.0.2" + "@uppy/core": "^5.2.0", + "@uppy/image-editor": "^4.2.0", + "@uppy/screen-capture": "^5.1.0", + "@uppy/webcam": "^5.1.0" }, "peerDependenciesMeta": { "@uppy/image-editor": { @@ -5954,19 +6187,33 @@ } }, "node_modules/@uppy/utils": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-7.1.5.tgz", - "integrity": "sha512-Vz4WGTjef6WebECGur4clWjpkET4o3bdvPMj1m2sD5cL+dTt69m+FIE5h5JD3HBMLEPTXPVkrXGMIFcbOYC12Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-6lC246qszMv6bTyl/+QyHwrudgeguWkA94ME1wHn+a6uRAvmtAEaUManIfGqTJfoKvWAiCJqdJPl5xRJjhAloQ==", "license": "MIT", "dependencies": { - "lodash": "^4.17.21", - "preact": "^10.5.13" + "lodash": "^4.17.23", + "preact": "^10.26.10" + } + }, + "node_modules/@uppy/xhr-upload": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-5.2.0.tgz", + "integrity": "sha512-3LV/X5Of6BINnKplP+CwUJ0a4/7cRFfzxwGyXnW+uCrNQHoo09dttcz3begWHejGvzenQHuUnMO3Fxyc71Pryg==", + "license": "MIT", + "dependencies": { + "@uppy/companion-client": "^5.1.1", + "@uppy/utils": "^7.2.0" + }, + "peerDependencies": { + "@uppy/core": "^5.2.0" } }, "node_modules/@vavite/multibuild": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@vavite/multibuild/-/multibuild-5.1.0.tgz", "integrity": "sha512-xhJS6oAhQqDCRFFmpZWNCcAJw7145pvlfKX/IOCQX7oqulbw9amH9rdrNXmwz79UeYgOwxXpWfEavyYTPLY1KQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "license": "MIT", "dependencies": { "@types/node": "^18.19.67", @@ -6150,9 +6397,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -6172,9 +6419,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "license": "MIT", "dependencies": { "acorn": "^8.11.0" @@ -6184,18 +6431,21 @@ } }, "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "license": "MIT", + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">= 14" + "node": ">= 6.0.0" } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -6219,9 +6469,9 @@ } }, "node_modules/ansi-escapes": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", - "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "license": "MIT", "dependencies": { "environment": "^1.0.0" @@ -6257,6 +6507,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/anynum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/anynum/-/anynum-1.0.0.tgz", + "integrity": "sha512-xjR9/zBVnUOP6ztMIIgShjsxui80nQUQH+5xJnvrYLs+90bF25/KJqaAi8mk+B4RDtX1Nspi6fmp4YTEts8SfA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -6270,6 +6532,18 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -6363,9 +6637,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.24", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", - "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", "funding": [ { "type": "opencollective", @@ -6382,8 +6656,8 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001766", + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -6408,14 +6682,15 @@ } }, "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/bail": { @@ -6429,11 +6704,14 @@ } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/base64-js": { "version": "1.5.1", @@ -6456,12 +6734,15 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "version": "2.10.35", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.35.tgz", + "integrity": "sha512-honAfLBde0HAFLdNyBEfuuENkF6zR+ozxqxa/2zJKHBe1qzLqyTSeRKpdPEHAP03rlDGyQOPnCSxnVpVqQo9Mg==", "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/basic-auth": { @@ -6538,9 +6819,10 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -6549,15 +6831,6 @@ "node": "18 || 20 || >=22" } }, - "node_modules/brace-expansion/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -6571,9 +6844,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "funding": [ { "type": "opencollective", @@ -6590,11 +6863,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -6637,9 +6910,9 @@ } }, "node_modules/builtin-modules": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", - "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.2.0.tgz", + "integrity": "sha512-02yxLeyxF4dNl6SlY6/5HfRSrSdZ/sCPoxy2kZNP5dZZX8LSAD9aE2gtJIUgWrsQTiMPl3mxESyrobSwvRGisQ==", "dev": true, "license": "MIT", "engines": { @@ -6650,18 +6923,40 @@ } }, "node_modules/bullmq": { - "version": "5.67.2", - "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.67.2.tgz", - "integrity": "sha512-3KYqNqQptKcgksACO1li4YW9/jxEh6XWa1lUg4OFrHa80Pf0C7H9zeb6ssbQQDfQab/K3QCXopbZ40vrvcyrLw==", + "version": "5.77.6", + "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.77.6.tgz", + "integrity": "sha512-WCpSoCD4vWyRD+btOsFrO7iBGInrTgG155gTZCV8qY0Yex2KtsbVtFERx6V1WZ2xWl/5ZxnLar8Z8ufnS4f5jg==", "license": "MIT", "dependencies": { "cron-parser": "4.9.0", - "ioredis": "5.9.2", - "msgpackr": "1.11.5", + "ioredis": "5.10.1", + "msgpackr": "2.0.1", "node-abort-controller": "3.1.1", - "semver": "7.7.3", - "tslib": "2.8.1", - "uuid": "11.1.0" + "semver": "7.8.0", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "redis": ">=5.0.0" + }, + "peerDependenciesMeta": { + "redis": { + "optional": true + } + } + }, + "node_modules/bullmq/node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/bytes": { @@ -6782,9 +7077,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001766", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", - "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", + "version": "1.0.30001797", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001797.tgz", + "integrity": "sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w==", "funding": [ { "type": "opencollective", @@ -6960,29 +7255,36 @@ } }, "node_modules/cheerio/node_modules/undici": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.3.tgz", - "integrity": "sha512-eJdUmK/Wrx2d+mnWWmwwLRyA7OQCkLap60sk3dOK4ViZR7DKwwptwuIvFBg2HaiP9ESaEdhtpSymQPvytpmkCA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.27.2.tgz", + "integrity": "sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA==", "license": "MIT", "engines": { "node": ">=20.18.1" } }, "node_modules/chevrotain": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.1.tgz", - "integrity": "sha512-f0yv5CPKaFxfsPTBzX7vGuim4oIC1/gcS7LUGdBSwl2dU6+FON6LVUksdOo1qJjoUvXNn45urgh8C+0a24pACQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.2.0.tgz", + "integrity": "sha512-mHCHTxM51nCklUw9RzRVc0DLjAh/SAUPM4k/zMInlTIo25ldWXOZoPt7XEIk/LwoT4lFVmJcu9g5MHtx371x3A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@chevrotain/cst-dts-gen": "11.1.1", - "@chevrotain/gast": "11.1.1", - "@chevrotain/regexp-to-ast": "11.1.1", - "@chevrotain/types": "11.1.1", - "@chevrotain/utils": "11.1.1", + "@chevrotain/cst-dts-gen": "11.2.0", + "@chevrotain/gast": "11.2.0", + "@chevrotain/regexp-to-ast": "11.2.0", + "@chevrotain/types": "11.2.0", + "@chevrotain/utils": "11.2.0", "lodash-es": "4.17.23" } }, + "node_modules/chevrotain/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "dev": true, + "license": "MIT" + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -7052,6 +7354,18 @@ "node": ">=0.8.0" } }, + "node_modules/cli-boxes": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-4.0.1.tgz", + "integrity": "sha512-5IOn+jcCEHEraYolBPs/sT4BxYCe2nHg374OPiItB1O96KZFseS2gthU4twyYzeDcFew4DaUM/xwc5BQf08JJw==", + "license": "MIT", + "engines": { + "node": ">=18.20 <19 || >=20.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -7112,13 +7426,13 @@ } }, "node_modules/cli-truncate": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", - "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", "license": "MIT", "dependencies": { - "slice-ansi": "^7.1.0", - "string-width": "^8.0.0" + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" }, "engines": { "node": ">=20" @@ -7140,13 +7454,13 @@ } }, "node_modules/cli-truncate/node_modules/string-width": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.1.tgz", - "integrity": "sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { "node": ">=20" @@ -7156,12 +7470,12 @@ } }, "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -7391,25 +7705,16 @@ } }, "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", "license": "MIT", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/convert-source-map": { @@ -7432,9 +7737,9 @@ } }, "node_modules/cookie-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.0.tgz", - "integrity": "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-3.1.1.tgz", + "integrity": "sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==", "devOptional": true, "license": "MIT" }, @@ -7456,9 +7761,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { @@ -7606,9 +7911,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "version": "1.11.21", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", + "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", "license": "MIT" }, "node_modules/debug": { @@ -7657,9 +7962,9 @@ } }, "node_modules/dedent": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", - "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "devOptional": true, "license": "MIT", "peerDependencies": { @@ -7771,9 +8076,9 @@ "license": "MIT" }, "node_modules/docker-modem": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz", - "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.7.tgz", + "integrity": "sha512-XJgGhoR/CLpqshm4d3L7rzH6t8NgDFUIIpztYlLHIApeJjMZKYJMz2zxPsYxnejq5h3ELYSw/RBsi3t5h7gNTA==", "license": "Apache-2.0", "dependencies": { "debug": "^4.1.1", @@ -7803,19 +8108,6 @@ "node": ">= 8.0" } }, - "node_modules/dockerode/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -7919,31 +8211,31 @@ } }, "node_modules/edge-lexer": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/edge-lexer/-/edge-lexer-6.0.4.tgz", - "integrity": "sha512-rHlTSZUQfBu/fwnAjoaLCGGmDzpRPgUC8FEqNdJtpPEjBRCqU3a4Le7iJ8KSQfY2WvWx6NTGAwti62xj3eIz1w==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/edge-lexer/-/edge-lexer-6.0.5.tgz", + "integrity": "sha512-paSprHn8GRzOUWTVLapgacqDBSOpJgOY60/V5QQ8bbNLHRKUMSxp8Z2oOO0WKtcKmb5+sAlmvG3izhbFulp19A==", "license": "MIT", "dependencies": { "edge-error": "^4.0.2" }, "engines": { - "node": ">=18.16.0" + "node": ">=24.0.0" } }, "node_modules/edge-parser": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/edge-parser/-/edge-parser-9.1.0.tgz", - "integrity": "sha512-Z7sEbRNjjGuUVch3ELHMbjgksVjQlAjUASCwUWe+1I+nJ0mVBmUD2rn6zyes/+EjLssvEGQcIWMjLMNn1ChXgQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/edge-parser/-/edge-parser-9.1.1.tgz", + "integrity": "sha512-kem/vInJgTzHCABdFe060WGjyGva8j23QwVbZkNFXkNAQhRz3mga5kNBuPFYQ3t73nPT2vZ8WOGV4OCS0P16Cw==", "license": "MIT", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "astring": "^1.9.0", "edge-error": "^4.0.2", - "edge-lexer": "^6.0.4", + "edge-lexer": "^6.0.5", "js-stringify": "^1.0.2" }, "engines": { - "node": ">=18.16.0" + "node": ">=24.0.0" } }, "node_modules/edge.js": { @@ -7967,9 +8259,9 @@ } }, "node_modules/edge.js/node_modules/@poppinss/utils": { - "version": "7.0.0-next.6", - "resolved": "https://registry.npmjs.org/@poppinss/utils/-/utils-7.0.0-next.6.tgz", - "integrity": "sha512-1OQDbCKmFROvWpmzvkQV/mCzBXSwhED8SJfJ0HiYKiLNEqYM8Kpa4EK0AfmXGQc+DdIj6eqib/vT8i5tJ2fatw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@poppinss/utils/-/utils-7.0.1.tgz", + "integrity": "sha512-mveSvLI2YPC114mK5HCuSYfUtjpClf1wHG1VCqZJCp4U2ypPhIt62Iku5urh0kPAFvnvCVHx2bXBSH14qMTOlQ==", "license": "MIT", "dependencies": { "@poppinss/exception": "^1.2.3", @@ -7980,13 +8272,13 @@ } }, "node_modules/edgejs-parser": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/edgejs-parser/-/edgejs-parser-0.2.18.tgz", - "integrity": "sha512-O1Xg3ISESg2bl8DqP5q3x1b88cqTSgLmEBqNhGH482JdAIexDY7gh7FA9Y5kHOFwRNsTLFoziwQou0lprJ1MYQ==", + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/edgejs-parser/-/edgejs-parser-0.2.19.tgz", + "integrity": "sha512-KO9pF1JSd6dDL7+hJM1W7PbzdTV/siSCoYbN3Ej84csh4RUBd14NvE4uzm4LOiuph9w/j+YlcBkPyp0C5SOzrQ==", "dev": true, "license": "MIT", "dependencies": { - "chevrotain": "^11.0.3" + "chevrotain": "^11.1.2" } }, "node_modules/ee-first": { @@ -7996,15 +8288,15 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.283", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", - "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", + "version": "1.5.370", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.370.tgz", + "integrity": "sha512-D5tSHJReAb/Kf3Hu9F/GO4lJuSWzEWHwvQ/kKSUP7pimNgvxkSKj+gUQhHpKKACwrin7rS3byU7IxreF56rl5g==", "license": "ISC" }, "node_modules/emittery": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.0.tgz", - "integrity": "sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.1.tgz", + "integrity": "sha512-sFz64DCRjirhwHLxofFqxYQm6DCp6o0Ix7jwKQvuCHPn4GMRZNuBZyLPu9Ccmk/QSCAMZt6FOUqA8JZCQvA9fw==", "license": "MIT", "engines": { "node": ">=14.16" @@ -8051,31 +8343,6 @@ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, - "node_modules/encoding-sniffer/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -8086,13 +8353,13 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.4", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", - "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.23.0.tgz", + "integrity": "sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.3" }, "engines": { "node": ">=10.13.0" @@ -8184,9 +8451,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -8368,14 +8635,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", - "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz", + "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==", "dev": true, "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" + "synckit": "^0.11.13" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -8504,10 +8771,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "dev": true, "license": "MIT", "dependencies": { @@ -8678,17 +8952,17 @@ } }, "node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.2.0", + "@jest/expect-utils": "30.4.1", "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8719,9 +8993,9 @@ } }, "node_modules/fast-copy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-4.0.2.tgz", - "integrity": "sha512-ybA6PDXIXOXivLJK/z9e+Otk7ve13I4ckBvGO5I2RRmBU1gMHLVDJYEuJYhGwez7YNlYji2M2DvVU+a9mSFDlw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-4.0.3.tgz", + "integrity": "sha512-58apWr0GUiDFM8+3afrO6eYwJBn9ZAhDOzG3L+/9llab/haCARS2UIfffmOurYLwbgDRs8n0rfr6qAAPEAuAQw==", "license": "MIT" }, "node_modules/fast-deep-equal": { @@ -8788,9 +9062,9 @@ "license": "MIT" }, "node_modules/fast-xml-builder": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", "funding": [ { "type": "github", @@ -8799,13 +9073,14 @@ ], "license": "MIT", "dependencies": { - "path-expression-matcher": "^1.1.3" + "path-expression-matcher": "^1.5.0", + "xml-naming": "^0.1.0" } }, "node_modules/fast-xml-parser": { - "version": "5.5.9", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.9.tgz", - "integrity": "sha512-jldvxr1MC6rtiZKgrFnDSvT8xuH+eJqxqOBThUVjYrxssYTo1avZLGql5l0a0BAERR01CadYzZ83kVEkbyDg+g==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.0.tgz", + "integrity": "sha512-MTcrUoRQ1GSQ9iG3QJzBGquYYYeA7piZaJoIWbPFGbRn6Jj6z7xgoAyi4DrZX4y2ZIQQBF59gc/zmvvejjgoFQ==", "funding": [ { "type": "github", @@ -8814,9 +9089,10 @@ ], "license": "MIT", "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.2" + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.1.5", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" @@ -8859,9 +9135,9 @@ } }, "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", "license": "MIT" }, "node_modules/figures": { @@ -8894,9 +9170,9 @@ } }, "node_modules/file-type": { - "version": "21.3.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", - "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", + "version": "21.3.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", + "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", "license": "MIT", "dependencies": { "@tokenizer/inflate": "^0.4.1", @@ -9052,9 +9328,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -9068,9 +9344,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -9240,9 +9516,9 @@ } }, "node_modules/geojson-vt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.2.tgz", - "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.3.tgz", + "integrity": "sha512-jR1MwkLaZGa8Zftct9ZFruyWFrdl9ZyD2OliXNy9Qq5bBPeg5wHVpBQF9p5GjnicSDQqvBVpysxTPKmWdsfWMA==", "license": "ISC" }, "node_modules/get-caller-file": { @@ -9255,9 +9531,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", "license": "MIT", "engines": { "node": ">=18" @@ -9300,9 +9576,9 @@ } }, "node_modules/get-port": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", - "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.2.0.tgz", + "integrity": "sha512-afP4W205ONCuMoPBqcR6PSXnzX35KTcJygfJfcp+QY+uwm3p20p1YczWXhlICIzGMCxYBQcySEcOgsJcrkyobg==", "devOptional": true, "license": "MIT", "engines": { @@ -9412,6 +9688,36 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/global-prefix": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", @@ -9427,12 +9733,12 @@ } }, "node_modules/global-prefix/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/global-prefix/node_modules/which": { @@ -9587,9 +9893,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -9663,9 +9969,9 @@ "license": "MIT" }, "node_modules/hosted-git-info": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", - "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", + "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", "dev": true, "license": "ISC", "dependencies": { @@ -9676,9 +9982,9 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -9894,17 +10200,26 @@ "node": ">= 14" } }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.2", + "agent-base": "6", "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, "node_modules/human-signals": { @@ -9918,25 +10233,21 @@ } }, "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/idb-keyval": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", - "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.5.tgz", + "integrity": "sha512-eKQkTnS0relYsSOYomx8ozIbmdsQCKUdhyuIaQ2DZgKuaxtyQQMkyD/wlnQN32pO3yutN1b1L8uqwcDKaJd7/Q==", "license": "Apache-2.0" }, "node_modules/ieee754": { @@ -10076,12 +10387,12 @@ } }, "node_modules/ioredis": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.9.2.tgz", - "integrity": "sha512-tAAg/72/VxOUW7RQSX1pIxJVucYKcjFjfvj60L57jrZpYCHC3XN0WCQ3sNYL4Gmvv+7GPvTAjc+KSdeNuE8oWQ==", + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.10.1.tgz", + "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==", "license": "MIT", "dependencies": { - "@ioredis/commands": "1.5.0", + "@ioredis/commands": "1.5.1", "cluster-key-slot": "^1.1.0", "debug": "^4.3.4", "denque": "^2.1.0", @@ -10100,21 +10411,21 @@ } }, "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.4.0.tgz", + "integrity": "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==", "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10" } }, "node_modules/is-alphabetical": { @@ -10158,12 +10469,12 @@ } }, "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "hasown": "^2.0.3" }, "engines": { "node": ">= 0.4" @@ -10237,6 +10548,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-network-error": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", + "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10345,48 +10668,49 @@ } }, "node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", + "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", "license": "MIT", "dependencies": { - "@jest/diff-sequences": "30.0.1", + "@jest/diff-sequences": "30.4.0", "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "pretty-format": "30.2.0" + "pretty-format": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", + "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" + "jest-diff": "30.4.1", + "pretty-format": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", + "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", + "@jest/types": "30.4.1", "@types/stack-utils": "^2.0.3", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", + "jest-util": "30.4.1", + "picomatch": "^4.0.3", + "pretty-format": "30.4.1", "slash": "^3.0.0", "stack-utils": "^2.0.6" }, @@ -10404,49 +10728,49 @@ } }, "node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", + "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", + "@jest/types": "30.4.1", "@types/node": "*", - "jest-util": "30.2.0" + "jest-util": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", + "@jest/types": "30.4.1", "@types/node": "*", "chalk": "^4.1.2", "ci-info": "^4.2.0", "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" + "picomatch": "^4.0.3" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -10474,10 +10798,20 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -10602,9 +10936,9 @@ } }, "node_modules/kdbush": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", - "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.1.0.tgz", + "integrity": "sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==", "license": "ISC" }, "node_modules/keyv": { @@ -10636,9 +10970,9 @@ } }, "node_modules/knex": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/knex/-/knex-3.1.0.tgz", - "integrity": "sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==", + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/knex/-/knex-3.2.10.tgz", + "integrity": "sha512-oypTHfrc9i72iyxaUQBKHOxhcr0xM65MPf6FpN02nimsftXwzXprIkLjfXdubvhbu4PMWLp023q8o8CYvHSuZw==", "license": "MIT", "dependencies": { "colorette": "2.0.19", @@ -10649,7 +10983,7 @@ "get-package-type": "^0.1.0", "getopts": "2.3.0", "interpret": "^2.2.0", - "lodash": "^4.17.21", + "lodash": "^4.18.1", "pg-connection-string": "2.6.2", "rechoir": "^0.8.0", "resolve-from": "^5.0.0", @@ -10662,6 +10996,9 @@ "engines": { "node": ">=16" }, + "peerDependencies": { + "pg-query-stream": "^4.14.0" + }, "peerDependenciesMeta": { "better-sqlite3": { "optional": true @@ -10678,6 +11015,9 @@ "pg-native": { "optional": true }, + "pg-query-stream": { + "optional": true + }, "sqlite3": { "optional": true }, @@ -10732,9 +11072,9 @@ } }, "node_modules/laravel-precognition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/laravel-precognition/-/laravel-precognition-1.0.1.tgz", - "integrity": "sha512-BYaDUjEclKbxuQTG9yZnRjjD7ag1Xh+8hGOXmcrw91/vpbIOJ8cSFADTI0kvwetIr3AM1vOJzYwaoA9+KHhLwA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/laravel-precognition/-/laravel-precognition-1.0.2.tgz", + "integrity": "sha512-0H08JDdMWONrL/N314fvsO3FATJwGGlFKGkMF3nNmizVFJaWs17816iM+sX7Rp8d5hUjYCx6WLfsehSKfaTxjg==", "license": "MIT", "dependencies": { "axios": "^1.4.0", @@ -10765,9 +11105,9 @@ } }, "node_modules/lightningcss": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -10780,23 +11120,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.30.2", - "lightningcss-darwin-arm64": "1.30.2", - "lightningcss-darwin-x64": "1.30.2", - "lightningcss-freebsd-x64": "1.30.2", - "lightningcss-linux-arm-gnueabihf": "1.30.2", - "lightningcss-linux-arm64-gnu": "1.30.2", - "lightningcss-linux-arm64-musl": "1.30.2", - "lightningcss-linux-x64-gnu": "1.30.2", - "lightningcss-linux-x64-musl": "1.30.2", - "lightningcss-win32-arm64-msvc": "1.30.2", - "lightningcss-win32-x64-msvc": "1.30.2" + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "cpu": [ "arm64" ], @@ -10814,9 +11154,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "cpu": [ "arm64" ], @@ -10834,9 +11174,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" ], @@ -10854,9 +11194,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "cpu": [ "x64" ], @@ -10874,9 +11214,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "cpu": [ "arm" ], @@ -10894,12 +11234,15 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -10914,12 +11257,15 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -10934,12 +11280,15 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -10954,12 +11303,15 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -10974,9 +11326,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" ], @@ -10994,9 +11346,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" ], @@ -11029,15 +11381,15 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash-es": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", - "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", "license": "MIT" }, "node_modules/lodash.camelcase": { @@ -11066,16 +11418,16 @@ "license": "MIT" }, "node_modules/log-update": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-7.0.2.tgz", - "integrity": "sha512-cSSF1K5w9juI2+JeSRAdaTUZJf6cJB0aWwWO1nQQkcWw44+bIfXmhZMwK2eEsv6tXvU3UfKX/kzcX6SP+1tLAw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-7.2.0.tgz", + "integrity": "sha512-iLs7dGSyjZiUgvrUvuD3FndAxVJk+TywBkkkwUSm9HdYoskJalWg5qVsEiXeufPvRVPbCUmNQewg798rx+sPXg==", "license": "MIT", "dependencies": { - "ansi-escapes": "^7.1.0", + "ansi-escapes": "^7.3.0", "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.2", - "strip-ansi": "^7.1.2", - "wrap-ansi": "^9.0.2" + "slice-ansi": "^8.0.0", + "strip-ansi": "^7.2.0", + "wrap-ansi": "^10.0.0" }, "engines": { "node": ">=20" @@ -11097,12 +11449,12 @@ } }, "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -11149,9 +11501,9 @@ } }, "node_modules/lru.min": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.3.tgz", - "integrity": "sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", + "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", "license": "MIT", "engines": { "bun": ">=1.0.0", @@ -11319,9 +11671,9 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -12184,9 +12536,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -12266,15 +12618,16 @@ } }, "node_modules/minimatch": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz", - "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==", - "license": "ISC", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -12290,10 +12643,10 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -12328,10 +12681,10 @@ } }, "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "license": "ISC", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", + "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==", + "license": "BlueOak-1.0.0", "dependencies": { "minipass": "^3.0.0" }, @@ -12457,18 +12810,18 @@ "license": "MIT" }, "node_modules/msgpackr": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", - "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.0.1.tgz", + "integrity": "sha512-9J+tqTEsbHqY8YohazYgty7LgerFIWxvMLpUjqETSmjHojtJm2WnX2kK/2a1fLI7CO7ERP1YSEUXMucz4j+yBA==", "license": "MIT", "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "node_modules/msgpackr-extract": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", - "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.4.tgz", + "integrity": "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -12479,12 +12832,12 @@ "download-msgpackr-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4" } }, "node_modules/murmurhash-js": { @@ -12503,9 +12856,9 @@ } }, "node_modules/mysql2": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.16.2.tgz", - "integrity": "sha512-JsqBpYNy7pH20lGfPuSyRSIcCxSeAIwxWADpV64nP9KeyN3ZKpHZgjKXuBKsh7dH6FbOvf1bOgoVKjSUPXRMTw==", + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.22.5.tgz", + "integrity": "sha512-95uZ2TrPWAZdwpB3vvvDbmEMcNG8yIeNCyu6GUcr/QnWEE/wXm7+mhOCsdQfWQDTV7qYT/PDUZ4U4UPP4AsXqQ==", "license": "MIT", "dependencies": { "aws-ssl-profiles": "^1.1.2", @@ -12513,13 +12866,31 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.7.2", "long": "^5.3.2", - "lru.min": "^1.1.3", + "lru.min": "^1.1.4", "named-placeholders": "^1.1.6", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.3" + "sql-escaper": "^1.3.3" }, "engines": { "node": ">= 8.0" + }, + "peerDependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/named-placeholders": { @@ -12541,16 +12912,16 @@ "license": "MIT" }, "node_modules/nan": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz", - "integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.27.0.tgz", + "integrity": "sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ==", "license": "MIT", "optional": true }, "node_modules/nanoid": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", - "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", + "version": "5.1.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.11.tgz", + "integrity": "sha512-v+KEsUv2ps74PaSKv0gHTxTCgMXOIfBEbaqa6w6ISIGC7ZsvHN4N9oJ8d4cmf0n5oTzQz2SLmThbQWhjd/8eKg==", "funding": [ { "type": "github", @@ -12588,9 +12959,9 @@ } }, "node_modules/node-abi": { - "version": "3.87.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", - "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", + "version": "3.92.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz", + "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==", "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -12606,9 +12977,9 @@ "license": "MIT" }, "node_modules/node-addon-api": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", - "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.8.0.tgz", + "integrity": "sha512-c5Ko1fZJIJmzhFIkhRN76WTq+fC6tWnGy9CXA0fA+XygsWZmEwG8vmbkNqxMyoaa0Tin4djul49NzdVcJJcjeA==", "license": "MIT", "engines": { "node": "^18 || ^20 || >= 21" @@ -12674,12 +13045,12 @@ } }, "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/node-gyp/node_modules/which": { @@ -12698,10 +13069,13 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "license": "MIT" + "version": "2.0.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/nopt": { "version": "8.1.0", @@ -12881,9 +13255,9 @@ } }, "node_modules/openai": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-6.27.0.tgz", - "integrity": "sha512-osTKySlrdYrLYTt0zjhY8yp0JUBmWDCN+Q+QxsV4xMQnnoVFpylgKGgxwN8sSdTNw0G4y+WUXs4eCMWpyDNWZQ==", + "version": "6.38.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.38.0.tgz", + "integrity": "sha512-AoMplt2UalrpgUDMh3L09QWjNRlgJPipclQvA6sYAaeF6nHNBMgmikAZGmcYLn8on4d9sQY9Q8bOLfrBS7Lc8g==", "license": "Apache-2.0", "bin": { "openai": "bin/cli" @@ -13018,6 +13392,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -13223,9 +13614,9 @@ } }, "node_modules/path-expression-matcher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", "funding": [ { "type": "github", @@ -13361,9 +13752,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -13373,9 +13764,9 @@ } }, "node_modules/pino": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.0.tgz", - "integrity": "sha512-0GNPNzHXBKw6U/InGe79A3Crzyk9bcSyObF9/Gfo9DLEf5qj5RF50RSjsu0W1rZ6ZqRGdzDFCRBQvi9/rSGPtA==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", "license": "MIT", "dependencies": { "@pinojs/redact": "^0.4.0", @@ -13480,9 +13871,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", "funding": [ { "type": "opencollective", @@ -13499,7 +13890,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -13514,9 +13905,9 @@ "license": "MIT" }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "funding": [ { "type": "github", @@ -13538,9 +13929,9 @@ "license": "ISC" }, "node_modules/preact": { - "version": "10.28.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.3.tgz", - "integrity": "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==", + "version": "10.29.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.2.tgz", + "integrity": "sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==", "license": "MIT", "funding": { "type": "opencollective", @@ -13551,6 +13942,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", @@ -13613,15 +14005,15 @@ } }, "node_modules/prettier-plugin-edgejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/prettier-plugin-edgejs/-/prettier-plugin-edgejs-1.0.6.tgz", - "integrity": "sha512-RZ3xPEiHfw6ca/YzfKmu6rSOviheC9THfGlqg7rs8srbr1RugJQ8k3KmjLHH1oXadQBzZeIeZ3d25Dhs+fe4UA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/prettier-plugin-edgejs/-/prettier-plugin-edgejs-1.0.7.tgz", + "integrity": "sha512-IP3dEjxGUXnU9Ev6znBzPBvM6x2nIebP4NUW1Z5g1XEi37FgEzSPmQExkdVOdtf2B6oeC8r4pzIvBobLx7ewMw==", "dev": true, "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.4", - "edgejs-parser": "^0.2.18", - "prettier": "^3.6.2", + "edgejs-parser": "^0.2.19", + "prettier": "^3.8.1", "uglify-js": "^3.19.2" } }, @@ -13638,14 +14030,15 @@ } }, "node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", + "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -13748,9 +14141,9 @@ } }, "node_modules/property-information": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", - "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", + "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", "license": "MIT", "funding": { "type": "github", @@ -13758,33 +14151,33 @@ } }, "node_modules/protobufjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", - "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.2.tgz", + "integrity": "sha512-N9EiLovGEQOJSPF26Ij7qUGvahfEnq0eeYZ02aigIedkmz1qZSwjnP9SBITHJuF/6MYbIW4HDN8zdYjsjqJKXQ==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", + "@protobufjs/inquire": "^1.1.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", - "long": "^5.0.0" + "long": "^5.3.2" }, "engines": { "node": ">=12.0.0" } }, "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz", + "integrity": "sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==", "license": "MIT" }, "node_modules/proxy-addr": { @@ -13800,16 +14193,28 @@ "node": ">= 0.10" } }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -13838,9 +14243,9 @@ } }, "node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -13935,6 +14340,22 @@ "node": ">= 0.10" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -13966,9 +14387,9 @@ } }, "node_modules/react": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", - "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14037,16 +14458,37 @@ "loose-envify": "^1.1.0" } }, + "node_modules/react-aria": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.49.0.tgz", + "integrity": "sha512-4+oK9FwJQWYhyA5zLfj/feOGY0zZbkE1muoF4gyxMroHVypjcYaRSTlJwvxph2zIlxt757KX6xIK2wJ5Aw1Kog==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.2", + "@internationalized/number": "^3.6.7", + "@internationalized/string": "^3.2.9", + "@react-types/shared": "^3.35.0", + "@swc/helpers": "^0.5.0", + "aria-hidden": "^1.2.3", + "clsx": "^2.0.0", + "react-stately": "3.47.0", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/react-dom": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", - "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.4" + "react": "^19.2.7" } }, "node_modules/react-is": { @@ -14055,6 +14497,20 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, + "node_modules/react-is-18": { + "name": "react-is", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-is-19": { + "name": "react-is", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz", + "integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==", + "license": "MIT" + }, "node_modules/react-map-gl": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-8.1.0.tgz", @@ -14115,6 +14571,23 @@ "node": ">=0.10.0" } }, + "node_modules/react-stately": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.47.0.tgz", + "integrity": "sha512-H3ar+SOWP920EbVg7qWfP3fZjZiwhlEJAEJQqjt+w8oKijCwFgr0+R4941PIHscOXRNRvEOjvWilitImC0DdBg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.2", + "@internationalized/number": "^3.6.7", + "@internationalized/string": "^3.2.9", + "@react-types/shared": "^3.35.0", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/read-package-up": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-12.0.0.tgz", @@ -14134,17 +14607,17 @@ } }, "node_modules/read-pkg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.0.0.tgz", - "integrity": "sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.1.0.tgz", + "integrity": "sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==", "dev": true, "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.4", "normalize-package-data": "^8.0.0", "parse-json": "^8.3.0", - "type-fest": "^5.2.0", - "unicorn-magic": "^0.3.0" + "type-fest": "^5.4.4", + "unicorn-magic": "^0.4.0" }, "engines": { "node": ">=20" @@ -14153,6 +14626,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/read-pkg/node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -14347,11 +14833,12 @@ } }, "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "license": "MIT", "dependencies": { + "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" @@ -14405,7 +14892,6 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 4" @@ -14429,12 +14915,12 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", + "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@types/estree": "1.0.9" }, "bin": { "rollup": "dist/bin/rollup" @@ -14444,31 +14930,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", + "@rollup/rollup-android-arm-eabi": "4.61.1", + "@rollup/rollup-android-arm64": "4.61.1", + "@rollup/rollup-darwin-arm64": "4.61.1", + "@rollup/rollup-darwin-x64": "4.61.1", + "@rollup/rollup-freebsd-arm64": "4.61.1", + "@rollup/rollup-freebsd-x64": "4.61.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", + "@rollup/rollup-linux-arm-musleabihf": "4.61.1", + "@rollup/rollup-linux-arm64-gnu": "4.61.1", + "@rollup/rollup-linux-arm64-musl": "4.61.1", + "@rollup/rollup-linux-loong64-gnu": "4.61.1", + "@rollup/rollup-linux-loong64-musl": "4.61.1", + "@rollup/rollup-linux-ppc64-gnu": "4.61.1", + "@rollup/rollup-linux-ppc64-musl": "4.61.1", + "@rollup/rollup-linux-riscv64-gnu": "4.61.1", + "@rollup/rollup-linux-riscv64-musl": "4.61.1", + "@rollup/rollup-linux-s390x-gnu": "4.61.1", + "@rollup/rollup-linux-x64-gnu": "4.61.1", + "@rollup/rollup-linux-x64-musl": "4.61.1", + "@rollup/rollup-openbsd-x64": "4.61.1", + "@rollup/rollup-openharmony-arm64": "4.61.1", + "@rollup/rollup-win32-arm64-msvc": "4.61.1", + "@rollup/rollup-win32-ia32-msvc": "4.61.1", + "@rollup/rollup-win32-x64-gnu": "4.61.1", + "@rollup/rollup-win32-x64-msvc": "4.61.1", "fsevents": "~2.3.2" } }, @@ -14560,9 +15046,9 @@ "license": "BSD-3-Clause" }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.3.tgz", + "integrity": "sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14610,11 +15096,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" - }, "node_modules/serialize-error": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", @@ -14758,14 +15239,14 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -14777,13 +15258,13 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -14905,16 +15386,16 @@ "license": "ISC" }, "node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -14933,9 +15414,9 @@ } }, "node_modules/slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", + "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", "license": "MIT", "engines": { "node": ">=8.0.0" @@ -14952,12 +15433,12 @@ } }, "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz", + "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==", "license": "MIT", "dependencies": { - "ip-address": "^10.0.1", + "ip-address": "^10.1.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -14979,10 +15460,19 @@ "node": ">= 14" } }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/sonic-boom": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", - "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", + "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" @@ -15081,9 +15571,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, @@ -15151,13 +15641,19 @@ "node": ">= 10.x" } }, - "node_modules/sqlstring": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", - "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "node_modules/sql-escaper": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/sql-escaper/-/sql-escaper-1.3.3.tgz", + "integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==", "license": "MIT", "engines": { - "node": ">= 0.6" + "bun": ">=1.0.0", + "deno": ">=2.0.0", + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" } }, "node_modules/ssh2": { @@ -15211,9 +15707,9 @@ } }, "node_modules/stacktracey": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", - "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.2.0.tgz", + "integrity": "sha512-ETyQEz+CzXiLjEbyJqpbp+/T79RQD/6wqFucRBIlVNZfYq2Ay7wbretD4cxpbymZlaPWx58aIhPEY1Cr8DlVvg==", "license": "Unlicense", "dependencies": { "as-table": "^1.0.36", @@ -15310,12 +15806,12 @@ } }, "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -15427,21 +15923,24 @@ } }, "node_modules/strnum": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", - "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.0.tgz", + "integrity": "sha512-sHrVyWWdq28RbhjuJdZsA1SnGRJV6NiXbk6AXBxDOsgAcA+lmpUZCYjOdLBxkXMwis6RRe7dlZt4VlIWFVzkmg==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" } ], - "license": "MIT" + "license": "MIT", + "dependencies": { + "anynum": "^1.0.0" + } }, "node_modules/strtok3": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", - "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", + "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", "license": "MIT", "dependencies": { "@tokenizer/token": "^0.3.0" @@ -15506,13 +16005,13 @@ } }, "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz", + "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.2.9" + "@pkgr/core": "^0.3.6" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -15522,9 +16021,10 @@ } }, "node_modules/systeminformation": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.0.tgz", - "integrity": "sha512-z5pjzvC8UnQJ/iu34z+mo3lAeMzTGdArjPQoG5uPyV5XY4BY+M6ZcRTl4XnZqudz6sP713LhWMKv6e0kGFGCgQ==", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.6.tgz", + "integrity": "sha512-Uv2b2uGGM6ns+26czgW2cYRabYdnswM0ddSOOlryHOaelzsmDSet1iM/NT7VOYxW8x/BW+HkY+b1Ve2pLTSGSA==", + "license": "MIT", "os": [ "darwin", "linux", @@ -15572,9 +16072,9 @@ "license": "MIT" }, "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "license": "MIT", "engines": { "node": ">=6" @@ -15661,6 +16161,18 @@ "node": ">=10" } }, + "node_modules/terminal-size": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/terminal-size/-/terminal-size-4.0.1.tgz", + "integrity": "sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tesseract.js": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tesseract.js/-/tesseract.js-7.0.0.tgz", @@ -15686,17 +16198,23 @@ "license": "Apache-2.0" }, "node_modules/thread-stream": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", - "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.2.0.tgz", + "integrity": "sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==", "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "real-require": "^1.0.0" }, "engines": { "node": ">=20" } }, + "node_modules/thread-stream/node_modules/real-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-1.0.0.tgz", + "integrity": "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==", + "license": "MIT" + }, "node_modules/tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", @@ -15706,22 +16224,6 @@ "node": ">=8" } }, - "node_modules/time-span": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", - "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "convert-hrtime": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", @@ -15730,13 +16232,13 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -15832,9 +16334,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -16003,9 +16505,9 @@ } }, "node_modules/type-fest": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.3.tgz", - "integrity": "sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.7.0.tgz", + "integrity": "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==", "dev": true, "license": "(MIT OR CC0-1.0)", "dependencies": { @@ -16019,17 +16521,21 @@ } }, "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "license": "MIT", "dependencies": { - "content-type": "^1.0.5", + "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/typescript": { @@ -16046,16 +16552,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.54.0.tgz", - "integrity": "sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.0.tgz", + "integrity": "sha512-8y31Rd0eGTrDKqhy6vT0HtzhN+YLjQizwX3aA3hPXP/ynSfnrBXcQY5IzsP9/DM7+klX4IUncZZjkchP0z+rUw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.54.0", - "@typescript-eslint/parser": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0", - "@typescript-eslint/utils": "8.54.0" + "@typescript-eslint/eslint-plugin": "8.61.0", + "@typescript-eslint/parser": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/utils": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16065,8 +16571,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/typewise": { @@ -16122,9 +16628,9 @@ } }, "node_modules/undici": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz", - "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.26.0.tgz", + "integrity": "sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==", "license": "MIT", "engines": { "node": ">=18.17" @@ -16349,16 +16855,17 @@ "license": "MIT" }, "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { @@ -16379,9 +16886,9 @@ } }, "node_modules/validator": { - "version": "13.15.26", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", - "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "version": "13.15.35", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.35.tgz", + "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -16425,9 +16932,9 @@ } }, "node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -16549,18 +17056,6 @@ "node": ">=18" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/whatwg-fetch": { "version": "3.6.20", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", @@ -16624,17 +17119,17 @@ "license": "MIT" }, "node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-10.0.0.tgz", + "integrity": "sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "ansi-styles": "^6.2.3", + "string-width": "^8.2.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -16711,13 +17206,29 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -16732,6 +17243,21 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/xml-naming": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/admin/package.json b/admin/package.json index ab229f4..18254d8 100644 --- a/admin/package.json +++ b/admin/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "type": "module", - "license": "ISC", + "license": "Apache-2.0", "author": "Crosstalk Solutions, LLC", "scripts": { "start": "node bin/server.js", @@ -38,94 +38,97 @@ "#jobs/*": "./app/jobs/*.js" }, "devDependencies": { - "@adonisjs/assembler": "^7.8.2", - "@adonisjs/eslint-config": "^2.0.0", - "@adonisjs/prettier-config": "^1.4.4", - "@adonisjs/tsconfig": "^1.4.0", - "@japa/assert": "^4.0.1", - "@japa/plugin-adonisjs": "^4.0.0", - "@japa/runner": "^4.2.0", + "@adonisjs/assembler": "7.8.2", + "@adonisjs/eslint-config": "2.1.2", + "@adonisjs/prettier-config": "1.4.5", + "@adonisjs/tsconfig": "1.4.1", + "@japa/assert": "4.2.0", + "@japa/plugin-adonisjs": "4.0.0", + "@japa/runner": "4.5.0", "@swc/core": "1.11.24", - "@tanstack/eslint-plugin-query": "^5.81.2", - "@types/compression": "^1.8.1", - "@types/dockerode": "^4.0.1", - "@types/luxon": "^3.6.2", - "@types/node": "^22.15.18", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", - "@types/stopword": "^2.0.3", - "eslint": "^9.26.0", - "hot-hook": "^0.4.0", - "prettier": "^3.5.3", - "ts-node-maintained": "^10.9.5", - "typescript": "~5.8.3", - "vite": "^6.4.1" + "@tanstack/eslint-plugin-query": "5.91.4", + "@types/compression": "1.8.1", + "@types/dockerode": "4.0.1", + "@types/luxon": "3.7.1", + "@types/node": "22.19.7", + "@types/react": "19.2.10", + "@types/react-dom": "19.2.3", + "@types/stopword": "2.0.3", + "eslint": "9.39.2", + "hot-hook": "0.4.0", + "prettier": "3.8.1", + "ts-node-maintained": "10.9.6", + "typescript": "5.8.3", + "vite": "6.4.2" }, "dependencies": { - "@adonisjs/auth": "^9.4.0", - "@adonisjs/core": "^6.18.0", - "@adonisjs/cors": "^2.2.1", - "@adonisjs/inertia": "^3.1.1", - "@adonisjs/lucid": "^21.8.2", - "@adonisjs/session": "^7.5.1", - "@adonisjs/shield": "^8.2.0", - "@adonisjs/static": "^1.1.1", - "@adonisjs/transmit": "^2.0.2", - "@adonisjs/transmit-client": "^1.0.0", - "@adonisjs/vite": "^4.0.0", - "@chonkiejs/core": "^0.0.7", - "@headlessui/react": "^2.2.4", - "@inertiajs/react": "^2.0.13", - "@markdoc/markdoc": "^0.5.2", - "@openzim/libzim": "^4.0.0", - "@protomaps/basemaps": "^5.7.0", - "@qdrant/js-client-rest": "^1.16.2", - "@tabler/icons-react": "^3.34.0", - "@tailwindcss/vite": "^4.1.10", - "@tanstack/react-query": "^5.81.5", - "@tanstack/react-query-devtools": "^5.83.0", - "@tanstack/react-virtual": "^3.13.12", - "@uppy/core": "^5.2.0", - "@uppy/dashboard": "^5.1.0", - "@uppy/react": "^5.1.1", - "@vinejs/vine": "^3.0.1", - "@vitejs/plugin-react": "^4.6.0", - "autoprefixer": "^10.4.21", - "axios": "^1.13.5", - "better-sqlite3": "^12.1.1", - "bullmq": "^5.65.1", - "cheerio": "^1.2.0", - "compression": "^1.8.1", - "dockerode": "^4.0.7", - "edge.js": "^6.2.1", - "fast-xml-parser": "^5.5.7", - "fuse.js": "^7.1.0", - "jszip": "^3.10.1", - "luxon": "^3.6.1", - "maplibre-gl": "^4.7.1", - "mysql2": "^3.14.1", - "ollama": "^0.6.3", - "openai": "^6.27.0", - "pdf-parse": "^2.4.5", - "pdf2pic": "^3.2.0", - "pino-pretty": "^13.0.0", - "pmtiles": "^4.4.0", - "postcss": "^8.5.6", - "react": "^19.1.0", - "react-adonis-transmit": "^1.0.1", - "react-dom": "^19.1.0", - "react-map-gl": "^8.1.0", - "react-markdown": "^10.1.0", - "reflect-metadata": "^0.2.2", - "remark-gfm": "^4.0.1", - "sharp": "^0.34.5", - "stopword": "^3.1.5", - "systeminformation": "^5.31.0", - "tailwindcss": "^4.2.1", - "tar": "^7.5.11", - "tesseract.js": "^7.0.0", - "url-join": "^5.0.0", - "yaml": "^2.8.3" + "@adonisjs/auth": "9.6.0", + "@adonisjs/core": "6.19.3", + "@adonisjs/cors": "2.2.1", + "@adonisjs/inertia": "3.1.1", + "@adonisjs/lucid": "21.8.2", + "@adonisjs/session": "7.7.1", + "@adonisjs/shield": "8.2.0", + "@adonisjs/static": "1.1.1", + "@adonisjs/transmit": "2.0.2", + "@adonisjs/transmit-client": "1.1.0", + "@adonisjs/vite": "4.0.0", + "@chonkiejs/core": "0.0.7", + "@headlessui/react": "2.2.9", + "@inertiajs/react": "2.3.13", + "@markdoc/markdoc": "0.5.4", + "@openzim/libzim": "4.0.0", + "@protomaps/basemaps": "5.7.0", + "@qdrant/js-client-rest": "1.16.2", + "@tabler/icons-react": "3.36.1", + "@tailwindcss/vite": "4.3.0", + "@tanstack/react-query": "5.90.20", + "@tanstack/react-query-devtools": "5.91.3", + "@tanstack/react-virtual": "3.13.18", + "@uppy/core": "5.2.0", + "@uppy/dashboard": "5.1.0", + "@uppy/react": "5.1.1", + "@uppy/xhr-upload": "5.2.0", + "@vinejs/vine": "3.0.1", + "@vitejs/plugin-react": "4.7.0", + "autoprefixer": "10.5.0", + "axios": "1.17.0", + "better-sqlite3": "12.6.2", + "bullmq": "5.77.6", + "cheerio": "1.2.0", + "compression": "1.8.1", + "dockerode": "4.0.9", + "edge.js": "6.4.0", + "fast-xml-parser": "5.7.0", + "fuse.js": "7.1.0", + "ioredis": "5.10.1", + "ipaddr.js": "2.4.0", + "jszip": "3.10.1", + "luxon": "3.7.2", + "maplibre-gl": "4.7.1", + "mysql2": "3.22.5", + "ollama": "0.6.3", + "openai": "6.38.0", + "pdf-parse": "2.4.5", + "pdf2pic": "3.2.0", + "pino-pretty": "13.1.3", + "pmtiles": "4.4.0", + "postcss": "8.5.15", + "react": "19.2.7", + "react-adonis-transmit": "1.0.1", + "react-dom": "19.2.7", + "react-map-gl": "8.1.0", + "react-markdown": "10.1.0", + "reflect-metadata": "0.2.2", + "remark-gfm": "4.0.1", + "sharp": "0.34.5", + "stopword": "3.1.5", + "systeminformation": "5.31.6", + "tailwindcss": "4.2.2", + "tar": "7.5.11", + "tesseract.js": "7.0.0", + "url-join": "5.0.0", + "yaml": "2.8.3" }, "hotHook": { "boundaries": [ diff --git a/admin/providers/gpu_passthrough_remediation_provider.ts b/admin/providers/gpu_passthrough_remediation_provider.ts new file mode 100644 index 0000000..e06aa44 --- /dev/null +++ b/admin/providers/gpu_passthrough_remediation_provider.ts @@ -0,0 +1,122 @@ +import logger from '@adonisjs/core/services/logger' +import type { ApplicationService } from '@adonisjs/core/types' + +/** + * Auto-remediates NVIDIA GPU passthrough loss after admin / host restart. + * + * After an update or container recreate, nomad_ollama's HostConfig.DeviceRequests + * still lists the nvidia driver, but the NVIDIA Container Toolkit binding inside + * the container is torn. `nvidia-smi` inside the container returns + * "Failed to initialize NVML: Unknown Error" and Ollama silently falls back to + * CPU inference. PR #208 added detection + a one-click "Fix: Reinstall AI Assistant" + * banner. This provider does that click automatically on admin boot when the + * condition is detected. + * + * Guards: + * - NVIDIA-only. AMD passthrough_failed has a different fix path (HSA override + * handling in PR #804) and is left to the user. + * - One-shot per admin boot. The provider runs once on startup; if the recreate + * itself fails the banner remains as a fallback. + * - Opt-out via KV `ai.autoFixGpuPassthrough = false`. + * - Skipped entirely when no NVIDIA runtime is registered with Docker. + */ +export default class GpuPassthroughRemediationProvider { + constructor(protected app: ApplicationService) {} + + async boot() { + if (this.app.getEnvironment() !== 'web') return + + setImmediate(async () => { + try { + const KVStore = (await import('#models/kv_store')).default + const { DockerService } = await import('#services/docker_service') + const { SERVICE_NAMES } = await import('../constants/service_names.js') + const Docker = (await import('dockerode')).default + + const enabledRaw = await KVStore.getValue('ai.autoFixGpuPassthrough') + if (String(enabledRaw) === 'false') { + logger.info( + '[GpuPassthroughRemediationProvider] Auto-fix disabled via KV — skipping.' + ) + return + } + + const docker = new Docker({ socketPath: '/var/run/docker.sock' }) + const dockerInfo = await docker.info() + const runtimes = dockerInfo.Runtimes || {} + const hasNvidiaRuntime = 'nvidia' in runtimes + + if (!hasNvidiaRuntime) { + logger.info( + '[GpuPassthroughRemediationProvider] No NVIDIA runtime registered — skipping.' + ) + return + } + + const containers = await docker.listContainers({ all: false }) + const ollama = containers.find((c) => c.Names.includes(`/${SERVICE_NAMES.OLLAMA}`)) + + if (!ollama) { + logger.info( + '[GpuPassthroughRemediationProvider] nomad_ollama not running — skipping.' + ) + return + } + + // Probe: exec nvidia-smi inside the Ollama container. NVML init failure + // is the signature of a broken passthrough that DeviceRequests can't see. + const container = docker.getContainer(ollama.Id) + const exec = await container.exec({ + Cmd: ['nvidia-smi', '--query-gpu=name', '--format=csv,noheader'], + AttachStdout: true, + AttachStderr: true, + }) + const stream = await exec.start({ Tty: true }) + const output = await new Promise((resolve) => { + let buf = '' + const timer = setTimeout(() => resolve(buf || 'TIMEOUT'), 8000) + stream.on('data', (chunk: Buffer) => (buf += chunk.toString('utf8'))) + stream.on('end', () => { + clearTimeout(timer) + resolve(buf) + }) + }) + + const passthroughBroken = + /Failed to initialize NVML|Unknown Error|TIMEOUT/i.test(output) || + !/[A-Za-z]/.test(output) + + if (!passthroughBroken) { + logger.info( + '[GpuPassthroughRemediationProvider] NVIDIA passthrough healthy — no action needed.' + ) + return + } + + logger.warn( + '[GpuPassthroughRemediationProvider] NVIDIA passthrough broken (nvidia-smi inside nomad_ollama failed). ' + + 'Auto-reinstalling nomad_ollama; volumes and installed models are preserved.' + ) + + const dockerService = new DockerService() + const result = await dockerService.forceReinstall(SERVICE_NAMES.OLLAMA) + + if (result.success) { + await KVStore.setValue('gpu.autoRemediatedAt', new Date().toISOString()) + logger.info( + '[GpuPassthroughRemediationProvider] nomad_ollama force-reinstall completed successfully.' + ) + } else { + logger.error( + `[GpuPassthroughRemediationProvider] Force-reinstall failed: ${result.message}. ` + + 'User can still click the "Fix: Reinstall AI Assistant" banner manually.' + ) + } + } catch (err: any) { + logger.error( + `[GpuPassthroughRemediationProvider] Auto-remediation check failed: ${err?.message ?? err}` + ) + } + }) + } +} diff --git a/admin/providers/kiwix_migration_provider.ts b/admin/providers/kiwix_migration_provider.ts index 5e010b3..e9bccf7 100644 --- a/admin/providers/kiwix_migration_provider.ts +++ b/admin/providers/kiwix_migration_provider.ts @@ -22,6 +22,7 @@ export default class KiwixMigrationProvider { const Service = (await import('#models/service')).default const { SERVICE_NAMES } = await import('../constants/service_names.js') const { DockerService } = await import('#services/docker_service') + const { KiwixLibraryService } = await import('#services/kiwix_library_service') const kiwixService = await Service.query() .where('service_name', SERVICE_NAMES.KIWIX) @@ -36,7 +37,15 @@ export default class KiwixMigrationProvider { const isLegacy = await dockerService.isKiwixOnLegacyConfig() if (!isLegacy) { - logger.info('[KiwixMigrationProvider] Kiwix is already in library mode — no migration needed.') + // Already in library mode. Make sure the library XML actually exists and + // is parseable — if it was lost or corrupted outside the download flow, + // rebuild it from disk so Kiwix isn't left serving an empty library. + const rebuilt = await new KiwixLibraryService().ensureLibraryXmlHealthy() + logger.info( + rebuilt + ? '[KiwixMigrationProvider] Rebuilt missing/invalid Kiwix library XML on startup.' + : '[KiwixMigrationProvider] Kiwix is already in library mode — no migration needed.' + ) return } diff --git a/admin/providers/qdrant_restart_policy_provider.ts b/admin/providers/qdrant_restart_policy_provider.ts new file mode 100644 index 0000000..b909242 --- /dev/null +++ b/admin/providers/qdrant_restart_policy_provider.ts @@ -0,0 +1,62 @@ +import logger from '@adonisjs/core/services/logger' +import type { ApplicationService } from '@adonisjs/core/types' + +/** + * Ensures the nomad_qdrant container has the `unless-stopped` restart policy. + * + * Existing installations may have been created before this policy was enforced + * in the service seeder. Docker allows updating a container's restart policy + * without recreating it via the container.update() API. + * + * This provider runs once on every admin startup. If the policy is already + * correct, the check is a no-op. + */ +export default class QdrantRestartPolicyProvider { + constructor(protected app: ApplicationService) {} + + async boot() { + if (this.app.getEnvironment() !== 'web') return + + setImmediate(async () => { + try { + const Service = (await import('#models/service')).default + const { SERVICE_NAMES } = await import('../constants/service_names.js') + const Docker = (await import('dockerode')).default + + const qdrantService = await Service.query() + .where('service_name', SERVICE_NAMES.QDRANT) + .first() + + if (!qdrantService?.installed) { + logger.info('[QdrantRestartPolicyProvider] Qdrant not installed — skipping restart policy check.') + return + } + + const docker = new Docker({ socketPath: '/var/run/docker.sock' }) + const containers = await docker.listContainers({ all: true }) + const containerInfo = containers.find((c) => c.Names.includes(`/${SERVICE_NAMES.QDRANT}`)) + + if (!containerInfo) { + logger.warn('[QdrantRestartPolicyProvider] Qdrant container not found — skipping restart policy check.') + return + } + + const container = docker.getContainer(containerInfo.Id) + const inspected = await container.inspect() + const currentPolicy = inspected.HostConfig?.RestartPolicy?.Name + + if (currentPolicy === 'unless-stopped') { + logger.info('[QdrantRestartPolicyProvider] Qdrant already has unless-stopped restart policy — no update needed.') + return + } + + logger.info(`[QdrantRestartPolicyProvider] Qdrant restart policy is "${currentPolicy ?? 'none'}" — updating to unless-stopped.`) + await container.update({ RestartPolicy: { Name: 'unless-stopped', MaximumRetryCount: 0 } }) + logger.info('[QdrantRestartPolicyProvider] Qdrant restart policy updated successfully.') + } catch (err: any) { + logger.error(`[QdrantRestartPolicyProvider] Failed to update Qdrant restart policy: ${err.message}`) + // Non-fatal: the container will still run, just without auto-restart on crash. + } + }) + } +} diff --git a/admin/providers/version_check_provider.ts b/admin/providers/version_check_provider.ts new file mode 100644 index 0000000..20add77 --- /dev/null +++ b/admin/providers/version_check_provider.ts @@ -0,0 +1,56 @@ +import logger from '@adonisjs/core/services/logger' +import type { ApplicationService } from '@adonisjs/core/types' + +/** + * Self-heals stale `system.updateAvailable` after a sidecar-driven update. + * + * When the admin container is recreated on a new image, the KVStore still + * carries pre-update values for `system.updateAvailable` and + * `system.latestVersion`. Without intervention the UI keeps showing the + * "update available" banner until the next scheduled CheckUpdateJob (could be up to ~12h). + * + * Synchronous self-heal (no network): if the cached "latest" is not newer + * than the version we are now running, clear `updateAvailable`. The next + * scheduled CheckUpdateJob refreshes the cache from GitHub — we deliberately + * do not hit the network from boot to avoid coupling container startup to + * a network request to Github (e.g. container restart loop = flooding GitHub with requests). + * + * Note: this provider does not set `updateAvailable` to true if the cached + * "latest" is newer than the current version. We rely on the next scheduled + * CheckUpdateJob to do that, to avoid false positives in case of a stale cache. + */ +export default class VersionCheckProvider { + constructor(protected app: ApplicationService) { } + + async boot() { + if (this.app.getEnvironment() !== 'web') return + + setImmediate(async () => { + try { + const KVStore = (await import('#models/kv_store')).default + const { SystemService } = await import('#services/system_service') + const { isNewerVersion } = await import('../app/utils/version.js') + + const current = SystemService.getAppVersion() + if (current === 'dev' || current === '0.0.0'){ + logger.info(`[VersionCheckProvider] Skipping self-heal for version ${current}. Appears to be a dev build without proper version set.`) + return + } + + logger.info(`[VersionCheckProvider] Checking for stale updateAvailable (current=${current})`) + + const cachedLatest = (await KVStore.getValue('system.latestVersion')) as string | null + const earlyAccess = ((await KVStore.getValue('system.earlyAccess')) ?? false) as boolean + + if (cachedLatest && !isNewerVersion(cachedLatest, current, earlyAccess)) { + await KVStore.setValue('system.updateAvailable', false) + logger.info( + `[VersionCheckProvider] Cleared stale updateAvailable (cached=${cachedLatest}, current=${current})` + ) + } + } catch (err: any) { + logger.warn(`[VersionCheckProvider] Self-heal skipped: ${err?.message ?? err}`) + } + }) + } +} diff --git a/admin/resources/geodata/ne_50m_admin_0_countries.geojson b/admin/resources/geodata/ne_50m_admin_0_countries.geojson new file mode 100644 index 0000000..9d99f26 --- /dev/null +++ b/admin/resources/geodata/ne_50m_admin_0_countries.geojson @@ -0,0 +1 @@ +{"type":"FeatureCollection","name":"ne_50m_admin_0_countries","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Zimbabwe","SOV_A3":"ZWE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Zimbabwe","ADM0_A3":"ZWE","GEOU_DIF":0,"GEOUNIT":"Zimbabwe","GU_A3":"ZWE","SU_DIF":0,"SUBUNIT":"Zimbabwe","SU_A3":"ZWE","BRK_DIFF":0,"NAME":"Zimbabwe","NAME_LONG":"Zimbabwe","BRK_A3":"ZWE","BRK_NAME":"Zimbabwe","BRK_GROUP":null,"ABBREV":"Zimb.","POSTAL":"ZW","FORMAL_EN":"Republic of Zimbabwe","FORMAL_FR":null,"NAME_CIAWF":"Zimbabwe","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Zimbabwe","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":5,"MAPCOLOR9":3,"MAPCOLOR13":9,"POP_EST":14645468,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":21440,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"5. Low income","FIPS_10":"ZI","ISO_A2":"ZW","ISO_A2_EH":"ZW","ISO_A3":"ZWE","ISO_A3_EH":"ZWE","ISO_N3":"716","ISO_N3_EH":"716","UN_A3":"716","WB_A2":"ZW","WB_A3":"ZWE","WOE_ID":23425004,"WOE_ID_EH":23425004,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ZWE","ADM0_DIFF":null,"ADM0_TLC":"ZWE","ADM0_A3_US":"ZWE","ADM0_A3_FR":"ZWE","ADM0_A3_RU":"ZWE","ADM0_A3_ES":"ZWE","ADM0_A3_CN":"ZWE","ADM0_A3_TW":"ZWE","ADM0_A3_IN":"ZWE","ADM0_A3_NP":"ZWE","ADM0_A3_PK":"ZWE","ADM0_A3_DE":"ZWE","ADM0_A3_GB":"ZWE","ADM0_A3_BR":"ZWE","ADM0_A3_IL":"ZWE","ADM0_A3_PS":"ZWE","ADM0_A3_SA":"ZWE","ADM0_A3_EG":"ZWE","ADM0_A3_MA":"ZWE","ADM0_A3_PT":"ZWE","ADM0_A3_AR":"ZWE","ADM0_A3_JP":"ZWE","ADM0_A3_KO":"ZWE","ADM0_A3_VN":"ZWE","ADM0_A3_TR":"ZWE","ADM0_A3_ID":"ZWE","ADM0_A3_PL":"ZWE","ADM0_A3_GR":"ZWE","ADM0_A3_IT":"ZWE","ADM0_A3_NL":"ZWE","ADM0_A3_SE":"ZWE","ADM0_A3_BD":"ZWE","ADM0_A3_UA":"ZWE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":8,"LABEL_X":29.925444,"LABEL_Y":-18.91164,"NE_ID":1159321441,"WIKIDATAID":"Q954","NAME_AR":"زيمبابوي","NAME_BN":"জিম্বাবুয়ে","NAME_DE":"Simbabwe","NAME_EN":"Zimbabwe","NAME_ES":"Zimbabue","NAME_FA":"زیمبابوه","NAME_FR":"Zimbabwe","NAME_EL":"Ζιμπάμπουε","NAME_HE":"זימבבואה","NAME_HI":"ज़िम्बाब्वे","NAME_HU":"Zimbabwe","NAME_ID":"Zimbabwe","NAME_IT":"Zimbabwe","NAME_JA":"ジンバブエ","NAME_KO":"짐바브웨","NAME_NL":"Zimbabwe","NAME_PL":"Zimbabwe","NAME_PT":"Zimbábue","NAME_RU":"Зимбабве","NAME_SV":"Zimbabwe","NAME_TR":"Zimbabve","NAME_UK":"Зімбабве","NAME_UR":"زمبابوے","NAME_VI":"Zimbabwe","NAME_ZH":"津巴布韦","NAME_ZHT":"辛巴威","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[25.224023,-22.402051,33.006738,-15.643066],"geometry":{"type":"Polygon","coordinates":[[[31.287891,-22.402051],[31.197266,-22.344922],[31.073438,-22.307813],[30.916113,-22.290723],[30.711621,-22.297852],[30.460156,-22.329004],[30.19043,-22.291113],[29.902344,-22.18418],[29.663086,-22.146289],[29.377441,-22.192773],[29.364844,-22.193945],[29.315234,-22.157715],[29.237207,-22.079492],[29.106836,-22.065723],[29.071484,-22.047461],[29.042383,-22.018359],[29.02334,-21.98125],[29.01582,-21.939941],[29.037305,-21.811328],[29.025586,-21.796875],[28.990723,-21.781445],[28.919336,-21.766016],[28.747754,-21.707617],[28.532031,-21.65127],[28.181641,-21.589355],[28.045605,-21.573047],[28.014063,-21.554199],[27.974609,-21.506738],[27.907422,-21.359082],[27.844141,-21.261523],[27.693457,-21.111035],[27.669434,-21.064258],[27.676953,-20.944824],[27.688086,-20.84834],[27.704297,-20.766406],[27.696973,-20.689746],[27.694824,-20.594531],[27.699609,-20.530664],[27.679297,-20.503027],[27.624609,-20.483594],[27.468945,-20.474805],[27.280762,-20.478711],[27.274609,-20.381836],[27.256738,-20.232031],[27.221484,-20.145801],[27.178223,-20.100977],[27.091797,-20.054199],[26.916699,-19.990137],[26.678223,-19.892773],[26.474609,-19.748633],[26.241016,-19.569336],[26.168066,-19.538281],[26.081934,-19.369922],[25.950684,-19.081738],[25.95918,-18.985645],[25.939355,-18.938672],[25.811914,-18.79707],[25.783691,-18.723535],[25.76123,-18.649219],[25.558301,-18.441797],[25.489258,-18.35127],[25.436719,-18.234961],[25.384375,-18.141992],[25.340234,-18.104492],[25.282422,-18.041211],[25.242285,-17.969043],[25.224023,-17.915234],[25.239063,-17.843066],[25.258789,-17.793555],[25.451758,-17.845117],[25.557129,-17.849512],[25.639648,-17.824121],[25.741602,-17.858203],[25.863281,-17.951953],[25.995898,-17.969824],[26.139551,-17.911719],[26.333398,-17.929297],[26.577539,-18.022559],[26.779883,-18.041504],[27.020801,-17.958398],[27.235742,-17.72832],[27.437891,-17.511914],[27.636719,-17.262109],[27.756543,-17.060352],[27.932227,-16.896191],[28.16377,-16.769727],[28.399805,-16.662793],[28.760645,-16.531934],[28.760547,-16.532129],[28.832715,-16.424121],[28.856738,-16.306152],[28.856738,-16.142285],[28.875586,-16.036133],[28.913086,-15.987793],[28.973047,-15.950098],[29.050586,-15.901172],[29.287891,-15.776465],[29.487305,-15.696777],[29.72959,-15.644629],[29.994922,-15.644043],[30.250684,-15.643457],[30.396094,-15.643066],[30.398145,-15.800781],[30.409375,-15.978223],[30.437793,-15.995313],[30.630176,-15.999219],[30.93877,-16.011719],[31.23623,-16.023633],[31.426172,-16.152344],[31.489844,-16.179688],[31.687598,-16.21416],[31.939844,-16.428809],[32.243262,-16.44873],[32.451953,-16.515723],[32.63584,-16.589453],[32.741797,-16.677637],[32.810254,-16.697656],[32.90293,-16.704199],[32.948047,-16.712305],[32.937891,-16.775977],[32.87627,-16.883594],[32.884375,-17.037793],[32.969336,-17.251563],[32.980762,-17.4375],[32.954688,-17.76543],[32.955566,-18.08291],[32.964648,-18.196289],[32.978516,-18.271484],[32.996387,-18.312598],[32.993066,-18.35957],[32.94248,-18.492676],[32.90166,-18.63291],[32.900293,-18.689063],[32.88457,-18.728516],[32.854492,-18.763672],[32.721973,-18.828418],[32.699219,-18.868457],[32.699707,-18.940918],[32.716504,-19.001855],[32.766211,-19.024316],[32.826172,-19.058789],[32.849805,-19.104395],[32.85,-19.152441],[32.830957,-19.241406],[32.777637,-19.38877],[32.830762,-19.558203],[32.89043,-19.668066],[32.972656,-19.79541],[33.006738,-19.873828],[33.004883,-19.930176],[32.992773,-19.984863],[32.869629,-20.217188],[32.780859,-20.361523],[32.672559,-20.516113],[32.529297,-20.613086],[32.492383,-20.659766],[32.477637,-20.712988],[32.482813,-20.828906],[32.476172,-20.950098],[32.353613,-21.136523],[32.429785,-21.29707],[32.412402,-21.311816],[32.371094,-21.334863],[32.194727,-21.51543],[32.016309,-21.698047],[31.885938,-21.831543],[31.737695,-21.983398],[31.571484,-22.153516],[31.429492,-22.298828],[31.287891,-22.402051]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Zambia","SOV_A3":"ZMB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Zambia","ADM0_A3":"ZMB","GEOU_DIF":0,"GEOUNIT":"Zambia","GU_A3":"ZMB","SU_DIF":0,"SUBUNIT":"Zambia","SU_A3":"ZMB","BRK_DIFF":0,"NAME":"Zambia","NAME_LONG":"Zambia","BRK_A3":"ZMB","BRK_NAME":"Zambia","BRK_GROUP":null,"ABBREV":"Zambia","POSTAL":"ZM","FORMAL_EN":"Republic of Zambia","FORMAL_FR":null,"NAME_CIAWF":"Zambia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Zambia","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":8,"MAPCOLOR9":5,"MAPCOLOR13":13,"POP_EST":17861030,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":23309,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"ZA","ISO_A2":"ZM","ISO_A2_EH":"ZM","ISO_A3":"ZMB","ISO_A3_EH":"ZMB","ISO_N3":"894","ISO_N3_EH":"894","UN_A3":"894","WB_A2":"ZM","WB_A3":"ZMB","WOE_ID":23425003,"WOE_ID_EH":23425003,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ZMB","ADM0_DIFF":null,"ADM0_TLC":"ZMB","ADM0_A3_US":"ZMB","ADM0_A3_FR":"ZMB","ADM0_A3_RU":"ZMB","ADM0_A3_ES":"ZMB","ADM0_A3_CN":"ZMB","ADM0_A3_TW":"ZMB","ADM0_A3_IN":"ZMB","ADM0_A3_NP":"ZMB","ADM0_A3_PK":"ZMB","ADM0_A3_DE":"ZMB","ADM0_A3_GB":"ZMB","ADM0_A3_BR":"ZMB","ADM0_A3_IL":"ZMB","ADM0_A3_PS":"ZMB","ADM0_A3_SA":"ZMB","ADM0_A3_EG":"ZMB","ADM0_A3_MA":"ZMB","ADM0_A3_PT":"ZMB","ADM0_A3_AR":"ZMB","ADM0_A3_JP":"ZMB","ADM0_A3_KO":"ZMB","ADM0_A3_VN":"ZMB","ADM0_A3_TR":"ZMB","ADM0_A3_ID":"ZMB","ADM0_A3_PL":"ZMB","ADM0_A3_GR":"ZMB","ADM0_A3_IT":"ZMB","ADM0_A3_NL":"ZMB","ADM0_A3_SE":"ZMB","ADM0_A3_BD":"ZMB","ADM0_A3_UA":"ZMB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":26.395298,"LABEL_Y":-14.660804,"NE_ID":1159321439,"WIKIDATAID":"Q953","NAME_AR":"زامبيا","NAME_BN":"জাম্বিয়া","NAME_DE":"Sambia","NAME_EN":"Zambia","NAME_ES":"Zambia","NAME_FA":"زامبیا","NAME_FR":"Zambie","NAME_EL":"Ζάμπια","NAME_HE":"זמביה","NAME_HI":"ज़ाम्बिया","NAME_HU":"Zambia","NAME_ID":"Zambia","NAME_IT":"Zambia","NAME_JA":"ザンビア","NAME_KO":"잠비아","NAME_NL":"Zambia","NAME_PL":"Zambia","NAME_PT":"Zâmbia","NAME_RU":"Замбия","NAME_SV":"Zambia","NAME_TR":"Zambiya","NAME_UK":"Замбія","NAME_UR":"زیمبیا","NAME_VI":"Zambia","NAME_ZH":"赞比亚","NAME_ZHT":"尚比亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[21.978906,-18.041504,33.661523,-8.193652],"geometry":{"type":"Polygon","coordinates":[[[30.396094,-15.643066],[30.250684,-15.643457],[29.994922,-15.644043],[29.72959,-15.644629],[29.487305,-15.696777],[29.287891,-15.776465],[29.050586,-15.901172],[28.973047,-15.950098],[28.913086,-15.987793],[28.875586,-16.036133],[28.856738,-16.142285],[28.856738,-16.306152],[28.832715,-16.424121],[28.760547,-16.532129],[28.760645,-16.531934],[28.399805,-16.662793],[28.16377,-16.769727],[27.932227,-16.896191],[27.756543,-17.060352],[27.636719,-17.262109],[27.437891,-17.511914],[27.235742,-17.72832],[27.020801,-17.958398],[26.779883,-18.041504],[26.577539,-18.022559],[26.333398,-17.929297],[26.139551,-17.911719],[25.995898,-17.969824],[25.863281,-17.951953],[25.741602,-17.858203],[25.639648,-17.824121],[25.557129,-17.849512],[25.451758,-17.845117],[25.258789,-17.793555],[25.092188,-17.634375],[25.001758,-17.568555],[24.932422,-17.543457],[24.73291,-17.517773],[24.274902,-17.481055],[24.227148,-17.489551],[24.036914,-17.520898],[23.799219,-17.560156],[23.594922,-17.599414],[23.380664,-17.640625],[23.181641,-17.474414],[22.955859,-17.285742],[22.721973,-17.075293],[22.545996,-16.910254],[22.459473,-16.815137],[22.305078,-16.689551],[22.193945,-16.628125],[22.150684,-16.597168],[22.040234,-16.262793],[21.979785,-15.955566],[21.979785,-15.724121],[21.979688,-15.403223],[21.97959,-15.082324],[21.979492,-14.761426],[21.979395,-14.440527],[21.979297,-14.119629],[21.979102,-13.79873],[21.979102,-13.477734],[21.979004,-13.156836],[21.978906,-13.000977],[22.20957,-13.000977],[22.470996,-13.000977],[22.744336,-13.000977],[23.041504,-13.000977],[23.338672,-13.000977],[23.63584,-13.000977],[23.843164,-13.000977],[23.897461,-12.998242],[23.962988,-12.988477],[23.968066,-12.956934],[23.882422,-12.799023],[23.886523,-12.743262],[23.909375,-12.636133],[23.944727,-12.54375],[23.991309,-12.422168],[23.996484,-12.350684],[23.958887,-12.117773],[23.962305,-11.987891],[23.973438,-11.85293],[23.983887,-11.725],[23.970996,-11.63584],[23.986816,-11.587207],[24.014648,-11.517676],[24.029297,-11.43916],[24.04668,-11.405371],[24.041406,-11.374121],[24.025586,-11.315625],[24.010059,-11.184766],[23.988281,-11.002832],[23.966504,-10.871777],[24.002734,-10.879102],[24.078418,-10.891504],[24.115137,-10.955664],[24.136523,-11.025977],[24.187207,-11.02998],[24.319922,-11.071777],[24.365723,-11.129883],[24.396289,-11.255176],[24.37793,-11.319336],[24.335156,-11.371289],[24.37793,-11.41709],[24.466602,-11.447656],[24.518555,-11.438477],[24.668262,-11.35293],[24.728125,-11.337793],[24.806348,-11.321191],[24.876855,-11.299121],[25.075977,-11.260059],[25.184863,-11.242969],[25.245996,-11.212402],[25.28877,-11.212402],[25.319336,-11.236914],[25.291797,-11.325488],[25.282617,-11.40498],[25.320703,-11.553516],[25.349414,-11.623047],[25.413379,-11.673535],[25.459961,-11.699805],[25.511914,-11.753418],[25.618848,-11.744141],[25.854883,-11.820117],[25.926563,-11.855273],[26.025977,-11.890137],[26.096387,-11.903223],[26.339648,-11.929883],[26.429688,-11.947852],[26.596387,-11.97207],[26.729688,-11.975977],[26.824023,-11.965234],[26.89043,-11.943555],[26.930859,-11.919336],[26.949609,-11.898828],[26.976855,-11.824609],[27.02666,-11.66377],[27.046094,-11.615918],[27.09541,-11.59375],[27.15918,-11.579199],[27.196387,-11.605078],[27.238086,-11.783496],[27.423633,-11.944531],[27.487012,-12.079688],[27.533398,-12.195312],[27.573828,-12.227051],[27.644336,-12.266797],[27.756836,-12.280859],[27.857422,-12.284863],[28.068848,-12.368164],[28.237305,-12.43457],[28.357715,-12.482031],[28.412891,-12.518066],[28.451465,-12.577441],[28.474414,-12.62334],[28.51123,-12.742188],[28.550879,-12.836133],[28.61543,-12.854102],[28.672949,-12.861328],[28.730078,-12.925488],[28.773145,-12.981934],[28.858789,-13.119434],[28.92168,-13.214648],[28.942285,-13.307129],[29.014258,-13.368848],[29.111621,-13.395117],[29.201855,-13.39834],[29.253711,-13.370801],[29.381836,-13.322852],[29.481445,-13.267969],[29.554199,-13.248926],[29.597168,-13.260547],[29.630273,-13.298535],[29.647656,-13.372949],[29.651758,-13.414355],[29.722656,-13.453809],[29.775195,-13.438086],[29.795313,-13.392773],[29.796484,-13.369727],[29.796289,-13.16748],[29.796094,-12.99209],[29.795801,-12.827051],[29.795605,-12.625879],[29.795508,-12.450586],[29.795313,-12.306152],[29.795117,-12.155469],[29.749609,-12.164062],[29.691992,-12.19834],[29.559766,-12.202441],[29.508203,-12.228223],[29.491992,-12.266895],[29.502246,-12.317578],[29.504883,-12.386133],[29.485547,-12.418457],[29.427539,-12.43125],[29.34375,-12.404785],[29.191211,-12.370215],[29.064355,-12.348828],[28.973438,-12.257812],[28.85,-12.120508],[28.769434,-12.05127],[28.574609,-11.908105],[28.541602,-11.879199],[28.48252,-11.812109],[28.431836,-11.69834],[28.407031,-11.622852],[28.383398,-11.566699],[28.357227,-11.483008],[28.404199,-11.354395],[28.470313,-11.10957],[28.517969,-10.933203],[28.544238,-10.802344],[28.638867,-10.669238],[28.645508,-10.550195],[28.607422,-10.397363],[28.617188,-10.312988],[28.623535,-10.098828],[28.628906,-9.91875],[28.630078,-9.83125],[28.604199,-9.678809],[28.540527,-9.510059],[28.400195,-9.275],[28.400684,-9.224805],[28.484277,-9.169434],[28.616504,-9.072266],[28.68125,-9.014648],[28.758789,-8.932617],[28.793555,-8.891016],[28.869531,-8.78584],[28.917773,-8.700586],[28.934473,-8.590234],[28.898145,-8.485449],[28.972266,-8.464941],[29.215625,-8.427832],[29.483789,-8.386914],[29.766211,-8.34375],[30.051367,-8.300293],[30.327539,-8.258203],[30.57793,-8.22002],[30.751172,-8.193652],[30.776758,-8.26582],[30.830664,-8.385547],[30.891992,-8.47373],[30.968359,-8.550977],[31.033398,-8.597656],[31.076367,-8.611914],[31.350586,-8.607031],[31.449219,-8.653906],[31.534863,-8.713281],[31.55625,-8.805469],[31.612793,-8.863281],[31.673633,-8.908789],[31.7,-8.914355],[31.744727,-8.903223],[31.818066,-8.902246],[31.886133,-8.921973],[31.918652,-8.942188],[31.921875,-9.019434],[31.942578,-9.054004],[32.035352,-9.067383],[32.129785,-9.07334],[32.220898,-9.125586],[32.319336,-9.134863],[32.433203,-9.156348],[32.487109,-9.212695],[32.608398,-9.270508],[32.756641,-9.322266],[32.863281,-9.380859],[32.919922,-9.407422],[32.92334,-9.433984],[32.951074,-9.48418],[32.979883,-9.520313],[32.982129,-9.573633],[32.995996,-9.622852],[33.037793,-9.635059],[33.072461,-9.638184],[33.104492,-9.602637],[33.148047,-9.603516],[33.195703,-9.626172],[33.212695,-9.683008],[33.25,-9.75957],[33.310449,-9.811816],[33.350977,-9.862207],[33.337109,-9.954004],[33.311523,-10.037988],[33.393555,-10.120898],[33.500098,-10.199707],[33.528906,-10.234668],[33.537598,-10.351562],[33.553711,-10.391309],[33.626172,-10.488574],[33.661523,-10.553125],[33.659082,-10.590527],[33.464746,-10.783105],[33.403125,-10.801758],[33.344922,-10.812695],[33.292773,-10.852344],[33.261328,-10.893359],[33.272754,-10.915039],[33.293262,-10.981152],[33.338672,-11.085156],[33.379785,-11.15791],[33.345508,-11.249121],[33.268359,-11.403906],[33.232715,-11.417676],[33.226367,-11.534863],[33.25,-11.577637],[33.288281,-11.611133],[33.303906,-11.69082],[33.305078,-11.8],[33.300977,-11.888184],[33.252344,-12.112598],[33.340137,-12.308301],[33.37002,-12.329688],[33.491406,-12.331055],[33.512305,-12.347754],[33.483203,-12.403418],[33.430664,-12.460449],[33.397949,-12.489844],[33.243457,-12.556543],[33.021582,-12.630469],[32.975195,-12.701367],[32.945605,-12.804395],[32.970508,-12.864746],[33,-12.899609],[32.99043,-12.989453],[32.971094,-13.084277],[32.977637,-13.158887],[32.967578,-13.225],[32.938574,-13.257422],[32.899707,-13.357031],[32.851855,-13.457031],[32.814063,-13.502734],[32.758398,-13.550293],[32.67041,-13.59043],[32.67207,-13.610352],[32.771777,-13.656543],[32.797461,-13.688477],[32.806738,-13.710254],[32.785352,-13.731445],[32.765137,-13.761035],[32.811035,-13.791602],[32.867188,-13.817383],[32.920313,-13.883887],[32.967578,-13.976855],[32.98125,-14.009375],[32.99209,-14.022168],[33.009277,-14.02373],[33.042383,-14.010059],[33.103613,-13.95918],[33.148047,-13.940918],[33.201758,-14.013379],[32.987109,-14.084961],[32.874512,-14.122461],[32.553223,-14.22959],[32.272852,-14.323047],[32.199902,-14.34082],[32.054492,-14.386523],[31.982129,-14.414453],[31.728906,-14.496094],[31.623047,-14.536719],[31.537891,-14.577148],[31.328516,-14.637695],[31.130859,-14.694629],[30.915137,-14.75332],[30.67334,-14.819141],[30.537695,-14.866504],[30.446094,-14.90752],[30.231836,-14.990332],[30.221777,-15.010547],[30.225,-15.066895],[30.252148,-15.183203],[30.305664,-15.288867],[30.350586,-15.349707],[30.379883,-15.505859],[30.396094,-15.643066]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Yemen","SOV_A3":"YEM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Yemen","ADM0_A3":"YEM","GEOU_DIF":0,"GEOUNIT":"Yemen","GU_A3":"YEM","SU_DIF":0,"SUBUNIT":"Yemen","SU_A3":"YEM","BRK_DIFF":0,"NAME":"Yemen","NAME_LONG":"Yemen","BRK_A3":"YEM","BRK_NAME":"Yemen","BRK_GROUP":null,"ABBREV":"Yem.","POSTAL":"YE","FORMAL_EN":"Republic of Yemen","FORMAL_FR":null,"NAME_CIAWF":"Yemen","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Yemen, Rep.","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":3,"MAPCOLOR9":3,"MAPCOLOR13":11,"POP_EST":29161922,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":22581,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"YM","ISO_A2":"YE","ISO_A2_EH":"YE","ISO_A3":"YEM","ISO_A3_EH":"YEM","ISO_N3":"887","ISO_N3_EH":"887","UN_A3":"887","WB_A2":"RY","WB_A3":"YEM","WOE_ID":23425002,"WOE_ID_EH":23425002,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"YEM","ADM0_DIFF":null,"ADM0_TLC":"YEM","ADM0_A3_US":"YEM","ADM0_A3_FR":"YEM","ADM0_A3_RU":"YEM","ADM0_A3_ES":"YEM","ADM0_A3_CN":"YEM","ADM0_A3_TW":"YEM","ADM0_A3_IN":"YEM","ADM0_A3_NP":"YEM","ADM0_A3_PK":"YEM","ADM0_A3_DE":"YEM","ADM0_A3_GB":"YEM","ADM0_A3_BR":"YEM","ADM0_A3_IL":"YEM","ADM0_A3_PS":"YEM","ADM0_A3_SA":"YEM","ADM0_A3_EG":"YEM","ADM0_A3_MA":"YEM","ADM0_A3_PT":"YEM","ADM0_A3_AR":"YEM","ADM0_A3_JP":"YEM","ADM0_A3_KO":"YEM","ADM0_A3_VN":"YEM","ADM0_A3_TR":"YEM","ADM0_A3_ID":"YEM","ADM0_A3_PL":"YEM","ADM0_A3_GR":"YEM","ADM0_A3_IT":"YEM","ADM0_A3_NL":"YEM","ADM0_A3_SE":"YEM","ADM0_A3_BD":"YEM","ADM0_A3_UA":"YEM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":45.874383,"LABEL_Y":15.328226,"NE_ID":1159321425,"WIKIDATAID":"Q805","NAME_AR":"اليمن","NAME_BN":"ইয়েমেন","NAME_DE":"Jemen","NAME_EN":"Yemen","NAME_ES":"Yemen","NAME_FA":"یمن","NAME_FR":"Yémen","NAME_EL":"Υεμένη","NAME_HE":"תימן","NAME_HI":"यमन","NAME_HU":"Jemen","NAME_ID":"Yaman","NAME_IT":"Yemen","NAME_JA":"イエメン","NAME_KO":"예멘","NAME_NL":"Jemen","NAME_PL":"Jemen","NAME_PT":"Iémen","NAME_RU":"Йемен","NAME_SV":"Jemen","NAME_TR":"Yemen","NAME_UK":"Ємен","NAME_UR":"یمن","NAME_VI":"Yemen","NAME_ZH":"也门","NAME_ZHT":"葉門","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[42.549023,12.318994,54.511133,18.996143],"geometry":{"type":"MultiPolygon","coordinates":[[[[53.085645,16.648389],[52.581445,16.470361],[52.448438,16.39126],[52.327734,16.293555],[52.237305,16.171387],[52.174023,15.956836],[52.22207,15.760596],[52.21748,15.655518],[52.087305,15.585938],[51.96582,15.535693],[51.830762,15.459277],[51.748633,15.440137],[51.681543,15.379102],[51.603711,15.336816],[51.322461,15.22627],[51.015137,15.140771],[50.527051,15.038184],[50.338574,14.927197],[50.166895,14.851025],[49.906348,14.828125],[49.548633,14.722412],[49.349902,14.637793],[49.10293,14.500049],[49.048047,14.456445],[49.004688,14.355029],[48.928711,14.26748],[48.77998,14.123877],[48.668359,14.050146],[48.59375,14.04624],[48.449023,14.005908],[48.277832,13.997656],[47.989941,14.048096],[47.916016,14.012842],[47.855078,13.956934],[47.633398,13.858447],[47.407715,13.661621],[47.242578,13.609375],[46.975684,13.547461],[46.788867,13.465576],[46.663477,13.432715],[46.501953,13.415576],[46.203125,13.423828],[45.919727,13.394287],[45.657324,13.338721],[45.533984,13.233496],[45.393555,13.067041],[45.163867,12.998291],[45.109766,12.938574],[45.038672,12.815869],[44.889844,12.78418],[44.755273,12.76377],[44.617773,12.817236],[44.358496,12.669141],[44.260352,12.644629],[44.111523,12.638672],[44.005859,12.607666],[43.929785,12.616504],[43.835352,12.674414],[43.634375,12.744482],[43.487598,12.698828],[43.475293,12.839014],[43.231934,13.26709],[43.282617,13.639844],[43.282422,13.692529],[43.234082,13.858936],[43.089063,14.010986],[43.093359,14.203662],[43.044824,14.341553],[43.00625,14.483105],[43.01875,14.520801],[43.021094,14.554883],[42.946973,14.773145],[42.922168,14.817383],[42.912988,14.863086],[42.937305,14.898047],[42.936426,14.938574],[42.89707,15.005566],[42.855664,15.132959],[42.657813,15.232812],[42.697852,15.326318],[42.736426,15.293555],[42.788477,15.265723],[42.799023,15.32627],[42.799902,15.371631],[42.717188,15.654639],[42.839648,16.032031],[42.799316,16.371777],[42.986328,16.509082],[43.033594,16.550391],[43.060742,16.586621],[43.104785,16.66416],[43.165039,16.689404],[43.186328,16.770996],[43.184473,16.811816],[43.145605,16.846777],[43.116504,16.941992],[43.126172,17.062451],[43.135938,17.112988],[43.155957,17.205029],[43.221387,17.239258],[43.236914,17.266455],[43.186328,17.324707],[43.190918,17.359375],[43.302148,17.456787],[43.346094,17.486035],[43.417969,17.51626],[43.474219,17.515918],[43.539258,17.49873],[43.597266,17.471436],[43.653418,17.421875],[43.712988,17.365527],[43.804297,17.344141],[43.866406,17.349609],[43.916992,17.324707],[43.959668,17.33833],[44.008203,17.36748],[44.085938,17.365527],[44.155957,17.398535],[44.354688,17.414355],[44.546484,17.404346],[44.746777,17.431689],[44.946484,17.42959],[45.148047,17.427441],[45.192773,17.423389],[45.236621,17.406201],[45.406543,17.319775],[45.535352,17.302051],[45.794434,17.278418],[46.070801,17.253174],[46.310352,17.231299],[46.513477,17.25166],[46.682031,17.268555],[46.727637,17.265576],[46.778516,17.212109],[46.87998,17.079004],[46.975684,16.953467],[47.143555,16.94668],[47.25127,16.993945],[47.369629,17.0604],[47.441797,17.111865],[47.525391,17.316113],[47.57959,17.44834],[47.703711,17.596826],[47.807813,17.721094],[47.945508,17.88584],[48.02168,17.976953],[48.172168,18.156934],[48.31582,18.227051],[48.592969,18.362402],[48.864844,18.495215],[49.041992,18.581787],[49.192383,18.621338],[49.445117,18.655322],[49.74209,18.695312],[50.038965,18.735254],[50.355273,18.777783],[50.708203,18.825293],[50.95,18.857861],[51.258398,18.899365],[51.514941,18.933887],[51.742969,18.964551],[51.977637,18.996143],[52.021875,18.896289],[52.066211,18.796387],[52.110449,18.696484],[52.154688,18.596582],[52.199023,18.49668],[52.243262,18.396826],[52.2875,18.296924],[52.331738,18.19707],[52.376074,18.097168],[52.420313,17.997314],[52.464551,17.897412],[52.508887,17.79751],[52.553125,17.697607],[52.597363,17.597754],[52.641699,17.497852],[52.685938,17.397949],[52.729199,17.300391],[52.800586,17.26792],[52.842969,17.175684],[52.903711,17.043848],[52.964355,16.912061],[53.025,16.780225],[53.085645,16.648389]]],[[[42.590234,15.303418],[42.558691,15.281201],[42.549023,15.320068],[42.569727,15.407324],[42.602344,15.43252],[42.624512,15.367969],[42.610449,15.332275],[42.590234,15.303418]]],[[[42.755859,13.704297],[42.689746,13.673633],[42.734961,13.752979],[42.78125,13.769287],[42.794141,13.766113],[42.755859,13.704297]]],[[[42.787402,13.971484],[42.774219,13.950244],[42.756055,13.954883],[42.694043,14.00791],[42.762109,14.06748],[42.79834,14.012256],[42.787402,13.971484]]],[[[53.763184,12.636816],[53.824805,12.624805],[53.918555,12.659424],[54.187402,12.664014],[54.511133,12.552783],[54.45,12.523438],[54.41377,12.483301],[54.271289,12.446631],[54.129492,12.360645],[53.718848,12.318994],[53.59834,12.342285],[53.499414,12.425342],[53.31582,12.533154],[53.388477,12.601855],[53.403906,12.63335],[53.430957,12.663574],[53.534961,12.715771],[53.638477,12.707373],[53.763184,12.636816]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":2,"SOVEREIGNT":"Vietnam","SOV_A3":"VNM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Vietnam","ADM0_A3":"VNM","GEOU_DIF":0,"GEOUNIT":"Vietnam","GU_A3":"VNM","SU_DIF":0,"SUBUNIT":"Vietnam","SU_A3":"VNM","BRK_DIFF":0,"NAME":"Vietnam","NAME_LONG":"Vietnam","BRK_A3":"VNM","BRK_NAME":"Vietnam","BRK_GROUP":null,"ABBREV":"Viet.","POSTAL":"VN","FORMAL_EN":"Socialist Republic of Vietnam","FORMAL_FR":null,"NAME_CIAWF":"Vietnam","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Vietnam","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":6,"MAPCOLOR9":5,"MAPCOLOR13":4,"POP_EST":96462106,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":261921,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"4. Lower middle income","FIPS_10":"VM","ISO_A2":"VN","ISO_A2_EH":"VN","ISO_A3":"VNM","ISO_A3_EH":"VNM","ISO_N3":"704","ISO_N3_EH":"704","UN_A3":"704","WB_A2":"VN","WB_A3":"VNM","WOE_ID":23424984,"WOE_ID_EH":23424984,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"VNM","ADM0_DIFF":null,"ADM0_TLC":"VNM","ADM0_A3_US":"VNM","ADM0_A3_FR":"VNM","ADM0_A3_RU":"VNM","ADM0_A3_ES":"VNM","ADM0_A3_CN":"VNM","ADM0_A3_TW":"VNM","ADM0_A3_IN":"VNM","ADM0_A3_NP":"VNM","ADM0_A3_PK":"VNM","ADM0_A3_DE":"VNM","ADM0_A3_GB":"VNM","ADM0_A3_BR":"VNM","ADM0_A3_IL":"VNM","ADM0_A3_PS":"VNM","ADM0_A3_SA":"VNM","ADM0_A3_EG":"VNM","ADM0_A3_MA":"VNM","ADM0_A3_PT":"VNM","ADM0_A3_AR":"VNM","ADM0_A3_JP":"VNM","ADM0_A3_KO":"VNM","ADM0_A3_VN":"VNM","ADM0_A3_TR":"VNM","ADM0_A3_ID":"VNM","ADM0_A3_PL":"VNM","ADM0_A3_GR":"VNM","ADM0_A3_IT":"VNM","ADM0_A3_NL":"VNM","ADM0_A3_SE":"VNM","ADM0_A3_BD":"VNM","ADM0_A3_UA":"VNM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":105.387292,"LABEL_Y":21.715416,"NE_ID":1159321417,"WIKIDATAID":"Q881","NAME_AR":"فيتنام","NAME_BN":"ভিয়েতনাম","NAME_DE":"Vietnam","NAME_EN":"Vietnam","NAME_ES":"Vietnam","NAME_FA":"ویتنام","NAME_FR":"Viêt Nam","NAME_EL":"Βιετνάμ","NAME_HE":"וייטנאם","NAME_HI":"वियतनाम","NAME_HU":"Vietnám","NAME_ID":"Vietnam","NAME_IT":"Vietnam","NAME_JA":"ベトナム","NAME_KO":"베트남","NAME_NL":"Vietnam","NAME_PL":"Wietnam","NAME_PT":"Vietname","NAME_RU":"Вьетнам","NAME_SV":"Vietnam","NAME_TR":"Vietnam","NAME_UK":"В'єтнам","NAME_UR":"ویتنام","NAME_VI":"Việt Nam","NAME_ZH":"越南","NAME_ZHT":"越南","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[102.127441,8.583252,109.444922,23.345215],"geometry":{"type":"MultiPolygon","coordinates":[[[[104.063965,10.39082],[104.083008,10.341113],[104.075781,10.224854],[104.036816,10.110742],[104.04834,10.061035],[104.018457,10.029199],[103.952148,10.24292],[103.867969,10.3354],[103.849512,10.371094],[103.898438,10.368506],[103.98584,10.426953],[104.027734,10.428369],[104.063965,10.39082]]],[[[107.972656,21.507959],[107.925781,21.498926],[107.809082,21.497119],[107.707227,21.405859],[107.636719,21.368066],[107.526953,21.33623],[107.409961,21.284814],[107.376172,21.194141],[107.37334,21.128467],[107.354297,21.055176],[107.164746,20.94873],[107.111719,20.95957],[107.075195,20.999268],[107.019238,20.991211],[106.981445,20.971387],[106.936426,20.974072],[106.88623,20.95],[106.820605,20.95752],[106.760254,20.991113],[106.725195,20.999902],[106.683398,21.000293],[106.675488,20.960498],[106.737305,20.806152],[106.753418,20.735059],[106.550781,20.526562],[106.572852,20.392187],[106.517969,20.288867],[106.395508,20.205908],[106.165723,19.992041],[106.062207,19.987354],[105.984082,19.939062],[105.813965,19.587451],[105.812109,19.466992],[105.785352,19.378857],[105.791113,19.294189],[105.716406,19.127783],[105.639063,19.057178],[105.621777,18.966309],[105.732031,18.779297],[105.744238,18.746289],[105.808203,18.64585],[105.839258,18.57417],[105.888281,18.50249],[106.065625,18.316357],[106.144531,18.259424],[106.239551,18.220703],[106.411914,18.053174],[106.499023,17.946436],[106.459375,17.873682],[106.478906,17.71958],[106.355859,17.765039],[106.370508,17.746875],[106.516797,17.662793],[106.735742,17.367188],[106.926172,17.221387],[107.119922,17.055518],[107.180371,16.897949],[107.355078,16.79375],[107.549316,16.642578],[107.54082,16.608643],[107.593457,16.568066],[107.724121,16.487842],[107.803125,16.403076],[107.833789,16.322461],[107.882031,16.309619],[107.936328,16.329395],[107.990723,16.337109],[108.029395,16.331104],[108.087988,16.242725],[108.169727,16.163672],[108.208984,16.091064],[108.24082,16.100781],[108.267383,16.089795],[108.274023,16.029053],[108.286035,15.989063],[108.395312,15.872461],[108.447461,15.762695],[108.577832,15.584717],[108.674219,15.483594],[108.742773,15.426611],[108.821289,15.37793],[108.898242,15.180518],[108.939941,15.001465],[109.022461,14.802832],[109.084863,14.716162],[109.087012,14.552588],[109.137305,14.384131],[109.191406,14.270459],[109.207324,14.154297],[109.223926,14.09668],[109.244629,14.053418],[109.30332,13.856445],[109.288086,13.765039],[109.24707,13.854736],[109.252051,13.590527],[109.288086,13.450781],[109.271875,13.279346],[109.30957,13.219189],[109.376758,13.025488],[109.423926,12.955957],[109.42002,12.719043],[109.444922,12.599609],[109.381445,12.670752],[109.335547,12.751904],[109.274023,12.709033],[109.218945,12.645801],[109.304688,12.391162],[109.206836,12.415381],[109.215723,12.0729],[109.25625,11.992871],[109.25918,11.954541],[109.247266,11.908691],[109.220215,11.958838],[109.214551,12.010449],[109.199121,11.999023],[109.199902,11.972461],[109.167285,11.912012],[109.15752,11.837109],[109.192676,11.773438],[109.198633,11.724854],[109.173242,11.664746],[109.13252,11.601074],[109.039648,11.592676],[109.018457,11.468359],[108.986719,11.336377],[108.820801,11.31543],[108.700293,11.199268],[108.55127,11.155957],[108.418555,11.040723],[108.27168,10.934277],[108.176172,10.920166],[108.094922,10.897266],[108.001367,10.720361],[107.845117,10.700098],[107.564453,10.555469],[107.470313,10.48584],[107.384473,10.458643],[107.261523,10.398389],[107.235059,10.419873],[107.194141,10.471582],[107.087793,10.49834],[107.035742,10.556299],[107.020703,10.630957],[107.006641,10.660547],[106.983691,10.618311],[106.966113,10.440723],[106.947461,10.400342],[106.902051,10.382812],[106.812695,10.433301],[106.727344,10.535645],[106.605859,10.464941],[106.643066,10.45625],[106.698438,10.462061],[106.741211,10.444385],[106.777539,10.376123],[106.77627,10.338965],[106.757422,10.295801],[106.643555,10.288916],[106.491699,10.304102],[106.464063,10.298291],[106.602441,10.231738],[106.729004,10.193311],[106.785254,10.151172],[106.785254,10.116455],[106.71416,10.060205],[106.65918,9.991406],[106.658105,9.94873],[106.656836,9.901074],[106.595605,9.859863],[106.557324,9.868066],[106.449121,9.939648],[106.136426,10.22168],[106.183594,10.14209],[106.507422,9.82124],[106.564355,9.715625],[106.572461,9.641113],[106.53916,9.603564],[106.484082,9.559424],[106.378027,9.556104],[106.204004,9.675439],[105.925684,9.961719],[105.830957,10.000732],[106.1125,9.673584],[106.158594,9.594141],[106.206152,9.502344],[106.192578,9.447803],[106.168359,9.396729],[105.500977,9.093213],[105.401367,8.962402],[105.322266,8.801123],[105.191211,8.711328],[105.114355,8.629199],[104.891895,8.583252],[104.77041,8.597656],[104.896289,8.746631],[104.818555,8.801855],[104.814648,9.185498],[104.845215,9.606152],[104.903223,9.81626],[104.987109,9.868652],[105.092578,9.900977],[105.094922,9.945264],[105.084473,9.995703],[105.027832,10.067432],[104.96582,10.100586],[104.873242,10.114795],[104.801953,10.202734],[104.747656,10.199121],[104.663477,10.169922],[104.612695,10.207666],[104.594043,10.266895],[104.516113,10.33999],[104.426367,10.41123],[104.466992,10.422363],[104.514063,10.46333],[104.564258,10.515967],[104.689648,10.523242],[104.81543,10.520801],[104.850586,10.534473],[104.90127,10.590234],[104.983887,10.661914],[105.046387,10.70166],[105.061133,10.733789],[105.036133,10.809375],[105.022266,10.886865],[105.045703,10.911377],[105.159473,10.897559],[105.284277,10.861475],[105.314648,10.845166],[105.386523,10.940088],[105.405762,10.951611],[105.452734,10.951416],[105.576563,10.968896],[105.697754,10.994043],[105.755078,10.98999],[105.810742,10.926074],[105.85332,10.863574],[105.875195,10.858496],[105.938184,10.885156],[105.990137,10.851807],[106.098828,10.797266],[106.163965,10.794922],[106.131543,10.921973],[106.167969,11.012305],[106.160937,11.037109],[106.099512,11.078662],[105.891602,11.244824],[105.856055,11.294287],[105.860938,11.372412],[105.854004,11.487061],[105.835352,11.559131],[105.838477,11.601318],[105.851465,11.63501],[105.889844,11.648389],[105.926562,11.65293],[105.95625,11.682471],[106.006055,11.758008],[106.10293,11.75127],[106.23916,11.70835],[106.339844,11.681836],[106.399219,11.687012],[106.4125,11.697803],[106.410742,11.738379],[106.417773,11.911719],[106.413867,11.948437],[106.499609,11.965527],[106.630957,11.969189],[106.700098,11.979297],[106.764648,12.052344],[106.930664,12.07749],[107.050684,12.175879],[107.158984,12.277051],[107.212109,12.304004],[107.279688,12.321582],[107.330078,12.319043],[107.393359,12.260498],[107.445996,12.295703],[107.506445,12.364551],[107.538086,12.431787],[107.555469,12.53999],[107.543555,12.705908],[107.511523,12.835742],[107.481543,12.933105],[107.475391,13.030371],[107.545508,13.225439],[107.605469,13.437793],[107.593945,13.52168],[107.528613,13.654199],[107.462305,13.815625],[107.389453,13.993018],[107.362109,14.019482],[107.342578,14.068896],[107.331445,14.126611],[107.360352,14.307861],[107.364453,14.368701],[107.448438,14.451221],[107.493164,14.545752],[107.535254,14.649951],[107.519434,14.705078],[107.51377,14.817383],[107.524512,14.871826],[107.504687,14.915918],[107.480371,14.979883],[107.496289,15.021436],[107.555273,15.057031],[107.589648,15.118457],[107.633691,15.189844],[107.653125,15.255225],[107.62168,15.309863],[107.564258,15.391602],[107.45957,15.46582],[107.33877,15.560498],[107.279395,15.618701],[107.232617,15.678076],[107.189551,15.747266],[107.165918,15.80249],[107.188867,15.838623],[107.360645,15.921729],[107.391992,15.95166],[107.410156,15.997852],[107.396387,16.043018],[107.350098,16.067383],[107.296484,16.084033],[107.217383,16.136328],[107.069727,16.279834],[107.001953,16.311816],[106.930664,16.353125],[106.892773,16.396533],[106.851074,16.515625],[106.832422,16.52627],[106.791602,16.490332],[106.739551,16.452539],[106.696094,16.458984],[106.656445,16.492627],[106.6375,16.537939],[106.593652,16.600098],[106.546191,16.650732],[106.533691,16.821045],[106.525977,16.876611],[106.502246,16.954102],[106.465332,16.981836],[106.425977,17.002539],[106.333398,17.143701],[106.269531,17.216797],[106.00625,17.415283],[105.973535,17.446973],[105.902734,17.528662],[105.779492,17.644434],[105.691406,17.737842],[105.627246,17.834424],[105.597656,17.918262],[105.588477,17.983691],[105.518555,18.077441],[105.458203,18.154297],[105.4,18.179248],[105.333496,18.189648],[105.273242,18.235352],[105.163281,18.338721],[105.114551,18.405273],[105.08584,18.450098],[105.087012,18.49624],[105.113477,18.573047],[105.14541,18.616797],[105.146484,18.650977],[105.115137,18.678857],[104.993164,18.72832],[104.716504,18.803418],[104.613281,18.860645],[104.517969,18.934082],[104.445801,18.983838],[104.108594,19.195557],[104.006348,19.230908],[103.918359,19.268506],[103.891602,19.30498],[103.896387,19.33999],[103.932031,19.366064],[104.027539,19.420459],[104.062891,19.482568],[104.051562,19.56416],[104.013477,19.646484],[104.032031,19.675146],[104.062793,19.678418],[104.127148,19.680859],[104.259863,19.685498],[104.546289,19.610547],[104.587891,19.61875],[104.743164,19.754736],[104.801758,19.836133],[104.815137,19.904004],[104.845801,19.947168],[104.92793,20.018115],[104.929199,20.082813],[104.888672,20.169092],[104.847852,20.202441],[104.812695,20.216846],[104.69873,20.205322],[104.676953,20.224707],[104.661914,20.289014],[104.656445,20.328516],[104.618848,20.374512],[104.496191,20.413672],[104.392188,20.424756],[104.367773,20.441406],[104.407813,20.485742],[104.478613,20.52959],[104.532715,20.554883],[104.575195,20.600244],[104.583203,20.64668],[104.530371,20.687988],[104.461426,20.73374],[104.349609,20.821094],[104.195312,20.913965],[104.101367,20.945508],[104.052051,20.941211],[103.882031,20.861426],[103.790527,20.809521],[103.714453,20.716943],[103.635059,20.69707],[103.554688,20.737842],[103.463574,20.779834],[103.210742,20.840625],[103.104492,20.89165],[102.883789,21.202588],[102.851172,21.265918],[102.872266,21.3375],[102.8875,21.439941],[102.90957,21.506348],[102.948633,21.569775],[102.95918,21.626221],[102.949609,21.681348],[102.917676,21.712939],[102.876172,21.722266],[102.845215,21.734766],[102.815918,21.807373],[102.798242,21.797949],[102.771094,21.709668],[102.738574,21.67793],[102.695312,21.662109],[102.662012,21.676025],[102.64082,21.711426],[102.63125,21.771338],[102.609668,21.851758],[102.58252,21.904297],[102.4875,21.957764],[102.442676,22.027148],[102.301367,22.178174],[102.183008,22.284033],[102.127441,22.379199],[102.175977,22.414648],[102.237012,22.466016],[102.302246,22.545996],[102.375781,22.646631],[102.406445,22.708008],[102.42793,22.732812],[102.470898,22.750928],[102.517188,22.741016],[102.598535,22.700391],[102.720996,22.648486],[102.830078,22.587158],[102.874219,22.525391],[102.935156,22.466162],[102.981934,22.448242],[103.005371,22.452979],[103.075879,22.49751],[103.136328,22.542236],[103.137598,22.592969],[103.193359,22.638525],[103.266309,22.713525],[103.300586,22.764404],[103.32666,22.769775],[103.356055,22.754688],[103.470996,22.597412],[103.492969,22.587988],[103.525391,22.611572],[103.570703,22.734424],[103.620215,22.782031],[103.637305,22.77002],[103.915039,22.538232],[103.941504,22.540088],[103.971387,22.550488],[103.99082,22.586133],[104.012695,22.666357],[104.053906,22.752295],[104.143066,22.800146],[104.2125,22.809424],[104.238281,22.768506],[104.29834,22.712012],[104.371777,22.704053],[104.526855,22.804102],[104.577539,22.82002],[104.631738,22.818213],[104.687305,22.822217],[104.740039,22.860498],[104.795703,22.911133],[104.814746,23.010791],[104.826563,23.100195],[104.864746,23.136377],[104.910156,23.160547],[104.995703,23.194336],[105.189063,23.281055],[105.23877,23.322119],[105.275391,23.345215],[105.350488,23.307666],[105.440137,23.235352],[105.494531,23.180859],[105.530859,23.121973],[105.548145,23.072656],[105.691211,23.029932],[105.782324,22.969336],[105.842969,22.922803],[105.902637,22.924951],[105.962305,22.937451],[106.000977,22.974756],[106.068457,22.975537],[106.148438,22.970068],[106.183984,22.955127],[106.249414,22.869434],[106.279004,22.857471],[106.338086,22.863477],[106.450879,22.893896],[106.541797,22.90835],[106.624023,22.874268],[106.780273,22.778906],[106.736328,22.710938],[106.701563,22.637744],[106.633105,22.586035],[106.582422,22.573242],[106.550391,22.501367],[106.536328,22.39541],[106.553613,22.341699],[106.593164,22.324512],[106.636523,22.288623],[106.654199,22.241455],[106.660059,22.136475],[106.657715,22.018213],[106.663574,21.978906],[106.697656,21.986182],[106.729492,22.000342],[106.794141,21.981982],[106.874512,21.95127],[106.925195,21.920117],[106.970996,21.923926],[107.006445,21.893408],[107.019824,21.834863],[107.061621,21.794189],[107.178516,21.71709],[107.27207,21.710645],[107.351172,21.608887],[107.433496,21.642285],[107.471387,21.59834],[107.641016,21.613916],[107.759277,21.655029],[107.802051,21.645166],[107.908398,21.5604],[107.972656,21.507959]]],[[[106.61748,8.682812],[106.589258,8.680518],[106.567969,8.700928],[106.658594,8.766357],[106.649512,8.722998],[106.652539,8.701123],[106.61748,8.682812]]],[[[107.167676,10.397168],[107.083789,10.336572],[107.07793,10.3875],[107.150879,10.420312],[107.176562,10.446191],[107.194922,10.445703],[107.167676,10.397168]]],[[[106.865625,20.815723],[106.854102,20.796387],[106.803125,20.84375],[106.769434,20.864209],[106.795313,20.92793],[106.855078,20.858252],[106.865625,20.815723]]],[[[107.602734,21.216797],[107.458691,21.09165],[107.403516,21.093652],[107.452539,21.235303],[107.47627,21.268945],[107.562695,21.22041],[107.602734,21.216797]]],[[[107.521289,20.926611],[107.465527,20.900537],[107.399219,20.903467],[107.478613,20.952344],[107.518945,21.012842],[107.55127,21.034033],[107.551074,20.981201],[107.521289,20.926611]]],[[[107.031348,20.747021],[106.990039,20.743066],[106.910645,20.824219],[106.953418,20.867041],[107.04375,20.836816],[107.064453,20.817285],[107.063965,20.799756],[107.042285,20.761035],[107.031348,20.747021]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":3,"SOVEREIGNT":"Venezuela","SOV_A3":"VEN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Venezuela","ADM0_A3":"VEN","GEOU_DIF":0,"GEOUNIT":"Venezuela","GU_A3":"VEN","SU_DIF":0,"SUBUNIT":"Venezuela","SU_A3":"VEN","BRK_DIFF":0,"NAME":"Venezuela","NAME_LONG":"Venezuela","BRK_A3":"VEN","BRK_NAME":"Venezuela","BRK_GROUP":null,"ABBREV":"Ven.","POSTAL":"VE","FORMAL_EN":"Bolivarian Republic of Venezuela","FORMAL_FR":"República Bolivariana de Venezuela","NAME_CIAWF":"Venezuela","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Venezuela, RB","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":3,"MAPCOLOR9":1,"MAPCOLOR13":4,"POP_EST":28515829,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":482359,"GDP_YEAR":2014,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"VE","ISO_A2":"VE","ISO_A2_EH":"VE","ISO_A3":"VEN","ISO_A3_EH":"VEN","ISO_N3":"862","ISO_N3_EH":"862","UN_A3":"862","WB_A2":"VE","WB_A3":"VEN","WOE_ID":23424982,"WOE_ID_EH":23424982,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"VEN","ADM0_DIFF":null,"ADM0_TLC":"VEN","ADM0_A3_US":"VEN","ADM0_A3_FR":"VEN","ADM0_A3_RU":"VEN","ADM0_A3_ES":"VEN","ADM0_A3_CN":"VEN","ADM0_A3_TW":"VEN","ADM0_A3_IN":"VEN","ADM0_A3_NP":"VEN","ADM0_A3_PK":"VEN","ADM0_A3_DE":"VEN","ADM0_A3_GB":"VEN","ADM0_A3_BR":"VEN","ADM0_A3_IL":"VEN","ADM0_A3_PS":"VEN","ADM0_A3_SA":"VEN","ADM0_A3_EG":"VEN","ADM0_A3_MA":"VEN","ADM0_A3_PT":"VEN","ADM0_A3_AR":"VEN","ADM0_A3_JP":"VEN","ADM0_A3_KO":"VEN","ADM0_A3_VN":"VEN","ADM0_A3_TR":"VEN","ADM0_A3_ID":"VEN","ADM0_A3_PL":"VEN","ADM0_A3_GR":"VEN","ADM0_A3_IT":"VEN","ADM0_A3_NL":"VEN","ADM0_A3_SE":"VEN","ADM0_A3_BD":"VEN","ADM0_A3_UA":"VEN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":7.5,"LABEL_X":-64.599381,"LABEL_Y":7.182476,"NE_ID":1159321411,"WIKIDATAID":"Q717","NAME_AR":"فنزويلا","NAME_BN":"ভেনেজুয়েলা","NAME_DE":"Venezuela","NAME_EN":"Venezuela","NAME_ES":"Venezuela","NAME_FA":"ونزوئلا","NAME_FR":"Venezuela","NAME_EL":"Βενεζουέλα","NAME_HE":"ונצואלה","NAME_HI":"वेनेज़ुएला","NAME_HU":"Venezuela","NAME_ID":"Venezuela","NAME_IT":"Venezuela","NAME_JA":"ベネズエラ","NAME_KO":"베네수엘라","NAME_NL":"Venezuela","NAME_PL":"Wenezuela","NAME_PT":"Venezuela","NAME_RU":"Венесуэла","NAME_SV":"Venezuela","NAME_TR":"Venezuela","NAME_UK":"Венесуела","NAME_UR":"وینیزویلا","NAME_VI":"Venezuela","NAME_ZH":"委内瑞拉","NAME_ZHT":"委內瑞拉","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-73.366211,0.687988,-59.828906,12.177881],"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.821191,9.138379],[-60.941406,9.105566],[-60.939453,9.132324],[-60.907275,9.178711],[-60.844873,9.191797],[-60.821387,9.207666],[-60.781592,9.218359],[-60.758887,9.216455],[-60.73584,9.20332],[-60.790381,9.177197],[-60.821191,9.138379]]],[[[-63.849365,11.131006],[-63.817285,11.000342],[-63.8271,10.97583],[-63.917627,10.887549],[-63.993555,10.881201],[-64.054688,10.884326],[-64.101172,10.901416],[-64.160889,10.958789],[-64.218945,10.941602],[-64.3625,10.961523],[-64.402344,10.981592],[-64.348633,11.051904],[-64.249756,11.080322],[-64.213672,11.086133],[-64.184814,11.042969],[-64.112793,11.005664],[-64.02832,11.001855],[-64.007324,11.068457],[-63.893115,11.167236],[-63.849365,11.131006]]],[[[-65.2125,10.906445],[-65.266406,10.883984],[-65.365234,10.906445],[-65.414648,10.937891],[-65.383203,10.973828],[-65.302344,10.973828],[-65.226562,10.930225],[-65.2125,10.906445]]],[[[-60.9979,8.867334],[-61.059961,8.847021],[-61.069189,8.947314],[-61.050488,8.974365],[-60.944775,9.055029],[-60.91582,9.070312],[-60.89458,9.053369],[-60.899902,9.031885],[-60.84917,8.995703],[-60.861426,8.949609],[-60.916406,8.899268],[-60.9979,8.867334]]],[[[-60.017529,8.549316],[-59.831641,8.305957],[-59.828906,8.27915],[-59.849072,8.248682],[-59.964844,8.191602],[-59.990723,8.162012],[-60.032422,8.053564],[-60.178174,7.994043],[-60.278906,7.919434],[-60.346777,7.854004],[-60.380615,7.827637],[-60.513623,7.813184],[-60.556348,7.772021],[-60.610107,7.64834],[-60.649463,7.596631],[-60.718652,7.535937],[-60.719238,7.498682],[-60.62373,7.36333],[-60.606543,7.32085],[-60.636182,7.256592],[-60.633301,7.211084],[-60.583203,7.156201],[-60.523193,7.143701],[-60.464941,7.166553],[-60.392383,7.164551],[-60.345068,7.15],[-60.325488,7.133984],[-60.32207,7.092041],[-60.3521,7.002881],[-60.39502,6.945361],[-60.586084,6.85708],[-60.671045,6.805957],[-60.71792,6.768311],[-60.82085,6.788477],[-60.87334,6.786914],[-60.913574,6.757812],[-60.937988,6.732764],[-61.00708,6.726611],[-61.104785,6.711377],[-61.145605,6.694531],[-61.177246,6.650928],[-61.203613,6.588379],[-61.181592,6.513379],[-61.151025,6.446533],[-61.152295,6.385107],[-61.128711,6.214307],[-61.159473,6.174414],[-61.224951,6.129199],[-61.303125,6.049512],[-61.39082,5.93877],[-61.376807,5.906982],[-61.167187,5.674219],[-60.954004,5.437402],[-60.742139,5.202051],[-60.711963,5.191553],[-60.671973,5.164355],[-60.63501,5.081982],[-60.604492,4.99458],[-60.603857,4.949365],[-60.627588,4.892529],[-60.67915,4.8271],[-60.741748,4.774121],[-60.833398,4.729199],[-60.90625,4.686816],[-60.966406,4.574707],[-61.002832,4.535254],[-61.036279,4.519336],[-61.102441,4.504687],[-61.209424,4.508057],[-61.280078,4.516895],[-61.367529,4.433008],[-61.479395,4.402246],[-61.554248,4.287793],[-61.82085,4.197021],[-62.081592,4.126318],[-62.153125,4.098389],[-62.410645,4.156738],[-62.472559,4.138525],[-62.543945,4.084326],[-62.609766,4.042285],[-62.665332,4.039648],[-62.712109,4.01792],[-62.739941,3.940332],[-62.7646,3.672949],[-62.856982,3.593457],[-62.968652,3.593945],[-63.045312,3.686475],[-63.13623,3.756445],[-63.294727,3.922266],[-63.338672,3.943896],[-63.379785,3.942871],[-63.526807,3.893701],[-63.596631,3.915039],[-63.65293,3.94082],[-63.746973,3.932568],[-63.914648,3.930664],[-64.021484,3.929102],[-64.073389,3.974414],[-64.121729,4.066992],[-64.154297,4.100146],[-64.19248,4.126855],[-64.255664,4.140332],[-64.525537,4.13999],[-64.576367,4.139893],[-64.613672,4.157715],[-64.665527,4.237109],[-64.722266,4.274414],[-64.788672,4.276025],[-64.817871,4.232275],[-64.702588,4.089307],[-64.668994,4.011816],[-64.56792,3.899805],[-64.275293,3.662695],[-64.221094,3.587402],[-64.227051,3.491211],[-64.22876,3.343994],[-64.218848,3.204687],[-64.143555,3.004883],[-64.037793,2.801514],[-64.009033,2.671875],[-64.028711,2.576074],[-64.048828,2.525098],[-64.046582,2.502393],[-64.024902,2.481885],[-63.92417,2.452441],[-63.712549,2.434033],[-63.584619,2.433936],[-63.389258,2.411914],[-63.374854,2.34043],[-63.393945,2.22251],[-63.43252,2.155566],[-63.463916,2.136035],[-63.570264,2.120508],[-63.682129,2.048145],[-63.844482,1.976709],[-63.937158,1.966992],[-63.975781,1.953027],[-64.008496,1.931592],[-64.035449,1.904443],[-64.067041,1.770508],[-64.114844,1.619287],[-64.205029,1.529492],[-64.304199,1.455273],[-64.405127,1.446875],[-64.486035,1.452783],[-64.52627,1.431006],[-64.584375,1.369873],[-64.667432,1.293848],[-64.731543,1.25332],[-64.817969,1.257129],[-64.910107,1.219727],[-65.026562,1.158447],[-65.10376,1.108105],[-65.169629,1.022217],[-65.263965,0.931885],[-65.36084,0.868652],[-65.407227,0.790479],[-65.473389,0.69126],[-65.556055,0.687988],[-65.562695,0.74751],[-65.522998,0.843408],[-65.566016,0.926074],[-65.644678,0.970361],[-65.681445,0.983447],[-65.718115,0.978027],[-65.811328,0.937256],[-65.925879,0.863135],[-65.996338,0.809766],[-66.060059,0.785352],[-66.191211,0.763281],[-66.30166,0.751953],[-66.347119,0.767187],[-66.429248,0.82168],[-66.619043,0.992139],[-66.876025,1.223047],[-66.895508,1.289893],[-66.884473,1.358252],[-66.931104,1.458008],[-66.95835,1.564209],[-66.981543,1.600781],[-66.988135,1.680176],[-67.043896,1.823193],[-67.089551,1.940332],[-67.131445,1.999854],[-67.113818,2.050586],[-67.131445,2.10127],[-67.165479,2.142578],[-67.215234,2.275488],[-67.197607,2.332764],[-67.21084,2.390137],[-67.252734,2.429443],[-67.312256,2.47168],[-67.391602,2.559912],[-67.486426,2.643652],[-67.534961,2.676758],[-67.568018,2.689941],[-67.59668,2.769336],[-67.618701,2.793604],[-67.667236,2.800195],[-67.766455,2.833301],[-67.859082,2.793604],[-67.86123,2.855322],[-67.834766,2.892822],[-67.514844,3.187256],[-67.353613,3.322656],[-67.336279,3.342627],[-67.322168,3.373975],[-67.311133,3.415869],[-67.347705,3.46377],[-67.498682,3.691113],[-67.551123,3.733838],[-67.602539,3.768799],[-67.661621,3.864258],[-67.732324,4.086523],[-67.783203,4.198242],[-67.798633,4.283887],[-67.79541,4.380713],[-67.814307,4.455078],[-67.855273,4.506885],[-67.855273,4.665479],[-67.814307,4.930811],[-67.804199,5.13252],[-67.824902,5.270459],[-67.788428,5.375488],[-67.694629,5.44751],[-67.642285,5.558789],[-67.631348,5.709375],[-67.575195,5.833105],[-67.473877,5.92998],[-67.439355,6.025537],[-67.471582,6.119775],[-67.481982,6.180273],[-67.568066,6.241797],[-67.727148,6.284961],[-67.85918,6.289893],[-67.938867,6.241943],[-68.143066,6.19751],[-68.471777,6.156543],[-68.736475,6.156787],[-68.937207,6.198193],[-69.089941,6.184375],[-69.194531,6.115332],[-69.268164,6.099707],[-69.31084,6.137598],[-69.35708,6.147998],[-69.427148,6.123975],[-69.439258,6.134912],[-69.594824,6.321484],[-69.738965,6.494385],[-69.904199,6.700244],[-70.09502,6.937939],[-70.129199,6.953613],[-70.188135,6.952051],[-70.266113,6.947949],[-70.3875,6.972607],[-70.470654,7.007129],[-70.535547,7.040527],[-70.655078,7.082764],[-70.737158,7.090039],[-70.810693,7.077588],[-71.013281,6.994434],[-71.128613,6.986719],[-71.217822,6.985205],[-71.457129,7.026367],[-71.620898,7.03291],[-71.811279,7.005811],[-71.892676,6.990332],[-72.006641,7.032617],[-72.084277,7.096875],[-72.156689,7.249707],[-72.207715,7.370264],[-72.296338,7.394531],[-72.394629,7.415088],[-72.442969,7.454883],[-72.471973,7.524268],[-72.478955,7.613232],[-72.468896,7.757959],[-72.45957,7.809863],[-72.446045,7.966113],[-72.391699,8.047705],[-72.357617,8.087305],[-72.36416,8.152783],[-72.390332,8.287061],[-72.416553,8.381982],[-72.525732,8.489697],[-72.66543,8.627588],[-72.725537,8.848291],[-72.796387,9.108984],[-72.8521,9.135156],[-72.904443,9.12207],[-72.960156,9.135156],[-73.009277,9.239941],[-73.058398,9.25957],[-73.136719,9.222803],[-73.193164,9.194141],[-73.336719,9.16792],[-73.366211,9.194141],[-73.356348,9.226855],[-73.295654,9.322021],[-73.224268,9.443604],[-73.14126,9.554639],[-73.064062,9.668213],[-73.006543,9.78916],[-72.967383,10.029736],[-72.940381,10.195752],[-72.869336,10.49126],[-72.73916,10.727197],[-72.690088,10.83584],[-72.572266,10.977148],[-72.518018,11.053906],[-72.446094,11.114258],[-72.248486,11.196436],[-72.012305,11.601953],[-71.958105,11.666406],[-71.719482,11.726855],[-71.536084,11.774072],[-71.400195,11.823535],[-71.355566,11.849756],[-71.319727,11.861914],[-71.349414,11.814941],[-71.414551,11.755176],[-71.488379,11.71875],[-71.868652,11.627344],[-71.90752,11.607959],[-71.956934,11.569922],[-71.957227,11.482812],[-71.946973,11.414453],[-71.835107,11.190332],[-71.791455,11.135059],[-71.641602,11.013525],[-71.675684,10.996729],[-71.730908,10.994678],[-71.69043,10.835498],[-71.598437,10.726221],[-71.594336,10.657373],[-71.664844,10.44375],[-71.793506,10.315967],[-71.884766,10.167236],[-71.955713,10.108057],[-72.112842,9.815576],[-71.993262,9.641504],[-71.97627,9.553223],[-71.873047,9.427637],[-71.805664,9.386426],[-71.760742,9.335742],[-71.781348,9.25],[-71.740137,9.133887],[-71.686719,9.07251],[-71.619531,9.047949],[-71.536621,9.048291],[-71.297949,9.125635],[-71.241406,9.160449],[-71.205371,9.222461],[-71.08584,9.348242],[-71.078418,9.510791],[-71.052686,9.705811],[-71.081738,9.833203],[-71.207227,10.0146],[-71.262207,10.143604],[-71.386621,10.26377],[-71.462793,10.469238],[-71.494238,10.533203],[-71.517871,10.621826],[-71.544629,10.778711],[-71.461133,10.835645],[-71.469531,10.96416],[-71.264355,10.999512],[-70.820508,11.208447],[-70.545605,11.261377],[-70.23252,11.372998],[-70.159961,11.428076],[-70.097119,11.519775],[-70.048535,11.530322],[-69.885352,11.444336],[-69.804785,11.474219],[-69.7729,11.541309],[-69.817334,11.67207],[-69.910937,11.672119],[-70.192578,11.624609],[-70.220117,11.680859],[-70.22002,11.730078],[-70.286523,11.886035],[-70.245117,12.003516],[-70.202783,12.098389],[-70.122021,12.136621],[-70.003955,12.177881],[-69.914355,12.1146],[-69.860107,12.054199],[-69.830615,11.995605],[-69.810547,11.836865],[-69.762402,11.676025],[-69.711914,11.564209],[-69.631592,11.479932],[-69.569824,11.485449],[-69.525732,11.499512],[-69.232568,11.518457],[-69.05459,11.461035],[-68.827979,11.431738],[-68.616211,11.309375],[-68.398633,11.160986],[-68.343164,11.052832],[-68.324805,10.949316],[-68.27207,10.880029],[-68.324707,10.80874],[-68.296289,10.689355],[-68.234082,10.569141],[-68.139941,10.492725],[-67.871631,10.47207],[-67.581348,10.52373],[-67.133301,10.57041],[-66.989062,10.610645],[-66.247217,10.632227],[-66.105859,10.574609],[-66.092139,10.51709],[-66.090479,10.472949],[-65.851758,10.257764],[-65.655859,10.228467],[-65.489355,10.159424],[-65.317383,10.122363],[-65.129102,10.070068],[-65.023291,10.07666],[-64.944043,10.09502],[-64.850488,10.098096],[-64.18833,10.457812],[-63.833691,10.448535],[-63.779053,10.471924],[-63.731885,10.503418],[-63.862695,10.558154],[-64.15791,10.579248],[-64.24751,10.542578],[-64.298193,10.635156],[-64.201953,10.632666],[-63.873437,10.66377],[-63.496777,10.643262],[-63.189893,10.70918],[-63.035498,10.720117],[-62.946729,10.70708],[-62.702344,10.749805],[-62.242285,10.699561],[-61.879492,10.741016],[-61.921387,10.681445],[-62.04043,10.645361],[-62.23291,10.633984],[-62.37998,10.546875],[-62.693555,10.562988],[-62.913574,10.531494],[-62.842969,10.507227],[-62.843018,10.41792],[-62.812939,10.399902],[-62.78125,10.399219],[-62.706299,10.333057],[-62.68584,10.289795],[-62.661621,10.198584],[-62.694678,10.100098],[-62.740576,10.056152],[-62.651172,10.070654],[-62.600488,10.116943],[-62.60791,10.163428],[-62.600488,10.217285],[-62.550342,10.200439],[-62.515137,10.176123],[-62.400928,9.918408],[-62.32041,9.783057],[-62.299805,9.788184],[-62.280664,9.792969],[-62.256738,9.818896],[-62.221143,9.882568],[-62.19043,9.842187],[-62.171973,9.826709],[-62.153369,9.821777],[-62.170312,9.879492],[-62.147461,9.953418],[-62.155322,9.979248],[-62.119629,9.984863],[-62.0771,9.975049],[-62.016504,9.954687],[-61.908594,9.869922],[-61.837256,9.78208],[-61.831152,9.733057],[-61.805371,9.705518],[-61.75874,9.676514],[-61.735937,9.631201],[-61.731738,9.70249],[-61.75918,9.754443],[-61.765918,9.813818],[-61.625391,9.816455],[-61.588867,9.894531],[-61.512305,9.84751],[-61.309375,9.633057],[-61.234424,9.597607],[-61.013379,9.556445],[-60.874072,9.45332],[-60.79248,9.360742],[-60.840967,9.263672],[-60.971045,9.215186],[-61.023145,9.15459],[-61.053076,9.095117],[-61.053564,9.035254],[-61.092969,8.965771],[-61.098828,8.941309],[-61.122363,8.843359],[-61.175879,8.725391],[-61.247266,8.600342],[-61.618701,8.597461],[-61.526904,8.546143],[-61.442578,8.508691],[-61.304004,8.4104],[-61.19375,8.487598],[-61.035986,8.493115],[-60.865234,8.578809],[-60.800977,8.592139],[-60.481494,8.547266],[-60.404492,8.610254],[-60.340234,8.62876],[-60.16748,8.616992],[-60.017529,8.549316]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":6,"LABELRANK":6,"SOVEREIGNT":"Vatican","SOV_A3":"VAT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Vatican","ADM0_A3":"VAT","GEOU_DIF":0,"GEOUNIT":"Vatican","GU_A3":"VAT","SU_DIF":0,"SUBUNIT":"Vatican","SU_A3":"VAT","BRK_DIFF":0,"NAME":"Vatican","NAME_LONG":"Vatican","BRK_A3":"VAT","BRK_NAME":"Vatican","BRK_GROUP":null,"ABBREV":"Vat.","POSTAL":"V","FORMAL_EN":"State of the Vatican City","FORMAL_FR":null,"NAME_CIAWF":"Holy See (Vatican City)","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Vatican (Holy See)","NAME_ALT":"Holy See","MAPCOLOR7":1,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":2,"POP_EST":825,"POP_RANK":2,"POP_YEAR":2019,"GDP_MD":-99,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"VT","ISO_A2":"VA","ISO_A2_EH":"VA","ISO_A3":"VAT","ISO_A3_EH":"VAT","ISO_N3":"336","ISO_N3_EH":"336","UN_A3":"336","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424986,"WOE_ID_EH":23424986,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"VAT","ADM0_DIFF":null,"ADM0_TLC":"VAT","ADM0_A3_US":"VAT","ADM0_A3_FR":"VAT","ADM0_A3_RU":"VAT","ADM0_A3_ES":"VAT","ADM0_A3_CN":"VAT","ADM0_A3_TW":"VAT","ADM0_A3_IN":"VAT","ADM0_A3_NP":"VAT","ADM0_A3_PK":"VAT","ADM0_A3_DE":"VAT","ADM0_A3_GB":"VAT","ADM0_A3_BR":"VAT","ADM0_A3_IL":"VAT","ADM0_A3_PS":"VAT","ADM0_A3_SA":"VAT","ADM0_A3_EG":"VAT","ADM0_A3_MA":"VAT","ADM0_A3_PT":"VAT","ADM0_A3_AR":"VAT","ADM0_A3_JP":"VAT","ADM0_A3_KO":"VAT","ADM0_A3_VN":"VAT","ADM0_A3_TR":"VAT","ADM0_A3_ID":"VAT","ADM0_A3_PL":"VAT","ADM0_A3_GR":"VAT","ADM0_A3_IT":"VAT","ADM0_A3_NL":"VAT","ADM0_A3_SE":"VAT","ADM0_A3_BD":"VAT","ADM0_A3_UA":"VAT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":4,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":12.453418,"LABEL_Y":41.903323,"NE_ID":1159321407,"WIKIDATAID":"Q237","NAME_AR":"الفاتيكان","NAME_BN":"ভ্যাটিকান সিটি","NAME_DE":"Vatikanstadt","NAME_EN":"Vatican City","NAME_ES":"Ciudad del Vaticano","NAME_FA":"واتیکان","NAME_FR":"Cité du Vatican","NAME_EL":"Βατικανό","NAME_HE":"קריית הוותיקן","NAME_HI":"वैटिकन नगर","NAME_HU":"Vatikán","NAME_ID":"Vatikan","NAME_IT":"Città del Vaticano","NAME_JA":"バチカン","NAME_KO":"바티칸 시국","NAME_NL":"Vaticaanstad","NAME_PL":"Watykan","NAME_PT":"Vaticano","NAME_RU":"Ватикан","NAME_SV":"Vatikanstaten","NAME_TR":"Vatikan","NAME_UK":"Ватикан","NAME_UR":"ویٹیکن سٹی","NAME_VI":"Thành Vatican","NAME_ZH":"梵蒂冈","NAME_ZHT":"梵蒂岡","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[12.427539,41.897559,12.43916,41.906201],"geometry":{"type":"Polygon","coordinates":[[[12.43916,41.898389],[12.430566,41.897559],[12.427539,41.900732],[12.430566,41.905469],[12.438379,41.906201],[12.43916,41.898389]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Vanuatu","SOV_A3":"VUT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Vanuatu","ADM0_A3":"VUT","GEOU_DIF":0,"GEOUNIT":"Vanuatu","GU_A3":"VUT","SU_DIF":0,"SUBUNIT":"Vanuatu","SU_A3":"VUT","BRK_DIFF":0,"NAME":"Vanuatu","NAME_LONG":"Vanuatu","BRK_A3":"VUT","BRK_NAME":"Vanuatu","BRK_GROUP":null,"ABBREV":"Van.","POSTAL":"VU","FORMAL_EN":"Republic of Vanuatu","FORMAL_FR":null,"NAME_CIAWF":"Vanuatu","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Vanuatu","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":3,"MAPCOLOR9":7,"MAPCOLOR13":3,"POP_EST":299882,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":934,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"NH","ISO_A2":"VU","ISO_A2_EH":"VU","ISO_A3":"VUT","ISO_A3_EH":"VUT","ISO_N3":"548","ISO_N3_EH":"548","UN_A3":"548","WB_A2":"VU","WB_A3":"VUT","WOE_ID":23424907,"WOE_ID_EH":23424907,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"VUT","ADM0_DIFF":null,"ADM0_TLC":"VUT","ADM0_A3_US":"VUT","ADM0_A3_FR":"VUT","ADM0_A3_RU":"VUT","ADM0_A3_ES":"VUT","ADM0_A3_CN":"VUT","ADM0_A3_TW":"VUT","ADM0_A3_IN":"VUT","ADM0_A3_NP":"VUT","ADM0_A3_PK":"VUT","ADM0_A3_DE":"VUT","ADM0_A3_GB":"VUT","ADM0_A3_BR":"VUT","ADM0_A3_IL":"VUT","ADM0_A3_PS":"VUT","ADM0_A3_SA":"VUT","ADM0_A3_EG":"VUT","ADM0_A3_MA":"VUT","ADM0_A3_PT":"VUT","ADM0_A3_AR":"VUT","ADM0_A3_JP":"VUT","ADM0_A3_KO":"VUT","ADM0_A3_VN":"VUT","ADM0_A3_TR":"VUT","ADM0_A3_ID":"VUT","ADM0_A3_PL":"VUT","ADM0_A3_GR":"VUT","ADM0_A3_IT":"VUT","ADM0_A3_NL":"VUT","ADM0_A3_SE":"VUT","ADM0_A3_BD":"VUT","ADM0_A3_UA":"VUT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Melanesia","REGION_WB":"East Asia & Pacific","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":166.908762,"LABEL_Y":-15.37153,"NE_ID":1159321421,"WIKIDATAID":"Q686","NAME_AR":"فانواتو","NAME_BN":"ভানুয়াতু","NAME_DE":"Vanuatu","NAME_EN":"Vanuatu","NAME_ES":"Vanuatu","NAME_FA":"وانواتو","NAME_FR":"Vanuatu","NAME_EL":"Βανουάτου","NAME_HE":"ונואטו","NAME_HI":"वानूआटू","NAME_HU":"Vanuatu","NAME_ID":"Vanuatu","NAME_IT":"Vanuatu","NAME_JA":"バヌアツ","NAME_KO":"바누아투","NAME_NL":"Vanuatu","NAME_PL":"Vanuatu","NAME_PT":"Vanuatu","NAME_RU":"Вануату","NAME_SV":"Vanuatu","NAME_TR":"Vanuatu","NAME_UK":"Вануату","NAME_UR":"وانواتو","NAME_VI":"Vanuatu","NAME_ZH":"瓦努阿图","NAME_ZHT":"萬那杜","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[166.526074,-20.241797,169.896289,-13.709473],"geometry":{"type":"MultiPolygon","coordinates":[[[[166.745801,-14.826855],[166.810156,-15.157422],[166.885156,-15.156738],[166.923438,-15.13916],[166.967578,-15.061719],[166.987305,-14.940039],[167.026563,-14.922656],[167.075586,-14.935645],[167.054297,-14.974414],[167.068555,-15.071777],[167.106445,-15.125586],[167.131641,-15.135352],[167.182031,-15.389746],[167.200781,-15.443066],[167.199609,-15.485742],[167.093945,-15.580859],[166.936621,-15.578027],[166.825781,-15.634863],[166.758301,-15.631152],[166.758984,-15.566797],[166.698926,-15.515625],[166.631055,-15.406055],[166.647852,-15.211523],[166.527246,-14.850098],[166.526074,-14.759766],[166.567383,-14.641797],[166.607813,-14.636523],[166.662598,-14.735059],[166.745801,-14.826855]]],[[[167.4125,-16.095898],[167.458594,-16.117578],[167.483691,-16.117578],[167.49873,-16.166211],[167.641992,-16.263281],[167.681348,-16.260547],[167.714453,-16.313672],[167.775977,-16.340527],[167.792578,-16.394629],[167.836621,-16.449707],[167.759766,-16.516406],[167.611426,-16.498633],[167.526367,-16.574316],[167.449316,-16.55498],[167.436133,-16.515234],[167.446875,-16.501953],[167.400977,-16.400586],[167.380273,-16.245703],[167.349219,-16.154492],[167.315625,-16.115527],[167.246094,-16.149609],[167.218066,-16.155273],[167.151465,-16.080469],[167.183008,-15.928516],[167.199512,-15.885059],[167.253711,-15.876758],[167.335742,-15.916699],[167.4125,-16.095898]]],[[[168.446777,-16.778809],[168.476562,-16.793652],[168.460156,-16.835059],[168.322754,-16.787793],[168.212305,-16.806152],[168.181445,-16.804004],[168.148535,-16.765723],[168.124316,-16.690039],[168.135352,-16.636914],[168.181836,-16.599902],[168.199219,-16.593848],[168.233789,-16.639648],[168.26543,-16.670801],[168.296094,-16.68418],[168.366016,-16.758789],[168.446777,-16.778809]]],[[[168.29668,-16.336523],[168.182422,-16.346777],[168.02168,-16.315625],[167.957031,-16.272266],[167.929004,-16.228711],[167.98457,-16.196484],[168.064258,-16.18125],[168.163867,-16.081641],[168.19834,-16.119824],[168.235449,-16.231348],[168.275684,-16.264941],[168.297949,-16.29873],[168.29668,-16.336523]]],[[[168.445801,-17.542188],[168.54541,-17.684668],[168.584961,-17.695898],[168.524609,-17.798047],[168.399414,-17.807227],[168.25166,-17.780762],[168.305859,-17.745703],[168.277832,-17.706055],[168.233203,-17.698047],[168.182031,-17.716992],[168.158203,-17.710547],[168.190918,-17.644824],[168.273145,-17.552246],[168.297461,-17.544922],[168.319531,-17.543945],[168.341016,-17.552051],[168.445801,-17.542188]]],[[[167.911328,-15.435938],[167.844238,-15.481836],[167.720215,-15.477441],[167.674219,-15.451563],[167.82627,-15.312012],[168.002539,-15.283203],[167.911328,-15.435938]]],[[[168.212891,-15.97041],[168.196191,-15.97168],[168.179297,-15.925684],[168.122852,-15.680859],[168.159961,-15.461816],[168.183496,-15.508203],[168.267773,-15.892285],[168.256348,-15.955176],[168.212891,-15.97041]]],[[[168.18916,-15.328711],[168.171875,-15.390625],[168.130469,-15.318945],[168.104199,-15.016602],[168.114941,-14.988574],[168.136426,-14.986426],[168.186914,-15.196875],[168.18916,-15.328711]]],[[[167.218945,-15.724121],[167.200781,-15.750098],[167.094727,-15.685254],[167.119043,-15.622559],[167.234375,-15.64502],[167.218945,-15.724121]]],[[[167.584863,-14.260938],[167.543262,-14.311621],[167.430273,-14.294922],[167.403516,-14.281543],[167.410742,-14.197461],[167.439063,-14.168457],[167.506445,-14.142188],[167.598926,-14.183789],[167.584863,-14.260938]]],[[[167.488867,-13.907227],[167.474219,-13.91709],[167.451074,-13.909375],[167.391797,-13.788379],[167.406836,-13.748047],[167.481055,-13.709473],[167.547266,-13.77666],[167.553516,-13.813965],[167.553027,-13.845703],[167.542871,-13.873145],[167.498633,-13.88457],[167.488867,-13.907227]]],[[[169.896289,-20.186621],[169.861133,-20.241797],[169.807031,-20.241113],[169.7375,-20.202148],[169.750684,-20.15332],[169.829492,-20.144727],[169.852344,-20.147949],[169.896289,-20.186621]]],[[[169.491309,-19.540137],[169.438477,-19.648828],[169.347266,-19.623535],[169.261914,-19.54502],[169.21748,-19.476367],[169.247461,-19.344727],[169.291113,-19.321777],[169.336719,-19.329297],[169.359961,-19.457813],[169.491309,-19.540137]]],[[[169.334375,-18.940234],[169.288281,-18.988574],[169.248047,-18.983301],[168.986914,-18.871289],[168.997852,-18.825195],[168.987109,-18.707617],[169.01582,-18.64375],[169.087891,-18.61748],[169.143848,-18.631055],[169.178027,-18.725098],[169.255762,-18.763379],[169.201172,-18.795703],[169.296191,-18.866797],[169.334375,-18.940234]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Uzbekistan","SOV_A3":"UZB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Uzbekistan","ADM0_A3":"UZB","GEOU_DIF":0,"GEOUNIT":"Uzbekistan","GU_A3":"UZB","SU_DIF":0,"SUBUNIT":"Uzbekistan","SU_A3":"UZB","BRK_DIFF":0,"NAME":"Uzbekistan","NAME_LONG":"Uzbekistan","BRK_A3":"UZB","BRK_NAME":"Uzbekistan","BRK_GROUP":null,"ABBREV":"Uzb.","POSTAL":"UZ","FORMAL_EN":"Republic of Uzbekistan","FORMAL_FR":null,"NAME_CIAWF":"Uzbekistan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Uzbekistan","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":3,"MAPCOLOR9":5,"MAPCOLOR13":4,"POP_EST":33580650,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":57921,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"UZ","ISO_A2":"UZ","ISO_A2_EH":"UZ","ISO_A3":"UZB","ISO_A3_EH":"UZB","ISO_N3":"860","ISO_N3_EH":"860","UN_A3":"860","WB_A2":"UZ","WB_A3":"UZB","WOE_ID":23424980,"WOE_ID_EH":23424980,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"UZB","ADM0_DIFF":null,"ADM0_TLC":"UZB","ADM0_A3_US":"UZB","ADM0_A3_FR":"UZB","ADM0_A3_RU":"UZB","ADM0_A3_ES":"UZB","ADM0_A3_CN":"UZB","ADM0_A3_TW":"UZB","ADM0_A3_IN":"UZB","ADM0_A3_NP":"UZB","ADM0_A3_PK":"UZB","ADM0_A3_DE":"UZB","ADM0_A3_GB":"UZB","ADM0_A3_BR":"UZB","ADM0_A3_IL":"UZB","ADM0_A3_PS":"UZB","ADM0_A3_SA":"UZB","ADM0_A3_EG":"UZB","ADM0_A3_MA":"UZB","ADM0_A3_PT":"UZB","ADM0_A3_AR":"UZB","ADM0_A3_JP":"UZB","ADM0_A3_KO":"UZB","ADM0_A3_VN":"UZB","ADM0_A3_TR":"UZB","ADM0_A3_ID":"UZB","ADM0_A3_PL":"UZB","ADM0_A3_GR":"UZB","ADM0_A3_IT":"UZB","ADM0_A3_NL":"UZB","ADM0_A3_SE":"UZB","ADM0_A3_BD":"UZB","ADM0_A3_UA":"UZB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Central Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":5,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":64.005429,"LABEL_Y":41.693603,"NE_ID":1159321405,"WIKIDATAID":"Q265","NAME_AR":"أوزبكستان","NAME_BN":"উজবেকিস্তান","NAME_DE":"Usbekistan","NAME_EN":"Uzbekistan","NAME_ES":"Uzbekistán","NAME_FA":"ازبکستان","NAME_FR":"Ouzbékistan","NAME_EL":"Ουζμπεκιστάν","NAME_HE":"אוזבקיסטן","NAME_HI":"उज़्बेकिस्तान","NAME_HU":"Üzbegisztán","NAME_ID":"Uzbekistan","NAME_IT":"Uzbekistan","NAME_JA":"ウズベキスタン","NAME_KO":"우즈베키스탄","NAME_NL":"Oezbekistan","NAME_PL":"Uzbekistan","NAME_PT":"Uzbequistão","NAME_RU":"Узбекистан","NAME_SV":"Uzbekistan","NAME_TR":"Özbekistan","NAME_UK":"Узбекистан","NAME_UR":"ازبکستان","NAME_VI":"Uzbekistan","NAME_ZH":"乌兹别克斯坦","NAME_ZHT":"烏茲別克","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[55.975684,37.172217,73.136914,45.555371],"geometry":{"type":"MultiPolygon","coordinates":[[[[70.946777,42.248682],[70.979004,42.266553],[71.036035,42.284668],[71.12998,42.25],[71.212695,42.206445],[71.232324,42.186279],[71.228516,42.162891],[71.032227,42.077783],[70.910352,42.037988],[70.856641,42.030811],[70.841895,42.019629],[70.80332,41.922656],[70.727734,41.905225],[70.630859,41.875488],[70.562891,41.830811],[70.45498,41.725049],[70.180957,41.571436],[70.176953,41.53999],[70.200879,41.514453],[70.290039,41.496826],[70.407813,41.449561],[70.471387,41.412646],[70.645898,41.460352],[70.688867,41.449805],[70.734375,41.400537],[70.782422,41.2625],[70.860449,41.224902],[70.962598,41.195996],[71.025977,41.186572],[71.110742,41.152637],[71.223438,41.139941],[71.298828,41.15249],[71.393066,41.123389],[71.408398,41.136035],[71.420898,41.341895],[71.5,41.307471],[71.545605,41.308057],[71.585547,41.333252],[71.60625,41.367432],[71.619629,41.435449],[71.602246,41.503271],[71.6375,41.53418],[71.664941,41.541211],[71.685156,41.533008],[71.697266,41.515576],[71.700684,41.454004],[71.757715,41.428027],[71.79248,41.413135],[71.825781,41.361035],[71.858008,41.311377],[71.878613,41.19502],[71.958496,41.187061],[72.052441,41.164746],[72.11543,41.186572],[72.164258,41.17373],[72.180957,41.118457],[72.180664,41.066846],[72.187305,41.025928],[72.213086,41.014258],[72.294922,41.039941],[72.364063,41.043457],[72.427344,41.018945],[72.505957,40.981689],[72.62041,40.883789],[72.658301,40.869922],[72.830957,40.862158],[72.866602,40.842334],[72.925977,40.842432],[72.990039,40.860107],[73.132129,40.828516],[73.136914,40.810645],[73.112891,40.786035],[72.773828,40.650391],[72.748828,40.608691],[72.67959,40.555615],[72.604102,40.525439],[72.56748,40.524365],[72.402051,40.578076],[72.382617,40.565137],[72.369043,40.543457],[72.369727,40.519727],[72.405957,40.463086],[72.389258,40.427393],[72.357715,40.40166],[72.254004,40.424219],[72.234668,40.438623],[72.232813,40.454395],[72.192871,40.454443],[72.13125,40.438623],[72.012598,40.340723],[71.971094,40.289502],[71.955664,40.258594],[71.902734,40.240967],[71.84541,40.234326],[71.772656,40.188037],[71.69248,40.152344],[71.666797,40.178613],[71.650879,40.208008],[71.629883,40.217139],[71.580469,40.210254],[71.52041,40.208984],[71.457422,40.241992],[71.376172,40.275195],[71.304688,40.286914],[71.094531,40.27124],[70.990625,40.254883],[70.958008,40.238867],[70.899414,40.23457],[70.653125,40.201172],[70.602734,40.21416],[70.56582,40.267139],[70.533594,40.324512],[70.469922,40.345361],[70.398242,40.361377],[70.371582,40.384131],[70.369727,40.412012],[70.377148,40.439258],[70.382617,40.453516],[70.548828,40.562793],[70.69834,40.661182],[70.712012,40.669092],[70.725586,40.687793],[70.751074,40.721777],[70.750977,40.7396],[70.63916,40.778564],[70.634766,40.796582],[70.657324,40.815088],[70.657324,40.839648],[70.578223,40.911475],[70.441504,41.023438],[70.401953,41.035107],[70.372656,41.027637],[70.318945,40.919238],[70.29209,40.891699],[70.136328,40.82041],[70.005664,40.771436],[69.773242,40.684277],[69.712891,40.656982],[69.670801,40.661963],[69.628418,40.679053],[69.498242,40.76709],[69.413867,40.797168],[69.357227,40.767383],[69.309375,40.723926],[69.313965,40.634766],[69.259961,40.587646],[69.20625,40.566553],[69.304199,40.327393],[69.294434,40.296582],[69.219531,40.288135],[69.274902,40.198096],[69.22832,40.187598],[69.110352,40.20874],[68.951758,40.222607],[68.652539,40.182666],[68.630664,40.16709],[68.622461,40.147266],[68.639746,40.129199],[68.78457,40.1271],[68.926855,40.136328],[68.966016,40.11958],[68.97207,40.089941],[68.955664,40.071338],[68.908496,40.068213],[68.804688,40.050342],[68.792773,40.031494],[68.789453,40.01333],[68.824414,39.960791],[68.863867,39.927344],[68.86875,39.907471],[68.852246,39.890967],[68.832422,39.884326],[68.797656,39.909131],[68.777832,39.904199],[68.767969,39.881836],[68.758203,39.855566],[68.735254,39.83623],[68.686914,39.846289],[68.638965,39.838867],[68.610352,39.743262],[68.586133,39.634961],[68.506934,39.562793],[68.463281,39.536719],[68.399023,39.528857],[68.303027,39.537695],[68.244922,39.548291],[68.077148,39.56416],[67.908594,39.593799],[67.719043,39.621387],[67.54248,39.557617],[67.491699,39.51875],[67.45957,39.482422],[67.426172,39.465576],[67.349609,39.24209],[67.357617,39.216699],[67.400391,39.19668],[67.616504,39.150293],[67.64834,39.131055],[67.667285,39.10918],[67.676563,39.008496],[67.694434,38.994629],[67.768555,38.982227],[67.875684,38.983008],[67.95957,38.99292],[68.044336,38.983594],[68.103516,38.962012],[68.13252,38.927637],[68.148535,38.890625],[68.047852,38.669287],[68.055957,38.588916],[68.087207,38.473535],[68.144141,38.383105],[68.251367,38.294531],[68.333105,38.237793],[68.350293,38.211035],[68.354492,38.169531],[68.341211,38.116797],[68.294043,38.03291],[68.236523,37.959668],[68.174023,37.928418],[68.087598,37.835449],[68.010938,37.720947],[67.863574,37.570703],[67.814355,37.487012],[67.798047,37.244971],[67.758984,37.172217],[67.75293,37.199805],[67.7,37.227246],[67.607422,37.22251],[67.546484,37.235645],[67.517285,37.26665],[67.441699,37.258008],[67.319727,37.20957],[67.195508,37.235205],[67.068848,37.334814],[66.827734,37.371289],[66.522266,37.348486],[66.510645,37.458691],[66.511328,37.59917],[66.525586,37.785742],[66.629297,37.932031],[66.626367,37.959863],[66.60625,37.986719],[66.574512,38.010791],[66.389746,38.050928],[66.335352,38.072168],[66.263672,38.118066],[66.173145,38.166699],[66.094824,38.200146],[65.971191,38.244238],[65.857129,38.26875],[65.790234,38.250049],[65.728516,38.226367],[65.670898,38.225732],[65.612891,38.238574],[65.399609,38.348828],[65.07666,38.539453],[64.820703,38.672461],[64.659961,38.736035],[64.621875,38.756445],[64.531641,38.816211],[64.309961,38.977295],[64.162793,38.953613],[63.952539,39.05835],[63.763672,39.160547],[63.720801,39.188135],[63.506055,39.3771],[63.291895,39.499512],[63.058105,39.633154],[62.906836,39.716797],[62.650684,39.858496],[62.525488,39.944092],[62.483203,39.975635],[62.441602,40.03623],[62.375,40.33208],[62.298047,40.46748],[62.188477,40.541211],[62.09502,40.683301],[62.017578,40.893799],[61.953516,41.030615],[61.902832,41.093701],[61.799902,41.163428],[61.644531,41.239844],[61.496973,41.276074],[61.443652,41.274609],[61.417383,41.265137],[61.3875,41.252148],[61.328906,41.195117],[61.242383,41.189209],[61.179297,41.190576],[61.119922,41.210889],[60.933203,41.229004],[60.867188,41.248682],[60.754883,41.245752],[60.513574,41.216162],[60.45498,41.221631],[60.2,41.348975],[60.089648,41.399414],[60.067383,41.427344],[60.06875,41.476221],[60.106055,41.545215],[60.137988,41.594141],[60.124023,41.644971],[60.075586,41.700537],[60.075586,41.759668],[60.108594,41.792676],[60.176367,41.782275],[60.200781,41.803125],[60.19209,41.834424],[60.155566,41.857031],[60.106934,41.907422],[59.962598,41.954395],[59.941797,41.973535],[59.949316,41.99541],[59.974121,42.018799],[59.979199,42.068066],[59.981641,42.131738],[60.000781,42.164746],[60.006055,42.19082],[59.985156,42.211719],[59.936523,42.236035],[59.858301,42.295166],[59.762598,42.301562],[59.451074,42.299512],[59.354297,42.323291],[59.276563,42.356152],[59.199121,42.481689],[59.15957,42.511426],[59.123145,42.523779],[59.03584,42.528125],[58.930859,42.540283],[58.876953,42.561475],[58.72998,42.676172],[58.589063,42.778467],[58.532324,42.681934],[58.477148,42.662842],[58.353125,42.671729],[58.259668,42.688086],[58.206445,42.666309],[58.151563,42.628076],[58.162012,42.602979],[58.204102,42.576367],[58.288672,42.527295],[58.418164,42.406689],[58.476953,42.340137],[58.48584,42.316846],[58.474414,42.299365],[58.457031,42.291797],[58.431445,42.29209],[58.39707,42.29248],[58.377148,42.312451],[58.370508,42.346777],[58.327246,42.398926],[58.28291,42.428857],[58.234082,42.447705],[58.165625,42.461572],[58.075488,42.486523],[58.028906,42.487646],[57.983496,42.458789],[57.945703,42.42002],[57.923438,42.335205],[57.855957,42.231055],[57.814258,42.189844],[57.686133,42.164795],[57.381738,42.156299],[57.290625,42.123779],[57.228809,42.084473],[57.113574,41.957129],[57.033691,41.914844],[56.964063,41.856543],[56.984863,41.669336],[57.018164,41.450586],[57.07666,41.38999],[57.113867,41.371777],[57.118848,41.350293],[57.094824,41.331299],[57.064258,41.307275],[57.017969,41.263477],[56.96582,41.265137],[56.86084,41.276123],[56.773633,41.287988],[56.479883,41.300635],[56.241992,41.31084],[55.977441,41.322217],[55.977344,41.551758],[55.977148,41.781348],[55.977051,42.010889],[55.976953,42.24043],[55.976855,42.469971],[55.976758,42.699512],[55.97666,42.929053],[55.976562,43.158594],[55.976465,43.388086],[55.976367,43.617627],[55.97627,43.847217],[55.976172,44.076758],[55.976074,44.306299],[55.975977,44.53584],[55.975781,44.765381],[55.975684,44.994922],[56.100488,45.023389],[56.25791,45.059326],[56.40918,45.093799],[56.58877,45.134766],[56.791895,45.181055],[56.965039,45.220605],[57.17168,45.267725],[57.329297,45.303662],[57.477344,45.337451],[57.666699,45.377441],[57.961035,45.439697],[58.125195,45.474365],[58.291113,45.509424],[58.449414,45.54292],[58.555273,45.555371],[58.668945,45.507568],[58.807031,45.441797],[58.945117,45.375977],[59.083398,45.310205],[59.221484,45.244434],[59.35957,45.178613],[59.497852,45.112842],[59.635938,45.04707],[59.774023,44.981299],[59.912207,44.915576],[60.050293,44.849756],[60.188477,44.783984],[60.32666,44.718213],[60.464746,44.652441],[60.60293,44.586621],[60.741113,44.52085],[60.879199,44.455078],[61.00791,44.393799],[61.065332,44.348389],[61.09707,44.248242],[61.160742,44.168604],[61.271484,44.082275],[61.385059,43.993945],[61.525879,43.877197],[61.623633,43.796191],[61.723242,43.713574],[61.887598,43.577246],[61.990234,43.492139],[62.071973,43.489355],[62.237891,43.50957],[62.459375,43.536621],[62.634473,43.558008],[62.846191,43.583887],[63.047656,43.608496],[63.207031,43.627979],[63.444824,43.613232],[63.679688,43.598633],[63.848145,43.588135],[64.013281,43.577832],[64.208789,43.565723],[64.318164,43.558936],[64.443164,43.551172],[64.496094,43.571631],[64.604102,43.613477],[64.706055,43.652979],[64.811816,43.693945],[64.905469,43.714697],[65.003125,43.649072],[65.084863,43.573682],[65.170898,43.494189],[65.270508,43.417529],[65.366504,43.372021],[65.496191,43.310547],[65.570703,43.205176],[65.670215,43.0646],[65.735645,42.972119],[65.803027,42.876953],[65.901074,42.914502],[66.005664,42.95459],[66.100293,42.99082],[66.088867,42.873389],[66.078516,42.76665],[66.062695,42.605176],[66.049805,42.472754],[66.015527,42.314795],[66.013184,42.194482],[66.01123,42.08877],[66.00957,42.004883],[66.193164,42.001123],[66.328809,41.99834],[66.498633,41.994873],[66.515039,41.889404],[66.537891,41.74126],[66.572559,41.606982],[66.60166,41.494336],[66.645313,41.348633],[66.668652,41.270752],[66.709668,41.17915],[66.749805,41.15708],[66.814258,41.142383],[67.038672,41.15332],[67.225,41.162354],[67.371582,41.169531],[67.528027,41.177148],[67.735059,41.187256],[67.805078,41.163916],[67.865723,41.180273],[67.935742,41.196582],[67.991406,41.130029],[68.019727,41.09624],[68.059375,41.061279],[68.113086,41.028613],[68.090332,40.960254],[68.057031,40.860596],[68.047656,40.809277],[68.112305,40.754053],[68.160254,40.721777],[68.291895,40.656104],[68.415039,40.619434],[68.495703,40.608643],[68.572656,40.622656],[68.600684,40.659961],[68.593652,40.711279],[68.556543,40.765137],[68.559277,40.829297],[68.584082,40.87627],[68.662793,40.961523],[68.737109,41.041895],[68.851172,41.123828],[68.986914,41.205029],[69.043457,41.264111],[69.064941,41.366943],[69.153613,41.425244],[69.249316,41.460254],[69.368359,41.490576],[69.400977,41.541895],[69.565137,41.629053],[69.663867,41.672119],[69.788086,41.697314],[69.959961,41.754053],[70.095605,41.820508],[70.225879,41.945996],[70.328906,42.027979],[70.416016,42.078564],[70.489063,42.080273],[70.540137,42.039453],[70.584277,42.036035],[70.613281,42.054736],[70.6625,42.107471],[70.715234,42.168652],[70.764551,42.194189],[70.860352,42.207227],[70.946777,42.248682]],[[70.652539,40.936621],[70.649219,40.96084],[70.618359,41.00166],[70.57207,41.024805],[70.55,41.014893],[70.56875,40.981836],[70.622754,40.934424],[70.652539,40.936621]]],[[[71.206152,39.892578],[71.15625,39.883447],[71.064258,39.884912],[71.011719,39.895117],[71.043652,39.976318],[71.044824,39.992529],[71.041016,39.994922],[71.014453,40.005762],[70.974414,40.038867],[70.960645,40.087988],[70.97627,40.133252],[71.005469,40.152295],[71.024121,40.14917],[71.080371,40.079883],[71.130273,40.059668],[71.228711,40.048145],[71.179297,39.979834],[71.215625,39.906787],[71.206152,39.892578]]],[[[71.779688,39.950244],[71.75293,39.907129],[71.705859,39.917432],[71.668945,39.946094],[71.68125,39.968652],[71.736523,39.980957],[71.765332,39.993262],[71.789941,39.995312],[71.779688,39.950244]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Uruguay","SOV_A3":"URY","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Uruguay","ADM0_A3":"URY","GEOU_DIF":0,"GEOUNIT":"Uruguay","GU_A3":"URY","SU_DIF":0,"SUBUNIT":"Uruguay","SU_A3":"URY","BRK_DIFF":0,"NAME":"Uruguay","NAME_LONG":"Uruguay","BRK_A3":"URY","BRK_NAME":"Uruguay","BRK_GROUP":null,"ABBREV":"Ury.","POSTAL":"UY","FORMAL_EN":"Oriental Republic of Uruguay","FORMAL_FR":null,"NAME_CIAWF":"Uruguay","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Uruguay","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":10,"POP_EST":3461734,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":56045,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"UY","ISO_A2":"UY","ISO_A2_EH":"UY","ISO_A3":"URY","ISO_A3_EH":"URY","ISO_N3":"858","ISO_N3_EH":"858","UN_A3":"858","WB_A2":"UY","WB_A3":"URY","WOE_ID":23424979,"WOE_ID_EH":23424979,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"URY","ADM0_DIFF":null,"ADM0_TLC":"URY","ADM0_A3_US":"URY","ADM0_A3_FR":"URY","ADM0_A3_RU":"URY","ADM0_A3_ES":"URY","ADM0_A3_CN":"URY","ADM0_A3_TW":"URY","ADM0_A3_IN":"URY","ADM0_A3_NP":"URY","ADM0_A3_PK":"URY","ADM0_A3_DE":"URY","ADM0_A3_GB":"URY","ADM0_A3_BR":"URY","ADM0_A3_IL":"URY","ADM0_A3_PS":"URY","ADM0_A3_SA":"URY","ADM0_A3_EG":"URY","ADM0_A3_MA":"URY","ADM0_A3_PT":"URY","ADM0_A3_AR":"URY","ADM0_A3_JP":"URY","ADM0_A3_KO":"URY","ADM0_A3_VN":"URY","ADM0_A3_TR":"URY","ADM0_A3_ID":"URY","ADM0_A3_PL":"URY","ADM0_A3_GR":"URY","ADM0_A3_IT":"URY","ADM0_A3_NL":"URY","ADM0_A3_SE":"URY","ADM0_A3_BD":"URY","ADM0_A3_UA":"URY","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-55.966942,"LABEL_Y":-32.961127,"NE_ID":1159321353,"WIKIDATAID":"Q77","NAME_AR":"الأوروغواي","NAME_BN":"উরুগুয়ে","NAME_DE":"Uruguay","NAME_EN":"Uruguay","NAME_ES":"Uruguay","NAME_FA":"اروگوئه","NAME_FR":"Uruguay","NAME_EL":"Ουρουγουάη","NAME_HE":"אורוגוואי","NAME_HI":"उरुग्वे","NAME_HU":"Uruguay","NAME_ID":"Uruguay","NAME_IT":"Uruguay","NAME_JA":"ウルグアイ","NAME_KO":"우루과이","NAME_NL":"Uruguay","NAME_PL":"Urugwaj","NAME_PT":"Uruguai","NAME_RU":"Уругвай","NAME_SV":"Uruguay","NAME_TR":"Uruguay","NAME_UK":"Уругвай","NAME_UR":"یوراگوئے","NAME_VI":"Uruguay","NAME_ZH":"乌拉圭","NAME_ZHT":"烏拉圭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-58.438135,-34.932813,-53.125586,-30.101074],"geometry":{"type":"Polygon","coordinates":[[[-53.370605,-33.742188],[-53.41958,-33.779199],[-53.472461,-33.849316],[-53.534521,-34.01748],[-53.74292,-34.249512],[-53.785303,-34.380371],[-54.010254,-34.516992],[-54.168555,-34.670703],[-54.272119,-34.666895],[-54.365332,-34.732715],[-54.902295,-34.932813],[-55.095117,-34.895117],[-55.237891,-34.895801],[-55.370605,-34.807617],[-55.673145,-34.775684],[-55.862939,-34.810938],[-56.11792,-34.90791],[-56.194629,-34.906445],[-56.249951,-34.90127],[-56.387842,-34.861035],[-56.463086,-34.775391],[-56.855176,-34.67666],[-57.170703,-34.452344],[-57.543457,-34.448047],[-57.829102,-34.477344],[-57.873242,-34.447656],[-57.902148,-34.390137],[-57.96123,-34.306934],[-58.207031,-34.109082],[-58.400195,-33.912402],[-58.438135,-33.719141],[-58.411328,-33.508887],[-58.353369,-33.260059],[-58.363525,-33.182324],[-58.292187,-33.137988],[-58.221582,-33.129102],[-58.153564,-33.064648],[-58.092676,-32.967383],[-58.082324,-32.893652],[-58.12959,-32.757227],[-58.162207,-32.566504],[-58.201172,-32.47168],[-58.123047,-32.321875],[-58.119727,-32.248926],[-58.164795,-32.184863],[-58.177002,-32.119043],[-58.156348,-32.051563],[-58.1604,-31.986523],[-58.189014,-31.924219],[-58.16748,-31.872656],[-58.09585,-31.831836],[-58.042334,-31.769238],[-58.006982,-31.684961],[-57.988867,-31.620605],[-57.987988,-31.576172],[-58.009668,-31.534375],[-58.053857,-31.494922],[-58.033398,-31.416602],[-57.94834,-31.299414],[-57.893359,-31.195312],[-57.868408,-31.104395],[-57.870068,-31.031055],[-57.898291,-30.975195],[-57.886328,-30.937402],[-57.834082,-30.91748],[-57.810596,-30.858594],[-57.818555,-30.712012],[-57.87251,-30.591016],[-57.831201,-30.495215],[-57.712695,-30.384473],[-57.650879,-30.29502],[-57.645752,-30.226953],[-57.608887,-30.187793],[-57.552295,-30.26123],[-57.383838,-30.280664],[-57.214453,-30.283398],[-57.186914,-30.264844],[-57.120508,-30.144434],[-57.032715,-30.109961],[-56.937256,-30.101074],[-56.832715,-30.107227],[-56.72168,-30.186914],[-56.407227,-30.447461],[-56.176172,-30.628418],[-56.105859,-30.71377],[-56.044824,-30.777637],[-55.998975,-30.837207],[-56.018457,-30.991895],[-56.015527,-31.059668],[-56.004687,-31.079199],[-55.952002,-31.080859],[-55.873682,-31.069629],[-55.807764,-31.036719],[-55.756348,-30.987109],[-55.705957,-30.946582],[-55.665234,-30.924902],[-55.650488,-30.89209],[-55.627148,-30.858105],[-55.603027,-30.850781],[-55.557324,-30.875977],[-55.449561,-30.964453],[-55.366064,-31.046191],[-55.345508,-31.092969],[-55.313281,-31.141699],[-55.278955,-31.18418],[-55.254639,-31.225586],[-55.173535,-31.27959],[-55.091162,-31.313965],[-55.036035,-31.279004],[-54.895996,-31.391211],[-54.587646,-31.485156],[-54.530908,-31.541992],[-54.477686,-31.622754],[-54.369922,-31.74502],[-54.220557,-31.855176],[-54.100439,-31.901563],[-53.985156,-31.928125],[-53.920605,-31.952344],[-53.876514,-31.994531],[-53.806104,-32.039941],[-53.761719,-32.056836],[-53.746582,-32.097461],[-53.701123,-32.186328],[-53.653613,-32.29873],[-53.601709,-32.403027],[-53.489404,-32.503223],[-53.362744,-32.581152],[-53.23125,-32.625391],[-53.157275,-32.680078],[-53.125586,-32.736719],[-53.214062,-32.821094],[-53.310107,-32.927051],[-53.395215,-33.010352],[-53.482861,-33.068555],[-53.511865,-33.108691],[-53.531348,-33.170898],[-53.530371,-33.500293],[-53.537646,-33.622852],[-53.531348,-33.655469],[-53.518848,-33.677246],[-53.463574,-33.709863],[-53.397559,-33.737305],[-53.370605,-33.742188]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Federated States of Micronesia","SOV_A3":"FSM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Federated States of Micronesia","ADM0_A3":"FSM","GEOU_DIF":0,"GEOUNIT":"Federated States of Micronesia","GU_A3":"FSM","SU_DIF":0,"SUBUNIT":"Federated States of Micronesia","SU_A3":"FSM","BRK_DIFF":0,"NAME":"Micronesia","NAME_LONG":"Federated States of Micronesia","BRK_A3":"FSM","BRK_NAME":"Micronesia","BRK_GROUP":null,"ABBREV":"F.S.M.","POSTAL":"FSM","FORMAL_EN":"Federated States of Micronesia","FORMAL_FR":null,"NAME_CIAWF":"Micronesia, Federated States of","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Micronesia, Federated States of","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":2,"MAPCOLOR9":4,"MAPCOLOR13":13,"POP_EST":113815,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":401,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"FM","ISO_A2":"FM","ISO_A2_EH":"FM","ISO_A3":"FSM","ISO_A3_EH":"FSM","ISO_N3":"583","ISO_N3_EH":"583","UN_A3":"583","WB_A2":"FM","WB_A3":"FSM","WOE_ID":23424815,"WOE_ID_EH":23424815,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"FSM","ADM0_DIFF":null,"ADM0_TLC":"FSM","ADM0_A3_US":"FSM","ADM0_A3_FR":"FSM","ADM0_A3_RU":"FSM","ADM0_A3_ES":"FSM","ADM0_A3_CN":"FSM","ADM0_A3_TW":"FSM","ADM0_A3_IN":"FSM","ADM0_A3_NP":"FSM","ADM0_A3_PK":"FSM","ADM0_A3_DE":"FSM","ADM0_A3_GB":"FSM","ADM0_A3_BR":"FSM","ADM0_A3_IL":"FSM","ADM0_A3_PS":"FSM","ADM0_A3_SA":"FSM","ADM0_A3_EG":"FSM","ADM0_A3_MA":"FSM","ADM0_A3_PT":"FSM","ADM0_A3_AR":"FSM","ADM0_A3_JP":"FSM","ADM0_A3_KO":"FSM","ADM0_A3_VN":"FSM","ADM0_A3_TR":"FSM","ADM0_A3_ID":"FSM","ADM0_A3_PL":"FSM","ADM0_A3_GR":"FSM","ADM0_A3_IT":"FSM","ADM0_A3_NL":"FSM","ADM0_A3_SE":"FSM","ADM0_A3_BD":"FSM","ADM0_A3_UA":"FSM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Micronesia","REGION_WB":"East Asia & Pacific","NAME_LEN":10,"LONG_LEN":30,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":158.234019,"LABEL_Y":6.887553,"NE_ID":1159320691,"WIKIDATAID":"Q702","NAME_AR":"ولايات ميكرونيسيا المتحدة","NAME_BN":"মাইক্রোনেশিয়া যুক্তরাজ্য","NAME_DE":"Föderierte Staaten von Mikronesien","NAME_EN":"Federated States of Micronesia","NAME_ES":"Estados Federados de Micronesia","NAME_FA":"میکرونزی","NAME_FR":"États fédérés de Micronésie","NAME_EL":"Ομόσπονδες Πολιτείες της Μικρονησίας","NAME_HE":"מיקרונזיה","NAME_HI":"माइक्रोनेशिया के संघीकृत राज्य","NAME_HU":"Mikronéziai Szövetségi Államok","NAME_ID":"Mikronesia","NAME_IT":"Stati Federati di Micronesia","NAME_JA":"ミクロネシア連邦","NAME_KO":"미크로네시아 연방","NAME_NL":"Micronesia","NAME_PL":"Mikronezja","NAME_PT":"Micronésia","NAME_RU":"Микронезия","NAME_SV":"Mikronesiska federationen","NAME_TR":"Mikronezya","NAME_UK":"Мікронезія","NAME_UR":"مائیکرونیشیا","NAME_VI":"Micronesia","NAME_ZH":"密克罗尼西亚联邦","NAME_ZHT":"密克羅尼西亞聯邦","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[138.061914,5.277246,162.993457,9.593311],"geometry":{"type":"MultiPolygon","coordinates":[[[[162.983203,5.325732],[162.993457,5.277246],[162.929883,5.300781],[162.921094,5.31792],[162.958203,5.33501],[162.983203,5.325732]]],[[[138.142676,9.500684],[138.06709,9.419043],[138.061914,9.445752],[138.085059,9.49458],[138.116895,9.550195],[138.146973,9.583594],[138.18584,9.593311],[138.213574,9.547217],[138.18252,9.507373],[138.142676,9.500684]]],[[[151.647754,7.346191],[151.639453,7.333008],[151.57832,7.338086],[151.569727,7.345508],[151.575098,7.351318],[151.604297,7.357227],[151.607813,7.375391],[151.592871,7.379248],[151.605664,7.388721],[151.629492,7.39043],[151.643262,7.379248],[151.650488,7.362842],[151.647754,7.346191]]],[[[151.881445,7.432031],[151.864258,7.426758],[151.855957,7.431787],[151.859961,7.457373],[151.865332,7.466162],[151.881836,7.46709],[151.910547,7.460156],[151.912598,7.453857],[151.881445,7.432031]]],[[[158.314844,6.813672],[158.256543,6.791016],[158.183398,6.80127],[158.16084,6.882812],[158.127637,6.904639],[158.134766,6.944824],[158.186133,6.977734],[158.294629,6.951074],[158.334961,6.893164],[158.309375,6.854639],[158.314844,6.813672]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":6,"SOVEREIGNT":"Marshall Islands","SOV_A3":"MHL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Marshall Islands","ADM0_A3":"MHL","GEOU_DIF":0,"GEOUNIT":"Marshall Islands","GU_A3":"MHL","SU_DIF":0,"SUBUNIT":"Marshall Islands","SU_A3":"MHL","BRK_DIFF":0,"NAME":"Marshall Is.","NAME_LONG":"Marshall Islands","BRK_A3":"MHL","BRK_NAME":"Marshall Is.","BRK_GROUP":null,"ABBREV":"M. Is.","POSTAL":"MH","FORMAL_EN":"Republic of the Marshall Islands","FORMAL_FR":null,"NAME_CIAWF":"Marshall Islands","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Marshall Islands","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":5,"MAPCOLOR9":5,"MAPCOLOR13":3,"POP_EST":58791,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":221,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"RM","ISO_A2":"MH","ISO_A2_EH":"MH","ISO_A3":"MHL","ISO_A3_EH":"MHL","ISO_N3":"584","ISO_N3_EH":"584","UN_A3":"584","WB_A2":"MH","WB_A3":"MHL","WOE_ID":23424932,"WOE_ID_EH":23424932,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MHL","ADM0_DIFF":null,"ADM0_TLC":"MHL","ADM0_A3_US":"MHL","ADM0_A3_FR":"MHL","ADM0_A3_RU":"MHL","ADM0_A3_ES":"MHL","ADM0_A3_CN":"MHL","ADM0_A3_TW":"MHL","ADM0_A3_IN":"MHL","ADM0_A3_NP":"MHL","ADM0_A3_PK":"MHL","ADM0_A3_DE":"MHL","ADM0_A3_GB":"MHL","ADM0_A3_BR":"MHL","ADM0_A3_IL":"MHL","ADM0_A3_PS":"MHL","ADM0_A3_SA":"MHL","ADM0_A3_EG":"MHL","ADM0_A3_MA":"MHL","ADM0_A3_PT":"MHL","ADM0_A3_AR":"MHL","ADM0_A3_JP":"MHL","ADM0_A3_KO":"MHL","ADM0_A3_VN":"MHL","ADM0_A3_TR":"MHL","ADM0_A3_ID":"MHL","ADM0_A3_PL":"MHL","ADM0_A3_GR":"MHL","ADM0_A3_IT":"MHL","ADM0_A3_NL":"MHL","ADM0_A3_SE":"MHL","ADM0_A3_BD":"MHL","ADM0_A3_UA":"MHL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Micronesia","REGION_WB":"East Asia & Pacific","NAME_LEN":12,"LONG_LEN":16,"ABBREV_LEN":6,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":171.193609,"LABEL_Y":7.082568,"NE_ID":1159321057,"WIKIDATAID":"Q709","NAME_AR":"جزر مارشال","NAME_BN":"মার্শাল দ্বীপপুঞ্জ","NAME_DE":"Marshallinseln","NAME_EN":"Marshall Islands","NAME_ES":"Islas Marshall","NAME_FA":"جزایر مارشال","NAME_FR":"Îles Marshall","NAME_EL":"Νησιά Μάρσαλ","NAME_HE":"איי מרשל","NAME_HI":"मार्शल द्वीपसमूह","NAME_HU":"Marshall-szigetek","NAME_ID":"Kepulauan Marshall","NAME_IT":"Isole Marshall","NAME_JA":"マーシャル諸島","NAME_KO":"마셜 제도","NAME_NL":"Marshalleilanden","NAME_PL":"Wyspy Marshalla","NAME_PT":"Ilhas Marshall","NAME_RU":"Маршалловы Острова","NAME_SV":"Marshallöarna","NAME_TR":"Marshall Adaları","NAME_UK":"Маршаллові Острови","NAME_UR":"جزائر مارشل","NAME_VI":"Quần đảo Marshall","NAME_ZH":"马绍尔群岛","NAME_ZHT":"馬紹爾群島","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[166.844727,5.799805,171.756836,11.168652],"geometry":{"type":"MultiPolygon","coordinates":[[[[169.635059,5.830078],[169.61543,5.799805],[169.590527,5.801904],[169.612207,5.824414],[169.627148,5.855811],[169.651074,5.945117],[169.700391,5.977051],[169.73457,6.01416],[169.726367,5.975684],[169.672559,5.935205],[169.635059,5.830078]]],[[[168.830273,7.308984],[168.81543,7.293555],[168.719238,7.302734],[168.675098,7.321924],[168.679297,7.33623],[168.755469,7.322461],[168.830273,7.308984]]],[[[171.577344,7.048242],[171.614746,7.026611],[171.688379,7.028271],[171.756836,6.973145],[171.730469,6.976611],[171.693359,7.000146],[171.659375,7.010059],[171.61416,7.007178],[171.592773,7.01626],[171.577344,7.048242]]],[[[171.101953,7.138232],[171.226953,7.086963],[171.39375,7.110937],[171.366992,7.095557],[171.304688,7.081152],[171.263281,7.06875],[171.235352,7.06875],[171.202344,7.073535],[171.095508,7.109277],[171.035742,7.156104],[171.050391,7.171777],[171.101953,7.138232]]],[[[166.890332,11.153076],[166.864453,11.14624],[166.844727,11.153369],[166.858887,11.166309],[166.888086,11.168652],[166.899414,11.165039],[166.890332,11.153076]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United States of America","SOV_A3":"US1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Northern Mariana Islands","ADM0_A3":"MNP","GEOU_DIF":0,"GEOUNIT":"Northern Mariana Islands","GU_A3":"MNP","SU_DIF":0,"SUBUNIT":"Northern Mariana Islands","SU_A3":"MNP","BRK_DIFF":0,"NAME":"N. Mariana Is.","NAME_LONG":"Northern Mariana Islands","BRK_A3":"MNP","BRK_NAME":"N. Mariana Is.","BRK_GROUP":null,"ABBREV":"N.M.I.","POSTAL":"MP","FORMAL_EN":"Commonwealth of the Northern Mariana Islands","FORMAL_FR":null,"NAME_CIAWF":"Northern Mariana Islands","NOTE_ADM0":"U.S.A.","NOTE_BRK":null,"NAME_SORT":"Northern Mariana Islands","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":1,"POP_EST":57216,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":1323,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"CQ","ISO_A2":"MP","ISO_A2_EH":"MP","ISO_A3":"MNP","ISO_A3_EH":"MNP","ISO_N3":"580","ISO_N3_EH":"580","UN_A3":"580","WB_A2":"MP","WB_A3":"MNP","WOE_ID":23424788,"WOE_ID_EH":23424788,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MNP","ADM0_DIFF":null,"ADM0_TLC":"MNP","ADM0_A3_US":"MNP","ADM0_A3_FR":"MNP","ADM0_A3_RU":"MNP","ADM0_A3_ES":"MNP","ADM0_A3_CN":"MNP","ADM0_A3_TW":"MNP","ADM0_A3_IN":"MNP","ADM0_A3_NP":"MNP","ADM0_A3_PK":"MNP","ADM0_A3_DE":"MNP","ADM0_A3_GB":"MNP","ADM0_A3_BR":"MNP","ADM0_A3_IL":"MNP","ADM0_A3_PS":"MNP","ADM0_A3_SA":"MNP","ADM0_A3_EG":"MNP","ADM0_A3_MA":"MNP","ADM0_A3_PT":"MNP","ADM0_A3_AR":"MNP","ADM0_A3_JP":"MNP","ADM0_A3_KO":"MNP","ADM0_A3_VN":"MNP","ADM0_A3_TR":"MNP","ADM0_A3_ID":"MNP","ADM0_A3_PL":"MNP","ADM0_A3_GR":"MNP","ADM0_A3_IT":"MNP","ADM0_A3_NL":"MNP","ADM0_A3_SE":"MNP","ADM0_A3_BD":"MNP","ADM0_A3_UA":"MNP","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Micronesia","REGION_WB":"East Asia & Pacific","NAME_LEN":14,"LONG_LEN":24,"ABBREV_LEN":6,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":145.734397,"LABEL_Y":15.188188,"NE_ID":1159321361,"WIKIDATAID":"Q16644","NAME_AR":"جزر ماريانا الشمالية","NAME_BN":"উত্তর মারিয়ানা দ্বীপপুঞ্জ","NAME_DE":"Nördliche Marianen","NAME_EN":"Northern Mariana Islands","NAME_ES":"Islas Marianas del Norte","NAME_FA":"جزایر ماریانای شمالی","NAME_FR":"îles Mariannes du Nord","NAME_EL":"Βόρειες Μαριάνες Νήσοι","NAME_HE":"איי מריאנה הצפוניים","NAME_HI":"उत्तरी मारियाना द्वीप","NAME_HU":"Északi-Mariana-szigetek","NAME_ID":"Kepulauan Mariana Utara","NAME_IT":"Isole Marianne Settentrionali","NAME_JA":"北マリアナ諸島","NAME_KO":"북마리아나 제도","NAME_NL":"Noordelijke Marianen","NAME_PL":"Mariany Północne","NAME_PT":"Ilhas Marianas do Norte","NAME_RU":"Северные Марианские острова","NAME_SV":"Nordmarianerna","NAME_TR":"Kuzey Mariana Adaları","NAME_UK":"Північні Маріанські острови","NAME_UR":"جزائر شمالی ماریانا","NAME_VI":"Quần đảo Bắc Mariana","NAME_ZH":"北马里亚纳群岛","NAME_ZHT":"北馬里亞納群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[145.152148,14.111328,145.835449,18.806787],"geometry":{"type":"MultiPolygon","coordinates":[[[[145.708398,18.7625],[145.678125,18.725244],[145.652539,18.752637],[145.645508,18.806787],[145.690137,18.801611],[145.706641,18.790479],[145.708398,18.7625]]],[[[145.712109,16.339111],[145.690234,16.332129],[145.658301,16.335791],[145.636035,16.351514],[145.631055,16.377979],[145.695508,16.379639],[145.719531,16.359766],[145.712109,16.339111]]],[[[145.264844,14.158105],[145.215332,14.111328],[145.17959,14.120996],[145.157422,14.136914],[145.152148,14.163623],[145.232422,14.189453],[145.26543,14.180225],[145.264844,14.158105]]],[[[145.777539,18.078955],[145.729102,18.056934],[145.789258,18.15542],[145.807422,18.172656],[145.835449,18.136768],[145.777539,18.078955]]],[[[145.751953,15.133154],[145.749219,15.107227],[145.698242,15.113525],[145.684277,15.125098],[145.713184,15.215283],[145.786328,15.256885],[145.821875,15.265381],[145.788574,15.222656],[145.782324,15.174609],[145.751953,15.133154]]],[[[145.662305,14.970508],[145.620996,14.919531],[145.591602,14.998828],[145.586719,15.030811],[145.624805,15.060156],[145.647363,15.059473],[145.662305,14.970508]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United States of America","SOV_A3":"US1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"United States Virgin Islands","ADM0_A3":"VIR","GEOU_DIF":0,"GEOUNIT":"United States Virgin Islands","GU_A3":"VIR","SU_DIF":0,"SUBUNIT":"United States Virgin Islands","SU_A3":"VIR","BRK_DIFF":0,"NAME":"U.S. Virgin Is.","NAME_LONG":"United States Virgin Islands","BRK_A3":"VIR","BRK_NAME":"U.S. Virgin Is.","BRK_GROUP":null,"ABBREV":"V.I. (U.S.)","POSTAL":"VI","FORMAL_EN":"Virgin Islands of the United States","FORMAL_FR":null,"NAME_CIAWF":"Virgin Islands","NOTE_ADM0":"U.S.A.","NOTE_BRK":null,"NAME_SORT":"Virgin Islands (U.S.)","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":1,"POP_EST":106631,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":3855,"GDP_YEAR":2017,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"VQ","ISO_A2":"VI","ISO_A2_EH":"VI","ISO_A3":"VIR","ISO_A3_EH":"VIR","ISO_N3":"850","ISO_N3_EH":"850","UN_A3":"850","WB_A2":"VI","WB_A3":"VIR","WOE_ID":23424985,"WOE_ID_EH":23424985,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"VIR","ADM0_DIFF":null,"ADM0_TLC":"VIR","ADM0_A3_US":"VIR","ADM0_A3_FR":"VIR","ADM0_A3_RU":"VIR","ADM0_A3_ES":"VIR","ADM0_A3_CN":"VIR","ADM0_A3_TW":"VIR","ADM0_A3_IN":"VIR","ADM0_A3_NP":"VIR","ADM0_A3_PK":"VIR","ADM0_A3_DE":"VIR","ADM0_A3_GB":"VIR","ADM0_A3_BR":"VIR","ADM0_A3_IL":"VIR","ADM0_A3_PS":"VIR","ADM0_A3_SA":"VIR","ADM0_A3_EG":"VIR","ADM0_A3_MA":"VIR","ADM0_A3_PT":"VIR","ADM0_A3_AR":"VIR","ADM0_A3_JP":"VIR","ADM0_A3_KO":"VIR","ADM0_A3_VN":"VIR","ADM0_A3_TR":"VIR","ADM0_A3_ID":"VIR","ADM0_A3_PL":"VIR","ADM0_A3_GR":"VIR","ADM0_A3_IT":"VIR","ADM0_A3_NL":"VIR","ADM0_A3_SE":"VIR","ADM0_A3_BD":"VIR","ADM0_A3_UA":"VIR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":15,"LONG_LEN":28,"ABBREV_LEN":11,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-64.779172,"LABEL_Y":17.746706,"NE_ID":1159321371,"WIKIDATAID":"Q11703","NAME_AR":"جزر العذراء الأمريكية","NAME_BN":"মার্কিন ভার্জিন দ্বীপপুঞ্জ","NAME_DE":"Amerikanische Jungferninseln","NAME_EN":"United States Virgin Islands","NAME_ES":"Islas Vírgenes de los Estados Unidos","NAME_FA":"جزایر ویرجین ایالات متحده","NAME_FR":"îles Vierges des États-Unis","NAME_EL":"Αμερικανικές Παρθένοι Νήσοι","NAME_HE":"איי הבתולה של ארצות הברית","NAME_HI":"संयुक्त राज्य वर्जिन द्वीपसमूह","NAME_HU":"Amerikai Virgin-szigetek","NAME_ID":"Kepulauan Virgin Amerika Serikat","NAME_IT":"Isole Vergini americane","NAME_JA":"アメリカ領ヴァージン諸島","NAME_KO":"미국령 버진아일랜드","NAME_NL":"Amerikaanse Maagdeneilanden","NAME_PL":"Wyspy Dziewicze Stanów Zjednoczonych","NAME_PT":"Ilhas Virgens Americanas","NAME_RU":"Американские Виргинские острова","NAME_SV":"Amerikanska Jungfruöarna","NAME_TR":"ABD Virjin Adaları","NAME_UK":"Американські Віргінські Острови","NAME_UR":"امریکی جزائر ورجن","NAME_VI":"Quần đảo Virgin thuộc Mỹ","NAME_ZH":"美属维尔京群岛","NAME_ZHT":"美屬維京群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-65.023633,17.701709,-64.580469,18.385205],"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.84502,18.330078],[-64.919971,18.321289],[-65.023633,18.367578],[-64.942041,18.385205],[-64.889111,18.374219],[-64.84502,18.330078]]],[[[-64.659814,18.354346],[-64.725977,18.327881],[-64.770605,18.331592],[-64.787695,18.341113],[-64.752441,18.371973],[-64.659814,18.354346]]],[[[-64.765625,17.794336],[-64.681836,17.750195],[-64.580469,17.750195],[-64.686279,17.706104],[-64.889111,17.701709],[-64.884717,17.772266],[-64.765625,17.794336]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United States of America","SOV_A3":"US1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Guam","ADM0_A3":"GUM","GEOU_DIF":0,"GEOUNIT":"Guam","GU_A3":"GUM","SU_DIF":0,"SUBUNIT":"Guam","SU_A3":"GUM","BRK_DIFF":0,"NAME":"Guam","NAME_LONG":"Guam","BRK_A3":"GUM","BRK_NAME":"Guam","BRK_GROUP":null,"ABBREV":"Guam","POSTAL":"GU","FORMAL_EN":"Territory of Guam","FORMAL_FR":null,"NAME_CIAWF":"Guam","NOTE_ADM0":"U.S.A.","NOTE_BRK":null,"NAME_SORT":"Guam","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":1,"POP_EST":167294,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":5920,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"GQ","ISO_A2":"GU","ISO_A2_EH":"GU","ISO_A3":"GUM","ISO_A3_EH":"GUM","ISO_N3":"316","ISO_N3_EH":"316","UN_A3":"316","WB_A2":"GU","WB_A3":"GUM","WOE_ID":23424832,"WOE_ID_EH":23424832,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GUM","ADM0_DIFF":null,"ADM0_TLC":"GUM","ADM0_A3_US":"GUM","ADM0_A3_FR":"GUM","ADM0_A3_RU":"GUM","ADM0_A3_ES":"GUM","ADM0_A3_CN":"GUM","ADM0_A3_TW":"GUM","ADM0_A3_IN":"GUM","ADM0_A3_NP":"GUM","ADM0_A3_PK":"GUM","ADM0_A3_DE":"GUM","ADM0_A3_GB":"GUM","ADM0_A3_BR":"GUM","ADM0_A3_IL":"GUM","ADM0_A3_PS":"GUM","ADM0_A3_SA":"GUM","ADM0_A3_EG":"GUM","ADM0_A3_MA":"GUM","ADM0_A3_PT":"GUM","ADM0_A3_AR":"GUM","ADM0_A3_JP":"GUM","ADM0_A3_KO":"GUM","ADM0_A3_VN":"GUM","ADM0_A3_TR":"GUM","ADM0_A3_ID":"GUM","ADM0_A3_PL":"GUM","ADM0_A3_GR":"GUM","ADM0_A3_IT":"GUM","ADM0_A3_NL":"GUM","ADM0_A3_SE":"GUM","ADM0_A3_BD":"GUM","ADM0_A3_UA":"GUM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Micronesia","REGION_WB":"East Asia & Pacific","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":2,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":10,"LABEL_X":144.703614,"LABEL_Y":13.354173,"NE_ID":1159321359,"WIKIDATAID":"Q16635","NAME_AR":"غوام","NAME_BN":"গুয়াম","NAME_DE":"Guam","NAME_EN":"Guam","NAME_ES":"Guam","NAME_FA":"گوآم","NAME_FR":"Guam","NAME_EL":"Γκουάμ","NAME_HE":"גואם","NAME_HI":"गुआम","NAME_HU":"Guam","NAME_ID":"Guam","NAME_IT":"Guam","NAME_JA":"グアム","NAME_KO":"괌","NAME_NL":"Guam","NAME_PL":"Guam","NAME_PT":"Guam","NAME_RU":"Гуам","NAME_SV":"Guam","NAME_TR":"Guam","NAME_UK":"Гуам","NAME_UR":"گوام","NAME_VI":"Guam","NAME_ZH":"关岛","NAME_ZHT":"關島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[144.649316,13.25752,144.94082,13.622363],"geometry":{"type":"Polygon","coordinates":[[[144.741797,13.259277],[144.699512,13.25752],[144.662793,13.291064],[144.65,13.313477],[144.649316,13.428711],[144.790332,13.526855],[144.836719,13.622363],[144.875391,13.614648],[144.909668,13.599023],[144.94082,13.570312],[144.779883,13.411133],[144.741797,13.259277]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"United States of America","SOV_A3":"US1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"American Samoa","ADM0_A3":"ASM","GEOU_DIF":0,"GEOUNIT":"American Samoa","GU_A3":"ASM","SU_DIF":0,"SUBUNIT":"American Samoa","SU_A3":"ASM","BRK_DIFF":0,"NAME":"American Samoa","NAME_LONG":"American Samoa","BRK_A3":"ASM","BRK_NAME":"American Samoa","BRK_GROUP":null,"ABBREV":"Am. Samoa","POSTAL":"AS","FORMAL_EN":"American Samoa","FORMAL_FR":null,"NAME_CIAWF":"American Samoa","NOTE_ADM0":"U.S.A.","NOTE_BRK":null,"NAME_SORT":"American Samoa","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":1,"POP_EST":55312,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":636,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"AQ","ISO_A2":"AS","ISO_A2_EH":"AS","ISO_A3":"ASM","ISO_A3_EH":"ASM","ISO_N3":"016","ISO_N3_EH":"016","UN_A3":"016","WB_A2":"AS","WB_A3":"ASM","WOE_ID":23424746,"WOE_ID_EH":23424746,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ASM","ADM0_DIFF":null,"ADM0_TLC":"ASM","ADM0_A3_US":"ASM","ADM0_A3_FR":"ASM","ADM0_A3_RU":"ASM","ADM0_A3_ES":"ASM","ADM0_A3_CN":"ASM","ADM0_A3_TW":"ASM","ADM0_A3_IN":"ASM","ADM0_A3_NP":"ASM","ADM0_A3_PK":"ASM","ADM0_A3_DE":"ASM","ADM0_A3_GB":"ASM","ADM0_A3_BR":"ASM","ADM0_A3_IL":"ASM","ADM0_A3_PS":"ASM","ADM0_A3_SA":"ASM","ADM0_A3_EG":"ASM","ADM0_A3_MA":"ASM","ADM0_A3_PT":"ASM","ADM0_A3_AR":"ASM","ADM0_A3_JP":"ASM","ADM0_A3_KO":"ASM","ADM0_A3_VN":"ASM","ADM0_A3_TR":"ASM","ADM0_A3_ID":"ASM","ADM0_A3_PL":"ASM","ADM0_A3_GR":"ASM","ADM0_A3_IT":"ASM","ADM0_A3_NL":"ASM","ADM0_A3_SE":"ASM","ADM0_A3_BD":"ASM","ADM0_A3_UA":"ASM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":14,"LONG_LEN":14,"ABBREV_LEN":9,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-170.747153,"LABEL_Y":-14.32671,"NE_ID":1159321357,"WIKIDATAID":"Q16641","NAME_AR":"ساموا الأمريكية","NAME_BN":"মার্কিন সামোয়া","NAME_DE":"Amerikanisch-Samoa","NAME_EN":"American Samoa","NAME_ES":"Samoa Estadounidense","NAME_FA":"ساموآی آمریکا","NAME_FR":"Samoa américaines","NAME_EL":"Αμερικανική Σαμόα","NAME_HE":"סמואה האמריקנית","NAME_HI":"अमेरिकी समोआ","NAME_HU":"Amerikai Szamoa","NAME_ID":"Samoa Amerika","NAME_IT":"Samoa Americane","NAME_JA":"アメリカ領サモア","NAME_KO":"아메리칸사모아","NAME_NL":"Amerikaans-Samoa","NAME_PL":"Samoa Amerykańskie","NAME_PT":"Samoa Americana","NAME_RU":"Американское Самоа","NAME_SV":"Amerikanska Samoa","NAME_TR":"Amerikan Samoası","NAME_UK":"Східне Самоа","NAME_UR":"امریکی سمووا","NAME_VI":"Samoa thuộc Mỹ","NAME_ZH":"美属萨摩亚","NAME_ZHT":"美屬薩摩亞","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-170.820508,-14.359766,-170.568115,-14.257422],"geometry":{"type":"Polygon","coordinates":[[[-170.72627,-14.351172],[-170.769238,-14.359766],[-170.820508,-14.312109],[-170.72085,-14.275977],[-170.68916,-14.257422],[-170.568115,-14.266797],[-170.640479,-14.282227],[-170.72627,-14.351172]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"United States of America","SOV_A3":"US1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Puerto Rico","ADM0_A3":"PRI","GEOU_DIF":0,"GEOUNIT":"Puerto Rico","GU_A3":"PRI","SU_DIF":0,"SUBUNIT":"Puerto Rico","SU_A3":"PRI","BRK_DIFF":0,"NAME":"Puerto Rico","NAME_LONG":"Puerto Rico","BRK_A3":"PRI","BRK_NAME":"Puerto Rico","BRK_GROUP":null,"ABBREV":"P.R.","POSTAL":"PR","FORMAL_EN":"Commonwealth of Puerto Rico","FORMAL_FR":null,"NAME_CIAWF":"Puerto Rico","NOTE_ADM0":"U.S.A.","NOTE_BRK":null,"NAME_SORT":"Puerto Rico","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":1,"POP_EST":3193694,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":104988,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"RQ","ISO_A2":"PR","ISO_A2_EH":"PR","ISO_A3":"PRI","ISO_A3_EH":"PRI","ISO_N3":"630","ISO_N3_EH":"630","UN_A3":"630","WB_A2":"PR","WB_A3":"PRI","WOE_ID":23424935,"WOE_ID_EH":23424935,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PRI","ADM0_DIFF":null,"ADM0_TLC":"PRI","ADM0_A3_US":"PRI","ADM0_A3_FR":"PRI","ADM0_A3_RU":"PRI","ADM0_A3_ES":"PRI","ADM0_A3_CN":"PRI","ADM0_A3_TW":"PRI","ADM0_A3_IN":"PRI","ADM0_A3_NP":"PRI","ADM0_A3_PK":"PRI","ADM0_A3_DE":"PRI","ADM0_A3_GB":"PRI","ADM0_A3_BR":"PRI","ADM0_A3_IL":"PRI","ADM0_A3_PS":"PRI","ADM0_A3_SA":"PRI","ADM0_A3_EG":"PRI","ADM0_A3_MA":"PRI","ADM0_A3_PT":"PRI","ADM0_A3_AR":"PRI","ADM0_A3_JP":"PRI","ADM0_A3_KO":"PRI","ADM0_A3_VN":"PRI","ADM0_A3_TR":"PRI","ADM0_A3_ID":"PRI","ADM0_A3_PL":"PRI","ADM0_A3_GR":"PRI","ADM0_A3_IT":"PRI","ADM0_A3_NL":"PRI","ADM0_A3_SE":"PRI","ADM0_A3_BD":"PRI","ADM0_A3_UA":"PRI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-66.481065,"LABEL_Y":18.234668,"NE_ID":1159321363,"WIKIDATAID":"Q1183","NAME_AR":"بورتوريكو","NAME_BN":"পুয়ের্তো রিকো","NAME_DE":"Puerto Rico","NAME_EN":"Puerto Rico","NAME_ES":"Puerto Rico","NAME_FA":"پورتوریکو","NAME_FR":"Porto Rico","NAME_EL":"Πουέρτο Ρίκο","NAME_HE":"פוארטו ריקו","NAME_HI":"पोर्टो रीको","NAME_HU":"Puerto Rico","NAME_ID":"Puerto Riko","NAME_IT":"Porto Rico","NAME_JA":"プエルトリコ","NAME_KO":"푸에르토리코","NAME_NL":"Puerto Rico","NAME_PL":"Portoryko","NAME_PT":"Porto Rico","NAME_RU":"Пуэрто-Рико","NAME_SV":"Puerto Rico","NAME_TR":"Porto Riko","NAME_UK":"Пуерто-Рико","NAME_UR":"پورٹو ریکو","NAME_VI":"Puerto Rico","NAME_ZH":"波多黎各","NAME_ZHT":"波多黎各","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-67.937061,17.947266,-65.294873,18.522168],"geometry":{"type":"MultiPolygon","coordinates":[[[[-66.129395,18.444922],[-66.098486,18.425195],[-66.068408,18.428027],[-66.092676,18.468994],[-66.07041,18.468994],[-65.87876,18.443848],[-65.755566,18.401611],[-65.628809,18.381396],[-65.62085,18.242334],[-65.718408,18.18667],[-65.782227,18.128613],[-65.834131,18.057324],[-65.970801,17.974365],[-66.135498,17.949463],[-66.24502,17.947266],[-66.285889,17.949951],[-66.325781,17.96416],[-66.408545,17.950586],[-66.510791,17.987012],[-66.598437,17.977881],[-66.772412,17.986572],[-66.837598,17.955078],[-66.9,17.9479],[-66.96123,17.95376],[-67.01333,17.967871],[-67.142383,17.966699],[-67.196875,17.994189],[-67.174316,18.152539],[-67.172461,18.224219],[-67.20415,18.283398],[-67.238965,18.320654],[-67.264062,18.3646],[-67.213379,18.393604],[-67.171777,18.435791],[-67.158643,18.499219],[-67.113037,18.514795],[-67.059619,18.522168],[-66.812891,18.492529],[-66.188574,18.475781],[-66.153076,18.470654],[-66.129395,18.444922]]],[[[-65.425586,18.105615],[-65.504004,18.099512],[-65.555078,18.107666],[-65.572217,18.137305],[-65.477148,18.165039],[-65.366211,18.161084],[-65.302686,18.144385],[-65.294873,18.13335],[-65.425586,18.105615]]],[[[-67.872461,18.059863],[-67.881836,18.058936],[-67.891162,18.059912],[-67.895459,18.062793],[-67.901904,18.071875],[-67.930371,18.086914],[-67.937061,18.100635],[-67.930615,18.115137],[-67.918945,18.120898],[-67.861084,18.122559],[-67.855176,18.121143],[-67.843652,18.111035],[-67.843359,18.103955],[-67.849072,18.097021],[-67.85918,18.07959],[-67.863428,18.075195],[-67.866797,18.070654],[-67.868115,18.062793],[-67.872461,18.059863]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":2,"SOVEREIGNT":"United States of America","SOV_A3":"US1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"United States of America","ADM0_A3":"USA","GEOU_DIF":0,"GEOUNIT":"United States of America","GU_A3":"USA","SU_DIF":0,"SUBUNIT":"United States","SU_A3":"USA","BRK_DIFF":0,"NAME":"United States of America","NAME_LONG":"United States","BRK_A3":"USA","BRK_NAME":"United States","BRK_GROUP":null,"ABBREV":"U.S.A.","POSTAL":"US","FORMAL_EN":"United States of America","FORMAL_FR":null,"NAME_CIAWF":"United States","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"United States of America","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":1,"POP_EST":328239523,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":21433226,"GDP_YEAR":2019,"ECONOMY":"1. Developed region: G7","INCOME_GRP":"1. High income: OECD","FIPS_10":"US","ISO_A2":"US","ISO_A2_EH":"US","ISO_A3":"USA","ISO_A3_EH":"USA","ISO_N3":"840","ISO_N3_EH":"840","UN_A3":"840","WB_A2":"US","WB_A3":"USA","WOE_ID":23424977,"WOE_ID_EH":23424977,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"USA","ADM0_DIFF":null,"ADM0_TLC":"USA","ADM0_A3_US":"USA","ADM0_A3_FR":"USA","ADM0_A3_RU":"USA","ADM0_A3_ES":"USA","ADM0_A3_CN":"USA","ADM0_A3_TW":"USA","ADM0_A3_IN":"USA","ADM0_A3_NP":"USA","ADM0_A3_PK":"USA","ADM0_A3_DE":"USA","ADM0_A3_GB":"USA","ADM0_A3_BR":"USA","ADM0_A3_IL":"USA","ADM0_A3_PS":"USA","ADM0_A3_SA":"USA","ADM0_A3_EG":"USA","ADM0_A3_MA":"USA","ADM0_A3_PT":"USA","ADM0_A3_AR":"USA","ADM0_A3_JP":"USA","ADM0_A3_KO":"USA","ADM0_A3_VN":"USA","ADM0_A3_TR":"USA","ADM0_A3_ID":"USA","ADM0_A3_PL":"USA","ADM0_A3_GR":"USA","ADM0_A3_IT":"USA","ADM0_A3_NL":"USA","ADM0_A3_SE":"USA","ADM0_A3_BD":"USA","ADM0_A3_UA":"USA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Northern America","REGION_WB":"North America","NAME_LEN":24,"LONG_LEN":13,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":5.7,"LABEL_X":-97.482602,"LABEL_Y":39.538479,"NE_ID":1159321369,"WIKIDATAID":"Q30","NAME_AR":"الولايات المتحدة","NAME_BN":"মার্কিন যুক্তরাষ্ট্র","NAME_DE":"Vereinigte Staaten","NAME_EN":"United States of America","NAME_ES":"Estados Unidos","NAME_FA":"ایالات متحده آمریکا","NAME_FR":"États-Unis","NAME_EL":"Ηνωμένες Πολιτείες Αμερικής","NAME_HE":"ארצות הברית","NAME_HI":"संयुक्त राज्य अमेरिका","NAME_HU":"Amerikai Egyesült Államok","NAME_ID":"Amerika Serikat","NAME_IT":"Stati Uniti d'America","NAME_JA":"アメリカ合衆国","NAME_KO":"미국","NAME_NL":"Verenigde Staten van Amerika","NAME_PL":"Stany Zjednoczone","NAME_PT":"Estados Unidos","NAME_RU":"США","NAME_SV":"USA","NAME_TR":"Amerika Birleşik Devletleri","NAME_UK":"Сполучені Штати Америки","NAME_UR":"ریاستہائے متحدہ امریکا","NAME_VI":"Hoa Kỳ","NAME_ZH":"美国","NAME_ZHT":"美國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-178.194531,18.963916,179.77998,71.407666],"geometry":{"type":"MultiPolygon","coordinates":[[[[-132.746875,56.525684],[-132.757617,56.511035],[-132.884717,56.512451],[-132.930811,56.524463],[-132.948047,56.567236],[-132.93623,56.606836],[-132.906543,56.637402],[-132.870654,56.696387],[-132.842529,56.794775],[-132.655859,56.684717],[-132.598682,56.635742],[-132.567969,56.57583],[-132.634229,56.553467],[-132.714453,56.542529],[-132.746875,56.525684]]],[[[-132.779883,56.247266],[-132.830957,56.244141],[-132.891455,56.259424],[-133.03501,56.340918],[-133.037646,56.364844],[-133.01709,56.391992],[-132.935498,56.441797],[-132.902051,56.45376],[-132.706055,56.448486],[-132.643359,56.435156],[-132.629102,56.411914],[-132.632275,56.388281],[-132.652832,56.364355],[-132.657568,56.339307],[-132.646582,56.313184],[-132.669385,56.287305],[-132.779883,56.247266]]],[[[-134.312744,58.228906],[-134.319873,58.204102],[-134.45625,58.206543],[-134.593994,58.243115],[-134.661572,58.290918],[-134.647998,58.312402],[-134.519971,58.33252],[-134.398877,58.287207],[-134.312744,58.228906]]],[[[-145.118506,60.337109],[-145.150488,60.312646],[-145.237646,60.321338],[-145.284277,60.336816],[-145.128125,60.401123],[-145.102441,60.388232],[-145.118506,60.337109]]],[[[-144.565625,59.818408],[-144.613574,59.812646],[-144.541553,59.878223],[-144.444922,59.950684],[-144.353955,59.996191],[-144.235742,60.015186],[-144.248975,59.982129],[-144.403223,59.921094],[-144.565625,59.818408]]],[[[-148.021777,60.065332],[-148.07417,60.034717],[-148.271875,60.053271],[-148.230664,60.113525],[-148.07959,60.15166],[-147.914209,60.092334],[-148.021777,60.065332]]],[[[-152.020752,60.361719],[-152.069043,60.358057],[-152.004492,60.407422],[-151.959717,60.50376],[-151.899414,60.490381],[-151.887305,60.472705],[-151.986914,60.373975],[-152.020752,60.361719]]],[[[-160.329297,55.337695],[-160.343311,55.258789],[-160.480762,55.308984],[-160.51748,55.333838],[-160.49292,55.352344],[-160.362305,55.356982],[-160.329297,55.337695]]],[[[-159.362012,54.972412],[-159.394482,54.967334],[-159.421338,54.978125],[-159.458496,55.034961],[-159.461914,55.058789],[-159.39043,55.040869],[-159.363184,54.999512],[-159.362012,54.972412]]],[[[-159.515137,55.151855],[-159.52041,55.072168],[-159.534961,55.059619],[-159.561475,55.080908],[-159.617725,55.057324],[-159.648486,55.074561],[-159.6354,55.102344],[-159.639648,55.123975],[-159.597949,55.125684],[-159.588037,55.165332],[-159.595264,55.182031],[-159.574756,55.217725],[-159.545068,55.225977],[-159.515137,55.151855]]],[[[-166.209766,53.723291],[-166.223828,53.72041],[-166.249414,53.745166],[-166.250732,53.767773],[-166.234375,53.78418],[-166.187744,53.822461],[-166.154541,53.836133],[-166.113721,53.843066],[-166.102686,53.832812],[-166.138623,53.787402],[-166.18374,53.756885],[-166.209766,53.723291]]],[[[-176.008984,51.812354],[-176.093359,51.790479],[-176.204443,51.834814],[-176.193652,51.886279],[-176.071631,51.843311],[-176.008984,51.812354]]],[[[-166.109863,66.227441],[-166.148633,66.221826],[-166.146484,66.237158],[-166.03252,66.277734],[-165.822217,66.328076],[-165.829883,66.317139],[-165.942285,66.278174],[-166.109863,66.227441]]],[[[-171.463037,63.640039],[-171.447852,63.615674],[-171.343359,63.619629],[-171.196924,63.609131],[-171.034863,63.585498],[-170.874609,63.593994],[-170.67251,63.668848],[-170.551855,63.688477],[-170.43042,63.698828],[-170.299365,63.680615],[-170.171289,63.640918],[-170.121826,63.617529],[-170.082422,63.57666],[-170.056299,63.527197],[-170.017383,63.491748],[-169.777441,63.447998],[-169.624121,63.430566],[-169.587207,63.406592],[-169.554541,63.373486],[-169.427588,63.34834],[-169.295068,63.35752],[-169.221094,63.348584],[-168.996045,63.347314],[-168.716016,63.310596],[-168.761328,63.21377],[-168.852393,63.17124],[-169.109033,63.184912],[-169.364697,63.171143],[-169.47085,63.121289],[-169.559277,63.058203],[-169.571289,62.996777],[-169.622852,62.968555],[-169.676367,62.956104],[-169.719824,62.990088],[-169.777783,63.09375],[-169.818604,63.122363],[-169.863428,63.140381],[-169.988477,63.173145],[-170.115381,63.193848],[-170.1896,63.196338],[-170.243115,63.232275],[-170.272705,63.284277],[-170.323535,63.311133],[-170.42417,63.349268],[-170.5271,63.379297],[-170.848389,63.444385],[-170.954053,63.45293],[-171.06123,63.445898],[-171.176025,63.416211],[-171.287305,63.372168],[-171.401172,63.339258],[-171.519141,63.331982],[-171.631836,63.351221],[-171.737842,63.394238],[-171.790967,63.424707],[-171.819385,63.477246],[-171.81792,63.529834],[-171.803516,63.580518],[-171.746387,63.703076],[-171.646484,63.727002],[-171.463037,63.640039]]],[[[-166.135449,60.383545],[-166.043652,60.333936],[-165.994922,60.331152],[-165.840918,60.34624],[-165.784473,60.335596],[-165.729688,60.314209],[-165.695801,60.281543],[-165.689355,60.224121],[-165.714404,60.172852],[-165.706934,60.100586],[-165.712354,60.069336],[-165.630566,60.028369],[-165.605029,59.972803],[-165.591797,59.913135],[-165.769287,59.893213],[-165.946729,59.890039],[-166.099854,59.849609],[-166.131201,59.819775],[-166.106689,59.775439],[-166.14873,59.764111],[-166.187549,59.773828],[-166.261621,59.814893],[-166.342969,59.834424],[-166.627637,59.864648],[-166.985059,59.983887],[-167.138867,60.008545],[-167.295117,60.095703],[-167.436426,60.206641],[-167.344336,60.224463],[-167.251709,60.233545],[-166.836328,60.216992],[-166.784375,60.296436],[-166.730957,60.31626],[-166.598975,60.33877],[-166.475684,60.382764],[-166.420361,60.381689],[-166.363867,60.364746],[-166.246973,60.391162],[-166.184961,60.396777],[-166.135449,60.383545]]],[[[-152.898047,57.823926],[-152.89082,57.768994],[-152.850146,57.775684],[-152.69624,57.832275],[-152.616016,57.848877],[-152.511572,57.851465],[-152.42876,57.825684],[-152.411914,57.805908],[-152.419141,57.782324],[-152.4854,57.734424],[-152.482617,57.70332],[-152.411475,57.646094],[-152.236523,57.614893],[-152.215283,57.597705],[-152.216211,57.577002],[-152.33667,57.482227],[-152.380859,57.460107],[-152.412207,57.454785],[-152.630957,57.471826],[-152.831152,57.502881],[-152.912158,57.508154],[-152.940771,57.498096],[-152.997461,57.468945],[-152.956836,57.460352],[-152.781348,57.453418],[-152.719531,57.41084],[-152.692529,57.37959],[-152.679053,57.345117],[-152.714063,57.330957],[-152.789111,57.320654],[-152.879053,57.320801],[-152.990283,57.281982],[-153.051611,57.237646],[-153.274365,57.226367],[-153.443701,57.167187],[-153.503564,57.137988],[-153.524414,57.103076],[-153.588281,57.077686],[-153.732568,57.052344],[-153.646533,57.02959],[-153.633057,57.010352],[-153.631445,56.983691],[-153.643311,56.960742],[-153.757227,56.85835],[-153.972705,56.774219],[-154.027344,56.777979],[-154.050781,56.788477],[-154.07002,56.804541],[-154.07085,56.820654],[-153.793213,56.989502],[-153.804199,56.997803],[-153.879736,57.003516],[-153.999365,57.049951],[-154.083789,57.020068],[-154.102979,57.02124],[-154.080469,57.061035],[-154.025439,57.108496],[-154.035059,57.121826],[-154.065332,57.133691],[-154.134863,57.140771],[-154.24375,57.143018],[-154.324414,57.131787],[-154.376807,57.107031],[-154.381104,57.096533],[-154.269531,57.099463],[-154.239209,57.086865],[-154.209131,57.06333],[-154.19082,57.036133],[-154.184326,57.005322],[-154.207715,56.963818],[-154.260938,56.911768],[-154.338965,56.920898],[-154.498779,57.036572],[-154.569336,57.205908],[-154.705957,57.335352],[-154.712207,57.36626],[-154.673193,57.446094],[-154.535303,57.559424],[-154.387061,57.590479],[-154.281445,57.638086],[-154.179346,57.652441],[-154.116162,57.651221],[-154.029834,57.630713],[-153.99502,57.587305],[-154.015869,57.566895],[-154.00791,57.556152],[-153.947363,57.530078],[-153.881885,57.439014],[-153.80542,57.358203],[-153.75459,57.325342],[-153.687695,57.305127],[-153.756934,57.366846],[-153.797803,57.443262],[-153.818359,57.595605],[-153.838135,57.63584],[-153.799463,57.64668],[-153.690137,57.640723],[-153.693164,57.663428],[-153.808496,57.714746],[-153.879443,57.757178],[-153.906104,57.790771],[-153.904443,57.819873],[-153.841553,57.862842],[-153.805811,57.875098],[-153.768994,57.880371],[-153.695605,57.87124],[-153.662646,57.857813],[-153.568555,57.761084],[-153.524463,57.731006],[-153.487939,57.730957],[-153.454053,57.747021],[-153.422705,57.77915],[-153.39043,57.798389],[-153.357129,57.804688],[-153.252393,57.790479],[-153.21748,57.795752],[-153.200293,57.82002],[-153.201025,57.863281],[-153.175195,57.878857],[-153.168848,57.910645],[-153.225928,57.957617],[-153.160449,57.971973],[-152.943262,57.936035],[-152.850391,57.896777],[-152.898047,57.823926]]],[[[-130.025098,55.888232],[-130.074658,55.836035],[-130.111963,55.779785],[-130.137061,55.719385],[-130.146533,55.654492],[-130.14043,55.58501],[-130.12041,55.524414],[-130.059473,55.412305],[-130.039258,55.343604],[-130.036572,55.2979],[-130.171826,55.137012],[-130.218506,55.060254],[-130.214063,55.025879],[-130.312549,54.945947],[-130.493262,54.83418],[-130.575342,54.769678],[-130.61582,54.790918],[-130.849609,54.807617],[-130.934619,54.950391],[-130.979688,55.061182],[-131.047852,55.157666],[-131.045898,55.17959],[-130.983936,55.243945],[-130.750391,55.296973],[-130.748193,55.318018],[-130.835059,55.33208],[-130.855957,55.355127],[-130.879785,55.459521],[-130.873389,55.551123],[-130.879639,55.611816],[-130.918555,55.735986],[-130.977002,55.811963],[-131.127686,55.960156],[-131.140381,55.99751],[-131.074023,56.044385],[-131.032764,56.088086],[-131.287598,56.012109],[-131.635254,55.932227],[-131.78418,55.876562],[-131.815479,55.854199],[-131.826172,55.835352],[-131.799072,55.782812],[-131.803271,55.765967],[-131.833594,55.734912],[-131.869434,55.647168],[-131.94502,55.55415],[-131.983398,55.53501],[-132.118994,55.569775],[-132.15542,55.599561],[-132.223437,55.721045],[-132.20752,55.753418],[-132.157959,55.780664],[-132.090674,55.839551],[-132.005713,55.930078],[-131.843848,56.160107],[-131.738037,56.16123],[-131.551367,56.206787],[-131.844238,56.229639],[-131.887891,56.24165],[-131.927295,56.272998],[-131.962305,56.323682],[-132.021924,56.380078],[-132.133252,56.399854],[-132.182031,56.420654],[-132.255566,56.489111],[-132.30498,56.519873],[-132.332031,56.55791],[-132.33667,56.603125],[-132.357666,56.625879],[-132.434424,56.634131],[-132.475928,56.649658],[-132.487109,56.766406],[-132.639502,56.796436],[-132.701953,56.822266],[-132.802197,56.895166],[-132.829883,56.930615],[-132.838818,56.960205],[-132.814258,57.040723],[-132.824609,57.055811],[-132.913428,57.047461],[-133.465869,57.172168],[-133.43667,57.336865],[-133.538965,57.55415],[-133.64873,57.642285],[-133.626953,57.676514],[-133.603369,57.694678],[-133.554199,57.695068],[-133.342334,57.631104],[-133.142822,57.555127],[-133.117041,57.566211],[-133.435742,57.727051],[-133.515479,57.775146],[-133.535205,57.832959],[-133.536426,57.863867],[-133.511133,57.880127],[-133.212061,57.865674],[-133.194336,57.877686],[-133.497412,57.924658],[-133.559375,57.924463],[-133.625732,57.856982],[-133.657275,57.841016],[-133.722314,57.844238],[-133.744141,57.85459],[-133.821387,57.936377],[-133.894482,57.993262],[-134.031104,58.072168],[-134.056738,58.128369],[-134.06333,58.211084],[-134.045264,58.289258],[-133.933643,58.467871],[-133.888525,58.49873],[-133.876758,58.518164],[-133.911133,58.515234],[-133.943848,58.498291],[-134.036133,58.415332],[-134.131201,58.279346],[-134.208838,58.232959],[-134.257617,58.244189],[-134.331445,58.299609],[-134.485449,58.367188],[-134.663623,58.384717],[-134.776123,58.453857],[-134.942529,58.646289],[-134.964795,58.742188],[-134.986133,58.765625],[-135.076465,58.796777],[-135.131836,58.842871],[-135.217383,59.076611],[-135.330322,59.239063],[-135.358447,59.324902],[-135.348926,59.410059],[-135.363672,59.419434],[-135.402539,59.353076],[-135.412744,59.318457],[-135.484082,59.308691],[-135.416943,59.241504],[-135.400146,59.20791],[-135.43374,59.210693],[-135.502344,59.202295],[-135.386133,59.087549],[-135.334082,58.909619],[-135.257031,58.777734],[-135.20708,58.670898],[-135.18457,58.589746],[-135.151904,58.512207],[-135.062012,58.340869],[-135.049707,58.306787],[-135.060498,58.278906],[-135.090234,58.24585],[-135.141553,58.233398],[-135.302539,58.255908],[-135.363135,58.298291],[-135.449951,58.376123],[-135.571777,58.412061],[-135.873437,58.394238],[-135.897559,58.400195],[-135.896338,58.463818],[-135.861719,58.577051],[-135.889551,58.622705],[-136.045508,58.789111],[-136.043115,58.821631],[-135.826367,58.897949],[-135.931689,58.90376],[-136.016602,58.873975],[-136.049365,58.893213],[-136.100635,58.999854],[-136.133691,59.039551],[-136.150049,59.048096],[-136.159473,58.946777],[-136.123535,58.893457],[-136.118408,58.862598],[-136.12417,58.819629],[-136.146826,58.788818],[-136.186328,58.770166],[-136.22583,58.765479],[-136.299023,58.786914],[-136.380273,58.827295],[-136.451172,58.846338],[-136.477588,58.8625],[-136.511182,58.90708],[-136.566211,58.940918],[-136.830957,58.983838],[-136.989014,59.034473],[-137.002148,59.021143],[-136.952832,58.966943],[-136.948047,58.934912],[-136.987891,58.925146],[-137.059033,58.87373],[-137.038379,58.86665],[-136.963037,58.883545],[-136.879102,58.881543],[-136.740137,58.850195],[-136.613916,58.809277],[-136.568213,58.786328],[-136.549316,58.752393],[-136.533496,58.740234],[-136.410107,58.700635],[-136.404199,58.679785],[-136.48374,58.617676],[-136.319873,58.624463],[-136.224609,58.602246],[-136.102881,58.506299],[-136.061475,58.452734],[-136.055957,58.38418],[-136.08125,58.364209],[-136.129639,58.350391],[-136.462402,58.327979],[-136.582617,58.245215],[-136.607422,58.243994],[-136.698926,58.266455],[-136.86499,58.332422],[-137.071924,58.395215],[-137.543994,58.581201],[-137.556934,58.589941],[-137.5646,58.625879],[-137.59707,58.644238],[-137.661084,58.659912],[-137.75,58.70708],[-137.863721,58.785547],[-137.933984,58.846875],[-137.960889,58.891016],[-138.026904,58.941455],[-138.240723,59.046826],[-138.35249,59.087305],[-138.451318,59.110107],[-138.537158,59.115088],[-138.560303,59.12915],[-138.520703,59.152246],[-138.514893,59.165918],[-138.704199,59.187549],[-138.884326,59.236914],[-139.340967,59.375635],[-139.576807,59.462451],[-139.714453,59.503955],[-139.773291,59.527295],[-139.799121,59.54624],[-139.766064,59.566064],[-139.674121,59.586816],[-139.611621,59.610303],[-139.513037,59.698096],[-139.505566,59.726318],[-139.558496,59.790186],[-139.582178,59.848291],[-139.581152,59.880518],[-139.569141,59.912354],[-139.554102,59.933301],[-139.512305,59.953564],[-139.483008,59.96377],[-139.446875,59.956836],[-139.330957,59.877002],[-139.314648,59.847949],[-139.32002,59.738721],[-139.286719,59.610937],[-139.27627,59.620361],[-139.265625,59.662598],[-139.25874,59.743311],[-139.245703,59.78208],[-139.220801,59.819873],[-139.178857,59.839844],[-139.048291,59.828223],[-138.988086,59.83501],[-139.24248,59.892773],[-139.40249,60.000977],[-139.431445,60.012256],[-139.518945,60.01709],[-139.61167,59.973438],[-139.850195,59.830713],[-139.916895,59.805664],[-140.216748,59.72666],[-140.419824,59.710742],[-140.648389,59.723193],[-140.843164,59.748877],[-141.331934,59.873779],[-141.408301,59.902783],[-141.294629,59.980029],[-141.289941,60.00415],[-141.329541,60.082813],[-141.362158,60.105273],[-141.40874,60.117676],[-141.42168,60.108838],[-141.422168,60.085498],[-141.409717,60.042285],[-141.44707,60.019434],[-141.530176,59.994775],[-141.670166,59.969873],[-142.104102,60.033447],[-142.548584,60.086035],[-142.945654,60.096973],[-143.506104,60.055029],[-143.805078,60.012891],[-143.979492,60.008789],[-144.147217,60.016406],[-144.160937,60.045801],[-144.084277,60.063037],[-144.088525,60.084326],[-144.185498,60.150732],[-144.332617,60.191016],[-144.52998,60.205225],[-144.642969,60.224658],[-144.671582,60.249219],[-144.741406,60.272705],[-144.852441,60.295068],[-144.901318,60.335156],[-144.862451,60.45918],[-144.824414,60.533594],[-144.786572,60.584619],[-144.691113,60.669092],[-144.724414,60.662842],[-144.863086,60.600879],[-144.984033,60.536914],[-145.095996,60.453662],[-145.162695,60.415381],[-145.248291,60.380127],[-145.381787,60.388574],[-145.563135,60.440723],[-145.718457,60.467578],[-145.847754,60.469238],[-145.898877,60.478174],[-145.810645,60.524658],[-145.759814,60.562012],[-145.690234,60.621973],[-145.674902,60.651123],[-146.149023,60.660693],[-146.166406,60.692285],[-146.16709,60.715527],[-146.182324,60.734766],[-146.251025,60.749072],[-146.347168,60.738135],[-146.502979,60.700781],[-146.570459,60.72915],[-146.546387,60.745117],[-146.495508,60.756787],[-146.391992,60.81084],[-146.531934,60.838867],[-146.603564,60.870947],[-146.638428,60.897314],[-146.636035,60.992529],[-146.599121,61.053516],[-146.284912,61.112646],[-146.384375,61.13584],[-146.582715,61.127832],[-146.715918,61.077539],[-146.874023,61.004883],[-146.980176,60.977783],[-147.034326,60.996191],[-147.105957,61.002539],[-147.19502,60.996826],[-147.254883,60.978271],[-147.285596,60.946777],[-147.321094,60.925488],[-147.361377,60.914502],[-147.390576,60.918018],[-147.433398,60.950293],[-147.523291,60.970312],[-147.567285,60.994922],[-147.592578,60.979443],[-147.623291,60.933008],[-147.655664,60.909521],[-147.807617,60.8854],[-147.891113,60.889893],[-147.990771,60.948291],[-148.005127,60.968555],[-147.971191,61.019043],[-147.751855,61.218945],[-147.773779,61.217822],[-147.844824,61.186377],[-147.986377,61.106494],[-148.049414,61.082666],[-148.15791,61.079687],[-148.208691,61.088281],[-148.27002,61.081787],[-148.341895,61.0604],[-148.38877,61.036963],[-148.410742,61.011475],[-148.39585,61.007129],[-148.287402,61.03623],[-148.225879,61.044043],[-148.208691,61.029932],[-148.293164,60.939697],[-148.344434,60.853564],[-148.393311,60.831885],[-148.471045,60.835498],[-148.556152,60.827002],[-148.557373,60.80293],[-148.398682,60.734033],[-148.34126,60.724316],[-148.267871,60.699707],[-148.256738,60.675293],[-148.284229,60.609326],[-148.30498,60.58335],[-148.338428,60.569824],[-148.467773,60.57207],[-148.50957,60.565234],[-148.596631,60.523779],[-148.640137,60.489453],[-148.624268,60.486426],[-148.549121,60.514795],[-148.439844,60.52998],[-148.296387,60.53208],[-148.189453,60.547119],[-148.119189,60.575146],[-148.050684,60.567188],[-147.984033,60.52334],[-147.964111,60.484863],[-147.990967,60.451855],[-148.045996,60.42832],[-148.129199,60.414209],[-148.181689,60.393066],[-148.203564,60.364941],[-148.215869,60.323145],[-148.218652,60.267676],[-148.197607,60.167773],[-148.21377,60.154248],[-148.24502,60.146826],[-148.291357,60.145459],[-148.333105,60.122021],[-148.430713,59.989111],[-148.465088,59.974707],[-148.506055,59.988965],[-148.542383,59.987402],[-148.574072,59.970068],[-148.643604,59.956836],[-148.750879,59.947754],[-148.842725,59.951221],[-149.004248,59.97998],[-149.070117,60.000244],[-149.121582,60.033496],[-149.266602,59.998291],[-149.304932,60.013672],[-149.395264,60.105762],[-149.414844,60.100244],[-149.432227,60.001025],[-149.459717,59.96626],[-149.54917,59.894336],[-149.598047,59.770459],[-149.612891,59.766846],[-149.629639,59.784668],[-149.684668,59.895313],[-149.713867,59.91958],[-149.794775,59.855811],[-149.803662,59.832715],[-149.782471,59.750342],[-149.80127,59.737939],[-149.96499,59.782275],[-150.005322,59.784424],[-150.015967,59.776953],[-149.960156,59.713037],[-149.966504,59.690039],[-150.198047,59.566553],[-150.258496,59.570947],[-150.296484,59.583252],[-150.338135,59.581348],[-150.485352,59.535303],[-150.525977,59.537305],[-150.581543,59.5646],[-150.607373,59.563379],[-150.621143,59.535059],[-150.6229,59.479639],[-150.677441,59.426953],[-150.852783,59.341846],[-150.899316,59.302686],[-150.934521,59.249121],[-150.960742,59.243994],[-151.063574,59.278418],[-151.182764,59.300781],[-151.199219,59.289648],[-151.163037,59.256934],[-151.170703,59.236914],[-151.222266,59.229395],[-151.2875,59.232324],[-151.366357,59.245605],[-151.477002,59.230566],[-151.619385,59.187305],[-151.738184,59.188525],[-151.903857,59.259766],[-151.949512,59.265088],[-151.964063,59.285107],[-151.931689,59.342725],[-151.884619,59.386328],[-151.849951,59.406348],[-151.692578,59.462207],[-151.512695,59.482715],[-151.399609,59.516309],[-151.262109,59.585596],[-151.189404,59.637695],[-151.046484,59.771826],[-151.057324,59.782178],[-151.089453,59.789404],[-151.403662,59.662256],[-151.450098,59.650391],[-151.512598,59.65127],[-151.763818,59.7],[-151.816943,59.720898],[-151.853223,59.78208],[-151.783447,59.921143],[-151.734521,59.98833],[-151.611865,60.092041],[-151.451465,60.202637],[-151.395996,60.274463],[-151.312695,60.466455],[-151.317529,60.553564],[-151.355029,60.659863],[-151.356445,60.722949],[-151.321777,60.74292],[-150.95376,60.841211],[-150.779492,60.914795],[-150.44126,61.023584],[-150.349121,61.022656],[-150.281494,60.985205],[-150.202783,60.955225],[-150.113037,60.932812],[-149.997559,60.935156],[-149.85625,60.962256],[-149.632471,60.952002],[-149.172852,60.88042],[-149.075098,60.876416],[-149.071289,60.885547],[-149.142236,60.935693],[-149.459131,60.964746],[-149.59248,60.993848],[-149.967725,61.121729],[-150.053271,61.171094],[-150.018555,61.194238],[-149.926758,61.213281],[-149.895312,61.231738],[-149.882031,61.263721],[-149.829199,61.30752],[-149.736914,61.36333],[-149.595996,61.417285],[-149.329053,61.497363],[-149.433545,61.500781],[-149.625439,61.486035],[-149.695264,61.470703],[-149.82373,61.413379],[-149.873682,61.372998],[-149.945215,61.294238],[-149.975684,61.279346],[-150.108936,61.26792],[-150.471777,61.259961],[-150.533203,61.300244],[-150.567236,61.306787],[-150.612256,61.301123],[-150.945508,61.198242],[-151.06499,61.145703],[-151.150146,61.08584],[-151.281885,61.041943],[-151.460107,61.014111],[-151.593506,60.979639],[-151.733984,60.910742],[-151.781641,60.857959],[-151.784424,60.833154],[-151.750488,60.754883],[-151.785107,60.740234],[-151.866162,60.734082],[-151.99624,60.682227],[-152.270703,60.528125],[-152.306592,60.472217],[-152.305078,60.453027],[-152.260303,60.409424],[-152.291504,60.381104],[-152.368848,60.336328],[-152.540918,60.26543],[-152.653955,60.238428],[-152.727295,60.237061],[-152.7979,60.247168],[-152.923389,60.292871],[-153.025,60.295654],[-153.03125,60.289258],[-152.89292,60.240381],[-152.752393,60.17749],[-152.664746,60.125293],[-152.630127,60.083789],[-152.628564,60.041113],[-152.660107,59.997217],[-152.759473,59.920898],[-152.856934,59.898096],[-153.106055,59.875049],[-153.186377,59.856885],[-153.21123,59.842725],[-153.040088,59.810498],[-153.024609,59.793994],[-153.048145,59.730029],[-153.093604,59.709131],[-153.236182,59.670947],[-153.364014,59.659863],[-153.383496,59.667187],[-153.359619,59.71748],[-153.366455,59.729834],[-153.414404,59.740137],[-153.482617,59.720947],[-153.652539,59.647021],[-153.670703,59.634814],[-153.609375,59.615039],[-153.622266,59.598486],[-153.714355,59.545264],[-153.752588,59.509863],[-153.81416,59.47373],[-154.08833,59.363281],[-154.06748,59.336377],[-154.138818,59.240137],[-154.17832,59.155566],[-154.129834,59.119873],[-153.899561,59.078027],[-153.787939,59.06792],[-153.656396,59.038672],[-153.418262,58.959961],[-153.338965,58.908545],[-153.327051,58.884326],[-153.334424,58.857861],[-153.362939,58.822217],[-153.437598,58.754834],[-153.617334,58.654736],[-153.698584,58.626367],[-153.821484,58.604102],[-153.861963,58.587842],[-154.019873,58.492969],[-154.062451,58.441748],[-154.055713,58.397168],[-154.085889,58.36582],[-154.289014,58.304346],[-154.281787,58.293457],[-154.208057,58.28877],[-154.235107,58.234619],[-154.247021,58.159424],[-154.282275,58.146777],[-154.409229,58.147314],[-154.570605,58.118066],[-154.581934,58.109766],[-154.584912,58.055664],[-155.006885,58.016064],[-155.099268,57.91333],[-155.147363,57.881836],[-155.312744,57.807129],[-155.413965,57.777051],[-155.529639,57.758887],[-155.590234,57.733594],[-155.59585,57.701074],[-155.628711,57.673047],[-155.728955,57.626611],[-155.777979,57.568213],[-155.813672,57.559033],[-156.000195,57.544971],[-156.037354,57.526514],[-156.055371,57.447559],[-156.089893,57.445068],[-156.156006,57.463428],[-156.242188,57.449219],[-156.435889,57.359961],[-156.478418,57.327881],[-156.473682,57.310693],[-156.443555,57.293652],[-156.397656,57.240576],[-156.400488,57.204834],[-156.475146,57.105176],[-156.501318,57.089795],[-156.592041,57.065088],[-156.629004,57.009961],[-156.712646,57.016064],[-156.779883,57.005615],[-156.823877,56.968848],[-156.871729,56.947656],[-156.923438,56.94209],[-156.988428,56.912939],[-157.066699,56.860205],[-157.13916,56.826563],[-157.205762,56.812061],[-157.270557,56.808496],[-157.333594,56.815869],[-157.390234,56.809814],[-157.440576,56.790332],[-157.489648,56.759766],[-157.528711,56.673193],[-157.578369,56.634473],[-157.609766,56.627686],[-157.673877,56.633447],[-157.770703,56.65166],[-157.869092,56.645215],[-158.027881,56.592139],[-158.07832,56.552051],[-157.978271,56.543164],[-157.928711,56.531689],[-157.92998,56.520459],[-157.982178,56.50957],[-158.070947,56.510352],[-158.124365,56.501025],[-158.189404,56.478174],[-158.35249,56.453516],[-158.414404,56.43584],[-158.537402,56.335449],[-158.552148,56.312695],[-158.536377,56.307666],[-158.467334,56.318262],[-158.386133,56.301562],[-158.343994,56.280322],[-158.316992,56.25415],[-158.291406,56.203662],[-158.275635,56.19624],[-158.431836,56.111475],[-158.476123,56.075488],[-158.504687,56.062109],[-158.52334,56.072461],[-158.542676,56.166846],[-158.554443,56.182861],[-158.591162,56.184521],[-158.626758,56.154688],[-158.704883,56.043115],[-158.789844,55.986914],[-159.429443,55.842725],[-159.523242,55.81001],[-159.541309,55.748486],[-159.567627,55.695215],[-159.610059,55.652783],[-159.659668,55.625928],[-159.670264,55.64502],[-159.665332,55.794873],[-159.678516,55.824658],[-159.743018,55.84375],[-159.771387,55.841113],[-159.8104,55.832715],[-159.874365,55.800293],[-159.913525,55.792187],[-159.962305,55.794873],[-160.045654,55.762939],[-160.243799,55.660547],[-160.373193,55.635107],[-160.407422,55.613818],[-160.462695,55.557812],[-160.499316,55.537305],[-160.553516,55.535498],[-160.625244,55.552393],[-160.68291,55.54043],[-160.726514,55.499658],[-160.77085,55.483545],[-160.896729,55.513623],[-160.952197,55.493066],[-161.024219,55.44043],[-161.099512,55.405713],[-161.178027,55.388867],[-161.381934,55.371289],[-161.463867,55.38252],[-161.480518,55.397803],[-161.476709,55.464893],[-161.443799,55.513281],[-161.41333,55.536133],[-161.372705,55.556299],[-161.313281,55.558643],[-161.2021,55.543555],[-161.214697,55.559766],[-161.255127,55.579004],[-161.357471,55.612207],[-161.458789,55.62915],[-161.516943,55.618408],[-161.598779,55.592822],[-161.654297,55.563379],[-161.683545,55.529932],[-161.720361,55.420703],[-161.741553,55.391162],[-161.980322,55.198633],[-162.073975,55.139307],[-162.166602,55.14375],[-162.211475,55.121338],[-162.274658,55.073242],[-162.33291,55.050244],[-162.386377,55.052344],[-162.42793,55.061475],[-162.457471,55.077686],[-162.452393,55.092822],[-162.412549,55.106885],[-162.426807,55.14541],[-162.495264,55.208447],[-162.541895,55.242725],[-162.630371,55.24668],[-162.644141,55.218018],[-162.614307,55.071484],[-162.618896,55.038428],[-162.674365,54.996582],[-162.81958,54.95],[-162.865039,54.954541],[-162.995898,55.046484],[-163.119629,55.064697],[-163.127832,55.034766],[-163.100195,54.973633],[-163.131104,54.916553],[-163.220557,54.863379],[-163.288623,54.837598],[-163.335303,54.83916],[-163.337891,54.876367],[-163.296338,54.949268],[-163.285693,55.009961],[-163.305957,55.058545],[-163.303662,55.09585],[-163.278809,55.121826],[-163.114502,55.193945],[-163.045361,55.204736],[-163.008252,55.186865],[-162.961963,55.183838],[-162.906592,55.195557],[-162.871582,55.218604],[-162.857129,55.253027],[-162.78623,55.29707],[-162.658984,55.350781],[-162.513379,55.45],[-162.349365,55.594727],[-162.157129,55.719434],[-161.936621,55.82417],[-161.697314,55.907227],[-161.215625,56.021436],[-161.178613,56.014453],[-161.222559,55.977441],[-161.192529,55.954297],[-161.145166,55.951318],[-160.968652,55.969629],[-160.898633,55.993652],[-160.877832,55.970508],[-160.902393,55.941309],[-161.008398,55.911719],[-161.005371,55.887158],[-160.851318,55.771875],[-160.802832,55.754443],[-160.762598,55.756592],[-160.745508,55.771484],[-160.758398,55.854639],[-160.706348,55.870459],[-160.599707,55.874316],[-160.530225,55.863477],[-160.4979,55.837891],[-160.436914,55.816699],[-160.347314,55.799902],[-160.291699,55.805078],[-160.270117,55.832178],[-160.308496,55.864453],[-160.479883,55.935449],[-160.527441,55.965039],[-160.539062,56.006299],[-160.514697,56.059131],[-160.46084,56.1375],[-160.37749,56.241455],[-160.302051,56.314111],[-160.149268,56.396338],[-160.04624,56.437012],[-159.785059,56.561621],[-159.283105,56.688574],[-159.159033,56.770068],[-158.990381,56.860059],[-158.918018,56.882178],[-158.918018,56.847412],[-158.894873,56.816406],[-158.78208,56.795752],[-158.708838,56.788574],[-158.675146,56.794873],[-158.665918,56.82793],[-158.681055,56.887744],[-158.684814,56.944238],[-158.677246,56.997363],[-158.660791,57.039404],[-158.585596,57.114062],[-158.47373,57.199072],[-158.320947,57.2979],[-158.224512,57.342676],[-158.133545,57.366406],[-158.045703,57.409473],[-157.894336,57.511377],[-157.845752,57.528076],[-157.737207,57.548145],[-157.697412,57.539258],[-157.674023,57.513721],[-157.645557,57.497803],[-157.535303,57.483447],[-157.461914,57.506201],[-157.473877,57.518213],[-157.533496,57.525879],[-157.571631,57.540674],[-157.607568,57.601465],[-157.680664,57.638086],[-157.697217,57.679443],[-157.683984,57.743896],[-157.621191,57.895215],[-157.610889,58.05083],[-157.555029,58.139941],[-157.442676,58.172168],[-157.193701,58.194189],[-157.339404,58.234521],[-157.393604,58.234814],[-157.488379,58.253711],[-157.524414,58.350732],[-157.523633,58.421338],[-157.460889,58.503027],[-157.228857,58.640918],[-156.974658,58.736328],[-157.009033,58.744189],[-157.040479,58.772559],[-156.923242,58.963672],[-156.808887,59.134277],[-156.963379,58.988867],[-157.142041,58.877637],[-157.665723,58.748486],[-158.021924,58.640186],[-158.190918,58.614258],[-158.302588,58.641797],[-158.389648,58.745654],[-158.439307,58.782617],[-158.503174,58.850342],[-158.47627,58.938379],[-158.425635,58.999316],[-158.314502,59.009326],[-158.189209,58.979932],[-158.080518,58.977441],[-158.220605,59.0375],[-158.422803,59.089844],[-158.514404,59.072852],[-158.584473,58.987793],[-158.678271,58.929395],[-158.760596,58.950098],[-158.809473,58.973877],[-158.775537,58.902539],[-158.837744,58.793945],[-158.861377,58.71875],[-158.772119,58.520313],[-158.788623,58.440967],[-158.950684,58.404541],[-159.082666,58.469775],[-159.358203,58.721289],[-159.454199,58.79292],[-159.670264,58.911133],[-159.741455,58.894287],[-159.832227,58.835986],[-159.920215,58.819873],[-160.152588,58.905908],[-160.260791,58.971533],[-160.363135,59.051172],[-160.519922,59.007324],[-160.656641,58.955078],[-160.81709,58.87168],[-160.924268,58.872412],[-161.215918,58.800977],[-161.246826,58.799463],[-161.287891,58.760937],[-161.328125,58.743701],[-161.361328,58.669531],[-161.755469,58.612012],[-162.144922,58.644238],[-162.008691,58.68501],[-161.856494,58.71709],[-161.724365,58.794287],[-161.780518,58.897412],[-161.790283,58.949951],[-161.788672,59.016406],[-161.644385,59.109668],[-161.794482,59.109473],[-161.890771,59.076074],[-161.981055,59.146143],[-162.023291,59.283984],[-161.920117,59.365479],[-161.872217,59.428271],[-161.831689,59.514502],[-161.828711,59.588623],[-161.908643,59.714111],[-162.138135,59.980029],[-162.24248,60.17832],[-162.421338,60.283984],[-162.287793,60.456885],[-162.138867,60.614355],[-161.946582,60.684814],[-161.962012,60.695361],[-162.068262,60.694873],[-162.138037,60.685547],[-162.199902,60.634326],[-162.265039,60.595215],[-162.468701,60.394678],[-162.599707,60.296973],[-162.684961,60.268945],[-162.547705,60.231055],[-162.526953,60.199121],[-162.500488,60.126562],[-162.535645,60.038379],[-162.570752,59.989746],[-162.732617,59.993652],[-162.877832,59.922754],[-163.219385,59.845605],[-163.680371,59.801514],[-163.906885,59.806787],[-164.142822,59.896777],[-164.141113,59.948877],[-164.131543,59.994238],[-164.470508,60.149316],[-164.662256,60.303809],[-164.799951,60.307227],[-164.919727,60.348438],[-165.061133,60.412549],[-165.04873,60.464258],[-165.026514,60.500635],[-165.113281,60.526074],[-165.224512,60.523584],[-165.353809,60.541211],[-165.016016,60.740039],[-164.899805,60.873145],[-164.805176,60.892041],[-164.682373,60.871533],[-164.512939,60.819043],[-164.370068,60.795898],[-164.318506,60.771289],[-164.265674,60.724658],[-164.321387,60.646631],[-164.372363,60.591846],[-164.309668,60.606738],[-164.131836,60.691504],[-163.999561,60.766064],[-163.936133,60.758301],[-163.894922,60.745166],[-163.821387,60.668262],[-163.72998,60.58999],[-163.528711,60.664551],[-163.420947,60.757422],[-163.511865,60.798145],[-163.623047,60.822217],[-163.906543,60.853809],[-163.837305,60.88042],[-163.65542,60.87749],[-163.586914,60.902979],[-163.658936,60.938232],[-163.749023,60.969727],[-163.994629,60.864697],[-164.441553,60.869971],[-164.753955,60.931299],[-165.065625,60.920654],[-165.114844,60.932812],[-165.175488,60.965674],[-164.999902,61.043652],[-164.875586,61.086768],[-164.868994,61.111768],[-164.941211,61.114893],[-165.0771,61.094189],[-165.137695,61.130127],[-165.127783,61.192432],[-165.150049,61.186865],[-165.20376,61.152832],[-165.279785,61.169629],[-165.344873,61.197705],[-165.310791,61.227637],[-165.243945,61.26875],[-165.273633,61.274854],[-165.333691,61.266113],[-165.392041,61.212305],[-165.379297,61.16875],[-165.380762,61.106299],[-165.480469,61.094873],[-165.565869,61.102344],[-165.627588,61.165186],[-165.691357,61.299902],[-165.863965,61.335693],[-165.906299,61.403809],[-165.797119,61.491162],[-165.845313,61.53623],[-165.961328,61.550879],[-166.093994,61.506738],[-166.152734,61.545947],[-166.163525,61.589014],[-166.168115,61.65083],[-166.131152,61.657324],[-166.100488,61.645068],[-165.83457,61.679395],[-165.808936,61.696094],[-166.019922,61.748291],[-166.078809,61.803125],[-165.991406,61.83418],[-165.833838,61.836816],[-165.612793,61.869287],[-165.705811,61.927441],[-165.725244,61.959375],[-165.743945,62.011719],[-165.707275,62.100439],[-165.447656,62.303906],[-165.194531,62.473535],[-165.115625,62.512695],[-164.999707,62.533789],[-164.891846,62.517578],[-164.779199,62.481152],[-164.757861,62.496729],[-164.796094,62.511621],[-164.844385,62.581055],[-164.687988,62.608252],[-164.596289,62.68667],[-164.589453,62.709375],[-164.688965,62.676758],[-164.792676,62.623193],[-164.818652,62.677051],[-164.84541,62.800977],[-164.799658,62.918066],[-164.764062,62.970605],[-164.677441,63.020459],[-164.428125,63.04043],[-164.384229,63.030469],[-164.375098,63.054004],[-164.525195,63.127637],[-164.463281,63.185205],[-164.409033,63.215039],[-164.107617,63.261719],[-163.942871,63.247217],[-163.73623,63.192822],[-163.616309,63.125146],[-163.63374,63.09043],[-163.663574,63.070312],[-163.725732,63.047803],[-163.748975,63.030322],[-163.737842,63.016406],[-163.649365,63.056787],[-163.504346,63.105859],[-163.423193,63.084521],[-163.358838,63.045752],[-163.287842,63.046436],[-163.062256,63.079736],[-162.947705,63.11499],[-162.807764,63.206592],[-162.621484,63.26582],[-162.359814,63.452588],[-162.282813,63.529199],[-162.193311,63.540967],[-162.1125,63.53418],[-162.05625,63.471338],[-161.973975,63.45293],[-161.50542,63.468164],[-161.266016,63.496973],[-161.099707,63.55791],[-160.926709,63.660547],[-160.826514,63.729346],[-160.778564,63.818945],[-160.840479,63.934912],[-160.903955,64.031201],[-160.987549,64.25127],[-161.220117,64.396582],[-161.385693,64.439941],[-161.490723,64.433789],[-161.4146,64.526367],[-161.193066,64.516406],[-161.048779,64.534473],[-160.931934,64.579102],[-160.893701,64.612891],[-160.836035,64.681934],[-160.855908,64.755615],[-160.886963,64.795557],[-160.96748,64.839551],[-161.063232,64.904004],[-161.130176,64.925439],[-161.186914,64.924023],[-161.466357,64.794873],[-161.633984,64.79248],[-161.759375,64.81626],[-161.868311,64.742676],[-162.172266,64.678076],[-162.334619,64.612842],[-162.635742,64.45083],[-162.711084,64.377539],[-162.807031,64.374219],[-162.876416,64.516406],[-163.203906,64.652002],[-163.302832,64.605908],[-163.248291,64.563281],[-163.174072,64.532959],[-163.051758,64.519727],[-163.104492,64.478613],[-163.144336,64.423828],[-163.267041,64.475195],[-163.486182,64.549805],[-163.713086,64.588232],[-164.303955,64.583936],[-164.691846,64.507422],[-164.72749,64.523291],[-164.764941,64.529639],[-164.829541,64.511377],[-164.857275,64.480322],[-164.899512,64.460645],[-164.97876,64.453662],[-165.138135,64.465234],[-165.446191,64.512842],[-166.142773,64.582764],[-166.325098,64.625732],[-166.481396,64.728076],[-166.478125,64.797559],[-166.408691,64.826953],[-166.415234,64.926514],[-166.550879,64.952979],[-166.826953,65.096094],[-166.928418,65.15708],[-166.906396,65.163818],[-166.856787,65.147266],[-166.762549,65.134912],[-166.531006,65.154736],[-166.45166,65.247314],[-166.279687,65.273779],[-166.121484,65.260742],[-166.157031,65.28584],[-166.197412,65.305566],[-166.609375,65.352734],[-166.665381,65.338281],[-167.404004,65.422119],[-167.987256,65.567773],[-168.03501,65.595605],[-168.088379,65.657764],[-168.009668,65.719141],[-167.930566,65.748145],[-167.927002,65.714355],[-167.914355,65.681201],[-167.580029,65.758301],[-167.405322,65.859326],[-167.074219,65.877051],[-166.997217,65.904932],[-166.894434,65.95918],[-166.747656,66.051855],[-166.540137,66.100635],[-166.39873,66.144434],[-166.2146,66.170264],[-166.057422,66.127246],[-166.008936,66.121338],[-165.723682,66.112549],[-165.629932,66.131201],[-165.58999,66.145117],[-165.560205,66.16709],[-165.840234,66.245068],[-165.811865,66.288477],[-165.776172,66.319043],[-165.449414,66.409912],[-165.198291,66.439941],[-165.063965,66.437842],[-164.674121,66.555029],[-164.460498,66.588428],[-164.058252,66.610742],[-163.727686,66.616455],[-163.638232,66.574658],[-163.815723,66.583496],[-163.893945,66.575879],[-163.838232,66.561572],[-163.775488,66.531104],[-163.793701,66.492627],[-163.902881,66.378369],[-163.893945,66.286914],[-163.96499,66.257324],[-164.03374,66.215527],[-163.695361,66.083838],[-163.171436,66.075439],[-162.886475,66.099219],[-162.721777,66.059814],[-162.586865,66.05083],[-162.214258,66.071045],[-161.933691,66.042871],[-161.816309,66.053662],[-161.556836,66.250537],[-161.45542,66.281396],[-161.345068,66.247168],[-161.201074,66.219385],[-161.109229,66.239502],[-161.034277,66.188818],[-161.069531,66.294629],[-161.120313,66.334326],[-161.544434,66.407031],[-161.828174,66.37085],[-161.916895,66.411816],[-161.887598,66.493066],[-162.191162,66.693115],[-162.317725,66.733691],[-162.467432,66.735645],[-162.543652,66.805127],[-162.607422,66.894385],[-162.47832,66.930811],[-162.361621,66.947314],[-162.253564,66.918652],[-162.131396,66.801367],[-162.017627,66.784131],[-162.050732,66.667285],[-161.90957,66.559619],[-161.591016,66.459521],[-161.335938,66.496338],[-161.155811,66.495312],[-161.048145,66.474219],[-160.784473,66.384375],[-160.650537,66.373096],[-160.231689,66.420264],[-160.227344,66.508545],[-160.262549,66.572461],[-160.360889,66.6125],[-160.643799,66.60498],[-160.864014,66.67085],[-161.051465,66.652783],[-161.398047,66.551855],[-161.571729,66.591602],[-161.680908,66.645508],[-161.856689,66.700342],[-161.87876,66.803955],[-161.731299,66.922803],[-161.622217,66.979346],[-161.719922,67.020557],[-161.96543,67.049561],[-162.391553,67.019873],[-162.411572,67.060303],[-162.409424,67.103955],[-162.583105,67.018506],[-162.761426,67.036426],[-163.001709,67.027295],[-163.531836,67.102588],[-163.720557,67.195557],[-163.799805,67.270996],[-163.942676,67.477588],[-164.125195,67.606738],[-165.386035,68.045605],[-165.95957,68.155908],[-166.235938,68.27793],[-166.409131,68.307959],[-166.574463,68.320264],[-166.786279,68.359619],[-166.643896,68.408008],[-166.545898,68.424365],[-166.647852,68.373828],[-166.57041,68.361084],[-166.447021,68.390234],[-166.380518,68.425146],[-166.282959,68.573242],[-166.182031,68.797217],[-166.209082,68.885352],[-165.509473,68.867578],[-165.043945,68.882471],[-164.889697,68.902441],[-164.302344,68.936475],[-164.150195,68.961182],[-163.86792,69.03667],[-163.535693,69.170117],[-163.250537,69.345361],[-163.205176,69.392529],[-163.187109,69.380469],[-163.161475,69.387939],[-163.131006,69.454346],[-163.093555,69.610693],[-162.9521,69.758105],[-162.350391,70.094141],[-162.071143,70.227197],[-161.977979,70.287646],[-161.880957,70.331738],[-161.812598,70.289844],[-161.779932,70.277344],[-161.761084,70.257666],[-161.818408,70.248437],[-161.911963,70.205469],[-162.042383,70.17666],[-162.073877,70.161963],[-161.997412,70.165234],[-161.768164,70.196533],[-161.639014,70.234521],[-160.996289,70.30459],[-160.647656,70.420557],[-160.634131,70.446387],[-160.117139,70.591211],[-160.045605,70.585596],[-159.963135,70.568164],[-160.106396,70.472559],[-160.005566,70.447559],[-160.095068,70.333301],[-159.907568,70.331445],[-159.865674,70.278857],[-159.855225,70.32417],[-159.85752,70.389258],[-159.842627,70.453027],[-159.81499,70.49707],[-159.683301,70.477148],[-159.386768,70.524512],[-159.746191,70.530469],[-159.961816,70.634082],[-160.081592,70.634863],[-159.680908,70.786768],[-159.314502,70.878516],[-159.231738,70.876758],[-159.191748,70.859668],[-159.183154,70.831934],[-159.262207,70.813867],[-159.339844,70.78125],[-159.30415,70.752539],[-159.251172,70.748437],[-159.075049,70.77207],[-158.996289,70.801611],[-158.620947,70.799023],[-158.51084,70.820117],[-158.484375,70.841064],[-157.998486,70.845313],[-157.909375,70.860107],[-157.605615,70.94126],[-157.324756,71.0396],[-157.195312,71.093262],[-156.97334,71.230029],[-156.783301,71.318945],[-156.470215,71.407666],[-156.395264,71.39668],[-156.49668,71.379102],[-156.567236,71.341553],[-156.469971,71.291553],[-155.811133,71.188428],[-155.645605,71.182764],[-155.579443,71.121094],[-155.63457,71.061572],[-155.804346,70.99541],[-156.146582,70.927832],[-156.041943,70.902246],[-155.973535,70.841992],[-155.872217,70.834668],[-155.708057,70.857275],[-155.579395,70.894336],[-155.313379,71.01499],[-155.229736,71.082227],[-155.166846,71.099219],[-154.943799,71.083057],[-154.817529,71.048486],[-154.673682,70.987109],[-154.726318,70.927783],[-154.785205,70.894287],[-154.598633,70.847998],[-154.392188,70.83833],[-154.195215,70.801123],[-153.918213,70.877344],[-153.701367,70.893604],[-153.497705,70.891064],[-153.23291,70.932568],[-152.784912,70.876025],[-152.67085,70.890723],[-152.491211,70.880957],[-152.300391,70.846777],[-152.23291,70.810352],[-152.437256,70.733252],[-152.470605,70.653613],[-152.399219,70.620459],[-152.269678,70.614746],[-152.253369,70.568262],[-152.172949,70.556641],[-151.769043,70.560156],[-151.799902,70.538037],[-151.819629,70.511328],[-151.944678,70.4521],[-151.224805,70.41875],[-151.128027,70.451611],[-150.979053,70.464697],[-150.662646,70.509912],[-150.543506,70.490137],[-150.403223,70.443896],[-150.273633,70.434326],[-150.15249,70.443701],[-149.870117,70.509668],[-149.544043,70.512891],[-149.410596,70.491406],[-149.269434,70.500781],[-148.844775,70.425195],[-148.688379,70.416309],[-148.479199,70.31792],[-148.371143,70.31499],[-148.248779,70.356738],[-148.142725,70.355469],[-148.039062,70.315479],[-147.869531,70.303271],[-147.790576,70.240137],[-147.705371,70.217236],[-147.062939,70.17041],[-146.744873,70.191748],[-146.28125,70.186133],[-146.057666,70.15625],[-145.823145,70.160059],[-145.440088,70.050928],[-145.236816,70.033936],[-145.197363,70.008691],[-144.619189,69.982129],[-144.416895,70.039014],[-144.064111,70.054102],[-143.746436,70.101953],[-143.566406,70.101465],[-143.357031,70.089551],[-143.276465,70.095313],[-143.218311,70.11626],[-142.707861,70.033789],[-142.422119,69.939502],[-142.296973,69.869873],[-141.699219,69.770361],[-141.526367,69.714697],[-141.40791,69.653369],[-141.338623,69.646777],[-141.289648,69.664697],[-141.080811,69.659424],[-141.002148,69.650781],[-141.002148,69.358594],[-141.002148,69.066357],[-141.002148,68.77417],[-141.002148,68.481982],[-141.002148,68.189746],[-141.002148,67.897559],[-141.002148,67.605371],[-141.002148,67.313135],[-141.002148,67.020947],[-141.002148,66.72876],[-141.002148,66.436523],[-141.002148,66.144336],[-141.002148,65.852148],[-141.002148,65.559912],[-141.002148,65.267725],[-141.002148,64.975537],[-141.002148,64.683301],[-141.002148,64.391113],[-141.002148,64.098877],[-141.002148,63.806689],[-141.002148,63.514453],[-141.002148,63.222266],[-141.002148,62.930078],[-141.002148,62.637891],[-141.002148,62.345703],[-141.002148,62.053467],[-141.002148,61.761279],[-141.002148,61.469043],[-141.002148,61.176855],[-141.002148,60.884668],[-141.002148,60.592432],[-141.002148,60.300244],[-140.762744,60.259131],[-140.525439,60.218359],[-140.452832,60.299707],[-140.196924,60.2375],[-139.973291,60.183154],[-139.830664,60.252881],[-139.676318,60.32832],[-139.467969,60.333691],[-139.234766,60.339746],[-139.079248,60.343701],[-139.079248,60.279443],[-139.136963,60.172705],[-139.185156,60.083594],[-139.043457,59.993262],[-138.86875,59.945752],[-138.705469,59.901318],[-138.632275,59.778271],[-138.453613,59.683398],[-138.317627,59.611133],[-138.187451,59.541943],[-138.001123,59.44292],[-137.870557,59.373584],[-137.696631,59.281152],[-137.593311,59.22627],[-137.543701,59.119434],[-137.48418,58.991211],[-137.520898,58.915381],[-137.438574,58.903125],[-137.277539,58.988184],[-137.126221,59.040967],[-136.939307,59.106104],[-136.813281,59.150049],[-136.57876,59.152246],[-136.466748,59.279932],[-136.466357,59.459082],[-136.347852,59.456055],[-136.277979,59.480322],[-136.247119,59.53291],[-136.321826,59.604834],[-136.097168,59.638379],[-135.934668,59.662646],[-135.702588,59.72876],[-135.475928,59.793262],[-135.367871,59.743311],[-135.260791,59.69502],[-135.051025,59.578662],[-135.03667,59.550684],[-135.05083,59.496045],[-135.071289,59.441455],[-134.94375,59.288281],[-134.907227,59.271191],[-134.802393,59.25],[-134.677246,59.199268],[-134.621973,59.155322],[-134.440771,59.085352],[-134.410205,59.05625],[-134.393066,59.00918],[-134.363525,58.96875],[-134.329639,58.939697],[-134.296973,58.898486],[-134.218506,58.849902],[-134.069189,58.795508],[-133.965723,58.757861],[-133.820752,58.705029],[-133.673926,58.597168],[-133.546387,58.503467],[-133.401123,58.410889],[-133.422559,58.337061],[-133.275293,58.222852],[-133.12041,58.077734],[-133.001416,57.948975],[-132.916846,57.877002],[-132.815527,57.772705],[-132.691504,57.645117],[-132.550488,57.499902],[-132.44248,57.406738],[-132.30166,57.276318],[-132.232178,57.198535],[-132.279395,57.145361],[-132.337988,57.079443],[-132.157031,57.048193],[-132.031543,57.026562],[-132.062891,56.953369],[-132.104297,56.856787],[-131.9625,56.818701],[-131.866162,56.792822],[-131.885986,56.742139],[-131.833105,56.684814],[-131.824268,56.58999],[-131.651514,56.596094],[-131.575098,56.598828],[-131.471875,56.556738],[-131.335791,56.501221],[-131.199414,56.449219],[-131.08291,56.404834],[-130.930225,56.378613],[-130.741699,56.34082],[-130.649072,56.263672],[-130.4771,56.230566],[-130.413135,56.12251],[-130.214697,56.082812],[-130.097852,56.109277],[-130.055957,56.065234],[-130.0229,56.014502],[-130.014062,55.950537],[-130.025098,55.888232]]],[[[-163.476025,54.980713],[-163.378955,54.815527],[-163.336914,54.783203],[-163.274512,54.765576],[-163.187109,54.747754],[-163.135059,54.723291],[-163.089258,54.686084],[-163.083252,54.668994],[-163.358105,54.735693],[-163.530859,54.63833],[-163.583008,54.625684],[-164.073291,54.620996],[-164.171289,54.603027],[-164.234619,54.571338],[-164.34668,54.482422],[-164.403516,54.447852],[-164.463477,54.427344],[-164.59082,54.404346],[-164.743799,54.407471],[-164.823438,54.419092],[-164.866162,54.461377],[-164.903955,54.544775],[-164.903711,54.567969],[-164.887646,54.607813],[-164.751465,54.662939],[-164.706201,54.691992],[-164.529785,54.880859],[-164.478613,54.906836],[-164.424316,54.913184],[-164.273682,54.900049],[-164.145068,54.955127],[-163.867969,55.039111],[-163.807129,55.049072],[-163.607471,55.05083],[-163.553027,55.037842],[-163.510889,55.014307],[-163.476025,54.980713]]],[[[-133.305078,55.54375],[-133.283203,55.515625],[-133.281689,55.497852],[-133.426465,55.431445],[-133.429102,55.417725],[-133.463086,55.37666],[-133.493457,55.36167],[-133.547363,55.317236],[-133.650195,55.269287],[-133.63501,55.41333],[-133.737109,55.496924],[-133.634229,55.539258],[-133.566699,55.527197],[-133.454785,55.522314],[-133.345557,55.559082],[-133.305078,55.54375]]],[[[-131.339746,55.079834],[-131.237451,54.949512],[-131.232031,54.90376],[-131.329541,54.887744],[-131.406201,54.894287],[-131.445703,54.909326],[-131.456104,54.930566],[-131.431348,54.996484],[-131.481738,55.035254],[-131.540039,55.048486],[-131.592236,55.025684],[-131.595117,55.090723],[-131.556006,55.137402],[-131.577832,55.20083],[-131.578467,55.248779],[-131.56543,55.264111],[-131.512646,55.262744],[-131.404639,55.21333],[-131.339746,55.079834]]],[[[-132.112354,56.109375],[-132.132959,55.943262],[-132.172607,55.952637],[-132.210303,55.952979],[-132.287305,55.929395],[-132.368604,55.939746],[-132.406592,55.958203],[-132.420605,55.979541],[-132.406055,56.028857],[-132.451172,56.056348],[-132.602979,56.066406],[-132.659912,56.078174],[-132.691357,56.130078],[-132.699023,56.198193],[-132.675195,56.223633],[-132.59873,56.24165],[-132.539014,56.32417],[-132.505957,56.335254],[-132.379834,56.498779],[-132.316504,56.4875],[-132.205615,56.387939],[-132.066895,56.244238],[-132.112354,56.109375]]],[[[-130.97915,55.48916],[-131.013916,55.379297],[-131.082764,55.266797],[-131.187891,55.206299],[-131.261865,55.219775],[-131.316309,55.268506],[-131.366846,55.26582],[-131.420703,55.275879],[-131.450928,55.316309],[-131.422363,55.368408],[-131.447559,55.408789],[-131.474512,55.373486],[-131.521826,55.341064],[-131.641309,55.298926],[-131.723682,55.218359],[-131.7625,55.16582],[-131.810986,55.223096],[-131.841992,55.358691],[-131.846094,55.41626],[-131.759473,55.503076],[-131.647559,55.585547],[-131.624951,55.831689],[-131.269238,55.955371],[-131.236182,55.948975],[-131.120654,55.856641],[-130.997803,55.727637],[-130.965967,55.669531],[-130.965039,55.568018],[-130.97915,55.48916]]],[[[-133.366211,57.003516],[-133.299707,56.972168],[-133.263525,57.00498],[-133.195996,57.003467],[-133.070801,56.974268],[-132.99624,56.93042],[-132.95415,56.880273],[-132.950586,56.850439],[-132.96333,56.782568],[-132.954004,56.713086],[-132.95918,56.677051],[-132.975879,56.647266],[-133.004102,56.62373],[-133.034912,56.620752],[-133.132373,56.683252],[-133.243994,56.79585],[-133.328955,56.830078],[-133.332422,56.818506],[-133.309082,56.78623],[-133.239697,56.725684],[-133.227246,56.689258],[-133.178467,56.644824],[-133.156641,56.611133],[-133.144238,56.566895],[-133.144727,56.528223],[-133.158154,56.495166],[-133.180811,56.473975],[-133.212646,56.4646],[-133.382764,56.473877],[-133.48418,56.451758],[-133.602783,56.464111],[-133.631348,56.484033],[-133.649268,56.516797],[-133.658301,56.596289],[-133.688184,56.71001],[-133.680957,56.79751],[-133.75752,56.87666],[-133.823047,56.924365],[-133.917285,56.96709],[-133.979443,57.00957],[-133.962354,57.043457],[-133.865967,57.068701],[-133.707715,57.062842],[-133.366211,57.003516]]],[[[-132.862256,54.894434],[-132.837744,54.880957],[-132.812891,54.89043],[-132.772314,54.926074],[-132.700635,54.919043],[-132.648877,54.90708],[-132.617236,54.892432],[-132.634033,54.840479],[-132.646973,54.756152],[-132.67666,54.726221],[-132.705811,54.68418],[-132.807275,54.709131],[-132.8896,54.762646],[-133.008936,54.854834],[-133.075391,54.921338],[-133.080566,54.949414],[-133.122705,54.969824],[-133.204639,55.084473],[-133.251172,55.175146],[-133.324854,55.185498],[-133.417969,55.210693],[-133.453809,55.260352],[-133.429053,55.303809],[-133.296582,55.325732],[-133.097412,55.213721],[-133.06709,55.166211],[-132.995752,55.110596],[-132.982178,55.033008],[-132.945996,55.002588],[-132.862256,54.894434]]],[[[-146.393945,60.449658],[-146.37168,60.422168],[-146.179541,60.42876],[-146.124268,60.423926],[-146.102246,60.411182],[-146.128271,60.392529],[-146.202393,60.368018],[-146.419189,60.325049],[-146.595313,60.268457],[-146.618311,60.273682],[-146.650439,60.335645],[-146.683008,60.360693],[-146.702881,60.395605],[-146.702539,60.408545],[-146.670264,60.432617],[-146.605908,60.467822],[-146.560303,60.480566],[-146.393945,60.449658]]],[[[-147.735889,59.813232],[-147.846338,59.798828],[-147.872461,59.828369],[-147.814355,59.901953],[-147.768066,59.94375],[-147.733643,59.953613],[-147.606689,60.036621],[-147.46582,60.097021],[-147.336523,60.185352],[-147.205225,60.311328],[-147.180859,60.358252],[-147.12002,60.363086],[-147.019873,60.332227],[-146.957861,60.288867],[-146.986719,60.254346],[-147.318457,60.075293],[-147.346338,60.051953],[-147.376514,59.991162],[-147.403809,59.969971],[-147.447559,59.960254],[-147.479395,59.933691],[-147.499316,59.890186],[-147.540234,59.867529],[-147.602051,59.865576],[-147.644922,59.853613],[-147.66875,59.831543],[-147.735889,59.813232]]],[[[-147.658252,60.450488],[-147.658691,60.424121],[-147.690039,60.398877],[-147.659961,60.35249],[-147.712012,60.272754],[-147.732129,60.22207],[-147.759912,60.190234],[-147.787842,60.17793],[-147.81582,60.185156],[-147.82168,60.202734],[-147.805273,60.230664],[-147.871338,60.229785],[-147.891455,60.299414],[-147.854883,60.321436],[-147.841699,60.35127],[-147.837598,60.371289],[-147.794531,60.459863],[-147.77915,60.466064],[-147.77417,60.444971],[-147.760205,60.43877],[-147.737305,60.447412],[-147.702979,60.486816],[-147.688574,60.491406],[-147.658252,60.450488]]],[[[-147.930713,60.826172],[-148.057422,60.81792],[-148.11543,60.830615],[-148.123779,60.844336],[-148.099707,60.894824],[-148.10166,60.916113],[-148.037744,60.924121],[-147.964404,60.900146],[-147.943115,60.875391],[-147.930713,60.826172]]],[[[-153.00708,57.124854],[-153.134229,57.092578],[-153.156836,57.093945],[-153.2354,57.028613],[-153.29541,57.000439],[-153.374609,57.051904],[-153.354346,57.131934],[-153.285205,57.185059],[-152.935449,57.167334],[-152.908398,57.152441],[-152.907764,57.139746],[-152.933447,57.129248],[-153.00708,57.124854]]],[[[-152.486084,58.48501],[-152.515527,58.478613],[-152.588623,58.509229],[-152.636621,58.541699],[-152.604883,58.566406],[-152.463184,58.618506],[-152.395508,58.619385],[-152.36792,58.611084],[-152.356836,58.594971],[-152.362256,58.57085],[-152.392822,58.540869],[-152.486084,58.48501]]],[[[-153.240625,57.850098],[-153.268555,57.822363],[-153.294971,57.829492],[-153.35083,57.861963],[-153.465039,57.909375],[-153.51709,57.941895],[-153.520068,57.955762],[-153.481055,57.971045],[-153.346973,57.932812],[-153.290039,57.8979],[-153.240625,57.850098]]],[[[-155.566016,55.821191],[-155.604883,55.789551],[-155.680615,55.791846],[-155.723193,55.802197],[-155.737354,55.829785],[-155.620605,55.913086],[-155.593945,55.924316],[-155.573242,55.921094],[-155.563916,55.88667],[-155.566016,55.821191]]],[[[-154.682813,56.435791],[-154.751221,56.412158],[-154.773926,56.420264],[-154.777148,56.439893],[-154.760938,56.471143],[-154.729346,56.502148],[-154.62373,56.561328],[-154.517529,56.600537],[-154.463379,56.598193],[-154.444873,56.573193],[-154.511182,56.521436],[-154.682813,56.435791]]],[[[-154.208643,56.514893],[-154.257812,56.512695],[-154.332129,56.539014],[-154.322217,56.570605],[-154.216748,56.60874],[-154.1104,56.60293],[-154.102246,56.581641],[-154.107178,56.557812],[-154.115967,56.543896],[-154.149805,56.52959],[-154.208643,56.514893]]],[[[-160.684912,55.314795],[-160.669727,55.314258],[-160.638818,55.321924],[-160.573975,55.378271],[-160.552783,55.380762],[-160.55249,55.363379],[-160.583154,55.307617],[-160.531201,55.233203],[-160.482666,55.197412],[-160.487549,55.184863],[-160.609082,55.159033],[-160.701807,55.177637],[-160.750635,55.171191],[-160.795068,55.145215],[-160.825488,55.173975],[-160.846533,55.311328],[-160.839648,55.3354],[-160.789209,55.383105],[-160.723926,55.404639],[-160.695654,55.39834],[-160.672168,55.379395],[-160.666357,55.359424],[-160.684912,55.314795]]],[[[-162.298145,54.847021],[-162.321924,54.842383],[-162.390771,54.872998],[-162.415771,54.895898],[-162.433887,54.931543],[-162.293652,54.982861],[-162.2646,54.983496],[-162.238379,54.954736],[-162.23374,54.932031],[-162.272559,54.867188],[-162.298145,54.847021]]],[[[-162.554395,54.401367],[-162.641113,54.379541],[-162.733105,54.402295],[-162.811719,54.444385],[-162.820557,54.494531],[-162.64541,54.462061],[-162.607959,54.446631],[-162.554395,54.401367]]],[[[-159.872998,55.12876],[-159.933936,55.106836],[-159.953076,55.078955],[-159.999414,55.067187],[-160.038428,55.044482],[-160.16958,54.941699],[-160.227051,54.922705],[-160.163574,55.010449],[-160.153613,55.03833],[-160.152393,55.056885],[-160.17207,55.123047],[-160.13374,55.120166],[-160.102197,55.133887],[-160.03877,55.192529],[-159.981641,55.197754],[-159.920459,55.267529],[-159.887354,55.272998],[-159.871045,55.263574],[-159.898242,55.221289],[-159.839404,55.182373],[-159.854102,55.144678],[-159.872998,55.12876]]],[[[-165.841553,54.070654],[-165.879395,54.053027],[-165.909863,54.04917],[-165.93291,54.05918],[-166.036426,54.047168],[-166.056641,54.054346],[-166.102832,54.113965],[-166.105811,54.144824],[-166.087744,54.169141],[-166.04126,54.19126],[-165.966406,54.211035],[-165.892871,54.206982],[-165.764453,54.1521],[-165.704248,54.119922],[-165.692871,54.099902],[-165.737891,54.081104],[-165.841553,54.070654]]],[[[-165.561133,54.136719],[-165.604834,54.12915],[-165.615381,54.139551],[-165.620508,54.183545],[-165.65415,54.25332],[-165.590332,54.278662],[-165.550635,54.284521],[-165.533789,54.273877],[-165.487695,54.221875],[-165.441748,54.208008],[-165.407861,54.196826],[-165.467578,54.180908],[-165.561133,54.136719]]],[[[-160.918994,58.5771],[-160.992383,58.561035],[-161.070264,58.569141],[-161.131494,58.668213],[-161.08457,58.671289],[-160.98623,58.736426],[-160.768604,58.789209],[-160.715137,58.795215],[-160.918994,58.5771]]],[[[-172.742236,60.457373],[-172.526074,60.391748],[-172.3875,60.398486],[-172.277539,60.343652],[-172.23208,60.299121],[-172.397168,60.331104],[-172.635742,60.328857],[-172.958398,60.462793],[-173.074023,60.493213],[-173.047656,60.568311],[-172.923877,60.606836],[-172.860205,60.505664],[-172.742236,60.457373]]],[[[-170.160547,57.183936],[-170.264014,57.136768],[-170.358008,57.154199],[-170.385889,57.188574],[-170.386621,57.203027],[-170.116162,57.241797],[-170.160547,57.183936]]],[[[-169.691943,52.847363],[-169.708105,52.807129],[-169.722754,52.792334],[-169.877344,52.81377],[-169.980566,52.806006],[-169.991846,52.829834],[-169.982568,52.851025],[-169.820654,52.883398],[-169.754883,52.883643],[-169.710986,52.866748],[-169.691943,52.847363]]],[[[-170.733398,52.581494],[-170.797363,52.549756],[-170.816064,52.561523],[-170.827051,52.600732],[-170.791162,52.63125],[-170.68208,52.697559],[-170.608057,52.685059],[-170.584619,52.667578],[-170.586621,52.642432],[-170.614014,52.609619],[-170.649268,52.593115],[-170.692285,52.592969],[-170.733398,52.581494]]],[[[-172.464795,52.272266],[-172.539111,52.257471],[-172.619824,52.272852],[-172.582178,52.325635],[-172.543652,52.353809],[-172.47041,52.388037],[-172.383105,52.372949],[-172.313623,52.32959],[-172.464795,52.272266]]],[[[-169.755225,56.635059],[-169.623926,56.615137],[-169.550488,56.628125],[-169.485693,56.617725],[-169.474316,56.594043],[-169.586865,56.542432],[-169.632617,56.545703],[-169.766162,56.607959],[-169.755225,56.635059]]],[[[-176.286719,51.791992],[-176.349658,51.733301],[-176.396094,51.759863],[-176.413721,51.840576],[-176.378564,51.861133],[-176.280225,51.802832],[-176.286719,51.791992]]],[[[-176.021533,52.002441],[-176.045068,51.972998],[-176.142871,52.004297],[-176.177539,52.029834],[-176.184521,52.056055],[-176.155664,52.099414],[-176.077393,52.099951],[-176.031201,52.082324],[-175.988086,52.049463],[-175.975293,52.028955],[-176.021533,52.002441]]],[[[-177.148193,51.716748],[-177.177002,51.703711],[-177.229883,51.693555],[-177.382373,51.704834],[-177.474658,51.70127],[-177.577588,51.694189],[-177.654883,51.676562],[-177.670215,51.701074],[-177.667627,51.721191],[-177.334717,51.776221],[-177.257275,51.804932],[-177.209766,51.84126],[-177.166406,51.909424],[-177.131494,51.929785],[-177.110059,51.92876],[-177.063037,51.901904],[-177.079541,51.866553],[-177.121387,51.835791],[-177.135107,51.806934],[-177.148193,51.716748]]],[[[178.575488,51.91626],[178.511816,51.899121],[178.477734,51.942529],[178.475,51.967725],[178.509375,51.994678],[178.570605,51.977539],[178.607324,51.953027],[178.575488,51.91626]]],[[[179.451563,51.372607],[179.278125,51.372217],[178.925879,51.535059],[178.74707,51.586719],[178.647949,51.643896],[178.692188,51.655957],[178.908008,51.615576],[179.084277,51.527686],[179.181738,51.469922],[179.294336,51.42085],[179.415527,51.400879],[179.451563,51.372607]]],[[[173.722754,52.35957],[173.657813,52.356641],[173.616211,52.39126],[173.402344,52.404785],[173.424512,52.437646],[173.516504,52.451416],[173.657617,52.504102],[173.776074,52.495117],[173.744727,52.446631],[173.722754,52.35957]]],[[[-134.969775,57.351416],[-134.884863,57.241699],[-134.823193,57.156543],[-134.768506,57.054199],[-134.676855,56.842285],[-134.634082,56.762109],[-134.620703,56.718311],[-134.610547,56.603418],[-134.624316,56.578711],[-134.651709,56.556055],[-134.65708,56.523242],[-134.631689,56.435645],[-134.630029,56.302441],[-134.654004,56.22749],[-134.681885,56.216162],[-134.750293,56.240771],[-134.806445,56.28125],[-134.847998,56.323486],[-134.950146,56.456836],[-134.980566,56.518945],[-134.982422,56.563623],[-134.96665,56.596143],[-134.933203,56.616357],[-134.875098,56.670459],[-134.883447,56.679053],[-134.927588,56.666992],[-135.017822,56.660156],[-135.097168,56.702832],[-135.159033,56.725391],[-135.146582,56.802344],[-135.163135,56.824121],[-135.284814,56.800342],[-135.330615,56.821875],[-135.340625,56.850781],[-135.338379,56.893994],[-135.315137,56.931836],[-135.199609,57.027344],[-135.21123,57.044922],[-135.267383,57.048877],[-135.341357,57.081592],[-135.375293,57.188428],[-135.454932,57.249414],[-135.501953,57.243848],[-135.608936,57.071436],[-135.661865,57.03374],[-135.812305,57.009521],[-135.781641,57.05752],[-135.767725,57.100391],[-135.821143,57.23042],[-135.822754,57.28042],[-135.787109,57.317285],[-135.680908,57.332568],[-135.624512,57.354395],[-135.580566,57.38999],[-135.569629,57.424707],[-135.487305,57.516504],[-135.448682,57.534375],[-135.346289,57.533105],[-135.130664,57.431641],[-135.065234,57.416699],[-134.969775,57.351416]]],[[[-134.680273,58.16167],[-134.426123,58.138818],[-134.240088,58.143994],[-134.070166,57.994531],[-133.965527,57.873779],[-133.904102,57.789209],[-133.869287,57.70752],[-133.822754,57.628662],[-133.826904,57.617578],[-133.925,57.670801],[-133.995557,57.778467],[-134.031641,57.820605],[-134.067236,57.8396],[-134.104736,57.879346],[-134.177539,57.982178],[-134.180273,58.011133],[-134.212598,58.037939],[-134.249951,58.04917],[-134.292334,58.044727],[-134.306885,58.034375],[-134.300391,57.963428],[-134.26709,57.884521],[-134.083691,57.712256],[-133.961133,57.61416],[-133.937012,57.581592],[-133.92085,57.491992],[-133.97373,57.451367],[-133.908838,57.368701],[-133.911133,57.352539],[-133.925293,57.336768],[-134.100049,57.300098],[-134.260156,57.146777],[-134.435303,57.056982],[-134.516016,57.042578],[-134.554785,57.057568],[-134.591504,57.091992],[-134.613086,57.137939],[-134.619531,57.195508],[-134.575879,57.231738],[-134.489209,57.420166],[-134.486768,57.482031],[-134.594824,57.567822],[-134.659863,57.638086],[-134.695117,57.736035],[-134.754102,57.99502],[-134.781494,58.077832],[-134.820117,58.146875],[-134.869971,58.2021],[-134.907666,58.262793],[-134.933105,58.328955],[-134.923486,58.354639],[-134.836963,58.320166],[-134.733203,58.225],[-134.680273,58.16167]]],[[[-135.730371,58.244238],[-135.5875,58.146777],[-135.586279,58.124414],[-135.615381,58.057471],[-135.693115,58.038525],[-135.671143,58.011914],[-135.613232,57.991846],[-135.572021,58.008545],[-135.421191,58.102393],[-135.374707,58.122119],[-135.346631,58.124121],[-135.162842,58.09585],[-135.0021,58.051074],[-134.954688,58.015332],[-134.927979,57.952783],[-134.970654,57.817236],[-135.102588,57.793652],[-135.164746,57.796094],[-135.231201,57.81582],[-135.338477,57.768652],[-135.249561,57.732568],[-134.978857,57.724365],[-134.896631,57.647998],[-134.873096,57.589209],[-134.931494,57.481152],[-135.084863,57.511035],[-135.220215,57.573633],[-135.497852,57.662256],[-135.564209,57.666406],[-135.608545,57.650732],[-135.620654,57.596973],[-135.617822,57.480371],[-135.691943,57.419922],[-135.910791,57.446582],[-135.99668,57.534863],[-136.076611,57.674561],[-136.378223,57.83999],[-136.459912,57.873096],[-136.568604,57.972168],[-136.525098,58.050586],[-136.512305,58.095996],[-136.454395,58.108008],[-136.369531,58.143066],[-136.321973,58.218896],[-136.245703,58.157471],[-136.14375,58.098486],[-136.142334,58.153906],[-136.094385,58.198145],[-135.994385,58.196533],[-135.947412,58.205811],[-135.881738,58.247168],[-135.787061,58.268506],[-135.730371,58.244238]]],[[[-133.566113,56.339209],[-133.376611,56.317773],[-133.202979,56.319824],[-133.143701,56.278564],[-133.104492,56.235107],[-133.081738,56.194189],[-133.075439,56.155859],[-133.080127,56.128711],[-133.101221,56.099805],[-133.096631,56.090039],[-132.757568,55.99502],[-132.597607,55.89502],[-132.533789,55.84248],[-132.496973,55.798096],[-132.430176,55.687012],[-132.288867,55.558105],[-132.214746,55.518848],[-132.172705,55.480615],[-132.196338,55.47915],[-132.295898,55.507471],[-132.511279,55.593945],[-132.528857,55.590479],[-132.54834,55.543701],[-132.581738,55.502637],[-132.631299,55.473193],[-132.591602,55.464355],[-132.417871,55.48291],[-132.272021,55.398633],[-132.215283,55.383545],[-132.160254,55.322998],[-132.158398,55.299805],[-132.19043,55.25498],[-132.214893,55.236768],[-132.206689,55.224414],[-132.165967,55.218018],[-132.005078,55.230615],[-131.976416,55.208594],[-132.000391,55.033838],[-131.977588,54.969482],[-131.97793,54.940234],[-131.996582,54.901416],[-131.997217,54.868604],[-131.982715,54.834912],[-131.980859,54.804834],[-132.02168,54.726318],[-132.064746,54.713135],[-132.134326,54.712549],[-132.189258,54.734863],[-132.266309,54.802344],[-132.341309,54.907227],[-132.370215,54.922217],[-132.468652,54.937939],[-132.486475,54.950391],[-132.549365,54.952588],[-132.593848,54.995752],[-132.588477,55.052344],[-132.626953,55.110059],[-132.622168,55.135937],[-132.665332,55.146777],[-132.701758,55.130518],[-132.682861,55.073926],[-132.70415,55.030078],[-132.782324,55.048486],[-132.912598,55.188477],[-133.060596,55.300928],[-133.118555,55.327637],[-133.103027,55.360254],[-133.030029,55.377539],[-132.970801,55.376172],[-132.958887,55.395557],[-133.082471,55.504102],[-133.078418,55.534912],[-133.033398,55.589697],[-133.089648,55.612598],[-133.24375,55.59541],[-133.298242,55.606885],[-133.342822,55.65083],[-133.368994,55.688965],[-133.502734,55.695898],[-133.553271,55.691162],[-133.640479,55.748779],[-133.680176,55.785156],[-133.664404,55.803809],[-133.584082,55.836523],[-133.537158,55.831934],[-133.446973,55.797021],[-133.411719,55.79834],[-133.322119,55.844629],[-133.308496,55.886475],[-133.241504,55.920801],[-133.252148,55.95708],[-133.289209,56.018701],[-133.37124,56.035889],[-133.538623,55.999268],[-133.684229,55.942773],[-133.742529,55.964844],[-133.755176,55.999463],[-133.599219,56.093652],[-133.530859,56.145654],[-133.544092,56.176514],[-133.594434,56.216357],[-133.598633,56.31626],[-133.566113,56.339209]]],[[[-133.9896,56.844971],[-133.924805,56.775684],[-133.830859,56.781299],[-133.778125,56.728906],[-133.738379,56.650439],[-133.767285,56.600098],[-133.809033,56.611328],[-133.855273,56.582178],[-133.883594,56.485498],[-133.870459,56.388672],[-133.884619,56.292139],[-133.938525,56.193652],[-133.949707,56.127734],[-133.970801,56.10791],[-133.993994,56.101123],[-134.024023,56.118994],[-134.06748,56.133008],[-134.122412,56.077393],[-134.1896,56.076953],[-134.245068,56.203271],[-134.195459,56.413525],[-134.084375,56.456348],[-134.150488,56.513477],[-134.290234,56.580029],[-134.278369,56.61709],[-134.384424,56.724023],[-134.390625,56.749463],[-134.373682,56.838672],[-134.274414,56.918164],[-134.143262,56.932324],[-134.051807,56.898291],[-134.000586,56.869189],[-133.9896,56.844971]]],[[[-152.416943,58.360205],[-152.380762,58.3521],[-152.343018,58.411621],[-152.31626,58.413477],[-152.197949,58.363086],[-152.125244,58.374268],[-152.078516,58.312354],[-152.036621,58.306689],[-151.997754,58.314209],[-151.974365,58.309863],[-151.98252,58.244336],[-152.068896,58.17793],[-152.109082,58.161133],[-152.165479,58.178271],[-152.186523,58.184668],[-152.223584,58.214014],[-152.25166,58.251123],[-152.268359,58.251709],[-152.334375,58.208057],[-152.332666,58.186523],[-152.305225,58.154053],[-152.309229,58.133887],[-152.381152,58.124268],[-152.451611,58.129248],[-152.537646,58.100977],[-152.558203,58.118604],[-152.571338,58.168213],[-152.598242,58.162598],[-152.63877,58.101807],[-152.683057,58.06333],[-152.763867,58.031396],[-152.781543,58.015918],[-152.840723,58.013818],[-152.928418,57.993701],[-152.982568,57.99707],[-153.305469,58.063086],[-153.381348,58.087207],[-153.11582,58.238525],[-152.976123,58.297021],[-152.895361,58.293848],[-152.814551,58.275635],[-152.771875,58.278564],[-152.768701,58.345605],[-152.843945,58.395605],[-152.841113,58.416406],[-152.674658,58.450586],[-152.612305,58.445703],[-152.543555,58.428174],[-152.478467,58.399707],[-152.416943,58.360205]]],[[[-167.964355,53.345117],[-168.270703,53.238037],[-168.370117,53.159766],[-168.445996,53.084424],[-168.505615,53.043164],[-168.549023,53.036084],[-168.597412,53.016113],[-168.698535,52.963428],[-168.741016,52.956885],[-169.065918,52.833936],[-169.088916,52.832031],[-169.073096,52.86416],[-168.973877,52.909668],[-168.90918,52.951172],[-168.836084,53.019727],[-168.79585,53.044922],[-168.783008,53.079346],[-168.777783,53.148779],[-168.759619,53.175049],[-168.689844,53.227246],[-168.639014,53.255762],[-168.572168,53.265625],[-168.436621,53.256885],[-168.38042,53.283447],[-168.362988,53.303564],[-168.397266,53.321924],[-168.405322,53.353809],[-168.396436,53.408789],[-168.357227,53.457568],[-168.287695,53.500146],[-168.193066,53.533301],[-168.073291,53.556982],[-167.985693,53.558203],[-167.828076,53.507959],[-167.804688,53.484961],[-167.843115,53.43457],[-167.865137,53.387305],[-167.964355,53.345117]]],[[[-166.615332,53.900928],[-166.572168,53.853467],[-166.497461,53.883545],[-166.442773,53.924805],[-166.400049,53.978125],[-166.372314,53.998975],[-166.335645,53.970898],[-166.230859,53.932617],[-166.318994,53.873779],[-166.48877,53.785498],[-166.545605,53.726465],[-166.549219,53.700977],[-166.384717,53.720508],[-166.33877,53.717676],[-166.309473,53.69751],[-166.354541,53.673535],[-166.444189,53.651807],[-166.522021,53.609668],[-166.702197,53.53667],[-166.77041,53.476025],[-166.850977,53.452881],[-166.960742,53.447363],[-167.153662,53.407861],[-167.270801,53.370605],[-167.300439,53.350488],[-167.337256,53.340967],[-167.381299,53.341992],[-167.428809,53.325684],[-167.479834,53.291992],[-167.522461,53.276221],[-167.592187,53.272705],[-167.628613,53.259424],[-167.669434,53.259961],[-167.780859,53.300244],[-167.808789,53.323779],[-167.710107,53.370898],[-167.638721,53.386572],[-167.530176,53.393701],[-167.423535,53.437256],[-167.204102,53.494971],[-167.136084,53.526465],[-167.092334,53.635937],[-167.042432,53.65459],[-167.015723,53.698389],[-166.894141,53.697119],[-166.83833,53.648047],[-166.81875,53.641357],[-166.808984,53.646143],[-166.803662,53.6854],[-166.74126,53.712939],[-166.777246,53.733154],[-166.8896,53.758594],[-166.972949,53.770557],[-167.027246,53.769141],[-167.071484,53.783398],[-167.105615,53.813379],[-167.121143,53.843115],[-167.118164,53.872607],[-167.090479,53.905664],[-167.038086,53.942187],[-166.978076,53.962939],[-166.848682,53.977881],[-166.734033,54.002197],[-166.673291,54.005957],[-166.627393,53.995654],[-166.615332,53.900928]]],[[[-173.55332,52.136279],[-173.357227,52.095654],[-173.113281,52.100391],[-173.024316,52.090527],[-173.0229,52.07915],[-173.178857,52.0625],[-173.232227,52.067969],[-173.368408,52.045605],[-173.460986,52.041553],[-173.672559,52.062646],[-173.835791,52.048193],[-173.878955,52.053662],[-173.930225,52.072168],[-173.9896,52.103613],[-173.99248,52.12334],[-173.938916,52.131299],[-173.794092,52.104297],[-173.779004,52.118359],[-173.656836,52.14375],[-173.55332,52.136279]]],[[[-174.677393,52.03501],[-175.213867,51.993896],[-175.295557,52.022168],[-175.21416,52.038232],[-175.117676,52.047119],[-174.915918,52.094189],[-174.667773,52.134961],[-174.474268,52.184033],[-174.306152,52.216162],[-174.258838,52.269043],[-174.406494,52.295996],[-174.435547,52.317236],[-174.36543,52.341943],[-174.306885,52.37793],[-174.168896,52.420166],[-174.045605,52.367236],[-174.018359,52.331787],[-174.030078,52.289795],[-174.054883,52.245996],[-174.163232,52.223389],[-174.179395,52.200342],[-174.120654,52.135205],[-174.343555,52.077783],[-174.677393,52.03501]]],[[[-176.593311,51.866699],[-176.587939,51.833203],[-176.473389,51.837402],[-176.437451,51.820117],[-176.437354,51.754297],[-176.452344,51.735693],[-176.469775,51.731152],[-176.510986,51.745605],[-176.55752,51.712061],[-176.770947,51.629932],[-176.837109,51.675879],[-176.961621,51.603662],[-176.874414,51.790479],[-176.773633,51.81875],[-176.736426,51.839941],[-176.745117,51.894678],[-176.69834,51.986035],[-176.596826,51.981787],[-176.549902,51.944043],[-176.551611,51.91958],[-176.593311,51.866699]]],[[[-177.879053,51.649707],[-177.90127,51.616406],[-177.925342,51.617383],[-178.058887,51.672607],[-178.078467,51.69126],[-178.000049,51.71748],[-177.977246,51.737793],[-177.986377,51.764258],[-178.045117,51.801074],[-178.153467,51.848242],[-178.194531,51.882227],[-178.168262,51.903027],[-178.116602,51.915869],[-177.953809,51.918457],[-177.865869,51.8604],[-177.799609,51.840039],[-177.644482,51.82627],[-177.724951,51.80166],[-177.770654,51.777881],[-177.826953,51.685889],[-177.879053,51.649707]]],[[[179.727734,51.90542],[179.645215,51.880225],[179.549609,51.894043],[179.497656,51.932812],[179.503906,51.97959],[179.627148,52.03042],[179.77998,51.966846],[179.727734,51.90542]]],[[[177.41543,51.882812],[177.328516,51.841064],[177.260645,51.883691],[177.250293,51.90293],[177.380664,51.975781],[177.478418,51.991602],[177.520508,52.018213],[177.56377,52.110498],[177.636523,52.113818],[177.669629,52.103027],[177.653027,52.059766],[177.595996,51.993848],[177.594141,51.947559],[177.41543,51.882812]]],[[[172.811816,53.012988],[172.983984,52.980273],[173.102148,52.995605],[173.25166,52.942676],[173.436035,52.852051],[173.394727,52.834766],[173.348242,52.824854],[173.302539,52.825928],[173.158691,52.810791],[173.080273,52.814453],[172.935156,52.7521],[172.775586,52.796924],[172.721777,52.885547],[172.595117,52.907422],[172.494824,52.937891],[172.67793,53.007568],[172.811816,53.012988]]],[[[-155.581348,19.012012],[-155.625635,18.963916],[-155.680762,18.967676],[-155.881299,19.070508],[-155.905615,19.12583],[-155.890723,19.38252],[-155.96582,19.59082],[-156.048682,19.749951],[-155.988428,19.831592],[-155.908887,19.894727],[-155.820312,20.01416],[-155.892773,20.167383],[-155.874268,20.259814],[-155.831641,20.27583],[-155.62207,20.163428],[-155.198779,19.994385],[-155.086084,19.875635],[-155.065918,19.748193],[-154.989014,19.731982],[-154.952588,19.644629],[-154.841357,19.568164],[-154.804199,19.524463],[-154.850293,19.454102],[-155.053467,19.319189],[-155.309619,19.260156],[-155.535254,19.109082],[-155.581348,19.012012]]],[[[-157.213623,21.215381],[-157.002295,21.187939],[-156.952344,21.199707],[-156.917188,21.177295],[-156.742188,21.163525],[-156.712158,21.155078],[-156.7479,21.103564],[-156.859863,21.056348],[-157.020898,21.097803],[-157.290332,21.112598],[-157.279492,21.152344],[-157.253809,21.180566],[-157.249951,21.229785],[-157.213623,21.215381]]],[[[-156.486816,20.932568],[-156.46084,20.914746],[-156.354395,20.941455],[-156.277539,20.95127],[-156.14834,20.885498],[-156.103516,20.840332],[-156.018652,20.79209],[-155.989844,20.757129],[-156.013574,20.714795],[-156.107129,20.644775],[-156.234766,20.628613],[-156.309961,20.598779],[-156.408789,20.605176],[-156.438232,20.617871],[-156.448877,20.70625],[-156.480078,20.801221],[-156.543848,20.78999],[-156.61543,20.821826],[-156.689697,20.901416],[-156.697754,20.949072],[-156.656885,21.024512],[-156.5854,21.034326],[-156.532324,20.992676],[-156.486816,20.932568]]],[[[-157.799365,21.456641],[-157.76499,21.450928],[-157.720898,21.457715],[-157.705518,21.378076],[-157.65415,21.333936],[-157.6354,21.307617],[-157.690869,21.279736],[-157.798779,21.268604],[-157.849316,21.29082],[-157.901758,21.340576],[-157.958447,21.326904],[-157.968311,21.366895],[-157.978418,21.378516],[-158.017285,21.367725],[-157.980957,21.316113],[-158.07915,21.312256],[-158.110352,21.318604],[-158.137842,21.377148],[-158.239111,21.489355],[-158.238672,21.533057],[-158.273145,21.585254],[-158.123096,21.600244],[-158.020361,21.691797],[-157.9625,21.701367],[-157.851514,21.553369],[-157.854346,21.511914],[-157.82959,21.471436],[-157.799365,21.456641]]],[[[-159.372754,21.932373],[-159.460693,21.876123],[-159.511865,21.900391],[-159.608838,21.909521],[-159.646387,21.951758],[-159.747998,21.989844],[-159.78916,22.041797],[-159.726611,22.140186],[-159.579199,22.223145],[-159.352051,22.21958],[-159.304785,22.154053],[-159.300684,22.105273],[-159.330176,22.050684],[-159.34375,21.973633],[-159.372754,21.932373]]],[[[-160.180029,21.841064],[-160.200244,21.796875],[-160.234717,21.803662],[-160.243457,21.843066],[-160.220898,21.897266],[-160.163867,21.944043],[-160.100635,22.015234],[-160.04873,22.004639],[-160.076709,21.958105],[-160.080029,21.907422],[-160.153418,21.87876],[-160.180029,21.841064]]],[[[-156.849609,20.772656],[-156.908887,20.744482],[-156.973389,20.75752],[-156.988428,20.825684],[-157.050586,20.912451],[-156.941797,20.930029],[-156.880566,20.904834],[-156.848291,20.877783],[-156.809375,20.831152],[-156.849609,20.772656]]],[[[-74.708887,45.003857],[-74.663232,45.003906],[-74.430371,45.004199],[-74.014258,45.004687],[-73.598145,45.005176],[-73.182031,45.005615],[-72.765918,45.006104],[-72.349756,45.006592],[-71.933643,45.00708],[-71.517529,45.007568],[-71.419043,45.200342],[-71.327295,45.290088],[-71.201611,45.260352],[-71.134668,45.262842],[-71.060254,45.309131],[-70.999902,45.337256],[-70.960156,45.333105],[-70.926221,45.290723],[-70.897998,45.262451],[-70.865039,45.270703],[-70.836816,45.310693],[-70.837793,45.366162],[-70.79917,45.404785],[-70.75332,45.410693],[-70.710938,45.409473],[-70.689795,45.42832],[-70.692139,45.455371],[-70.707422,45.498926],[-70.702246,45.551367],[-70.596387,45.643994],[-70.466602,45.706836],[-70.421094,45.738232],[-70.407861,45.801904],[-70.333447,45.868066],[-70.29624,45.906104],[-70.287158,45.93916],[-70.306445,45.979834],[-70.304492,46.057373],[-70.278906,46.15],[-70.248291,46.250879],[-70.179688,46.341846],[-70.067187,46.441064],[-70.038232,46.571436],[-70.007715,46.708936],[-69.871729,46.84292],[-69.717529,46.994873],[-69.629785,47.081348],[-69.471484,47.238672],[-69.358887,47.350635],[-69.302148,47.402002],[-69.242871,47.462988],[-69.146289,47.444775],[-69.050195,47.426611],[-69.064258,47.338135],[-69.048584,47.273633],[-69.003125,47.236426],[-68.937207,47.21123],[-68.887402,47.202832],[-68.828711,47.20332],[-68.668555,47.253467],[-68.480371,47.285791],[-68.376904,47.316162],[-68.358008,47.344531],[-68.310889,47.354492],[-68.235498,47.345947],[-68.096777,47.274854],[-67.934863,47.167627],[-67.806787,47.082812],[-67.802832,46.935742],[-67.800342,46.779883],[-67.797705,46.615625],[-67.795801,46.498389],[-67.792529,46.337402],[-67.789941,46.209326],[-67.786475,46.042139],[-67.784668,45.952783],[-67.767041,45.927002],[-67.777637,45.891797],[-67.782275,45.87417],[-67.781152,45.860156],[-67.774121,45.842529],[-67.775293,45.817871],[-67.791699,45.795557],[-67.799902,45.769775],[-67.802246,45.727539],[-67.784668,45.701709],[-67.755322,45.686475],[-67.730664,45.686475],[-67.698975,45.671191],[-67.65791,45.644189],[-67.595752,45.620752],[-67.531201,45.612549],[-67.486621,45.618408],[-67.432666,45.603125],[-67.413867,45.565576],[-67.424414,45.53042],[-67.454932,45.513965],[-67.487793,45.501025],[-67.493652,45.474072],[-67.477246,45.445898],[-67.45376,45.42124],[-67.42793,45.37793],[-67.438525,45.340381],[-67.461963,45.308691],[-67.472559,45.275879],[-67.452588,45.247656],[-67.399805,45.210156],[-67.366943,45.173779],[-67.315283,45.153809],[-67.290674,45.16792],[-67.270703,45.186719],[-67.249609,45.200781],[-67.213232,45.192529],[-67.170996,45.181982],[-67.124854,45.169434],[-67.130371,45.139014],[-67.102246,45.087744],[-67.080469,44.98916],[-67.113916,44.944385],[-67.106738,44.885059],[-67.014014,44.867773],[-66.991455,44.849609],[-66.987012,44.827686],[-67.19126,44.675586],[-67.364062,44.696875],[-67.457812,44.656543],[-67.556006,44.644775],[-67.599072,44.576807],[-67.652979,44.562402],[-67.726807,44.566504],[-67.790479,44.585693],[-67.839062,44.57627],[-67.907031,44.453613],[-67.962695,44.464307],[-67.984863,44.420166],[-68.013965,44.400879],[-68.056641,44.384326],[-68.093701,44.438818],[-68.117285,44.490625],[-68.152051,44.502002],[-68.198242,44.515234],[-68.245752,44.514795],[-68.277441,44.507373],[-68.316748,44.473877],[-68.37373,44.445117],[-68.416846,44.469092],[-68.450586,44.507617],[-68.479443,44.445654],[-68.521436,44.380225],[-68.514453,44.303906],[-68.53252,44.258643],[-68.572363,44.27085],[-68.612012,44.310547],[-68.723291,44.342285],[-68.811914,44.339355],[-68.793896,44.381738],[-68.710107,44.442578],[-68.735889,44.454492],[-68.777002,44.446045],[-68.794922,44.454492],[-68.765527,44.509766],[-68.762695,44.570752],[-68.800195,44.549414],[-68.847363,44.485059],[-68.961475,44.433838],[-68.956152,44.348096],[-69.063574,44.172363],[-69.068359,44.097559],[-69.137256,44.037842],[-69.226074,43.986475],[-69.344531,44.000928],[-69.434961,43.956299],[-69.480859,43.905078],[-69.520752,43.897363],[-69.541553,43.962598],[-69.556689,43.982764],[-69.58999,43.886572],[-69.623926,43.880615],[-69.636768,43.948828],[-69.652881,43.993896],[-69.699121,43.955029],[-69.729834,43.852002],[-69.762012,43.860693],[-69.772266,43.899023],[-69.795312,43.910645],[-69.803223,43.866846],[-69.791602,43.805225],[-69.80835,43.772314],[-69.840332,43.789893],[-69.87251,43.819531],[-69.925586,43.797021],[-69.974316,43.787891],[-69.974512,43.818066],[-69.965234,43.855078],[-70.062354,43.834619],[-70.178809,43.766357],[-70.269238,43.671924],[-70.237891,43.656201],[-70.202588,43.626123],[-70.359668,43.480225],[-70.520703,43.348828],[-70.642334,43.134424],[-70.691162,43.109326],[-70.733105,43.07002],[-70.777637,42.940576],[-70.829053,42.825342],[-70.800293,42.774023],[-70.781348,42.72124],[-70.735693,42.669287],[-70.696875,42.6646],[-70.654834,42.673975],[-70.623975,42.671777],[-70.60415,42.649707],[-70.612939,42.623242],[-70.661426,42.61665],[-70.751855,42.570361],[-70.831152,42.552588],[-70.870898,42.496631],[-70.930469,42.431982],[-71.046191,42.331104],[-70.996729,42.3],[-70.817969,42.264941],[-70.738281,42.228857],[-70.617676,42.04043],[-70.645215,42.021582],[-70.656152,41.987061],[-70.548926,41.938623],[-70.514697,41.80332],[-70.42666,41.757275],[-70.295459,41.728955],[-70.13501,41.769873],[-70.001416,41.826172],[-70.006104,41.872314],[-70.090039,41.979687],[-70.110254,42.030127],[-70.172559,42.062793],[-70.19624,42.035107],[-70.236523,42.071045],[-70.241064,42.091211],[-70.203516,42.101025],[-70.159863,42.097119],[-70.108936,42.07832],[-69.977881,41.961279],[-69.941602,41.807861],[-69.933838,41.710449],[-69.948633,41.677148],[-69.986768,41.683984],[-70.059521,41.677344],[-70.404687,41.626904],[-70.481348,41.582471],[-70.657129,41.534229],[-70.668066,41.558301],[-70.655371,41.608105],[-70.666455,41.710107],[-70.701123,41.714844],[-70.974219,41.548535],[-71.079785,41.538086],[-71.168555,41.489404],[-71.188428,41.516406],[-71.204297,41.641113],[-71.14873,41.745703],[-71.17832,41.744043],[-71.271094,41.68125],[-71.310742,41.719873],[-71.330615,41.762256],[-71.35918,41.78623],[-71.390137,41.795312],[-71.363672,41.702734],[-71.426562,41.633301],[-71.443799,41.453711],[-71.522852,41.378955],[-71.769287,41.330908],[-71.929932,41.341064],[-72.073877,41.326123],[-72.265283,41.29165],[-72.371045,41.312158],[-72.479395,41.275781],[-72.847168,41.265869],[-72.924707,41.285156],[-73.02373,41.216455],[-73.182275,41.17583],[-73.583008,41.021875],[-73.671387,40.965869],[-73.779004,40.878418],[-73.85127,40.831396],[-73.910693,40.816113],[-73.947217,40.776953],[-73.987109,40.751367],[-73.948584,40.83877],[-73.906738,40.912451],[-73.871973,41.055176],[-73.882227,41.170605],[-73.925342,41.218066],[-73.969922,41.249707],[-73.917676,41.135791],[-73.909229,40.996094],[-73.927197,40.914258],[-74.025488,40.756396],[-74.067334,40.719629],[-74.11626,40.687305],[-74.153125,40.673242],[-74.187158,40.647998],[-74.226709,40.608008],[-74.264209,40.528613],[-74.241504,40.45625],[-74.049854,40.429834],[-73.998437,40.452148],[-73.972266,40.400342],[-73.957617,40.328369],[-73.971973,40.250537],[-74.004004,40.171338],[-74.02832,40.072998],[-74.048926,39.923047],[-74.079932,39.788135],[-74.083984,39.829102],[-74.0646,39.993115],[-74.095996,39.975977],[-74.117627,39.938135],[-74.176123,39.726611],[-74.256543,39.613867],[-74.330615,39.535889],[-74.407031,39.548779],[-74.389844,39.486816],[-74.41084,39.454541],[-74.428809,39.387207],[-74.474365,39.342578],[-74.517187,39.346875],[-74.578711,39.316113],[-74.602979,39.292578],[-74.604785,39.24751],[-74.645947,39.207861],[-74.794482,39.001904],[-74.923437,38.941113],[-74.954297,38.949951],[-74.920312,39.047168],[-74.897021,39.145459],[-74.975293,39.188232],[-75.050195,39.21084],[-75.136133,39.207861],[-75.231055,39.284277],[-75.353418,39.339844],[-75.524219,39.490186],[-75.519238,39.531885],[-75.523535,39.601855],[-75.471631,39.712402],[-75.421875,39.789697],[-75.353174,39.829736],[-75.153809,39.870508],[-75.103809,39.931836],[-75.07417,39.983496],[-75.172949,39.894775],[-75.320898,39.864697],[-75.400635,39.831592],[-75.464404,39.780957],[-75.502148,39.717383],[-75.587598,39.640771],[-75.581592,39.589453],[-75.567285,39.552979],[-75.573877,39.476953],[-75.519824,39.402832],[-75.412646,39.281396],[-75.392187,39.092773],[-75.3104,38.966553],[-75.185059,38.819385],[-75.088672,38.777539],[-75.083984,38.722803],[-75.128467,38.632422],[-75.187109,38.591113],[-75.11084,38.599365],[-75.072852,38.578711],[-75.035889,38.50332],[-75.03877,38.426367],[-75.05127,38.383008],[-75.074365,38.365723],[-75.073389,38.41001],[-75.089746,38.425391],[-75.116748,38.406201],[-75.134229,38.384326],[-75.141504,38.298145],[-75.16001,38.255078],[-75.225439,38.242285],[-75.291797,38.129199],[-75.353516,38.065039],[-75.596387,37.631201],[-75.587109,37.558691],[-75.631543,37.535352],[-75.698828,37.516357],[-75.766895,37.472998],[-75.812061,37.425195],[-75.854004,37.296631],[-75.934375,37.151904],[-75.984521,37.212207],[-75.997363,37.263818],[-75.975049,37.398438],[-75.888135,37.619141],[-75.792383,37.756348],[-75.719336,37.821387],[-75.659277,37.953955],[-75.735156,37.97373],[-75.85083,37.971582],[-75.829053,38.032764],[-75.795312,38.08667],[-75.855615,38.140381],[-75.891309,38.147217],[-75.928076,38.169238],[-75.884961,38.213965],[-75.863916,38.26123],[-75.876758,38.31875],[-75.858691,38.362061],[-75.888818,38.355518],[-75.937256,38.309668],[-75.967383,38.291357],[-75.985742,38.331934],[-76.006689,38.322754],[-76.020312,38.294873],[-76.051221,38.279541],[-76.116504,38.317676],[-76.21167,38.361328],[-76.264648,38.436426],[-76.294873,38.494629],[-76.26416,38.599951],[-76.198389,38.618652],[-76.112939,38.601562],[-76.000928,38.601709],[-76.016943,38.625098],[-76.056934,38.62124],[-76.175,38.706689],[-76.212988,38.758301],[-76.27832,38.772461],[-76.308105,38.722852],[-76.341162,38.709668],[-76.300342,38.818213],[-76.246973,38.822656],[-76.168164,38.852734],[-76.191064,38.915576],[-76.24082,38.943066],[-76.330664,38.908594],[-76.32959,38.952783],[-76.312744,39.009375],[-76.24502,39.00918],[-76.185693,38.990723],[-76.135205,39.082129],[-76.132959,39.122949],[-76.216846,39.063623],[-76.235693,39.191602],[-76.153125,39.315039],[-76.074365,39.368848],[-75.975977,39.367285],[-75.875977,39.375977],[-75.938721,39.398584],[-76.003125,39.41084],[-75.954736,39.459619],[-75.913477,39.468359],[-75.872949,39.510889],[-75.97041,39.50459],[-75.958936,39.585059],[-76.006299,39.568701],[-76.062988,39.561133],[-76.085059,39.527002],[-76.080713,39.470312],[-76.097266,39.433105],[-76.141357,39.403223],[-76.21582,39.379932],[-76.223047,39.420312],[-76.247656,39.438623],[-76.256836,39.352148],[-76.276367,39.322754],[-76.330811,39.403906],[-76.347168,39.387549],[-76.345068,39.364502],[-76.358984,39.324658],[-76.405664,39.303906],[-76.402783,39.252832],[-76.420898,39.225],[-76.57041,39.269336],[-76.573926,39.254297],[-76.489355,39.158691],[-76.427588,39.126025],[-76.420068,39.073877],[-76.473096,39.030615],[-76.54624,39.067969],[-76.558545,39.065234],[-76.518799,39.001172],[-76.49375,38.945215],[-76.519531,38.89834],[-76.515527,38.840625],[-76.521094,38.788281],[-76.536865,38.742627],[-76.501318,38.532178],[-76.458496,38.474951],[-76.416406,38.420215],[-76.394092,38.368994],[-76.43877,38.361523],[-76.509912,38.403662],[-76.572412,38.435791],[-76.646875,38.538525],[-76.65918,38.579541],[-76.677344,38.611963],[-76.668555,38.5375],[-76.641992,38.454346],[-76.408789,38.268262],[-76.365723,38.196875],[-76.33291,38.140771],[-76.341162,38.087012],[-76.401953,38.125049],[-76.454395,38.173535],[-76.593604,38.22832],[-76.769141,38.262939],[-76.868115,38.390283],[-76.867773,38.337158],[-76.889746,38.29209],[-76.950244,38.347021],[-76.988379,38.393896],[-77.001172,38.445264],[-77.076709,38.441748],[-77.155908,38.397119],[-77.23252,38.407715],[-77.241602,38.494824],[-77.220898,38.540967],[-77.134912,38.650098],[-77.053906,38.705811],[-77.018164,38.777734],[-77.030371,38.889258],[-77.045605,38.775781],[-77.091895,38.719531],[-77.164648,38.676562],[-77.2604,38.6],[-77.283789,38.529199],[-77.313672,38.396631],[-77.273242,38.351758],[-77.231934,38.340039],[-77.109912,38.370117],[-77.046777,38.356689],[-76.906348,38.19707],[-76.644873,38.133936],[-76.549512,38.094482],[-76.471777,38.011182],[-76.354932,37.963232],[-76.264258,37.893555],[-76.261816,37.848096],[-76.293213,37.794336],[-76.305615,37.721582],[-76.344141,37.675684],[-76.436621,37.67041],[-76.49248,37.682227],[-76.792773,37.937988],[-76.828613,37.961523],[-76.93999,38.095459],[-77.070654,38.167187],[-77.111084,38.165674],[-76.925098,38.033008],[-76.84917,37.940234],[-76.71543,37.810156],[-76.619824,37.755078],[-76.549463,37.669141],[-76.484082,37.628857],[-76.305566,37.571484],[-76.367627,37.530273],[-76.268555,37.495166],[-76.254395,37.430615],[-76.263477,37.357031],[-76.400977,37.386133],[-76.405469,37.331934],[-76.393164,37.299951],[-76.453906,37.273535],[-76.538379,37.309375],[-76.757715,37.50542],[-76.755859,37.479199],[-76.738086,37.448779],[-76.610889,37.322559],[-76.497363,37.246875],[-76.401123,37.212695],[-76.326953,37.149268],[-76.300781,37.110889],[-76.283301,37.052686],[-76.338281,37.013135],[-76.400879,36.991309],[-76.462012,37.030762],[-76.506836,37.072314],[-76.602295,37.142871],[-76.630908,37.221729],[-76.703516,37.217676],[-77.006982,37.317676],[-77.250879,37.329199],[-77.227051,37.309082],[-77.196191,37.295703],[-77.001953,37.271045],[-76.925195,37.225],[-76.76543,37.184131],[-76.671875,37.172949],[-76.633936,37.047412],[-76.504639,36.961035],[-76.487842,36.897021],[-76.399561,36.889844],[-76.244238,36.952637],[-76.143994,36.930615],[-75.999414,36.912646],[-75.966357,36.861963],[-75.941553,36.765527],[-75.89043,36.657031],[-75.757861,36.229248],[-75.558691,35.879346],[-75.53418,35.819092],[-75.580469,35.871973],[-75.728223,36.103711],[-75.809766,36.271045],[-75.893555,36.566504],[-75.917871,36.632666],[-75.946484,36.659082],[-75.965332,36.637598],[-75.973437,36.599951],[-75.959766,36.571045],[-75.992773,36.473779],[-75.978467,36.42915],[-75.924854,36.383008],[-75.866602,36.267871],[-75.820068,36.112842],[-75.883008,36.175684],[-75.950195,36.208984],[-76.054736,36.234521],[-76.147852,36.279297],[-76.141064,36.215088],[-76.15,36.145752],[-76.221777,36.166895],[-76.270605,36.189893],[-76.227393,36.116016],[-76.321191,36.138184],[-76.383691,36.133545],[-76.424316,36.067969],[-76.478809,36.028174],[-76.559375,36.015332],[-76.678906,36.075293],[-76.717627,36.148096],[-76.733643,36.22915],[-76.740039,36.133301],[-76.71875,36.033496],[-76.726221,35.957617],[-76.611133,35.943652],[-76.503516,35.956055],[-76.358301,35.952881],[-76.263574,35.96709],[-76.206543,35.991211],[-76.069775,35.970312],[-76.060059,35.878662],[-76.075684,35.787549],[-76.083594,35.690527],[-76.045703,35.691162],[-76.001172,35.722168],[-75.978906,35.895947],[-75.853906,35.960156],[-75.812012,35.955762],[-75.772217,35.899902],[-75.758838,35.843262],[-75.744727,35.765479],[-75.773926,35.646973],[-75.965967,35.508398],[-76.103516,35.380273],[-76.173828,35.35415],[-76.275244,35.369043],[-76.390234,35.40127],[-76.446631,35.407764],[-76.489502,35.397021],[-76.515625,35.436475],[-76.532471,35.508447],[-76.577197,35.532324],[-76.611035,35.529687],[-76.634131,35.453223],[-76.741406,35.431494],[-76.887256,35.463086],[-77.03999,35.527393],[-76.974463,35.458398],[-76.595459,35.329687],[-76.552783,35.305615],[-76.512939,35.27041],[-76.565967,35.215186],[-76.60752,35.152979],[-76.613379,35.10415],[-76.628027,35.07334],[-76.77915,34.990332],[-76.861035,35.00498],[-77.070264,35.154639],[-76.974951,35.025195],[-76.898633,34.970264],[-76.744971,34.940967],[-76.456738,34.989355],[-76.362207,34.936523],[-76.439795,34.84292],[-76.516895,34.777246],[-76.618018,34.769922],[-76.70708,34.752148],[-76.733203,34.706982],[-76.79668,34.70415],[-76.895898,34.701465],[-77.049512,34.697363],[-77.133887,34.70791],[-77.251758,34.615625],[-77.29624,34.60293],[-77.358398,34.620264],[-77.384473,34.694385],[-77.412256,34.730811],[-77.412939,34.592139],[-77.402051,34.554785],[-77.379785,34.526611],[-77.517676,34.451367],[-77.649658,34.35752],[-77.696973,34.331982],[-77.750732,34.284961],[-77.86084,34.14917],[-77.888037,34.050146],[-77.927832,33.939746],[-77.932861,33.989453],[-77.926025,34.073145],[-77.953271,34.168994],[-77.970557,33.993408],[-78.01333,33.911816],[-78.405859,33.917578],[-78.577686,33.873242],[-78.841455,33.724072],[-78.920312,33.658691],[-79.138184,33.405908],[-79.193799,33.244141],[-79.238379,33.312158],[-79.227344,33.363184],[-79.226465,33.404883],[-79.281348,33.31543],[-79.229248,33.185156],[-79.276025,33.1354],[-79.419922,33.042529],[-79.498682,33.027295],[-79.587109,33.000879],[-79.614941,32.909277],[-79.73501,32.824805],[-79.80498,32.787402],[-79.933105,32.810059],[-79.893652,32.728711],[-79.940723,32.667139],[-80.021777,32.619922],[-80.122559,32.589111],[-80.180322,32.592871],[-80.229687,32.576514],[-80.268359,32.537354],[-80.362842,32.500732],[-80.460986,32.521338],[-80.572217,32.533691],[-80.63418,32.511719],[-80.530029,32.475391],[-80.474268,32.422754],[-80.485742,32.351807],[-80.513623,32.324414],[-80.579346,32.287305],[-80.608203,32.292822],[-80.62583,32.32627],[-80.647217,32.395947],[-80.677783,32.381104],[-80.683057,32.348633],[-80.709326,32.337061],[-80.802539,32.448047],[-80.7979,32.363379],[-80.765332,32.29834],[-80.733838,32.265332],[-80.702051,32.245898],[-80.694238,32.215723],[-80.758008,32.142187],[-80.79082,32.12583],[-80.849219,32.113916],[-80.88208,32.068604],[-80.872363,32.02959],[-80.923437,31.944922],[-81.045557,31.892041],[-81.082861,31.894092],[-81.113281,31.878613],[-81.095508,31.840918],[-81.065039,31.813477],[-81.066113,31.787988],[-81.098389,31.753369],[-81.162109,31.743701],[-81.1979,31.704199],[-81.186572,31.666943],[-81.165527,31.646143],[-81.169922,31.610303],[-81.242383,31.574316],[-81.259375,31.538916],[-81.223389,31.528467],[-81.195703,31.538916],[-81.175439,31.531299],[-81.218896,31.472119],[-81.25791,31.436035],[-81.294971,31.371191],[-81.380957,31.353271],[-81.377734,31.332324],[-81.32915,31.31377],[-81.288477,31.263916],[-81.364893,31.171875],[-81.412598,31.179443],[-81.441748,31.199707],[-81.460352,31.127051],[-81.453223,31.088281],[-81.471387,31.009033],[-81.500586,30.91377],[-81.52041,30.874658],[-81.516211,30.801807],[-81.503955,30.731445],[-81.457178,30.640771],[-81.385742,30.269971],[-81.337109,30.141211],[-81.249512,29.793799],[-81.104541,29.456982],[-80.9,29.049854],[-80.564307,28.556396],[-80.524121,28.486084],[-80.567822,28.426465],[-80.581152,28.364697],[-80.584961,28.271582],[-80.572852,28.180859],[-80.533154,28.070068],[-80.456885,27.900684],[-80.499561,27.934473],[-80.61001,28.177588],[-80.622852,28.320361],[-80.606934,28.5229],[-80.632861,28.518018],[-80.653906,28.452197],[-80.665479,28.374902],[-80.693506,28.344971],[-80.731738,28.462891],[-80.729053,28.516211],[-80.688477,28.578516],[-80.700244,28.600928],[-80.765918,28.632812],[-80.779883,28.682959],[-80.770996,28.732471],[-80.808691,28.758936],[-80.838184,28.757666],[-80.818408,28.635596],[-80.787207,28.560645],[-80.748633,28.381006],[-80.686377,28.272168],[-80.650098,28.180908],[-80.226123,27.207031],[-80.125781,27.083008],[-80.088672,26.993945],[-80.050049,26.807715],[-80.041309,26.568604],[-80.110596,26.131592],[-80.126367,25.833496],[-80.136279,25.842627],[-80.14292,25.874023],[-80.158936,25.87832],[-80.219092,25.741748],[-80.30083,25.618555],[-80.327734,25.4271],[-80.366943,25.33125],[-80.484668,25.229834],[-80.557617,25.232422],[-80.736523,25.156348],[-80.862207,25.176172],[-81.011963,25.133252],[-81.110498,25.138037],[-81.167383,25.228516],[-81.158691,25.268994],[-81.136035,25.309668],[-81.097656,25.319141],[-80.965381,25.224316],[-80.94043,25.264209],[-80.980371,25.31167],[-81.056836,25.338135],[-81.11333,25.367236],[-81.227148,25.583398],[-81.345068,25.731836],[-81.364941,25.831055],[-81.568262,25.891553],[-81.715479,25.983154],[-81.811475,26.146094],[-81.866553,26.43501],[-81.931494,26.46748],[-81.958936,26.489941],[-81.895508,26.597168],[-81.828662,26.687061],[-81.881543,26.664697],[-81.920557,26.631445],[-81.970166,26.552051],[-82.006396,26.539844],[-82.0396,26.552051],[-82.077881,26.704346],[-82.066943,26.891553],[-82.013281,26.961572],[-82.095703,26.963428],[-82.181104,26.936768],[-82.168604,26.874365],[-82.180664,26.840088],[-82.242871,26.848877],[-82.290039,26.870801],[-82.354053,26.935742],[-82.441357,27.059668],[-82.620459,27.401074],[-82.655371,27.449219],[-82.7146,27.499609],[-82.686719,27.515283],[-82.63584,27.524561],[-82.52085,27.678271],[-82.430518,27.771143],[-82.400537,27.8354],[-82.405762,27.862891],[-82.445703,27.902832],[-82.498145,27.86792],[-82.520605,27.877881],[-82.57959,27.958447],[-82.635937,27.981201],[-82.675195,27.96377],[-82.633789,27.897754],[-82.596582,27.873242],[-82.610986,27.777246],[-82.626025,27.745996],[-82.660889,27.718408],[-82.715332,27.733105],[-82.742871,27.709375],[-82.775293,27.734375],[-82.807568,27.776562],[-82.843506,27.845996],[-82.748535,28.236816],[-82.660645,28.48584],[-82.650586,28.769922],[-82.644043,28.812012],[-82.651465,28.8875],[-82.769336,29.051562],[-83.290479,29.451904],[-83.694385,29.925977],[-84.044238,30.103809],[-84.309668,30.064746],[-84.355615,30.029004],[-84.375342,29.982275],[-84.358691,29.929395],[-84.382812,29.907373],[-84.454053,29.910156],[-84.55,29.897852],[-84.800537,29.773047],[-84.888916,29.777637],[-84.969189,29.745312],[-85.029297,29.721094],[-85.186035,29.70791],[-85.318945,29.680225],[-85.376367,29.695215],[-85.413818,29.767578],[-85.413818,29.84248],[-85.383447,29.785059],[-85.336426,29.740137],[-85.314893,29.758105],[-85.306836,29.797852],[-85.353613,29.875732],[-85.504297,29.975781],[-85.675781,30.121924],[-85.623486,30.11709],[-85.610254,30.148389],[-85.663428,30.189453],[-85.640967,30.236914],[-85.603516,30.286768],[-85.675879,30.279297],[-85.74082,30.244385],[-85.742969,30.20127],[-85.755811,30.166992],[-85.790771,30.171973],[-85.855664,30.214404],[-86.175146,30.33252],[-86.454443,30.399121],[-86.240088,30.429102],[-86.123828,30.405811],[-86.137695,30.441553],[-86.165674,30.464258],[-86.257373,30.493018],[-86.37417,30.48208],[-86.447949,30.495605],[-86.523389,30.46709],[-86.606055,30.424707],[-86.679639,30.402881],[-86.967627,30.372363],[-87.201172,30.339258],[-87.163721,30.374219],[-87.123779,30.39668],[-86.985791,30.430859],[-86.965137,30.501904],[-86.997559,30.570312],[-87.033887,30.553906],[-87.072021,30.500439],[-87.118799,30.538965],[-87.170605,30.53877],[-87.184668,30.453711],[-87.251074,30.39668],[-87.281055,30.339258],[-87.475781,30.294287],[-87.500732,30.309277],[-87.44375,30.363818],[-87.448291,30.394141],[-87.513281,30.368115],[-87.622266,30.264746],[-88.005957,30.230908],[-87.98501,30.254395],[-87.904004,30.259082],[-87.790283,30.291797],[-87.813281,30.346875],[-87.857129,30.407422],[-87.897607,30.41416],[-87.924316,30.449658],[-87.922998,30.561523],[-87.948877,30.626904],[-88.011328,30.694189],[-88.032422,30.68125],[-88.078369,30.566211],[-88.116553,30.415332],[-88.135449,30.366602],[-88.249219,30.363184],[-88.349902,30.373486],[-88.69209,30.355371],[-88.819922,30.406494],[-88.872949,30.416309],[-88.905225,30.415137],[-89.054053,30.368262],[-89.223633,30.332373],[-89.263574,30.343652],[-89.320557,30.345312],[-89.443506,30.223145],[-89.588477,30.165967],[-89.954248,30.26875],[-90.045215,30.351416],[-90.125977,30.369092],[-90.225293,30.379297],[-90.331982,30.277588],[-90.413037,30.140332],[-90.284961,30.065088],[-90.175342,30.029102],[-89.994189,30.059277],[-89.894043,30.125879],[-89.812256,30.123682],[-89.773145,30.137207],[-89.737451,30.171973],[-89.667529,30.144531],[-89.665039,30.117041],[-89.714697,30.07832],[-89.777246,30.045703],[-89.815186,30.007275],[-89.743799,29.929834],[-89.631689,29.903809],[-89.589502,29.915039],[-89.563379,30.0021],[-89.494434,30.058154],[-89.400732,30.046045],[-89.414062,30.010889],[-89.400928,29.977686],[-89.357861,29.920996],[-89.362793,29.839795],[-89.354443,29.820215],[-89.45542,29.784375],[-89.530664,29.772217],[-89.590869,29.725293],[-89.559326,29.698047],[-89.620654,29.674121],[-89.662109,29.683691],[-89.682959,29.674854],[-89.689209,29.646045],[-89.720898,29.619287],[-89.674805,29.538672],[-89.580322,29.486035],[-89.513672,29.420068],[-89.245703,29.333203],[-89.180762,29.335693],[-89.116846,29.248242],[-89.065332,29.218164],[-89.015723,29.202881],[-89.021387,29.142725],[-89.109521,29.098682],[-89.13335,29.046143],[-89.155518,29.016602],[-89.195264,29.054004],[-89.236084,29.081104],[-89.330566,28.998682],[-89.376123,28.981348],[-89.353516,29.070215],[-89.389209,29.105029],[-89.443164,29.194141],[-89.521777,29.249268],[-89.577148,29.267529],[-89.620264,29.302393],[-89.672461,29.316504],[-89.716992,29.312891],[-89.792383,29.333203],[-89.797363,29.380615],[-89.818262,29.416113],[-89.877246,29.458008],[-90.159082,29.537158],[-90.160791,29.504395],[-90.14126,29.479736],[-90.100781,29.46333],[-90.052344,29.431396],[-90.052783,29.336816],[-90.07373,29.296777],[-90.082715,29.239746],[-90.101367,29.181787],[-90.13584,29.136084],[-90.212793,29.104932],[-90.246729,29.131006],[-90.301611,29.255811],[-90.379199,29.295117],[-90.50249,29.299756],[-90.58623,29.271533],[-90.67749,29.150635],[-90.751025,29.130859],[-91.002734,29.193506],[-91.290137,29.288965],[-91.282715,29.320752],[-91.2375,29.330957],[-91.150781,29.31792],[-91.155371,29.350684],[-91.243994,29.457324],[-91.260254,29.505469],[-91.248828,29.564209],[-91.277734,29.562891],[-91.330957,29.513574],[-91.514209,29.555371],[-91.564795,29.605322],[-91.672461,29.746094],[-91.824414,29.750684],[-91.893164,29.836035],[-92.017334,29.800293],[-92.080225,29.760742],[-92.135498,29.699463],[-92.113965,29.667676],[-92.058887,29.617188],[-92.084033,29.592822],[-92.26084,29.556836],[-92.671289,29.59707],[-92.791309,29.634668],[-92.952393,29.71416],[-93.175684,29.778955],[-93.283203,29.789404],[-93.388477,29.776562],[-93.694824,29.769922],[-93.765918,29.752686],[-93.826465,29.725146],[-93.865723,29.755615],[-93.883887,29.81001],[-93.84834,29.818848],[-93.808789,29.85083],[-93.773096,29.914062],[-93.769043,29.952295],[-93.793994,29.977246],[-93.841455,29.979736],[-93.946289,29.81499],[-93.886377,29.722656],[-93.890479,29.689355],[-94.099658,29.67041],[-94.574463,29.484521],[-94.759619,29.384277],[-94.750146,29.418018],[-94.52627,29.547949],[-94.605322,29.567822],[-94.732617,29.535352],[-94.778271,29.547852],[-94.724365,29.655273],[-94.741943,29.75],[-94.832324,29.752588],[-94.889893,29.676953],[-94.929883,29.680176],[-94.982275,29.712598],[-95.022852,29.702344],[-94.992822,29.530957],[-94.935889,29.460449],[-94.888281,29.370557],[-95.018311,29.259473],[-95.139062,29.167822],[-95.152148,29.079248],[-95.273486,28.963867],[-95.387646,28.898438],[-95.655859,28.744629],[-95.732373,28.711719],[-95.853418,28.640332],[-96.02041,28.586816],[-96.180518,28.501855],[-96.234521,28.488965],[-96.132275,28.560889],[-96.011035,28.631934],[-96.115039,28.622217],[-96.275342,28.655127],[-96.373437,28.657031],[-96.374121,28.631104],[-96.44873,28.594482],[-96.526025,28.648291],[-96.559717,28.684473],[-96.575684,28.715723],[-96.608496,28.723291],[-96.640039,28.708789],[-96.524658,28.488721],[-96.475488,28.479199],[-96.421094,28.457324],[-96.488818,28.406055],[-96.561719,28.367139],[-96.676367,28.341309],[-96.773535,28.421631],[-96.79458,28.32085],[-96.806885,28.220215],[-96.839502,28.194385],[-96.891602,28.157568],[-96.919873,28.185352],[-96.933301,28.224268],[-96.96665,28.189551],[-97.015479,28.163477],[-97.096045,28.158252],[-97.156494,28.144336],[-97.155078,28.102637],[-97.14126,28.060742],[-97.034326,28.093848],[-97.073096,27.986084],[-97.171436,27.87959],[-97.251562,27.854443],[-97.374121,27.87002],[-97.404395,27.859326],[-97.431494,27.837207],[-97.288721,27.670605],[-97.380469,27.419336],[-97.439111,27.328271],[-97.479785,27.316602],[-97.523877,27.313965],[-97.682129,27.394922],[-97.768457,27.45752],[-97.692383,27.287158],[-97.485107,27.237402],[-97.474512,27.172949],[-97.475684,27.117871],[-97.516504,27.053223],[-97.554688,26.967334],[-97.526514,26.90752],[-97.493799,26.759619],[-97.46582,26.691748],[-97.435059,26.48584],[-97.402344,26.396533],[-97.213916,26.067871],[-97.150391,26.065332],[-97.140186,26.029736],[-97.14624,25.961475],[-97.281787,25.941602],[-97.338672,25.911182],[-97.349756,25.884766],[-97.358154,25.870508],[-97.375635,25.871826],[-97.440283,25.89082],[-97.587256,25.98418],[-97.801416,26.042041],[-98.082812,26.064453],[-98.275049,26.111182],[-98.378125,26.182373],[-98.485889,26.224561],[-98.598291,26.237842],[-98.691406,26.276465],[-98.765234,26.34043],[-98.873193,26.38125],[-99.015283,26.398975],[-99.107764,26.446924],[-99.17207,26.56416],[-99.172363,26.565918],[-99.229932,26.761914],[-99.302441,26.884717],[-99.443555,27.03667],[-99.456494,27.056641],[-99.456543,27.056689],[-99.457715,27.081689],[-99.440234,27.170117],[-99.455127,27.233691],[-99.499805,27.285498],[-99.510059,27.340332],[-99.48584,27.398047],[-99.484277,27.467383],[-99.505322,27.54834],[-99.595312,27.635889],[-99.754248,27.729932],[-99.889648,27.867285],[-100.001416,28.047852],[-100.111963,28.172949],[-100.221289,28.242627],[-100.296045,28.327686],[-100.336279,28.428125],[-100.348145,28.486426],[-100.331738,28.502539],[-100.398926,28.614209],[-100.549707,28.821338],[-100.636328,28.972803],[-100.658643,29.068555],[-100.75459,29.18252],[-100.924121,29.314697],[-101.016309,29.400684],[-101.038623,29.460303],[-101.038965,29.4604],[-101.303516,29.634082],[-101.380371,29.742578],[-101.440381,29.776855],[-101.509277,29.773145],[-101.544629,29.783545],[-101.546387,29.808057],[-101.568701,29.809229],[-101.611621,29.786963],[-101.752344,29.782471],[-101.990918,29.795703],[-102.163086,29.825244],[-102.268945,29.871191],[-102.343066,29.86499],[-102.385645,29.806641],[-102.47627,29.769092],[-102.614941,29.752344],[-102.73418,29.643945],[-102.833984,29.443945],[-102.877832,29.315332],[-102.865674,29.258008],[-102.891992,29.216406],[-102.956836,29.190381],[-103.022852,29.132227],[-103.08999,29.041895],[-103.168311,28.998193],[-103.257715,29.001123],[-103.422949,29.070703],[-103.663965,29.206885],[-103.85293,29.291064],[-103.989746,29.323145],[-104.110596,29.386133],[-104.215527,29.479883],[-104.312207,29.542432],[-104.400635,29.57373],[-104.504004,29.677686],[-104.622217,29.854297],[-104.681348,29.990527],[-104.681348,30.134375],[-104.835889,30.447656],[-104.917871,30.58335],[-104.978809,30.645947],[-105.098145,30.720557],[-105.27583,30.807275],[-105.514014,30.980762],[-105.812695,31.241016],[-106.024072,31.397754],[-106.148047,31.450928],[-106.255713,31.544678],[-106.346973,31.679004],[-106.436035,31.764453],[-106.44541,31.768408],[-106.453223,31.770166],[-106.673047,31.771338],[-106.892871,31.772461],[-107.112695,31.773633],[-107.33252,31.774756],[-107.552344,31.775879],[-107.772217,31.777051],[-107.992041,31.778174],[-108.211816,31.779346],[-108.2125,31.666846],[-108.213184,31.554395],[-108.213818,31.441895],[-108.214453,31.329443],[-108.567871,31.328809],[-108.921338,31.328125],[-109.274756,31.327441],[-109.628223,31.326807],[-109.981641,31.326172],[-110.335107,31.325537],[-110.688525,31.324854],[-111.041992,31.324219],[-111.516211,31.472266],[-111.990479,31.620215],[-112.464746,31.768262],[-112.938965,31.91626],[-113.413184,32.064307],[-113.887451,32.212305],[-114.361719,32.360303],[-114.835938,32.508301],[-114.787988,32.564795],[-114.724756,32.715332],[-114.839062,32.704736],[-115.125195,32.683301],[-115.411377,32.661865],[-115.69751,32.640479],[-115.983691,32.619043],[-116.269824,32.597607],[-116.555957,32.576221],[-116.84209,32.554785],[-117.128271,32.53335],[-117.130469,32.539746],[-117.137402,32.64917],[-117.18374,32.687891],[-117.243457,32.664014],[-117.270703,32.80625],[-117.255762,32.873389],[-117.262988,32.938867],[-117.318848,33.100049],[-117.467432,33.295508],[-117.788525,33.538477],[-117.9521,33.619629],[-118.080518,33.722168],[-118.161914,33.750684],[-118.264404,33.758594],[-118.294189,33.712305],[-118.410449,33.743945],[-118.392969,33.858301],[-118.506201,34.017383],[-118.598828,34.03501],[-118.832031,34.024463],[-119.14375,34.112012],[-119.23584,34.164111],[-119.267676,34.257422],[-119.413672,34.338574],[-119.606055,34.418018],[-119.713184,34.399658],[-119.85332,34.411963],[-120.052979,34.469287],[-120.169531,34.476465],[-120.396484,34.45957],[-120.481201,34.471631],[-120.559814,34.543896],[-120.644678,34.57998],[-120.626709,34.668945],[-120.637598,34.749365],[-120.624902,34.811963],[-120.663037,34.949268],[-120.633594,35.076465],[-120.659082,35.122412],[-120.707031,35.157666],[-120.857373,35.209668],[-120.884863,35.274951],[-120.860303,35.36543],[-120.899609,35.425098],[-121.022852,35.480762],[-121.137939,35.607129],[-121.283838,35.676318],[-121.343848,35.792236],[-121.43374,35.863867],[-121.46499,35.927393],[-121.664355,36.154053],[-121.877393,36.331055],[-121.910156,36.43291],[-121.918652,36.572363],[-121.835156,36.657471],[-121.78999,36.732275],[-121.794531,36.800977],[-121.807422,36.851221],[-121.880664,36.938916],[-122.164209,36.990967],[-122.394922,37.20752],[-122.408447,37.373145],[-122.499219,37.542627],[-122.500439,37.652783],[-122.514209,37.771973],[-122.445605,37.797998],[-122.384082,37.788525],[-122.390283,37.741064],[-122.369727,37.655859],[-122.297607,37.591846],[-122.228662,37.563916],[-122.166016,37.50166],[-122.119043,37.482812],[-122.070508,37.478271],[-122.096533,37.518213],[-122.124121,37.543799],[-122.158057,37.626465],[-122.222217,37.732031],[-122.295996,37.790332],[-122.333447,37.896582],[-122.365479,37.921191],[-122.385449,37.960596],[-122.314258,38.007324],[-122.217041,38.040625],[-122.086719,38.049609],[-121.716846,38.034082],[-121.638086,38.061279],[-121.572998,38.052393],[-121.525342,38.055908],[-121.625732,38.083936],[-121.682227,38.074805],[-121.748633,38.080469],[-121.880762,38.075],[-121.93418,38.086816],[-121.993115,38.120117],[-122.031494,38.123535],[-122.15376,38.065527],[-122.208301,38.072559],[-122.337109,38.135889],[-122.393359,38.144824],[-122.483887,38.108838],[-122.494922,37.953564],[-122.466895,37.838184],[-122.521338,37.826416],[-122.58418,37.874072],[-122.680713,37.902344],[-122.7604,37.945654],[-122.872949,38.026074],[-122.931982,38.055469],[-122.998779,37.988623],[-123.001465,38.019287],[-122.968164,38.097021],[-122.977588,38.227344],[-122.876807,38.12334],[-122.908154,38.196582],[-122.986523,38.2771],[-123.046191,38.305078],[-123.121143,38.449268],[-123.289746,38.53584],[-123.424805,38.675635],[-123.701123,38.907275],[-123.719531,39.110986],[-123.820312,39.368408],[-123.777783,39.514941],[-123.783496,39.618701],[-123.83291,39.775488],[-123.884473,39.860791],[-124.108496,40.094531],[-124.324023,40.251953],[-124.356543,40.371094],[-124.37168,40.491211],[-124.324512,40.598096],[-124.283691,40.710547],[-124.253906,40.740283],[-124.242334,40.727881],[-124.250586,40.703906],[-124.22002,40.696484],[-124.208447,40.746094],[-124.190234,40.771729],[-124.22251,40.775049],[-124.219189,40.790723],[-124.199902,40.82207],[-124.133105,40.969775],[-124.140039,41.155908],[-124.068506,41.38418],[-124.071924,41.459521],[-124.117676,41.621729],[-124.163232,41.718994],[-124.244629,41.787939],[-124.20874,41.888574],[-124.21167,41.984619],[-124.355273,42.1229],[-124.41001,42.304346],[-124.420508,42.381006],[-124.406152,42.583691],[-124.443799,42.670215],[-124.539648,42.812891],[-124.498584,42.936865],[-124.454443,43.012354],[-124.346582,43.34165],[-124.320605,43.368213],[-124.275488,43.367383],[-124.196924,43.42334],[-124.233154,43.436377],[-124.287988,43.409717],[-124.239209,43.540039],[-124.184375,43.651562],[-124.14873,43.691748],[-124.130664,44.055664],[-124.09917,44.333789],[-124.047461,44.425488],[-124.06543,44.520068],[-124.044531,44.648242],[-124.05918,44.777734],[-123.948584,45.40083],[-123.963086,45.476074],[-123.929346,45.576953],[-123.96123,45.842969],[-123.947119,46.140576],[-123.975244,46.17832],[-123.989307,46.219385],[-123.962939,46.225439],[-123.91167,46.182178],[-123.673633,46.182617],[-123.521631,46.222656],[-123.466357,46.209424],[-123.402295,46.15498],[-123.321582,46.143994],[-123.220605,46.153613],[-123.251318,46.167285],[-123.298682,46.17085],[-123.404736,46.220996],[-123.464844,46.271094],[-123.650342,46.267725],[-123.688379,46.299854],[-123.895703,46.267773],[-123.959766,46.300732],[-124.072754,46.279443],[-124.045117,46.3729],[-124.050195,46.490527],[-124.044336,46.605078],[-124.016406,46.521387],[-123.946143,46.432568],[-123.912402,46.53335],[-123.88916,46.66001],[-123.957715,46.708691],[-124.07168,46.744775],[-124.112549,46.862695],[-123.842871,46.963184],[-123.986035,46.984473],[-124.042236,47.029687],[-124.111719,47.035205],[-124.116797,47.000342],[-124.139258,46.954687],[-124.163574,47.015332],[-124.170508,47.08667],[-124.198828,47.208545],[-124.309277,47.40459],[-124.376025,47.658643],[-124.460059,47.784229],[-124.621094,47.90415],[-124.663086,47.974121],[-124.70166,48.15166],[-124.67998,48.285889],[-124.709961,48.380371],[-124.632617,48.375049],[-124.429053,48.300781],[-124.175488,48.242432],[-124.098779,48.2],[-123.975781,48.168457],[-123.294434,48.119531],[-123.249902,48.124219],[-123.161865,48.154541],[-123.124414,48.150928],[-123.024219,48.081592],[-122.973877,48.073291],[-122.908887,48.076904],[-122.860889,48.090039],[-122.778613,48.137598],[-122.767529,48.12002],[-122.769092,48.075977],[-122.739746,48.013232],[-122.679492,47.931787],[-122.656641,47.881152],[-122.778418,47.738428],[-122.801758,47.735352],[-122.805371,47.783643],[-122.821387,47.793164],[-123.050635,47.551953],[-123.131055,47.437744],[-123.139062,47.386084],[-123.136328,47.355811],[-123.104199,47.348389],[-123.030908,47.360205],[-122.922168,47.407666],[-122.916895,47.417969],[-123.018213,47.401074],[-123.066797,47.399658],[-123.060156,47.453662],[-123.048633,47.479346],[-122.982471,47.559375],[-122.912891,47.607373],[-122.814063,47.658545],[-122.757129,47.700537],[-122.717871,47.762109],[-122.608154,47.835498],[-122.587891,47.855957],[-122.592676,47.916406],[-122.585742,47.927881],[-122.532813,47.919727],[-122.510791,47.815723],[-122.523926,47.769336],[-122.618408,47.712793],[-122.630176,47.692822],[-122.613623,47.615625],[-122.628271,47.608154],[-122.664307,47.617236],[-122.675488,47.612354],[-122.58584,47.528418],[-122.557422,47.463184],[-122.553564,47.404932],[-122.577881,47.293164],[-122.603906,47.274609],[-122.648633,47.281445],[-122.707715,47.316406],[-122.720898,47.305127],[-122.767773,47.218359],[-122.783301,47.225977],[-122.812549,47.328955],[-122.828467,47.336572],[-122.919531,47.289648],[-122.956201,47.24458],[-122.987646,47.172559],[-123.027588,47.138916],[-122.91416,47.131494],[-122.811963,47.145996],[-122.729883,47.111816],[-122.701953,47.110889],[-122.627051,47.144238],[-122.60415,47.166992],[-122.542187,47.275586],[-122.511084,47.29502],[-122.464844,47.295801],[-122.420117,47.312109],[-122.353809,47.371582],[-122.351123,47.395215],[-122.375244,47.528369],[-122.368359,47.603906],[-122.380762,47.627832],[-122.410498,47.652637],[-122.406787,47.676758],[-122.383643,47.716455],[-122.381982,47.752344],[-122.401807,47.784277],[-122.392871,47.820557],[-122.330322,47.898633],[-122.318457,47.933057],[-122.241992,48.010742],[-122.261279,48.042041],[-122.31748,48.080176],[-122.352979,48.113818],[-122.388672,48.166357],[-122.41582,48.183936],[-122.424707,48.175928],[-122.386621,48.089941],[-122.394775,48.084131],[-122.494043,48.130469],[-122.516992,48.159668],[-122.52915,48.199316],[-122.520312,48.229102],[-122.467041,48.258496],[-122.403369,48.269189],[-122.408545,48.293896],[-122.488428,48.374316],[-122.54165,48.410937],[-122.582568,48.428662],[-122.637793,48.433301],[-122.6625,48.446387],[-122.668994,48.465234],[-122.657275,48.48999],[-122.627979,48.4979],[-122.542676,48.487988],[-122.496777,48.505566],[-122.501074,48.5375],[-122.514795,48.555176],[-122.512744,48.669434],[-122.545117,48.762305],[-122.562012,48.777979],[-122.580176,48.77959],[-122.599414,48.76709],[-122.653027,48.763867],[-122.685937,48.794287],[-122.722461,48.853027],[-122.78877,48.993018],[-122.686377,48.993018],[-122.26001,48.993018],[-121.833594,48.993018],[-121.407227,48.993018],[-120.980859,48.993018],[-120.554492,48.993018],[-120.128076,48.993018],[-119.701709,48.993018],[-119.275342,48.993066],[-118.848926,48.993066],[-118.422559,48.993066],[-117.996191,48.993066],[-117.569775,48.993066],[-117.143408,48.993066],[-116.717041,48.993066],[-116.290625,48.993066],[-115.864258,48.993066],[-115.437891,48.993066],[-115.011523,48.993066],[-114.585107,48.993066],[-114.15874,48.993066],[-113.732373,48.993066],[-113.305957,48.993066],[-112.87959,48.993066],[-112.453223,48.993066],[-112.026807,48.993066],[-111.600439,48.993066],[-111.174072,48.993066],[-110.747656,48.993066],[-110.321289,48.993066],[-109.894922,48.993066],[-109.468555,48.993066],[-109.042139,48.993115],[-108.615771,48.993115],[-108.189404,48.993115],[-107.762988,48.993115],[-107.336621,48.993115],[-106.910254,48.993115],[-106.483838,48.993115],[-106.057471,48.993115],[-105.631104,48.993115],[-105.204687,48.993115],[-104.77832,48.993115],[-104.351953,48.993115],[-103.925586,48.993115],[-103.49917,48.993115],[-103.072803,48.993115],[-102.646436,48.993115],[-102.22002,48.993115],[-101.793652,48.993115],[-101.367285,48.993115],[-100.940869,48.993115],[-100.514502,48.993115],[-100.088135,48.993115],[-99.661719,48.993115],[-99.235352,48.993115],[-98.808984,48.993164],[-98.382617,48.993164],[-97.956201,48.993164],[-97.529834,48.993164],[-97.103467,48.993164],[-96.677051,48.993164],[-96.250684,48.993164],[-95.824316,48.993164],[-95.3979,48.993164],[-95.162061,48.991748],[-95.158252,49.203076],[-95.155273,49.369678],[-94.939355,49.349414],[-94.874805,49.319043],[-94.854346,49.30459],[-94.8604,49.258594],[-94.842578,49.119189],[-94.803467,49.00293],[-94.712793,48.863428],[-94.712549,48.862988],[-94.705078,48.808496],[-94.675342,48.774414],[-94.620898,48.742627],[-94.41416,48.704102],[-94.055176,48.659033],[-93.851611,48.607275],[-93.803564,48.548926],[-93.707715,48.525439],[-93.564258,48.536914],[-93.463623,48.561279],[-93.377881,48.616553],[-93.257959,48.628857],[-93.155225,48.625342],[-93.051709,48.619873],[-92.99624,48.611816],[-92.836719,48.567773],[-92.732666,48.531836],[-92.583252,48.465088],[-92.500586,48.435352],[-92.460889,48.365869],[-92.4146,48.276611],[-92.348437,48.276611],[-92.298682,48.328906],[-92.171777,48.338379],[-92.005176,48.301855],[-91.858398,48.197559],[-91.647314,48.10459],[-91.518311,48.058301],[-91.387207,48.058545],[-91.220654,48.10459],[-91.043457,48.193701],[-90.916064,48.209131],[-90.840332,48.200537],[-90.797314,48.131055],[-90.744385,48.10459],[-90.60708,48.112598],[-90.320117,48.09917],[-90.091797,48.118115],[-90.039941,48.078174],[-89.993652,48.015332],[-89.901025,47.995459],[-89.775391,48.015332],[-89.550586,47.999902],[-89.455664,47.99624],[-89.273193,48.019971],[-89.185645,48.047412],[-89.062598,48.093799],[-88.898682,48.155713],[-88.611768,48.264014],[-88.378174,48.303076],[-88.160645,48.225391],[-87.987451,48.156885],[-87.920508,48.130371],[-87.743896,48.060547],[-87.494238,47.961768],[-87.208008,47.848486],[-86.921826,47.735205],[-86.672168,47.636426],[-86.495557,47.566602],[-86.428564,47.540088],[-86.234473,47.460059],[-86.040381,47.380029],[-85.846338,47.3],[-85.652246,47.219971],[-85.458203,47.139941],[-85.264111,47.059961],[-85.070068,46.979932],[-84.875977,46.899902],[-84.827051,46.766846],[-84.779395,46.637305],[-84.665771,46.543262],[-84.561768,46.457373],[-84.501562,46.461865],[-84.440479,46.498145],[-84.401709,46.515625],[-84.336719,46.518506],[-84.192187,46.549561],[-84.149463,46.542773],[-84.125195,46.527246],[-84.123193,46.50293],[-84.128125,46.483594],[-84.150488,46.444775],[-84.115186,46.370801],[-84.107764,46.288623],[-84.088379,46.226514],[-84.029199,46.147021],[-83.977783,46.084912],[-83.913037,46.0729],[-83.763184,46.109082],[-83.669287,46.122754],[-83.615967,46.116846],[-83.524756,46.058691],[-83.480127,46.02373],[-83.469482,45.994678],[-83.592676,45.817139],[-83.397314,45.729053],[-83.179297,45.632764],[-82.919336,45.517969],[-82.7604,45.447705],[-82.551074,45.347363],[-82.515234,45.204395],[-82.485059,45.08374],[-82.446582,44.915527],[-82.407373,44.743945],[-82.368262,44.572998],[-82.326807,44.391553],[-82.28125,44.192236],[-82.240771,44.015332],[-82.196582,43.822217],[-82.137842,43.570898],[-82.190381,43.474072],[-82.304785,43.263232],[-82.408203,43.072656],[-82.417236,43.017383],[-82.48833,42.739502],[-82.545312,42.624707],[-82.645117,42.558057],[-82.744189,42.493457],[-82.867773,42.385205],[-83.003711,42.331738],[-83.073145,42.300293],[-83.109521,42.250684],[-83.149658,42.141943],[-83.141943,41.975879],[-83.02998,41.832959],[-82.866211,41.753027],[-82.690039,41.675195],[-82.439062,41.674854],[-82.21333,41.778711],[-81.97417,41.888721],[-81.760937,41.986816],[-81.507324,42.103467],[-81.277637,42.20918],[-81.028223,42.247168],[-80.682617,42.299756],[-80.247559,42.366016],[-80.035742,42.441455],[-79.762012,42.538965],[-79.44624,42.651465],[-79.17373,42.748535],[-79.036719,42.802344],[-78.939258,42.863721],[-78.915088,42.909131],[-78.92085,42.935205],[-78.945996,42.961328],[-78.980762,42.980615],[-79.01167,42.997021],[-79.026172,43.017334],[-79.029053,43.061768],[-79.047998,43.087305],[-79.066064,43.106104],[-79.059229,43.278076],[-79.083057,43.331396],[-79.171875,43.466553],[-79.00249,43.527148],[-78.845557,43.58335],[-78.72041,43.624951],[-78.458252,43.631494],[-78.214795,43.630664],[-77.879248,43.629541],[-77.596533,43.628613],[-77.266699,43.62749],[-77.07334,43.626855],[-76.819971,43.628809],[-76.696484,43.784814],[-76.586133,43.924316],[-76.4646,44.057617],[-76.248535,44.214111],[-76.185791,44.242236],[-76.151172,44.303955],[-76.020215,44.362598],[-75.875928,44.416992],[-75.819336,44.468018],[-75.791943,44.49707],[-75.40127,44.772266],[-75.179395,44.899365],[-74.996143,44.970117],[-74.856641,45.003906],[-74.762451,44.999072],[-74.708887,45.003857]]],[[[-72.509766,40.986035],[-72.580859,40.921338],[-72.516602,40.914795],[-72.461328,40.933789],[-72.408984,40.972168],[-72.287451,41.024072],[-72.183887,41.046777],[-72.15127,41.051465],[-72.101904,41.015039],[-72.003955,41.044287],[-71.903223,41.060693],[-72.338965,40.894141],[-72.428076,40.875391],[-72.555566,40.825781],[-72.676074,40.790625],[-72.762842,40.777832],[-73.194287,40.654199],[-73.228516,40.651514],[-73.265527,40.663574],[-73.620898,40.599902],[-73.766748,40.592725],[-73.899561,40.570508],[-73.801318,40.621777],[-73.79917,40.640967],[-73.822656,40.655957],[-73.875195,40.651611],[-73.929004,40.598828],[-74.014893,40.581201],[-74.032031,40.638672],[-74.003369,40.683154],[-73.964551,40.725342],[-73.879248,40.79165],[-73.757227,40.833691],[-73.695215,40.87002],[-73.652246,40.838037],[-73.642822,40.88125],[-73.609766,40.906201],[-73.573828,40.919629],[-73.487402,40.919971],[-73.440869,40.926758],[-73.407227,40.941113],[-73.372705,40.943799],[-73.278174,40.924219],[-73.18584,40.929834],[-73.111279,40.956885],[-73.033789,40.965967],[-72.828809,40.97207],[-72.625098,40.991846],[-72.543652,41.027002],[-72.372559,41.125537],[-72.274121,41.153027],[-72.427393,41.038525],[-72.509766,40.986035]]],[[[-68.187256,44.332471],[-68.245459,44.312988],[-68.309277,44.321484],[-68.307959,44.268701],[-68.315088,44.249707],[-68.385791,44.276855],[-68.411719,44.294336],[-68.409473,44.364258],[-68.347021,44.430371],[-68.299414,44.456494],[-68.238037,44.438379],[-68.190918,44.364355],[-68.187256,44.332471]]],[[[-74.188135,40.522852],[-74.235889,40.518701],[-74.188184,40.6146],[-74.100488,40.658447],[-74.06875,40.649316],[-74.067383,40.61543],[-74.079687,40.586475],[-74.138525,40.541846],[-74.188135,40.522852]]],[[[-70.509912,41.376318],[-70.785303,41.327441],[-70.829199,41.358984],[-70.760498,41.373584],[-70.67373,41.448535],[-70.616016,41.457227],[-70.525342,41.414795],[-70.509912,41.376318]]],[[[-71.241406,41.491943],[-71.290918,41.4646],[-71.34624,41.469385],[-71.318164,41.506299],[-71.307471,41.560498],[-71.280176,41.62002],[-71.264453,41.638232],[-71.232031,41.654297],[-71.241406,41.491943]]],[[[-69.97793,41.265576],[-70.055078,41.249463],[-70.233057,41.286328],[-70.086621,41.317578],[-70.062695,41.328467],[-70.043604,41.374414],[-70.041211,41.397461],[-69.985596,41.298633],[-69.97793,41.265576]]],[[[-75.635693,35.855908],[-75.650781,35.835596],[-75.717187,35.946143],[-75.648877,35.9104],[-75.63667,35.880664],[-75.635693,35.855908]]],[[[-75.544141,35.240088],[-75.678271,35.212842],[-75.690088,35.221582],[-75.536377,35.278613],[-75.487891,35.479492],[-75.48125,35.572119],[-75.504297,35.7354],[-75.503516,35.769141],[-75.478516,35.716504],[-75.456445,35.56416],[-75.464746,35.448633],[-75.509326,35.280322],[-75.544141,35.240088]]],[[[-75.781934,35.190186],[-75.963672,35.118848],[-75.98418,35.123096],[-75.864941,35.174121],[-75.781934,35.190186]]],[[[-76.503662,34.642969],[-76.528564,34.631494],[-76.437012,34.756348],[-76.256201,34.914697],[-76.207373,34.938916],[-76.357715,34.803662],[-76.503662,34.642969]]],[[[-82.037207,26.453613],[-82.072852,26.427539],[-82.144971,26.44668],[-82.184375,26.480957],[-82.201367,26.548047],[-82.138574,26.477002],[-82.116064,26.460938],[-82.037207,26.453613]]],[[[-82.083789,26.552344],[-82.085205,26.493604],[-82.135596,26.591992],[-82.169141,26.700732],[-82.121143,26.665527],[-82.083789,26.552344]]],[[[-80.381836,25.142285],[-80.580566,24.954248],[-80.558545,25.001318],[-80.481055,25.101953],[-80.456006,25.149316],[-80.403662,25.179346],[-80.354932,25.233643],[-80.35127,25.296973],[-80.280469,25.34126],[-80.25708,25.347607],[-80.381836,25.142285]]],[[[-91.793701,29.500732],[-91.830859,29.486475],[-91.99624,29.573096],[-92.006641,29.610303],[-91.925049,29.643945],[-91.875244,29.640967],[-91.796484,29.596973],[-91.767676,29.584717],[-91.754297,29.566895],[-91.761914,29.539014],[-91.793701,29.500732]]],[[[-97.014355,27.901611],[-97.036035,27.89917],[-96.987646,27.981055],[-96.978662,28.013867],[-96.899316,28.11748],[-96.857422,28.13291],[-96.839746,28.088818],[-96.921338,28.016016],[-97.014355,27.901611]]],[[[-96.764404,28.152588],[-96.801123,28.148438],[-96.755615,28.202441],[-96.681641,28.229687],[-96.519336,28.333447],[-96.453125,28.340576],[-96.418652,28.376318],[-96.403564,28.381592],[-96.41333,28.337793],[-96.543896,28.275586],[-96.764404,28.152588]]],[[[-97.353613,27.300049],[-97.384814,27.242529],[-97.376221,27.328271],[-97.29502,27.523096],[-97.130029,27.77915],[-97.060547,27.822021],[-97.250879,27.541211],[-97.353613,27.300049]]],[[[-95.039697,29.145898],[-95.089648,29.136328],[-94.87168,29.290137],[-94.825977,29.341309],[-94.767627,29.339062],[-94.864941,29.252881],[-95.039697,29.145898]]],[[[-97.170703,26.159375],[-97.184521,26.112939],[-97.267334,26.329785],[-97.4021,26.820508],[-97.407178,27.100195],[-97.385986,27.196484],[-97.351221,26.801465],[-97.202246,26.299805],[-97.170703,26.159375]]],[[[-120.306592,34.024854],[-120.359717,34.022266],[-120.441553,34.03291],[-120.412939,34.056299],[-120.367725,34.073291],[-120.35332,34.060596],[-120.306592,34.024854]]],[[[-119.438037,33.217187],[-119.48252,33.215332],[-119.543652,33.224609],[-119.575195,33.27832],[-119.525146,33.282031],[-119.478809,33.274609],[-119.442041,33.232422],[-119.438037,33.217187]]],[[[-118.350391,32.827588],[-118.408594,32.818506],[-118.473193,32.838916],[-118.528906,32.935596],[-118.590186,33.011182],[-118.55708,33.032666],[-118.507471,32.959912],[-118.383203,32.849463],[-118.350391,32.827588]]],[[[-120.043555,33.918848],[-120.113916,33.904883],[-120.167139,33.918066],[-120.251904,34.013867],[-120.071826,34.026514],[-119.994385,33.984912],[-119.983936,33.97334],[-120.043555,33.918848]]],[[[-119.882373,34.079687],[-119.678857,34.028467],[-119.569141,34.052979],[-119.549268,34.028174],[-119.562207,34.006592],[-119.80957,33.967773],[-119.885498,33.994922],[-119.892432,34.032178],[-119.918066,34.067822],[-119.882373,34.079687]]],[[[-118.347949,33.385742],[-118.297461,33.312109],[-118.370215,33.32124],[-118.446289,33.31709],[-118.469336,33.357129],[-118.492041,33.412793],[-118.507324,33.427002],[-118.559424,33.431982],[-118.56333,33.437061],[-118.569434,33.46416],[-118.554834,33.4771],[-118.391699,33.415088],[-118.347949,33.385742]]],[[[-122.782129,48.672705],[-122.768848,48.650977],[-122.808984,48.629834],[-122.837598,48.626562],[-122.883105,48.660645],[-122.903027,48.664697],[-122.887012,48.612305],[-122.892529,48.594482],[-122.985645,48.626709],[-123.002832,48.652197],[-122.97666,48.67915],[-122.918018,48.706982],[-122.897705,48.710352],[-122.782129,48.672705]]],[[[-123.013135,48.500879],[-122.986768,48.468018],[-123.094434,48.489062],[-123.139941,48.507959],[-123.153418,48.526318],[-123.16958,48.586719],[-123.162158,48.606396],[-123.11416,48.613281],[-123.02417,48.538477],[-123.013135,48.500879]]],[[[-122.572754,48.156641],[-122.523828,48.025439],[-122.502832,48.080078],[-122.366748,47.985449],[-122.366602,47.938818],[-122.383154,47.923193],[-122.411426,47.917725],[-122.437598,47.931348],[-122.461621,47.964014],[-122.492285,47.981299],[-122.55752,47.99248],[-122.591357,48.029639],[-122.603174,48.055029],[-122.606299,48.128564],[-122.622656,48.151416],[-122.657275,48.156494],[-122.690381,48.173877],[-122.741504,48.225293],[-122.74873,48.239014],[-122.724512,48.280908],[-122.668994,48.351025],[-122.628613,48.384229],[-122.603516,48.380615],[-122.572461,48.35957],[-122.535547,48.321191],[-122.542432,48.293994],[-122.692139,48.241064],[-122.697021,48.228662],[-122.624414,48.21377],[-122.597607,48.200439],[-122.572754,48.156641]]],[[[-71.365332,41.485254],[-71.393066,41.466748],[-71.403418,41.515039],[-71.383984,41.570557],[-71.364307,41.571826],[-71.354492,41.542285],[-71.365332,41.485254]]],[[[-74.133203,39.680762],[-74.250488,39.529395],[-74.253174,39.558496],[-74.106738,39.746436],[-74.133203,39.680762]]],[[[-75.333057,37.888281],[-75.378516,37.87207],[-75.225977,38.072314],[-75.137402,38.240088],[-75.0979,38.298096],[-75.13623,38.180518],[-75.203223,38.072412],[-75.333057,37.888281]]],[[[-76.54624,34.654883],[-76.568506,34.652539],[-76.607812,34.663574],[-76.661963,34.684668],[-76.673926,34.700146],[-76.622266,34.694531],[-76.54624,34.654883]]],[[[-81.334814,24.650488],[-81.364795,24.629932],[-81.379053,24.636279],[-81.379053,24.66626],[-81.42168,24.732617],[-81.420068,24.75],[-81.322314,24.685059],[-81.319824,24.667627],[-81.334814,24.650488]]],[[[-80.829395,24.803662],[-80.84834,24.803662],[-80.838867,24.817871],[-80.799414,24.846289],[-80.785205,24.835254],[-80.786768,24.821045],[-80.829395,24.803662]]],[[[-80.638281,24.903174],[-80.665137,24.898438],[-80.625684,24.941113],[-80.6146,24.937939],[-80.638281,24.903174]]],[[[-81.044189,24.716797],[-81.08999,24.693115],[-81.137354,24.710498],[-81.085254,24.73418],[-80.930469,24.759473],[-80.988916,24.727881],[-81.044189,24.716797]]],[[[-81.418994,30.971436],[-81.463477,30.727783],[-81.482715,30.814062],[-81.484619,30.897852],[-81.450928,30.947412],[-81.418994,30.971436]]],[[[-81.566699,24.599902],[-81.631494,24.590039],[-81.579248,24.629395],[-81.562305,24.68916],[-81.531641,24.64248],[-81.532227,24.61416],[-81.566699,24.599902]]],[[[-80.186768,27.278418],[-80.170508,27.204785],[-80.262451,27.375586],[-80.376074,27.643408],[-80.436914,27.850537],[-80.395752,27.794531],[-80.355518,27.678613],[-80.186768,27.278418]]],[[[-81.783838,24.54458],[-81.809229,24.542334],[-81.811426,24.557812],[-81.767676,24.576709],[-81.738672,24.575439],[-81.739746,24.554492],[-81.783838,24.54458]]],[[[-88.889307,29.712598],[-88.943604,29.660254],[-88.941113,29.680225],[-88.901172,29.732617],[-88.872656,29.752979],[-88.889307,29.712598]]],[[[-88.558105,30.215918],[-88.570654,30.204785],[-88.659229,30.225586],[-88.713086,30.244922],[-88.722852,30.264258],[-88.573975,30.22915],[-88.558105,30.215918]]],[[[-88.071338,30.252344],[-88.159326,30.230908],[-88.289746,30.23291],[-88.31626,30.24043],[-88.263916,30.254736],[-88.109375,30.27373],[-88.071338,30.252344]]],[[[-89.223975,30.084082],[-89.220459,30.037598],[-89.269434,30.060742],[-89.341992,30.062842],[-89.310059,30.078711],[-89.287646,30.094189],[-89.276465,30.11084],[-89.184668,30.168652],[-89.210693,30.126221],[-89.223975,30.084082]]],[[[-88.827441,29.807715],[-88.855664,29.775879],[-88.827979,29.928369],[-88.866895,30.056738],[-88.825879,30.000391],[-88.812598,29.93335],[-88.827441,29.807715]]],[[[-84.90791,29.642627],[-85.008252,29.606641],[-85.116748,29.632812],[-85.049316,29.637793],[-85.000537,29.627197],[-84.877002,29.678662],[-84.812207,29.717627],[-84.737158,29.732422],[-84.90791,29.642627]]],[[[-122.853076,47.204736],[-122.862598,47.185059],[-122.876758,47.186133],[-122.907959,47.226123],[-122.911914,47.254346],[-122.885107,47.274707],[-122.84917,47.216309],[-122.853076,47.204736]]],[[[-122.394141,47.395264],[-122.39873,47.37251],[-122.437109,47.354785],[-122.456982,47.359326],[-122.458203,47.386133],[-122.468555,47.390234],[-122.509912,47.358008],[-122.506836,47.42168],[-122.486475,47.48877],[-122.468604,47.48999],[-122.44209,47.446143],[-122.394141,47.395264]]],[[[-122.497266,47.59458],[-122.502637,47.575439],[-122.557812,47.598291],[-122.575928,47.619482],[-122.57373,47.666846],[-122.560107,47.697754],[-122.549756,47.703955],[-122.517236,47.690576],[-122.507861,47.682666],[-122.497266,47.59458]]],[[[-122.820898,48.431348],[-122.836572,48.421533],[-122.890039,48.434668],[-122.921631,48.456934],[-122.932275,48.484766],[-122.912207,48.537988],[-122.885498,48.551611],[-122.868896,48.548633],[-122.861914,48.501855],[-122.8146,48.452344],[-122.820898,48.431348]]],[[[-68.623193,44.196045],[-68.661182,44.17627],[-68.701709,44.182666],[-68.703027,44.231982],[-68.690771,44.24873],[-68.676758,44.256201],[-68.655957,44.242334],[-68.623193,44.196045]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"South Georgia and the Islands","ADM0_A3":"SGS","GEOU_DIF":0,"GEOUNIT":"South Georgia and the Islands","GU_A3":"SGS","SU_DIF":0,"SUBUNIT":"South Georgia and the Islands","SU_A3":"SGS","BRK_DIFF":0,"NAME":"S. Geo. and the Is.","NAME_LONG":"South Georgia and the Islands","BRK_A3":"SGS","BRK_NAME":"S. Geo. and the Is.","BRK_GROUP":null,"ABBREV":"S.G. & Is.","POSTAL":"GS","FORMAL_EN":"South Georgia and the Islands","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"South Georgia and the Islands","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":30,"POP_RANK":1,"POP_YEAR":2017,"GDP_MD":0,"GDP_YEAR":2016,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"SX","ISO_A2":"GS","ISO_A2_EH":"GS","ISO_A3":"SGS","ISO_A3_EH":"SGS","ISO_N3":"239","ISO_N3_EH":"239","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424955,"WOE_ID_EH":23424955,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SGS","ADM0_DIFF":null,"ADM0_TLC":"SGS","ADM0_A3_US":"SGS","ADM0_A3_FR":"SGS","ADM0_A3_RU":"SGS","ADM0_A3_ES":"SGS","ADM0_A3_CN":"SGS","ADM0_A3_TW":"SGS","ADM0_A3_IN":"SGS","ADM0_A3_NP":"SGS","ADM0_A3_PK":"SGS","ADM0_A3_DE":"SGS","ADM0_A3_GB":"SGS","ADM0_A3_BR":"SGS","ADM0_A3_IL":"SGS","ADM0_A3_PS":"SGS","ADM0_A3_SA":"SGS","ADM0_A3_EG":"SGS","ADM0_A3_MA":"SGS","ADM0_A3_PT":"SGS","ADM0_A3_AR":"SGS","ADM0_A3_JP":"SGS","ADM0_A3_KO":"SGS","ADM0_A3_VN":"SGS","ADM0_A3_TR":"SGS","ADM0_A3_ID":"SGS","ADM0_A3_PL":"SGS","ADM0_A3_GR":"SGS","ADM0_A3_IT":"SGS","ADM0_A3_NL":"SGS","ADM0_A3_SE":"SGS","ADM0_A3_BD":"SGS","ADM0_A3_UA":"SGS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Americas","SUBREGION":"Seven seas (open ocean)","REGION_WB":"Antarctica","NAME_LEN":19,"LONG_LEN":29,"ABBREV_LEN":10,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9,"LABEL_X":-31.063179,"LABEL_Y":-55.683402,"NE_ID":1159320731,"WIKIDATAID":"Q35086","NAME_AR":"جورجيا الجنوبية وجزر ساندويتش الجنوبية","NAME_BN":"দক্ষিণ জর্জিয়া ও দক্ষিণ স্যন্ডউইচ দ্বীপপুঞ্জ","NAME_DE":"Südgeorgien und die Südlichen Sandwichinseln","NAME_EN":"South Georgia and the South Sandwich Islands","NAME_ES":"Islas Georgias del Sur y Sandwich del Sur","NAME_FA":"جزایر جورجیای جنوبی و ساندویچ جنوبی","NAME_FR":"Géorgie du Sud-et-les Îles Sandwich du Sud","NAME_EL":"Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς","NAME_HE":"איי ג'ורג'יה הדרומית ואיי סנדוויץ' הדרומיים","NAME_HI":"दक्षिण जॉर्जिया एवं दक्षिण सैंडविच द्वीप समूह","NAME_HU":"Déli-Georgia és Déli-Sandwich-szigetek","NAME_ID":"Georgia Selatan dan Kepulauan Sandwich Selatan","NAME_IT":"Georgia del Sud e isole Sandwich meridionali","NAME_JA":"サウスジョージア・サウスサンドウィッチ諸島","NAME_KO":"사우스조지아 사우스샌드위치 제도","NAME_NL":"Zuid-Georgia en de Zuidelijke Sandwicheilanden","NAME_PL":"Georgia Południowa i Sandwich Południowy","NAME_PT":"Ilhas Geórgia do Sul e Sandwich do Sul","NAME_RU":"Южная Георгия и Южные Сандвичевы острова","NAME_SV":"Sydgeorgien och Sydsandwichöarna","NAME_TR":"Güney Georgia ve Güney Sandwich Adaları","NAME_UK":"Південна Джорджія та Південні Сандвічеві острови","NAME_UR":"جنوبی جارجیا و جزائر جنوبی سینڈوچ","NAME_VI":"Nam Georgia và Quần đảo Nam Sandwich","NAME_ZH":"南乔治亚和南桑威奇群岛","NAME_ZHT":"南喬治亞與南桑威奇","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":"Unrecognized","FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-38.017432,-58.492285,-26.259863,-53.984082],"geometry":{"type":"MultiPolygon","coordinates":[[[[-26.264111,-58.435156],[-26.259863,-58.492285],[-26.415332,-58.439844],[-26.451025,-58.415332],[-26.401221,-58.383203],[-26.303467,-58.382227],[-26.279395,-58.401758],[-26.264111,-58.435156]]],[[[-37.10332,-54.065625],[-37.006055,-54.114258],[-36.928906,-54.081152],[-36.848926,-54.085059],[-36.805176,-54.101465],[-36.760059,-54.107715],[-36.703809,-54.108105],[-36.606885,-54.189844],[-36.647412,-54.262305],[-36.541016,-54.248047],[-36.448633,-54.308398],[-36.406738,-54.30332],[-36.38584,-54.278906],[-36.326465,-54.251172],[-36.285254,-54.288672],[-36.235645,-54.360449],[-36.172607,-54.382227],[-36.116895,-54.458301],[-36.073145,-54.554102],[-36.033105,-54.567676],[-35.964648,-54.568066],[-35.895312,-54.554785],[-35.921533,-54.6375],[-35.913281,-54.71084],[-35.798584,-54.763477],[-35.866943,-54.792383],[-35.938916,-54.834277],[-36.085498,-54.866797],[-36.123633,-54.85293],[-36.251709,-54.779883],[-36.311475,-54.69375],[-36.445752,-54.570703],[-36.47207,-54.534473],[-36.506543,-54.51123],[-36.628125,-54.496094],[-36.734961,-54.466602],[-36.823877,-54.404297],[-36.851709,-54.366016],[-36.885986,-54.339453],[-37.006738,-54.340918],[-37.082812,-54.311523],[-37.158105,-54.271484],[-37.497656,-54.155859],[-37.630908,-54.16748],[-37.692285,-54.134766],[-37.689014,-54.076758],[-37.618848,-54.04209],[-37.912793,-54.028906],[-38.017432,-54.008008],[-37.945508,-53.995605],[-37.53584,-53.99375],[-37.382227,-53.984082],[-37.36875,-54.00918],[-37.232812,-54.060547],[-37.10332,-54.065625]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":5,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Disputed","TLC":"1","ADMIN":"British Indian Ocean Territory","ADM0_A3":"IOT","GEOU_DIF":0,"GEOUNIT":"British Indian Ocean Territory","GU_A3":"IOT","SU_DIF":0,"SUBUNIT":"British Indian Ocean Territory","SU_A3":"IOT","BRK_DIFF":1,"NAME":"Br. Indian Ocean Ter.","NAME_LONG":"British Indian Ocean Territory","BRK_A3":"B69","BRK_NAME":"Br. Indian Ocean Ter.","BRK_GROUP":null,"ABBREV":"I.O.T.","POSTAL":"IO","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"U.K.","NOTE_BRK":"Admin. by U.K.; Claimed by Mauritius and Seychelles","NAME_SORT":"British Indian Ocean Territory","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":3000,"POP_RANK":4,"POP_YEAR":2018,"GDP_MD":120,"GDP_YEAR":2013,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"IO","ISO_A2":"IO","ISO_A2_EH":"IO","ISO_A3":"IOT","ISO_A3_EH":"IOT","ISO_N3":"086","ISO_N3_EH":"086","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424849,"WOE_ID_EH":23424849,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"B69","ADM0_DIFF":null,"ADM0_TLC":"B69","ADM0_A3_US":"IOT","ADM0_A3_FR":"IOT","ADM0_A3_RU":"IOT","ADM0_A3_ES":"IOT","ADM0_A3_CN":"IOT","ADM0_A3_TW":"IOT","ADM0_A3_IN":"IOT","ADM0_A3_NP":"IOT","ADM0_A3_PK":"IOT","ADM0_A3_DE":"IOT","ADM0_A3_GB":"IOT","ADM0_A3_BR":"IOT","ADM0_A3_IL":"IOT","ADM0_A3_PS":"IOT","ADM0_A3_SA":"IOT","ADM0_A3_EG":"IOT","ADM0_A3_MA":"IOT","ADM0_A3_PT":"IOT","ADM0_A3_AR":"IOT","ADM0_A3_JP":"IOT","ADM0_A3_KO":"IOT","ADM0_A3_VN":"IOT","ADM0_A3_TR":"IOT","ADM0_A3_ID":"IOT","ADM0_A3_PL":"IOT","ADM0_A3_GR":"IOT","ADM0_A3_IT":"IOT","ADM0_A3_NL":"IOT","ADM0_A3_SE":"IOT","ADM0_A3_BD":"IOT","ADM0_A3_UA":"IOT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Africa","SUBREGION":"Seven seas (open ocean)","REGION_WB":"Sub-Saharan Africa","NAME_LEN":21,"LONG_LEN":30,"ABBREV_LEN":6,"TINY":5,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9.5,"LABEL_X":71.348349,"LABEL_Y":-6.190826,"NE_ID":1159320723,"WIKIDATAID":"Q43448","NAME_AR":"إقليم المحيط الهندي البريطاني","NAME_BN":"ব্রিটিশ ভারত মহাসাগরীয় এলাকা","NAME_DE":"Britisches Territorium im Indischen Ozean","NAME_EN":"British Indian Ocean Territory","NAME_ES":"Territorio Británico del Océano Índico","NAME_FA":"قلمرو بریتانیا در اقیانوس هند","NAME_FR":"Territoire britannique de l’océan Indien","NAME_EL":"Βρετανικό Έδαφος Ινδικού Ωκεανού","NAME_HE":"הטריטוריה הבריטית באוקיינוס ההודי","NAME_HI":"ब्रिटिश हिंद महासागर क्षेत्र","NAME_HU":"Brit Indiai-óceáni Terület","NAME_ID":"Wilayah Samudra Hindia Britania","NAME_IT":"Territorio britannico dell'oceano Indiano","NAME_JA":"イギリス領インド洋地域","NAME_KO":"영국령 인도양 지역","NAME_NL":"Brits Indische Oceaanterritorium","NAME_PL":"Brytyjskie Terytorium Oceanu Indyjskiego","NAME_PT":"Território Britânico do Oceano Índico","NAME_RU":"Британская территория в Индийском океане","NAME_SV":"Brittiska territoriet i Indiska oceanen","NAME_TR":"Britanya Hint Okyanusu Toprakları","NAME_UK":"Британська територія в Індійському океані","NAME_UR":"برطانوی بحرہند کا خطہ","NAME_VI":"Lãnh thổ Ấn Độ Dương thuộc Anh","NAME_ZH":"英属印度洋领地","NAME_ZHT":"英屬印度洋領地","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[72.349707,-7.435352,72.498535,-7.22041],"geometry":{"type":"Polygon","coordinates":[[[72.491992,-7.377441],[72.46875,-7.417188],[72.429102,-7.435352],[72.407617,-7.334473],[72.349707,-7.263379],[72.372852,-7.263379],[72.427441,-7.299805],[72.447266,-7.395703],[72.467188,-7.367578],[72.462207,-7.337793],[72.47373,-7.309668],[72.46543,-7.278223],[72.435742,-7.230273],[72.445605,-7.22041],[72.493555,-7.261719],[72.498535,-7.294824],[72.491992,-7.377441]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Saint Helena","ADM0_A3":"SHN","GEOU_DIF":0,"GEOUNIT":"Saint Helena","GU_A3":"SHN","SU_DIF":0,"SUBUNIT":"Saint Helena","SU_A3":"SHN","BRK_DIFF":0,"NAME":"Saint Helena","NAME_LONG":"Saint Helena","BRK_A3":"SHN","BRK_NAME":"Saint Helena","BRK_GROUP":null,"ABBREV":"St.H.","POSTAL":"SH","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Saint Helena, Ascension, and Tristan da Cunha","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"St. Helena","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":4534,"POP_RANK":4,"POP_YEAR":2016,"GDP_MD":31,"GDP_YEAR":2010,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"SH","ISO_A2":"SH","ISO_A2_EH":"SH","ISO_A3":"SHN","ISO_A3_EH":"SHN","ISO_N3":"654","ISO_N3_EH":"654","UN_A3":"654","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424944,"WOE_ID_EH":23424944,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SHN","ADM0_DIFF":null,"ADM0_TLC":"SHN","ADM0_A3_US":"SHN","ADM0_A3_FR":"SHN","ADM0_A3_RU":"SHN","ADM0_A3_ES":"SHN","ADM0_A3_CN":"SHN","ADM0_A3_TW":"SHN","ADM0_A3_IN":"SHN","ADM0_A3_NP":"SHN","ADM0_A3_PK":"SHN","ADM0_A3_DE":"SHN","ADM0_A3_GB":"SHN","ADM0_A3_BR":"SHN","ADM0_A3_IL":"SHN","ADM0_A3_PS":"SHN","ADM0_A3_SA":"SHN","ADM0_A3_EG":"SHN","ADM0_A3_MA":"SHN","ADM0_A3_PT":"SHN","ADM0_A3_AR":"SHN","ADM0_A3_JP":"SHN","ADM0_A3_KO":"SHN","ADM0_A3_VN":"SHN","ADM0_A3_TR":"SHN","ADM0_A3_ID":"SHN","ADM0_A3_PL":"SHN","ADM0_A3_GR":"SHN","ADM0_A3_IT":"SHN","ADM0_A3_NL":"SHN","ADM0_A3_SE":"SHN","ADM0_A3_BD":"SHN","ADM0_A3_UA":"SHN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":12,"LONG_LEN":12,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-5.71262,"LABEL_Y":-15.950487,"NE_ID":1159320733,"WIKIDATAID":"Q34497","NAME_AR":"سانت هيلينا","NAME_BN":"সেন্ট হেলেনা","NAME_DE":"St. Helena","NAME_EN":"Saint Helena","NAME_ES":"Isla Santa Elena","NAME_FA":"سینت هلینا","NAME_FR":"Sainte-Hélène","NAME_EL":"Νήσος Αγίας Ελένης","NAME_HE":"סנט הלנה","NAME_HI":"सन्त हेलेना","NAME_HU":"Szent Ilona","NAME_ID":"Saint Helena","NAME_IT":"Sant'Elena","NAME_JA":"セントヘレナ","NAME_KO":"세인트헬레나","NAME_NL":"Sint-Helena","NAME_PL":"Wyspa Świętej Heleny","NAME_PT":"Santa Helena","NAME_RU":"Остров Святой Елены","NAME_SV":"Sankta Helena","NAME_TR":"Saint Helena","NAME_UK":"Острів Святої Єлени","NAME_UR":"سینٹ ہلینا","NAME_VI":"Saint Helena","NAME_ZH":"圣赫勒拿","NAME_ZHT":"聖赫勒拿","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-14.414941,-16.004004,-5.659717,-7.882617],"geometry":{"type":"MultiPolygon","coordinates":[[[[-5.692139,-15.997754],[-5.78252,-16.004004],[-5.775049,-15.956738],[-5.707861,-15.906152],[-5.6625,-15.912793],[-5.659717,-15.970898],[-5.692139,-15.997754]]],[[[-14.364355,-7.974316],[-14.398682,-7.975781],[-14.408691,-7.96748],[-14.414941,-7.94375],[-14.398584,-7.905762],[-14.383643,-7.882617],[-14.3604,-7.885938],[-14.328857,-7.912598],[-14.302539,-7.935449],[-14.316797,-7.956152],[-14.364355,-7.974316]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Pitcairn Islands","ADM0_A3":"PCN","GEOU_DIF":0,"GEOUNIT":"Pitcairn Islands","GU_A3":"PCN","SU_DIF":0,"SUBUNIT":"Pitcairn Islands","SU_A3":"PCN","BRK_DIFF":0,"NAME":"Pitcairn Is.","NAME_LONG":"Pitcairn Islands","BRK_A3":"PCN","BRK_NAME":"Pitcairn Is.","BRK_GROUP":null,"ABBREV":"Pit. Is.","POSTAL":"PN","FORMAL_EN":"Pitcairn, Henderson, Ducie and Oeno Islands","FORMAL_FR":null,"NAME_CIAWF":"Pitcairn Islands","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"Pitcairn Islands","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":54,"POP_RANK":1,"POP_YEAR":2016,"GDP_MD":0,"GDP_YEAR":2016,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"PC","ISO_A2":"PN","ISO_A2_EH":"PN","ISO_A3":"PCN","ISO_A3_EH":"PCN","ISO_N3":"612","ISO_N3_EH":"612","UN_A3":"612","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424918,"WOE_ID_EH":23424918,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PCN","ADM0_DIFF":null,"ADM0_TLC":"PCN","ADM0_A3_US":"PCN","ADM0_A3_FR":"PCN","ADM0_A3_RU":"PCN","ADM0_A3_ES":"PCN","ADM0_A3_CN":"PCN","ADM0_A3_TW":"PCN","ADM0_A3_IN":"PCN","ADM0_A3_NP":"PCN","ADM0_A3_PK":"PCN","ADM0_A3_DE":"PCN","ADM0_A3_GB":"PCN","ADM0_A3_BR":"PCN","ADM0_A3_IL":"PCN","ADM0_A3_PS":"PCN","ADM0_A3_SA":"PCN","ADM0_A3_EG":"PCN","ADM0_A3_MA":"PCN","ADM0_A3_PT":"PCN","ADM0_A3_AR":"PCN","ADM0_A3_JP":"PCN","ADM0_A3_KO":"PCN","ADM0_A3_VN":"PCN","ADM0_A3_TR":"PCN","ADM0_A3_ID":"PCN","ADM0_A3_PL":"PCN","ADM0_A3_GR":"PCN","ADM0_A3_IT":"PCN","ADM0_A3_NL":"PCN","ADM0_A3_SE":"PCN","ADM0_A3_BD":"PCN","ADM0_A3_UA":"PCN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":12,"LONG_LEN":16,"ABBREV_LEN":8,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9,"LABEL_X":-128.317536,"LABEL_Y":-24.364576,"NE_ID":1159320729,"WIKIDATAID":"Q35672","NAME_AR":"جزر بيتكيرن","NAME_BN":"পীটকেয়ার্ন দ্বীপপুঞ্জ","NAME_DE":"Pitcairninseln","NAME_EN":"Pitcairn Islands","NAME_ES":"Islas Pitcairn","NAME_FA":"جزایر پیتکرن","NAME_FR":"Iles Pitcairn","NAME_EL":"Νήσοι Πίτκερν","NAME_HE":"פיטקרן","NAME_HI":"पिटकेर्न द्वीपसमूह","NAME_HU":"Pitcairn-szigetek","NAME_ID":"Kepulauan Pitcairn","NAME_IT":"Isole Pitcairn","NAME_JA":"ピトケアン諸島","NAME_KO":"핏케언 제도","NAME_NL":"Pitcairneilanden","NAME_PL":"Pitcairn","NAME_PT":"Ilhas Pitcairn","NAME_RU":"Острова Питкэрн","NAME_SV":"Pitcairnöarna","NAME_TR":"Pitcairn Adaları","NAME_UK":"Піткерн","NAME_UR":"جزائر پٹکیرن","NAME_VI":"Quần đảo Pitcairn","NAME_ZH":"皮特凯恩群岛","NAME_ZHT":"皮特肯群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-128.350195,-24.412598,-128.290088,-24.323242],"geometry":{"type":"Polygon","coordinates":[[[-128.290088,-24.397363],[-128.3,-24.412598],[-128.320654,-24.399707],[-128.342187,-24.370703],[-128.350195,-24.340234],[-128.330127,-24.323242],[-128.303613,-24.333594],[-128.29082,-24.364648],[-128.290088,-24.397363]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Anguilla","ADM0_A3":"AIA","GEOU_DIF":0,"GEOUNIT":"Anguilla","GU_A3":"AIA","SU_DIF":0,"SUBUNIT":"Anguilla","SU_A3":"AIA","BRK_DIFF":0,"NAME":"Anguilla","NAME_LONG":"Anguilla","BRK_A3":"AIA","BRK_NAME":"Anguilla","BRK_GROUP":null,"ABBREV":"Ang.","POSTAL":"AI","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Anguilla","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"Anguilla","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":14731,"POP_RANK":6,"POP_YEAR":2018,"GDP_MD":175,"GDP_YEAR":2009,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"AV","ISO_A2":"AI","ISO_A2_EH":"AI","ISO_A3":"AIA","ISO_A3_EH":"AIA","ISO_N3":"660","ISO_N3_EH":"660","UN_A3":"660","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424751,"WOE_ID_EH":23424751,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"AIA","ADM0_DIFF":null,"ADM0_TLC":"AIA","ADM0_A3_US":"AIA","ADM0_A3_FR":"AIA","ADM0_A3_RU":"AIA","ADM0_A3_ES":"AIA","ADM0_A3_CN":"AIA","ADM0_A3_TW":"AIA","ADM0_A3_IN":"AIA","ADM0_A3_NP":"AIA","ADM0_A3_PK":"AIA","ADM0_A3_DE":"AIA","ADM0_A3_GB":"AIA","ADM0_A3_BR":"AIA","ADM0_A3_IL":"AIA","ADM0_A3_PS":"AIA","ADM0_A3_SA":"AIA","ADM0_A3_EG":"AIA","ADM0_A3_MA":"AIA","ADM0_A3_PT":"AIA","ADM0_A3_AR":"AIA","ADM0_A3_JP":"AIA","ADM0_A3_KO":"AIA","ADM0_A3_VN":"AIA","ADM0_A3_TR":"AIA","ADM0_A3_ID":"AIA","ADM0_A3_PL":"AIA","ADM0_A3_GR":"AIA","ADM0_A3_IT":"AIA","ADM0_A3_NL":"AIA","ADM0_A3_SE":"AIA","ADM0_A3_BD":"AIA","ADM0_A3_UA":"AIA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-63.026361,"LABEL_Y":18.242979,"NE_ID":1159320703,"WIKIDATAID":"Q25228","NAME_AR":"أنغويلا","NAME_BN":"এ্যাঙ্গুইলা","NAME_DE":"Anguilla","NAME_EN":"Anguilla","NAME_ES":"Anguila","NAME_FA":"آنگویلا","NAME_FR":"Anguilla","NAME_EL":"Ανγκουίλα","NAME_HE":"אנגווילה","NAME_HI":"अंगुइला","NAME_HU":"Anguilla","NAME_ID":"Anguilla","NAME_IT":"Anguilla","NAME_JA":"アンギラ","NAME_KO":"앵귈라","NAME_NL":"Anguilla","NAME_PL":"Anguilla","NAME_PT":"Anguilla","NAME_RU":"Ангилья","NAME_SV":"Anguilla","NAME_TR":"Anguilla","NAME_UK":"Ангілья","NAME_UR":"اینگویلا","NAME_VI":"Anguilla","NAME_ZH":"安圭拉","NAME_ZHT":"安吉拉","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-63.16001,18.171387,-62.97959,18.269727],"geometry":{"type":"Polygon","coordinates":[[[-63.001221,18.221777],[-63.16001,18.171387],[-63.15332,18.200293],[-63.026025,18.269727],[-62.97959,18.264795],[-63.001221,18.221777]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Disputed","TLC":"1","ADMIN":"Falkland Islands","ADM0_A3":"FLK","GEOU_DIF":0,"GEOUNIT":"Falkland Islands","GU_A3":"FLK","SU_DIF":0,"SUBUNIT":"Falkland Islands","SU_A3":"FLK","BRK_DIFF":1,"NAME":"Falkland Is.","NAME_LONG":"Falkland Islands / Malvinas","BRK_A3":"B12","BRK_NAME":"Falkland Is.","BRK_GROUP":null,"ABBREV":"Flk. Is.","POSTAL":"FK","FORMAL_EN":"Falkland Islands","FORMAL_FR":null,"NAME_CIAWF":"Falkland Islands (Islas Malvinas)","NOTE_ADM0":"U.K.","NOTE_BRK":"Admin. by U.K.; Claimed by Argentina","NAME_SORT":"Falkland Islands","NAME_ALT":"Islas Malvinas","MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":3398,"POP_RANK":4,"POP_YEAR":2016,"GDP_MD":282,"GDP_YEAR":2012,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"FK","ISO_A2":"FK","ISO_A2_EH":"FK","ISO_A3":"FLK","ISO_A3_EH":"FLK","ISO_N3":"238","ISO_N3_EH":"238","UN_A3":"238","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424814,"WOE_ID_EH":23424814,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"B12","ADM0_DIFF":null,"ADM0_TLC":"B12","ADM0_A3_US":"FLK","ADM0_A3_FR":"FLK","ADM0_A3_RU":"FLK","ADM0_A3_ES":"FLK","ADM0_A3_CN":"FLK","ADM0_A3_TW":"FLK","ADM0_A3_IN":"FLK","ADM0_A3_NP":"FLK","ADM0_A3_PK":"FLK","ADM0_A3_DE":"FLK","ADM0_A3_GB":"FLK","ADM0_A3_BR":"FLK","ADM0_A3_IL":"FLK","ADM0_A3_PS":"FLK","ADM0_A3_SA":"FLK","ADM0_A3_EG":"FLK","ADM0_A3_MA":"FLK","ADM0_A3_PT":"FLK","ADM0_A3_AR":"ARG","ADM0_A3_JP":"FLK","ADM0_A3_KO":"FLK","ADM0_A3_VN":"FLK","ADM0_A3_TR":"FLK","ADM0_A3_ID":"FLK","ADM0_A3_PL":"FLK","ADM0_A3_GR":"FLK","ADM0_A3_IT":"FLK","ADM0_A3_NL":"FLK","ADM0_A3_SE":"FLK","ADM0_A3_BD":"FLK","ADM0_A3_UA":"FLK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":12,"LONG_LEN":27,"ABBREV_LEN":8,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9,"LABEL_X":-58.738602,"LABEL_Y":-51.608913,"NE_ID":1159320711,"WIKIDATAID":"Q9648","NAME_AR":"جزر فوكلاند","NAME_BN":"ফকল্যান্ড দ্বীপপুঞ্জ","NAME_DE":"Falklandinseln","NAME_EN":"Falkland Islands","NAME_ES":"Islas Malvinas","NAME_FA":"جزایر فالکلند","NAME_FR":"îles Malouines","NAME_EL":"Νήσοι Φώκλαντ","NAME_HE":"איי פוקלנד","NAME_HI":"फ़ॉकलैंड द्वीपसमूह","NAME_HU":"Falkland-szigetek","NAME_ID":"Kepulauan Falkland","NAME_IT":"Isole Falkland","NAME_JA":"フォークランド諸島","NAME_KO":"포클랜드 제도","NAME_NL":"Falklandeilanden","NAME_PL":"Falklandy","NAME_PT":"Ilhas Malvinas","NAME_RU":"Фолклендские острова","NAME_SV":"Falklandsöarna","NAME_TR":"Falkland Adaları","NAME_UK":"Фолклендські острови","NAME_UR":"جزائر فاکلینڈ","NAME_VI":"Quần đảo Falkland","NAME_ZH":"福克兰群岛","NAME_ZHT":"福克蘭群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":"Unrecognized","FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.14502,-52.308008,-57.791797,-51.269922],"geometry":{"type":"MultiPolygon","coordinates":[[[[-58.850195,-51.269922],[-58.69751,-51.328516],[-58.50625,-51.308105],[-58.42583,-51.324219],[-58.378711,-51.373047],[-58.406738,-51.418359],[-58.467432,-51.411816],[-58.519238,-51.423926],[-58.508936,-51.483594],[-58.47373,-51.509082],[-58.271582,-51.574707],[-58.234521,-51.578613],[-58.241113,-51.551074],[-58.276221,-51.506055],[-58.289307,-51.45752],[-58.259229,-51.41709],[-58.206445,-51.404687],[-57.976514,-51.384375],[-57.92251,-51.403516],[-57.808496,-51.517969],[-57.91543,-51.533789],[-57.960449,-51.583203],[-57.866357,-51.60459],[-57.791797,-51.636133],[-57.831152,-51.68457],[-57.838184,-51.70918],[-58.003955,-51.743457],[-58.150928,-51.76543],[-58.217627,-51.822461],[-58.335986,-51.86377],[-58.683496,-51.93623],[-58.643066,-51.994824],[-58.637695,-52.023047],[-58.652783,-52.099219],[-59.13125,-52.00791],[-59.19585,-52.017676],[-59.068018,-52.173047],[-59.162793,-52.201758],[-59.256348,-52.183105],[-59.341504,-52.195996],[-59.395654,-52.308008],[-59.532227,-52.236426],[-59.64873,-52.134375],[-59.64917,-52.077246],[-59.53667,-51.970605],[-59.570801,-51.925391],[-59.30874,-51.780469],[-59.261768,-51.737305],[-59.180029,-51.7125],[-59.09541,-51.704102],[-59.059521,-51.685449],[-59.065381,-51.650195],[-59.099463,-51.589746],[-59.096631,-51.491406],[-58.88667,-51.35791],[-58.91748,-51.27207],[-58.850195,-51.269922]]],[[[-60.28623,-51.461914],[-60.141553,-51.480957],[-60.008691,-51.410547],[-59.91709,-51.388086],[-59.841602,-51.40332],[-59.788428,-51.445996],[-59.711328,-51.439258],[-59.493457,-51.395703],[-59.465088,-51.410547],[-59.387598,-51.359961],[-59.32085,-51.383594],[-59.268066,-51.427539],[-59.293945,-51.478516],[-59.354199,-51.510938],[-59.392432,-51.556152],[-59.437012,-51.592676],[-59.514209,-51.626563],[-59.573193,-51.680859],[-59.714893,-51.807715],[-59.921387,-51.969531],[-59.989746,-51.984082],[-60.132275,-51.993848],[-60.19375,-51.982715],[-60.246338,-51.986426],[-60.288281,-52.07373],[-60.353467,-52.139941],[-60.384229,-52.154004],[-60.452002,-52.160254],[-60.484082,-52.170312],[-60.508398,-52.194727],[-60.686377,-52.188379],[-60.812207,-52.147754],[-60.961426,-52.057324],[-60.7625,-51.946484],[-60.591064,-51.951562],[-60.449756,-51.877148],[-60.334473,-51.839551],[-60.288672,-51.80127],[-60.238477,-51.771973],[-60.238135,-51.733789],[-60.276514,-51.716602],[-60.32832,-51.718359],[-60.37959,-51.735156],[-60.500098,-51.756543],[-60.58252,-51.712695],[-60.528076,-51.696387],[-60.467236,-51.697168],[-60.280957,-51.656055],[-60.245166,-51.638867],[-60.302637,-51.580469],[-60.414941,-51.54502],[-60.505811,-51.485449],[-60.522754,-51.463184],[-60.518262,-51.427832],[-60.568457,-51.357812],[-60.515723,-51.354297],[-60.445459,-51.399414],[-60.28623,-51.461914]]],[[[-61.01875,-51.785742],[-60.947266,-51.799512],[-60.875977,-51.794238],[-60.916162,-51.896973],[-60.947559,-51.946289],[-61.031982,-51.94248],[-61.115771,-51.875293],[-61.14502,-51.839453],[-61.05166,-51.813965],[-61.01875,-51.785742]]],[[[-58.438818,-52.011035],[-58.432715,-52.099023],[-58.512842,-52.071094],[-58.541406,-52.028418],[-58.49707,-51.999414],[-58.460547,-52.001563],[-58.438818,-52.011035]]],[[[-60.111719,-51.395898],[-60.248828,-51.395996],[-60.275879,-51.363184],[-60.275342,-51.280566],[-60.171387,-51.273438],[-60.069824,-51.30791],[-60.076465,-51.342578],[-60.111719,-51.395898]]],[[[-59.682666,-52.231641],[-59.746582,-52.250879],[-59.764453,-52.242188],[-59.784863,-52.204688],[-59.785937,-52.156152],[-59.793311,-52.13418],[-59.753223,-52.141406],[-59.681006,-52.180078],[-59.682666,-52.231641]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Cayman Islands","ADM0_A3":"CYM","GEOU_DIF":0,"GEOUNIT":"Cayman Islands","GU_A3":"CYM","SU_DIF":0,"SUBUNIT":"Cayman Islands","SU_A3":"CYM","BRK_DIFF":0,"NAME":"Cayman Is.","NAME_LONG":"Cayman Islands","BRK_A3":"CYM","BRK_NAME":"Cayman Is.","BRK_GROUP":null,"ABBREV":"Cym. Is.","POSTAL":"KY","FORMAL_EN":"Cayman Islands","FORMAL_FR":null,"NAME_CIAWF":"Cayman Islands","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"Cayman Islands","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":64948,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":5517,"GDP_YEAR":2018,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"CJ","ISO_A2":"KY","ISO_A2_EH":"KY","ISO_A3":"CYM","ISO_A3_EH":"CYM","ISO_N3":"136","ISO_N3_EH":"136","UN_A3":"136","WB_A2":"KY","WB_A3":"CYM","WOE_ID":23424783,"WOE_ID_EH":23424783,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CYM","ADM0_DIFF":null,"ADM0_TLC":"CYM","ADM0_A3_US":"CYM","ADM0_A3_FR":"CYM","ADM0_A3_RU":"CYM","ADM0_A3_ES":"CYM","ADM0_A3_CN":"CYM","ADM0_A3_TW":"CYM","ADM0_A3_IN":"CYM","ADM0_A3_NP":"CYM","ADM0_A3_PK":"CYM","ADM0_A3_DE":"CYM","ADM0_A3_GB":"CYM","ADM0_A3_BR":"CYM","ADM0_A3_IL":"CYM","ADM0_A3_PS":"CYM","ADM0_A3_SA":"CYM","ADM0_A3_EG":"CYM","ADM0_A3_MA":"CYM","ADM0_A3_PT":"CYM","ADM0_A3_AR":"CYM","ADM0_A3_JP":"CYM","ADM0_A3_KO":"CYM","ADM0_A3_VN":"CYM","ADM0_A3_TR":"CYM","ADM0_A3_ID":"CYM","ADM0_A3_PL":"CYM","ADM0_A3_GR":"CYM","ADM0_A3_IT":"CYM","ADM0_A3_NL":"CYM","ADM0_A3_SE":"CYM","ADM0_A3_BD":"CYM","ADM0_A3_UA":"CYM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":10,"LONG_LEN":14,"ABBREV_LEN":8,"TINY":2,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9.5,"LABEL_X":-81.24055,"LABEL_Y":19.319862,"NE_ID":1159320707,"WIKIDATAID":"Q5785","NAME_AR":"جزر كايمان","NAME_BN":"কেইম্যান দ্বীপপুঞ্জ","NAME_DE":"Cayman Islands","NAME_EN":"Cayman Islands","NAME_ES":"Islas Caimán","NAME_FA":"جزایر کیمن","NAME_FR":"îles Caïmans","NAME_EL":"Νησιά Καϋμάν","NAME_HE":"איי קיימן","NAME_HI":"केमन द्वीपसमूह","NAME_HU":"Kajmán-szigetek","NAME_ID":"Kepulauan Cayman","NAME_IT":"Isole Cayman","NAME_JA":"ケイマン諸島","NAME_KO":"케이맨 제도","NAME_NL":"Kaaimaneilanden","NAME_PL":"Kajmany","NAME_PT":"Ilhas Caimão","NAME_RU":"острова Кайман","NAME_SV":"Caymanöarna","NAME_TR":"Cayman Adaları","NAME_UK":"Кайманові острови","NAME_UR":"جزائر کیمین","NAME_VI":"Quần đảo Cayman","NAME_ZH":"开曼群岛","NAME_ZHT":"開曼群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-81.419092,19.271875,-79.742285,19.765723],"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.369531,19.348877],[-81.337256,19.329492],[-81.296484,19.341357],[-81.284814,19.362549],[-81.130469,19.346777],[-81.107129,19.305176],[-81.224609,19.304102],[-81.277295,19.277393],[-81.303711,19.271875],[-81.404785,19.278418],[-81.419092,19.374756],[-81.391016,19.384912],[-81.369531,19.348877]]],[[[-79.979004,19.708203],[-79.98877,19.702539],[-80.020752,19.706836],[-80.094189,19.665918],[-80.125879,19.668359],[-80.116113,19.682666],[-80.100928,19.696094],[-80.083643,19.706104],[-80.067578,19.709961],[-80.016211,19.718262],[-79.991846,19.719287],[-79.975098,19.709961],[-79.979004,19.708203]]],[[[-79.823389,19.711914],[-79.870068,19.69668],[-79.906201,19.702539],[-79.824219,19.744092],[-79.803125,19.758105],[-79.785156,19.765625],[-79.766357,19.765723],[-79.742285,19.757129],[-79.742285,19.750879],[-79.823389,19.711914]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Bermuda","ADM0_A3":"BMU","GEOU_DIF":0,"GEOUNIT":"Bermuda","GU_A3":"BMU","SU_DIF":0,"SUBUNIT":"Bermuda","SU_A3":"BMU","BRK_DIFF":0,"NAME":"Bermuda","NAME_LONG":"Bermuda","BRK_A3":"BMU","BRK_NAME":"Bermuda","BRK_GROUP":null,"ABBREV":"Berm.","POSTAL":"BM","FORMAL_EN":"The Bermudas or Somers Isles","FORMAL_FR":null,"NAME_CIAWF":"Bermuda","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"Bermuda","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":63918,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":7484,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"BD","ISO_A2":"BM","ISO_A2_EH":"BM","ISO_A3":"BMU","ISO_A3_EH":"BMU","ISO_N3":"060","ISO_N3_EH":"060","UN_A3":"060","WB_A2":"BM","WB_A3":"BMU","WOE_ID":23424756,"WOE_ID_EH":23424756,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BMU","ADM0_DIFF":null,"ADM0_TLC":"BMU","ADM0_A3_US":"BMU","ADM0_A3_FR":"BMU","ADM0_A3_RU":"BMU","ADM0_A3_ES":"BMU","ADM0_A3_CN":"BMU","ADM0_A3_TW":"BMU","ADM0_A3_IN":"BMU","ADM0_A3_NP":"BMU","ADM0_A3_PK":"BMU","ADM0_A3_DE":"BMU","ADM0_A3_GB":"BMU","ADM0_A3_BR":"BMU","ADM0_A3_IL":"BMU","ADM0_A3_PS":"BMU","ADM0_A3_SA":"BMU","ADM0_A3_EG":"BMU","ADM0_A3_MA":"BMU","ADM0_A3_PT":"BMU","ADM0_A3_AR":"BMU","ADM0_A3_JP":"BMU","ADM0_A3_KO":"BMU","ADM0_A3_VN":"BMU","ADM0_A3_TR":"BMU","ADM0_A3_ID":"BMU","ADM0_A3_PL":"BMU","ADM0_A3_GR":"BMU","ADM0_A3_IT":"BMU","ADM0_A3_NL":"BMU","ADM0_A3_SE":"BMU","ADM0_A3_BD":"BMU","ADM0_A3_UA":"BMU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Northern America","REGION_WB":"North America","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":4,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-64.763573,"LABEL_Y":32.296592,"NE_ID":1159320705,"WIKIDATAID":"Q23635","NAME_AR":"برمودا","NAME_BN":"বারমুডা","NAME_DE":"Bermuda","NAME_EN":"Bermuda","NAME_ES":"Bermudas","NAME_FA":"برمودا","NAME_FR":"Bermudes","NAME_EL":"Βερμούδες","NAME_HE":"ברמודה","NAME_HI":"बरमूडा","NAME_HU":"Bermuda","NAME_ID":"Bermuda","NAME_IT":"Bermuda","NAME_JA":"バミューダ諸島","NAME_KO":"버뮤다","NAME_NL":"Bermuda","NAME_PL":"Bermudy","NAME_PT":"Bermudas","NAME_RU":"Бермудские Острова","NAME_SV":"Bermuda","NAME_TR":"Bermuda","NAME_UK":"Бермудські острови","NAME_UR":"برمودا","NAME_VI":"Bermuda","NAME_ZH":"百慕大","NAME_ZHT":"百慕達","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-64.862842,32.259619,-64.668311,32.386914],"geometry":{"type":"Polygon","coordinates":[[[-64.730273,32.293457],[-64.820117,32.259619],[-64.845068,32.262305],[-64.862842,32.273877],[-64.771191,32.307715],[-64.694629,32.386914],[-64.668311,32.381934],[-64.730273,32.293457]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"British Virgin Islands","ADM0_A3":"VGB","GEOU_DIF":0,"GEOUNIT":"British Virgin Islands","GU_A3":"VGB","SU_DIF":0,"SUBUNIT":"British Virgin Islands","SU_A3":"VGB","BRK_DIFF":0,"NAME":"British Virgin Is.","NAME_LONG":"British Virgin Islands","BRK_A3":"VGB","BRK_NAME":"British Virgin Is.","BRK_GROUP":null,"ABBREV":"V.I. (Br.)","POSTAL":"VG","FORMAL_EN":"British Virgin Islands","FORMAL_FR":null,"NAME_CIAWF":"British Virgin Islands","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"British Virgin Islands","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":30030,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":500,"GDP_YEAR":2017,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"VI","ISO_A2":"VG","ISO_A2_EH":"VG","ISO_A3":"VGB","ISO_A3_EH":"VGB","ISO_N3":"092","ISO_N3_EH":"092","UN_A3":"092","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424983,"WOE_ID_EH":23424983,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"VGB","ADM0_DIFF":null,"ADM0_TLC":"VGB","ADM0_A3_US":"VGB","ADM0_A3_FR":"VGB","ADM0_A3_RU":"VGB","ADM0_A3_ES":"VGB","ADM0_A3_CN":"VGB","ADM0_A3_TW":"VGB","ADM0_A3_IN":"VGB","ADM0_A3_NP":"VGB","ADM0_A3_PK":"VGB","ADM0_A3_DE":"VGB","ADM0_A3_GB":"VGB","ADM0_A3_BR":"VGB","ADM0_A3_IL":"VGB","ADM0_A3_PS":"VGB","ADM0_A3_SA":"VGB","ADM0_A3_EG":"VGB","ADM0_A3_MA":"VGB","ADM0_A3_PT":"VGB","ADM0_A3_AR":"VGB","ADM0_A3_JP":"VGB","ADM0_A3_KO":"VGB","ADM0_A3_VN":"VGB","ADM0_A3_TR":"VGB","ADM0_A3_ID":"VGB","ADM0_A3_PL":"VGB","ADM0_A3_GR":"VGB","ADM0_A3_IT":"VGB","ADM0_A3_NL":"VGB","ADM0_A3_SE":"VGB","ADM0_A3_BD":"VGB","ADM0_A3_UA":"VGB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":18,"LONG_LEN":22,"ABBREV_LEN":10,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9.5,"LABEL_X":-64.63661,"LABEL_Y":18.426606,"NE_ID":1159320739,"WIKIDATAID":"Q25305","NAME_AR":"جزر العذراء البريطانية","NAME_BN":"ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ","NAME_DE":"Britische Jungferninseln","NAME_EN":"British Virgin Islands","NAME_ES":"Islas Vírgenes Británicas","NAME_FA":"جزایر ویرجین بریتانیا","NAME_FR":"îles Vierges britanniques","NAME_EL":"Βρετανικές Παρθένοι Νήσοι","NAME_HE":"איי הבתולה הבריטיים","NAME_HI":"ब्रिटिश वर्जिन द्वीपसमूह","NAME_HU":"Brit Virgin-szigetek","NAME_ID":"Kepulauan Virgin Britania Raya","NAME_IT":"Isole Vergini britanniche","NAME_JA":"イギリス領ヴァージン諸島","NAME_KO":"영국령 버진아일랜드","NAME_NL":"Britse Maagdeneilanden","NAME_PL":"Brytyjskie Wyspy Dziewicze","NAME_PT":"Ilhas Virgens Britânicas","NAME_RU":"Британские Виргинские острова","NAME_SV":"Brittiska Jungfruöarna","NAME_TR":"Britanya Virjin Adaları","NAME_UK":"Британські Віргінські острови","NAME_UR":"برطانوی جزائر ورجن","NAME_VI":"Quần đảo Virgin thuộc Anh","NAME_ZH":"英属维尔京群岛","NAME_ZHT":"英屬維京群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-64.695117,18.399121,-64.273584,18.752686],"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.395215,18.4646],[-64.421143,18.457422],[-64.438037,18.458984],[-64.44375,18.473389],[-64.426074,18.513086],[-64.324658,18.51748],[-64.395215,18.4646]]],[[[-64.593652,18.402832],[-64.671826,18.399121],[-64.695117,18.41167],[-64.650977,18.442529],[-64.569141,18.446289],[-64.545166,18.438135],[-64.593652,18.402832]]],[[[-64.287891,18.740576],[-64.273584,18.707129],[-64.282324,18.707715],[-64.339453,18.730713],[-64.383398,18.732617],[-64.401465,18.738574],[-64.411426,18.751172],[-64.323096,18.752686],[-64.287891,18.740576]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Turks and Caicos Islands","ADM0_A3":"TCA","GEOU_DIF":0,"GEOUNIT":"Turks and Caicos Islands","GU_A3":"TCA","SU_DIF":0,"SUBUNIT":"Turks and Caicos Islands","SU_A3":"TCA","BRK_DIFF":0,"NAME":"Turks and Caicos Is.","NAME_LONG":"Turks and Caicos Islands","BRK_A3":"TCA","BRK_NAME":"Turks and Caicos Is.","BRK_GROUP":null,"ABBREV":"T.C. Is.","POSTAL":"TC","FORMAL_EN":"Turks and Caicos Islands","FORMAL_FR":null,"NAME_CIAWF":"Turks and Caicos Islands","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"Turks and Caicos Islands","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":38191,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":1197,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"TK","ISO_A2":"TC","ISO_A2_EH":"TC","ISO_A3":"TCA","ISO_A3_EH":"TCA","ISO_N3":"796","ISO_N3_EH":"796","UN_A3":"796","WB_A2":"TC","WB_A3":"TCA","WOE_ID":23424962,"WOE_ID_EH":23424962,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TCA","ADM0_DIFF":null,"ADM0_TLC":"TCA","ADM0_A3_US":"TCA","ADM0_A3_FR":"TCA","ADM0_A3_RU":"TCA","ADM0_A3_ES":"TCA","ADM0_A3_CN":"TCA","ADM0_A3_TW":"TCA","ADM0_A3_IN":"TCA","ADM0_A3_NP":"TCA","ADM0_A3_PK":"TCA","ADM0_A3_DE":"TCA","ADM0_A3_GB":"TCA","ADM0_A3_BR":"TCA","ADM0_A3_IL":"TCA","ADM0_A3_PS":"TCA","ADM0_A3_SA":"TCA","ADM0_A3_EG":"TCA","ADM0_A3_MA":"TCA","ADM0_A3_PT":"TCA","ADM0_A3_AR":"TCA","ADM0_A3_JP":"TCA","ADM0_A3_KO":"TCA","ADM0_A3_VN":"TCA","ADM0_A3_TR":"TCA","ADM0_A3_ID":"TCA","ADM0_A3_PL":"TCA","ADM0_A3_GR":"TCA","ADM0_A3_IT":"TCA","ADM0_A3_NL":"TCA","ADM0_A3_SE":"TCA","ADM0_A3_BD":"TCA","ADM0_A3_UA":"TCA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":20,"LONG_LEN":24,"ABBREV_LEN":8,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-71.752704,"LABEL_Y":21.81663,"NE_ID":1159320737,"WIKIDATAID":"Q18221","NAME_AR":"جزر توركس وكايكوس","NAME_BN":"টার্কস ও কেইকোস দ্বীপপুঞ্জ","NAME_DE":"Turks- und Caicosinseln","NAME_EN":"Turks and Caicos Islands","NAME_ES":"Islas Turcas y Caicos","NAME_FA":"جزایر تورکس و کایکوس","NAME_FR":"îles Turques-et-Caïques","NAME_EL":"Τερκ και Κάικος","NAME_HE":"איי טרקס וקייקוס","NAME_HI":"तुर्क और केकोस द्वीपसमूह","NAME_HU":"Turks- és Caicos-szigetek","NAME_ID":"Kepulauan Turks dan Caicos","NAME_IT":"Turks e Caicos","NAME_JA":"タークス・カイコス諸島","NAME_KO":"터크스 케이커스 제도","NAME_NL":"Turks- en Caicoseilanden","NAME_PL":"Turks i Caicos","NAME_PT":"Turks e Caicos","NAME_RU":"Тёркс и Кайкос","NAME_SV":"Turks- och Caicosöarna","NAME_TR":"Turks ve Caicos Adaları","NAME_UK":"Острови Теркс і Кайкос","NAME_UR":"جزائر کیکس و ترکیہ","NAME_VI":"Quần đảo Turks và Caicos","NAME_ZH":"特克斯和凯科斯群岛","NAME_ZHT":"土克凱可群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-72.342383,21.751709,-71.636914,21.951904],"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.661426,21.765234],[-71.665381,21.751709],[-71.721777,21.790234],[-71.83042,21.790625],[-71.847656,21.843457],[-71.806152,21.8521],[-71.668359,21.833447],[-71.636914,21.787549],[-71.661426,21.765234]]],[[[-71.879932,21.84043],[-71.897461,21.829883],[-71.955469,21.864404],[-71.96377,21.892041],[-71.984521,21.893408],[-72.019043,21.918262],[-72.010645,21.950439],[-71.931543,21.951904],[-71.899609,21.8625],[-71.879932,21.84043]]],[[[-72.332812,21.851367],[-72.218652,21.796289],[-72.149805,21.804492],[-72.144336,21.792725],[-72.181543,21.780029],[-72.190674,21.769775],[-72.300879,21.755225],[-72.335449,21.758008],[-72.342383,21.795312],[-72.332812,21.851367]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Montserrat","ADM0_A3":"MSR","GEOU_DIF":0,"GEOUNIT":"Montserrat","GU_A3":"MSR","SU_DIF":0,"SUBUNIT":"Montserrat","SU_A3":"MSR","BRK_DIFF":0,"NAME":"Montserrat","NAME_LONG":"Montserrat","BRK_A3":"MSR","BRK_NAME":"Montserrat","BRK_GROUP":null,"ABBREV":"Monts.","POSTAL":"MS","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Montserrat","NOTE_ADM0":"U.K.","NOTE_BRK":null,"NAME_SORT":"Montserrat","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":4649,"POP_RANK":4,"POP_YEAR":2019,"GDP_MD":44,"GDP_YEAR":2006,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"MH","ISO_A2":"MS","ISO_A2_EH":"MS","ISO_A3":"MSR","ISO_A3_EH":"MSR","ISO_N3":"500","ISO_N3_EH":"500","UN_A3":"500","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424888,"WOE_ID_EH":23424888,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MSR","ADM0_DIFF":null,"ADM0_TLC":"MSR","ADM0_A3_US":"MSR","ADM0_A3_FR":"MSR","ADM0_A3_RU":"MSR","ADM0_A3_ES":"MSR","ADM0_A3_CN":"MSR","ADM0_A3_TW":"MSR","ADM0_A3_IN":"MSR","ADM0_A3_NP":"MSR","ADM0_A3_PK":"MSR","ADM0_A3_DE":"MSR","ADM0_A3_GB":"MSR","ADM0_A3_BR":"MSR","ADM0_A3_IL":"MSR","ADM0_A3_PS":"MSR","ADM0_A3_SA":"MSR","ADM0_A3_EG":"MSR","ADM0_A3_MA":"MSR","ADM0_A3_PT":"MSR","ADM0_A3_AR":"MSR","ADM0_A3_JP":"MSR","ADM0_A3_KO":"MSR","ADM0_A3_VN":"MSR","ADM0_A3_TR":"MSR","ADM0_A3_ID":"MSR","ADM0_A3_PL":"MSR","ADM0_A3_GR":"MSR","ADM0_A3_IT":"MSR","ADM0_A3_NL":"MSR","ADM0_A3_SE":"MSR","ADM0_A3_BD":"MSR","ADM0_A3_UA":"MSR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":6,"TINY":6,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-62.188252,"LABEL_Y":16.73717,"NE_ID":1159320727,"WIKIDATAID":"Q13353","NAME_AR":"مونتسرات","NAME_BN":"মন্টসেরাট","NAME_DE":"Montserrat","NAME_EN":"Montserrat","NAME_ES":"Montserrat","NAME_FA":"مونتسرات","NAME_FR":"Montserrat","NAME_EL":"Μοντσερράτ","NAME_HE":"מונטסראט","NAME_HI":"मॉण्टसेराट","NAME_HU":"Montserrat","NAME_ID":"Montserrat","NAME_IT":"Montserrat","NAME_JA":"モントセラト","NAME_KO":"몬트세랫","NAME_NL":"Montserrat","NAME_PL":"Montserrat","NAME_PT":"Montserrat","NAME_RU":"Монтсеррат","NAME_SV":"Montserrat","NAME_TR":"Montserrat","NAME_UK":"Монтсеррат","NAME_UR":"مانٹسریٹ","NAME_VI":"Montserrat","NAME_ZH":"蒙特塞拉特","NAME_ZHT":"蒙哲臘","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-62.223047,16.681201,-62.148438,16.80957],"geometry":{"type":"Polygon","coordinates":[[[-62.148438,16.740332],[-62.154248,16.681201],[-62.221631,16.699512],[-62.223047,16.751562],[-62.191357,16.804395],[-62.175781,16.80957],[-62.148438,16.740332]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Jersey","ADM0_A3":"JEY","GEOU_DIF":0,"GEOUNIT":"Jersey","GU_A3":"JEY","SU_DIF":0,"SUBUNIT":"Jersey","SU_A3":"JEY","BRK_DIFF":0,"NAME":"Jersey","NAME_LONG":"Jersey","BRK_A3":"JEY","BRK_NAME":"Jersey","BRK_GROUP":"Channel Islands","ABBREV":"Jey.","POSTAL":"JE","FORMAL_EN":"Bailiwick of Jersey","FORMAL_FR":null,"NAME_CIAWF":"Jersey","NOTE_ADM0":"U.K.","NOTE_BRK":"U.K. crown dependency","NAME_SORT":"Jersey","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":107800,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":5080,"GDP_YEAR":2015,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"JE","ISO_A2":"JE","ISO_A2_EH":"JE","ISO_A3":"JEY","ISO_A3_EH":"JEY","ISO_N3":"832","ISO_N3_EH":"832","UN_A3":"832","WB_A2":"JG","WB_A3":"CHI","WOE_ID":23424857,"WOE_ID_EH":23424857,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"JEY","ADM0_DIFF":null,"ADM0_TLC":"JEY","ADM0_A3_US":"JEY","ADM0_A3_FR":"JEY","ADM0_A3_RU":"JEY","ADM0_A3_ES":"JEY","ADM0_A3_CN":"JEY","ADM0_A3_TW":"JEY","ADM0_A3_IN":"JEY","ADM0_A3_NP":"JEY","ADM0_A3_PK":"JEY","ADM0_A3_DE":"JEY","ADM0_A3_GB":"JEY","ADM0_A3_BR":"JEY","ADM0_A3_IL":"JEY","ADM0_A3_PS":"JEY","ADM0_A3_SA":"JEY","ADM0_A3_EG":"JEY","ADM0_A3_MA":"JEY","ADM0_A3_PT":"JEY","ADM0_A3_AR":"JEY","ADM0_A3_JP":"JEY","ADM0_A3_KO":"JEY","ADM0_A3_VN":"JEY","ADM0_A3_TR":"JEY","ADM0_A3_ID":"JEY","ADM0_A3_PL":"JEY","ADM0_A3_GR":"JEY","ADM0_A3_IT":"JEY","ADM0_A3_NL":"JEY","ADM0_A3_SE":"JEY","ADM0_A3_BD":"JEY","ADM0_A3_UA":"JEY","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-2.090146,"LABEL_Y":49.220808,"NE_ID":1159320725,"WIKIDATAID":"Q785","NAME_AR":"جيرزي","NAME_BN":"জার্সি","NAME_DE":"Jersey","NAME_EN":"Jersey","NAME_ES":"Jersey","NAME_FA":"جرزی","NAME_FR":"Jersey","NAME_EL":"Τζέρσεϊ","NAME_HE":"ג'רזי","NAME_HI":"जर्सी","NAME_HU":"Jersey","NAME_ID":"Jersey","NAME_IT":"baliato di Jersey","NAME_JA":"ジャージー","NAME_KO":"저지섬","NAME_NL":"Jersey","NAME_PL":"Jersey","NAME_PT":"Jersey","NAME_RU":"Джерси","NAME_SV":"Jersey","NAME_TR":"Jersey","NAME_UK":"Джерсі","NAME_UR":"جرزی","NAME_VI":"Jersey","NAME_ZH":"泽西","NAME_ZHT":"澤西","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-2.23584,49.169824,-2.009912,49.266357],"geometry":{"type":"Polygon","coordinates":[[[-2.018652,49.23125],[-2.009912,49.180811],[-2.05376,49.169824],[-2.091016,49.187402],[-2.165674,49.187402],[-2.23584,49.176367],[-2.220508,49.266357],[-2.082227,49.255371],[-2.018652,49.23125]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Guernsey","ADM0_A3":"GGY","GEOU_DIF":0,"GEOUNIT":"Guernsey","GU_A3":"GGY","SU_DIF":0,"SUBUNIT":"Guernsey","SU_A3":"GGY","BRK_DIFF":0,"NAME":"Guernsey","NAME_LONG":"Guernsey","BRK_A3":"GGY","BRK_NAME":"Guernsey","BRK_GROUP":"Channel Islands","ABBREV":"Guern.","POSTAL":"GG","FORMAL_EN":"Bailiwick of Guernsey","FORMAL_FR":null,"NAME_CIAWF":"Guernsey","NOTE_ADM0":"U.K.","NOTE_BRK":"U.K. crown dependency","NAME_SORT":"Guernsey","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":62792,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":3465,"GDP_YEAR":2015,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"GK","ISO_A2":"GG","ISO_A2_EH":"GG","ISO_A3":"GGY","ISO_A3_EH":"GGY","ISO_N3":"831","ISO_N3_EH":"831","UN_A3":"831","WB_A2":"JG","WB_A3":"CHI","WOE_ID":23424827,"WOE_ID_EH":23424827,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GGY","ADM0_DIFF":null,"ADM0_TLC":"GGY","ADM0_A3_US":"GGY","ADM0_A3_FR":"GGY","ADM0_A3_RU":"GGY","ADM0_A3_ES":"GGY","ADM0_A3_CN":"GGY","ADM0_A3_TW":"GGY","ADM0_A3_IN":"GGY","ADM0_A3_NP":"GGY","ADM0_A3_PK":"GGY","ADM0_A3_DE":"GGY","ADM0_A3_GB":"GGY","ADM0_A3_BR":"GGY","ADM0_A3_IL":"GGY","ADM0_A3_PS":"GGY","ADM0_A3_SA":"GGY","ADM0_A3_EG":"GGY","ADM0_A3_MA":"GGY","ADM0_A3_PT":"GGY","ADM0_A3_AR":"GGY","ADM0_A3_JP":"GGY","ADM0_A3_KO":"GGY","ADM0_A3_VN":"GGY","ADM0_A3_TR":"GGY","ADM0_A3_ID":"GGY","ADM0_A3_PL":"GGY","ADM0_A3_GR":"GGY","ADM0_A3_IT":"GGY","ADM0_A3_NL":"GGY","ADM0_A3_SE":"GGY","ADM0_A3_BD":"GGY","ADM0_A3_UA":"GGY","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-2.561736,"LABEL_Y":49.463533,"NE_ID":1159320715,"WIKIDATAID":"Q25230","NAME_AR":"غيرنزي","NAME_BN":"গার্নসি","NAME_DE":"Guernsey","NAME_EN":"Guernsey","NAME_ES":"Guernsey","NAME_FA":"گرنزی","NAME_FR":"Guernesey","NAME_EL":"Γκέρνσεϊ","NAME_HE":"גרנזי","NAME_HI":"ग्वेर्नसे","NAME_HU":"Guernsey Bailiffség","NAME_ID":"Guernsey","NAME_IT":"Guernsey","NAME_JA":"ガーンジー","NAME_KO":"건지섬","NAME_NL":"Guernsey","NAME_PL":"Guernsey","NAME_PT":"Guernsey","NAME_RU":"Гернси","NAME_SV":"Guernsey","NAME_TR":"Guernsey","NAME_UK":"Гернсі","NAME_UR":"گرنزی","NAME_VI":"Guernsey","NAME_ZH":"根西","NAME_ZHT":"根西","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-2.646143,49.428711,-2.512305,49.506592],"geometry":{"type":"Polygon","coordinates":[[[-2.512305,49.494531],[-2.547363,49.428711],[-2.639014,49.450928],[-2.646143,49.468213],[-2.542187,49.506592],[-2.520898,49.506299],[-2.512305,49.494531]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Isle of Man","ADM0_A3":"IMN","GEOU_DIF":0,"GEOUNIT":"Isle of Man","GU_A3":"IMN","SU_DIF":0,"SUBUNIT":"Isle of Man","SU_A3":"IMN","BRK_DIFF":0,"NAME":"Isle of Man","NAME_LONG":"Isle of Man","BRK_A3":"IMN","BRK_NAME":"Isle of Man","BRK_GROUP":null,"ABBREV":"IoMan","POSTAL":"IM","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Isle of Man","NOTE_ADM0":"U.K.","NOTE_BRK":"U.K. crown dependency","NAME_SORT":"Isle of Man","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":84584,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":7491,"GDP_YEAR":2018,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"IM","ISO_A2":"IM","ISO_A2_EH":"IM","ISO_A3":"IMN","ISO_A3_EH":"IMN","ISO_N3":"833","ISO_N3_EH":"833","UN_A3":"833","WB_A2":"IM","WB_A3":"IMY","WOE_ID":23424847,"WOE_ID_EH":23424847,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"IMN","ADM0_DIFF":null,"ADM0_TLC":"IMN","ADM0_A3_US":"IMN","ADM0_A3_FR":"IMN","ADM0_A3_RU":"IMN","ADM0_A3_ES":"IMN","ADM0_A3_CN":"IMN","ADM0_A3_TW":"IMN","ADM0_A3_IN":"IMN","ADM0_A3_NP":"IMN","ADM0_A3_PK":"IMN","ADM0_A3_DE":"IMN","ADM0_A3_GB":"IMN","ADM0_A3_BR":"IMN","ADM0_A3_IL":"IMN","ADM0_A3_PS":"IMN","ADM0_A3_SA":"IMN","ADM0_A3_EG":"IMN","ADM0_A3_MA":"IMN","ADM0_A3_PT":"IMN","ADM0_A3_AR":"IMN","ADM0_A3_JP":"IMN","ADM0_A3_KO":"IMN","ADM0_A3_VN":"IMN","ADM0_A3_TR":"IMN","ADM0_A3_ID":"IMN","ADM0_A3_PL":"IMN","ADM0_A3_GR":"IMN","ADM0_A3_IT":"IMN","ADM0_A3_NL":"IMN","ADM0_A3_SE":"IMN","ADM0_A3_BD":"IMN","ADM0_A3_UA":"IMN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-4.530069,"LABEL_Y":54.220833,"NE_ID":1159320721,"WIKIDATAID":"Q9676","NAME_AR":"جزيرة مان","NAME_BN":"আইল অব ম্যান","NAME_DE":"Isle of Man","NAME_EN":"Isle of Man","NAME_ES":"Isla de Man","NAME_FA":"جزیره من","NAME_FR":"île de Man","NAME_EL":"Νήσος του Μαν","NAME_HE":"האי מאן","NAME_HI":"आइल ऑफ़ मैन","NAME_HU":"Man","NAME_ID":"Pulau Man","NAME_IT":"Isola di Man","NAME_JA":"マン島","NAME_KO":"맨섬","NAME_NL":"Man","NAME_PL":"Wyspa Man","NAME_PT":"Ilha de Man","NAME_RU":"остров Мэн","NAME_SV":"Isle of Man","NAME_TR":"Man Adası","NAME_UK":"Острів Мен","NAME_UR":"آئل آف مین","NAME_VI":"Đảo Man","NAME_ZH":"马恩岛","NAME_ZHT":"曼島","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-4.785352,54.058691,-4.337988,54.407178],"geometry":{"type":"Polygon","coordinates":[[[-4.412061,54.185352],[-4.614258,54.058691],[-4.696094,54.081445],[-4.765771,54.069434],[-4.785352,54.073047],[-4.745557,54.118799],[-4.69873,54.224902],[-4.614844,54.266943],[-4.508643,54.376709],[-4.424707,54.407178],[-4.395557,54.40293],[-4.377197,54.392578],[-4.337988,54.269092],[-4.392285,54.225391],[-4.412061,54.185352]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"United Kingdom","SOV_A3":"GB1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"United Kingdom","ADM0_A3":"GBR","GEOU_DIF":0,"GEOUNIT":"United Kingdom","GU_A3":"GBR","SU_DIF":0,"SUBUNIT":"United Kingdom","SU_A3":"GBR","BRK_DIFF":0,"NAME":"United Kingdom","NAME_LONG":"United Kingdom","BRK_A3":"GBR","BRK_NAME":"United Kingdom","BRK_GROUP":null,"ABBREV":"U.K.","POSTAL":"GB","FORMAL_EN":"United Kingdom of Great Britain and Northern Ireland","FORMAL_FR":null,"NAME_CIAWF":"United Kingdom","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"United Kingdom","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":66834405,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":2829108,"GDP_YEAR":2019,"ECONOMY":"1. Developed region: G7","INCOME_GRP":"1. High income: OECD","FIPS_10":"UK","ISO_A2":"GB","ISO_A2_EH":"GB","ISO_A3":"GBR","ISO_A3_EH":"GBR","ISO_N3":"826","ISO_N3_EH":"826","UN_A3":"826","WB_A2":"GB","WB_A3":"GBR","WOE_ID":-90,"WOE_ID_EH":23424975,"WOE_NOTE":"Eh ID includes Channel Islands and Isle of Man. UK constituent countries of England (24554868), Wales (12578049), Scotland (12578048), and Northern Ireland (20070563).","ADM0_ISO":"GBR","ADM0_DIFF":null,"ADM0_TLC":"GBR","ADM0_A3_US":"GBR","ADM0_A3_FR":"GBR","ADM0_A3_RU":"GBR","ADM0_A3_ES":"GBR","ADM0_A3_CN":"GBR","ADM0_A3_TW":"GBR","ADM0_A3_IN":"GBR","ADM0_A3_NP":"GBR","ADM0_A3_PK":"GBR","ADM0_A3_DE":"GBR","ADM0_A3_GB":"GBR","ADM0_A3_BR":"GBR","ADM0_A3_IL":"GBR","ADM0_A3_PS":"GBR","ADM0_A3_SA":"GBR","ADM0_A3_EG":"GBR","ADM0_A3_MA":"GBR","ADM0_A3_PT":"GBR","ADM0_A3_AR":"GBR","ADM0_A3_JP":"GBR","ADM0_A3_KO":"GBR","ADM0_A3_VN":"GBR","ADM0_A3_TR":"GBR","ADM0_A3_ID":"GBR","ADM0_A3_PL":"GBR","ADM0_A3_GR":"GBR","ADM0_A3_IT":"GBR","ADM0_A3_NL":"GBR","ADM0_A3_SE":"GBR","ADM0_A3_BD":"GBR","ADM0_A3_UA":"GBR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":14,"LONG_LEN":14,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":-2.116346,"LABEL_Y":54.402739,"NE_ID":1159320713,"WIKIDATAID":"Q145","NAME_AR":"المملكة المتحدة","NAME_BN":"যুক্তরাজ্য","NAME_DE":"Vereinigtes Königreich","NAME_EN":"United Kingdom","NAME_ES":"Reino Unido","NAME_FA":"بریتانیا","NAME_FR":"Royaume-Uni","NAME_EL":"Ηνωμένο Βασίλειο","NAME_HE":"הממלכה המאוחדת","NAME_HI":"यूनाइटेड किंगडम","NAME_HU":"Egyesült Királyság","NAME_ID":"Britania Raya","NAME_IT":"Regno Unito","NAME_JA":"イギリス","NAME_KO":"영국","NAME_NL":"Verenigd Koninkrijk","NAME_PL":"Wielka Brytania","NAME_PT":"Reino Unido","NAME_RU":"Великобритания","NAME_SV":"Storbritannien","NAME_TR":"Birleşik Krallık","NAME_UK":"Велика Британія","NAME_UR":"مملکت متحدہ","NAME_VI":"Vương quốc Liên hiệp Anh và Bắc Ireland","NAME_ZH":"英国","NAME_ZHT":"英國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-8.144824,50.021387,1.746582,60.831885],"geometry":{"type":"MultiPolygon","coordinates":[[[[-2.667676,51.622998],[-2.742139,51.581104],[-2.978516,51.538867],[-3.080371,51.495801],[-3.258789,51.398486],[-3.293115,51.39043],[-3.562354,51.413818],[-3.762695,51.539941],[-3.890771,51.59165],[-3.943652,51.59751],[-3.99834,51.582129],[-4.115283,51.566406],[-4.23457,51.569092],[-4.173682,51.627344],[-4.091016,51.659912],[-4.276172,51.68252],[-4.327637,51.700244],[-4.386279,51.741064],[-4.531494,51.748047],[-4.600781,51.737646],[-4.717627,51.683691],[-4.902295,51.62627],[-5.124756,51.705859],[-5.168359,51.740723],[-5.167236,51.808057],[-5.200586,51.861377],[-5.262305,51.880176],[-5.18335,51.949658],[-5.088086,51.995898],[-4.878516,52.041846],[-4.561133,52.150879],[-4.383154,52.197314],[-4.217725,52.277441],[-4.149365,52.32627],[-4.099756,52.393115],[-4.050537,52.475146],[-3.980322,52.541748],[-4.048437,52.557617],[-4.078906,52.607861],[-4.070703,52.658838],[-4.039258,52.704053],[-4.067432,52.760742],[-4.117529,52.82002],[-4.114746,52.866162],[-4.101465,52.915479],[-4.22915,52.912842],[-4.356445,52.897412],[-4.471826,52.862451],[-4.583691,52.814941],[-4.683057,52.806152],[-4.681445,52.844141],[-4.63833,52.891113],[-4.525684,52.958203],[-4.405078,53.013818],[-4.362207,53.056055],[-4.328418,53.105127],[-4.268555,53.144531],[-4.111035,53.218945],[-3.809277,53.302686],[-3.764209,53.307617],[-3.645898,53.2979],[-3.52959,53.310547],[-3.427734,53.340674],[-3.326172,53.347168],[-3.097559,53.260303],[-3.165576,53.394678],[-3.064746,53.426855],[-2.918555,53.305371],[-2.86416,53.292578],[-2.749512,53.310205],[-2.79375,53.330713],[-2.84541,53.331934],[-2.913086,53.350244],[-2.969971,53.389209],[-3.0646,53.512842],[-3.059473,53.58623],[-2.995703,53.662549],[-2.925098,53.732764],[-2.984326,53.746729],[-3.031787,53.773584],[-3.045361,53.843848],[-3.026758,53.905908],[-2.899854,53.960693],[-2.862402,54.043848],[-2.846484,54.135303],[-2.867578,54.177246],[-2.993506,54.170508],[-3.054736,54.153418],[-3.109668,54.126318],[-3.165967,54.12793],[-3.321533,54.229102],[-3.410254,54.305615],[-3.569385,54.467578],[-3.592041,54.564355],[-3.4646,54.773096],[-3.26792,54.906592],[-3.03623,54.953076],[-3.081055,54.961963],[-3.434082,54.96377],[-3.550439,54.947412],[-3.658301,54.892871],[-3.719238,54.876123],[-3.783252,54.869922],[-3.841602,54.842773],[-3.898584,54.805078],[-3.95791,54.780957],[-4.075781,54.787207],[-4.132959,54.779248],[-4.174023,54.801074],[-4.208398,54.837158],[-4.253418,54.846777],[-4.303662,54.835693],[-4.409912,54.787061],[-4.51748,54.75835],[-4.647559,54.789014],[-4.818066,54.846143],[-4.851709,54.825293],[-4.889502,54.772266],[-4.91123,54.689453],[-5.032324,54.761377],[-5.135498,54.85752],[-5.170117,54.91792],[-5.172705,54.985889],[-5.116699,55.012256],[-5.055859,54.988135],[-4.965186,55.149463],[-4.784814,55.359424],[-4.721143,55.420996],[-4.676758,55.501318],[-4.684375,55.553906],[-4.72417,55.598291],[-4.891846,55.699121],[-4.889648,55.781201],[-4.87168,55.873926],[-4.826074,55.929541],[-4.806836,55.940137],[-4.584082,55.938672],[-4.670947,55.967383],[-4.844092,56.051172],[-4.841016,56.080859],[-4.800293,56.15835],[-4.819141,56.150488],[-4.85625,56.114697],[-4.9271,56.028076],[-4.970361,56.007861],[-5.092822,55.987305],[-5.11499,55.944629],[-5.134668,55.933496],[-5.19585,55.928662],[-5.2146,55.888867],[-5.228223,55.886328],[-5.245605,55.929248],[-5.247314,56.000391],[-5.222949,56.06582],[-5.176416,56.116992],[-4.996973,56.23335],[-5.084326,56.197461],[-5.282324,56.089941],[-5.383447,56.019238],[-5.410449,55.995361],[-5.418896,55.975244],[-5.418311,55.952051],[-5.3729,55.827686],[-5.38584,55.770117],[-5.556445,55.3896],[-5.58877,55.351416],[-5.618457,55.331445],[-5.646533,55.326855],[-5.730664,55.334131],[-5.768213,55.362646],[-5.767871,55.394971],[-5.7521,55.443457],[-5.681348,55.623975],[-5.650635,55.674121],[-5.605029,55.720752],[-5.504492,55.802393],[-5.506934,55.807715],[-5.573877,55.791699],[-5.602393,55.796973],[-5.622852,55.813135],[-5.60957,56.055273],[-5.555273,56.134961],[-5.534961,56.25083],[-5.487891,56.350049],[-5.433398,56.422314],[-5.391943,56.514795],[-5.329443,56.555908],[-5.312695,56.618799],[-5.242578,56.686865],[-5.188379,56.758057],[-5.217578,56.751025],[-5.564209,56.565723],[-5.652441,56.531982],[-5.772803,56.541016],[-5.864844,56.561865],[-5.936768,56.605713],[-5.968896,56.689893],[-6.057715,56.692139],[-6.133691,56.706689],[-6.132764,56.718018],[-6.034717,56.763916],[-5.877637,56.779639],[-5.730615,56.853076],[-5.861426,56.902686],[-5.850391,56.918408],[-5.736279,56.960645],[-5.591309,57.102344],[-5.561914,57.232715],[-5.63125,57.293945],[-5.656348,57.334082],[-5.794922,57.378809],[-5.818066,57.436084],[-5.801953,57.468018],[-5.756738,57.499219],[-5.688623,57.523535],[-5.581787,57.546777],[-5.67876,57.57168],[-5.714941,57.601074],[-5.742383,57.643652],[-5.744922,57.668311],[-5.694727,57.778223],[-5.665479,57.823535],[-5.60835,57.881348],[-5.349023,57.878076],[-5.319189,57.903613],[-5.289795,57.90459],[-5.157227,57.881348],[-5.176904,57.906396],[-5.39375,58.043604],[-5.413184,58.069727],[-5.351367,58.143701],[-5.346875,58.17666],[-5.355957,58.211914],[-5.338281,58.238721],[-5.269531,58.251416],[-5.059961,58.250146],[-5.008301,58.262646],[-5.031836,58.298291],[-5.080615,58.345166],[-5.090137,58.384521],[-5.078711,58.419287],[-5.076025,58.489258],[-5.066504,58.520215],[-5.016748,58.566553],[-4.975635,58.580322],[-4.924658,58.588379],[-4.809619,58.5729],[-4.765771,58.554199],[-4.71543,58.51001],[-4.678223,58.513574],[-4.534961,58.561572],[-4.491895,58.568457],[-4.433252,58.512842],[-4.188623,58.557227],[-3.859521,58.5771],[-3.661816,58.606299],[-3.453564,58.616895],[-3.259131,58.65],[-3.053076,58.634814],[-3.046191,58.615527],[-3.056982,58.58877],[-3.109668,58.515479],[-3.101123,58.433691],[-3.112891,58.408887],[-3.136768,58.37832],[-3.212354,58.32124],[-3.410986,58.239648],[-3.775,58.0521],[-3.990039,57.959033],[-4.019629,57.914258],[-4.035596,57.852002],[-3.906836,57.839648],[-3.857129,57.818555],[-3.887939,57.786914],[-4.078418,57.677051],[-4.134521,57.577734],[-3.988477,57.58125],[-3.868164,57.600342],[-3.628223,57.662256],[-3.402783,57.708252],[-3.294531,57.710156],[-3.083936,57.673486],[-3.036035,57.672314],[-2.94668,57.689258],[-2.856299,57.692285],[-2.244141,57.680859],[-2.074072,57.702393],[-1.961523,57.67666],[-1.867383,57.612354],[-1.77793,57.49375],[-1.780664,57.474023],[-1.834717,57.419971],[-1.934473,57.352197],[-2.020312,57.258887],[-2.045508,57.208545],[-2.062354,57.153467],[-2.089551,57.102539],[-2.260254,56.86333],[-2.42666,56.730713],[-2.500977,56.636572],[-2.592676,56.561572],[-2.680957,56.514404],[-2.775195,56.482959],[-3.047412,56.449365],[-3.123584,56.425293],[-3.214453,56.383936],[-3.309961,56.363477],[-3.197998,56.366064],[-3.087012,56.389063],[-2.885156,56.39751],[-2.652734,56.318262],[-2.674268,56.253418],[-2.767578,56.202148],[-2.979785,56.194092],[-3.178223,56.080127],[-3.267773,56.045068],[-3.362256,56.027637],[-3.48042,56.032812],[-3.695117,56.06333],[-3.789062,56.095215],[-3.70415,56.043164],[-3.607812,56.016016],[-3.04873,55.951953],[-3.015088,55.958594],[-2.836865,56.02627],[-2.599316,56.027295],[-2.14707,55.902979],[-2.016846,55.807959],[-1.830273,55.671729],[-1.72876,55.618555],[-1.655371,55.570361],[-1.610156,55.498096],[-1.522559,55.259521],[-1.422656,55.026416],[-1.291748,54.773877],[-1.232422,54.703711],[-1.154395,54.654492],[-0.759326,54.541406],[-0.671387,54.503906],[-0.518115,54.395117],[-0.370361,54.279199],[-0.232861,54.190137],[-0.084375,54.118066],[-0.156299,54.080615],[-0.205566,54.021729],[-0.16875,53.94165],[-0.108252,53.865186],[0.010547,53.742822],[0.115332,53.609277],[0.076709,53.629443],[0.036084,53.640527],[-0.019434,53.637207],[-0.07373,53.643652],[-0.173828,53.685449],[-0.27002,53.736768],[-0.461377,53.716162],[-0.567676,53.725391],[-0.659912,53.724023],[-0.485059,53.694385],[-0.293701,53.692334],[0.12832,53.468262],[0.270996,53.335498],[0.355762,53.159961],[0.298047,53.081104],[0.208203,53.030029],[0.124414,52.971582],[0.045898,52.905615],[0.279785,52.808691],[0.330176,52.811621],[0.381934,52.825195],[0.431641,52.858154],[0.515527,52.938379],[0.558789,52.966943],[0.704492,52.977246],[0.826758,52.971094],[0.948535,52.953369],[1.055566,52.958984],[1.271289,52.924561],[1.382129,52.893506],[1.656738,52.753711],[1.716113,52.677246],[1.743359,52.578516],[1.746582,52.468994],[1.700391,52.368896],[1.647363,52.278516],[1.614648,52.161816],[1.591406,52.119775],[1.558984,52.086865],[1.413477,51.994775],[1.316797,51.956934],[1.275977,51.973535],[1.232422,51.97124],[1.227832,51.949121],[1.273828,51.9021],[1.274414,51.845361],[1.188477,51.803369],[1.101172,51.785449],[0.955078,51.807812],[0.752246,51.72959],[0.898047,51.689404],[0.927441,51.646631],[0.890918,51.571436],[0.799219,51.537891],[0.697559,51.523047],[0.593457,51.519482],[0.507227,51.501074],[0.424512,51.465625],[0.52832,51.484473],[0.600293,51.467969],[0.645508,51.404687],[0.686523,51.386572],[0.889355,51.359521],[1.014941,51.359717],[1.257129,51.375098],[1.373438,51.374707],[1.414941,51.363281],[1.415625,51.31084],[1.397559,51.182031],[1.365527,51.155469],[1.044434,51.047266],[0.978613,50.97168],[0.960156,50.925879],[0.772363,50.933984],[0.684375,50.885547],[0.532324,50.853418],[0.414746,50.819189],[0.299707,50.775977],[0.205078,50.763037],[-0.203906,50.814355],[-0.450781,50.810156],[-0.785254,50.76543],[-0.871387,50.772803],[-1.000586,50.815625],[-1.132861,50.84458],[-1.285059,50.857324],[-1.416455,50.896875],[-1.334473,50.820801],[-1.516748,50.747461],[-1.60083,50.732861],[-1.687891,50.735156],[-1.866016,50.715234],[-2.031055,50.725391],[-2.00625,50.673242],[-1.962061,50.627783],[-1.9979,50.608008],[-2.03584,50.603076],[-2.350146,50.637402],[-2.394678,50.630908],[-2.433447,50.599219],[-2.547754,50.616309],[-2.658838,50.669727],[-2.776953,50.705566],[-2.900879,50.722412],[-2.999414,50.716602],[-3.40459,50.632422],[-3.485449,50.547949],[-3.525879,50.428174],[-3.584375,50.321826],[-3.679785,50.239941],[-3.793359,50.229248],[-3.900195,50.285937],[-4.103418,50.348535],[-4.172559,50.39082],[-4.19458,50.393311],[-4.217285,50.378174],[-4.296973,50.359082],[-4.379492,50.358203],[-4.506689,50.341357],[-4.727979,50.290479],[-4.817383,50.255957],[-5.009521,50.160742],[-5.048633,50.134375],[-5.118506,50.03833],[-5.225244,50.021387],[-5.322852,50.082959],[-5.433984,50.104443],[-5.551221,50.083398],[-5.622119,50.050684],[-5.655176,50.077246],[-5.65625,50.131885],[-5.570654,50.196973],[-5.342285,50.246143],[-5.141797,50.37373],[-5.043457,50.451514],[-5.004443,50.495264],[-4.956396,50.523145],[-4.893555,50.533691],[-4.861279,50.582031],[-4.58291,50.776367],[-4.559961,50.820947],[-4.546094,50.900684],[-4.523096,50.977441],[-4.296484,51.027148],[-4.188184,51.188525],[-4.158398,51.201318],[-3.842334,51.230908],[-3.60791,51.228564],[-3.375098,51.196973],[-3.255762,51.194141],[-3.135986,51.205029],[-3.042041,51.248584],[-2.88125,51.405664],[-2.79082,51.474805],[-2.687207,51.537256],[-2.590283,51.608594],[-2.433057,51.740723],[-2.539355,51.695215],[-2.667676,51.622998]]],[[[-4.196777,53.321436],[-4.154883,53.302832],[-4.049365,53.305762],[-4.084277,53.264307],[-4.200391,53.218066],[-4.278613,53.172412],[-4.373047,53.13418],[-4.418848,53.178027],[-4.471973,53.176367],[-4.553223,53.260449],[-4.567871,53.386475],[-4.461719,53.419287],[-4.315088,53.417236],[-4.196777,53.321436]]],[[[-2.548877,59.231348],[-2.662061,59.230176],[-2.603613,59.289307],[-2.535645,59.30415],[-2.406982,59.297559],[-2.429834,59.271045],[-2.548877,59.231348]]],[[[-1.042529,60.513867],[-1.067871,60.502295],[-1.165527,60.603906],[-1.093311,60.720215],[-1.005615,60.716504],[-0.99165,60.686035],[-1.000342,60.658008],[-1.04502,60.655518],[-1.049023,60.646924],[-1.035107,60.59292],[-1.034229,60.530176],[-1.042529,60.513867]]],[[[-1.308105,60.5375],[-1.287402,60.467041],[-1.235742,60.485303],[-1.157764,60.417725],[-1.117969,60.417627],[-1.052441,60.444482],[-1.065674,60.381592],[-1.133691,60.206982],[-1.152783,60.177344],[-1.165723,60.124268],[-1.179248,60.113916],[-1.199316,60.006592],[-1.245312,59.97124],[-1.283789,59.886914],[-1.299463,59.878662],[-1.355859,59.911133],[-1.299512,60.039844],[-1.276172,60.114648],[-1.290918,60.153467],[-1.322803,60.188379],[-1.409033,60.189502],[-1.481494,60.173389],[-1.496875,60.193994],[-1.499121,60.221777],[-1.516602,60.231006],[-1.613037,60.229102],[-1.641357,60.236768],[-1.660059,60.262256],[-1.66377,60.28252],[-1.57666,60.298389],[-1.494434,60.29248],[-1.374609,60.33291],[-1.449561,60.468555],[-1.548828,60.481299],[-1.571777,60.494434],[-1.552637,60.517432],[-1.498145,60.529834],[-1.414209,60.59873],[-1.363965,60.60957],[-1.301709,60.607666],[-1.308105,60.5375]]],[[[-0.774268,60.811963],[-0.774316,60.800488],[-0.826172,60.716162],[-0.825488,60.683936],[-0.909131,60.687012],[-0.922266,60.697266],[-0.938086,60.745654],[-0.927539,60.797168],[-0.91582,60.810449],[-0.891406,60.815918],[-0.864941,60.805811],[-0.823437,60.831885],[-0.801807,60.83125],[-0.774268,60.811963]]],[[[-3.164941,58.794189],[-3.222119,58.780957],[-3.278809,58.781934],[-3.367188,58.839746],[-3.40083,58.881787],[-3.394727,58.909619],[-3.357422,58.918994],[-3.271924,58.905273],[-3.227637,58.857178],[-3.222119,58.825879],[-3.211621,58.813574],[-3.158545,58.801221],[-3.164941,58.794189]]],[[[-2.929395,58.741602],[-2.938965,58.738623],[-2.975391,58.756934],[-3.035449,58.822656],[-2.941211,58.835693],[-2.896436,58.827588],[-2.913086,58.799609],[-2.929395,58.741602]]],[[[-3.057422,59.029639],[-3.070703,59.00498],[-2.994678,59.005566],[-2.88457,58.984521],[-2.81792,58.981885],[-2.762451,58.955811],[-2.793018,58.906934],[-2.826221,58.893262],[-2.86377,58.890527],[-2.994824,58.939355],[-3.166602,58.919092],[-3.200781,58.925293],[-3.22334,58.93877],[-3.232617,58.955518],[-3.232812,58.989648],[-3.242139,58.999707],[-3.304346,58.967432],[-3.331641,58.97124],[-3.34707,58.986719],[-3.353711,59.01875],[-3.346826,59.06499],[-3.310352,59.130811],[-3.248584,59.143945],[-3.156494,59.136328],[-3.051123,59.099023],[-3.019238,59.076025],[-3.02002,59.057666],[-3.057422,59.029639]]],[[[-2.729395,59.186768],[-2.815234,59.161914],[-2.851855,59.182471],[-2.861426,59.246826],[-2.96377,59.274365],[-3.013477,59.291455],[-3.052051,59.323877],[-3.042236,59.333838],[-2.975537,59.347119],[-2.861621,59.28833],[-2.815039,59.24082],[-2.730664,59.226758],[-2.719922,59.219482],[-2.729395,59.186768]]],[[[-6.607617,56.58501],[-6.664453,56.579443],[-6.668555,56.593604],[-6.569922,56.66123],[-6.506055,56.672363],[-6.483691,56.665771],[-6.530078,56.626611],[-6.607617,56.58501]]],[[[-5.10542,55.448828],[-5.231494,55.448096],[-5.277051,55.456738],[-5.331494,55.481055],[-5.392676,55.618359],[-5.370801,55.666943],[-5.345703,55.690723],[-5.318115,55.70918],[-5.251611,55.716943],[-5.185449,55.690967],[-5.1604,55.666797],[-5.10498,55.573975],[-5.094727,55.494336],[-5.10542,55.448828]]],[[[-5.777881,56.344336],[-6.176172,56.288721],[-6.313428,56.293652],[-6.32583,56.320947],[-6.298486,56.33916],[-6.184863,56.356885],[-6.138867,56.490625],[-6.310645,56.552148],[-6.319678,56.569434],[-6.30625,56.598779],[-6.286328,56.611865],[-6.18208,56.642969],[-6.138281,56.649854],[-6.102734,56.645654],[-6.02959,56.609814],[-5.94668,56.534521],[-5.836035,56.522559],[-5.76084,56.490674],[-5.777881,56.344336]]],[[[-6.128906,55.930566],[-6.092822,55.802148],[-6.057617,55.72251],[-6.055322,55.695312],[-6.088379,55.65752],[-6.253174,55.607227],[-6.305078,55.606934],[-6.307227,55.619141],[-6.27002,55.670313],[-6.302051,55.728369],[-6.286426,55.77251],[-6.301758,55.780615],[-6.333887,55.774365],[-6.451953,55.704248],[-6.491357,55.697314],[-6.495654,55.711572],[-6.466455,55.768994],[-6.462842,55.808252],[-6.445264,55.832373],[-6.413184,55.854639],[-6.374951,55.871338],[-6.344141,55.87373],[-6.311279,55.856494],[-6.215674,55.90459],[-6.128906,55.930566]]],[[[-5.970068,55.814551],[-5.990918,55.803809],[-6.041553,55.806787],[-6.060352,55.8229],[-6.070703,55.847656],[-6.071973,55.893115],[-6.041309,55.925635],[-5.911768,55.974756],[-5.970312,55.992188],[-5.972656,56.004443],[-5.939062,56.045264],[-5.799609,56.108789],[-5.762256,56.120312],[-5.725146,56.118555],[-5.797217,56.005615],[-5.970068,55.814551]]],[[[-6.198682,58.363281],[-6.32583,58.188867],[-6.375586,58.18457],[-6.419287,58.140967],[-6.55459,58.092871],[-6.436523,58.091895],[-6.403369,58.075879],[-6.402441,58.041357],[-6.425195,58.021289],[-6.578125,57.941357],[-6.683301,57.911035],[-6.796582,57.827539],[-6.85376,57.826514],[-6.910352,57.773389],[-6.956934,57.750049],[-6.983105,57.75],[-7.013184,57.761768],[-7.083447,57.81377],[-6.955957,57.864893],[-6.944141,57.893652],[-6.856836,57.923535],[-6.86416,57.932861],[-7.002539,57.974902],[-7.05708,58.003174],[-7.051904,58.017969],[-6.985303,58.050488],[-7.016895,58.054785],[-7.038232,58.072314],[-7.076904,58.079004],[-7.088477,58.095361],[-7.095605,58.138281],[-7.085254,58.182178],[-7.044922,58.201562],[-7.028418,58.222314],[-7.012061,58.228711],[-6.949561,58.217676],[-6.88623,58.182568],[-6.812305,58.196094],[-6.726465,58.189404],[-6.724707,58.197559],[-6.787744,58.283887],[-6.776465,58.301514],[-6.742285,58.321631],[-6.544189,58.383154],[-6.297168,58.486621],[-6.237451,58.502832],[-6.219434,58.488721],[-6.194238,58.435107],[-6.198682,58.363281]]],[[[-6.279053,56.964697],[-6.30874,56.951807],[-6.34624,56.954297],[-6.383398,56.970898],[-6.432617,57.01792],[-6.322363,57.050537],[-6.278223,57.031396],[-6.261279,57.009521],[-6.260547,56.985254],[-6.279053,56.964697]]],[[[-6.144727,57.50498],[-6.146143,57.460791],[-6.16377,57.408838],[-6.14082,57.353662],[-6.135547,57.314258],[-6.093408,57.301709],[-6.067627,57.283545],[-5.880273,57.263232],[-5.706006,57.268945],[-5.672461,57.252686],[-5.668652,57.226904],[-5.696191,57.198437],[-5.79541,57.146533],[-5.91377,57.062646],[-5.949072,57.045166],[-5.987305,57.044434],[-6.014746,57.051953],[-6.034375,57.201221],[-6.162744,57.182129],[-6.266113,57.184326],[-6.322705,57.20249],[-6.362402,57.2375],[-6.442432,57.32749],[-6.675439,57.362891],[-6.741309,57.412451],[-6.761133,57.442383],[-6.752734,57.458936],[-6.704199,57.495752],[-6.643457,57.482617],[-6.605859,57.490674],[-6.583008,57.507129],[-6.583496,57.520654],[-6.615283,57.552734],[-6.616797,57.562695],[-6.378516,57.60332],[-6.357666,57.666797],[-6.305957,57.671973],[-6.246924,57.651221],[-6.166064,57.585303],[-6.144727,57.50498]]],[[[-7.205566,57.682959],[-7.092773,57.62666],[-7.182617,57.533301],[-7.320557,57.53374],[-7.514746,57.601953],[-7.515625,57.615869],[-7.499414,57.636328],[-7.470312,57.652539],[-7.440039,57.656396],[-7.391895,57.645215],[-7.324854,57.663135],[-7.271191,57.657471],[-7.205566,57.682959]]],[[[-7.249854,57.115332],[-7.292041,57.109766],[-7.347412,57.115137],[-7.381494,57.130664],[-7.415918,57.192139],[-7.422363,57.229346],[-7.407031,57.298486],[-7.410547,57.381104],[-7.296387,57.383691],[-7.267139,57.371777],[-7.247559,57.126367],[-7.249854,57.115332]]],[[[-7.416895,56.96543],[-7.504785,56.95166],[-7.537402,56.959717],[-7.542969,56.972363],[-7.522949,57.006787],[-7.455469,57.018945],[-7.406689,57.000293],[-7.398926,56.98335],[-7.416895,56.96543]]],[[[-6.218018,54.088721],[-6.303662,54.094873],[-6.363672,54.0771],[-6.402588,54.060645],[-6.440283,54.063623],[-6.548145,54.057275],[-6.649805,54.058643],[-6.664209,54.084766],[-6.646875,54.163428],[-6.669531,54.184717],[-6.766602,54.195605],[-6.802588,54.214355],[-6.85835,54.268652],[-6.869238,54.294043],[-6.877246,54.329102],[-6.936133,54.374316],[-7.007715,54.406689],[-7.049707,54.408252],[-7.133496,54.355371],[-7.202588,54.301807],[-7.178076,54.274902],[-7.155469,54.239502],[-7.193066,54.214111],[-7.306738,54.156006],[-7.324512,54.133447],[-7.355176,54.12124],[-7.409424,54.137305],[-7.544434,54.133594],[-7.606543,54.143848],[-7.67876,54.18667],[-7.854932,54.215283],[-7.884473,54.283789],[-7.918457,54.296582],[-8.118262,54.414258],[-8.144824,54.453516],[-8.118945,54.476953],[-8.044336,54.512451],[-7.793799,54.57124],[-7.754395,54.594922],[-7.746289,54.61582],[-7.819824,54.639697],[-7.886133,54.666064],[-7.90874,54.68335],[-7.910596,54.69834],[-7.872949,54.717871],[-7.797266,54.719287],[-7.7375,54.710449],[-7.68999,54.728027],[-7.606445,54.745703],[-7.550391,54.767969],[-7.502197,54.825439],[-7.45127,54.8771],[-7.445996,54.905127],[-7.401416,55.00332],[-7.376904,55.027686],[-7.218652,55.091992],[-7.178613,55.056885],[-7.100635,55.048291],[-7.030762,55.080615],[-6.947168,55.18252],[-6.888965,55.188916],[-6.824854,55.180664],[-6.698828,55.193457],[-6.475049,55.241016],[-6.375293,55.241797],[-6.234229,55.216846],[-6.12915,55.217383],[-6.035791,55.144531],[-5.985742,55.029688],[-5.869189,54.916211],[-5.716846,54.81748],[-5.710742,54.75708],[-5.765186,54.724658],[-5.879102,54.684375],[-5.878613,54.641309],[-5.803467,54.663037],[-5.738623,54.673047],[-5.58252,54.663428],[-5.52793,54.619629],[-5.490186,54.554053],[-5.47041,54.500195],[-5.483887,54.44165],[-5.525879,54.460205],[-5.568555,54.512598],[-5.615967,54.536719],[-5.671094,54.549756],[-5.646094,54.477881],[-5.655957,54.381738],[-5.631885,54.372656],[-5.557812,54.370996],[-5.606787,54.272559],[-5.708057,54.24585],[-5.826172,54.23584],[-5.854639,54.200977],[-5.876074,54.156055],[-5.937744,54.089062],[-6.019043,54.05127],[-6.119531,54.058887],[-6.218018,54.088721]]],[[[-1.065576,50.690234],[-1.149365,50.655713],[-1.17583,50.615234],[-1.196094,50.599219],[-1.251465,50.588818],[-1.306299,50.588525],[-1.515332,50.669775],[-1.563428,50.666113],[-1.515674,50.70332],[-1.38584,50.733545],[-1.312793,50.773486],[-1.144238,50.734717],[-1.065576,50.690234]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"United Arab Emirates","SOV_A3":"ARE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"United Arab Emirates","ADM0_A3":"ARE","GEOU_DIF":0,"GEOUNIT":"United Arab Emirates","GU_A3":"ARE","SU_DIF":0,"SUBUNIT":"United Arab Emirates","SU_A3":"ARE","BRK_DIFF":0,"NAME":"United Arab Emirates","NAME_LONG":"United Arab Emirates","BRK_A3":"ARE","BRK_NAME":"United Arab Emirates","BRK_GROUP":null,"ABBREV":"U.A.E.","POSTAL":"AE","FORMAL_EN":"United Arab Emirates","FORMAL_FR":null,"NAME_CIAWF":"United Arab Emirates","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"United Arab Emirates","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":3,"POP_EST":9770529,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":421142,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"AE","ISO_A2":"AE","ISO_A2_EH":"AE","ISO_A3":"ARE","ISO_A3_EH":"ARE","ISO_N3":"784","ISO_N3_EH":"784","UN_A3":"784","WB_A2":"AE","WB_A3":"ARE","WOE_ID":23424738,"WOE_ID_EH":23424738,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ARE","ADM0_DIFF":null,"ADM0_TLC":"ARE","ADM0_A3_US":"ARE","ADM0_A3_FR":"ARE","ADM0_A3_RU":"ARE","ADM0_A3_ES":"ARE","ADM0_A3_CN":"ARE","ADM0_A3_TW":"ARE","ADM0_A3_IN":"ARE","ADM0_A3_NP":"ARE","ADM0_A3_PK":"ARE","ADM0_A3_DE":"ARE","ADM0_A3_GB":"ARE","ADM0_A3_BR":"ARE","ADM0_A3_IL":"ARE","ADM0_A3_PS":"ARE","ADM0_A3_SA":"ARE","ADM0_A3_EG":"ARE","ADM0_A3_MA":"ARE","ADM0_A3_PT":"ARE","ADM0_A3_AR":"ARE","ADM0_A3_JP":"ARE","ADM0_A3_KO":"ARE","ADM0_A3_VN":"ARE","ADM0_A3_TR":"ARE","ADM0_A3_ID":"ARE","ADM0_A3_PL":"ARE","ADM0_A3_GR":"ARE","ADM0_A3_IT":"ARE","ADM0_A3_NL":"ARE","ADM0_A3_SE":"ARE","ADM0_A3_BD":"ARE","ADM0_A3_UA":"ARE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":20,"LONG_LEN":20,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":54.547256,"LABEL_Y":23.466285,"NE_ID":1159320329,"WIKIDATAID":"Q878","NAME_AR":"الإمارات العربية المتحدة","NAME_BN":"সংযুক্ত আরব আমিরাত","NAME_DE":"Vereinigte Arabische Emirate","NAME_EN":"United Arab Emirates","NAME_ES":"Emiratos Árabes Unidos","NAME_FA":"امارات متحده عربی","NAME_FR":"Émirats arabes unis","NAME_EL":"Ηνωμένα Αραβικά Εμιράτα","NAME_HE":"איחוד האמירויות הערביות","NAME_HI":"संयुक्त अरब अमीरात","NAME_HU":"Egyesült Arab Emírségek","NAME_ID":"Uni Emirat Arab","NAME_IT":"Emirati Arabi Uniti","NAME_JA":"アラブ首長国連邦","NAME_KO":"아랍에미리트","NAME_NL":"Verenigde Arabische Emiraten","NAME_PL":"Zjednoczone Emiraty Arabskie","NAME_PT":"Emirados Árabes Unidos","NAME_RU":"Объединённые Арабские Эмираты","NAME_SV":"Förenade Arabemiraten","NAME_TR":"Birleşik Arap Emirlikleri","NAME_UK":"Об'єднані Арабські Емірати","NAME_UR":"متحدہ عرب امارات","NAME_VI":"Các Tiểu vương quốc Ả Rập Thống nhất","NAME_ZH":"阿拉伯联合酋长国","NAME_ZHT":"阿拉伯聯合大公國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[51.568359,22.621484,56.387988,26.068164],"geometry":{"type":"MultiPolygon","coordinates":[[[[56.297852,25.650684],[56.363477,25.569385],[56.372852,25.018311],[56.387988,24.979199],[56.35293,24.973291],[56.313574,24.931299],[56.267871,24.866699],[56.204688,24.833301],[56.154492,24.795508],[56.106543,24.748682],[56.063867,24.73877],[56.008398,24.798242],[55.970313,24.858936],[55.979688,24.87207],[56.006348,24.876416],[56.016699,24.907715],[56.000586,24.953223],[55.963086,24.970264],[55.91582,24.971777],[55.870703,24.951416],[55.822852,24.911279],[55.795703,24.868115],[55.791602,24.781299],[55.804199,24.683594],[55.803906,24.63623],[55.777539,24.577344],[55.768164,24.490625],[55.786816,24.423535],[55.804004,24.383545],[55.805664,24.349805],[55.76084,24.242676],[55.799707,24.222656],[55.928613,24.215137],[55.966309,24.142627],[55.992188,24.092969],[55.985156,24.063379],[55.894141,24.041406],[55.779102,24.01709],[55.696582,24.024121],[55.547852,23.991357],[55.468457,23.941113],[55.491797,23.909668],[55.519336,23.885498],[55.531641,23.819043],[55.508496,23.724609],[55.466309,23.63291],[55.413867,23.51875],[55.353223,23.387451],[55.270215,23.189941],[55.199902,23.034766],[55.192188,22.922949],[55.194043,22.85],[55.18584,22.704102],[55.119434,22.623926],[55.104297,22.621484],[55.025,22.631152],[54.998242,22.634375],[54.922461,22.643652],[54.804883,22.658008],[54.652246,22.67666],[54.47168,22.69873],[54.270117,22.72334],[54.05459,22.749658],[53.832129,22.776807],[53.60957,22.804004],[53.394043,22.830322],[53.192383,22.854932],[53.011914,22.877002],[52.859277,22.895605],[52.741602,22.91001],[52.665918,22.919287],[52.63916,22.92251],[52.555078,22.932812],[52.50957,22.986963],[52.45459,23.052441],[52.399609,23.117969],[52.344531,23.183496],[52.289551,23.248975],[52.23457,23.314453],[52.179492,23.37998],[52.124512,23.445459],[52.069434,23.510986],[52.014453,23.576465],[51.959473,23.641992],[51.904395,23.70752],[51.849414,23.772998],[51.794336,23.838477],[51.739355,23.904004],[51.684375,23.969531],[51.629297,24.03501],[51.592578,24.078857],[51.572168,24.12832],[51.568359,24.25791],[51.568359,24.286182],[51.605469,24.338428],[51.623145,24.301074],[51.664551,24.250439],[51.734766,24.262793],[51.767578,24.254395],[51.791699,24.074756],[51.843164,24.010889],[51.906055,23.985352],[52.118555,23.971094],[52.250879,23.995215],[52.511426,24.1125],[52.648242,24.154639],[53.026367,24.147314],[53.32959,24.098438],[53.801758,24.069482],[53.893359,24.077051],[54.147949,24.171191],[54.304297,24.254297],[54.39707,24.278174],[54.458398,24.358252],[54.498828,24.462695],[54.534668,24.530957],[54.580469,24.563525],[54.624121,24.621289],[54.658984,24.715527],[54.746777,24.810449],[55.098145,25.041602],[55.303516,25.236816],[55.32168,25.299805],[55.433398,25.394482],[55.522852,25.498145],[55.941211,25.793994],[56.025195,25.916016],[56.074609,26.052783],[56.080469,26.062646],[56.116504,26.068164],[56.16748,26.047461],[56.172559,25.945166],[56.154102,25.848486],[56.151953,25.746094],[56.144629,25.690527],[56.183594,25.644922],[56.249512,25.625391],[56.278516,25.627734],[56.297852,25.650684]],[[56.281836,25.235547],[56.287793,25.278613],[56.277344,25.300879],[56.234277,25.303809],[56.216504,25.266699],[56.210547,25.213281],[56.240234,25.208838],[56.281836,25.235547]]],[[[53.332227,24.258594],[53.258301,24.25293],[53.190918,24.290918],[53.33252,24.341602],[53.370898,24.364453],[53.412402,24.411035],[53.445312,24.371191],[53.408984,24.30791],[53.382617,24.280859],[53.332227,24.258594]]],[[[52.616895,24.288574],[52.6,24.281299],[52.582227,24.335254],[52.583594,24.352344],[52.629395,24.376758],[52.657617,24.332617],[52.616895,24.288574]]],[[[53.927832,24.177197],[53.928125,24.143359],[53.826367,24.153125],[53.799121,24.135547],[53.71582,24.145313],[53.634473,24.169775],[53.689648,24.210791],[53.833789,24.258936],[53.89375,24.215137],[53.927832,24.177197]]],[[[54.46543,24.442773],[54.456641,24.42334],[54.428418,24.425098],[54.357715,24.442773],[54.334766,24.471045],[54.378906,24.50459],[54.39834,24.506348],[54.426563,24.471045],[54.46543,24.442773]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Ukraine","SOV_A3":"UKR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Ukraine","ADM0_A3":"UKR","GEOU_DIF":0,"GEOUNIT":"Ukraine","GU_A3":"UKR","SU_DIF":0,"SUBUNIT":"Ukraine","SU_A3":"UKR","BRK_DIFF":0,"NAME":"Ukraine","NAME_LONG":"Ukraine","BRK_A3":"UKR","BRK_NAME":"Ukraine","BRK_GROUP":null,"ABBREV":"Ukr.","POSTAL":"UA","FORMAL_EN":"Ukraine","FORMAL_FR":null,"NAME_CIAWF":"Ukraine","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Ukraine","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":1,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":44385155,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":153781,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"UP","ISO_A2":"UA","ISO_A2_EH":"UA","ISO_A3":"UKR","ISO_A3_EH":"UKR","ISO_N3":"804","ISO_N3_EH":"804","UN_A3":"804","WB_A2":"UA","WB_A3":"UKR","WOE_ID":23424976,"WOE_ID_EH":23424976,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"UKR","ADM0_DIFF":null,"ADM0_TLC":"UKR","ADM0_A3_US":"UKR","ADM0_A3_FR":"UKR","ADM0_A3_RU":"UKR","ADM0_A3_ES":"UKR","ADM0_A3_CN":"UKR","ADM0_A3_TW":"UKR","ADM0_A3_IN":"UKR","ADM0_A3_NP":"UKR","ADM0_A3_PK":"UKR","ADM0_A3_DE":"UKR","ADM0_A3_GB":"UKR","ADM0_A3_BR":"UKR","ADM0_A3_IL":"UKR","ADM0_A3_PS":"UKR","ADM0_A3_SA":"UKR","ADM0_A3_EG":"UKR","ADM0_A3_MA":"UKR","ADM0_A3_PT":"UKR","ADM0_A3_AR":"UKR","ADM0_A3_JP":"UKR","ADM0_A3_KO":"UKR","ADM0_A3_VN":"UKR","ADM0_A3_TR":"UKR","ADM0_A3_ID":"UKR","ADM0_A3_PL":"UKR","ADM0_A3_GR":"UKR","ADM0_A3_IT":"UKR","ADM0_A3_NL":"UKR","ADM0_A3_SE":"UKR","ADM0_A3_BD":"UKR","ADM0_A3_UA":"UKR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":7,"LABEL_X":32.140865,"LABEL_Y":49.724739,"NE_ID":1159321345,"WIKIDATAID":"Q212","NAME_AR":"أوكرانيا","NAME_BN":"ইউক্রেন","NAME_DE":"Ukraine","NAME_EN":"Ukraine","NAME_ES":"Ucrania","NAME_FA":"اوکراین","NAME_FR":"Ukraine","NAME_EL":"Ουκρανία","NAME_HE":"אוקראינה","NAME_HI":"युक्रेन","NAME_HU":"Ukrajna","NAME_ID":"Ukraina","NAME_IT":"Ucraina","NAME_JA":"ウクライナ","NAME_KO":"우크라이나","NAME_NL":"Oekraïne","NAME_PL":"Ukraina","NAME_PT":"Ucrânia","NAME_RU":"Украина","NAME_SV":"Ukraina","NAME_TR":"Ukrayna","NAME_UK":"Україна","NAME_UR":"یوکرین","NAME_VI":"Ukraina","NAME_ZH":"乌克兰","NAME_ZHT":"烏克蘭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[22.131836,45.234131,40.12832,52.353564],"geometry":{"type":"MultiPolygon","coordinates":[[[[38.214355,47.091455],[38.17832,47.080225],[37.828711,47.09585],[37.761147,47.090809],[37.543359,47.074561],[37.339844,46.916895],[37.218555,46.917334],[37.047559,46.876221],[36.932031,46.825146],[36.794824,46.714404],[36.688672,46.764111],[36.558789,46.762695],[36.432031,46.732568],[36.279492,46.658594],[36.194629,46.645508],[36.024902,46.666797],[35.827148,46.624316],[35.400195,46.381396],[35.256641,46.203906],[35.204395,46.169189],[35.132324,46.125879],[35.055273,46.104004],[35.014551,46.106006],[35.217773,46.232178],[35.280176,46.279492],[35.290918,46.314404],[35.291992,46.370703],[35.230371,46.440625],[35.064063,46.267236],[34.969531,46.24209],[34.849609,46.189893],[34.84375,46.073584],[34.857324,45.987354],[34.906641,45.878809],[35.001674,45.733383],[34.946428,45.728686],[34.799726,45.790752],[34.794084,45.892315],[34.686878,45.97695],[34.523249,45.97695],[34.449898,45.965666],[34.353978,46.061586],[34.224203,46.101083],[34.128283,46.089798],[34.02672,46.106725],[33.806667,46.208288],[33.659965,46.219573],[33.654323,46.146222],[33.594141,46.09624],[33.498828,46.078857],[33.429883,46.057617],[33.263477,46.125684],[33.202246,46.175732],[32.941797,46.123779],[32.796875,46.131494],[32.476758,46.083691],[32.329883,46.130371],[32.035742,46.260986],[31.925195,46.287256],[31.83125,46.281689],[31.77998,46.324658],[31.842871,46.346143],[31.915918,46.348682],[31.991699,46.364404],[32.013086,46.387158],[32.008496,46.42998],[31.855762,46.462451],[31.713672,46.471777],[31.623633,46.510254],[31.554883,46.554297],[31.716016,46.55498],[31.87793,46.52168],[32.131445,46.509375],[32.361328,46.474951],[32.418945,46.517773],[32.552539,46.591992],[32.578027,46.615625],[32.354102,46.564844],[32.127246,46.597217],[32.044336,46.64248],[31.974316,46.708789],[31.944922,46.784375],[31.964063,46.854834],[31.939551,46.981982],[31.864746,47.095117],[31.838184,47.157227],[31.75918,47.212842],[31.836914,47.087012],[31.865918,47.003271],[31.912695,46.926123],[31.90166,46.721631],[31.872852,46.649756],[31.77959,46.631641],[31.657031,46.642432],[31.532129,46.664746],[31.563379,46.777295],[31.496875,46.738379],[31.40293,46.628809],[31.320313,46.6125],[31.136816,46.624463],[30.796289,46.552002],[30.772852,46.473047],[30.72168,46.366211],[30.672266,46.304004],[30.656738,46.266504],[30.511523,46.105371],[30.492969,46.090137],[30.219043,45.866748],[30.18418,45.849951],[30.006641,45.797949],[29.90166,45.752393],[29.821191,45.73208],[29.685059,45.754688],[29.628418,45.722461],[29.60166,45.68252],[29.601172,45.6],[29.670313,45.540674],[29.726953,45.343311],[29.705859,45.259912],[29.651953,45.313916],[29.567676,45.370801],[29.403711,45.419678],[29.223535,45.40293],[29.027441,45.320557],[28.894336,45.289941],[28.824316,45.311084],[28.781738,45.309863],[28.766602,45.28623],[28.769824,45.266895],[28.791406,45.251904],[28.788281,45.240967],[28.760742,45.234131],[28.45127,45.292187],[28.317676,45.347119],[28.2125,45.450439],[28.264844,45.483887],[28.310352,45.498584],[28.471387,45.507178],[28.499023,45.517725],[28.501758,45.541553],[28.51377,45.572412],[28.509473,45.617822],[28.491602,45.665771],[28.562305,45.735791],[28.667578,45.793848],[28.729297,45.852002],[28.73877,45.937158],[28.849512,45.978662],[28.947754,46.049951],[28.971875,46.127637],[29.00625,46.176465],[28.94375,46.288428],[28.930566,46.362256],[28.927441,46.424121],[28.958398,46.458496],[29.049902,46.497021],[29.146289,46.526904],[29.18623,46.523975],[29.200781,46.50498],[29.20459,46.379346],[29.223828,46.376953],[29.25459,46.392627],[29.304883,46.466602],[29.339551,46.445068],[29.392871,46.436914],[29.432813,46.455957],[29.458789,46.45376],[29.491016,46.434668],[29.555078,46.407764],[29.614941,46.398828],[29.664551,46.416748],[29.706836,46.44873],[29.751953,46.437793],[29.837891,46.350537],[29.878027,46.360205],[30.075684,46.377832],[30.10752,46.401562],[30.131055,46.423096],[29.924316,46.538867],[29.934766,46.625],[29.94248,46.723779],[29.918066,46.782422],[29.877832,46.828906],[29.719727,46.88291],[29.597754,46.938818],[29.571973,46.964014],[29.568652,46.996729],[29.563477,47.04751],[29.515039,47.091113],[29.510938,47.128027],[29.541797,47.185547],[29.549316,47.246826],[29.53916,47.270996],[29.510645,47.290723],[29.455664,47.292627],[29.383398,47.328027],[29.333789,47.375732],[29.200586,47.444482],[29.159766,47.455664],[29.134863,47.489697],[29.122949,47.530371],[29.150879,47.580859],[29.186035,47.658594],[29.210742,47.731543],[29.211133,47.775],[29.194824,47.882422],[29.125391,47.964551],[29.092969,47.975439],[29.036914,47.952344],[28.97334,47.933008],[28.923145,47.951123],[28.86582,47.995654],[28.773828,48.11958],[28.60166,48.144385],[28.530469,48.150293],[28.463086,48.090527],[28.441992,48.108691],[28.423047,48.146875],[28.3875,48.162109],[28.340527,48.144434],[28.326953,48.161426],[28.347168,48.213037],[28.291016,48.238574],[28.158789,48.237988],[28.088477,48.257031],[28.080078,48.295801],[28.038477,48.321289],[27.963379,48.333545],[27.890625,48.365234],[27.82002,48.41626],[27.714453,48.449512],[27.57373,48.464893],[27.562207,48.47041],[27.549219,48.477734],[27.458398,48.443066],[27.403809,48.415625],[27.336914,48.432715],[27.228516,48.371436],[27.008496,48.368262],[26.900586,48.371924],[26.84707,48.387158],[26.64043,48.294141],[26.618945,48.259863],[26.572461,48.248486],[26.442383,48.22998],[26.305664,48.20376],[26.276953,48.113232],[26.23623,48.064355],[26.162695,47.992529],[25.908691,47.967578],[25.689258,47.932471],[25.464258,47.910791],[25.169629,47.823096],[25.073828,47.745703],[24.979102,47.724121],[24.893359,47.717773],[24.837891,47.76084],[24.650977,47.876514],[24.578906,47.931055],[24.484082,47.947119],[24.380957,47.938037],[24.281934,47.911182],[24.177734,47.906055],[24.059766,47.944775],[24.047363,47.941016],[24.001855,47.935791],[23.708984,47.982617],[23.682031,47.990381],[23.669043,47.992334],[23.628711,47.99585],[23.408203,47.98999],[23.202637,48.084521],[23.139453,48.087402],[23.09082,48.049121],[23.054785,48.006543],[22.912891,47.964258],[22.87666,47.947266],[22.856055,47.960303],[22.846484,47.99707],[22.857227,48.029541],[22.83623,48.060303],[22.782227,48.095215],[22.769141,48.109619],[22.701563,48.107031],[22.683105,48.103613],[22.676367,48.104395],[22.582422,48.134033],[22.520117,48.205371],[22.423828,48.243311],[22.350195,48.256055],[22.316699,48.286621],[22.295117,48.327295],[22.272168,48.358008],[22.269434,48.360889],[22.253711,48.407373],[22.231152,48.412158],[22.227148,48.413428],[22.131836,48.405322],[22.142871,48.568506],[22.295215,48.68584],[22.332617,48.745068],[22.389453,48.873486],[22.432031,48.933545],[22.483203,48.983252],[22.524121,49.031396],[22.538672,49.072705],[22.57998,49.077197],[22.70127,49.039941],[22.809766,49.020752],[22.839746,49.038916],[22.852051,49.062744],[22.84707,49.08125],[22.760156,49.13623],[22.705664,49.171191],[22.702344,49.192725],[22.721973,49.240967],[22.732422,49.295166],[22.719922,49.353809],[22.660645,49.483691],[22.649414,49.539014],[22.706152,49.606201],[22.890723,49.76626],[22.952246,49.826367],[23.036328,49.899072],[23.264453,50.072852],[23.408594,50.173926],[23.506152,50.229834],[23.649023,50.327051],[23.711719,50.377344],[23.972656,50.410059],[24.00498,50.457031],[24.052637,50.508447],[24.089941,50.530469],[24.094727,50.617041],[24.046289,50.722803],[24.007324,50.760156],[23.978418,50.785596],[23.99707,50.809375],[24.025977,50.816162],[24.061621,50.819531],[24.105762,50.844971],[24.095801,50.872754],[23.985742,50.94043],[23.938086,50.992529],[23.863477,51.126221],[23.712207,51.265137],[23.664453,51.310059],[23.657617,51.35249],[23.679688,51.394922],[23.658887,51.448975],[23.605273,51.51792],[23.61377,51.525391],[23.608594,51.610498],[23.64668,51.628857],[23.706836,51.641309],[23.791699,51.637109],[23.864258,51.623975],[23.951172,51.585059],[23.97832,51.591309],[24.126855,51.664648],[24.280078,51.774707],[24.32373,51.838428],[24.361914,51.867529],[24.495215,51.883057],[24.611328,51.889502],[24.685156,51.888281],[24.866406,51.899121],[24.973828,51.911133],[25.066699,51.930518],[25.267188,51.937744],[25.580273,51.924756],[25.785742,51.923828],[25.925293,51.913525],[26.26709,51.855029],[26.394336,51.844434],[26.453418,51.813428],[26.566895,51.801904],[26.773438,51.770703],[26.952832,51.754004],[27.074121,51.76084],[27.141992,51.752051],[27.270117,51.613574],[27.296289,51.597412],[27.347656,51.594141],[27.452344,51.606104],[27.601367,51.601611],[27.689746,51.572412],[27.676758,51.489941],[27.7,51.477979],[27.741309,51.482568],[27.788867,51.52915],[27.828809,51.577441],[27.858594,51.592383],[28.010742,51.559766],[28.080273,51.565039],[28.144434,51.60166],[28.183789,51.607861],[28.291602,51.581836],[28.424609,51.563623],[28.532031,51.562451],[28.599023,51.542627],[28.647754,51.456543],[28.690234,51.438867],[28.73125,51.433398],[28.793262,51.510352],[28.849512,51.540186],[28.927539,51.562158],[28.977734,51.571777],[29.013086,51.598926],[29.060742,51.625439],[29.102051,51.627539],[29.135645,51.617285],[29.174219,51.580615],[29.230469,51.497021],[29.298828,51.413037],[29.346484,51.382568],[29.469629,51.40835],[29.553125,51.43457],[29.706055,51.439551],[29.908789,51.458008],[30.06377,51.482031],[30.160742,51.477881],[30.219531,51.451221],[30.308984,51.399609],[30.333398,51.325537],[30.449512,51.274316],[30.544531,51.265039],[30.576953,51.318359],[30.63252,51.35542],[30.611719,51.406348],[30.602344,51.47124],[30.560742,51.531494],[30.533008,51.596338],[30.583887,51.688965],[30.639453,51.770068],[30.667285,51.814111],[30.755273,51.895166],[30.845703,51.953076],[30.980664,52.046191],[31.079297,52.076953],[31.168457,52.062939],[31.217969,52.050244],[31.345996,52.105371],[31.57373,52.108105],[31.763379,52.101074],[31.782422,52.099414],[31.875586,52.070898],[31.973828,52.046631],[32.041602,52.04502],[32.122266,52.050586],[32.216797,52.082959],[32.282813,52.114014],[32.362988,52.272119],[32.391309,52.294824],[32.435449,52.307227],[32.50791,52.308545],[32.64541,52.279102],[32.806445,52.252637],[32.899707,52.256348],[33.148438,52.34043],[33.287109,52.353564],[33.451855,52.333789],[33.613379,52.332617],[33.735254,52.344775],[33.818848,52.315625],[33.92207,52.251465],[34.015332,52.155957],[34.113086,51.979639],[34.397852,51.78042],[34.402734,51.741504],[34.379297,51.716504],[34.23916,51.692236],[34.121094,51.67915],[34.11543,51.644971],[34.146777,51.607959],[34.200879,51.553809],[34.209277,51.484082],[34.206543,51.419922],[34.229883,51.363232],[34.275,51.340186],[34.280664,51.31167],[34.228418,51.276855],[34.213867,51.255371],[34.23418,51.243799],[34.491016,51.237061],[34.616797,51.203125],[34.712305,51.172217],[34.760352,51.169336],[34.868555,51.189209],[34.990234,51.201758],[35.064063,51.203418],[35.092578,51.180664],[35.115332,51.12085],[35.158105,51.060986],[35.198047,51.043896],[35.269141,51.046777],[35.311914,51.043896],[35.334766,51.021143],[35.309082,50.986914],[35.314746,50.949902],[35.346094,50.904297],[35.383203,50.798926],[35.417383,50.767578],[35.440137,50.727686],[35.440137,50.68208],[35.411621,50.642236],[35.391699,50.610937],[35.411621,50.539697],[35.488477,50.459912],[35.545508,50.43999],[35.591113,50.36875],[35.67373,50.345996],[35.796191,50.405762],[35.890234,50.437109],[36.007812,50.419678],[36.116406,50.408545],[36.189453,50.367822],[36.243359,50.311768],[36.306055,50.280469],[36.368848,50.296826],[36.499805,50.280469],[36.559668,50.234863],[36.619434,50.209229],[36.696387,50.24624],[36.759082,50.291846],[36.988477,50.339551],[37.13125,50.351514],[37.171094,50.360889],[37.254883,50.394971],[37.343164,50.417627],[37.422852,50.411475],[37.501367,50.340723],[37.582324,50.291846],[37.605078,50.214941],[37.704199,50.109082],[37.950293,49.964209],[38.046875,49.92002],[38.1125,49.927832],[38.146777,49.939404],[38.162695,49.954541],[38.177539,50.025391],[38.208691,50.051465],[38.258594,50.052344],[38.451172,49.964062],[38.551953,49.95459],[38.647754,49.952881],[38.77666,49.884326],[38.918359,49.824707],[39.027734,49.818408],[39.114941,49.841748],[39.174805,49.855957],[39.211816,49.833203],[39.245996,49.781934],[39.30293,49.742041],[39.368457,49.730664],[39.462793,49.728027],[39.626563,49.650684],[39.780566,49.572021],[39.876855,49.567676],[39.958496,49.590771],[40.030664,49.596729],[40.080664,49.576855],[40.094922,49.542676],[40.057813,49.49707],[40.057813,49.431543],[40.126172,49.368848],[40.12832,49.307227],[40.108789,49.251562],[40.07002,49.200293],[39.976367,49.129834],[39.889746,49.064062],[39.759473,49.036572],[39.686523,49.00791],[39.705664,48.95957],[39.75332,48.914453],[39.86377,48.877979],[39.98916,48.851416],[40.003613,48.82207],[39.984473,48.807373],[39.904102,48.79375],[39.792871,48.807715],[39.755859,48.78208],[39.70459,48.739355],[39.67041,48.662451],[39.644727,48.591211],[39.76543,48.571875],[39.835645,48.542773],[39.85752,48.484229],[39.882617,48.419092],[39.889844,48.360449],[39.849902,48.331934],[39.847461,48.302783],[39.866309,48.288428],[39.918164,48.281934],[39.95791,48.268896],[39.961035,48.237939],[39.885059,48.168359],[39.813965,48.035303],[39.775781,47.964453],[39.778711,47.887549],[39.735938,47.844824],[39.658496,47.841211],[39.391016,47.83374],[39.158496,47.837402],[39.057813,47.848486],[38.900293,47.855127],[38.822266,47.837012],[38.718945,47.714111],[38.640625,47.665918],[38.510938,47.622412],[38.368848,47.609961],[38.287402,47.55918],[38.258789,47.479541],[38.256543,47.408936],[38.243262,47.373682],[38.212402,47.342773],[38.201367,47.320801],[38.208008,47.296533],[38.241016,47.287695],[38.280762,47.27666],[38.280762,47.259033],[38.265332,47.236963],[38.221191,47.212744],[38.201367,47.175244],[38.205859,47.135596],[38.214355,47.091455]]],[[[32.012207,46.203906],[32.150098,46.154687],[32.009375,46.167822],[31.700195,46.214062],[31.563867,46.257764],[31.528711,46.306592],[31.508789,46.373145],[31.584863,46.303174],[31.638477,46.272559],[32.012207,46.203906]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Uganda","SOV_A3":"UGA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Uganda","ADM0_A3":"UGA","GEOU_DIF":0,"GEOUNIT":"Uganda","GU_A3":"UGA","SU_DIF":0,"SUBUNIT":"Uganda","SU_A3":"UGA","BRK_DIFF":0,"NAME":"Uganda","NAME_LONG":"Uganda","BRK_A3":"UGA","BRK_NAME":"Uganda","BRK_GROUP":null,"ABBREV":"Uga.","POSTAL":"UG","FORMAL_EN":"Republic of Uganda","FORMAL_FR":null,"NAME_CIAWF":"Uganda","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Uganda","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":3,"MAPCOLOR9":6,"MAPCOLOR13":4,"POP_EST":44269594,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":35165,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"UG","ISO_A2":"UG","ISO_A2_EH":"UG","ISO_A3":"UGA","ISO_A3_EH":"UGA","ISO_N3":"800","ISO_N3_EH":"800","UN_A3":"800","WB_A2":"UG","WB_A3":"UGA","WOE_ID":23424974,"WOE_ID_EH":23424974,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"UGA","ADM0_DIFF":null,"ADM0_TLC":"UGA","ADM0_A3_US":"UGA","ADM0_A3_FR":"UGA","ADM0_A3_RU":"UGA","ADM0_A3_ES":"UGA","ADM0_A3_CN":"UGA","ADM0_A3_TW":"UGA","ADM0_A3_IN":"UGA","ADM0_A3_NP":"UGA","ADM0_A3_PK":"UGA","ADM0_A3_DE":"UGA","ADM0_A3_GB":"UGA","ADM0_A3_BR":"UGA","ADM0_A3_IL":"UGA","ADM0_A3_PS":"UGA","ADM0_A3_SA":"UGA","ADM0_A3_EG":"UGA","ADM0_A3_MA":"UGA","ADM0_A3_PT":"UGA","ADM0_A3_AR":"UGA","ADM0_A3_JP":"UGA","ADM0_A3_KO":"UGA","ADM0_A3_VN":"UGA","ADM0_A3_TR":"UGA","ADM0_A3_ID":"UGA","ADM0_A3_PL":"UGA","ADM0_A3_GR":"UGA","ADM0_A3_IT":"UGA","ADM0_A3_NL":"UGA","ADM0_A3_SE":"UGA","ADM0_A3_BD":"UGA","ADM0_A3_UA":"UGA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":32.948555,"LABEL_Y":1.972589,"NE_ID":1159321343,"WIKIDATAID":"Q1036","NAME_AR":"أوغندا","NAME_BN":"উগান্ডা","NAME_DE":"Uganda","NAME_EN":"Uganda","NAME_ES":"Uganda","NAME_FA":"اوگاندا","NAME_FR":"Ouganda","NAME_EL":"Ουγκάντα","NAME_HE":"אוגנדה","NAME_HI":"युगाण्डा","NAME_HU":"Uganda","NAME_ID":"Uganda","NAME_IT":"Uganda","NAME_JA":"ウガンダ","NAME_KO":"우간다","NAME_NL":"Oeganda","NAME_PL":"Uganda","NAME_PT":"Uganda","NAME_RU":"Уганда","NAME_SV":"Uganda","NAME_TR":"Uganda","NAME_UK":"Уганда","NAME_UR":"یوگنڈا","NAME_VI":"Uganda","NAME_ZH":"乌干达","NAME_ZHT":"烏干達","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[29.561914,-1.469922,34.978223,4.220215],"geometry":{"type":"Polygon","coordinates":[[[33.903223,-1.002051],[33.794043,-1.002051],[33.616309,-1.002051],[33.438477,-1.002051],[33.260742,-1.002051],[33.083008,-1.002051],[32.905176,-1.002051],[32.727441,-1.002051],[32.549707,-1.002051],[32.371875,-1.002051],[32.194141,-1.002051],[32.016406,-1.002051],[31.838574,-1.002051],[31.66084,-1.002051],[31.483105,-1.002051],[31.305273,-1.002051],[31.127539,-1.002051],[30.949707,-1.002051],[30.844727,-1.002051],[30.823633,-0.999023],[30.80918,-0.994922],[30.741992,-1.00752],[30.672754,-1.051367],[30.59873,-1.069727],[30.519922,-1.0625],[30.509961,-1.067285],[30.469922,-1.066016],[30.412305,-1.063086],[30.360254,-1.074609],[30.320508,-1.113086],[30.279883,-1.178809],[30.207031,-1.254199],[30.15,-1.321094],[30.101562,-1.368652],[29.990527,-1.446973],[29.930078,-1.469922],[29.9,-1.466309],[29.881641,-1.451758],[29.846875,-1.35166],[29.825391,-1.335547],[29.609668,-1.387109],[29.576953,-1.387891],[29.57998,-1.356738],[29.564063,-1.121387],[29.561914,-0.977344],[29.590039,-0.887109],[29.606445,-0.783105],[29.608203,-0.691309],[29.647852,-0.535254],[29.633203,-0.441699],[29.684375,-0.113574],[29.697852,-0.060205],[29.717676,0.09834],[29.749707,0.147217],[29.777832,0.166357],[29.814648,0.263623],[29.885449,0.418945],[29.934473,0.499023],[29.923828,0.673926],[29.931641,0.792871],[29.942871,0.819238],[30.047363,0.863525],[30.18291,0.973486],[30.240137,1.102783],[30.321094,1.185303],[30.477832,1.238818],[30.478125,1.239062],[30.942578,1.682812],[31.158789,1.922021],[31.252734,2.04458],[31.256055,2.088477],[31.274023,2.146289],[31.236328,2.191357],[31.191406,2.232275],[31.176367,2.270068],[31.137598,2.288867],[31.082129,2.288086],[31.045313,2.315527],[31.003613,2.369385],[30.961914,2.403271],[30.830078,2.400439],[30.728613,2.455371],[30.729883,2.530273],[30.769531,2.677979],[30.84668,2.847021],[30.850781,2.893652],[30.839941,2.933496],[30.821387,2.967578],[30.786523,3.001367],[30.754004,3.041797],[30.779297,3.163379],[30.827832,3.282617],[30.867578,3.342139],[30.906445,3.408936],[30.895313,3.463672],[30.838574,3.490723],[30.868164,3.544141],[30.929395,3.634082],[31.048047,3.725],[31.152344,3.785596],[31.221973,3.785937],[31.357422,3.737598],[31.47998,3.680469],[31.547168,3.677588],[31.628906,3.701465],[31.798047,3.802637],[31.838672,3.770459],[31.888281,3.709082],[31.941797,3.607568],[32.048242,3.561182],[32.099414,3.529199],[32.135938,3.519727],[32.15625,3.528027],[32.19668,3.607812],[32.245508,3.651318],[32.335742,3.706201],[32.534766,3.749951],[32.676953,3.763184],[32.737109,3.772705],[32.838086,3.798486],[32.997266,3.880176],[33.154102,3.774707],[33.324316,3.754346],[33.489355,3.755078],[33.539551,3.787109],[33.568457,3.811719],[33.741602,3.985254],[33.976074,4.220215],[34.132031,3.88916],[34.185742,3.869775],[34.178223,3.840869],[34.165039,3.812988],[34.26709,3.733154],[34.392871,3.691504],[34.437695,3.650586],[34.441797,3.60625],[34.399414,3.412695],[34.407227,3.35752],[34.447852,3.163477],[34.522559,3.119971],[34.58916,2.924756],[34.723242,2.841943],[34.74248,2.818115],[34.773438,2.723437],[34.814453,2.619824],[34.84668,2.595752],[34.866211,2.589697],[34.905762,2.479687],[34.883008,2.41792],[34.913965,2.230176],[34.964063,2.062402],[34.977539,1.861914],[34.978223,1.773633],[34.976465,1.719629],[34.965234,1.643359],[34.941211,1.599268],[34.89834,1.556494],[34.850977,1.489014],[34.80957,1.416699],[34.783594,1.381152],[34.803809,1.272852],[34.798633,1.244531],[34.787598,1.230713],[34.726758,1.214258],[34.649121,1.185303],[34.601953,1.156445],[34.535254,1.101562],[34.481738,1.042139],[34.41084,0.867285],[34.292578,0.73125],[34.272559,0.686426],[34.160938,0.605176],[34.111719,0.505127],[34.080566,0.382471],[34.037207,0.294531],[33.943164,0.173779],[33.921484,-0.016992],[33.924414,-0.397852],[33.9,-0.831641],[33.903223,-1.002051]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":4,"SOVEREIGNT":"Turkmenistan","SOV_A3":"TKM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Turkmenistan","ADM0_A3":"TKM","GEOU_DIF":0,"GEOUNIT":"Turkmenistan","GU_A3":"TKM","SU_DIF":0,"SUBUNIT":"Turkmenistan","SU_A3":"TKM","BRK_DIFF":0,"NAME":"Turkmenistan","NAME_LONG":"Turkmenistan","BRK_A3":"TKM","BRK_NAME":"Turkmenistan","BRK_GROUP":null,"ABBREV":"Turkm.","POSTAL":"TM","FORMAL_EN":"Turkmenistan","FORMAL_FR":null,"NAME_CIAWF":"Turkmenistan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Turkmenistan","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":1,"MAPCOLOR13":9,"POP_EST":5942089,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":40761,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"TX","ISO_A2":"TM","ISO_A2_EH":"TM","ISO_A3":"TKM","ISO_A3_EH":"TKM","ISO_N3":"795","ISO_N3_EH":"795","UN_A3":"795","WB_A2":"TM","WB_A3":"TKM","WOE_ID":23424972,"WOE_ID_EH":23424972,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TKM","ADM0_DIFF":null,"ADM0_TLC":"TKM","ADM0_A3_US":"TKM","ADM0_A3_FR":"TKM","ADM0_A3_RU":"TKM","ADM0_A3_ES":"TKM","ADM0_A3_CN":"TKM","ADM0_A3_TW":"TKM","ADM0_A3_IN":"TKM","ADM0_A3_NP":"TKM","ADM0_A3_PK":"TKM","ADM0_A3_DE":"TKM","ADM0_A3_GB":"TKM","ADM0_A3_BR":"TKM","ADM0_A3_IL":"TKM","ADM0_A3_PS":"TKM","ADM0_A3_SA":"TKM","ADM0_A3_EG":"TKM","ADM0_A3_MA":"TKM","ADM0_A3_PT":"TKM","ADM0_A3_AR":"TKM","ADM0_A3_JP":"TKM","ADM0_A3_KO":"TKM","ADM0_A3_VN":"TKM","ADM0_A3_TR":"TKM","ADM0_A3_ID":"TKM","ADM0_A3_PL":"TKM","ADM0_A3_GR":"TKM","ADM0_A3_IT":"TKM","ADM0_A3_NL":"TKM","ADM0_A3_SE":"TKM","ADM0_A3_BD":"TKM","ADM0_A3_UA":"TKM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Central Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":12,"LONG_LEN":12,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":58.676647,"LABEL_Y":39.855246,"NE_ID":1159321309,"WIKIDATAID":"Q874","NAME_AR":"تركمانستان","NAME_BN":"তুর্কমেনিস্তান","NAME_DE":"Turkmenistan","NAME_EN":"Turkmenistan","NAME_ES":"Turkmenistán","NAME_FA":"ترکمنستان","NAME_FR":"Turkménistan","NAME_EL":"Τουρκμενιστάν","NAME_HE":"טורקמניסטן","NAME_HI":"तुर्कमेनिस्तान","NAME_HU":"Türkmenisztán","NAME_ID":"Turkmenistan","NAME_IT":"Turkmenistan","NAME_JA":"トルクメニスタン","NAME_KO":"투르크메니스탄","NAME_NL":"Turkmenistan","NAME_PL":"Turkmenistan","NAME_PT":"Turquemenistão","NAME_RU":"Туркмения","NAME_SV":"Turkmenistan","NAME_TR":"Türkmenistan","NAME_UK":"Туркменістан","NAME_UR":"ترکمانستان","NAME_VI":"Turkmenistan","NAME_ZH":"土库曼斯坦","NAME_ZHT":"土庫曼","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[52.493848,35.170801,66.629297,42.778467],"geometry":{"type":"MultiPolygon","coordinates":[[[[53.10957,38.803076],[53.100195,38.756152],[53.045898,38.897217],[53.018555,39.052734],[53.05332,39.096582],[53.092188,39.094092],[53.055176,39.037939],[53.10957,38.803076]]],[[[55.977441,41.322217],[56.241992,41.31084],[56.479883,41.300635],[56.773633,41.287988],[56.86084,41.276123],[56.96582,41.265137],[57.017969,41.263477],[57.064258,41.307275],[57.094824,41.331299],[57.118848,41.350293],[57.113867,41.371777],[57.07666,41.38999],[57.018164,41.450586],[56.984863,41.669336],[56.964063,41.856543],[57.033691,41.914844],[57.113574,41.957129],[57.228809,42.084473],[57.290625,42.123779],[57.381738,42.156299],[57.686133,42.164795],[57.814258,42.189844],[57.855957,42.231055],[57.923438,42.335205],[57.945703,42.42002],[57.983496,42.458789],[58.028906,42.487646],[58.075488,42.486523],[58.165625,42.461572],[58.234082,42.447705],[58.28291,42.428857],[58.327246,42.398926],[58.370508,42.346777],[58.377148,42.312451],[58.39707,42.29248],[58.431445,42.29209],[58.457031,42.291797],[58.474414,42.299365],[58.48584,42.316846],[58.476953,42.340137],[58.418164,42.406689],[58.288672,42.527295],[58.204102,42.576367],[58.162012,42.602979],[58.151563,42.628076],[58.206445,42.666309],[58.259668,42.688086],[58.353125,42.671729],[58.477148,42.662842],[58.532324,42.681934],[58.589063,42.778467],[58.72998,42.676172],[58.876953,42.561475],[58.930859,42.540283],[59.03584,42.528125],[59.123145,42.523779],[59.15957,42.511426],[59.199121,42.481689],[59.276563,42.356152],[59.354297,42.323291],[59.451074,42.299512],[59.762598,42.301562],[59.858301,42.295166],[59.936523,42.236035],[59.985156,42.211719],[60.006055,42.19082],[60.000781,42.164746],[59.981641,42.131738],[59.979199,42.068066],[59.974121,42.018799],[59.949316,41.99541],[59.941797,41.973535],[59.962598,41.954395],[60.106934,41.907422],[60.155566,41.857031],[60.19209,41.834424],[60.200781,41.803125],[60.176367,41.782275],[60.108594,41.792676],[60.075586,41.759668],[60.075586,41.700537],[60.124023,41.644971],[60.137988,41.594141],[60.106055,41.545215],[60.06875,41.476221],[60.067383,41.427344],[60.089648,41.399414],[60.2,41.348975],[60.45498,41.221631],[60.513574,41.216162],[60.754883,41.245752],[60.867188,41.248682],[60.933203,41.229004],[61.119922,41.210889],[61.179297,41.190576],[61.242383,41.189209],[61.328906,41.195117],[61.3875,41.252148],[61.417383,41.265137],[61.443652,41.274609],[61.496973,41.276074],[61.644531,41.239844],[61.799902,41.163428],[61.902832,41.093701],[61.953516,41.030615],[62.017578,40.893799],[62.09502,40.683301],[62.188477,40.541211],[62.298047,40.46748],[62.375,40.33208],[62.441602,40.03623],[62.483203,39.975635],[62.525488,39.944092],[62.650684,39.858496],[62.906836,39.716797],[63.058105,39.633154],[63.291895,39.499512],[63.506055,39.3771],[63.720801,39.188135],[63.763672,39.160547],[63.952539,39.05835],[64.162793,38.953613],[64.309961,38.977295],[64.531641,38.816211],[64.621875,38.756445],[64.659961,38.736035],[64.820703,38.672461],[65.07666,38.539453],[65.399609,38.348828],[65.612891,38.238574],[65.670898,38.225732],[65.728516,38.226367],[65.790234,38.250049],[65.857129,38.26875],[65.971191,38.244238],[66.094824,38.200146],[66.173145,38.166699],[66.263672,38.118066],[66.335352,38.072168],[66.389746,38.050928],[66.574512,38.010791],[66.60625,37.986719],[66.626367,37.959863],[66.629297,37.932031],[66.525586,37.785742],[66.511328,37.59917],[66.510645,37.458691],[66.522266,37.348486],[66.471875,37.344727],[66.350293,37.368164],[66.108398,37.414746],[65.900684,37.508105],[65.765039,37.569141],[65.743848,37.56084],[65.683008,37.519141],[65.641211,37.467822],[65.608008,37.368408],[65.55498,37.251172],[65.303613,37.246777],[65.089648,37.237939],[64.951563,37.193555],[64.816309,37.13208],[64.782422,37.059277],[64.753125,36.964795],[64.674316,36.750195],[64.602539,36.554541],[64.56582,36.427588],[64.511035,36.340674],[64.358008,36.226074],[64.184375,36.148926],[64.092188,36.112695],[64.051367,36.067627],[64.042383,36.025098],[64.009668,36.012109],[63.938086,36.019727],[63.8625,36.012354],[63.696582,35.967822],[63.516992,35.913135],[63.30166,35.858398],[63.178906,35.858447],[63.12998,35.846191],[63.108594,35.818701],[63.12998,35.766748],[63.150781,35.728271],[63.169727,35.678125],[63.119336,35.637549],[63.08418,35.568066],[63.056641,35.445801],[62.980273,35.40918],[62.858008,35.349658],[62.722656,35.271338],[62.688086,35.255322],[62.610547,35.233154],[62.533105,35.239893],[62.462891,35.251367],[62.386621,35.23125],[62.307813,35.170801],[62.271191,35.189111],[62.252832,35.250244],[62.213086,35.289941],[62.089648,35.379687],[61.983887,35.443701],[61.938086,35.4479],[61.841016,35.431494],[61.719727,35.419434],[61.620996,35.432324],[61.542773,35.457861],[61.421777,35.545801],[61.377734,35.593115],[61.344727,35.629492],[61.262012,35.61958],[61.238867,35.659277],[61.235547,35.705566],[61.258691,35.761816],[61.252148,35.867627],[61.205859,35.943701],[61.15293,35.976758],[61.159473,35.999902],[61.182617,36.052832],[61.212402,36.099121],[61.212012,36.190527],[61.175098,36.289697],[61.160352,36.432715],[61.169922,36.572266],[61.119629,36.642578],[60.70791,36.642969],[60.341309,36.637646],[60.320703,36.653564],[60.17832,36.829443],[60.062793,36.962891],[59.948633,37.041602],[59.687207,37.138477],[59.562207,37.178906],[59.45498,37.252832],[59.367383,37.33374],[59.344727,37.444727],[59.326953,37.481152],[59.301758,37.510645],[59.274121,37.52373],[59.24082,37.520752],[58.937207,37.649658],[58.81543,37.683496],[58.700781,37.65625],[58.650195,37.651562],[58.550488,37.688184],[58.435742,37.638525],[58.386719,37.635352],[58.318164,37.647217],[58.261621,37.66582],[58.108789,37.783057],[57.980566,37.830469],[57.888184,37.86084],[57.710547,37.905273],[57.520996,37.928467],[57.423828,37.947705],[57.353711,37.97334],[57.335742,37.989941],[57.336719,38.03291],[57.331445,38.089307],[57.308105,38.130371],[57.260156,38.17959],[57.193555,38.216406],[57.079004,38.209961],[56.906641,38.213037],[56.774609,38.250049],[56.669922,38.256641],[56.544043,38.249609],[56.440625,38.249414],[56.366895,38.22251],[56.324121,38.191113],[56.296973,38.094824],[56.27207,38.08042],[56.228809,38.073389],[56.171191,38.078369],[56.050293,38.077539],[55.841309,38.094629],[55.578418,38.099756],[55.380859,38.051123],[55.224707,37.981348],[55.075586,37.90249],[54.900098,37.77793],[54.848633,37.722656],[54.745215,37.501904],[54.699414,37.470166],[54.639648,37.444727],[54.578906,37.440234],[54.458691,37.407568],[54.299805,37.353613],[54.191602,37.332471],[53.91416,37.343555],[53.897852,37.413574],[53.847852,37.66958],[53.823535,37.92793],[53.825195,38.046924],[53.854102,38.285645],[53.851855,38.405908],[53.840039,38.514941],[53.851562,38.621777],[53.87373,38.741943],[53.885352,38.864062],[53.868652,38.949268],[53.814941,39.018018],[53.724121,39.103076],[53.709766,39.153418],[53.70459,39.20957],[53.617578,39.215967],[53.539453,39.274072],[53.475,39.305713],[53.336328,39.34082],[53.266797,39.342627],[53.20332,39.316797],[53.156641,39.26499],[53.124023,39.34668],[53.124805,39.43208],[53.235645,39.608545],[53.30498,39.55708],[53.389648,39.536426],[53.497363,39.533301],[53.603125,39.546973],[53.582422,39.607422],[53.533301,39.641748],[53.472266,39.668799],[53.450488,39.748535],[53.458301,39.831201],[53.487305,39.909375],[53.454297,39.940869],[53.404199,39.960352],[53.288574,39.958008],[53.138574,39.978662],[52.9875,39.987598],[52.952148,39.895459],[53.035547,39.774414],[52.964844,39.833887],[52.898242,39.9125],[52.804688,40.054004],[52.744434,40.219775],[52.733691,40.39873],[52.784766,40.546729],[52.849902,40.685645],[52.889258,40.863477],[52.943457,41.038086],[52.997656,40.959863],[53.05957,40.889746],[53.145215,40.824951],[53.191992,40.809473],[53.33291,40.782715],[53.423633,40.792773],[53.520313,40.831055],[53.615234,40.818506],[53.69375,40.746436],[53.76377,40.665674],[53.87002,40.648682],[54.088867,40.70708],[54.192969,40.72041],[54.283301,40.693701],[54.329883,40.68877],[54.377344,40.693262],[54.33623,40.764941],[54.319434,40.83457],[54.374414,40.871387],[54.54707,40.832275],[54.657031,40.85835],[54.685059,40.873047],[54.710059,40.891113],[54.723242,40.95127],[54.717969,41.012988],[54.703711,41.071143],[54.671484,41.122168],[54.592188,41.193555],[54.28457,41.363721],[54.181055,41.431592],[54.094824,41.519385],[54.039844,41.643359],[53.995215,41.772559],[53.953809,41.868457],[53.846484,42.091162],[53.804688,42.117627],[53.752344,42.129395],[53.624902,42.136377],[53.495898,42.120166],[53.284961,42.081836],[53.16416,42.093799],[53.108301,42.070068],[52.97002,41.976221],[52.905273,41.895752],[52.814844,41.711816],[52.883496,41.652539],[52.882227,41.613672],[52.830176,41.341895],[52.861816,41.210059],[52.850391,41.200293],[52.825586,41.230859],[52.747266,41.36543],[52.609375,41.529443],[52.493848,41.780371],[52.696875,41.944385],[52.870508,42.060596],[53.0125,42.130713],[53.055859,42.147754],[53.250098,42.205859],[53.500781,42.258252],[53.685352,42.296875],[53.926367,42.329785],[54.005176,42.335889],[54.120996,42.335205],[54.214941,42.304199],[54.271875,42.27998],[54.472852,42.180176],[54.67793,42.078223],[54.853809,41.965186],[54.903711,41.919092],[54.931641,41.864014],[54.952344,41.81001],[55.101855,41.638721],[55.162305,41.560254],[55.249609,41.458105],[55.319727,41.408398],[55.388379,41.346924],[55.434375,41.296289],[55.487012,41.272266],[55.545215,41.262744],[55.678613,41.278809],[55.839063,41.310791],[55.934961,41.324121],[55.977441,41.322217]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":2,"SOVEREIGNT":"Turkey","SOV_A3":"TUR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Turkey","ADM0_A3":"TUR","GEOU_DIF":0,"GEOUNIT":"Turkey","GU_A3":"TUR","SU_DIF":0,"SUBUNIT":"Turkey","SU_A3":"TUR","BRK_DIFF":0,"NAME":"Turkey","NAME_LONG":"Turkey","BRK_A3":"TUR","BRK_NAME":"Turkey","BRK_GROUP":null,"ABBREV":"Tur.","POSTAL":"TR","FORMAL_EN":"Republic of Turkey","FORMAL_FR":null,"NAME_CIAWF":"Turkey","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Turkey","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":3,"MAPCOLOR9":8,"MAPCOLOR13":4,"POP_EST":83429615,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":761425,"GDP_YEAR":2019,"ECONOMY":"4. Emerging region: MIKT","INCOME_GRP":"3. Upper middle income","FIPS_10":"TU","ISO_A2":"TR","ISO_A2_EH":"TR","ISO_A3":"TUR","ISO_A3_EH":"TUR","ISO_N3":"792","ISO_N3_EH":"792","UN_A3":"792","WB_A2":"TR","WB_A3":"TUR","WOE_ID":23424969,"WOE_ID_EH":23424969,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TUR","ADM0_DIFF":null,"ADM0_TLC":"TUR","ADM0_A3_US":"TUR","ADM0_A3_FR":"TUR","ADM0_A3_RU":"TUR","ADM0_A3_ES":"TUR","ADM0_A3_CN":"TUR","ADM0_A3_TW":"TUR","ADM0_A3_IN":"TUR","ADM0_A3_NP":"TUR","ADM0_A3_PK":"TUR","ADM0_A3_DE":"TUR","ADM0_A3_GB":"TUR","ADM0_A3_BR":"TUR","ADM0_A3_IL":"TUR","ADM0_A3_PS":"TUR","ADM0_A3_SA":"TUR","ADM0_A3_EG":"TUR","ADM0_A3_MA":"TUR","ADM0_A3_PT":"TUR","ADM0_A3_AR":"TUR","ADM0_A3_JP":"TUR","ADM0_A3_KO":"TUR","ADM0_A3_VN":"TUR","ADM0_A3_TR":"TUR","ADM0_A3_ID":"TUR","ADM0_A3_PL":"TUR","ADM0_A3_GR":"TUR","ADM0_A3_IT":"TUR","ADM0_A3_NL":"TUR","ADM0_A3_SE":"TUR","ADM0_A3_BD":"TUR","ADM0_A3_UA":"TUR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":34.508268,"LABEL_Y":39.345388,"NE_ID":1159321331,"WIKIDATAID":"Q43","NAME_AR":"تركيا","NAME_BN":"তুরস্ক","NAME_DE":"Türkei","NAME_EN":"Turkey","NAME_ES":"Turquía","NAME_FA":"ترکیه","NAME_FR":"Turquie","NAME_EL":"Τουρκία","NAME_HE":"טורקיה","NAME_HI":"तुर्की","NAME_HU":"Törökország","NAME_ID":"Turki","NAME_IT":"Turchia","NAME_JA":"トルコ","NAME_KO":"터키","NAME_NL":"Turkije","NAME_PL":"Turcja","NAME_PT":"Turquia","NAME_RU":"Турция","NAME_SV":"Turkiet","NAME_TR":"Türkiye","NAME_UK":"Туреччина","NAME_UR":"ترکی","NAME_VI":"Thổ Nhĩ Kỳ","NAME_ZH":"土耳其","NAME_ZHT":"土耳其","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[25.668945,35.831445,44.817188,42.093262],"geometry":{"type":"MultiPolygon","coordinates":[[[[25.97002,40.136328],[25.740234,40.105469],[25.668945,40.135889],[25.740918,40.196289],[25.874805,40.233691],[25.918359,40.237988],[25.977051,40.177832],[25.97002,40.136328]]],[[[41.510059,41.51748],[41.576563,41.497314],[41.701758,41.471582],[41.779395,41.440527],[41.823535,41.432373],[41.925781,41.495654],[42.077734,41.494092],[42.211133,41.486719],[42.27998,41.475],[42.364355,41.454004],[42.466406,41.439844],[42.50791,41.470068],[42.567383,41.559277],[42.59043,41.570703],[42.606836,41.578809],[42.682422,41.585742],[42.754102,41.578906],[42.787891,41.563721],[42.82168,41.492383],[42.906738,41.466846],[43.057129,41.352832],[43.149023,41.307129],[43.171289,41.287939],[43.141016,41.264844],[43.152832,41.236426],[43.205469,41.19917],[43.279297,41.185205],[43.358984,41.190137],[43.402344,41.176562],[43.433398,41.155518],[43.441602,41.125977],[43.439453,41.107129],[43.455273,41.064697],[43.51748,41.004834],[43.591699,40.968213],[43.631641,40.929004],[43.696484,40.794141],[43.722656,40.719531],[43.712891,40.647754],[43.667871,40.574072],[43.569336,40.482373],[43.59375,40.444043],[43.61582,40.393311],[43.608398,40.356592],[43.678125,40.239307],[43.709863,40.166504],[43.683301,40.149658],[43.666211,40.126367],[43.791699,40.070264],[43.941992,40.023145],[44.005371,40.014111],[44.178027,40.035742],[44.289258,40.040381],[44.399609,39.995752],[44.560449,39.887598],[44.733789,39.746484],[44.768262,39.703516],[44.783398,39.684668],[44.817188,39.650439],[44.782129,39.651074],[44.725,39.681738],[44.587109,39.768555],[44.516699,39.73125],[44.455957,39.666748],[44.389355,39.422119],[44.335449,39.396045],[44.24043,39.396777],[44.124023,39.405225],[44.043945,39.392969],[44.023242,39.377441],[44.033789,39.351025],[44.05752,39.31084],[44.074316,39.259961],[44.079102,39.218311],[44.121289,39.180615],[44.178027,39.144824],[44.180566,39.108057],[44.171875,39.05625],[44.158789,39.016748],[44.144531,38.994385],[44.170801,38.934375],[44.232422,38.863232],[44.27168,38.836035],[44.257031,38.700635],[44.280176,38.640674],[44.297852,38.557812],[44.29082,38.420117],[44.298535,38.386279],[44.319629,38.374707],[44.375781,38.36958],[44.430859,38.356787],[44.449902,38.334229],[44.449609,38.317773],[44.380859,38.25459],[44.372754,38.209717],[44.348926,38.146484],[44.329395,38.109277],[44.267969,38.038818],[44.228906,37.967187],[44.211328,37.908057],[44.222949,37.880176],[44.33623,37.871777],[44.397754,37.829248],[44.56123,37.744629],[44.589941,37.710352],[44.545313,37.658154],[44.546094,37.636328],[44.567188,37.608643],[44.577148,37.560205],[44.573145,37.506396],[44.574023,37.4354],[44.604102,37.42373],[44.715137,37.357129],[44.794141,37.290381],[44.796777,37.269775],[44.758301,37.21709],[44.766699,37.156348],[44.765137,37.142432],[44.730957,37.165283],[44.669336,37.173584],[44.605957,37.176025],[44.566016,37.158252],[44.495996,37.110547],[44.401953,37.058496],[44.325586,37.010742],[44.281836,36.978027],[44.245703,36.983301],[44.21748,37.011865],[44.20166,37.051807],[44.208398,37.202637],[44.191797,37.249854],[44.15625,37.282959],[44.114453,37.301855],[44.064648,37.312451],[44.013184,37.313525],[43.940039,37.269287],[43.836426,37.223535],[43.675781,37.227246],[43.567969,37.23584],[43.51582,37.244531],[43.306738,37.314648],[43.263086,37.316504],[43.185156,37.344873],[43.09248,37.367383],[42.936621,37.324756],[42.869141,37.334912],[42.774609,37.371875],[42.741113,37.361914],[42.635449,37.249268],[42.455859,37.128711],[42.358984,37.108594],[42.312891,37.22959],[42.268555,37.276562],[42.247559,37.282227],[42.202734,37.297266],[42.167871,37.288623],[42.059863,37.206055],[41.886816,37.156396],[41.743555,37.126123],[41.515527,37.08916],[41.339551,37.070801],[41.264648,37.069336],[41.102148,37.085889],[40.958887,37.10918],[40.815625,37.108154],[40.705664,37.097705],[40.450391,37.008887],[40.016406,36.826074],[39.686523,36.738623],[39.501465,36.702246],[39.356641,36.681592],[39.108398,36.680566],[38.906445,36.694678],[38.766602,36.693115],[38.688867,36.715088],[38.578027,36.789111],[38.44375,36.862256],[38.383984,36.879248],[38.305859,36.893359],[38.191699,36.901562],[37.906641,36.794629],[37.817969,36.765576],[37.720313,36.743701],[37.523535,36.67832],[37.436328,36.643311],[37.327051,36.646582],[37.187402,36.655908],[37.066211,36.652637],[36.985352,36.702393],[36.941797,36.758398],[36.776563,36.792676],[36.658594,36.802539],[36.628418,36.777686],[36.596875,36.701367],[36.54668,36.506348],[36.5375,36.457422],[36.641406,36.263525],[36.636719,36.233984],[36.562402,36.223926],[36.477051,36.220703],[36.421484,36.203467],[36.375391,36.17124],[36.347559,36.003516],[36.248828,35.972705],[36.201953,35.937549],[36.153613,35.833887],[36.127344,35.831445],[35.967578,35.910059],[35.892676,35.916553],[35.956934,35.998145],[35.887109,36.159082],[35.810938,36.309863],[35.882812,36.406348],[36.031738,36.522705],[36.188477,36.658984],[36.188184,36.743066],[36.180078,36.807227],[36.135156,36.851611],[36.048926,36.910596],[35.90459,36.847607],[35.801563,36.778076],[35.734277,36.763965],[35.661133,36.724316],[35.625586,36.652783],[35.537402,36.597021],[35.393164,36.575195],[35.176172,36.634863],[34.943164,36.725684],[34.81123,36.799268],[34.703613,36.816797],[34.601367,36.784473],[34.299609,36.604199],[34.023438,36.340771],[33.954883,36.295215],[33.694727,36.181982],[33.522754,36.143994],[33.441797,36.152832],[33.099512,36.102979],[32.929492,36.095703],[32.794824,36.035889],[32.533789,36.100732],[32.377734,36.183643],[32.283789,36.267871],[32.130566,36.449121],[32.021973,36.535303],[31.77793,36.612793],[31.352539,36.801074],[31.240625,36.821729],[30.950293,36.848682],[30.644043,36.865674],[30.582031,36.797168],[30.558496,36.52583],[30.506055,36.451123],[30.483594,36.3104],[30.446094,36.269873],[30.387305,36.243262],[30.29541,36.287695],[30.231641,36.307324],[30.083203,36.249365],[29.789258,36.168066],[29.689063,36.156689],[29.34834,36.258838],[29.223633,36.324463],[29.143262,36.397217],[29.116113,36.520117],[29.065527,36.590088],[29.058105,36.638135],[29.038281,36.693457],[28.969629,36.715332],[28.895898,36.673584],[28.816895,36.675293],[28.717676,36.700879],[28.483594,36.803809],[28.303711,36.811963],[28.195605,36.686328],[28.111523,36.646387],[28.019434,36.634473],[28.01416,36.670215],[28.083984,36.751465],[27.803809,36.736475],[27.655859,36.674609],[27.54043,36.684229],[27.453906,36.712158],[27.466895,36.746338],[27.554688,36.758887],[27.630859,36.78667],[27.934473,36.809277],[28.005371,36.831982],[28.083008,36.920264],[28.224414,36.996387],[28.242383,37.029053],[28.133691,37.029492],[27.668359,37.007422],[27.348926,37.01958],[27.311035,36.981885],[27.262988,36.976562],[27.249707,37.07915],[27.300195,37.126855],[27.368164,37.122412],[27.535059,37.163867],[27.520117,37.249121],[27.400586,37.306738],[27.37627,37.340723],[27.289551,37.348682],[27.219238,37.38916],[27.203906,37.491406],[27.147949,37.603613],[27.067969,37.65791],[27.077832,37.687695],[27.224414,37.725439],[27.254785,37.882324],[27.232422,37.978662],[27.158691,37.986865],[26.943848,38.062891],[26.878613,38.054785],[26.807422,38.13833],[26.682813,38.19834],[26.621094,38.176367],[26.582422,38.149268],[26.524707,38.162256],[26.42793,38.214355],[26.33291,38.24248],[26.290723,38.277197],[26.343652,38.370068],[26.416406,38.367871],[26.429688,38.440625],[26.372266,38.561914],[26.377832,38.62417],[26.441309,38.641211],[26.513574,38.629492],[26.586523,38.557031],[26.610352,38.486914],[26.59502,38.418604],[26.641309,38.352441],[26.674219,38.335742],[26.696387,38.405371],[26.727344,38.418604],[26.769922,38.388184],[26.861426,38.372949],[27.098633,38.415723],[27.144238,38.451953],[26.97041,38.447852],[26.906836,38.481738],[26.837793,38.557568],[26.795313,38.626416],[26.787695,38.660205],[26.763672,38.709619],[26.790137,38.736084],[26.90918,38.775781],[27.013672,38.886865],[26.970117,38.919043],[26.920313,38.934229],[26.866211,38.922949],[26.814941,38.960986],[26.808301,39.013916],[26.849316,39.056738],[26.853613,39.115625],[26.719336,39.260645],[26.681836,39.292236],[26.710742,39.339648],[26.813281,39.419043],[26.910938,39.517334],[26.899219,39.549658],[26.827051,39.562891],[26.484082,39.520703],[26.350781,39.484082],[26.113086,39.467383],[26.095996,39.520801],[26.101367,39.568945],[26.154688,39.656641],[26.149805,39.872852],[26.181348,39.990088],[26.313379,40.025],[26.475391,40.197266],[26.738086,40.400244],[27.012109,40.396338],[27.12168,40.452344],[27.28457,40.455615],[27.31416,40.414893],[27.332617,40.375928],[27.475586,40.319922],[27.728027,40.328809],[27.789355,40.350879],[27.848535,40.381738],[27.731836,40.481494],[27.769141,40.509619],[27.874902,40.512939],[27.989551,40.489453],[27.994824,40.466602],[27.964355,40.435303],[27.928906,40.38042],[27.962598,40.369873],[28.289062,40.403027],[28.630273,40.376465],[28.738867,40.390869],[29.007129,40.389746],[29.055176,40.42417],[28.974023,40.467383],[28.894629,40.482422],[28.841211,40.503467],[28.787891,40.534033],[28.958008,40.630566],[29.054102,40.649121],[29.507617,40.708398],[29.844922,40.738086],[29.849219,40.760107],[29.800586,40.760156],[29.364746,40.809277],[29.259766,40.847314],[29.113867,40.937842],[29.082227,40.963428],[29.045508,41.007568],[29.067383,41.10166],[29.094336,41.177246],[29.148145,41.221045],[29.322266,41.227734],[29.919336,41.15083],[30.344922,41.196924],[30.810059,41.084863],[31.254883,41.107617],[31.34668,41.15791],[31.458008,41.32002],[32.086426,41.589209],[32.306445,41.72959],[32.542188,41.806396],[32.94668,41.891748],[33.284766,42.00459],[33.381348,42.017578],[34.192969,41.963672],[34.750488,41.956836],[35.006445,42.063281],[35.154883,42.027539],[35.141016,41.989502],[35.114063,41.956982],[35.12207,41.891113],[35.20918,41.794385],[35.297754,41.728516],[35.558008,41.634033],[35.919824,41.713721],[35.978125,41.704834],[36.051758,41.682568],[36.179199,41.426562],[36.278418,41.336133],[36.405371,41.274609],[36.509668,41.2625],[36.587109,41.32666],[36.64707,41.352539],[36.777734,41.363477],[36.991992,41.275391],[37.066211,41.184424],[37.430957,41.114111],[37.765625,41.078906],[37.910059,41.001904],[38.381055,40.924512],[38.556934,40.936523],[38.852148,41.017676],[39.426367,41.106445],[39.80791,40.98252],[39.911133,40.966455],[40.000195,40.977148],[40.128418,40.943018],[40.265234,40.961328],[40.6875,41.107422],[40.819531,41.190234],[40.959473,41.211621],[41.083594,41.261182],[41.414355,41.423633],[41.510059,41.51748]]],[[[28.014453,41.969043],[27.987305,41.854883],[28.050293,41.72915],[28.197852,41.554492],[28.346387,41.466357],[28.946777,41.248389],[29.057227,41.229736],[29.032129,41.140479],[28.995996,41.061133],[28.95625,41.008203],[28.780371,40.97417],[28.294922,41.071484],[28.172168,41.080713],[28.085547,41.061328],[27.925195,40.990576],[27.747363,41.013281],[27.499414,40.973145],[27.430176,40.839941],[27.258008,40.687354],[26.974609,40.564014],[26.77207,40.498047],[26.467969,40.261475],[26.32998,40.123389],[26.271777,40.096582],[26.202734,40.075391],[26.225977,40.141699],[26.260156,40.202393],[26.252344,40.248145],[26.253809,40.314697],[26.355273,40.390234],[26.447461,40.44502],[26.720313,40.544238],[26.79209,40.626611],[26.578125,40.624658],[26.360938,40.606348],[26.224219,40.618066],[26.105469,40.611328],[26.067773,40.683398],[26.038965,40.726758],[26.069727,40.740283],[26.10918,40.749658],[26.178906,40.826514],[26.241211,40.883203],[26.331055,40.954492],[26.354102,40.99707],[26.354102,41.036768],[26.332617,41.064307],[26.328418,41.097021],[26.325684,41.143262],[26.330664,41.23877],[26.536426,41.343115],[26.602344,41.35415],[26.624902,41.401758],[26.609766,41.512158],[26.581348,41.60127],[26.544531,41.607227],[26.49502,41.633252],[26.4625,41.663379],[26.410547,41.696338],[26.320898,41.716553],[26.317969,41.744678],[26.327246,41.772803],[26.360352,41.801562],[26.511426,41.826367],[26.529297,41.84668],[26.549707,41.896729],[26.579688,41.947949],[26.615332,41.964893],[26.679199,41.96333],[26.800391,41.975146],[26.884863,41.991846],[26.96875,42.026855],[27.011719,42.058643],[27.193359,42.0771],[27.244336,42.093262],[27.294922,42.079541],[27.362891,42.025049],[27.474805,41.946875],[27.534863,41.920801],[27.579883,41.93291],[27.661133,41.961328],[27.738867,41.961523],[27.80166,41.956543],[27.831934,41.981299],[27.879199,41.986621],[28.014453,41.969043]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Tunisia","SOV_A3":"TUN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Tunisia","ADM0_A3":"TUN","GEOU_DIF":0,"GEOUNIT":"Tunisia","GU_A3":"TUN","SU_DIF":0,"SUBUNIT":"Tunisia","SU_A3":"TUN","BRK_DIFF":0,"NAME":"Tunisia","NAME_LONG":"Tunisia","BRK_A3":"TUN","BRK_NAME":"Tunisia","BRK_GROUP":null,"ABBREV":"Tun.","POSTAL":"TN","FORMAL_EN":"Republic of Tunisia","FORMAL_FR":null,"NAME_CIAWF":"Tunisia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Tunisia","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":3,"MAPCOLOR9":3,"MAPCOLOR13":2,"POP_EST":11694719,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":38796,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"TS","ISO_A2":"TN","ISO_A2_EH":"TN","ISO_A3":"TUN","ISO_A3_EH":"TUN","ISO_N3":"788","ISO_N3_EH":"788","UN_A3":"788","WB_A2":"TN","WB_A3":"TUN","WOE_ID":23424967,"WOE_ID_EH":23424967,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TUN","ADM0_DIFF":null,"ADM0_TLC":"TUN","ADM0_A3_US":"TUN","ADM0_A3_FR":"TUN","ADM0_A3_RU":"TUN","ADM0_A3_ES":"TUN","ADM0_A3_CN":"TUN","ADM0_A3_TW":"TUN","ADM0_A3_IN":"TUN","ADM0_A3_NP":"TUN","ADM0_A3_PK":"TUN","ADM0_A3_DE":"TUN","ADM0_A3_GB":"TUN","ADM0_A3_BR":"TUN","ADM0_A3_IL":"TUN","ADM0_A3_PS":"TUN","ADM0_A3_SA":"TUN","ADM0_A3_EG":"TUN","ADM0_A3_MA":"TUN","ADM0_A3_PT":"TUN","ADM0_A3_AR":"TUN","ADM0_A3_JP":"TUN","ADM0_A3_KO":"TUN","ADM0_A3_VN":"TUN","ADM0_A3_TR":"TUN","ADM0_A3_ID":"TUN","ADM0_A3_PL":"TUN","ADM0_A3_GR":"TUN","ADM0_A3_IT":"TUN","ADM0_A3_NL":"TUN","ADM0_A3_SE":"TUN","ADM0_A3_BD":"TUN","ADM0_A3_UA":"TUN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Northern Africa","REGION_WB":"Middle East & North Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":9.007881,"LABEL_Y":33.687263,"NE_ID":1159321327,"WIKIDATAID":"Q948","NAME_AR":"تونس","NAME_BN":"তিউনিসিয়া","NAME_DE":"Tunesien","NAME_EN":"Tunisia","NAME_ES":"Túnez","NAME_FA":"تونس","NAME_FR":"Tunisie","NAME_EL":"Τυνησία","NAME_HE":"תוניסיה","NAME_HI":"ट्यूनिशिया","NAME_HU":"Tunézia","NAME_ID":"Tunisia","NAME_IT":"Tunisia","NAME_JA":"チュニジア","NAME_KO":"튀니지","NAME_NL":"Tunesië","NAME_PL":"Tunezja","NAME_PT":"Tunísia","NAME_RU":"Тунис","NAME_SV":"Tunisien","NAME_TR":"Tunus","NAME_UK":"Туніс","NAME_UR":"تونس","NAME_VI":"Tuy-ni-di","NAME_ZH":"突尼斯","NAME_ZHT":"突尼西亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[7.495605,30.229395,11.535938,37.340381],"geometry":{"type":"MultiPolygon","coordinates":[[[[11.50459,33.181934],[11.502441,33.155566],[11.467188,32.965723],[11.45918,32.897363],[11.453906,32.781689],[11.453906,32.642578],[11.533789,32.524951],[11.535938,32.47334],[11.50498,32.413672],[11.358008,32.345215],[11.168262,32.256738],[11.005176,32.172705],[10.826367,32.080664],[10.771582,32.021191],[10.683008,31.975391],[10.608887,31.929541],[10.595508,31.885742],[10.543652,31.802539],[10.475781,31.736035],[10.306055,31.704834],[10.274609,31.684961],[10.195996,31.585107],[10.159863,31.545801],[10.114941,31.46377],[10.172656,31.250977],[10.243359,31.032129],[10.257031,30.94082],[10.256055,30.864941],[10.216406,30.783203],[10.125977,30.665967],[10.059766,30.580078],[9.93252,30.425342],[9.89502,30.387305],[9.807422,30.342236],[9.637988,30.282324],[9.51875,30.229395],[9.458008,30.465381],[9.406055,30.666797],[9.363281,30.83291],[9.287891,31.125342],[9.224023,31.373682],[9.160254,31.621338],[9.102344,31.846143],[9.044043,32.072363],[9.018945,32.105371],[8.844043,32.212109],[8.68291,32.310449],[8.515137,32.422314],[8.333398,32.543604],[8.304199,32.696289],[8.210938,32.926709],[8.1125,33.055322],[8.075586,33.089062],[7.877246,33.172119],[7.762695,33.233105],[7.731348,33.268506],[7.70918,33.362305],[7.627539,33.548633],[7.534375,33.71792],[7.500195,33.832471],[7.495605,33.976514],[7.513867,34.080518],[7.554492,34.125],[7.748535,34.254492],[7.838281,34.410303],[7.949414,34.468701],[8.045605,34.512695],[8.123438,34.563916],[8.192773,34.646289],[8.245605,34.734082],[8.254688,34.828955],[8.276855,34.979492],[8.312109,35.084619],[8.394238,35.203857],[8.359863,35.299609],[8.316406,35.403125],[8.329004,35.582227],[8.318066,35.654932],[8.28291,35.719287],[8.24707,35.801807],[8.245703,35.870557],[8.280273,36.050977],[8.306738,36.18877],[8.34873,36.367969],[8.333984,36.418164],[8.302734,36.455615],[8.208789,36.495117],[8.207617,36.518945],[8.230762,36.545264],[8.369629,36.63252],[8.444238,36.760742],[8.506738,36.7875],[8.60127,36.833936],[8.597656,36.883887],[8.576563,36.937207],[8.823535,36.997607],[9.058887,37.155859],[9.141992,37.194629],[9.687988,37.340381],[9.758887,37.330273],[9.838477,37.308984],[9.815527,37.254639],[9.783984,37.211426],[9.830273,37.135352],[9.896387,37.181641],[9.879395,37.212842],[9.875586,37.25415],[9.988086,37.257764],[10.087402,37.25127],[10.196387,37.205859],[10.18877,37.033887],[10.334082,36.865381],[10.293262,36.781494],[10.412305,36.731836],[10.518164,36.791357],[10.571289,36.879443],[10.766211,36.930273],[10.951367,37.059277],[11.053906,37.07251],[11.077051,36.966699],[11.12666,36.874072],[11.056543,36.841455],[10.967188,36.743018],[10.798145,36.493115],[10.642383,36.419629],[10.525684,36.32334],[10.487988,36.254883],[10.476562,36.175146],[10.505762,36.032422],[10.59082,35.887256],[10.688965,35.799512],[10.783691,35.77207],[11.004297,35.633838],[11.000684,35.551611],[11.031543,35.453857],[11.043262,35.335107],[11.120117,35.240283],[10.955859,35.033643],[10.866211,34.884326],[10.690918,34.678467],[10.534863,34.544727],[10.200391,34.346045],[10.118359,34.280078],[10.064844,34.211621],[10.040039,34.140332],[10.049023,34.056299],[10.158984,33.850049],[10.305273,33.728271],[10.454297,33.6625],[10.713184,33.689014],[10.704297,33.609668],[10.722754,33.514404],[10.828125,33.518896],[10.898438,33.533691],[10.958008,33.626318],[11.08457,33.562891],[11.150293,33.369238],[11.257422,33.308838],[11.269922,33.286328],[11.232129,33.271582],[11.202637,33.249219],[11.234277,33.233594],[11.338086,33.209473],[11.400586,33.224902],[11.50459,33.181934]]],[[[11.278027,34.753809],[11.123633,34.681689],[11.153027,34.74458],[11.254883,34.820312],[11.281055,34.802197],[11.278027,34.753809]]],[[[10.957617,33.72207],[10.931348,33.717432],[10.883008,33.690186],[10.857422,33.687158],[10.784766,33.717676],[10.757031,33.71748],[10.72207,33.738916],[10.733887,33.855615],[10.745215,33.888672],[10.921973,33.893115],[11.017871,33.82334],[11.033594,33.805029],[11.037598,33.785059],[10.993066,33.745947],[10.957617,33.72207]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":5,"SOVEREIGNT":"Trinidad and Tobago","SOV_A3":"TTO","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Trinidad and Tobago","ADM0_A3":"TTO","GEOU_DIF":0,"GEOUNIT":"Trinidad and Tobago","GU_A3":"TTO","SU_DIF":0,"SUBUNIT":"Trinidad and Tobago","SU_A3":"TTO","BRK_DIFF":0,"NAME":"Trinidad and Tobago","NAME_LONG":"Trinidad and Tobago","BRK_A3":"TTO","BRK_NAME":"Trinidad and Tobago","BRK_GROUP":null,"ABBREV":"Tr.T.","POSTAL":"TT","FORMAL_EN":"Republic of Trinidad and Tobago","FORMAL_FR":null,"NAME_CIAWF":"Trinidad and Tobago","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Trinidad and Tobago","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":6,"MAPCOLOR9":2,"MAPCOLOR13":5,"POP_EST":1394973,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":24269,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"TD","ISO_A2":"TT","ISO_A2_EH":"TT","ISO_A3":"TTO","ISO_A3_EH":"TTO","ISO_N3":"780","ISO_N3_EH":"780","UN_A3":"780","WB_A2":"TT","WB_A3":"TTO","WOE_ID":23424958,"WOE_ID_EH":23424958,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TTO","ADM0_DIFF":null,"ADM0_TLC":"TTO","ADM0_A3_US":"TTO","ADM0_A3_FR":"TTO","ADM0_A3_RU":"TTO","ADM0_A3_ES":"TTO","ADM0_A3_CN":"TTO","ADM0_A3_TW":"TTO","ADM0_A3_IN":"TTO","ADM0_A3_NP":"TTO","ADM0_A3_PK":"TTO","ADM0_A3_DE":"TTO","ADM0_A3_GB":"TTO","ADM0_A3_BR":"TTO","ADM0_A3_IL":"TTO","ADM0_A3_PS":"TTO","ADM0_A3_SA":"TTO","ADM0_A3_EG":"TTO","ADM0_A3_MA":"TTO","ADM0_A3_PT":"TTO","ADM0_A3_AR":"TTO","ADM0_A3_JP":"TTO","ADM0_A3_KO":"TTO","ADM0_A3_VN":"TTO","ADM0_A3_TR":"TTO","ADM0_A3_ID":"TTO","ADM0_A3_PL":"TTO","ADM0_A3_GR":"TTO","ADM0_A3_IT":"TTO","ADM0_A3_NL":"TTO","ADM0_A3_SE":"TTO","ADM0_A3_BD":"TTO","ADM0_A3_UA":"TTO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":19,"LONG_LEN":19,"ABBREV_LEN":5,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":-60.9184,"LABEL_Y":10.9989,"NE_ID":1159321321,"WIKIDATAID":"Q754","NAME_AR":"ترينيداد وتوباغو","NAME_BN":"ত্রিনিদাদ ও টোবাগো","NAME_DE":"Trinidad und Tobago","NAME_EN":"Trinidad and Tobago","NAME_ES":"Trinidad y Tobago","NAME_FA":"ترینیداد و توباگو","NAME_FR":"Trinité-et-Tobago","NAME_EL":"Τρινιντάντ και Τομπάγκο","NAME_HE":"טרינידד וטובגו","NAME_HI":"त्रिनिदाद और टोबैगो","NAME_HU":"Trinidad és Tobago","NAME_ID":"Trinidad dan Tobago","NAME_IT":"Trinidad e Tobago","NAME_JA":"トリニダード・トバゴ","NAME_KO":"트리니다드 토바고","NAME_NL":"Trinidad en Tobago","NAME_PL":"Trynidad i Tobago","NAME_PT":"Trinidad e Tobago","NAME_RU":"Тринидад и Тобаго","NAME_SV":"Trinidad och Tobago","NAME_TR":"Trinidad ve Tobago","NAME_UK":"Тринідад і Тобаго","NAME_UR":"ٹرینیڈاڈ و ٹوباگو","NAME_VI":"Trinidad và Tobago","NAME_ZH":"特立尼达和多巴哥","NAME_ZHT":"千里達及托巴哥","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.906104,10.064648,-60.525488,11.325391],"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.756299,11.178516],[-60.810645,11.168604],[-60.804297,11.208398],[-60.708936,11.277246],[-60.562793,11.323535],[-60.525488,11.325391],[-60.546484,11.263721],[-60.756299,11.178516]]],[[[-61.012109,10.134326],[-61.174268,10.078027],[-61.59668,10.064648],[-61.77168,10.085059],[-61.906104,10.069141],[-61.661475,10.191699],[-61.632715,10.243408],[-61.528857,10.253125],[-61.499316,10.268555],[-61.464746,10.538965],[-61.478271,10.603369],[-61.498828,10.638867],[-61.540918,10.664453],[-61.635303,10.699365],[-61.651172,10.718066],[-61.591846,10.747949],[-61.464844,10.764453],[-61.37002,10.796826],[-61.17373,10.80332],[-61.078516,10.831934],[-60.917627,10.840234],[-60.996729,10.716162],[-61.03374,10.669873],[-61.019336,10.558105],[-61.0375,10.482275],[-61.016406,10.386377],[-60.968457,10.323389],[-60.999609,10.261475],[-61.004102,10.167822],[-61.012109,10.134326]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"Tonga","SOV_A3":"TON","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Tonga","ADM0_A3":"TON","GEOU_DIF":0,"GEOUNIT":"Tonga","GU_A3":"TON","SU_DIF":0,"SUBUNIT":"Tonga","SU_A3":"TON","BRK_DIFF":0,"NAME":"Tonga","NAME_LONG":"Tonga","BRK_A3":"TON","BRK_NAME":"Tonga","BRK_GROUP":null,"ABBREV":"Tongo","POSTAL":"TO","FORMAL_EN":"Kingdom of Tonga","FORMAL_FR":null,"NAME_CIAWF":"Tonga","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Tonga","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":1,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":104494,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":512,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"TN","ISO_A2":"TO","ISO_A2_EH":"TO","ISO_A3":"TON","ISO_A3_EH":"TON","ISO_N3":"776","ISO_N3_EH":"776","UN_A3":"776","WB_A2":"TO","WB_A3":"TON","WOE_ID":23424964,"WOE_ID_EH":23424964,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TON","ADM0_DIFF":null,"ADM0_TLC":"TON","ADM0_A3_US":"TON","ADM0_A3_FR":"TON","ADM0_A3_RU":"TON","ADM0_A3_ES":"TON","ADM0_A3_CN":"TON","ADM0_A3_TW":"TON","ADM0_A3_IN":"TON","ADM0_A3_NP":"TON","ADM0_A3_PK":"TON","ADM0_A3_DE":"TON","ADM0_A3_GB":"TON","ADM0_A3_BR":"TON","ADM0_A3_IL":"TON","ADM0_A3_PS":"TON","ADM0_A3_SA":"TON","ADM0_A3_EG":"TON","ADM0_A3_MA":"TON","ADM0_A3_PT":"TON","ADM0_A3_AR":"TON","ADM0_A3_JP":"TON","ADM0_A3_KO":"TON","ADM0_A3_VN":"TON","ADM0_A3_TR":"TON","ADM0_A3_ID":"TON","ADM0_A3_PL":"TON","ADM0_A3_GR":"TON","ADM0_A3_IT":"TON","ADM0_A3_NL":"TON","ADM0_A3_SE":"TON","ADM0_A3_BD":"TON","ADM0_A3_UA":"TON","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":3,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-175.163014,"LABEL_Y":-21.210026,"NE_ID":1159321319,"WIKIDATAID":"Q678","NAME_AR":"تونغا","NAME_BN":"টোঙ্গা","NAME_DE":"Tonga","NAME_EN":"Tonga","NAME_ES":"Tonga","NAME_FA":"تونگا","NAME_FR":"Tonga","NAME_EL":"Τόνγκα","NAME_HE":"טונגה","NAME_HI":"टोंगा","NAME_HU":"Tonga","NAME_ID":"Tonga","NAME_IT":"Tonga","NAME_JA":"トンガ","NAME_KO":"통가","NAME_NL":"Tonga","NAME_PL":"Tonga","NAME_PT":"Tonga","NAME_RU":"Тонга","NAME_SV":"Tonga","NAME_TR":"Tonga","NAME_UK":"Тонга","NAME_UR":"ٹونگا","NAME_VI":"Tonga","NAME_ZH":"汤加","NAME_ZHT":"東加","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-175.362354,-21.450586,-173.921875,-18.565332],"geometry":{"type":"MultiPolygon","coordinates":[[[[-175.161914,-21.169336],[-175.147656,-21.169434],[-175.131934,-21.139746],[-175.078174,-21.129004],[-175.084082,-21.160742],[-175.156592,-21.263672],[-175.202344,-21.223438],[-175.335449,-21.157715],[-175.362354,-21.106836],[-175.318066,-21.068262],[-175.322607,-21.099316],[-175.300439,-21.113379],[-175.225391,-21.11875],[-175.158008,-21.146484],[-175.199756,-21.155664],[-175.161914,-21.169336]]],[[[-173.953516,-18.639355],[-173.991309,-18.698633],[-174.009326,-18.697754],[-174.053125,-18.663379],[-174.069141,-18.640234],[-174.002441,-18.570703],[-173.968066,-18.565332],[-173.921875,-18.588574],[-173.923975,-18.608496],[-173.953516,-18.639355]]],[[[-174.913135,-21.300488],[-174.918652,-21.450586],[-174.967529,-21.381738],[-174.972949,-21.349805],[-174.923486,-21.303418],[-174.913135,-21.300488]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Togo","SOV_A3":"TGO","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Togo","ADM0_A3":"TGO","GEOU_DIF":0,"GEOUNIT":"Togo","GU_A3":"TGO","SU_DIF":0,"SUBUNIT":"Togo","SU_A3":"TGO","BRK_DIFF":0,"NAME":"Togo","NAME_LONG":"Togo","BRK_A3":"TGO","BRK_NAME":"Togo","BRK_GROUP":null,"ABBREV":"Togo","POSTAL":"TG","FORMAL_EN":"Togolese Republic","FORMAL_FR":"République Togolaise","NAME_CIAWF":"Togo","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Togo","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":5,"POP_EST":8082366,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":5490,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"TO","ISO_A2":"TG","ISO_A2_EH":"TG","ISO_A3":"TGO","ISO_A3_EH":"TGO","ISO_N3":"768","ISO_N3_EH":"768","UN_A3":"768","WB_A2":"TG","WB_A3":"TGO","WOE_ID":23424965,"WOE_ID_EH":23424965,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TGO","ADM0_DIFF":null,"ADM0_TLC":"TGO","ADM0_A3_US":"TGO","ADM0_A3_FR":"TGO","ADM0_A3_RU":"TGO","ADM0_A3_ES":"TGO","ADM0_A3_CN":"TGO","ADM0_A3_TW":"TGO","ADM0_A3_IN":"TGO","ADM0_A3_NP":"TGO","ADM0_A3_PK":"TGO","ADM0_A3_DE":"TGO","ADM0_A3_GB":"TGO","ADM0_A3_BR":"TGO","ADM0_A3_IL":"TGO","ADM0_A3_PS":"TGO","ADM0_A3_SA":"TGO","ADM0_A3_EG":"TGO","ADM0_A3_MA":"TGO","ADM0_A3_PT":"TGO","ADM0_A3_AR":"TGO","ADM0_A3_JP":"TGO","ADM0_A3_KO":"TGO","ADM0_A3_VN":"TGO","ADM0_A3_TR":"TGO","ADM0_A3_ID":"TGO","ADM0_A3_PL":"TGO","ADM0_A3_GR":"TGO","ADM0_A3_IT":"TGO","ADM0_A3_NL":"TGO","ADM0_A3_SE":"TGO","ADM0_A3_BD":"TGO","ADM0_A3_UA":"TGO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":1.058113,"LABEL_Y":8.80722,"NE_ID":1159321303,"WIKIDATAID":"Q945","NAME_AR":"توغو","NAME_BN":"টোগো","NAME_DE":"Togo","NAME_EN":"Togo","NAME_ES":"Togo","NAME_FA":"توگو","NAME_FR":"Togo","NAME_EL":"Τόγκο","NAME_HE":"טוגו","NAME_HI":"टोगो","NAME_HU":"Togo","NAME_ID":"Togo","NAME_IT":"Togo","NAME_JA":"トーゴ","NAME_KO":"토고","NAME_NL":"Togo","NAME_PL":"Togo","NAME_PT":"Togo","NAME_RU":"Того","NAME_SV":"Togo","NAME_TR":"Togo","NAME_UK":"Того","NAME_UR":"ٹوگو","NAME_VI":"Togo","NAME_ZH":"多哥","NAME_ZHT":"多哥","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-0.090186,6.089404,1.77793,11.115625],"geometry":{"type":"Polygon","coordinates":[[[0.900488,10.993262],[0.874805,10.885742],[0.821875,10.752588],[0.7875,10.710254],[0.763379,10.38667],[0.77998,10.35957],[0.792188,10.351562],[0.958301,10.242041],[1.176172,10.098389],[1.330078,9.996973],[1.342871,9.962939],[1.345117,9.750195],[1.34707,9.567529],[1.378906,9.462988],[1.385742,9.36167],[1.424316,9.28501],[1.566309,9.137256],[1.600195,9.050049],[1.603809,8.770996],[1.606641,8.559277],[1.624609,8.270996],[1.624609,8.030225],[1.624609,7.725879],[1.624707,7.369189],[1.624707,6.997314],[1.530957,6.992432],[1.582031,6.877002],[1.59082,6.772266],[1.60293,6.738086],[1.577539,6.687402],[1.598535,6.610205],[1.639258,6.581543],[1.743164,6.42627],[1.77793,6.294629],[1.610938,6.25083],[1.622656,6.216797],[1.310645,6.146875],[1.187207,6.089404],[1.185059,6.14502],[1.139648,6.155029],[1.084473,6.173779],[1.049902,6.202637],[1.002148,6.268555],[0.984961,6.320312],[0.912207,6.328564],[0.822461,6.386377],[0.736914,6.452588],[0.707227,6.51875],[0.71543,6.549316],[0.702246,6.580762],[0.672754,6.592529],[0.595703,6.742188],[0.548047,6.80249],[0.525586,6.850928],[0.533398,6.88833],[0.523047,6.938867],[0.538086,6.979687],[0.579492,7.004102],[0.59248,7.033984],[0.596191,7.096631],[0.619531,7.226562],[0.634766,7.353662],[0.591016,7.388818],[0.537305,7.39873],[0.50957,7.435107],[0.498926,7.495117],[0.5,7.546875],[0.605176,7.728223],[0.583594,8.145801],[0.599219,8.20957],[0.64707,8.253467],[0.688086,8.304248],[0.686328,8.354883],[0.616211,8.479639],[0.483301,8.575293],[0.415332,8.652734],[0.378613,8.722021],[0.372559,8.759277],[0.453125,8.81377],[0.48877,8.851465],[0.493262,8.894922],[0.460352,8.974219],[0.466113,9.115332],[0.497168,9.22124],[0.529004,9.358301],[0.525684,9.398486],[0.447559,9.480273],[0.405273,9.491455],[0.370996,9.485547],[0.289355,9.431836],[0.259961,9.426025],[0.241504,9.441895],[0.233398,9.463525],[0.261914,9.495605],[0.251563,9.535645],[0.275488,9.570605],[0.327344,9.586572],[0.342578,9.60415],[0.272754,9.620947],[0.264551,9.644727],[0.269531,9.66792],[0.289648,9.672314],[0.311719,9.670996],[0.323926,9.687598],[0.33457,9.803955],[0.343066,9.84458],[0.351855,9.924902],[0.362695,10.236475],[0.378613,10.268555],[0.380859,10.291846],[0.331836,10.306934],[0.216016,10.390527],[0.148242,10.454785],[0.089258,10.520605],[0.039453,10.563867],[-0.057715,10.630615],[-0.086328,10.673047],[-0.090186,10.715527],[-0.060596,10.800586],[-0.013867,10.891357],[0.009424,11.020996],[-0.004736,11.055566],[-0.068604,11.115625],[0.159277,11.069629],[0.48418,10.991992],[0.490723,10.978174],[0.492676,10.95498],[0.549121,10.95542],[0.642969,10.983057],[0.900488,10.993262]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":5,"SOVEREIGNT":"East Timor","SOV_A3":"TLS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"East Timor","ADM0_A3":"TLS","GEOU_DIF":0,"GEOUNIT":"East Timor","GU_A3":"TLS","SU_DIF":0,"SUBUNIT":"East Timor","SU_A3":"TLS","BRK_DIFF":0,"NAME":"Timor-Leste","NAME_LONG":"Timor-Leste","BRK_A3":"TLS","BRK_NAME":"Timor-Leste","BRK_GROUP":null,"ABBREV":"T.L.","POSTAL":"TL","FORMAL_EN":"Democratic Republic of Timor-Leste","FORMAL_FR":null,"NAME_CIAWF":"Timor-Leste","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Timor-Leste","NAME_ALT":"East Timor","MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":4,"MAPCOLOR13":3,"POP_EST":1293119,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":2017,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"TT","ISO_A2":"TL","ISO_A2_EH":"TL","ISO_A3":"TLS","ISO_A3_EH":"TLS","ISO_N3":"626","ISO_N3_EH":"626","UN_A3":"626","WB_A2":"TP","WB_A3":"TMP","WOE_ID":23424968,"WOE_ID_EH":23424968,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TLS","ADM0_DIFF":null,"ADM0_TLC":"TLS","ADM0_A3_US":"TLS","ADM0_A3_FR":"TLS","ADM0_A3_RU":"TLS","ADM0_A3_ES":"TLS","ADM0_A3_CN":"TLS","ADM0_A3_TW":"TLS","ADM0_A3_IN":"TLS","ADM0_A3_NP":"TLS","ADM0_A3_PK":"TLS","ADM0_A3_DE":"TLS","ADM0_A3_GB":"TLS","ADM0_A3_BR":"TLS","ADM0_A3_IL":"TLS","ADM0_A3_PS":"TLS","ADM0_A3_SA":"TLS","ADM0_A3_EG":"TLS","ADM0_A3_MA":"TLS","ADM0_A3_PT":"TLS","ADM0_A3_AR":"TLS","ADM0_A3_JP":"TLS","ADM0_A3_KO":"TLS","ADM0_A3_VN":"TLS","ADM0_A3_TR":"TLS","ADM0_A3_ID":"TLS","ADM0_A3_PL":"TLS","ADM0_A3_GR":"TLS","ADM0_A3_IT":"TLS","ADM0_A3_NL":"TLS","ADM0_A3_SE":"TLS","ADM0_A3_BD":"TLS","ADM0_A3_UA":"TLS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":125.854679,"LABEL_Y":-8.803705,"NE_ID":1159321313,"WIKIDATAID":"Q574","NAME_AR":"تيمور الشرقية","NAME_BN":"পূর্ব তিমুর","NAME_DE":"Osttimor","NAME_EN":"East Timor","NAME_ES":"Timor Oriental","NAME_FA":"تیمور شرقی","NAME_FR":"Timor oriental","NAME_EL":"Ανατολικό Τιμόρ","NAME_HE":"מזרח טימור","NAME_HI":"पूर्वी तिमोर","NAME_HU":"Kelet-Timor","NAME_ID":"Timor Leste","NAME_IT":"Timor Est","NAME_JA":"東ティモール","NAME_KO":"동티모르","NAME_NL":"Oost-Timor","NAME_PL":"Timor Wschodni","NAME_PT":"Timor-Leste","NAME_RU":"Восточный Тимор","NAME_SV":"Östtimor","NAME_TR":"Doğu Timor","NAME_UK":"Східний Тимор","NAME_UR":"مشرقی تیمور","NAME_VI":"Đông Timor","NAME_ZH":"东帝汶","NAME_ZHT":"東帝汶","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[124.036328,-9.511914,127.296094,-8.139941],"geometry":{"type":"MultiPolygon","coordinates":[[[[125.646094,-8.139941],[125.579492,-8.311816],[125.507129,-8.275098],[125.584082,-8.178613],[125.621094,-8.15],[125.646094,-8.139941]]],[[[125.068164,-9.511914],[125.033594,-9.381836],[124.996973,-9.325977],[124.968262,-9.294238],[124.958594,-9.254688],[124.960156,-9.21377],[124.977539,-9.194922],[125.100488,-9.189844],[125.149414,-9.122949],[125.149023,-9.042578],[125.124414,-9.01543],[125.100391,-9.004004],[124.973242,-9.064258],[124.936816,-9.053418],[124.915039,-9.031543],[124.922266,-8.94248],[125.026953,-8.859082],[125.115723,-8.708008],[125.178027,-8.647852],[125.323145,-8.591309],[125.381836,-8.575391],[125.804297,-8.492188],[125.905078,-8.486523],[126.172852,-8.488965],[126.531055,-8.470801],[126.619727,-8.459473],[126.73457,-8.422754],[126.845703,-8.377344],[126.904688,-8.341602],[126.966406,-8.315723],[127.058496,-8.348242],[127.214844,-8.372949],[127.257031,-8.394531],[127.296094,-8.424512],[127.114551,-8.583594],[126.915234,-8.715234],[126.79248,-8.755078],[126.66543,-8.782031],[126.568555,-8.83291],[126.486914,-8.912695],[126.38252,-8.957617],[126.264746,-8.972754],[126.164258,-8.99668],[126.073047,-9.043555],[125.946094,-9.123926],[125.894727,-9.132129],[125.840332,-9.130176],[125.735156,-9.160938],[125.408008,-9.275781],[125.210254,-9.403516],[125.068164,-9.511914]]],[[[124.036328,-9.341602],[124.198145,-9.256152],[124.444434,-9.190332],[124.438281,-9.238574],[124.412988,-9.314355],[124.375684,-9.349902],[124.319336,-9.41377],[124.282324,-9.42793],[124.13457,-9.413867],[124.115527,-9.423145],[124.090137,-9.416406],[124.052441,-9.375391],[124.036328,-9.341602]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":3,"SOVEREIGNT":"Thailand","SOV_A3":"THA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Thailand","ADM0_A3":"THA","GEOU_DIF":0,"GEOUNIT":"Thailand","GU_A3":"THA","SU_DIF":0,"SUBUNIT":"Thailand","SU_A3":"THA","BRK_DIFF":0,"NAME":"Thailand","NAME_LONG":"Thailand","BRK_A3":"THA","BRK_NAME":"Thailand","BRK_GROUP":null,"ABBREV":"Thai.","POSTAL":"TH","FORMAL_EN":"Kingdom of Thailand","FORMAL_FR":null,"NAME_CIAWF":"Thailand","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Thailand","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":6,"MAPCOLOR9":8,"MAPCOLOR13":1,"POP_EST":69625582,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":543548,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"TH","ISO_A2":"TH","ISO_A2_EH":"TH","ISO_A3":"THA","ISO_A3_EH":"THA","ISO_N3":"764","ISO_N3_EH":"764","UN_A3":"764","WB_A2":"TH","WB_A3":"THA","WOE_ID":23424960,"WOE_ID_EH":23424960,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"THA","ADM0_DIFF":null,"ADM0_TLC":"THA","ADM0_A3_US":"THA","ADM0_A3_FR":"THA","ADM0_A3_RU":"THA","ADM0_A3_ES":"THA","ADM0_A3_CN":"THA","ADM0_A3_TW":"THA","ADM0_A3_IN":"THA","ADM0_A3_NP":"THA","ADM0_A3_PK":"THA","ADM0_A3_DE":"THA","ADM0_A3_GB":"THA","ADM0_A3_BR":"THA","ADM0_A3_IL":"THA","ADM0_A3_PS":"THA","ADM0_A3_SA":"THA","ADM0_A3_EG":"THA","ADM0_A3_MA":"THA","ADM0_A3_PT":"THA","ADM0_A3_AR":"THA","ADM0_A3_JP":"THA","ADM0_A3_KO":"THA","ADM0_A3_VN":"THA","ADM0_A3_TR":"THA","ADM0_A3_ID":"THA","ADM0_A3_PL":"THA","ADM0_A3_GR":"THA","ADM0_A3_IT":"THA","ADM0_A3_NL":"THA","ADM0_A3_SE":"THA","ADM0_A3_BD":"THA","ADM0_A3_UA":"THA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":8,"LABEL_X":101.073198,"LABEL_Y":15.45974,"NE_ID":1159321305,"WIKIDATAID":"Q869","NAME_AR":"تايلاند","NAME_BN":"থাইল্যান্ড","NAME_DE":"Thailand","NAME_EN":"Thailand","NAME_ES":"Tailandia","NAME_FA":"تایلند","NAME_FR":"Thaïlande","NAME_EL":"Ταϊλάνδη","NAME_HE":"תאילנד","NAME_HI":"थाईलैण्ड","NAME_HU":"Thaiföld","NAME_ID":"Thailand","NAME_IT":"Thailandia","NAME_JA":"タイ王国","NAME_KO":"태국","NAME_NL":"Thailand","NAME_PL":"Tajlandia","NAME_PT":"Tailândia","NAME_RU":"Таиланд","NAME_SV":"Thailand","NAME_TR":"Tayland","NAME_UK":"Таїланд","NAME_UR":"تھائی لینڈ","NAME_VI":"Thái Lan","NAME_ZH":"泰国","NAME_ZHT":"泰國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[97.373926,5.636768,105.641016,20.424414],"geometry":{"type":"MultiPolygon","coordinates":[[[[102.606445,11.676514],[102.589941,11.572168],[102.532813,11.614941],[102.546484,11.667773],[102.568945,11.691699],[102.606445,11.676514]]],[[[102.426758,11.988721],[102.42998,11.964746],[102.378125,11.982959],[102.359961,11.974414],[102.301953,11.980811],[102.27334,12.119336],[102.277441,12.151855],[102.318848,12.14165],[102.378125,12.072852],[102.408398,12.025098],[102.426758,11.988721]]],[[[98.409082,7.902051],[98.398438,7.828418],[98.357422,7.829443],[98.315625,7.782324],[98.296289,7.776074],[98.262305,7.926074],[98.301367,8.13623],[98.32207,8.166309],[98.350977,8.110645],[98.434961,8.085645],[98.398828,7.964551],[98.409082,7.902051]]],[[[100.122461,20.31665],[100.114941,20.257666],[100.139746,20.24541],[100.174121,20.272754],[100.218066,20.3396],[100.266016,20.377295],[100.317969,20.385889],[100.373145,20.340381],[100.431543,20.240723],[100.491602,20.184082],[100.519531,20.17793],[100.539941,20.132373],[100.543066,20.088672],[100.514551,19.996338],[100.466211,19.888916],[100.397656,19.756104],[100.420117,19.644482],[100.513574,19.553467],[100.625488,19.499854],[100.743945,19.514746],[100.806836,19.541943],[100.858203,19.585059],[100.906055,19.605371],[100.966504,19.610791],[101.154688,19.579199],[101.211914,19.54834],[101.220801,19.486621],[101.197559,19.32793],[101.226562,19.211523],[101.279883,19.088916],[101.286328,18.977148],[101.220508,18.792773],[101.165527,18.618311],[101.106348,18.533545],[101.060449,18.479004],[101.046973,18.441992],[101.050586,18.407031],[101.092773,18.354541],[101.1375,18.286865],[101.14873,18.222168],[101.143945,18.142627],[101.113281,18.033545],[100.999023,17.797168],[100.908496,17.583887],[100.955859,17.541113],[101.045703,17.509961],[101.105176,17.479541],[101.16748,17.499023],[101.299707,17.625],[101.413672,17.71875],[101.555078,17.812354],[101.563672,17.820508],[101.6875,17.889404],[101.744141,17.952686],[101.774805,18.033398],[101.818652,18.064648],[101.875488,18.046436],[101.947461,18.081494],[102.03457,18.169824],[102.101465,18.210645],[102.148242,18.203857],[102.231641,18.148975],[102.351855,18.045947],[102.458789,17.984619],[102.552539,17.965088],[102.598242,17.926758],[102.596094,17.869629],[102.616797,17.83335],[102.660645,17.817969],[102.680078,17.824121],[102.675195,17.851758],[102.717578,17.892236],[102.807422,17.945557],[102.898633,17.976904],[102.991406,17.98623],[103.051367,18.028516],[103.091211,18.138232],[103.148535,18.221729],[103.199707,18.259473],[103.263184,18.278467],[103.27959,18.30498],[103.248926,18.338965],[103.251758,18.373486],[103.288281,18.408398],[103.366992,18.42334],[103.487988,18.418164],[103.629687,18.382568],[103.792285,18.316504],[103.898828,18.295313],[103.949609,18.318994],[104.04873,18.216699],[104.196191,17.988379],[104.322656,17.81582],[104.428125,17.698975],[104.539258,17.609277],[104.655859,17.546729],[104.739648,17.46167],[104.816016,17.300293],[104.758984,17.077148],[104.743555,16.884375],[104.750586,16.647559],[104.819336,16.466064],[104.949902,16.339941],[105.025781,16.237988],[105.047168,16.160254],[105.14873,16.093555],[105.330664,16.037891],[105.40625,15.987451],[105.375586,15.942188],[105.373242,15.889697],[105.398926,15.829883],[105.462012,15.78042],[105.562402,15.74126],[105.62207,15.699951],[105.641016,15.656543],[105.638867,15.585938],[105.615625,15.488281],[105.57373,15.413232],[105.513184,15.360889],[105.505859,15.319629],[105.49043,15.256592],[105.49043,15.127588],[105.533398,15.041602],[105.54668,14.932471],[105.523047,14.843311],[105.500195,14.66123],[105.497363,14.590674],[105.475586,14.530127],[105.422656,14.471631],[105.342188,14.416699],[105.243652,14.367871],[105.183301,14.34624],[105.169141,14.336084],[105.125977,14.280957],[105.074121,14.227441],[105.033691,14.227393],[105.003418,14.254443],[104.982422,14.289453],[104.969727,14.366113],[104.878809,14.404004],[104.779004,14.427832],[104.575781,14.390039],[104.411621,14.36958],[104.227734,14.395508],[104.054297,14.362744],[103.981836,14.35791],[103.898633,14.362793],[103.818359,14.362158],[103.741895,14.37417],[103.600391,14.421094],[103.546387,14.417432],[103.432422,14.378613],[103.313477,14.351318],[103.199414,14.332617],[103.031055,14.252539],[102.909277,14.136719],[102.873242,14.054883],[102.812793,13.972461],[102.728906,13.841895],[102.62041,13.716943],[102.544727,13.659961],[102.565527,13.626367],[102.546875,13.585693],[102.428516,13.567578],[102.336328,13.560303],[102.319727,13.53999],[102.330762,13.288232],[102.362988,13.192969],[102.422656,13.077979],[102.461719,13.015039],[102.490723,12.82832],[102.499609,12.669971],[102.629687,12.569922],[102.70332,12.493506],[102.755664,12.42627],[102.737402,12.383398],[102.70625,12.255664],[102.736621,12.089795],[102.918066,11.73208],[102.933887,11.706689],[102.912305,11.703857],[102.883691,11.772754],[102.791602,11.888623],[102.762988,12.012451],[102.654883,12.148828],[102.594141,12.203027],[102.574805,12.157812],[102.540234,12.109229],[102.434082,12.179248],[102.343164,12.252588],[102.259082,12.394336],[102.248438,12.361426],[102.22959,12.331641],[102.13418,12.443018],[102.034375,12.531885],[101.944531,12.563672],[101.889063,12.593262],[101.835742,12.640381],[101.723633,12.689355],[101.444922,12.618945],[101.090234,12.673633],[100.953711,12.62124],[100.897754,12.653809],[100.863281,12.714502],[100.896387,12.818164],[100.903906,13.034912],[100.946094,13.187256],[100.92627,13.303027],[100.946973,13.357568],[100.962695,13.431982],[100.906543,13.462402],[100.656055,13.521289],[100.60293,13.568164],[100.536426,13.514453],[100.235645,13.484473],[100.122363,13.439551],[100.01748,13.353174],[99.990527,13.243457],[100.051074,13.17124],[100.089941,13.045654],[99.982031,12.771484],[99.963965,12.690039],[100.005664,12.354736],[99.989062,12.170801],[99.930273,12.047461],[99.837109,11.936621],[99.79873,11.748779],[99.725488,11.661768],[99.627344,11.462891],[99.561328,11.215186],[99.514355,11.100586],[99.486914,10.889551],[99.284766,10.569141],[99.237305,10.388135],[99.165039,10.319824],[99.190332,10.265869],[99.194629,10.175439],[99.169336,9.93418],[99.160742,9.734033],[99.191309,9.627148],[99.288281,9.4146],[99.265039,9.352979],[99.253906,9.265234],[99.335449,9.225439],[99.393848,9.213721],[99.723828,9.314209],[99.835547,9.288379],[99.877539,9.194629],[99.904688,9.112891],[99.960645,8.67124],[99.989551,8.589209],[100.05625,8.511133],[100.129297,8.428076],[100.154102,8.442969],[100.158887,8.473779],[100.163477,8.508398],[100.228711,8.424707],[100.279395,8.268506],[100.453516,7.442285],[100.503711,7.337305],[100.545215,7.226904],[100.439355,7.280762],[100.410742,7.464307],[100.380371,7.541504],[100.342969,7.552881],[100.283789,7.551514],[100.27998,7.584326],[100.324316,7.644189],[100.317383,7.715967],[100.256641,7.774902],[100.158203,7.728125],[100.160742,7.599268],[100.204883,7.500537],[100.371387,7.280127],[100.423535,7.187842],[100.489746,7.161377],[100.58623,7.175977],[100.70166,7.081982],[100.792578,6.994678],[101.017871,6.860937],[101.154395,6.875146],[101.301953,6.908301],[101.400879,6.899561],[101.497949,6.865283],[101.614258,6.753955],[101.799219,6.474609],[102.101074,6.242236],[102.068359,6.184668],[102.055176,6.09668],[101.936133,5.979346],[101.917188,5.911377],[101.873633,5.825293],[101.790723,5.779346],[101.719531,5.770605],[101.678418,5.778809],[101.65,5.795996],[101.601367,5.877148],[101.576758,5.902002],[101.556055,5.907764],[101.404199,5.85166],[101.257031,5.789355],[101.229785,5.733691],[101.190625,5.66875],[101.147656,5.643066],[101.113965,5.636768],[101.081738,5.674902],[101.025195,5.724512],[100.981641,5.771045],[100.992773,5.846191],[101.075586,5.956494],[101.086523,6.033691],[101.075977,6.166064],[101.053516,6.242578],[101.029395,6.245312],[100.98877,6.257666],[100.873926,6.24541],[100.816504,6.331641],[100.79375,6.426172],[100.754492,6.460059],[100.715625,6.480664],[100.629492,6.447998],[100.563867,6.467529],[100.34541,6.549902],[100.261426,6.682715],[100.216602,6.686621],[100.176758,6.671826],[100.16123,6.641602],[100.137988,6.488672],[100.119141,6.441992],[99.868652,6.749902],[99.695996,6.87666],[99.720313,7.106201],[99.667773,7.150879],[99.602441,7.155322],[99.553027,7.218799],[99.596973,7.355615],[99.529102,7.329492],[99.435156,7.334375],[99.358594,7.372217],[99.300391,7.561328],[99.263672,7.619043],[99.183398,7.718066],[99.077637,7.718066],[99.042676,7.765625],[99.051074,7.887842],[98.973926,7.962793],[98.872461,8.023926],[98.788672,8.059814],[98.703516,8.256738],[98.636328,8.305029],[98.579199,8.344287],[98.499805,8.317822],[98.474023,8.246924],[98.420996,8.178223],[98.360742,8.186963],[98.305469,8.226221],[98.238184,8.423096],[98.226953,8.543652],[98.241797,8.767871],[98.325977,8.968945],[98.371387,9.290527],[98.443164,9.492822],[98.492969,9.561426],[98.561914,9.8375],[98.702539,10.190381],[98.718457,10.266016],[98.746875,10.35083],[98.768359,10.430859],[98.775391,10.557031],[98.757227,10.623584],[98.757227,10.660937],[98.786914,10.708447],[98.887109,10.78833],[99.025391,10.919971],[99.190137,11.105273],[99.358789,11.389453],[99.442676,11.554395],[99.47793,11.6125],[99.515234,11.630664],[99.572852,11.687158],[99.6125,11.749658],[99.614746,11.781201],[99.522949,12.089648],[99.462891,12.190234],[99.432422,12.309033],[99.416309,12.394824],[99.394238,12.473633],[99.405078,12.5479],[99.371973,12.594238],[99.297363,12.652881],[99.219824,12.739746],[99.173535,12.881934],[99.173535,12.961328],[99.123926,13.030762],[99.107422,13.103516],[99.137109,13.172998],[99.176172,13.233057],[99.17168,13.496924],[99.156055,13.575781],[99.136816,13.716699],[99.08623,13.822754],[99.014648,13.947168],[98.933594,14.049854],[98.721191,14.235742],[98.57002,14.359912],[98.49502,14.4729],[98.400195,14.602979],[98.332129,14.696484],[98.245996,14.814746],[98.202148,14.975928],[98.17793,15.147412],[98.191016,15.204102],[98.232227,15.241357],[98.286133,15.271582],[98.329395,15.278564],[98.452148,15.357373],[98.537305,15.350684],[98.556934,15.367676],[98.565234,15.403564],[98.554492,15.559766],[98.558203,15.768604],[98.574023,15.938623],[98.592383,16.050684],[98.817969,16.180811],[98.865527,16.237061],[98.888477,16.298096],[98.888281,16.351904],[98.869336,16.394189],[98.835449,16.417578],[98.689258,16.30542],[98.660742,16.33042],[98.593652,16.514795],[98.564746,16.570947],[98.523145,16.638184],[98.478125,16.732227],[98.471191,16.89502],[98.438867,16.975684],[98.256543,17.147656],[98.174609,17.239893],[98.063086,17.373291],[97.929297,17.533301],[97.792969,17.68125],[97.729102,17.77583],[97.706445,17.797119],[97.698535,17.833545],[97.739941,17.935303],[97.719727,18.037402],[97.651563,18.17373],[97.622461,18.258008],[97.632227,18.290332],[97.599316,18.302979],[97.523828,18.295898],[97.450781,18.359668],[97.380664,18.494287],[97.373926,18.517969],[97.39707,18.517529],[97.484961,18.494238],[97.515137,18.497754],[97.577344,18.528711],[97.671582,18.56123],[97.727734,18.572021],[97.745898,18.588184],[97.754004,18.620801],[97.706055,18.931787],[97.71416,18.996484],[97.803906,19.130469],[97.793555,19.265869],[97.816797,19.459961],[97.916406,19.592871],[97.991211,19.653711],[98.015039,19.749512],[98.049023,19.769727],[98.111035,19.762158],[98.239062,19.690674],[98.293652,19.687256],[98.371289,19.68916],[98.45498,19.694434],[98.493848,19.701318],[98.760645,19.771094],[98.819531,19.778467],[98.875781,19.76958],[98.916699,19.7729],[98.958008,19.804932],[98.987402,19.861377],[99.020703,20.041797],[99.039746,20.073633],[99.074219,20.099365],[99.130762,20.116602],[99.196875,20.115137],[99.283691,20.08042],[99.337891,20.078906],[99.399219,20.093457],[99.451563,20.118311],[99.485938,20.149854],[99.50166,20.187744],[99.4875,20.260645],[99.447949,20.352051],[99.458887,20.363037],[99.531641,20.342822],[99.638672,20.320459],[99.720117,20.325439],[99.77334,20.341309],[99.825195,20.384473],[99.890332,20.424414],[99.954297,20.41543],[100.003613,20.37959],[100.122461,20.31665]]],[[[100.074121,9.69668],[100.064453,9.67998],[100.025684,9.711719],[99.998047,9.747607],[99.983398,9.793555],[100.043457,9.79165],[100.073047,9.749121],[100.074121,9.69668]]],[[[100.070703,9.586035],[100.075293,9.529443],[100.053711,9.461426],[99.962402,9.421631],[99.93125,9.476074],[99.939551,9.559961],[99.953613,9.581006],[100.042969,9.576855],[100.070703,9.586035]]],[[[99.663086,6.521924],[99.644043,6.516113],[99.606641,6.596826],[99.654004,6.714111],[99.701367,6.570557],[99.663086,6.521924]]],[[[98.591992,7.933936],[98.57998,7.917041],[98.529395,8.108545],[98.604297,8.057324],[98.591992,7.933936]]],[[[98.30752,9.051465],[98.250781,9.04082],[98.258398,9.09541],[98.273633,9.129883],[98.301172,9.139111],[98.3125,9.080371],[98.30752,9.051465]]],[[[99.078418,7.591846],[99.104395,7.471289],[99.067871,7.495898],[99.037695,7.548486],[99.038086,7.625732],[99.045117,7.636523],[99.078418,7.591846]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":3,"SOVEREIGNT":"United Republic of Tanzania","SOV_A3":"TZA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"United Republic of Tanzania","ADM0_A3":"TZA","GEOU_DIF":0,"GEOUNIT":"Tanzania","GU_A3":"TZA","SU_DIF":0,"SUBUNIT":"Tanzania","SU_A3":"TZA","BRK_DIFF":0,"NAME":"Tanzania","NAME_LONG":"Tanzania","BRK_A3":"TZA","BRK_NAME":"Tanzania","BRK_GROUP":null,"ABBREV":"Tanz.","POSTAL":"TZ","FORMAL_EN":"United Republic of Tanzania","FORMAL_FR":null,"NAME_CIAWF":"Tanzania","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Tanzania","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":6,"MAPCOLOR9":2,"MAPCOLOR13":2,"POP_EST":58005463,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":63177,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"TZ","ISO_A2":"TZ","ISO_A2_EH":"TZ","ISO_A3":"TZA","ISO_A3_EH":"TZA","ISO_N3":"834","ISO_N3_EH":"834","UN_A3":"834","WB_A2":"TZ","WB_A3":"TZA","WOE_ID":23424973,"WOE_ID_EH":23424973,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TZA","ADM0_DIFF":null,"ADM0_TLC":"TZA","ADM0_A3_US":"TZA","ADM0_A3_FR":"TZA","ADM0_A3_RU":"TZA","ADM0_A3_ES":"TZA","ADM0_A3_CN":"TZA","ADM0_A3_TW":"TZA","ADM0_A3_IN":"TZA","ADM0_A3_NP":"TZA","ADM0_A3_PK":"TZA","ADM0_A3_DE":"TZA","ADM0_A3_GB":"TZA","ADM0_A3_BR":"TZA","ADM0_A3_IL":"TZA","ADM0_A3_PS":"TZA","ADM0_A3_SA":"TZA","ADM0_A3_EG":"TZA","ADM0_A3_MA":"TZA","ADM0_A3_PT":"TZA","ADM0_A3_AR":"TZA","ADM0_A3_JP":"TZA","ADM0_A3_KO":"TZA","ADM0_A3_VN":"TZA","ADM0_A3_TR":"TZA","ADM0_A3_ID":"TZA","ADM0_A3_PL":"TZA","ADM0_A3_GR":"TZA","ADM0_A3_IT":"TZA","ADM0_A3_NL":"TZA","ADM0_A3_SE":"TZA","ADM0_A3_BD":"TZA","ADM0_A3_UA":"TZA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":34.959183,"LABEL_Y":-6.051866,"NE_ID":1159321337,"WIKIDATAID":"Q924","NAME_AR":"تنزانيا","NAME_BN":"তানজানিয়া","NAME_DE":"Tansania","NAME_EN":"Tanzania","NAME_ES":"Tanzania","NAME_FA":"تانزانیا","NAME_FR":"Tanzanie","NAME_EL":"Τανζανία","NAME_HE":"טנזניה","NAME_HI":"तंज़ानिया","NAME_HU":"Tanzánia","NAME_ID":"Tanzania","NAME_IT":"Tanzania","NAME_JA":"タンザニア","NAME_KO":"탄자니아","NAME_NL":"Tanzania","NAME_PL":"Tanzania","NAME_PT":"Tanzânia","NAME_RU":"Танзания","NAME_SV":"Tanzania","NAME_TR":"Tanzanya","NAME_UK":"Танзанія","NAME_UR":"تنزانیہ","NAME_VI":"Tanzania","NAME_ZH":"坦桑尼亚","NAME_ZHT":"坦尚尼亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[29.323438,-11.716211,40.463574,-0.994922],"geometry":{"type":"MultiPolygon","coordinates":[[[[39.496484,-6.174609],[39.573047,-6.387402],[39.563184,-6.427246],[39.50918,-6.45166],[39.480957,-6.453711],[39.447363,-6.419727],[39.423633,-6.347852],[39.382617,-6.364941],[39.312695,-6.279102],[39.243457,-6.275],[39.182324,-6.172559],[39.20625,-6.083203],[39.192383,-5.931055],[39.266992,-5.853125],[39.308984,-5.721973],[39.357227,-5.811523],[39.368262,-5.951172],[39.433301,-6.11543],[39.487891,-6.166211],[39.496484,-6.174609]]],[[[39.865039,-4.906152],[39.870996,-4.956543],[39.855664,-5.004004],[39.858984,-5.155176],[39.853027,-5.255469],[39.795898,-5.394434],[39.749316,-5.443848],[39.707617,-5.429492],[39.673438,-5.406641],[39.646777,-5.368555],[39.701074,-5.113672],[39.673438,-4.927051],[39.780762,-4.944922],[39.865039,-4.906152]]],[[[32.919922,-9.407422],[32.863281,-9.380859],[32.756641,-9.322266],[32.608398,-9.270508],[32.487109,-9.212695],[32.433203,-9.156348],[32.319336,-9.134863],[32.220898,-9.125586],[32.129785,-9.07334],[32.035352,-9.067383],[31.942578,-9.054004],[31.921875,-9.019434],[31.918652,-8.942188],[31.886133,-8.921973],[31.818066,-8.902246],[31.744727,-8.903223],[31.7,-8.914355],[31.673633,-8.908789],[31.612793,-8.863281],[31.55625,-8.805469],[31.534863,-8.713281],[31.449219,-8.653906],[31.350586,-8.607031],[31.076367,-8.611914],[31.033398,-8.597656],[30.968359,-8.550977],[30.891992,-8.47373],[30.830664,-8.385547],[30.776758,-8.26582],[30.751172,-8.193652],[30.720898,-8.104395],[30.653809,-7.970898],[30.558887,-7.781934],[30.485645,-7.627148],[30.406738,-7.460645],[30.374512,-7.338672],[30.313184,-7.203711],[30.212695,-7.037891],[30.161816,-6.973047],[30.10625,-6.915039],[29.961816,-6.803125],[29.798145,-6.691895],[29.709668,-6.616895],[29.590625,-6.394434],[29.54082,-6.313867],[29.50625,-6.17207],[29.480078,-6.025],[29.49082,-5.96543],[29.596387,-5.775977],[29.607031,-5.722656],[29.594141,-5.650781],[29.542383,-5.499805],[29.503711,-5.400977],[29.476465,-5.316602],[29.420117,-5.176172],[29.342773,-4.983105],[29.323438,-4.898828],[29.325684,-4.835645],[29.367578,-4.668848],[29.404199,-4.49668],[29.403223,-4.449316],[29.717773,-4.455859],[29.769531,-4.418066],[29.947266,-4.307324],[30.147168,-4.085352],[30.187109,-3.992871],[30.268555,-3.850488],[30.348438,-3.779785],[30.379102,-3.730762],[30.4,-3.653906],[30.425,-3.588867],[30.529883,-3.49248],[30.631934,-3.418652],[30.624609,-3.388672],[30.610938,-3.366406],[30.626074,-3.347363],[30.681836,-3.309375],[30.790234,-3.274609],[30.811426,-3.200586],[30.811133,-3.116406],[30.793555,-3.069336],[30.796875,-3.015137],[30.780273,-2.984863],[30.709473,-2.977246],[30.604297,-2.935254],[30.515039,-2.917578],[30.455566,-2.893164],[30.433496,-2.874512],[30.424023,-2.824023],[30.441309,-2.769043],[30.450488,-2.753223],[30.47334,-2.694336],[30.434375,-2.658887],[30.424219,-2.641602],[30.441992,-2.613477],[30.533691,-2.42627],[30.553613,-2.400098],[30.593359,-2.396777],[30.656641,-2.373828],[30.714844,-2.363477],[30.7625,-2.37168],[30.797656,-2.362695],[30.828711,-2.338477],[30.85498,-2.26543],[30.876563,-2.143359],[30.864648,-2.044043],[30.819141,-1.96748],[30.806738,-1.850684],[30.827539,-1.693652],[30.812598,-1.563086],[30.762207,-1.458691],[30.710742,-1.396777],[30.631934,-1.36748],[30.508105,-1.208203],[30.470215,-1.131152],[30.477051,-1.083008],[30.509961,-1.067285],[30.519922,-1.0625],[30.59873,-1.069727],[30.672754,-1.051367],[30.741992,-1.00752],[30.80918,-0.994922],[30.823633,-0.999023],[30.844727,-1.002051],[30.949707,-1.002051],[31.127539,-1.002051],[31.305273,-1.002051],[31.483105,-1.002051],[31.66084,-1.002051],[31.838574,-1.002051],[32.016406,-1.002051],[32.194141,-1.002051],[32.371875,-1.002051],[32.549707,-1.002051],[32.727441,-1.002051],[32.905176,-1.002051],[33.083008,-1.002051],[33.260742,-1.002051],[33.438477,-1.002051],[33.616309,-1.002051],[33.794043,-1.002051],[33.903223,-1.002051],[33.979395,-1.002051],[34.051563,-1.039844],[34.131641,-1.08457],[34.344727,-1.203613],[34.55791,-1.322559],[34.771094,-1.441602],[34.984277,-1.560547],[35.197461,-1.67959],[35.410547,-1.798633],[35.62373,-1.917578],[35.836914,-2.036621],[36.05,-2.155664],[36.263086,-2.274609],[36.476367,-2.393555],[36.689453,-2.512598],[36.902637,-2.631641],[37.11582,-2.750586],[37.329004,-2.869629],[37.542188,-2.988574],[37.643848,-3.04541],[37.65918,-3.07002],[37.676855,-3.178418],[37.687988,-3.246191],[37.681836,-3.305762],[37.625391,-3.407227],[37.608691,-3.460254],[37.608203,-3.49707],[37.62207,-3.511523],[37.670117,-3.516797],[37.711035,-3.54082],[37.726172,-3.559766],[37.757422,-3.636133],[37.797266,-3.674414],[37.887305,-3.739258],[38.04082,-3.849805],[38.194336,-3.960352],[38.347852,-4.070898],[38.501367,-4.181445],[38.654883,-4.291895],[38.808398,-4.402441],[38.961914,-4.512988],[39.11543,-4.623535],[39.190137,-4.677246],[39.221777,-4.692383],[39.201855,-4.776465],[39.123242,-4.980469],[39.11875,-5.06543],[39.087988,-5.16543],[39.058301,-5.231543],[38.978223,-5.518555],[38.911035,-5.625977],[38.819238,-5.877637],[38.804688,-6.070117],[38.855273,-6.204883],[38.874023,-6.33125],[38.981445,-6.455078],[39.067383,-6.499316],[39.125488,-6.555957],[39.228418,-6.685254],[39.287305,-6.814941],[39.472363,-6.878613],[39.546094,-7.024023],[39.519238,-7.124121],[39.433398,-7.207031],[39.353125,-7.341406],[39.288477,-7.517871],[39.287012,-7.787695],[39.330469,-7.74668],[39.428418,-7.812793],[39.441016,-8.011523],[39.340039,-8.242871],[39.308984,-8.350977],[39.304004,-8.443848],[39.377344,-8.720801],[39.488379,-8.861816],[39.480078,-8.905957],[39.45127,-8.942969],[39.641309,-9.19248],[39.625488,-9.409473],[39.69668,-9.578418],[39.72793,-9.724805],[39.774805,-9.837109],[39.783789,-9.914551],[39.725195,-10.000488],[39.86377,-10.021973],[39.945215,-10.092285],[39.983594,-10.15957],[40.083691,-10.156641],[40.137891,-10.202637],[40.216016,-10.240625],[40.38877,-10.353516],[40.435547,-10.410254],[40.452539,-10.442969],[40.463574,-10.464355],[40.347461,-10.551563],[40.166211,-10.6875],[39.988672,-10.820801],[39.81709,-10.912402],[39.694434,-10.954785],[39.563477,-10.978516],[39.43916,-11.03457],[39.321582,-11.122559],[39.170996,-11.166895],[38.9875,-11.167285],[38.794727,-11.228906],[38.60332,-11.345313],[38.491797,-11.413281],[38.315137,-11.311133],[38.176563,-11.278711],[38.017285,-11.282129],[37.920215,-11.294727],[37.885352,-11.316699],[37.855078,-11.379102],[37.829297,-11.481934],[37.724805,-11.580664],[37.541699,-11.675098],[37.372852,-11.710449],[37.218359,-11.686523],[37.113867,-11.647168],[37.05918,-11.592188],[36.978906,-11.566992],[36.872656,-11.571289],[36.771094,-11.610352],[36.673828,-11.684277],[36.518652,-11.716211],[36.305664,-11.706348],[36.191309,-11.670703],[36.175488,-11.609277],[36.082227,-11.537305],[35.911328,-11.454688],[35.785449,-11.45293],[35.704688,-11.532129],[35.630957,-11.582031],[35.564355,-11.602344],[35.504395,-11.604785],[35.451367,-11.589551],[35.418262,-11.583203],[35.182617,-11.574805],[34.959473,-11.578125],[34.952637,-11.54375],[34.937012,-11.463477],[34.890625,-11.393555],[34.850586,-11.351953],[34.800879,-11.340918],[34.773828,-11.341699],[34.752148,-11.309473],[34.726465,-11.238184],[34.688477,-11.177441],[34.638086,-11.127148],[34.60791,-11.080469],[34.597656,-11.0375],[34.605664,-10.990234],[34.652344,-10.872852],[34.66709,-10.79248],[34.661816,-10.710059],[34.636523,-10.625586],[34.583594,-10.525098],[34.589551,-10.496191],[34.571582,-10.427637],[34.569727,-10.379688],[34.57998,-10.319824],[34.569922,-10.241113],[34.524219,-10.073145],[34.524219,-10.030176],[34.475977,-9.948828],[34.327832,-9.756543],[34.320898,-9.731543],[34.088574,-9.537793],[33.995605,-9.49541],[33.962109,-9.531738],[33.949609,-9.565332],[33.959375,-9.627344],[33.953711,-9.658203],[33.943945,-9.672168],[33.888867,-9.670117],[33.854199,-9.662988],[33.766211,-9.610938],[33.697656,-9.598145],[33.527539,-9.60752],[33.467773,-9.619727],[33.420898,-9.608008],[33.330859,-9.519141],[33.225293,-9.500488],[33.130469,-9.495898],[32.974023,-9.39502],[32.937305,-9.399707],[32.919922,-9.407422]]],[[[39.711328,-7.977441],[39.657227,-7.990527],[39.636133,-7.977832],[39.60293,-7.936133],[39.660645,-7.900586],[39.716602,-7.831543],[39.846582,-7.730273],[39.890918,-7.663477],[39.907129,-7.649219],[39.897754,-7.728125],[39.824414,-7.900684],[39.761816,-7.911914],[39.711328,-7.977441]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Tajikistan","SOV_A3":"TJK","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Tajikistan","ADM0_A3":"TJK","GEOU_DIF":0,"GEOUNIT":"Tajikistan","GU_A3":"TJK","SU_DIF":0,"SUBUNIT":"Tajikistan","SU_A3":"TJK","BRK_DIFF":0,"NAME":"Tajikistan","NAME_LONG":"Tajikistan","BRK_A3":"TJK","BRK_NAME":"Tajikistan","BRK_GROUP":null,"ABBREV":"Tjk.","POSTAL":"TJ","FORMAL_EN":"Republic of Tajikistan","FORMAL_FR":null,"NAME_CIAWF":"Tajikistan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Tajikistan","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":6,"MAPCOLOR9":2,"MAPCOLOR13":5,"POP_EST":9321018,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":8116,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"5. Low income","FIPS_10":"TI","ISO_A2":"TJ","ISO_A2_EH":"TJ","ISO_A3":"TJK","ISO_A3_EH":"TJK","ISO_N3":"762","ISO_N3_EH":"762","UN_A3":"762","WB_A2":"TJ","WB_A3":"TJK","WOE_ID":23424961,"WOE_ID_EH":23424961,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TJK","ADM0_DIFF":null,"ADM0_TLC":"TJK","ADM0_A3_US":"TJK","ADM0_A3_FR":"TJK","ADM0_A3_RU":"TJK","ADM0_A3_ES":"TJK","ADM0_A3_CN":"TJK","ADM0_A3_TW":"TJK","ADM0_A3_IN":"TJK","ADM0_A3_NP":"TJK","ADM0_A3_PK":"TJK","ADM0_A3_DE":"TJK","ADM0_A3_GB":"TJK","ADM0_A3_BR":"TJK","ADM0_A3_IL":"TJK","ADM0_A3_PS":"TJK","ADM0_A3_SA":"TJK","ADM0_A3_EG":"TJK","ADM0_A3_MA":"TJK","ADM0_A3_PT":"TJK","ADM0_A3_AR":"TJK","ADM0_A3_JP":"TJK","ADM0_A3_KO":"TJK","ADM0_A3_VN":"TJK","ADM0_A3_TR":"TJK","ADM0_A3_ID":"TJK","ADM0_A3_PL":"TJK","ADM0_A3_GR":"TJK","ADM0_A3_IT":"TJK","ADM0_A3_NL":"TJK","ADM0_A3_SE":"TJK","ADM0_A3_BD":"TJK","ADM0_A3_UA":"TJK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Central Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":72.587276,"LABEL_Y":38.199835,"NE_ID":1159321307,"WIKIDATAID":"Q863","NAME_AR":"طاجيكستان","NAME_BN":"তাজিকিস্তান","NAME_DE":"Tadschikistan","NAME_EN":"Tajikistan","NAME_ES":"Tayikistán","NAME_FA":"تاجیکستان","NAME_FR":"Tadjikistan","NAME_EL":"Τατζικιστάν","NAME_HE":"טג׳יקיסטן","NAME_HI":"ताजिकिस्तान","NAME_HU":"Tádzsikisztán","NAME_ID":"Tajikistan","NAME_IT":"Tagikistan","NAME_JA":"タジキスタン","NAME_KO":"타지키스탄","NAME_NL":"Tadzjikistan","NAME_PL":"Tadżykistan","NAME_PT":"Tajiquistão","NAME_RU":"Таджикистан","NAME_SV":"Tadzjikistan","NAME_TR":"Tacikistan","NAME_UK":"Таджикистан","NAME_UR":"تاجکستان","NAME_VI":"Tajikistan","NAME_ZH":"塔吉克斯坦","NAME_ZHT":"塔吉克","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[67.349609,36.684033,75.11875,41.035107],"geometry":{"type":"MultiPolygon","coordinates":[[[[67.758984,37.172217],[67.798047,37.244971],[67.814355,37.487012],[67.863574,37.570703],[68.010938,37.720947],[68.087598,37.835449],[68.174023,37.928418],[68.236523,37.959668],[68.294043,38.03291],[68.341211,38.116797],[68.354492,38.169531],[68.350293,38.211035],[68.333105,38.237793],[68.251367,38.294531],[68.144141,38.383105],[68.087207,38.473535],[68.055957,38.588916],[68.047852,38.669287],[68.148535,38.890625],[68.13252,38.927637],[68.103516,38.962012],[68.044336,38.983594],[67.95957,38.99292],[67.875684,38.983008],[67.768555,38.982227],[67.694434,38.994629],[67.676563,39.008496],[67.667285,39.10918],[67.64834,39.131055],[67.616504,39.150293],[67.400391,39.19668],[67.357617,39.216699],[67.349609,39.24209],[67.426172,39.465576],[67.45957,39.482422],[67.491699,39.51875],[67.54248,39.557617],[67.719043,39.621387],[67.908594,39.593799],[68.077148,39.56416],[68.244922,39.548291],[68.303027,39.537695],[68.399023,39.528857],[68.463281,39.536719],[68.506934,39.562793],[68.586133,39.634961],[68.610352,39.743262],[68.638965,39.838867],[68.686914,39.846289],[68.735254,39.83623],[68.758203,39.855566],[68.767969,39.881836],[68.777832,39.904199],[68.797656,39.909131],[68.832422,39.884326],[68.852246,39.890967],[68.86875,39.907471],[68.863867,39.927344],[68.824414,39.960791],[68.789453,40.01333],[68.792773,40.031494],[68.804688,40.050342],[68.908496,40.068213],[68.955664,40.071338],[68.97207,40.089941],[68.966016,40.11958],[68.926855,40.136328],[68.78457,40.1271],[68.639746,40.129199],[68.622461,40.147266],[68.630664,40.16709],[68.652539,40.182666],[68.951758,40.222607],[69.110352,40.20874],[69.22832,40.187598],[69.274902,40.198096],[69.219531,40.288135],[69.294434,40.296582],[69.304199,40.327393],[69.20625,40.566553],[69.259961,40.587646],[69.313965,40.634766],[69.309375,40.723926],[69.357227,40.767383],[69.413867,40.797168],[69.498242,40.76709],[69.628418,40.679053],[69.670801,40.661963],[69.712891,40.656982],[69.773242,40.684277],[70.005664,40.771436],[70.136328,40.82041],[70.29209,40.891699],[70.318945,40.919238],[70.372656,41.027637],[70.401953,41.035107],[70.441504,41.023438],[70.578223,40.911475],[70.657324,40.839648],[70.657324,40.815088],[70.634766,40.796582],[70.63916,40.778564],[70.750977,40.7396],[70.751074,40.721777],[70.725586,40.687793],[70.712012,40.669092],[70.69834,40.661182],[70.548828,40.562793],[70.382617,40.453516],[70.377148,40.439258],[70.369727,40.412012],[70.371582,40.384131],[70.398242,40.361377],[70.469922,40.345361],[70.533594,40.324512],[70.56582,40.267139],[70.602734,40.21416],[70.653125,40.201172],[70.899414,40.23457],[70.958008,40.238867],[70.960938,40.220654],[70.946387,40.187598],[70.738574,40.131152],[70.644336,40.083447],[70.624121,39.998975],[70.599219,39.974512],[70.556836,39.954492],[70.515137,39.949902],[70.451367,40.049219],[70.378906,40.069873],[70.274414,40.104834],[70.071484,40.172754],[69.966797,40.202246],[69.765234,40.158008],[69.530273,40.097314],[69.493652,40.060352],[69.46875,40.020752],[69.470996,39.990625],[69.487891,39.950439],[69.47627,39.919727],[69.431934,39.909766],[69.36543,39.94707],[69.307227,39.968555],[69.278809,39.917773],[69.244727,39.8271],[69.229102,39.761084],[69.280273,39.665869],[69.297656,39.524805],[69.391504,39.532471],[69.463281,39.53208],[69.598828,39.573779],[69.666992,39.574902],[69.77207,39.556738],[69.955957,39.553076],[70.10166,39.560596],[70.136816,39.557568],[70.171094,39.58418],[70.209277,39.575],[70.244824,39.542627],[70.39209,39.581885],[70.501172,39.587354],[70.567969,39.575879],[70.607813,39.564404],[70.678613,39.471289],[70.733105,39.413281],[70.799316,39.394727],[71.004883,39.411865],[71.065039,39.493408],[71.118066,39.513574],[71.202734,39.519824],[71.272852,39.535303],[71.328516,39.568701],[71.404297,39.597852],[71.470313,39.603662],[71.503027,39.582178],[71.517383,39.553857],[71.505859,39.51709],[71.50332,39.478809],[71.546289,39.453076],[71.672656,39.44707],[71.732227,39.422998],[71.735352,39.377734],[71.725684,39.306592],[71.778613,39.277979],[71.805957,39.275586],[71.991016,39.350928],[72.042773,39.352148],[72.08418,39.310645],[72.147363,39.260742],[72.22998,39.20752],[72.249805,39.215674],[72.287207,39.27373],[72.357715,39.336865],[72.490234,39.357373],[72.563379,39.377197],[72.639941,39.385986],[72.872461,39.3604],[72.949414,39.35708],[73.109277,39.361914],[73.234961,39.374561],[73.336133,39.412354],[73.387402,39.442725],[73.47041,39.460596],[73.575586,39.457617],[73.631641,39.448877],[73.636328,39.39668],[73.623145,39.297852],[73.607324,39.229199],[73.69043,39.104541],[73.74375,39.044531],[73.795605,39.002148],[73.805273,38.968652],[73.794531,38.941309],[73.72998,38.914697],[73.706836,38.88623],[73.696094,38.854297],[73.716797,38.817236],[73.754102,38.698926],[73.80166,38.606885],[73.869141,38.562891],[73.97002,38.533691],[74.025586,38.539844],[74.065332,38.608496],[74.131348,38.661182],[74.187305,38.65752],[74.277441,38.659766],[74.514063,38.6],[74.74502,38.51001],[74.812305,38.460303],[74.835938,38.404297],[74.77207,38.274756],[74.775098,38.191895],[74.789648,38.103613],[74.84248,38.038086],[74.89082,37.925781],[74.900293,37.832715],[74.921289,37.80498],[74.938281,37.77251],[74.912305,37.687305],[74.894238,37.601416],[74.91582,37.572803],[74.986426,37.530371],[75.097461,37.45127],[75.11875,37.385693],[75.079004,37.344043],[75.008398,37.293555],[74.918164,37.25],[74.891309,37.231641],[74.875391,37.241992],[74.830469,37.285937],[74.730566,37.357031],[74.659375,37.394482],[74.524219,37.382373],[74.444922,37.395605],[74.349023,37.41875],[74.259668,37.41543],[74.203516,37.372461],[74.16709,37.329443],[74.077734,37.316211],[73.948828,37.283154],[73.749609,37.231787],[73.653516,37.239355],[73.627539,37.261572],[73.648828,37.291211],[73.717285,37.329443],[73.733789,37.375781],[73.720605,37.41875],[73.657129,37.430469],[73.632617,37.437207],[73.604688,37.446045],[73.481348,37.47168],[73.38291,37.462256],[73.211133,37.408496],[72.895508,37.267529],[72.757031,37.172705],[72.657422,37.029053],[72.358789,36.98291],[72.153516,36.900537],[71.941992,36.766455],[71.802051,36.694287],[71.733789,36.684033],[71.665625,36.696924],[71.597461,36.73291],[71.530859,36.845117],[71.471875,37.015088],[71.43291,37.127539],[71.454785,37.271826],[71.479688,37.436035],[71.505078,37.60293],[71.546191,37.795654],[71.580371,37.864258],[71.582227,37.910107],[71.551953,37.933154],[71.487793,37.931885],[71.389648,37.906299],[71.319922,37.901855],[71.278516,37.918408],[71.282813,38.00791],[71.332715,38.170264],[71.255859,38.306982],[71.052148,38.417871],[70.878906,38.456396],[70.735938,38.422559],[70.61582,38.334424],[70.518555,38.191992],[70.417773,38.075439],[70.313281,37.984814],[70.23877,37.941211],[70.214648,37.924414],[70.199414,37.886035],[70.25498,37.765381],[70.251465,37.66416],[70.188672,37.582471],[70.119824,37.543506],[70.044727,37.547217],[69.984961,37.566162],[69.940625,37.600293],[69.820898,37.60957],[69.625781,37.594043],[69.49209,37.553076],[69.420117,37.486719],[69.399219,37.399316],[69.429688,37.290869],[69.414453,37.207764],[69.353809,37.150049],[69.303906,37.116943],[69.264844,37.108398],[69.180176,37.158301],[69.05,37.266504],[68.960449,37.325049],[68.911816,37.333936],[68.885254,37.328076],[68.855371,37.316846],[68.838477,37.302832],[68.82373,37.270703],[68.782031,37.258008],[68.723242,37.268018],[68.669141,37.258398],[68.637012,37.224463],[68.546484,37.183447],[68.386914,37.1375],[68.299512,37.088428],[68.284766,37.036328],[68.260938,37.013086],[68.212109,37.021533],[68.067773,36.949805],[67.958008,36.972021],[67.834473,37.064209],[67.766016,37.140137],[67.758984,37.172217]]],[[[70.652539,40.936621],[70.622754,40.934424],[70.56875,40.981836],[70.55,41.014893],[70.57207,41.024805],[70.618359,41.00166],[70.649219,40.96084],[70.652539,40.936621]]],[[[70.70166,39.825293],[70.612109,39.786768],[70.55957,39.790918],[70.518652,39.828174],[70.489258,39.863037],[70.482813,39.882715],[70.497754,39.882422],[70.56709,39.866602],[70.66416,39.855469],[70.698242,39.84585],[70.70166,39.825293]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Taiwan","SOV_A3":"TWN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Taiwan","ADM0_A3":"TWN","GEOU_DIF":0,"GEOUNIT":"Taiwan","GU_A3":"TWN","SU_DIF":0,"SUBUNIT":"Taiwan","SU_A3":"TWN","BRK_DIFF":0,"NAME":"Taiwan","NAME_LONG":"Taiwan","BRK_A3":"TWN","BRK_NAME":"Taiwan","BRK_GROUP":null,"ABBREV":"Taiwan","POSTAL":"TW","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Taiwan","NOTE_ADM0":null,"NOTE_BRK":"Self admin.; Claimed by China","NAME_SORT":"Taiwan","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":5,"MAPCOLOR9":7,"MAPCOLOR13":2,"POP_EST":23568378,"POP_RANK":15,"POP_YEAR":2020,"GDP_MD":1127000,"GDP_YEAR":2016,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"TW","ISO_A2":"CN-TW","ISO_A2_EH":"TW","ISO_A3":"TWN","ISO_A3_EH":"TWN","ISO_N3":"158","ISO_N3_EH":"158","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424971,"WOE_ID_EH":23424971,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TWN","ADM0_DIFF":null,"ADM0_TLC":"TWN","ADM0_A3_US":"TWN","ADM0_A3_FR":"TWN","ADM0_A3_RU":"CHN","ADM0_A3_ES":"TWN","ADM0_A3_CN":"CHN","ADM0_A3_TW":"TWN","ADM0_A3_IN":"TWN","ADM0_A3_NP":"CHN","ADM0_A3_PK":"CHN","ADM0_A3_DE":"TWN","ADM0_A3_GB":"TWN","ADM0_A3_BR":"TWN","ADM0_A3_IL":"TWN","ADM0_A3_PS":"TWN","ADM0_A3_SA":"TWN","ADM0_A3_EG":"CHN","ADM0_A3_MA":"CHN","ADM0_A3_PT":"TWN","ADM0_A3_AR":"TWN","ADM0_A3_JP":"TWN","ADM0_A3_KO":"TWN","ADM0_A3_VN":"TWN","ADM0_A3_TR":"TWN","ADM0_A3_ID":"CHN","ADM0_A3_PL":"TWN","ADM0_A3_GR":"TWN","ADM0_A3_IT":"TWN","ADM0_A3_NL":"TWN","ADM0_A3_SE":"TWN","ADM0_A3_BD":"CHN","ADM0_A3_UA":"TWN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":8,"LABEL_X":120.868204,"LABEL_Y":23.652408,"NE_ID":1159321335,"WIKIDATAID":"Q865","NAME_AR":"تايوان","NAME_BN":"তাইওয়ান","NAME_DE":"Republik China","NAME_EN":"Taiwan","NAME_ES":"República de China","NAME_FA":"تایوان","NAME_FR":"Taïwan","NAME_EL":"Δημοκρατία της Κίνας","NAME_HE":"טאיוואן","NAME_HI":"चीनी गणराज्य","NAME_HU":"Kínai Köztársaság","NAME_ID":"Taiwan","NAME_IT":"Taiwan","NAME_JA":"中華民国","NAME_KO":"중화민국","NAME_NL":"Taiwan","NAME_PL":"Republika Chińska","NAME_PT":"Taiwan","NAME_RU":"Тайвань","NAME_SV":"Taiwan","NAME_TR":"Çin Cumhuriyeti","NAME_UK":"Республіка Китай","NAME_UR":"تائیوان","NAME_VI":"Đài Loan","NAME_ZH":"中华民国","NAME_ZHT":"中華民國","FCLASS_ISO":"Admin-1 states provinces","TLC_DIFF":"1","FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":"Admin-1 states provinces","FCLASS_TW":"Admin-0 country","FCLASS_IN":null,"FCLASS_NP":"Admin-1 states provinces","FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":"Admin-1 states provinces","FCLASS_MA":"Admin-1 states provinces","FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":"Admin-1 states provinces","FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":"Admin-1 states provinces","FCLASS_UA":null},"bbox":[118.287305,21.925,121.929004,25.276904],"geometry":{"type":"MultiPolygon","coordinates":[[[[121.008789,22.620361],[120.946875,22.503076],[120.897363,22.37915],[120.877344,22.262207],[120.878418,22.141553],[120.864258,22.032666],[120.839844,21.925],[120.742773,21.956006],[120.690137,22.033105],[120.678027,22.159668],[120.607617,22.312549],[120.58125,22.356396],[120.479785,22.441895],[120.387598,22.484521],[120.316211,22.547607],[120.325586,22.542432],[120.272852,22.627441],[120.232813,22.71792],[120.150098,22.974902],[120.121582,23.037012],[120.083398,23.093701],[120.072461,23.149756],[120.085547,23.212061],[120.121191,23.305176],[120.142969,23.399072],[120.125391,23.526611],[120.132129,23.65293],[120.158984,23.709033],[120.629687,24.478516],[120.757422,24.642285],[120.835938,24.722656],[120.901563,24.813281],[120.964063,24.927979],[121.040625,25.032812],[121.09541,25.065088],[121.36543,25.15918],[121.449609,25.249023],[121.51709,25.276904],[121.593652,25.275342],[121.643066,25.232422],[121.687109,25.181592],[121.733301,25.154102],[121.852832,25.104443],[121.905176,25.056445],[121.929004,24.97373],[121.85625,24.895264],[121.820117,24.824512],[121.813379,24.746338],[121.826367,24.640527],[121.828027,24.534375],[121.737012,24.285254],[121.639355,24.130078],[121.613086,24.052734],[121.583398,23.860889],[121.526074,23.668262],[121.477148,23.424072],[121.397461,23.17251],[121.352246,23.067285],[121.295898,22.966602],[121.16123,22.776367],[121.008789,22.620361]]],[[[118.407422,24.522119],[118.451172,24.455566],[118.432715,24.414355],[118.295117,24.436328],[118.287305,24.476611],[118.339355,24.469141],[118.407422,24.522119]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Syria","SOV_A3":"SYR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Syria","ADM0_A3":"SYR","GEOU_DIF":0,"GEOUNIT":"Syria","GU_A3":"SYR","SU_DIF":0,"SUBUNIT":"Syria","SU_A3":"SYR","BRK_DIFF":0,"NAME":"Syria","NAME_LONG":"Syria","BRK_A3":"SYR","BRK_NAME":"Syria","BRK_GROUP":null,"ABBREV":"Syria","POSTAL":"SYR","FORMAL_EN":"Syrian Arab Republic","FORMAL_FR":null,"NAME_CIAWF":"Syria","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Syrian Arab Republic","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":6,"MAPCOLOR9":2,"MAPCOLOR13":6,"POP_EST":17070135,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":98830,"GDP_YEAR":2015,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"SY","ISO_A2":"SY","ISO_A2_EH":"SY","ISO_A3":"SYR","ISO_A3_EH":"SYR","ISO_N3":"760","ISO_N3_EH":"760","UN_A3":"760","WB_A2":"SY","WB_A3":"SYR","WOE_ID":23424956,"WOE_ID_EH":23424956,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SYR","ADM0_DIFF":null,"ADM0_TLC":"SYR","ADM0_A3_US":"SYR","ADM0_A3_FR":"SYR","ADM0_A3_RU":"SYR","ADM0_A3_ES":"SYR","ADM0_A3_CN":"SYR","ADM0_A3_TW":"SYR","ADM0_A3_IN":"SYR","ADM0_A3_NP":"SYR","ADM0_A3_PK":"SYR","ADM0_A3_DE":"SYR","ADM0_A3_GB":"SYR","ADM0_A3_BR":"SYR","ADM0_A3_IL":"SYR","ADM0_A3_PS":"SYR","ADM0_A3_SA":"SYR","ADM0_A3_EG":"SYR","ADM0_A3_MA":"SYR","ADM0_A3_PT":"SYR","ADM0_A3_AR":"SYR","ADM0_A3_JP":"SYR","ADM0_A3_KO":"SYR","ADM0_A3_VN":"SYR","ADM0_A3_TR":"SYR","ADM0_A3_ID":"SYR","ADM0_A3_PL":"SYR","ADM0_A3_GR":"SYR","ADM0_A3_IT":"SYR","ADM0_A3_NL":"SYR","ADM0_A3_SE":"SYR","ADM0_A3_BD":"SYR","ADM0_A3_UA":"SYR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":38.277783,"LABEL_Y":35.006636,"NE_ID":1159321295,"WIKIDATAID":"Q858","NAME_AR":"سوريا","NAME_BN":"সিরিয়া","NAME_DE":"Syrien","NAME_EN":"Syria","NAME_ES":"Siria","NAME_FA":"سوریه","NAME_FR":"Syrie","NAME_EL":"Συρία","NAME_HE":"סוריה","NAME_HI":"सीरिया","NAME_HU":"Szíria","NAME_ID":"Suriah","NAME_IT":"Siria","NAME_JA":"シリア","NAME_KO":"시리아","NAME_NL":"Syrië","NAME_PL":"Syria","NAME_PT":"Síria","NAME_RU":"Сирия","NAME_SV":"Syrien","NAME_TR":"Suriye","NAME_UK":"Сирія","NAME_UR":"سوریہ","NAME_VI":"Syria","NAME_ZH":"叙利亚","NAME_ZHT":"敘利亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[35.764453,32.317285,42.359082,37.297266],"geometry":{"type":"Polygon","coordinates":[[[35.892676,35.916553],[35.967578,35.910059],[36.127344,35.831445],[36.153613,35.833887],[36.201953,35.937549],[36.248828,35.972705],[36.347559,36.003516],[36.375391,36.17124],[36.421484,36.203467],[36.477051,36.220703],[36.562402,36.223926],[36.636719,36.233984],[36.641406,36.263525],[36.5375,36.457422],[36.54668,36.506348],[36.596875,36.701367],[36.628418,36.777686],[36.658594,36.802539],[36.776563,36.792676],[36.941797,36.758398],[36.985352,36.702393],[37.066211,36.652637],[37.187402,36.655908],[37.327051,36.646582],[37.436328,36.643311],[37.523535,36.67832],[37.720313,36.743701],[37.817969,36.765576],[37.906641,36.794629],[38.191699,36.901562],[38.305859,36.893359],[38.383984,36.879248],[38.44375,36.862256],[38.578027,36.789111],[38.688867,36.715088],[38.766602,36.693115],[38.906445,36.694678],[39.108398,36.680566],[39.356641,36.681592],[39.501465,36.702246],[39.686523,36.738623],[40.016406,36.826074],[40.450391,37.008887],[40.705664,37.097705],[40.815625,37.108154],[40.958887,37.10918],[41.102148,37.085889],[41.264648,37.069336],[41.339551,37.070801],[41.515527,37.08916],[41.743555,37.126123],[41.886816,37.156396],[42.059863,37.206055],[42.167871,37.288623],[42.202734,37.297266],[42.247559,37.282227],[42.268555,37.276562],[42.312891,37.22959],[42.358984,37.108594],[42.359082,37.09502],[42.350098,37.060596],[42.237305,36.961133],[42.083984,36.826025],[41.974023,36.74082],[41.788574,36.597168],[41.650195,36.566406],[41.416797,36.514648],[41.354199,36.464404],[41.295996,36.38335],[41.261816,36.272461],[41.251758,36.203027],[41.245605,36.073389],[41.300195,35.938965],[41.352637,35.809961],[41.359375,35.724609],[41.354102,35.64043],[41.30332,35.550635],[41.24834,35.42749],[41.216406,35.288184],[41.199609,35.027393],[41.199219,34.805322],[41.194727,34.768994],[41.099023,34.612305],[40.987012,34.429053],[40.935059,34.386572],[40.689453,34.332031],[40.421484,34.197754],[40.121973,34.047656],[39.85,33.911377],[39.564453,33.768359],[39.268359,33.62002],[39.056738,33.514014],[38.773535,33.372217],[38.515625,33.236621],[38.254297,33.099219],[38.055762,32.994873],[37.754102,32.829834],[37.577441,32.733057],[37.317578,32.590771],[37.088965,32.465527],[36.818359,32.317285],[36.479199,32.361328],[36.37207,32.386914],[36.284277,32.457471],[36.219727,32.495117],[36.059473,32.533789],[35.956445,32.666699],[35.894727,32.71377],[35.787305,32.734912],[35.833283,32.820094],[35.841863,32.875954],[35.887977,32.944379],[35.859022,32.989367],[35.84508,33.084665],[35.824704,33.108024],[35.817197,33.133173],[35.833283,33.163702],[35.826849,33.195117],[35.808618,33.208577],[35.800038,33.256121],[35.785024,33.291089],[35.792531,33.334107],[35.816125,33.361879],[35.840738,33.415661],[35.869141,33.431738],[35.914746,33.465381],[35.926563,33.500293],[35.967578,33.53457],[36.022266,33.5625],[36.034473,33.585059],[36.02666,33.597949],[35.97168,33.623096],[35.942383,33.667578],[35.968457,33.732422],[35.986133,33.752637],[36.018848,33.783936],[36.092188,33.831592],[36.149805,33.839502],[36.199414,33.839551],[36.283398,33.835596],[36.348535,33.827051],[36.365039,33.839355],[36.362793,33.855127],[36.282227,33.894189],[36.277832,33.925293],[36.297852,33.958643],[36.354883,34.011328],[36.422852,34.049854],[36.45752,34.056836],[36.535156,34.134326],[36.584961,34.22124],[36.504395,34.432373],[36.455566,34.466162],[36.376465,34.495166],[36.329883,34.499609],[36.32627,34.51333],[36.388672,34.566895],[36.433008,34.613477],[36.383887,34.65791],[36.296289,34.678711],[36.263574,34.632861],[36.151074,34.628613],[35.97627,34.629199],[35.899316,34.8521],[35.887891,34.948633],[35.889941,35.060303],[35.943066,35.223828],[35.918066,35.299512],[35.916016,35.350537],[35.902441,35.420703],[35.764453,35.571582],[35.839648,35.849219],[35.892676,35.916553]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Switzerland","SOV_A3":"CHE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Switzerland","ADM0_A3":"CHE","GEOU_DIF":0,"GEOUNIT":"Switzerland","GU_A3":"CHE","SU_DIF":0,"SUBUNIT":"Switzerland","SU_A3":"CHE","BRK_DIFF":0,"NAME":"Switzerland","NAME_LONG":"Switzerland","BRK_A3":"CHE","BRK_NAME":"Switzerland","BRK_GROUP":null,"ABBREV":"Switz.","POSTAL":"CH","FORMAL_EN":"Swiss Confederation","FORMAL_FR":null,"NAME_CIAWF":"Switzerland","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Switzerland","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":2,"MAPCOLOR9":7,"MAPCOLOR13":3,"POP_EST":8574832,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":703082,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"SZ","ISO_A2":"CH","ISO_A2_EH":"CH","ISO_A3":"CHE","ISO_A3_EH":"CHE","ISO_N3":"756","ISO_N3_EH":"756","UN_A3":"756","WB_A2":"CH","WB_A3":"CHE","WOE_ID":23424957,"WOE_ID_EH":23424957,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CHE","ADM0_DIFF":null,"ADM0_TLC":"CHE","ADM0_A3_US":"CHE","ADM0_A3_FR":"CHE","ADM0_A3_RU":"CHE","ADM0_A3_ES":"CHE","ADM0_A3_CN":"CHE","ADM0_A3_TW":"CHE","ADM0_A3_IN":"CHE","ADM0_A3_NP":"CHE","ADM0_A3_PK":"CHE","ADM0_A3_DE":"CHE","ADM0_A3_GB":"CHE","ADM0_A3_BR":"CHE","ADM0_A3_IL":"CHE","ADM0_A3_PS":"CHE","ADM0_A3_SA":"CHE","ADM0_A3_EG":"CHE","ADM0_A3_MA":"CHE","ADM0_A3_PT":"CHE","ADM0_A3_AR":"CHE","ADM0_A3_JP":"CHE","ADM0_A3_KO":"CHE","ADM0_A3_VN":"CHE","ADM0_A3_TR":"CHE","ADM0_A3_ID":"CHE","ADM0_A3_PL":"CHE","ADM0_A3_GR":"CHE","ADM0_A3_IT":"CHE","ADM0_A3_NL":"CHE","ADM0_A3_SE":"CHE","ADM0_A3_BD":"CHE","ADM0_A3_UA":"CHE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":7.463965,"LABEL_Y":46.719114,"NE_ID":1159320491,"WIKIDATAID":"Q39","NAME_AR":"سويسرا","NAME_BN":"সুইজারল্যান্ড","NAME_DE":"Schweiz","NAME_EN":"Switzerland","NAME_ES":"Suiza","NAME_FA":"سوئیس","NAME_FR":"Suisse","NAME_EL":"Ελβετία","NAME_HE":"שווייץ","NAME_HI":"स्विट्ज़रलैण्ड","NAME_HU":"Svájc","NAME_ID":"Swiss","NAME_IT":"Svizzera","NAME_JA":"スイス","NAME_KO":"스위스","NAME_NL":"Zwitserland","NAME_PL":"Szwajcaria","NAME_PT":"Suíça","NAME_RU":"Швейцария","NAME_SV":"Schweiz","NAME_TR":"İsviçre","NAME_UK":"Швейцарія","NAME_UR":"سویٹزرلینڈ","NAME_VI":"Thụy Sĩ","NAME_ZH":"瑞士","NAME_ZHT":"瑞士","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[5.97002,45.830029,10.45459,47.775635],"geometry":{"type":"Polygon","coordinates":[[[9.524023,47.524219],[9.554395,47.511133],[9.625879,47.467041],[9.609082,47.391797],[9.527539,47.270752],[9.484277,47.172656],[9.479492,47.09751],[9.487695,47.062256],[9.502344,47.062744],[9.580273,47.057373],[9.619922,47.057471],[9.74502,47.037109],[9.845313,47.007373],[9.864648,46.975977],[9.877734,46.937695],[9.996875,46.885352],[10.133496,46.851514],[10.179785,46.862354],[10.349414,46.984766],[10.414941,46.964404],[10.45459,46.899414],[10.452832,46.864941],[10.406055,46.734863],[10.397949,46.665039],[10.438281,46.618848],[10.44248,46.582861],[10.430664,46.550049],[10.363086,46.54707],[10.272266,46.564844],[10.195508,46.621094],[10.1375,46.614355],[10.087012,46.599902],[10.06123,46.546777],[10.038281,46.483203],[10.045605,46.4479],[10.081934,46.420752],[10.109668,46.362842],[10.129883,46.287988],[10.145215,46.253516],[10.12832,46.238232],[10.080566,46.227979],[10.041016,46.238086],[9.97168,46.327686],[9.939258,46.361816],[9.884473,46.367773],[9.787793,46.346045],[9.639453,46.295898],[9.57959,46.296094],[9.528711,46.306201],[9.481055,46.348779],[9.440625,46.430811],[9.427637,46.482324],[9.399316,46.480664],[9.304395,46.495557],[9.260156,46.475195],[9.259766,46.39126],[9.251074,46.286768],[9.203418,46.219238],[9.070996,46.102441],[9.022363,46.051465],[9.003027,46.014893],[8.998926,45.983105],[9.019141,45.928125],[9.04668,45.875586],[9.02373,45.845703],[8.953711,45.830029],[8.904297,45.861963],[8.885156,45.918701],[8.778027,45.996191],[8.826758,46.061035],[8.818555,46.077148],[8.641699,46.110791],[8.56543,46.159814],[8.458398,46.245898],[8.438477,46.282861],[8.442969,46.402783],[8.436816,46.431885],[8.422559,46.446045],[8.370703,46.445117],[8.298535,46.403418],[8.231934,46.341211],[8.095703,46.271045],[8.081543,46.256006],[8.127246,46.187598],[8.125195,46.160937],[8.014258,46.051904],[7.993164,46.015918],[7.852344,45.947461],[7.787891,45.921826],[7.592578,45.972217],[7.538574,45.978174],[7.451563,45.944434],[7.32793,45.912354],[7.129004,45.88042],[7.055762,45.903809],[7.021094,45.925781],[7.003906,45.958838],[6.953711,46.017139],[6.897266,46.051758],[6.858008,46.089404],[6.805664,46.130664],[6.77207,46.165137],[6.816797,46.275195],[6.78418,46.313965],[6.767383,46.369189],[6.776074,46.406641],[6.758105,46.415771],[6.578223,46.437354],[6.428906,46.430518],[6.321875,46.393701],[6.234668,46.332617],[6.224219,46.319434],[6.22959,46.308447],[6.272949,46.252246],[6.199414,46.193066],[6.086621,46.147021],[6.006641,46.142334],[5.971484,46.151221],[5.97002,46.214697],[6.036133,46.238086],[6.095898,46.279395],[6.115918,46.337646],[6.123242,46.378613],[6.060254,46.428174],[6.067969,46.458545],[6.107031,46.516064],[6.129688,46.566992],[6.160742,46.611035],[6.285156,46.683057],[6.410156,46.75542],[6.429004,46.832275],[6.438574,46.925879],[6.45625,46.94834],[6.624805,47.004346],[6.666895,47.026514],[6.688086,47.058252],[6.820703,47.163184],[6.952051,47.267187],[6.978516,47.302051],[7.000586,47.32251],[7.000586,47.339453],[6.984082,47.352539],[6.921484,47.36123],[6.900391,47.394238],[6.968359,47.453223],[7.053418,47.489355],[7.136035,47.489844],[7.169238,47.473242],[7.16748,47.453711],[7.203125,47.432715],[7.265723,47.425781],[7.343164,47.433105],[7.42002,47.455176],[7.467383,47.507666],[7.494922,47.547363],[7.615625,47.592725],[7.698047,47.569873],[7.927051,47.563867],[8.09375,47.576172],[8.198242,47.606934],[8.327832,47.606934],[8.414746,47.5896],[8.430078,47.592139],[8.454004,47.596191],[8.477637,47.612695],[8.559473,47.624023],[8.570508,47.637793],[8.56709,47.651904],[8.552344,47.659131],[8.451758,47.651807],[8.413281,47.662695],[8.403418,47.687793],[8.435742,47.731348],[8.509863,47.766895],[8.572656,47.775635],[8.617871,47.766113],[8.72832,47.700049],[8.754785,47.698047],[8.770117,47.709912],[8.793066,47.716553],[8.831152,47.703613],[8.874023,47.662695],[8.881152,47.656396],[9.127539,47.670703],[9.182813,47.670703],[9.35,47.598926],[9.524023,47.524219]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":3,"SOVEREIGNT":"Sweden","SOV_A3":"SWE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Sweden","ADM0_A3":"SWE","GEOU_DIF":0,"GEOUNIT":"Sweden","GU_A3":"SWE","SU_DIF":0,"SUBUNIT":"Sweden","SU_A3":"SWE","BRK_DIFF":0,"NAME":"Sweden","NAME_LONG":"Sweden","BRK_A3":"SWE","BRK_NAME":"Sweden","BRK_GROUP":null,"ABBREV":"Swe.","POSTAL":"S","FORMAL_EN":"Kingdom of Sweden","FORMAL_FR":null,"NAME_CIAWF":"Sweden","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Sweden","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":2,"MAPCOLOR13":4,"POP_EST":10285453,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":530883,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"SW","ISO_A2":"SE","ISO_A2_EH":"SE","ISO_A3":"SWE","ISO_A3_EH":"SWE","ISO_N3":"752","ISO_N3_EH":"752","UN_A3":"752","WB_A2":"SE","WB_A3":"SWE","WOE_ID":23424954,"WOE_ID_EH":23424954,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SWE","ADM0_DIFF":null,"ADM0_TLC":"SWE","ADM0_A3_US":"SWE","ADM0_A3_FR":"SWE","ADM0_A3_RU":"SWE","ADM0_A3_ES":"SWE","ADM0_A3_CN":"SWE","ADM0_A3_TW":"SWE","ADM0_A3_IN":"SWE","ADM0_A3_NP":"SWE","ADM0_A3_PK":"SWE","ADM0_A3_DE":"SWE","ADM0_A3_GB":"SWE","ADM0_A3_BR":"SWE","ADM0_A3_IL":"SWE","ADM0_A3_PS":"SWE","ADM0_A3_SA":"SWE","ADM0_A3_EG":"SWE","ADM0_A3_MA":"SWE","ADM0_A3_PT":"SWE","ADM0_A3_AR":"SWE","ADM0_A3_JP":"SWE","ADM0_A3_KO":"SWE","ADM0_A3_VN":"SWE","ADM0_A3_TR":"SWE","ADM0_A3_ID":"SWE","ADM0_A3_PL":"SWE","ADM0_A3_GR":"SWE","ADM0_A3_IT":"SWE","ADM0_A3_NL":"SWE","ADM0_A3_SE":"SWE","ADM0_A3_BD":"SWE","ADM0_A3_UA":"SWE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":19.01705,"LABEL_Y":65.85918,"NE_ID":1159321287,"WIKIDATAID":"Q34","NAME_AR":"السويد","NAME_BN":"সুইডেন","NAME_DE":"Schweden","NAME_EN":"Sweden","NAME_ES":"Suecia","NAME_FA":"سوئد","NAME_FR":"Suède","NAME_EL":"Σουηδία","NAME_HE":"שוודיה","NAME_HI":"स्वीडन","NAME_HU":"Svédország","NAME_ID":"Swedia","NAME_IT":"Svezia","NAME_JA":"スウェーデン","NAME_KO":"스웨덴","NAME_NL":"Zweden","NAME_PL":"Szwecja","NAME_PT":"Suécia","NAME_RU":"Швеция","NAME_SV":"Sverige","NAME_TR":"İsveç","NAME_UK":"Швеція","NAME_UR":"سویڈن","NAME_VI":"Thụy Điển","NAME_ZH":"瑞典","NAME_ZHT":"瑞典","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[11.147168,55.346387,24.155469,69.036865],"geometry":{"type":"MultiPolygon","coordinates":[[[[19.076465,57.835938],[18.99375,57.812109],[18.945117,57.741602],[18.878125,57.729687],[18.813867,57.706201],[18.790918,57.483105],[18.90791,57.39834],[18.843652,57.386475],[18.784863,57.361084],[18.742871,57.323535],[18.699902,57.242725],[18.538477,57.196924],[18.477344,57.163037],[18.387207,57.087646],[18.340234,56.978223],[18.248926,56.931543],[18.146387,56.920508],[18.206543,57.010156],[18.285352,57.083203],[18.20957,57.133301],[18.163965,57.211719],[18.105078,57.271875],[18.151953,57.339062],[18.128906,57.44917],[18.136523,57.556641],[18.204883,57.610889],[18.283203,57.655127],[18.405176,57.756836],[18.537402,57.830566],[18.721875,57.863721],[18.805176,57.833154],[18.841113,57.900195],[18.900586,57.915479],[18.956445,57.9],[19.076465,57.835938]]],[[[16.528516,56.290527],[16.477148,56.240186],[16.431641,56.24375],[16.40127,56.310889],[16.394141,56.483643],[16.412305,56.568994],[16.630371,56.876855],[16.727734,56.902002],[16.864648,57.090674],[16.901563,57.174609],[16.960938,57.250195],[16.995996,57.317773],[17.025391,57.345068],[17.089258,57.332275],[17.117676,57.319824],[17.050391,57.280469],[17.058203,57.229248],[17.053516,57.208008],[16.883691,56.985205],[16.838281,56.840527],[16.778027,56.805225],[16.528516,56.290527]]],[[[11.388281,59.036523],[11.470703,58.909521],[11.543555,58.893018],[11.642773,58.926074],[11.712207,59.018652],[11.751855,59.157568],[11.798145,59.289893],[11.743359,59.431445],[11.684863,59.555762],[11.680762,59.592285],[11.834277,59.697168],[11.88125,59.782471],[11.932129,59.863672],[11.988281,59.891309],[12.071875,59.897607],[12.169238,59.912891],[12.291992,59.967236],[12.402051,60.040039],[12.486133,60.106787],[12.514648,60.238867],[12.51582,60.305225],[12.552832,60.354492],[12.588672,60.450732],[12.553809,60.545654],[12.445312,60.689648],[12.314648,60.892139],[12.294141,61.002686],[12.353711,61.023193],[12.467578,61.041504],[12.683008,61.046826],[12.706055,61.059863],[12.727832,61.108252],[12.776367,61.173975],[12.828223,61.221826],[12.863672,61.290283],[12.880762,61.352295],[12.75752,61.445703],[12.596094,61.541309],[12.486816,61.572998],[12.29209,61.653467],[12.155371,61.720752],[12.233691,61.976855],[12.291992,62.167432],[12.301367,62.21377],[12.303516,62.285596],[12.114551,62.591895],[12.121875,62.66001],[12.139844,62.721338],[12.119629,62.825928],[12.108594,62.919482],[12.141016,62.947852],[12.218164,63.000635],[12.144629,63.08252],[12.138672,63.08916],[11.999902,63.291699],[12.212109,63.492236],[12.175195,63.595947],[12.301953,63.671191],[12.532715,63.843555],[12.6625,63.940479],[12.690039,63.957422],[12.792773,64],[12.987598,64.050488],[13.203516,64.075098],[13.299609,64.074805],[13.670703,64.040625],[13.960547,64.014014],[14.002734,64.040723],[14.063281,64.095508],[14.141211,64.173535],[14.148047,64.260303],[14.119922,64.387744],[14.077637,64.464014],[13.873535,64.513574],[13.650293,64.581543],[13.924805,64.796777],[14.115137,64.946143],[14.352441,65.17085],[14.42627,65.264355],[14.479688,65.301465],[14.549512,65.646387],[14.595801,65.742871],[14.63457,65.793262],[14.635156,65.84502],[14.609961,65.932275],[14.543262,66.129346],[14.917969,66.153711],[15.040039,66.167529],[15.15332,66.191064],[15.374902,66.252051],[15.483789,66.305957],[15.422949,66.489844],[15.557031,66.5521],[15.88418,66.768848],[16.237695,66.976416],[16.403516,67.05498],[16.420703,67.093359],[16.434277,67.155078],[16.360645,67.252002],[16.281543,67.312061],[16.127441,67.42583],[16.193555,67.505176],[16.307129,67.520605],[16.457129,67.551758],[16.574121,67.61958],[16.585547,67.62832],[16.783594,67.89502],[17.170508,68.030127],[17.324609,68.103809],[17.564746,68.048438],[17.916699,67.964893],[18.073242,68.087842],[18.125,68.133447],[18.17666,68.200635],[18.155957,68.316846],[18.14707,68.467773],[18.162598,68.528418],[18.303027,68.55542],[18.378613,68.562402],[18.769824,68.500049],[18.868262,68.501123],[19.052637,68.492725],[19.258984,68.465332],[19.691211,68.392432],[19.87002,68.362256],[19.969824,68.356396],[20.055957,68.390381],[20.240039,68.477539],[19.968848,68.542041],[20.147461,68.607324],[20.240039,68.673145],[20.319434,68.754053],[20.348047,68.84873],[20.337109,68.899658],[20.282324,68.934326],[20.116699,69.020898],[20.491992,69.033301],[20.622168,69.036865],[20.895117,68.979834],[20.907031,68.96748],[20.908984,68.937744],[20.918555,68.906934],[21.183398,68.828809],[21.259766,68.787451],[21.422363,68.724609],[21.46543,68.690674],[21.616016,68.650977],[21.724023,68.608545],[21.850195,68.574121],[21.997461,68.520605],[22.195117,68.477979],[22.362109,68.464062],[22.782422,68.391016],[22.854102,68.367334],[22.975391,68.316455],[23.097852,68.257568],[23.18252,68.136621],[23.318555,68.130322],[23.355469,68.088672],[23.474219,68.017334],[23.638867,67.954395],[23.63291,67.933203],[23.501855,67.875195],[23.487793,67.796582],[23.500195,67.696191],[23.541309,67.614307],[23.537012,67.590381],[23.504492,67.562158],[23.46543,67.517871],[23.451465,67.479199],[23.454883,67.460254],[23.468066,67.449951],[23.537109,67.44917],[23.66084,67.440039],[23.733594,67.4229],[23.774902,67.328613],[23.760938,67.310498],[23.656641,67.267822],[23.626074,67.233936],[23.623047,67.184131],[23.641504,67.129395],[23.677344,67.068115],[23.758984,67.002588],[23.869336,66.934033],[23.941797,66.877832],[23.976074,66.838232],[23.988574,66.810547],[23.938867,66.775732],[23.894141,66.706885],[23.88584,66.628027],[23.865527,66.576611],[23.768359,66.505859],[23.701172,66.480762],[23.682031,66.443408],[23.673828,66.380713],[23.693555,66.304297],[23.700293,66.252637],[23.720996,66.21543],[23.751465,66.191162],[23.907324,66.148242],[23.994629,66.060352],[24.049023,65.989844],[24.155469,65.805273],[23.890527,65.782227],[23.691406,65.828516],[23.59209,65.805322],[23.418359,65.804346],[23.221094,65.786133],[23.15459,65.749902],[23.102344,65.735352],[22.919336,65.786475],[22.746582,65.870947],[22.620313,65.806543],[22.538574,65.794336],[22.465137,65.852637],[22.400977,65.862109],[22.366309,65.842676],[22.335938,65.791162],[22.287598,65.750635],[22.275,65.725],[22.266602,65.621533],[22.254004,65.597559],[22.08623,65.610938],[22.096289,65.583789],[22.132812,65.570117],[22.147559,65.552881],[22.086719,65.530225],[21.920117,65.532373],[21.903125,65.50835],[21.95,65.470361],[21.913477,65.437109],[21.87959,65.424023],[21.680664,65.403369],[21.565527,65.408105],[21.532617,65.386572],[21.523438,65.358594],[21.545215,65.331152],[21.595996,65.316553],[21.612695,65.299121],[21.60918,65.261377],[21.566895,65.254541],[21.446875,65.32085],[21.410352,65.317432],[21.437793,65.282959],[21.506348,65.245361],[21.545996,65.206982],[21.580664,65.160791],[21.573926,65.125781],[21.424902,65.012695],[21.29375,64.94126],[21.195898,64.876904],[21.138184,64.808691],[21.20498,64.774316],[21.279297,64.724707],[21.331543,64.629346],[21.393848,64.544336],[21.519629,64.463086],[21.494336,64.416113],[21.465039,64.37959],[21.255762,64.29917],[21.018457,64.177979],[20.762695,63.867822],[20.677637,63.82627],[20.453711,63.77373],[20.371387,63.7229],[20.204688,63.662451],[19.913672,63.610547],[19.781641,63.538184],[19.72207,63.46333],[19.655762,63.458008],[19.590039,63.487256],[19.502344,63.509033],[19.490918,63.460205],[19.494629,63.424365],[19.354297,63.47749],[19.288086,63.42876],[19.236328,63.347363],[19.034375,63.237744],[18.816699,63.257471],[18.792285,63.238135],[18.850195,63.224121],[18.858984,63.206592],[18.819434,63.197266],[18.75957,63.198242],[18.667188,63.176563],[18.606445,63.178271],[18.577637,63.126416],[18.530664,63.063525],[18.407715,63.0375],[18.344238,63.032129],[18.312891,62.996387],[18.502051,62.988867],[18.486914,62.958594],[18.482617,62.92832],[18.463086,62.89585],[18.248047,62.849072],[18.214941,62.812207],[18.17002,62.789355],[18.074414,62.790674],[18.07793,62.811963],[18.093555,62.836035],[17.951074,62.833887],[17.906641,62.886768],[17.87959,62.873193],[17.895605,62.830518],[17.93291,62.786133],[17.974414,62.721045],[17.940723,62.679883],[17.903027,62.659473],[17.930469,62.640625],[18.006543,62.62627],[18.037305,62.600537],[17.94707,62.578467],[17.834473,62.502734],[17.717773,62.500879],[17.646387,62.450879],[17.570605,62.451025],[17.508984,62.48252],[17.410254,62.508398],[17.378418,62.462793],[17.37334,62.426514],[17.429004,62.334717],[17.535254,62.263672],[17.633691,62.233008],[17.562891,62.212305],[17.510156,62.166309],[17.446582,62.022656],[17.412012,61.966113],[17.374512,61.866309],[17.398242,61.78208],[17.417285,61.740674],[17.46543,61.684473],[17.33457,61.691699],[17.196387,61.724561],[17.215625,61.656348],[17.130762,61.575732],[17.146582,61.504639],[17.164258,61.458301],[17.137988,61.381689],[17.17793,61.357617],[17.199609,61.311963],[17.163867,61.278271],[17.179785,61.249268],[17.185742,61.146533],[17.212891,60.98584],[17.20293,60.951855],[17.278906,60.812158],[17.26123,60.763184],[17.250977,60.700781],[17.359863,60.64082],[17.457031,60.641797],[17.555469,60.642725],[17.593066,60.627686],[17.630762,60.585254],[17.661133,60.535156],[17.742188,60.539307],[17.871582,60.580078],[17.955762,60.589795],[18.011328,60.511426],[18.1625,60.40791],[18.250488,60.361523],[18.4,60.337109],[18.55752,60.253564],[18.535449,60.152881],[18.601172,60.119238],[18.787012,60.079492],[18.852734,60.025879],[18.884277,59.980176],[18.933203,59.942285],[18.99043,59.827783],[18.970508,59.757227],[18.895605,59.732959],[18.71875,59.657373],[18.639941,59.600928],[18.578125,59.565771],[18.402441,59.490381],[18.338086,59.476855],[18.276465,59.437646],[18.216895,59.420508],[18.163574,59.430371],[17.964258,59.359375],[17.979785,59.329053],[18.132617,59.316211],[18.210547,59.331445],[18.270508,59.367139],[18.336035,59.375342],[18.395801,59.368604],[18.45918,59.396729],[18.508887,59.407959],[18.560254,59.394482],[18.617578,59.327051],[18.498633,59.291943],[18.414258,59.290332],[18.373047,59.179736],[18.321973,59.132227],[18.285352,59.109375],[18.098145,59.062305],[17.974609,59.002637],[17.829004,58.95459],[17.76543,58.965039],[17.669629,58.916211],[17.456738,58.858398],[17.347656,58.780518],[17.102832,58.71084],[16.978125,58.65415],[16.639355,58.651172],[16.31582,58.663623],[16.214258,58.63667],[16.318066,58.62832],[16.39082,58.601855],[16.478027,58.612891],[16.683008,58.599658],[16.788477,58.585254],[16.923828,58.492578],[16.824316,58.459619],[16.651953,58.434326],[16.716602,58.302881],[16.769922,58.214258],[16.700098,58.160791],[16.694922,57.917529],[16.596973,57.912891],[16.555371,57.812256],[16.58623,57.760937],[16.583789,57.641748],[16.604199,57.568311],[16.652246,57.500684],[16.630859,57.430176],[16.475977,57.265137],[16.479492,57.187695],[16.507324,57.141699],[16.52793,57.068164],[16.45752,56.926807],[16.407813,56.808691],[16.34873,56.709277],[16.216504,56.58999],[16.150684,56.50083],[15.99668,56.222607],[15.920313,56.167383],[15.82666,56.124951],[15.722266,56.164209],[15.626563,56.185596],[15.509668,56.183008],[15.326563,56.15083],[15.051172,56.172217],[14.782031,56.161914],[14.713965,56.134131],[14.754785,56.033154],[14.655566,56.019922],[14.558594,56.048633],[14.473242,56.014355],[14.401953,55.976758],[14.261914,55.887549],[14.215039,55.832617],[14.20293,55.72915],[14.276465,55.636377],[14.341699,55.527734],[14.17373,55.396631],[14.07998,55.392187],[13.806348,55.428564],[13.321387,55.346387],[12.88584,55.411377],[12.940625,55.481592],[12.93877,55.533203],[12.963379,55.612598],[12.978027,55.693799],[12.973926,55.748145],[12.941992,55.806055],[12.83457,55.881836],[12.592578,56.137598],[12.520996,56.245557],[12.471191,56.290527],[12.507031,56.292969],[12.706348,56.23501],[12.752832,56.242139],[12.80166,56.263916],[12.742188,56.346875],[12.691113,56.384424],[12.656445,56.440576],[12.773145,56.455762],[12.857422,56.452393],[12.919531,56.515576],[12.883691,56.617725],[12.793164,56.64917],[12.717578,56.662842],[12.572656,56.823291],[12.421484,56.906396],[12.151855,57.226953],[12.053223,57.446973],[11.961523,57.426074],[11.916992,57.521924],[11.885059,57.612695],[11.878711,57.679443],[11.734961,57.717676],[11.729102,57.764453],[11.703223,57.973193],[11.549023,58.001221],[11.449316,58.118359],[11.431543,58.33999],[11.32998,58.380322],[11.248242,58.369141],[11.252051,58.424072],[11.271582,58.475635],[11.223828,58.679932],[11.20791,58.866406],[11.169141,58.922705],[11.147168,58.988623],[11.166895,59.045557],[11.195801,59.078271],[11.295313,59.086865],[11.388281,59.036523]]],[[[19.156348,57.922607],[19.138379,57.860254],[19.086523,57.86499],[19.039258,57.911035],[19.134863,57.981348],[19.281152,57.977539],[19.331445,57.962891],[19.156348,57.922607]]],[[[18.416211,59.029102],[18.371875,59.01958],[18.349902,59.022607],[18.377246,59.069043],[18.397559,59.089111],[18.464941,59.107861],[18.485547,59.10459],[18.416211,59.029102]]],[[[18.59541,59.470361],[18.570312,59.437256],[18.545117,59.477832],[18.555176,59.485791],[18.572363,59.52583],[18.620898,59.547803],[18.698438,59.534619],[18.697949,59.524609],[18.623828,59.492188],[18.59541,59.470361]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"eSwatini","SOV_A3":"SWZ","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"eSwatini","ADM0_A3":"SWZ","GEOU_DIF":0,"GEOUNIT":"eSwatini","GU_A3":"SWZ","SU_DIF":0,"SUBUNIT":"eSwatini","SU_A3":"SWZ","BRK_DIFF":0,"NAME":"eSwatini","NAME_LONG":"Kingdom of eSwatini","BRK_A3":"SWZ","BRK_NAME":"eSwatini","BRK_GROUP":null,"ABBREV":"eSw.","POSTAL":"ES","FORMAL_EN":"Kingdom of eSwatini","FORMAL_FR":null,"NAME_CIAWF":"eSwatini","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"eSwatini","NAME_ALT":"Swaziland","MAPCOLOR7":3,"MAPCOLOR8":6,"MAPCOLOR9":2,"MAPCOLOR13":5,"POP_EST":1148130,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":4471,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"WZ","ISO_A2":"SZ","ISO_A2_EH":"SZ","ISO_A3":"SWZ","ISO_A3_EH":"SWZ","ISO_N3":"748","ISO_N3_EH":"748","UN_A3":"748","WB_A2":"SZ","WB_A3":"SWZ","WOE_ID":23424993,"WOE_ID_EH":23424993,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SWZ","ADM0_DIFF":null,"ADM0_TLC":"SWZ","ADM0_A3_US":"SWZ","ADM0_A3_FR":"SWZ","ADM0_A3_RU":"SWZ","ADM0_A3_ES":"SWZ","ADM0_A3_CN":"SWZ","ADM0_A3_TW":"SWZ","ADM0_A3_IN":"SWZ","ADM0_A3_NP":"SWZ","ADM0_A3_PK":"SWZ","ADM0_A3_DE":"SWZ","ADM0_A3_GB":"SWZ","ADM0_A3_BR":"SWZ","ADM0_A3_IL":"SWZ","ADM0_A3_PS":"SWZ","ADM0_A3_SA":"SWZ","ADM0_A3_EG":"SWZ","ADM0_A3_MA":"SWZ","ADM0_A3_PT":"SWZ","ADM0_A3_AR":"SWZ","ADM0_A3_JP":"SWZ","ADM0_A3_KO":"SWZ","ADM0_A3_VN":"SWZ","ADM0_A3_TR":"SWZ","ADM0_A3_ID":"SWZ","ADM0_A3_PL":"SWZ","ADM0_A3_GR":"SWZ","ADM0_A3_IT":"SWZ","ADM0_A3_NL":"SWZ","ADM0_A3_SE":"SWZ","ADM0_A3_BD":"SWZ","ADM0_A3_UA":"SWZ","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Southern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":8,"LONG_LEN":19,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":31.467264,"LABEL_Y":-26.533676,"NE_ID":1159321289,"WIKIDATAID":"Q1050","NAME_AR":"إسواتيني","NAME_BN":"ইসোয়াতিনি","NAME_DE":"Eswatini","NAME_EN":"Eswatini","NAME_ES":"Suazilandia","NAME_FA":"اسواتینی","NAME_FR":"Eswatini","NAME_EL":"Εσουατίνι","NAME_HE":"אסוואטיני","NAME_HI":"एस्वातीनी","NAME_HU":"Szváziföld","NAME_ID":"Eswatini","NAME_IT":"eSwatini","NAME_JA":"エスワティニ","NAME_KO":"에스와티니","NAME_NL":"Swaziland","NAME_PL":"Eswatini","NAME_PT":"Essuatíni","NAME_RU":"Эсватини","NAME_SV":"Swaziland","NAME_TR":"Esvatini","NAME_UK":"Есватіні","NAME_UR":"اسواتینی","NAME_VI":"Eswatini","NAME_ZH":"斯威士兰","NAME_ZHT":"史瓦帝尼","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[30.7875,-27.309961,32.112891,-25.742969],"geometry":{"type":"Polygon","coordinates":[[[31.948242,-25.957617],[31.968457,-25.972266],[32.060547,-26.018359],[32.068848,-26.110156],[32.059961,-26.215039],[32.041406,-26.28125],[32.04834,-26.347168],[32.07793,-26.449805],[32.105957,-26.52002],[32.112891,-26.839453],[32.081641,-26.824805],[32.024805,-26.811133],[31.994727,-26.81748],[31.967188,-26.960645],[31.946094,-27.173633],[31.958398,-27.305859],[31.742578,-27.309961],[31.469531,-27.295508],[31.274023,-27.238379],[31.063379,-27.112305],[30.938086,-26.91582],[30.883301,-26.792383],[30.806738,-26.785254],[30.794336,-26.764258],[30.7875,-26.613672],[30.789062,-26.455469],[30.80332,-26.413477],[30.945215,-26.21875],[31.033301,-26.097754],[31.088086,-25.980664],[31.207324,-25.843359],[31.335156,-25.755566],[31.382617,-25.742969],[31.415137,-25.746582],[31.64043,-25.867285],[31.871484,-25.981641],[31.92168,-25.96875],[31.948242,-25.957617]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Suriname","SOV_A3":"SUR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Suriname","ADM0_A3":"SUR","GEOU_DIF":0,"GEOUNIT":"Suriname","GU_A3":"SUR","SU_DIF":0,"SUBUNIT":"Suriname","SU_A3":"SUR","BRK_DIFF":0,"NAME":"Suriname","NAME_LONG":"Suriname","BRK_A3":"SUR","BRK_NAME":"Suriname","BRK_GROUP":null,"ABBREV":"Sur.","POSTAL":"SR","FORMAL_EN":"Republic of Suriname","FORMAL_FR":null,"NAME_CIAWF":"Suriname","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Suriname","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":7,"MAPCOLOR13":6,"POP_EST":581363,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":3697,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"NS","ISO_A2":"SR","ISO_A2_EH":"SR","ISO_A3":"SUR","ISO_A3_EH":"SUR","ISO_N3":"740","ISO_N3_EH":"740","UN_A3":"740","WB_A2":"SR","WB_A3":"SUR","WOE_ID":23424913,"WOE_ID_EH":23424913,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SUR","ADM0_DIFF":null,"ADM0_TLC":"SUR","ADM0_A3_US":"SUR","ADM0_A3_FR":"SUR","ADM0_A3_RU":"SUR","ADM0_A3_ES":"SUR","ADM0_A3_CN":"SUR","ADM0_A3_TW":"SUR","ADM0_A3_IN":"SUR","ADM0_A3_NP":"SUR","ADM0_A3_PK":"SUR","ADM0_A3_DE":"SUR","ADM0_A3_GB":"SUR","ADM0_A3_BR":"SUR","ADM0_A3_IL":"SUR","ADM0_A3_PS":"SUR","ADM0_A3_SA":"SUR","ADM0_A3_EG":"SUR","ADM0_A3_MA":"SUR","ADM0_A3_PT":"SUR","ADM0_A3_AR":"SUR","ADM0_A3_JP":"SUR","ADM0_A3_KO":"SUR","ADM0_A3_VN":"SUR","ADM0_A3_TR":"SUR","ADM0_A3_ID":"SUR","ADM0_A3_PL":"SUR","ADM0_A3_GR":"SUR","ADM0_A3_IT":"SUR","ADM0_A3_NL":"SUR","ADM0_A3_SE":"SUR","ADM0_A3_BD":"SUR","ADM0_A3_UA":"SUR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-55.91094,"LABEL_Y":4.143987,"NE_ID":1159321281,"WIKIDATAID":"Q730","NAME_AR":"سورينام","NAME_BN":"সুরিনাম","NAME_DE":"Suriname","NAME_EN":"Suriname","NAME_ES":"Surinam","NAME_FA":"سورینام","NAME_FR":"Suriname","NAME_EL":"Σουρινάμ","NAME_HE":"סורינאם","NAME_HI":"सूरीनाम","NAME_HU":"Suriname","NAME_ID":"Suriname","NAME_IT":"Suriname","NAME_JA":"スリナム","NAME_KO":"수리남","NAME_NL":"Suriname","NAME_PL":"Surinam","NAME_PT":"Suriname","NAME_RU":"Суринам","NAME_SV":"Surinam","NAME_TR":"Surinam","NAME_UK":"Суринам","NAME_UR":"سرینام","NAME_VI":"Suriname","NAME_ZH":"苏里南","NAME_ZHT":"蘇利南","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-58.054492,1.842236,-53.990479,5.993457],"geometry":{"type":"Polygon","coordinates":[[[-54.155957,5.358984],[-54.240186,5.288232],[-54.331641,5.187402],[-54.452197,5.013477],[-54.446875,4.958789],[-54.47334,4.914697],[-54.479687,4.836523],[-54.471143,4.749316],[-54.440234,4.691992],[-54.426074,4.583008],[-54.449609,4.48501],[-54.440674,4.428027],[-54.416016,4.337646],[-54.39624,4.241406],[-54.398389,4.20249],[-54.369141,4.170947],[-54.342139,4.140039],[-54.350732,4.054102],[-54.255518,3.901074],[-54.197461,3.834424],[-54.112793,3.769434],[-54.081982,3.705957],[-54.034229,3.629395],[-54.005908,3.62041],[-53.990479,3.589551],[-54.005957,3.530518],[-54.00957,3.448535],[-54.063184,3.35332],[-54.188037,3.17876],[-54.203125,3.138184],[-54.170703,2.993604],[-54.188086,2.874854],[-54.195508,2.817871],[-54.256738,2.713721],[-54.402002,2.461523],[-54.485547,2.416113],[-54.535937,2.343311],[-54.568408,2.342578],[-54.604736,2.335791],[-54.61626,2.326758],[-54.661865,2.327539],[-54.697412,2.359814],[-54.70293,2.397949],[-54.722217,2.44165],[-54.766846,2.454736],[-54.85166,2.439551],[-54.876074,2.450391],[-54.926562,2.497363],[-54.968408,2.54834],[-54.978662,2.597656],[-55.005811,2.592969],[-55.070312,2.54834],[-55.114111,2.539209],[-55.148828,2.550781],[-55.187695,2.54751],[-55.286035,2.499658],[-55.343994,2.48877],[-55.385352,2.440625],[-55.658936,2.41875],[-55.730566,2.406152],[-55.89375,2.489502],[-55.935937,2.516602],[-55.957471,2.520459],[-55.975586,2.515967],[-55.993506,2.49751],[-56.020361,2.392773],[-56.045117,2.364404],[-56.087793,2.341309],[-56.129395,2.299512],[-56.137695,2.259033],[-56.073633,2.236768],[-56.020068,2.158154],[-55.961963,2.095117],[-55.915332,2.039551],[-55.921631,1.97666],[-55.929639,1.8875],[-55.96333,1.85708],[-56.019922,1.842236],[-56.227148,1.885352],[-56.38584,1.923877],[-56.452832,1.932324],[-56.482812,1.942139],[-56.522363,1.974805],[-56.562695,2.005078],[-56.627197,2.016016],[-56.704346,2.036475],[-56.761133,2.114893],[-56.819824,2.22666],[-56.840527,2.277148],[-56.886426,2.325977],[-56.931494,2.395361],[-56.945215,2.456836],[-56.979297,2.513232],[-56.997119,2.532178],[-57.023486,2.608984],[-57.028955,2.6375],[-57.041943,2.641113],[-57.060449,2.665674],[-57.096875,2.747852],[-57.105127,2.768262],[-57.121143,2.775537],[-57.163623,2.833252],[-57.197363,2.853271],[-57.209814,2.882812],[-57.206934,2.963379],[-57.225,3.003076],[-57.230566,3.078564],[-57.231641,3.108887],[-57.248975,3.142285],[-57.27793,3.164307],[-57.28291,3.218848],[-57.289941,3.353613],[-57.303662,3.3771],[-57.425586,3.375439],[-57.437891,3.362256],[-57.490576,3.354297],[-57.549609,3.352832],[-57.602734,3.370947],[-57.646729,3.394531],[-57.656104,3.42373],[-57.649463,3.517383],[-57.720361,3.588281],[-57.832666,3.675977],[-57.866553,3.787256],[-57.907715,3.856689],[-58.032227,4.001953],[-58.054297,4.10166],[-58.054492,4.171924],[-58.010742,4.236475],[-57.949756,4.349951],[-57.924707,4.453125],[-57.90625,4.506787],[-57.874707,4.5771],[-57.845996,4.668164],[-57.867871,4.724316],[-57.904883,4.779297],[-57.917041,4.82041],[-57.881104,4.880615],[-57.844922,4.923047],[-57.804102,4.929053],[-57.752002,4.954492],[-57.711084,4.991064],[-57.648828,5.000684],[-57.570898,5.004492],[-57.412158,5.00459],[-57.331006,5.020166],[-57.305762,5.049561],[-57.30957,5.105859],[-57.269287,5.157031],[-57.226855,5.178516],[-57.209814,5.19541],[-57.207324,5.214209],[-57.218457,5.231543],[-57.235303,5.242871],[-57.279639,5.246777],[-57.318555,5.335352],[-57.291895,5.373975],[-57.25752,5.445166],[-57.2479,5.485254],[-57.194775,5.548437],[-57.182129,5.528906],[-57.14082,5.643799],[-57.136035,5.737207],[-57.10459,5.829395],[-57.056641,5.938672],[-56.969824,5.992871],[-56.466016,5.937744],[-56.235596,5.885352],[-55.939551,5.795459],[-55.897607,5.699316],[-55.895508,5.795459],[-55.909912,5.892627],[-55.828174,5.96167],[-55.64834,5.985889],[-55.379297,5.952637],[-55.148291,5.993457],[-54.833691,5.98833],[-54.356152,5.909863],[-54.142334,5.856348],[-54.054199,5.80791],[-54.037402,5.720508],[-54.045947,5.608887],[-54.080469,5.502246],[-54.155957,5.358984]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"South Sudan","SOV_A3":"SDS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"South Sudan","ADM0_A3":"SDS","GEOU_DIF":0,"GEOUNIT":"South Sudan","GU_A3":"SDS","SU_DIF":0,"SUBUNIT":"South Sudan","SU_A3":"SDS","BRK_DIFF":0,"NAME":"S. Sudan","NAME_LONG":"South Sudan","BRK_A3":"SDS","BRK_NAME":"S. Sudan","BRK_GROUP":null,"ABBREV":"S. Sud.","POSTAL":"SS","FORMAL_EN":"Republic of South Sudan","FORMAL_FR":null,"NAME_CIAWF":"South Sudan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"South Sudan","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":3,"MAPCOLOR9":3,"MAPCOLOR13":5,"POP_EST":11062113,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":11998,"GDP_YEAR":2015,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"-99","ISO_A2":"SS","ISO_A2_EH":"SS","ISO_A3":"SSD","ISO_A3_EH":"SSD","ISO_N3":"728","ISO_N3_EH":"728","UN_A3":"728","WB_A2":"SS","WB_A3":"SSD","WOE_ID":-99,"WOE_ID_EH":-99,"WOE_NOTE":"Includes states of 20069899, 20069897, 20069898, 20069901, 20069909, and 20069908 but maybe more?","ADM0_ISO":"SSD","ADM0_DIFF":"1","ADM0_TLC":"SDS","ADM0_A3_US":"SDS","ADM0_A3_FR":"SDS","ADM0_A3_RU":"SDS","ADM0_A3_ES":"SDS","ADM0_A3_CN":"SDS","ADM0_A3_TW":"SDS","ADM0_A3_IN":"SDS","ADM0_A3_NP":"SDS","ADM0_A3_PK":"SDS","ADM0_A3_DE":"SDS","ADM0_A3_GB":"SDS","ADM0_A3_BR":"SDS","ADM0_A3_IL":"SDS","ADM0_A3_PS":"SDS","ADM0_A3_SA":"SDS","ADM0_A3_EG":"SDS","ADM0_A3_MA":"SDS","ADM0_A3_PT":"SDS","ADM0_A3_AR":"SDS","ADM0_A3_JP":"SDS","ADM0_A3_KO":"SDS","ADM0_A3_VN":"SDS","ADM0_A3_TR":"SDS","ADM0_A3_ID":"SDS","ADM0_A3_PL":"SDS","ADM0_A3_GR":"SDS","ADM0_A3_IT":"SDS","ADM0_A3_NL":"SDS","ADM0_A3_SE":"SDS","ADM0_A3_BD":"SDS","ADM0_A3_UA":"SDS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":8,"LONG_LEN":11,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":30.390151,"LABEL_Y":7.230477,"NE_ID":1159321235,"WIKIDATAID":"Q958","NAME_AR":"جنوب السودان","NAME_BN":"দক্ষিণ সুদান","NAME_DE":"Südsudan","NAME_EN":"South Sudan","NAME_ES":"Sudán del Sur","NAME_FA":"سودان جنوبی","NAME_FR":"Soudan du Sud","NAME_EL":"Νότιο Σουδάν","NAME_HE":"דרום סודאן","NAME_HI":"दक्षिण सूडान","NAME_HU":"Dél-Szudán","NAME_ID":"Sudan Selatan","NAME_IT":"Sudan del Sud","NAME_JA":"南スーダン","NAME_KO":"남수단","NAME_NL":"Zuid-Soedan","NAME_PL":"Sudan Południowy","NAME_PT":"Sudão do Sul","NAME_RU":"Южный Судан","NAME_SV":"Sydsudan","NAME_TR":"Güney Sudan","NAME_UK":"Південний Судан","NAME_UR":"جنوبی سوڈان","NAME_VI":"Nam Sudan","NAME_ZH":"南苏丹","NAME_ZHT":"南蘇丹","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[24.147363,3.490723,35.268359,12.223096],"geometry":{"type":"Polygon","coordinates":[[[33.976074,4.220215],[33.741602,3.985254],[33.568457,3.811719],[33.539551,3.787109],[33.489355,3.755078],[33.324316,3.754346],[33.154102,3.774707],[32.997266,3.880176],[32.838086,3.798486],[32.737109,3.772705],[32.676953,3.763184],[32.534766,3.749951],[32.335742,3.706201],[32.245508,3.651318],[32.19668,3.607812],[32.15625,3.528027],[32.135938,3.519727],[32.099414,3.529199],[32.048242,3.561182],[31.941797,3.607568],[31.888281,3.709082],[31.838672,3.770459],[31.798047,3.802637],[31.628906,3.701465],[31.547168,3.677588],[31.47998,3.680469],[31.357422,3.737598],[31.221973,3.785937],[31.152344,3.785596],[31.048047,3.725],[30.929395,3.634082],[30.868164,3.544141],[30.838574,3.490723],[30.816895,3.53335],[30.796973,3.573145],[30.757227,3.624219],[30.699902,3.644092],[30.647656,3.634131],[30.586719,3.624219],[30.559375,3.652783],[30.553516,3.722949],[30.536914,3.787207],[30.508301,3.835693],[30.420703,3.883887],[30.194922,3.981934],[30.021387,4.177637],[29.933984,4.268506],[29.870215,4.327148],[29.779883,4.480957],[29.676855,4.586914],[29.552051,4.636035],[29.469629,4.611816],[29.384863,4.498389],[29.224902,4.391895],[29.151465,4.388184],[29.057422,4.445947],[28.939355,4.487061],[28.727051,4.50498],[28.639551,4.454492],[28.524805,4.372852],[28.427539,4.32417],[28.367188,4.318652],[28.311035,4.338037],[28.247266,4.348535],[28.19209,4.350244],[28.078613,4.424805],[28.019824,4.479395],[27.980664,4.53208],[27.916602,4.56792],[27.841602,4.597754],[27.788086,4.644678],[27.761426,4.703223],[27.719238,4.77832],[27.66416,4.845996],[27.491016,4.967578],[27.439258,5.039209],[27.40332,5.10918],[27.332422,5.186328],[27.256738,5.289648],[27.23252,5.440771],[27.229102,5.5625],[27.213379,5.618799],[27.18125,5.675146],[27.143945,5.722949],[27.083398,5.776855],[26.942285,5.854932],[26.796484,5.945508],[26.726367,5.998242],[26.593652,6.017529],[26.514258,6.069238],[26.447461,6.183008],[26.420508,6.27417],[26.35332,6.344922],[26.324609,6.39624],[26.308594,6.455322],[26.361816,6.635303],[26.28457,6.699023],[26.169336,6.781738],[26.086914,6.872119],[26.036523,6.955225],[25.888965,7.064941],[25.566602,7.228711],[25.380664,7.333398],[25.278906,7.42749],[25.190137,7.519336],[25.181348,7.557227],[25.238672,7.648975],[25.247363,7.724561],[25.200391,7.80791],[25.007227,7.964844],[24.85332,8.137549],[24.736719,8.191553],[24.456055,8.239453],[24.375488,8.258447],[24.291406,8.291406],[24.208398,8.369141],[24.17998,8.461133],[24.220898,8.608252],[24.194824,8.653369],[24.147363,8.665625],[24.160449,8.696289],[24.213574,8.767822],[24.300195,8.814258],[24.531934,8.886914],[24.544824,8.914844],[24.549414,9.006787],[24.568262,9.051709],[24.648047,9.179102],[24.659375,9.229932],[24.662891,9.338135],[24.673633,9.389307],[24.69668,9.425684],[24.760352,9.488916],[24.782617,9.527344],[24.792188,9.610303],[24.785254,9.774658],[24.817676,9.8396],[24.963867,9.988867],[25.00293,10.055273],[25.016211,10.115234],[25.014844,10.175879],[25.023633,10.235791],[25.066992,10.293799],[25.104004,10.311816],[25.211719,10.329932],[25.285156,10.318506],[25.798047,10.420508],[25.858203,10.406494],[25.885254,10.346094],[25.882812,10.249609],[25.891504,10.202734],[25.919141,10.169336],[26.000586,10.123437],[26.057031,10.046777],[26.087012,10.018457],[26.169531,9.965918],[26.551367,9.52583],[26.658691,9.484131],[26.763184,9.499219],[26.970508,9.590625],[27.074219,9.613818],[27.799805,9.587891],[27.880859,9.601611],[27.88584,9.599658],[27.996289,9.378809],[28.048926,9.328613],[28.844531,9.326074],[28.829395,9.388818],[28.839453,9.459082],[28.932324,9.549463],[28.97959,9.594189],[28.97959,9.593994],[28.999609,9.610156],[29.122363,9.674658],[29.242383,9.718066],[29.473145,9.768604],[29.557422,9.848291],[29.603906,9.921387],[29.605469,10.065088],[29.635938,10.088623],[29.691016,10.121924],[29.95791,10.250244],[30.003027,10.277393],[30.474609,9.978955],[30.739355,9.742676],[30.755371,9.731201],[30.769141,9.726807],[30.783105,9.734961],[30.794922,9.74585],[30.81416,9.753125],[30.827051,9.756299],[30.940332,9.759375],[31.154492,9.770947],[31.224902,9.799268],[31.654883,10.221143],[31.764258,10.355713],[31.791992,10.383154],[31.854297,10.479053],[31.919922,10.643848],[31.933008,10.6625],[32.404102,11.057764],[32.420801,11.089111],[32.425391,11.113965],[32.354199,11.246924],[32.338867,11.314502],[32.335742,11.418555],[32.349902,11.58042],[32.344922,11.682715],[32.343066,11.694287],[32.338477,11.710107],[32.335352,11.716016],[32.072266,12.006738],[32.736719,12.009668],[32.738281,12.03374],[32.737695,12.046436],[32.735645,12.058057],[32.723047,12.09292],[32.71582,12.139258],[32.715332,12.152197],[32.716309,12.164844],[32.720117,12.188818],[32.720508,12.201807],[32.719824,12.208008],[32.718555,12.21377],[32.718945,12.218848],[32.721875,12.223096],[33.199316,12.217285],[33.193066,12.13501],[33.135059,11.941602],[33.136133,11.825586],[33.122461,11.693164],[33.119141,11.682422],[33.106055,11.653857],[33.094629,11.6375],[33.081543,11.621729],[33.077832,11.615771],[33.07334,11.606104],[33.073047,11.591504],[33.172168,10.850146],[33.168457,10.831445],[33.164746,10.819189],[33.138281,10.772949],[33.131445,10.757715],[33.130078,10.745947],[33.14082,10.737891],[33.360742,10.657812],[33.371387,10.652734],[33.379883,10.646191],[33.459082,10.55083],[33.892188,10.198975],[33.907031,10.181445],[33.951855,10.070947],[33.956836,10.054199],[33.958398,10.027734],[33.957324,10.007178],[33.946191,9.940918],[33.949902,9.911133],[33.957324,9.891455],[33.963281,9.868701],[33.963281,9.861768],[33.9625,9.855811],[33.95918,9.845264],[33.894922,9.717627],[33.874023,9.626758],[33.867773,9.550342],[33.871484,9.506152],[33.878809,9.477734],[33.882129,9.471191],[33.884863,9.466406],[33.887891,9.463525],[33.890918,9.462207],[34.076758,9.461523],[34.078125,9.461523],[34.077148,9.420996],[34.08457,9.218506],[34.091016,9.04126],[34.101562,8.751855],[34.101758,8.676367],[34.094531,8.582227],[34.072754,8.545264],[34.019727,8.49209],[33.95332,8.443506],[33.785059,8.431104],[33.644824,8.432568],[33.545313,8.443408],[33.409375,8.447754],[33.281055,8.437256],[33.234277,8.396387],[33.165234,8.251074],[33.065234,8.040479],[33.012598,7.951514],[32.998926,7.899512],[33.014648,7.868555],[33.080762,7.82373],[33.225977,7.760645],[33.392285,7.72373],[33.516309,7.707764],[33.600977,7.69043],[33.666113,7.670996],[33.902441,7.509521],[33.97793,7.43457],[34.02041,7.367969],[34.030176,7.296973],[34.064258,7.225732],[34.200391,7.08457],[34.279297,7.002832],[34.484375,6.898389],[34.562793,6.779834],[34.63877,6.722168],[34.710645,6.660303],[34.749219,6.567871],[34.838086,6.300146],[34.897852,6.159814],[34.958984,6.045068],[34.983594,5.858301],[35.031934,5.774902],[35.081934,5.673145],[35.164453,5.581201],[35.252441,5.511035],[35.268359,5.492285],[35.084473,5.311865],[34.87832,5.10957],[34.639844,4.875488],[34.380176,4.620654],[34.176855,4.419092],[33.976074,4.220215]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Sudan","SOV_A3":"SDN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Sudan","ADM0_A3":"SDN","GEOU_DIF":0,"GEOUNIT":"Sudan","GU_A3":"SDN","SU_DIF":0,"SUBUNIT":"Sudan","SU_A3":"SDN","BRK_DIFF":0,"NAME":"Sudan","NAME_LONG":"Sudan","BRK_A3":"SDN","BRK_NAME":"Sudan","BRK_GROUP":null,"ABBREV":"Sudan","POSTAL":"SD","FORMAL_EN":"Republic of the Sudan","FORMAL_FR":null,"NAME_CIAWF":"Sudan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Sudan","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":6,"MAPCOLOR9":4,"MAPCOLOR13":1,"POP_EST":42813238,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":30513,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"SU","ISO_A2":"SD","ISO_A2_EH":"SD","ISO_A3":"SDN","ISO_A3_EH":"SDN","ISO_N3":"729","ISO_N3_EH":"729","UN_A3":"729","WB_A2":"SD","WB_A3":"SDN","WOE_ID":-90,"WOE_ID_EH":23424952,"WOE_NOTE":"Almost all FLickr photos are in the north.","ADM0_ISO":"SDZ","ADM0_DIFF":null,"ADM0_TLC":"SDZ","ADM0_A3_US":"SDN","ADM0_A3_FR":"SDN","ADM0_A3_RU":"SDN","ADM0_A3_ES":"SDN","ADM0_A3_CN":"SDN","ADM0_A3_TW":"SDN","ADM0_A3_IN":"SDN","ADM0_A3_NP":"SDN","ADM0_A3_PK":"SDN","ADM0_A3_DE":"SDN","ADM0_A3_GB":"SDN","ADM0_A3_BR":"SDN","ADM0_A3_IL":"SDN","ADM0_A3_PS":"SDN","ADM0_A3_SA":"SDN","ADM0_A3_EG":"SDN","ADM0_A3_MA":"SDN","ADM0_A3_PT":"SDN","ADM0_A3_AR":"SDN","ADM0_A3_JP":"SDN","ADM0_A3_KO":"SDN","ADM0_A3_VN":"SDN","ADM0_A3_TR":"SDN","ADM0_A3_ID":"SDN","ADM0_A3_PL":"SDN","ADM0_A3_GR":"SDN","ADM0_A3_IT":"SDN","ADM0_A3_NL":"SDN","ADM0_A3_SE":"SDN","ADM0_A3_BD":"SDN","ADM0_A3_UA":"SDN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Northern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":8,"LABEL_X":29.260657,"LABEL_Y":16.330746,"NE_ID":1159321229,"WIKIDATAID":"Q1049","NAME_AR":"السودان","NAME_BN":"সুদান","NAME_DE":"Sudan","NAME_EN":"Sudan","NAME_ES":"Sudán","NAME_FA":"سودان","NAME_FR":"Soudan","NAME_EL":"Σουδάν","NAME_HE":"סודאן","NAME_HI":"सूडान","NAME_HU":"Szudán","NAME_ID":"Sudan","NAME_IT":"Sudan","NAME_JA":"スーダン","NAME_KO":"수단","NAME_NL":"Soedan","NAME_PL":"Sudan","NAME_PT":"Sudão","NAME_RU":"Судан","NAME_SV":"Sudan","NAME_TR":"Sudan","NAME_UK":"Судан","NAME_UR":"سوڈان","NAME_VI":"Sudan","NAME_ZH":"苏丹","NAME_ZHT":"蘇丹","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[21.825293,8.665625,38.609473,22.202441],"geometry":{"type":"Polygon","coordinates":[[[34.078125,9.461523],[34.076758,9.461523],[33.890918,9.462207],[33.887891,9.463525],[33.884863,9.466406],[33.882129,9.471191],[33.878809,9.477734],[33.871484,9.506152],[33.867773,9.550342],[33.874023,9.626758],[33.894922,9.717627],[33.95918,9.845264],[33.9625,9.855811],[33.963281,9.861768],[33.963281,9.868701],[33.957324,9.891455],[33.949902,9.911133],[33.946191,9.940918],[33.957324,10.007178],[33.958398,10.027734],[33.956836,10.054199],[33.951855,10.070947],[33.907031,10.181445],[33.892188,10.198975],[33.459082,10.55083],[33.379883,10.646191],[33.371387,10.652734],[33.360742,10.657812],[33.14082,10.737891],[33.130078,10.745947],[33.131445,10.757715],[33.138281,10.772949],[33.164746,10.819189],[33.168457,10.831445],[33.172168,10.850146],[33.073047,11.591504],[33.07334,11.606104],[33.077832,11.615771],[33.081543,11.621729],[33.094629,11.6375],[33.106055,11.653857],[33.119141,11.682422],[33.122461,11.693164],[33.136133,11.825586],[33.135059,11.941602],[33.193066,12.13501],[33.199316,12.217285],[32.721875,12.223096],[32.718945,12.218848],[32.718555,12.21377],[32.719824,12.208008],[32.720508,12.201807],[32.720117,12.188818],[32.716309,12.164844],[32.715332,12.152197],[32.71582,12.139258],[32.723047,12.09292],[32.735645,12.058057],[32.737695,12.046436],[32.738281,12.03374],[32.736719,12.009668],[32.072266,12.006738],[32.335352,11.716016],[32.338477,11.710107],[32.343066,11.694287],[32.344922,11.682715],[32.349902,11.58042],[32.335742,11.418555],[32.338867,11.314502],[32.354199,11.246924],[32.425391,11.113965],[32.420801,11.089111],[32.404102,11.057764],[31.933008,10.6625],[31.919922,10.643848],[31.854297,10.479053],[31.791992,10.383154],[31.764258,10.355713],[31.654883,10.221143],[31.224902,9.799268],[31.154492,9.770947],[30.940332,9.759375],[30.827051,9.756299],[30.81416,9.753125],[30.794922,9.74585],[30.783105,9.734961],[30.769141,9.726807],[30.755371,9.731201],[30.739355,9.742676],[30.474609,9.978955],[30.003027,10.277393],[29.95791,10.250244],[29.691016,10.121924],[29.635938,10.088623],[29.605469,10.065088],[29.603906,9.921387],[29.557422,9.848291],[29.473145,9.768604],[29.242383,9.718066],[29.122363,9.674658],[28.999609,9.610156],[28.97959,9.593994],[28.97959,9.594189],[28.932324,9.549463],[28.839453,9.459082],[28.829395,9.388818],[28.844531,9.326074],[28.048926,9.328613],[27.996289,9.378809],[27.88584,9.599658],[27.880859,9.601611],[27.799805,9.587891],[27.074219,9.613818],[26.970508,9.590625],[26.763184,9.499219],[26.658691,9.484131],[26.551367,9.52583],[26.169531,9.965918],[26.087012,10.018457],[26.057031,10.046777],[26.000586,10.123437],[25.919141,10.169336],[25.891504,10.202734],[25.882812,10.249609],[25.885254,10.346094],[25.858203,10.406494],[25.798047,10.420508],[25.285156,10.318506],[25.211719,10.329932],[25.104004,10.311816],[25.066992,10.293799],[25.023633,10.235791],[25.014844,10.175879],[25.016211,10.115234],[25.00293,10.055273],[24.963867,9.988867],[24.817676,9.8396],[24.785254,9.774658],[24.792188,9.610303],[24.782617,9.527344],[24.760352,9.488916],[24.69668,9.425684],[24.673633,9.389307],[24.662891,9.338135],[24.659375,9.229932],[24.648047,9.179102],[24.568262,9.051709],[24.549414,9.006787],[24.544824,8.914844],[24.531934,8.886914],[24.300195,8.814258],[24.213574,8.767822],[24.160449,8.696289],[24.147363,8.665625],[24.048145,8.691309],[23.921973,8.709717],[23.679297,8.732471],[23.583203,8.76582],[23.537305,8.81582],[23.551855,8.943213],[23.528027,8.970605],[23.489063,8.993311],[23.462793,9.048486],[23.468262,9.114746],[23.596094,9.261914],[23.622656,9.340625],[23.642773,9.613916],[23.65625,9.710352],[23.646289,9.8229],[23.54502,10.030078],[23.456641,10.174268],[23.312305,10.387939],[23.255859,10.457812],[22.964355,10.751807],[22.930762,10.795312],[22.860059,10.919678],[22.894824,11.029004],[22.937695,11.192041],[22.942773,11.267187],[22.922656,11.344873],[22.849023,11.403271],[22.783398,11.409961],[22.754004,11.439844],[22.697363,11.482666],[22.641016,11.515918],[22.591113,11.579883],[22.556348,11.669531],[22.580957,11.990137],[22.564355,12.032959],[22.489844,12.044727],[22.472461,12.067773],[22.475488,12.129248],[22.435254,12.311914],[22.390234,12.462988],[22.414453,12.546387],[22.352344,12.660449],[22.233398,12.709473],[22.121191,12.69458],[22.000684,12.671875],[21.928125,12.678125],[21.878125,12.699365],[21.843359,12.741211],[21.825293,12.790527],[21.841797,12.864746],[21.907715,13.000977],[21.990234,13.113086],[22.158008,13.215039],[22.202637,13.269336],[22.228125,13.32959],[22.232617,13.398779],[22.221387,13.471631],[22.202344,13.538086],[22.15293,13.626416],[22.107617,13.730322],[22.106445,13.799805],[22.128223,13.850146],[22.173145,13.910596],[22.262109,13.978711],[22.283496,13.992334],[22.339355,14.028857],[22.388184,14.055518],[22.509961,14.127441],[22.538574,14.161865],[22.528223,14.203223],[22.49834,14.237061],[22.449316,14.284229],[22.439355,14.342139],[22.425,14.441211],[22.399707,14.504199],[22.381543,14.550488],[22.416211,14.585205],[22.467773,14.63335],[22.532031,14.662744],[22.631836,14.688086],[22.670898,14.722461],[22.682422,14.788623],[22.679199,14.851465],[22.714941,14.898389],[22.763281,14.998682],[22.802148,15.044434],[22.867188,15.096631],[22.932324,15.162109],[22.961328,15.238135],[22.969531,15.311328],[22.933887,15.533105],[23.00918,15.62583],[23.105176,15.702539],[23.243457,15.697217],[23.458008,15.713965],[23.604004,15.745996],[23.708203,15.744971],[23.945996,15.703516],[23.965234,15.713428],[23.970801,15.721533],[23.983398,15.780176],[23.983301,15.928125],[23.98291,16.374219],[23.98252,16.820264],[23.982227,17.266357],[23.981836,17.712402],[23.981445,18.158496],[23.981055,18.604541],[23.980664,19.050586],[23.980273,19.496631],[23.980273,19.621484],[23.980273,19.746289],[23.980273,19.871094],[23.980273,19.995947],[24.226953,19.99585],[24.473633,19.995703],[24.72041,19.995557],[24.966992,19.995459],[24.970215,19.997266],[24.973242,19.999023],[24.976367,20.000781],[24.979492,20.002588],[24.979688,20.500928],[24.979883,20.999219],[24.980078,21.497559],[24.980273,21.99585],[25.362305,21.995801],[25.744336,21.995752],[26.126367,21.995654],[26.508398,21.995605],[26.89043,21.995557],[27.272461,21.995508],[27.654492,21.995459],[28.036426,21.995361],[28.418555,21.995312],[28.800586,21.995264],[29.18252,21.995215],[29.564551,21.995117],[29.94668,21.995117],[30.328613,21.99502],[30.710645,21.994922],[31.092676,21.994873],[31.20918,21.994873],[31.260645,22.002295],[31.358496,22.188623],[31.400293,22.202441],[31.464258,22.191504],[31.486133,22.147803],[31.466406,22.084668],[31.434473,21.99585],[31.62168,21.99585],[31.949805,21.995898],[32.277832,21.995996],[32.606055,21.995996],[32.934082,21.996094],[33.262207,21.996143],[33.590332,21.996191],[33.918457,21.99624],[34.246484,21.996289],[34.574609,21.996338],[34.902734,21.996387],[35.230859,21.996436],[35.558984,21.996484],[35.887012,21.996533],[36.215234,21.996582],[36.543262,21.996631],[36.871387,21.996729],[36.882617,21.768799],[36.926953,21.586523],[37.081152,21.326025],[37.211719,21.18584],[37.258594,21.108545],[37.263184,21.072656],[37.257227,21.039404],[37.21748,21.077637],[37.150586,21.10376],[37.141113,20.981787],[37.156836,20.894922],[37.172656,20.731982],[37.227539,20.556738],[37.187891,20.394922],[37.193164,20.120703],[37.262598,19.791895],[37.248438,19.581885],[37.361523,19.091992],[37.471289,18.820117],[37.531641,18.753125],[37.599414,18.717432],[37.729785,18.694336],[37.921875,18.555908],[38.074023,18.409766],[38.128125,18.333301],[38.201758,18.249414],[38.252148,18.264404],[38.283105,18.286719],[38.33291,18.219043],[38.574023,18.072949],[38.609473,18.005078],[38.522852,17.938525],[38.422461,17.823926],[38.397168,17.778369],[38.385547,17.75127],[38.37373,17.717334],[38.347363,17.683594],[38.289844,17.637012],[38.267285,17.616699],[38.253516,17.584766],[38.219043,17.563965],[38.181543,17.562842],[38.148535,17.548535],[38.098926,17.526465],[38.025293,17.537793],[37.950098,17.517676],[37.922559,17.492334],[37.862988,17.470264],[37.80332,17.465527],[37.782422,17.458008],[37.725977,17.420508],[37.656738,17.368262],[37.575977,17.33501],[37.547461,17.324121],[37.510156,17.288135],[37.45293,17.108691],[37.411035,17.061719],[37.34043,17.05708],[37.248828,17.056885],[37.169531,17.041406],[37.061523,17.061279],[37.008984,17.058887],[36.995215,17.020557],[36.975781,16.866553],[36.978711,16.800586],[36.935742,16.722363],[36.887793,16.624658],[36.905469,16.459521],[36.91377,16.296191],[36.825879,16.050293],[36.813477,15.993945],[36.724512,15.798877],[36.679199,15.726367],[36.566016,15.362109],[36.521777,15.250146],[36.426758,15.13208],[36.448145,14.940088],[36.470801,14.736475],[36.492285,14.544336],[36.524316,14.256836],[36.443945,13.988428],[36.44707,13.842041],[36.390625,13.626074],[36.346289,13.52627],[36.306836,13.466846],[36.273535,13.405762],[36.212207,13.271094],[36.160156,13.093311],[36.137109,12.911133],[36.135352,12.805322],[36.125195,12.757031],[36.10752,12.726465],[35.987598,12.706299],[35.820605,12.684863],[35.730566,12.661035],[35.670215,12.62373],[35.596094,12.537305],[35.449609,12.300586],[35.372754,12.155566],[35.252441,11.957031],[35.112305,11.816553],[35.082715,11.748291],[35.059668,11.621045],[35.00791,11.419873],[34.960742,11.276758],[34.969141,11.161768],[34.924902,10.962109],[34.931445,10.864795],[34.882324,10.810547],[34.816211,10.75918],[34.771289,10.746191],[34.675,10.804932],[34.601758,10.864551],[34.571875,10.880176],[34.508008,10.842871],[34.431445,10.787842],[34.343945,10.658643],[34.275684,10.528125],[34.314844,10.251562],[34.31123,10.190869],[34.291504,10.124756],[34.185254,9.918555],[34.159082,9.853418],[34.120313,9.729687],[34.079297,9.513477],[34.078125,9.461523]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":3,"SOVEREIGNT":"Sri Lanka","SOV_A3":"LKA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Sri Lanka","ADM0_A3":"LKA","GEOU_DIF":0,"GEOUNIT":"Sri Lanka","GU_A3":"LKA","SU_DIF":0,"SUBUNIT":"Sri Lanka","SU_A3":"LKA","BRK_DIFF":0,"NAME":"Sri Lanka","NAME_LONG":"Sri Lanka","BRK_A3":"LKA","BRK_NAME":"Sri Lanka","BRK_GROUP":null,"ABBREV":"Sri L.","POSTAL":"LK","FORMAL_EN":"Democratic Socialist Republic of Sri Lanka","FORMAL_FR":null,"NAME_CIAWF":"Sri Lanka","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Sri Lanka","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":5,"MAPCOLOR9":4,"MAPCOLOR13":9,"POP_EST":21803000,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":84008,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"CE","ISO_A2":"LK","ISO_A2_EH":"LK","ISO_A3":"LKA","ISO_A3_EH":"LKA","ISO_N3":"144","ISO_N3_EH":"144","UN_A3":"144","WB_A2":"LK","WB_A3":"LKA","WOE_ID":23424778,"WOE_ID_EH":23424778,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LKA","ADM0_DIFF":null,"ADM0_TLC":"LKA","ADM0_A3_US":"LKA","ADM0_A3_FR":"LKA","ADM0_A3_RU":"LKA","ADM0_A3_ES":"LKA","ADM0_A3_CN":"LKA","ADM0_A3_TW":"LKA","ADM0_A3_IN":"LKA","ADM0_A3_NP":"LKA","ADM0_A3_PK":"LKA","ADM0_A3_DE":"LKA","ADM0_A3_GB":"LKA","ADM0_A3_BR":"LKA","ADM0_A3_IL":"LKA","ADM0_A3_PS":"LKA","ADM0_A3_SA":"LKA","ADM0_A3_EG":"LKA","ADM0_A3_MA":"LKA","ADM0_A3_PT":"LKA","ADM0_A3_AR":"LKA","ADM0_A3_JP":"LKA","ADM0_A3_KO":"LKA","ADM0_A3_VN":"LKA","ADM0_A3_TR":"LKA","ADM0_A3_ID":"LKA","ADM0_A3_PL":"LKA","ADM0_A3_GR":"LKA","ADM0_A3_IT":"LKA","ADM0_A3_NL":"LKA","ADM0_A3_SE":"LKA","ADM0_A3_BD":"LKA","ADM0_A3_UA":"LKA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":80.704823,"LABEL_Y":7.581097,"NE_ID":1159321025,"WIKIDATAID":"Q854","NAME_AR":"سريلانكا","NAME_BN":"শ্রীলঙ্কা","NAME_DE":"Sri Lanka","NAME_EN":"Sri Lanka","NAME_ES":"Sri Lanka","NAME_FA":"سریلانکا","NAME_FR":"Sri Lanka","NAME_EL":"Σρι Λάνκα","NAME_HE":"סרי לנקה","NAME_HI":"श्रीलंका","NAME_HU":"Srí Lanka","NAME_ID":"Sri Lanka","NAME_IT":"Sri Lanka","NAME_JA":"スリランカ","NAME_KO":"스리랑카","NAME_NL":"Sri Lanka","NAME_PL":"Sri Lanka","NAME_PT":"Sri Lanka","NAME_RU":"Шри-Ланка","NAME_SV":"Sri Lanka","NAME_TR":"Sri Lanka","NAME_UK":"Шрі-Ланка","NAME_UR":"سری لنکا","NAME_VI":"Sri Lanka","NAME_ZH":"斯里兰卡","NAME_ZHT":"斯里蘭卡","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[79.707812,5.949365,81.876953,9.812695],"geometry":{"type":"MultiPolygon","coordinates":[[[[79.969531,9.630664],[79.906836,9.619824],[79.857422,9.686377],[79.845703,9.714648],[79.858594,9.734375],[79.872266,9.744336],[79.888477,9.741162],[79.911914,9.67915],[79.969531,9.630664]]],[[[79.874805,9.050732],[79.903711,8.975],[79.821094,9.026855],[79.766797,9.069775],[79.747656,9.10459],[79.859961,9.065723],[79.874805,9.050732]]],[[[79.982324,9.812695],[80.078418,9.807471],[80.180957,9.81001],[80.252832,9.796338],[80.375977,9.642334],[80.711133,9.366357],[80.893457,9.085889],[80.910059,9.024512],[80.935449,8.971484],[80.979199,8.956934],[81.016016,8.932617],[81.198242,8.661963],[81.219238,8.608398],[81.216211,8.549414],[81.226953,8.505518],[81.274609,8.483594],[81.333984,8.47207],[81.372852,8.431445],[81.422168,8.215234],[81.422168,8.147852],[81.435938,8.118896],[81.66543,7.782471],[81.678711,7.741553],[81.67627,7.710938],[81.68291,7.684473],[81.727344,7.625],[81.79668,7.464795],[81.832031,7.428418],[81.874121,7.28833],[81.876953,7.020459],[81.861426,6.90127],[81.818555,6.756201],[81.767773,6.614307],[81.712695,6.511865],[81.637402,6.425146],[81.37998,6.240918],[81.30625,6.203857],[80.971094,6.088379],[80.724121,5.979053],[80.495801,5.949365],[80.267383,6.009766],[80.095313,6.153174],[80.007227,6.364404],[79.946973,6.584521],[79.859375,6.829297],[79.79209,7.585205],[79.759961,7.796484],[79.707812,8.065674],[79.712988,8.182324],[79.749805,8.294238],[79.749707,8.048877],[79.783496,8.018457],[79.808887,8.05],[79.831934,8.304053],[79.850879,8.411572],[79.941797,8.691504],[79.943652,8.741162],[79.92793,8.846436],[79.928906,8.899219],[80.064844,9.095654],[80.099609,9.209961],[80.118359,9.326855],[80.110938,9.453271],[80.086328,9.577832],[80.196094,9.538135],[80.256445,9.494775],[80.317969,9.46543],[80.367969,9.480469],[80.42832,9.480957],[80.385352,9.548779],[80.257617,9.611279],[80.045801,9.649902],[79.979492,9.699365],[79.954004,9.742334],[79.966992,9.792627],[79.982324,9.812695]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":2,"SOVEREIGNT":"Spain","SOV_A3":"ESP","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Spain","ADM0_A3":"ESP","GEOU_DIF":0,"GEOUNIT":"Spain","GU_A3":"ESP","SU_DIF":0,"SUBUNIT":"Spain","SU_A3":"ESP","BRK_DIFF":0,"NAME":"Spain","NAME_LONG":"Spain","BRK_A3":"ESP","BRK_NAME":"Spain","BRK_GROUP":null,"ABBREV":"Sp.","POSTAL":"E","FORMAL_EN":"Kingdom of Spain","FORMAL_FR":null,"NAME_CIAWF":"Spain","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Spain","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":5,"MAPCOLOR13":5,"POP_EST":47076781,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":1393490,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"SP","ISO_A2":"ES","ISO_A2_EH":"ES","ISO_A3":"ESP","ISO_A3_EH":"ESP","ISO_N3":"724","ISO_N3_EH":"724","UN_A3":"724","WB_A2":"ES","WB_A3":"ESP","WOE_ID":23424950,"WOE_ID_EH":23424950,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ESP","ADM0_DIFF":null,"ADM0_TLC":"ESP","ADM0_A3_US":"ESP","ADM0_A3_FR":"ESP","ADM0_A3_RU":"ESP","ADM0_A3_ES":"ESP","ADM0_A3_CN":"ESP","ADM0_A3_TW":"ESP","ADM0_A3_IN":"ESP","ADM0_A3_NP":"ESP","ADM0_A3_PK":"ESP","ADM0_A3_DE":"ESP","ADM0_A3_GB":"ESP","ADM0_A3_BR":"ESP","ADM0_A3_IL":"ESP","ADM0_A3_PS":"ESP","ADM0_A3_SA":"ESP","ADM0_A3_EG":"ESP","ADM0_A3_MA":"ESP","ADM0_A3_PT":"ESP","ADM0_A3_AR":"ESP","ADM0_A3_JP":"ESP","ADM0_A3_KO":"ESP","ADM0_A3_VN":"ESP","ADM0_A3_TR":"ESP","ADM0_A3_ID":"ESP","ADM0_A3_PL":"ESP","ADM0_A3_GR":"ESP","ADM0_A3_IT":"ESP","ADM0_A3_NL":"ESP","ADM0_A3_SE":"ESP","ADM0_A3_BD":"ESP","ADM0_A3_UA":"ESP","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":3,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":-3.464718,"LABEL_Y":40.090953,"NE_ID":1159320587,"WIKIDATAID":"Q29","NAME_AR":"إسبانيا","NAME_BN":"স্পেন","NAME_DE":"Spanien","NAME_EN":"Spain","NAME_ES":"España","NAME_FA":"اسپانیا","NAME_FR":"Espagne","NAME_EL":"Ισπανία","NAME_HE":"ספרד","NAME_HI":"स्पेन","NAME_HU":"Spanyolország","NAME_ID":"Spanyol","NAME_IT":"Spagna","NAME_JA":"スペイン","NAME_KO":"스페인","NAME_NL":"Spanje","NAME_PL":"Hiszpania","NAME_PT":"Espanha","NAME_RU":"Испания","NAME_SV":"Spanien","NAME_TR":"İspanya","NAME_UK":"Іспанія","NAME_UR":"ہسپانیہ","NAME_VI":"Tây Ban Nha","NAME_ZH":"西班牙","NAME_ZHT":"西班牙","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-18.160547,27.646387,4.32207,43.764551],"geometry":{"type":"MultiPolygon","coordinates":[[[[1.593945,38.67207],[1.571191,38.658838],[1.50498,38.670996],[1.405762,38.670996],[1.401953,38.711426],[1.417188,38.739648],[1.436328,38.768213],[1.496875,38.711914],[1.592676,38.701465],[1.593945,38.67207]]],[[[3.145313,39.790088],[3.241113,39.756689],[3.342188,39.786719],[3.395898,39.777295],[3.448926,39.76123],[3.461816,39.697754],[3.414648,39.627148],[3.34873,39.555664],[3.292969,39.477051],[3.244727,39.386621],[3.15459,39.333252],[3.072852,39.30127],[2.900098,39.368359],[2.799805,39.385059],[2.769824,39.410254],[2.745996,39.510254],[2.700586,39.542139],[2.634082,39.556201],[2.575879,39.530664],[2.499512,39.477881],[2.458789,39.530469],[2.394336,39.540381],[2.37002,39.57207],[2.371289,39.613086],[2.784961,39.854834],[2.904785,39.908301],[3.158691,39.970508],[3.197559,39.961084],[3.164453,39.924219],[3.166992,39.907715],[3.198633,39.889844],[3.190918,39.861377],[3.158691,39.836572],[3.145313,39.790088]]],[[[4.293652,39.841846],[4.275293,39.830273],[3.967676,39.94585],[3.867188,39.95874],[3.842676,39.976367],[3.84541,40.036475],[3.853418,40.063037],[4.05918,40.075098],[4.225781,40.032373],[4.315137,39.917236],[4.32207,39.89751],[4.293652,39.841846]]],[[[1.445215,38.918701],[1.408984,38.857275],[1.256934,38.879004],[1.22334,38.903857],[1.25625,38.973389],[1.299805,38.981738],[1.302539,39.031152],[1.348633,39.080811],[1.564453,39.121045],[1.613184,39.087402],[1.623633,39.038818],[1.494531,38.93252],[1.445215,38.918701]]],[[[-1.794043,43.407324],[-1.792725,43.372559],[-1.753271,43.324707],[-1.712842,43.307031],[-1.627148,43.282471],[-1.561475,43.279199],[-1.471729,43.267676],[-1.410693,43.240088],[-1.407324,43.197119],[-1.422607,43.149121],[-1.459424,43.10498],[-1.480469,43.071143],[-1.46084,43.051758],[-1.42876,43.036768],[-1.394043,43.032617],[-1.370508,43.037598],[-1.352734,43.064258],[-1.318848,43.096973],[-1.300049,43.100977],[-1.301562,43.082471],[-1.285449,43.059619],[-1.175439,43.021143],[-0.933838,42.949512],[-0.839209,42.948193],[-0.762646,42.939795],[-0.740186,42.909521],[-0.586426,42.798975],[-0.549805,42.802002],[-0.481152,42.799316],[-0.398438,42.808105],[-0.338574,42.828809],[-0.299316,42.825342],[-0.256055,42.803955],[-0.205322,42.785303],[-0.140039,42.748926],[-0.081494,42.703857],[-0.041162,42.689111],[0.201367,42.719336],[0.255469,42.69292],[0.312891,42.693262],[0.377246,42.700146],[0.517676,42.686279],[0.631641,42.6896],[0.641992,42.700635],[0.651758,42.800439],[0.669824,42.835742],[0.696875,42.845117],[0.764453,42.838037],[1.010059,42.778955],[1.111133,42.742041],[1.208301,42.713135],[1.293262,42.709961],[1.349414,42.690674],[1.42832,42.595898],[1.414844,42.548389],[1.421973,42.530811],[1.430273,42.497852],[1.428125,42.461328],[1.448828,42.437451],[1.48623,42.434473],[1.534082,42.441699],[1.586426,42.455957],[1.678516,42.49668],[1.706055,42.50332],[1.859766,42.45708],[1.92793,42.426318],[1.951465,42.392773],[1.986523,42.358496],[2.032715,42.353516],[2.09834,42.386084],[2.200391,42.420947],[2.374414,42.390283],[2.567969,42.345801],[2.65166,42.340479],[2.654785,42.362109],[2.67002,42.393018],[2.701855,42.408496],[2.749414,42.413037],[2.815625,42.429248],[2.891406,42.456055],[2.97002,42.467236],[3.052637,42.447217],[3.152148,42.431006],[3.211426,42.431152],[3.239844,42.367871],[3.287891,42.343701],[3.306738,42.288965],[3.218652,42.260352],[3.166406,42.256494],[3.150391,42.162451],[3.175195,42.135986],[3.224609,42.111133],[3.238086,42.082227],[3.248047,41.944238],[3.146875,41.861035],[3.004883,41.767432],[2.310938,41.466504],[2.145605,41.320752],[2.082617,41.287402],[1.566602,41.195605],[1.205859,41.097559],[1.03291,41.062061],[0.816895,40.891602],[0.714648,40.822852],[0.796094,40.803809],[0.891113,40.722363],[0.85918,40.68623],[0.720605,40.630469],[0.660059,40.61333],[0.627148,40.622217],[0.596094,40.614502],[0.363672,40.319043],[0.158398,40.106592],[0.043066,40.013965],[-0.075146,39.875928],[-0.327002,39.519873],[-0.328955,39.41709],[-0.204932,39.062598],[-0.133789,38.969482],[-0.034131,38.891211],[0.154883,38.824658],[0.201563,38.75918],[0.136328,38.696777],[-0.052734,38.585693],[-0.38125,38.435645],[-0.520801,38.317285],[-0.550684,38.203125],[-0.646777,38.151855],[-0.683203,37.992041],[-0.741553,37.886133],[-0.752734,37.850244],[-0.814648,37.769922],[-0.823096,37.711621],[-0.721582,37.631055],[-0.771875,37.59624],[-0.822168,37.580762],[-0.938086,37.571338],[-1.327539,37.561133],[-1.640967,37.386963],[-1.797607,37.232861],[-1.939307,36.94585],[-2.111523,36.77666],[-2.187695,36.745459],[-2.305566,36.819824],[-2.452832,36.831152],[-2.595703,36.806494],[-2.670605,36.747559],[-2.787549,36.714746],[-2.901855,36.743164],[-3.14917,36.758496],[-3.259131,36.755762],[-3.43125,36.70791],[-3.578809,36.739844],[-3.827783,36.756055],[-4.366846,36.718115],[-4.434863,36.700244],[-4.502246,36.62915],[-4.674121,36.506445],[-4.935303,36.502051],[-5.171484,36.423779],[-5.230518,36.373633],[-5.329687,36.235742],[-5.360937,36.134912],[-5.381592,36.134082],[-5.407227,36.158887],[-5.443604,36.150586],[-5.4625,36.073779],[-5.55127,36.038818],[-5.625488,36.025928],[-5.808398,36.08833],[-5.960693,36.181738],[-6.040674,36.188428],[-6.170459,36.333789],[-6.22627,36.426465],[-6.265918,36.526514],[-6.257715,36.564844],[-6.268945,36.596729],[-6.384131,36.637012],[-6.412256,36.728857],[-6.32832,36.848145],[-6.259424,36.898975],[-6.216797,36.913574],[-6.320947,36.908496],[-6.396191,36.831641],[-6.492432,36.954639],[-6.884619,37.194238],[-6.859375,37.24917],[-6.86377,37.278906],[-6.929492,37.214941],[-6.974658,37.198437],[-7.174951,37.208789],[-7.406152,37.179443],[-7.467187,37.428027],[-7.496045,37.523584],[-7.503516,37.585498],[-7.443945,37.728271],[-7.378906,37.786377],[-7.292236,37.906445],[-7.185449,38.006348],[-7.07251,38.030029],[-7.022852,38.044727],[-6.981104,38.121973],[-6.957568,38.187891],[-6.974805,38.194434],[-7.106396,38.181006],[-7.343018,38.457422],[-7.335791,38.501465],[-7.305957,38.566846],[-7.286377,38.649365],[-7.281543,38.714551],[-7.219922,38.770508],[-7.125488,38.826953],[-7.046045,38.907031],[-7.00625,38.985254],[-6.997949,39.056445],[-7.042969,39.10708],[-7.172412,39.135205],[-7.305762,39.338135],[-7.335449,39.465137],[-7.362695,39.47832],[-7.445117,39.536182],[-7.524219,39.644727],[-7.535693,39.661572],[-7.454102,39.680664],[-7.117676,39.681689],[-7.047412,39.705566],[-7.036719,39.713965],[-6.975391,39.798389],[-6.911182,39.937109],[-6.896094,40.021826],[-6.916406,40.056836],[-7.027832,40.142627],[-7.032617,40.16792],[-7.014697,40.20835],[-6.948437,40.251611],[-6.858887,40.300732],[-6.810156,40.343115],[-6.821777,40.37627],[-6.847949,40.410986],[-6.852051,40.443262],[-6.835693,40.483154],[-6.829834,40.619092],[-6.818359,40.654053],[-6.835889,40.77749],[-6.857715,40.87832],[-6.928467,41.009131],[-6.915527,41.038037],[-6.882812,41.062402],[-6.775781,41.107715],[-6.690137,41.214502],[-6.565918,41.303711],[-6.403125,41.375391],[-6.289355,41.455029],[-6.244336,41.515918],[-6.2125,41.532031],[-6.22168,41.560449],[-6.243115,41.601807],[-6.308057,41.642187],[-6.391699,41.665381],[-6.484668,41.664404],[-6.542187,41.67251],[-6.558984,41.704053],[-6.552588,41.789551],[-6.55752,41.874121],[-6.575342,41.913086],[-6.618262,41.942383],[-6.703613,41.93457],[-6.777295,41.958496],[-6.833203,41.96416],[-6.865527,41.945264],[-7.030469,41.950635],[-7.099121,41.964209],[-7.147119,41.981152],[-7.17793,41.97168],[-7.195361,41.955225],[-7.19834,41.929395],[-7.209619,41.895264],[-7.268555,41.864404],[-7.403613,41.833691],[-7.512598,41.835986],[-7.612598,41.857959],[-7.644678,41.873975],[-7.693066,41.888477],[-7.896387,41.870557],[-7.92085,41.883643],[-7.990967,41.851904],[-8.094434,41.814209],[-8.15249,41.811963],[-8.173535,41.819971],[-8.18125,41.836963],[-8.224756,41.89585],[-8.21333,41.9271],[-8.12998,42.018164],[-8.139307,42.039941],[-8.173584,42.069385],[-8.204199,42.111865],[-8.213086,42.133691],[-8.266064,42.137402],[-8.322559,42.115088],[-8.538086,42.069336],[-8.589648,42.052734],[-8.682959,42.008496],[-8.777148,41.941064],[-8.852344,41.926904],[-8.87832,41.946875],[-8.887207,42.105273],[-8.772461,42.210596],[-8.690918,42.27417],[-8.729199,42.287012],[-8.81582,42.285254],[-8.809961,42.334473],[-8.769385,42.358154],[-8.730029,42.411719],[-8.776172,42.434814],[-8.812109,42.470068],[-8.809912,42.562354],[-8.799902,42.599902],[-8.811523,42.640332],[-8.987793,42.585645],[-9.033105,42.593848],[-9.035059,42.662354],[-8.937207,42.766699],[-8.927197,42.798584],[-9.041602,42.814014],[-9.127197,42.865234],[-9.179443,42.910986],[-9.235205,42.976904],[-9.235645,43.035791],[-9.178076,43.174023],[-9.095557,43.214209],[-9.024512,43.238965],[-8.873682,43.334424],[-8.665625,43.316602],[-8.537061,43.337061],[-8.421582,43.38584],[-8.355469,43.396826],[-8.248926,43.439404],[-8.252295,43.496924],[-8.288867,43.5396],[-8.256738,43.579883],[-8.137158,43.629053],[-8.004687,43.694385],[-7.852734,43.706982],[-7.698145,43.764551],[-7.59458,43.727344],[-7.503613,43.739941],[-7.399316,43.695801],[-7.261963,43.594629],[-7.060986,43.553955],[-6.900684,43.585645],[-6.617285,43.592383],[-6.475684,43.578906],[-6.224121,43.603857],[-6.080127,43.594922],[-5.84668,43.645068],[-5.66582,43.582471],[-5.315723,43.553174],[-5.105273,43.501855],[-4.523047,43.415723],[-4.312793,43.414746],[-4.015332,43.463086],[-3.889355,43.499414],[-3.774023,43.477881],[-3.604639,43.519482],[-3.523633,43.511035],[-3.417871,43.451709],[-3.045605,43.371582],[-2.947705,43.439697],[-2.875049,43.454443],[-2.60708,43.412744],[-2.337109,43.328027],[-2.19668,43.321924],[-1.991309,43.345068],[-1.828516,43.40083],[-1.794043,43.407324]]],[[[-16.334473,28.379932],[-16.418213,28.151416],[-16.49624,28.061914],[-16.542773,28.03208],[-16.658008,28.007178],[-16.794727,28.14917],[-16.866016,28.293262],[-16.905322,28.3396],[-16.843066,28.376123],[-16.752051,28.369824],[-16.556836,28.400488],[-16.517432,28.412695],[-16.318994,28.558203],[-16.123633,28.575977],[-16.119141,28.528271],[-16.334473,28.379932]]],[[[-13.715967,28.91123],[-13.783984,28.845459],[-13.859912,28.869092],[-13.823633,29.01333],[-13.788184,29.056104],[-13.650098,29.118994],[-13.535059,29.144287],[-13.501416,29.21123],[-13.463574,29.237207],[-13.422949,29.19751],[-13.45376,29.151367],[-13.47793,29.006592],[-13.554688,28.960205],[-13.715967,28.91123]]],[[[-14.196777,28.169287],[-14.332617,28.056006],[-14.468604,28.082373],[-14.491797,28.100928],[-14.355566,28.129687],[-14.231982,28.21582],[-14.152588,28.406641],[-14.028369,28.617432],[-14.003369,28.706689],[-13.95415,28.741455],[-13.886279,28.744678],[-13.857227,28.738037],[-13.827148,28.691211],[-13.827588,28.585156],[-13.862988,28.409326],[-13.928027,28.253467],[-14.196777,28.169287]]],[[[-15.400586,28.147363],[-15.406689,28.070508],[-15.383154,27.992822],[-15.38916,27.874707],[-15.436768,27.810693],[-15.559375,27.746973],[-15.655762,27.758398],[-15.710303,27.784082],[-15.807324,27.887549],[-15.809473,27.994482],[-15.720947,28.06416],[-15.682764,28.154053],[-15.452783,28.136914],[-15.432715,28.154248],[-15.415479,28.159326],[-15.400586,28.147363]]],[[[-17.184668,28.021973],[-17.225391,28.013525],[-17.273926,28.038281],[-17.324902,28.117676],[-17.290332,28.176318],[-17.258594,28.203174],[-17.214355,28.199268],[-17.129639,28.155957],[-17.10376,28.111133],[-17.101074,28.083447],[-17.184668,28.021973]]],[[[-17.887939,27.80957],[-17.984766,27.646387],[-18.106592,27.707471],[-18.135937,27.72793],[-18.160547,27.761475],[-18.043359,27.768115],[-17.924512,27.850146],[-17.887939,27.80957]]],[[[-17.834277,28.493213],[-17.859375,28.485693],[-17.882129,28.5646],[-18.000781,28.758252],[-17.928809,28.84458],[-17.797559,28.846777],[-17.744531,28.786572],[-17.726562,28.724463],[-17.751611,28.688574],[-17.744385,28.616016],[-17.758008,28.569092],[-17.834277,28.493213]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"South Korea","SOV_A3":"KOR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"South Korea","ADM0_A3":"KOR","GEOU_DIF":0,"GEOUNIT":"South Korea","GU_A3":"KOR","SU_DIF":0,"SUBUNIT":"South Korea","SU_A3":"KOR","BRK_DIFF":0,"NAME":"South Korea","NAME_LONG":"Republic of Korea","BRK_A3":"KOR","BRK_NAME":"Republic of Korea","BRK_GROUP":null,"ABBREV":"S.K.","POSTAL":"KR","FORMAL_EN":"Republic of Korea","FORMAL_FR":null,"NAME_CIAWF":"Korea, South","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Korea, Rep.","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":1,"MAPCOLOR13":5,"POP_EST":51709098,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":1646739,"GDP_YEAR":2019,"ECONOMY":"4. Emerging region: MIKT","INCOME_GRP":"1. High income: OECD","FIPS_10":"KS","ISO_A2":"KR","ISO_A2_EH":"KR","ISO_A3":"KOR","ISO_A3_EH":"KOR","ISO_N3":"410","ISO_N3_EH":"410","UN_A3":"410","WB_A2":"KR","WB_A3":"KOR","WOE_ID":23424868,"WOE_ID_EH":23424868,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"KOR","ADM0_DIFF":null,"ADM0_TLC":"KOR","ADM0_A3_US":"KOR","ADM0_A3_FR":"KOR","ADM0_A3_RU":"KOR","ADM0_A3_ES":"KOR","ADM0_A3_CN":"KOR","ADM0_A3_TW":"KOR","ADM0_A3_IN":"KOR","ADM0_A3_NP":"KOR","ADM0_A3_PK":"KOR","ADM0_A3_DE":"KOR","ADM0_A3_GB":"KOR","ADM0_A3_BR":"KOR","ADM0_A3_IL":"KOR","ADM0_A3_PS":"KOR","ADM0_A3_SA":"KOR","ADM0_A3_EG":"KOR","ADM0_A3_MA":"KOR","ADM0_A3_PT":"KOR","ADM0_A3_AR":"KOR","ADM0_A3_JP":"KOR","ADM0_A3_KO":"KOR","ADM0_A3_VN":"KOR","ADM0_A3_TR":"KOR","ADM0_A3_ID":"KOR","ADM0_A3_PL":"KOR","ADM0_A3_GR":"KOR","ADM0_A3_IT":"KOR","ADM0_A3_NL":"KOR","ADM0_A3_SE":"KOR","ADM0_A3_BD":"KOR","ADM0_A3_UA":"KOR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":11,"LONG_LEN":17,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":7,"LABEL_X":128.129504,"LABEL_Y":36.384924,"NE_ID":1159320985,"WIKIDATAID":"Q884","NAME_AR":"كوريا الجنوبية","NAME_BN":"দক্ষিণ কোরিয়া","NAME_DE":"Südkorea","NAME_EN":"South Korea","NAME_ES":"Corea del Sur","NAME_FA":"کره جنوبی","NAME_FR":"Corée du Sud","NAME_EL":"Νότια Κορέα","NAME_HE":"קוריאה הדרומית","NAME_HI":"दक्षिण कोरिया","NAME_HU":"Dél-Korea","NAME_ID":"Korea Selatan","NAME_IT":"Corea del Sud","NAME_JA":"大韓民国","NAME_KO":"대한민국","NAME_NL":"Zuid-Korea","NAME_PL":"Korea Południowa","NAME_PT":"Coreia do Sul","NAME_RU":"Республика Корея","NAME_SV":"Sydkorea","NAME_TR":"Güney Kore","NAME_UK":"Південна Корея","NAME_UR":"جنوبی کوریا","NAME_VI":"Hàn Quốc","NAME_ZH":"大韩民国","NAME_ZHT":"大韓民國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[126.00752,33.201514,130.934277,38.623437],"geometry":{"type":"MultiPolygon","coordinates":[[[[126.633887,37.781836],[126.664551,37.800732],[126.666504,37.82793],[126.666797,37.917187],[126.754297,37.978955],[126.878906,38.106055],[126.940039,38.175586],[127.009668,38.240527],[127.090332,38.283887],[127.169531,38.304541],[127.294043,38.313281],[127.532715,38.30498],[127.579492,38.3125],[127.745508,38.319238],[127.784668,38.307715],[127.905273,38.300439],[128.038965,38.308545],[128.10625,38.327344],[128.168652,38.359326],[128.223145,38.416992],[128.279297,38.523779],[128.339453,38.607861],[128.374609,38.623437],[128.618848,38.176074],[128.852441,37.887061],[129.051563,37.677637],[129.335156,37.274561],[129.418262,37.059033],[129.426172,36.925537],[129.473438,36.741895],[129.433008,36.636621],[129.44502,36.470703],[129.427148,36.385498],[129.392578,36.322705],[129.391309,36.202148],[129.402441,36.137646],[129.403516,36.052148],[129.425781,36.018799],[129.458301,36.006445],[129.509766,36.037598],[129.572852,36.050537],[129.561719,35.947656],[129.485449,35.687402],[129.419141,35.497852],[129.329004,35.332764],[129.21416,35.181836],[129.076758,35.122705],[128.980078,35.101514],[128.795703,35.093896],[128.642578,35.11958],[128.510938,35.100977],[128.458105,35.069434],[128.418848,35.015674],[128.447656,34.93208],[128.443945,34.870361],[128.387695,34.875098],[128.275977,34.910986],[128.152344,34.915869],[128.094531,34.933594],[128.03623,35.021973],[127.976758,35.018701],[127.873242,34.966309],[127.714844,34.954687],[127.659082,34.926367],[127.639355,34.889697],[127.6625,34.843408],[127.742188,34.782568],[127.71543,34.721045],[127.632422,34.690234],[127.56543,34.765918],[127.523633,34.840088],[127.476953,34.844287],[127.404297,34.823096],[127.389648,34.743018],[127.423438,34.688477],[127.479102,34.625244],[127.401172,34.552539],[127.380566,34.500635],[127.324609,34.463281],[127.173438,34.546143],[127.194922,34.605029],[127.260547,34.66167],[127.268652,34.720361],[127.24707,34.755127],[127.030762,34.606885],[126.897461,34.438867],[126.82627,34.451074],[126.796484,34.494287],[126.754785,34.511865],[126.61084,34.403516],[126.584375,34.317529],[126.531445,34.314258],[126.508301,34.350635],[126.506445,34.428369],[126.481738,34.493945],[126.332617,34.589648],[126.264453,34.673242],[126.301074,34.719971],[126.425586,34.69458],[126.524512,34.6979],[126.50498,34.737549],[126.472852,34.756348],[126.538574,34.778662],[126.593359,34.824365],[126.547949,34.836768],[126.478516,34.810352],[126.420703,34.823389],[126.397852,34.932812],[126.327441,35.045117],[126.291113,35.15415],[126.360547,35.216895],[126.395898,35.314404],[126.460449,35.455615],[126.492773,35.50127],[126.582227,35.534473],[126.614062,35.570996],[126.564941,35.589746],[126.486523,35.606348],[126.488477,35.64707],[126.541895,35.669336],[126.601562,35.714209],[126.717383,35.768848],[126.753027,35.871973],[126.719629,35.8979],[126.647461,35.922412],[126.663672,35.974512],[126.693457,36.01416],[126.682324,36.037939],[126.59707,36.105029],[126.54043,36.166162],[126.557227,36.23584],[126.544238,36.341211],[126.551953,36.429688],[126.548242,36.477637],[126.506641,36.585645],[126.487695,36.693799],[126.433008,36.678027],[126.38877,36.651172],[126.230664,36.689258],[126.180859,36.691602],[126.160547,36.771924],[126.217188,36.870947],[126.351562,36.958203],[126.428711,36.969043],[126.487012,37.007471],[126.577734,37.01958],[126.686719,36.960352],[126.784473,36.948437],[126.83877,36.846094],[126.87207,36.824463],[126.879102,36.862061],[126.958008,36.906152],[126.976855,36.939404],[126.959766,36.957617],[126.868945,36.975732],[126.787402,37.102734],[126.776074,37.158203],[126.746387,37.193555],[126.790527,37.294922],[126.696191,37.410693],[126.650293,37.447119],[126.656836,37.551172],[126.607617,37.617432],[126.580176,37.65376],[126.563379,37.716504],[126.577734,37.744727],[126.620703,37.755469],[126.633887,37.781836]]],[[[128.741016,34.798535],[128.64668,34.736865],[128.519531,34.81958],[128.489258,34.865283],[128.585938,34.932275],[128.667969,35.008789],[128.721875,35.013574],[128.741016,34.798535]]],[[[128.06582,34.805859],[128.054688,34.708057],[127.983984,34.703223],[127.941797,34.76626],[127.896875,34.735498],[127.873438,34.734961],[127.838281,34.81333],[127.832227,34.874512],[127.91543,34.920996],[127.965625,34.893018],[128.037988,34.878613],[128.06582,34.805859]]],[[[126.233691,34.370508],[126.169727,34.355176],[126.133789,34.3896],[126.108594,34.39873],[126.122852,34.443945],[126.227051,34.532715],[126.247461,34.56333],[126.343848,34.544922],[126.379883,34.497949],[126.335449,34.426416],[126.233691,34.370508]]],[[[126.520703,37.736816],[126.516016,37.604687],[126.46084,37.610352],[126.42334,37.623633],[126.407227,37.649414],[126.369336,37.772021],[126.411621,37.822656],[126.493555,37.782568],[126.520703,37.736816]]],[[[126.753027,34.343994],[126.769922,34.296436],[126.689063,34.30542],[126.646094,34.351123],[126.651855,34.390332],[126.7,34.395898],[126.753027,34.343994]]],[[[127.799023,34.615039],[127.787793,34.584082],[127.737305,34.630908],[127.787109,34.682129],[127.799023,34.615039]]],[[[126.417578,36.492578],[126.403809,36.427881],[126.3375,36.470557],[126.318555,36.612549],[126.386621,36.571143],[126.417578,36.492578]]],[[[126.171973,34.731152],[126.158789,34.706982],[126.115234,34.714209],[126.070605,34.783057],[126.052051,34.837549],[126.00752,34.86748],[126.078418,34.914844],[126.168555,34.829687],[126.171973,34.731152]]],[[[130.916016,37.478467],[130.870605,37.44873],[130.816797,37.478467],[130.810254,37.509912],[130.838379,37.537207],[130.903711,37.553711],[130.934277,37.529736],[130.916016,37.478467]]],[[[126.326953,33.223633],[126.282031,33.201514],[126.240234,33.214844],[126.229004,33.225244],[126.178711,33.282568],[126.165625,33.312012],[126.199414,33.368066],[126.337695,33.4604],[126.695508,33.549316],[126.759863,33.553223],[126.901172,33.515137],[126.93125,33.443848],[126.905371,33.382373],[126.872852,33.341162],[126.70918,33.27168],[126.581738,33.23833],[126.326953,33.223633]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"South Africa","SOV_A3":"ZAF","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"South Africa","ADM0_A3":"ZAF","GEOU_DIF":0,"GEOUNIT":"South Africa","GU_A3":"ZAF","SU_DIF":0,"SUBUNIT":"South Africa","SU_A3":"ZAF","BRK_DIFF":0,"NAME":"South Africa","NAME_LONG":"South Africa","BRK_A3":"ZAF","BRK_NAME":"South Africa","BRK_GROUP":null,"ABBREV":"S.Af.","POSTAL":"ZA","FORMAL_EN":"Republic of South Africa","FORMAL_FR":null,"NAME_CIAWF":"South Africa","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"South Africa","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":2,"POP_EST":58558270,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":351431,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"SF","ISO_A2":"ZA","ISO_A2_EH":"ZA","ISO_A3":"ZAF","ISO_A3_EH":"ZAF","ISO_N3":"710","ISO_N3_EH":"710","UN_A3":"710","WB_A2":"ZA","WB_A3":"ZAF","WOE_ID":23424942,"WOE_ID_EH":23424942,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ZAF","ADM0_DIFF":null,"ADM0_TLC":"ZAF","ADM0_A3_US":"ZAF","ADM0_A3_FR":"ZAF","ADM0_A3_RU":"ZAF","ADM0_A3_ES":"ZAF","ADM0_A3_CN":"ZAF","ADM0_A3_TW":"ZAF","ADM0_A3_IN":"ZAF","ADM0_A3_NP":"ZAF","ADM0_A3_PK":"ZAF","ADM0_A3_DE":"ZAF","ADM0_A3_GB":"ZAF","ADM0_A3_BR":"ZAF","ADM0_A3_IL":"ZAF","ADM0_A3_PS":"ZAF","ADM0_A3_SA":"ZAF","ADM0_A3_EG":"ZAF","ADM0_A3_MA":"ZAF","ADM0_A3_PT":"ZAF","ADM0_A3_AR":"ZAF","ADM0_A3_JP":"ZAF","ADM0_A3_KO":"ZAF","ADM0_A3_VN":"ZAF","ADM0_A3_TR":"ZAF","ADM0_A3_ID":"ZAF","ADM0_A3_PL":"ZAF","ADM0_A3_GR":"ZAF","ADM0_A3_IT":"ZAF","ADM0_A3_NL":"ZAF","ADM0_A3_SE":"ZAF","ADM0_A3_BD":"ZAF","ADM0_A3_UA":"ZAF","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Southern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":12,"LONG_LEN":12,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":23.665734,"LABEL_Y":-29.708776,"NE_ID":1159321431,"WIKIDATAID":"Q258","NAME_AR":"جنوب أفريقيا","NAME_BN":"দক্ষিণ আফ্রিকা","NAME_DE":"Südafrika","NAME_EN":"South Africa","NAME_ES":"Sudáfrica","NAME_FA":"آفریقای جنوبی","NAME_FR":"Afrique du Sud","NAME_EL":"Νότια Αφρική","NAME_HE":"דרום אפריקה","NAME_HI":"दक्षिण अफ़्रीका","NAME_HU":"Dél-afrikai Köztársaság","NAME_ID":"Afrika Selatan","NAME_IT":"Sudafrica","NAME_JA":"南アフリカ共和国","NAME_KO":"남아프리카 공화국","NAME_NL":"Zuid-Afrika","NAME_PL":"Południowa Afryka","NAME_PT":"África do Sul","NAME_RU":"ЮАР","NAME_SV":"Sydafrika","NAME_TR":"Güney Afrika Cumhuriyeti","NAME_UK":"Південно-Африканська Республіка","NAME_UR":"جنوبی افریقا","NAME_VI":"Cộng hòa Nam Phi","NAME_ZH":"南非","NAME_ZHT":"南非","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[16.447559,-46.962891,37.887695,-22.146289],"geometry":{"type":"MultiPolygon","coordinates":[[[[29.364844,-22.193945],[29.377441,-22.192773],[29.663086,-22.146289],[29.902344,-22.18418],[30.19043,-22.291113],[30.460156,-22.329004],[30.711621,-22.297852],[30.916113,-22.290723],[31.073438,-22.307813],[31.197266,-22.344922],[31.287891,-22.402051],[31.293164,-22.454688],[31.300195,-22.478613],[31.348047,-22.617578],[31.419336,-22.825098],[31.466699,-23.016699],[31.531738,-23.279492],[31.529688,-23.425781],[31.545605,-23.482324],[31.604102,-23.55293],[31.675586,-23.674219],[31.7,-23.743066],[31.724023,-23.794531],[31.799609,-23.892188],[31.858301,-24.040234],[31.908008,-24.23623],[31.950586,-24.330273],[31.966602,-24.376465],[31.98584,-24.460645],[31.983203,-24.638281],[31.984375,-24.844043],[31.985742,-25.073828],[31.987012,-25.263477],[31.979395,-25.359473],[31.98457,-25.631934],[31.920313,-25.773926],[31.92832,-25.885352],[31.948242,-25.957617],[31.92168,-25.96875],[31.871484,-25.981641],[31.64043,-25.867285],[31.415137,-25.746582],[31.382617,-25.742969],[31.335156,-25.755566],[31.207324,-25.843359],[31.088086,-25.980664],[31.033301,-26.097754],[30.945215,-26.21875],[30.80332,-26.413477],[30.789062,-26.455469],[30.7875,-26.613672],[30.794336,-26.764258],[30.806738,-26.785254],[30.883301,-26.792383],[30.938086,-26.91582],[31.063379,-27.112305],[31.274023,-27.238379],[31.469531,-27.295508],[31.742578,-27.309961],[31.958398,-27.305859],[31.946094,-27.173633],[31.967188,-26.960645],[31.994727,-26.81748],[32.024805,-26.811133],[32.081641,-26.824805],[32.112891,-26.839453],[32.199609,-26.833496],[32.353516,-26.861621],[32.477734,-26.858496],[32.58877,-26.855762],[32.776563,-26.850977],[32.886133,-26.849316],[32.849121,-27.080176],[32.705859,-27.441602],[32.657031,-27.607324],[32.534766,-28.199707],[32.375195,-28.498242],[32.285742,-28.621484],[32.027246,-28.839551],[31.955371,-28.883789],[31.891504,-28.912109],[31.778223,-28.937109],[31.335156,-29.378125],[31.169922,-29.59082],[31.02334,-29.900879],[30.877637,-30.071094],[30.663574,-30.43418],[30.472266,-30.714551],[30.288672,-30.970117],[29.971191,-31.32207],[29.830273,-31.423828],[29.735156,-31.47041],[29.48291,-31.674707],[29.127832,-32.003125],[28.855957,-32.294238],[28.449414,-32.624609],[28.214063,-32.769238],[27.860645,-33.053906],[27.762109,-33.095996],[27.36377,-33.360547],[27.077441,-33.521191],[26.613672,-33.707422],[26.429492,-33.75957],[25.989551,-33.711328],[25.805859,-33.737109],[25.652441,-33.849609],[25.638184,-34.011133],[25.574219,-34.035352],[25.477246,-34.028125],[25.169727,-33.960742],[25.00293,-33.973633],[24.905566,-34.059766],[24.827148,-34.168945],[24.595508,-34.174512],[24.183008,-34.061523],[23.697852,-33.992773],[23.585547,-33.985156],[23.350391,-34.068945],[23.268164,-34.081152],[22.925586,-34.063184],[22.735547,-34.010254],[22.553809,-34.010059],[22.414453,-34.053809],[22.245508,-34.069141],[21.788965,-34.372656],[21.553223,-34.373047],[21.349805,-34.408203],[21.248926,-34.407031],[21.060156,-34.364648],[20.989844,-34.36748],[20.882422,-34.386523],[20.774805,-34.439941],[20.529883,-34.463086],[20.434668,-34.508594],[20.020605,-34.785742],[19.92627,-34.774707],[19.85,-34.756641],[19.634961,-34.75332],[19.391504,-34.605664],[19.298242,-34.615039],[19.323242,-34.570801],[19.330762,-34.492383],[19.279395,-34.437012],[19.244629,-34.412305],[19.149121,-34.416895],[19.09834,-34.350098],[18.952148,-34.34375],[18.901563,-34.360645],[18.831348,-34.364063],[18.825098,-34.296484],[18.830664,-34.253906],[18.826367,-34.188477],[18.808789,-34.108203],[18.752148,-34.082617],[18.708691,-34.071875],[18.605176,-34.077344],[18.533887,-34.085938],[18.500391,-34.109277],[18.462109,-34.168066],[18.461621,-34.346875],[18.410352,-34.295605],[18.352051,-34.188477],[18.333398,-34.074219],[18.354395,-33.939063],[18.465039,-33.887793],[18.456445,-33.796484],[18.433008,-33.717285],[18.309473,-33.514453],[18.26123,-33.42168],[18.156348,-33.358789],[18.074805,-33.207324],[17.992578,-33.152344],[17.958398,-33.046387],[17.878223,-32.961523],[17.851074,-32.827441],[17.895313,-32.750488],[17.965234,-32.708594],[18.036523,-32.775098],[18.125,-32.749121],[18.250879,-32.652148],[18.325293,-32.50498],[18.329883,-32.269531],[18.310742,-32.122461],[18.21084,-31.74248],[18.163672,-31.655176],[17.938574,-31.383203],[17.677441,-31.019043],[17.34707,-30.444824],[17.189063,-30.099805],[16.95,-29.403418],[16.739453,-29.009375],[16.480762,-28.641504],[16.447559,-28.617578],[16.487109,-28.572852],[16.626172,-28.487891],[16.689453,-28.464941],[16.723047,-28.475488],[16.755762,-28.452148],[16.7875,-28.394727],[16.794531,-28.34082],[16.810156,-28.264551],[16.841211,-28.218945],[16.875293,-28.12793],[16.933301,-28.069629],[17.05625,-28.031055],[17.149414,-28.082227],[17.188477,-28.13252],[17.20459,-28.198828],[17.245801,-28.230859],[17.312012,-28.228613],[17.358691,-28.269434],[17.385742,-28.353223],[17.380273,-28.413965],[17.342578,-28.45166],[17.347852,-28.501172],[17.395898,-28.562695],[17.415723,-28.621094],[17.447949,-28.698145],[17.616797,-28.743066],[17.699316,-28.768359],[17.841602,-28.776953],[17.976074,-28.811328],[18.102734,-28.87168],[18.31084,-28.88623],[18.600391,-28.855273],[18.83877,-28.869141],[19.026074,-28.92793],[19.161719,-28.93877],[19.245801,-28.90166],[19.282227,-28.847949],[19.270996,-28.777734],[19.312695,-28.733301],[19.407227,-28.714453],[19.48291,-28.661621],[19.539844,-28.574609],[19.671484,-28.503906],[19.877832,-28.449414],[19.980469,-28.45127],[19.980469,-28.310352],[19.980469,-27.865527],[19.980469,-27.420703],[19.980469,-26.975977],[19.980469,-26.531152],[19.980469,-26.086328],[19.980469,-25.641602],[19.980469,-25.196777],[19.980469,-24.776758],[20.028613,-24.807031],[20.345215,-25.029883],[20.430664,-25.14707],[20.473145,-25.221289],[20.609277,-25.491211],[20.710742,-25.733203],[20.793164,-25.915625],[20.799414,-25.999023],[20.811035,-26.080566],[20.822656,-26.120605],[20.815039,-26.164941],[20.757031,-26.26416],[20.697852,-26.340137],[20.626758,-26.443848],[20.619922,-26.580859],[20.641406,-26.742188],[20.685059,-26.822461],[20.739844,-26.848828],[20.870898,-26.808789],[20.953906,-26.821094],[21.070996,-26.851758],[21.45498,-26.832813],[21.501367,-26.842676],[21.646289,-26.854199],[21.694727,-26.840918],[21.738086,-26.806836],[21.788281,-26.710059],[21.833203,-26.67832],[21.914551,-26.661914],[22.010938,-26.63584],[22.090918,-26.580176],[22.217578,-26.388867],[22.470898,-26.219043],[22.548633,-26.178418],[22.597656,-26.132715],[22.640234,-26.071191],[22.729004,-25.857324],[22.796094,-25.679102],[22.818945,-25.595117],[22.878809,-25.45791],[22.95127,-25.370313],[23.02207,-25.324121],[23.05752,-25.312305],[23.14873,-25.288672],[23.266016,-25.266602],[23.389258,-25.291406],[23.521484,-25.344434],[23.670703,-25.433984],[23.823438,-25.544629],[23.89375,-25.600879],[23.969531,-25.626074],[24.104492,-25.634863],[24.192969,-25.63291],[24.330566,-25.742871],[24.400195,-25.749805],[24.555859,-25.783105],[24.748145,-25.817383],[24.869238,-25.813477],[24.998926,-25.754004],[25.09248,-25.751465],[25.213379,-25.75625],[25.346191,-25.739941],[25.443652,-25.714453],[25.518164,-25.662793],[25.583789,-25.60625],[25.65918,-25.437891],[25.702637,-25.302344],[25.769922,-25.146484],[25.852441,-24.935254],[25.881836,-24.787988],[25.912109,-24.747461],[26.031836,-24.702441],[26.130859,-24.671484],[26.397168,-24.613574],[26.451758,-24.582715],[26.501563,-24.513281],[26.617773,-24.395508],[26.761133,-24.297168],[26.835059,-24.24082],[26.970605,-23.763477],[26.987012,-23.70459],[27.085547,-23.57793],[27.146387,-23.524414],[27.185547,-23.523438],[27.241211,-23.490039],[27.313379,-23.424219],[27.399219,-23.383594],[27.49873,-23.368359],[27.563184,-23.324609],[27.592676,-23.252637],[27.643848,-23.217676],[27.716797,-23.219629],[27.758301,-23.196777],[27.768555,-23.148926],[27.812598,-23.108008],[27.890527,-23.073926],[27.931348,-23.033594],[27.935059,-22.987012],[28.02793,-22.87373],[28.210156,-22.693652],[28.381738,-22.593359],[28.542871,-22.572949],[28.695508,-22.535449],[28.839844,-22.480859],[28.945801,-22.395117],[29.013477,-22.278418],[29.129883,-22.213281],[29.364844,-22.193945]],[[28.736914,-30.101953],[28.901074,-30.038477],[28.975293,-29.999414],[29.029004,-29.967578],[29.098047,-29.919043],[29.121973,-29.801172],[29.142188,-29.700977],[29.195117,-29.65166],[29.249219,-29.618848],[29.293555,-29.566895],[29.348828,-29.441992],[29.386719,-29.319727],[29.390723,-29.269727],[29.370898,-29.218457],[29.335938,-29.163672],[29.301367,-29.089844],[29.259766,-29.07832],[29.178027,-29.036914],[29.058008,-28.953711],[28.953711,-28.881445],[28.85625,-28.776074],[28.816211,-28.758887],[28.721777,-28.687695],[28.681152,-28.646777],[28.652637,-28.597852],[28.625781,-28.581738],[28.583398,-28.594141],[28.471875,-28.61582],[28.232617,-28.70127],[28.084375,-28.77998],[27.959863,-28.87334],[27.830371,-28.909082],[27.735547,-28.940039],[27.660449,-29.046973],[27.590234,-29.146484],[27.527148,-29.236133],[27.491016,-29.276563],[27.458008,-29.302734],[27.424902,-29.360059],[27.356836,-29.455273],[27.294531,-29.519336],[27.207422,-29.554199],[27.095215,-29.599316],[27.056934,-29.625586],[27.051758,-29.664062],[27.091797,-29.753711],[27.130469,-29.840234],[27.193555,-29.941309],[27.239746,-30.015332],[27.312695,-30.105664],[27.355371,-30.158594],[27.349707,-30.247363],[27.364063,-30.279199],[27.388477,-30.315918],[27.408594,-30.325293],[27.431445,-30.338477],[27.491992,-30.363965],[27.506543,-30.380957],[27.549023,-30.41123],[27.589648,-30.466406],[27.666602,-30.542285],[27.753125,-30.6],[27.901855,-30.623828],[28.018164,-30.642285],[28.056836,-30.631055],[28.096387,-30.58457],[28.128711,-30.525098],[28.139063,-30.449902],[28.176172,-30.409863],[28.31543,-30.218457],[28.39209,-30.147559],[28.439063,-30.14248],[28.499609,-30.128906],[28.57666,-30.123047],[28.634375,-30.128711],[28.646875,-30.126563],[28.736914,-30.101953]]],[[[37.856934,-46.944238],[37.813965,-46.962891],[37.611816,-46.946484],[37.590039,-46.908008],[37.649707,-46.848926],[37.684863,-46.824023],[37.789551,-46.8375],[37.872852,-46.885449],[37.887695,-46.90166],[37.856934,-46.944238]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Somalia","SOV_A3":"SOM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Somalia","ADM0_A3":"SOM","GEOU_DIF":0,"GEOUNIT":"Somalia","GU_A3":"SOM","SU_DIF":0,"SUBUNIT":"Somalia","SU_A3":"SOM","BRK_DIFF":0,"NAME":"Somalia","NAME_LONG":"Somalia","BRK_A3":"SOM","BRK_NAME":"Somalia","BRK_GROUP":null,"ABBREV":"Som.","POSTAL":"SO","FORMAL_EN":"Federal Republic of Somalia","FORMAL_FR":null,"NAME_CIAWF":"Somalia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Somalia","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":8,"MAPCOLOR9":6,"MAPCOLOR13":7,"POP_EST":10192317.3,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":4719,"GDP_YEAR":2016,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"SO","ISO_A2":"SO","ISO_A2_EH":"SO","ISO_A3":"SOM","ISO_A3_EH":"SOM","ISO_N3":"706","ISO_N3_EH":"706","UN_A3":"706","WB_A2":"SO","WB_A3":"SOM","WOE_ID":-90,"WOE_ID_EH":23424949,"WOE_NOTE":"Includes Somaliland (2347021, 2347020, 2347017 and portion of 2347016)","ADM0_ISO":"SOM","ADM0_DIFF":null,"ADM0_TLC":"SOM","ADM0_A3_US":"SOM","ADM0_A3_FR":"SOM","ADM0_A3_RU":"SOM","ADM0_A3_ES":"SOM","ADM0_A3_CN":"SOM","ADM0_A3_TW":"SOM","ADM0_A3_IN":"SOM","ADM0_A3_NP":"SOM","ADM0_A3_PK":"SOM","ADM0_A3_DE":"SOM","ADM0_A3_GB":"SOM","ADM0_A3_BR":"SOM","ADM0_A3_IL":"SOM","ADM0_A3_PS":"SOM","ADM0_A3_SA":"SOM","ADM0_A3_EG":"SOM","ADM0_A3_MA":"SOM","ADM0_A3_PT":"SOM","ADM0_A3_AR":"SOM","ADM0_A3_JP":"SOM","ADM0_A3_KO":"SOM","ADM0_A3_VN":"SOM","ADM0_A3_TR":"SOM","ADM0_A3_ID":"SOM","ADM0_A3_PL":"SOM","ADM0_A3_GR":"SOM","ADM0_A3_IT":"SOM","ADM0_A3_NL":"SOM","ADM0_A3_SE":"SOM","ADM0_A3_BD":"SOM","ADM0_A3_UA":"SOM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":45.19238,"LABEL_Y":3.568925,"NE_ID":1159321261,"WIKIDATAID":"Q1045","NAME_AR":"الصومال","NAME_BN":"সোমালিয়া","NAME_DE":"Somalia","NAME_EN":"Somalia","NAME_ES":"Somalia","NAME_FA":"سومالی","NAME_FR":"Somalie","NAME_EL":"Σομαλία","NAME_HE":"סומליה","NAME_HI":"सोमालिया","NAME_HU":"Szomália","NAME_ID":"Somalia","NAME_IT":"Somalia","NAME_JA":"ソマリア","NAME_KO":"소말리아","NAME_NL":"Somalië","NAME_PL":"Somalia","NAME_PT":"Somália","NAME_RU":"Сомали","NAME_SV":"Somalia","NAME_TR":"Somali","NAME_UK":"Сомалі","NAME_UR":"صومالیہ","NAME_VI":"Somalia","NAME_ZH":"索马里","NAME_ZHT":"索馬利亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[40.964453,-1.695312,51.390234,11.983691],"geometry":{"type":"Polygon","coordinates":[[[41.532715,-1.695312],[41.537598,-1.613184],[41.521875,-1.572266],[41.426953,-1.449512],[41.249805,-1.220508],[41.11582,-1.047461],[40.978711,-0.870313],[40.978223,-0.728711],[40.976562,-0.307324],[40.973242,0.5354],[40.97002,1.378174],[40.966699,2.220947],[40.965039,2.642334],[40.964453,2.814648],[40.978711,2.842432],[41.134961,2.99707],[41.341797,3.20166],[41.613477,3.590479],[41.760938,3.801611],[41.883984,3.977734],[41.915332,4.031299],[42.024121,4.137939],[42.228418,4.20166],[42.355176,4.212256],[42.791602,4.291992],[42.856641,4.324219],[42.894727,4.361084],[42.930957,4.445312],[43.016016,4.56333],[43.125684,4.644482],[43.333984,4.750391],[43.538281,4.840332],[43.583496,4.85498],[43.829199,4.911426],[43.889453,4.930762],[43.988867,4.950537],[44.028125,4.950977],[44.369531,4.931201],[44.636621,4.915771],[44.911621,4.899902],[44.940527,4.912012],[45.132812,5.12168],[45.438477,5.45542],[45.633594,5.668262],[45.934961,5.997217],[46.166797,6.234668],[46.422949,6.497266],[46.671777,6.737256],[46.971191,7.026025],[47.159766,7.207861],[47.452832,7.490479],[47.731641,7.759326],[47.978223,7.99707],[48.126758,8.222168],[48.272754,8.443359],[48.428613,8.67959],[48.616602,8.9646],[48.793555,9.232715],[48.938086,9.451758],[48.938086,9.564111],[48.938281,9.807617],[48.938281,9.973486],[48.938379,10.433252],[48.938477,10.714209],[48.938477,10.982324],[48.938574,11.258447],[49.062109,11.27085],[49.388281,11.342725],[49.64209,11.450928],[50.110059,11.529297],[50.466211,11.727539],[50.52832,11.823193],[50.635938,11.943799],[50.792285,11.983691],[51.191309,11.841992],[51.254883,11.830713],[51.231836,11.74502],[51.218164,11.657666],[51.136328,11.505127],[51.084277,11.335645],[51.122266,11.076758],[51.140625,10.656885],[51.13125,10.595898],[51.104883,10.53584],[51.093848,10.488525],[51.050781,10.471973],[51.031836,10.444775],[51.063184,10.433936],[51.188281,10.479736],[51.185547,10.529834],[51.192969,10.554639],[51.295703,10.498682],[51.369141,10.475244],[51.390234,10.422607],[51.38457,10.386523],[51.268164,10.403125],[51.208789,10.431055],[51.035938,10.385156],[50.930078,10.335547],[50.898438,10.253125],[50.87373,9.92417],[50.832813,9.710498],[50.825,9.428174],[50.685156,9.241162],[50.637988,9.109277],[50.429785,8.845264],[50.321191,8.61958],[50.285742,8.509424],[50.102832,8.199805],[49.852051,7.962549],[49.76123,7.659521],[49.671191,7.469531],[49.57002,7.296973],[49.348535,6.990527],[49.234961,6.777344],[49.092676,6.407861],[49.049316,6.173633],[48.649023,5.494385],[48.233984,4.952686],[47.975293,4.497021],[47.511426,3.968262],[46.878809,3.285645],[46.051172,2.475146],[45.82627,2.309863],[44.920215,1.810156],[44.332715,1.390967],[44.032715,1.105908],[43.717578,0.857861],[43.467676,0.621631],[42.712109,-0.175684],[42.63418,-0.250781],[42.560742,-0.321484],[42.465625,-0.456543],[42.399414,-0.510059],[42.218945,-0.737988],[42.10625,-0.856152],[41.979883,-0.973047],[41.92627,-1.055566],[41.888281,-1.150586],[41.846191,-1.203418],[41.732227,-1.430078],[41.632031,-1.578516],[41.532715,-1.695312]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Somaliland","SOV_A3":"SOL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Somaliland","ADM0_A3":"SOL","GEOU_DIF":0,"GEOUNIT":"Somaliland","GU_A3":"SOL","SU_DIF":0,"SUBUNIT":"Somaliland","SU_A3":"SOL","BRK_DIFF":0,"NAME":"Somaliland","NAME_LONG":"Somaliland","BRK_A3":"SOL","BRK_NAME":"Somaliland","BRK_GROUP":null,"ABBREV":"Solnd.","POSTAL":"SL","FORMAL_EN":"Republic of Somaliland","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"Disputed","NOTE_BRK":"Self admin.; Claimed by Somalia","NAME_SORT":"Somaliland","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":6,"MAPCOLOR9":5,"MAPCOLOR13":2,"POP_EST":5096159,"POP_RANK":13,"POP_YEAR":2014,"GDP_MD":17836,"GDP_YEAR":2013,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"-99","ISO_A2":"-99","ISO_A2_EH":"-99","ISO_A3":"-99","ISO_A3_EH":"-99","ISO_N3":"-99","ISO_N3_EH":"-99","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":-99,"WOE_ID_EH":-99,"WOE_NOTE":"Includes old states of 2347021, 2347020, 2347017 and portion of 2347016.","ADM0_ISO":"SOM","ADM0_DIFF":"1","ADM0_TLC":"SOL","ADM0_A3_US":"SOM","ADM0_A3_FR":"SOM","ADM0_A3_RU":"SOM","ADM0_A3_ES":"SOM","ADM0_A3_CN":"SOM","ADM0_A3_TW":"SOL","ADM0_A3_IN":"SOM","ADM0_A3_NP":"SOM","ADM0_A3_PK":"SOM","ADM0_A3_DE":"SOM","ADM0_A3_GB":"SOM","ADM0_A3_BR":"SOM","ADM0_A3_IL":"SOM","ADM0_A3_PS":"SOM","ADM0_A3_SA":"SOM","ADM0_A3_EG":"SOM","ADM0_A3_MA":"SOM","ADM0_A3_PT":"SOM","ADM0_A3_AR":"SOM","ADM0_A3_JP":"SOM","ADM0_A3_KO":"SOM","ADM0_A3_VN":"SOM","ADM0_A3_TR":"SOM","ADM0_A3_ID":"SOM","ADM0_A3_PL":"SOM","ADM0_A3_GR":"SOM","ADM0_A3_IT":"SOM","ADM0_A3_NL":"SOM","ADM0_A3_SE":"SOM","ADM0_A3_BD":"SOM","ADM0_A3_UA":"SOM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":4,"MIN_LABEL":4.5,"MAX_LABEL":9,"LABEL_X":46.731595,"LABEL_Y":9.443889,"NE_ID":1159321259,"WIKIDATAID":"Q34754","NAME_AR":"صوماليلاند","NAME_BN":"সোমালিল্যান্ড","NAME_DE":"Somaliland","NAME_EN":"Somaliland","NAME_ES":"Somalilandia","NAME_FA":"سومالیلند","NAME_FR":"Somaliland","NAME_EL":"Σομαλιλάνδη","NAME_HE":"סומלילנד","NAME_HI":"सोमालीदेश","NAME_HU":"Szomáliföld","NAME_ID":"Somaliland","NAME_IT":"Somaliland","NAME_JA":"ソマリランド","NAME_KO":"소말릴란드","NAME_NL":"Somaliland","NAME_PL":"Somaliland","NAME_PT":"Somalilândia","NAME_RU":"Сомалиленд","NAME_SV":"Somaliland","NAME_TR":"Somaliland","NAME_UK":"Сомаліленд","NAME_UR":"صومالی لینڈ","NAME_VI":"Somaliland","NAME_ZH":"索马里兰","NAME_ZHT":"索馬利蘭","FCLASS_ISO":"Unrecognized","TLC_DIFF":"1","FCLASS_TLC":"Admin-0 country","FCLASS_US":"Unrecognized","FCLASS_FR":"Unrecognized","FCLASS_RU":"Unrecognized","FCLASS_ES":"Unrecognized","FCLASS_CN":"Unrecognized","FCLASS_TW":"Admin-0 country","FCLASS_IN":"Unrecognized","FCLASS_NP":"Unrecognized","FCLASS_PK":"Unrecognized","FCLASS_DE":"Unrecognized","FCLASS_GB":"Unrecognized","FCLASS_BR":"Unrecognized","FCLASS_IL":"Unrecognized","FCLASS_PS":"Unrecognized","FCLASS_SA":"Unrecognized","FCLASS_EG":"Unrecognized","FCLASS_MA":"Unrecognized","FCLASS_PT":"Unrecognized","FCLASS_AR":"Unrecognized","FCLASS_JP":"Unrecognized","FCLASS_KO":"Unrecognized","FCLASS_VN":"Unrecognized","FCLASS_TR":"Unrecognized","FCLASS_ID":"Unrecognized","FCLASS_PL":"Unrecognized","FCLASS_GR":"Unrecognized","FCLASS_IT":"Unrecognized","FCLASS_NL":"Unrecognized","FCLASS_SE":"Unrecognized","FCLASS_BD":"Unrecognized","FCLASS_UA":"Unrecognized"},"bbox":[42.656445,7.99707,48.938574,11.499805],"geometry":{"type":"Polygon","coordinates":[[[48.938574,11.258447],[48.938477,10.982324],[48.938477,10.714209],[48.938379,10.433252],[48.938281,9.973486],[48.938281,9.807617],[48.938086,9.564111],[48.938086,9.451758],[48.793555,9.232715],[48.616602,8.9646],[48.428613,8.67959],[48.272754,8.443359],[48.126758,8.222168],[47.978223,7.99707],[47.637695,7.99707],[47.305664,7.99707],[46.978223,7.99707],[46.919531,8.026123],[46.644727,8.118164],[46.295996,8.234961],[45.863281,8.379883],[45.555469,8.483008],[45.226953,8.59082],[44.893555,8.700195],[44.632031,8.786084],[44.30625,8.893066],[44.022852,8.986035],[43.983789,9.008838],[43.826758,9.150781],[43.620508,9.337402],[43.581055,9.340723],[43.48252,9.379492],[43.394336,9.480273],[43.303125,9.609082],[43.218457,9.770166],[43.181641,9.87998],[43.068945,9.926221],[43.014746,10.012598],[42.9125,10.14082],[42.841602,10.203076],[42.816406,10.257373],[42.783691,10.369629],[42.725195,10.491748],[42.669238,10.567578],[42.656445,10.6],[42.65957,10.621387],[42.763086,10.786914],[42.809766,10.845996],[42.862891,10.903223],[42.906152,10.960254],[42.922754,10.999316],[43.048633,11.194336],[43.159375,11.365723],[43.245996,11.499805],[43.441211,11.346436],[43.631152,11.035449],[43.852734,10.784277],[44.158203,10.550781],[44.279297,10.471875],[44.386523,10.430225],[44.942969,10.436719],[45.337695,10.649756],[45.695898,10.803906],[45.816699,10.835889],[46.024512,10.793701],[46.253906,10.781104],[46.460254,10.73418],[46.565039,10.745996],[46.973438,10.925391],[47.230078,11.099902],[47.40498,11.174023],[47.473828,11.174805],[47.7125,11.112012],[48.019238,11.139355],[48.438867,11.290137],[48.572559,11.320508],[48.674414,11.322656],[48.903125,11.254883],[48.938574,11.258447]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":3,"SOVEREIGNT":"Solomon Islands","SOV_A3":"SLB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Solomon Islands","ADM0_A3":"SLB","GEOU_DIF":0,"GEOUNIT":"Solomon Islands","GU_A3":"SLB","SU_DIF":0,"SUBUNIT":"Solomon Islands","SU_A3":"SLB","BRK_DIFF":0,"NAME":"Solomon Is.","NAME_LONG":"Solomon Islands","BRK_A3":"SLB","BRK_NAME":"Solomon Is.","BRK_GROUP":null,"ABBREV":"S. Is.","POSTAL":"SB","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Solomon Islands","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Solomon Islands","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":6,"POP_EST":669823,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":1589,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"BP","ISO_A2":"SB","ISO_A2_EH":"SB","ISO_A3":"SLB","ISO_A3_EH":"SLB","ISO_N3":"090","ISO_N3_EH":"090","UN_A3":"090","WB_A2":"SB","WB_A3":"SLB","WOE_ID":23424766,"WOE_ID_EH":23424766,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SLB","ADM0_DIFF":null,"ADM0_TLC":"SLB","ADM0_A3_US":"SLB","ADM0_A3_FR":"SLB","ADM0_A3_RU":"SLB","ADM0_A3_ES":"SLB","ADM0_A3_CN":"SLB","ADM0_A3_TW":"SLB","ADM0_A3_IN":"SLB","ADM0_A3_NP":"SLB","ADM0_A3_PK":"SLB","ADM0_A3_DE":"SLB","ADM0_A3_GB":"SLB","ADM0_A3_BR":"SLB","ADM0_A3_IL":"SLB","ADM0_A3_PS":"SLB","ADM0_A3_SA":"SLB","ADM0_A3_EG":"SLB","ADM0_A3_MA":"SLB","ADM0_A3_PT":"SLB","ADM0_A3_AR":"SLB","ADM0_A3_JP":"SLB","ADM0_A3_KO":"SLB","ADM0_A3_VN":"SLB","ADM0_A3_TR":"SLB","ADM0_A3_ID":"SLB","ADM0_A3_PL":"SLB","ADM0_A3_GR":"SLB","ADM0_A3_IT":"SLB","ADM0_A3_NL":"SLB","ADM0_A3_SE":"SLB","ADM0_A3_BD":"SLB","ADM0_A3_UA":"SLB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Melanesia","REGION_WB":"East Asia & Pacific","NAME_LEN":11,"LONG_LEN":15,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":159.170468,"LABEL_Y":-8.029548,"NE_ID":1159321249,"WIKIDATAID":"Q685","NAME_AR":"جزر سليمان","NAME_BN":"সলোমন দ্বীপপুঞ্জ","NAME_DE":"Salomonen","NAME_EN":"Solomon Islands","NAME_ES":"Islas Salomón","NAME_FA":"جزایر سلیمان","NAME_FR":"Îles Salomon","NAME_EL":"Νησιά Σολομώντα","NAME_HE":"איי שלמה","NAME_HI":"सोलोमन द्वीपसमूह","NAME_HU":"Salamon-szigetek","NAME_ID":"Kepulauan Solomon","NAME_IT":"Isole Salomone","NAME_JA":"ソロモン諸島","NAME_KO":"솔로몬 제도","NAME_NL":"Salomonseilanden","NAME_PL":"Wyspy Salomona","NAME_PT":"Ilhas Salomão","NAME_RU":"Соломоновы Острова","NAME_SV":"Salomonöarna","NAME_TR":"Solomon Adaları","NAME_UK":"Соломонові Острови","NAME_UR":"جزائر سلیمان","NAME_VI":"Quần đảo Solomon","NAME_ZH":"所罗门群岛","NAME_ZHT":"索羅門群島","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[155.677539,-11.832227,166.929199,-6.608887],"geometry":{"type":"MultiPolygon","coordinates":[[[[159.687695,-8.50791],[159.640039,-8.521484],[159.569238,-8.484766],[159.538477,-8.451367],[159.553223,-8.399219],[159.594629,-8.379492],[159.641602,-8.414453],[159.646289,-8.450391],[159.687695,-8.50791]]],[[[166.929199,-11.665137],[166.84082,-11.681348],[166.805957,-11.677344],[166.747461,-11.59082],[166.790918,-11.571289],[166.855469,-11.578809],[166.875098,-11.629688],[166.929199,-11.665137]]],[[[166.133203,-10.757812],[166.05332,-10.775098],[166.02793,-10.770215],[165.968164,-10.779492],[165.904004,-10.851465],[165.856543,-10.841406],[165.819336,-10.844043],[165.791016,-10.784766],[165.79043,-10.756055],[165.835938,-10.760645],[165.859863,-10.703027],[165.90918,-10.674316],[166.023828,-10.661133],[166.125684,-10.679883],[166.162109,-10.693066],[166.129883,-10.745215],[166.133203,-10.757812]]],[[[160.57627,-11.797852],[160.506543,-11.832227],[160.443066,-11.814941],[160.394531,-11.788867],[160.355078,-11.711914],[160.270215,-11.663965],[160.149512,-11.643945],[160.1,-11.610742],[160.087109,-11.594336],[160.003516,-11.57959],[159.979297,-11.537988],[159.986328,-11.494727],[160,-11.471973],[160.077344,-11.492871],[160.44873,-11.695898],[160.537109,-11.758789],[160.57627,-11.797852]]],[[[161.547852,-9.625684],[161.558887,-9.732715],[161.553809,-9.769727],[161.47793,-9.691113],[161.44248,-9.718945],[161.409766,-9.681641],[161.412012,-9.600391],[161.416992,-9.51377],[161.402246,-9.448145],[161.36416,-9.353418],[161.406836,-9.368457],[161.547852,-9.625684]]],[[[159.188574,-9.123535],[159.175098,-9.125977],[159.128125,-9.11377],[159.071094,-9.109668],[159.036328,-9.075],[159.077637,-9.025391],[159.129785,-8.993066],[159.153711,-9.001367],[159.176074,-9.02207],[159.228418,-9.02998],[159.233984,-9.09375],[159.188574,-9.123535]]],[[[160.168164,-8.995508],[160.225684,-9.00957],[160.253516,-9.007324],[160.319336,-9.061133],[160.40752,-9.140332],[160.371484,-9.18125],[160.3,-9.160352],[160.275977,-9.168652],[160.268164,-9.163184],[160.253125,-9.123438],[160.175195,-9.084082],[160.105371,-9.080762],[160.096289,-9.033984],[160.168164,-8.995508]]],[[[157.763477,-8.242188],[157.82627,-8.324023],[157.898438,-8.506348],[157.885449,-8.569141],[157.833691,-8.572656],[157.819336,-8.612012],[157.749219,-8.523633],[157.655957,-8.499707],[157.587891,-8.44541],[157.564551,-8.337793],[157.558008,-8.269922],[157.504199,-8.258301],[157.351367,-8.275293],[157.302441,-8.333301],[157.232422,-8.314844],[157.217578,-8.262793],[157.228516,-8.211621],[157.321582,-8.16123],[157.340625,-8.096387],[157.433398,-7.984668],[157.490625,-7.965723],[157.598828,-8.005957],[157.612305,-8.164844],[157.65127,-8.216797],[157.763477,-8.242188]]],[[[158.200781,-8.821973],[158.178809,-8.825781],[158.155371,-8.785938],[158.209961,-8.678125],[158.236328,-8.764844],[158.253418,-8.797363],[158.200781,-8.821973]]],[[[158.10791,-8.68418],[158.009473,-8.763086],[157.937598,-8.736426],[157.879297,-8.66875],[157.898438,-8.587207],[157.909277,-8.565625],[157.938281,-8.560938],[157.966992,-8.544238],[157.998438,-8.508203],[158.105469,-8.536816],[158.132227,-8.556641],[158.068359,-8.606641],[158.089648,-8.622656],[158.103516,-8.646484],[158.10791,-8.68418]]],[[[157.388965,-8.713477],[157.389063,-8.728125],[157.333887,-8.7],[157.212305,-8.565039],[157.233789,-8.519922],[157.345117,-8.432422],[157.379492,-8.420898],[157.410938,-8.475098],[157.383496,-8.555078],[157.34707,-8.575488],[157.332227,-8.650684],[157.388965,-8.713477]]],[[[156.687891,-7.923047],[156.66875,-7.936816],[156.635352,-7.882812],[156.611035,-7.865918],[156.611719,-7.805762],[156.510938,-7.707813],[156.502441,-7.640234],[156.560938,-7.574023],[156.639648,-7.612598],[156.717676,-7.695703],[156.809082,-7.722852],[156.790234,-7.77793],[156.708008,-7.876953],[156.687891,-7.923047]]],[[[156.603906,-8.171582],[156.591699,-8.196289],[156.539648,-8.072949],[156.542285,-8.01084],[156.55127,-7.970996],[156.570312,-7.958789],[156.612402,-8.096191],[156.603906,-8.171582]]],[[[157.171875,-8.108105],[157.15,-8.123242],[157.041211,-8.11748],[156.958301,-8.014355],[156.958984,-7.937988],[157.024121,-7.867871],[157.102734,-7.855469],[157.145801,-7.882617],[157.186133,-7.941211],[157.200586,-8.015918],[157.191504,-8.081836],[157.171875,-8.108105]]],[[[155.839844,-7.097168],[155.739355,-7.121094],[155.677539,-7.088965],[155.70498,-7.012695],[155.738965,-6.972949],[155.864648,-7.043262],[155.839844,-7.097168]]],[[[157.64541,-8.758887],[157.643164,-8.794043],[157.58584,-8.783105],[157.45791,-8.730176],[157.453516,-8.705957],[157.526367,-8.69707],[157.579297,-8.703711],[157.623242,-8.73457],[157.64541,-8.758887]]],[[[159.750391,-9.272656],[159.970605,-9.433301],[160.065332,-9.418652],[160.35459,-9.421582],[160.525195,-9.53623],[160.625488,-9.588867],[160.681836,-9.691602],[160.751465,-9.715039],[160.794336,-9.767383],[160.818945,-9.862793],[160.80166,-9.87832],[160.713086,-9.913867],[160.649219,-9.928613],[160.481641,-9.894727],[160.321094,-9.821289],[160.002344,-9.812402],[159.853711,-9.791504],[159.802734,-9.763477],[159.755469,-9.726074],[159.680469,-9.636816],[159.621875,-9.532129],[159.612305,-9.470703],[159.607422,-9.353809],[159.625586,-9.31123],[159.686328,-9.268652],[159.750391,-9.272656]]],[[[159.879102,-8.534277],[159.880859,-8.557422],[159.746484,-8.473828],[159.644531,-8.37168],[159.354102,-8.260449],[159.291699,-8.203418],[159.239258,-8.196289],[159.090234,-8.10332],[158.944043,-8.040723],[158.85459,-7.959766],[158.831836,-7.92666],[158.778027,-7.906934],[158.68623,-7.818066],[158.596973,-7.759082],[158.56543,-7.651367],[158.478809,-7.577148],[158.457422,-7.544727],[158.734375,-7.604297],[158.862793,-7.722363],[158.972461,-7.78916],[159.010547,-7.837402],[159.109375,-7.903516],[159.198047,-7.90957],[159.286816,-7.976172],[159.367676,-7.994141],[159.431445,-8.029004],[159.843066,-8.326953],[159.793945,-8.406055],[159.848633,-8.463477],[159.879102,-8.534277]]],[[[157.486719,-7.330371],[157.518652,-7.365625],[157.441309,-7.425684],[157.339258,-7.393066],[157.317285,-7.359375],[157.314648,-7.341504],[157.243457,-7.353027],[157.101562,-7.323633],[156.904297,-7.180469],[156.695801,-6.910938],[156.494922,-6.761621],[156.457422,-6.715234],[156.452539,-6.638281],[156.479395,-6.608887],[156.604199,-6.641016],[156.76543,-6.764063],[157.030273,-6.891992],[157.102539,-6.957227],[157.148438,-7.11377],[157.193359,-7.160352],[157.336133,-7.280469],[157.411621,-7.308594],[157.451563,-7.313672],[157.486719,-7.330371]]],[[[160.749414,-8.313965],[160.997656,-8.612012],[160.987793,-8.664844],[160.954102,-8.698926],[160.944336,-8.799023],[160.975586,-8.8375],[161.043457,-8.855078],[161.158691,-8.961816],[161.204688,-9.09248],[161.208789,-9.132617],[161.256641,-9.191992],[161.258496,-9.316895],[161.367969,-9.490332],[161.377539,-9.57373],[161.367383,-9.61123],[161.321875,-9.589551],[161.191016,-9.392871],[161.041504,-9.308008],[161.024414,-9.271484],[160.873438,-9.156836],[160.77207,-8.963867],[160.662598,-8.620605],[160.714063,-8.539258],[160.59043,-8.372754],[160.596289,-8.328223],[160.648535,-8.338379],[160.684766,-8.336328],[160.702148,-8.316504],[160.749414,-8.313965]]],[[[161.715332,-10.387305],[161.841113,-10.446094],[161.914355,-10.436426],[162.022852,-10.476855],[162.105371,-10.453809],[162.156836,-10.506055],[162.287207,-10.709961],[162.287988,-10.776172],[162.37334,-10.823242],[162.30127,-10.832129],[162.20127,-10.807813],[162.123633,-10.824414],[162.042676,-10.784863],[161.905859,-10.764355],[161.786816,-10.716895],[161.537891,-10.566406],[161.539258,-10.491309],[161.499121,-10.45459],[161.487012,-10.361426],[161.397949,-10.331934],[161.293945,-10.326465],[161.285547,-10.282422],[161.304785,-10.204395],[161.382324,-10.205566],[161.475684,-10.237988],[161.653809,-10.351855],[161.697949,-10.371289],[161.715332,-10.387305]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Slovakia","SOV_A3":"SVK","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Slovakia","ADM0_A3":"SVK","GEOU_DIF":0,"GEOUNIT":"Slovakia","GU_A3":"SVK","SU_DIF":0,"SUBUNIT":"Slovakia","SU_A3":"SVK","BRK_DIFF":0,"NAME":"Slovakia","NAME_LONG":"Slovakia","BRK_A3":"SVK","BRK_NAME":"Slovakia","BRK_GROUP":null,"ABBREV":"Svk.","POSTAL":"SK","FORMAL_EN":"Slovak Republic","FORMAL_FR":null,"NAME_CIAWF":"Slovakia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Slovak Republic","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":9,"POP_EST":5454073,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":105079,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"LO","ISO_A2":"SK","ISO_A2_EH":"SK","ISO_A3":"SVK","ISO_A3_EH":"SVK","ISO_N3":"703","ISO_N3_EH":"703","UN_A3":"703","WB_A2":"SK","WB_A3":"SVK","WOE_ID":23424877,"WOE_ID_EH":23424877,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SVK","ADM0_DIFF":null,"ADM0_TLC":"SVK","ADM0_A3_US":"SVK","ADM0_A3_FR":"SVK","ADM0_A3_RU":"SVK","ADM0_A3_ES":"SVK","ADM0_A3_CN":"SVK","ADM0_A3_TW":"SVK","ADM0_A3_IN":"SVK","ADM0_A3_NP":"SVK","ADM0_A3_PK":"SVK","ADM0_A3_DE":"SVK","ADM0_A3_GB":"SVK","ADM0_A3_BR":"SVK","ADM0_A3_IL":"SVK","ADM0_A3_PS":"SVK","ADM0_A3_SA":"SVK","ADM0_A3_EG":"SVK","ADM0_A3_MA":"SVK","ADM0_A3_PT":"SVK","ADM0_A3_AR":"SVK","ADM0_A3_JP":"SVK","ADM0_A3_KO":"SVK","ADM0_A3_VN":"SVK","ADM0_A3_TR":"SVK","ADM0_A3_ID":"SVK","ADM0_A3_PL":"SVK","ADM0_A3_GR":"SVK","ADM0_A3_IT":"SVK","ADM0_A3_NL":"SVK","ADM0_A3_SE":"SVK","ADM0_A3_BD":"SVK","ADM0_A3_UA":"SVK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":19.049868,"LABEL_Y":48.734044,"NE_ID":1159321283,"WIKIDATAID":"Q214","NAME_AR":"سلوفاكيا","NAME_BN":"স্লোভাকিয়া","NAME_DE":"Slowakei","NAME_EN":"Slovakia","NAME_ES":"Eslovaquia","NAME_FA":"اسلواکی","NAME_FR":"Slovaquie","NAME_EL":"Σλοβακία","NAME_HE":"סלובקיה","NAME_HI":"स्लोवाकिया","NAME_HU":"Szlovákia","NAME_ID":"Slowakia","NAME_IT":"Slovacchia","NAME_JA":"スロバキア","NAME_KO":"슬로바키아","NAME_NL":"Slowakije","NAME_PL":"Słowacja","NAME_PT":"Eslováquia","NAME_RU":"Словакия","NAME_SV":"Slovakien","NAME_TR":"Slovakya","NAME_UK":"Словаччина","NAME_UR":"سلوواکیہ","NAME_VI":"Slovakia","NAME_ZH":"斯洛伐克","NAME_ZHT":"斯洛伐克","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[16.862695,47.763428,22.538672,49.597705],"geometry":{"type":"Polygon","coordinates":[[[22.538672,49.072705],[22.524121,49.031396],[22.483203,48.983252],[22.432031,48.933545],[22.389453,48.873486],[22.332617,48.745068],[22.295215,48.68584],[22.142871,48.568506],[22.131836,48.405322],[22.111328,48.393359],[21.766992,48.338086],[21.721484,48.346582],[21.674609,48.378369],[21.648633,48.401465],[21.63252,48.418506],[21.602637,48.463672],[21.563184,48.495703],[21.504688,48.521875],[21.451367,48.552246],[21.382422,48.553467],[21.196387,48.510596],[21.067285,48.505908],[20.981152,48.519678],[20.866602,48.545654],[20.643164,48.549707],[20.490039,48.526904],[20.475,48.495117],[20.333789,48.295557],[20.128613,48.222021],[19.950391,48.146631],[19.898633,48.131348],[19.810059,48.155029],[19.70918,48.199805],[19.625391,48.223096],[19.564258,48.212842],[19.497461,48.162109],[19.466992,48.110693],[19.265137,48.073047],[18.91416,48.05083],[18.791895,48.000293],[18.750098,47.939453],[18.74834,47.892676],[18.778027,47.852881],[18.740625,47.806494],[18.724219,47.787158],[18.47627,47.777002],[18.145605,47.763428],[17.947949,47.766895],[17.761914,47.770166],[17.635254,47.809912],[17.480664,47.887598],[17.317285,47.990918],[17.301563,47.993359],[17.277246,48.004346],[17.174609,48.012061],[17.147363,48.005957],[17.085938,48.039551],[17.067871,48.083252],[16.972656,48.198096],[16.86543,48.386914],[16.862695,48.441406],[16.904492,48.503516],[16.943359,48.550928],[16.948828,48.588574],[16.953125,48.598828],[16.985254,48.676904],[17.063281,48.780762],[17.135645,48.841064],[17.188477,48.860937],[17.296875,48.842822],[17.482617,48.827783],[17.625391,48.841846],[17.758496,48.888135],[17.830859,48.928613],[17.892676,48.971143],[17.913281,48.99873],[17.940723,49.011963],[18.050879,49.036523],[18.085938,49.065137],[18.100391,49.119336],[18.109961,49.179785],[18.132617,49.224561],[18.160938,49.257373],[18.364844,49.33623],[18.383105,49.363916],[18.41582,49.390918],[18.476074,49.421094],[18.53457,49.464697],[18.596484,49.491455],[18.676172,49.488477],[18.749707,49.493994],[18.807031,49.509229],[18.832227,49.510791],[18.938184,49.498291],[18.957227,49.448291],[18.968359,49.39624],[19.149414,49.4],[19.250195,49.511426],[19.302344,49.524854],[19.38623,49.563623],[19.441602,49.597705],[19.479688,49.576367],[19.534766,49.504785],[19.593066,49.447119],[19.62666,49.424365],[19.630273,49.406641],[19.66416,49.396045],[19.730078,49.3896],[19.773926,49.372168],[19.787012,49.318555],[19.787988,49.269971],[19.767383,49.235205],[19.756641,49.204395],[19.802246,49.192334],[19.868945,49.204004],[19.916113,49.221387],[20.057617,49.181299],[20.107617,49.270752],[20.163672,49.316406],[20.236523,49.337646],[20.302539,49.365527],[20.362988,49.385254],[20.404688,49.384082],[20.422656,49.392334],[20.474512,49.390186],[20.53457,49.381201],[20.616113,49.391699],[20.729004,49.369922],[20.799512,49.328662],[20.868457,49.314697],[20.947266,49.31709],[21.001172,49.339844],[21.079395,49.418262],[21.136133,49.417041],[21.225,49.429443],[21.350488,49.42876],[21.639648,49.411963],[21.712109,49.381934],[21.890137,49.343457],[21.967676,49.299072],[22.002148,49.246094],[22.020117,49.209521],[22.202539,49.153223],[22.473047,49.081299],[22.538672,49.072705]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Slovenia","SOV_A3":"SVN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Slovenia","ADM0_A3":"SVN","GEOU_DIF":0,"GEOUNIT":"Slovenia","GU_A3":"SVN","SU_DIF":0,"SUBUNIT":"Slovenia","SU_A3":"SVN","BRK_DIFF":0,"NAME":"Slovenia","NAME_LONG":"Slovenia","BRK_A3":"SVN","BRK_NAME":"Slovenia","BRK_GROUP":null,"ABBREV":"Slo.","POSTAL":"SLO","FORMAL_EN":"Republic of Slovenia","FORMAL_FR":null,"NAME_CIAWF":"Slovenia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Slovenia","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":3,"MAPCOLOR9":2,"MAPCOLOR13":12,"POP_EST":2087946,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":54174,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"SI","ISO_A2":"SI","ISO_A2_EH":"SI","ISO_A3":"SVN","ISO_A3_EH":"SVN","ISO_N3":"705","ISO_N3_EH":"705","UN_A3":"705","WB_A2":"SI","WB_A3":"SVN","WOE_ID":23424945,"WOE_ID_EH":23424945,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SVN","ADM0_DIFF":null,"ADM0_TLC":"SVN","ADM0_A3_US":"SVN","ADM0_A3_FR":"SVN","ADM0_A3_RU":"SVN","ADM0_A3_ES":"SVN","ADM0_A3_CN":"SVN","ADM0_A3_TW":"SVN","ADM0_A3_IN":"SVN","ADM0_A3_NP":"SVN","ADM0_A3_PK":"SVN","ADM0_A3_DE":"SVN","ADM0_A3_GB":"SVN","ADM0_A3_BR":"SVN","ADM0_A3_IL":"SVN","ADM0_A3_PS":"SVN","ADM0_A3_SA":"SVN","ADM0_A3_EG":"SVN","ADM0_A3_MA":"SVN","ADM0_A3_PT":"SVN","ADM0_A3_AR":"SVN","ADM0_A3_JP":"SVN","ADM0_A3_KO":"SVN","ADM0_A3_VN":"SVN","ADM0_A3_TR":"SVN","ADM0_A3_ID":"SVN","ADM0_A3_PL":"SVN","ADM0_A3_GR":"SVN","ADM0_A3_IT":"SVN","ADM0_A3_NL":"SVN","ADM0_A3_SE":"SVN","ADM0_A3_BD":"SVN","ADM0_A3_UA":"SVN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":14.915312,"LABEL_Y":46.06076,"NE_ID":1159321285,"WIKIDATAID":"Q215","NAME_AR":"سلوفينيا","NAME_BN":"স্লোভেনিয়া","NAME_DE":"Slowenien","NAME_EN":"Slovenia","NAME_ES":"Eslovenia","NAME_FA":"اسلوونی","NAME_FR":"Slovénie","NAME_EL":"Σλοβενία","NAME_HE":"סלובניה","NAME_HI":"स्लोवेनिया","NAME_HU":"Szlovénia","NAME_ID":"Slovenia","NAME_IT":"Slovenia","NAME_JA":"スロベニア","NAME_KO":"슬로베니아","NAME_NL":"Slovenië","NAME_PL":"Słowenia","NAME_PT":"Eslovénia","NAME_RU":"Словения","NAME_SV":"Slovenien","NAME_TR":"Slovenya","NAME_UK":"Словенія","NAME_UR":"سلووینیا","NAME_VI":"Slovenia","NAME_ZH":"斯洛文尼亚","NAME_ZHT":"斯洛維尼亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[13.378223,45.428369,16.516211,46.863281],"geometry":{"type":"Polygon","coordinates":[[[16.516211,46.499902],[16.427637,46.524414],[16.321191,46.534619],[16.301172,46.521387],[16.258398,46.50791],[16.236719,46.483838],[16.25332,46.389111],[16.227441,46.372852],[16.106445,46.382227],[16.066504,46.371338],[16.000684,46.305371],[15.933301,46.277637],[15.847559,46.257861],[15.784277,46.233984],[15.704199,46.213232],[15.635938,46.200732],[15.608984,46.171924],[15.592578,46.13999],[15.596875,46.109229],[15.666211,46.048486],[15.675586,45.983691],[15.668066,45.904443],[15.652148,45.862158],[15.624805,45.834033],[15.454102,45.797607],[15.277051,45.732617],[15.272949,45.717725],[15.353711,45.659912],[15.356934,45.645508],[15.290137,45.612646],[15.283594,45.579687],[15.291211,45.541553],[15.32666,45.502295],[15.339453,45.467041],[15.24209,45.441406],[15.110449,45.450781],[14.95459,45.499902],[14.9,45.492676],[14.84707,45.467334],[14.793066,45.478223],[14.733594,45.508496],[14.649512,45.571484],[14.608594,45.610107],[14.591797,45.65127],[14.568848,45.657227],[14.533984,45.645264],[14.505176,45.595215],[14.427344,45.505762],[14.369922,45.481445],[14.283008,45.486621],[14.16123,45.485156],[14.085547,45.477832],[13.992773,45.509424],[13.970313,45.503369],[13.970117,45.482617],[13.935645,45.449805],[13.878711,45.428369],[13.615234,45.476758],[13.57793,45.516895],[13.637305,45.535937],[13.719824,45.587598],[13.775977,45.581982],[13.844727,45.592871],[13.874707,45.614844],[13.831152,45.68042],[13.72168,45.761279],[13.663477,45.791992],[13.583398,45.812354],[13.569629,45.834131],[13.613965,45.96167],[13.600586,45.979785],[13.50918,45.973779],[13.487695,45.987109],[13.480273,46.009229],[13.486426,46.039551],[13.548047,46.089111],[13.616602,46.133105],[13.634961,46.157764],[13.63252,46.177051],[13.544727,46.196582],[13.491797,46.216602],[13.449805,46.223535],[13.420996,46.212305],[13.399609,46.224951],[13.378223,46.261621],[13.399512,46.317529],[13.478516,46.369189],[13.563281,46.415088],[13.637109,46.448535],[13.679688,46.462891],[13.7,46.520264],[13.743945,46.514307],[13.831348,46.51123],[13.928809,46.498193],[14.019629,46.482178],[14.099512,46.461914],[14.267285,46.440723],[14.419922,46.42793],[14.465918,46.416113],[14.503516,46.417041],[14.549805,46.399707],[14.577148,46.412939],[14.596973,46.436084],[14.680176,46.463428],[14.756738,46.499121],[14.810547,46.54458],[14.840625,46.580469],[14.893262,46.605908],[14.949414,46.613232],[15.000684,46.625977],[15.216992,46.642969],[15.439258,46.629639],[15.545313,46.654639],[15.632617,46.698437],[15.760254,46.710742],[15.766895,46.711279],[15.957617,46.677637],[15.972266,46.697217],[15.980469,46.705859],[15.976855,46.801367],[16.037207,46.844824],[16.093066,46.863281],[16.283594,46.857275],[16.308496,46.827979],[16.318457,46.78252],[16.335449,46.721631],[16.367188,46.704785],[16.38457,46.680811],[16.38125,46.638672],[16.418457,46.607227],[16.505664,46.52207],[16.516211,46.499902]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Singapore","SOV_A3":"SGP","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Singapore","ADM0_A3":"SGP","GEOU_DIF":0,"GEOUNIT":"Singapore","GU_A3":"SGP","SU_DIF":0,"SUBUNIT":"Singapore","SU_A3":"SGP","BRK_DIFF":0,"NAME":"Singapore","NAME_LONG":"Singapore","BRK_A3":"SGP","BRK_NAME":"Singapore","BRK_GROUP":null,"ABBREV":"Sing.","POSTAL":"SG","FORMAL_EN":"Republic of Singapore","FORMAL_FR":null,"NAME_CIAWF":"Singapore","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Singapore","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":3,"MAPCOLOR9":7,"MAPCOLOR13":3,"POP_EST":5703569,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":372062,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"SN","ISO_A2":"SG","ISO_A2_EH":"SG","ISO_A3":"SGP","ISO_A3_EH":"SGP","ISO_N3":"702","ISO_N3_EH":"702","UN_A3":"702","WB_A2":"SG","WB_A3":"SGP","WOE_ID":23424948,"WOE_ID_EH":23424948,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SGP","ADM0_DIFF":null,"ADM0_TLC":"SGP","ADM0_A3_US":"SGP","ADM0_A3_FR":"SGP","ADM0_A3_RU":"SGP","ADM0_A3_ES":"SGP","ADM0_A3_CN":"SGP","ADM0_A3_TW":"SGP","ADM0_A3_IN":"SGP","ADM0_A3_NP":"SGP","ADM0_A3_PK":"SGP","ADM0_A3_DE":"SGP","ADM0_A3_GB":"SGP","ADM0_A3_BR":"SGP","ADM0_A3_IL":"SGP","ADM0_A3_PS":"SGP","ADM0_A3_SA":"SGP","ADM0_A3_EG":"SGP","ADM0_A3_MA":"SGP","ADM0_A3_PT":"SGP","ADM0_A3_AR":"SGP","ADM0_A3_JP":"SGP","ADM0_A3_KO":"SGP","ADM0_A3_VN":"SGP","ADM0_A3_TR":"SGP","ADM0_A3_ID":"SGP","ADM0_A3_PL":"SGP","ADM0_A3_GR":"SGP","ADM0_A3_IT":"SGP","ADM0_A3_NL":"SGP","ADM0_A3_SE":"SGP","ADM0_A3_BD":"SGP","ADM0_A3_UA":"SGP","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":5,"TINY":3,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":103.816925,"LABEL_Y":1.366587,"NE_ID":1159321247,"WIKIDATAID":"Q334","NAME_AR":"سنغافورة","NAME_BN":"সিঙ্গাপুর","NAME_DE":"Singapur","NAME_EN":"Singapore","NAME_ES":"Singapur","NAME_FA":"سنگاپور","NAME_FR":"Singapour","NAME_EL":"Σιγκαπούρη","NAME_HE":"סינגפור","NAME_HI":"सिंगापुर","NAME_HU":"Szingapúr","NAME_ID":"Singapura","NAME_IT":"Singapore","NAME_JA":"シンガポール","NAME_KO":"싱가포르","NAME_NL":"Singapore","NAME_PL":"Singapur","NAME_PT":"Singapura","NAME_RU":"Сингапур","NAME_SV":"Singapore","NAME_TR":"Singapur","NAME_UK":"Сінгапур","NAME_UR":"سنگاپور","NAME_VI":"Singapore","NAME_ZH":"新加坡","NAME_ZHT":"新加坡","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[103.650195,1.265381,103.996387,1.44707],"geometry":{"type":"Polygon","coordinates":[[[103.969727,1.331445],[103.819922,1.265381],[103.650195,1.325537],[103.705273,1.423437],[103.817969,1.44707],[103.908984,1.415967],[103.96084,1.392236],[103.996387,1.365234],[103.969727,1.331445]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Sierra Leone","SOV_A3":"SLE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Sierra Leone","ADM0_A3":"SLE","GEOU_DIF":0,"GEOUNIT":"Sierra Leone","GU_A3":"SLE","SU_DIF":0,"SUBUNIT":"Sierra Leone","SU_A3":"SLE","BRK_DIFF":0,"NAME":"Sierra Leone","NAME_LONG":"Sierra Leone","BRK_A3":"SLE","BRK_NAME":"Sierra Leone","BRK_GROUP":null,"ABBREV":"S.L.","POSTAL":"SL","FORMAL_EN":"Republic of Sierra Leone","FORMAL_FR":null,"NAME_CIAWF":"Sierra Leone","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Sierra Leone","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":7,"POP_EST":7813215,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":4121,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"SL","ISO_A2":"SL","ISO_A2_EH":"SL","ISO_A3":"SLE","ISO_A3_EH":"SLE","ISO_N3":"694","ISO_N3_EH":"694","UN_A3":"694","WB_A2":"SL","WB_A3":"SLE","WOE_ID":23424946,"WOE_ID_EH":23424946,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SLE","ADM0_DIFF":null,"ADM0_TLC":"SLE","ADM0_A3_US":"SLE","ADM0_A3_FR":"SLE","ADM0_A3_RU":"SLE","ADM0_A3_ES":"SLE","ADM0_A3_CN":"SLE","ADM0_A3_TW":"SLE","ADM0_A3_IN":"SLE","ADM0_A3_NP":"SLE","ADM0_A3_PK":"SLE","ADM0_A3_DE":"SLE","ADM0_A3_GB":"SLE","ADM0_A3_BR":"SLE","ADM0_A3_IL":"SLE","ADM0_A3_PS":"SLE","ADM0_A3_SA":"SLE","ADM0_A3_EG":"SLE","ADM0_A3_MA":"SLE","ADM0_A3_PT":"SLE","ADM0_A3_AR":"SLE","ADM0_A3_JP":"SLE","ADM0_A3_KO":"SLE","ADM0_A3_VN":"SLE","ADM0_A3_TR":"SLE","ADM0_A3_ID":"SLE","ADM0_A3_PL":"SLE","ADM0_A3_GR":"SLE","ADM0_A3_IT":"SLE","ADM0_A3_NL":"SLE","ADM0_A3_SE":"SLE","ADM0_A3_BD":"SLE","ADM0_A3_UA":"SLE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":12,"LONG_LEN":12,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-11.763677,"LABEL_Y":8.617449,"NE_ID":1159321251,"WIKIDATAID":"Q1044","NAME_AR":"سيراليون","NAME_BN":"সিয়েরা লিওন","NAME_DE":"Sierra Leone","NAME_EN":"Sierra Leone","NAME_ES":"Sierra Leona","NAME_FA":"سیرالئون","NAME_FR":"Sierra Leone","NAME_EL":"Σιέρα Λεόνε","NAME_HE":"סיירה לאון","NAME_HI":"सिएरा लियोन","NAME_HU":"Sierra Leone","NAME_ID":"Sierra Leone","NAME_IT":"Sierra Leone","NAME_JA":"シエラレオネ","NAME_KO":"시에라리온","NAME_NL":"Sierra Leone","NAME_PL":"Sierra Leone","NAME_PT":"Serra Leoa","NAME_RU":"Сьерра-Леоне","NAME_SV":"Sierra Leone","NAME_TR":"Sierra Leone","NAME_UK":"Сьєрра-Леоне","NAME_UR":"سیرالیون","NAME_VI":"Sierra Leone","NAME_ZH":"塞拉利昂","NAME_ZHT":"獅子山","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-13.292676,6.906543,-10.283203,9.996533],"geometry":{"type":"MultiPolygon","coordinates":[[[[-10.283203,8.485156],[-10.285742,8.454102],[-10.314648,8.31084],[-10.359814,8.187939],[-10.389551,8.157617],[-10.516748,8.125293],[-10.57085,8.071143],[-10.617578,7.896436],[-10.647461,7.759375],[-10.691309,7.736426],[-10.878076,7.538232],[-11.000244,7.463037],[-11.0854,7.398584],[-11.166113,7.314404],[-11.267676,7.232617],[-11.37666,7.094678],[-11.454541,6.951221],[-11.50752,6.906543],[-11.54751,6.946973],[-11.733447,7.088574],[-11.929199,7.183545],[-12.346631,7.341797],[-12.485645,7.386279],[-12.480664,7.44248],[-12.432715,7.54502],[-12.510449,7.665723],[-12.480273,7.753271],[-12.510449,7.753369],[-12.570215,7.700586],[-12.697607,7.715869],[-12.781934,7.791113],[-12.850879,7.818701],[-12.880957,7.856641],[-12.925146,8.055176],[-12.956934,8.145312],[-13.020801,8.200928],[-13.148975,8.2146],[-13.201758,8.33584],[-13.272754,8.429736],[-13.26123,8.487598],[-13.20332,8.484277],[-13.157959,8.442285],[-13.08501,8.424756],[-12.994238,8.526465],[-12.912939,8.581543],[-12.894092,8.629785],[-12.904004,8.65625],[-12.953369,8.615137],[-13.088232,8.625732],[-13.121631,8.58877],[-13.181836,8.576904],[-13.228418,8.695898],[-13.226172,8.765967],[-13.206934,8.843115],[-13.071045,8.856348],[-13.059473,8.881152],[-13.153711,8.897705],[-13.271631,8.987402],[-13.292676,9.049219],[-13.234229,9.070117],[-13.178369,9.060889],[-13.129883,9.047559],[-13.077295,9.069629],[-13.028027,9.103564],[-12.998633,9.146924],[-12.958789,9.26333],[-12.831104,9.302246],[-12.755859,9.373584],[-12.684424,9.48418],[-12.65166,9.561914],[-12.622168,9.600635],[-12.603613,9.634229],[-12.589844,9.671143],[-12.557861,9.70498],[-12.524365,9.787207],[-12.501465,9.862158],[-12.427979,9.898145],[-12.277734,9.929785],[-12.142334,9.875391],[-11.922754,9.922754],[-11.911084,9.993018],[-11.710059,9.994189],[-11.471924,9.995459],[-11.273633,9.996533],[-11.205664,9.977734],[-11.180859,9.925342],[-11.115674,9.843164],[-11.047461,9.786328],[-10.963086,9.661621],[-10.864795,9.516455],[-10.758594,9.385352],[-10.690527,9.314258],[-10.682715,9.289355],[-10.687646,9.261133],[-10.72124,9.194482],[-10.749951,9.122363],[-10.747021,9.095264],[-10.726855,9.081689],[-10.615967,9.05918],[-10.605762,8.978809],[-10.605615,8.867578],[-10.551758,8.76377],[-10.500537,8.687549],[-10.503125,8.660303],[-10.628467,8.52998],[-10.677344,8.400586],[-10.702148,8.364209],[-10.712109,8.335254],[-10.686963,8.32168],[-10.652637,8.330273],[-10.604004,8.319482],[-10.557715,8.315674],[-10.496436,8.362109],[-10.394434,8.480957],[-10.360059,8.495508],[-10.283203,8.485156]]],[[[-12.526074,7.436328],[-12.540625,7.410254],[-12.607178,7.474512],[-12.951611,7.57085],[-12.854395,7.622021],[-12.615234,7.637207],[-12.544189,7.607373],[-12.5125,7.582422],[-12.500635,7.535107],[-12.526074,7.436328]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Seychelles","SOV_A3":"SYC","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Seychelles","ADM0_A3":"SYC","GEOU_DIF":0,"GEOUNIT":"Seychelles","GU_A3":"SYC","SU_DIF":0,"SUBUNIT":"Seychelles","SU_A3":"SYC","BRK_DIFF":0,"NAME":"Seychelles","NAME_LONG":"Seychelles","BRK_A3":"SYC","BRK_NAME":"Seychelles","BRK_GROUP":null,"ABBREV":"Syc.","POSTAL":"SC","FORMAL_EN":"Republic of Seychelles","FORMAL_FR":null,"NAME_CIAWF":"Seychelles","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Seychelles","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":8,"MAPCOLOR9":3,"MAPCOLOR13":1,"POP_EST":97625,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":1703,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"SE","ISO_A2":"SC","ISO_A2_EH":"SC","ISO_A3":"SYC","ISO_A3_EH":"SYC","ISO_N3":"690","ISO_N3_EH":"690","UN_A3":"690","WB_A2":"SC","WB_A3":"SYC","WOE_ID":23424941,"WOE_ID_EH":23424941,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SYC","ADM0_DIFF":null,"ADM0_TLC":"SYC","ADM0_A3_US":"SYC","ADM0_A3_FR":"SYC","ADM0_A3_RU":"SYC","ADM0_A3_ES":"SYC","ADM0_A3_CN":"SYC","ADM0_A3_TW":"SYC","ADM0_A3_IN":"SYC","ADM0_A3_NP":"SYC","ADM0_A3_PK":"SYC","ADM0_A3_DE":"SYC","ADM0_A3_GB":"SYC","ADM0_A3_BR":"SYC","ADM0_A3_IL":"SYC","ADM0_A3_PS":"SYC","ADM0_A3_SA":"SYC","ADM0_A3_EG":"SYC","ADM0_A3_MA":"SYC","ADM0_A3_PT":"SYC","ADM0_A3_AR":"SYC","ADM0_A3_JP":"SYC","ADM0_A3_KO":"SYC","ADM0_A3_VN":"SYC","ADM0_A3_TR":"SYC","ADM0_A3_ID":"SYC","ADM0_A3_PL":"SYC","ADM0_A3_GR":"SYC","ADM0_A3_IT":"SYC","ADM0_A3_NL":"SYC","ADM0_A3_SE":"SYC","ADM0_A3_BD":"SYC","ADM0_A3_UA":"SYC","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":55.480175,"LABEL_Y":-4.676659,"NE_ID":1159321291,"WIKIDATAID":"Q1042","NAME_AR":"سيشل","NAME_BN":"সেশেলস","NAME_DE":"Seychellen","NAME_EN":"Seychelles","NAME_ES":"Seychelles","NAME_FA":"سیشل","NAME_FR":"Seychelles","NAME_EL":"Σεϋχέλλες","NAME_HE":"סיישל","NAME_HI":"सेशेल्स","NAME_HU":"Seychelle-szigetek","NAME_ID":"Seychelles","NAME_IT":"Seychelles","NAME_JA":"セーシェル","NAME_KO":"세이셸","NAME_NL":"Seychellen","NAME_PL":"Seszele","NAME_PT":"Seychelles","NAME_RU":"Сейшельские Острова","NAME_SV":"Seychellerna","NAME_TR":"Seyşeller","NAME_UK":"Сейшельські Острови","NAME_UR":"سیشیلز","NAME_VI":"Seychelles","NAME_ZH":"塞舌尔","NAME_ZHT":"塞席爾","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[55.383398,-4.785547,55.542969,-4.558789],"geometry":{"type":"Polygon","coordinates":[[[55.540332,-4.693066],[55.542969,-4.785547],[55.494727,-4.75459],[55.48125,-4.694824],[55.416797,-4.650293],[55.383398,-4.609277],[55.455762,-4.558789],[55.540332,-4.693066]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Republic of Serbia","SOV_A3":"SRB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Republic of Serbia","ADM0_A3":"SRB","GEOU_DIF":0,"GEOUNIT":"Republic of Serbia","GU_A3":"SRB","SU_DIF":0,"SUBUNIT":"Republic of Serbia","SU_A3":"SRB","BRK_DIFF":0,"NAME":"Serbia","NAME_LONG":"Serbia","BRK_A3":"SRB","BRK_NAME":"Serbia","BRK_GROUP":null,"ABBREV":"Serb.","POSTAL":"RS","FORMAL_EN":"Republic of Serbia","FORMAL_FR":null,"NAME_CIAWF":"Serbia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Serbia","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":3,"MAPCOLOR9":2,"MAPCOLOR13":10,"POP_EST":6944975,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":51475,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"RI","ISO_A2":"RS","ISO_A2_EH":"RS","ISO_A3":"SRB","ISO_A3_EH":"SRB","ISO_N3":"688","ISO_N3_EH":"688","UN_A3":"688","WB_A2":"YF","WB_A3":"SRB","WOE_ID":-90,"WOE_ID_EH":20069818,"WOE_NOTE":"Expired WOE also contains Kosovo.","ADM0_ISO":"SRB","ADM0_DIFF":null,"ADM0_TLC":"SRB","ADM0_A3_US":"SRB","ADM0_A3_FR":"SRB","ADM0_A3_RU":"SRB","ADM0_A3_ES":"SRB","ADM0_A3_CN":"SRB","ADM0_A3_TW":"SRB","ADM0_A3_IN":"SRB","ADM0_A3_NP":"SRB","ADM0_A3_PK":"SRB","ADM0_A3_DE":"SRB","ADM0_A3_GB":"SRB","ADM0_A3_BR":"SRB","ADM0_A3_IL":"SRB","ADM0_A3_PS":"SRB","ADM0_A3_SA":"SRB","ADM0_A3_EG":"SRB","ADM0_A3_MA":"SRB","ADM0_A3_PT":"SRB","ADM0_A3_AR":"SRB","ADM0_A3_JP":"SRB","ADM0_A3_KO":"SRB","ADM0_A3_VN":"SRB","ADM0_A3_TR":"SRB","ADM0_A3_ID":"SRB","ADM0_A3_PL":"SRB","ADM0_A3_GR":"SRB","ADM0_A3_IT":"SRB","ADM0_A3_NL":"SRB","ADM0_A3_SE":"SRB","ADM0_A3_BD":"SRB","ADM0_A3_UA":"SRB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":7,"LABEL_X":20.787989,"LABEL_Y":44.189919,"NE_ID":1159321267,"WIKIDATAID":"Q403","NAME_AR":"صربيا","NAME_BN":"সার্বিয়া","NAME_DE":"Serbien","NAME_EN":"Serbia","NAME_ES":"Serbia","NAME_FA":"صربستان","NAME_FR":"Serbie","NAME_EL":"Σερβία","NAME_HE":"סרביה","NAME_HI":"सर्बिया","NAME_HU":"Szerbia","NAME_ID":"Serbia","NAME_IT":"Serbia","NAME_JA":"セルビア","NAME_KO":"세르비아","NAME_NL":"Servië","NAME_PL":"Serbia","NAME_PT":"Sérvia","NAME_RU":"Сербия","NAME_SV":"Serbien","NAME_TR":"Sırbistan","NAME_UK":"Сербія","NAME_UR":"سربیا","NAME_VI":"Serbia","NAME_ZH":"塞尔维亚","NAME_ZHT":"塞爾維亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[18.839063,42.242139,22.976855,46.169189],"geometry":{"type":"Polygon","coordinates":[[[21.360059,44.82666],[21.523145,44.790088],[21.59707,44.75542],[21.636133,44.710449],[21.740234,44.680664],[21.909277,44.666113],[22.026953,44.619873],[22.093066,44.541943],[22.200977,44.560693],[22.350684,44.676123],[22.497656,44.70625],[22.64209,44.650977],[22.720898,44.605518],[22.734375,44.569922],[22.700781,44.555518],[22.620117,44.562354],[22.554004,44.540332],[22.502344,44.4896],[22.494531,44.435449],[22.530664,44.377979],[22.581836,44.33833],[22.647949,44.316455],[22.683301,44.286475],[22.687891,44.248291],[22.705078,44.237793],[22.66748,44.220215],[22.626563,44.194092],[22.603418,44.148584],[22.597461,44.075293],[22.469043,44.018018],[22.420801,44.007422],[22.399023,43.969531],[22.36543,43.862109],[22.369629,43.781299],[22.386914,43.740137],[22.394824,43.706641],[22.436328,43.665479],[22.474121,43.602246],[22.499121,43.518848],[22.55459,43.454492],[22.696973,43.391064],[22.767578,43.35415],[22.819727,43.300732],[22.85957,43.252344],[22.976855,43.187988],[22.967969,43.142041],[22.942285,43.09707],[22.915234,43.075977],[22.856836,43.018262],[22.799902,42.985742],[22.706152,42.883936],[22.558105,42.878467],[22.522754,42.870312],[22.466797,42.84248],[22.439258,42.79165],[22.465625,42.750781],[22.463281,42.709473],[22.43623,42.629102],[22.47207,42.543311],[22.524219,42.503906],[22.532422,42.481201],[22.523535,42.440967],[22.445703,42.359131],[22.42207,42.328857],[22.344043,42.313965],[22.317383,42.321729],[22.277051,42.349854],[22.239746,42.358154],[22.14668,42.325],[22.052051,42.304639],[21.977539,42.320068],[21.904102,42.32207],[21.853027,42.308398],[21.814648,42.303125],[21.739258,42.267725],[21.618262,42.242139],[21.5625,42.24751],[21.541602,42.280811],[21.518945,42.328418],[21.52998,42.35],[21.609863,42.387451],[21.619043,42.423242],[21.730664,42.595459],[21.752148,42.651514],[21.75293,42.669824],[21.723828,42.681982],[21.6625,42.681494],[21.390625,42.751416],[21.403027,42.831543],[21.323145,42.874707],[21.237109,42.913232],[21.222656,42.956201],[21.127051,43.043018],[21.057031,43.091699],[20.967676,43.116016],[20.890723,43.15166],[20.844434,43.173437],[20.823828,43.213965],[20.823828,43.237939],[20.800586,43.261084],[20.763379,43.258594],[20.700586,43.226367],[20.623145,43.198633],[20.609668,43.178418],[20.637598,43.130371],[20.657617,43.099854],[20.648535,43.070947],[20.624023,43.03418],[20.475098,42.953027],[20.458398,42.924561],[20.486816,42.879053],[20.468848,42.85791],[20.344336,42.82793],[20.347656,42.852783],[20.339941,42.892871],[20.268457,42.935449],[20.167871,42.968506],[19.944043,43.081641],[19.858008,43.096533],[19.781152,43.109766],[19.670996,43.163965],[19.614453,43.173437],[19.551563,43.212256],[19.414648,43.342822],[19.298242,43.413965],[19.21875,43.449951],[19.196484,43.48501],[19.191602,43.521045],[19.194336,43.533301],[19.254492,43.584375],[19.300781,43.591797],[19.360352,43.593457],[19.399609,43.567578],[19.45127,43.562061],[19.47998,43.595166],[19.495117,43.642871],[19.488184,43.703564],[19.364063,43.844775],[19.257227,43.943311],[19.24502,43.965039],[19.268066,43.983447],[19.305273,43.993359],[19.345215,43.985107],[19.449414,43.978027],[19.549512,43.987109],[19.583691,44.011084],[19.583789,44.043457],[19.547168,44.073486],[19.430176,44.154492],[19.338867,44.22583],[19.231543,44.280566],[19.151855,44.302539],[19.12832,44.330273],[19.118457,44.359961],[19.127344,44.414551],[19.132422,44.483789],[19.151367,44.527344],[19.223145,44.60957],[19.291895,44.696777],[19.334473,44.780664],[19.356836,44.858545],[19.348633,44.880908],[19.312695,44.897461],[19.236816,44.914258],[19.131543,44.899609],[19.04209,44.871338],[19.007129,44.869189],[18.995508,44.904004],[19.00957,44.919385],[19.037598,44.917529],[19.060547,44.910986],[19.085254,44.926758],[19.1,44.973779],[19.062891,45.137207],[19.129688,45.151709],[19.130762,45.175488],[19.136914,45.19624],[19.205957,45.167773],[19.303027,45.167285],[19.388086,45.172998],[19.400977,45.189062],[19.4,45.2125],[19.382324,45.230615],[19.352246,45.24541],[19.330273,45.268066],[19.272852,45.277979],[19.093066,45.336914],[19.004688,45.399512],[19.007617,45.46582],[19.033301,45.502197],[19.064258,45.51499],[19.055078,45.527246],[18.953711,45.558008],[18.917871,45.60083],[18.947266,45.655811],[18.894531,45.76709],[18.839063,45.835742],[18.893555,45.865527],[18.901074,45.907617],[18.905371,45.931738],[18.927832,45.931396],[19.015723,45.959717],[19.047656,45.982666],[19.066211,46.009521],[19.087305,46.016162],[19.146289,45.987012],[19.208398,45.984424],[19.278125,46.002881],[19.330273,46.028516],[19.392871,46.049805],[19.421289,46.064453],[19.45752,46.087354],[19.530762,46.155176],[19.613477,46.169189],[19.724512,46.151904],[19.844434,46.145898],[19.934082,46.161475],[20.161426,46.141895],[20.210156,46.126025],[20.241797,46.108594],[20.301367,46.050684],[20.358594,45.975488],[20.437988,45.940771],[20.532617,45.899512],[20.581152,45.869482],[20.652734,45.779395],[20.709277,45.735254],[20.727832,45.737402],[20.746875,45.748975],[20.760156,45.758105],[20.775,45.749805],[20.775781,45.72251],[20.779297,45.662012],[20.76582,45.597461],[20.786035,45.536475],[20.786523,45.51748],[20.772461,45.500098],[20.774219,45.484424],[20.794043,45.467871],[20.870801,45.427539],[20.941797,45.365332],[21.023828,45.321533],[21.099902,45.293555],[21.147852,45.291748],[21.226465,45.241309],[21.381738,45.205078],[21.431445,45.192529],[21.46543,45.171875],[21.490234,45.1479],[21.491797,45.122266],[21.467871,45.109863],[21.434473,45.075146],[21.420703,45.032959],[21.395898,45.022217],[21.371094,45.021387],[21.35293,45.008984],[21.357031,44.990771],[21.377734,44.973437],[21.409961,44.957715],[21.471973,44.941992],[21.533203,44.918848],[21.532324,44.900684],[21.519922,44.880811],[21.442188,44.873389],[21.384375,44.870068],[21.35791,44.861816],[21.360059,44.82666]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Senegal","SOV_A3":"SEN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Senegal","ADM0_A3":"SEN","GEOU_DIF":0,"GEOUNIT":"Senegal","GU_A3":"SEN","SU_DIF":0,"SUBUNIT":"Senegal","SU_A3":"SEN","BRK_DIFF":0,"NAME":"Senegal","NAME_LONG":"Senegal","BRK_A3":"SEN","BRK_NAME":"Senegal","BRK_GROUP":null,"ABBREV":"Sen.","POSTAL":"SN","FORMAL_EN":"Republic of Senegal","FORMAL_FR":null,"NAME_CIAWF":"Senegal","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Senegal","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":6,"MAPCOLOR9":5,"MAPCOLOR13":5,"POP_EST":16296364,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":23578,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"SG","ISO_A2":"SN","ISO_A2_EH":"SN","ISO_A3":"SEN","ISO_A3_EH":"SEN","ISO_N3":"686","ISO_N3_EH":"686","UN_A3":"686","WB_A2":"SN","WB_A3":"SEN","WOE_ID":23424943,"WOE_ID_EH":23424943,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SEN","ADM0_DIFF":null,"ADM0_TLC":"SEN","ADM0_A3_US":"SEN","ADM0_A3_FR":"SEN","ADM0_A3_RU":"SEN","ADM0_A3_ES":"SEN","ADM0_A3_CN":"SEN","ADM0_A3_TW":"SEN","ADM0_A3_IN":"SEN","ADM0_A3_NP":"SEN","ADM0_A3_PK":"SEN","ADM0_A3_DE":"SEN","ADM0_A3_GB":"SEN","ADM0_A3_BR":"SEN","ADM0_A3_IL":"SEN","ADM0_A3_PS":"SEN","ADM0_A3_SA":"SEN","ADM0_A3_EG":"SEN","ADM0_A3_MA":"SEN","ADM0_A3_PT":"SEN","ADM0_A3_AR":"SEN","ADM0_A3_JP":"SEN","ADM0_A3_KO":"SEN","ADM0_A3_VN":"SEN","ADM0_A3_TR":"SEN","ADM0_A3_ID":"SEN","ADM0_A3_PL":"SEN","ADM0_A3_GR":"SEN","ADM0_A3_IT":"SEN","ADM0_A3_NL":"SEN","ADM0_A3_SE":"SEN","ADM0_A3_BD":"SEN","ADM0_A3_UA":"SEN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":8,"LABEL_X":-14.778586,"LABEL_Y":15.138125,"NE_ID":1159321243,"WIKIDATAID":"Q1041","NAME_AR":"السنغال","NAME_BN":"সেনেগাল","NAME_DE":"Senegal","NAME_EN":"Senegal","NAME_ES":"Senegal","NAME_FA":"سنگال","NAME_FR":"Sénégal","NAME_EL":"Σενεγάλη","NAME_HE":"סנגל","NAME_HI":"सेनेगल","NAME_HU":"Szenegál","NAME_ID":"Senegal","NAME_IT":"Senegal","NAME_JA":"セネガル","NAME_KO":"세네갈","NAME_NL":"Senegal","NAME_PL":"Senegal","NAME_PT":"Senegal","NAME_RU":"Сенегал","NAME_SV":"Senegal","NAME_TR":"Senegal","NAME_UK":"Сенегал","NAME_UR":"سینیگال","NAME_VI":"Sénégal","NAME_ZH":"塞内加尔","NAME_ZHT":"塞內加爾","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-17.535645,12.328027,-11.382422,16.678906],"geometry":{"type":"Polygon","coordinates":[[[-12.280615,14.809033],[-12.186523,14.648145],[-12.206836,14.571143],[-12.228418,14.458594],[-12.175244,14.37666],[-12.112891,14.323291],[-12.068359,14.274219],[-12.019189,14.206494],[-12.011182,14.071826],[-12.020117,13.974658],[-11.988086,13.930762],[-11.960889,13.875293],[-11.966357,13.828955],[-11.98418,13.788086],[-12.044141,13.733887],[-12.054199,13.633057],[-11.95708,13.510889],[-11.89458,13.444434],[-11.895215,13.406299],[-11.877783,13.364551],[-11.831689,13.31582],[-11.803369,13.327295],[-11.772217,13.36709],[-11.758252,13.394531],[-11.674463,13.382373],[-11.634961,13.369873],[-11.581348,13.290039],[-11.56167,13.236963],[-11.548779,13.170264],[-11.492822,13.086963],[-11.444141,13.028223],[-11.433936,12.991602],[-11.390381,12.941992],[-11.417432,12.831885],[-11.414355,12.775488],[-11.444092,12.627588],[-11.450586,12.557715],[-11.448779,12.531934],[-11.382422,12.479248],[-11.389404,12.404395],[-11.456738,12.417578],[-11.573682,12.426318],[-11.808105,12.387305],[-11.888574,12.40332],[-12.042383,12.398047],[-12.151953,12.376611],[-12.291211,12.328027],[-12.399072,12.340088],[-12.457373,12.378369],[-12.534229,12.375781],[-12.620801,12.396191],[-12.713037,12.433154],[-12.797314,12.451904],[-12.888184,12.52002],[-12.930713,12.532275],[-12.960547,12.514355],[-12.985645,12.49165],[-13.011914,12.477637],[-13.061279,12.48999],[-13.079834,12.536279],[-13.064404,12.581055],[-13.059766,12.615039],[-13.08291,12.633545],[-13.138477,12.639746],[-13.228076,12.6396],[-13.372559,12.653613],[-13.405762,12.662256],[-13.729248,12.673926],[-14.064844,12.675293],[-14.349219,12.676416],[-14.708154,12.677979],[-14.960596,12.678955],[-15.196094,12.679932],[-15.37793,12.588965],[-15.574805,12.490381],[-15.839551,12.437891],[-16.144189,12.457422],[-16.241504,12.443311],[-16.342285,12.399512],[-16.416309,12.367676],[-16.521338,12.348633],[-16.656934,12.364355],[-16.711816,12.354834],[-16.74585,12.399707],[-16.784863,12.47251],[-16.760303,12.525781],[-16.677637,12.560059],[-16.553223,12.604883],[-16.488086,12.581836],[-16.449951,12.580713],[-16.442871,12.609473],[-16.455029,12.624805],[-16.548828,12.663818],[-16.597656,12.715283],[-16.637842,12.685156],[-16.672559,12.622021],[-16.701416,12.603174],[-16.743896,12.585449],[-16.767969,12.628418],[-16.778418,12.670166],[-16.758984,12.702344],[-16.768945,12.883301],[-16.757373,12.979785],[-16.76333,13.06416],[-16.704541,13.119727],[-16.648779,13.15415],[-16.430859,13.157324],[-16.22832,13.160303],[-16.033057,13.15835],[-15.834277,13.156445],[-15.814404,13.325146],[-15.751562,13.338379],[-15.657324,13.355811],[-15.481836,13.376367],[-15.28623,13.395996],[-15.244531,13.429102],[-15.212109,13.485059],[-15.191602,13.535254],[-15.151123,13.556494],[-15.096387,13.539648],[-15.024609,13.51333],[-14.950293,13.472607],[-14.865039,13.434863],[-14.808252,13.411133],[-14.671924,13.351709],[-14.438574,13.268896],[-14.246777,13.23584],[-14.014893,13.296387],[-13.84751,13.335303],[-13.826709,13.407812],[-13.852832,13.478564],[-13.977393,13.543457],[-14.146973,13.536133],[-14.199023,13.51875],[-14.278027,13.497168],[-14.325537,13.488574],[-14.405469,13.503711],[-14.506982,13.559717],[-14.57085,13.616162],[-14.660156,13.642627],[-14.766016,13.669092],[-14.935791,13.785205],[-15.024463,13.806006],[-15.10835,13.812109],[-15.269531,13.789111],[-15.426855,13.727002],[-15.509668,13.58623],[-15.667187,13.588281],[-16.001611,13.592773],[-16.30874,13.596875],[-16.562305,13.587305],[-16.587793,13.689551],[-16.647852,13.770996],[-16.74541,13.84043],[-16.766943,13.904932],[-16.733887,13.961182],[-16.6396,14.007471],[-16.618115,14.040527],[-16.66748,14.035596],[-16.742139,14.005811],[-16.791748,14.00415],[-16.797754,14.093262],[-16.880518,14.20835],[-16.973828,14.403223],[-17.079395,14.483057],[-17.168066,14.640625],[-17.260645,14.701074],[-17.345801,14.729297],[-17.418457,14.723486],[-17.44502,14.651611],[-17.535645,14.755127],[-17.411816,14.792187],[-17.147168,14.922021],[-16.843408,15.293994],[-16.570752,15.734424],[-16.535254,15.838379],[-16.502051,15.917334],[-16.480078,16.097217],[-16.441016,16.204541],[-16.404346,16.224902],[-16.358105,16.307178],[-16.302295,16.451318],[-16.239014,16.531299],[-16.168359,16.54707],[-16.113281,16.540137],[-16.074023,16.510449],[-15.958984,16.492139],[-15.768213,16.485107],[-15.620801,16.506592],[-15.516699,16.556592],[-15.37998,16.581982],[-15.210547,16.582617],[-15.121436,16.603613],[-15.112646,16.644922],[-15.090576,16.657373],[-15.055225,16.640967],[-15.021924,16.647461],[-14.990625,16.676904],[-14.959521,16.678906],[-14.928613,16.653516],[-14.786719,16.645898],[-14.53374,16.655957],[-14.300098,16.580273],[-14.085645,16.418848],[-13.975049,16.311133],[-13.968164,16.257227],[-13.932617,16.202881],[-13.868457,16.148145],[-13.809814,16.138037],[-13.756641,16.17251],[-13.714941,16.168799],[-13.684668,16.126904],[-13.623535,16.118311],[-13.555518,16.144043],[-13.506982,16.135205],[-13.498145,16.110303],[-13.486963,16.097021],[-13.454102,16.091113],[-13.409668,16.05918],[-13.347559,15.973486],[-13.297021,15.853857],[-13.258008,15.700391],[-13.206445,15.616895],[-13.142383,15.60332],[-13.105273,15.571777],[-13.0979,15.535254],[-13.079297,15.510449],[-13.048535,15.496631],[-12.994336,15.504883],[-12.930859,15.453027],[-12.862695,15.34043],[-12.851904,15.289648],[-12.862646,15.262402],[-12.858496,15.242529],[-12.813184,15.223535],[-12.770312,15.18667],[-12.735254,15.13125],[-12.659619,15.08208],[-12.543555,15.039014],[-12.459863,14.974658],[-12.408691,14.889014],[-12.302539,14.816992],[-12.280615,14.809033]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":2,"SOVEREIGNT":"Saudi Arabia","SOV_A3":"SAU","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Saudi Arabia","ADM0_A3":"SAU","GEOU_DIF":0,"GEOUNIT":"Saudi Arabia","GU_A3":"SAU","SU_DIF":0,"SUBUNIT":"Saudi Arabia","SU_A3":"SAU","BRK_DIFF":0,"NAME":"Saudi Arabia","NAME_LONG":"Saudi Arabia","BRK_A3":"SAU","BRK_NAME":"Saudi Arabia","BRK_GROUP":null,"ABBREV":"Saud.","POSTAL":"SA","FORMAL_EN":"Kingdom of Saudi Arabia","FORMAL_FR":null,"NAME_CIAWF":"Saudi Arabia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Saudi Arabia","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":1,"MAPCOLOR9":6,"MAPCOLOR13":7,"POP_EST":34268528,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":792966,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"SA","ISO_A2":"SA","ISO_A2_EH":"SA","ISO_A3":"SAU","ISO_A3_EH":"SAU","ISO_N3":"682","ISO_N3_EH":"682","UN_A3":"682","WB_A2":"SA","WB_A3":"SAU","WOE_ID":23424938,"WOE_ID_EH":23424938,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SAU","ADM0_DIFF":null,"ADM0_TLC":"SAU","ADM0_A3_US":"SAU","ADM0_A3_FR":"SAU","ADM0_A3_RU":"SAU","ADM0_A3_ES":"SAU","ADM0_A3_CN":"SAU","ADM0_A3_TW":"SAU","ADM0_A3_IN":"SAU","ADM0_A3_NP":"SAU","ADM0_A3_PK":"SAU","ADM0_A3_DE":"SAU","ADM0_A3_GB":"SAU","ADM0_A3_BR":"SAU","ADM0_A3_IL":"SAU","ADM0_A3_PS":"SAU","ADM0_A3_SA":"SAU","ADM0_A3_EG":"SAU","ADM0_A3_MA":"SAU","ADM0_A3_PT":"SAU","ADM0_A3_AR":"SAU","ADM0_A3_JP":"SAU","ADM0_A3_KO":"SAU","ADM0_A3_VN":"SAU","ADM0_A3_TR":"SAU","ADM0_A3_ID":"SAU","ADM0_A3_PL":"SAU","ADM0_A3_GR":"SAU","ADM0_A3_IT":"SAU","ADM0_A3_NL":"SAU","ADM0_A3_SE":"SAU","ADM0_A3_BD":"SAU","ADM0_A3_UA":"SAU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":12,"LONG_LEN":12,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":7,"LABEL_X":44.6996,"LABEL_Y":23.806908,"NE_ID":1159321225,"WIKIDATAID":"Q851","NAME_AR":"السعودية","NAME_BN":"সৌদি আরব","NAME_DE":"Saudi-Arabien","NAME_EN":"Saudi Arabia","NAME_ES":"Arabia Saudita","NAME_FA":"عربستان سعودی","NAME_FR":"Arabie saoudite","NAME_EL":"Σαουδική Αραβία","NAME_HE":"ערב הסעודית","NAME_HI":"सउदी अरब","NAME_HU":"Szaúd-Arábia","NAME_ID":"Arab Saudi","NAME_IT":"Arabia Saudita","NAME_JA":"サウジアラビア","NAME_KO":"사우디아라비아","NAME_NL":"Saoedi-Arabië","NAME_PL":"Arabia Saudyjska","NAME_PT":"Arábia Saudita","NAME_RU":"Саудовская Аравия","NAME_SV":"Saudiarabien","NAME_TR":"Suudi Arabistan","NAME_UK":"Саудівська Аравія","NAME_UR":"سعودی عرب","NAME_VI":"Ả Rập Saudi","NAME_ZH":"沙特阿拉伯","NAME_ZHT":"沙烏地阿拉伯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[34.616211,16.371777,55.641016,32.124512],"geometry":{"type":"MultiPolygon","coordinates":[[[[36.90166,25.383057],[36.875195,25.383057],[36.805078,25.450732],[36.763867,25.500586],[36.72207,25.534033],[36.530273,25.601562],[36.504297,25.645117],[36.533594,25.688721],[36.554102,25.645361],[36.58877,25.619824],[36.747559,25.55874],[36.924414,25.425537],[36.954785,25.414648],[36.90166,25.383057]]],[[[41.987695,16.715625],[42.065039,16.710059],[42.033203,16.741943],[42.026367,16.757666],[42.059961,16.803516],[42.17041,16.708643],[42.167188,16.596387],[42.157813,16.570703],[42.127734,16.594824],[42.108398,16.618457],[42.102344,16.643945],[42.071777,16.671484],[41.96416,16.653467],[41.897266,16.684277],[41.801563,16.77876],[41.776074,16.846875],[41.816113,16.860156],[41.858203,16.89292],[41.884961,16.946826],[41.860449,17.002539],[41.917285,16.993652],[41.947949,16.936426],[41.953906,16.80625],[41.9625,16.778662],[41.94668,16.748926],[41.987695,16.715625]]],[[[51.977637,18.996143],[51.742969,18.964551],[51.514941,18.933887],[51.258398,18.899365],[50.95,18.857861],[50.708203,18.825293],[50.355273,18.777783],[50.038965,18.735254],[49.74209,18.695312],[49.445117,18.655322],[49.192383,18.621338],[49.041992,18.581787],[48.864844,18.495215],[48.592969,18.362402],[48.31582,18.227051],[48.172168,18.156934],[48.02168,17.976953],[47.945508,17.88584],[47.807813,17.721094],[47.703711,17.596826],[47.57959,17.44834],[47.525391,17.316113],[47.441797,17.111865],[47.369629,17.0604],[47.25127,16.993945],[47.143555,16.94668],[46.975684,16.953467],[46.87998,17.079004],[46.778516,17.212109],[46.727637,17.265576],[46.682031,17.268555],[46.513477,17.25166],[46.310352,17.231299],[46.070801,17.253174],[45.794434,17.278418],[45.535352,17.302051],[45.406543,17.319775],[45.236621,17.406201],[45.192773,17.423389],[45.148047,17.427441],[44.946484,17.42959],[44.746777,17.431689],[44.546484,17.404346],[44.354688,17.414355],[44.155957,17.398535],[44.085938,17.365527],[44.008203,17.36748],[43.959668,17.33833],[43.916992,17.324707],[43.866406,17.349609],[43.804297,17.344141],[43.712988,17.365527],[43.653418,17.421875],[43.597266,17.471436],[43.539258,17.49873],[43.474219,17.515918],[43.417969,17.51626],[43.346094,17.486035],[43.302148,17.456787],[43.190918,17.359375],[43.186328,17.324707],[43.236914,17.266455],[43.221387,17.239258],[43.155957,17.205029],[43.135938,17.112988],[43.126172,17.062451],[43.116504,16.941992],[43.145605,16.846777],[43.184473,16.811816],[43.186328,16.770996],[43.165039,16.689404],[43.104785,16.66416],[43.060742,16.586621],[43.033594,16.550391],[42.986328,16.509082],[42.799316,16.371777],[42.789844,16.451562],[42.730664,16.569824],[42.726367,16.65332],[42.698828,16.736963],[42.647461,16.801367],[42.55293,16.868457],[42.544141,16.959668],[42.475,17.049854],[42.383301,17.122461],[42.332422,17.256641],[42.293945,17.434961],[42.052246,17.669336],[41.75,17.885742],[41.658008,18.007666],[41.507617,18.256104],[41.431738,18.452441],[41.229492,18.678418],[41.220801,18.765234],[41.19082,18.871191],[41.144141,18.989063],[41.116016,19.082178],[40.913281,19.490137],[40.847852,19.555273],[40.791602,19.646387],[40.777051,19.716895],[40.75918,19.755469],[40.615918,19.822363],[40.482227,19.993457],[40.080664,20.265918],[39.884082,20.292969],[39.72832,20.390332],[39.613672,20.517676],[39.491211,20.737012],[39.276074,20.973975],[39.093555,21.310352],[39.150684,21.432764],[39.14707,21.518994],[39.091016,21.663965],[39.029785,21.775977],[38.987891,21.881738],[39.021191,22.033447],[39.033984,22.203369],[39.069922,22.293652],[39.095898,22.392773],[39.062012,22.592187],[39.001367,22.698975],[39.007422,22.770068],[38.93877,22.804785],[38.88291,22.882031],[38.941113,22.881836],[38.835547,22.989063],[38.796875,23.048584],[38.757031,23.194287],[38.706055,23.305518],[38.542285,23.55791],[38.46416,23.711865],[38.288867,23.910986],[38.098633,24.058008],[37.977832,24.124561],[37.919727,24.1854],[37.820996,24.1875],[37.713379,24.274414],[37.638184,24.277734],[37.543066,24.29165],[37.430957,24.459033],[37.338477,24.61582],[37.180859,24.82002],[37.22041,24.87334],[37.266309,24.960059],[37.243457,25.073437],[37.218359,25.150684],[37.148828,25.291113],[36.920703,25.641162],[36.860156,25.69248],[36.762695,25.751318],[36.702539,25.902881],[36.675195,26.038867],[36.51875,26.104883],[36.249609,26.594775],[36.09375,26.76582],[36.032031,26.881006],[35.85166,27.070459],[35.762988,27.258789],[35.581348,27.432471],[35.423828,27.733789],[35.180469,28.034863],[35.07832,28.087012],[34.827539,28.108594],[34.72207,28.130664],[34.625,28.064502],[34.616211,28.14834],[34.683301,28.264111],[34.779883,28.507324],[34.799121,28.720508],[34.950781,29.353516],[35.16377,29.320947],[35.33916,29.294092],[35.595313,29.254883],[35.860352,29.214258],[36.01543,29.190479],[36.068457,29.200537],[36.282813,29.355371],[36.476074,29.495117],[36.591797,29.666113],[36.703906,29.831641],[36.755273,29.866016],[36.927051,29.89707],[37.199414,29.946289],[37.469238,29.995068],[37.490723,30.011719],[37.553613,30.14458],[37.633594,30.313281],[37.649902,30.330957],[37.669727,30.348145],[37.862891,30.442627],[37.980078,30.5],[37.812988,30.669287],[37.655469,30.828955],[37.479004,31.007764],[37.329492,31.146826],[37.105273,31.355176],[36.958594,31.491504],[37.215625,31.556104],[37.493359,31.625879],[37.773828,31.696338],[38.111426,31.781152],[38.375488,31.847461],[38.769629,31.946484],[38.962305,31.994922],[38.99707,32.007471],[39.14541,32.124512],[39.368652,32.091748],[39.704102,32.042529],[40.027832,31.99502],[40.369336,31.938965],[40.478906,31.893359],[40.808398,31.725439],[41.022461,31.616357],[41.272461,31.489014],[41.585059,31.329736],[41.799707,31.220361],[42.074414,31.080371],[42.288574,30.92041],[42.559766,30.717773],[42.857715,30.495215],[43.103125,30.322217],[43.44082,30.083984],[43.77373,29.849219],[44.099609,29.619336],[44.360742,29.435254],[44.69082,29.202344],[44.716504,29.193604],[45.050293,29.16709],[45.498926,29.131543],[45.949707,29.09585],[46.356445,29.063672],[46.531445,29.09624],[46.724805,29.074609],[46.982227,29.045654],[47.13877,29.026172],[47.433203,28.989551],[47.521289,28.837842],[47.553223,28.731543],[47.583105,28.627979],[47.671289,28.533154],[47.871973,28.535449],[48.049609,28.5375],[48.26875,28.540527],[48.44248,28.54292],[48.498535,28.448877],[48.523047,28.355029],[48.626367,28.132568],[48.77373,27.959082],[48.808984,27.895898],[48.832813,27.800684],[48.807227,27.765283],[48.797168,27.724316],[48.906445,27.629053],[49.086914,27.548584],[49.15752,27.528223],[49.2375,27.492725],[49.175098,27.437646],[49.281543,27.310498],[49.405273,27.180957],[49.537695,27.151758],[49.716504,26.955859],[49.986133,26.828906],[50.149805,26.662646],[50.134668,26.659521],[50.086621,26.676416],[50.026367,26.699219],[50.008105,26.678516],[50.011328,26.608789],[50.027344,26.526855],[50.110742,26.455957],[50.184961,26.404932],[50.213867,26.308496],[50.155469,26.100537],[50.135254,26.100684],[50.095996,26.118701],[50.053906,26.122852],[50.031641,26.110986],[50.081055,25.961377],[50.130273,25.846631],[50.189648,25.755811],[50.238965,25.622852],[50.28125,25.566113],[50.455176,25.424805],[50.508496,25.306689],[50.55791,25.08667],[50.666895,24.963818],[50.725586,24.869385],[50.804395,24.789258],[50.855664,24.679639],[50.92832,24.595117],[50.966016,24.573926],[51.022754,24.565234],[51.093359,24.564648],[51.178027,24.586719],[51.267969,24.607227],[51.338477,24.564355],[51.41123,24.570801],[51.418359,24.530957],[51.369922,24.476904],[51.309863,24.340381],[51.395215,24.318848],[51.476758,24.308203],[51.534766,24.286328],[51.568359,24.286182],[51.568359,24.25791],[51.572168,24.12832],[51.592578,24.078857],[51.629297,24.03501],[51.684375,23.969531],[51.739355,23.904004],[51.794336,23.838477],[51.849414,23.772998],[51.904395,23.70752],[51.959473,23.641992],[52.014453,23.576465],[52.069434,23.510986],[52.124512,23.445459],[52.179492,23.37998],[52.23457,23.314453],[52.289551,23.248975],[52.344531,23.183496],[52.399609,23.117969],[52.45459,23.052441],[52.50957,22.986963],[52.555078,22.932812],[52.63916,22.92251],[52.665918,22.919287],[52.741602,22.91001],[52.859277,22.895605],[53.011914,22.877002],[53.192383,22.854932],[53.394043,22.830322],[53.60957,22.804004],[53.832129,22.776807],[54.05459,22.749658],[54.270117,22.72334],[54.47168,22.69873],[54.652246,22.67666],[54.804883,22.658008],[54.922461,22.643652],[54.998242,22.634375],[55.025,22.631152],[55.104297,22.621484],[55.119434,22.623926],[55.18584,22.704102],[55.259277,22.590918],[55.320117,22.496924],[55.403809,22.367822],[55.492773,22.230664],[55.577734,22.099512],[55.641016,22.001855],[55.607422,21.900391],[55.570801,21.789697],[55.53418,21.679004],[55.497559,21.568311],[55.460938,21.457617],[55.424316,21.346924],[55.387695,21.23623],[55.351074,21.125537],[55.314453,21.014795],[55.27793,20.904102],[55.241211,20.793408],[55.20459,20.682715],[55.168066,20.572021],[55.131445,20.461328],[55.094727,20.350635],[55.058203,20.239941],[55.021484,20.129248],[54.977344,19.995947],[54.871094,19.960498],[54.699023,19.903125],[54.527051,19.845801],[54.35498,19.788477],[54.183008,19.731152],[54.010938,19.673828],[53.838867,19.616504],[53.666895,19.559131],[53.494824,19.501807],[53.322852,19.444482],[53.150781,19.387158],[52.978711,19.329785],[52.806738,19.272461],[52.634668,19.215137],[52.462695,19.157812],[52.290625,19.100488],[52.118555,19.043164],[51.977637,18.996143]]],[[[36.595508,25.712793],[36.586133,25.699219],[36.543945,25.734277],[36.546484,25.811621],[36.582715,25.855518],[36.579883,25.79541],[36.595605,25.734863],[36.595508,25.712793]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"São Tomé and Principe","SOV_A3":"STP","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"São Tomé and Principe","ADM0_A3":"STP","GEOU_DIF":0,"GEOUNIT":"São Tomé and Principe","GU_A3":"STP","SU_DIF":0,"SUBUNIT":"São Tomé and Principe","SU_A3":"STP","BRK_DIFF":0,"NAME":"São Tomé and Principe","NAME_LONG":"São Tomé and Principe","BRK_A3":"STP","BRK_NAME":"Sao Tome and Principe","BRK_GROUP":null,"ABBREV":"S.T.P.","POSTAL":"ST","FORMAL_EN":"Democratic Republic of São Tomé and Principe","FORMAL_FR":null,"NAME_CIAWF":"Sao Tome and Principe","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Sao Tome and Principe","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":6,"MAPCOLOR9":1,"MAPCOLOR13":7,"POP_EST":215056,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":418,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"TP","ISO_A2":"ST","ISO_A2_EH":"ST","ISO_A3":"STP","ISO_A3_EH":"STP","ISO_N3":"678","ISO_N3_EH":"678","UN_A3":"678","WB_A2":"ST","WB_A3":"STP","WOE_ID":23424966,"WOE_ID_EH":23424966,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"STP","ADM0_DIFF":null,"ADM0_TLC":"STP","ADM0_A3_US":"STP","ADM0_A3_FR":"STP","ADM0_A3_RU":"STP","ADM0_A3_ES":"STP","ADM0_A3_CN":"STP","ADM0_A3_TW":"STP","ADM0_A3_IN":"STP","ADM0_A3_NP":"STP","ADM0_A3_PK":"STP","ADM0_A3_DE":"STP","ADM0_A3_GB":"STP","ADM0_A3_BR":"STP","ADM0_A3_IL":"STP","ADM0_A3_PS":"STP","ADM0_A3_SA":"STP","ADM0_A3_EG":"STP","ADM0_A3_MA":"STP","ADM0_A3_PT":"STP","ADM0_A3_AR":"STP","ADM0_A3_JP":"STP","ADM0_A3_KO":"STP","ADM0_A3_VN":"STP","ADM0_A3_TR":"STP","ADM0_A3_ID":"STP","ADM0_A3_PL":"STP","ADM0_A3_GR":"STP","ADM0_A3_IT":"STP","ADM0_A3_NL":"STP","ADM0_A3_SE":"STP","ADM0_A3_BD":"STP","ADM0_A3_UA":"STP","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":21,"LONG_LEN":21,"ABBREV_LEN":6,"TINY":3,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":7.021,"LABEL_Y":0.9709,"NE_ID":1159321273,"WIKIDATAID":"Q1039","NAME_AR":"ساو تومي وبرينسيب","NAME_BN":"সাঁউ তুমি ও প্রিন্সিপি","NAME_DE":"São Tomé und Príncipe","NAME_EN":"São Tomé and Príncipe","NAME_ES":"Santo Tomé y Príncipe","NAME_FA":"سائوتومه و پرینسیپ","NAME_FR":"Sao Tomé-et-Principe","NAME_EL":"Σάο Τομέ και Πρίνσιπε","NAME_HE":"סאו טומה ופרינסיפה","NAME_HI":"साओ तोमे और प्रिन्सिपी","NAME_HU":"São Tomé és Príncipe","NAME_ID":"Sao Tome dan Principe","NAME_IT":"São Tomé e Príncipe","NAME_JA":"サントメ・プリンシペ","NAME_KO":"상투메 프린시페","NAME_NL":"Sao Tomé en Principe","NAME_PL":"Wyspy Świętego Tomasza i Książęca","NAME_PT":"São Tomé e Príncipe","NAME_RU":"Сан-Томе и Принсипи","NAME_SV":"São Tomé och Príncipe","NAME_TR":"São Tomé ve Príncipe","NAME_UK":"Сан-Томе і Принсіпі","NAME_UR":"ساؤ ٹومے و پرنسپے","NAME_VI":"São Tomé và Príncipe","NAME_ZH":"圣多美和普林西比","NAME_ZHT":"聖多美普林西比","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[6.468164,0.047363,7.452344,1.699121],"geometry":{"type":"MultiPolygon","coordinates":[[[[7.423828,1.567725],[7.386621,1.541553],[7.342383,1.563574],[7.330664,1.603369],[7.387598,1.680176],[7.414453,1.699121],[7.437012,1.683057],[7.450391,1.661963],[7.452344,1.631104],[7.423828,1.567725]]],[[[6.659961,0.120654],[6.556836,0.047363],[6.519727,0.066309],[6.496973,0.117383],[6.468164,0.227344],[6.477539,0.280127],[6.524316,0.340283],[6.625879,0.400244],[6.686914,0.404395],[6.749805,0.325635],[6.75,0.243457],[6.659961,0.120654]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"San Marino","SOV_A3":"SMR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"San Marino","ADM0_A3":"SMR","GEOU_DIF":0,"GEOUNIT":"San Marino","GU_A3":"SMR","SU_DIF":0,"SUBUNIT":"San Marino","SU_A3":"SMR","BRK_DIFF":0,"NAME":"San Marino","NAME_LONG":"San Marino","BRK_A3":"SMR","BRK_NAME":"San Marino","BRK_GROUP":null,"ABBREV":"S.M.","POSTAL":"RSM","FORMAL_EN":"Republic of San Marino","FORMAL_FR":null,"NAME_CIAWF":"San Marino","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"San Marino","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":3,"MAPCOLOR9":1,"MAPCOLOR13":6,"POP_EST":33860,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":1655,"GDP_YEAR":2018,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"SM","ISO_A2":"SM","ISO_A2_EH":"SM","ISO_A3":"SMR","ISO_A3_EH":"SMR","ISO_N3":"674","ISO_N3_EH":"674","UN_A3":"674","WB_A2":"SM","WB_A3":"SMR","WOE_ID":23424947,"WOE_ID_EH":23424947,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SMR","ADM0_DIFF":null,"ADM0_TLC":"SMR","ADM0_A3_US":"SMR","ADM0_A3_FR":"SMR","ADM0_A3_RU":"SMR","ADM0_A3_ES":"SMR","ADM0_A3_CN":"SMR","ADM0_A3_TW":"SMR","ADM0_A3_IN":"SMR","ADM0_A3_NP":"SMR","ADM0_A3_PK":"SMR","ADM0_A3_DE":"SMR","ADM0_A3_GB":"SMR","ADM0_A3_BR":"SMR","ADM0_A3_IL":"SMR","ADM0_A3_PS":"SMR","ADM0_A3_SA":"SMR","ADM0_A3_EG":"SMR","ADM0_A3_MA":"SMR","ADM0_A3_PT":"SMR","ADM0_A3_AR":"SMR","ADM0_A3_JP":"SMR","ADM0_A3_KO":"SMR","ADM0_A3_VN":"SMR","ADM0_A3_TR":"SMR","ADM0_A3_ID":"SMR","ADM0_A3_PL":"SMR","ADM0_A3_GR":"SMR","ADM0_A3_IT":"SMR","ADM0_A3_NL":"SMR","ADM0_A3_SE":"SMR","ADM0_A3_BD":"SMR","ADM0_A3_UA":"SMR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":5,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":12.441206,"LABEL_Y":43.933916,"NE_ID":1159321255,"WIKIDATAID":"Q238","NAME_AR":"سان مارينو","NAME_BN":"সান মারিনো","NAME_DE":"San Marino","NAME_EN":"San Marino","NAME_ES":"San Marino","NAME_FA":"سان مارینو","NAME_FR":"Saint-Marin","NAME_EL":"Άγιος Μαρίνος","NAME_HE":"סן מרינו","NAME_HI":"सान मारिनो","NAME_HU":"San Marino","NAME_ID":"San Marino","NAME_IT":"San Marino","NAME_JA":"サンマリノ","NAME_KO":"산마리노","NAME_NL":"San Marino","NAME_PL":"San Marino","NAME_PT":"San Marino","NAME_RU":"Сан-Марино","NAME_SV":"San Marino","NAME_TR":"San Marino","NAME_UK":"Сан-Марино","NAME_UR":"سان مارینو","NAME_VI":"San Marino","NAME_ZH":"圣马力诺","NAME_ZHT":"聖馬力諾","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[12.396875,43.894092,12.514648,43.989746],"geometry":{"type":"Polygon","coordinates":[[[12.485254,43.901416],[12.426367,43.894092],[12.396875,43.93457],[12.441113,43.982422],[12.503711,43.989746],[12.514648,43.952979],[12.485254,43.901416]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Samoa","SOV_A3":"WSM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Samoa","ADM0_A3":"WSM","GEOU_DIF":0,"GEOUNIT":"Samoa","GU_A3":"WSM","SU_DIF":0,"SUBUNIT":"Samoa","SU_A3":"WSM","BRK_DIFF":0,"NAME":"Samoa","NAME_LONG":"Samoa","BRK_A3":"WSM","BRK_NAME":"Samoa","BRK_GROUP":null,"ABBREV":"Samoa","POSTAL":"WS","FORMAL_EN":"Independent State of Samoa","FORMAL_FR":null,"NAME_CIAWF":"Samoa","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Samoa","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":6,"POP_EST":197097,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":852,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"WS","ISO_A2":"WS","ISO_A2_EH":"WS","ISO_A3":"WSM","ISO_A3_EH":"WSM","ISO_N3":"882","ISO_N3_EH":"882","UN_A3":"882","WB_A2":"WS","WB_A3":"WSM","WOE_ID":23424992,"WOE_ID_EH":23424992,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"WSM","ADM0_DIFF":null,"ADM0_TLC":"WSM","ADM0_A3_US":"WSM","ADM0_A3_FR":"WSM","ADM0_A3_RU":"WSM","ADM0_A3_ES":"WSM","ADM0_A3_CN":"WSM","ADM0_A3_TW":"WSM","ADM0_A3_IN":"WSM","ADM0_A3_NP":"WSM","ADM0_A3_PK":"WSM","ADM0_A3_DE":"WSM","ADM0_A3_GB":"WSM","ADM0_A3_BR":"WSM","ADM0_A3_IL":"WSM","ADM0_A3_PS":"WSM","ADM0_A3_SA":"WSM","ADM0_A3_EG":"WSM","ADM0_A3_MA":"WSM","ADM0_A3_PT":"WSM","ADM0_A3_AR":"WSM","ADM0_A3_JP":"WSM","ADM0_A3_KO":"WSM","ADM0_A3_VN":"WSM","ADM0_A3_TR":"WSM","ADM0_A3_ID":"WSM","ADM0_A3_PL":"WSM","ADM0_A3_GR":"WSM","ADM0_A3_IT":"WSM","ADM0_A3_NL":"WSM","ADM0_A3_SE":"WSM","ADM0_A3_BD":"WSM","ADM0_A3_UA":"WSM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-172.438241,"LABEL_Y":-13.639139,"NE_ID":1159321423,"WIKIDATAID":"Q683","NAME_AR":"ساموا","NAME_BN":"সামোয়া","NAME_DE":"Samoa","NAME_EN":"Samoa","NAME_ES":"Samoa","NAME_FA":"ساموآ","NAME_FR":"Samoa","NAME_EL":"Σαμόα","NAME_HE":"סמואה","NAME_HI":"समोआ","NAME_HU":"Szamoa","NAME_ID":"Samoa","NAME_IT":"Samoa","NAME_JA":"サモア","NAME_KO":"사모아","NAME_NL":"Samoa","NAME_PL":"Samoa","NAME_PT":"Samoa","NAME_RU":"Самоа","NAME_SV":"Samoa","NAME_TR":"Samoa","NAME_UK":"Самоа","NAME_UR":"سامووا","NAME_VI":"Samoa","NAME_ZH":"萨摩亚","NAME_ZHT":"薩摩亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-172.778516,-14.047266,-171.449561,-13.465234],"geometry":{"type":"MultiPolygon","coordinates":[[[[-172.333496,-13.465234],[-172.221533,-13.55957],[-172.176855,-13.684668],[-172.224951,-13.804297],[-172.330859,-13.774707],[-172.484521,-13.800195],[-172.535693,-13.791699],[-172.658789,-13.644824],[-172.744092,-13.578711],[-172.778516,-13.516797],[-172.669629,-13.523828],[-172.510889,-13.482813],[-172.333496,-13.465234]]],[[[-171.454102,-14.046484],[-171.728223,-14.047266],[-171.86377,-14.002051],[-171.911914,-14.00166],[-172.028076,-13.906836],[-172.045898,-13.857129],[-171.984863,-13.824414],[-171.858154,-13.807129],[-171.603906,-13.879199],[-171.56543,-13.943066],[-171.506885,-13.949902],[-171.461377,-13.977637],[-171.449561,-14.022461],[-171.454102,-14.046484]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Saint Vincent and the Grenadines","SOV_A3":"VCT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Saint Vincent and the Grenadines","ADM0_A3":"VCT","GEOU_DIF":0,"GEOUNIT":"Saint Vincent and the Grenadines","GU_A3":"VCT","SU_DIF":0,"SUBUNIT":"Saint Vincent and the Grenadines","SU_A3":"VCT","BRK_DIFF":0,"NAME":"St. Vin. and Gren.","NAME_LONG":"Saint Vincent and the Grenadines","BRK_A3":"VCT","BRK_NAME":"St. Vin. and Gren.","BRK_GROUP":null,"ABBREV":"St.V.G.","POSTAL":"VC","FORMAL_EN":"Saint Vincent and the Grenadines","FORMAL_FR":null,"NAME_CIAWF":"Saint Vincent and the Grenadines","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"St. Vincent and the Grenadines","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":5,"MAPCOLOR13":7,"POP_EST":110589,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":824,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"VC","ISO_A2":"VC","ISO_A2_EH":"VC","ISO_A3":"VCT","ISO_A3_EH":"VCT","ISO_N3":"670","ISO_N3_EH":"670","UN_A3":"670","WB_A2":"VC","WB_A3":"VCT","WOE_ID":23424981,"WOE_ID_EH":23424981,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"VCT","ADM0_DIFF":null,"ADM0_TLC":"VCT","ADM0_A3_US":"VCT","ADM0_A3_FR":"VCT","ADM0_A3_RU":"VCT","ADM0_A3_ES":"VCT","ADM0_A3_CN":"VCT","ADM0_A3_TW":"VCT","ADM0_A3_IN":"VCT","ADM0_A3_NP":"VCT","ADM0_A3_PK":"VCT","ADM0_A3_DE":"VCT","ADM0_A3_GB":"VCT","ADM0_A3_BR":"VCT","ADM0_A3_IL":"VCT","ADM0_A3_PS":"VCT","ADM0_A3_SA":"VCT","ADM0_A3_EG":"VCT","ADM0_A3_MA":"VCT","ADM0_A3_PT":"VCT","ADM0_A3_AR":"VCT","ADM0_A3_JP":"VCT","ADM0_A3_KO":"VCT","ADM0_A3_VN":"VCT","ADM0_A3_TR":"VCT","ADM0_A3_ID":"VCT","ADM0_A3_PL":"VCT","ADM0_A3_GR":"VCT","ADM0_A3_IT":"VCT","ADM0_A3_NL":"VCT","ADM0_A3_SE":"VCT","ADM0_A3_BD":"VCT","ADM0_A3_UA":"VCT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":18,"LONG_LEN":32,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-61.3359,"LABEL_Y":13.0879,"NE_ID":1159321409,"WIKIDATAID":"Q757","NAME_AR":"سانت فينسنت والغرينادين","NAME_BN":"সেন্ট ভিনসেন্ট ও গ্রেনাডাইন","NAME_DE":"St. Vincent und die Grenadinen","NAME_EN":"Saint Vincent and the Grenadines","NAME_ES":"San Vicente y las Granadinas","NAME_FA":"سنت وینسنت و گرنادینها","NAME_FR":"Saint-Vincent-et-les-Grenadines","NAME_EL":"Άγιος Βικέντιος και Γρεναδίνες","NAME_HE":"סנט וינסנט והגרנדינים","NAME_HI":"सन्त विन्सेण्ट और ग्रेनाडाइन्स","NAME_HU":"Saint Vincent és a Grenadine-szigetek","NAME_ID":"Saint Vincent dan Grenadine","NAME_IT":"Saint Vincent e Grenadine","NAME_JA":"セントビンセント・グレナディーン","NAME_KO":"세인트빈센트 그레나딘","NAME_NL":"Saint Vincent en de Grenadines","NAME_PL":"Saint Vincent i Grenadyny","NAME_PT":"São Vicente e Granadinas","NAME_RU":"Сент-Винсент и Гренадины","NAME_SV":"Saint Vincent och Grenadinerna","NAME_TR":"Saint Vincent ve Grenadinler","NAME_UK":"Сент-Вінсент і Гренадини","NAME_UR":"سینٹ وینسینٹ و گریناڈائنز","NAME_VI":"Saint Vincent và Grenadines","NAME_ZH":"圣文森特和格林纳丁斯","NAME_ZHT":"聖文森及格瑞那丁","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.353516,12.694727,-61.124023,13.35874],"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.174512,13.158105],[-61.203906,13.142285],[-61.277295,13.20957],[-61.268457,13.287695],[-61.224072,13.330664],[-61.182129,13.355957],[-61.138965,13.35874],[-61.124023,13.294043],[-61.134521,13.202881],[-61.174512,13.158105]]],[[[-61.226221,12.994629],[-61.242236,12.983691],[-61.234717,12.983691],[-61.242236,12.97627],[-61.247266,12.983643],[-61.255225,12.988184],[-61.265332,12.990186],[-61.276953,12.989893],[-61.276953,12.997363],[-61.262061,12.992773],[-61.239355,12.997266],[-61.239258,13.005371],[-61.245947,13.012695],[-61.249023,13.017822],[-61.240625,13.025732],[-61.212842,13.043262],[-61.201172,13.052539],[-61.199805,13.04873],[-61.199316,13.045117],[-61.197949,13.041699],[-61.19375,13.038281],[-61.208057,13.024707],[-61.226221,12.994629]]],[[[-61.334375,12.695215],[-61.344531,12.694727],[-61.353516,12.698145],[-61.351123,12.701172],[-61.339746,12.703613],[-61.334424,12.710205],[-61.336328,12.719043],[-61.33584,12.728809],[-61.326807,12.734814],[-61.319873,12.735449],[-61.316797,12.731689],[-61.314844,12.722559],[-61.320117,12.715527],[-61.325928,12.709863],[-61.328809,12.701123],[-61.334375,12.695215]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Saint Lucia","SOV_A3":"LCA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Saint Lucia","ADM0_A3":"LCA","GEOU_DIF":0,"GEOUNIT":"Saint Lucia","GU_A3":"LCA","SU_DIF":0,"SUBUNIT":"Saint Lucia","SU_A3":"LCA","BRK_DIFF":0,"NAME":"Saint Lucia","NAME_LONG":"Saint Lucia","BRK_A3":"LCA","BRK_NAME":"Saint Lucia","BRK_GROUP":null,"ABBREV":"S.L.","POSTAL":"LC","FORMAL_EN":"Saint Lucia","FORMAL_FR":null,"NAME_CIAWF":"Saint Lucia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"St. Lucia","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":4,"MAPCOLOR9":3,"MAPCOLOR13":4,"POP_EST":182790,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":2122,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"ST","ISO_A2":"LC","ISO_A2_EH":"LC","ISO_A3":"LCA","ISO_A3_EH":"LCA","ISO_N3":"662","ISO_N3_EH":"662","UN_A3":"662","WB_A2":"LC","WB_A3":"LCA","WOE_ID":23424951,"WOE_ID_EH":23424951,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LCA","ADM0_DIFF":null,"ADM0_TLC":"LCA","ADM0_A3_US":"LCA","ADM0_A3_FR":"LCA","ADM0_A3_RU":"LCA","ADM0_A3_ES":"LCA","ADM0_A3_CN":"LCA","ADM0_A3_TW":"LCA","ADM0_A3_IN":"LCA","ADM0_A3_NP":"LCA","ADM0_A3_PK":"LCA","ADM0_A3_DE":"LCA","ADM0_A3_GB":"LCA","ADM0_A3_BR":"LCA","ADM0_A3_IL":"LCA","ADM0_A3_PS":"LCA","ADM0_A3_SA":"LCA","ADM0_A3_EG":"LCA","ADM0_A3_MA":"LCA","ADM0_A3_PT":"LCA","ADM0_A3_AR":"LCA","ADM0_A3_JP":"LCA","ADM0_A3_KO":"LCA","ADM0_A3_VN":"LCA","ADM0_A3_TR":"LCA","ADM0_A3_ID":"LCA","ADM0_A3_PL":"LCA","ADM0_A3_GR":"LCA","ADM0_A3_IT":"LCA","ADM0_A3_NL":"LCA","ADM0_A3_SE":"LCA","ADM0_A3_BD":"LCA","ADM0_A3_UA":"LCA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":4,"TINY":4,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9.5,"LABEL_X":-60.980094,"LABEL_Y":13.892371,"NE_ID":1159321019,"WIKIDATAID":"Q760","NAME_AR":"سانت لوسيا","NAME_BN":"সেন্ট লুসিয়া","NAME_DE":"St. Lucia","NAME_EN":"Saint Lucia","NAME_ES":"Santa Lucía","NAME_FA":"سنت لوسیا","NAME_FR":"Sainte-Lucie","NAME_EL":"Αγία Λουκία","NAME_HE":"סנט לוסיה","NAME_HI":"सेंट लूसिया","NAME_HU":"Saint Lucia","NAME_ID":"Saint Lucia","NAME_IT":"Saint Lucia","NAME_JA":"セントルシア","NAME_KO":"세인트루시아","NAME_NL":"Saint Lucia","NAME_PL":"Saint Lucia","NAME_PT":"Santa Lúcia","NAME_RU":"Сент-Люсия","NAME_SV":"Saint Lucia","NAME_TR":"Saint Lucia","NAME_UK":"Сент-Люсія","NAME_UR":"سینٹ لوسیا","NAME_VI":"Saint Lucia","NAME_ZH":"圣卢西亚","NAME_ZHT":"聖露西亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.073145,13.717578,-60.886768,14.093359],"geometry":{"type":"Polygon","coordinates":[[[-60.895215,13.821973],[-60.951416,13.717578],[-61.060645,13.783105],[-61.073145,13.865576],[-61.063574,13.915576],[-60.99668,14.010937],[-60.94458,14.072852],[-60.908105,14.093359],[-60.886768,14.011133],[-60.895215,13.821973]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Saint Kitts and Nevis","SOV_A3":"KNA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Saint Kitts and Nevis","ADM0_A3":"KNA","GEOU_DIF":0,"GEOUNIT":"Saint Kitts and Nevis","GU_A3":"KNA","SU_DIF":0,"SUBUNIT":"Saint Kitts and Nevis","SU_A3":"KNA","BRK_DIFF":0,"NAME":"St. Kitts and Nevis","NAME_LONG":"Saint Kitts and Nevis","BRK_A3":"KNA","BRK_NAME":"Saint Kitts and Nevis","BRK_GROUP":null,"ABBREV":"St.K.N.","POSTAL":"KN","FORMAL_EN":"Federation of Saint Kitts and Nevis","FORMAL_FR":null,"NAME_CIAWF":"Saint Kitts and Nevis","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"St. Kitts and Nevis","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":52834,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":1053,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"SC","ISO_A2":"KN","ISO_A2_EH":"KN","ISO_A3":"KNA","ISO_A3_EH":"KNA","ISO_N3":"659","ISO_N3_EH":"659","UN_A3":"659","WB_A2":"KN","WB_A3":"KNA","WOE_ID":23424940,"WOE_ID_EH":23424940,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"KNA","ADM0_DIFF":null,"ADM0_TLC":"KNA","ADM0_A3_US":"KNA","ADM0_A3_FR":"KNA","ADM0_A3_RU":"KNA","ADM0_A3_ES":"KNA","ADM0_A3_CN":"KNA","ADM0_A3_TW":"KNA","ADM0_A3_IN":"KNA","ADM0_A3_NP":"KNA","ADM0_A3_PK":"KNA","ADM0_A3_DE":"KNA","ADM0_A3_GB":"KNA","ADM0_A3_BR":"KNA","ADM0_A3_IL":"KNA","ADM0_A3_PS":"KNA","ADM0_A3_SA":"KNA","ADM0_A3_EG":"KNA","ADM0_A3_MA":"KNA","ADM0_A3_PT":"KNA","ADM0_A3_AR":"KNA","ADM0_A3_JP":"KNA","ADM0_A3_KO":"KNA","ADM0_A3_VN":"KNA","ADM0_A3_TR":"KNA","ADM0_A3_ID":"KNA","ADM0_A3_PL":"KNA","ADM0_A3_GR":"KNA","ADM0_A3_IT":"KNA","ADM0_A3_NL":"KNA","ADM0_A3_SE":"KNA","ADM0_A3_BD":"KNA","ADM0_A3_UA":"KNA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":19,"LONG_LEN":21,"ABBREV_LEN":7,"TINY":4,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-62.757975,"LABEL_Y":17.336558,"NE_ID":1159320983,"WIKIDATAID":"Q763","NAME_AR":"سانت كيتس ونيفيس","NAME_BN":"সেন্ট কিট্স ও নেভিস","NAME_DE":"St. Kitts und Nevis","NAME_EN":"Saint Kitts and Nevis","NAME_ES":"San Cristóbal y Nieves","NAME_FA":"سنت کیتس و نویس","NAME_FR":"Saint-Christophe-et-Niévès","NAME_EL":"Άγιος Χριστόφορος και Νέβις","NAME_HE":"סנט קיטס ונוויס","NAME_HI":"सन्त किट्स और नेविस","NAME_HU":"Saint Kitts és Nevis","NAME_ID":"Saint Kitts dan Nevis","NAME_IT":"Saint Kitts e Nevis","NAME_JA":"セントクリストファー・ネイビス","NAME_KO":"세인트키츠 네비스","NAME_NL":"Saint Kitts en Nevis","NAME_PL":"Saint Kitts i Nevis","NAME_PT":"São Cristóvão e Nevis","NAME_RU":"Сент-Китс и Невис","NAME_SV":"Saint Kitts och Nevis","NAME_TR":"Saint Kitts ve Nevis","NAME_UK":"Сент-Кіттс і Невіс","NAME_UR":"سینٹ کیٹز و ناویس","NAME_VI":"Saint Kitts và Nevis","NAME_ZH":"圣基茨和尼维斯","NAME_ZHT":"聖克里斯多福與尼維斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-62.840479,17.100586,-62.532227,17.402588],"geometry":{"type":"MultiPolygon","coordinates":[[[[-62.532227,17.121875],[-62.582422,17.100586],[-62.624902,17.12959],[-62.615283,17.199121],[-62.574707,17.201025],[-62.53418,17.170117],[-62.532227,17.121875]]],[[[-62.630664,17.23999],[-62.656494,17.224414],[-62.702002,17.286035],[-62.775537,17.302832],[-62.838916,17.339258],[-62.840479,17.34707],[-62.839404,17.365332],[-62.827051,17.386426],[-62.794629,17.402588],[-62.713721,17.353271],[-62.675781,17.290918],[-62.640527,17.262305],[-62.630664,17.23999]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Rwanda","SOV_A3":"RWA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Rwanda","ADM0_A3":"RWA","GEOU_DIF":0,"GEOUNIT":"Rwanda","GU_A3":"RWA","SU_DIF":0,"SUBUNIT":"Rwanda","SU_A3":"RWA","BRK_DIFF":0,"NAME":"Rwanda","NAME_LONG":"Rwanda","BRK_A3":"RWA","BRK_NAME":"Rwanda","BRK_GROUP":null,"ABBREV":"Rwa.","POSTAL":"RW","FORMAL_EN":"Republic of Rwanda","FORMAL_FR":null,"NAME_CIAWF":"Rwanda","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Rwanda","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":2,"MAPCOLOR9":3,"MAPCOLOR13":10,"POP_EST":12626950,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":10354,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"RW","ISO_A2":"RW","ISO_A2_EH":"RW","ISO_A3":"RWA","ISO_A3_EH":"RWA","ISO_N3":"646","ISO_N3_EH":"646","UN_A3":"646","WB_A2":"RW","WB_A3":"RWA","WOE_ID":23424937,"WOE_ID_EH":23424937,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"RWA","ADM0_DIFF":null,"ADM0_TLC":"RWA","ADM0_A3_US":"RWA","ADM0_A3_FR":"RWA","ADM0_A3_RU":"RWA","ADM0_A3_ES":"RWA","ADM0_A3_CN":"RWA","ADM0_A3_TW":"RWA","ADM0_A3_IN":"RWA","ADM0_A3_NP":"RWA","ADM0_A3_PK":"RWA","ADM0_A3_DE":"RWA","ADM0_A3_GB":"RWA","ADM0_A3_BR":"RWA","ADM0_A3_IL":"RWA","ADM0_A3_PS":"RWA","ADM0_A3_SA":"RWA","ADM0_A3_EG":"RWA","ADM0_A3_MA":"RWA","ADM0_A3_PT":"RWA","ADM0_A3_AR":"RWA","ADM0_A3_JP":"RWA","ADM0_A3_KO":"RWA","ADM0_A3_VN":"RWA","ADM0_A3_TR":"RWA","ADM0_A3_ID":"RWA","ADM0_A3_PL":"RWA","ADM0_A3_GR":"RWA","ADM0_A3_IT":"RWA","ADM0_A3_NL":"RWA","ADM0_A3_SE":"RWA","ADM0_A3_BD":"RWA","ADM0_A3_UA":"RWA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":30.103894,"LABEL_Y":-1.897196,"NE_ID":1159321219,"WIKIDATAID":"Q1037","NAME_AR":"رواندا","NAME_BN":"রুয়ান্ডা","NAME_DE":"Ruanda","NAME_EN":"Rwanda","NAME_ES":"Ruanda","NAME_FA":"رواندا","NAME_FR":"Rwanda","NAME_EL":"Ρουάντα","NAME_HE":"רואנדה","NAME_HI":"रवाण्डा","NAME_HU":"Ruanda","NAME_ID":"Rwanda","NAME_IT":"Ruanda","NAME_JA":"ルワンダ","NAME_KO":"르완다","NAME_NL":"Rwanda","NAME_PL":"Rwanda","NAME_PT":"Ruanda","NAME_RU":"Руанда","NAME_SV":"Rwanda","NAME_TR":"Ruanda","NAME_UK":"Руанда","NAME_UR":"روانڈا","NAME_VI":"Rwanda","NAME_ZH":"卢旺达","NAME_ZHT":"盧旺達","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[28.857617,-2.808594,30.876563,-1.063086],"geometry":{"type":"Polygon","coordinates":[[[29.576953,-1.387891],[29.609668,-1.387109],[29.825391,-1.335547],[29.846875,-1.35166],[29.881641,-1.451758],[29.9,-1.466309],[29.930078,-1.469922],[29.990527,-1.446973],[30.101562,-1.368652],[30.15,-1.321094],[30.207031,-1.254199],[30.279883,-1.178809],[30.320508,-1.113086],[30.360254,-1.074609],[30.412305,-1.063086],[30.469922,-1.066016],[30.509961,-1.067285],[30.477051,-1.083008],[30.470215,-1.131152],[30.508105,-1.208203],[30.631934,-1.36748],[30.710742,-1.396777],[30.762207,-1.458691],[30.812598,-1.563086],[30.827539,-1.693652],[30.806738,-1.850684],[30.819141,-1.96748],[30.864648,-2.044043],[30.876563,-2.143359],[30.85498,-2.26543],[30.828711,-2.338477],[30.797656,-2.362695],[30.7625,-2.37168],[30.714844,-2.363477],[30.656641,-2.373828],[30.593359,-2.396777],[30.553613,-2.400098],[30.528906,-2.395605],[30.482227,-2.376074],[30.408496,-2.312988],[30.270996,-2.347852],[30.233789,-2.34707],[30.183301,-2.377051],[30.142285,-2.413965],[30.117285,-2.416602],[30.091895,-2.411523],[29.973438,-2.337109],[29.930176,-2.339551],[29.912402,-2.548633],[29.892578,-2.664648],[29.868164,-2.716406],[29.783398,-2.766406],[29.698047,-2.794727],[29.651367,-2.792773],[29.463672,-2.808398],[29.390234,-2.808594],[29.349805,-2.791504],[29.29707,-2.673047],[29.197559,-2.620313],[29.102051,-2.595703],[29.063184,-2.602539],[29.028613,-2.664551],[29.014355,-2.720215],[28.921777,-2.682031],[28.893945,-2.635059],[28.891406,-2.555566],[28.857617,-2.44668],[28.876367,-2.400293],[28.912695,-2.370313],[28.989551,-2.312793],[29.106445,-2.233203],[29.131543,-2.195117],[29.148047,-2.131836],[29.140625,-1.98457],[29.129395,-1.860254],[29.143262,-1.816016],[29.196582,-1.719922],[29.268164,-1.621582],[29.35166,-1.517578],[29.401953,-1.507422],[29.467969,-1.468066],[29.537793,-1.409766],[29.576953,-1.387891]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":2,"SOVEREIGNT":"Russia","SOV_A3":"RUS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Russia","ADM0_A3":"RUS","GEOU_DIF":0,"GEOUNIT":"Russia","GU_A3":"RUS","SU_DIF":0,"SUBUNIT":"Russia","SU_A3":"RUS","BRK_DIFF":0,"NAME":"Russia","NAME_LONG":"Russian Federation","BRK_A3":"RUS","BRK_NAME":"Russia","BRK_GROUP":null,"ABBREV":"Rus.","POSTAL":"RUS","FORMAL_EN":"Russian Federation","FORMAL_FR":null,"NAME_CIAWF":"Russia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Russian Federation","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":5,"MAPCOLOR9":7,"MAPCOLOR13":7,"POP_EST":144373535,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":1699876,"GDP_YEAR":2019,"ECONOMY":"3. Emerging region: BRIC","INCOME_GRP":"3. Upper middle income","FIPS_10":"RS","ISO_A2":"RU","ISO_A2_EH":"RU","ISO_A3":"RUS","ISO_A3_EH":"RUS","ISO_N3":"643","ISO_N3_EH":"643","UN_A3":"643","WB_A2":"RU","WB_A3":"RUS","WOE_ID":23424936,"WOE_ID_EH":23424936,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"RUS","ADM0_DIFF":null,"ADM0_TLC":"RUS","ADM0_A3_US":"RUS","ADM0_A3_FR":"RUS","ADM0_A3_RU":"RUS","ADM0_A3_ES":"RUS","ADM0_A3_CN":"RUS","ADM0_A3_TW":"RUS","ADM0_A3_IN":"RUS","ADM0_A3_NP":"RUS","ADM0_A3_PK":"RUS","ADM0_A3_DE":"RUS","ADM0_A3_GB":"RUS","ADM0_A3_BR":"RUS","ADM0_A3_IL":"RUS","ADM0_A3_PS":"RUS","ADM0_A3_SA":"RUS","ADM0_A3_EG":"RUS","ADM0_A3_MA":"RUS","ADM0_A3_PT":"RUS","ADM0_A3_AR":"RUS","ADM0_A3_JP":"RUS","ADM0_A3_KO":"RUS","ADM0_A3_VN":"RUS","ADM0_A3_TR":"RUS","ADM0_A3_ID":"RUS","ADM0_A3_PL":"RUS","ADM0_A3_GR":"RUS","ADM0_A3_IT":"RUS","ADM0_A3_NL":"RUS","ADM0_A3_SE":"RUS","ADM0_A3_BD":"RUS","ADM0_A3_UA":"RUS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":18,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":5.2,"LABEL_X":44.686469,"LABEL_Y":58.249357,"NE_ID":1159321201,"WIKIDATAID":"Q159","NAME_AR":"روسيا","NAME_BN":"রাশিয়া","NAME_DE":"Russland","NAME_EN":"Russia","NAME_ES":"Rusia","NAME_FA":"روسیه","NAME_FR":"Russie","NAME_EL":"Ρωσία","NAME_HE":"רוסיה","NAME_HI":"रूस","NAME_HU":"Oroszország","NAME_ID":"Rusia","NAME_IT":"Russia","NAME_JA":"ロシア","NAME_KO":"러시아","NAME_NL":"Rusland","NAME_PL":"Rosja","NAME_PT":"Rússia","NAME_RU":"Россия","NAME_SV":"Ryssland","NAME_TR":"Rusya","NAME_UK":"Росія","NAME_UR":"روس","NAME_VI":"Nga","NAME_ZH":"俄罗斯","NAME_ZHT":"俄羅斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-180,41.199268,180,81.854199],"geometry":{"type":"MultiPolygon","coordinates":[[[[145.881543,43.459521],[145.895605,43.454541],[145.913867,43.455371],[145.931152,43.457031],[145.941113,43.445459],[145.943555,43.426465],[145.931152,43.425635],[145.907227,43.422314],[145.893945,43.419824],[145.886523,43.433057],[145.881543,43.443799],[145.869141,43.450439],[145.869141,43.457861],[145.881543,43.459521]]],[[[146.358789,43.625391],[146.332324,43.619922],[146.288184,43.625391],[146.273828,43.629834],[146.283691,43.638623],[146.310156,43.651855],[146.333301,43.647461],[146.349805,43.644141],[146.358789,43.625391]]],[[[146.045605,43.409326],[146.032324,43.407129],[146.028027,43.420361],[146.048926,43.433594],[146.088574,43.449023],[146.100781,43.440186],[146.086328,43.429199],[146.069922,43.421484],[146.045605,43.409326]]],[[[137.178613,55.100439],[137.055273,54.926758],[136.969434,54.923975],[136.902734,54.960645],[136.765137,54.946045],[136.714648,54.956152],[136.795313,55.009375],[136.995703,55.092725],[137.077539,55.091748],[137.156055,55.107813],[137.178613,55.100439]]],[[[150.589941,59.01875],[150.511133,59.007422],[150.471777,59.034766],[150.470215,59.054053],[150.59248,59.097217],[150.666211,59.160156],[150.712695,59.122461],[150.727734,59.095215],[150.589941,59.01875]]],[[[120.261328,73.089844],[120.00791,73.044873],[119.79209,73.04541],[119.64043,73.124316],[119.761914,73.155469],[119.964453,73.167676],[120.078516,73.156738],[120.236816,73.107275],[120.261328,73.089844]]],[[[124.542969,73.850098],[124.481738,73.8479],[124.366406,73.874609],[124.335742,73.910303],[124.336523,73.928369],[124.429688,73.943018],[124.547656,73.933838],[124.636914,73.900391],[124.65293,73.888037],[124.542969,73.850098]]],[[[106.27041,78.206201],[106.151074,78.198633],[106.023633,78.220117],[106.058398,78.264648],[106.350586,78.272607],[106.456836,78.340039],[106.64043,78.33623],[106.691211,78.31665],[106.719629,78.294189],[106.718945,78.26499],[106.679102,78.26499],[106.504687,78.26167],[106.472461,78.24502],[106.27041,78.206201]]],[[[107.414746,77.242676],[107.302246,77.241504],[107.269531,77.289014],[107.366406,77.346631],[107.486426,77.347119],[107.593652,77.330029],[107.629297,77.319678],[107.664551,77.299805],[107.679492,77.268262],[107.414746,77.242676]]],[[[97.588379,76.599365],[97.535254,76.584424],[97.430371,76.590723],[97.341699,76.628857],[97.310352,76.6896],[97.381641,76.706689],[97.588379,76.599365]]],[[[96.853906,76.19917],[96.797852,76.188428],[96.754492,76.195752],[96.739355,76.206934],[96.740234,76.257861],[96.83291,76.32417],[96.835254,76.344824],[96.87793,76.355225],[96.990234,76.343408],[97.045313,76.315381],[97.053027,76.302588],[96.974219,76.236523],[96.853906,76.19917]]],[[[100.135938,79.614209],[99.91543,79.601611],[99.942285,79.671436],[99.955762,79.690332],[100.068359,79.701025],[100.141504,79.683691],[100.300293,79.670264],[100.135938,79.614209]]],[[[76.756055,73.445801],[76.659375,73.439502],[76.234473,73.476221],[76.083105,73.523486],[76.139551,73.554297],[76.250684,73.555273],[76.756055,73.445801]]],[[[82.709961,74.090869],[82.612793,74.056445],[82.478125,74.075781],[82.381543,74.099219],[82.329395,74.131104],[82.382422,74.149268],[82.525586,74.161426],[82.611035,74.148535],[82.688965,74.11123],[82.709961,74.090869]]],[[[84.758984,74.459424],[84.710449,74.399805],[84.428906,74.430322],[84.389453,74.454443],[84.540332,74.49043],[84.679883,74.512354],[84.872852,74.515527],[84.758984,74.459424]]],[[[86.653125,74.981299],[86.737109,74.962988],[87.000586,74.991943],[87.052148,74.982568],[87.124316,74.939893],[87.011719,74.861914],[86.927148,74.830762],[86.691992,74.848291],[86.390527,74.850879],[86.258594,74.893506],[86.330664,74.938965],[86.504492,74.965967],[86.605469,74.992822],[86.653125,74.981299]]],[[[59.313086,81.305225],[59.096973,81.292285],[58.719043,81.313525],[58.610156,81.337256],[58.634473,81.360352],[58.880566,81.391846],[59.075,81.397705],[59.280859,81.366113],[59.374609,81.325049],[59.313086,81.305225]]],[[[-179.798535,68.94043],[-179.59541,68.906494],[-179.514502,68.917139],[-179.47085,68.912402],[-179.355957,68.852979],[-179.279297,68.825195],[-178.873877,68.754102],[-178.689307,68.675146],[-178.538525,68.585645],[-178.613672,68.603076],[-178.751465,68.660449],[-178.736523,68.593018],[-178.692627,68.545996],[-178.473926,68.501758],[-178.244482,68.46665],[-178.097461,68.424805],[-178.048682,68.388428],[-178.018701,68.322754],[-178.055811,68.264893],[-177.922412,68.286523],[-177.796777,68.337988],[-177.861816,68.378223],[-178.284521,68.518555],[-178.373047,68.565674],[-178.249854,68.541406],[-177.683203,68.362793],[-177.527246,68.294385],[-177.593213,68.281152],[-177.639355,68.241211],[-177.589209,68.224219],[-177.520898,68.236865],[-177.40752,68.245166],[-177.297412,68.22251],[-177.171826,68.174658],[-176.907275,68.119141],[-175.345215,67.678076],[-175.309863,67.602051],[-175.265918,67.566504],[-175.239551,67.521094],[-175.23252,67.44668],[-175.374707,67.357373],[-175.155078,67.365381],[-175.122803,67.376953],[-175.065625,67.413428],[-175.002686,67.4375],[-174.918066,67.407568],[-174.849854,67.348877],[-174.869922,67.268506],[-174.93042,67.203467],[-174.938135,67.093018],[-174.885059,67.000244],[-174.828711,66.961377],[-174.783643,66.916797],[-174.771191,66.784326],[-174.870117,66.724902],[-174.924902,66.623145],[-174.864258,66.613135],[-174.674658,66.603418],[-174.612451,66.5854],[-174.50376,66.537939],[-174.477734,66.492188],[-174.45376,66.429883],[-174.418701,66.371973],[-174.394092,66.344238],[-174.366064,66.34834],[-174.256982,66.428467],[-174.206006,66.452344],[-174.084766,66.473096],[-174.017725,66.38252],[-174.065039,66.22959],[-174.025439,66.229687],[-173.994482,66.245801],[-173.955469,66.286768],[-173.899951,66.310498],[-173.832031,66.366064],[-173.773975,66.434668],[-173.842529,66.488281],[-173.920947,66.521777],[-174.101855,66.540625],[-174.196338,66.580713],[-174.231592,66.631885],[-174.1396,66.652637],[-174.060596,66.689795],[-174.005518,66.778613],[-174.018848,66.827393],[-174.041016,66.875488],[-174.086426,66.942871],[-174.154346,66.982031],[-174.283545,67.001563],[-174.341846,67.039746],[-174.430908,67.037646],[-174.518945,67.049072],[-174.554492,67.063037],[-174.550098,67.090625],[-174.447607,67.103125],[-173.884033,67.106445],[-173.679688,67.144775],[-173.586572,67.132764],[-173.493994,67.105176],[-173.157813,67.069092],[-173.167627,67.052246],[-173.22417,67.035107],[-173.323535,66.954834],[-173.343066,66.909229],[-173.347363,66.851367],[-173.258936,66.840088],[-173.175391,66.8646],[-173.216162,66.91123],[-173.228271,66.968555],[-173.193018,66.993604],[-173.146826,66.998975],[-173.058496,66.955859],[-172.962598,66.942139],[-172.640576,66.925],[-172.549365,66.930518],[-172.520117,66.95249],[-172.582959,66.977832],[-173.001904,67.033984],[-173.00752,67.064893],[-172.621045,67.026807],[-172.447314,66.991748],[-172.273926,66.965576],[-172.031494,66.973291],[-171.795557,66.931738],[-171.56958,66.818701],[-171.360498,66.676758],[-171.149268,66.592725],[-170.92666,66.529736],[-170.555664,66.357227],[-170.509521,66.343652],[-170.473096,66.320264],[-170.542822,66.291064],[-170.604443,66.248926],[-170.483301,66.278076],[-170.361133,66.2979],[-170.301221,66.294043],[-170.246973,66.271875],[-170.211621,66.236426],[-170.191943,66.20127],[-170.243945,66.169287],[-169.888818,66.163477],[-169.777881,66.143115],[-169.72915,66.058105],[-169.831689,65.998926],[-169.891699,66.006104],[-169.949316,66.031006],[-170.003809,66.033496],[-170.159424,66.008057],[-170.401025,65.928516],[-170.540674,65.86543],[-170.563037,65.823584],[-170.541406,65.710254],[-170.560986,65.65625],[-170.666309,65.621533],[-170.896875,65.642627],[-171.001465,65.664893],[-171.118994,65.69502],[-171.232031,65.736865],[-171.376855,65.803955],[-171.421533,65.810352],[-171.451172,65.794238],[-171.401709,65.751758],[-171.303223,65.698486],[-171.134424,65.628076],[-171.054248,65.549951],[-171.105859,65.511035],[-171.169971,65.5021],[-171.216016,65.502783],[-171.36377,65.527197],[-171.46626,65.533105],[-171.790381,65.510449],[-171.907129,65.495947],[-171.947168,65.507959],[-171.957178,65.54209],[-172.131494,65.566943],[-172.233887,65.570459],[-172.282275,65.582324],[-172.322266,65.617529],[-172.435693,65.669629],[-172.607715,65.690039],[-172.719189,65.692432],[-172.783301,65.681055],[-172.556543,65.612012],[-172.353955,65.495996],[-172.391992,65.474561],[-172.417773,65.449561],[-172.305713,65.447803],[-172.232812,65.455713],[-172.211572,65.425195],[-172.269873,65.302734],[-172.309277,65.275635],[-172.661914,65.248535],[-172.573145,65.228223],[-172.48208,65.221875],[-172.378711,65.226709],[-172.286035,65.205713],[-172.223682,65.128711],[-172.213184,65.048145],[-172.304346,65.002148],[-172.39873,64.964746],[-172.592822,64.907959],[-172.79248,64.88291],[-172.897363,64.889209],[-172.999121,64.876611],[-173.066211,64.847168],[-173.085791,64.817334],[-172.998047,64.837109],[-172.896875,64.826074],[-172.801074,64.790527],[-172.811572,64.761182],[-172.902588,64.729199],[-172.924023,64.704932],[-172.889062,64.664014],[-172.900879,64.628857],[-172.85415,64.609912],[-172.746875,64.603271],[-172.616113,64.577881],[-172.487402,64.544189],[-172.436621,64.515332],[-172.393848,64.474658],[-172.37876,64.431543],[-172.401465,64.413916],[-172.694678,64.40708],[-172.73916,64.412256],[-172.755957,64.459961],[-172.791504,64.498926],[-172.903174,64.526074],[-172.949023,64.507373],[-172.915869,64.369434],[-172.960059,64.327686],[-173.009131,64.297461],[-173.157422,64.279736],[-173.275488,64.289648],[-173.375684,64.354883],[-173.375537,64.4104],[-173.309229,64.442676],[-173.309326,64.487451],[-173.32749,64.539551],[-173.395654,64.479004],[-173.474951,64.428613],[-173.603613,64.365479],[-173.665967,64.357324],[-173.729736,64.364502],[-173.897852,64.409717],[-174.001367,64.448975],[-174.204834,64.577783],[-174.318018,64.637646],[-174.570557,64.717773],[-174.830469,64.775977],[-175.036035,64.813672],[-175.14585,64.809277],[-175.255908,64.793994],[-175.395117,64.802393],[-175.442139,64.816699],[-175.483203,64.848584],[-175.520654,64.86709],[-175.715869,64.946094],[-175.853857,65.01084],[-175.859473,65.054199],[-175.830225,65.105518],[-175.856152,65.232812],[-175.922949,65.35249],[-176.093262,65.471045],[-176.547461,65.547559],[-176.922119,65.601367],[-177.05625,65.613623],[-177.175244,65.60166],[-177.48877,65.503711],[-177.698633,65.489697],[-178.310205,65.484863],[-178.4125,65.495557],[-178.504639,65.537207],[-178.525928,65.593018],[-178.499316,65.696631],[-178.502344,65.74043],[-178.526221,65.755225],[-178.558545,65.754004],[-178.67915,65.795361],[-178.791064,65.864746],[-178.879346,65.936475],[-178.939063,66.032764],[-178.858252,66.037549],[-178.746729,66.013672],[-178.730566,66.037256],[-178.693799,66.124219],[-178.61626,66.166016],[-178.586523,66.198437],[-178.534131,66.316553],[-178.526563,66.401562],[-178.615771,66.355176],[-178.752783,66.237256],[-178.82085,66.202686],[-178.868115,66.187061],[-178.915527,66.179932],[-179.026123,66.203516],[-179.105078,66.231934],[-179.106885,66.346094],[-179.143408,66.375049],[-179.178369,66.35332],[-179.192676,66.312549],[-179.293164,66.305078],[-179.340137,66.2875],[-179.316211,66.219824],[-179.327197,66.162598],[-179.422656,66.141064],[-179.616162,66.127881],[-179.683301,66.184131],[-179.740869,66.105762],[-179.783643,66.017969],[-179.789697,65.900879],[-179.72832,65.803809],[-179.640625,65.757568],[-179.449072,65.687842],[-179.365967,65.638623],[-179.344385,65.575244],[-179.3521,65.516748],[-179.45166,65.445312],[-179.519336,65.386279],[-179.635156,65.244141],[-179.70459,65.187207],[-180,65.067236],[-180,65.311963],[-180,65.556787],[-180,65.801563],[-180,66.046289],[-180,66.291064],[-180,66.53584],[-180,66.780566],[-180,67.025342],[-180,67.270117],[-180,67.514844],[-180,67.759619],[-180,68.004395],[-180,68.249121],[-180,68.493896],[-180,68.738672],[-179.999951,68.983447],[-179.798535,68.94043]]],[[[130.687305,42.302539],[130.658008,42.327783],[130.651563,42.37251],[130.617969,42.415625],[130.554102,42.474707],[130.526953,42.5354],[130.584473,42.567334],[130.576563,42.623242],[130.520605,42.674316],[130.439258,42.685547],[130.419922,42.699854],[130.424805,42.727051],[130.452734,42.75542],[130.492969,42.779102],[130.577246,42.811621],[130.722461,42.83584],[130.80332,42.856836],[130.868555,42.86333],[130.942871,42.851758],[131.005566,42.883105],[131.068555,42.902246],[131.083496,42.956299],[131.086133,43.038086],[131.108984,43.062451],[131.135547,43.097607],[131.175586,43.142187],[131.211914,43.257764],[131.239355,43.337646],[131.257324,43.378076],[131.261816,43.433057],[131.243945,43.469043],[131.20918,43.49043],[131.182422,43.505566],[131.180078,43.56709],[131.183594,43.650879],[131.174219,43.704736],[131.213281,44.00293],[131.255273,44.071582],[131.125781,44.469189],[131.086914,44.595654],[131.060645,44.659668],[131.003906,44.753223],[130.967773,44.799951],[130.981641,44.844336],[131.033008,44.888867],[131.082324,44.91001],[131.22793,44.920166],[131.268262,44.936133],[131.446875,44.984033],[131.4875,45.013135],[131.578711,45.083643],[131.613965,45.136572],[131.654004,45.205371],[131.74209,45.242627],[131.794922,45.305273],[131.851855,45.326855],[131.909277,45.27373],[131.977539,45.243994],[132.067383,45.225977],[132.181348,45.203271],[132.362988,45.159961],[132.549023,45.122803],[132.665625,45.093701],[132.723145,45.080566],[132.838672,45.061133],[132.88877,45.046045],[132.936035,45.029932],[133.011719,45.074561],[133.113477,45.130713],[133.096875,45.220459],[133.113379,45.321436],[133.186035,45.494824],[133.266992,45.545264],[133.30957,45.553076],[133.355469,45.572217],[133.436426,45.604687],[133.465625,45.651221],[133.449121,45.705078],[133.475781,45.757666],[133.484668,45.810449],[133.513086,45.878809],[133.551172,45.897803],[133.608008,45.920312],[133.647852,45.955225],[133.685742,46.008936],[133.711133,46.069629],[133.700684,46.139746],[133.750195,46.185937],[133.832813,46.224268],[133.861328,46.247754],[133.874805,46.309082],[133.880273,46.336035],[133.902734,46.366943],[133.886719,46.430566],[133.866602,46.499121],[133.95752,46.614258],[134.022656,46.713184],[134.038574,46.858154],[134.045996,46.881982],[134.071387,46.950781],[134.086426,46.978125],[134.136914,47.068994],[134.202148,47.128076],[134.189258,47.194238],[134.162988,47.25874],[134.167676,47.302197],[134.225195,47.352637],[134.260059,47.377734],[134.29082,47.413574],[134.339453,47.429492],[134.38252,47.438232],[134.483496,47.447363],[134.541895,47.485156],[134.596191,47.523877],[134.695801,47.624854],[134.728125,47.684473],[134.752344,47.71543],[134.698633,47.801416],[134.650293,47.874268],[134.591309,47.975195],[134.566016,48.02251],[134.605371,48.08291],[134.647266,48.120166],[134.669336,48.15332],[134.680859,48.210449],[134.665234,48.253906],[134.563574,48.321729],[134.456152,48.355322],[134.334961,48.368848],[134.293359,48.373437],[134.205859,48.359912],[133.842188,48.27373],[133.671777,48.207715],[133.573242,48.133008],[133.468359,48.097168],[133.301172,48.101514],[133.144043,48.105664],[133.020117,48.064404],[132.877148,47.979102],[132.772852,47.940088],[132.707227,47.947266],[132.636914,47.890088],[132.561914,47.768506],[132.47627,47.71499],[132.380176,47.729492],[132.149805,47.717969],[131.785254,47.680518],[131.556738,47.682031],[131.464258,47.722607],[131.319336,47.727832],[131.121875,47.697656],[131.002734,47.691455],[130.961914,47.709326],[130.932813,47.759814],[130.91543,47.84292],[130.848633,47.929443],[130.732617,48.019238],[130.712109,48.127637],[130.787207,48.25459],[130.804297,48.341504],[130.763477,48.388428],[130.746875,48.430371],[130.65918,48.483398],[130.597266,48.574658],[130.552148,48.60249],[130.565625,48.680127],[130.617188,48.773193],[130.553125,48.861182],[130.355273,48.866357],[130.195996,48.89165],[130.037109,48.972266],[129.792578,49.198877],[129.671094,49.278516],[129.591406,49.28667],[129.533691,49.323437],[129.498145,49.388818],[129.440723,49.389453],[129.384668,49.389453],[129.350098,49.362354],[129.309863,49.353857],[129.248438,49.378662],[129.185156,49.381396],[129.120117,49.362061],[129.065137,49.374658],[129.020313,49.419238],[128.938281,49.448926],[128.819336,49.46377],[128.770313,49.494727],[128.791016,49.541846],[128.769043,49.576953],[128.704004,49.600146],[128.526758,49.594238],[128.237109,49.559277],[127.999609,49.568604],[127.814258,49.622119],[127.711133,49.671533],[127.690137,49.716748],[127.636719,49.760205],[127.550781,49.801807],[127.502441,49.873437],[127.491797,49.975049],[127.512305,50.07168],[127.590234,50.208984],[127.395313,50.298584],[127.337207,50.350146],[127.351172,50.393604],[127.34082,50.428076],[127.306055,50.453516],[127.308203,50.494189],[127.347168,50.550098],[127.346875,50.621338],[127.307031,50.707959],[127.198242,50.829443],[127.02041,50.985889],[126.924805,51.100146],[126.911523,51.172314],[126.887695,51.230127],[126.854395,51.261377],[126.833789,51.314893],[126.847754,51.37417],[126.827344,51.412256],[126.801758,51.448047],[126.805469,51.505664],[126.774512,51.545068],[126.70918,51.566309],[126.688672,51.609912],[126.700781,51.703027],[126.653711,51.781299],[126.510547,51.92583],[126.468066,52.031299],[126.455566,52.126465],[126.394824,52.172998],[126.391504,52.214502],[126.383496,52.286523],[126.346289,52.30625],[126.324219,52.331641],[126.341699,52.362012],[126.312891,52.399756],[126.237598,52.444824],[126.20293,52.483838],[126.194434,52.519141],[126.156641,52.546631],[126.045898,52.57334],[126.016016,52.610205],[126.023242,52.643018],[126.04707,52.673486],[126.060156,52.691992],[126.056055,52.715869],[126.048145,52.739453],[126.004297,52.767871],[125.941602,52.800684],[125.871875,52.871533],[125.782813,52.890723],[125.728125,52.890723],[125.680762,52.930811],[125.695312,52.956299],[125.691699,53.003711],[125.649023,53.042285],[125.595996,53.057471],[125.545996,53.047607],[125.422461,53.08374],[125.225586,53.16582],[125.075,53.203662],[124.970898,53.197314],[124.906641,53.172656],[124.882129,53.129736],[124.812305,53.133838],[124.639844,53.210645],[124.465918,53.229639],[124.369141,53.270947],[124.291406,53.340869],[124.219922,53.370117],[124.154297,53.358691],[123.994727,53.405615],[123.740918,53.510986],[123.607813,53.546533],[123.559766,53.52666],[123.534766,53.526465],[123.489453,53.529443],[123.424023,53.530762],[123.30957,53.555615],[123.154102,53.54458],[122.957617,53.497705],[122.744727,53.468506],[122.51582,53.456982],[122.380176,53.4625],[122.337793,53.48501],[122.088867,53.451465],[121.743945,53.383594],[121.405469,53.317041],[120.985449,53.28457],[120.704102,53.171826],[120.421289,52.968066],[120.218164,52.839893],[120.094531,52.787207],[120.044336,52.718213],[120.067578,52.63291],[120.172754,52.60249],[120.360059,52.627002],[120.521094,52.615039],[120.656152,52.56665],[120.699219,52.493604],[120.650391,52.395898],[120.66543,52.299902],[120.744531,52.205469],[120.749805,52.096533],[120.681445,51.973047],[120.510547,51.848535],[120.237012,51.722998],[120.066895,51.600684],[119.966992,51.422119],[119.813184,51.267041],[119.756641,51.179492],[119.745996,51.107715],[119.684961,51.030127],[119.573438,50.946777],[119.512305,50.863135],[119.501758,50.779248],[119.445703,50.702832],[119.344043,50.633887],[119.280664,50.560986],[119.255859,50.48418],[119.216699,50.43252],[119.163672,50.406006],[119.191895,50.379834],[119.301562,50.353906],[119.346289,50.278955],[119.326074,50.154932],[119.259863,50.066406],[119.147461,50.013379],[118.979492,49.978857],[118.755957,49.962842],[118.451563,49.844482],[118.186621,49.692773],[117.873438,49.513477],[117.812598,49.513525],[117.698438,49.53584],[117.477148,49.609424],[117.245605,49.624854],[117.02168,49.692969],[116.888965,49.737793],[116.683301,49.823779],[116.631543,49.877051],[116.551172,49.920312],[116.351172,49.978076],[116.216797,50.009277],[116.13457,50.010791],[115.925977,49.952148],[115.795215,49.905908],[115.717773,49.880615],[115.587988,49.886035],[115.429199,49.896484],[115.365039,49.911768],[115.274512,49.948877],[115.098047,50.059424],[115.00332,50.138574],[114.87959,50.183057],[114.743164,50.233691],[114.674902,50.245703],[114.554004,50.241455],[114.386328,50.255469],[114.29707,50.274414],[114.221777,50.257275],[114.070703,50.204736],[113.881152,50.101123],[113.732422,50.061523],[113.574219,50.007031],[113.445508,49.941602],[113.319043,49.874316],[113.16416,49.797168],[113.09209,49.692529],[113.055566,49.61626],[112.914844,49.569238],[112.806445,49.523584],[112.697363,49.507275],[112.494922,49.532324],[112.375195,49.5146],[112.079688,49.424219],[111.934473,49.416016],[111.833398,49.403613],[111.735547,49.397754],[111.574805,49.376416],[111.511914,49.360937],[111.429297,49.342627],[111.336621,49.355859],[111.204199,49.304297],[110.82793,49.166162],[110.709766,49.142969],[110.631055,49.137598],[110.52959,49.187061],[110.427832,49.219971],[110.321387,49.215869],[110.199902,49.17041],[109.994531,49.205615],[109.750391,49.239307],[109.528711,49.269873],[109.453711,49.296338],[109.236719,49.334912],[108.919922,49.335352],[108.733008,49.335645],[108.613672,49.322803],[108.522461,49.341504],[108.406934,49.396387],[108.213086,49.524805],[108.098047,49.562646],[108.033789,49.593994],[108.00957,49.646875],[107.96543,49.653516],[107.936719,49.691016],[107.93877,49.740723],[107.934863,49.849023],[107.947852,49.924707],[107.916602,49.947803],[107.786816,49.96001],[107.630957,49.983105],[107.34707,49.98667],[107.233301,49.989404],[107.143066,50.033008],[107.040234,50.086475],[106.941309,50.19668],[106.853711,50.248291],[106.711133,50.312598],[106.574414,50.328809],[106.368457,50.317578],[106.217871,50.30459],[106.08252,50.332568],[105.996484,50.36792],[105.875195,50.405371],[105.692578,50.41416],[105.541602,50.44126],[105.383594,50.47373],[105.266699,50.460498],[105.185938,50.42959],[105.094727,50.389941],[104.976953,50.38291],[104.685352,50.341846],[104.596387,50.317187],[104.466309,50.306152],[104.353906,50.275293],[104.259961,50.214453],[104.179688,50.169434],[104.078711,50.154248],[103.958496,50.157275],[103.856152,50.171826],[103.802637,50.176074],[103.723242,50.153857],[103.63291,50.138574],[103.496289,50.164941],[103.421191,50.187061],[103.304395,50.200293],[103.233789,50.264258],[103.161719,50.290723],[103.039453,50.300635],[102.859668,50.333252],[102.76543,50.366553],[102.683301,50.387158],[102.546289,50.461328],[102.469434,50.525684],[102.406836,50.536182],[102.336426,50.544238],[102.288379,50.585107],[102.285742,50.634668],[102.30332,50.665527],[102.316602,50.718457],[102.276563,50.768701],[102.235059,50.791211],[102.215039,50.829443],[102.226172,50.901465],[102.210254,50.974316],[102.194531,51.050684],[102.151953,51.10752],[102.142383,51.216064],[102.160059,51.26084],[102.155664,51.31377],[102.111523,51.353467],[101.979199,51.382227],[101.821191,51.421045],[101.570898,51.467187],[101.464355,51.471484],[101.38125,51.452637],[101.304492,51.474756],[101.223242,51.513281],[101.085352,51.553027],[100.903613,51.604248],[100.710742,51.661572],[100.53623,51.713477],[100.468945,51.726074],[100.230371,51.729834],[100.03457,51.737109],[99.92168,51.755518],[99.787891,51.827539],[99.719238,51.871631],[99.612891,51.892529],[99.532324,51.899902],[99.407031,51.923535],[99.176172,51.998877],[99.091406,52.034863],[99.034277,52.0354],[98.958105,52.101709],[98.893164,52.117285],[98.848633,52.070068],[98.802539,51.957471],[98.760156,51.905078],[98.640527,51.801172],[98.352734,51.717627],[98.303125,51.674268],[98.276855,51.63457],[98.2375,51.578418],[98.219922,51.505615],[98.184668,51.485742],[98.103125,51.483545],[98.037598,51.449951],[97.98916,51.377051],[97.946875,51.348437],[97.923242,51.280469],[97.927344,51.250732],[97.917871,51.217871],[97.91084,51.165186],[97.835742,51.05166],[97.825293,50.985254],[97.856152,50.943359],[97.919824,50.887158],[97.953125,50.855176],[97.96416,50.817676],[97.961914,50.769141],[98.001172,50.702051],[98.029785,50.644629],[98.078906,50.603809],[98.14502,50.568555],[98.220508,50.557178],[98.279492,50.533252],[98.292676,50.486963],[98.277344,50.422998],[98.250293,50.302441],[98.2,50.227686],[98.170117,50.180566],[98.121973,50.106592],[98.103418,50.077832],[98.003906,50.014258],[97.936621,49.996777],[97.853906,49.946777],[97.785547,49.944531],[97.720703,49.944629],[97.650977,49.933594],[97.589355,49.911475],[97.54082,49.843115],[97.418359,49.773047],[97.359766,49.741455],[97.208594,49.730811],[97.136914,49.761719],[97.097656,49.805029],[97.049121,49.829883],[96.985742,49.882812],[96.711719,49.911572],[96.640234,49.897852],[96.598437,49.878418],[96.543262,49.892529],[96.505762,49.918701],[96.466406,49.911523],[96.381152,49.896045],[96.315039,49.901123],[96.229688,49.954102],[96.111719,49.982471],[96.065527,49.99873],[96.018555,49.998779],[95.989551,49.973584],[95.935742,49.96001],[95.899414,49.990576],[95.851953,50.012939],[95.789355,50.0125],[95.707812,49.966016],[95.567187,49.943848],[95.522656,49.91123],[95.441797,49.915527],[95.385645,49.941211],[95.329492,49.944141],[95.166211,49.943848],[95.111426,49.935449],[95.044336,49.961572],[95.012891,50.008252],[94.930273,50.04375],[94.81123,50.048193],[94.718066,50.043262],[94.675488,50.028076],[94.614746,50.02373],[94.564648,50.087939],[94.496875,50.132812],[94.458496,50.165723],[94.400195,50.179639],[94.354688,50.221826],[94.346875,50.303418],[94.319336,50.404883],[94.287012,50.511377],[94.251074,50.556396],[94.075781,50.572852],[93.989844,50.568848],[93.79541,50.577637],[93.662012,50.583691],[93.625586,50.585547],[93.501074,50.597461],[93.386816,50.608496],[93.270508,50.615576],[93.222559,50.606543],[93.103125,50.603906],[93.009863,50.654541],[92.970703,50.7125],[92.963574,50.744922],[92.941309,50.778223],[92.856445,50.789111],[92.779297,50.778662],[92.738672,50.710938],[92.681348,50.683203],[92.62666,50.688281],[92.578906,50.725439],[92.486426,50.765088],[92.426367,50.803076],[92.354785,50.86416],[92.295801,50.849805],[92.279004,50.812207],[92.265332,50.775195],[92.192383,50.700586],[92.104004,50.691992],[91.956543,50.697607],[91.804297,50.693604],[91.706348,50.665527],[91.63418,50.615137],[91.596875,50.575537],[91.52168,50.562012],[91.446484,50.522168],[91.415039,50.468018],[91.34082,50.470068],[91.300586,50.463379],[91.233789,50.452393],[91.062793,50.422607],[91.021582,50.415479],[90.917188,50.36416],[90.838086,50.32373],[90.760742,50.305957],[90.714355,50.259424],[90.655078,50.222363],[90.516895,50.21333],[90.364844,50.166895],[90.311328,50.151172],[90.224512,50.116699],[90.103711,50.10332],[90.053711,50.09375],[90.00498,50.069287],[89.977344,49.984326],[89.878027,49.953516],[89.744238,49.948096],[89.643848,49.903027],[89.634277,49.823291],[89.669531,49.750488],[89.654102,49.71748],[89.579199,49.699707],[89.475,49.660547],[89.395605,49.611523],[89.299219,49.611133],[89.243945,49.627051],[89.20293,49.595703],[89.17998,49.532227],[89.109473,49.501367],[89.008398,49.472803],[88.970605,49.48374],[88.94541,49.507666],[88.900195,49.539697],[88.863867,49.527637],[88.860352,49.481543],[88.831641,49.448437],[88.747852,49.44624],[88.682715,49.464551],[88.633203,49.486133],[88.544336,49.482568],[88.452441,49.472705],[88.393359,49.482861],[88.337793,49.472559],[88.192578,49.451709],[88.135547,49.381494],[88.134277,49.298437],[88.115723,49.256299],[88.028516,49.219775],[87.988086,49.186914],[87.934766,49.164551],[87.818262,49.162109],[87.814258,49.162305],[87.7625,49.16582],[87.668359,49.147217],[87.576563,49.132373],[87.51582,49.122412],[87.476172,49.091455],[87.416699,49.076611],[87.322852,49.085791],[87.296875,49.147656],[87.233691,49.216162],[87.148047,49.239795],[87.070605,49.25459],[87.000977,49.287305],[86.95293,49.32207],[86.812109,49.487891],[86.714355,49.558594],[86.626465,49.562695],[86.614258,49.609717],[86.665332,49.656689],[86.730664,49.695557],[86.728711,49.748682],[86.675488,49.777295],[86.610156,49.769141],[86.522266,49.707764],[86.417969,49.638477],[86.292383,49.5875],[86.242188,49.546338],[86.180859,49.499316],[86.092969,49.505469],[86.02959,49.503418],[85.974414,49.499316],[85.933594,49.550439],[85.880469,49.556543],[85.498438,49.605371],[85.371582,49.623926],[85.291895,49.599463],[85.232617,49.61582],[85.210156,49.664844],[85.136523,49.750732],[85.076465,49.821631],[85.000781,49.894141],[84.975195,49.951074],[84.999707,50.010303],[84.989453,50.061426],[84.924023,50.087988],[84.838965,50.091309],[84.607324,50.202393],[84.499023,50.21875],[84.400977,50.23916],[84.323242,50.23916],[84.257812,50.288232],[84.194531,50.437451],[84.175977,50.520557],[84.099316,50.604736],[84.002344,50.676855],[83.945117,50.774658],[83.859766,50.818018],[83.717773,50.887158],[83.581445,50.935742],[83.357324,50.99458],[83.27373,50.99458],[83.160254,50.989209],[83.092773,50.960596],[83.019238,50.897266],[82.919043,50.893115],[82.76084,50.893359],[82.718555,50.869482],[82.692969,50.826318],[82.611719,50.771484],[82.493945,50.727588],[82.326367,50.741895],[82.211914,50.719434],[82.098047,50.71084],[81.933691,50.766357],[81.752051,50.764404],[81.633887,50.739111],[81.465918,50.739844],[81.431445,50.771143],[81.451563,50.823682],[81.437695,50.871045],[81.410156,50.909766],[81.388281,50.956494],[81.319141,50.966406],[81.124609,50.946289],[81.071484,50.96875],[81.077539,51.014941],[81.112402,51.072363],[81.141016,51.146582],[81.127246,51.191064],[81.026758,51.185693],[80.965625,51.189795],[80.934082,51.242773],[80.877344,51.281445],[80.813086,51.283496],[80.735254,51.293408],[80.650488,51.277344],[80.605469,51.224219],[80.550684,51.216602],[80.491016,51.201758],[80.448047,51.18335],[80.421484,51.136377],[80.433594,51.092627],[80.452246,50.997607],[80.423633,50.946289],[80.345215,50.919092],[80.27041,50.924609],[80.220215,50.911768],[80.127246,50.85835],[80.086328,50.83999],[80.07207,50.807275],[80.065918,50.758203],[79.98623,50.774561],[79.859668,50.955469],[79.716406,51.16001],[79.554297,51.377979],[79.468848,51.493115],[79.14873,51.868115],[78.99209,52.047412],[78.721484,52.357031],[78.475488,52.638428],[78.198047,52.929688],[78.033496,53.094971],[77.859961,53.269189],[77.799414,53.317432],[77.704395,53.37915],[77.469238,53.498779],[77.132422,53.670117],[76.820703,53.822656],[76.575684,53.942529],[76.513086,53.993213],[76.484766,54.022559],[76.458594,54.055273],[76.42207,54.113525],[76.42168,54.151514],[76.65459,54.145264],[76.703027,54.182471],[76.788965,54.321875],[76.837305,54.442383],[76.759375,54.436865],[76.615527,54.387109],[76.53916,54.351074],[76.496484,54.335693],[76.266602,54.311963],[76.140527,54.258545],[75.880664,54.167969],[75.692871,54.114795],[75.656836,54.106006],[75.437207,54.089648],[75.398145,54.068506],[75.392383,54.021729],[75.377051,53.970117],[75.220215,53.893799],[75.052148,53.826709],[74.988965,53.819238],[74.886816,53.834033],[74.83418,53.825684],[74.681445,53.754395],[74.451953,53.647266],[74.430469,53.603711],[74.429297,53.550732],[74.402734,53.504443],[74.351562,53.487646],[74.277344,53.527734],[74.209961,53.576465],[74.068652,53.611426],[73.858984,53.619727],[73.731152,53.602783],[73.642969,53.57627],[73.469922,53.468896],[73.406934,53.447559],[73.371875,53.454395],[73.361914,53.506201],[73.326855,53.543164],[73.285742,53.598389],[73.305664,53.707227],[73.399414,53.811475],[73.554199,53.868311],[73.678906,53.929443],[73.715527,53.996191],[73.712402,54.042383],[73.666406,54.063477],[73.617969,54.067383],[73.589941,54.044971],[73.505664,53.999316],[73.380664,53.962842],[73.276563,53.955615],[73.229883,53.957812],[73.119336,53.980762],[72.914062,54.107324],[72.741016,54.124512],[72.622266,54.134326],[72.582715,54.121582],[72.564258,54.09043],[72.575586,54.056494],[72.599219,54.023047],[72.585938,53.995947],[72.530273,53.975781],[72.446777,53.941846],[72.404297,53.964453],[72.383008,54.053662],[72.387305,54.123047],[72.329492,54.181445],[72.269141,54.272119],[72.186035,54.325635],[72.105371,54.308447],[72.065625,54.231641],[72.004492,54.205664],[71.887402,54.221484],[71.677148,54.178027],[71.336426,54.15835],[71.093164,54.212207],[71.052734,54.260498],[71.152148,54.364062],[71.159766,54.45542],[71.15918,54.538623],[71.185547,54.599316],[71.12627,54.715039],[70.991797,54.950488],[70.910156,55.127979],[70.790332,55.261133],[70.738086,55.305176],[70.486328,55.282373],[70.417188,55.253174],[70.371484,55.212256],[70.293359,55.183594],[70.182422,55.162451],[70.087402,55.176758],[69.981738,55.199072],[69.870215,55.245654],[69.740234,55.307373],[69.493262,55.356885],[69.246973,55.37251],[68.977246,55.3896],[68.842969,55.35835],[68.712891,55.308496],[68.524805,55.204834],[68.438477,55.194434],[68.301953,55.186523],[68.20625,55.160937],[68.225293,55.115234],[68.244043,55.052441],[68.209375,55.003027],[68.155859,54.976709],[68.073828,54.95957],[67.939941,54.953711],[67.829883,54.943555],[67.693359,54.872412],[67.484668,54.854492],[67.257324,54.828809],[67.09834,54.788184],[66.754492,54.737891],[66.555371,54.71543],[66.222656,54.667383],[65.954688,54.659521],[65.914258,54.693311],[65.707813,54.618701],[65.476953,54.623291],[65.434375,54.593311],[65.378125,54.564453],[65.315918,54.551562],[65.237402,54.516064],[65.192188,54.441113],[65.157813,54.364404],[65.088379,54.340186],[64.99541,54.36875],[64.926758,54.396631],[64.809277,54.368555],[64.649902,54.352246],[64.525098,54.362158],[64.46123,54.38418],[64.199414,54.347412],[64.062891,54.30293],[64.037402,54.279736],[64.003906,54.26709],[63.84707,54.236475],[63.721191,54.24502],[63.701367,54.243213],[63.582031,54.221924],[63.413672,54.183203],[63.292676,54.170459],[63.191309,54.171045],[63.126563,54.139258],[63.073926,54.105225],[62.632715,54.069287],[62.588281,54.044434],[62.499023,54.013184],[62.040234,54.002637],[62.002344,53.979932],[61.985645,53.954395],[61.928711,53.946484],[61.598145,53.994922],[61.333691,54.049268],[61.231055,54.019482],[61.14375,53.963818],[61.113184,53.882471],[61.113184,53.812988],[61.113184,53.753467],[61.073535,53.710449],[60.985547,53.657422],[60.979492,53.621729],[61.098535,53.583105],[61.247949,53.550977],[61.336133,53.565186],[61.409961,53.587061],[61.474121,53.580273],[61.519141,53.554492],[61.534961,53.523291],[61.526563,53.501562],[61.498535,53.484668],[61.400977,53.455811],[61.311621,53.465723],[61.228906,53.445898],[61.185938,53.406201],[61.162793,53.336768],[61.199219,53.287158],[61.310938,53.275195],[61.436816,53.239404],[61.576172,53.222461],[61.659863,53.228467],[61.766211,53.173926],[62.014648,53.107861],[62.081055,53.057422],[62.082715,53.00542],[62.037109,52.966113],[61.974219,52.94375],[61.888574,52.955908],[61.719336,52.969385],[61.533594,52.978516],[61.400781,52.995996],[61.206934,52.989062],[61.047461,52.972461],[61.006543,52.93335],[60.944727,52.860156],[60.893262,52.819434],[60.802344,52.744727],[60.774414,52.675781],[60.821289,52.569824],[60.979492,52.394775],[60.994531,52.336865],[60.937598,52.280566],[60.828418,52.233398],[60.670313,52.15083],[60.499316,52.146338],[60.425488,52.125586],[60.233691,52.024512],[60.065527,51.976465],[60.030273,51.933252],[60.06748,51.890625],[60.280371,51.834619],[60.3875,51.772998],[60.418359,51.703906],[60.464746,51.651172],[60.630371,51.616943],[60.973535,51.537061],[60.993359,51.528711],[61.014844,51.492383],[61.363086,51.441895],[61.411328,51.414746],[61.554688,51.324609],[61.585059,51.229687],[61.512207,51.137012],[61.465039,50.990234],[61.389453,50.861035],[61.226855,50.774805],[60.942285,50.695508],[60.637988,50.663721],[60.508496,50.669189],[60.424805,50.67915],[60.288086,50.70415],[60.186719,50.769775],[60.112109,50.83418],[60.058594,50.850293],[60.005273,50.839697],[59.955176,50.799268],[59.887793,50.690186],[59.812402,50.582031],[59.751172,50.543945],[59.523047,50.492871],[59.497852,50.511084],[59.523926,50.582812],[59.495117,50.604297],[59.452344,50.62041],[59.170898,50.6479],[59.064355,50.668213],[58.984863,50.676123],[58.883691,50.694434],[58.814063,50.737207],[58.664551,50.868311],[58.547461,50.971045],[58.35918,51.063818],[58.188477,51.081738],[58.174707,51.072266],[58.045117,51.068848],[57.838867,51.09165],[57.828906,51.089014],[57.764844,51.046875],[57.716992,50.980957],[57.653809,50.925146],[57.557813,50.895557],[57.442188,50.888867],[57.3125,50.946533],[57.179004,51.036035],[57.011719,51.065186],[56.849609,51.045557],[56.790332,51.031592],[56.620215,50.980859],[56.566895,51.004492],[56.491406,51.019531],[56.325586,50.936084],[56.143945,50.844629],[56.104492,50.77627],[56.049707,50.713525],[55.929199,50.65376],[55.797656,50.602051],[55.68623,50.582861],[55.542285,50.601807],[55.361133,50.665283],[55.195215,50.744727],[55.014844,50.869775],[54.867969,50.941357],[54.727148,50.998096],[54.641602,51.011572],[54.572949,50.990234],[54.546094,50.946045],[54.565625,50.911279],[54.60625,50.879883],[54.637891,50.781055],[54.65,50.660156],[54.636133,50.591602],[54.596191,50.550684],[54.555273,50.535791],[54.517383,50.541162],[54.471484,50.583789],[54.443359,50.673926],[54.421484,50.780322],[54.297852,50.914062],[54.191113,50.995703],[54.139746,51.040771],[54.041504,51.115186],[53.956836,51.161182],[53.776465,51.213721],[53.688086,51.251807],[53.534668,51.399561],[53.448633,51.444531],[53.338086,51.482373],[53.247266,51.493604],[53.227344,51.484961],[53.038379,51.463721],[52.902637,51.466943],[52.820508,51.49458],[52.735059,51.4979],[52.728125,51.498145],[52.635156,51.479541],[52.617773,51.480762],[52.571191,51.481641],[52.496191,51.512158],[52.423047,51.594238],[52.331055,51.681299],[52.219141,51.709375],[52.007129,51.672705],[51.775391,51.554248],[51.609082,51.483984],[51.473438,51.482031],[51.395996,51.471289],[51.344531,51.475342],[51.301074,51.497412],[51.290723,51.540186],[51.269922,51.594482],[51.163477,51.647461],[51.017871,51.681641],[50.882422,51.719189],[50.793945,51.729199],[50.756152,51.675146],[50.643945,51.58916],[50.516309,51.505615],[50.353711,51.369727],[50.309277,51.321582],[50.246875,51.289502],[50.104883,51.25459],[49.932324,51.197168],[49.822266,51.131885],[49.666309,51.102295],[49.498047,51.083594],[49.424609,51.027002],[49.379492,50.934668],[49.323438,50.851709],[49.058691,50.726074],[48.91377,50.64458],[48.808398,50.601318],[48.734766,50.606885],[48.655176,50.619873],[48.625098,50.612695],[48.666016,50.550342],[48.700488,50.35376],[48.749414,50.228467],[48.784766,50.156445],[48.817969,50.099854],[48.843262,50.013135],[48.810254,49.962402],[48.758984,49.92832],[48.6,49.874707],[48.434277,49.828516],[48.334961,49.858252],[48.224805,49.931934],[48.181348,49.97002],[48.060742,50.093604],[47.849609,50.282324],[47.705762,50.377979],[47.599609,50.413574],[47.503613,50.402734],[47.429199,50.357959],[47.376367,50.318115],[47.326465,50.273535],[47.294727,50.21748],[47.297656,50.140234],[47.295215,50.058496],[47.24834,50.000879],[47.12959,49.939062],[46.991992,49.852734],[46.889551,49.696973],[46.823145,49.502246],[46.802051,49.36709],[46.85293,49.303857],[46.953418,49.252588],[47.018164,49.199902],[47.031348,49.150293],[47.014258,49.09834],[46.962207,49.03833],[46.85293,48.969629],[46.702637,48.805566],[46.60918,48.573877],[46.660938,48.412256],[46.853125,48.323584],[47.004297,48.284473],[47.064648,48.232471],[47.119043,48.127002],[47.111523,48.020117],[47.093262,47.947705],[47.130762,47.876758],[47.202051,47.79248],[47.292383,47.740918],[47.387305,47.768652],[47.481934,47.803906],[47.600195,47.78999],[47.934668,47.760693],[48.109961,47.74541],[48.166992,47.708789],[48.275684,47.589941],[48.413086,47.456494],[48.552539,47.320996],[48.600684,47.262305],[48.714355,47.100488],[48.831836,46.954932],[48.959375,46.774609],[48.950293,46.725781],[48.883594,46.70542],[48.776367,46.710352],[48.693555,46.736816],[48.64707,46.758691],[48.605273,46.765918],[48.558398,46.757129],[48.518555,46.734326],[48.502344,46.698633],[48.50918,46.649951],[48.541211,46.605615],[48.586035,46.5771],[48.610156,46.566455],[48.774316,46.507959],[48.958984,46.442139],[49.184277,46.348828],[49.232227,46.337158],[49.245898,46.291602],[49.125488,46.281738],[49.110645,46.228467],[49.07959,46.189209],[48.809961,46.100488],[48.742578,46.100732],[48.683691,46.086182],[48.687305,46.02876],[48.703418,45.976221],[48.749609,45.920557],[48.72959,45.896826],[48.689648,45.888867],[48.637402,45.905762],[48.589063,45.934863],[48.537305,45.942139],[48.487012,45.934863],[48.257617,45.777783],[48.15918,45.737012],[48.052832,45.720996],[47.830176,45.663037],[47.763965,45.665967],[47.701074,45.686182],[47.649805,45.656738],[47.633301,45.584033],[47.574023,45.634277],[47.508398,45.67417],[47.479395,45.687598],[47.463281,45.679688],[47.524219,45.601709],[47.529492,45.530225],[47.514551,45.490918],[47.488672,45.455078],[47.454492,45.433057],[47.413086,45.421045],[47.391113,45.294775],[47.35127,45.217725],[47.296191,45.149463],[47.221484,45.024268],[47.161523,44.969629],[47.114746,44.905957],[47.083789,44.816992],[47.039258,44.837891],[47.00293,44.876074],[46.983691,44.825586],[46.957422,44.782568],[46.841211,44.718262],[46.755273,44.656543],[46.716113,44.560693],[46.707227,44.50332],[46.720898,44.45166],[46.753027,44.420654],[46.915723,44.387158],[47.023633,44.343262],[47.122656,44.26167],[47.229883,44.192383],[47.307031,44.103125],[47.361523,43.993359],[47.429199,43.779883],[47.462793,43.555029],[47.562598,43.834668],[47.646484,43.884619],[47.627832,43.805957],[47.567969,43.684961],[47.508984,43.509717],[47.489844,43.381689],[47.511621,43.270752],[47.512891,43.21875],[47.463184,43.035059],[47.488867,42.999756],[47.529004,42.967139],[47.634863,42.903467],[47.709082,42.810937],[47.727734,42.680713],[47.769727,42.644775],[47.822363,42.613477],[48.080176,42.353711],[48.228613,42.180957],[48.303027,42.080225],[48.383789,41.953418],[48.426367,41.923975],[48.476758,41.905127],[48.572852,41.844482],[48.518652,41.779346],[48.430664,41.66333],[48.391406,41.601904],[48.298145,41.54502],[48.142285,41.484766],[48.056055,41.458691],[47.963672,41.333984],[47.861133,41.212744],[47.791016,41.199268],[47.591797,41.218115],[47.520605,41.229053],[47.317676,41.282422],[47.261133,41.315088],[47.205273,41.455615],[47.142578,41.516064],[47.063965,41.554688],[47.010156,41.5875],[46.987793,41.621387],[46.930859,41.67041],[46.825586,41.743408],[46.749316,41.812598],[46.690332,41.831348],[46.616016,41.806934],[46.571289,41.800098],[46.552148,41.812305],[46.537695,41.87041],[46.429883,41.890967],[46.411523,41.904639],[46.267773,41.960352],[46.212695,41.989893],[46.159766,41.992041],[46.048438,42.00874],[45.954004,42.0354],[45.910352,42.070703],[45.845996,42.109961],[45.726562,42.158887],[45.638574,42.205078],[45.634277,42.234717],[45.688379,42.357373],[45.727539,42.475049],[45.705273,42.498096],[45.655566,42.517676],[45.562891,42.535742],[45.34375,42.529785],[45.208203,42.648242],[45.160254,42.675],[45.071582,42.694141],[44.943359,42.730273],[44.870996,42.756396],[44.850488,42.746826],[44.771094,42.616797],[44.691797,42.709619],[44.644336,42.734717],[44.576465,42.748486],[44.505859,42.748633],[44.329492,42.703516],[44.199707,42.653613],[44.102734,42.616357],[44.004688,42.595605],[43.957422,42.566553],[43.825977,42.571533],[43.759863,42.593848],[43.738379,42.616992],[43.749902,42.65752],[43.79541,42.702979],[43.79873,42.727783],[43.782617,42.747021],[43.623047,42.807715],[43.557813,42.844482],[43.347949,42.89668],[43.08916,42.989062],[43.000195,43.049658],[42.991602,43.091504],[42.890039,43.132617],[42.760645,43.16958],[42.660254,43.159082],[42.566016,43.155127],[42.419043,43.224219],[42.279688,43.228076],[42.122266,43.207324],[42.087793,43.199121],[42.05,43.190137],[41.580566,43.219238],[41.460742,43.276318],[41.358203,43.333398],[41.083105,43.374463],[40.941992,43.418066],[40.80166,43.479932],[40.648047,43.533887],[40.518945,43.512012],[40.342285,43.542725],[40.150195,43.569775],[40.08457,43.553125],[40.02373,43.484863],[39.97832,43.419824],[39.873633,43.472803],[39.516699,43.727881],[39.329395,43.897266],[38.717285,44.288086],[38.63584,44.318018],[38.311816,44.374463],[38.18125,44.419678],[37.851465,44.698828],[37.704883,44.661377],[37.572461,44.67085],[37.495117,44.695264],[37.411328,44.735352],[37.352344,44.788379],[37.284082,44.905029],[37.204785,44.971973],[36.944434,45.06958],[36.650781,45.126465],[36.627637,45.151318],[36.619141,45.185498],[36.873047,45.251758],[36.941211,45.289697],[36.811035,45.340039],[36.761621,45.34834],[36.72041,45.371875],[36.79375,45.409717],[36.865918,45.427051],[36.977832,45.383594],[37.103516,45.302881],[37.213574,45.272314],[37.264258,45.310937],[37.647168,45.377197],[37.672949,45.429736],[37.671875,45.488379],[37.634375,45.486328],[37.609961,45.499512],[37.612402,45.564697],[37.669238,45.654053],[37.840918,45.799561],[37.933105,46.001709],[38.014258,46.047754],[38.073828,46.01709],[38.069727,45.969873],[38.07959,45.934814],[38.132812,46.002832],[38.183594,46.094824],[38.311816,46.095361],[38.400391,46.080029],[38.492285,46.090527],[38.315234,46.241943],[38.077734,46.394336],[37.977539,46.382861],[37.913867,46.406494],[37.80957,46.53208],[37.766504,46.636133],[37.867383,46.633789],[37.967969,46.618018],[38.159473,46.690674],[38.22998,46.70127],[38.343457,46.67832],[38.500977,46.663672],[38.487988,46.732178],[38.438672,46.813086],[38.630762,46.873047],[38.801074,46.906152],[39.126758,47.023438],[39.270703,47.044141],[39.289062,47.070898],[39.293457,47.105762],[39.244531,47.199512],[39.195703,47.268848],[39.02373,47.272217],[38.92832,47.175684],[38.668164,47.143945],[38.552441,47.150342],[38.644336,47.212207],[38.736035,47.23584],[38.761914,47.261621],[38.577246,47.239111],[38.484766,47.175537],[38.214355,47.091455],[38.205859,47.135596],[38.201367,47.175244],[38.221191,47.212744],[38.265332,47.236963],[38.280762,47.259033],[38.280762,47.27666],[38.241016,47.287695],[38.208008,47.296533],[38.201367,47.320801],[38.212402,47.342773],[38.243262,47.373682],[38.256543,47.408936],[38.258789,47.479541],[38.287402,47.55918],[38.368848,47.609961],[38.510938,47.622412],[38.640625,47.665918],[38.718945,47.714111],[38.822266,47.837012],[38.900293,47.855127],[39.057813,47.848486],[39.158496,47.837402],[39.391016,47.83374],[39.658496,47.841211],[39.735938,47.844824],[39.778711,47.887549],[39.775781,47.964453],[39.813965,48.035303],[39.885059,48.168359],[39.961035,48.237939],[39.95791,48.268896],[39.918164,48.281934],[39.866309,48.288428],[39.847461,48.302783],[39.849902,48.331934],[39.889844,48.360449],[39.882617,48.419092],[39.85752,48.484229],[39.835645,48.542773],[39.76543,48.571875],[39.644727,48.591211],[39.67041,48.662451],[39.70459,48.739355],[39.755859,48.78208],[39.792871,48.807715],[39.904102,48.79375],[39.984473,48.807373],[40.003613,48.82207],[39.98916,48.851416],[39.86377,48.877979],[39.75332,48.914453],[39.705664,48.95957],[39.686523,49.00791],[39.759473,49.036572],[39.889746,49.064062],[39.976367,49.129834],[40.07002,49.200293],[40.108789,49.251562],[40.12832,49.307227],[40.126172,49.368848],[40.057813,49.431543],[40.057813,49.49707],[40.094922,49.542676],[40.080664,49.576855],[40.030664,49.596729],[39.958496,49.590771],[39.876855,49.567676],[39.780566,49.572021],[39.626563,49.650684],[39.462793,49.728027],[39.368457,49.730664],[39.30293,49.742041],[39.245996,49.781934],[39.211816,49.833203],[39.174805,49.855957],[39.114941,49.841748],[39.027734,49.818408],[38.918359,49.824707],[38.77666,49.884326],[38.647754,49.952881],[38.551953,49.95459],[38.451172,49.964062],[38.258594,50.052344],[38.208691,50.051465],[38.177539,50.025391],[38.162695,49.954541],[38.146777,49.939404],[38.1125,49.927832],[38.046875,49.92002],[37.950293,49.964209],[37.704199,50.109082],[37.605078,50.214941],[37.582324,50.291846],[37.501367,50.340723],[37.422852,50.411475],[37.343164,50.417627],[37.254883,50.394971],[37.171094,50.360889],[37.13125,50.351514],[36.988477,50.339551],[36.759082,50.291846],[36.696387,50.24624],[36.619434,50.209229],[36.559668,50.234863],[36.499805,50.280469],[36.368848,50.296826],[36.306055,50.280469],[36.243359,50.311768],[36.189453,50.367822],[36.116406,50.408545],[36.007812,50.419678],[35.890234,50.437109],[35.796191,50.405762],[35.67373,50.345996],[35.591113,50.36875],[35.545508,50.43999],[35.488477,50.459912],[35.411621,50.539697],[35.391699,50.610937],[35.411621,50.642236],[35.440137,50.68208],[35.440137,50.727686],[35.417383,50.767578],[35.383203,50.798926],[35.346094,50.904297],[35.314746,50.949902],[35.309082,50.986914],[35.334766,51.021143],[35.311914,51.043896],[35.269141,51.046777],[35.198047,51.043896],[35.158105,51.060986],[35.115332,51.12085],[35.092578,51.180664],[35.064063,51.203418],[34.990234,51.201758],[34.868555,51.189209],[34.760352,51.169336],[34.712305,51.172217],[34.616797,51.203125],[34.491016,51.237061],[34.23418,51.243799],[34.213867,51.255371],[34.228418,51.276855],[34.280664,51.31167],[34.275,51.340186],[34.229883,51.363232],[34.206543,51.419922],[34.209277,51.484082],[34.200879,51.553809],[34.146777,51.607959],[34.11543,51.644971],[34.121094,51.67915],[34.23916,51.692236],[34.379297,51.716504],[34.402734,51.741504],[34.397852,51.78042],[34.113086,51.979639],[34.015332,52.155957],[33.92207,52.251465],[33.818848,52.315625],[33.735254,52.344775],[33.613379,52.332617],[33.451855,52.333789],[33.287109,52.353564],[33.148438,52.34043],[32.899707,52.256348],[32.806445,52.252637],[32.64541,52.279102],[32.50791,52.308545],[32.435449,52.307227],[32.391309,52.294824],[32.362988,52.272119],[32.282813,52.114014],[32.216797,52.082959],[32.122266,52.050586],[32.041602,52.04502],[31.973828,52.046631],[31.875586,52.070898],[31.782422,52.099414],[31.763379,52.101074],[31.758594,52.12583],[31.690625,52.220654],[31.649902,52.262207],[31.601562,52.284814],[31.577344,52.312305],[31.576563,52.426025],[31.585547,52.532471],[31.615918,52.546191],[31.526172,52.633008],[31.519434,52.69873],[31.563477,52.731445],[31.564844,52.759229],[31.535156,52.798242],[31.442773,52.861816],[31.353027,52.933447],[31.295117,52.989795],[31.258789,53.016699],[31.30293,53.060889],[31.364551,53.138965],[31.388379,53.184814],[31.417871,53.196045],[31.562988,53.20249],[31.668262,53.200928],[31.747461,53.18418],[31.777441,53.146875],[31.849707,53.106201],[32.055469,53.089453],[32.141992,53.091162],[32.250684,53.128369],[32.42627,53.210596],[32.469336,53.270312],[32.578027,53.312402],[32.644434,53.328906],[32.704297,53.336328],[32.710254,53.371436],[32.706445,53.419434],[32.685742,53.448145],[32.469629,53.546973],[32.442383,53.579248],[32.425195,53.617285],[32.450977,53.65332],[32.450195,53.69292],[32.200391,53.78125],[31.992188,53.796875],[31.820801,53.791943],[31.754199,53.810449],[31.783008,53.85498],[31.825293,53.93501],[31.837793,54.000781],[31.825977,54.030713],[31.791992,54.055908],[31.628418,54.111182],[31.403613,54.195947],[31.299121,54.291699],[31.245508,54.39165],[31.184766,54.452979],[31.074805,54.491797],[31.081934,54.51709],[31.154883,54.610937],[31.152148,54.625342],[31.121289,54.648486],[30.98418,54.695898],[30.798828,54.783252],[30.791016,54.806006],[30.804492,54.860937],[30.829883,54.91499],[30.866797,54.940723],[30.977734,55.050488],[30.977734,55.087793],[30.958887,55.137598],[30.877441,55.223437],[30.814453,55.278711],[30.810547,55.306982],[30.820996,55.330273],[30.861816,55.3604],[30.900586,55.397412],[30.908789,55.525342],[30.906836,55.57002],[30.882227,55.596387],[30.855957,55.60752],[30.800781,55.601123],[30.72168,55.622119],[30.662305,55.655469],[30.625586,55.66626],[30.586719,55.700293],[30.475391,55.768799],[30.45625,55.786816],[30.233594,55.845215],[30.042676,55.836426],[29.937012,55.845264],[29.881641,55.832324],[29.823926,55.795117],[29.744141,55.77041],[29.68457,55.769727],[29.630078,55.751172],[29.482227,55.68457],[29.412988,55.724854],[29.353418,55.784375],[29.373145,55.834717],[29.397949,55.881055],[29.396094,55.912207],[29.375,55.938721],[29.283008,55.967871],[29.087402,56.021143],[29.031738,56.021777],[28.947461,56.0021],[28.794727,55.942578],[28.74082,55.955371],[28.69082,56.002637],[28.636914,56.061768],[28.563965,56.091992],[28.407031,56.089014],[28.39209,56.086719],[28.316309,56.052539],[28.284277,56.055908],[28.147949,56.14292],[28.17334,56.190332],[28.202051,56.2604],[28.191699,56.315576],[28.169238,56.386865],[28.11084,56.510693],[28.103125,56.545703],[28.00752,56.599854],[27.991602,56.645312],[27.941406,56.703711],[27.89209,56.741064],[27.881543,56.82417],[27.848633,56.853418],[27.806055,56.86709],[27.655664,56.843213],[27.639453,56.845654],[27.711133,56.978076],[27.717383,57.054639],[27.762793,57.135107],[27.814551,57.166895],[27.830273,57.194482],[27.838281,57.247705],[27.828613,57.293311],[27.796875,57.316943],[27.672754,57.368115],[27.538672,57.429785],[27.511133,57.508154],[27.469727,57.524023],[27.351953,57.528125],[27.354297,57.550293],[27.371777,57.612549],[27.4,57.666797],[27.491992,57.724951],[27.514746,57.764209],[27.54209,57.799414],[27.752832,57.841016],[27.776953,57.856738],[27.778516,57.870703],[27.76875,57.884131],[27.721973,57.905469],[27.673438,57.934619],[27.644141,58.013916],[27.571094,58.138086],[27.502441,58.221338],[27.487793,58.270068],[27.505566,58.32627],[27.530078,58.381494],[27.531348,58.435254],[27.427051,58.733057],[27.43418,58.787256],[27.464453,58.841309],[27.513086,58.886279],[27.621777,58.944971],[27.757617,59.052002],[27.849512,59.192676],[27.897656,59.277637],[27.938184,59.297021],[28.016406,59.301709],[28.046094,59.327832],[28.061328,59.343262],[28.12832,59.357568],[28.151074,59.374414],[28.133008,59.403076],[28.06582,59.453174],[28.0125,59.484277],[28.063965,59.554004],[28.046289,59.647168],[28.013965,59.724756],[28.058008,59.781543],[28.131152,59.786523],[28.2125,59.724658],[28.33457,59.692529],[28.42373,59.734082],[28.453906,59.814258],[28.518164,59.849561],[28.603906,59.818066],[28.747656,59.806689],[28.866895,59.811914],[28.947266,59.82876],[28.981543,59.854785],[29.013379,59.901562],[29.079102,59.960986],[29.147266,59.999756],[29.669727,59.955664],[30.122559,59.873584],[30.156836,59.904297],[30.172656,59.957129],[30.059961,60.002588],[29.976758,60.026367],[29.872266,60.12085],[29.721191,60.195312],[29.569336,60.201855],[29.37041,60.175928],[29.069141,60.191455],[28.812695,60.331543],[28.643164,60.375293],[28.522266,60.482959],[28.491602,60.540137],[28.622461,60.491602],[28.640332,60.542871],[28.650586,60.610986],[28.577832,60.652539],[28.512793,60.677295],[28.179297,60.570996],[27.797656,60.536133],[28.151953,60.74585],[28.407422,60.896924],[28.455078,60.919629],[28.568164,60.960205],[28.662891,61.002832],[28.739063,61.05874],[28.992969,61.169043],[29.25166,61.287793],[29.492383,61.444238],[29.579395,61.493457],[29.690137,61.546094],[29.933203,61.711572],[30.009961,61.757373],[30.306445,61.964844],[30.479688,62.068213],[30.565625,62.127588],[30.935742,62.323779],[31.186719,62.481396],[31.285645,62.567822],[31.382422,62.69165],[31.437305,62.776123],[31.533984,62.8854],[31.536523,62.921631],[31.509277,62.955322],[31.437012,63.007715],[31.336719,63.068066],[31.247461,63.141895],[31.180859,63.208301],[30.974805,63.300635],[30.655273,63.41748],[30.418555,63.504053],[30.055371,63.689014],[29.991504,63.735156],[30.004102,63.747314],[30.210254,63.80332],[30.415332,63.94751],[30.503906,64.020605],[30.526074,64.077295],[30.52793,64.141113],[30.51377,64.2],[30.487891,64.236523],[30.390625,64.282422],[30.108105,64.366113],[30.041895,64.443359],[29.986621,64.524268],[29.985547,64.557715],[30.120117,64.644629],[30.126172,64.688086],[30.110254,64.732568],[30.072852,64.765039],[29.783203,64.804297],[29.70166,64.845752],[29.6375,64.911768],[29.604199,64.968408],[29.600879,65.001953],[29.622461,65.039502],[29.72002,65.080322],[29.81084,65.10791],[29.826953,65.145068],[29.826172,65.185303],[29.810547,65.204736],[29.629688,65.223877],[29.612402,65.234766],[29.608008,65.248682],[29.617188,65.265332],[29.714844,65.336963],[29.728027,65.473438],[29.819434,65.56875],[29.715918,65.624561],[29.723926,65.634375],[29.882617,65.663623],[30.029004,65.670703],[30.095313,65.681689],[30.102734,65.72627],[30.0875,65.786523],[29.936621,66.022949],[29.903418,66.091064],[29.803516,66.177051],[29.720703,66.234863],[29.670898,66.276123],[29.590723,66.356836],[29.544336,66.439697],[29.464355,66.532178],[29.371191,66.617041],[29.293262,66.695508],[29.093066,66.849219],[29.066211,66.891748],[29.069043,66.930225],[29.087012,66.970947],[29.243359,67.096582],[29.387695,67.201416],[29.572266,67.324365],[29.750586,67.426416],[29.941211,67.547461],[29.988086,67.668262],[29.979199,67.688574],[29.821582,67.754004],[29.524219,67.929102],[29.343848,68.061865],[29.062988,68.117969],[28.685156,68.189795],[28.560156,68.351367],[28.470703,68.488379],[28.479297,68.537646],[28.752051,68.771436],[28.777637,68.813818],[28.772852,68.840039],[28.744824,68.856445],[28.705957,68.865527],[28.453516,68.872266],[28.414062,68.90415],[28.566016,68.928223],[28.692188,68.961035],[28.898926,69.009668],[28.96582,69.021973],[29.118555,69.049951],[29.170898,69.071533],[29.209961,69.097021],[29.353027,69.270605],[29.388281,69.298145],[29.832715,69.360449],[29.994043,69.39248],[30.087305,69.432861],[30.131836,69.464258],[30.16377,69.501611],[30.186719,69.542773],[30.196484,69.580566],[30.159766,69.629883],[30.180176,69.63584],[30.227539,69.633789],[30.379688,69.584717],[30.61543,69.532568],[30.788867,69.528516],[30.860742,69.538428],[30.89668,69.56123],[30.922461,69.605811],[30.924121,69.651758],[30.869727,69.783447],[31.049512,69.769238],[31.452734,69.6896],[31.546973,69.696924],[31.666211,69.720996],[31.788574,69.815771],[31.879395,69.831982],[31.997949,69.809912],[32.030566,69.835303],[31.969336,69.913916],[31.98457,69.953662],[32.391602,69.868701],[32.56543,69.806494],[32.941699,69.751855],[33.007812,69.722119],[33.012598,69.670508],[32.994629,69.626172],[32.915039,69.601709],[32.754297,69.605713],[32.176758,69.674023],[32.091504,69.632568],[32.161328,69.596631],[32.330566,69.554248],[32.377734,69.479102],[32.636816,69.489453],[32.883789,69.46084],[32.999805,69.470117],[33.020996,69.445605],[32.941602,69.38335],[32.978906,69.367334],[33.255859,69.427734],[33.384863,69.444287],[33.454297,69.428174],[33.463672,69.378174],[33.417969,69.315283],[33.412988,69.267432],[33.327734,69.151855],[33.196387,69.116846],[33.141211,69.068701],[33.333398,69.098193],[33.435645,69.130371],[33.627051,69.28916],[33.684375,69.310254],[34.229395,69.313135],[34.352734,69.30293],[34.863965,69.228076],[35.00957,69.22124],[35.175879,69.230811],[35.233203,69.265576],[35.289844,69.275439],[35.85791,69.191748],[36.618262,69.003467],[37.730566,68.692139],[38.357617,68.415137],[38.430176,68.355615],[38.656836,68.321875],[38.705566,68.344727],[38.831543,68.324902],[39.568945,68.071729],[39.82334,68.058594],[39.789746,68.112158],[39.746289,68.162207],[39.809277,68.15083],[39.895605,68.114502],[40.035742,68.015381],[40.206641,67.941895],[40.380664,67.831885],[40.525781,67.789697],[40.656543,67.774072],[40.766309,67.743018],[40.966406,67.713477],[41.060938,67.444189],[41.133887,67.386035],[41.133887,67.266943],[41.261719,67.218457],[41.358789,67.209668],[41.354297,67.121436],[41.275586,66.914307],[41.188965,66.826172],[40.521582,66.446631],[40.10332,66.299951],[39.289062,66.132031],[38.653906,66.069043],[38.397559,66.064453],[37.900684,66.095605],[37.628223,66.12959],[37.294824,66.225049],[36.983691,66.272559],[36.769922,66.293555],[36.373438,66.302295],[35.513477,66.395801],[35.363965,66.428662],[34.824609,66.611133],[34.610254,66.559619],[34.482617,66.550342],[34.396094,66.613184],[34.430859,66.629785],[34.451563,66.651221],[34.146094,66.703271],[33.893652,66.706738],[33.75957,66.750977],[33.59541,66.784619],[33.522949,66.764355],[33.482031,66.764551],[33.150195,66.843945],[33.001953,66.908301],[32.847559,67.021533],[32.885254,67.061133],[32.930469,67.086816],[32.399902,67.152686],[31.895313,67.161426],[31.983008,67.129834],[32.201563,67.113232],[32.340625,67.067871],[32.500977,67.003857],[32.463672,66.916309],[32.686426,66.829541],[32.857324,66.746924],[32.862402,66.721387],[32.928711,66.704102],[33.180566,66.679932],[33.224414,66.603857],[33.18291,66.573877],[33.217383,66.531641],[33.405273,66.484277],[33.517676,66.471387],[33.655957,66.442627],[33.593262,66.38457],[33.476953,66.346875],[33.360547,66.329541],[33.41582,66.315625],[33.566699,66.320996],[34.112695,66.225244],[34.399805,66.128418],[34.691797,65.951855],[34.786328,65.864551],[34.793164,65.816357],[34.776953,65.768262],[34.734766,65.716309],[34.715527,65.664062],[34.615723,65.509912],[34.544141,65.456689],[34.406445,65.395752],[34.535938,65.27793],[34.671094,65.168115],[34.803516,64.985986],[34.827148,64.912695],[34.832617,64.800195],[34.952246,64.755957],[34.905469,64.738672],[34.858301,64.706689],[34.869531,64.56001],[35.035352,64.440234],[35.284082,64.362549],[35.432031,64.346777],[35.64707,64.37832],[35.802051,64.335352],[36.146484,64.189014],[36.301953,64.034375],[36.364941,64.002832],[36.71377,63.945068],[36.975195,63.909521],[37.372754,63.816748],[37.442188,63.813379],[37.635352,63.893408],[37.967969,63.949121],[38.070801,64.02583],[38.062207,64.091016],[37.977148,64.207031],[37.953711,64.320117],[37.843555,64.366309],[37.740625,64.396973],[37.42959,64.373584],[37.289551,64.37793],[37.183691,64.408496],[37.04043,64.48916],[36.769336,64.685254],[36.624219,64.750537],[36.578711,64.790967],[36.528223,64.847363],[36.53457,64.938623],[36.65293,64.935449],[36.785938,64.987158],[36.882812,65.172363],[37.050195,65.195898],[37.14082,65.194287],[37.528125,65.108252],[38.009375,64.87876],[38.115723,64.85459],[38.228223,64.851221],[38.412109,64.85708],[38.441992,64.827148],[38.540918,64.79126],[38.613086,64.78667],[39.053516,64.713916],[39.567383,64.570557],[39.758008,64.577051],[39.833008,64.656396],[39.848633,64.690527],[40.057813,64.770752],[40.203711,64.784033],[40.407813,64.754883],[40.444922,64.778711],[40.375391,64.896289],[40.28125,64.998096],[40.142676,65.063281],[39.896484,65.254785],[39.798047,65.349854],[39.749121,65.447949],[39.781152,65.534717],[39.816504,65.597949],[40.327832,65.751709],[40.512793,65.843799],[40.691602,65.963428],[40.774414,65.987891],[41.076074,66.021094],[41.475781,66.123437],[41.780859,66.259326],[42.083594,66.465918],[42.210547,66.519678],[42.313672,66.514746],[42.450781,66.482422],[42.602148,66.42251],[42.806543,66.411328],[43.005957,66.420947],[43.233203,66.415527],[43.550879,66.321289],[43.60332,66.291211],[43.653125,66.250977],[43.550391,66.173389],[43.541895,66.123389],[43.623926,66.146729],[43.737012,66.158398],[43.84375,66.142383],[43.944141,66.098682],[44.016699,66.049756],[44.104395,66.008594],[44.132422,66.064551],[44.145313,66.112744],[44.097168,66.235059],[44.220703,66.40708],[44.316406,66.481689],[44.488672,66.671777],[44.437109,66.794629],[44.429297,66.937744],[44.403906,67.004199],[44.291797,67.099658],[44.074414,67.167334],[43.855371,67.188623],[43.782422,67.254492],[43.795703,67.32959],[43.856348,67.439307],[44.036426,67.670654],[44.225391,67.995605],[44.231543,68.07124],[44.213867,68.112598],[44.226465,68.154443],[44.204688,68.25376],[44.169141,68.3271],[43.404004,68.608545],[43.358008,68.635791],[43.333203,68.673389],[43.413281,68.681738],[43.471973,68.679834],[44.048047,68.548828],[44.175293,68.541748],[45.078125,68.578174],[45.519434,68.546533],[45.891992,68.479687],[46.158398,68.291357],[46.429688,68.118848],[46.683594,67.970459],[46.69043,67.848828],[46.428906,67.823682],[46.174219,67.818164],[45.528711,67.757568],[45.374121,67.688867],[44.939453,67.477441],[44.902148,67.413135],[44.939453,67.350781],[45.138867,67.284717],[45.562207,67.185596],[45.752539,66.98916],[45.885352,66.891064],[45.986035,66.853125],[46.083984,66.843506],[46.297754,66.842822],[46.448535,66.818994],[46.492383,66.800195],[46.552344,66.818994],[46.69082,66.825537],[47.496484,66.929834],[47.655859,66.975928],[47.709082,67.04502],[47.768066,67.275635],[47.839258,67.355713],[47.908203,67.454688],[47.882617,67.515332],[47.874707,67.58418],[48.278711,67.650391],[48.653809,67.695264],[48.833203,67.681494],[48.87793,67.731348],[48.762695,67.827002],[48.695703,67.874219],[48.754297,67.895947],[48.840625,67.869727],[48.953906,67.853809],[49.155273,67.87041],[49.93125,68.065137],[50.233203,68.175342],[50.414062,68.218359],[50.699414,68.317725],[50.838867,68.349951],[51.078516,68.36333],[51.336133,68.402441],[51.616699,68.476318],[51.994727,68.53877],[52.055664,68.541309],[52.128809,68.532031],[52.285352,68.459375],[52.227441,68.418604],[52.183496,68.374268],[52.25918,68.350928],[52.322266,68.339697],[52.39668,68.351709],[52.475,68.382129],[52.669727,68.426758],[52.722656,68.484033],[52.647656,68.506152],[52.550098,68.592432],[52.435059,68.610205],[52.344043,68.608154],[52.683594,68.731201],[53.412891,68.912549],[53.801953,68.995898],[54.18584,69.00332],[54.491211,68.992334],[54.37627,68.964746],[53.874414,68.926611],[53.797656,68.907471],[53.798242,68.884668],[53.919531,68.87124],[53.970605,68.844287],[53.929297,68.811865],[53.891211,68.801514],[53.833887,68.708936],[53.758887,68.633984],[53.917676,68.536963],[53.930859,68.435547],[53.829492,68.382666],[53.690039,68.402539],[53.566699,68.36709],[53.342578,68.343213],[53.293359,68.31167],[53.260547,68.26748],[53.403125,68.256836],[53.515137,68.259668],[53.913672,68.231201],[53.967871,68.227344],[54.099219,68.259033],[54.23291,68.266309],[54.393945,68.275098],[54.476172,68.294141],[54.56123,68.273047],[54.717969,68.18418],[54.861328,68.201855],[54.923047,68.373828],[55.150879,68.480029],[55.418066,68.567822],[55.675293,68.575879],[55.924609,68.637305],[56.043652,68.648877],[56.275684,68.624072],[56.620215,68.619043],[56.909375,68.566699],[57.126855,68.554004],[57.444336,68.641504],[58.173047,68.889746],[58.237012,68.833936],[58.353906,68.916211],[58.918945,69.003809],[59.057324,69.006055],[59.059863,68.972559],[59.110156,68.896289],[59.22041,68.849609],[59.370508,68.738379],[59.29834,68.708447],[59.222559,68.691309],[59.112305,68.616309],[59.099023,68.444336],[59.310742,68.400293],[59.604297,68.351123],[59.725684,68.351611],[59.827539,68.380322],[59.858789,68.396045],[59.897363,68.421924],[59.922852,68.471338],[59.941406,68.510498],[59.865137,68.604932],[59.895996,68.706348],[60.160254,68.699512],[60.48916,68.728955],[60.637695,68.787012],[60.815137,68.895215],[60.933594,68.986768],[60.858594,69.145508],[60.664551,69.110254],[60.337305,69.457031],[60.170605,69.590918],[60.276465,69.652637],[60.558691,69.692334],[60.812988,69.821143],[60.909082,69.847119],[61.015918,69.851465],[61.770508,69.763037],[62.63125,69.743115],[63.361426,69.675293],[64.19043,69.534668],[64.592188,69.435645],[64.928516,69.325391],[64.896289,69.247803],[65.031543,69.269824],[65.326758,69.201367],[65.52793,69.173438],[65.735742,69.132324],[65.812695,69.077002],[66.084766,69.036328],[66.365625,68.961328],[66.416113,68.947852],[66.756445,68.891992],[67.002441,68.873584],[67.149219,68.753955],[67.639648,68.579297],[67.730762,68.513672],[68.156934,68.403662],[68.371191,68.314258],[68.504199,68.348438],[68.829492,68.567432],[69.024316,68.817969],[69.140527,68.950635],[68.924414,68.956201],[68.762891,68.917383],[68.65957,68.927393],[68.542773,68.96709],[68.355078,69.067578],[68.117383,69.23623],[68.073047,69.420801],[68.005859,69.480029],[67.774316,69.52998],[67.624121,69.584424],[67.064453,69.693701],[66.964063,69.655566],[66.93418,69.59668],[66.89668,69.553809],[66.840234,69.60918],[66.804004,69.659229],[66.80293,69.740137],[66.832227,69.842187],[66.926367,70.014258],[67.069043,70.005615],[67.144434,70.030615],[67.239258,70.108057],[67.197461,70.171631],[67.146484,70.219922],[67.156836,70.295117],[67.246875,70.500098],[67.284766,70.738721],[67.211523,70.798438],[67.143359,70.837549],[66.822461,70.797363],[66.702246,70.818506],[66.675195,70.864697],[66.666113,70.900586],[66.758789,70.962354],[66.84707,71.063721],[66.692578,71.041699],[66.639648,71.081396],[66.768066,71.139893],[66.917578,71.282373],[67.274219,71.347852],[67.541797,71.412012],[67.959375,71.548389],[68.269238,71.682812],[68.469434,71.852637],[68.607422,72.012744],[68.829688,72.391553],[69.039062,72.669922],[69.391406,72.955518],[69.611816,72.981934],[69.694336,72.977539],[69.708984,72.956396],[69.658789,72.931836],[69.645117,72.897559],[69.738281,72.884961],[69.8875,72.882568],[70.172168,72.901172],[70.655371,72.890381],[71.500195,72.913672],[71.616992,72.9021],[71.92959,72.819678],[72.100977,72.829004],[72.446387,72.790332],[72.633789,72.744482],[72.812109,72.691406],[72.787402,72.482959],[72.75293,72.343164],[72.624414,72.079443],[72.574121,72.012549],[72.375,71.821631],[72.279492,71.695508],[72.129688,71.60918],[71.912012,71.547949],[71.884375,71.511377],[71.867285,71.457373],[72.079297,71.306689],[72.581348,71.151123],[72.704492,70.963232],[72.731641,70.822852],[72.7,70.457324],[72.65332,70.403418],[72.561914,70.345557],[72.469434,70.274951],[72.529688,70.17251],[72.599414,69.793213],[72.615625,69.484033],[72.557324,69.378418],[72.527051,69.154248],[72.527344,69.080518],[72.576758,68.968701],[72.67832,68.874854],[72.811914,68.815234],[73.190723,68.706787],[73.548047,68.574512],[73.573438,68.532617],[73.591699,68.481885],[73.465234,68.430762],[73.266406,68.294482],[73.139453,68.181348],[73.129395,68.090918],[73.173047,67.973047],[73.152148,67.865039],[73.066797,67.766943],[72.94873,67.69624],[72.594336,67.586963],[71.847461,67.007617],[71.668164,66.939697],[71.365234,66.961523],[71.448926,66.878955],[71.551172,66.760449],[71.539551,66.683105],[71.341992,66.686719],[71.065625,66.604492],[70.939453,66.548145],[70.724902,66.519434],[70.561426,66.548682],[70.382812,66.60249],[70.408887,66.647607],[70.442578,66.668262],[70.567969,66.700879],[70.690723,66.745312],[70.630762,66.754199],[70.579102,66.75376],[70.443945,66.697314],[70.283398,66.685791],[70.09375,66.754346],[69.948633,66.82998],[69.877148,66.845459],[69.74043,66.8146],[69.217773,66.828613],[69.078711,66.815918],[69.013477,66.78833],[69.051172,66.766357],[69.091113,66.723584],[69.143945,66.640723],[69.194336,66.578662],[69.412012,66.510742],[69.700977,66.48457],[69.982422,66.401416],[70.339453,66.342383],[71.145508,66.36665],[71.358008,66.359424],[71.565625,66.33374],[71.916992,66.246729],[72.067578,66.25332],[72.321582,66.332129],[72.383984,66.506543],[72.417383,66.560791],[73.341602,66.806836],[73.513574,66.861084],[73.79209,66.995312],[73.883301,67.084961],[73.98623,67.327686],[74.074512,67.414111],[74.676074,67.694629],[74.769531,67.766357],[74.787305,67.89751],[74.778223,67.985938],[74.742676,68.073535],[74.632422,68.218311],[74.51123,68.303076],[74.391406,68.420605],[74.480957,68.658887],[74.57959,68.751221],[75.124609,68.861719],[75.589551,68.901172],[76.10752,68.975732],[76.316016,68.991504],[76.45918,68.978271],[76.605762,68.897607],[76.735059,68.776904],[77.111719,68.596191],[77.238477,68.46958],[77.261035,68.315576],[77.248438,67.941016],[77.174414,67.778516],[77.325098,67.735645],[77.395605,67.698682],[77.579199,67.643945],[77.675098,67.5896],[77.771582,67.570264],[77.985547,67.55918],[78.589551,67.578467],[78.922461,67.589111],[78.887598,67.613135],[78.839063,67.631201],[78.559082,67.639111],[78.16123,67.678369],[77.588281,67.751904],[77.520117,67.909619],[77.535937,68.007666],[77.664844,68.190381],[77.756836,68.222363],[77.868262,68.234717],[77.995117,68.259473],[77.958691,68.377051],[77.906836,68.482275],[77.785254,68.630469],[77.650684,68.903027],[77.466309,68.905127],[77.32832,68.958643],[76.644922,69.117383],[76.000977,69.235059],[75.561133,69.251807],[75.42002,69.238623],[75.053516,69.116309],[74.814844,69.090576],[74.362598,69.14458],[73.977441,69.114648],[73.836035,69.143213],[73.775684,69.198242],[73.890918,69.417969],[73.832715,69.503906],[73.663281,69.61709],[73.560156,69.707227],[73.578125,69.802979],[73.830176,70.175684],[73.937402,70.272852],[74.206738,70.445459],[74.343359,70.578711],[74.310938,70.653613],[73.731543,71.068701],[73.576563,71.216504],[73.507227,71.263525],[73.365234,71.319775],[73.150488,71.385205],[73.08623,71.444922],[73.671777,71.845068],[73.939453,71.914746],[74.31123,71.957813],[74.489063,71.997021],[74.804102,72.077393],[74.992188,72.144824],[75.053223,72.199219],[75.089941,72.263135],[75.09707,72.420654],[75.060352,72.548779],[75.008008,72.619434],[74.896875,72.710107],[74.786816,72.811865],[74.864941,72.838428],[74.942188,72.853809],[75.152441,72.852734],[75.369336,72.796631],[75.474902,72.68501],[75.603516,72.581055],[75.603125,72.512158],[75.591406,72.457227],[75.644336,72.382275],[75.691113,72.35],[75.741406,72.29624],[75.694434,72.253516],[75.644336,72.232324],[75.550195,72.170801],[75.394531,71.983203],[75.273828,71.958936],[75.247461,71.813379],[75.503223,71.654639],[75.468555,71.534375],[75.417188,71.494678],[75.280273,71.430078],[75.298047,71.378467],[75.332031,71.341748],[75.733594,71.265918],[76.110449,71.218555],[76.741992,71.202051],[76.929004,71.127881],[76.995215,71.181055],[77.589648,71.16792],[78.068262,70.986328],[78.320605,70.93042],[78.525781,70.911816],[78.942187,70.933789],[79.01543,70.950195],[79.083887,71.002002],[78.888672,70.997168],[78.803516,70.973535],[78.723926,70.975977],[78.587695,70.993896],[78.491406,71.025391],[78.386523,71.087109],[78.212598,71.266309],[77.908398,71.324072],[77.706641,71.300586],[77.481055,71.311572],[77.113672,71.409375],[76.871191,71.446582],[76.433398,71.55249],[76.312109,71.595459],[76.215723,71.682861],[76.103613,71.829004],[76.032422,71.9104],[76.124023,71.926611],[76.42168,72.006006],[76.871387,72.033008],[77.061328,72.004199],[77.550781,71.84209],[77.777539,71.836426],[78.186914,71.90708],[78.232422,71.952295],[78.14082,72.044678],[78.016406,72.092041],[77.780664,72.114307],[77.492871,72.071729],[77.41084,72.107764],[77.439746,72.156543],[77.471582,72.192139],[77.625293,72.201416],[77.733203,72.229199],[77.968164,72.328711],[78.225391,72.377441],[78.482617,72.394971],[79.42207,72.380762],[79.953906,72.223047],[80.474023,72.153125],[80.699219,72.098291],[80.7625,72.08916],[80.814746,72.054297],[80.856055,71.970215],[81.51123,71.746143],[81.661621,71.715967],[82.079883,71.706836],[82.547266,71.758594],[82.757812,71.764111],[82.986133,71.748682],[83.106641,71.720508],[83.233594,71.668164],[83.165527,71.602197],[83.105664,71.562451],[82.977051,71.451367],[82.917969,71.419922],[82.493164,71.292871],[82.322852,71.26001],[82.276953,71.093457],[82.254297,71.056201],[82.23916,70.997705],[82.316016,70.879443],[82.335938,70.807373],[82.270703,70.706738],[82.163184,70.598145],[82.182422,70.511475],[82.221191,70.395703],[82.23584,70.430273],[82.231445,70.48291],[82.258398,70.543604],[82.45166,70.690088],[82.59248,70.889941],[82.737793,70.94209],[82.869141,70.954834],[83.010156,70.89541],[83.051074,70.815234],[83.058398,70.694727],[83.030176,70.580518],[82.919824,70.407422],[82.74248,70.286475],[82.682324,70.217725],[82.767285,70.154053],[82.856543,70.104541],[82.961035,70.088281],[83.080762,70.093018],[83.10957,70.10957],[83.132031,70.157178],[83.094141,70.221094],[83.073828,70.276709],[83.293457,70.321338],[83.49707,70.345264],[83.659863,70.418359],[83.700488,70.466406],[83.735938,70.546484],[83.65127,70.672217],[83.578906,70.765918],[83.333887,70.988525],[83.15127,71.103613],[83.266016,71.275879],[83.457617,71.467529],[83.531055,71.514258],[83.550488,71.543652],[83.571289,71.594385],[83.553516,71.649805],[83.534375,71.683936],[83.34043,71.827539],[83.200293,71.874707],[82.755078,71.902832],[82.64541,71.925244],[82.319141,72.071826],[82.280664,72.105127],[82.209277,72.211182],[82.183594,72.237549],[82.093652,72.26543],[81.792871,72.326611],[81.58623,72.351709],[81.282715,72.358838],[81.098145,72.389746],[80.827051,72.488281],[80.797754,72.519971],[80.719629,72.6479],[80.65625,72.712012],[80.675391,72.75918],[80.77373,72.860791],[80.841602,72.94917],[80.757422,73.025244],[80.638672,73.04917],[80.509668,73.086084],[80.455469,73.155225],[80.424512,73.231152],[80.418945,73.289648],[80.398047,73.356836],[80.458301,73.413721],[80.595898,73.474023],[80.561914,73.51499],[80.583203,73.568457],[81.468848,73.64043],[81.816992,73.658838],[83.544727,73.666504],[83.666992,73.686475],[84.417383,73.722021],[84.737891,73.762842],[85.077441,73.719531],[85.200586,73.721533],[85.44834,73.734619],[85.611426,73.821582],[85.979297,73.856934],[86.591406,73.894287],[86.892969,73.887109],[86.961328,73.860742],[87.029492,73.82417],[86.697656,73.716846],[86.365918,73.619775],[86.094141,73.57832],[85.827051,73.492773],[85.800488,73.458936],[85.792578,73.43833],[85.802441,73.37168],[85.818164,73.326953],[86.098145,73.272607],[86.30791,73.195752],[86.514355,73.140479],[86.677051,73.106787],[86.715039,73.12583],[86.12168,73.306738],[85.970801,73.34707],[85.910059,73.39043],[85.938965,73.456494],[85.998926,73.48584],[86.092383,73.519141],[86.155078,73.534668],[86.37627,73.568848],[87.120117,73.615039],[87.294434,73.704688],[87.369531,73.755908],[87.571191,73.810742],[87.503223,73.832471],[87.3375,73.846045],[87.209668,73.878662],[86.69707,74.195312],[86.571094,74.24375],[86.177832,74.279395],[86.001367,74.316016],[86.18291,74.423047],[86.395801,74.450098],[86.538477,74.444238],[86.664746,74.414258],[86.897949,74.325342],[87.229688,74.363867],[87.106152,74.403564],[86.894238,74.449707],[86.700098,74.522461],[86.425684,74.585498],[86.116113,74.628564],[85.791016,74.645117],[85.880762,74.740234],[86.058887,74.728223],[86.119531,74.757422],[86.20127,74.816211],[86.651465,74.682422],[86.862891,74.717871],[87.041797,74.778857],[87.419336,74.940918],[87.467578,75.013232],[87.287402,75.052539],[87.140723,75.072266],[86.939063,75.068115],[86.92168,75.112793],[87.005957,75.169824],[87.170801,75.191748],[87.671387,75.12959],[88.503711,75.290479],[88.733105,75.369189],[89.310254,75.470117],[89.595117,75.458252],[90.184961,75.591064],[91.004687,75.649561],[91.479492,75.649658],[91.84541,75.723682],[92.40752,75.749658],[92.602539,75.779102],[93.549805,75.854102],[94.075195,75.912891],[94.156348,75.959229],[93.687012,75.921582],[93.574023,75.956299],[93.475488,75.932861],[93.406055,75.90127],[93.178125,75.958984],[93.116309,75.944629],[93.068652,75.912842],[92.986621,75.902686],[92.89043,75.909961],[92.858594,75.979492],[92.971582,76.075098],[93.104883,76.02583],[93.259277,76.098779],[93.35957,76.100732],[93.648438,76.05415],[93.842871,76.101318],[94.102344,76.123584],[94.388281,76.102783],[94.506738,76.107959],[94.575586,76.151758],[95.038477,76.113525],[95.359277,76.1396],[95.578711,76.137305],[95.919922,76.113135],[96.075488,76.081982],[95.986035,76.009668],[95.65332,75.892188],[95.743848,75.872314],[95.934766,75.926025],[96.508594,76.005566],[96.600586,75.989893],[96.537695,75.921631],[96.49707,75.891211],[96.879199,75.931055],[97.205469,76.018701],[97.350684,76.033398],[97.499219,75.980225],[97.637695,76.029053],[97.669824,76.078027],[97.918359,76.088672],[98.02002,76.133691],[98.194629,76.166406],[98.341992,76.180566],[98.662012,76.242676],[98.771289,76.224023],[98.984668,76.207568],[99.187305,76.177637],[99.562695,76.109326],[99.615625,76.082324],[99.663184,76.078027],[99.77041,76.02876],[99.689258,75.956348],[99.602344,75.852051],[99.442187,75.803174],[99.540723,75.798584],[99.609375,75.811279],[99.7375,75.880664],[99.851367,75.930273],[99.825391,76.135937],[99.616797,76.240186],[99.460645,76.275098],[99.093848,76.384326],[98.969531,76.430811],[98.805664,76.480664],[98.869434,76.50957],[99.57627,76.471436],[99.935742,76.489893],[100.322363,76.47915],[100.84375,76.525195],[101.060742,76.477246],[101.310742,76.478906],[101.597754,76.439209],[101.683789,76.485498],[101.212988,76.535693],[101.002637,76.530518],[100.928027,76.556738],[101.00625,76.615088],[101.099316,76.704004],[101.008203,76.781348],[100.92041,76.82251],[100.905859,76.900684],[100.989941,76.990479],[101.185742,77.028564],[101.292871,77.101562],[101.517676,77.198096],[102.610156,77.508545],[103.131445,77.626465],[103.33125,77.641064],[103.560742,77.631934],[104.014551,77.73042],[104.184863,77.730469],[104.814258,77.6521],[104.965234,77.594727],[105.308984,77.549219],[105.710254,77.525244],[105.894531,77.488867],[105.983398,77.447607],[106.05957,77.390527],[105.73418,77.352002],[105.38457,77.237842],[104.911914,77.174707],[104.323633,77.132666],[104.202441,77.101807],[105.320215,77.092334],[105.645898,77.100684],[105.712012,77.001465],[105.822168,76.99751],[106.14541,77.045312],[106.338672,77.047852],[106.705078,77.01377],[106.783691,77.031787],[106.941602,77.034375],[107.278906,76.990967],[107.429785,76.926563],[107.190234,76.822021],[106.940918,76.730469],[106.63877,76.573389],[106.545508,76.586279],[106.384668,76.589453],[106.413574,76.512256],[106.683203,76.514697],[106.825391,76.480078],[107.157715,76.524072],[107.624219,76.510107],[107.722168,76.522314],[107.902246,76.569678],[107.949902,76.660645],[108.02793,76.718457],[108.181641,76.737842],[108.352051,76.719531],[108.638379,76.720117],[109.369336,76.749219],[109.981152,76.711865],[110.471484,76.758398],[111.114844,76.723047],[111.39248,76.68667],[111.600586,76.622314],[111.786133,76.603564],[111.938672,76.553418],[112.093945,76.480322],[112.016797,76.420557],[111.942676,76.380469],[112.142773,76.423975],[112.29707,76.434668],[112.413281,76.408301],[112.619531,76.383545],[112.68418,76.218848],[112.742578,76.186914],[112.798438,76.129639],[112.721875,76.077197],[112.65625,76.053564],[112.818945,76.058594],[113.04668,76.114111],[113.094043,76.13291],[113.150391,76.174512],[113.066016,76.215234],[112.987988,76.239746],[113.086035,76.258105],[113.272656,76.25166],[113.365527,76.178857],[113.427734,76.112109],[113.563867,75.89165],[113.857227,75.921289],[113.870996,75.856006],[113.74873,75.704785],[113.619922,75.592676],[113.567578,75.568408],[113.485938,75.563965],[113.517188,75.621875],[113.469043,75.656689],[113.391602,75.677881],[113.126367,75.698682],[112.629199,75.8354],[112.49668,75.849902],[112.466113,75.843652],[112.453027,75.830176],[112.72959,75.737646],[112.955664,75.571924],[113.161523,75.620508],[113.242969,75.611426],[113.35625,75.534277],[113.558887,75.502051],[113.726172,75.450635],[113.613574,75.292969],[112.924902,75.015039],[112.191992,74.853174],[111.868262,74.740039],[111.299023,74.658447],[110.892773,74.548096],[110.373535,74.466064],[110.225879,74.378662],[109.840332,74.321973],[109.866406,74.293066],[109.911328,74.261328],[109.863867,74.208887],[109.810254,74.169189],[109.51084,74.088818],[109.075,74.032324],[108.199512,73.694092],[107.76543,73.625],[107.271094,73.621045],[107.166992,73.589404],[106.794238,73.37666],[106.679395,73.330664],[106.188672,73.308008],[105.677148,72.959277],[105.392773,72.841016],[105.143945,72.777051],[105.402734,72.789941],[105.708203,72.83667],[106.066699,72.949854],[106.15957,73.002002],[106.208789,73.060547],[106.315039,73.106396],[106.47793,73.139404],[107.108789,73.177295],[107.36875,73.163135],[107.750391,73.173145],[108.00127,73.235596],[108.150977,73.25791],[108.285352,73.265869],[108.351465,73.310205],[108.575391,73.319043],[109.089941,73.378418],[109.165625,73.399609],[109.331055,73.487451],[109.637109,73.454004],[109.855273,73.472461],[110.428711,73.628906],[110.77334,73.68916],[110.868164,73.730713],[110.799219,73.759766],[110.722363,73.779932],[110.388281,73.726025],[110.091211,73.708545],[109.752734,73.722559],[109.706738,73.74375],[109.665625,73.800244],[109.774121,73.88125],[109.869141,73.930615],[110.083887,73.994385],[110.261426,74.017432],[110.920117,73.9479],[111.05625,73.939355],[111.130859,74.052832],[111.341406,74.047363],[111.550586,74.028516],[111.459961,74.004834],[111.228125,73.968555],[111.299512,73.884863],[111.400391,73.827734],[111.803711,73.745264],[112.147266,73.708936],[112.4,73.711133],[112.79541,73.746094],[112.855957,73.771143],[112.939648,73.835645],[112.835938,73.962061],[112.934961,73.945703],[113.032813,73.913867],[113.181543,73.837402],[113.326855,73.707422],[113.416211,73.647607],[113.364453,73.582764],[113.156934,73.45957],[113.276953,73.391504],[113.490918,73.346094],[113.487598,73.145117],[113.474609,73.047852],[113.369336,72.941895],[113.247363,72.897217],[113.127832,72.830664],[113.158203,72.769482],[113.186133,72.730176],[113.312207,72.657373],[113.664551,72.634521],[113.711914,72.65415],[113.630078,72.6771],[113.391406,72.711035],[113.298145,72.738867],[113.215527,72.805859],[113.311523,72.87832],[113.41748,72.932178],[113.542773,73.054346],[113.581445,73.142236],[113.558887,73.232617],[113.63916,73.273584],[113.765234,73.317969],[113.829297,73.326562],[113.88623,73.345801],[113.795117,73.367432],[113.711328,73.378564],[113.539453,73.433643],[113.510352,73.50498],[113.856934,73.533398],[114.060547,73.584668],[114.816016,73.607178],[115.337695,73.702588],[116.495508,73.676074],[117.308594,73.59917],[118.450195,73.589795],[118.870898,73.537891],[118.91123,73.518359],[118.936426,73.481201],[118.754492,73.464502],[118.457031,73.464404],[118.376563,73.367236],[118.430273,73.246533],[118.960352,73.117285],[119.425293,73.063965],[119.750391,72.979102],[119.92168,72.971338],[120.597949,72.981104],[120.997168,72.936719],[121.354297,72.97085],[121.747852,72.969678],[121.886035,72.960889],[122.029785,72.897217],[122.260156,72.880566],[122.5375,72.877783],[122.69209,72.89082],[122.751953,72.906494],[122.730859,72.931299],[122.501953,72.970654],[122.526758,73.016699],[122.615234,73.02793],[122.999316,72.964648],[123.160352,72.954883],[123.301172,73.001807],[123.40459,73.085645],[123.461621,73.144189],[123.521875,73.1729],[123.572461,73.177344],[123.622266,73.193262],[123.500977,73.261621],[123.383887,73.347314],[123.355273,73.40249],[123.322656,73.430811],[123.305078,73.53291],[123.416211,73.636865],[123.491113,73.666357],[123.796875,73.626758],[123.933887,73.689307],[124.019043,73.712305],[124.388086,73.754834],[124.541211,73.75127],[124.796289,73.711768],[125.61709,73.520605],[125.598535,73.447412],[125.794434,73.468457],[125.887891,73.498096],[126.107422,73.51748],[126.254492,73.548193],[126.295996,73.53667],[126.344922,73.506299],[126.308887,73.463672],[126.257422,73.419775],[126.29248,73.394189],[126.335449,73.38877],[126.552539,73.334912],[126.838477,73.43418],[126.955176,73.528223],[127.031348,73.547461],[127.740332,73.481543],[127.955078,73.445557],[127.996875,73.425635],[128.025684,73.390771],[128.141699,73.352393],[128.281445,73.330566],[128.26416,73.300732],[128.257812,73.26748],[128.587012,73.262402],[128.730469,73.233398],[128.888672,73.190234],[128.87168,73.139355],[128.913379,73.110596],[129.05918,73.10752],[129.100586,73.112354],[129.053711,73.04541],[128.853516,72.972607],[128.735254,72.943262],[128.599023,72.895166],[128.674023,72.885889],[129.017285,72.872461],[129.229102,72.775732],[129.250391,72.705176],[129.117578,72.676953],[128.815332,72.585889],[128.633398,72.550146],[128.508496,72.547314],[128.418262,72.535156],[128.549414,72.49585],[129.116602,72.485742],[129.281348,72.437695],[129.411719,72.315479],[129.410645,72.166309],[129.283496,72.092041],[128.934961,72.079492],[128.475195,72.245557],[128.196973,72.309619],[127.803418,72.434033],[127.726074,72.413184],[127.841406,72.308252],[128.026563,72.25],[128.358789,72.08833],[128.911426,71.755322],[129.040137,71.782422],[129.116602,71.824609],[129.154199,71.878662],[129.121582,71.953223],[129.210254,71.916943],[129.291797,71.850195],[129.46084,71.739307],[129.23418,71.744824],[128.949023,71.707568],[128.843262,71.663477],[128.922656,71.601758],[129.134277,71.592871],[129.224512,71.508838],[129.389844,71.404883],[129.761914,71.119531],[130.025977,71.065381],[130.28125,70.947314],[130.537109,70.892529],[130.668457,70.88833],[130.757129,70.962354],[130.831934,70.935889],[130.898047,70.803564],[131.021582,70.746094],[131.157422,70.742188],[131.268262,70.765527],[131.432324,70.828271],[131.562012,70.901025],[131.769043,71.101416],[131.906445,71.202637],[132.035352,71.244043],[131.99082,71.293213],[132.003711,71.350195],[132.098828,71.483984],[132.227637,71.642773],[132.325781,71.726221],[132.562305,71.895313],[132.653906,71.925977],[132.71582,71.871484],[132.768555,71.79873],[132.803613,71.767578],[132.839258,71.755176],[133.130859,71.606689],[133.426172,71.490967],[133.688867,71.434229],[134.102832,71.378955],[134.702734,71.386816],[134.813867,71.460596],[135.022363,71.515039],[135.359375,71.543506],[135.55918,71.610352],[135.884766,71.630566],[136.090332,71.61958],[136.406152,71.570752],[137.11582,71.415674],[137.31543,71.359424],[137.41748,71.299023],[137.650586,71.208154],[137.797852,71.163916],[137.939648,71.133398],[137.991699,71.142725],[137.97373,71.168652],[137.901953,71.194043],[137.844043,71.226807],[138.012695,71.26084],[138.03252,71.28584],[138.090625,71.307422],[138.314063,71.325537],[138.097168,71.358594],[138.022168,71.363428],[137.918359,71.384082],[137.927344,71.429785],[137.995703,71.463525],[138.04834,71.525977],[138.118457,71.566162],[138.23418,71.596338],[138.318066,71.602832],[138.525195,71.562744],[138.67002,71.634814],[138.780176,71.629004],[139.004883,71.556055],[139.209375,71.444775],[139.320215,71.444727],[139.632129,71.489258],[139.98418,71.491504],[139.93877,71.557666],[139.695117,71.700439],[139.722949,71.884961],[139.552344,71.926709],[139.359277,71.951367],[139.640234,71.99834],[139.84707,72.148584],[140.014063,72.162109],[140.187695,72.191309],[140.134375,72.209619],[139.616992,72.225684],[139.505273,72.207666],[139.430469,72.163477],[139.176367,72.163477],[139.14502,72.264404],[139.14082,72.329736],[139.473633,72.466504],[139.601172,72.496094],[140.450586,72.493115],[140.705078,72.518945],[141.079297,72.586914],[140.983203,72.630029],[140.972852,72.716992],[140.652344,72.842822],[140.675977,72.871631],[140.708105,72.890039],[140.808203,72.890967],[141.309766,72.857715],[141.518359,72.788672],[142.061426,72.720801],[143.51582,72.698242],[143.680957,72.673193],[144.303906,72.643018],[144.568652,72.609912],[145.199316,72.570215],[145.485742,72.54209],[145.71416,72.497363],[146.083301,72.471387],[146.25293,72.442236],[146.234766,72.349707],[145.46709,72.362061],[145.212891,72.392676],[144.897461,72.39624],[144.776367,72.382275],[144.587598,72.305518],[144.360938,72.265332],[144.169238,72.258789],[144.294922,72.192627],[144.470703,72.174756],[145.03916,72.259863],[146.594141,72.302441],[146.831836,72.29541],[146.807031,72.236572],[146.599219,72.123535],[146.40166,72.035498],[146.113281,71.944971],[146.005859,71.945459],[146.230273,72.1375],[146.137305,72.146484],[146.051465,72.142285],[145.799414,72.221875],[145.758594,72.225879],[145.709668,72.206348],[145.710156,72.177588],[145.664062,72.066992],[145.756738,72.020654],[145.756738,71.941309],[145.407227,71.890137],[145.271191,71.894629],[145.125781,71.927148],[145.063965,71.926074],[145.046875,71.901025],[145.077734,71.854639],[145.07373,71.830859],[145.017871,71.793701],[144.989648,71.753369],[145.075586,71.707373],[145.188574,71.695801],[145.804785,71.746484],[146.073242,71.80835],[146.367969,71.92207],[146.894727,72.19751],[147.127051,72.292041],[147.261816,72.327881],[147.433984,72.340918],[148.402051,72.311963],[148.964844,72.252344],[149.501563,72.164307],[149.766211,72.09126],[149.963086,71.992188],[149.998145,71.950488],[150.016895,71.895654],[149.881055,71.843018],[149.279688,71.825537],[149.04873,71.795752],[148.965332,71.762793],[148.954883,71.744141],[148.92334,71.714648],[148.968164,71.690479],[149.237891,71.687939],[149.498047,71.664014],[149.857129,71.601465],[149.912695,71.580713],[150.026465,71.521338],[150.06084,71.51084],[150.599805,71.520117],[150.634863,71.498877],[150.667773,71.455225],[150.525098,71.38584],[150.384766,71.338818],[150.097656,71.226562],[150.242969,71.267188],[150.82168,71.362891],[150.967773,71.380469],[151.145313,71.37373],[151.582422,71.286963],[151.759766,71.217822],[152.092773,71.023291],[151.999805,71.00249],[151.762012,70.982471],[152.508789,70.834473],[152.79834,70.835645],[153.460645,70.878613],[153.794141,70.87998],[154.413965,70.974463],[155.029492,71.034229],[155.595898,71.038623],[155.895215,71.095508],[156.68457,71.09375],[157.447363,71.074512],[158.037012,71.039258],[158.702148,70.93501],[159.350684,70.790723],[159.72793,70.649658],[159.804688,70.604932],[159.911816,70.506104],[159.958594,70.423633],[160.006445,70.309668],[159.983398,70.221387],[159.889648,70.158789],[159.831445,70.081445],[159.83916,69.98999],[159.729395,69.870215],[159.83252,69.784961],[160.119141,69.729785],[160.739453,69.655176],[160.910742,69.606348],[160.928906,69.458545],[160.982031,69.334473],[161.035547,69.098193],[161.14082,69.038867],[161.309863,68.982275],[161.340625,68.905176],[161.129004,68.653857],[160.99668,68.60752],[160.856055,68.53833],[161.104492,68.5625],[161.230176,68.653906],[161.365137,68.822998],[161.495313,68.849854],[161.565625,68.905176],[161.565625,69.063965],[161.480078,69.201709],[161.480078,69.300098],[161.536914,69.379541],[161.945117,69.545117],[162.166016,69.611572],[162.375684,69.649072],[162.944629,69.682764],[163.201367,69.714746],[163.498047,69.693262],[163.705273,69.701807],[163.945996,69.735156],[164.15957,69.719287],[164.513281,69.609131],[165.760742,69.584424],[165.980469,69.545996],[166.820312,69.499561],[166.884375,69.499902],[167.073145,69.554443],[167.628125,69.740332],[167.856836,69.728223],[167.950098,69.69917],[168.047656,69.625635],[168.15,69.577393],[168.22998,69.447021],[168.303027,69.271484],[168.423047,69.239502],[168.587598,69.228369],[168.946191,69.16333],[169.310645,69.079541],[169.414648,68.919629],[169.609863,68.786035],[170.065625,68.798682],[170.537598,68.825391],[170.99541,69.045312],[170.99668,69.134717],[170.883789,69.263623],[170.71416,69.388232],[170.582227,69.58335],[170.160938,69.626563],[170.201172,69.683203],[170.35957,69.750977],[170.503125,69.856543],[170.525391,69.937891],[170.486816,70.107568],[170.867969,70.096045],[171.24668,70.076123],[171.970508,70.000342],[172.55957,69.968359],[172.869238,69.919775],[173.056348,69.864941],[173.277441,69.823828],[173.35332,69.924023],[173.438672,69.946826],[173.733398,69.891113],[173.948047,69.874121],[174.319434,69.881641],[174.785547,69.855664],[175.295605,69.860059],[175.751172,69.90415],[175.921484,69.895313],[176.10752,69.860303],[176.410449,69.768506],[176.924414,69.645996],[177.394531,69.611621],[177.933691,69.495605],[178.442773,69.452979],[178.84834,69.387207],[178.906934,69.362109],[178.925,69.325977],[178.950684,69.295801],[179.272656,69.259668],[179.868262,69.012695],[180,68.983447],[180,65.067236],[179.827344,65.03418],[179.651367,64.920947],[179.448242,64.822021],[179.15,64.781592],[178.698438,64.631104],[178.519531,64.602979],[178.285352,64.672266],[177.748633,64.717041],[177.581641,64.777881],[177.337012,64.931348],[177.251855,64.953613],[177.179199,65.014111],[176.880859,65.081934],[176.624805,65.037598],[176.413086,65.07124],[176.341016,65.047314],[176.452148,65.025244],[176.645508,65.007178],[176.940039,65.016016],[177.037305,64.999658],[177.123438,64.947021],[177.222852,64.86167],[177.148242,64.804834],[177.06875,64.78667],[176.831055,64.849219],[176.556641,64.83999],[176.429492,64.855176],[176.061133,64.960889],[175.781152,64.844043],[175.396484,64.783691],[175.097754,64.776855],[174.548828,64.683887],[174.698633,64.681445],[175.09707,64.746631],[175.330664,64.746631],[175.67793,64.782471],[175.858594,64.825293],[175.945898,64.865186],[176.056543,64.904736],[176.169238,64.884766],[176.246973,64.843018],[176.300879,64.783838],[176.350977,64.705127],[176.283203,64.663818],[176.219434,64.641943],[176.140918,64.58584],[176.507617,64.682422],[176.730957,64.624854],[176.842871,64.633789],[177.049805,64.719238],[177.3875,64.774023],[177.427441,64.763379],[177.467188,64.736816],[177.409863,64.572803],[177.43291,64.444482],[177.6875,64.304736],[177.95332,64.222266],[178.044727,64.21958],[178.130566,64.235254],[178.163965,64.309082],[178.229492,64.364404],[178.312988,64.314404],[178.381445,64.260889],[178.477148,64.127881],[178.474805,64.089014],[178.451367,64.011377],[178.536035,63.975635],[178.650293,63.965283],[178.69248,63.842334],[178.731445,63.66709],[178.681348,63.650732],[178.625977,63.650732],[178.44043,63.605566],[178.466113,63.574072],[178.653711,63.556641],[178.706445,63.521533],[178.668848,63.439941],[178.678711,63.402295],[178.744043,63.394775],[178.786719,63.442432],[178.775391,63.510254],[178.792969,63.540332],[178.918555,63.400244],[178.921484,63.34502],[179.028125,63.282422],[179.332324,63.190186],[179.388574,63.147217],[179.405078,63.077734],[179.329004,63.05791],[179.25957,63.008301],[179.302148,62.939844],[179.381055,62.883691],[179.510938,62.862793],[179.570508,62.773486],[179.570508,62.6875],[179.477246,62.613086],[179.288672,62.510352],[179.176953,62.469189],[179.133887,62.396436],[179.120703,62.320361],[179.044629,62.323682],[178.963867,62.355273],[178.019238,62.546973],[177.663086,62.582813],[177.35127,62.587451],[177.292578,62.599023],[177.295898,62.644482],[177.31582,62.685254],[177.359668,62.736963],[177.338965,62.781348],[177.29834,62.784229],[177.258691,62.750439],[177.172656,62.750342],[177.091211,62.789551],[177.023535,62.777246],[176.990039,62.722217],[176.963477,62.693262],[176.964746,62.658643],[177.008008,62.626562],[177.189648,62.591602],[177.159473,62.560986],[176.907422,62.536084],[176.702539,62.505762],[176.436523,62.41084],[176.328418,62.346045],[175.613867,62.184375],[175.441992,62.12793],[175.36582,62.121338],[175.267871,62.102393],[175.192383,62.034424],[174.797559,61.938867],[174.715039,61.9479],[174.610547,61.867627],[174.514355,61.823633],[174.284961,61.817529],[174.138867,61.795166],[173.822363,61.679395],[173.623438,61.716064],[173.390723,61.556738],[173.131836,61.406641],[173.05459,61.406201],[172.856543,61.469189],[172.806836,61.436133],[172.837891,61.375586],[172.908008,61.311621],[172.867773,61.293066],[172.789062,61.310693],[172.730664,61.314404],[172.690039,61.295166],[172.696973,61.249316],[172.584766,61.19043],[172.49707,61.185889],[172.396094,61.167383],[172.362402,61.116602],[172.392773,61.061768],[172.213281,60.997852],[172.067285,60.915674],[171.997656,60.900684],[171.917969,60.864111],[171.830566,60.837354],[171.729492,60.843115],[171.489746,60.725732],[170.949316,60.522949],[170.799316,60.496484],[170.608203,60.434912],[170.589746,60.393701],[170.588574,60.342871],[170.512305,60.259521],[170.423438,60.047803],[170.396484,60.009766],[170.350977,59.965527],[170.154102,59.986084],[169.982617,60.06709],[169.927246,60.104248],[169.897559,60.147852],[169.887012,60.21792],[169.854297,60.250244],[169.814746,60.265381],[169.618359,60.438037],[169.275684,60.556641],[169.226758,60.595947],[168.788281,60.563818],[168.670313,60.562891],[168.462793,60.592236],[168.1375,60.573926],[167.745996,60.509326],[167.626074,60.468945],[167.226758,60.406299],[166.964063,60.307031],[166.452539,59.947021],[166.331836,59.872412],[166.273047,59.85625],[166.186523,59.849463],[166.148926,59.92207],[166.136035,59.979346],[166.168359,60.088818],[166.229785,60.17832],[166.29248,60.346094],[166.308105,60.414258],[166.352148,60.484814],[166.180176,60.480371],[165.941992,60.356885],[165.583008,60.236475],[165.41582,60.205176],[165.285254,60.134912],[165.192578,60.124756],[165.08457,60.098584],[165.073633,59.945605],[165.018945,59.860742],[164.953711,59.843604],[164.854297,59.840967],[164.779395,59.874219],[164.669727,59.997461],[164.525293,60.061279],[164.440039,60.072705],[164.376855,60.058057],[164.251563,59.973779],[164.113281,59.897559],[164.135059,59.984375],[164.017578,60.017334],[163.912891,60.037061],[163.780078,60.041113],[163.743848,60.028027],[163.690039,59.978418],[163.574316,59.914062],[163.49375,59.886768],[163.409961,59.834961],[163.364844,59.781445],[163.321191,59.70542],[163.269043,59.52002],[163.272852,59.302588],[163.084863,59.131396],[163.010156,59.148291],[162.974902,59.137061],[162.940039,59.114307],[163.004297,59.020166],[162.969824,58.986475],[162.93457,58.963965],[162.847266,58.939258],[162.643359,58.799902],[162.453027,58.708594],[162.141602,58.447412],[162.049219,58.272852],[161.960059,58.076904],[162.001953,57.980957],[162.039648,57.918262],[162.097949,57.874658],[162.197461,57.82915],[162.411426,57.778369],[162.392188,57.74502],[162.391406,57.717236],[162.466992,57.766211],[162.521973,57.904102],[162.654297,57.948242],[162.718359,57.946094],[163.14502,57.837305],[163.225781,57.790381],[163.213867,57.686816],[163.187891,57.637402],[163.108789,57.564844],[162.957031,57.47749],[162.779297,57.357617],[162.762305,57.284082],[162.761523,57.243945],[162.808105,57.102783],[162.814844,57.023389],[162.791113,56.875391],[162.802637,56.811475],[162.849902,56.756836],[162.92207,56.722656],[163.046387,56.741309],[163.16543,56.725488],[163.256543,56.688037],[163.243262,56.564551],[163.294043,56.447705],[163.335547,56.23252],[163.261328,56.17373],[163.189258,56.137012],[163.047363,56.044678],[162.97168,56.033789],[162.840332,56.065625],[162.628125,56.232275],[162.713184,56.330859],[162.893262,56.399463],[162.975195,56.449023],[163.038379,56.521875],[162.944141,56.508057],[162.877637,56.476367],[162.671484,56.490088],[162.589063,56.454932],[162.488672,56.399121],[162.528223,56.260693],[162.461133,56.235498],[162.334082,56.187744],[162.146094,56.128271],[162.084961,56.089648],[161.924023,55.840381],[161.775586,55.654834],[161.723926,55.496143],[161.729395,55.358008],[161.784961,55.205322],[161.824219,55.138916],[161.996094,54.997998],[162.080273,54.886133],[162.105566,54.752148],[161.966895,54.688672],[161.725684,54.532959],[161.624805,54.51626],[161.294043,54.520557],[161.129883,54.598242],[160.935547,54.578369],[160.772656,54.541357],[160.517188,54.430859],[160.288867,54.288232],[160.074414,54.18916],[160.010156,54.130859],[159.921777,54.008398],[159.84375,53.783643],[159.870898,53.672656],[159.914258,53.62085],[159.955859,53.552197],[159.899121,53.447705],[159.897656,53.380762],[160.002148,53.274902],[160.025098,53.12959],[159.947461,53.125098],[159.771582,53.229687],[159.585938,53.237695],[159.136133,53.117139],[158.952051,53.047559],[158.74541,52.908936],[158.683691,52.9354],[158.639551,53.014795],[158.564648,53.05],[158.47207,53.032373],[158.432324,52.957422],[158.560156,52.922168],[158.608789,52.873633],[158.533691,52.688428],[158.480762,52.62666],[158.500391,52.460303],[158.493164,52.383154],[158.463477,52.30498],[158.331641,52.090869],[158.103516,51.809619],[157.823242,51.605322],[157.628906,51.53457],[157.530957,51.479883],[157.489844,51.408936],[157.202246,51.212744],[156.847461,51.006592],[156.747754,50.969287],[156.724316,51.04707],[156.713477,51.124121],[156.670801,51.226855],[156.543457,51.311621],[156.521191,51.380273],[156.500391,51.475098],[156.489844,51.913037],[156.377344,52.366553],[156.364746,52.509375],[156.228613,52.62627],[156.154395,52.747266],[156.110352,52.866162],[156.098828,53.006494],[155.950195,53.744287],[155.904883,53.928125],[155.706445,54.521484],[155.620313,54.864551],[155.563867,55.199121],[155.554883,55.348486],[155.643457,55.793555],[155.716602,56.072217],[155.98252,56.695215],[156.025391,56.752002],[156.06748,56.781592],[156.529297,57.021191],[156.728418,57.152246],[156.848828,57.290186],[156.976758,57.466309],[156.963574,57.560938],[156.948242,57.615771],[156.899902,57.676904],[156.791602,57.747949],[156.829883,57.779639],[156.871973,57.803662],[156.985742,57.830176],[157.216797,57.776807],[157.450391,57.799268],[157.666406,58.019775],[157.974609,57.985937],[158.210449,58.025293],[158.275195,58.008984],[158.321094,58.083447],[158.449414,58.162842],[158.687012,58.281348],[159.036914,58.423926],[159.210645,58.519434],[159.308398,58.610547],[159.452637,58.695947],[159.591504,58.803662],[159.847363,59.127148],[160.350391,59.394043],[160.547461,59.547363],[160.711426,59.60166],[160.855273,59.626855],[161.218945,59.845605],[161.449316,60.027344],[161.753516,60.152295],[161.845996,60.232227],[162.003613,60.420166],[162.068164,60.466406],[162.266309,60.536719],[162.713184,60.659473],[162.973145,60.78291],[163.352344,60.800439],[163.466406,60.849756],[163.585156,60.877148],[163.709961,60.916797],[163.553516,61.025635],[163.589258,61.084375],[163.619629,61.111328],[163.893359,61.240479],[164.005469,61.343799],[163.99209,61.388232],[163.972754,61.419873],[163.804395,61.461377],[163.837109,61.558252],[163.882715,61.640137],[164.019531,61.710693],[164.067969,61.873877],[164.074219,62.04502],[164.207227,62.292236],[164.2875,62.346631],[164.59834,62.470557],[164.670703,62.473779],[164.887695,62.431885],[165.124121,62.411523],[165.208105,62.373975],[165.225684,62.405762],[165.213867,62.448193],[165.280371,62.462988],[165.417383,62.44707],[165.396582,62.493896],[165.044043,62.516992],[164.792383,62.571094],[164.566992,62.675488],[164.418359,62.704639],[164.255664,62.696582],[163.331738,62.550928],[163.287109,62.511426],[163.244238,62.455371],[163.302148,62.372998],[163.258008,62.336914],[163.213281,62.313428],[163.163477,62.25957],[163.118457,62.15293],[163.131055,62.049902],[163.017676,61.891064],[163.009277,61.791504],[163.207617,61.736572],[163.257812,61.699463],[163.197852,61.644775],[163.138867,61.611426],[163.085254,61.570557],[163.047266,61.554053],[162.993945,61.544189],[162.92168,61.597705],[162.855957,61.705029],[162.752344,61.711279],[162.717871,61.695117],[162.699023,61.652588],[162.607617,61.650049],[162.506445,61.670117],[162.392578,61.662109],[162.188379,61.540674],[161.037109,60.962891],[160.915039,60.892676],[160.766602,60.75332],[160.482031,60.739844],[160.368164,60.708545],[160.287305,60.667041],[160.173633,60.638428],[160.177344,60.690723],[160.201074,60.729639],[160.225781,60.831543],[160.378906,61.025488],[160.28125,61.044775],[160.184277,61.047656],[160.004004,61.007422],[159.883105,60.943408],[159.79043,60.956641],[159.83457,61.013965],[159.949219,61.128613],[159.913965,61.234473],[159.883105,61.291797],[159.930859,61.323926],[160.162695,61.5375],[160.246875,61.647607],[160.317383,61.793359],[160.321484,61.838574],[160.309375,61.894385],[160.237793,61.903857],[160.18252,61.902832],[159.722168,61.758398],[159.552344,61.719482],[159.496289,61.781445],[159.423047,61.808057],[159.29502,61.91416],[159.189258,61.929395],[159.07666,61.922266],[158.824316,61.850244],[158.547168,61.810889],[158.333691,61.825684],[158.151563,61.764844],[158.070117,61.753613],[157.799316,61.795264],[157.469336,61.798926],[157.370703,61.74707],[157.08418,61.675684],[156.891797,61.565186],[156.790625,61.529639],[156.680273,61.480615],[156.629688,61.272461],[156.482617,61.206006],[156.344141,61.155078],[156.055957,60.995605],[155.85332,60.777148],[155.716113,60.682373],[155.427832,60.549854],[154.970801,60.37666],[154.578223,60.09502],[154.440723,59.883789],[154.389844,59.876758],[154.293066,59.83335],[154.266602,59.730371],[154.268848,59.658398],[154.20918,59.600342],[154.149805,59.528516],[154.212891,59.483398],[154.272168,59.475146],[154.357617,59.481445],[154.58252,59.540088],[154.971289,59.449609],[155.166699,59.360156],[155.153027,59.270215],[155.160449,59.190137],[155.016699,59.195605],[154.82373,59.187549],[154.703516,59.141309],[154.458008,59.216553],[154.375977,59.187842],[154.24668,59.108594],[154.010938,59.075537],[153.891699,59.11416],[153.695215,59.224756],[153.361133,59.214795],[153.272949,59.091309],[153.196094,59.094434],[153.077734,59.081885],[152.882227,58.939062],[152.817871,58.92627],[152.575586,58.954102],[152.400684,59.026416],[152.319629,59.030762],[152.165234,58.997021],[152.087891,58.910449],[151.70459,58.866699],[151.326758,58.875098],[151.121094,59.08252],[151.50498,59.164014],[151.733496,59.14668],[151.990039,59.160059],[152.260645,59.223584],[152.169531,59.27793],[152.104492,59.290576],[151.942383,59.284082],[151.798047,59.323242],[151.485742,59.524121],[151.348242,59.561133],[151.170313,59.583252],[151.033594,59.585645],[150.98252,59.571338],[150.911914,59.523047],[150.863281,59.475439],[150.823438,59.460742],[150.729492,59.469141],[150.615234,59.506543],[150.483594,59.494385],[150.539844,59.524951],[150.667285,59.556348],[150.457227,59.590723],[150.325586,59.638867],[150.202539,59.65127],[149.642578,59.77041],[149.424512,59.760986],[149.29043,59.728467],[149.065234,59.630518],[149.127734,59.558789],[149.175391,59.526758],[149.20498,59.488184],[149.133008,59.480518],[148.925,59.475],[148.79707,59.532324],[148.708887,59.448535],[148.744141,59.373535],[148.889648,59.4],[148.964648,59.369141],[148.914062,59.282715],[148.72666,59.25791],[148.491211,59.262305],[148.257422,59.414209],[147.874609,59.388037],[147.687891,59.290674],[147.514453,59.268555],[147.040039,59.365723],[146.803711,59.372949],[146.537207,59.456982],[146.444336,59.430469],[146.273438,59.221484],[146.049512,59.170557],[145.931641,59.198389],[145.829102,59.330322],[145.756445,59.37373],[145.55459,59.413525],[144.483398,59.37627],[144.123438,59.408301],[143.86875,59.411377],[143.523828,59.343652],[143.192188,59.370117],[142.580273,59.240137],[142.330371,59.152637],[142.025391,58.999658],[141.754688,58.745264],[141.60293,58.649023],[141.34707,58.528076],[140.987695,58.416846],[140.790234,58.303467],[140.684961,58.212158],[140.495117,57.86543],[140.446875,57.813672],[140.002344,57.6875],[139.861523,57.549316],[139.80332,57.51416],[139.619238,57.455713],[139.506641,57.358301],[139.443848,57.329687],[139.181641,57.261523],[138.965723,57.088135],[138.662109,56.965527],[138.217773,56.629004],[138.180078,56.588525],[138.140625,56.498682],[138.073828,56.433105],[137.691504,56.139355],[137.572949,56.112109],[137.384082,55.974756],[137.189844,55.892285],[137.012109,55.795264],[136.793555,55.694189],[136.460254,55.576709],[136.351172,55.51001],[136.175195,55.352246],[135.750781,55.160645],[135.540625,55.11377],[135.2625,54.943311],[135.234766,54.903223],[135.211523,54.84082],[135.257715,54.731494],[135.325391,54.707422],[135.437793,54.69248],[135.851562,54.583936],[136.237988,54.614062],[136.580273,54.613623],[136.714551,54.624316],[136.797266,54.620996],[136.82373,54.561475],[136.82041,54.452344],[136.77041,54.35332],[136.729395,54.060645],[136.683008,53.931299],[136.718848,53.804102],[136.802637,53.781982],[136.886426,53.839355],[137.01875,53.848145],[137.155371,53.82168],[137.258008,54.025244],[137.172461,54.056885],[137.096191,54.128564],[137.141602,54.182227],[137.377734,54.282324],[137.525098,54.291211],[137.666016,54.283301],[137.513184,54.156396],[137.45127,54.130469],[137.403418,54.123535],[137.339258,54.100537],[137.476465,54.027588],[137.622754,53.970459],[137.834766,53.946729],[137.786133,53.90332],[137.644824,53.86582],[137.516992,53.70708],[137.313672,53.631592],[137.221484,53.579199],[137.253711,53.546143],[137.32832,53.538965],[137.738184,53.560303],[137.950488,53.603564],[138.25293,53.726416],[138.378906,53.909277],[138.493555,53.959668],[138.52793,53.959863],[138.568164,53.947168],[138.569141,53.818799],[138.407031,53.67417],[138.292188,53.592432],[138.249707,53.524023],[138.320312,53.5229],[138.450684,53.537012],[138.510938,53.57002],[138.660742,53.744775],[138.699414,53.869727],[138.72168,54.04375],[138.704688,54.147656],[138.715918,54.222656],[138.657227,54.29834],[138.695703,54.32002],[139.105078,54.217822],[139.319727,54.192969],[139.707422,54.277148],[139.795508,54.256445],[139.858398,54.205322],[140.178711,54.051562],[140.241699,54.001025],[140.34707,53.812598],[140.687598,53.596436],[141.005664,53.49458],[141.015039,53.454248],[141.217676,53.334473],[141.37373,53.292773],[141.402051,53.183984],[141.32793,53.097266],[141.18125,53.015283],[140.887305,53.091504],[140.839648,53.087891],[140.874512,53.039844],[141.086816,52.897559],[141.255859,52.840137],[141.265918,52.652588],[141.24502,52.550146],[141.132422,52.435693],[141.169824,52.368408],[141.329688,52.271143],[141.409082,52.234326],[141.485254,52.178516],[141.385547,52.057227],[141.366895,51.920654],[141.258398,51.860693],[141.129395,51.727783],[140.932617,51.619922],[140.838574,51.41416],[140.687695,51.232275],[140.670703,51.051318],[140.645605,50.986768],[140.520898,50.800195],[140.476367,50.545996],[140.535449,50.130762],[140.564063,50.106689],[140.624512,50.082422],[140.613281,50.053711],[140.58457,50.03335],[140.462695,49.911475],[140.464551,49.825586],[140.511328,49.76167],[140.517188,49.596143],[140.431055,49.331494],[140.399121,49.289795],[140.364355,49.22085],[140.348633,49.15918],[140.325586,49.12002],[140.308984,49.053906],[140.333691,48.994824],[140.37832,48.964111],[140.224219,48.772852],[140.170605,48.523682],[140.113281,48.422656],[139.998438,48.323779],[139.760742,48.180566],[139.67627,48.089893],[139.520508,47.975293],[139.372656,47.887354],[139.166992,47.634863],[139.001367,47.383301],[138.586816,47.057227],[138.529688,46.976221],[138.500488,46.889844],[138.391797,46.745068],[138.336914,46.543408],[138.210156,46.462939],[138.106348,46.250732],[137.769141,45.928516],[137.685449,45.818359],[137.425195,45.63999],[137.146973,45.393506],[136.803516,45.171143],[136.737207,45.080029],[136.604102,44.978174],[136.460449,44.822119],[136.251172,44.666797],[136.208691,44.562012],[136.142285,44.489111],[135.987012,44.439844],[135.874609,44.373535],[135.533203,43.971484],[135.489063,43.898828],[135.483398,43.83501],[135.260156,43.684619],[135.131055,43.525732],[134.916992,43.426562],[134.691797,43.290576],[134.156445,43.042139],[134.010449,42.947461],[133.709375,42.829932],[133.586719,42.828223],[133.329492,42.763867],[133.159961,42.696973],[133.059375,42.722803],[132.996582,42.808008],[132.923926,42.805273],[132.863574,42.79375],[132.708984,42.87583],[132.576465,42.871582],[132.481348,42.909766],[132.303809,42.883301],[132.334375,43.238672],[132.30957,43.313525],[132.233203,43.245068],[132.028711,43.118945],[131.947266,43.09541],[131.866602,43.095166],[131.89834,43.170752],[132.013086,43.280029],[131.97627,43.296045],[131.938965,43.301953],[131.794727,43.255273],[131.72207,43.202637],[131.516406,42.996436],[131.393262,42.822314],[131.29248,42.772119],[131.245313,42.697412],[131.158301,42.626025],[131.024805,42.645166],[130.945703,42.633936],[130.756152,42.673291],[130.709375,42.656396],[130.83418,42.522949],[130.729883,42.325781],[130.687305,42.302539]]],[[[47.441992,80.853662],[47.899512,80.812695],[48.243262,80.823486],[48.345215,80.818994],[48.445703,80.806006],[48.547363,80.779053],[48.686523,80.717773],[48.683594,80.633252],[48.625488,80.629297],[48.044336,80.668164],[47.777344,80.75625],[47.705273,80.765186],[47.600098,80.741943],[47.512305,80.687939],[47.41416,80.674512],[47.303906,80.606201],[47.198242,80.614941],[47.144922,80.609033],[47.011035,80.562109],[46.677539,80.561328],[46.623926,80.540674],[46.513672,80.475537],[46.378125,80.456787],[46.141406,80.446729],[46.059863,80.483789],[46.023633,80.540869],[45.969043,80.569482],[45.64082,80.536963],[45.389258,80.560303],[45.149219,80.59873],[44.90498,80.611279],[45.124512,80.652246],[46.327441,80.735156],[46.799121,80.755225],[47.020605,80.814404],[47.352344,80.85293],[47.441992,80.853662]]],[[[50.278125,80.927246],[50.431445,80.910889],[50.801074,80.91416],[50.917676,80.89043],[51.454785,80.744678],[51.591016,80.740771],[51.703613,80.687646],[51.146191,80.603955],[50.96084,80.540479],[50.279688,80.527344],[49.845996,80.497656],[49.749805,80.47207],[49.794141,80.425342],[49.585938,80.376563],[48.896094,80.369189],[48.811035,80.353711],[48.677051,80.300049],[48.688965,80.290283],[48.921973,80.276807],[48.95957,80.265674],[48.99082,80.242383],[49.010742,80.207422],[48.977539,80.162598],[48.891895,80.155322],[48.797363,80.161133],[48.581738,80.195361],[48.55459,80.183301],[48.532617,80.158252],[48.466797,80.110107],[48.38623,80.095801],[48.167188,80.132764],[48.095898,80.122314],[48.025781,80.099463],[47.939941,80.088623],[47.737305,80.081689],[47.632422,80.111963],[47.723145,80.151367],[47.977539,80.212549],[47.892969,80.239258],[47.642383,80.245312],[47.444336,80.230127],[47.343066,80.188525],[47.248633,80.180225],[46.991016,80.182764],[46.845898,80.237207],[46.738184,80.257666],[46.644434,80.300342],[47.40293,80.444775],[47.656055,80.500537],[47.895801,80.529053],[48.208203,80.543896],[48.306152,80.561572],[48.402637,80.568799],[48.464746,80.558057],[48.625098,80.508301],[49.087793,80.515771],[49.185254,80.558643],[49.192676,80.656006],[49.147461,80.712109],[49.244336,80.821387],[49.507812,80.865332],[50.124316,80.923877],[50.278125,80.927246]]],[[[67.765332,76.237598],[67.365234,76.161279],[67.126953,76.108154],[66.893164,76.072266],[66.657422,76.047021],[66.282422,75.983691],[65.619141,75.904639],[65.201563,75.839453],[64.744531,75.788232],[64.262598,75.719678],[63.779297,75.672607],[63.659473,75.66875],[63.316699,75.603076],[63.045996,75.575732],[62.066113,75.427734],[61.616211,75.319629],[61.486523,75.31084],[61.355957,75.314844],[61.248828,75.281006],[61.147266,75.222559],[60.935645,75.163672],[60.829199,75.11084],[60.719238,75.068604],[60.655371,75.055029],[60.533789,75.059277],[60.475586,75.054736],[60.276855,75.007568],[60.241113,74.970752],[60.454883,74.946143],[60.501367,74.904639],[60.43916,74.875342],[60.300781,74.837012],[60.222461,74.796582],[60.080078,74.755859],[59.982324,74.744629],[59.747266,74.745898],[59.734668,74.695459],[59.771484,74.664453],[59.752734,74.637012],[59.674023,74.610156],[59.595996,74.613721],[59.240137,74.692969],[59.182031,74.665771],[59.157031,74.61084],[59.146094,74.551904],[59.100977,74.50752],[59.04043,74.485547],[58.928223,74.462695],[58.534668,74.498926],[58.502148,74.464209],[58.562012,74.421826],[58.645703,74.328027],[58.665039,74.289258],[58.617871,74.227393],[58.441406,74.128857],[57.767383,74.013818],[57.778418,73.973926],[57.853418,73.897852],[57.872266,73.850439],[57.844922,73.805078],[57.755957,73.769189],[57.657422,73.768164],[57.603711,73.775488],[57.448535,73.825635],[57.313086,73.838037],[57.290918,73.814551],[57.464258,73.746045],[57.542578,73.658203],[57.459766,73.610303],[57.134375,73.504395],[56.963867,73.366553],[56.63418,73.304297],[56.430371,73.297217],[56.22832,73.314111],[56.03457,73.345898],[55.549219,73.356836],[55.280176,73.392041],[55.006836,73.453857],[54.768652,73.449414],[54.56582,73.418506],[54.299902,73.350977],[54.131543,73.481006],[54.20459,73.542041],[53.838672,73.697119],[53.762891,73.766162],[53.851367,73.800537],[53.963477,73.822314],[54.174023,73.885742],[54.386328,73.935645],[54.605664,73.951318],[54.642676,73.95957],[54.733398,74.033984],[54.83125,74.095752],[54.920313,74.129102],[55.022852,74.186621],[55.340918,74.419629],[55.416406,74.436133],[56.07832,74.481299],[56.137109,74.496094],[55.947461,74.542187],[55.751758,74.541211],[55.661523,74.556104],[55.610352,74.590527],[55.582227,74.627686],[55.659668,74.656299],[55.913672,74.796094],[56.217871,74.89751],[56.49873,74.95708],[56.428516,74.972949],[56.340039,75.013477],[55.998047,75.003369],[55.863184,75.05874],[55.821191,75.090625],[55.810059,75.124902],[55.920703,75.168359],[56.035547,75.194238],[56.162207,75.186572],[56.288672,75.164307],[56.389063,75.138184],[56.485254,75.096094],[56.570312,75.097754],[56.87627,75.244385],[56.829297,75.277734],[56.809473,75.328418],[56.844434,75.351416],[56.989453,75.375098],[57.0875,75.383838],[57.301758,75.373242],[57.606836,75.34126],[57.631543,75.356445],[57.708203,75.454492],[57.783398,75.506689],[58.093652,75.592529],[58.072559,75.618994],[58.058301,75.663086],[58.418359,75.719775],[58.652734,75.776807],[58.88125,75.854785],[58.994727,75.871729],[59.110449,75.87373],[59.346582,75.907031],[59.781934,75.94585],[60.036133,75.983838],[60.118164,76.066553],[60.279297,76.09624],[60.606152,76.108643],[60.730566,76.104053],[60.801172,76.068799],[60.942188,76.071289],[60.997754,76.089258],[61.053906,76.119873],[61.036914,76.169043],[61.034375,76.232959],[61.156934,76.273535],[61.20166,76.282031],[61.569434,76.298486],[61.787109,76.291016],[62.237305,76.241602],[62.471094,76.230469],[62.782031,76.245215],[62.971484,76.23667],[63.526172,76.309521],[64.463477,76.378174],[64.707617,76.426025],[64.95,76.484326],[65.072852,76.496729],[65.197168,76.499658],[65.309766,76.51792],[65.528418,76.567822],[65.636914,76.578662],[65.755176,76.579297],[65.862891,76.61333],[65.958887,76.687939],[66.062988,76.746094],[66.345215,76.821045],[66.828809,76.923828],[67.263672,76.96377],[67.534961,77.007764],[67.651855,77.011572],[68.017285,76.990625],[68.485742,76.933691],[68.699121,76.870654],[68.87334,76.7896],[68.911719,76.760547],[68.941699,76.707666],[68.890527,76.659717],[68.858008,76.610498],[68.899805,76.572949],[68.558594,76.449414],[68.222363,76.313477],[68.16543,76.284863],[67.765332,76.237598]]],[[[55.319824,73.308301],[55.787305,73.268604],[56.137695,73.256152],[56.350488,73.225537],[56.42959,73.201172],[56.397461,73.13916],[56.334668,73.113672],[56.188965,73.033008],[56.166992,72.983203],[56.192871,72.90498],[56.170508,72.848096],[56.12168,72.806592],[56.083789,72.789404],[55.819727,72.789502],[55.723438,72.766406],[55.718457,72.721533],[55.700977,72.671729],[55.616406,72.599072],[55.441309,72.575391],[55.40332,72.549072],[55.416895,72.501318],[55.355957,72.465088],[55.35957,72.408691],[55.39043,72.377832],[55.399121,72.313623],[55.518066,72.220654],[55.494922,72.182324],[55.40332,72.106885],[55.375,72.014893],[55.297852,71.935352],[55.471094,71.869238],[55.54668,71.78335],[55.613672,71.689893],[55.819336,71.507568],[56.043164,71.345605],[56.454395,71.107373],[56.894824,70.927002],[57.065625,70.876025],[57.483594,70.792285],[57.556445,70.76582],[57.625391,70.728809],[57.447168,70.661035],[57.263672,70.636035],[57.246973,70.605127],[57.145898,70.589111],[56.648828,70.646533],[56.62168,70.655371],[56.568652,70.697461],[56.510059,70.728809],[56.385742,70.734131],[56.260059,70.714746],[56.334766,70.676709],[56.417188,70.664941],[56.561328,70.593555],[56.499707,70.566406],[56.43457,70.562988],[56.14248,70.657861],[56.114746,70.646143],[56.087109,70.618359],[55.941602,70.649268],[55.907227,70.626318],[55.796875,70.615576],[55.706738,70.641895],[55.706445,70.675244],[55.687305,70.692188],[55.236914,70.666016],[55.05166,70.666748],[54.86709,70.678125],[54.645117,70.741846],[54.608203,70.713232],[54.601172,70.680078],[54.517383,70.693311],[54.332617,70.744678],[54.199414,70.764893],[53.722363,70.814453],[53.383594,70.873535],[53.467773,70.900586],[53.613574,70.914648],[53.615625,70.95083],[53.592578,71.000684],[53.587793,71.052295],[53.670508,71.086914],[53.857031,71.07041],[53.834277,71.126709],[53.922266,71.137598],[54.093945,71.105225],[54.155664,71.125488],[53.886133,71.196289],[53.59082,71.29668],[53.622168,71.332764],[53.515234,71.342529],[53.409961,71.340137],[53.319043,71.39917],[53.33252,71.477246],[53.411621,71.530127],[53.363867,71.54165],[52.908984,71.49502],[52.678711,71.505664],[52.418848,71.536865],[52.17998,71.490234],[51.937891,71.474707],[51.812598,71.491309],[51.691602,71.525146],[51.59043,71.571143],[51.511328,71.648096],[51.438672,71.776807],[51.428613,71.825537],[51.443555,71.934375],[51.482227,71.979785],[51.58252,72.071191],[51.653125,72.099365],[51.805469,72.142139],[51.885449,72.153223],[52.068652,72.131152],[52.252051,72.129736],[52.332324,72.153955],[52.406738,72.196729],[52.461914,72.252344],[52.586133,72.284033],[52.62207,72.300977],[52.661914,72.336865],[52.705762,72.390967],[52.713867,72.436963],[52.74873,72.482959],[52.863672,72.549854],[52.823242,72.59126],[52.839063,72.619287],[52.916602,72.668896],[52.683105,72.682324],[52.60498,72.704053],[52.528516,72.737354],[52.550586,72.768555],[52.579297,72.791357],[52.812207,72.875244],[52.913184,72.899951],[53.024219,72.913574],[53.134961,72.913232],[53.253516,72.90376],[53.369824,72.916748],[53.247266,72.973145],[53.237109,73.011182],[53.188965,73.104004],[53.197949,73.147559],[53.251172,73.182959],[53.357617,73.224561],[53.512207,73.238379],[53.633691,73.260254],[53.753223,73.293262],[53.865625,73.298975],[54.091016,73.276465],[54.202344,73.281348],[54.327637,73.299463],[54.676074,73.37002],[54.803906,73.387646],[54.940625,73.383252],[55.121387,73.356836],[55.319824,73.308301]]],[[[96.526563,81.075586],[96.563086,81.030078],[96.693262,80.994189],[96.75498,80.957861],[97.413672,80.841846],[97.703027,80.826709],[97.831836,80.798291],[97.869922,80.763281],[97.856445,80.698096],[97.747168,80.698682],[97.66543,80.678076],[97.221387,80.652441],[97.113086,80.614063],[97.025391,80.535547],[97.072559,80.519873],[97.115039,80.496582],[97.250195,80.362988],[97.286816,80.342529],[97.416992,80.323145],[97.298438,80.272754],[97.175195,80.241016],[95.855762,80.176953],[94.961328,80.150391],[94.66123,80.122803],[94.565039,80.126074],[94.328418,80.076025],[93.872363,80.010107],[93.654688,80.009619],[93.002344,80.1021],[92.201563,80.179297],[92.092188,80.22334],[91.891602,80.249268],[91.637402,80.269922],[91.523828,80.358545],[91.687793,80.418506],[91.89668,80.477539],[92.24668,80.499121],[92.57793,80.533252],[92.826758,80.618555],[92.981055,80.702979],[93.2625,80.79126],[92.772949,80.768652],[92.592578,80.780859],[92.610156,80.81001],[92.710352,80.872168],[92.764648,80.893066],[92.938672,80.92583],[93.065137,80.988477],[93.358691,81.031689],[93.497363,81.039209],[93.636719,81.038135],[93.888867,81.058398],[94.140137,81.089453],[94.375488,81.107373],[94.611621,81.114648],[94.837891,81.139404],[95.060938,81.188086],[95.15957,81.270996],[95.800684,81.280469],[95.901953,81.260596],[95.983984,81.211426],[96.075195,81.192773],[96.186914,81.183936],[96.471094,81.099268],[96.526563,81.075586]]],[[[97.674512,80.158252],[97.903613,80.09502],[98.017773,80.022852],[97.906738,80.00376],[97.80791,79.956299],[97.759961,79.89585],[97.626953,79.850439],[97.591309,79.774951],[97.65166,79.760645],[97.724512,79.781396],[97.870703,79.852637],[98.064551,79.901074],[98.273242,79.874121],[98.353125,79.884326],[98.499023,79.953125],[98.471875,80.009131],[98.531836,80.043604],[98.596484,80.052197],[98.865918,80.04541],[99.294922,80.016357],[99.370703,79.986377],[99.473047,79.970166],[99.536133,79.941309],[99.726562,79.919922],[99.818359,79.898193],[99.946582,79.848975],[100.06123,79.7771],[99.91582,79.73833],[99.839258,79.668945],[99.805469,79.653076],[99.781641,79.628271],[99.771094,79.567725],[99.748828,79.515186],[99.721191,79.491846],[99.70625,79.463477],[99.721582,79.385107],[99.680664,79.32334],[99.537305,79.276562],[99.387793,79.274756],[99.16709,79.306299],[99.104395,79.305371],[99.041797,79.293018],[99.317383,79.227197],[99.517285,79.130176],[99.750781,79.107666],[99.814648,79.09585],[99.899609,79.006396],[99.929297,78.961426],[99.54082,78.852734],[99.439551,78.834229],[98.819531,78.818262],[98.411133,78.787793],[98.28252,78.79502],[98.054199,78.820996],[97.905176,78.810205],[97.688574,78.827344],[97.555469,78.826562],[97.248145,78.868018],[96.93291,78.933936],[96.871191,78.963818],[96.807813,78.984961],[96.42998,79.003027],[96.347363,79.015869],[95.796484,79.001416],[95.702832,79.012012],[95.531055,79.098096],[95.436914,79.099316],[95.133203,79.049609],[95.02041,79.052686],[94.791016,79.086621],[94.652344,79.12749],[94.631641,79.140869],[94.619727,79.192383],[94.482129,79.218604],[94.31377,79.30752],[94.21875,79.402344],[93.758594,79.451416],[93.478711,79.462744],[93.272266,79.458398],[93.070801,79.495312],[93.404688,79.631592],[93.847266,79.70166],[94.038184,79.756006],[94.257129,79.829736],[94.347266,79.941943],[94.719434,80.01123],[94.815039,80.034814],[94.946777,80.089258],[94.987305,80.096826],[95.281348,80.030518],[95.337988,80.042139],[95.390723,80.072803],[95.497559,80.105615],[95.857813,80.11001],[96.1625,80.096826],[96.277344,80.110059],[96.416602,80.104346],[97.120508,80.153027],[97.586816,80.168262],[97.674512,80.158252]]],[[[102.884766,79.253955],[102.787305,79.176416],[102.745801,79.106055],[102.447852,78.87666],[102.412305,78.835449],[102.587305,78.871289],[102.747656,78.949561],[102.844824,79.014355],[102.950391,79.055762],[103.075684,79.056494],[103.199121,79.071289],[103.433398,79.126123],[103.672852,79.15],[103.800781,79.149268],[103.925684,79.123242],[104.004004,79.062549],[104.091113,79.013184],[104.404199,78.9771],[104.449219,78.963916],[104.476953,78.92334],[104.452051,78.880029],[104.633203,78.835156],[104.881055,78.854883],[105.014648,78.843311],[105.145996,78.818848],[105.20459,78.779932],[105.256055,78.733008],[105.310156,78.666162],[105.342676,78.593945],[105.312598,78.499902],[104.832617,78.352734],[104.741797,78.339746],[104.519434,78.349219],[104.297461,78.335059],[103.719336,78.258252],[103.003125,78.255859],[102.79668,78.187891],[102.734375,78.189893],[102.673145,78.201709],[102.617188,78.224609],[102.180469,78.205322],[101.692383,78.194336],[101.204102,78.191943],[101.039941,78.142969],[100.541211,78.04751],[100.082227,77.975],[99.84502,77.956836],[99.500293,77.976074],[99.391699,78.000684],[99.287109,78.038086],[99.438672,78.083936],[99.545605,78.178564],[99.67793,78.233496],[100.018945,78.338916],[100.05752,78.380371],[100.123535,78.470459],[100.162988,78.503955],[100.215039,78.535791],[100.257227,78.573828],[100.262695,78.631494],[100.283984,78.679199],[100.416406,78.753174],[100.515625,78.787793],[100.619629,78.797412],[100.875586,78.783594],[100.955762,78.788477],[100.897949,78.812451],[100.85625,78.897754],[100.864551,78.92583],[100.901367,78.980078],[100.96543,79.006543],[101.030859,79.023291],[101.068164,79.09624],[101.052246,79.123242],[101.148828,79.156885],[101.196094,79.204443],[101.310449,79.232617],[101.543066,79.254443],[101.555273,79.312646],[101.590625,79.350439],[101.643359,79.361377],[101.761328,79.371973],[101.824219,79.370215],[101.912109,79.311621],[102.005273,79.263672],[102.128516,79.25249],[102.25127,79.256055],[102.177246,79.312598],[102.180664,79.373389],[102.225098,79.412939],[102.282422,79.430078],[102.404883,79.433203],[102.789844,79.392139],[103.041602,79.331543],[103.097949,79.299121],[103.052441,79.28252],[102.939648,79.271191],[102.884766,79.253955]]],[[[140.04873,75.828955],[140.152148,75.809814],[140.274414,75.822412],[140.389063,75.79585],[140.496289,75.689795],[140.54668,75.663184],[140.602148,75.643945],[140.656738,75.634131],[140.815918,75.630713],[140.889258,75.652002],[140.944141,75.700488],[140.94043,75.749512],[140.926563,75.798926],[140.925781,75.866846],[140.950293,75.927344],[140.985352,75.964502],[141.032617,75.988965],[141.299316,76.06377],[141.485449,76.137158],[141.742285,76.108057],[142.001465,76.043555],[142.460352,75.903613],[142.669531,75.863428],[142.926758,75.826904],[143.185156,75.813623],[143.311133,75.822314],[143.559961,75.8604],[143.68584,75.863672],[145.255273,75.585596],[145.309766,75.564063],[145.359961,75.530469],[145.023438,75.489746],[144.803125,75.416064],[144.726758,75.365576],[144.814258,75.324512],[144.883496,75.268945],[144.407813,75.102295],[144.216016,75.05918],[144.019727,75.044678],[143.625879,75.083984],[143.396094,75.082861],[143.170313,75.116895],[142.92207,75.217432],[142.820117,75.267822],[142.729492,75.337646],[142.699609,75.448877],[142.734473,75.54458],[142.867578,75.571777],[142.986035,75.633252],[143.002441,75.659863],[142.941797,75.713281],[142.551563,75.720898],[142.30791,75.691699],[142.08623,75.660645],[142.151074,75.457568],[142.198828,75.392676],[142.264746,75.346143],[142.616797,75.133252],[142.696973,75.103076],[142.929688,75.062402],[143.12793,74.970313],[142.778223,74.867773],[142.626074,74.837402],[142.472754,74.82041],[142.378418,74.828564],[142.287402,74.849902],[142.18418,74.899609],[142.1,74.950977],[141.987305,74.99126],[141.748438,74.982568],[141.52998,74.947168],[141.310449,74.923193],[140.660742,74.881836],[140.463867,74.856055],[140.267871,74.846924],[140.011035,74.894775],[139.758203,74.96377],[139.68125,74.964062],[139.605859,74.945605],[139.548047,74.904053],[139.512305,74.837793],[139.430078,74.749219],[139.325586,74.686816],[139.215332,74.659668],[139.099121,74.656543],[138.981738,74.673682],[138.865625,74.700928],[138.092285,74.797461],[138.001367,74.827002],[137.915039,74.87085],[137.683008,75.008545],[137.568066,75.040576],[137.446973,75.054199],[137.217969,75.12373],[137.00625,75.23501],[136.962305,75.270361],[136.947656,75.325537],[136.982422,75.365332],[137.166016,75.346582],[137.289746,75.348633],[137.215234,75.554395],[137.268848,75.749414],[137.358496,75.781641],[137.706543,75.75957],[137.593555,75.823389],[137.501172,75.909668],[137.560547,75.955225],[137.625391,75.988184],[137.774414,76.015674],[137.977051,76.027783],[138.038672,76.047266],[138.095996,76.080518],[138.207617,76.114941],[138.430664,76.130078],[138.813965,76.199707],[138.919531,76.196729],[139.017578,76.160107],[139.10918,76.10835],[139.211328,76.080713],[139.528516,76.013428],[139.743359,75.953076],[140.04873,75.828955]]],[[[146.795215,75.370752],[147.060352,75.364307],[147.443555,75.437988],[147.496973,75.440527],[148.432422,75.413525],[148.508887,75.387451],[148.518848,75.336475],[148.48916,75.309375],[148.475,75.272412],[148.590137,75.236377],[148.892188,75.228125],[149.083203,75.262061],[149.645313,75.24458],[150.103906,75.219238],[150.280664,75.164014],[150.417188,75.134326],[150.530566,75.099854],[150.612891,75.120166],[150.690332,75.155322],[150.756934,75.162402],[150.822363,75.156543],[150.646289,74.94458],[150.580273,74.918945],[150.33125,74.866797],[149.838086,74.795312],[149.596875,74.772607],[149.050195,74.772461],[148.296875,74.800439],[148.092383,74.825684],[147.971875,74.857324],[147.740918,74.931982],[147.626855,74.958936],[147.257031,74.984277],[147.144043,74.998437],[146.924902,75.0625],[146.70332,75.114209],[146.148535,75.198291],[146.186133,75.295557],[146.257617,75.39375],[146.342969,75.480908],[146.438477,75.558203],[146.5375,75.581787],[146.750977,75.510449],[146.748242,75.428662],[146.795215,75.370752]]],[[[178.861523,70.826416],[178.792578,70.82207],[178.648242,71.000586],[178.62832,71.047363],[178.683887,71.105664],[178.829004,71.177881],[178.891113,71.231104],[179.235059,71.324512],[179.547656,71.447656],[179.715918,71.466211],[179.886426,71.52334],[180,71.537744],[180,70.993018],[179.881348,70.975684],[179.647656,70.898926],[179.152539,70.880273],[178.861523,70.826416]]],[[[142.761035,54.393945],[142.976172,54.140967],[142.985938,54.085693],[142.96709,54.028809],[142.926563,53.955615],[142.911426,53.878369],[142.936426,53.810938],[142.917969,53.794238],[143.095508,53.488672],[143.223633,53.296045],[143.259961,53.217285],[143.287891,53.134375],[143.324707,52.963086],[143.332617,52.700049],[143.323633,52.613574],[143.295117,52.52915],[143.264258,52.478662],[143.200977,52.44292],[143.172266,52.349365],[143.155566,52.08374],[143.190625,51.944482],[143.250586,51.8479],[143.294727,51.744336],[143.299512,51.632373],[143.320508,51.583252],[143.417773,51.520605],[143.455469,51.471484],[143.467383,51.401904],[143.472949,51.299219],[143.48877,51.277051],[143.53418,51.246289],[143.736035,50.506738],[143.816016,50.282617],[144.047949,49.895752],[144.141309,49.661475],[144.199609,49.549756],[144.239941,49.432031],[144.27207,49.311328],[144.341211,49.180518],[144.431738,49.051074],[144.606836,48.93584],[144.685547,48.87124],[144.706641,48.819531],[144.71377,48.640283],[144.672656,48.678564],[144.620996,48.814844],[144.536328,48.893555],[144.411816,48.986377],[144.283789,49.069775],[144.125488,49.208545],[144.04873,49.24917],[143.967773,49.276318],[143.819141,49.308594],[143.732324,49.312012],[143.382227,49.290674],[143.236328,49.262842],[143.10498,49.198828],[143.026855,49.10542],[142.97168,48.917773],[142.650977,48.246875],[142.574219,48.072168],[142.545898,47.884912],[142.556934,47.737891],[142.579004,47.683984],[142.670117,47.536914],[142.74541,47.452393],[142.800781,47.416162],[142.863965,47.391797],[142.905469,47.361865],[142.940332,47.322754],[143.005566,47.222705],[143.089258,47.000781],[143.17793,46.844043],[143.217676,46.794873],[143.318652,46.807373],[143.384375,46.805664],[143.447266,46.791992],[143.485645,46.752051],[143.540332,46.575098],[143.578711,46.406055],[143.580664,46.360693],[143.508594,46.230176],[143.490625,46.174609],[143.482324,46.11582],[143.463477,46.069482],[143.431641,46.028662],[143.418652,46.222021],[143.370313,46.358496],[143.352148,46.476221],[143.282324,46.558984],[143.047852,46.592627],[142.829297,46.605273],[142.795508,46.620215],[142.747363,46.670654],[142.691895,46.71084],[142.635742,46.716211],[142.578027,46.700781],[142.478809,46.644238],[142.406445,46.554688],[142.35,46.458691],[142.304004,46.357568],[142.208594,46.088867],[142.149707,45.999268],[142.077148,45.917041],[142.015625,45.961621],[141.961621,46.013477],[141.92998,46.088281],[141.916309,46.170752],[141.830371,46.451074],[141.866504,46.694189],[142.011035,47.030322],[142.038672,47.140283],[142.016895,47.244678],[141.98418,47.347705],[141.9625,47.543799],[141.964063,47.587451],[142.015625,47.700635],[142.075977,47.80835],[142.149219,47.902148],[142.181738,48.013379],[142.135352,48.290088],[142.028711,48.4771],[141.897266,48.654687],[141.873047,48.701953],[141.866309,48.750098],[141.97959,48.972168],[142.020117,49.078467],[142.066504,49.312061],[142.108691,49.439648],[142.142285,49.569141],[142.153125,50.216748],[142.143066,50.312109],[142.071094,50.51499],[142.066016,50.630469],[142.100488,50.776465],[142.147266,50.890186],[142.20791,50.998486],[142.206738,51.222559],[142.090723,51.429395],[142.005957,51.520508],[141.872949,51.630029],[141.771875,51.690186],[141.722363,51.736328],[141.771875,51.751807],[141.808105,51.789209],[141.720996,51.846777],[141.668457,51.93335],[141.66084,52.272949],[141.682422,52.359131],[141.747559,52.454834],[141.80332,52.555615],[141.855566,52.793506],[141.873633,53.038916],[141.838867,53.138477],[141.823535,53.339502],[141.852441,53.389453],[141.964453,53.456396],[142.141992,53.495605],[142.179883,53.484033],[142.318945,53.405469],[142.370508,53.402539],[142.424023,53.410742],[142.526172,53.447461],[142.583496,53.536768],[142.50918,53.587598],[142.552539,53.652637],[142.67959,53.674365],[142.688867,53.730176],[142.642871,53.736768],[142.683008,53.816016],[142.705957,53.895703],[142.670215,53.968408],[142.466602,54.148535],[142.334961,54.280713],[142.55166,54.278955],[142.615625,54.303613],[142.666211,54.358203],[142.692773,54.416113],[142.761035,54.393945]]],[[[-178.876465,71.577051],[-178.438965,71.541162],[-178.353564,71.529199],[-178.214697,71.481641],[-178.133887,71.465479],[-178.056641,71.437598],[-177.974805,71.390527],[-177.816992,71.33999],[-177.584131,71.281689],[-177.532178,71.263086],[-177.498486,71.219141],[-177.523584,71.166895],[-177.821777,71.067578],[-178.062695,71.041943],[-178.527979,71.014795],[-179.156885,70.939844],[-179.415674,70.918994],[-179.506689,70.923438],[-179.734033,70.97168],[-179.999951,70.993018],[-179.999951,71.184229],[-179.999951,71.399707],[-179.999951,71.537744],[-179.844873,71.550977],[-179.691016,71.577979],[-179.546387,71.582422],[-179.402051,71.56665],[-179.256494,71.57168],[-179.111572,71.596191],[-178.994043,71.593213],[-178.876465,71.577051]]],[[[35.816113,65.18208],[35.848438,65.142676],[35.858398,65.07793],[35.827344,65.036475],[35.842285,65.001465],[35.778711,64.97666],[35.680078,65.057617],[35.621387,65.058789],[35.558594,65.093604],[35.528906,65.151074],[35.585742,65.16709],[35.608691,65.157129],[35.729102,65.197559],[35.816113,65.18208]]],[[[42.713672,66.701709],[42.675586,66.688086],[42.477344,66.735059],[42.460059,66.770361],[42.468555,66.785547],[42.547461,66.795508],[42.631445,66.782227],[42.690723,66.735303],[42.713672,66.701709]]],[[[52.90332,71.36499],[52.994141,71.29126],[53.074023,71.237939],[53.141406,71.241895],[53.192578,71.215283],[53.205176,71.159717],[53.071484,71.065039],[53.048145,71.030957],[53.105762,70.999268],[53.120996,70.982031],[53.022656,70.968701],[53.004492,71.011621],[52.949609,71.053613],[52.835352,71.08584],[52.788965,71.114941],[52.738379,71.180664],[52.546582,71.250439],[52.425488,71.239258],[52.289453,71.270361],[52.249609,71.284912],[52.239844,71.325049],[52.296582,71.356836],[52.512598,71.385059],[52.617383,71.38335],[52.729688,71.355127],[52.720313,71.389795],[52.732227,71.403711],[52.776758,71.399805],[52.90332,71.36499]]],[[[168.039062,54.56499],[168.081348,54.512744],[167.677344,54.697656],[167.488086,54.794971],[167.441504,54.855859],[167.511719,54.856934],[167.59248,54.797754],[167.710645,54.770166],[167.882617,54.690479],[168.039062,54.56499]]],[[[160.718945,70.822705],[160.651367,70.805859],[160.504785,70.819727],[160.436914,70.851025],[160.44043,70.922656],[160.448535,70.934033],[160.56582,70.923779],[160.644922,70.883545],[160.718945,70.822705]]],[[[161.46709,68.900977],[161.422461,68.899658],[161.45625,68.966016],[161.461133,68.995605],[161.364063,69.044434],[161.18252,69.081592],[161.136523,69.110254],[161.125488,69.197021],[161.164551,69.333594],[161.082813,69.405664],[161.110742,69.469824],[161.32334,69.540918],[161.409766,69.595703],[161.505176,69.639453],[161.520703,69.634033],[161.617773,69.592432],[161.609277,69.500928],[161.540332,69.436523],[161.374414,69.413672],[161.350879,69.369336],[161.372656,69.292822],[161.377539,69.194434],[161.394238,69.106445],[161.494727,69.016016],[161.516992,68.96958],[161.506738,68.927588],[161.46709,68.900977]]],[[[152.885938,76.121729],[152.786328,76.085791],[152.558594,76.143604],[152.642773,76.174805],[152.799414,76.194824],[152.835059,76.185156],[152.86377,76.163428],[152.885938,76.121729]]],[[[149.150195,76.659912],[148.398633,76.648242],[148.448145,76.676953],[148.719629,76.746582],[149.406445,76.78208],[149.268359,76.747217],[149.204785,76.677002],[149.150195,76.659912]]],[[[137.959863,71.507666],[137.711816,71.423242],[137.612891,71.433936],[137.511816,71.474609],[137.457813,71.483496],[137.403223,71.477295],[137.344238,71.460547],[137.265527,71.455908],[137.078711,71.502197],[137.064063,71.529883],[137.081836,71.542725],[137.129492,71.556152],[137.168164,71.557129],[137.281836,71.579932],[137.816797,71.587891],[137.857617,71.583057],[137.933789,71.542773],[137.959863,71.507666]]],[[[107.695508,78.130908],[107.60625,78.082568],[107.481641,78.057764],[107.343848,78.098584],[107.00166,78.095654],[106.415527,78.139844],[106.583301,78.167578],[107.508301,78.189404],[107.573242,78.185547],[107.695508,78.130908]]],[[[112.478027,76.620898],[112.63252,76.552979],[112.66084,76.50957],[112.61416,76.499268],[112.586523,76.482959],[112.574805,76.452393],[112.531641,76.450049],[112.394824,76.483789],[112.296875,76.537988],[112.153809,76.549316],[112.002734,76.602979],[111.968945,76.626172],[112.011133,76.632861],[112.281445,76.618359],[112.394141,76.643799],[112.478027,76.620898]]],[[[96.532422,76.278125],[96.613965,76.263818],[96.589648,76.22124],[96.486719,76.23374],[96.350781,76.212158],[96.353418,76.17749],[96.300586,76.121729],[96.108789,76.155469],[95.844531,76.160254],[95.678613,76.193652],[95.311133,76.214746],[95.32207,76.261621],[95.379883,76.289062],[95.594434,76.249609],[95.78623,76.293896],[96.150977,76.271875],[96.270703,76.305371],[96.532422,76.278125]]],[[[96.285449,77.02666],[96.253516,77.007275],[96.209863,76.992139],[96.091406,77.002539],[95.854688,76.974951],[95.76582,76.990625],[95.680859,77.021338],[95.364062,77.011523],[95.270312,77.018848],[95.420703,77.056494],[95.854102,77.097559],[96.528418,77.205518],[96.561914,77.154053],[96.561328,77.12959],[96.424316,77.071191],[96.285449,77.02666]]],[[[89.514258,77.188818],[89.299512,77.183984],[89.179297,77.209912],[89.141699,77.226807],[89.200488,77.271973],[89.281543,77.301465],[89.616211,77.311035],[89.67959,77.280322],[89.66582,77.254492],[89.514258,77.188818]]],[[[74.660547,72.873437],[74.638379,72.86377],[74.588086,72.881152],[74.434766,72.907666],[74.180664,72.975342],[74.100195,73.021533],[74.142383,73.074365],[74.198535,73.109082],[74.408789,73.130469],[74.599902,73.121777],[74.725293,73.108154],[74.961523,73.0625],[74.742578,73.032715],[74.647266,72.969043],[74.660156,72.929297],[74.697168,72.907715],[74.660547,72.873437]]],[[[75.503711,73.456641],[75.344336,73.432275],[75.375,73.477393],[75.569727,73.540625],[75.930176,73.573633],[76.039453,73.559912],[76.051562,73.549268],[75.900977,73.481494],[75.827148,73.459131],[75.503711,73.456641]]],[[[83.549023,74.071777],[83.495801,74.048438],[83.45,74.05166],[83.410645,74.039551],[83.158984,74.075342],[82.817773,74.091602],[82.90293,74.128906],[83.149805,74.151611],[83.513477,74.122363],[83.618359,74.089453],[83.549023,74.071777]]],[[[67.344922,69.529834],[67.263965,69.442529],[67.097852,69.447168],[67.047266,69.467041],[67.025879,69.483203],[67.216113,69.575391],[67.328906,69.572119],[67.344922,69.529834]]],[[[66.560938,70.541748],[66.568555,70.501465],[66.51582,70.514893],[66.448633,70.561035],[66.407617,70.615771],[66.394824,70.727295],[66.418164,70.757129],[66.440234,70.772656],[66.462891,70.769336],[66.457715,70.698779],[66.560938,70.541748]]],[[[70.020703,66.502197],[69.844727,66.489746],[69.651367,66.565332],[69.469336,66.715967],[69.502734,66.751074],[69.616406,66.739014],[69.800391,66.736475],[69.917578,66.71167],[70.07666,66.695898],[70.057617,66.627197],[70.057227,66.599463],[70.110059,66.569092],[70.05918,66.517578],[70.020703,66.502197]]],[[[50.051758,80.074316],[49.970898,80.060742],[49.588281,80.136133],[49.556055,80.158936],[49.883691,80.230225],[50.250977,80.219482],[50.309961,80.185645],[50.319141,80.172363],[50.072266,80.109473],[50.051758,80.074316]]],[[[51.409277,79.944238],[51.435156,79.931934],[51.43125,79.920508],[51.07627,79.931982],[50.454102,79.924414],[50.091406,79.980566],[50.472656,80.035449],[50.675781,80.048535],[50.936328,80.094238],[51.254395,80.048633],[51.237891,80.010352],[51.242773,79.99126],[51.326953,79.972314],[51.409277,79.944238]]],[[[50.753711,81.047412],[50.616016,81.04126],[50.518164,81.045557],[50.411914,81.084375],[50.377441,81.102734],[50.368457,81.12251],[50.464941,81.126221],[50.505957,81.144238],[50.521582,81.158203],[50.591797,81.169434],[50.715918,81.170654],[50.878613,81.150879],[50.946191,81.108154],[50.78877,81.071826],[50.753711,81.047412]]],[[[55.479688,80.273828],[55.195117,80.226807],[55.048438,80.228369],[54.979688,80.256445],[55.091602,80.295557],[55.240039,80.325391],[55.353223,80.317676],[55.434766,80.302246],[55.479688,80.273828]]],[[[54.415332,80.472803],[54.275879,80.421338],[53.811914,80.476221],[53.85,80.503857],[53.900195,80.51543],[53.901563,80.54248],[53.858887,80.563037],[53.877246,80.605273],[54.176758,80.574365],[54.205371,80.561768],[54.407129,80.540137],[54.437305,80.498682],[54.415332,80.472803]]],[[[59.688867,79.955811],[59.330664,79.923047],[59.202637,79.932959],[59.169238,79.948291],[59.100391,79.96416],[58.919238,79.984619],[58.946094,80.042334],[59.001465,80.053906],[59.544531,80.118848],[59.80166,80.082666],[59.911035,79.994287],[59.688867,79.955811]]],[[[58.622363,81.04165],[58.761523,80.990967],[58.815332,80.933594],[58.902539,80.897656],[58.930566,80.831689],[58.859961,80.779395],[58.641895,80.767969],[58.285645,80.764893],[57.937891,80.793359],[57.749805,80.889062],[57.405176,80.915137],[57.210938,81.01709],[57.410254,81.046777],[57.65625,81.031543],[58.049512,81.118457],[58.102344,81.114258],[58.189941,81.09458],[58.507617,81.061768],[58.622363,81.04165]]],[[[47.983008,45.488232],[47.967676,45.469971],[47.920313,45.562061],[47.917578,45.618164],[47.947168,45.64707],[47.987109,45.554053],[47.983008,45.488232]]],[[[50.265234,69.185596],[50.283008,69.088867],[50.220605,69.048779],[50.164453,69.037549],[50.140918,69.098145],[50.093945,69.125537],[49.920801,69.053271],[49.839844,68.973779],[49.62627,68.859717],[49.180469,68.778418],[48.910352,68.743066],[48.666992,68.733154],[48.439063,68.804883],[48.315918,68.942383],[48.294434,68.984229],[48.278809,69.040332],[48.280273,69.096631],[48.296289,69.183887],[48.319922,69.269238],[48.413867,69.345654],[48.631348,69.436035],[48.844922,69.494727],[48.95332,69.509277],[49.225195,69.51123],[49.996289,69.309424],[50.167285,69.25708],[50.265234,69.185596]]],[[[63.373828,80.700098],[63.187598,80.697607],[63.002148,80.712842],[62.760449,80.762695],[62.520313,80.821875],[62.592578,80.853027],[62.819336,80.893799],[63.11582,80.966797],[63.614746,80.980908],[63.855957,80.981152],[64.095703,80.99834],[64.165918,81.035742],[64.210449,81.106348],[64.255859,81.144434],[64.310156,81.175195],[64.575391,81.198486],[64.802051,81.197266],[65.027734,81.169482],[65.171973,81.144043],[65.309766,81.096436],[65.382031,81.056738],[65.360059,81.008203],[65.37207,80.968018],[65.437402,80.930713],[64.997461,80.818896],[64.54834,80.75542],[63.373828,80.700098]]],[[[57.95625,80.123242],[57.800098,80.104053],[57.392285,80.13916],[57.332324,80.158105],[57.281445,80.193896],[57.214063,80.328271],[57.211719,80.368457],[57.18623,80.39624],[57.083398,80.445215],[57.011133,80.468311],[57.075,80.493945],[57.521973,80.475391],[58.480469,80.464746],[58.97168,80.415869],[59.115918,80.388428],[59.255469,80.343213],[58.397949,80.31875],[58.283887,80.297803],[58.285742,80.248145],[58.255469,80.201807],[58.163184,80.196533],[57.95625,80.123242]]],[[[62.167773,80.834766],[62.227734,80.794385],[62.191797,80.730225],[62.114551,80.683691],[62.075781,80.616943],[61.769141,80.601025],[61.68125,80.586328],[61.597461,80.534961],[61.285156,80.504736],[61.05127,80.418604],[60.722266,80.434668],[60.27832,80.494434],[59.900195,80.446094],[59.649805,80.43125],[59.346387,80.505029],[59.304395,80.521533],[59.288184,80.572656],[59.30625,80.617773],[59.386523,80.712549],[59.495117,80.766504],[59.549414,80.783594],[59.592285,80.816504],[59.71582,80.836377],[60.094531,80.848584],[60.234961,80.837744],[60.278027,80.801465],[60.481543,80.804248],[60.820215,80.826562],[61.313184,80.862646],[61.597461,80.89292],[61.850586,80.885937],[62.10293,80.866602],[62.167773,80.834766]]],[[[61.14082,80.950342],[60.826758,80.929688],[60.321094,80.955518],[60.058203,80.984619],[60.07832,80.99917],[60.147559,81.01665],[60.586621,81.087695],[61.457422,81.103955],[61.567383,81.050293],[61.471973,81.011035],[61.14082,80.950342]]],[[[53.521387,80.185205],[52.856348,80.173242],[52.635938,80.178857],[52.607031,80.191162],[52.550488,80.201855],[52.343555,80.213232],[52.213379,80.263721],[52.270215,80.276318],[52.57666,80.296924],[52.680566,80.318506],[52.716016,80.347559],[52.853906,80.402393],[53.185645,80.412646],[53.329199,80.402393],[53.345898,80.366309],[53.486133,80.323389],[53.85166,80.268359],[53.77793,80.22832],[53.65293,80.222559],[53.521387,80.185205]]],[[[57.078711,80.350928],[57.122656,80.316992],[57.118945,80.193945],[57.072754,80.139404],[57.080176,80.094678],[56.986914,80.071484],[56.200586,80.076465],[55.811621,80.087158],[55.724023,80.104736],[55.942285,80.163281],[56.012207,80.203906],[55.989844,80.320068],[56.024414,80.341309],[56.655078,80.330322],[56.707227,80.363281],[56.944531,80.366162],[57.078711,80.350928]]],[[[57.810254,81.546045],[57.862695,81.506445],[58.016602,81.483789],[58.436035,81.46416],[58.563867,81.418408],[58.371875,81.386963],[57.858691,81.368066],[57.911914,81.303271],[58.015332,81.254834],[57.912891,81.19751],[57.769727,81.169727],[57.450977,81.135547],[57.159473,81.178467],[56.821875,81.237939],[56.669238,81.198291],[56.5125,81.175244],[56.363965,81.178613],[56.191992,81.223975],[55.716699,81.188477],[55.572656,81.228076],[55.466016,81.311182],[55.781934,81.329443],[56.156836,81.303076],[56.404688,81.387012],[56.71875,81.423389],[56.973047,81.510547],[57.091504,81.541211],[57.365039,81.535254],[57.456445,81.542871],[57.716602,81.564648],[57.810254,81.546045]]],[[[54.718945,81.115967],[55.470703,81.019873],[56.170117,81.02915],[56.472266,80.998242],[56.909668,80.912891],[57.567773,80.819727],[57.694141,80.792285],[57.580371,80.755469],[56.814746,80.663623],[56.315527,80.632861],[55.883398,80.628418],[55.7125,80.637305],[55.540625,80.70332],[55.117188,80.751904],[54.668164,80.738672],[54.62334,80.765234],[54.532813,80.783008],[54.376074,80.786963],[54.066602,80.813623],[54.04541,80.871973],[54.240527,80.901855],[54.367285,80.903809],[54.416797,80.986523],[54.633984,81.113184],[54.718945,81.115967]]],[[[63.650977,81.609326],[63.528516,81.596582],[62.884961,81.608887],[62.573047,81.633057],[62.53125,81.647021],[62.515234,81.659131],[62.106445,81.679346],[62.283984,81.706543],[62.794922,81.718945],[63.70957,81.687305],[63.767383,81.66416],[63.782422,81.649805],[63.650977,81.609326]]],[[[58.29541,81.715186],[57.964844,81.695654],[57.920605,81.710498],[57.909277,81.721924],[57.945117,81.747852],[57.984961,81.797021],[58.13457,81.827979],[59.261816,81.854199],[59.408496,81.825439],[59.356836,81.780957],[59.356445,81.758984],[58.29541,81.715186]]],[[[92.683496,79.685205],[92.440625,79.675488],[92.153711,79.684668],[91.683594,79.790576],[91.37627,79.835498],[91.126074,79.904932],[91.070312,79.981494],[91.229297,80.030713],[91.425977,80.049219],[91.751953,80.052295],[92.173438,80.045459],[92.592773,79.996533],[93.481543,79.941113],[93.803125,79.904541],[93.603516,79.816748],[93.382031,79.783887],[93.155078,79.737598],[92.92627,79.704492],[92.683496,79.685205]]],[[[91.567187,81.141211],[91.222852,81.063818],[89.975781,81.113135],[89.919434,81.14873],[89.901172,81.170703],[90.069922,81.213721],[91.108984,81.199121],[91.477832,81.183936],[91.567187,81.141211]]],[[[141.010254,73.999463],[140.507227,73.918652],[140.409473,73.92168],[140.183203,74.00459],[140.101562,74.184277],[140.193555,74.236719],[140.300293,74.257227],[140.407422,74.266455],[140.849219,74.273779],[140.944336,74.264648],[141.038574,74.242725],[141.079492,74.209326],[141.097461,74.167822],[141.046875,74.050391],[141.010254,73.999463]]],[[[142.184863,73.895898],[142.435059,73.851562],[142.63916,73.803076],[143.34375,73.56875],[143.410742,73.52085],[143.463965,73.458887],[143.491309,73.246436],[143.451465,73.231299],[143.193262,73.220752],[142.841602,73.244824],[142.586914,73.25332],[142.342188,73.252881],[142.126367,73.281689],[141.59668,73.31084],[141.182715,73.389209],[140.754004,73.446045],[140.662793,73.452002],[140.39248,73.435352],[140.026953,73.361426],[139.925098,73.355225],[139.785547,73.355225],[139.685547,73.425732],[139.920117,73.448584],[140.155176,73.45752],[140.380664,73.483008],[140.593555,73.564551],[140.697461,73.62915],[140.883789,73.777539],[140.983594,73.831543],[141.084766,73.865869],[141.189941,73.876465],[141.311914,73.871875],[141.681934,73.904199],[141.931836,73.914941],[142.184863,73.895898]]],[[[135.948633,75.40957],[135.745898,75.381982],[135.451953,75.389551],[135.473047,75.463232],[135.523438,75.49585],[135.592676,75.576465],[135.56123,75.636475],[135.578418,75.709961],[135.613867,75.766309],[135.698633,75.845264],[135.788281,75.798486],[135.849219,75.729248],[135.904785,75.694385],[136.127344,75.625586],[136.168945,75.605566],[135.983398,75.521924],[135.965137,75.486133],[136.020508,75.438379],[135.948633,75.40957]]],[[[136.197461,73.913623],[136.12168,73.88501],[136.051465,73.929102],[135.714551,74.059521],[135.633398,74.121436],[135.448633,74.179688],[135.402441,74.201709],[135.387012,74.253369],[135.62832,74.219922],[136.036816,74.090332],[136.25918,73.984961],[136.197461,73.913623]]],[[[137.940527,55.092627],[138.03125,55.05332],[138.17207,55.060059],[138.206152,55.033545],[138.096484,54.990918],[138.016602,54.900879],[137.991211,54.820703],[137.959473,54.789014],[137.870117,54.749561],[137.790234,54.696924],[137.721484,54.663232],[137.661133,54.653271],[137.525586,54.82583],[137.462695,54.873389],[137.276074,54.792383],[137.23291,54.790576],[137.275195,54.891016],[137.384375,55.000684],[137.435547,55.016016],[137.543652,55.163086],[137.577344,55.197021],[137.910449,55.110059],[137.940527,55.092627]]],[[[169.200781,69.580469],[168.915723,69.571436],[168.348047,69.664355],[168.144336,69.71333],[167.992676,69.77583],[167.821289,69.819629],[167.788867,69.836865],[167.813965,69.873047],[167.864746,69.901074],[168.05957,69.974902],[168.196289,70.008398],[168.35791,70.015674],[169.374805,69.882617],[169.420703,69.856055],[169.433594,69.832178],[169.418164,69.779199],[169.332422,69.76958],[169.299121,69.734766],[169.263379,69.628711],[169.245801,69.601123],[169.200781,69.580469]]],[[[163.635156,58.603369],[163.471387,58.509375],[163.447266,58.524658],[163.431836,58.546143],[163.427246,58.578955],[163.576758,58.640869],[163.726562,58.798535],[163.784473,58.929736],[163.766602,58.972363],[163.760938,59.015039],[164.202148,59.096191],[164.517383,59.226758],[164.572656,59.221143],[164.629297,59.112207],[164.661621,58.970752],[164.615723,58.885596],[164.278809,58.838086],[163.960059,58.74375],[163.635156,58.603369]]],[[[166.650293,54.839062],[166.645117,54.694092],[166.521289,54.767627],[166.463672,54.826855],[166.381738,54.838086],[166.324805,54.864551],[166.229883,54.936523],[166.119727,55.030371],[166.082324,55.076563],[166.066309,55.135693],[165.991895,55.190479],[165.751074,55.294531],[165.830469,55.306934],[165.93125,55.351465],[166.211914,55.323975],[166.275781,55.311963],[166.22998,55.242334],[166.248047,55.16543],[166.404297,55.005615],[166.479492,54.949902],[166.577344,54.907715],[166.650293,54.839062]]],[[[154.810449,49.312012],[154.714844,49.267676],[154.610938,49.294043],[154.612988,49.380615],[154.824902,49.646924],[154.899609,49.630371],[154.883301,49.566406],[154.802344,49.468262],[154.829883,49.3479],[154.810449,49.312012]]],[[[156.405078,50.657617],[156.36543,50.633789],[156.325781,50.639062],[156.196289,50.702148],[156.167969,50.731885],[156.213086,50.784717],[156.376465,50.862109],[156.455859,50.85957],[156.4875,50.842969],[156.483105,50.751221],[156.405078,50.657617]]],[[[155.921094,50.302197],[155.792383,50.202051],[155.60752,50.177246],[155.516406,50.145605],[155.448926,50.077783],[155.397168,50.04126],[155.288672,50.061182],[155.243066,50.094629],[155.243066,50.212793],[155.195117,50.264551],[155.218359,50.297852],[155.326758,50.293262],[155.433887,50.368945],[155.680176,50.400732],[155.772754,50.482422],[155.884766,50.684131],[156.00166,50.756934],[156.096875,50.771875],[156.122852,50.671289],[156.100586,50.559277],[156.044434,50.451758],[155.921094,50.302197]]],[[[154.08125,48.790283],[154.042969,48.73877],[154.000684,48.755713],[153.992285,48.77251],[154.091699,48.832129],[154.126367,48.904443],[154.199023,48.904932],[154.228418,48.89209],[154.204688,48.857178],[154.08125,48.790283]]],[[[155.644824,50.821924],[155.553516,50.810596],[155.512793,50.837305],[155.483496,50.869629],[155.467383,50.913574],[155.568555,50.934473],[155.639648,50.910498],[155.653613,50.845361],[155.644824,50.821924]]],[[[153.101074,47.762939],[153.053809,47.706104],[153.004102,47.713477],[152.984277,47.72793],[153.049121,47.797021],[153.079199,47.80874],[153.101074,47.762939]]],[[[152.002051,46.897168],[151.815625,46.787109],[151.754102,46.78833],[151.723438,46.828809],[151.715332,46.852686],[151.864355,46.868994],[152.039844,47.01499],[152.16582,47.110449],[152.234668,47.143408],[152.288867,47.142187],[152.002051,46.897168]]],[[[149.687695,45.642041],[149.538867,45.591357],[149.44707,45.593359],[149.665918,45.839795],[149.796289,45.876074],[149.962305,46.021924],[150.308789,46.200342],[150.348633,46.213428],[150.553125,46.208545],[150.23457,46.012305],[150.19502,45.933203],[150.056641,45.849365],[149.954102,45.822461],[149.883398,45.783154],[149.687695,45.642041]]],[[[148.599512,45.317627],[148.414648,45.247168],[148.262305,45.216846],[148.005273,45.070166],[147.91377,44.990381],[147.784082,44.958594],[147.657813,44.977148],[147.621875,44.944727],[147.60957,44.886572],[147.563086,44.835547],[147.310156,44.677637],[147.207422,44.553564],[147.098438,44.53125],[146.897461,44.404297],[146.933496,44.513086],[146.974219,44.565723],[147.140918,44.66333],[147.154785,44.766211],[147.246582,44.856055],[147.430469,44.945215],[147.557813,45.062451],[147.65791,45.093018],[147.769434,45.190723],[147.885547,45.225635],[147.872656,45.300293],[147.924023,45.383301],[147.964551,45.377734],[148.056055,45.262109],[148.130078,45.258203],[148.324219,45.282422],[148.612305,45.484668],[148.706641,45.520654],[148.772656,45.526465],[148.812207,45.51001],[148.826172,45.486084],[148.825391,45.455908],[148.803027,45.413525],[148.837109,45.362695],[148.790723,45.323975],[148.599512,45.317627]]],[[[146.713965,43.743799],[146.683008,43.716357],[146.608594,43.740479],[146.613477,43.797021],[146.621973,43.812988],[146.824609,43.860498],[146.884082,43.82915],[146.899023,43.80415],[146.713965,43.743799]]],[[[146.207617,44.497656],[146.355957,44.424609],[146.567773,44.44043],[146.516211,44.374658],[146.436523,44.375684],[146.296191,44.280957],[146.172949,44.268652],[146.112305,44.245947],[145.914062,44.103711],[145.887305,44.047754],[145.766992,43.940723],[145.586816,43.845117],[145.555859,43.6646],[145.439258,43.737061],[145.426172,43.810352],[145.461719,43.870898],[145.666309,43.999072],[145.74834,44.071533],[145.77334,44.129004],[145.851953,44.193018],[145.890234,44.248584],[145.94043,44.272656],[146.112109,44.500146],[146.207617,44.497656]]],[[[113.387207,74.400439],[113.353125,74.352979],[113.299219,74.317139],[113.258887,74.272705],[113.190234,74.239307],[112.977637,74.196826],[112.811328,74.10293],[112.782422,74.095068],[112.195801,74.14624],[112.105078,74.163232],[111.912109,74.219238],[111.642969,74.272949],[111.503418,74.353076],[111.570117,74.368311],[111.6375,74.374316],[111.879785,74.363818],[111.949219,74.38877],[111.982813,74.456299],[111.989355,74.49624],[112.007617,74.526758],[112.084473,74.548975],[112.951758,74.47959],[113.28623,74.441016],[113.387207,74.400439]]],[[[76.248926,79.651074],[76.372559,79.615234],[76.467383,79.643164],[77.360156,79.556836],[77.549316,79.524414],[77.588965,79.501904],[76.810156,79.489502],[76.649512,79.493408],[76.636523,79.544434],[76.457617,79.545459],[76.153711,79.57876],[76.071875,79.625635],[76.051562,79.644727],[76.148438,79.664453],[76.248926,79.651074]]],[[[80.02666,80.848145],[79.098535,80.812061],[79.006836,80.834814],[78.977637,80.848242],[79.109863,80.923584],[79.217383,80.960352],[79.806641,80.975391],[80.27959,80.949805],[80.42793,80.927686],[80.37334,80.882617],[80.344824,80.86792],[80.02666,80.848145]]],[[[70.673926,73.09502],[70.380371,73.048096],[70.29834,73.044482],[70.118652,73.056299],[70.040723,73.037158],[69.920117,73.084521],[69.930371,73.126611],[69.985645,73.169238],[70.01875,73.224316],[69.995898,73.359375],[70.149609,73.444727],[70.35,73.477637],[70.940234,73.514404],[71.023242,73.504199],[71.141211,73.477979],[71.231641,73.447754],[71.351172,73.372217],[71.444922,73.34209],[71.589551,73.283154],[71.630469,73.224805],[71.626172,73.173975],[71.355664,73.162451],[70.886719,73.119629],[70.673926,73.09502]]],[[[77.63252,72.29126],[77.145605,72.281885],[76.905957,72.297656],[76.871094,72.317041],[76.903125,72.365576],[77.149512,72.439209],[77.260449,72.486133],[77.377832,72.565283],[77.578711,72.630859],[77.748535,72.631201],[78.279102,72.553223],[78.35293,72.504297],[78.365137,72.482422],[78.154492,72.416992],[78.007227,72.39248],[77.780859,72.308545],[77.63252,72.29126]]],[[[79.501465,72.721924],[79.430664,72.710693],[78.880566,72.751611],[78.690234,72.803418],[78.633203,72.850732],[78.656836,72.892285],[79.164258,73.094336],[79.356543,73.038623],[79.4125,72.983105],[79.541309,72.918652],[79.537891,72.769336],[79.501465,72.721924]]],[[[82.172363,75.419385],[82.208789,75.386963],[82.221582,75.350537],[82.179297,75.338965],[82.050098,75.340967],[81.978516,75.247119],[81.905078,75.262793],[81.860547,75.316504],[81.697656,75.280518],[81.654785,75.288916],[81.579297,75.330957],[81.532129,75.339551],[81.500586,75.36792],[81.712109,75.451416],[81.842188,75.407031],[81.926562,75.409961],[81.909766,75.46001],[81.912793,75.497705],[82.021875,75.513477],[82.165625,75.515625],[82.172363,75.419385]]],[[[60.450488,69.934863],[60.480664,69.885498],[60.477246,69.793701],[60.440234,69.725928],[60.327148,69.715283],[60.215918,69.687695],[60.026172,69.717041],[59.919531,69.696973],[59.812793,69.695654],[59.724609,69.706201],[59.637012,69.721045],[59.578223,69.738623],[59.58125,69.790869],[59.502637,69.866211],[59.381543,69.89043],[59.268359,69.898438],[59.144238,69.921924],[59.08252,69.910791],[59.004004,69.883301],[58.952734,69.892773],[58.680078,70.051025],[58.63418,70.088037],[58.605566,70.129199],[58.568066,70.155664],[58.473047,70.266846],[58.519922,70.318311],[58.615332,70.35083],[58.678027,70.35957],[58.794238,70.432959],[59.005273,70.465186],[59.048047,70.460498],[59.088281,70.437109],[59.309863,70.36167],[59.425977,70.310937],[59.529102,70.248975],[59.636328,70.197021],[59.955859,70.10835],[60.172266,70.022852],[60.392578,69.962402],[60.450488,69.934863]]],[[[20.957813,55.278906],[20.859375,55.183643],[20.594824,54.982373],[20.677734,54.955664],[20.774023,54.947021],[20.8875,54.909473],[20.995898,54.902686],[21.188867,54.935205],[21.222852,55.107764],[21.235742,55.264111],[21.297559,55.264453],[21.389258,55.275537],[21.44707,55.234424],[21.554688,55.195312],[21.682715,55.160352],[21.873926,55.100732],[22.072363,55.063672],[22.137891,55.059375],[22.346387,55.064258],[22.567285,55.059131],[22.627441,54.970703],[22.736523,54.928857],[22.824707,54.871289],[22.83125,54.838477],[22.709668,54.632617],[22.684473,54.562939],[22.679883,54.493018],[22.724316,54.405615],[22.766211,54.356787],[22.731836,54.350098],[22.168457,54.359863],[21.63418,54.376465],[21.140527,54.391797],[20.664746,54.406641],[20.208203,54.420752],[19.924316,54.433984],[19.644238,54.44707],[19.604395,54.45918],[19.758496,54.544824],[19.858887,54.633838],[19.944141,54.75],[19.953223,54.830469],[19.974512,54.921191],[20.107617,54.956494],[20.39668,54.95127],[20.520313,54.994873],[20.678906,55.102637],[20.845703,55.232031],[20.899805,55.28667],[20.957813,55.278906]]],[[[33.594141,46.09624],[33.654323,46.146222],[33.659965,46.219573],[33.806667,46.208288],[34.02672,46.106725],[34.128283,46.089798],[34.224203,46.101083],[34.353978,46.061586],[34.449898,45.965666],[34.523249,45.97695],[34.686878,45.97695],[34.794084,45.892315],[34.799726,45.790752],[34.946428,45.728686],[35.001674,45.733383],[35.022852,45.700977],[35.260156,45.446924],[35.373926,45.353613],[35.45752,45.316309],[35.558008,45.310889],[35.750977,45.389355],[35.833496,45.401611],[36.012891,45.37168],[36.077148,45.424121],[36.170508,45.453076],[36.290332,45.456738],[36.427051,45.433252],[36.575,45.393555],[36.514258,45.30376],[36.450781,45.232324],[36.428418,45.153271],[36.393359,45.065381],[36.229883,45.025977],[36.054785,45.030811],[35.870117,45.005322],[35.803613,45.0396],[35.759473,45.07085],[35.677539,45.102002],[35.569531,45.119336],[35.472559,45.098486],[35.357813,44.978418],[35.154785,44.896338],[35.087695,44.802637],[34.887793,44.823584],[34.716895,44.807129],[34.469922,44.72168],[34.281738,44.538428],[34.074414,44.423828],[33.909961,44.387598],[33.755664,44.398926],[33.655859,44.433203],[33.450684,44.553662],[33.462695,44.596826],[33.491309,44.618604],[33.530078,44.680518],[33.612207,44.907812],[33.601172,44.981494],[33.555176,45.097656],[33.39248,45.187842],[33.261523,45.170752],[33.186914,45.194775],[32.918652,45.348145],[32.772656,45.358984],[32.611328,45.328076],[32.551855,45.350391],[32.508008,45.403809],[32.828027,45.593018],[33.142285,45.749219],[33.280078,45.765234],[33.466211,45.837939],[33.664844,45.94707],[33.636719,46.032861],[33.594141,46.09624]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Romania","SOV_A3":"ROU","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Romania","ADM0_A3":"ROU","GEOU_DIF":0,"GEOUNIT":"Romania","GU_A3":"ROU","SU_DIF":0,"SUBUNIT":"Romania","SU_A3":"ROU","BRK_DIFF":0,"NAME":"Romania","NAME_LONG":"Romania","BRK_A3":"ROU","BRK_NAME":"Romania","BRK_GROUP":null,"ABBREV":"Rom.","POSTAL":"RO","FORMAL_EN":"Romania","FORMAL_FR":null,"NAME_CIAWF":"Romania","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Romania","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":3,"MAPCOLOR13":13,"POP_EST":19356544,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":250077,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"3. Upper middle income","FIPS_10":"RO","ISO_A2":"RO","ISO_A2_EH":"RO","ISO_A3":"ROU","ISO_A3_EH":"ROU","ISO_N3":"642","ISO_N3_EH":"642","UN_A3":"642","WB_A2":"RO","WB_A3":"ROM","WOE_ID":23424933,"WOE_ID_EH":23424933,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ROU","ADM0_DIFF":null,"ADM0_TLC":"ROU","ADM0_A3_US":"ROU","ADM0_A3_FR":"ROU","ADM0_A3_RU":"ROU","ADM0_A3_ES":"ROU","ADM0_A3_CN":"ROU","ADM0_A3_TW":"ROU","ADM0_A3_IN":"ROU","ADM0_A3_NP":"ROU","ADM0_A3_PK":"ROU","ADM0_A3_DE":"ROU","ADM0_A3_GB":"ROU","ADM0_A3_BR":"ROU","ADM0_A3_IL":"ROU","ADM0_A3_PS":"ROU","ADM0_A3_SA":"ROU","ADM0_A3_EG":"ROU","ADM0_A3_MA":"ROU","ADM0_A3_PT":"ROU","ADM0_A3_AR":"ROU","ADM0_A3_JP":"ROU","ADM0_A3_KO":"ROU","ADM0_A3_VN":"ROU","ADM0_A3_TR":"ROU","ADM0_A3_ID":"ROU","ADM0_A3_PL":"ROU","ADM0_A3_GR":"ROU","ADM0_A3_IT":"ROU","ADM0_A3_NL":"ROU","ADM0_A3_SE":"ROU","ADM0_A3_BD":"ROU","ADM0_A3_UA":"ROU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":24.972624,"LABEL_Y":45.733237,"NE_ID":1159321199,"WIKIDATAID":"Q218","NAME_AR":"رومانيا","NAME_BN":"রোমানিয়া","NAME_DE":"Rumänien","NAME_EN":"Romania","NAME_ES":"Rumania","NAME_FA":"رومانی","NAME_FR":"Roumanie","NAME_EL":"Ρουμανία","NAME_HE":"רומניה","NAME_HI":"रोमानिया","NAME_HU":"Románia","NAME_ID":"Rumania","NAME_IT":"Romania","NAME_JA":"ルーマニア","NAME_KO":"루마니아","NAME_NL":"Roemenië","NAME_PL":"Rumunia","NAME_PT":"Roménia","NAME_RU":"Румыния","NAME_SV":"Rumänien","NAME_TR":"Romanya","NAME_UK":"Румунія","NAME_UR":"رومانیہ","NAME_VI":"Romania","NAME_ZH":"罗马尼亚","NAME_ZHT":"羅馬尼亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[20.241797,43.670801,29.705859,48.263477],"geometry":{"type":"Polygon","coordinates":[[[28.2125,45.450439],[28.317676,45.347119],[28.45127,45.292187],[28.760742,45.234131],[28.788281,45.240967],[28.791406,45.251904],[28.769824,45.266895],[28.766602,45.28623],[28.781738,45.309863],[28.824316,45.311084],[28.894336,45.289941],[29.027441,45.320557],[29.223535,45.40293],[29.403711,45.419678],[29.567676,45.370801],[29.651953,45.313916],[29.705859,45.259912],[29.689063,45.193213],[29.678613,45.15166],[29.635352,44.979639],[29.605469,44.915479],[29.55752,44.843408],[29.048242,44.757568],[29.081055,44.798828],[29.069141,44.871143],[29.047754,44.925684],[29.095313,44.975049],[28.980664,44.99292],[28.930566,44.96582],[28.891504,44.918652],[28.926172,44.81001],[28.87041,44.749951],[28.849023,44.716309],[28.846484,44.636865],[28.813574,44.60249],[28.807031,44.565039],[28.888184,44.574756],[28.851758,44.506104],[28.699219,44.374219],[28.64541,44.295654],[28.658594,43.983838],[28.590723,43.797412],[28.585352,43.742236],[28.423438,43.740479],[28.375195,43.744775],[28.221973,43.772852],[28.05,43.822412],[27.948926,43.918604],[27.884277,43.987354],[27.738574,43.956299],[27.710742,43.9646],[27.670898,43.997803],[27.561035,44.020068],[27.425391,44.020508],[27.120703,44.146143],[27.086914,44.167383],[26.847754,44.146191],[26.489258,44.083984],[26.21582,44.007275],[25.933398,43.870557],[25.818848,43.766846],[25.686133,43.711768],[25.49707,43.670801],[25.159668,43.686328],[24.808203,43.738428],[24.430566,43.794385],[24.226758,43.763477],[23.950781,43.78667],[23.53457,43.853564],[23.224609,43.873877],[22.919043,43.834473],[22.867676,43.864551],[22.856445,43.899023],[22.868262,43.9479],[22.911328,43.987207],[22.985352,44.016992],[23.024414,44.047217],[23.028516,44.077979],[22.94541,44.127295],[22.775195,44.195215],[22.705078,44.237793],[22.687891,44.248291],[22.683301,44.286475],[22.647949,44.316455],[22.581836,44.33833],[22.530664,44.377979],[22.494531,44.435449],[22.502344,44.4896],[22.554004,44.540332],[22.620117,44.562354],[22.700781,44.555518],[22.734375,44.569922],[22.720898,44.605518],[22.64209,44.650977],[22.497656,44.70625],[22.350684,44.676123],[22.200977,44.560693],[22.093066,44.541943],[22.026953,44.619873],[21.909277,44.666113],[21.740234,44.680664],[21.636133,44.710449],[21.59707,44.75542],[21.523145,44.790088],[21.360059,44.82666],[21.35791,44.861816],[21.384375,44.870068],[21.442188,44.873389],[21.519922,44.880811],[21.532324,44.900684],[21.533203,44.918848],[21.471973,44.941992],[21.409961,44.957715],[21.377734,44.973437],[21.357031,44.990771],[21.35293,45.008984],[21.371094,45.021387],[21.395898,45.022217],[21.420703,45.032959],[21.434473,45.075146],[21.467871,45.109863],[21.491797,45.122266],[21.490234,45.1479],[21.46543,45.171875],[21.431445,45.192529],[21.381738,45.205078],[21.226465,45.241309],[21.147852,45.291748],[21.099902,45.293555],[21.023828,45.321533],[20.941797,45.365332],[20.870801,45.427539],[20.794043,45.467871],[20.774219,45.484424],[20.772461,45.500098],[20.786523,45.51748],[20.786035,45.536475],[20.76582,45.597461],[20.779297,45.662012],[20.775781,45.72251],[20.775,45.749805],[20.760156,45.758105],[20.746875,45.748975],[20.727832,45.737402],[20.709277,45.735254],[20.652734,45.779395],[20.581152,45.869482],[20.532617,45.899512],[20.437988,45.940771],[20.358594,45.975488],[20.301367,46.050684],[20.241797,46.108594],[20.280957,46.133008],[20.508105,46.166943],[20.613672,46.133496],[20.661035,46.145654],[20.707422,46.172803],[20.732715,46.194434],[20.737402,46.21748],[20.760254,46.24624],[20.837012,46.259717],[21.039844,46.242236],[21.12168,46.282422],[21.151953,46.304346],[21.17041,46.352686],[21.191797,46.391553],[21.264551,46.412305],[21.263281,46.447754],[21.252246,46.486377],[21.294531,46.572461],[21.320215,46.607812],[21.361328,46.620752],[21.411035,46.647852],[21.49707,46.704297],[21.477051,46.753369],[21.494434,46.789746],[21.58418,46.878369],[21.652637,46.96377],[21.651465,47.006543],[21.661426,47.043896],[21.721777,47.084814],[21.785449,47.138135],[21.869336,47.30459],[21.899219,47.332568],[21.954297,47.364258],[21.995313,47.395703],[21.999707,47.505029],[22.037988,47.536621],[22.111914,47.572021],[22.185059,47.629053],[22.244629,47.696387],[22.290625,47.727832],[22.351465,47.73623],[22.41748,47.762646],[22.491406,47.772559],[22.562891,47.75957],[22.608398,47.766309],[22.676758,47.799023],[22.851758,47.922559],[22.87666,47.947266],[22.912891,47.964258],[23.054785,48.006543],[23.09082,48.049121],[23.139453,48.087402],[23.202637,48.084521],[23.408203,47.98999],[23.628711,47.99585],[23.669043,47.992334],[23.682031,47.990381],[23.708984,47.982617],[24.001855,47.935791],[24.047363,47.941016],[24.059766,47.944775],[24.177734,47.906055],[24.281934,47.911182],[24.380957,47.938037],[24.484082,47.947119],[24.578906,47.931055],[24.650977,47.876514],[24.837891,47.76084],[24.893359,47.717773],[24.979102,47.724121],[25.073828,47.745703],[25.169629,47.823096],[25.464258,47.910791],[25.689258,47.932471],[25.908691,47.967578],[26.162695,47.992529],[26.23623,48.064355],[26.276953,48.113232],[26.305664,48.20376],[26.442383,48.22998],[26.572461,48.248486],[26.618945,48.259863],[26.71377,48.263477],[26.787305,48.255811],[26.900977,48.211133],[26.980762,48.155029],[27.012207,48.110498],[27.080371,48.047656],[27.152051,47.959277],[27.230859,47.841748],[27.248145,47.782227],[27.27793,47.717969],[27.336914,47.639746],[27.449219,47.553125],[27.464844,47.53667],[27.51582,47.475635],[27.614063,47.340527],[27.696191,47.286426],[27.767969,47.227588],[27.802344,47.168311],[27.853809,47.114502],[27.974219,47.043213],[28.071777,46.978418],[28.15,46.79209],[28.204688,46.706396],[28.239453,46.64082],[28.222656,46.508057],[28.244336,46.45127],[28.199609,46.347559],[28.119141,46.138672],[28.099707,45.972607],[28.113574,45.883057],[28.115527,45.825537],[28.134961,45.788867],[28.15625,45.713086],[28.159766,45.647119],[28.130859,45.628271],[28.090332,45.612744],[28.074707,45.598975],[28.111914,45.569141],[28.1625,45.51377],[28.2125,45.450439]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Qatar","SOV_A3":"QAT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Qatar","ADM0_A3":"QAT","GEOU_DIF":0,"GEOUNIT":"Qatar","GU_A3":"QAT","SU_DIF":0,"SUBUNIT":"Qatar","SU_A3":"QAT","BRK_DIFF":0,"NAME":"Qatar","NAME_LONG":"Qatar","BRK_A3":"QAT","BRK_NAME":"Qatar","BRK_GROUP":null,"ABBREV":"Qatar","POSTAL":"QA","FORMAL_EN":"State of Qatar","FORMAL_FR":null,"NAME_CIAWF":"Qatar","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Qatar","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":6,"MAPCOLOR9":2,"MAPCOLOR13":4,"POP_EST":2832067,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":175837,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"QA","ISO_A2":"QA","ISO_A2_EH":"QA","ISO_A3":"QAT","ISO_A3_EH":"QAT","ISO_N3":"634","ISO_N3_EH":"634","UN_A3":"634","WB_A2":"QA","WB_A3":"QAT","WOE_ID":23424930,"WOE_ID_EH":23424930,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"QAT","ADM0_DIFF":null,"ADM0_TLC":"QAT","ADM0_A3_US":"QAT","ADM0_A3_FR":"QAT","ADM0_A3_RU":"QAT","ADM0_A3_ES":"QAT","ADM0_A3_CN":"QAT","ADM0_A3_TW":"QAT","ADM0_A3_IN":"QAT","ADM0_A3_NP":"QAT","ADM0_A3_PK":"QAT","ADM0_A3_DE":"QAT","ADM0_A3_GB":"QAT","ADM0_A3_BR":"QAT","ADM0_A3_IL":"QAT","ADM0_A3_PS":"QAT","ADM0_A3_SA":"QAT","ADM0_A3_EG":"QAT","ADM0_A3_MA":"QAT","ADM0_A3_PT":"QAT","ADM0_A3_AR":"QAT","ADM0_A3_JP":"QAT","ADM0_A3_KO":"QAT","ADM0_A3_VN":"QAT","ADM0_A3_TR":"QAT","ADM0_A3_ID":"QAT","ADM0_A3_PL":"QAT","ADM0_A3_GR":"QAT","ADM0_A3_IT":"QAT","ADM0_A3_NL":"QAT","ADM0_A3_SE":"QAT","ADM0_A3_BD":"QAT","ADM0_A3_UA":"QAT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":51.143509,"LABEL_Y":25.237383,"NE_ID":1159321197,"WIKIDATAID":"Q846","NAME_AR":"قطر","NAME_BN":"কাতার","NAME_DE":"Katar","NAME_EN":"Qatar","NAME_ES":"Catar","NAME_FA":"قطر","NAME_FR":"Qatar","NAME_EL":"Κατάρ","NAME_HE":"קטר","NAME_HI":"क़तर","NAME_HU":"Katar","NAME_ID":"Qatar","NAME_IT":"Qatar","NAME_JA":"カタール","NAME_KO":"카타르","NAME_NL":"Qatar","NAME_PL":"Katar","NAME_PT":"Catar","NAME_RU":"Катар","NAME_SV":"Qatar","NAME_TR":"Katar","NAME_UK":"Катар","NAME_UR":"قطر","NAME_VI":"Qatar","NAME_ZH":"卡塔尔","NAME_ZHT":"卡達","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[50.75459,24.564648,51.608887,26.153271],"geometry":{"type":"Polygon","coordinates":[[[51.267969,24.607227],[51.178027,24.586719],[51.093359,24.564648],[51.022754,24.565234],[50.966016,24.573926],[50.92832,24.595117],[50.855664,24.679639],[50.804395,24.789258],[50.835938,24.850391],[50.846777,24.888574],[50.777344,25.177441],[50.75459,25.399268],[50.762891,25.444727],[50.802637,25.49707],[50.868652,25.612695],[50.903809,25.724072],[51.003125,25.981445],[51.108105,26.080566],[51.262305,26.153271],[51.389063,26.011133],[51.543066,25.902393],[51.572266,25.781006],[51.526953,25.682129],[51.485352,25.524707],[51.510254,25.452344],[51.519531,25.389746],[51.561426,25.284473],[51.601953,25.147949],[51.608887,25.052881],[51.586914,24.964844],[51.533398,24.890869],[51.42793,24.668262],[51.396484,24.645117],[51.267969,24.607227]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":2,"SOVEREIGNT":"Portugal","SOV_A3":"PRT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Portugal","ADM0_A3":"PRT","GEOU_DIF":0,"GEOUNIT":"Portugal","GU_A3":"PRT","SU_DIF":1,"SUBUNIT":"Portugal","SU_A3":"PR1","BRK_DIFF":0,"NAME":"Portugal","NAME_LONG":"Portugal","BRK_A3":"PR1","BRK_NAME":"Portugal","BRK_GROUP":null,"ABBREV":"Port.","POSTAL":"P","FORMAL_EN":"Portuguese Republic","FORMAL_FR":null,"NAME_CIAWF":"Portugal","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Portugal","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":7,"MAPCOLOR9":1,"MAPCOLOR13":4,"POP_EST":10269417,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":238785,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"PO","ISO_A2":"PT","ISO_A2_EH":"PT","ISO_A3":"PRT","ISO_A3_EH":"PRT","ISO_N3":"620","ISO_N3_EH":"620","UN_A3":"620","WB_A2":"PT","WB_A3":"PRT","WOE_ID":23424925,"WOE_ID_EH":23424925,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PR1","ADM0_DIFF":null,"ADM0_TLC":"PR1","ADM0_A3_US":"PRT","ADM0_A3_FR":"PRT","ADM0_A3_RU":"PRT","ADM0_A3_ES":"PRT","ADM0_A3_CN":"PRT","ADM0_A3_TW":"PRT","ADM0_A3_IN":"PRT","ADM0_A3_NP":"PRT","ADM0_A3_PK":"PRT","ADM0_A3_DE":"PRT","ADM0_A3_GB":"PRT","ADM0_A3_BR":"PRT","ADM0_A3_IL":"PRT","ADM0_A3_PS":"PRT","ADM0_A3_SA":"PRT","ADM0_A3_EG":"PRT","ADM0_A3_MA":"PRT","ADM0_A3_PT":"PRT","ADM0_A3_AR":"PRT","ADM0_A3_JP":"PRT","ADM0_A3_KO":"PRT","ADM0_A3_VN":"PRT","ADM0_A3_TR":"PRT","ADM0_A3_ID":"PRT","ADM0_A3_PL":"PRT","ADM0_A3_GR":"PRT","ADM0_A3_IT":"PRT","ADM0_A3_NL":"PRT","ADM0_A3_SE":"PRT","ADM0_A3_BD":"PRT","ADM0_A3_UA":"PRT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-8.271754,"LABEL_Y":39.606675,"NE_ID":1159321187,"WIKIDATAID":"Q45","NAME_AR":"البرتغال","NAME_BN":"পর্তুগাল","NAME_DE":"Portugal","NAME_EN":"Portugal","NAME_ES":"Portugal","NAME_FA":"پرتغال","NAME_FR":"Portugal","NAME_EL":"Πορτογαλία","NAME_HE":"פורטוגל","NAME_HI":"पुर्तगाल","NAME_HU":"Portugália","NAME_ID":"Portugal","NAME_IT":"Portogallo","NAME_JA":"ポルトガル","NAME_KO":"포르투갈","NAME_NL":"Portugal","NAME_PL":"Portugalia","NAME_PT":"Portugal","NAME_RU":"Португалия","NAME_SV":"Portugal","NAME_TR":"Portekiz","NAME_UK":"Португалія","NAME_UR":"پرتگال","NAME_VI":"Bồ Đào Nha","NAME_ZH":"葡萄牙","NAME_ZHT":"葡萄牙","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-31.282959,32.648291,-6.2125,42.137402],"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.190869,32.868604],[-17.054492,32.815869],[-16.929199,32.841406],[-16.773975,32.773535],[-16.693262,32.758008],[-16.765283,32.709717],[-16.837402,32.648291],[-17.018262,32.662793],[-17.171191,32.721875],[-17.226025,32.766846],[-17.241016,32.807373],[-17.190869,32.868604]]],[[[-8.777148,41.941064],[-8.682959,42.008496],[-8.589648,42.052734],[-8.538086,42.069336],[-8.322559,42.115088],[-8.266064,42.137402],[-8.213086,42.133691],[-8.204199,42.111865],[-8.173584,42.069385],[-8.139307,42.039941],[-8.12998,42.018164],[-8.21333,41.9271],[-8.224756,41.89585],[-8.18125,41.836963],[-8.173535,41.819971],[-8.15249,41.811963],[-8.094434,41.814209],[-7.990967,41.851904],[-7.92085,41.883643],[-7.896387,41.870557],[-7.693066,41.888477],[-7.644678,41.873975],[-7.612598,41.857959],[-7.512598,41.835986],[-7.403613,41.833691],[-7.268555,41.864404],[-7.209619,41.895264],[-7.19834,41.929395],[-7.195361,41.955225],[-7.17793,41.97168],[-7.147119,41.981152],[-7.099121,41.964209],[-7.030469,41.950635],[-6.865527,41.945264],[-6.833203,41.96416],[-6.777295,41.958496],[-6.703613,41.93457],[-6.618262,41.942383],[-6.575342,41.913086],[-6.55752,41.874121],[-6.552588,41.789551],[-6.558984,41.704053],[-6.542187,41.67251],[-6.484668,41.664404],[-6.391699,41.665381],[-6.308057,41.642187],[-6.243115,41.601807],[-6.22168,41.560449],[-6.2125,41.532031],[-6.244336,41.515918],[-6.289355,41.455029],[-6.403125,41.375391],[-6.565918,41.303711],[-6.690137,41.214502],[-6.775781,41.107715],[-6.882812,41.062402],[-6.915527,41.038037],[-6.928467,41.009131],[-6.857715,40.87832],[-6.835889,40.77749],[-6.818359,40.654053],[-6.829834,40.619092],[-6.835693,40.483154],[-6.852051,40.443262],[-6.847949,40.410986],[-6.821777,40.37627],[-6.810156,40.343115],[-6.858887,40.300732],[-6.948437,40.251611],[-7.014697,40.20835],[-7.032617,40.16792],[-7.027832,40.142627],[-6.916406,40.056836],[-6.896094,40.021826],[-6.911182,39.937109],[-6.975391,39.798389],[-7.036719,39.713965],[-7.047412,39.705566],[-7.117676,39.681689],[-7.454102,39.680664],[-7.535693,39.661572],[-7.524219,39.644727],[-7.445117,39.536182],[-7.362695,39.47832],[-7.335449,39.465137],[-7.305762,39.338135],[-7.172412,39.135205],[-7.042969,39.10708],[-6.997949,39.056445],[-7.00625,38.985254],[-7.046045,38.907031],[-7.125488,38.826953],[-7.219922,38.770508],[-7.281543,38.714551],[-7.286377,38.649365],[-7.305957,38.566846],[-7.335791,38.501465],[-7.343018,38.457422],[-7.106396,38.181006],[-6.974805,38.194434],[-6.957568,38.187891],[-6.981104,38.121973],[-7.022852,38.044727],[-7.07251,38.030029],[-7.185449,38.006348],[-7.292236,37.906445],[-7.378906,37.786377],[-7.443945,37.728271],[-7.503516,37.585498],[-7.496045,37.523584],[-7.467187,37.428027],[-7.406152,37.179443],[-7.493604,37.168311],[-7.834131,37.005713],[-7.939697,37.00542],[-8.136768,37.077051],[-8.484326,37.100049],[-8.597656,37.121338],[-8.739111,37.074609],[-8.848437,37.075684],[-8.935352,37.016016],[-8.997803,37.032275],[-8.92627,37.166064],[-8.81416,37.430811],[-8.818555,37.592432],[-8.791846,37.732812],[-8.822656,37.871875],[-8.878955,37.958691],[-8.802246,38.183838],[-8.810937,38.299756],[-8.881104,38.44668],[-8.668311,38.424316],[-8.733984,38.482422],[-8.798877,38.518164],[-8.861621,38.509961],[-8.914795,38.512109],[-9.095996,38.455225],[-9.186719,38.438184],[-9.213281,38.448096],[-9.203369,38.538965],[-9.250391,38.656738],[-9.177832,38.687793],[-9.093311,38.69668],[-9.021484,38.746875],[-8.977051,38.80293],[-9.000488,38.903027],[-8.938086,38.998096],[-8.791602,39.078174],[-8.86748,39.065967],[-8.954297,39.016064],[-9.091016,38.834668],[-9.135791,38.742773],[-9.252295,38.712793],[-9.356738,38.6979],[-9.410205,38.70752],[-9.474121,38.730859],[-9.479736,38.798779],[-9.474756,38.85293],[-9.431445,38.960449],[-9.414355,39.112109],[-9.352832,39.248145],[-9.357227,39.284277],[-9.374756,39.338281],[-9.319629,39.391113],[-9.251416,39.426025],[-9.148291,39.542578],[-9.004053,39.820557],[-8.837842,40.115674],[-8.851318,40.151807],[-8.886621,40.179443],[-8.872656,40.259082],[-8.772412,40.605664],[-8.731592,40.650928],[-8.684619,40.752539],[-8.673975,40.916504],[-8.655566,41.029492],[-8.659814,41.086279],[-8.674609,41.154492],[-8.738379,41.284668],[-8.805664,41.56001],[-8.81084,41.651953],[-8.75542,41.698389],[-8.846387,41.705176],[-8.887598,41.7646],[-8.878223,41.83208],[-8.777148,41.941064]]],[[[-25.027344,36.959961],[-25.031543,36.941553],[-25.088379,36.948877],[-25.159912,36.943359],[-25.198389,36.996533],[-25.163525,37.018555],[-25.08291,37.024023],[-25.044336,37.000195],[-25.027344,36.959961]]],[[[-31.137109,39.406934],[-31.181348,39.358936],[-31.257617,39.375977],[-31.282959,39.394092],[-31.26084,39.496777],[-31.199854,39.52085],[-31.138623,39.479443],[-31.137109,39.406934]]],[[[-27.075244,38.643457],[-27.095313,38.634033],[-27.302832,38.661035],[-27.361914,38.697852],[-27.385937,38.76582],[-27.351025,38.788965],[-27.259668,38.802686],[-27.127002,38.789844],[-27.041943,38.741211],[-27.041992,38.678906],[-27.075244,38.643457]]],[[[-27.778467,38.555615],[-27.825879,38.543555],[-28.092334,38.620557],[-28.187256,38.655371],[-28.310645,38.743896],[-27.962646,38.636328],[-27.778467,38.555615]]],[[[-28.641309,38.525],[-28.743848,38.522363],[-28.842041,38.598437],[-28.697754,38.638477],[-28.65542,38.614062],[-28.624219,38.586328],[-28.605811,38.550732],[-28.641309,38.525]]],[[[-28.147266,38.452686],[-28.064795,38.412744],[-28.189746,38.40415],[-28.231152,38.384668],[-28.332422,38.412891],[-28.454492,38.408643],[-28.531152,38.462549],[-28.548828,38.518555],[-28.510254,38.553027],[-28.402148,38.553369],[-28.147266,38.452686]]],[[[-25.648975,37.840918],[-25.585498,37.834033],[-25.266602,37.848633],[-25.181934,37.837891],[-25.190723,37.764355],[-25.251123,37.73501],[-25.439014,37.715332],[-25.734473,37.762891],[-25.833691,37.826074],[-25.847852,37.872412],[-25.845898,37.894043],[-25.78374,37.911133],[-25.648975,37.840918]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Poland","SOV_A3":"POL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Poland","ADM0_A3":"POL","GEOU_DIF":0,"GEOUNIT":"Poland","GU_A3":"POL","SU_DIF":0,"SUBUNIT":"Poland","SU_A3":"POL","BRK_DIFF":0,"NAME":"Poland","NAME_LONG":"Poland","BRK_A3":"POL","BRK_NAME":"Poland","BRK_GROUP":null,"ABBREV":"Pol.","POSTAL":"PL","FORMAL_EN":"Republic of Poland","FORMAL_FR":null,"NAME_CIAWF":"Poland","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Poland","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":7,"MAPCOLOR9":1,"MAPCOLOR13":2,"POP_EST":37970874,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":595858,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"PL","ISO_A2":"PL","ISO_A2_EH":"PL","ISO_A3":"POL","ISO_A3_EH":"POL","ISO_N3":"616","ISO_N3_EH":"616","UN_A3":"616","WB_A2":"PL","WB_A3":"POL","WOE_ID":23424923,"WOE_ID_EH":23424923,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"POL","ADM0_DIFF":null,"ADM0_TLC":"POL","ADM0_A3_US":"POL","ADM0_A3_FR":"POL","ADM0_A3_RU":"POL","ADM0_A3_ES":"POL","ADM0_A3_CN":"POL","ADM0_A3_TW":"POL","ADM0_A3_IN":"POL","ADM0_A3_NP":"POL","ADM0_A3_PK":"POL","ADM0_A3_DE":"POL","ADM0_A3_GB":"POL","ADM0_A3_BR":"POL","ADM0_A3_IL":"POL","ADM0_A3_PS":"POL","ADM0_A3_SA":"POL","ADM0_A3_EG":"POL","ADM0_A3_MA":"POL","ADM0_A3_PT":"POL","ADM0_A3_AR":"POL","ADM0_A3_JP":"POL","ADM0_A3_KO":"POL","ADM0_A3_VN":"POL","ADM0_A3_TR":"POL","ADM0_A3_ID":"POL","ADM0_A3_PL":"POL","ADM0_A3_GR":"POL","ADM0_A3_IT":"POL","ADM0_A3_NL":"POL","ADM0_A3_SE":"POL","ADM0_A3_BD":"POL","ADM0_A3_UA":"POL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":7,"LABEL_X":19.490468,"LABEL_Y":51.990316,"NE_ID":1159321179,"WIKIDATAID":"Q36","NAME_AR":"بولندا","NAME_BN":"পোল্যান্ড","NAME_DE":"Polen","NAME_EN":"Poland","NAME_ES":"Polonia","NAME_FA":"لهستان","NAME_FR":"Pologne","NAME_EL":"Πολωνία","NAME_HE":"פולין","NAME_HI":"पोलैंड","NAME_HU":"Lengyelország","NAME_ID":"Polandia","NAME_IT":"Polonia","NAME_JA":"ポーランド","NAME_KO":"폴란드","NAME_NL":"Polen","NAME_PL":"Polska","NAME_PT":"Polónia","NAME_RU":"Польша","NAME_SV":"Polen","NAME_TR":"Polonya","NAME_UK":"Польща","NAME_UR":"پولینڈ","NAME_VI":"Ba Lan","NAME_ZH":"波兰","NAME_ZHT":"波蘭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[14.128613,49.020752,24.105762,54.838184],"geometry":{"type":"Polygon","coordinates":[[[23.605273,51.51792],[23.658887,51.448975],[23.679688,51.394922],[23.657617,51.35249],[23.664453,51.310059],[23.712207,51.265137],[23.863477,51.126221],[23.938086,50.992529],[23.985742,50.94043],[24.095801,50.872754],[24.105762,50.844971],[24.061621,50.819531],[24.025977,50.816162],[23.99707,50.809375],[23.978418,50.785596],[24.007324,50.760156],[24.046289,50.722803],[24.094727,50.617041],[24.089941,50.530469],[24.052637,50.508447],[24.00498,50.457031],[23.972656,50.410059],[23.711719,50.377344],[23.649023,50.327051],[23.506152,50.229834],[23.408594,50.173926],[23.264453,50.072852],[23.036328,49.899072],[22.952246,49.826367],[22.890723,49.76626],[22.706152,49.606201],[22.649414,49.539014],[22.660645,49.483691],[22.719922,49.353809],[22.732422,49.295166],[22.721973,49.240967],[22.702344,49.192725],[22.705664,49.171191],[22.760156,49.13623],[22.84707,49.08125],[22.852051,49.062744],[22.839746,49.038916],[22.809766,49.020752],[22.70127,49.039941],[22.57998,49.077197],[22.538672,49.072705],[22.473047,49.081299],[22.202539,49.153223],[22.020117,49.209521],[22.002148,49.246094],[21.967676,49.299072],[21.890137,49.343457],[21.712109,49.381934],[21.639648,49.411963],[21.350488,49.42876],[21.225,49.429443],[21.136133,49.417041],[21.079395,49.418262],[21.001172,49.339844],[20.947266,49.31709],[20.868457,49.314697],[20.799512,49.328662],[20.729004,49.369922],[20.616113,49.391699],[20.53457,49.381201],[20.474512,49.390186],[20.422656,49.392334],[20.404688,49.384082],[20.362988,49.385254],[20.302539,49.365527],[20.236523,49.337646],[20.163672,49.316406],[20.107617,49.270752],[20.057617,49.181299],[19.916113,49.221387],[19.868945,49.204004],[19.802246,49.192334],[19.756641,49.204395],[19.767383,49.235205],[19.787988,49.269971],[19.787012,49.318555],[19.773926,49.372168],[19.730078,49.3896],[19.66416,49.396045],[19.630273,49.406641],[19.62666,49.424365],[19.593066,49.447119],[19.534766,49.504785],[19.479688,49.576367],[19.441602,49.597705],[19.38623,49.563623],[19.302344,49.524854],[19.250195,49.511426],[19.149414,49.4],[18.968359,49.39624],[18.957227,49.448291],[18.938184,49.498291],[18.832227,49.510791],[18.829297,49.540137],[18.806934,49.613721],[18.594629,49.757812],[18.568848,49.81792],[18.577148,49.841113],[18.562402,49.879346],[18.516211,49.902393],[18.348438,49.929834],[18.305273,49.914062],[18.266309,49.930273],[18.205273,49.964746],[18.099219,49.992773],[18.087695,50.007275],[18.049512,50.031934],[18.02832,50.035254],[18.014648,50.020264],[17.983789,49.999072],[17.874805,49.972266],[17.83125,49.983301],[17.791699,50.006592],[17.746582,50.056787],[17.681055,50.100781],[17.627051,50.116406],[17.596289,50.139502],[17.589355,50.157471],[17.709277,50.193555],[17.735449,50.230762],[17.720117,50.298633],[17.702246,50.307178],[17.654688,50.284229],[17.55459,50.264062],[17.462305,50.254785],[17.415234,50.254785],[17.151953,50.37832],[16.980762,50.416113],[16.880078,50.427051],[16.869141,50.414502],[16.914746,50.345215],[16.993359,50.259717],[16.989648,50.236914],[16.895313,50.201953],[16.841797,50.186719],[16.778613,50.157031],[16.725293,50.116064],[16.679102,50.097461],[16.63916,50.102148],[16.59668,50.121924],[16.487598,50.248389],[16.350488,50.345215],[16.33418,50.366895],[16.291309,50.371875],[16.230762,50.394092],[16.210352,50.42373],[16.240723,50.454687],[16.28252,50.483008],[16.356641,50.500488],[16.379102,50.516895],[16.392285,50.54165],[16.419727,50.573633],[16.4125,50.585156],[16.359961,50.621387],[16.282227,50.655615],[16.066406,50.629932],[16.007227,50.611621],[15.973828,50.635449],[15.948535,50.670264],[15.893945,50.676904],[15.819238,50.708691],[15.730566,50.739697],[15.643945,50.748877],[15.463965,50.793848],[15.394629,50.796289],[15.354395,50.811768],[15.312598,50.845752],[15.277051,50.883008],[15.258594,50.958545],[15.125977,50.992871],[14.99375,51.014355],[14.984473,51.003418],[14.989941,50.927246],[14.98291,50.886572],[14.895801,50.861377],[14.809375,50.858984],[14.814258,50.871631],[14.91748,51.00874],[14.963867,51.095117],[15.016602,51.252734],[14.953125,51.377148],[14.935547,51.435352],[14.905957,51.46333],[14.724707,51.523877],[14.710938,51.544922],[14.738672,51.627148],[14.724902,51.661719],[14.681348,51.698193],[14.623926,51.770801],[14.60166,51.832373],[14.674902,51.904834],[14.692969,51.958008],[14.724805,52.030859],[14.748145,52.070801],[14.752539,52.081836],[14.70459,52.110205],[14.692383,52.150049],[14.705371,52.207471],[14.679883,52.25],[14.615625,52.277637],[14.573926,52.31416],[14.55459,52.359668],[14.569727,52.431104],[14.619434,52.528516],[14.514063,52.645605],[14.253711,52.78252],[14.128613,52.878223],[14.138867,52.932861],[14.193652,52.982324],[14.293164,53.026758],[14.368555,53.105566],[14.410938,53.199023],[14.412305,53.216748],[14.414551,53.283496],[14.29873,53.556445],[14.279883,53.624756],[14.266113,53.707129],[14.258887,53.729639],[14.487598,53.671875],[14.583496,53.639355],[14.571582,53.675879],[14.552148,53.707324],[14.564941,53.753516],[14.558398,53.823193],[14.350879,53.85874],[14.213672,53.870752],[14.198242,53.919043],[14.211426,53.950342],[14.249316,53.931934],[14.38418,53.924707],[14.715723,54.018311],[15.288379,54.139893],[15.9,54.253955],[16.042773,54.266357],[16.186328,54.290381],[16.239355,54.333057],[16.292285,54.361621],[16.375586,54.436865],[16.559766,54.553809],[16.885449,54.596387],[17.007031,54.651855],[17.261914,54.729541],[17.842969,54.816699],[18.085645,54.83584],[18.323438,54.838184],[18.535156,54.769434],[18.759277,54.68457],[18.799609,54.63335],[18.67832,54.665283],[18.501563,54.741504],[18.43623,54.744727],[18.587109,54.512891],[18.669629,54.430908],[18.836426,54.36958],[18.97627,54.348926],[19.407129,54.386084],[19.560156,54.434619],[19.604395,54.45918],[19.644238,54.44707],[19.924316,54.433984],[20.208203,54.420752],[20.664746,54.406641],[21.140527,54.391797],[21.63418,54.376465],[22.168457,54.359863],[22.731836,54.350098],[22.766211,54.356787],[22.82373,54.395801],[22.893945,54.390527],[22.976758,54.366357],[23.015527,54.34834],[23.031934,54.327881],[23.042188,54.304199],[23.0875,54.299463],[23.170313,54.281445],[23.282324,54.240332],[23.370117,54.200488],[23.453613,54.143457],[23.481348,54.079004],[23.483008,54.005957],[23.477637,53.958936],[23.484668,53.939795],[23.598926,53.599219],[23.789258,53.270947],[23.85918,53.112109],[23.887109,53.027539],[23.909375,52.904883],[23.916309,52.81875],[23.91543,52.770264],[23.90127,52.703613],[23.844727,52.664209],[23.47959,52.551562],[23.410938,52.516211],[23.30332,52.428369],[23.204102,52.337891],[23.18125,52.306982],[23.175098,52.286621],[23.196973,52.256934],[23.327148,52.208447],[23.458398,52.169531],[23.501172,52.140381],[23.597949,52.103076],[23.633301,52.06958],[23.652441,52.040381],[23.651074,51.972998],[23.607422,51.879785],[23.625684,51.809326],[23.581348,51.762402],[23.544824,51.710254],[23.539648,51.618896],[23.605273,51.51792]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Philippines","SOV_A3":"PHL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Philippines","ADM0_A3":"PHL","GEOU_DIF":0,"GEOUNIT":"Philippines","GU_A3":"PHL","SU_DIF":0,"SUBUNIT":"Philippines","SU_A3":"PHL","BRK_DIFF":0,"NAME":"Philippines","NAME_LONG":"Philippines","BRK_A3":"PHL","BRK_NAME":"Philippines","BRK_GROUP":null,"ABBREV":"Phil.","POSTAL":"PH","FORMAL_EN":"Republic of the Philippines","FORMAL_FR":null,"NAME_CIAWF":"Philippines","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Philippines","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":8,"POP_EST":108116615,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":376795,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"4. Lower middle income","FIPS_10":"RP","ISO_A2":"PH","ISO_A2_EH":"PH","ISO_A3":"PHL","ISO_A3_EH":"PHL","ISO_N3":"608","ISO_N3_EH":"608","UN_A3":"608","WB_A2":"PH","WB_A3":"PHL","WOE_ID":23424934,"WOE_ID_EH":23424934,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PHL","ADM0_DIFF":null,"ADM0_TLC":"PHL","ADM0_A3_US":"PHL","ADM0_A3_FR":"PHL","ADM0_A3_RU":"PHL","ADM0_A3_ES":"PHL","ADM0_A3_CN":"PHL","ADM0_A3_TW":"PHL","ADM0_A3_IN":"PHL","ADM0_A3_NP":"PHL","ADM0_A3_PK":"PHL","ADM0_A3_DE":"PHL","ADM0_A3_GB":"PHL","ADM0_A3_BR":"PHL","ADM0_A3_IL":"PHL","ADM0_A3_PS":"PHL","ADM0_A3_SA":"PHL","ADM0_A3_EG":"PHL","ADM0_A3_MA":"PHL","ADM0_A3_PT":"PHL","ADM0_A3_AR":"PHL","ADM0_A3_JP":"PHL","ADM0_A3_KO":"PHL","ADM0_A3_VN":"PHL","ADM0_A3_TR":"PHL","ADM0_A3_ID":"PHL","ADM0_A3_PL":"PHL","ADM0_A3_GR":"PHL","ADM0_A3_IT":"PHL","ADM0_A3_NL":"PHL","ADM0_A3_SE":"PHL","ADM0_A3_BD":"PHL","ADM0_A3_UA":"PHL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":7,"LABEL_X":122.465,"LABEL_Y":11.198,"NE_ID":1159321169,"WIKIDATAID":"Q928","NAME_AR":"الفلبين","NAME_BN":"ফিলিপাইন","NAME_DE":"Philippinen","NAME_EN":"Philippines","NAME_ES":"Filipinas","NAME_FA":"فیلیپین","NAME_FR":"Philippines","NAME_EL":"Φιλιππίνες","NAME_HE":"הפיליפינים","NAME_HI":"फ़िलीपीन्स","NAME_HU":"Fülöp-szigetek","NAME_ID":"Filipina","NAME_IT":"Filippine","NAME_JA":"フィリピン","NAME_KO":"필리핀","NAME_NL":"Filipijnen","NAME_PL":"Filipiny","NAME_PT":"Filipinas","NAME_RU":"Филиппины","NAME_SV":"Filippinerna","NAME_TR":"Filipinler","NAME_UK":"Філіппіни","NAME_UR":"فلپائن","NAME_VI":"Philippines","NAME_ZH":"菲律宾","NAME_ZHT":"菲律賓","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[116.969531,5.060205,126.593359,20.84126],"geometry":{"type":"MultiPolygon","coordinates":[[[[121.101562,18.615283],[121.254492,18.563428],[121.592969,18.376465],[121.716797,18.330078],[121.845605,18.29541],[121.947559,18.285156],[122.038477,18.32793],[122.076953,18.37168],[122.14668,18.486572],[122.221191,18.500635],[122.265527,18.458838],[122.299805,18.402783],[122.315039,18.320312],[122.293848,18.234277],[122.222852,18.157129],[122.179492,18.064258],[122.150977,17.756494],[122.152344,17.664404],[122.175195,17.575684],[122.236816,17.434863],[122.269043,17.395264],[122.362305,17.344873],[122.3875,17.306787],[122.392871,17.238379],[122.40752,17.178125],[122.467871,17.155127],[122.519141,17.124854],[122.5,17.058008],[122.467969,16.990039],[122.425781,16.822656],[122.225879,16.435205],[122.21416,16.351514],[122.135156,16.184814],[121.974707,16.15791],[121.788672,16.077441],[121.685156,16.014746],[121.595313,15.933252],[121.560938,15.826758],[121.59043,15.778027],[121.60918,15.726025],[121.607031,15.669824],[121.579199,15.623193],[121.489844,15.509521],[121.452051,15.41665],[121.411914,15.375049],[121.392285,15.324414],[121.398926,15.266602],[121.434961,15.216309],[121.543945,14.99917],[121.660547,14.789502],[121.685645,14.76543],[121.69541,14.737305],[121.626563,14.681738],[121.62793,14.581152],[121.648535,14.481494],[121.751855,14.23418],[121.766602,14.168066],[121.800488,14.113867],[121.85332,14.063086],[121.911719,14.02041],[122.07959,13.947119],[122.144336,13.932715],[122.211719,13.930176],[122.228418,13.979492],[122.2875,13.996191],[122.274414,14.044727],[122.202539,14.11167],[122.199707,14.148047],[122.2375,14.175049],[122.282617,14.19082],[122.383691,14.263867],[122.49082,14.322363],[122.627148,14.317529],[122.761035,14.284863],[122.856055,14.250781],[122.93418,14.188086],[123.014551,14.079834],[123.070996,13.959961],[123.070703,13.902734],[123.056934,13.845459],[123.059961,13.78877],[123.101953,13.750244],[123.231445,13.747363],[123.296973,13.836426],[123.305371,13.936572],[123.259277,13.975439],[123.280469,14.024805],[123.320312,14.06167],[123.377441,14.028662],[123.432324,13.96626],[123.632812,13.898486],[123.684082,13.897021],[123.725977,13.884326],[123.815723,13.837109],[123.857617,13.799609],[123.80625,13.721729],[123.607129,13.704443],[123.549609,13.645752],[123.608105,13.528076],[123.703613,13.431592],[123.764844,13.353516],[123.819238,13.269482],[123.816602,13.191602],[123.785156,13.110547],[123.872754,13.116992],[123.955176,13.099707],[124.069141,13.031934],[124.10459,13.025],[124.142773,13.035791],[124.137305,12.791162],[124.059766,12.56709],[123.961719,12.594971],[123.877832,12.689697],[123.894922,12.80498],[123.948535,12.916406],[123.917969,12.939941],[123.863867,12.930664],[123.802344,12.905566],[123.736035,12.896924],[123.626758,12.911768],[123.402344,13.033105],[123.310938,13.044092],[123.29043,13.099023],[123.295508,13.215576],[123.205957,13.353516],[123.191602,13.402881],[123.163281,13.441748],[122.896191,13.591943],[122.863477,13.617236],[122.781348,13.737061],[122.595215,13.907617],[122.543066,13.925049],[122.486328,13.92998],[122.467969,13.886719],[122.49375,13.820215],[122.504199,13.763086],[122.500195,13.703174],[122.508008,13.656836],[122.596191,13.562012],[122.609375,13.517139],[122.667871,13.395361],[122.675098,13.253174],[122.599902,13.194141],[122.515234,13.26001],[122.5125,13.313623],[122.497949,13.363525],[122.406934,13.492773],[122.376563,13.520605],[122.205273,13.648242],[122.072754,13.788379],[121.77793,13.937646],[121.742871,13.94585],[121.691699,13.93457],[121.643457,13.915967],[121.501074,13.842187],[121.450781,13.790771],[121.446289,13.711865],[121.344141,13.649121],[121.203516,13.640283],[121.095508,13.679492],[121.006152,13.758105],[120.932324,13.761865],[120.840723,13.884717],[120.729102,13.900537],[120.637109,13.804492],[120.617383,13.995312],[120.616797,14.188037],[120.642676,14.244336],[120.688281,14.291211],[120.92207,14.493115],[120.951563,14.557959],[120.941309,14.645068],[120.888086,14.715771],[120.804492,14.758789],[120.70791,14.776611],[120.638281,14.816162],[120.583691,14.88125],[120.546777,14.766113],[120.582715,14.594629],[120.588672,14.483105],[120.555664,14.441357],[120.495703,14.440186],[120.43877,14.453369],[120.396094,14.493311],[120.365234,14.608301],[120.283887,14.684375],[120.250781,14.793311],[120.213867,14.808789],[120.137988,14.800391],[120.082129,14.851074],[120.044531,14.978125],[120.036621,15.114551],[120.00498,15.229248],[119.959375,15.340234],[119.932813,15.430908],[119.891602,15.837695],[119.881445,15.875],[119.859668,15.905762],[119.808203,15.951953],[119.768945,16.008447],[119.761816,16.05498],[119.772559,16.255127],[119.790234,16.30332],[119.830762,16.326562],[119.886133,16.287402],[119.930371,16.23877],[119.985156,16.21543],[120.033398,16.18457],[120.124023,16.066211],[120.159766,16.047656],[120.271289,16.051416],[120.337012,16.066455],[120.36875,16.10957],[120.38877,16.160938],[120.389258,16.221631],[120.325,16.400342],[120.305273,16.529248],[120.304395,16.645459],[120.321191,16.761865],[120.408887,16.955615],[120.420117,17.090088],[120.411719,17.269922],[120.427148,17.376904],[120.424512,17.43833],[120.37207,17.535107],[120.358398,17.638184],[120.505078,18.162646],[120.550977,18.264062],[120.584473,18.36875],[120.599707,18.507861],[120.709375,18.545947],[120.81377,18.603418],[120.867773,18.598926],[120.925,18.585107],[121.051367,18.613672],[121.101562,18.615283]]],[[[117.311133,8.4396],[117.218555,8.367285],[117.228516,8.456689],[117.255859,8.540967],[117.349902,8.713574],[117.417773,8.76665],[117.52998,8.902588],[117.593262,8.968311],[117.744922,9.098242],[117.884766,9.240674],[117.931543,9.25127],[117.983008,9.253418],[118.023828,9.269775],[118.114844,9.34668],[118.343945,9.602783],[118.533398,9.793652],[118.727539,10.03501],[118.820117,10.105322],[118.845117,10.131299],[119.023828,10.353564],[119.079883,10.38584],[119.143066,10.409277],[119.186035,10.439453],[119.223828,10.477295],[119.287012,10.574023],[119.312695,10.687109],[119.29668,10.750977],[119.261133,10.845166],[119.305664,10.973633],[119.340723,11.03291],[119.465332,11.293799],[119.50127,11.346436],[119.55332,11.313525],[119.560254,11.266797],[119.53457,11.156836],[119.532617,11.101611],[119.561914,11.045508],[119.52666,10.953174],[119.616113,10.707373],[119.684375,10.551709],[119.686914,10.500342],[119.595215,10.407422],[119.540527,10.379346],[119.422461,10.354395],[119.369336,10.327295],[119.284766,10.251709],[119.231934,10.152148],[119.218555,10.100684],[119.191504,10.061084],[118.948633,9.993457],[118.834668,9.949316],[118.782129,9.916113],[118.75498,9.862109],[118.773828,9.766797],[118.569629,9.422754],[118.504492,9.332666],[118.434961,9.256006],[118.349609,9.201465],[118.229297,9.167969],[118.134082,9.101367],[118.069434,8.983545],[117.989551,8.8771],[117.888574,8.798242],[117.779785,8.728613],[117.679883,8.677832],[117.572168,8.641992],[117.539648,8.595605],[117.516602,8.53833],[117.469141,8.511377],[117.4125,8.49585],[117.311133,8.4396]]],[[[122.496191,11.615088],[122.612695,11.56416],[122.72627,11.60791],[122.838086,11.595654],[122.93125,11.529297],[122.900781,11.487354],[122.894531,11.441309],[123.102734,11.541455],[123.158301,11.535547],[123.156445,11.442529],[123.144141,11.363574],[123.119531,11.286816],[123.075488,11.196875],[123.016504,11.116504],[122.93877,11.058154],[122.84668,11.022461],[122.80293,10.990039],[122.789453,10.941211],[122.791113,10.879736],[122.769922,10.823828],[122.673145,10.800928],[122.52207,10.691895],[122.197656,10.6229],[122.108594,10.575537],[122.051758,10.514062],[121.988379,10.458301],[121.954004,10.444385],[121.938281,10.470898],[121.933789,10.493652],[121.980078,10.638574],[121.972363,10.698877],[121.950293,10.757373],[121.964355,10.87168],[122.020703,10.979102],[122.050879,11.097363],[122.059668,11.325684],[122.103516,11.64292],[122.101367,11.680859],[122.066992,11.72373],[121.94082,11.758301],[121.891211,11.790869],[121.916016,11.854346],[121.963672,11.897363],[122.029199,11.89541],[122.086816,11.855078],[122.290723,11.772021],[122.399219,11.702197],[122.496191,11.615088]]],[[[123.130859,9.064111],[123.064648,9.053369],[122.994727,9.058838],[122.947852,9.107959],[122.866602,9.319824],[122.772461,9.371338],[122.664551,9.410352],[122.610352,9.443213],[122.5625,9.482812],[122.410937,9.693896],[122.399512,9.823047],[122.425586,9.896094],[122.471484,9.961523],[122.523242,9.979199],[122.648242,9.981543],[122.712988,9.990137],[122.855566,10.086914],[122.86582,10.125],[122.866504,10.284033],[122.852344,10.395264],[122.816992,10.503809],[122.855566,10.553418],[122.905859,10.602539],[122.958398,10.69834],[122.96875,10.765723],[122.969727,10.836182],[122.983301,10.886621],[123.024414,10.911816],[123.221777,10.988672],[123.256641,10.993945],[123.510645,10.923047],[123.5625,10.816064],[123.567578,10.780762],[123.527734,10.662012],[123.492871,10.582324],[123.406934,10.458984],[123.343555,10.325391],[123.296094,10.124512],[123.266211,10.059033],[123.186621,9.933301],[123.162012,9.864258],[123.162695,9.714648],[123.149414,9.659326],[123.149805,9.606152],[123.308398,9.356982],[123.321875,9.31748],[123.320508,9.272949],[123.293359,9.217285],[123.228711,9.121387],[123.19248,9.087891],[123.130859,9.064111]]],[[[124.574609,11.343066],[124.644336,11.308105],[124.724316,11.32207],[124.821094,11.401416],[124.92998,11.372852],[124.993945,11.255908],[125.026563,11.211719],[125.044336,11.135254],[125.039746,10.951904],[125.013184,10.785693],[125.033789,10.751465],[125.083887,10.721582],[125.127539,10.684717],[125.16416,10.637451],[125.187695,10.584863],[125.197168,10.457227],[125.260059,10.349609],[125.268457,10.307715],[125.25332,10.263818],[125.148438,10.272412],[125.140039,10.235352],[125.142578,10.189453],[125.105371,10.218311],[125.043945,10.323437],[124.9875,10.367578],[125.004883,10.19707],[125.023535,10.115283],[125.026563,10.033105],[124.929102,10.095898],[124.812793,10.134619],[124.780762,10.168066],[124.791699,10.274561],[124.789551,10.327539],[124.737695,10.439746],[124.798633,10.682227],[124.797168,10.731787],[124.786719,10.781396],[124.738672,10.879736],[124.662695,10.961963],[124.616113,10.962207],[124.502832,10.904443],[124.445508,10.923584],[124.411719,11.150342],[124.366016,11.370703],[124.330957,11.4271],[124.308203,11.486182],[124.330664,11.535205],[124.374121,11.51499],[124.435938,11.457227],[124.510938,11.423877],[124.548242,11.39502],[124.574609,11.343066]]],[[[125.239551,12.527881],[125.310352,12.446289],[125.327539,12.387207],[125.320215,12.321826],[125.352246,12.292773],[125.408789,12.284863],[125.48125,12.251953],[125.535645,12.191406],[125.50332,12.135791],[125.513379,12.05459],[125.456543,11.952539],[125.464258,11.771582],[125.496875,11.71377],[125.5,11.65542],[125.491797,11.594336],[125.505762,11.544238],[125.592969,11.378223],[125.608984,11.323047],[125.582324,11.279492],[125.573535,11.238232],[125.627344,11.233887],[125.704004,11.164795],[125.749121,11.073584],[125.735645,11.049609],[125.674414,11.120801],[125.628125,11.132031],[125.431836,11.112598],[125.311523,11.142285],[125.233398,11.145068],[125.155859,11.267041],[125.087891,11.287354],[125.034277,11.34126],[124.945312,11.47915],[124.916992,11.558398],[124.978906,11.638477],[124.998242,11.702344],[124.99502,11.764941],[124.935645,11.754639],[124.884277,11.775488],[124.821094,11.8521],[124.795801,11.896338],[124.749805,11.93335],[124.676758,12.020898],[124.571875,12.055127],[124.529102,12.079199],[124.445703,12.152783],[124.384863,12.243994],[124.325781,12.403809],[124.294727,12.569336],[124.56582,12.526221],[124.840137,12.53457],[125.150195,12.572559],[125.239551,12.527881]]],[[[120.704395,13.479492],[120.755371,13.470996],[120.915332,13.501074],[120.980762,13.485986],[121.024707,13.428711],[121.079297,13.410742],[121.122461,13.38125],[121.202734,13.432324],[121.284375,13.374121],[121.356836,13.265479],[121.442187,13.188428],[121.522754,13.131201],[121.538672,13.088867],[121.489746,13.01958],[121.474805,12.931592],[121.479688,12.837109],[121.540625,12.638184],[121.519238,12.584229],[121.458008,12.507959],[121.412305,12.423047],[121.418164,12.38877],[121.400098,12.360742],[121.394336,12.300586],[121.356836,12.313086],[121.322363,12.303613],[121.288867,12.276709],[121.236719,12.218799],[121.155469,12.236328],[121.116992,12.253418],[121.107617,12.303613],[121.083398,12.338965],[121.048535,12.359961],[120.9625,12.446533],[120.922168,12.511621],[120.921484,12.581104],[120.899414,12.64585],[120.854785,12.703662],[120.795996,12.747998],[120.776367,12.790576],[120.76875,12.840918],[120.763672,12.969824],[120.680273,13.130615],[120.651367,13.169141],[120.573145,13.208887],[120.508301,13.260059],[120.480664,13.311035],[120.455469,13.393506],[120.438086,13.40542],[120.3875,13.40166],[120.338477,13.412354],[120.352734,13.472949],[120.40127,13.517041],[120.468359,13.522412],[120.65332,13.497607],[120.704395,13.479492]]],[[[126.005957,9.320947],[126.087598,9.260742],[126.193359,9.276709],[126.191992,9.124902],[126.209082,9.080566],[126.30459,8.952051],[126.319531,8.844727],[126.262988,8.743945],[126.220215,8.696289],[126.141602,8.627295],[126.139551,8.595654],[126.173047,8.560059],[126.282324,8.539307],[126.365332,8.483887],[126.379785,8.326758],[126.458691,8.202832],[126.456641,8.148779],[126.425293,7.927441],[126.435352,7.832812],[126.494434,7.756982],[126.544434,7.724805],[126.570117,7.677246],[126.593359,7.546777],[126.589258,7.325146],[126.581543,7.247754],[126.54668,7.17583],[126.439063,7.012354],[126.294043,6.882324],[126.216895,6.891016],[126.19209,6.852539],[126.240234,6.733887],[126.221191,6.483398],[126.189355,6.309668],[126.14248,6.397559],[126.109766,6.489648],[126.080078,6.73335],[126.043066,6.843164],[125.984961,6.943555],[125.961621,7.033203],[125.901172,7.116992],[125.824414,7.333301],[125.773633,7.322168],[125.689258,7.263037],[125.670215,7.222314],[125.660254,7.160596],[125.640723,7.105078],[125.542188,7.016602],[125.464746,6.911133],[125.400977,6.795752],[125.380664,6.689941],[125.43291,6.607129],[125.486621,6.57373],[125.564551,6.499609],[125.588477,6.465771],[125.670703,6.225],[125.667969,5.978662],[125.607813,5.870166],[125.455859,5.664258],[125.346484,5.598975],[125.287891,5.632275],[125.241016,5.756934],[125.233203,5.808301],[125.264941,5.925586],[125.268457,6.033154],[125.231543,6.069531],[125.191016,6.0625],[125.174023,6.046973],[125.076172,5.90625],[125.035352,5.870654],[124.975195,5.865723],[124.927344,5.875342],[124.636328,5.998193],[124.398828,6.119727],[124.212793,6.233252],[124.078125,6.404443],[124.049707,6.532568],[124.048145,6.666553],[123.987891,6.862988],[123.980859,6.929688],[123.985254,6.993701],[124.045117,7.114111],[124.117578,7.175098],[124.158203,7.218799],[124.190723,7.267334],[124.212891,7.332129],[124.206641,7.396436],[124.182422,7.436719],[124.067969,7.577881],[123.968457,7.664648],[123.764746,7.742627],[123.717383,7.7854],[123.66582,7.817773],[123.608887,7.831641],[123.553223,7.832129],[123.493066,7.80791],[123.477441,7.756348],[123.481641,7.710254],[123.476367,7.665381],[123.390918,7.40752],[123.282031,7.464111],[123.178223,7.529443],[123.150684,7.575195],[123.13877,7.629932],[123.121191,7.666895],[123.09668,7.700439],[123.048926,7.614355],[122.989551,7.546289],[122.916895,7.530518],[122.842969,7.529297],[122.81875,7.558496],[122.791797,7.722461],[122.713965,7.774121],[122.616211,7.763135],[122.497949,7.672754],[122.474414,7.638965],[122.448633,7.561133],[122.319727,7.340234],[122.251465,7.17002],[122.176172,7.004199],[122.14248,6.949658],[122.098145,6.913721],[122.027637,6.928613],[121.964258,6.968213],[121.904199,7.075195],[121.924609,7.199512],[121.991113,7.27876],[122.047168,7.363574],[122.114844,7.659912],[122.119922,7.765381],[122.131836,7.810498],[122.243359,7.945117],[122.337109,8.028418],[122.386719,8.045898],[122.589453,8.093311],[122.672949,8.133105],[122.804395,8.133691],[122.911133,8.156445],[122.996289,8.220508],[123.002734,8.286914],[122.998828,8.356055],[123.017578,8.39834],[123.050586,8.433936],[123.095898,8.480811],[123.147168,8.516016],[123.292871,8.541455],[123.341211,8.57041],[123.380176,8.615625],[123.43457,8.70332],[123.498926,8.681543],[123.563672,8.647461],[123.680078,8.620605],[123.783398,8.547705],[123.849219,8.432715],[123.860547,8.376074],[123.877441,8.188818],[123.853418,8.145117],[123.753125,8.058252],[123.799414,8.049121],[123.931152,8.128418],[123.996875,8.158984],[124.159375,8.201465],[124.197656,8.229541],[124.225781,8.271387],[124.283203,8.385986],[124.325195,8.508447],[124.35791,8.559424],[124.404883,8.599854],[124.45127,8.606348],[124.621777,8.522656],[124.731152,8.562988],[124.761719,8.689795],[124.786816,8.874121],[124.806152,8.924023],[124.868945,8.972266],[124.943848,8.956689],[125.046387,8.890527],[125.141016,8.86875],[125.176172,8.92207],[125.209668,9.027148],[125.247852,9.026562],[125.375586,8.991797],[125.49873,9.014746],[125.533398,9.140918],[125.510156,9.275879],[125.413965,9.669189],[125.471289,9.756787],[125.520898,9.759131],[125.64248,9.654492],[125.87666,9.513135],[125.954688,9.42666],[126.005957,9.320947]]],[[[123.370313,9.449609],[123.331738,9.422949],[123.316016,9.488965],[123.327051,9.578076],[123.403711,9.889258],[123.38623,9.96709],[123.514355,10.140332],[123.592871,10.30293],[123.711426,10.473682],[123.726465,10.562207],[123.831543,10.731006],[123.929883,10.963818],[123.924609,11.040918],[123.950098,11.07915],[123.964063,11.137451],[123.967188,11.186914],[124.038867,11.273535],[124.05791,11.217236],[124.036523,11.106689],[124.039844,11.053613],[124.052539,11.02876],[124.05332,10.925781],[124.027539,10.767871],[124.05127,10.585596],[124.00498,10.400098],[123.952148,10.316602],[123.873926,10.257715],[123.788672,10.220801],[123.700488,10.12832],[123.643359,10.020215],[123.633984,9.921729],[123.493555,9.589307],[123.370313,9.449609]]],[[[121.92168,18.894727],[121.858203,18.8229],[121.825195,18.842725],[121.860742,18.912549],[121.859766,18.936768],[121.888867,18.991553],[121.943359,19.010449],[121.987891,18.956641],[121.92168,18.894727]]],[[[121.520898,19.361963],[121.53125,19.271338],[121.47207,19.27334],[121.38291,19.328467],[121.374609,19.356299],[121.375977,19.379688],[121.391602,19.399365],[121.520898,19.361963]]],[[[121.960059,20.365869],[121.941309,20.353711],[121.914062,20.359424],[121.941211,20.453711],[121.991211,20.47959],[122.031152,20.469385],[121.960059,20.365869]]],[[[121.878125,20.781885],[121.82959,20.700293],[121.790625,20.701172],[121.796484,20.746631],[121.847852,20.84126],[121.866992,20.839209],[121.878125,20.781885]]],[[[121.159375,6.075635],[121.213867,6.003516],[121.28252,6.022266],[121.391504,6.0021],[121.414648,5.964502],[121.411035,5.939844],[121.294434,5.869971],[121.218164,5.942725],[121.083008,5.893018],[121.018555,5.922949],[120.930664,5.896191],[120.876367,5.952637],[120.898242,6.006934],[121.037695,6.095996],[121.159375,6.075635]]],[[[117.079883,7.883398],[117.02832,7.80752],[116.969531,7.894922],[116.975781,8.01665],[116.993555,8.050537],[117.077051,8.069141],[117.079883,7.883398]]],[[[119.916211,10.485986],[119.793164,10.455273],[119.764453,10.551611],[119.852051,10.640137],[119.950195,10.604785],[120.008398,10.570117],[119.981152,10.538721],[119.916211,10.485986]]],[[[120.1,12.167676],[120.154688,12.152393],[120.19375,12.167041],[120.228223,12.219824],[120.260547,12.141748],[120.341406,12.077441],[120.314551,12.012402],[120.243457,12.004785],[120.173633,12.019629],[120.100098,11.99375],[120.010547,12.008252],[119.957031,12.069238],[119.896094,12.17876],[119.865918,12.199023],[119.869629,12.243994],[119.891797,12.27251],[119.880078,12.279883],[119.885742,12.299854],[119.89668,12.313428],[119.916406,12.319092],[119.963867,12.27041],[120.077539,12.197754],[120.1,12.167676]]],[[[120.03877,11.70332],[119.963867,11.669385],[119.944922,11.690723],[119.931738,11.740332],[119.932813,11.774463],[119.860938,11.953955],[119.916016,11.981348],[119.956543,11.960254],[119.997852,11.932129],[120.035937,11.917236],[120.070703,11.860547],[120.062402,11.821338],[120.073145,11.783496],[120.03877,11.70332]]],[[[122.649512,10.472705],[122.621875,10.459033],[122.597168,10.461035],[122.538379,10.424951],[122.516699,10.492529],[122.5375,10.607568],[122.625781,10.69502],[122.648438,10.72251],[122.672559,10.738818],[122.70127,10.740625],[122.729199,10.706396],[122.737207,10.65459],[122.68125,10.498242],[122.649512,10.472705]]],[[[124.593848,9.787207],[124.584277,9.750488],[124.505664,9.753516],[124.477539,9.7479],[124.403418,9.654102],[124.359863,9.630225],[124.122461,9.599316],[123.935645,9.623975],[123.87168,9.675732],[123.82998,9.761133],[123.817187,9.817383],[123.863867,9.878809],[123.908887,9.919629],[124.059766,10.000195],[124.093848,10.061328],[124.172852,10.135205],[124.335742,10.159912],[124.351562,10.141357],[124.373242,10.12959],[124.405859,10.126416],[124.486328,10.065479],[124.577148,10.026709],[124.555078,9.879199],[124.582227,9.82959],[124.593848,9.787207]]],[[[120.250391,5.256592],[120.223242,5.19624],[120.191602,5.168311],[120.15,5.184082],[120.118359,5.215381],[120.100586,5.168994],[120.013281,5.151123],[119.958105,5.079541],[119.877539,5.060205],[119.821484,5.069531],[119.827344,5.133154],[119.982715,5.228418],[120.079688,5.263623],[120.165234,5.332422],[120.208008,5.340088],[120.229395,5.284082],[120.250391,5.256592]]],[[[122.092871,6.42832],[121.991406,6.414551],[121.95918,6.41582],[121.879883,6.517578],[121.872461,6.562744],[121.808691,6.613721],[121.832031,6.664062],[121.914941,6.676221],[122.058301,6.740723],[122.288086,6.638916],[122.323535,6.602246],[122.251758,6.579785],[122.200977,6.48291],[122.092871,6.42832]]],[[[126.059375,9.766211],[126.046777,9.760791],[125.991211,9.838525],[125.998633,9.927051],[126.073828,10.059229],[126.129492,9.943555],[126.128906,9.891113],[126.120801,9.865186],[126.172559,9.799951],[126.136914,9.767773],[126.059375,9.766211]]],[[[125.690234,9.914453],[125.672559,9.886475],[125.648633,9.944092],[125.590527,9.998193],[125.534473,10.090088],[125.494824,10.118701],[125.521973,10.191504],[125.524609,10.309717],[125.580176,10.363672],[125.605859,10.37959],[125.647949,10.436816],[125.666797,10.440137],[125.68457,10.392041],[125.64668,10.24541],[125.70332,10.071777],[125.684375,9.963184],[125.69248,9.939014],[125.690234,9.914453]]],[[[120.271289,13.750684],[120.272852,13.682959],[120.104199,13.782373],[120.099414,13.816943],[120.103418,13.842529],[120.120703,13.858057],[120.211426,13.820654],[120.271289,13.750684]]],[[[121.914844,13.540332],[121.976562,13.537402],[121.995703,13.546777],[122.114551,13.463184],[122.107324,13.42085],[122.122363,13.365137],[122.054688,13.268652],[122.042383,13.236182],[122.004883,13.20498],[121.875879,13.281738],[121.829199,13.328613],[121.815039,13.424463],[121.866211,13.566162],[121.914844,13.540332]]],[[[122.094043,12.354883],[122.013965,12.105615],[121.960156,12.191406],[121.981934,12.245312],[121.935645,12.290381],[121.923242,12.331299],[121.941016,12.3854],[121.989453,12.435303],[122.001563,12.598535],[122.103809,12.650635],[122.14502,12.652637],[122.130273,12.612598],[122.131641,12.537549],[122.094043,12.354883]]],[[[122.654492,12.309033],[122.60332,12.285596],[122.499316,12.383691],[122.438867,12.429492],[122.422949,12.455078],[122.471875,12.491943],[122.603613,12.491602],[122.673633,12.424268],[122.683301,12.382324],[122.654492,12.309033]]],[[[123.281836,12.853418],[123.367188,12.70083],[123.274219,12.805078],[123.166406,12.875879],[123.054199,12.993457],[122.973437,13.034717],[122.949023,13.058691],[122.95752,13.107178],[123.01709,13.116162],[123.043555,13.113379],[123.20625,12.90542],[123.281836,12.853418]]],[[[123.775391,12.453906],[123.779102,12.36626],[123.741504,12.398535],[123.620605,12.570508],[123.587207,12.633301],[123.621484,12.674902],[123.708691,12.610791],[123.775391,12.453906]]],[[[123.716602,12.287354],[123.908301,12.169092],[124.040332,11.966797],[124.055664,11.811572],[124.045508,11.752441],[123.982715,11.818896],[123.847754,11.913574],[123.754004,11.934473],[123.725195,11.951562],[123.736035,12.002637],[123.674805,12.05],[123.667578,12.069336],[123.612012,12.090234],[123.531055,12.196631],[123.47373,12.21665],[123.418848,12.194238],[123.292676,12.036377],[123.157813,11.925635],[123.155859,11.967969],[123.210547,12.106592],[123.245313,12.328027],[123.267188,12.395459],[123.239844,12.494678],[123.236426,12.583496],[123.337012,12.542383],[123.462988,12.501221],[123.558984,12.444824],[123.574805,12.406934],[123.716602,12.287354]]],[[[124.353613,13.632227],[124.327051,13.567383],[124.294531,13.590332],[124.248242,13.58667],[124.175391,13.531543],[124.057031,13.605566],[124.038867,13.663135],[124.12373,13.790479],[124.122852,13.979687],[124.153711,14.026172],[124.18623,14.059521],[124.224902,14.077588],[124.308301,13.946973],[124.336719,13.931104],[124.417188,13.871045],[124.396289,13.750098],[124.404004,13.679443],[124.353613,13.632227]]],[[[122.175391,14.048828],[122.172266,14.008008],[121.95625,14.156055],[121.946387,14.181494],[121.945996,14.205127],[121.95918,14.22876],[122.175391,14.048828]]],[[[122.033496,15.005029],[122.051562,14.969873],[122.031738,14.971631],[122.017285,14.965283],[121.970313,14.892969],[122.02168,14.759424],[121.989648,14.662158],[121.933008,14.656055],[121.910645,14.666504],[121.922168,14.714551],[121.93457,14.736621],[121.923047,14.8],[121.889258,14.839844],[121.862305,14.917187],[121.820312,14.963574],[121.839844,15.038135],[121.97168,15.046387],[122.033496,15.005029]]],[[[124.316211,10.606006],[124.288477,10.601465],[124.334668,10.706689],[124.371094,10.691357],[124.382324,10.679834],[124.381348,10.632568],[124.316211,10.606006]]],[[[125.280762,9.982178],[125.287695,9.932715],[125.158984,10.062939],[125.133008,10.155029],[125.175879,10.151074],[125.230957,10.115674],[125.280762,9.982178]]],[[[122.937109,7.409131],[122.948047,7.385742],[122.943652,7.361035],[122.839551,7.3146],[122.804688,7.315967],[122.796582,7.393359],[122.822168,7.428467],[122.871191,7.397314],[122.914844,7.433398],[122.937109,7.409131]]],[[[125.78457,6.962744],[125.768945,6.905762],[125.70752,7.03999],[125.683008,7.073193],[125.714453,7.185547],[125.783398,7.130664],[125.78457,6.962744]]],[[[124.608398,11.492188],[124.483496,11.48584],[124.428809,11.531738],[124.360352,11.665918],[124.437402,11.69502],[124.510938,11.687109],[124.564941,11.639697],[124.622266,11.549561],[124.608398,11.492188]]],[[[124.806641,9.142627],[124.77793,9.083105],[124.66582,9.132324],[124.639063,9.175098],[124.65332,9.22583],[124.708105,9.243018],[124.736816,9.243164],[124.790234,9.190088],[124.806641,9.142627]]],[[[121.252246,19.082422],[121.24668,19.015186],[121.196094,19.050684],[121.184863,19.101416],[121.189941,19.138916],[121.213184,19.183594],[121.244727,19.143018],[121.252246,19.082422]]],[[[119.861426,11.525342],[119.88291,11.472412],[119.854883,11.393066],[119.830664,11.375684],[119.798633,11.40874],[119.72998,11.431934],[119.725586,11.474658],[119.761426,11.473633],[119.826758,11.51543],[119.861426,11.525342]]],[[[123.757031,11.283301],[123.815625,11.150732],[123.736719,11.151465],[123.707617,11.247998],[123.741406,11.27915],[123.757031,11.283301]]],[[[122.31084,12.528809],[122.279785,12.498291],[122.260938,12.503076],[122.247852,12.556934],[122.278027,12.59292],[122.2875,12.589258],[122.31084,12.528809]]],[[[125.970508,9.593555],[125.952441,9.567969],[125.92207,9.621484],[125.948535,9.739209],[125.967773,9.759082],[125.992969,9.68457],[125.970508,9.593555]]],[[[124.854395,11.594775],[124.835938,11.543311],[124.806641,11.557568],[124.781055,11.580762],[124.743652,11.658545],[124.730859,11.715332],[124.788379,11.683105],[124.821484,11.626611],[124.854395,11.594775]]],[[[117.355273,8.214648],[117.287012,8.191016],[117.272266,8.253516],[117.280859,8.31499],[117.32959,8.308496],[117.353711,8.289258],[117.355273,8.214648]]],[[[123.697656,9.237305],[123.70625,9.133545],[123.614453,9.10332],[123.540723,9.129736],[123.493457,9.19209],[123.493555,9.215527],[123.535156,9.213574],[123.626074,9.268262],[123.654883,9.27876],[123.697656,9.237305]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Peru","SOV_A3":"PER","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Peru","ADM0_A3":"PER","GEOU_DIF":0,"GEOUNIT":"Peru","GU_A3":"PER","SU_DIF":0,"SUBUNIT":"Peru","SU_A3":"PER","BRK_DIFF":0,"NAME":"Peru","NAME_LONG":"Peru","BRK_A3":"PER","BRK_NAME":"Peru","BRK_GROUP":null,"ABBREV":"Peru","POSTAL":"PE","FORMAL_EN":"Republic of Peru","FORMAL_FR":null,"NAME_CIAWF":"Peru","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Peru","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":11,"POP_EST":32510453,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":226848,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"PE","ISO_A2":"PE","ISO_A2_EH":"PE","ISO_A3":"PER","ISO_A3_EH":"PER","ISO_N3":"604","ISO_N3_EH":"604","UN_A3":"604","WB_A2":"PE","WB_A3":"PER","WOE_ID":23424919,"WOE_ID_EH":23424919,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PER","ADM0_DIFF":null,"ADM0_TLC":"PER","ADM0_A3_US":"PER","ADM0_A3_FR":"PER","ADM0_A3_RU":"PER","ADM0_A3_ES":"PER","ADM0_A3_CN":"PER","ADM0_A3_TW":"PER","ADM0_A3_IN":"PER","ADM0_A3_NP":"PER","ADM0_A3_PK":"PER","ADM0_A3_DE":"PER","ADM0_A3_GB":"PER","ADM0_A3_BR":"PER","ADM0_A3_IL":"PER","ADM0_A3_PS":"PER","ADM0_A3_SA":"PER","ADM0_A3_EG":"PER","ADM0_A3_MA":"PER","ADM0_A3_PT":"PER","ADM0_A3_AR":"PER","ADM0_A3_JP":"PER","ADM0_A3_KO":"PER","ADM0_A3_VN":"PER","ADM0_A3_TR":"PER","ADM0_A3_ID":"PER","ADM0_A3_PL":"PER","ADM0_A3_GR":"PER","ADM0_A3_IT":"PER","ADM0_A3_NL":"PER","ADM0_A3_SE":"PER","ADM0_A3_BD":"PER","ADM0_A3_UA":"PER","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":-72.90016,"LABEL_Y":-12.976679,"NE_ID":1159321163,"WIKIDATAID":"Q419","NAME_AR":"بيرو","NAME_BN":"পেরু","NAME_DE":"Peru","NAME_EN":"Peru","NAME_ES":"Perú","NAME_FA":"پرو","NAME_FR":"Pérou","NAME_EL":"Περού","NAME_HE":"פרו","NAME_HI":"पेरू","NAME_HU":"Peru","NAME_ID":"Peru","NAME_IT":"Perù","NAME_JA":"ペルー","NAME_KO":"페루","NAME_NL":"Peru","NAME_PL":"Peru","NAME_PT":"Peru","NAME_RU":"Перу","NAME_SV":"Peru","NAME_TR":"Peru","NAME_UK":"Перу","NAME_UR":"پیرو","NAME_VI":"Peru","NAME_ZH":"秘鲁","NAME_ZHT":"秘魯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-81.336621,-18.345605,-68.685254,-0.041748],"geometry":{"type":"Polygon","coordinates":[[[-69.965918,-4.235938],[-69.972021,-4.301172],[-70.003955,-4.327246],[-70.05332,-4.333105],[-70.128809,-4.286621],[-70.183984,-4.298145],[-70.23916,-4.301172],[-70.316895,-4.246973],[-70.343652,-4.193652],[-70.404639,-4.150098],[-70.530664,-4.167578],[-70.63457,-4.168652],[-70.721582,-4.158887],[-70.799512,-4.17334],[-70.866016,-4.22959],[-70.915625,-4.295313],[-70.973682,-4.350488],[-71.144238,-4.387207],[-71.23501,-4.388184],[-71.316797,-4.424316],[-71.438281,-4.437598],[-71.521338,-4.469727],[-71.668359,-4.487305],[-71.844727,-4.504395],[-71.943164,-4.55332],[-71.982422,-4.574609],[-72.08252,-4.642285],[-72.256787,-4.748926],[-72.352832,-4.786035],[-72.468994,-4.90127],[-72.60835,-5.00957],[-72.69873,-5.067188],[-72.831934,-5.09375],[-72.887061,-5.122754],[-72.907471,-5.157715],[-72.895801,-5.198242],[-72.918262,-5.302539],[-72.958936,-5.495215],[-72.970215,-5.589648],[-72.979883,-5.634863],[-73.068066,-5.789551],[-73.162891,-5.933398],[-73.209375,-6.028711],[-73.235547,-6.098438],[-73.206494,-6.156445],[-73.167725,-6.260645],[-73.135352,-6.344336],[-73.126318,-6.400879],[-73.137354,-6.46582],[-73.177441,-6.525195],[-73.240332,-6.564063],[-73.325488,-6.574707],[-73.499902,-6.679492],[-73.694531,-6.833789],[-73.758105,-6.905762],[-73.77627,-6.973535],[-73.804639,-7.079883],[-73.793018,-7.135059],[-73.758203,-7.172754],[-73.72334,-7.262793],[-73.72041,-7.309277],[-73.749463,-7.335352],[-73.804639,-7.341211],[-73.854004,-7.349902],[-73.891748,-7.373145],[-73.929443,-7.367285],[-73.964307,-7.378906],[-73.964307,-7.416699],[-73.952686,-7.460254],[-73.958496,-7.506641],[-73.981738,-7.535742],[-74.002051,-7.556055],[-73.981738,-7.585059],[-73.946875,-7.61123],[-73.894629,-7.654785],[-73.82207,-7.738965],[-73.766895,-7.753516],[-73.72041,-7.78252],[-73.7146,-7.829004],[-73.732031,-7.875391],[-73.772705,-7.895703],[-73.775586,-7.936426],[-73.72041,-7.985742],[-73.682666,-8.020605],[-73.644922,-8.072852],[-73.610107,-8.14541],[-73.610107,-8.191895],[-73.572363,-8.249902],[-73.549121,-8.299316],[-73.549121,-8.345801],[-73.488135,-8.392188],[-73.435889,-8.427051],[-73.398145,-8.458984],[-73.3604,-8.479297],[-73.351709,-8.51416],[-73.356738,-8.566992],[-73.302441,-8.654004],[-73.203125,-8.719336],[-73.122559,-8.814063],[-73.070508,-8.882812],[-72.974023,-8.993164],[-72.970361,-9.120117],[-73.089844,-9.265723],[-73.209424,-9.411426],[-73.01377,-9.407422],[-72.814258,-9.410352],[-72.605469,-9.452051],[-72.464746,-9.492188],[-72.379053,-9.510156],[-72.318066,-9.556641],[-72.289014,-9.629199],[-72.26582,-9.688477],[-72.259961,-9.774316],[-72.172852,-9.844043],[-72.179102,-9.910156],[-72.181592,-10.003711],[-72.142969,-10.005176],[-71.887451,-10.005566],[-71.608008,-10.006055],[-71.339404,-9.988574],[-71.237939,-9.966016],[-71.115283,-9.852441],[-71.041748,-9.81875],[-70.970752,-9.765723],[-70.884521,-9.669043],[-70.81626,-9.625293],[-70.758496,-9.57168],[-70.672461,-9.517969],[-70.636914,-9.478223],[-70.60791,-9.463672],[-70.541113,-9.4375],[-70.570166,-9.489844],[-70.592236,-9.543457],[-70.59917,-9.620508],[-70.567236,-9.70459],[-70.593799,-9.76748],[-70.636914,-9.82373],[-70.637598,-9.971777],[-70.638525,-10.181543],[-70.639355,-10.361328],[-70.640332,-10.586035],[-70.641553,-10.84082],[-70.642334,-11.010254],[-70.596533,-10.976855],[-70.533252,-10.946875],[-70.450879,-11.024805],[-70.392285,-11.058594],[-70.341992,-11.066699],[-70.290381,-11.064258],[-70.220068,-11.047656],[-70.066309,-10.982422],[-69.960352,-10.929883],[-69.839795,-10.933398],[-69.674023,-10.954102],[-69.578613,-10.951758],[-69.453613,-11.16875],[-69.362012,-11.327539],[-69.257715,-11.508594],[-69.17373,-11.654297],[-69.046191,-11.875684],[-68.936035,-12.066797],[-68.818701,-12.27041],[-68.685254,-12.501953],[-68.728125,-12.560742],[-68.762891,-12.607715],[-68.759082,-12.687207],[-68.811816,-12.72959],[-68.867676,-12.755176],[-68.93374,-12.82207],[-68.978613,-12.880078],[-68.980518,-12.962598],[-68.972266,-13.382324],[-68.983447,-13.496387],[-69.017529,-13.594434],[-69.052832,-13.643945],[-69.074121,-13.682813],[-69.023047,-13.780273],[-68.974268,-13.975977],[-68.937451,-14.014648],[-68.891699,-14.094336],[-68.870898,-14.169727],[-68.880322,-14.198828],[-68.971777,-14.234375],[-69.004492,-14.265039],[-69.013135,-14.377246],[-69.052783,-14.417578],[-69.119727,-14.470313],[-69.162695,-14.530957],[-69.199268,-14.572559],[-69.234912,-14.59707],[-69.252344,-14.671094],[-69.276025,-14.745898],[-69.359473,-14.795313],[-69.37373,-14.8875],[-69.374707,-14.962988],[-69.330713,-15.038965],[-69.187109,-15.19873],[-69.172461,-15.236621],[-69.254297,-15.33291],[-69.301904,-15.399414],[-69.418506,-15.603418],[-69.420898,-15.640625],[-69.391895,-15.736914],[-69.217578,-16.149121],[-69.187988,-16.182813],[-69.13418,-16.221973],[-69.04624,-16.217676],[-68.913477,-16.261914],[-68.848828,-16.312793],[-68.842773,-16.337891],[-68.857812,-16.354785],[-68.928027,-16.389063],[-69.00625,-16.433691],[-69.03291,-16.475977],[-69.038379,-16.542676],[-69.020703,-16.642188],[-69.054541,-16.674316],[-69.13252,-16.713086],[-69.199805,-16.768457],[-69.267236,-16.860938],[-69.381543,-17.001367],[-69.421094,-17.040039],[-69.43833,-17.088379],[-69.50332,-17.104785],[-69.624854,-17.200195],[-69.645703,-17.248535],[-69.625879,-17.294434],[-69.563818,-17.33291],[-69.521924,-17.388965],[-69.510986,-17.460352],[-69.511084,-17.504883],[-69.510937,-17.506055],[-69.586426,-17.573242],[-69.684766,-17.649805],[-69.806104,-17.664941],[-69.8521,-17.703809],[-69.841504,-17.785156],[-69.802441,-17.9],[-69.802588,-17.990234],[-69.839697,-18.093457],[-69.926367,-18.206055],[-70.059082,-18.283496],[-70.183789,-18.325195],[-70.282275,-18.325391],[-70.37749,-18.333594],[-70.418262,-18.345605],[-70.491602,-18.277734],[-70.81748,-18.052539],[-70.941699,-17.932031],[-71.056592,-17.875684],[-71.336963,-17.68252],[-71.364941,-17.620508],[-71.399414,-17.421973],[-71.435889,-17.366016],[-71.532227,-17.294336],[-71.774463,-17.198828],[-71.868359,-17.151074],[-71.966895,-17.064063],[-72.111279,-17.002539],[-72.268604,-16.876172],[-72.3625,-16.775],[-72.467676,-16.708105],[-72.793945,-16.614551],[-72.957715,-16.520898],[-73.26377,-16.388574],[-73.400049,-16.304297],[-73.727686,-16.20166],[-73.824951,-16.152832],[-74.14707,-15.9125],[-74.3729,-15.833984],[-74.554883,-15.699023],[-75.104248,-15.411914],[-75.190527,-15.320117],[-75.274561,-15.178125],[-75.396582,-15.093555],[-75.533643,-14.899219],[-75.737695,-14.784961],[-75.933887,-14.633594],[-76.006299,-14.495801],[-76.136475,-14.320312],[-76.175146,-14.22666],[-76.289014,-14.133105],[-76.297021,-13.948438],[-76.376465,-13.863086],[-76.319482,-13.821484],[-76.259229,-13.802832],[-76.183936,-13.515234],[-76.223633,-13.371191],[-76.427344,-13.109961],[-76.502148,-12.984375],[-76.555225,-12.823438],[-76.637109,-12.728027],[-76.758008,-12.527148],[-76.832129,-12.34873],[-76.994092,-12.219238],[-77.038135,-12.172754],[-77.062695,-12.106836],[-77.152734,-12.060352],[-77.157617,-11.923438],[-77.220312,-11.663379],[-77.309912,-11.532422],[-77.633203,-11.287793],[-77.638574,-11.193555],[-77.664307,-11.02207],[-77.736084,-10.836719],[-78.095459,-10.260645],[-78.185596,-10.089063],[-78.275586,-9.810352],[-78.356494,-9.652051],[-78.445654,-9.370605],[-78.580127,-9.156641],[-78.6646,-8.971094],[-78.75459,-8.74043],[-78.762256,-8.616992],[-78.925391,-8.40459],[-79.012256,-8.210156],[-79.164404,-8.047168],[-79.312842,-7.923242],[-79.377246,-7.835547],[-79.588867,-7.418945],[-79.617725,-7.295605],[-79.761963,-7.066504],[-79.904687,-6.90166],[-79.994971,-6.768945],[-80.110254,-6.649609],[-80.811621,-6.282227],[-81.058447,-6.129395],[-81.142041,-6.056738],[-81.180518,-5.942383],[-81.164307,-5.875293],[-81.091846,-5.812402],[-80.99165,-5.860938],[-80.930664,-5.84082],[-80.882715,-5.758984],[-80.881934,-5.635059],[-80.943115,-5.475391],[-81.167676,-5.16709],[-81.150732,-5.101855],[-81.108496,-5.027832],[-81.195068,-4.879492],[-81.289404,-4.760742],[-81.336621,-4.669531],[-81.283203,-4.322266],[-81.232031,-4.234277],[-80.891943,-3.881641],[-80.798584,-3.731055],[-80.652734,-3.638184],[-80.503662,-3.496094],[-80.324658,-3.387891],[-80.29834,-3.406445],[-80.273535,-3.424609],[-80.271875,-3.461035],[-80.265234,-3.49248],[-80.24541,-3.522168],[-80.24375,-3.576758],[-80.220605,-3.613184],[-80.218945,-3.654492],[-80.217285,-3.710742],[-80.228857,-3.738867],[-80.217578,-3.787695],[-80.179248,-3.877734],[-80.194141,-3.905859],[-80.230518,-3.924023],[-80.266895,-3.948828],[-80.303271,-4.005078],[-80.357861,-4.003418],[-80.437207,-3.978613],[-80.490137,-4.010059],[-80.51001,-4.069531],[-80.493457,-4.119141],[-80.488477,-4.165527],[-80.45376,-4.205176],[-80.352881,-4.208496],[-80.443848,-4.33584],[-80.488477,-4.393652],[-80.478564,-4.430078],[-80.42417,-4.461426],[-80.383496,-4.463672],[-80.293359,-4.416797],[-80.232178,-4.349023],[-80.197461,-4.311035],[-80.139551,-4.296094],[-80.063525,-4.327539],[-79.962891,-4.390332],[-79.845117,-4.445898],[-79.797266,-4.476367],[-79.710986,-4.467578],[-79.638525,-4.454883],[-79.577686,-4.500586],[-79.516162,-4.53916],[-79.501904,-4.670605],[-79.455762,-4.766211],[-79.399414,-4.840039],[-79.330957,-4.927832],[-79.268115,-4.957617],[-79.18667,-4.958203],[-79.07627,-4.990625],[-79.033301,-4.969141],[-78.995264,-4.908008],[-78.975391,-4.873242],[-78.919189,-4.858398],[-78.914209,-4.818652],[-78.925781,-4.770703],[-78.907617,-4.714453],[-78.861523,-4.665039],[-78.743066,-4.592676],[-78.686035,-4.562402],[-78.674463,-4.517676],[-78.65293,-4.458203],[-78.66123,-4.425098],[-78.685156,-4.383984],[-78.679395,-4.325879],[-78.647998,-4.248145],[-78.603369,-4.157324],[-78.565137,-4.041602],[-78.550439,-3.986914],[-78.509082,-3.952148],[-78.493457,-3.902051],[-78.471045,-3.843066],[-78.419775,-3.776855],[-78.421436,-3.705762],[-78.399951,-3.674316],[-78.398047,-3.594824],[-78.347266,-3.43125],[-78.345361,-3.397363],[-78.323047,-3.388281],[-78.28418,-3.399023],[-78.250732,-3.436133],[-78.240381,-3.472559],[-78.226318,-3.48916],[-78.194873,-3.48584],[-78.158496,-3.465137],[-78.160986,-3.432129],[-78.187451,-3.399805],[-78.194629,-3.380469],[-78.183301,-3.350195],[-78.128223,-3.283887],[-78.06792,-3.206836],[-77.938477,-3.046973],[-77.860596,-2.981641],[-77.658984,-2.912402],[-77.506494,-2.859961],[-77.360059,-2.809668],[-77.161475,-2.737695],[-76.880762,-2.635938],[-76.679102,-2.562598],[-76.499365,-2.432324],[-76.360156,-2.331348],[-76.240918,-2.243945],[-76.089795,-2.133105],[-75.885449,-1.893457],[-75.744531,-1.728125],[-75.64165,-1.607324],[-75.570557,-1.53125],[-75.513867,-1.316309],[-75.44917,-1.071191],[-75.42041,-0.962207],[-75.408057,-0.924316],[-75.380127,-0.940234],[-75.348193,-0.966797],[-75.30918,-0.968066],[-75.272412,-0.966797],[-75.249609,-0.951855],[-75.283594,-0.707129],[-75.278711,-0.653906],[-75.259375,-0.590137],[-75.263232,-0.555371],[-75.325244,-0.506543],[-75.424707,-0.408887],[-75.465967,-0.321777],[-75.491064,-0.24834],[-75.560596,-0.200098],[-75.632031,-0.157617],[-75.62627,-0.122852],[-75.58374,-0.122852],[-75.475977,-0.157129],[-75.398389,-0.145996],[-75.340479,-0.142188],[-75.284473,-0.106543],[-75.224609,-0.041748],[-75.184082,-0.041748],[-75.138379,-0.050488],[-75.054688,-0.116699],[-75.00498,-0.155859],[-74.945312,-0.188184],[-74.888818,-0.199414],[-74.8375,-0.20332],[-74.801758,-0.200098],[-74.780469,-0.244531],[-74.755371,-0.298633],[-74.69165,-0.335254],[-74.616357,-0.37002],[-74.555078,-0.429883],[-74.513867,-0.470117],[-74.465186,-0.517676],[-74.417871,-0.580664],[-74.374902,-0.691406],[-74.353125,-0.766602],[-74.328613,-0.808398],[-74.334424,-0.850879],[-74.283887,-0.927832],[-74.246387,-0.970605],[-74.180762,-0.997754],[-74.054395,-1.028613],[-73.986816,-1.098145],[-73.926953,-1.125195],[-73.863184,-1.19668],[-73.807178,-1.217969],[-73.735742,-1.21416],[-73.664307,-1.248828],[-73.610254,-1.316406],[-73.575488,-1.401367],[-73.521387,-1.449707],[-73.494336,-1.536621],[-73.525244,-1.638867],[-73.496289,-1.693066],[-73.440283,-1.737402],[-73.349512,-1.783887],[-73.266455,-1.772266],[-73.223975,-1.787695],[-73.196973,-1.830273],[-73.181494,-1.880371],[-73.145215,-2.00332],[-73.126514,-2.081055],[-73.160205,-2.156348],[-73.172656,-2.208398],[-73.154492,-2.278223],[-73.068164,-2.312012],[-72.989648,-2.339746],[-72.941113,-2.394043],[-72.887158,-2.408496],[-72.81123,-2.405469],[-72.71416,-2.392188],[-72.660156,-2.361035],[-72.625342,-2.35166],[-72.586719,-2.365137],[-72.500684,-2.39502],[-72.395605,-2.428906],[-72.300732,-2.409277],[-72.218457,-2.400488],[-72.136816,-2.380664],[-72.053809,-2.324609],[-71.984277,-2.326563],[-71.932471,-2.288672],[-71.867285,-2.227734],[-71.802734,-2.166309],[-71.752539,-2.152734],[-71.671484,-2.182129],[-71.559473,-2.224219],[-71.496094,-2.279199],[-71.447461,-2.29375],[-71.396973,-2.334082],[-71.300098,-2.334863],[-71.196387,-2.313086],[-71.113379,-2.24541],[-71.027295,-2.225781],[-70.968555,-2.206836],[-70.914551,-2.218555],[-70.705371,-2.341992],[-70.647998,-2.405762],[-70.575879,-2.418262],[-70.516797,-2.453125],[-70.418213,-2.490723],[-70.36416,-2.529297],[-70.294629,-2.552539],[-70.244434,-2.606543],[-70.164746,-2.639844],[-70.09585,-2.658203],[-70.064746,-2.70166],[-70.064453,-2.730762],[-70.074023,-2.750195],[-70.14707,-2.864063],[-70.290137,-3.087305],[-70.418994,-3.288281],[-70.62168,-3.60459],[-70.735107,-3.781543],[-70.706201,-3.788965],[-70.529687,-3.866406],[-70.48584,-3.869336],[-70.421094,-3.849609],[-70.379199,-3.81875],[-70.339502,-3.814355],[-70.298437,-3.844238],[-70.240283,-3.882715],[-70.198389,-3.995117],[-70.167529,-4.050195],[-70.094775,-4.092188],[-70.017187,-4.162012],[-69.965918,-4.235938]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Paraguay","SOV_A3":"PRY","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Paraguay","ADM0_A3":"PRY","GEOU_DIF":0,"GEOUNIT":"Paraguay","GU_A3":"PRY","SU_DIF":0,"SUBUNIT":"Paraguay","SU_A3":"PRY","BRK_DIFF":0,"NAME":"Paraguay","NAME_LONG":"Paraguay","BRK_A3":"PRY","BRK_NAME":"Paraguay","BRK_GROUP":null,"ABBREV":"Para.","POSTAL":"PY","FORMAL_EN":"Republic of Paraguay","FORMAL_FR":null,"NAME_CIAWF":"Paraguay","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Paraguay","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":3,"MAPCOLOR9":6,"MAPCOLOR13":2,"POP_EST":7044636,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":38145,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"4. Lower middle income","FIPS_10":"PA","ISO_A2":"PY","ISO_A2_EH":"PY","ISO_A3":"PRY","ISO_A3_EH":"PRY","ISO_N3":"600","ISO_N3_EH":"600","UN_A3":"600","WB_A2":"PY","WB_A3":"PRY","WOE_ID":23424917,"WOE_ID_EH":23424917,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PRY","ADM0_DIFF":null,"ADM0_TLC":"PRY","ADM0_A3_US":"PRY","ADM0_A3_FR":"PRY","ADM0_A3_RU":"PRY","ADM0_A3_ES":"PRY","ADM0_A3_CN":"PRY","ADM0_A3_TW":"PRY","ADM0_A3_IN":"PRY","ADM0_A3_NP":"PRY","ADM0_A3_PK":"PRY","ADM0_A3_DE":"PRY","ADM0_A3_GB":"PRY","ADM0_A3_BR":"PRY","ADM0_A3_IL":"PRY","ADM0_A3_PS":"PRY","ADM0_A3_SA":"PRY","ADM0_A3_EG":"PRY","ADM0_A3_MA":"PRY","ADM0_A3_PT":"PRY","ADM0_A3_AR":"PRY","ADM0_A3_JP":"PRY","ADM0_A3_KO":"PRY","ADM0_A3_VN":"PRY","ADM0_A3_TR":"PRY","ADM0_A3_ID":"PRY","ADM0_A3_PL":"PRY","ADM0_A3_GR":"PRY","ADM0_A3_IT":"PRY","ADM0_A3_NL":"PRY","ADM0_A3_SE":"PRY","ADM0_A3_BD":"PRY","ADM0_A3_UA":"PRY","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-60.146394,"LABEL_Y":-21.674509,"NE_ID":1159321195,"WIKIDATAID":"Q733","NAME_AR":"باراغواي","NAME_BN":"প্যারাগুয়ে","NAME_DE":"Paraguay","NAME_EN":"Paraguay","NAME_ES":"Paraguay","NAME_FA":"پاراگوئه","NAME_FR":"Paraguay","NAME_EL":"Παραγουάη","NAME_HE":"פרגוואי","NAME_HI":"पैराग्वे","NAME_HU":"Paraguay","NAME_ID":"Paraguay","NAME_IT":"Paraguay","NAME_JA":"パラグアイ","NAME_KO":"파라과이","NAME_NL":"Paraguay","NAME_PL":"Paragwaj","NAME_PT":"Paraguai","NAME_RU":"Парагвай","NAME_SV":"Paraguay","NAME_TR":"Paraguay","NAME_UK":"Парагвай","NAME_UR":"پیراگوئے","NAME_VI":"Paraguay","NAME_ZH":"巴拉圭","NAME_ZHT":"巴拉圭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-62.650977,-27.553809,-54.241797,-19.28623],"geometry":{"type":"Polygon","coordinates":[[[-58.159766,-20.164648],[-58.137793,-20.237305],[-58.124609,-20.293457],[-58.091504,-20.333203],[-58.058447,-20.386133],[-58.025391,-20.41582],[-58.002246,-20.46543],[-58.008838,-20.52168],[-57.995605,-20.594434],[-57.979053,-20.657324],[-57.9625,-20.673828],[-57.915137,-20.690332],[-57.891406,-20.747461],[-57.908496,-20.776367],[-57.901904,-20.809375],[-57.884814,-20.841699],[-57.900488,-20.873047],[-57.892236,-20.89707],[-57.86001,-20.918555],[-57.830225,-20.997949],[-57.826953,-21.133594],[-57.86001,-21.20625],[-57.886475,-21.26582],[-57.893066,-21.302246],[-57.873242,-21.355078],[-57.906299,-21.417969],[-57.945996,-21.494043],[-57.936084,-21.546973],[-57.929443,-21.596582],[-57.926172,-21.649512],[-57.916211,-21.699121],[-57.929443,-21.751953],[-57.942676,-21.79834],[-57.949316,-21.851172],[-57.932764,-21.910742],[-57.9625,-21.966992],[-57.979053,-22.006641],[-57.985693,-22.046387],[-57.955908,-22.10918],[-57.879834,-22.135645],[-57.820312,-22.142285],[-57.764062,-22.10918],[-57.721094,-22.099219],[-57.641699,-22.129004],[-57.568945,-22.181934],[-57.476367,-22.188574],[-57.393652,-22.198438],[-57.330859,-22.215039],[-57.238232,-22.195215],[-57.142334,-22.215039],[-57.029883,-22.244824],[-56.937256,-22.271289],[-56.844678,-22.264648],[-56.775195,-22.261328],[-56.702441,-22.231543],[-56.633008,-22.234863],[-56.580078,-22.181934],[-56.550293,-22.135645],[-56.523828,-22.102539],[-56.447803,-22.076172],[-56.394873,-22.092676],[-56.351855,-22.178613],[-56.275781,-22.228223],[-56.246045,-22.264648],[-56.189844,-22.281152],[-56.06748,-22.284473],[-55.991406,-22.281152],[-55.905371,-22.307617],[-55.84917,-22.307617],[-55.799561,-22.353906],[-55.753271,-22.410156],[-55.746631,-22.512695],[-55.703662,-22.59209],[-55.647412,-22.621875],[-55.617676,-22.671484],[-55.627588,-22.740918],[-55.654053,-22.810352],[-55.650732,-22.886426],[-55.620996,-22.955859],[-55.620996,-23.025293],[-55.601123,-23.094727],[-55.561426,-23.154297],[-55.548193,-23.250195],[-55.554834,-23.319629],[-55.528369,-23.359375],[-55.518457,-23.415625],[-55.534961,-23.461914],[-55.541602,-23.524707],[-55.538281,-23.580957],[-55.518457,-23.627246],[-55.458887,-23.686719],[-55.442383,-23.792578],[-55.442383,-23.865332],[-55.415918,-23.951367],[-55.366309,-23.991016],[-55.286914,-24.004297],[-55.194336,-24.01748],[-55.081885,-23.997656],[-54.982666,-23.974512],[-54.926465,-23.951367],[-54.817285,-23.888477],[-54.721387,-23.852148],[-54.671777,-23.829004],[-54.625488,-23.8125],[-54.52959,-23.852148],[-54.440234,-23.901758],[-54.370801,-23.971191],[-54.241797,-24.047266],[-54.266895,-24.06582],[-54.318262,-24.128125],[-54.317285,-24.20127],[-54.281006,-24.306055],[-54.312939,-24.528125],[-54.412988,-24.86748],[-54.454102,-25.065234],[-54.43623,-25.121289],[-54.473145,-25.220215],[-54.610547,-25.432715],[-54.615869,-25.576074],[-54.631934,-26.005762],[-54.677734,-26.308789],[-54.755078,-26.53291],[-54.825488,-26.652246],[-54.888916,-26.666797],[-54.934473,-26.702539],[-54.962158,-26.759375],[-55.013623,-26.806641],[-55.088867,-26.844531],[-55.129639,-26.886035],[-55.135937,-26.931152],[-55.208008,-26.960156],[-55.345801,-26.973145],[-55.42666,-27.009277],[-55.450635,-27.068359],[-55.496729,-27.115332],[-55.564893,-27.15],[-55.597266,-27.207617],[-55.593799,-27.288086],[-55.63291,-27.357129],[-55.714648,-27.414844],[-55.78999,-27.416406],[-55.859033,-27.361914],[-55.951465,-27.325684],[-56.067334,-27.307715],[-56.164062,-27.321484],[-56.241699,-27.366797],[-56.310547,-27.43877],[-56.370508,-27.537402],[-56.437158,-27.553809],[-56.510547,-27.487891],[-56.603369,-27.467871],[-56.715723,-27.49375],[-56.805176,-27.484668],[-56.871729,-27.440625],[-56.973975,-27.435742],[-57.111816,-27.470117],[-57.39126,-27.430469],[-57.812207,-27.316602],[-58.168262,-27.273438],[-58.604834,-27.314355],[-58.641748,-27.196094],[-58.618604,-27.132129],[-58.547705,-27.083984],[-58.503223,-27.029492],[-58.485254,-26.968457],[-58.436328,-26.921973],[-58.356445,-26.890039],[-58.322559,-26.857617],[-58.334668,-26.824902],[-58.317676,-26.795898],[-58.27168,-26.770703],[-58.245557,-26.731055],[-58.239355,-26.676855],[-58.22207,-26.65],[-58.191309,-26.62998],[-58.187939,-26.592578],[-58.205176,-26.476562],[-58.203027,-26.381445],[-58.181494,-26.307422],[-58.154687,-26.262598],[-58.135645,-26.251465],[-58.118066,-26.224902],[-58.111133,-26.180176],[-58.082422,-26.138574],[-57.943115,-26.05293],[-57.890625,-26.006543],[-57.88623,-25.964258],[-57.865234,-25.906934],[-57.782471,-25.783691],[-57.75708,-25.725977],[-57.754785,-25.69707],[-57.725488,-25.667188],[-57.62583,-25.59873],[-57.57168,-25.53418],[-57.563135,-25.47373],[-57.587158,-25.405078],[-57.643896,-25.328418],[-57.82168,-25.136426],[-57.959814,-25.049219],[-58.136475,-24.977148],[-58.252783,-24.953809],[-58.308691,-24.979102],[-58.365381,-24.959277],[-58.422803,-24.894141],[-58.519629,-24.842871],[-58.724023,-24.786621],[-59.187256,-24.562305],[-59.372949,-24.453906],[-59.4354,-24.387012],[-59.608594,-24.266797],[-59.89248,-24.093555],[-60.110303,-24.00918],[-60.262207,-24.013965],[-60.505371,-23.963574],[-60.839844,-23.858105],[-61.03291,-23.755664],[-61.084717,-23.656445],[-61.208398,-23.557031],[-61.403955,-23.45752],[-61.505518,-23.391992],[-61.513037,-23.360449],[-61.570996,-23.319434],[-61.679492,-23.26875],[-61.798535,-23.182031],[-61.928027,-23.059277],[-62.066602,-22.869434],[-62.21416,-22.612402],[-62.37251,-22.43916],[-62.541553,-22.349609],[-62.625977,-22.29043],[-62.625684,-22.261523],[-62.650977,-22.233691],[-62.628516,-22.183984],[-62.566943,-21.988672],[-62.477832,-21.705273],[-62.385449,-21.411719],[-62.27666,-21.066016],[-62.276514,-20.820801],[-62.276318,-20.5625],[-62.121631,-20.349902],[-62.011816,-20.199023],[-61.916943,-20.055371],[-61.820898,-19.809473],[-61.756836,-19.645313],[-61.511816,-19.606445],[-61.095996,-19.520996],[-60.88877,-19.478516],[-60.451611,-19.38877],[-60.007373,-19.297559],[-59.540869,-19.291797],[-59.090527,-19.28623],[-58.741113,-19.490234],[-58.474219,-19.646094],[-58.180176,-19.817871],[-58.160059,-19.854883],[-58.139941,-19.998828],[-58.159766,-20.164648]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Papua New Guinea","SOV_A3":"PNG","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Papua New Guinea","ADM0_A3":"PNG","GEOU_DIF":0,"GEOUNIT":"Papua New Guinea","GU_A3":"PNG","SU_DIF":1,"SUBUNIT":"Papua New Guinea","SU_A3":"PN1","BRK_DIFF":0,"NAME":"Papua New Guinea","NAME_LONG":"Papua New Guinea","BRK_A3":"PN1","BRK_NAME":"Papua New Guinea","BRK_GROUP":null,"ABBREV":"P.N.G.","POSTAL":"PG","FORMAL_EN":"Independent State of Papua New Guinea","FORMAL_FR":null,"NAME_CIAWF":"Papua New Guinea","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Papua New Guinea","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":2,"MAPCOLOR9":3,"MAPCOLOR13":1,"POP_EST":8776109,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":24829,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"PP","ISO_A2":"PG","ISO_A2_EH":"PG","ISO_A3":"PNG","ISO_A3_EH":"PNG","ISO_N3":"598","ISO_N3_EH":"598","UN_A3":"598","WB_A2":"PG","WB_A3":"PNG","WOE_ID":23424926,"WOE_ID_EH":23424926,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PN1","ADM0_DIFF":null,"ADM0_TLC":"PN1","ADM0_A3_US":"PNG","ADM0_A3_FR":"PNG","ADM0_A3_RU":"PNG","ADM0_A3_ES":"PNG","ADM0_A3_CN":"PNG","ADM0_A3_TW":"PNG","ADM0_A3_IN":"PNG","ADM0_A3_NP":"PNG","ADM0_A3_PK":"PNG","ADM0_A3_DE":"PNG","ADM0_A3_GB":"PNG","ADM0_A3_BR":"PNG","ADM0_A3_IL":"PNG","ADM0_A3_PS":"PNG","ADM0_A3_SA":"PNG","ADM0_A3_EG":"PNG","ADM0_A3_MA":"PNG","ADM0_A3_PT":"PNG","ADM0_A3_AR":"PNG","ADM0_A3_JP":"PNG","ADM0_A3_KO":"PNG","ADM0_A3_VN":"PNG","ADM0_A3_TR":"PNG","ADM0_A3_ID":"PNG","ADM0_A3_PL":"PNG","ADM0_A3_GR":"PNG","ADM0_A3_IT":"PNG","ADM0_A3_NL":"PNG","ADM0_A3_SE":"PNG","ADM0_A3_BD":"PNG","ADM0_A3_UA":"PNG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Melanesia","REGION_WB":"East Asia & Pacific","NAME_LEN":16,"LONG_LEN":16,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":7.5,"LABEL_X":143.910216,"LABEL_Y":-5.695285,"NE_ID":1159321173,"WIKIDATAID":"Q691","NAME_AR":"بابوا غينيا الجديدة","NAME_BN":"পাপুয়া নিউগিনি","NAME_DE":"Papua-Neuguinea","NAME_EN":"Papua New Guinea","NAME_ES":"Papúa Nueva Guinea","NAME_FA":"پاپوآ گینه نو","NAME_FR":"Papouasie-Nouvelle-Guinée","NAME_EL":"Παπούα Νέα Γουινέα","NAME_HE":"פפואה גינאה החדשה","NAME_HI":"पापुआ न्यू गिनी","NAME_HU":"Pápua Új-Guinea","NAME_ID":"Papua Nugini","NAME_IT":"Papua Nuova Guinea","NAME_JA":"パプアニューギニア","NAME_KO":"파푸아뉴기니","NAME_NL":"Papoea-Nieuw-Guinea","NAME_PL":"Papua-Nowa Gwinea","NAME_PT":"Papua-Nova Guiné","NAME_RU":"Папуа — Новая Гвинея","NAME_SV":"Papua Nya Guinea","NAME_TR":"Papua Yeni Gine","NAME_UK":"Папуа Нова Гвінея","NAME_UR":"پاپوا نیو گنی","NAME_VI":"Papua New Guinea","NAME_ZH":"巴布亚新几内亚","NAME_ZHT":"巴布亞紐幾內亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[140.862305,-11.630566,155.957617,-1.353223],"geometry":{"type":"MultiPolygon","coordinates":[[[[152.96582,-4.756348],[152.891699,-4.832422],[152.845605,-4.761523],[152.786523,-4.699414],[152.739941,-4.63584],[152.680664,-4.498438],[152.677734,-4.429199],[152.693359,-4.355957],[152.696777,-4.282031],[152.668164,-4.131836],[152.598438,-3.994824],[152.355762,-3.668164],[152.279395,-3.582422],[152.192188,-3.505859],[152.136328,-3.487109],[152.023242,-3.46875],[151.972949,-3.453418],[151.879785,-3.400098],[151.793164,-3.337891],[151.578516,-3.153516],[151.465039,-3.101367],[151.405078,-3.036914],[151.066797,-2.829004],[150.968066,-2.779883],[150.847852,-2.779785],[150.746094,-2.738867],[150.826465,-2.712891],[150.842969,-2.643555],[150.825391,-2.572949],[150.995313,-2.688281],[151.174609,-2.789062],[151.226465,-2.870313],[151.314746,-2.875293],[151.475391,-2.94248],[151.585742,-3.003027],[151.689844,-3.072852],[151.807129,-3.172852],[152.03291,-3.251367],[152.065039,-3.279883],[152.179395,-3.410352],[152.329492,-3.520996],[152.380469,-3.581934],[153.016797,-4.105664],[153.124219,-4.252344],[153.13252,-4.352441],[153.111523,-4.391699],[153.044336,-4.476367],[153.045605,-4.576367],[153.023242,-4.666309],[152.96582,-4.756348]]],[[[151.915625,-4.296777],[151.967578,-4.316992],[152.117188,-4.212207],[152.197266,-4.285156],[152.299414,-4.320703],[152.405664,-4.340723],[152.363574,-4.49082],[152.376074,-4.560254],[152.403516,-4.629297],[152.4,-4.73125],[152.351172,-4.822168],[152.257617,-4.954688],[152.215723,-4.979199],[152.166602,-4.993164],[152.013281,-5.003809],[151.983691,-5.074414],[151.993945,-5.149023],[152.076855,-5.24707],[152.142969,-5.357031],[152.077051,-5.458301],[151.968457,-5.528809],[151.86543,-5.564844],[151.694922,-5.543555],[151.515137,-5.552344],[151.481445,-5.590918],[151.480469,-5.65459],[151.455176,-5.703125],[151.422461,-5.747363],[151.33125,-5.839063],[151.229297,-5.919922],[151.090039,-5.99668],[151.043164,-6.015039],[150.919922,-6.027246],[150.808984,-6.071387],[150.75957,-6.114453],[150.705762,-6.149414],[150.588086,-6.187793],[150.473535,-6.263379],[150.42832,-6.276172],[150.19082,-6.289355],[149.850977,-6.292969],[149.750293,-6.300879],[149.652539,-6.29043],[149.598438,-6.260938],[149.483008,-6.124805],[149.382324,-6.078125],[149.272656,-6.079492],[149.126563,-6.127637],[149.099023,-6.116992],[148.80752,-5.916406],[148.719141,-5.867383],[148.624805,-5.830762],[148.509766,-5.805371],[148.401172,-5.765039],[148.337207,-5.669434],[148.344727,-5.544922],[148.432031,-5.471777],[148.564941,-5.50791],[148.61582,-5.507422],[148.66582,-5.486621],[148.724316,-5.493262],[148.783496,-5.511621],[148.999219,-5.48457],[149.124023,-5.522656],[149.245313,-5.573047],[149.358887,-5.583984],[149.475391,-5.573242],[149.631738,-5.516016],[149.681055,-5.523535],[149.831445,-5.524121],[149.962793,-5.447754],[150.011914,-5.139551],[150.045313,-5.034668],[150.090039,-5.011816],[150.122266,-5.018164],[150.170313,-5.070605],[150.108691,-5.136035],[150.081543,-5.186426],[150.072461,-5.30957],[150.10625,-5.429004],[150.183105,-5.523633],[150.29873,-5.535645],[150.404395,-5.473145],[150.519434,-5.460254],[150.625781,-5.520898],[150.734473,-5.510449],[150.784375,-5.470898],[150.842578,-5.453711],[150.900293,-5.447168],[150.95293,-5.42373],[151.022266,-5.320703],[151.068848,-5.204492],[151.137793,-5.112891],[151.326563,-4.960352],[151.380957,-4.941309],[151.439844,-4.930957],[151.572559,-4.9375],[151.671191,-4.883301],[151.678906,-4.761035],[151.664648,-4.637012],[151.551953,-4.345508],[151.544238,-4.299219],[151.560547,-4.247363],[151.593066,-4.200781],[151.703711,-4.2],[151.819336,-4.216992],[151.864746,-4.26084],[151.915625,-4.296777]]],[[[140.976172,-9.11875],[140.975977,-9.105566],[140.975977,-8.902246],[140.975879,-8.698926],[140.975781,-8.495703],[140.975684,-8.292383],[140.975586,-8.089063],[140.975586,-7.885742],[140.975488,-7.68252],[140.975391,-7.479199],[140.975293,-7.275879],[140.975195,-7.072559],[140.975195,-6.905371],[140.919531,-6.840039],[140.862305,-6.740039],[140.874609,-6.611523],[140.944043,-6.452246],[140.975,-6.346094],[140.975,-6.259375],[140.974902,-6.056152],[140.974805,-5.852832],[140.974707,-5.649512],[140.974609,-5.446191],[140.974609,-5.242969],[140.974512,-5.039648],[140.974414,-4.836328],[140.974316,-4.633008],[140.974219,-4.429785],[140.974219,-4.226465],[140.974023,-4.023145],[140.974023,-3.819824],[140.973926,-3.616602],[140.973828,-3.413281],[140.97373,-3.209961],[140.973633,-3.006641],[140.973535,-2.803418],[140.973438,-2.681055],[140.973438,-2.613574],[140.973438,-2.609766],[141.00332,-2.610156],[141.104785,-2.611328],[141.185645,-2.627832],[141.686816,-2.84502],[141.836523,-2.932129],[141.8875,-2.952539],[141.937793,-2.95332],[141.985742,-2.963574],[142.211523,-3.083496],[142.549023,-3.20459],[142.905176,-3.320703],[143.015625,-3.344922],[143.12998,-3.355078],[143.37832,-3.395313],[143.508984,-3.431152],[143.700586,-3.57334],[143.797168,-3.617285],[143.887695,-3.697461],[144.01582,-3.783594],[144.066406,-3.805176],[144.121973,-3.815234],[144.247949,-3.818262],[144.374414,-3.802734],[144.426563,-3.809668],[144.477734,-3.825293],[144.524512,-3.855273],[144.548242,-3.913086],[144.62666,-3.993066],[144.737891,-4.029102],[144.843457,-4.101465],[144.938477,-4.188184],[145.008398,-4.275488],[145.087793,-4.349121],[145.208008,-4.380273],[145.33457,-4.385254],[145.766992,-4.823047],[145.788086,-4.890625],[145.792871,-5.17793],[145.745215,-5.402441],[145.852832,-5.471289],[145.999414,-5.49707],[146.205371,-5.545117],[146.403418,-5.616602],[147.034277,-5.919238],[147.120898,-5.94502],[147.248242,-5.954785],[147.37666,-5.950781],[147.422754,-5.966211],[147.518555,-6.021094],[147.566699,-6.056934],[147.653027,-6.154785],[147.730078,-6.261133],[147.762891,-6.291504],[147.802051,-6.315234],[147.824512,-6.373047],[147.854492,-6.551172],[147.845508,-6.662402],[147.810449,-6.703613],[147.70957,-6.723633],[147.355762,-6.742383],[147.119141,-6.72168],[146.953613,-6.834082],[146.949219,-6.883105],[146.960742,-6.928809],[147.104883,-7.166992],[147.190039,-7.378125],[147.260156,-7.464063],[147.365332,-7.533789],[147.458984,-7.616211],[147.545117,-7.710938],[147.724316,-7.87627],[147.821875,-7.9375],[147.936133,-7.975391],[148.126758,-8.103613],[148.151953,-8.160254],[148.206445,-8.338672],[148.22998,-8.459668],[148.233594,-8.50957],[148.246875,-8.554297],[148.414453,-8.663965],[148.451172,-8.694531],[148.525879,-8.938574],[148.583105,-9.051758],[148.679492,-9.091992],[148.791797,-9.089453],[149.097461,-9.016895],[149.141699,-9.014551],[149.19834,-9.03125],[149.247656,-9.070996],[149.264063,-9.180762],[149.216211,-9.295898],[149.203027,-9.406836],[149.263184,-9.497852],[149.41875,-9.568848],[149.475781,-9.588281],[149.755762,-9.610938],[149.865625,-9.630078],[149.973535,-9.660742],[150.011035,-9.688184],[149.984668,-9.737012],[149.928223,-9.76084],[149.864355,-9.770605],[149.76123,-9.805859],[149.763086,-9.868652],[149.821289,-9.93418],[149.874414,-10.012988],[149.919141,-10.041602],[149.967578,-10.060742],[150.088574,-10.088086],[150.20625,-10.125586],[150.283887,-10.162891],[150.364063,-10.189648],[150.538867,-10.206738],[150.666992,-10.257129],[150.849512,-10.236035],[150.691309,-10.317871],[150.636816,-10.337988],[150.446094,-10.307324],[150.410254,-10.339258],[150.488867,-10.425781],[150.605469,-10.484082],[150.647168,-10.517969],[150.617969,-10.557617],[150.482422,-10.636914],[150.425781,-10.648535],[150.319922,-10.654883],[150.142383,-10.620703],[150.016797,-10.577148],[149.981543,-10.517676],[149.948047,-10.482617],[149.834766,-10.398828],[149.754102,-10.353027],[149.651367,-10.3375],[149.544336,-10.338477],[149.352637,-10.289746],[148.936816,-10.255176],[148.837695,-10.233984],[148.712891,-10.166895],[148.654199,-10.157324],[148.591211,-10.178418],[148.430566,-10.191406],[148.383398,-10.185449],[148.26875,-10.128223],[148.150488,-10.107324],[148.10127,-10.124512],[148.051367,-10.12832],[147.890137,-10.087402],[147.768652,-10.070117],[147.668848,-10.013086],[147.614355,-9.959766],[147.553125,-9.912402],[147.496484,-9.79043],[147.408301,-9.674707],[147.298926,-9.57959],[147.064453,-9.426074],[147.017188,-9.387891],[146.925391,-9.247168],[146.930371,-9.153906],[146.96377,-9.05957],[146.913281,-9.091699],[146.85625,-9.087695],[146.696582,-9.025391],[146.630859,-8.951172],[146.524121,-8.749707],[146.455859,-8.643555],[146.296484,-8.455566],[146.250586,-8.343945],[146.184082,-8.246387],[146.142969,-8.210254],[146.108789,-8.168457],[146.078516,-8.11416],[146.033203,-8.076367],[145.810938,-7.992773],[145.771777,-7.966406],[145.728711,-7.952441],[145.563379,-7.943848],[145.467773,-7.930078],[145.2875,-7.861621],[145.194336,-7.841113],[145.082324,-7.828125],[144.973828,-7.802148],[144.920898,-7.77666],[144.885352,-7.733594],[144.864258,-7.631543],[144.773438,-7.64248],[144.684375,-7.624805],[144.597949,-7.588965],[144.509863,-7.567383],[144.449707,-7.598145],[144.43125,-7.679395],[144.403418,-7.683594],[144.351855,-7.666992],[144.326172,-7.676758],[144.270215,-7.714258],[144.225391,-7.764941],[144.142871,-7.757227],[143.973633,-7.705957],[143.898242,-7.673828],[143.83418,-7.615918],[143.779102,-7.550098],[143.72334,-7.498242],[143.654883,-7.460352],[143.74209,-7.549805],[143.942285,-7.944238],[143.892188,-7.951855],[143.840625,-7.941895],[143.887988,-8.017676],[143.833398,-8.029102],[143.779297,-8.028223],[143.665039,-7.995508],[143.551563,-7.984668],[143.518164,-8.000684],[143.542188,-8.029102],[143.582031,-8.112695],[143.61377,-8.200391],[143.45,-8.239844],[143.282031,-8.263867],[143.094922,-8.31123],[142.905469,-8.314453],[142.808301,-8.2875],[142.708594,-8.272266],[142.615039,-8.2875],[142.524121,-8.32168],[142.447559,-8.316211],[142.399219,-8.254688],[142.376465,-8.208008],[142.347461,-8.16748],[142.275879,-8.173926],[142.206836,-8.195801],[142.325098,-8.19834],[142.360547,-8.25],[142.391016,-8.312695],[142.474805,-8.369434],[142.575977,-8.335645],[142.797949,-8.34502],[143.013672,-8.443848],[143.064844,-8.455176],[143.111816,-8.474512],[143.222949,-8.572168],[143.306738,-8.660938],[143.377246,-8.762207],[143.392188,-8.801855],[143.3875,-8.908203],[143.366211,-8.961035],[143.226855,-9.035938],[143.078223,-9.09248],[142.85918,-9.202637],[142.647168,-9.327832],[142.535742,-9.30332],[142.435254,-9.237012],[142.396289,-9.219043],[142.292773,-9.18291],[142.22959,-9.169922],[141.978906,-9.198145],[141.727344,-9.212598],[141.621582,-9.211328],[141.51875,-9.190137],[141.405664,-9.150684],[141.293652,-9.168164],[141.216992,-9.214453],[141.133203,-9.221289],[140.976172,-9.11875]]],[[[148.025781,-5.826367],[147.985449,-5.833984],[147.967969,-5.788574],[147.874512,-5.749219],[147.781055,-5.627246],[147.78252,-5.522461],[147.794629,-5.492383],[147.846484,-5.49082],[148.054785,-5.611523],[148.076074,-5.650195],[148.060449,-5.764648],[148.025781,-5.826367]]],[[[146.019336,-4.726172],[145.952344,-4.755762],[145.904004,-4.733008],[145.883594,-4.66748],[145.900195,-4.604199],[145.958789,-4.554297],[145.995801,-4.539258],[146.037402,-4.573145],[146.053418,-4.640137],[146.019336,-4.726172]]],[[[152.670605,-3.133398],[152.646191,-3.221191],[152.585059,-3.169824],[152.543262,-3.095605],[152.569922,-3.0625],[152.63877,-3.042773],[152.670605,-3.133398]]],[[[152.099219,-2.947363],[152.088477,-2.997852],[152.057324,-2.994922],[151.971094,-2.896094],[151.95459,-2.870508],[151.974707,-2.845605],[152.074609,-2.918457],[152.099219,-2.947363]]],[[[149.76543,-1.553027],[149.763184,-1.58916],[149.690918,-1.570898],[149.671094,-1.57627],[149.545898,-1.47168],[149.547852,-1.407715],[149.580957,-1.353223],[149.633008,-1.362012],[149.725293,-1.430664],[149.76543,-1.553027]]],[[[151.080957,-10.020117],[151.123438,-10.020215],[151.194336,-9.945508],[151.255664,-9.922656],[151.296484,-9.956738],[151.230859,-10.194727],[151.175488,-10.158887],[150.95918,-10.092578],[150.952441,-9.998438],[150.896094,-9.968066],[150.861328,-9.876172],[150.789648,-9.774316],[150.776074,-9.709082],[150.816699,-9.735938],[150.862305,-9.802441],[151.051465,-9.938965],[151.044141,-9.983105],[151.080957,-10.020117]]],[[[150.34541,-9.493848],[150.331348,-9.518555],[150.272852,-9.500391],[150.109766,-9.361914],[150.134961,-9.25957],[150.208301,-9.206348],[150.320117,-9.26416],[150.357031,-9.349023],[150.368164,-9.396484],[150.34541,-9.493848]]],[[[151.106836,-8.733496],[151.124121,-8.804883],[151.046191,-8.72832],[151.080762,-8.641797],[151.086816,-8.59502],[151.082813,-8.568652],[151.00498,-8.523828],[151.046289,-8.450586],[151.090137,-8.425977],[151.117578,-8.418848],[151.116406,-8.521875],[151.138574,-8.568066],[151.106836,-8.733496]]],[[[154.280762,-11.361426],[154.266016,-11.415918],[154.22959,-11.397461],[154.121191,-11.425684],[154.064063,-11.419336],[154.031152,-11.370508],[154.023438,-11.347949],[154.117676,-11.365527],[154.101758,-11.311426],[154.237891,-11.338867],[154.280762,-11.361426]]],[[[143.586816,-8.481738],[143.543164,-8.484766],[143.366895,-8.416895],[143.321875,-8.367578],[143.528223,-8.378516],[143.581445,-8.390918],[143.592578,-8.459961],[143.586816,-8.481738]]],[[[147.17627,-5.431934],[147.120215,-5.437402],[147.029004,-5.342383],[147.005859,-5.307031],[147.014746,-5.257422],[147.131055,-5.19082],[147.206348,-5.251563],[147.221875,-5.381543],[147.17627,-5.431934]]],[[[147.067578,-1.960156],[147.400586,-2.025098],[147.422559,-2.024316],[147.41875,-2.001074],[147.424414,-1.994531],[147.444141,-2.011523],[147.438086,-2.058984],[147.385449,-2.070605],[147.336523,-2.066016],[147.301367,-2.09043],[147.206348,-2.181934],[147.142188,-2.166602],[147.063867,-2.187109],[146.926367,-2.189063],[146.747852,-2.148828],[146.699121,-2.182715],[146.635449,-2.17334],[146.572461,-2.210449],[146.546484,-2.208594],[146.531348,-2.154102],[146.532422,-2.126172],[146.607031,-2.102539],[146.595898,-2.016895],[146.65625,-1.974023],[146.760059,-1.977734],[146.857129,-1.948535],[147.067578,-1.960156]]],[[[150.436621,-2.661816],[150.2375,-2.675488],[150.165723,-2.660254],[150.101562,-2.602539],[150.043457,-2.5125],[149.985156,-2.491504],[149.961621,-2.473828],[150.102539,-2.40498],[150.227148,-2.38418],[150.429492,-2.47041],[150.45,-2.513281],[150.451563,-2.541113],[150.446094,-2.632324],[150.436621,-2.661816]]],[[[150.528418,-9.346582],[150.669043,-9.428516],[150.746484,-9.404492],[150.788672,-9.417969],[150.879102,-9.512695],[150.884082,-9.581934],[150.898633,-9.641406],[150.894043,-9.66748],[150.844043,-9.702832],[150.848242,-9.662598],[150.809961,-9.654785],[150.67832,-9.656543],[150.57627,-9.631152],[150.43623,-9.624609],[150.495313,-9.561719],[150.508496,-9.536133],[150.434668,-9.434961],[150.431445,-9.386621],[150.437305,-9.359961],[150.498926,-9.345605],[150.528418,-9.346582]]],[[[152.630957,-8.959375],[152.689258,-8.974609],[152.810059,-8.967188],[152.849805,-9.024512],[152.905078,-9.044238],[152.95293,-9.070117],[152.995313,-9.107813],[152.99502,-9.130762],[152.984961,-9.150781],[152.959277,-9.168652],[152.966895,-9.208984],[152.922754,-9.203027],[152.86748,-9.224316],[152.759473,-9.177148],[152.720117,-9.166504],[152.708203,-9.126074],[152.638086,-9.058398],[152.515137,-9.009863],[152.577051,-8.97002],[152.630957,-8.959375]]],[[[153.536133,-11.476172],[153.703223,-11.528516],[153.759863,-11.586328],[153.699512,-11.612598],[153.553711,-11.630566],[153.519238,-11.595215],[153.379004,-11.55957],[153.357031,-11.49502],[153.286816,-11.516992],[153.322363,-11.471484],[153.234473,-11.420313],[153.207031,-11.351855],[153.203613,-11.324121],[153.306738,-11.356348],[153.536133,-11.476172]]],[[[143.590332,-8.633398],[143.608203,-8.677148],[143.462793,-8.61709],[143.324121,-8.516797],[143.253809,-8.489551],[143.206836,-8.423438],[143.293066,-8.472754],[143.443359,-8.518945],[143.590332,-8.633398]]],[[[147.876953,-2.283105],[147.844531,-2.335742],[147.768945,-2.33125],[147.735547,-2.315527],[147.790234,-2.305566],[147.812207,-2.262109],[147.83584,-2.246777],[147.876953,-2.283105]]],[[[151.957227,-2.830176],[151.933398,-2.830371],[151.929785,-2.750586],[151.946387,-2.708594],[152.001953,-2.737793],[152.011328,-2.80918],[151.957227,-2.830176]]],[[[150.89873,-10.565332],[150.884668,-10.643457],[150.802344,-10.620215],[150.785742,-10.603418],[150.799316,-10.554102],[150.87207,-10.551855],[150.89873,-10.565332]]],[[[153.659277,-4.099316],[153.650098,-4.123047],[153.591504,-4.095996],[153.639746,-4.044727],[153.662988,-4.041211],[153.659277,-4.099316]]],[[[155.957617,-6.686816],[155.933203,-6.780469],[155.914941,-6.79668],[155.891895,-6.761523],[155.80498,-6.795605],[155.763477,-6.834375],[155.719336,-6.862793],[155.617383,-6.855957],[155.520898,-6.830273],[155.427344,-6.782715],[155.344043,-6.72168],[155.260547,-6.626074],[155.208594,-6.526855],[155.234473,-6.411621],[155.202148,-6.307617],[155.044629,-6.233691],[155.010156,-6.209766],[154.940234,-6.106152],[154.870313,-6.061426],[154.781934,-5.970703],[154.759277,-5.931348],[154.721094,-5.816504],[154.708984,-5.74707],[154.741113,-5.545313],[154.729297,-5.444434],[154.772656,-5.454102],[154.818457,-5.494043],[154.870508,-5.521387],[154.99707,-5.539941],[155.093848,-5.620215],[155.186719,-5.776953],[155.197852,-5.82832],[155.227539,-5.865234],[155.323047,-5.931738],[155.372559,-5.974414],[155.466992,-6.145117],[155.519336,-6.181543],[155.581055,-6.196191],[155.638477,-6.220801],[155.73418,-6.295703],[155.822559,-6.380469],[155.882227,-6.469629],[155.927637,-6.565039],[155.957617,-6.686816]]],[[[154.647266,-5.432715],[154.627344,-5.440625],[154.583887,-5.314453],[154.576172,-5.220898],[154.562793,-5.151953],[154.540039,-5.11084],[154.605566,-5.034961],[154.632617,-5.013867],[154.682031,-5.054004],[154.68916,-5.142676],[154.727148,-5.218066],[154.698438,-5.382812],[154.647266,-5.432715]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Panama","SOV_A3":"PAN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Panama","ADM0_A3":"PAN","GEOU_DIF":0,"GEOUNIT":"Panama","GU_A3":"PAN","SU_DIF":0,"SUBUNIT":"Panama","SU_A3":"PAN","BRK_DIFF":0,"NAME":"Panama","NAME_LONG":"Panama","BRK_A3":"PAN","BRK_NAME":"Panama","BRK_GROUP":null,"ABBREV":"Pan.","POSTAL":"PA","FORMAL_EN":"Republic of Panama","FORMAL_FR":null,"NAME_CIAWF":"Panama","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Panama","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":4246439,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":66800,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"PM","ISO_A2":"PA","ISO_A2_EH":"PA","ISO_A3":"PAN","ISO_A3_EH":"PAN","ISO_N3":"591","ISO_N3_EH":"591","UN_A3":"591","WB_A2":"PA","WB_A3":"PAN","WOE_ID":23424924,"WOE_ID_EH":23424924,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PAN","ADM0_DIFF":null,"ADM0_TLC":"PAN","ADM0_A3_US":"PAN","ADM0_A3_FR":"PAN","ADM0_A3_RU":"PAN","ADM0_A3_ES":"PAN","ADM0_A3_CN":"PAN","ADM0_A3_TW":"PAN","ADM0_A3_IN":"PAN","ADM0_A3_NP":"PAN","ADM0_A3_PK":"PAN","ADM0_A3_DE":"PAN","ADM0_A3_GB":"PAN","ADM0_A3_BR":"PAN","ADM0_A3_IL":"PAN","ADM0_A3_PS":"PAN","ADM0_A3_SA":"PAN","ADM0_A3_EG":"PAN","ADM0_A3_MA":"PAN","ADM0_A3_PT":"PAN","ADM0_A3_AR":"PAN","ADM0_A3_JP":"PAN","ADM0_A3_KO":"PAN","ADM0_A3_VN":"PAN","ADM0_A3_TR":"PAN","ADM0_A3_ID":"PAN","ADM0_A3_PL":"PAN","ADM0_A3_GR":"PAN","ADM0_A3_IT":"PAN","ADM0_A3_NL":"PAN","ADM0_A3_SE":"PAN","ADM0_A3_BD":"PAN","ADM0_A3_UA":"PAN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-80.352106,"LABEL_Y":8.72198,"NE_ID":1159321161,"WIKIDATAID":"Q804","NAME_AR":"بنما","NAME_BN":"পানামা","NAME_DE":"Panama","NAME_EN":"Panama","NAME_ES":"Panamá","NAME_FA":"پاناما","NAME_FR":"Panama","NAME_EL":"Παναμάς","NAME_HE":"פנמה","NAME_HI":"पनामा","NAME_HU":"Panama","NAME_ID":"Panama","NAME_IT":"Panama","NAME_JA":"パナマ","NAME_KO":"파나마","NAME_NL":"Panama","NAME_PL":"Panama","NAME_PT":"Panamá","NAME_RU":"Панама","NAME_SV":"Panama","NAME_TR":"Panama","NAME_UK":"Панама","NAME_UR":"پاناما","NAME_VI":"Panama","NAME_ZH":"巴拿马","NAME_ZHT":"巴拿馬","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-83.027344,7.220068,-77.195996,9.597852],"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.374219,8.658301],[-77.393066,8.644678],[-77.44834,8.565869],[-77.478516,8.498437],[-77.407275,8.427246],[-77.385889,8.35166],[-77.345508,8.269531],[-77.282617,8.187061],[-77.212305,8.033887],[-77.195996,7.972461],[-77.215967,7.93252],[-77.282959,7.908154],[-77.345605,7.836523],[-77.362744,7.749072],[-77.350781,7.705859],[-77.538281,7.56626],[-77.586572,7.543066],[-77.618604,7.564551],[-77.658594,7.634619],[-77.706348,7.691211],[-77.732031,7.710938],[-77.746924,7.711865],[-77.761914,7.698828],[-77.76875,7.668066],[-77.743896,7.536963],[-77.764697,7.483691],[-77.82832,7.442822],[-77.901172,7.229346],[-77.929785,7.256348],[-78.170117,7.543799],[-78.378223,7.899902],[-78.421582,8.060986],[-78.367627,8.070557],[-78.31543,8.066943],[-78.287354,8.091797],[-78.254883,8.138623],[-78.281201,8.247559],[-78.180029,8.330273],[-78.141895,8.386084],[-78.113867,8.37959],[-78.047754,8.284766],[-77.95166,8.230273],[-77.833643,8.151172],[-77.760547,8.133252],[-77.85293,8.216211],[-78.0125,8.325391],[-78.057178,8.397119],[-78.099463,8.496973],[-78.161816,8.453711],[-78.190771,8.417334],[-78.223047,8.396631],[-78.251123,8.421436],[-78.256104,8.453711],[-78.350146,8.46001],[-78.374316,8.489258],[-78.399219,8.505664],[-78.387891,8.443408],[-78.369385,8.404932],[-78.379297,8.358594],[-78.409863,8.355322],[-78.436035,8.40332],[-78.469434,8.44668],[-78.514062,8.628174],[-78.620898,8.713721],[-78.669824,8.742188],[-78.710205,8.75293],[-78.769678,8.811084],[-78.848242,8.842187],[-78.955176,8.93252],[-79.086377,8.997168],[-79.24668,9.020068],[-79.441504,9.006006],[-79.50708,8.970068],[-79.55166,8.924463],[-79.572363,8.903271],[-79.687451,8.850977],[-79.731055,8.775342],[-79.758545,8.711572],[-79.815918,8.639209],[-79.750439,8.595508],[-80.125781,8.349658],[-80.200098,8.313965],[-80.368701,8.28877],[-80.407568,8.262451],[-80.458984,8.213867],[-80.465869,8.139941],[-80.458105,8.077051],[-80.409131,8.028564],[-80.365576,7.997998],[-80.260937,7.85166],[-80.075195,7.667041],[-80.040039,7.599805],[-80.01123,7.500049],[-80.067285,7.453223],[-80.110596,7.433447],[-80.287305,7.425635],[-80.348242,7.385693],[-80.372949,7.324658],[-80.438867,7.274951],[-80.666699,7.225684],[-80.845557,7.220068],[-80.901221,7.277148],[-80.914648,7.4375],[-81.035107,7.711133],[-81.063867,7.899756],[-81.093945,7.876318],[-81.157812,7.854395],[-81.179395,7.80752],[-81.195459,7.668408],[-81.219043,7.620947],[-81.268408,7.625488],[-81.36958,7.675293],[-81.50415,7.721191],[-81.675684,8.015918],[-81.694287,8.071387],[-81.727637,8.137549],[-81.860254,8.16543],[-81.973291,8.215088],[-82.096729,8.222754],[-82.159863,8.194824],[-82.224316,8.230371],[-82.235449,8.311035],[-82.364844,8.274854],[-82.530957,8.287402],[-82.679541,8.321973],[-82.781152,8.303516],[-82.866113,8.246338],[-82.854346,8.099512],[-82.879346,8.070654],[-82.883301,8.130566],[-82.912891,8.199609],[-82.948437,8.256836],[-83.023389,8.316016],[-83.027344,8.337744],[-82.997559,8.367773],[-82.861621,8.453516],[-82.844775,8.489355],[-82.842627,8.563965],[-82.855713,8.635303],[-82.917041,8.740332],[-82.881982,8.805322],[-82.811914,8.857422],[-82.73999,8.898584],[-82.727832,8.916064],[-82.741162,8.951709],[-82.783057,8.990283],[-82.881348,9.055859],[-82.940332,9.060107],[-82.942822,9.248877],[-82.939844,9.44917],[-82.925049,9.469043],[-82.888965,9.481006],[-82.860156,9.511475],[-82.843994,9.570801],[-82.801025,9.591797],[-82.723389,9.546094],[-82.644092,9.505859],[-82.611279,9.519238],[-82.586523,9.538818],[-82.569238,9.558203],[-82.563574,9.57666],[-82.500342,9.523242],[-82.370801,9.428564],[-82.363184,9.381934],[-82.375391,9.337256],[-82.339746,9.20918],[-82.272461,9.190625],[-82.204883,9.21543],[-82.188135,9.191748],[-82.200684,9.168115],[-82.235449,9.14165],[-82.244189,9.031494],[-82.133301,8.980078],[-82.077881,8.934863],[-81.894141,8.956104],[-81.826416,8.944092],[-81.780225,8.957227],[-81.831494,9.045605],[-81.900146,9.111035],[-81.894482,9.14043],[-81.842383,9.118701],[-81.802588,9.074121],[-81.712207,9.018945],[-81.545605,8.827002],[-81.354785,8.780566],[-81.20376,8.786719],[-81.063086,8.812646],[-80.838672,8.887207],[-80.676465,9.021875],[-80.546875,9.081934],[-80.1271,9.209912],[-79.977979,9.343701],[-79.915088,9.361328],[-79.855078,9.378076],[-79.723096,9.479297],[-79.652246,9.558203],[-79.577295,9.597852],[-79.355469,9.569238],[-79.211621,9.531934],[-79.112256,9.536768],[-79.016699,9.510449],[-78.975,9.452979],[-78.931641,9.428467],[-78.696924,9.434766],[-78.504346,9.406299],[-78.082764,9.236279],[-77.830811,9.068115],[-77.697217,8.889453],[-77.374219,8.658301]]],[[[-78.89834,8.274268],[-78.918115,8.231934],[-78.964941,8.32627],[-78.957422,8.350586],[-78.960596,8.43584],[-78.916016,8.458252],[-78.883252,8.460254],[-78.856152,8.448242],[-78.83916,8.3479],[-78.853223,8.302441],[-78.89834,8.274268]]],[[[-81.603271,7.332812],[-81.658105,7.327539],[-81.770117,7.370361],[-81.852051,7.45332],[-81.858594,7.480176],[-81.856934,7.507666],[-81.812158,7.592383],[-81.752295,7.621631],[-81.72876,7.621191],[-81.671436,7.523438],[-81.710449,7.485547],[-81.694727,7.425],[-81.613428,7.380176],[-81.603271,7.332812]]],[[[-82.233496,9.380713],[-82.244434,9.334082],[-82.321729,9.418115],[-82.275781,9.431885],[-82.259424,9.430273],[-82.233496,9.380713]]],[[[-79.06543,8.254199],[-79.110352,8.209814],[-79.127539,8.251855],[-79.096289,8.29541],[-79.085303,8.295801],[-79.06543,8.254199]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":6,"SOVEREIGNT":"Palau","SOV_A3":"PLW","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Palau","ADM0_A3":"PLW","GEOU_DIF":0,"GEOUNIT":"Palau","GU_A3":"PLW","SU_DIF":0,"SUBUNIT":"Palau","SU_A3":"PLW","BRK_DIFF":0,"NAME":"Palau","NAME_LONG":"Palau","BRK_A3":"PLW","BRK_NAME":"Palau","BRK_GROUP":null,"ABBREV":"Palau","POSTAL":"PW","FORMAL_EN":"Republic of Palau","FORMAL_FR":null,"NAME_CIAWF":"Palau","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Palau","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":12,"POP_EST":18008,"POP_RANK":6,"POP_YEAR":2019,"GDP_MD":268,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"PS","ISO_A2":"PW","ISO_A2_EH":"PW","ISO_A3":"PLW","ISO_A3_EH":"PLW","ISO_N3":"585","ISO_N3_EH":"585","UN_A3":"585","WB_A2":"PW","WB_A3":"PLW","WOE_ID":23424927,"WOE_ID_EH":23424927,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PLW","ADM0_DIFF":null,"ADM0_TLC":"PLW","ADM0_A3_US":"PLW","ADM0_A3_FR":"PLW","ADM0_A3_RU":"PLW","ADM0_A3_ES":"PLW","ADM0_A3_CN":"PLW","ADM0_A3_TW":"PLW","ADM0_A3_IN":"PLW","ADM0_A3_NP":"PLW","ADM0_A3_PK":"PLW","ADM0_A3_DE":"PLW","ADM0_A3_GB":"PLW","ADM0_A3_BR":"PLW","ADM0_A3_IL":"PLW","ADM0_A3_PS":"PLW","ADM0_A3_SA":"PLW","ADM0_A3_EG":"PLW","ADM0_A3_MA":"PLW","ADM0_A3_PT":"PLW","ADM0_A3_AR":"PLW","ADM0_A3_JP":"PLW","ADM0_A3_KO":"PLW","ADM0_A3_VN":"PLW","ADM0_A3_TR":"PLW","ADM0_A3_ID":"PLW","ADM0_A3_PL":"PLW","ADM0_A3_GR":"PLW","ADM0_A3_IT":"PLW","ADM0_A3_NL":"PLW","ADM0_A3_SE":"PLW","ADM0_A3_BD":"PLW","ADM0_A3_UA":"PLW","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Micronesia","REGION_WB":"East Asia & Pacific","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":134.580157,"LABEL_Y":7.518252,"NE_ID":1159321171,"WIKIDATAID":"Q695","NAME_AR":"بالاو","NAME_BN":"পালাউ","NAME_DE":"Palau","NAME_EN":"Palau","NAME_ES":"Palaos","NAME_FA":"پالائو","NAME_FR":"Palaos","NAME_EL":"Παλάου","NAME_HE":"פלאו","NAME_HI":"पलाउ","NAME_HU":"Palau","NAME_ID":"Palau","NAME_IT":"Palau","NAME_JA":"パラオ","NAME_KO":"팔라우","NAME_NL":"Palau","NAME_PL":"Palau","NAME_PT":"Palau","NAME_RU":"Палау","NAME_SV":"Palau","NAME_TR":"Palau","NAME_UK":"Республіка Палау","NAME_UR":"پلاؤ","NAME_VI":"Palau","NAME_ZH":"帕劳","NAME_ZHT":"帛琉","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[131.134961,3.021875,134.65957,7.712109],"geometry":{"type":"MultiPolygon","coordinates":[[[[131.172363,3.026221],[131.149609,3.021875],[131.134961,3.025244],[131.136719,3.039453],[131.151563,3.054102],[131.172363,3.060596],[131.187891,3.055615],[131.186328,3.04209],[131.172363,3.026221]]],[[[134.59541,7.382031],[134.534668,7.360645],[134.50625,7.437109],[134.515723,7.525781],[134.555957,7.593945],[134.599707,7.615771],[134.608691,7.623584],[134.651172,7.712109],[134.65957,7.663281],[134.632715,7.501318],[134.598242,7.438281],[134.59541,7.382031]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Pakistan","SOV_A3":"PAK","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Pakistan","ADM0_A3":"PAK","GEOU_DIF":0,"GEOUNIT":"Pakistan","GU_A3":"PAK","SU_DIF":0,"SUBUNIT":"Pakistan","SU_A3":"PAK","BRK_DIFF":0,"NAME":"Pakistan","NAME_LONG":"Pakistan","BRK_A3":"PAK","BRK_NAME":"Pakistan","BRK_GROUP":null,"ABBREV":"Pak.","POSTAL":"PK","FORMAL_EN":"Islamic Republic of Pakistan","FORMAL_FR":null,"NAME_CIAWF":"Pakistan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Pakistan","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":3,"MAPCOLOR13":11,"POP_EST":216565318,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":278221,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"4. Lower middle income","FIPS_10":"PK","ISO_A2":"PK","ISO_A2_EH":"PK","ISO_A3":"PAK","ISO_A3_EH":"PAK","ISO_N3":"586","ISO_N3_EH":"586","UN_A3":"586","WB_A2":"PK","WB_A3":"PAK","WOE_ID":23424922,"WOE_ID_EH":23424922,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PAK","ADM0_DIFF":null,"ADM0_TLC":"PAK","ADM0_A3_US":"PAK","ADM0_A3_FR":"PAK","ADM0_A3_RU":"PAK","ADM0_A3_ES":"PAK","ADM0_A3_CN":"PAK","ADM0_A3_TW":"PAK","ADM0_A3_IN":"PAK","ADM0_A3_NP":"PAK","ADM0_A3_PK":"PAK","ADM0_A3_DE":"PAK","ADM0_A3_GB":"PAK","ADM0_A3_BR":"PAK","ADM0_A3_IL":"PAK","ADM0_A3_PS":"PAK","ADM0_A3_SA":"PAK","ADM0_A3_EG":"PAK","ADM0_A3_MA":"PAK","ADM0_A3_PT":"PAK","ADM0_A3_AR":"PAK","ADM0_A3_JP":"PAK","ADM0_A3_KO":"PAK","ADM0_A3_VN":"PAK","ADM0_A3_TR":"PAK","ADM0_A3_ID":"PAK","ADM0_A3_PL":"PAK","ADM0_A3_GR":"PAK","ADM0_A3_IT":"PAK","ADM0_A3_NL":"PAK","ADM0_A3_SE":"PAK","ADM0_A3_BD":"PAK","ADM0_A3_UA":"PAK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":7,"LABEL_X":68.545632,"LABEL_Y":29.328389,"NE_ID":1159321153,"WIKIDATAID":"Q843","NAME_AR":"باكستان","NAME_BN":"পাকিস্তান","NAME_DE":"Pakistan","NAME_EN":"Pakistan","NAME_ES":"Pakistán","NAME_FA":"پاکستان","NAME_FR":"Pakistan","NAME_EL":"Πακιστάν","NAME_HE":"פקיסטן","NAME_HI":"पाकिस्तान","NAME_HU":"Pakisztán","NAME_ID":"Pakistan","NAME_IT":"Pakistan","NAME_JA":"パキスタン","NAME_KO":"파키스탄","NAME_NL":"Pakistan","NAME_PL":"Pakistan","NAME_PT":"Paquistão","NAME_RU":"Пакистан","NAME_SV":"Pakistan","NAME_TR":"Pakistan","NAME_UK":"Пакистан","NAME_UR":"پاکستان","NAME_VI":"Pakistan","NAME_ZH":"巴基斯坦","NAME_ZHT":"巴基斯坦","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[60.843359,23.753369,77.048633,37.03667],"geometry":{"type":"Polygon","coordinates":[[[76.766895,35.661719],[76.812793,35.571826],[76.882227,35.435742],[76.927734,35.346631],[76.978906,35.246436],[77.004492,35.196338],[77.048633,35.109912],[77.030664,35.062354],[77.000879,34.991992],[76.891699,34.938721],[76.78291,34.900195],[76.75752,34.877832],[76.749023,34.847559],[76.696289,34.786914],[76.594434,34.73584],[76.509961,34.740869],[76.456738,34.756104],[76.172461,34.667725],[76.041016,34.669922],[75.938281,34.612549],[75.862109,34.560254],[75.70918,34.503076],[75.605566,34.502734],[75.452539,34.536719],[75.264063,34.601367],[75.1875,34.639014],[75.118457,34.636816],[74.951855,34.64585],[74.78877,34.677734],[74.594141,34.715771],[74.497949,34.732031],[74.300391,34.765381],[74.171973,34.720898],[74.055859,34.680664],[73.96123,34.653467],[73.883105,34.529053],[73.850098,34.485303],[73.812109,34.422363],[73.794531,34.378223],[73.809961,34.325342],[73.924609,34.287842],[73.972363,34.236621],[73.979492,34.191309],[73.938281,34.144775],[73.903906,34.108008],[73.904102,34.075684],[73.922363,34.043066],[73.949902,34.018799],[74.112598,34.003711],[74.208984,34.003418],[74.246484,33.990186],[74.250879,33.946094],[74.215625,33.886572],[74.078418,33.838672],[74.000977,33.788184],[73.976465,33.721289],[73.977539,33.667822],[74.004004,33.632422],[74.069727,33.591699],[74.13125,33.545068],[74.15,33.506982],[74.142578,33.455371],[74.117773,33.384131],[74.050391,33.30127],[73.994238,33.242188],[73.989844,33.221191],[74.003809,33.189453],[74.049121,33.143408],[74.12627,33.075439],[74.22207,33.020312],[74.283594,33.005127],[74.303613,32.991797],[74.322754,32.927979],[74.32998,32.86084],[74.305469,32.810449],[74.35459,32.768701],[74.483398,32.770996],[74.588281,32.753223],[74.632422,32.770898],[74.663281,32.757666],[74.643359,32.607715],[74.657813,32.518945],[74.685742,32.493799],[74.788867,32.457812],[74.987305,32.462207],[75.104102,32.420361],[75.233691,32.372119],[75.302637,32.318896],[75.333496,32.279199],[75.324707,32.215283],[75.254102,32.140332],[75.13877,32.104785],[75.071484,32.089355],[74.739453,31.948828],[74.635742,31.889746],[74.555566,31.818555],[74.525977,31.765137],[74.509961,31.712939],[74.581836,31.523926],[74.593945,31.465381],[74.534961,31.261377],[74.517676,31.185596],[74.539746,31.132666],[74.610352,31.112842],[74.625781,31.06875],[74.632812,31.034668],[74.509766,30.959668],[74.380371,30.893408],[74.339355,30.893555],[74.215625,30.768994],[74.008984,30.519678],[73.899316,30.435352],[73.891602,30.394043],[73.882715,30.352148],[73.924609,30.281641],[73.933398,30.22207],[73.886523,30.162012],[73.80918,30.093359],[73.658008,30.033203],[73.46748,29.97168],[73.381641,29.934375],[73.317285,29.772998],[73.257812,29.610693],[73.231152,29.550635],[73.12832,29.363916],[72.94873,29.088818],[72.90332,29.02876],[72.625586,28.896143],[72.341895,28.751904],[72.291992,28.697266],[72.233887,28.56582],[72.179199,28.421777],[72.128516,28.346338],[71.948047,28.177295],[71.888867,28.047461],[71.870313,27.9625],[71.716699,27.915088],[71.542969,27.869873],[71.290137,27.855273],[71.184766,27.831641],[70.874902,27.714453],[70.797949,27.709619],[70.737402,27.729004],[70.691602,27.768994],[70.649121,27.835352],[70.629102,27.937451],[70.569238,27.983789],[70.488574,28.023145],[70.403711,28.025049],[70.318457,27.981641],[70.244336,27.934131],[70.193945,27.894873],[70.144531,27.849023],[70.049805,27.694727],[69.896289,27.473633],[69.724805,27.312695],[69.661328,27.264502],[69.621582,27.228076],[69.567969,27.174609],[69.537012,27.122949],[69.494531,26.95415],[69.47002,26.804443],[69.48125,26.770996],[69.506934,26.742676],[69.600586,26.699121],[69.735938,26.627051],[69.911426,26.586133],[70.059375,26.57876],[70.114648,26.548047],[70.147656,26.506445],[70.156836,26.471436],[70.149219,26.347559],[70.132617,26.214795],[70.077734,26.071973],[70.078613,25.990039],[70.100195,25.910059],[70.264648,25.706543],[70.325195,25.685742],[70.448535,25.681348],[70.505859,25.685303],[70.569531,25.705957],[70.614844,25.691895],[70.648438,25.666943],[70.657227,25.625781],[70.652051,25.4229],[70.702539,25.331055],[70.800488,25.205859],[70.877734,25.062988],[70.950879,24.891602],[71.020703,24.757666],[71.047852,24.687744],[71.002344,24.653906],[70.976367,24.61875],[70.969824,24.571875],[70.979297,24.522461],[70.973242,24.487402],[71.00625,24.444336],[71.045313,24.42998],[71.044043,24.400098],[70.982813,24.361035],[70.928125,24.362354],[70.88623,24.34375],[70.805078,24.261963],[70.767285,24.24541],[70.716309,24.237988],[70.659473,24.246094],[70.579297,24.279053],[70.555859,24.331104],[70.565039,24.385791],[70.546777,24.418311],[70.489258,24.412158],[70.289062,24.356299],[70.098242,24.2875],[70.065137,24.240576],[70.021094,24.191553],[69.933789,24.171387],[69.805176,24.165234],[69.716211,24.172607],[69.63418,24.225195],[69.55918,24.273096],[69.443457,24.275391],[69.235059,24.268262],[69.119531,24.268652],[69.051563,24.286328],[68.98457,24.273096],[68.900781,24.292432],[68.863477,24.266504],[68.82832,24.264014],[68.8,24.309082],[68.781152,24.313721],[68.758984,24.307227],[68.739648,24.291992],[68.728125,24.265625],[68.724121,23.964697],[68.586621,23.966602],[68.488672,23.967236],[68.38125,23.950879],[68.28252,23.927979],[68.23418,23.900537],[68.165039,23.857324],[68.148828,23.797217],[68.115527,23.753369],[68.067773,23.818359],[68.037012,23.848242],[68.001465,23.826074],[67.950977,23.828613],[67.859961,23.902686],[67.819043,23.828076],[67.668457,23.810986],[67.649512,23.867285],[67.645801,23.919873],[67.563086,23.881836],[67.503613,23.940039],[67.476855,24.018262],[67.453906,24.039893],[67.427637,24.064844],[67.365234,24.091602],[67.309375,24.174805],[67.304297,24.262891],[67.288672,24.367773],[67.171484,24.756104],[67.100586,24.791943],[66.703027,24.860937],[66.682227,24.928857],[66.709863,25.111328],[66.698633,25.226318],[66.569922,25.378516],[66.533887,25.484375],[66.428613,25.575342],[66.324219,25.601807],[66.219043,25.589893],[66.162305,25.553906],[66.131152,25.493262],[66.356445,25.507373],[66.407129,25.485059],[66.467676,25.445312],[66.40293,25.446826],[66.32832,25.465771],[66.234668,25.464355],[65.883594,25.419629],[65.679688,25.355273],[65.40625,25.374316],[65.061328,25.311084],[64.77666,25.307324],[64.658984,25.184082],[64.594043,25.206299],[64.54375,25.23667],[64.152051,25.333447],[64.124902,25.373926],[64.059375,25.40293],[63.987305,25.351172],[63.935547,25.342529],[63.720898,25.385889],[63.556641,25.353174],[63.495703,25.29751],[63.491406,25.21084],[63.285742,25.227588],[63.17002,25.254883],[63.015039,25.224658],[62.664746,25.264795],[62.572461,25.254736],[62.444727,25.197266],[62.391211,25.152539],[62.315332,25.134912],[62.24873,25.197363],[62.198633,25.224854],[62.152148,25.206641],[62.089453,25.155322],[61.90791,25.131299],[61.743652,25.138184],[61.566895,25.186328],[61.587891,25.202344],[61.61543,25.286133],[61.640137,25.584619],[61.671387,25.692383],[61.661816,25.75127],[61.668652,25.768994],[61.737695,25.821094],[61.754395,25.843359],[61.780762,25.99585],[61.809961,26.165283],[61.842383,26.225928],[61.869824,26.242432],[62.089063,26.318262],[62.125977,26.368994],[62.239355,26.357031],[62.249609,26.369238],[62.259668,26.42749],[62.312305,26.490869],[62.385059,26.542627],[62.439258,26.561035],[62.636426,26.593652],[62.751563,26.63916],[62.786621,26.643896],[63.092969,26.632324],[63.157813,26.649756],[63.168066,26.665576],[63.186133,26.837598],[63.241602,26.864746],[63.250391,26.879248],[63.231445,26.998145],[63.24209,27.077686],[63.305176,27.124561],[63.301563,27.151465],[63.25625,27.20791],[63.196094,27.243945],[63.166797,27.25249],[62.91543,27.218408],[62.811621,27.229443],[62.762988,27.250195],[62.752734,27.265625],[62.7625,27.300195],[62.764258,27.356738],[62.800879,27.444531],[62.812012,27.497021],[62.782324,27.800537],[62.739746,28.002051],[62.7625,28.202051],[62.758008,28.243555],[62.749414,28.252881],[62.717578,28.252783],[62.564551,28.235156],[62.433887,28.363867],[62.353027,28.414746],[62.130566,28.478809],[62.033008,28.491016],[61.889844,28.546533],[61.758008,28.667676],[61.623047,28.791602],[61.56875,28.870898],[61.508594,29.006055],[61.337891,29.26499],[61.339453,29.331787],[61.318359,29.372607],[61.152148,29.542725],[61.03418,29.663428],[60.843359,29.858691],[61.224414,29.749414],[61.521484,29.665674],[62.000977,29.53042],[62.373438,29.425391],[62.476562,29.40835],[63.567578,29.497998],[63.970996,29.430078],[64.09873,29.391943],[64.117969,29.414258],[64.172168,29.460352],[64.266113,29.506934],[64.39375,29.544336],[64.521094,29.564502],[64.703516,29.567139],[64.827344,29.56416],[64.918945,29.552783],[65.095508,29.559473],[65.180469,29.577637],[65.470996,29.651562],[65.666211,29.701318],[65.961621,29.778906],[66.177051,29.835596],[66.23125,29.865723],[66.286914,29.92002],[66.313379,29.968555],[66.247168,30.043506],[66.238477,30.109619],[66.281836,30.193457],[66.305469,30.321143],[66.300977,30.502979],[66.286914,30.60791],[66.346875,30.802783],[66.397168,30.912207],[66.497363,30.964551],[66.566797,30.996582],[66.595801,31.019971],[66.624219,31.046045],[66.731348,31.194531],[66.829297,31.263672],[66.924316,31.305615],[67.027734,31.300244],[67.115918,31.24292],[67.287305,31.217822],[67.452832,31.234619],[67.596387,31.277686],[67.661523,31.312988],[67.737891,31.343945],[67.733496,31.379248],[67.64707,31.409961],[67.597559,31.45332],[67.578223,31.506494],[67.626758,31.53877],[67.739844,31.548193],[68.017188,31.677979],[68.130176,31.763281],[68.161035,31.802979],[68.213965,31.807373],[68.319824,31.767676],[68.443262,31.754492],[68.520703,31.794141],[68.597656,31.802979],[68.673242,31.759717],[68.713672,31.708057],[68.782324,31.646436],[68.868945,31.634229],[68.973438,31.667383],[69.083105,31.738477],[69.186914,31.838086],[69.279297,31.936816],[69.256543,32.249463],[69.241406,32.433545],[69.289941,32.530566],[69.359473,32.590332],[69.405371,32.682715],[69.40459,32.764258],[69.453125,32.832812],[69.501563,33.020068],[69.567773,33.06416],[69.703711,33.094727],[69.920117,33.1125],[70.090234,33.198096],[70.261133,33.289014],[70.28418,33.369043],[70.219727,33.454687],[70.13418,33.620752],[70.056641,33.719873],[69.868066,33.897656],[69.889648,34.007275],[69.994727,34.051807],[70.253613,33.975977],[70.325684,33.961133],[70.415723,33.950439],[70.654004,33.952295],[70.848438,33.981885],[71.051563,34.049707],[71.091309,34.120264],[71.089063,34.204053],[71.092383,34.273242],[71.095703,34.369434],[71.022949,34.431152],[70.978906,34.486279],[70.965625,34.530371],[71.016309,34.554639],[71.065625,34.599609],[71.113281,34.681592],[71.225781,34.779541],[71.294141,34.867725],[71.358105,34.909619],[71.455078,34.966943],[71.51709,35.051123],[71.545508,35.101416],[71.60166,35.150684],[71.620508,35.183008],[71.605273,35.211768],[71.577246,35.247998],[71.545508,35.288867],[71.545508,35.328516],[71.571973,35.37041],[71.600586,35.40791],[71.587402,35.46084],[71.571973,35.546826],[71.519043,35.59751],[71.483594,35.7146],[71.427539,35.83374],[71.397559,35.880176],[71.342871,35.938525],[71.220215,36.000684],[71.185059,36.04209],[71.23291,36.121777],[71.312598,36.171191],[71.463281,36.293262],[71.545898,36.377686],[71.620508,36.436475],[71.716406,36.426562],[71.772656,36.431836],[71.822266,36.486084],[71.920703,36.53418],[72.095605,36.63374],[72.156738,36.700879],[72.249805,36.734717],[72.326953,36.742383],[72.431152,36.76582],[72.531348,36.802002],[72.622852,36.82959],[72.766211,36.83501],[72.99375,36.851611],[73.116797,36.868555],[73.411133,36.881689],[73.731836,36.887793],[73.769141,36.888477],[73.907813,36.85293],[74.001855,36.823096],[74.038867,36.825732],[74.194727,36.896875],[74.431055,36.983691],[74.541406,37.022168],[74.600586,37.03667],[74.692188,37.035742],[74.766016,37.012744],[74.841211,36.979102],[74.889258,36.952441],[74.949121,36.968359],[75.053906,36.987158],[75.145215,36.973242],[75.34668,36.913477],[75.376855,36.883691],[75.424219,36.738232],[75.460254,36.725049],[75.57373,36.759326],[75.667188,36.741992],[75.772168,36.694922],[75.840234,36.649707],[75.884961,36.600732],[75.933008,36.521582],[75.951855,36.458105],[75.974414,36.382422],[75.968652,36.168848],[75.934082,36.133936],[75.904883,36.088477],[75.912305,36.048975],[75.945117,36.017578],[76.010449,35.996338],[76.070898,35.983008],[76.10332,35.949219],[76.147852,35.829004],[76.177832,35.810547],[76.25166,35.810937],[76.385742,35.837158],[76.502051,35.878223],[76.55127,35.887061],[76.563477,35.772998],[76.631836,35.729395],[76.727539,35.678662],[76.766895,35.661719]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"Oman","SOV_A3":"OMN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Oman","ADM0_A3":"OMN","GEOU_DIF":0,"GEOUNIT":"Oman","GU_A3":"OMN","SU_DIF":0,"SUBUNIT":"Oman","SU_A3":"OMN","BRK_DIFF":0,"NAME":"Oman","NAME_LONG":"Oman","BRK_A3":"OMN","BRK_NAME":"Oman","BRK_GROUP":null,"ABBREV":"Oman","POSTAL":"OM","FORMAL_EN":"Sultanate of Oman","FORMAL_FR":null,"NAME_CIAWF":"Oman","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Oman","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":6,"POP_EST":4974986,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":76331,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"MU","ISO_A2":"OM","ISO_A2_EH":"OM","ISO_A3":"OMN","ISO_A3_EH":"OMN","ISO_N3":"512","ISO_N3_EH":"512","UN_A3":"512","WB_A2":"OM","WB_A3":"OMN","WOE_ID":23424898,"WOE_ID_EH":23424898,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"OMN","ADM0_DIFF":null,"ADM0_TLC":"OMN","ADM0_A3_US":"OMN","ADM0_A3_FR":"OMN","ADM0_A3_RU":"OMN","ADM0_A3_ES":"OMN","ADM0_A3_CN":"OMN","ADM0_A3_TW":"OMN","ADM0_A3_IN":"OMN","ADM0_A3_NP":"OMN","ADM0_A3_PK":"OMN","ADM0_A3_DE":"OMN","ADM0_A3_GB":"OMN","ADM0_A3_BR":"OMN","ADM0_A3_IL":"OMN","ADM0_A3_PS":"OMN","ADM0_A3_SA":"OMN","ADM0_A3_EG":"OMN","ADM0_A3_MA":"OMN","ADM0_A3_PT":"OMN","ADM0_A3_AR":"OMN","ADM0_A3_JP":"OMN","ADM0_A3_KO":"OMN","ADM0_A3_VN":"OMN","ADM0_A3_TR":"OMN","ADM0_A3_ID":"OMN","ADM0_A3_PL":"OMN","ADM0_A3_GR":"OMN","ADM0_A3_IT":"OMN","ADM0_A3_NL":"OMN","ADM0_A3_SE":"OMN","ADM0_A3_BD":"OMN","ADM0_A3_UA":"OMN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":57.336553,"LABEL_Y":22.120427,"NE_ID":1159321151,"WIKIDATAID":"Q842","NAME_AR":"سلطنة عمان","NAME_BN":"ওমান","NAME_DE":"Oman","NAME_EN":"Oman","NAME_ES":"Omán","NAME_FA":"عمان","NAME_FR":"Oman","NAME_EL":"Ομάν","NAME_HE":"עומאן","NAME_HI":"ओमान","NAME_HU":"Omán","NAME_ID":"Oman","NAME_IT":"Oman","NAME_JA":"オマーン","NAME_KO":"오만","NAME_NL":"Oman","NAME_PL":"Oman","NAME_PT":"Omã","NAME_RU":"Оман","NAME_SV":"Oman","NAME_TR":"Umman","NAME_UK":"Оман","NAME_UR":"عمان","NAME_VI":"Oman","NAME_ZH":"阿曼","NAME_ZHT":"阿曼","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[51.977637,16.648389,59.8375,26.356348],"geometry":{"type":"MultiPolygon","coordinates":[[[[58.72207,20.21875],[58.659082,20.203613],[58.640918,20.210693],[58.641211,20.337354],[58.787988,20.496582],[58.884375,20.680566],[58.950781,20.516162],[58.835156,20.423926],[58.772266,20.266846],[58.72207,20.21875]]],[[[53.085645,16.648389],[53.025,16.780225],[52.964355,16.912061],[52.903711,17.043848],[52.842969,17.175684],[52.800586,17.26792],[52.729199,17.300391],[52.685938,17.397949],[52.641699,17.497852],[52.597363,17.597754],[52.553125,17.697607],[52.508887,17.79751],[52.464551,17.897412],[52.420313,17.997314],[52.376074,18.097168],[52.331738,18.19707],[52.2875,18.296924],[52.243262,18.396826],[52.199023,18.49668],[52.154688,18.596582],[52.110449,18.696484],[52.066211,18.796387],[52.021875,18.896289],[51.977637,18.996143],[52.118555,19.043164],[52.290625,19.100488],[52.462695,19.157812],[52.634668,19.215137],[52.806738,19.272461],[52.978711,19.329785],[53.150781,19.387158],[53.322852,19.444482],[53.494824,19.501807],[53.666895,19.559131],[53.838867,19.616504],[54.010938,19.673828],[54.183008,19.731152],[54.35498,19.788477],[54.527051,19.845801],[54.699023,19.903125],[54.871094,19.960498],[54.977344,19.995947],[55.021484,20.129248],[55.058203,20.239941],[55.094727,20.350635],[55.131445,20.461328],[55.168066,20.572021],[55.20459,20.682715],[55.241211,20.793408],[55.27793,20.904102],[55.314453,21.014795],[55.351074,21.125537],[55.387695,21.23623],[55.424316,21.346924],[55.460938,21.457617],[55.497559,21.568311],[55.53418,21.679004],[55.570801,21.789697],[55.607422,21.900391],[55.641016,22.001855],[55.577734,22.099512],[55.492773,22.230664],[55.403809,22.367822],[55.320117,22.496924],[55.259277,22.590918],[55.18584,22.704102],[55.194043,22.85],[55.192188,22.922949],[55.199902,23.034766],[55.270215,23.189941],[55.353223,23.387451],[55.413867,23.51875],[55.466309,23.63291],[55.508496,23.724609],[55.531641,23.819043],[55.519336,23.885498],[55.491797,23.909668],[55.468457,23.941113],[55.547852,23.991357],[55.696582,24.024121],[55.779102,24.01709],[55.894141,24.041406],[55.985156,24.063379],[55.992188,24.092969],[55.966309,24.142627],[55.928613,24.215137],[55.799707,24.222656],[55.76084,24.242676],[55.805664,24.349805],[55.804004,24.383545],[55.786816,24.423535],[55.768164,24.490625],[55.777539,24.577344],[55.803906,24.63623],[55.804199,24.683594],[55.791602,24.781299],[55.795703,24.868115],[55.822852,24.911279],[55.870703,24.951416],[55.91582,24.971777],[55.963086,24.970264],[56.000586,24.953223],[56.016699,24.907715],[56.006348,24.876416],[55.979688,24.87207],[55.970313,24.858936],[56.008398,24.798242],[56.063867,24.73877],[56.106543,24.748682],[56.154492,24.795508],[56.204688,24.833301],[56.267871,24.866699],[56.313574,24.931299],[56.35293,24.973291],[56.387988,24.979199],[56.489844,24.716357],[56.640625,24.470312],[56.774121,24.33457],[56.9125,24.150195],[57.123047,23.980713],[57.219824,23.922754],[57.611328,23.803662],[57.825098,23.759131],[58.12041,23.716553],[58.324512,23.623828],[58.393164,23.618164],[58.5,23.645654],[58.578027,23.643457],[58.773047,23.517187],[58.830371,23.397461],[58.911523,23.33418],[58.983398,23.234717],[59.029883,23.130566],[59.194727,22.971875],[59.310938,22.793359],[59.429395,22.66084],[59.535156,22.578516],[59.695605,22.546143],[59.823242,22.508984],[59.8375,22.420557],[59.824414,22.305176],[59.8,22.219922],[59.680859,22.053809],[59.652539,21.951367],[59.517578,21.782324],[59.371484,21.498828],[59.304492,21.435352],[59.06875,21.289062],[58.895703,21.112793],[58.69043,20.807129],[58.53418,20.503906],[58.474219,20.406885],[58.34873,20.386914],[58.266016,20.395459],[58.208984,20.423975],[58.231641,20.506836],[58.24502,20.599219],[58.169434,20.589502],[58.10293,20.570361],[57.947168,20.343604],[57.861816,20.244141],[57.843652,20.117725],[57.802148,19.95459],[57.741211,19.804492],[57.71416,19.678418],[57.715137,19.606934],[57.76084,19.432227],[57.763965,19.25332],[57.790332,19.145947],[57.811621,19.01709],[57.738477,18.977344],[57.675781,18.957861],[57.42793,18.943799],[57.176563,18.902588],[56.957227,18.827832],[56.825977,18.753516],[56.655078,18.587354],[56.550781,18.165967],[56.383496,17.987988],[56.270313,17.950781],[55.997656,17.935205],[55.613867,17.886084],[55.479102,17.843262],[55.255371,17.585645],[55.238184,17.504736],[55.281445,17.44624],[55.295605,17.381592],[55.275195,17.320898],[55.17373,17.157617],[55.06416,17.038916],[54.771875,16.964648],[54.664648,17.008887],[54.566504,17.03125],[54.376953,17.033643],[54.068164,17.005518],[53.954395,16.917822],[53.775391,16.855713],[53.609863,16.759961],[53.297754,16.72334],[53.085645,16.648389]]],[[[56.297852,25.650684],[56.278516,25.627734],[56.249512,25.625391],[56.183594,25.644922],[56.144629,25.690527],[56.151953,25.746094],[56.154102,25.848486],[56.172559,25.945166],[56.16748,26.047461],[56.116504,26.068164],[56.080469,26.062646],[56.164453,26.207031],[56.197266,26.229199],[56.228418,26.219775],[56.305566,26.235205],[56.346484,26.313623],[56.378711,26.356348],[56.413086,26.351172],[56.429785,26.327197],[56.417773,26.208154],[56.416406,26.10874],[56.373633,25.80459],[56.329297,25.751953],[56.307227,25.709326],[56.297852,25.650684]]],[[[56.281836,25.235547],[56.240234,25.208838],[56.210547,25.213281],[56.216504,25.266699],[56.234277,25.303809],[56.277344,25.300879],[56.287793,25.278613],[56.281836,25.235547]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Norway","SOV_A3":"NOR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":null,"ADMIN":"Norway","ADM0_A3":"NOR","GEOU_DIF":0,"GEOUNIT":"Norway","GU_A3":"NOR","SU_DIF":0,"SUBUNIT":"Norway","SU_A3":"NOR","BRK_DIFF":0,"NAME":"Norway","NAME_LONG":"Norway","BRK_A3":"NOR","BRK_NAME":"Norway","BRK_GROUP":null,"ABBREV":"Nor.","POSTAL":"N","FORMAL_EN":"Kingdom of Norway","FORMAL_FR":null,"NAME_CIAWF":"Norway","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Norway","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":3,"MAPCOLOR9":8,"MAPCOLOR13":12,"POP_EST":5347896,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":403336,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"-99","ISO_A2":"-99","ISO_A2_EH":"NO","ISO_A3":"-99","ISO_A3_EH":"NOR","ISO_N3":"-99","ISO_N3_EH":"578","UN_A3":"-99","WB_A2":"-99","WB_A3":"-99","WOE_ID":-90,"WOE_ID_EH":23424910,"WOE_NOTE":"Does not include Svalbard, Jan Mayen, or Bouvet Islands (28289410).","ADM0_ISO":"NOR","ADM0_DIFF":null,"ADM0_TLC":"NOR","ADM0_A3_US":"NOR","ADM0_A3_FR":"NOR","ADM0_A3_RU":"NOR","ADM0_A3_ES":"NOR","ADM0_A3_CN":"NOR","ADM0_A3_TW":"NOR","ADM0_A3_IN":"NOR","ADM0_A3_NP":"NOR","ADM0_A3_PK":"NOR","ADM0_A3_DE":"NOR","ADM0_A3_GB":"NOR","ADM0_A3_BR":"NOR","ADM0_A3_IL":"NOR","ADM0_A3_PS":"NOR","ADM0_A3_SA":"NOR","ADM0_A3_EG":"NOR","ADM0_A3_MA":"NOR","ADM0_A3_PT":"NOR","ADM0_A3_AR":"NOR","ADM0_A3_JP":"NOR","ADM0_A3_KO":"NOR","ADM0_A3_VN":"NOR","ADM0_A3_TR":"NOR","ADM0_A3_ID":"NOR","ADM0_A3_PL":"NOR","ADM0_A3_GR":"NOR","ADM0_A3_IT":"NOR","ADM0_A3_NL":"NOR","ADM0_A3_SE":"NOR","ADM0_A3_BD":"NOR","ADM0_A3_UA":"NOR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7,"LABEL_X":9.679975,"LABEL_Y":61.357092,"NE_ID":1159321109,"WIKIDATAID":"Q20","NAME_AR":"النرويج","NAME_BN":"নরওয়ে","NAME_DE":"Norwegen","NAME_EN":"Norway","NAME_ES":"Noruega","NAME_FA":"نروژ","NAME_FR":"Norvège","NAME_EL":"Νορβηγία","NAME_HE":"נורווגיה","NAME_HI":"नॉर्वे","NAME_HU":"Norvégia","NAME_ID":"Norwegia","NAME_IT":"Norvegia","NAME_JA":"ノルウェー","NAME_KO":"노르웨이","NAME_NL":"Noorwegen","NAME_PL":"Norwegia","NAME_PT":"Noruega","NAME_RU":"Норвегия","NAME_SV":"Norge","NAME_TR":"Norveç","NAME_UK":"Норвегія","NAME_UR":"ناروے","NAME_VI":"Na Uy","NAME_ZH":"挪威","NAME_ZHT":"挪威","FCLASS_ISO":"Unrecognized","TLC_DIFF":null,"FCLASS_TLC":"Unrecognized","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-9.098877,58.020947,33.629297,80.477832],"geometry":{"type":"MultiPolygon","coordinates":[[[[20.622168,69.036865],[20.491992,69.033301],[20.116699,69.020898],[20.282324,68.934326],[20.337109,68.899658],[20.348047,68.84873],[20.319434,68.754053],[20.240039,68.673145],[20.147461,68.607324],[19.968848,68.542041],[20.240039,68.477539],[20.055957,68.390381],[19.969824,68.356396],[19.87002,68.362256],[19.691211,68.392432],[19.258984,68.465332],[19.052637,68.492725],[18.868262,68.501123],[18.769824,68.500049],[18.378613,68.562402],[18.303027,68.55542],[18.162598,68.528418],[18.14707,68.467773],[18.155957,68.316846],[18.17666,68.200635],[18.125,68.133447],[18.073242,68.087842],[17.916699,67.964893],[17.564746,68.048438],[17.324609,68.103809],[17.170508,68.030127],[16.783594,67.89502],[16.585547,67.62832],[16.574121,67.61958],[16.457129,67.551758],[16.307129,67.520605],[16.193555,67.505176],[16.127441,67.42583],[16.281543,67.312061],[16.360645,67.252002],[16.434277,67.155078],[16.420703,67.093359],[16.403516,67.05498],[16.237695,66.976416],[15.88418,66.768848],[15.557031,66.5521],[15.422949,66.489844],[15.483789,66.305957],[15.374902,66.252051],[15.15332,66.191064],[15.040039,66.167529],[14.917969,66.153711],[14.543262,66.129346],[14.609961,65.932275],[14.635156,65.84502],[14.63457,65.793262],[14.595801,65.742871],[14.549512,65.646387],[14.479688,65.301465],[14.42627,65.264355],[14.352441,65.17085],[14.115137,64.946143],[13.924805,64.796777],[13.650293,64.581543],[13.873535,64.513574],[14.077637,64.464014],[14.119922,64.387744],[14.148047,64.260303],[14.141211,64.173535],[14.063281,64.095508],[14.002734,64.040723],[13.960547,64.014014],[13.670703,64.040625],[13.299609,64.074805],[13.203516,64.075098],[12.987598,64.050488],[12.792773,64],[12.690039,63.957422],[12.6625,63.940479],[12.532715,63.843555],[12.301953,63.671191],[12.175195,63.595947],[12.212109,63.492236],[11.999902,63.291699],[12.138672,63.08916],[12.144629,63.08252],[12.218164,63.000635],[12.141016,62.947852],[12.108594,62.919482],[12.119629,62.825928],[12.139844,62.721338],[12.121875,62.66001],[12.114551,62.591895],[12.303516,62.285596],[12.301367,62.21377],[12.291992,62.167432],[12.233691,61.976855],[12.155371,61.720752],[12.29209,61.653467],[12.486816,61.572998],[12.596094,61.541309],[12.75752,61.445703],[12.880762,61.352295],[12.863672,61.290283],[12.828223,61.221826],[12.776367,61.173975],[12.727832,61.108252],[12.706055,61.059863],[12.683008,61.046826],[12.467578,61.041504],[12.353711,61.023193],[12.294141,61.002686],[12.314648,60.892139],[12.445312,60.689648],[12.553809,60.545654],[12.588672,60.450732],[12.552832,60.354492],[12.51582,60.305225],[12.514648,60.238867],[12.486133,60.106787],[12.402051,60.040039],[12.291992,59.967236],[12.169238,59.912891],[12.071875,59.897607],[11.988281,59.891309],[11.932129,59.863672],[11.88125,59.782471],[11.834277,59.697168],[11.680762,59.592285],[11.684863,59.555762],[11.743359,59.431445],[11.798145,59.289893],[11.751855,59.157568],[11.712207,59.018652],[11.642773,58.926074],[11.543555,58.893018],[11.470703,58.909521],[11.388281,59.036523],[11.386426,59.065723],[11.365918,59.104541],[11.132129,59.143213],[11.09082,59.141797],[10.998926,59.164453],[10.94502,59.17085],[10.834473,59.183936],[10.742578,59.295996],[10.644922,59.389209],[10.631055,59.428174],[10.634375,59.60249],[10.604492,59.680029],[10.595313,59.764551],[10.533887,59.695801],[10.569531,59.587109],[10.49375,59.541504],[10.398145,59.519336],[10.407129,59.455664],[10.446387,59.443604],[10.45459,59.37749],[10.431348,59.279639],[10.243164,59.062061],[10.205176,59.038672],[10.179395,59.009277],[10.083105,59.028809],[9.95957,58.968213],[9.842578,58.958496],[9.800195,59.027051],[9.635156,59.117773],[9.557227,59.112695],[9.627148,59.06792],[9.696094,59.009717],[9.656934,58.971191],[9.618457,58.946045],[9.551074,58.933008],[9.309961,58.856836],[9.395801,58.805664],[9.322949,58.747559],[9.238672,58.739014],[9.19375,58.711865],[9.178125,58.675],[8.928418,58.569971],[8.521387,58.300586],[8.312207,58.224463],[8.166113,58.145313],[8.037402,58.147266],[7.875586,58.07998],[7.465918,58.020947],[7.194141,58.047656],[7.004883,58.024219],[6.903418,58.070508],[6.890234,58.102295],[6.895313,58.120752],[6.912305,58.142871],[6.877051,58.150732],[6.802832,58.154541],[6.771094,58.132227],[6.766797,58.081543],[6.731445,58.068311],[6.590527,58.097314],[6.555078,58.123437],[6.605762,58.176367],[6.69248,58.224023],[6.676758,58.233789],[6.659863,58.262744],[6.617578,58.266406],[6.491504,58.259424],[6.389063,58.267969],[6.054688,58.375146],[5.976562,58.432324],[5.706836,58.523633],[5.585938,58.62041],[5.517285,58.726514],[5.522461,58.822656],[5.555566,58.975195],[5.612207,59.012891],[5.854297,58.959473],[6.099023,58.870264],[6.137305,58.874658],[6.21416,58.944678],[6.363281,59.000928],[6.321094,59.016455],[6.099414,58.951953],[6.016992,58.987695],[5.88916,59.060498],[5.88916,59.097949],[5.94873,59.135449],[5.968555,59.186133],[5.937305,59.233984],[5.951855,59.299072],[6.050684,59.368164],[6.198926,59.438086],[6.305664,59.505566],[6.415332,59.547119],[6.403906,59.560986],[6.278516,59.534521],[6.158594,59.489648],[6.017383,59.414453],[5.845215,59.353467],[5.717969,59.329834],[5.657324,59.310254],[5.564063,59.291211],[5.467578,59.203809],[5.362305,59.166357],[5.173242,59.162549],[5.131641,59.226465],[5.185059,59.453662],[5.242188,59.564307],[5.304883,59.642578],[5.403516,59.655762],[5.472461,59.713086],[5.529688,59.713086],[5.579492,59.686621],[5.772168,59.660938],[5.867285,59.733984],[5.991016,59.744678],[6.216602,59.818359],[6.211914,59.831787],[6.059277,59.815576],[5.966699,59.813184],[5.833984,59.794678],[5.763477,59.80791],[5.730469,59.863086],[5.783594,59.912793],[5.996484,60.031494],[6.069922,60.083496],[6.111816,60.13208],[6.105176,60.165137],[6.140527,60.233496],[6.34873,60.352979],[6.518066,60.407568],[6.573633,60.360596],[6.526367,60.213623],[6.526855,60.15293],[6.660938,60.367236],[6.719922,60.418164],[6.787109,60.454102],[6.949707,60.478223],[6.995703,60.511963],[6.806348,60.500781],[6.346973,60.419092],[6.15332,60.34624],[6.101758,60.290137],[5.967383,60.205566],[5.904395,60.150635],[5.876563,60.07002],[5.800879,60.026221],[5.698828,60.01001],[5.557031,59.907764],[5.494531,59.825586],[5.353418,59.760107],[5.263867,59.709766],[5.234473,59.691797],[5.186035,59.642285],[5.145801,59.638818],[5.110742,59.667822],[5.104883,59.731689],[5.119238,59.833691],[5.187109,59.90708],[5.219531,59.97876],[5.174414,60.045703],[5.205664,60.087939],[5.26543,60.086475],[5.376465,60.067236],[5.494531,60.070312],[5.688574,60.123193],[5.657617,60.154102],[5.573828,60.158496],[5.417383,60.154102],[5.28584,60.205713],[5.183594,60.308398],[5.137109,60.445605],[5.168164,60.484814],[5.546484,60.624561],[5.64834,60.687988],[5.589355,60.694287],[5.447363,60.617334],[5.244043,60.56958],[5.11582,60.635986],[5.049121,60.70752],[5.010742,60.858545],[5.024609,60.936133],[5.008594,61.038184],[5.09541,61.071338],[5.19248,61.053711],[5.288184,61.047168],[5.505273,61.056104],[5.983984,61.117334],[6.292578,61.080957],[6.417969,61.084277],[6.609863,61.137012],[6.777832,61.142432],[6.903418,61.102148],[6.97207,61.055957],[6.980566,60.994141],[7.038672,60.95293],[7.07793,60.966309],[7.04668,61.015283],[7.040137,61.091162],[7.54502,61.177148],[7.604492,61.210547],[7.403906,61.222168],[7.346582,61.300586],[7.452539,61.419238],[7.442578,61.434619],[7.331152,61.372021],[7.27627,61.283936],[7.298047,61.213623],[7.275977,61.180957],[7.173535,61.165967],[6.942578,61.160547],[6.794336,61.190381],[6.657031,61.206592],[6.610254,61.229102],[6.625879,61.279297],[6.599902,61.289648],[6.543066,61.244531],[6.492578,61.15459],[6.383496,61.133887],[6.08252,61.167285],[5.646777,61.147607],[5.45127,61.102344],[5.324609,61.108252],[5.106738,61.187549],[5.02168,61.250586],[4.989941,61.377686],[5.002734,61.433594],[5.172461,61.457129],[5.258301,61.455469],[5.338672,61.485498],[5.267578,61.505029],[5.167578,61.543359],[5.099414,61.620166],[4.99668,61.645215],[4.927832,61.710693],[4.910352,61.80957],[4.930078,61.87832],[4.985059,61.900439],[5.116992,61.8854],[5.465332,61.896924],[5.793262,61.8271],[6.01582,61.7875],[6.466699,61.807422],[6.730762,61.869775],[6.682324,61.887012],[6.395898,61.850977],[6.131152,61.852441],[5.664453,61.9229],[5.473047,61.945605],[5.266895,61.935596],[5.15957,61.956982],[5.096484,62.02666],[5.143164,62.159912],[5.240918,62.188672],[5.293848,62.153906],[5.357715,62.151709],[5.422363,62.207373],[5.484277,62.239111],[5.533301,62.310889],[5.718164,62.378906],[5.796289,62.384668],[5.908301,62.416016],[5.979785,62.407129],[6.025586,62.375684],[6.083496,62.349609],[6.208984,62.352783],[6.580078,62.407275],[6.62002,62.423291],[6.692383,62.468066],[6.457129,62.448096],[6.261719,62.416309],[6.136133,62.407471],[6.118457,62.447168],[6.164746,62.482422],[6.2375,62.519922],[6.272852,62.583838],[6.35293,62.611133],[6.439453,62.609668],[6.618359,62.621289],[6.744629,62.637891],[6.961133,62.626758],[7.283789,62.602295],[7.491797,62.542822],[7.570117,62.548193],[7.653125,62.564014],[7.690723,62.585596],[7.527441,62.610303],[7.518164,62.645508],[7.538379,62.67207],[7.804688,62.720996],[8.095508,62.731836],[8.045508,62.77124],[7.408398,62.711768],[7.24209,62.752344],[7.11084,62.752002],[7.024902,62.728809],[6.77998,62.700732],[6.734961,62.720703],[6.781543,62.789648],[6.928223,62.902734],[6.94043,62.930469],[7.008496,62.957666],[7.389063,63.023291],[7.571875,63.099512],[7.654297,63.10918],[7.736035,63.103857],[7.860352,63.112793],[8.100586,63.090967],[8.211133,62.995508],[8.310547,62.965527],[8.623145,62.84624],[8.60918,62.880566],[8.338574,63.042187],[8.235156,63.082178],[8.158008,63.161523],[8.184473,63.236523],[8.271484,63.286572],[8.580176,63.313379],[8.635547,63.342334],[8.641016,63.39209],[8.59375,63.426123],[8.480176,63.42417],[8.386523,63.445264],[8.360742,63.498877],[8.398145,63.535107],[8.576172,63.601172],[8.673633,63.622607],[8.842383,63.645898],[9.13584,63.593652],[9.158105,63.56626],[9.075879,63.500391],[9.08418,63.463428],[9.156055,63.459326],[9.323633,63.570361],[9.520703,63.585693],[9.602246,63.60957],[9.696875,63.624561],[9.832227,63.52417],[9.891504,63.492041],[9.936035,63.478857],[9.979199,63.395264],[10.020996,63.39082],[10.080566,63.432715],[10.188574,63.454785],[10.340039,63.469336],[10.590918,63.447217],[10.704492,63.463574],[10.760156,63.461279],[10.706738,63.536328],[10.673633,63.558008],[10.725293,63.625],[10.779199,63.651172],[10.952539,63.698193],[11.117871,63.719189],[11.225781,63.763818],[11.370703,63.804834],[11.347949,63.837695],[11.307617,63.875732],[11.213867,63.878125],[11.175586,63.898877],[11.294629,63.948193],[11.457617,64.002979],[11.429199,64.024512],[11.306641,64.048877],[11.213574,64.030518],[11.075195,63.988135],[10.914258,63.921094],[10.966699,63.901562],[11.047266,63.845215],[10.934863,63.770215],[10.33916,63.571045],[10.055078,63.512695],[9.924023,63.521777],[9.892773,63.576221],[9.832324,63.616504],[9.76748,63.699512],[9.657227,63.697314],[9.594629,63.678955],[9.567285,63.706152],[9.614746,63.794824],[9.708008,63.864893],[9.864453,63.917822],[9.939453,63.981738],[10.009961,64.083154],[10.23623,64.179639],[10.565625,64.418311],[10.833984,64.494482],[10.932324,64.577734],[11.09043,64.614551],[11.225391,64.679492],[11.331348,64.685937],[11.523828,64.744385],[11.63291,64.813916],[11.561719,64.818262],[11.39248,64.772998],[11.296777,64.754785],[11.303516,64.829395],[11.349902,64.905908],[11.489355,64.97583],[12.159668,65.178955],[12.226562,65.145361],[12.306543,65.085986],[12.508398,65.099414],[12.738379,65.214404],[12.915527,65.339258],[12.819824,65.31748],[12.715332,65.266357],[12.511719,65.195312],[12.417578,65.184082],[12.363867,65.193311],[12.333984,65.240723],[12.263379,65.256104],[12.199609,65.245459],[12.133887,65.27915],[12.122168,65.362354],[12.20625,65.48623],[12.272852,65.568164],[12.344824,65.630176],[12.627734,65.806152],[12.688867,65.902197],[12.816797,65.952881],[12.983008,65.941602],[13.033105,65.95625],[12.976074,66.019189],[12.794922,66.069092],[12.783789,66.100439],[13.387109,66.182764],[13.674414,66.17998],[13.759668,66.221045],[13.91582,66.247363],[14.03418,66.297559],[13.973145,66.319727],[13.681348,66.273584],[13.498926,66.251904],[13.416406,66.252588],[13.352051,66.236719],[13.118848,66.230664],[13.068164,66.430811],[13.104688,66.539404],[13.191602,66.537158],[13.211426,66.64082],[13.311816,66.701855],[13.450391,66.715527],[13.520215,66.74165],[13.621094,66.794824],[13.787988,66.782471],[13.959473,66.794336],[13.916992,66.819385],[13.704102,66.85166],[13.651563,66.90708],[13.72666,66.938037],[13.808398,66.960791],[13.880176,66.964893],[14.022363,67.073096],[14.108789,67.119238],[14.205566,67.11123],[14.340332,67.158936],[14.472656,67.142676],[14.600684,67.173877],[14.775586,67.194482],[15.415723,67.202441],[15.434766,67.24668],[15.300098,67.256934],[14.824414,67.268311],[14.581543,67.267432],[14.479297,67.255957],[14.441699,67.271387],[14.44834,67.297852],[14.536621,67.339746],[14.578516,67.386035],[14.75498,67.499023],[14.961914,67.574268],[15.120508,67.555029],[15.28916,67.483154],[15.409375,67.47417],[15.465332,67.450928],[15.55293,67.351758],[15.594434,67.348535],[15.575684,67.443848],[15.691504,67.521387],[15.661328,67.542822],[15.487305,67.514795],[15.354004,67.543945],[15.24873,67.602148],[15.218652,67.655371],[15.284082,67.707959],[15.345801,67.734424],[15.303906,67.765283],[15.04082,67.682568],[14.854688,67.66333],[14.781348,67.674902],[14.821094,67.749854],[14.798926,67.809326],[15.048438,67.955762],[15.134277,67.972705],[15.274414,67.960938],[15.400879,67.919629],[15.506641,67.926221],[15.621387,67.948291],[15.605762,67.987891],[15.356934,68.003613],[15.292871,68.036475],[15.316016,68.06875],[15.486816,68.102832],[15.656641,68.164355],[15.85127,68.182178],[16.00791,68.228711],[16.038086,68.218164],[16.064551,68.199902],[16.120801,68.027344],[16.260742,67.886572],[16.312305,67.881445],[16.258594,68.001221],[16.308691,68.035645],[16.372168,68.061816],[16.391992,68.091602],[16.319238,68.101758],[16.259766,68.144531],[16.174805,68.28125],[16.203809,68.316748],[16.387891,68.389551],[16.618848,68.406299],[16.864941,68.355273],[16.951367,68.354687],[17.094043,68.368408],[17.336133,68.410352],[17.478516,68.426318],[17.552832,68.42627],[17.571191,68.447461],[17.502344,68.461084],[17.480176,68.474316],[17.426172,68.481934],[17.202344,68.459277],[16.584863,68.466455],[16.525293,68.490674],[16.514355,68.532568],[16.579883,68.592676],[16.651855,68.625781],[16.884668,68.6854],[17.131152,68.693457],[17.39082,68.799365],[17.490039,68.87876],[17.546289,69.001123],[17.70459,69.100049],[18.101465,69.156299],[18.11748,69.181201],[18.075391,69.232617],[18.078711,69.325244],[18.1875,69.433105],[18.259766,69.470605],[18.293164,69.475098],[18.378711,69.439844],[18.482617,69.364844],[18.645508,69.321875],[18.858984,69.314453],[18.915918,69.335596],[18.75,69.378418],[18.624414,69.434375],[18.614453,69.490576],[18.674023,69.520361],[18.766602,69.517041],[18.882812,69.52334],[18.991113,69.561133],[19.006836,69.587695],[19.011328,69.62373],[19.038379,69.6604],[19.197266,69.747852],[19.687012,69.804736],[19.722461,69.781641],[19.695996,69.612939],[19.639746,69.503809],[19.641504,69.424023],[19.736816,69.503809],[19.864648,69.722119],[19.960547,69.824609],[20.068945,69.883447],[20.146387,69.896729],[20.223047,69.927197],[20.324219,69.945312],[20.355176,69.921924],[20.387207,69.867627],[20.332715,69.676953],[20.338184,69.61665],[20.277148,69.53584],[20.04375,69.355664],[20.054492,69.332666],[20.107227,69.341211],[20.197656,69.370947],[20.486719,69.54209],[20.739453,69.520508],[20.742578,69.534521],[20.661523,69.584717],[20.5625,69.632812],[20.532715,69.692334],[20.545996,69.851074],[20.62207,69.913916],[20.840332,69.907324],[20.971094,69.916016],[21.032129,69.887451],[21.163086,69.889502],[21.253711,70.003223],[21.43291,70.013184],[21.590234,69.938037],[21.77959,69.887451],[21.931738,69.814697],[21.974707,69.83457],[21.892578,70.004248],[21.802734,70.066064],[21.607813,70.098193],[21.400391,70.174463],[21.346289,70.208252],[21.355762,70.233398],[21.53877,70.257666],[21.780273,70.229883],[21.995508,70.293359],[22.054395,70.275977],[22.219434,70.30918],[22.321973,70.264502],[22.384766,70.277734],[22.421191,70.337598],[22.68457,70.374756],[22.85166,70.340479],[22.941211,70.30498],[22.982813,70.236768],[23.046484,70.101855],[23.176953,70.029053],[23.25791,69.993311],[23.353906,69.983398],[23.400195,70.019775],[23.310254,70.063574],[23.286035,70.104834],[23.329102,70.207227],[23.379395,70.247461],[23.66123,70.399756],[23.897168,70.47876],[24.038477,70.485352],[24.285547,70.662402],[24.355566,70.69458],[24.42002,70.702002],[24.403516,70.745312],[24.268164,70.772705],[24.263477,70.826318],[24.441797,70.891553],[24.658008,71.001025],[24.764746,71.008447],[24.831641,70.978027],[25.042188,70.928613],[25.171191,70.872021],[25.264648,70.843506],[25.325391,70.849414],[25.375586,70.891943],[25.435938,70.911865],[25.569824,70.900684],[25.649707,70.87334],[25.711914,70.869727],[25.768164,70.853174],[25.781445,70.816797],[25.665625,70.777148],[25.468262,70.671973],[25.273535,70.552393],[25.209277,70.489404],[25.146387,70.324023],[24.994238,70.218213],[24.982715,70.143994],[25.043848,70.109033],[25.211816,70.136475],[25.418848,70.235498],[25.470508,70.340576],[25.988086,70.625391],[26.230859,70.782617],[26.506934,70.912793],[26.661328,70.939746],[26.733984,70.853564],[26.675488,70.740967],[26.558203,70.669141],[26.644629,70.63623],[26.628125,70.550879],[26.601172,70.503467],[26.583984,70.453809],[26.585059,70.41001],[26.666113,70.42168],[26.989355,70.511377],[27.071289,70.608447],[27.147266,70.681201],[27.183691,70.744043],[27.309375,70.803564],[27.546484,70.804004],[27.555664,70.827393],[27.269043,70.91001],[27.235254,70.947217],[27.331641,70.996729],[27.59707,71.091309],[27.733496,71.080859],[27.815039,71.059375],[28.141699,71.043018],[28.392285,70.975293],[28.382715,70.869434],[28.326855,70.825195],[28.271875,70.797949],[27.950977,70.717578],[27.898047,70.67793],[27.998828,70.664258],[28.215625,70.704346],[28.271777,70.667969],[28.202734,70.576904],[28.191016,70.440186],[28.166016,70.3604],[28.166016,70.287646],[28.192969,70.248584],[28.280078,70.403418],[28.309863,70.443066],[28.437305,70.501367],[28.484766,70.618799],[28.609375,70.759668],[28.749805,70.841504],[28.831543,70.863965],[29.102344,70.860742],[29.218555,70.829932],[29.321094,70.761475],[29.397656,70.734131],[29.639063,70.705029],[29.721973,70.668555],[29.7375,70.646826],[29.796484,70.642529],[29.959375,70.694385],[30.065137,70.702979],[30.237695,70.622168],[30.203027,70.562305],[30.213184,70.543311],[30.42207,70.547168],[30.595898,70.523682],[30.926367,70.401123],[30.960645,70.343848],[30.944141,70.274414],[30.468945,70.197852],[30.262988,70.124707],[29.925879,70.096484],[28.781152,70.14541],[28.804297,70.092529],[29.601367,69.976758],[29.646875,69.943701],[29.621387,69.874072],[29.620996,69.818213],[29.635938,69.780127],[29.694629,69.74458],[29.79209,69.727881],[29.990332,69.73667],[30.088281,69.717578],[30.155176,69.745947],[30.180078,69.841162],[30.237598,69.862207],[30.348828,69.83457],[30.397266,69.732812],[30.42832,69.722266],[30.484375,69.794873],[30.594531,69.789648],[30.714453,69.795703],[30.869727,69.783447],[30.924121,69.651758],[30.922461,69.605811],[30.89668,69.56123],[30.860742,69.538428],[30.788867,69.528516],[30.61543,69.532568],[30.379688,69.584717],[30.227539,69.633789],[30.180176,69.63584],[30.159766,69.629883],[30.196484,69.580566],[30.186719,69.542773],[30.16377,69.501611],[30.131836,69.464258],[30.087305,69.432861],[29.994043,69.39248],[29.832715,69.360449],[29.388281,69.298145],[29.353027,69.270605],[29.209961,69.097021],[29.170898,69.071533],[29.118555,69.049951],[28.96582,69.021973],[28.891895,69.060596],[28.832617,69.118994],[28.846289,69.176904],[29.024902,69.287988],[29.191797,69.366699],[29.238867,69.393945],[29.333398,69.472998],[29.141602,69.671436],[28.800391,69.731494],[28.411719,69.822754],[28.269141,69.871436],[28.047266,69.97168],[27.889941,70.06167],[27.747852,70.064844],[27.591699,70.042236],[27.348047,69.960059],[27.205664,69.918701],[27.127539,69.906494],[27.108691,69.904687],[26.934277,69.928125],[26.740234,69.933057],[26.584277,69.926318],[26.525391,69.915039],[26.308203,69.781934],[26.156152,69.714697],[26.072461,69.691553],[26.011523,69.652637],[25.961523,69.588623],[25.850195,69.366504],[25.767188,69.282666],[25.748633,69.231445],[25.768164,69.076123],[25.74834,68.990137],[25.64668,68.919141],[25.575293,68.887158],[25.480859,68.880615],[25.357129,68.862451],[25.249121,68.821338],[25.172852,68.765283],[25.086914,68.6396],[24.941406,68.593262],[24.802441,68.606494],[24.703223,68.652832],[24.490527,68.688672],[24.332031,68.711523],[24.154102,68.760889],[23.997363,68.798438],[23.854004,68.805908],[23.772559,68.758398],[23.707031,68.713867],[23.4625,68.677637],[23.324023,68.648975],[23.144336,68.642578],[23.07168,68.674365],[22.811035,68.695312],[22.500684,68.720215],[22.410938,68.719873],[22.38291,68.776611],[22.300391,68.855859],[22.079688,68.992773],[21.989453,69.041113],[21.819727,69.154492],[21.621777,69.270703],[21.59375,69.273584],[21.46123,69.27749],[21.266797,69.273682],[21.14375,69.247266],[21.066113,69.214111],[21.052637,69.186572],[21.127832,69.080811],[21.104492,69.054443],[21.065723,69.041748],[20.889258,69.071436],[20.675879,69.069482],[20.622168,69.036865]]],[[[4.958691,61.08457],[4.870117,61.071924],[4.799023,61.082715],[4.824414,61.178223],[4.861621,61.193848],[4.91543,61.199365],[4.973242,61.148242],[4.958691,61.08457]]],[[[5.08584,60.307568],[5.089063,60.18877],[4.996973,60.197754],[4.955566,60.243311],[4.943555,60.272412],[4.950781,60.341162],[4.930078,60.412061],[4.957227,60.447266],[4.990625,60.452051],[5.050195,60.388965],[5.08584,60.307568]]],[[[29.956152,69.796777],[29.766211,69.767529],[29.744238,69.791602],[29.785938,69.829053],[29.83584,69.905566],[29.913965,69.902441],[29.992969,69.873242],[30.055176,69.838379],[29.956152,69.796777]]],[[[11.967969,65.626514],[11.901855,65.595703],[11.77832,65.604541],[11.765137,65.630957],[11.800391,65.683887],[11.875391,65.705908],[11.972363,65.701562],[12.003223,65.679443],[11.967969,65.626514]]],[[[8.470801,63.667139],[8.356152,63.664795],[8.287109,63.687158],[8.45127,63.731836],[8.708887,63.774316],[8.733398,63.801318],[8.764648,63.804639],[8.80918,63.771436],[8.814844,63.725977],[8.786523,63.703467],[8.470801,63.667139]]],[[[8.102734,63.337598],[8.004688,63.336914],[7.888281,63.352344],[7.815332,63.385059],[7.804004,63.413916],[7.938379,63.449805],[8.073535,63.470801],[8.136133,63.431348],[8.140918,63.366406],[8.102734,63.337598]]],[[[23.440527,70.815771],[23.420898,70.784424],[23.387109,70.753906],[23.305176,70.72168],[23.068164,70.594092],[22.928906,70.573535],[22.884766,70.553516],[22.829102,70.541553],[22.656055,70.559033],[22.605371,70.533154],[22.55752,70.515869],[22.432227,70.50918],[22.358691,70.514795],[22.16875,70.562109],[22.055762,70.61333],[21.994531,70.657129],[22.17002,70.656299],[22.232617,70.666895],[22.350293,70.657666],[22.420996,70.702588],[22.570703,70.697168],[22.858105,70.728418],[22.963574,70.710986],[23.204688,70.815479],[23.280176,70.812744],[23.395605,70.842578],[23.440527,70.815771]]],[[[25.586328,71.14209],[25.853516,71.103857],[25.94502,71.104639],[26.077637,71.033154],[26.146875,71.039502],[26.133789,70.995801],[25.999707,70.975098],[25.791309,70.9625],[25.760156,70.953809],[25.582031,70.960791],[25.482031,71.01958],[25.314941,71.034131],[25.315234,71.052979],[25.423438,71.097412],[25.586328,71.14209]]],[[[23.615332,70.549316],[23.633984,70.502539],[23.641016,70.463965],[23.547754,70.408154],[23.332813,70.334961],[23.345117,70.315283],[23.270703,70.296484],[23.15918,70.282617],[23.100293,70.296094],[23.108398,70.358838],[23.090625,70.377637],[23.005957,70.352783],[22.917871,70.384668],[22.917773,70.416748],[22.941016,70.44458],[23.022461,70.486914],[23.158398,70.516064],[23.248047,70.505127],[23.54668,70.61709],[23.578906,70.593652],[23.615332,70.549316]]],[[[24.017578,70.567383],[23.827148,70.52749],[23.716602,70.561865],[23.670117,70.59707],[23.663281,70.675244],[23.68916,70.722803],[23.778418,70.747363],[23.836523,70.729395],[23.852051,70.714355],[23.956445,70.699609],[24.07832,70.650586],[24.017578,70.567383]]],[[[13.872852,68.265332],[13.932324,68.248242],[14.087695,68.253223],[14.118848,68.246826],[14.096777,68.218604],[14.029297,68.187549],[13.887695,68.168506],[13.824023,68.121094],[13.778418,68.10498],[13.656152,68.104785],[13.583984,68.093848],[13.495215,68.05166],[13.424219,68.082764],[13.404395,68.060693],[13.391504,68.02124],[13.352051,68.009668],[13.229395,67.995361],[13.199512,68.087256],[13.255957,68.120605],[13.300195,68.160449],[13.367969,68.166553],[13.428711,68.163232],[13.537988,68.249023],[13.687695,68.273389],[13.784082,68.276123],[13.872852,68.265332]]],[[[12.971777,67.874121],[12.824023,67.82124],[12.87793,67.917773],[12.957715,68.015479],[13.068066,68.071338],[13.122852,68.049414],[13.097754,68.002686],[13.098242,67.956445],[13.074609,67.93457],[12.971777,67.874121]]],[[[15.207129,68.943115],[15.337207,68.842432],[15.396582,68.783594],[15.348438,68.672412],[15.22207,68.616309],[15.027051,68.606348],[14.890234,68.610986],[14.804004,68.637988],[14.793262,68.668262],[14.743457,68.677197],[14.612109,68.63833],[14.520801,68.633057],[14.404688,68.663232],[14.373438,68.711426],[14.49668,68.771875],[14.553711,68.818848],[14.69043,68.814697],[14.724609,68.800098],[14.801855,68.790967],[14.848828,68.847559],[14.837988,68.88667],[14.872363,68.913867],[15.0375,68.894287],[15.037793,69.000537],[15.101855,69.008008],[15.128125,69.003955],[15.175586,68.981543],[15.207129,68.943115]]],[[[19.76748,70.216699],[19.818359,70.20498],[19.868652,70.212256],[19.910449,70.201904],[19.994141,70.149268],[20.084277,70.128564],[20.088477,70.102051],[20.005957,70.076221],[19.897266,70.068457],[19.780859,70.077441],[19.74668,70.110498],[19.71084,70.165332],[19.613477,70.219092],[19.599023,70.266162],[19.683789,70.273584],[19.76748,70.216699]]],[[[20.779199,70.089746],[20.725293,70.066504],[20.642578,70.057031],[20.598047,70.071436],[20.534668,70.080908],[20.464258,70.076562],[20.405078,70.119141],[20.411719,70.154883],[20.492773,70.20332],[20.654883,70.230859],[20.786035,70.219531],[20.819434,70.205469],[20.779199,70.089746]]],[[[19.255078,70.066406],[19.34375,70.011963],[19.422266,70.017188],[19.445898,70.037744],[19.499512,70.0479],[19.607813,70.019141],[19.592285,69.970166],[19.442383,69.908398],[19.334766,69.820264],[19.19707,69.799805],[19.130859,69.810449],[19.007812,69.75957],[18.90918,69.706689],[18.806934,69.639844],[18.800684,69.605371],[18.784766,69.579004],[18.410254,69.552832],[18.274121,69.535498],[18.129883,69.557861],[18.061523,69.6021],[18.083496,69.626123],[18.227441,69.635742],[18.232031,69.676758],[18.268457,69.701807],[18.315039,69.715479],[18.349316,69.767871],[18.40625,69.781543],[18.512402,69.768652],[18.583984,69.806592],[18.624316,69.813037],[18.674023,69.781641],[18.697949,69.824854],[18.674023,69.864307],[18.686523,69.890918],[18.823828,69.960107],[18.883203,70.010547],[18.968652,70.043018],[19.050977,70.037842],[19.074902,70.085693],[19.050977,70.134668],[19.060059,70.166602],[19.132715,70.244141],[19.212695,70.247461],[19.249414,70.178564],[19.255078,70.066406]]],[[[12.50957,65.901953],[12.429492,65.899072],[12.430176,65.939941],[12.476074,65.9771],[12.548828,66.001904],[12.642383,66.008545],[12.74707,66.011377],[12.778809,65.991699],[12.718652,65.963867],[12.50957,65.901953]]],[[[12.419922,66.043262],[12.327344,66.036621],[12.342773,66.080762],[12.417676,66.122656],[12.446387,66.151318],[12.461328,66.18501],[12.527441,66.210547],[12.620801,66.17793],[12.622656,66.122461],[12.576367,66.071924],[12.419922,66.043262]]],[[[11.231445,64.865869],[11.179004,64.838037],[11.0625,64.8604],[10.83252,64.843115],[10.739844,64.870312],[10.813477,64.923242],[11.020996,64.978711],[11.132617,64.976172],[11.246191,64.90791],[11.231445,64.865869]]],[[[17.503027,69.59624],[17.623242,69.539062],[17.677344,69.556543],[17.783691,69.563037],[17.862793,69.542969],[17.927441,69.506641],[18.004102,69.50498],[18.052246,69.45752],[18.076758,69.395752],[18.021094,69.349609],[17.94209,69.328711],[17.920703,69.274316],[17.950684,69.198145],[17.773535,69.172021],[17.568164,69.1604],[17.487891,69.196826],[17.323633,69.130029],[17.160938,69.025928],[17.08252,69.013672],[17.077051,69.046631],[16.960156,69.069385],[16.810449,69.070703],[16.81543,69.095117],[16.842578,69.112354],[16.971777,69.137891],[16.997559,69.190625],[16.974121,69.284717],[16.996875,69.330371],[17.001758,69.361914],[17.083008,69.398828],[17.36084,69.381494],[17.394531,69.416699],[17.373438,69.438867],[17.229883,69.477686],[17.251953,69.503809],[17.355566,69.527148],[17.453613,69.530176],[17.483105,69.569678],[17.488184,69.586865],[17.503027,69.59624]]],[[[15.760352,68.56123],[15.772363,68.554199],[15.908594,68.650488],[16.05957,68.680518],[16.068945,68.714014],[16.127441,68.746436],[16.120801,68.799365],[16.150586,68.842383],[16.227539,68.85376],[16.275586,68.868311],[16.328906,68.876318],[16.425195,68.841553],[16.479688,68.80293],[16.547363,68.716553],[16.519238,68.633008],[16.337988,68.567871],[16.193945,68.538477],[16.048438,68.463672],[15.975293,68.40249],[15.9125,68.389258],[15.872754,68.394238],[15.837402,68.409033],[15.763672,68.409082],[15.68252,68.356006],[15.4375,68.312842],[15.341406,68.325293],[15.337012,68.378223],[15.279688,68.373828],[15.187891,68.3104],[15.098047,68.289209],[15.037695,68.282715],[14.926855,68.306592],[14.628906,68.198486],[14.349512,68.178271],[14.25752,68.190771],[14.257227,68.256934],[14.437793,68.341553],[14.58584,68.400342],[15.095313,68.441406],[15.412598,68.61582],[15.489258,68.805322],[15.564258,68.87373],[15.529004,68.912402],[15.443652,68.919189],[15.438477,68.978564],[15.483008,69.043457],[15.649512,69.132568],[15.741992,69.170508],[15.892676,69.277881],[15.965332,69.302051],[16.048047,69.302051],[16.129492,69.273926],[16.114844,69.216406],[15.992676,69.112646],[15.811719,69.024219],[15.833789,68.960742],[15.905859,68.908496],[15.923535,68.819189],[15.92793,68.733203],[15.790723,68.617041],[15.760352,68.56123]]],[[[-8.953564,70.83916],[-9.045801,70.832666],[-9.098877,70.854883],[-8.964648,70.915918],[-8.520801,71.030664],[-8.343701,71.140137],[-8.001367,71.177686],[-7.978809,71.116895],[-8.0021,71.04126],[-8.302344,70.981152],[-8.635352,70.94043],[-8.953564,70.83916]]],[[[19.219336,74.391016],[19.098535,74.352148],[18.917578,74.410645],[18.797461,74.485693],[18.86123,74.51416],[19.18291,74.51792],[19.261523,74.478955],[19.274707,74.456738],[19.219336,74.391016]]],[[[26.875977,78.648926],[26.729492,78.646484],[26.45957,78.720264],[26.407715,78.784326],[26.455762,78.810498],[26.585938,78.811475],[26.78877,78.723975],[27.007617,78.69751],[26.875977,78.648926]]],[[[32.525977,80.119141],[31.577637,80.081445],[31.481934,80.10791],[33.019141,80.217969],[33.098633,80.228711],[33.383984,80.242334],[33.629297,80.217432],[33.556641,80.198145],[32.525977,80.119141]]],[[[21.608105,78.595703],[21.745605,78.572021],[22.043164,78.576953],[22.207324,78.407666],[22.299512,78.228174],[22.449316,78.215234],[22.73457,78.239941],[22.988867,78.251953],[23.119238,78.238623],[23.35166,78.186279],[23.451953,78.149463],[23.364648,78.120508],[23.151953,78.088086],[23.116699,77.991504],[23.330566,77.957861],[23.683984,77.875439],[23.883008,77.864746],[24.238281,77.898535],[24.571484,77.834424],[24.901855,77.756592],[24.129785,77.658252],[24.061914,77.630615],[23.95498,77.557715],[23.841211,77.497754],[23.736133,77.462354],[23.505176,77.401416],[23.380859,77.380322],[23.101367,77.385059],[22.99668,77.360791],[22.899512,77.311377],[22.801758,77.275781],[22.553711,77.26665],[22.426953,77.315918],[22.468848,77.331104],[22.486621,77.360107],[22.44248,77.429346],[22.678906,77.500146],[22.732617,77.539355],[22.685352,77.553516],[22.620313,77.549609],[22.448242,77.571143],[22.397266,77.570117],[22.25459,77.528857],[22.056836,77.501172],[21.856152,77.494141],[21.049902,77.440967],[20.928125,77.459668],[20.873145,77.565332],[21.201074,77.619482],[21.251465,77.710938],[21.33418,77.771777],[21.430859,77.812109],[21.608398,77.916064],[21.653125,77.923535],[21.210449,78.005762],[21.035449,78.05918],[20.844922,78.165869],[20.786426,78.252148],[20.52832,78.325586],[20.560254,78.419385],[20.372754,78.412012],[20.22793,78.477832],[20.362695,78.514795],[21.046875,78.556738],[21.454785,78.597559],[21.608105,78.595703]]],[[[20.897852,80.249951],[20.998438,80.238818],[21.549219,80.24292],[21.654883,80.218457],[21.69668,80.15918],[21.780664,80.13877],[21.897754,80.132471],[22.190234,80.059717],[22.289746,80.049219],[22.376367,80.089648],[22.442676,80.190283],[22.446191,80.30835],[22.417871,80.365527],[22.450781,80.402246],[22.548828,80.416455],[22.67207,80.412646],[22.792578,80.433008],[22.896875,80.468994],[23.008008,80.473975],[23.251367,80.44668],[23.31543,80.425244],[23.250098,80.380859],[23.224609,80.317627],[23.114551,80.186963],[23.35332,80.178857],[23.687988,80.206543],[23.772949,80.244385],[23.95293,80.30459],[24.142969,80.295166],[24.234082,80.303125],[24.280176,80.329297],[24.297559,80.3604],[24.402637,80.355176],[24.54668,80.295166],[24.613672,80.28584],[24.736328,80.301318],[24.785938,80.300684],[24.907031,80.27666],[25.471289,80.233105],[25.666895,80.209766],[25.751172,80.188037],[25.836328,80.175146],[26.436719,80.175488],[26.86084,80.16001],[27.017188,80.125488],[27.14834,80.059229],[27.198633,79.906592],[27.079883,79.865381],[26.221094,79.677441],[26.005859,79.617041],[25.902051,79.561377],[25.726367,79.439746],[25.641211,79.403027],[25.239063,79.345068],[25.145117,79.338867],[24.842871,79.367236],[24.750586,79.3646],[24.383398,79.301611],[24.256836,79.263477],[24.13291,79.215479],[23.947754,79.194287],[23.758789,79.205615],[22.903711,79.230664],[22.78916,79.264355],[22.695703,79.329053],[22.865527,79.411865],[21.911426,79.381055],[20.861133,79.397852],[20.805566,79.409521],[20.76084,79.441504],[20.399512,79.463379],[20.128223,79.4896],[19.900195,79.533789],[19.674609,79.591162],[19.74668,79.617969],[19.821094,79.633643],[20.014844,79.640234],[20.187109,79.632275],[20.493457,79.632764],[20.564844,79.690527],[20.686816,79.707178],[20.784082,79.748584],[20.460742,79.774658],[20.123438,79.778564],[19.898633,79.744189],[19.638086,79.728613],[19.4,79.726562],[18.94209,79.736328],[18.725,79.760742],[18.428027,79.824512],[18.324707,79.859717],[18.284766,79.887354],[18.255371,79.929199],[18.594629,79.966699],[18.726465,79.99624],[18.855957,80.036621],[18.343848,80.05957],[18.129492,80.093408],[17.916895,80.143115],[18.089453,80.171143],[18.779297,80.193506],[18.961914,80.174805],[19.142969,80.138672],[19.343359,80.116406],[19.537109,80.163232],[19.354688,80.1854],[19.191406,80.263232],[19.156934,80.301855],[19.17832,80.331543],[19.26377,80.335986],[19.327441,80.323096],[19.568457,80.25],[19.751074,80.227197],[19.802246,80.294727],[19.810352,80.326807],[19.777148,80.353369],[19.691309,80.402344],[19.614355,80.462549],[19.733301,80.477832],[19.851172,80.471191],[20.104297,80.42998],[20.359375,80.400928],[20.475879,80.371631],[20.693457,80.298682],[20.897852,80.249951]]],[[[16.786719,79.906738],[16.838477,79.904785],[16.888965,79.91543],[16.925586,79.943457],[16.966406,79.958936],[17.219434,79.940771],[17.578223,79.884668],[17.684766,79.857031],[17.83457,79.800049],[17.956152,79.704248],[17.859766,79.63501],[17.732617,79.569531],[17.6875,79.53335],[17.733984,79.481348],[17.715039,79.430762],[17.66875,79.385937],[17.861035,79.437061],[18.27207,79.600586],[18.333301,79.610693],[18.397363,79.605176],[18.581445,79.571582],[18.748438,79.488184],[18.785254,79.460596],[18.815234,79.42666],[18.832422,79.384766],[18.822949,79.33667],[18.807422,79.303174],[18.72002,79.281494],[18.677832,79.261719],[18.772266,79.260254],[18.880078,79.234277],[18.979004,79.17915],[19.089453,79.157031],[19.490234,79.175684],[19.750879,79.146826],[19.893555,79.056201],[20.11377,79.076709],[20.114453,79.125],[20.162695,79.145654],[20.458203,79.129248],[20.611035,79.106641],[20.767188,79.059131],[20.500684,78.981396],[20.720313,78.906689],[21.089648,78.852637],[21.312207,78.79585],[21.352539,78.772021],[21.38877,78.74043],[21.243945,78.699414],[21.096289,78.67627],[20.724805,78.672314],[20.387012,78.643262],[19.76875,78.622705],[19.676758,78.60957],[19.65498,78.597852],[19.618555,78.562158],[19.380664,78.479785],[19.150488,78.379395],[19.055664,78.318945],[18.983789,78.234229],[18.957617,78.182471],[19.008691,78.132275],[18.995117,78.081494],[18.82207,78.041699],[18.712305,78.040088],[18.574609,78.047998],[18.439258,78.025049],[18.430664,77.990576],[18.438672,77.942041],[18.404004,77.793945],[18.361914,77.682275],[18.29873,77.578564],[18.22793,77.522607],[18.137402,77.507031],[17.84707,77.496777],[17.62334,77.399365],[17.44248,77.225244],[17.348633,77.156885],[17.152539,77.048926],[17.187891,77.010645],[17.249023,76.969189],[17.141992,76.894922],[16.97666,76.811621],[16.979883,76.779395],[17.035547,76.720361],[17.062695,76.658984],[16.935156,76.606152],[16.700488,76.579297],[16.461914,76.609326],[16.345801,76.644775],[16.238086,76.701514],[16.123828,76.738525],[16.004492,76.760742],[15.546777,76.886426],[15.124219,77.085107],[14.738477,77.162354],[14.486914,77.199023],[14.36582,77.234473],[14.247559,77.282129],[14.145313,77.335596],[14.050391,77.403223],[14.004199,77.445215],[13.995703,77.508203],[14.026074,77.545166],[14.071289,77.564111],[14.377637,77.579639],[14.487793,77.57085],[14.596289,77.537939],[14.69502,77.525049],[14.920801,77.688818],[16.205957,77.782471],[16.619141,77.798682],[17.033301,77.797705],[16.96875,77.841943],[16.914062,77.897998],[16.85293,77.911572],[16.539648,77.880225],[16.060059,77.847119],[15.826367,77.84707],[15.585352,77.869141],[15.344824,77.856982],[15.096875,77.809033],[14.846875,77.778662],[14.603906,77.766455],[14.089941,77.771387],[13.9625,77.79624],[13.791113,77.853809],[13.749609,77.883301],[13.71416,77.919434],[13.680566,78.028125],[13.717676,78.057617],[13.770117,78.074609],[13.824023,78.08501],[13.936914,78.085547],[14.047754,78.066846],[14.307227,78.005078],[14.248145,78.071387],[14.994727,78.151221],[15.341406,78.220947],[15.519434,78.232715],[15.698047,78.227588],[15.658691,78.264697],[15.657129,78.299023],[15.783887,78.327051],[15.875391,78.339111],[16.150293,78.352881],[16.776953,78.350439],[17.00293,78.369385],[17.171973,78.417139],[16.991797,78.400488],[16.81123,78.397266],[16.726562,78.407178],[16.535352,78.448877],[16.448633,78.503564],[16.696582,78.612891],[16.782617,78.663623],[16.530469,78.656299],[16.446289,78.638525],[16.15752,78.538135],[15.944043,78.493018],[15.680664,78.471338],[15.417383,78.473242],[15.359961,78.487549],[15.279395,78.554102],[15.254199,78.589062],[15.264941,78.608301],[15.34834,78.663135],[15.391602,78.721191],[15.38418,78.771191],[15.322754,78.781201],[15.225293,78.732324],[15.137305,78.664258],[15.016309,78.630127],[14.891797,78.639453],[14.838672,78.665576],[14.792383,78.705566],[14.743555,78.720947],[14.689258,78.720947],[14.577637,78.70498],[14.467188,78.675391],[14.505273,78.630518],[14.51543,78.580566],[14.467773,78.540918],[14.431836,78.49248],[14.545605,78.461963],[14.638281,78.4146],[14.499512,78.392383],[14.363281,78.359912],[14.238281,78.309863],[14.110449,78.270898],[13.907617,78.266748],[13.65498,78.245166],[13.150195,78.2375],[12.912793,78.301074],[12.869531,78.33125],[12.822168,78.351465],[12.664648,78.384766],[12.434766,78.482959],[12.25791,78.594678],[12.138281,78.605518],[11.961719,78.642383],[11.865527,78.674219],[11.773828,78.716406],[11.746289,78.76626],[11.755176,78.81167],[11.861035,78.831885],[11.611035,78.882959],[11.36543,78.950391],[11.456152,78.972998],[11.547559,78.982959],[12.274902,78.904492],[12.323438,78.914258],[12.40332,78.953223],[12.375,78.966357],[12.253125,78.975342],[12.087305,78.975098],[12.045801,78.983154],[11.981836,79.025293],[11.925684,79.077246],[11.901953,79.111865],[11.892773,79.152344],[12.016113,79.213086],[12.083984,79.267529],[11.97832,79.292676],[11.679297,79.291162],[11.579785,79.283496],[11.616406,79.205273],[11.521191,79.15127],[11.338867,79.109131],[11.208105,79.129639],[11.107227,79.232959],[10.975391,79.304883],[10.925781,79.350195],[10.888086,79.41543],[10.834375,79.462842],[10.737598,79.520166],[10.725,79.555518],[10.737012,79.581641],[10.810742,79.640918],[10.75459,79.690332],[10.68623,79.733594],[10.682129,79.758252],[10.746387,79.788672],[10.804004,79.798779],[10.865918,79.796582],[11.049609,79.760303],[11.150391,79.716992],[11.185254,79.720459],[11.250586,79.784863],[11.343652,79.799414],[11.702344,79.820605],[12.101758,79.737549],[12.205176,79.719092],[12.287793,79.713135],[12.245215,79.75],[12.219141,79.7979],[12.27998,79.815967],[12.602441,79.773242],[12.753516,79.775781],[13.10752,79.831738],[13.692871,79.860986],[13.91416,79.816943],[13.925684,79.793408],[13.921094,79.761719],[13.907031,79.752197],[13.777539,79.715283],[13.039258,79.685156],[12.555371,79.569482],[13.215137,79.588086],[13.333789,79.574805],[13.383594,79.480762],[13.431641,79.470898],[13.60127,79.457227],[13.716211,79.42915],[13.833691,79.375684],[13.957227,79.339648],[14.02959,79.344141],[14.055859,79.383105],[14.026367,79.429297],[14.011133,79.481934],[14.019824,79.538672],[14.039844,79.585645],[14.178418,79.618701],[14.379785,79.725977],[14.593652,79.79873],[14.831836,79.766406],[15.052344,79.675342],[15.25127,79.545459],[15.443945,79.406787],[15.660156,79.234863],[15.764063,79.174268],[15.858496,79.159912],[16.294531,78.981055],[16.34375,78.976123],[16.253516,79.112109],[16.027539,79.342383],[15.875098,79.519238],[15.840723,79.586865],[15.816113,79.681836],[15.825781,79.709033],[15.845117,79.733594],[15.955762,79.835107],[16.100195,79.884424],[16.056641,79.953955],[16.093848,80.007324],[16.245703,80.049463],[16.386621,80.052588],[16.524023,80.020508],[16.786719,79.906738]]],[[[11.250293,78.610693],[11.261719,78.541699],[11.424219,78.548584],[11.616309,78.475098],[11.825684,78.436084],[11.884863,78.409326],[11.929395,78.374902],[12.056152,78.305615],[12.116406,78.232568],[11.965039,78.224854],[11.756543,78.329004],[11.586523,78.388232],[11.372461,78.43877],[11.199219,78.44126],[11.121289,78.463281],[10.840625,78.644727],[10.788867,78.686523],[10.628418,78.753857],[10.557617,78.8375],[10.558203,78.90293],[10.772852,78.8875],[10.96084,78.846387],[11.123926,78.753369],[11.15293,78.724463],[11.078223,78.686035],[11.15498,78.640576],[11.250293,78.610693]]],[[[18.741602,80.300928],[18.525,80.245605],[18.162207,80.288184],[18.205566,80.331787],[18.291699,80.35835],[18.519336,80.34834],[18.741602,80.300928]]],[[[29.04707,78.912061],[29.34541,78.905762],[29.645117,78.921631],[29.69668,78.904736],[29.310547,78.8521],[28.881152,78.880078],[28.494531,78.887207],[28.037891,78.828711],[27.889063,78.852148],[28.120996,78.908447],[28.374023,78.927051],[28.414746,78.961426],[28.511133,78.967334],[28.845215,78.97085],[29.04707,78.912061]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"North Korea","SOV_A3":"PRK","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"North Korea","ADM0_A3":"PRK","GEOU_DIF":0,"GEOUNIT":"North Korea","GU_A3":"PRK","SU_DIF":0,"SUBUNIT":"North Korea","SU_A3":"PRK","BRK_DIFF":0,"NAME":"North Korea","NAME_LONG":"Dem. Rep. Korea","BRK_A3":"PRK","BRK_NAME":"Dem. Rep. Korea","BRK_GROUP":null,"ABBREV":"N.K.","POSTAL":"KP","FORMAL_EN":"Democratic People's Republic of Korea","FORMAL_FR":null,"NAME_CIAWF":"Korea, North","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Korea, Dem. Rep.","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":5,"MAPCOLOR9":3,"MAPCOLOR13":9,"POP_EST":25666161,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":40000,"GDP_YEAR":2016,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"KN","ISO_A2":"KP","ISO_A2_EH":"KP","ISO_A3":"PRK","ISO_A3_EH":"PRK","ISO_N3":"408","ISO_N3_EH":"408","UN_A3":"408","WB_A2":"KP","WB_A3":"PRK","WOE_ID":23424865,"WOE_ID_EH":23424865,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PRK","ADM0_DIFF":null,"ADM0_TLC":"PRK","ADM0_A3_US":"PRK","ADM0_A3_FR":"PRK","ADM0_A3_RU":"PRK","ADM0_A3_ES":"PRK","ADM0_A3_CN":"PRK","ADM0_A3_TW":"PRK","ADM0_A3_IN":"PRK","ADM0_A3_NP":"PRK","ADM0_A3_PK":"PRK","ADM0_A3_DE":"PRK","ADM0_A3_GB":"PRK","ADM0_A3_BR":"PRK","ADM0_A3_IL":"PRK","ADM0_A3_PS":"PRK","ADM0_A3_SA":"PRK","ADM0_A3_EG":"PRK","ADM0_A3_MA":"PRK","ADM0_A3_PT":"PRK","ADM0_A3_AR":"PRK","ADM0_A3_JP":"PRK","ADM0_A3_KO":"PRK","ADM0_A3_VN":"PRK","ADM0_A3_TR":"PRK","ADM0_A3_ID":"PRK","ADM0_A3_PL":"PRK","ADM0_A3_GR":"PRK","ADM0_A3_IT":"PRK","ADM0_A3_NL":"PRK","ADM0_A3_SE":"PRK","ADM0_A3_BD":"PRK","ADM0_A3_UA":"PRK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":11,"LONG_LEN":15,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":126.444516,"LABEL_Y":39.885252,"NE_ID":1159321181,"WIKIDATAID":"Q423","NAME_AR":"كوريا الشمالية","NAME_BN":"উত্তর কোরিয়া","NAME_DE":"Nordkorea","NAME_EN":"North Korea","NAME_ES":"Corea del Norte","NAME_FA":"کره شمالی","NAME_FR":"Corée du Nord","NAME_EL":"Βόρεια Κορέα","NAME_HE":"קוריאה הצפונית","NAME_HI":"उत्तर कोरिया","NAME_HU":"Észak-Korea","NAME_ID":"Korea Utara","NAME_IT":"Corea del Nord","NAME_JA":"朝鮮民主主義人民共和国","NAME_KO":"조선민주주의인민공화국","NAME_NL":"Noord-Korea","NAME_PL":"Korea Północna","NAME_PT":"Coreia do Norte","NAME_RU":"КНДР","NAME_SV":"Nordkorea","NAME_TR":"Kuzey Kore","NAME_UK":"Корейська Народно-Демократична Республіка","NAME_UR":"شمالی کوریا","NAME_VI":"Cộng hòa Dân chủ Nhân dân Triều Tiên","NAME_ZH":"朝鲜民主主义人民共和国","NAME_ZHT":"朝鮮民主主義人民共和國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[124.348633,37.719043,130.687305,42.998145],"geometry":{"type":"MultiPolygon","coordinates":[[[[128.374609,38.623437],[128.339453,38.607861],[128.279297,38.523779],[128.223145,38.416992],[128.168652,38.359326],[128.10625,38.327344],[128.038965,38.308545],[127.905273,38.300439],[127.784668,38.307715],[127.745508,38.319238],[127.579492,38.3125],[127.532715,38.30498],[127.294043,38.313281],[127.169531,38.304541],[127.090332,38.283887],[127.009668,38.240527],[126.940039,38.175586],[126.878906,38.106055],[126.754297,37.978955],[126.666797,37.917187],[126.666504,37.82793],[126.664551,37.800732],[126.633887,37.781836],[126.623242,37.790186],[126.572754,37.796826],[126.369922,37.878369],[126.203125,37.828516],[126.161035,37.763721],[126.116699,37.74292],[126.050293,37.869824],[125.941699,37.873682],[125.769141,37.985352],[125.69502,37.962695],[125.676172,37.917725],[125.581543,37.815039],[125.449316,37.730225],[125.406641,37.719043],[125.357813,37.724805],[125.364844,37.748242],[125.310742,37.843506],[125.101953,37.88208],[125.026758,37.922607],[124.98877,37.931445],[125.193164,38.037793],[125.24668,38.056836],[125.206738,38.081543],[125.162598,38.093652],[124.99502,38.077832],[124.907031,38.112646],[124.779492,38.101514],[124.690918,38.129199],[124.874512,38.233398],[124.882715,38.294971],[124.880566,38.34165],[124.97373,38.480127],[125.067383,38.556738],[125.309668,38.665381],[125.415332,38.68042],[125.491797,38.676123],[125.554492,38.68623],[125.488672,38.727783],[125.424219,38.746875],[125.298926,38.742969],[125.168848,38.805518],[125.157324,38.871533],[125.409668,39.288379],[125.413184,39.32627],[125.373633,39.427637],[125.36084,39.526611],[125.180078,39.583496],[125.100098,39.590332],[124.867871,39.701807],[124.775293,39.758057],[124.738867,39.741504],[124.732227,39.652197],[124.699219,39.632373],[124.638281,39.615088],[124.607617,39.716943],[124.557422,39.790576],[124.403809,39.865527],[124.348633,39.906885],[124.375098,39.996143],[124.362109,40.004053],[124.386621,40.104248],[124.481055,40.181641],[124.712402,40.319238],[124.771973,40.38374],[124.889355,40.459814],[124.942285,40.458154],[124.996875,40.464746],[125.013379,40.497852],[125.025977,40.523877],[125.072949,40.547461],[125.185938,40.589404],[125.314453,40.644629],[125.416895,40.659912],[125.542578,40.742578],[125.593848,40.778955],[125.645117,40.778955],[125.65918,40.795898],[125.688281,40.838672],[125.72832,40.866699],[125.783984,40.872021],[125.874902,40.892236],[125.989062,40.904639],[126.066797,40.974072],[126.093164,41.023682],[126.144531,41.078271],[126.253613,41.137793],[126.328711,41.225684],[126.411816,41.321338],[126.451465,41.351855],[126.49043,41.358057],[126.513574,41.393994],[126.540137,41.495557],[126.57832,41.594336],[126.60127,41.640967],[126.696973,41.691895],[126.721582,41.716553],[126.743066,41.724854],[126.787695,41.718213],[126.847266,41.747998],[126.903516,41.781055],[126.954785,41.769482],[127.006934,41.742041],[127.061328,41.687354],[127.085352,41.643799],[127.128418,41.607422],[127.136719,41.554541],[127.179688,41.531348],[127.270801,41.519824],[127.420313,41.483789],[127.516992,41.481738],[127.572168,41.454736],[127.687695,41.43999],[127.918652,41.461133],[128.013086,41.448682],[128.052734,41.415625],[128.11123,41.389258],[128.149414,41.387744],[128.200293,41.433008],[128.254883,41.506543],[128.290918,41.562793],[128.289258,41.607422],[128.257812,41.655371],[128.181738,41.700049],[128.131934,41.769141],[128.08418,41.840576],[128.056055,41.86377],[128.03291,41.898486],[128.028711,41.951611],[128.045215,41.9875],[128.160156,42.011621],[128.307813,42.025635],[128.427246,42.010742],[128.626758,42.02085],[128.749023,42.040674],[128.839844,42.037842],[128.923438,42.038232],[128.960645,42.068799],[129.077246,42.142383],[129.133691,42.168506],[129.195508,42.218457],[129.205371,42.270557],[129.217773,42.312695],[129.252539,42.357861],[129.313672,42.413574],[129.36582,42.439209],[129.423633,42.435889],[129.484863,42.410303],[129.52373,42.384668],[129.567578,42.39209],[129.603906,42.435889],[129.62793,42.444287],[129.697852,42.448145],[129.719727,42.475],[129.746484,42.603809],[129.773438,42.705469],[129.779199,42.776562],[129.841504,42.894238],[129.861035,42.965088],[129.898242,42.998145],[129.941211,42.995654],[129.976953,42.974854],[130.022266,42.962598],[130.082617,42.97417],[130.124805,42.956006],[130.15127,42.917969],[130.240332,42.891797],[130.248828,42.872607],[130.24668,42.744824],[130.295605,42.684961],[130.360742,42.630859],[130.450293,42.581689],[130.498242,42.570508],[130.526953,42.5354],[130.554102,42.474707],[130.617969,42.415625],[130.651563,42.37251],[130.658008,42.327783],[130.687305,42.302539],[130.636523,42.274854],[130.569238,42.291699],[130.45752,42.301709],[130.314746,42.214111],[130.235742,42.183203],[130.179883,42.096973],[130.068262,42.045752],[130.007324,41.991162],[129.928223,41.896729],[129.876367,41.805518],[129.756348,41.712256],[129.686328,41.594971],[129.682422,41.494336],[129.758984,41.391504],[129.76582,41.303857],[129.712109,41.123682],[129.741992,40.932275],[129.708691,40.857324],[129.341113,40.726318],[129.245117,40.661035],[129.109766,40.491064],[128.945215,40.427881],[128.842969,40.358496],[128.701367,40.317529],[128.610742,40.1979],[128.51123,40.130225],[128.392969,40.088965],[128.304492,40.035937],[128.106348,40.032568],[127.966602,39.995605],[127.86709,39.895947],[127.568164,39.781982],[127.527441,39.695703],[127.547266,39.562793],[127.548926,39.461084],[127.522852,39.377393],[127.457422,39.400977],[127.422266,39.373584],[127.383496,39.296143],[127.394531,39.20791],[127.496973,39.179492],[127.580957,39.143262],[127.698926,39.125049],[127.786133,39.084131],[127.97168,38.897998],[128.123047,38.816406],[128.1625,38.786133],[128.249414,38.745215],[128.329492,38.680908],[128.374609,38.623437]]],[[[124.905273,39.536279],[124.848926,39.507568],[124.846094,39.558887],[124.889551,39.6021],[124.93457,39.607812],[124.905273,39.536279]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Nigeria","SOV_A3":"NGA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Nigeria","ADM0_A3":"NGA","GEOU_DIF":0,"GEOUNIT":"Nigeria","GU_A3":"NGA","SU_DIF":0,"SUBUNIT":"Nigeria","SU_A3":"NGA","BRK_DIFF":0,"NAME":"Nigeria","NAME_LONG":"Nigeria","BRK_A3":"NGA","BRK_NAME":"Nigeria","BRK_GROUP":null,"ABBREV":"Nigeria","POSTAL":"NG","FORMAL_EN":"Federal Republic of Nigeria","FORMAL_FR":null,"NAME_CIAWF":"Nigeria","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Nigeria","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":2,"POP_EST":200963599,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":448120,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"4. Lower middle income","FIPS_10":"NI","ISO_A2":"NG","ISO_A2_EH":"NG","ISO_A3":"NGA","ISO_A3_EH":"NGA","ISO_N3":"566","ISO_N3_EH":"566","UN_A3":"566","WB_A2":"NG","WB_A3":"NGA","WOE_ID":23424908,"WOE_ID_EH":23424908,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NGA","ADM0_DIFF":null,"ADM0_TLC":"NGA","ADM0_A3_US":"NGA","ADM0_A3_FR":"NGA","ADM0_A3_RU":"NGA","ADM0_A3_ES":"NGA","ADM0_A3_CN":"NGA","ADM0_A3_TW":"NGA","ADM0_A3_IN":"NGA","ADM0_A3_NP":"NGA","ADM0_A3_PK":"NGA","ADM0_A3_DE":"NGA","ADM0_A3_GB":"NGA","ADM0_A3_BR":"NGA","ADM0_A3_IL":"NGA","ADM0_A3_PS":"NGA","ADM0_A3_SA":"NGA","ADM0_A3_EG":"NGA","ADM0_A3_MA":"NGA","ADM0_A3_PT":"NGA","ADM0_A3_AR":"NGA","ADM0_A3_JP":"NGA","ADM0_A3_KO":"NGA","ADM0_A3_VN":"NGA","ADM0_A3_TR":"NGA","ADM0_A3_ID":"NGA","ADM0_A3_PL":"NGA","ADM0_A3_GR":"NGA","ADM0_A3_IT":"NGA","ADM0_A3_NL":"NGA","ADM0_A3_SE":"NGA","ADM0_A3_BD":"NGA","ADM0_A3_UA":"NGA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":7.50322,"LABEL_Y":9.439799,"NE_ID":1159321089,"WIKIDATAID":"Q1033","NAME_AR":"نيجيريا","NAME_BN":"নাইজেরিয়া","NAME_DE":"Nigeria","NAME_EN":"Nigeria","NAME_ES":"Nigeria","NAME_FA":"نیجریه","NAME_FR":"Nigeria","NAME_EL":"Νιγηρία","NAME_HE":"ניגריה","NAME_HI":"नाईजीरिया","NAME_HU":"Nigéria","NAME_ID":"Nigeria","NAME_IT":"Nigeria","NAME_JA":"ナイジェリア","NAME_KO":"나이지리아","NAME_NL":"Nigeria","NAME_PL":"Nigeria","NAME_PT":"Nigéria","NAME_RU":"Нигерия","NAME_SV":"Nigeria","NAME_TR":"Nijerya","NAME_UK":"Нігерія","NAME_UR":"نائجیریا","NAME_VI":"Nigeria","NAME_ZH":"尼日利亚","NAME_ZHT":"奈及利亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[2.686035,4.277393,14.627148,13.872852],"geometry":{"type":"MultiPolygon","coordinates":[[[[7.300781,4.418164],[7.203906,4.387646],[7.14043,4.395117],[7.227344,4.527344],[7.271387,4.498926],[7.32793,4.487207],[7.300781,4.418164]]],[[[13.606348,13.70459],[13.763477,13.489551],[13.932324,13.258496],[14.063965,13.078516],[14.160059,12.612793],[14.170313,12.524072],[14.177637,12.484082],[14.184863,12.447217],[14.197461,12.383789],[14.272852,12.356494],[14.41543,12.344141],[14.518945,12.298242],[14.580957,12.22207],[14.587012,12.209424],[14.619727,12.150977],[14.627148,12.108691],[14.618164,11.986621],[14.597363,11.829834],[14.561816,11.728711],[14.581641,11.591162],[14.575391,11.532422],[14.559766,11.492285],[14.496094,11.446143],[14.409473,11.401172],[14.202344,11.268164],[14.143262,11.248535],[14.056738,11.24502],[13.981445,11.211865],[13.89209,11.140088],[13.699902,10.873145],[13.535352,10.605078],[13.478516,10.383252],[13.414551,10.171436],[13.269922,10.036182],[13.249805,9.960059],[13.24375,9.915918],[13.23877,9.814014],[13.221191,9.645166],[13.19873,9.56377],[13.175488,9.539648],[13.019434,9.48833],[12.929492,9.42627],[12.875684,9.303516],[12.855957,9.170752],[12.824414,9.019434],[12.806543,8.886621],[12.782227,8.817871],[12.731152,8.745654],[12.651563,8.667773],[12.582715,8.624121],[12.403516,8.595557],[12.311328,8.419727],[12.233398,8.282324],[12.231152,8.227393],[12.155957,7.94248],[12.025195,7.727783],[12.016602,7.652002],[12.016016,7.589746],[11.852441,7.400732],[11.80918,7.345068],[11.767383,7.272266],[11.808594,7.201953],[11.854785,7.137988],[11.861426,7.116406],[11.787012,7.056201],[11.65752,6.951562],[11.580078,6.888867],[11.562988,6.854639],[11.55166,6.697266],[11.529102,6.655029],[11.477539,6.597412],[11.401758,6.533936],[11.324609,6.484668],[11.237305,6.450537],[11.15332,6.437939],[11.106445,6.457715],[11.079688,6.505518],[11.03252,6.6979],[11.008691,6.739111],[10.954199,6.776562],[10.846484,6.881787],[10.737598,6.988281],[10.60625,7.063086],[10.578125,7.057715],[10.556348,7.037451],[10.519043,6.930469],[10.482324,6.89126],[10.413184,6.877734],[10.293066,6.876758],[10.205469,6.891602],[10.185547,6.912793],[10.167773,6.95918],[10.143555,6.996436],[10.038867,6.921387],[9.874219,6.803271],[9.820703,6.783936],[9.779883,6.760156],[9.725586,6.65],[9.659961,6.531982],[9.574023,6.47041],[9.490234,6.418652],[9.442188,6.373389],[9.37334,6.319629],[9.23877,6.186133],[9.060156,6.009082],[8.997168,5.917725],[8.935059,5.781006],[8.898828,5.629687],[8.85918,5.46377],[8.800977,5.197461],[8.715625,5.046875],[8.640527,4.927002],[8.585156,4.832812],[8.555859,4.755225],[8.54375,4.757812],[8.514844,4.724707],[8.431348,4.74624],[8.393652,4.81377],[8.34209,4.824756],[8.252734,4.923975],[8.233789,4.907471],[8.328027,4.656104],[8.293066,4.557617],[8.028516,4.555371],[7.800781,4.522266],[7.644238,4.525342],[7.565625,4.560937],[7.530762,4.655176],[7.517383,4.645459],[7.509473,4.594922],[7.459863,4.555225],[7.284375,4.547656],[7.206738,4.612061],[7.143848,4.684082],[7.076563,4.716162],[7.086914,4.68584],[7.16416,4.615576],[7.154688,4.514404],[7.013379,4.397314],[6.923242,4.390674],[6.867871,4.441113],[6.83916,4.523486],[6.824707,4.645264],[6.787598,4.724707],[6.767676,4.724707],[6.786035,4.652002],[6.792188,4.592627],[6.793066,4.469141],[6.860352,4.37334],[6.757031,4.343555],[6.715137,4.342432],[6.633008,4.340234],[6.617285,4.375781],[6.601562,4.455176],[6.57998,4.475977],[6.55459,4.341406],[6.5,4.331934],[6.462109,4.333154],[6.299805,4.303857],[6.263672,4.309424],[6.255957,4.334473],[6.275293,4.37168],[6.270996,4.432129],[6.214648,4.385498],[6.205566,4.292285],[6.17334,4.277393],[6.076563,4.290625],[5.970703,4.338574],[5.906445,4.387744],[5.798633,4.455957],[5.587793,4.647217],[5.553613,4.733203],[5.493262,4.83877],[5.448145,4.94585],[5.383301,5.129004],[5.403223,5.142285],[5.452148,5.126562],[5.475977,5.153857],[5.388281,5.173779],[5.37002,5.19502],[5.36416,5.259277],[5.367969,5.337744],[5.439258,5.365332],[5.500879,5.378613],[5.531836,5.426367],[5.549707,5.474219],[5.38584,5.401758],[5.232422,5.483789],[5.199219,5.533545],[5.21582,5.57168],[5.289062,5.57749],[5.393848,5.574512],[5.456641,5.611719],[5.418066,5.624707],[5.350293,5.623291],[5.325293,5.647949],[5.327344,5.70752],[5.305371,5.694336],[5.27627,5.641553],[5.172852,5.602734],[5.112402,5.641553],[5.10625,5.728125],[5.093066,5.76709],[5.04209,5.79751],[4.861035,6.026318],[4.633594,6.217187],[4.431348,6.348584],[4.125879,6.411377],[3.486621,6.408936],[3.450781,6.427051],[3.489941,6.457275],[3.546094,6.477441],[3.75166,6.583838],[3.716992,6.597949],[3.50332,6.531348],[3.430176,6.525],[3.335547,6.396924],[2.772461,6.375732],[2.706445,6.369238],[2.708008,6.427686],[2.735645,6.595703],[2.753711,6.661768],[2.774609,6.711719],[2.75293,6.771631],[2.731738,6.852832],[2.721387,6.980273],[2.747754,7.019824],[2.756738,7.06792],[2.750586,7.143213],[2.750488,7.395068],[2.76582,7.42251],[2.783984,7.443408],[2.785156,7.476855],[2.750977,7.541895],[2.719336,7.61626],[2.72041,7.723096],[2.707715,7.826611],[2.686035,7.87373],[2.702344,8.049805],[2.711523,8.272998],[2.703125,8.371826],[2.723633,8.441895],[2.734668,8.614014],[2.73291,8.78252],[2.774805,9.048535],[2.898047,9.061377],[3.044922,9.083838],[3.110449,9.188281],[3.148047,9.320605],[3.136133,9.451611],[3.164648,9.494678],[3.223438,9.565625],[3.329492,9.667041],[3.325195,9.778467],[3.354492,9.812793],[3.404785,9.838623],[3.476758,9.851904],[3.557227,9.907324],[3.602051,10.004541],[3.645898,10.160156],[3.576563,10.268359],[3.57793,10.29248],[3.604102,10.350684],[3.646582,10.408984],[3.680273,10.427783],[3.758496,10.412695],[3.771777,10.417627],[3.783789,10.435889],[3.834473,10.607422],[3.829688,10.65376],[3.756836,10.76875],[3.744922,10.850439],[3.73418,10.971924],[3.716406,11.07959],[3.695312,11.120312],[3.65625,11.15459],[3.638867,11.176855],[3.487793,11.39541],[3.490527,11.499219],[3.553906,11.631885],[3.59541,11.696289],[3.653125,11.731836],[3.664746,11.762451],[3.647363,11.799658],[3.618457,11.827734],[3.611816,11.887305],[3.620117,11.926953],[3.640625,11.970361],[3.63252,12.061572],[3.63418,12.201611],[3.643848,12.405273],[3.64668,12.52998],[3.769238,12.622168],[3.947852,12.775049],[4.03877,12.934668],[4.087402,13.055469],[4.147559,13.457715],[4.19082,13.482129],[4.242188,13.501074],[4.421387,13.64751],[4.559473,13.701807],[4.664844,13.733203],[4.82334,13.759766],[4.92168,13.749121],[5.100879,13.742725],[5.241895,13.757227],[5.361621,13.836865],[5.41582,13.85918],[5.491992,13.872852],[5.838184,13.765381],[6.184277,13.663672],[6.247168,13.672998],[6.299805,13.658789],[6.386328,13.603613],[6.514063,13.4854],[6.589941,13.409131],[6.626563,13.364258],[6.804297,13.107666],[6.870605,13.043262],[6.937207,13.008203],[7.005078,12.995557],[7.056738,13.000195],[7.106055,13.029102],[7.173047,13.086328],[7.274707,13.112256],[7.357813,13.107178],[7.788672,13.337891],[7.830469,13.340918],[7.955762,13.322754],[8.09502,13.291162],[8.456055,13.059668],[8.750586,12.908154],[8.957617,12.857471],[9.201563,12.821484],[9.615918,12.810645],[9.929297,13.135254],[10.045117,13.206152],[10.184668,13.270117],[10.22959,13.281006],[10.475879,13.330225],[10.958887,13.371533],[11.411914,13.353613],[11.501074,13.340527],[11.693359,13.297705],[11.990039,13.191797],[12.117969,13.09043],[12.319043,13.073682],[12.463184,13.09375],[12.510156,13.194336],[12.654785,13.326562],[12.759961,13.380371],[12.87168,13.449023],[13.048438,13.534521],[13.193848,13.573047],[13.323828,13.67085],[13.426953,13.701758],[13.606348,13.70459]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Niger","SOV_A3":"NER","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Niger","ADM0_A3":"NER","GEOU_DIF":0,"GEOUNIT":"Niger","GU_A3":"NER","SU_DIF":0,"SUBUNIT":"Niger","SU_A3":"NER","BRK_DIFF":0,"NAME":"Niger","NAME_LONG":"Niger","BRK_A3":"NER","BRK_NAME":"Niger","BRK_GROUP":null,"ABBREV":"Niger","POSTAL":"NE","FORMAL_EN":"Republic of Niger","FORMAL_FR":null,"NAME_CIAWF":"Niger","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Niger","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":3,"MAPCOLOR13":13,"POP_EST":23310715,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":12911,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"NG","ISO_A2":"NE","ISO_A2_EH":"NE","ISO_A3":"NER","ISO_A3_EH":"NER","ISO_N3":"562","ISO_N3_EH":"562","UN_A3":"562","WB_A2":"NE","WB_A3":"NER","WOE_ID":23424906,"WOE_ID_EH":23424906,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NER","ADM0_DIFF":null,"ADM0_TLC":"NER","ADM0_A3_US":"NER","ADM0_A3_FR":"NER","ADM0_A3_RU":"NER","ADM0_A3_ES":"NER","ADM0_A3_CN":"NER","ADM0_A3_TW":"NER","ADM0_A3_IN":"NER","ADM0_A3_NP":"NER","ADM0_A3_PK":"NER","ADM0_A3_DE":"NER","ADM0_A3_GB":"NER","ADM0_A3_BR":"NER","ADM0_A3_IL":"NER","ADM0_A3_PS":"NER","ADM0_A3_SA":"NER","ADM0_A3_EG":"NER","ADM0_A3_MA":"NER","ADM0_A3_PT":"NER","ADM0_A3_AR":"NER","ADM0_A3_JP":"NER","ADM0_A3_KO":"NER","ADM0_A3_VN":"NER","ADM0_A3_TR":"NER","ADM0_A3_ID":"NER","ADM0_A3_PL":"NER","ADM0_A3_GR":"NER","ADM0_A3_IT":"NER","ADM0_A3_NL":"NER","ADM0_A3_SE":"NER","ADM0_A3_BD":"NER","ADM0_A3_UA":"NER","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":9.504356,"LABEL_Y":17.446195,"NE_ID":1159321087,"WIKIDATAID":"Q1032","NAME_AR":"النيجر","NAME_BN":"নাইজার","NAME_DE":"Niger","NAME_EN":"Niger","NAME_ES":"Níger","NAME_FA":"نیجر","NAME_FR":"Niger","NAME_EL":"Νίγηρας","NAME_HE":"ניז'ר","NAME_HI":"नाइजर","NAME_HU":"Niger","NAME_ID":"Niger","NAME_IT":"Niger","NAME_JA":"ニジェール","NAME_KO":"니제르","NAME_NL":"Niger","NAME_PL":"Niger","NAME_PT":"Níger","NAME_RU":"Нигер","NAME_SV":"Niger","NAME_TR":"Nijer","NAME_UK":"Нігер","NAME_UR":"نائجر","NAME_VI":"Niger","NAME_ZH":"尼日尔","NAME_ZHT":"尼日","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[0.163867,11.696289,15.963184,23.517871],"geometry":{"type":"Polygon","coordinates":[[[13.606348,13.70459],[13.426953,13.701758],[13.323828,13.67085],[13.193848,13.573047],[13.048438,13.534521],[12.87168,13.449023],[12.759961,13.380371],[12.654785,13.326562],[12.510156,13.194336],[12.463184,13.09375],[12.319043,13.073682],[12.117969,13.09043],[11.990039,13.191797],[11.693359,13.297705],[11.501074,13.340527],[11.411914,13.353613],[10.958887,13.371533],[10.475879,13.330225],[10.22959,13.281006],[10.184668,13.270117],[10.045117,13.206152],[9.929297,13.135254],[9.615918,12.810645],[9.201563,12.821484],[8.957617,12.857471],[8.750586,12.908154],[8.456055,13.059668],[8.09502,13.291162],[7.955762,13.322754],[7.830469,13.340918],[7.788672,13.337891],[7.357813,13.107178],[7.274707,13.112256],[7.173047,13.086328],[7.106055,13.029102],[7.056738,13.000195],[7.005078,12.995557],[6.937207,13.008203],[6.870605,13.043262],[6.804297,13.107666],[6.626563,13.364258],[6.589941,13.409131],[6.514063,13.4854],[6.386328,13.603613],[6.299805,13.658789],[6.247168,13.672998],[6.184277,13.663672],[5.838184,13.765381],[5.491992,13.872852],[5.41582,13.85918],[5.361621,13.836865],[5.241895,13.757227],[5.100879,13.742725],[4.92168,13.749121],[4.82334,13.759766],[4.664844,13.733203],[4.559473,13.701807],[4.421387,13.64751],[4.242188,13.501074],[4.19082,13.482129],[4.147559,13.457715],[4.087402,13.055469],[4.03877,12.934668],[3.947852,12.775049],[3.769238,12.622168],[3.64668,12.52998],[3.643848,12.405273],[3.63418,12.201611],[3.63252,12.061572],[3.640625,11.970361],[3.620117,11.926953],[3.611816,11.887305],[3.618457,11.827734],[3.647363,11.799658],[3.664746,11.762451],[3.653125,11.731836],[3.59541,11.696289],[3.531738,11.787451],[3.449805,11.851953],[3.359961,11.880469],[3.299121,11.927148],[3.267383,11.991895],[3.149609,12.118066],[2.878125,12.367725],[2.850195,12.373682],[2.805273,12.383838],[2.728516,12.353613],[2.681348,12.312793],[2.648438,12.296777],[2.598438,12.294336],[2.469336,12.262793],[2.366016,12.221924],[2.363281,12.188428],[2.412695,11.999316],[2.38916,11.89707],[2.343359,11.945996],[2.194434,12.136475],[2.091406,12.277979],[2.072949,12.309375],[2.058398,12.357959],[2.068555,12.37915],[2.109375,12.393848],[2.203809,12.412598],[2.221387,12.427246],[2.22627,12.466064],[2.211523,12.538428],[2.159766,12.636426],[2.10459,12.70127],[2.073828,12.713965],[2.017383,12.716211],[1.956152,12.707422],[1.840918,12.627881],[1.789844,12.613281],[1.671094,12.619824],[1.564941,12.6354],[1.500488,12.676465],[1.308691,12.834277],[1.096777,13.001123],[1.00791,13.024805],[0.987305,13.041895],[0.973047,13.170361],[0.976758,13.324512],[0.988477,13.364844],[1.076855,13.340771],[1.170898,13.32959],[1.201172,13.35752],[1.125977,13.412354],[1.017871,13.467871],[0.977734,13.551953],[0.946582,13.581152],[0.897949,13.610937],[0.842285,13.626416],[0.786035,13.650049],[0.747754,13.674512],[0.68457,13.6854],[0.618164,13.703418],[0.522363,13.839746],[0.429199,13.972119],[0.374023,14.076367],[0.354883,14.139014],[0.38252,14.245801],[0.35459,14.288037],[0.250586,14.396436],[0.163867,14.497217],[0.185059,14.65293],[0.202734,14.782812],[0.203809,14.865039],[0.21748,14.911475],[0.228711,14.963672],[0.28623,14.980176],[0.433008,14.979004],[0.718652,14.954883],[0.947461,14.982129],[0.960059,14.986914],[1.121289,15.126123],[1.300195,15.272266],[1.569141,15.286475],[1.859375,15.301709],[2.088184,15.309375],[2.420801,15.32041],[2.689648,15.329883],[3.001074,15.340967],[3.010547,15.408301],[3.029395,15.424854],[3.060156,15.427197],[3.289062,15.391113],[3.504297,15.356348],[3.520508,15.483105],[3.70957,15.641699],[3.816504,15.674023],[3.842969,15.701709],[3.876953,15.755273],[3.897949,15.837988],[3.907227,15.896826],[3.94707,15.945654],[3.976172,16.035547],[4.014844,16.192725],[4.121289,16.357715],[4.182129,16.581787],[4.191211,16.798193],[4.20293,16.962695],[4.234668,16.996387],[4.233691,17.288428],[4.232715,17.582178],[4.231934,17.830518],[4.230859,18.139453],[4.22998,18.410596],[4.229004,18.704346],[4.228223,18.968066],[4.227637,19.142773],[4.445703,19.184521],[4.671289,19.227783],[5.001367,19.291064],[5.358691,19.359521],[5.74834,19.434229],[5.836621,19.47915],[6.130664,19.731982],[6.263379,19.846143],[6.527051,20.072949],[6.730664,20.248047],[6.989355,20.470508],[7.263379,20.694482],[7.481738,20.873096],[7.825195,21.075586],[8.343066,21.380859],[8.860938,21.686133],[9.378711,21.991406],[9.896484,22.296729],[10.414355,22.602002],[10.932227,22.907275],[11.45,23.212598],[11.967871,23.517871],[12.48877,23.40166],[12.983594,23.29126],[13.48125,23.180176],[13.598633,23.119531],[13.862695,22.9021],[14.200684,22.62373],[14.215527,22.619678],[14.230762,22.618457],[14.555664,22.78252],[14.978906,22.996289],[14.979004,22.996191],[15.088965,22.418359],[15.172266,21.92207],[15.177832,21.605811],[15.181836,21.523389],[15.21582,21.467432],[15.293652,21.411523],[15.607324,20.954395],[15.540332,20.874902],[15.587109,20.733301],[15.668457,20.672363],[15.929297,20.399854],[15.963184,20.346191],[15.948828,20.303174],[15.766211,19.982568],[15.735059,19.904053],[15.698633,19.495215],[15.672949,19.206787],[15.637598,18.81084],[15.595508,18.337061],[15.561523,17.937256],[15.516699,17.408496],[15.474316,16.908398],[15.212109,16.633887],[14.74668,16.146631],[14.367969,15.750146],[14.178223,15.484766],[13.807129,14.966113],[13.642383,14.630762],[13.513672,14.455518],[13.448242,14.380664],[13.505762,14.134424],[13.606348,13.70459]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Nicaragua","SOV_A3":"NIC","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Nicaragua","ADM0_A3":"NIC","GEOU_DIF":0,"GEOUNIT":"Nicaragua","GU_A3":"NIC","SU_DIF":0,"SUBUNIT":"Nicaragua","SU_A3":"NIC","BRK_DIFF":0,"NAME":"Nicaragua","NAME_LONG":"Nicaragua","BRK_A3":"NIC","BRK_NAME":"Nicaragua","BRK_GROUP":null,"ABBREV":"Nic.","POSTAL":"NI","FORMAL_EN":"Republic of Nicaragua","FORMAL_FR":null,"NAME_CIAWF":"Nicaragua","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Nicaragua","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":9,"POP_EST":6545502,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":12520,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"NU","ISO_A2":"NI","ISO_A2_EH":"NI","ISO_A3":"NIC","ISO_A3_EH":"NIC","ISO_N3":"558","ISO_N3_EH":"558","UN_A3":"558","WB_A2":"NI","WB_A3":"NIC","WOE_ID":23424915,"WOE_ID_EH":23424915,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NIC","ADM0_DIFF":null,"ADM0_TLC":"NIC","ADM0_A3_US":"NIC","ADM0_A3_FR":"NIC","ADM0_A3_RU":"NIC","ADM0_A3_ES":"NIC","ADM0_A3_CN":"NIC","ADM0_A3_TW":"NIC","ADM0_A3_IN":"NIC","ADM0_A3_NP":"NIC","ADM0_A3_PK":"NIC","ADM0_A3_DE":"NIC","ADM0_A3_GB":"NIC","ADM0_A3_BR":"NIC","ADM0_A3_IL":"NIC","ADM0_A3_PS":"NIC","ADM0_A3_SA":"NIC","ADM0_A3_EG":"NIC","ADM0_A3_MA":"NIC","ADM0_A3_PT":"NIC","ADM0_A3_AR":"NIC","ADM0_A3_JP":"NIC","ADM0_A3_KO":"NIC","ADM0_A3_VN":"NIC","ADM0_A3_TR":"NIC","ADM0_A3_ID":"NIC","ADM0_A3_PL":"NIC","ADM0_A3_GR":"NIC","ADM0_A3_IT":"NIC","ADM0_A3_NL":"NIC","ADM0_A3_SE":"NIC","ADM0_A3_BD":"NIC","ADM0_A3_UA":"NIC","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-85.069347,"LABEL_Y":12.670697,"NE_ID":1159321091,"WIKIDATAID":"Q811","NAME_AR":"نيكاراغوا","NAME_BN":"নিকারাগুয়া","NAME_DE":"Nicaragua","NAME_EN":"Nicaragua","NAME_ES":"Nicaragua","NAME_FA":"نیکاراگوئه","NAME_FR":"Nicaragua","NAME_EL":"Νικαράγουα","NAME_HE":"ניקרגואה","NAME_HI":"निकारागुआ","NAME_HU":"Nicaragua","NAME_ID":"Nikaragua","NAME_IT":"Nicaragua","NAME_JA":"ニカラグア","NAME_KO":"니카라과","NAME_NL":"Nicaragua","NAME_PL":"Nikaragua","NAME_PT":"Nicarágua","NAME_RU":"Никарагуа","NAME_SV":"Nicaragua","NAME_TR":"Nikaragua","NAME_UK":"Нікарагуа","NAME_UR":"نکاراگوا","NAME_VI":"Nicaragua","NAME_ZH":"尼加拉瓜","NAME_ZHT":"尼加拉瓜","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-87.670166,10.735352,-83.15752,15.008057],"geometry":{"type":"Polygon","coordinates":[[[-83.15752,14.993066],[-83.185352,14.956396],[-83.215918,14.932373],[-83.279883,14.812793],[-83.302002,14.8021],[-83.306348,14.890527],[-83.344385,14.9021],[-83.389014,14.870654],[-83.413721,14.825342],[-83.374854,14.766113],[-83.340723,14.765283],[-83.299219,14.749023],[-83.187744,14.340088],[-83.211719,14.267139],[-83.280811,14.153613],[-83.346582,14.056982],[-83.412305,13.996484],[-83.49375,13.738818],[-83.567334,13.320312],[-83.514453,12.943945],[-83.541211,12.596289],[-83.517969,12.514111],[-83.510937,12.411816],[-83.565234,12.393408],[-83.595898,12.396484],[-83.627197,12.459326],[-83.623682,12.514551],[-83.591211,12.579346],[-83.578076,12.667139],[-83.593359,12.713086],[-83.625342,12.612891],[-83.681641,12.568115],[-83.718359,12.552637],[-83.754248,12.501953],[-83.716211,12.406738],[-83.667334,12.337061],[-83.65127,12.287061],[-83.669238,12.227539],[-83.68042,12.024316],[-83.697705,12.02998],[-83.715576,12.057422],[-83.767187,12.059277],[-83.77334,11.977393],[-83.769336,11.931641],[-83.813184,11.896387],[-83.828906,11.861035],[-83.792969,11.836182],[-83.753369,11.821289],[-83.70459,11.824561],[-83.664307,11.723877],[-83.651758,11.642041],[-83.744971,11.566504],[-83.776611,11.503955],[-83.829395,11.428174],[-83.859082,11.353662],[-83.867871,11.300049],[-83.831836,11.130518],[-83.76792,11.010254],[-83.714062,10.933838],[-83.641992,10.917236],[-83.658936,10.836865],[-83.712939,10.785889],[-83.811182,10.743262],[-83.919287,10.735352],[-84.096191,10.775684],[-84.168359,10.780371],[-84.196582,10.801709],[-84.20498,10.841309],[-84.255566,10.900732],[-84.348291,10.979883],[-84.401855,10.974463],[-84.48916,10.99165],[-84.63418,11.045605],[-84.701172,11.052197],[-84.797363,11.005908],[-84.90918,10.945312],[-85.178955,11.039941],[-85.368359,11.106445],[-85.538721,11.166309],[-85.58418,11.189453],[-85.621387,11.184473],[-85.653662,11.153076],[-85.690527,11.097461],[-85.702637,11.081543],[-85.722266,11.06626],[-85.744336,11.062109],[-85.745215,11.088574],[-85.828516,11.19873],[-85.961133,11.331348],[-86.468896,11.738281],[-86.655518,11.981543],[-86.755615,12.156641],[-86.850977,12.247754],[-87.125195,12.434131],[-87.188428,12.50835],[-87.460156,12.757568],[-87.667529,12.903564],[-87.670166,12.965674],[-87.585059,13.043311],[-87.543311,13.039697],[-87.497949,12.98418],[-87.424365,12.921143],[-87.389648,12.920654],[-87.338574,12.949951],[-87.337256,12.979248],[-87.05918,12.991455],[-87.009326,13.007812],[-86.958887,13.053711],[-86.933154,13.117529],[-86.928809,13.179395],[-86.918213,13.223584],[-86.873535,13.266504],[-86.792139,13.279785],[-86.729297,13.284375],[-86.710693,13.313379],[-86.72959,13.407227],[-86.763525,13.635254],[-86.770605,13.69873],[-86.758984,13.746143],[-86.733643,13.763477],[-86.610254,13.774854],[-86.376953,13.755664],[-86.331738,13.770068],[-86.238232,13.899463],[-86.151221,13.99458],[-86.089258,14.037207],[-86.040381,14.050146],[-85.983789,13.965674],[-85.786719,13.844434],[-85.753418,13.852051],[-85.733936,13.858691],[-85.727734,13.876074],[-85.731201,13.931836],[-85.681934,13.982568],[-85.579785,14.028223],[-85.477051,14.108691],[-85.373779,14.223877],[-85.28418,14.29165],[-85.20835,14.311816],[-85.179492,14.343311],[-85.197559,14.385986],[-85.191504,14.446631],[-85.161328,14.525146],[-85.117285,14.570605],[-85.059375,14.582959],[-85.036523,14.607666],[-85.048633,14.644727],[-85.037354,14.685547],[-84.985156,14.752441],[-84.860449,14.809766],[-84.78916,14.790381],[-84.729785,14.713379],[-84.645947,14.661084],[-84.537646,14.633398],[-84.453564,14.643701],[-84.393652,14.691748],[-84.339795,14.706348],[-84.291943,14.687354],[-84.26665,14.698145],[-84.263965,14.738525],[-84.239209,14.747852],[-84.192383,14.726025],[-84.150781,14.72041],[-84.114404,14.731006],[-84.100293,14.750635],[-84.092969,14.770898],[-84.06582,14.786084],[-83.972266,14.771094],[-83.867285,14.794482],[-83.750928,14.85625],[-83.673633,14.883545],[-83.635498,14.876416],[-83.589746,14.907568],[-83.536523,14.977002],[-83.415039,15.008057],[-83.15752,14.993066]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"New Zealand","SOV_A3":"NZ1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"New Zealand","ADM0_A3":"NZL","GEOU_DIF":0,"GEOUNIT":"New Zealand","GU_A3":"NZL","SU_DIF":0,"SUBUNIT":"New Zealand","SU_A3":"NZL","BRK_DIFF":0,"NAME":"New Zealand","NAME_LONG":"New Zealand","BRK_A3":"NZL","BRK_NAME":"New Zealand","BRK_GROUP":null,"ABBREV":"N.Z.","POSTAL":"NZ","FORMAL_EN":"New Zealand","FORMAL_FR":null,"NAME_CIAWF":"New Zealand","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"New Zealand","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":4,"POP_EST":4917000,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":206928,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"NZ","ISO_A2":"NZ","ISO_A2_EH":"NZ","ISO_A3":"NZL","ISO_A3_EH":"NZL","ISO_N3":"554","ISO_N3_EH":"554","UN_A3":"554","WB_A2":"NZ","WB_A3":"NZL","WOE_ID":23424916,"WOE_ID_EH":23424916,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NZL","ADM0_DIFF":null,"ADM0_TLC":"NZL","ADM0_A3_US":"NZL","ADM0_A3_FR":"NZL","ADM0_A3_RU":"NZL","ADM0_A3_ES":"NZL","ADM0_A3_CN":"NZL","ADM0_A3_TW":"NZL","ADM0_A3_IN":"NZL","ADM0_A3_NP":"NZL","ADM0_A3_PK":"NZL","ADM0_A3_DE":"NZL","ADM0_A3_GB":"NZL","ADM0_A3_BR":"NZL","ADM0_A3_IL":"NZL","ADM0_A3_PS":"NZL","ADM0_A3_SA":"NZL","ADM0_A3_EG":"NZL","ADM0_A3_MA":"NZL","ADM0_A3_PT":"NZL","ADM0_A3_AR":"NZL","ADM0_A3_JP":"NZL","ADM0_A3_KO":"NZL","ADM0_A3_VN":"NZL","ADM0_A3_TR":"NZL","ADM0_A3_ID":"NZL","ADM0_A3_PL":"NZL","ADM0_A3_GR":"NZL","ADM0_A3_IT":"NZL","ADM0_A3_NL":"NZL","ADM0_A3_SE":"NZL","ADM0_A3_BD":"NZL","ADM0_A3_UA":"NZL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Australia and New Zealand","REGION_WB":"East Asia & Pacific","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":6.7,"LABEL_X":172.787,"LABEL_Y":-39.759,"NE_ID":1159321135,"WIKIDATAID":"Q664","NAME_AR":"نيوزيلندا","NAME_BN":"নিউজিল্যান্ড","NAME_DE":"Neuseeland","NAME_EN":"New Zealand","NAME_ES":"Nueva Zelanda","NAME_FA":"نیوزیلند","NAME_FR":"Nouvelle-Zélande","NAME_EL":"Νέα Ζηλανδία","NAME_HE":"ניו זילנד","NAME_HI":"न्यूज़ीलैण्ड","NAME_HU":"Új-Zéland","NAME_ID":"Selandia Baru","NAME_IT":"Nuova Zelanda","NAME_JA":"ニュージーランド","NAME_KO":"뉴질랜드","NAME_NL":"Nieuw-Zeeland","NAME_PL":"Nowa Zelandia","NAME_PT":"Nova Zelândia","NAME_RU":"Новая Зеландия","NAME_SV":"Nya Zeeland","NAME_TR":"Yeni Zelanda","NAME_UK":"Нова Зеландія","NAME_UR":"نیوزی لینڈ","NAME_VI":"New Zealand","NAME_ZH":"新西兰","NAME_ZHT":"新西蘭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-176.847656,-52.570312,178.53623,-8.546484],"geometry":{"type":"MultiPolygon","coordinates":[[[[173.115332,-41.279297],[173.230859,-41.28418],[173.337793,-41.210938],[173.447266,-41.151367],[173.5625,-41.102051],[173.737891,-40.988965],[173.783789,-40.972363],[173.897559,-40.950781],[173.947168,-40.924121],[174.002441,-40.917773],[173.952832,-40.984863],[173.889844,-41.007227],[173.879883,-41.031445],[173.915137,-41.070117],[173.860352,-41.124414],[173.862402,-41.19209],[173.797852,-41.271973],[173.89707,-41.239355],[173.933398,-41.187305],[173.914648,-41.158008],[173.957617,-41.099902],[174.024023,-41.072266],[173.997559,-41.028125],[173.999414,-40.993262],[174.080566,-41.006152],[174.121191,-41.004688],[174.153223,-40.990918],[174.211816,-40.985449],[174.223828,-41.024414],[174.302539,-41.019531],[174.273926,-41.06875],[174.213672,-41.125586],[174.199512,-41.160156],[174.103125,-41.217383],[174.038574,-41.241895],[174.138086,-41.248242],[174.283594,-41.171582],[174.370117,-41.103711],[174.367578,-41.188379],[174.297266,-41.264258],[174.237109,-41.312207],[174.169531,-41.327051],[174.102051,-41.365918],[174.069336,-41.429492],[174.072949,-41.47168],[174.092383,-41.505176],[174.161133,-41.561816],[174.083691,-41.670801],[174.169922,-41.657227],[174.21709,-41.677734],[174.283105,-41.740625],[174.243359,-41.813086],[174.21543,-41.850195],[174.047266,-42.003027],[173.973926,-42.080566],[173.887988,-42.130176],[173.88916,-42.211621],[173.839844,-42.270898],[173.589258,-42.473926],[173.545117,-42.517969],[173.347559,-42.84082],[173.221191,-42.976562],[173.148828,-43.022754],[173.072363,-43.060254],[172.888867,-43.124219],[172.808008,-43.197754],[172.718555,-43.258789],[172.624023,-43.272461],[172.626953,-43.299512],[172.6875,-43.314648],[172.734766,-43.354785],[172.699707,-43.399707],[172.632227,-43.42793],[172.562207,-43.436035],[172.52666,-43.464746],[172.693457,-43.444336],[172.74043,-43.467871],[172.749219,-43.517285],[172.766602,-43.561914],[172.807031,-43.620996],[172.947266,-43.658594],[173.073242,-43.676172],[173.098047,-43.703516],[173.116895,-43.797852],[173.093945,-43.844141],[173.065625,-43.874609],[173.02334,-43.885449],[172.920605,-43.891406],[172.817676,-43.870117],[172.749316,-43.813086],[172.554688,-43.831348],[172.502734,-43.843652],[172.475977,-43.833398],[172.583789,-43.773535],[172.527246,-43.739453],[172.480371,-43.72666],[172.429688,-43.746484],[172.395605,-43.777832],[172.385254,-43.82959],[172.350391,-43.859375],[172.296582,-43.867871],[172.220703,-43.825],[172.145801,-43.763574],[172.035547,-43.701758],[172.052246,-43.740039],[172.137207,-43.833789],[172.179785,-43.895996],[172.080762,-43.945605],[171.977637,-43.984277],[171.890625,-44.006934],[171.808398,-44.042285],[171.712012,-44.097461],[171.658984,-44.117188],[171.517773,-44.118359],[171.442578,-44.13584],[171.41748,-44.208691],[171.364551,-44.25498],[171.240723,-44.26416],[171.285352,-44.278711],[171.312988,-44.301855],[171.231055,-44.521191],[171.213086,-44.612207],[171.197852,-44.767871],[171.146289,-44.912305],[170.999023,-44.911426],[171.022852,-44.937012],[171.13418,-44.977734],[171.113281,-45.039258],[170.990723,-45.151465],[170.939648,-45.216406],[170.889941,-45.373926],[170.815234,-45.519141],[170.700586,-45.684277],[170.699707,-45.713965],[170.739844,-45.756055],[170.788477,-45.79248],[170.791211,-45.843848],[170.77627,-45.870898],[170.721777,-45.878027],[170.674219,-45.895703],[170.419141,-45.941016],[170.335449,-45.991797],[170.266797,-46.082617],[170.186133,-46.16084],[169.918262,-46.334375],[169.760742,-46.479785],[169.729102,-46.521387],[169.686621,-46.55166],[169.342285,-46.620508],[169.098633,-46.630664],[168.96582,-46.612988],[168.837793,-46.578223],[168.766797,-46.566309],[168.631445,-46.587598],[168.572266,-46.611035],[168.466406,-46.587891],[168.382129,-46.605371],[168.357227,-46.588379],[168.325684,-46.545703],[168.343066,-46.489063],[168.319727,-46.447168],[168.266211,-46.41875],[168.230273,-46.385742],[168.18916,-46.362207],[168.077344,-46.35293],[167.900391,-46.367773],[167.841992,-46.366211],[167.72207,-46.227148],[167.682227,-46.192969],[167.539453,-46.148535],[167.490625,-46.154687],[167.414258,-46.228906],[167.368945,-46.241504],[167.100293,-46.249414],[166.830762,-46.225488],[166.731543,-46.197852],[166.712109,-46.133691],[166.916699,-45.957227],[166.856445,-45.980859],[166.730273,-46.052734],[166.649902,-46.041699],[166.726953,-45.963281],[166.733789,-45.92832],[166.717969,-45.889355],[166.612695,-45.955371],[166.493164,-45.963867],[166.477637,-45.902734],[166.488281,-45.831836],[166.512891,-45.811719],[166.836035,-45.774512],[166.952539,-45.750195],[167.00332,-45.712109],[166.809961,-45.699023],[166.797656,-45.645605],[166.825586,-45.602832],[166.99082,-45.531738],[166.869043,-45.549902],[166.733984,-45.543555],[166.743066,-45.468457],[166.77832,-45.409668],[166.919922,-45.40791],[166.875586,-45.367578],[166.869238,-45.31123],[166.908594,-45.307422],[167.052148,-45.383203],[167.155664,-45.410938],[167.112109,-45.353906],[167.117773,-45.317969],[167.145313,-45.301855],[167.230078,-45.290332],[167.206836,-45.280273],[167.127344,-45.26582],[167.032813,-45.222461],[167.022656,-45.17666],[167.025879,-45.123633],[167.12793,-45.050781],[167.188184,-45.094141],[167.259473,-45.082227],[167.205078,-45.048145],[167.171875,-44.99707],[167.194531,-44.963477],[167.410742,-44.82793],[167.466211,-44.958301],[167.479199,-44.915039],[167.482129,-44.873926],[167.45625,-44.838281],[167.459961,-44.802344],[167.484961,-44.771387],[167.577637,-44.74082],[167.698145,-44.641309],[167.787012,-44.59502],[167.859375,-44.624707],[167.908984,-44.664746],[167.901563,-44.625],[167.866406,-44.59209],[167.856543,-44.500684],[168.018359,-44.358789],[168.196191,-44.223633],[168.366602,-44.082031],[168.457422,-44.030566],[168.650977,-43.972168],[168.774805,-43.996484],[168.806445,-43.991992],[168.99043,-43.889941],[169.066504,-43.863477],[169.135938,-43.899902],[169.178906,-43.913086],[169.135742,-43.819824],[169.169531,-43.777051],[169.323145,-43.701562],[169.515234,-43.623633],[169.661523,-43.591211],[169.769238,-43.538477],[169.833887,-43.537012],[169.824023,-43.497168],[169.835059,-43.458984],[169.89082,-43.461621],[169.908008,-43.446582],[169.858984,-43.425977],[170.017578,-43.349414],[170.103711,-43.265039],[170.148828,-43.247559],[170.189648,-43.22207],[170.240234,-43.163867],[170.3,-43.144629],[170.355762,-43.153613],[170.396094,-43.182227],[170.374316,-43.134668],[170.302832,-43.107617],[170.379492,-43.066211],[170.458691,-43.037695],[170.53584,-43.058496],[170.611816,-43.091797],[170.53584,-43.040723],[170.523633,-43.008984],[170.615527,-42.972461],[170.66543,-42.96123],[170.735254,-43.029785],[170.725293,-42.975488],[170.741602,-42.927344],[170.840332,-42.848633],[170.969922,-42.718359],[171.011426,-42.763672],[171.017773,-42.81875],[171.011719,-42.885059],[171.038379,-42.862109],[171.047559,-42.801855],[171.027734,-42.696094],[171.189551,-42.500488],[171.221289,-42.478613],[171.257031,-42.465332],[171.313379,-42.460156],[171.296094,-42.430566],[171.252246,-42.401953],[171.296484,-42.302539],[171.322656,-42.189063],[171.360254,-42.07998],[171.420605,-41.973047],[171.48623,-41.794727],[171.536328,-41.75752],[171.672168,-41.744727],[171.731641,-41.719629],[171.830664,-41.655176],[171.948047,-41.538672],[172.010742,-41.444727],[172.093359,-41.201562],[172.139453,-40.947266],[172.272754,-40.758691],[172.468164,-40.622168],[172.640625,-40.518262],[172.711133,-40.49668],[172.830176,-40.490039],[172.943652,-40.51875],[172.732617,-40.54375],[172.711133,-40.605371],[172.704395,-40.667773],[172.728906,-40.723633],[172.766797,-40.773438],[172.869141,-40.820312],[172.988672,-40.848242],[173.042285,-40.953613],[173.052148,-41.078613],[173.068652,-41.18584],[173.115332,-41.279297]]],[[[173.914648,-40.863672],[173.780859,-40.921777],[173.78623,-40.881445],[173.812402,-40.793652],[173.87334,-40.749316],[173.90332,-40.746289],[173.964453,-40.712988],[173.958008,-40.786816],[173.914648,-40.863672]]],[[[166.746289,-45.655859],[166.741016,-45.70498],[166.729199,-45.729688],[166.694531,-45.729883],[166.64248,-45.724414],[166.591699,-45.701758],[166.55918,-45.708203],[166.532031,-45.699805],[166.56709,-45.644434],[166.685645,-45.615039],[166.731445,-45.638672],[166.746289,-45.655859]]],[[[166.979492,-45.179688],[167.022656,-45.299805],[166.931152,-45.276855],[166.892676,-45.240527],[166.962695,-45.180371],[166.979492,-45.179688]]],[[[168.144922,-46.862207],[168.145313,-46.902148],[168.041016,-46.887793],[168.043164,-46.932617],[168.125488,-46.956152],[168.155957,-46.988281],[168.241406,-46.979004],[168.260645,-47.027051],[168.240918,-47.07002],[168.183887,-47.101562],[168.015039,-47.11748],[167.905566,-47.179883],[167.810742,-47.17041],[167.784961,-47.176074],[167.676367,-47.242969],[167.554883,-47.263672],[167.521973,-47.258691],[167.53877,-47.199023],[167.629004,-47.142285],[167.630957,-47.087793],[167.654102,-47.044238],[167.740918,-47.013574],[167.741992,-46.956836],[167.800781,-46.906543],[167.765234,-46.797656],[167.783984,-46.699805],[167.955762,-46.694434],[168.144922,-46.862207]]],[[[175.543164,-36.279297],[175.551172,-36.333887],[175.474609,-36.314453],[175.444629,-36.273242],[175.358789,-36.230664],[175.346191,-36.217773],[175.336621,-36.134766],[175.381641,-36.094824],[175.389551,-36.077734],[175.409375,-36.070898],[175.444336,-36.114648],[175.512598,-36.176953],[175.543164,-36.279297]]],[[[173.269434,-34.934766],[173.28457,-34.980566],[173.339941,-34.947949],[173.38125,-34.896484],[173.447852,-34.844336],[173.438672,-34.928516],[173.472656,-34.946973],[173.69375,-35.005664],[173.739258,-35.05459],[173.78623,-35.068555],[173.812793,-35.041211],[173.843945,-35.02627],[173.923828,-35.057129],[174.104004,-35.142871],[174.118945,-35.172363],[174.109766,-35.216406],[174.11875,-35.262891],[174.143164,-35.3],[174.203223,-35.308594],[174.28291,-35.253516],[174.320312,-35.24668],[174.37334,-35.324512],[174.393164,-35.368555],[174.384961,-35.36709],[174.419141,-35.410742],[174.464746,-35.454102],[174.543457,-35.582031],[174.531738,-35.626953],[174.508594,-35.667383],[174.580664,-35.785547],[174.533496,-35.79375],[174.391016,-35.77373],[174.395801,-35.797363],[174.478711,-35.884082],[174.54873,-36.006641],[174.604883,-36.080566],[174.802148,-36.309473],[174.772461,-36.390918],[174.777051,-36.444629],[174.751758,-36.49082],[174.819238,-36.612109],[174.777148,-36.649805],[174.749219,-36.774023],[174.718652,-36.795801],[174.722461,-36.841211],[174.801953,-36.853223],[174.849902,-36.872559],[174.891406,-36.909375],[174.917188,-36.865039],[174.952051,-36.85293],[175.04707,-36.912207],[175.245117,-36.971289],[175.299512,-36.993262],[175.326465,-37.040918],[175.34668,-37.156152],[175.385352,-37.206934],[175.460938,-37.216699],[175.54248,-37.201367],[175.568164,-37.159375],[175.551953,-37.046484],[175.493164,-36.865723],[175.492871,-36.806934],[175.50127,-36.748047],[175.487402,-36.689551],[175.458008,-36.634277],[175.426367,-36.591895],[175.385547,-36.556348],[175.399805,-36.500781],[175.46084,-36.475684],[175.497656,-36.522656],[175.528027,-36.579297],[175.681445,-36.746973],[175.772168,-36.735156],[175.780664,-36.80459],[175.842188,-36.875098],[175.876172,-36.957715],[175.921094,-37.20459],[175.990137,-37.437012],[176.114551,-37.538281],[176.129004,-37.586719],[176.05332,-37.561719],[176.029883,-37.57627],[176.037891,-37.600684],[176.108398,-37.645117],[176.191113,-37.666992],[176.243164,-37.663867],[176.291699,-37.680078],[176.614746,-37.830957],[176.77002,-37.889648],[177.161816,-37.985742],[177.274023,-37.993457],[177.335938,-37.99082],[177.45332,-37.957422],[177.558301,-37.897461],[177.648926,-37.807813],[177.727344,-37.705566],[177.812695,-37.655957],[177.909473,-37.616895],[177.958008,-37.580664],[178.00918,-37.554883],[178.272168,-37.566895],[178.360742,-37.618457],[178.475977,-37.659766],[178.53623,-37.69209],[178.516016,-37.757617],[178.44707,-37.854395],[178.393945,-37.960254],[178.347266,-38.200879],[178.31543,-38.444043],[178.267676,-38.551172],[178.180664,-38.633691],[178.084863,-38.693945],[177.976172,-38.722266],[177.932129,-38.860254],[177.910352,-39.021777],[177.916602,-39.062402],[177.951367,-39.094531],[177.965625,-39.14248],[177.908789,-39.239551],[177.875488,-39.225488],[177.828711,-39.144727],[177.786133,-39.110938],[177.655859,-39.085742],[177.522949,-39.073828],[177.40752,-39.081152],[177.296582,-39.11582],[177.128711,-39.186133],[177.076758,-39.221777],[177.03125,-39.266895],[176.954102,-39.367578],[176.935742,-39.490723],[176.939258,-39.555273],[176.966602,-39.605176],[177.109863,-39.673145],[176.967969,-39.910742],[176.842188,-40.157813],[176.770703,-40.228418],[176.68877,-40.293457],[176.611523,-40.441992],[176.476465,-40.57002],[176.385156,-40.667676],[176.313867,-40.768945],[176.251758,-40.876855],[176.118652,-41.029102],[176.059961,-41.129688],[175.98291,-41.213281],[175.839648,-41.320117],[175.687305,-41.411719],[175.44707,-41.538281],[175.380273,-41.580078],[175.309766,-41.610645],[175.222168,-41.574414],[175.204492,-41.534961],[175.184668,-41.449023],[175.165625,-41.417383],[175.053906,-41.391211],[174.906055,-41.43291],[174.881348,-41.424023],[174.875195,-41.404297],[174.875,-41.278223],[174.900195,-41.242676],[174.865625,-41.223047],[174.831543,-41.230762],[174.819727,-41.262891],[174.841211,-41.290723],[174.757031,-41.325293],[174.669531,-41.32627],[174.642969,-41.312695],[174.635352,-41.289453],[174.656543,-41.25127],[174.684863,-41.217676],[174.847754,-41.058789],[175.016797,-40.847656],[175.1625,-40.621582],[175.200488,-40.505371],[175.254102,-40.289355],[175.210156,-40.199414],[175.155957,-40.114941],[175.009277,-39.952148],[174.81377,-39.860156],[174.687305,-39.847168],[174.56748,-39.812988],[174.454688,-39.735156],[174.352051,-39.643359],[174.148633,-39.568164],[173.934375,-39.509082],[173.812109,-39.425781],[173.783008,-39.376172],[173.763672,-39.31875],[173.766406,-39.265332],[173.781641,-39.21123],[173.806055,-39.169531],[173.844336,-39.139355],[174.071387,-39.03125],[174.311719,-38.971094],[174.356055,-38.972168],[174.398438,-38.962598],[174.458496,-38.925781],[174.566211,-38.841602],[174.597363,-38.785059],[174.618555,-38.605273],[174.653027,-38.42832],[174.715332,-38.225586],[174.809277,-38.099805],[174.840039,-38.022656],[174.80166,-37.895508],[174.836816,-37.848926],[174.87959,-37.820801],[174.928027,-37.804492],[174.845996,-37.685156],[174.749414,-37.504688],[174.729199,-37.44873],[174.743945,-37.393457],[174.767676,-37.339063],[174.707422,-37.325293],[174.672559,-37.273145],[174.58584,-37.097754],[174.609668,-37.069922],[174.659668,-37.08877],[174.734277,-37.215234],[174.746387,-37.150098],[174.803613,-37.110059],[174.863867,-37.089258],[174.928906,-37.084766],[174.782031,-36.94375],[174.73291,-36.949414],[174.667969,-36.971875],[174.601465,-36.985742],[174.536523,-36.97334],[174.475586,-36.941895],[174.444531,-36.88252],[174.406055,-36.768262],[174.381934,-36.725977],[174.188867,-36.492285],[174.245703,-36.484961],[174.401563,-36.601953],[174.431738,-36.564551],[174.454297,-36.510742],[174.446875,-36.450879],[174.40957,-36.405566],[174.354102,-36.375977],[174.353125,-36.322852],[174.39541,-36.274121],[174.392773,-36.240039],[174.303516,-36.170508],[174.267871,-36.163086],[174.252051,-36.195605],[174.277539,-36.24375],[174.253711,-36.249121],[174.036426,-36.122461],[173.969336,-36.020605],[173.914453,-35.908691],[173.908887,-35.954199],[173.917285,-36.018164],[174.003125,-36.146289],[174.142383,-36.289453],[174.166406,-36.327637],[174.145801,-36.376953],[174.097461,-36.391016],[174.054688,-36.359766],[173.991016,-36.237207],[173.945117,-36.175879],[173.412207,-35.542578],[173.480273,-35.458984],[173.58584,-35.388574],[173.610352,-35.357227],[173.626172,-35.319141],[173.581641,-35.312598],[173.541699,-35.329883],[173.496094,-35.362305],[173.454297,-35.399219],[173.40166,-35.481152],[173.376367,-35.500098],[173.313965,-35.443359],[173.290234,-35.408301],[173.291211,-35.366309],[173.274512,-35.339648],[173.228125,-35.33125],[173.160156,-35.247754],[173.116699,-35.205273],[173.18877,-35.12373],[173.190625,-35.016211],[173.117285,-34.90332],[173.02959,-34.799902],[172.860742,-34.632324],[172.705957,-34.455176],[172.87373,-34.43291],[173.043945,-34.429102],[172.96377,-34.535156],[172.999805,-34.596484],[173.054395,-34.648242],[173.171094,-34.806934],[173.18125,-34.852734],[173.240527,-34.899023],[173.269434,-34.934766]]],[[[169.178223,-52.497266],[169.233496,-52.548242],[169.127539,-52.570312],[169.075977,-52.551855],[169.039844,-52.528516],[169.021777,-52.49541],[169.079102,-52.498828],[169.128613,-52.485156],[169.178223,-52.497266]]],[[[166.221094,-50.761523],[166.242871,-50.845703],[166.187891,-50.846094],[166.073242,-50.822656],[166.037695,-50.786719],[166.013281,-50.77793],[165.971387,-50.819531],[165.904102,-50.821484],[165.88916,-50.807715],[165.915625,-50.763086],[166.073828,-50.679004],[166.103125,-50.573047],[166.101367,-50.538965],[166.225098,-50.530957],[166.254297,-50.543945],[166.26748,-50.558594],[166.259375,-50.577246],[166.20957,-50.612012],[166.207617,-50.652441],[166.22041,-50.694336],[166.179492,-50.714648],[166.200781,-50.750879],[166.221094,-50.761523]]],[[[-176.177637,-43.740332],[-176.213525,-43.766309],[-176.274854,-43.764844],[-176.381738,-43.866797],[-176.375244,-43.790625],[-176.407373,-43.760938],[-176.499121,-43.768066],[-176.516553,-43.784766],[-176.454932,-43.804883],[-176.44126,-43.816113],[-176.500146,-43.860156],[-176.439111,-43.954688],[-176.385449,-43.951465],[-176.333594,-44.025293],[-176.333838,-44.048438],[-176.452783,-44.076855],[-176.515527,-44.116602],[-176.571533,-44.114941],[-176.597998,-44.107227],[-176.629346,-44.036133],[-176.631543,-44.00625],[-176.562744,-43.954102],[-176.523779,-43.900977],[-176.555127,-43.851953],[-176.63457,-43.820215],[-176.807959,-43.83457],[-176.847656,-43.823926],[-176.761084,-43.75791],[-176.667236,-43.765137],[-176.566113,-43.717578],[-176.177637,-43.740332]]],[[[-176.176465,-44.32168],[-176.220801,-44.330566],[-176.2146,-44.273535],[-176.229297,-44.236719],[-176.154687,-44.224512],[-176.122559,-44.268457],[-176.176465,-44.32168]]],[[[-172.47915,-8.580762],[-172.483691,-8.58291],[-172.488232,-8.571582],[-172.494043,-8.55918],[-172.498682,-8.547949],[-172.497021,-8.546484],[-172.487256,-8.556152],[-172.481104,-8.56748],[-172.47915,-8.580762]]],[[[-171.186426,-9.355469],[-171.188623,-9.358301],[-171.193018,-9.352441],[-171.200049,-9.344727],[-171.204443,-9.333301],[-171.20166,-9.332617],[-171.194434,-9.33877],[-171.189307,-9.346582],[-171.186426,-9.355469]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"New Zealand","SOV_A3":"NZ1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Niue","ADM0_A3":"NIU","GEOU_DIF":0,"GEOUNIT":"Niue","GU_A3":"NIU","SU_DIF":0,"SUBUNIT":"Niue","SU_A3":"NIU","BRK_DIFF":0,"NAME":"Niue","NAME_LONG":"Niue","BRK_A3":"NIU","BRK_NAME":"Niue","BRK_GROUP":null,"ABBREV":"Niue","POSTAL":"NU","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Niue","NOTE_ADM0":"Assoc. with N.Z.","NOTE_BRK":"Assoc. with N.Z.","NAME_SORT":"Niue","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":4,"POP_EST":1620,"POP_RANK":3,"POP_YEAR":2018,"GDP_MD":10,"GDP_YEAR":2003,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"NE","ISO_A2":"NU","ISO_A2_EH":"NU","ISO_A3":"NIU","ISO_A3_EH":"NIU","ISO_N3":"570","ISO_N3_EH":"570","UN_A3":"570","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424904,"WOE_ID_EH":23424904,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NIU","ADM0_DIFF":null,"ADM0_TLC":"NIU","ADM0_A3_US":"NIU","ADM0_A3_FR":"NIU","ADM0_A3_RU":"NIU","ADM0_A3_ES":"NIU","ADM0_A3_CN":"NIU","ADM0_A3_TW":"NIU","ADM0_A3_IN":"NIU","ADM0_A3_NP":"NIU","ADM0_A3_PK":"NIU","ADM0_A3_DE":"NIU","ADM0_A3_GB":"NIU","ADM0_A3_BR":"NIU","ADM0_A3_IL":"NIU","ADM0_A3_PS":"NIU","ADM0_A3_SA":"NIU","ADM0_A3_EG":"NIU","ADM0_A3_MA":"NIU","ADM0_A3_PT":"NIU","ADM0_A3_AR":"NIU","ADM0_A3_JP":"NIU","ADM0_A3_KO":"NIU","ADM0_A3_VN":"NIU","ADM0_A3_TR":"NIU","ADM0_A3_ID":"NIU","ADM0_A3_PL":"NIU","ADM0_A3_GR":"NIU","ADM0_A3_IT":"NIU","ADM0_A3_NL":"NIU","ADM0_A3_SE":"NIU","ADM0_A3_BD":"NIU","ADM0_A3_UA":"NIU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-169.862565,"LABEL_Y":-19.045956,"NE_ID":1159321133,"WIKIDATAID":"Q34020","NAME_AR":"نييوي","NAME_BN":"নিউয়ে","NAME_DE":"Niue","NAME_EN":"Niue","NAME_ES":"Niue","NAME_FA":"نیووی","NAME_FR":"Niue","NAME_EL":"Νιούε","NAME_HE":"ניואה","NAME_HI":"निउए","NAME_HU":"Niue","NAME_ID":"Niue","NAME_IT":"Niue","NAME_JA":"ニウエ","NAME_KO":"니우에","NAME_NL":"Niue","NAME_PL":"Niue","NAME_PT":"Niue","NAME_RU":"Ниуэ","NAME_SV":"Niue","NAME_TR":"Niue","NAME_UK":"Ніуе","NAME_UR":"نیووے","NAME_VI":"Niue","NAME_ZH":"纽埃","NAME_ZHT":"紐埃","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-169.94834,-19.137891,-169.793408,-18.966016],"geometry":{"type":"Polygon","coordinates":[[[-169.803418,-19.083008],[-169.903809,-19.137891],[-169.94834,-19.072852],[-169.90874,-18.990234],[-169.861572,-18.968652],[-169.834033,-18.966016],[-169.793408,-19.042578],[-169.803418,-19.083008]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"New Zealand","SOV_A3":"NZ1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Cook Islands","ADM0_A3":"COK","GEOU_DIF":0,"GEOUNIT":"Cook Islands","GU_A3":"COK","SU_DIF":0,"SUBUNIT":"Cook Islands","SU_A3":"COK","BRK_DIFF":0,"NAME":"Cook Is.","NAME_LONG":"Cook Islands","BRK_A3":"COK","BRK_NAME":"Cook Is.","BRK_GROUP":null,"ABBREV":"Cook Is.","POSTAL":"CK","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":"Cook Islands","NOTE_ADM0":"Assoc. with N.Z.","NOTE_BRK":"Assoc. with N.Z.","NAME_SORT":"Cook Islands","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":4,"POP_EST":17459,"POP_RANK":6,"POP_YEAR":2016,"GDP_MD":244,"GDP_YEAR":2010,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"CW","ISO_A2":"CK","ISO_A2_EH":"CK","ISO_A3":"COK","ISO_A3_EH":"COK","ISO_N3":"184","ISO_N3_EH":"184","UN_A3":"184","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424795,"WOE_ID_EH":23424795,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"COK","ADM0_DIFF":null,"ADM0_TLC":"COK","ADM0_A3_US":"COK","ADM0_A3_FR":"COK","ADM0_A3_RU":"COK","ADM0_A3_ES":"COK","ADM0_A3_CN":"COK","ADM0_A3_TW":"COK","ADM0_A3_IN":"COK","ADM0_A3_NP":"COK","ADM0_A3_PK":"COK","ADM0_A3_DE":"COK","ADM0_A3_GB":"COK","ADM0_A3_BR":"COK","ADM0_A3_IL":"COK","ADM0_A3_PS":"COK","ADM0_A3_SA":"COK","ADM0_A3_EG":"COK","ADM0_A3_MA":"COK","ADM0_A3_PT":"COK","ADM0_A3_AR":"COK","ADM0_A3_JP":"COK","ADM0_A3_KO":"COK","ADM0_A3_VN":"COK","ADM0_A3_TR":"COK","ADM0_A3_ID":"COK","ADM0_A3_PL":"COK","ADM0_A3_GR":"COK","ADM0_A3_IT":"COK","ADM0_A3_NL":"COK","ADM0_A3_SE":"COK","ADM0_A3_BD":"COK","ADM0_A3_UA":"COK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":8,"LONG_LEN":12,"ABBREV_LEN":8,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-159.785675,"LABEL_Y":-21.215993,"NE_ID":1159321129,"WIKIDATAID":"Q26988","NAME_AR":"جزر كوك","NAME_BN":"কুক দ্বীপপুঞ্জ","NAME_DE":"Cookinseln","NAME_EN":"Cook Islands","NAME_ES":"Islas Cook","NAME_FA":"جزایر کوک","NAME_FR":"Îles Cook","NAME_EL":"Νήσοι Κουκ","NAME_HE":"איי קוק","NAME_HI":"कुक द्वीपसमूह","NAME_HU":"Cook-szigetek","NAME_ID":"Kepulauan Cook","NAME_IT":"Isole Cook","NAME_JA":"クック諸島","NAME_KO":"쿡 제도","NAME_NL":"Cookeilanden","NAME_PL":"Wyspy Cooka","NAME_PT":"Ilhas Cook","NAME_RU":"Острова Кука","NAME_SV":"Cooköarna","NAME_TR":"Cook Adaları","NAME_UK":"Острови Кука","NAME_UR":"جزائر کک","NAME_VI":"Quần đảo Cook","NAME_ZH":"库克群岛","NAME_ZHT":"庫克群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-159.84248,-21.249512,-159.736865,-21.186426],"geometry":{"type":"Polygon","coordinates":[[[-159.740527,-21.249219],[-159.772559,-21.249512],[-159.813086,-21.24209],[-159.8396,-21.238086],[-159.84248,-21.229102],[-159.832031,-21.200488],[-159.810596,-21.186426],[-159.768359,-21.188477],[-159.739502,-21.208105],[-159.736865,-21.240625],[-159.740527,-21.249219]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Netherlands","SOV_A3":"NL1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Netherlands","ADM0_A3":"NLD","GEOU_DIF":0,"GEOUNIT":"Netherlands","GU_A3":"NLD","SU_DIF":0,"SUBUNIT":"Netherlands","SU_A3":"NLD","BRK_DIFF":0,"NAME":"Netherlands","NAME_LONG":"Netherlands","BRK_A3":"NLD","BRK_NAME":"Netherlands","BRK_GROUP":null,"ABBREV":"Neth.","POSTAL":"NL","FORMAL_EN":"Kingdom of the Netherlands","FORMAL_FR":null,"NAME_CIAWF":"Netherlands","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Netherlands","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":9,"POP_EST":17332850,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":907050,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"NL","ISO_A2":"NL","ISO_A2_EH":"NL","ISO_A3":"NLD","ISO_A3_EH":"NLD","ISO_N3":"528","ISO_N3_EH":"528","UN_A3":"528","WB_A2":"NL","WB_A3":"NLD","WOE_ID":-90,"WOE_ID_EH":23424909,"WOE_NOTE":"Doesn't include new former units of Netherlands Antilles (24549811, 24549808, and 24549809)","ADM0_ISO":"NLD","ADM0_DIFF":null,"ADM0_TLC":"NLD","ADM0_A3_US":"NLD","ADM0_A3_FR":"NLD","ADM0_A3_RU":"NLD","ADM0_A3_ES":"NLD","ADM0_A3_CN":"NLD","ADM0_A3_TW":"NLD","ADM0_A3_IN":"NLD","ADM0_A3_NP":"NLD","ADM0_A3_PK":"NLD","ADM0_A3_DE":"NLD","ADM0_A3_GB":"NLD","ADM0_A3_BR":"NLD","ADM0_A3_IL":"NLD","ADM0_A3_PS":"NLD","ADM0_A3_SA":"NLD","ADM0_A3_EG":"NLD","ADM0_A3_MA":"NLD","ADM0_A3_PT":"NLD","ADM0_A3_AR":"NLD","ADM0_A3_JP":"NLD","ADM0_A3_KO":"NLD","ADM0_A3_VN":"NLD","ADM0_A3_TR":"NLD","ADM0_A3_ID":"NLD","ADM0_A3_PL":"NLD","ADM0_A3_GR":"NLD","ADM0_A3_IT":"NLD","ADM0_A3_NL":"NLD","ADM0_A3_SE":"NLD","ADM0_A3_BD":"NLD","ADM0_A3_UA":"NLD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":10,"LABEL_X":5.61144,"LABEL_Y":52.422211,"NE_ID":1159321101,"WIKIDATAID":"Q55","NAME_AR":"هولندا","NAME_BN":"নেদারল্যান্ডস","NAME_DE":"Niederlande","NAME_EN":"Netherlands","NAME_ES":"Países Bajos","NAME_FA":"هلند","NAME_FR":"Pays-Bas","NAME_EL":"Ολλανδία","NAME_HE":"הולנד","NAME_HI":"नीदरलैण्ड","NAME_HU":"Hollandia","NAME_ID":"Belanda","NAME_IT":"Paesi Bassi","NAME_JA":"オランダ","NAME_KO":"네덜란드","NAME_NL":"Nederland","NAME_PL":"Holandia","NAME_PT":"Países Baixos","NAME_RU":"Нидерланды","NAME_SV":"Nederländerna","NAME_TR":"Hollanda","NAME_UK":"Нідерланди","NAME_UR":"نیدرلینڈز","NAME_VI":"Hà Lan","NAME_ZH":"荷兰","NAME_ZHT":"荷蘭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-68.371094,12.03208,7.197266,53.625488],"geometry":{"type":"MultiPolygon","coordinates":[[[[5.993945,50.750439],[5.892461,50.752557],[5.797363,50.754541],[5.74707,50.75957],[5.693652,50.774658],[5.693555,50.774756],[5.669141,50.805957],[5.639453,50.843604],[5.647559,50.86665],[5.736621,50.932129],[5.75,50.950244],[5.74082,50.959912],[5.749805,50.98877],[5.818262,51.086426],[5.827148,51.125635],[5.796484,51.153076],[5.752344,51.169482],[5.608789,51.198437],[5.54043,51.239307],[5.508789,51.275],[5.476855,51.285059],[5.429785,51.272998],[5.31084,51.259717],[5.21416,51.278955],[5.099902,51.346484],[5.073438,51.406836],[5.059473,51.453125],[5.030957,51.469092],[4.992578,51.445361],[4.943945,51.407764],[4.848047,51.403271],[4.820703,51.412061],[4.816016,51.432812],[4.810547,51.452734],[4.78418,51.477393],[4.755664,51.491113],[4.633984,51.421729],[4.58877,51.421924],[4.531641,51.448584],[4.503418,51.474707],[4.440918,51.459814],[4.384766,51.427588],[4.404004,51.36709],[4.37373,51.356006],[4.304492,51.361523],[4.226172,51.386475],[4.138867,51.401514],[4.006543,51.443213],[3.821875,51.409375],[3.693555,51.449902],[3.586914,51.453906],[3.520508,51.486182],[3.448926,51.540771],[3.499609,51.57666],[3.548633,51.589111],[3.743945,51.596045],[3.886035,51.574219],[4.141309,51.455762],[4.205762,51.456689],[4.274121,51.471631],[4.239355,51.503906],[4.175488,51.519287],[4.080469,51.551123],[4.004785,51.59585],[4.182617,51.610303],[4.158008,51.633447],[4.13457,51.6729],[3.946875,51.810547],[3.978906,51.847803],[4.026074,51.927734],[4.084863,51.994092],[4.131738,52.011914],[4.208789,52.058984],[4.37627,52.196826],[4.482813,52.30918],[4.562109,52.442578],[4.67832,52.809766],[4.712695,52.872119],[4.76875,52.941309],[4.839063,52.928271],[4.887988,52.90835],[5.06123,52.960645],[5.358398,53.096484],[5.445996,53.214062],[5.532031,53.268701],[5.873535,53.375195],[6.062207,53.40708],[6.353223,53.415283],[6.563574,53.434277],[6.816211,53.441162],[6.912402,53.375391],[6.968164,53.327295],[7.058008,53.300586],[7.197266,53.282275],[7.188965,53.187207],[7.189941,52.999512],[7.179492,52.966211],[7.11709,52.887012],[7.050879,52.744775],[7.033008,52.651367],[7.013184,52.633545],[6.748438,52.634082],[6.710742,52.617871],[6.705371,52.597656],[6.71875,52.573584],[6.712402,52.549658],[6.691602,52.530176],[6.70293,52.499219],[6.748828,52.464014],[6.83252,52.442285],[6.92207,52.440283],[6.968164,52.444092],[7.001855,52.418994],[7.035156,52.380225],[7.032617,52.331494],[7.019629,52.266016],[6.977246,52.205518],[6.855078,52.135791],[6.800391,52.11123],[6.749023,52.098682],[6.724512,52.080225],[6.712988,52.056885],[6.715625,52.036182],[6.802441,51.980176],[6.800391,51.967383],[6.775195,51.938281],[6.741797,51.910889],[6.517578,51.853955],[6.425,51.858398],[6.372168,51.830029],[6.355664,51.824658],[6.29707,51.850732],[6.166504,51.880762],[6.117188,51.87041],[6.089844,51.853955],[6.007617,51.833984],[5.94873,51.802686],[5.948535,51.762402],[6.052734,51.658252],[6.089355,51.637793],[6.091113,51.598926],[6.141602,51.550098],[6.193262,51.488916],[6.198828,51.45],[6.192871,51.410596],[6.166211,51.354834],[6.075879,51.224121],[6.074805,51.199023],[6.082422,51.17998],[6.113379,51.174707],[6.136914,51.164844],[6.12998,51.147412],[5.961035,51.056689],[5.939258,51.04082],[5.868359,51.045312],[5.85752,51.030127],[5.867188,51.005664],[5.894727,50.984229],[5.955078,50.972949],[6.006836,50.949951],[6.048438,50.904883],[5.993945,50.750439]]],[[[4.226172,51.386475],[4.211426,51.34873],[4.172559,51.30708],[4.040039,51.24707],[3.902051,51.207666],[3.830762,51.212598],[3.781934,51.233203],[3.755664,51.254834],[3.681836,51.275684],[3.580273,51.286182],[3.51709,51.263623],[3.471973,51.242236],[3.43252,51.245752],[3.402832,51.263623],[3.380078,51.291113],[3.350098,51.377686],[3.425781,51.393506],[3.589453,51.399414],[3.716504,51.369141],[3.883398,51.354492],[4.011035,51.395947],[4.111523,51.360645],[4.226172,51.386475]]],[[[6.333398,53.510742],[6.193262,53.476807],[6.159277,53.483936],[6.167676,53.49375],[6.290918,53.51499],[6.333398,53.510742]]],[[[5.929297,53.458838],[5.732031,53.442627],[5.665332,53.454883],[5.654297,53.466504],[5.708105,53.473389],[5.87627,53.475098],[5.928223,53.46499],[5.929297,53.458838]]],[[[5.108594,53.308008],[4.92373,53.23457],[4.90791,53.24624],[5.027051,53.310205],[5.108594,53.308008]]],[[[5.325781,53.385742],[5.232617,53.377783],[5.190234,53.391797],[5.415137,53.431445],[5.557422,53.443555],[5.582617,53.438086],[5.325781,53.385742]]],[[[4.886133,53.070703],[4.787109,52.999805],[4.726758,53.019629],[4.70918,53.036035],[4.739844,53.091309],[4.886426,53.183301],[4.886133,53.070703]]],[[[3.949121,51.739453],[4.046777,51.684912],[4.067578,51.66748],[4.075098,51.648779],[3.950977,51.627051],[3.819043,51.693994],[3.731836,51.678223],[3.699023,51.709912],[3.698535,51.729687],[3.789062,51.746436],[3.949121,51.739453]]],[[[6.734766,53.58252],[6.64209,53.579199],[6.668555,53.605664],[6.75459,53.625488],[6.800879,53.625488],[6.734766,53.58252]]],[[[-68.205811,12.14458],[-68.254346,12.03208],[-68.282227,12.082275],[-68.287256,12.171729],[-68.307129,12.206738],[-68.348437,12.228076],[-68.371094,12.25752],[-68.369238,12.301953],[-68.219482,12.23125],[-68.205811,12.14458]]],[[[-62.9375,17.495654],[-62.961719,17.475049],[-62.983105,17.476904],[-62.997168,17.496826],[-62.999609,17.530371],[-62.979346,17.521191],[-62.971777,17.516064],[-62.96543,17.509277],[-62.9375,17.495654]]],[[[-63.232666,17.623145],[-63.241602,17.61958],[-63.254492,17.628662],[-63.252148,17.645264],[-63.24165,17.651807],[-63.233496,17.647217],[-63.226904,17.634131],[-63.232666,17.623145]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":5,"SOVEREIGNT":"Netherlands","SOV_A3":"NL1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Aruba","ADM0_A3":"ABW","GEOU_DIF":0,"GEOUNIT":"Aruba","GU_A3":"ABW","SU_DIF":0,"SUBUNIT":"Aruba","SU_A3":"ABW","BRK_DIFF":0,"NAME":"Aruba","NAME_LONG":"Aruba","BRK_A3":"ABW","BRK_NAME":"Aruba","BRK_GROUP":null,"ABBREV":"Aruba","POSTAL":"AW","FORMAL_EN":"Aruba","FORMAL_FR":null,"NAME_CIAWF":"Aruba","NOTE_ADM0":"Neth.","NOTE_BRK":null,"NAME_SORT":"Aruba","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":9,"POP_EST":106314,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":3056,"GDP_YEAR":2017,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"AA","ISO_A2":"AW","ISO_A2_EH":"AW","ISO_A3":"ABW","ISO_A3_EH":"ABW","ISO_N3":"533","ISO_N3_EH":"533","UN_A3":"533","WB_A2":"AW","WB_A3":"ABW","WOE_ID":23424736,"WOE_ID_EH":23424736,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ABW","ADM0_DIFF":null,"ADM0_TLC":"ABW","ADM0_A3_US":"ABW","ADM0_A3_FR":"ABW","ADM0_A3_RU":"ABW","ADM0_A3_ES":"ABW","ADM0_A3_CN":"ABW","ADM0_A3_TW":"ABW","ADM0_A3_IN":"ABW","ADM0_A3_NP":"ABW","ADM0_A3_PK":"ABW","ADM0_A3_DE":"ABW","ADM0_A3_GB":"ABW","ADM0_A3_BR":"ABW","ADM0_A3_IL":"ABW","ADM0_A3_PS":"ABW","ADM0_A3_SA":"ABW","ADM0_A3_EG":"ABW","ADM0_A3_MA":"ABW","ADM0_A3_PT":"ABW","ADM0_A3_AR":"ABW","ADM0_A3_JP":"ABW","ADM0_A3_KO":"ABW","ADM0_A3_VN":"ABW","ADM0_A3_TR":"ABW","ADM0_A3_ID":"ABW","ADM0_A3_PL":"ABW","ADM0_A3_GR":"ABW","ADM0_A3_IT":"ABW","ADM0_A3_NL":"ABW","ADM0_A3_SE":"ABW","ADM0_A3_BD":"ABW","ADM0_A3_UA":"ABW","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":4,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-69.972795,"LABEL_Y":12.5174,"NE_ID":1159321097,"WIKIDATAID":"Q21203","NAME_AR":"أروبا","NAME_BN":"আরুবা","NAME_DE":"Aruba","NAME_EN":"Aruba","NAME_ES":"Aruba","NAME_FA":"آروبا","NAME_FR":"Aruba","NAME_EL":"Αρούμπα","NAME_HE":"ארובה","NAME_HI":"अरूबा","NAME_HU":"Aruba","NAME_ID":"Aruba","NAME_IT":"Aruba","NAME_JA":"アルバ","NAME_KO":"아루바","NAME_NL":"Aruba","NAME_PL":"Aruba","NAME_PT":"Aruba","NAME_RU":"Аруба","NAME_SV":"Aruba","NAME_TR":"Aruba","NAME_UK":"Аруба","NAME_UR":"اروبا","NAME_VI":"Aruba","NAME_ZH":"阿鲁巴","NAME_ZHT":"阿魯巴","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-70.066113,12.422998,-69.895703,12.614111],"geometry":{"type":"Polygon","coordinates":[[[-69.899121,12.452002],[-69.895703,12.422998],[-69.942187,12.438525],[-70.00415,12.500488],[-70.066113,12.546973],[-70.050879,12.59707],[-70.035107,12.614111],[-69.973145,12.567627],[-69.911816,12.480469],[-69.899121,12.452002]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":5,"SOVEREIGNT":"Netherlands","SOV_A3":"NL1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Curaçao","ADM0_A3":"CUW","GEOU_DIF":0,"GEOUNIT":"Curaçao","GU_A3":"CUW","SU_DIF":0,"SUBUNIT":"Curaçao","SU_A3":"CUW","BRK_DIFF":0,"NAME":"Curaçao","NAME_LONG":"Curaçao","BRK_A3":"CUW","BRK_NAME":"Curaçao","BRK_GROUP":null,"ABBREV":"Cur.","POSTAL":"CW","FORMAL_EN":"Curaçao","FORMAL_FR":null,"NAME_CIAWF":"Curacao","NOTE_ADM0":"Neth.","NOTE_BRK":null,"NAME_SORT":"Curaçao","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":9,"POP_EST":157538,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":3101,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"NT","ISO_A2":"CW","ISO_A2_EH":"CW","ISO_A3":"CUW","ISO_A3_EH":"CUW","ISO_N3":"531","ISO_N3_EH":"531","UN_A3":"531","WB_A2":"CW","WB_A3":"CUW","WOE_ID":-90,"WOE_ID_EH":24549810,"WOE_NOTE":"Expired subunits of Netherlands Antilles (23424914).","ADM0_ISO":"CUW","ADM0_DIFF":null,"ADM0_TLC":"CUW","ADM0_A3_US":"CUW","ADM0_A3_FR":"CUW","ADM0_A3_RU":"CUW","ADM0_A3_ES":"CUW","ADM0_A3_CN":"CUW","ADM0_A3_TW":"CUW","ADM0_A3_IN":"CUW","ADM0_A3_NP":"CUW","ADM0_A3_PK":"CUW","ADM0_A3_DE":"CUW","ADM0_A3_GB":"CUW","ADM0_A3_BR":"CUW","ADM0_A3_IL":"CUW","ADM0_A3_PS":"CUW","ADM0_A3_SA":"CUW","ADM0_A3_EG":"CUW","ADM0_A3_MA":"CUW","ADM0_A3_PT":"CUW","ADM0_A3_AR":"CUW","ADM0_A3_JP":"CUW","ADM0_A3_KO":"CUW","ADM0_A3_VN":"CUW","ADM0_A3_TR":"CUW","ADM0_A3_ID":"CUW","ADM0_A3_PL":"CUW","ADM0_A3_GR":"CUW","ADM0_A3_IT":"CUW","ADM0_A3_NL":"CUW","ADM0_A3_SE":"CUW","ADM0_A3_BD":"CUW","ADM0_A3_UA":"CUW","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":4,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-68.920578,"LABEL_Y":12.145039,"NE_ID":1159321099,"WIKIDATAID":"Q25279","NAME_AR":"كوراساو","NAME_BN":"কিউরাসাও","NAME_DE":"Curaçao","NAME_EN":"Curaçao","NAME_ES":"Curazao","NAME_FA":"کوراسائو","NAME_FR":"Curaçao","NAME_EL":"Κουρασάο","NAME_HE":"קוראסאו","NAME_HI":"कुराकाओ","NAME_HU":"Curaçao","NAME_ID":"Curaçao","NAME_IT":"Curaçao","NAME_JA":"キュラソー","NAME_KO":"퀴라소","NAME_NL":"Curaçao","NAME_PL":"Curaçao","NAME_PT":"Curaçao","NAME_RU":"Кюрасао","NAME_SV":"Curaçao","NAME_TR":"Curaçao","NAME_UK":"Кюрасао","NAME_UR":"کیوراساؤ","NAME_VI":"Curaçao","NAME_ZH":"库拉索","NAME_ZHT":"古拉索","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-69.158887,12.045459,-68.751074,12.380273],"geometry":{"type":"Polygon","coordinates":[[[-68.751074,12.059766],[-68.80332,12.045459],[-68.995117,12.141846],[-69.153809,12.298437],[-69.158887,12.380273],[-69.118457,12.373242],[-69.076758,12.342041],[-69.013135,12.231348],[-68.827393,12.158545],[-68.751074,12.059766]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Nepal","SOV_A3":"NPL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Nepal","ADM0_A3":"NPL","GEOU_DIF":0,"GEOUNIT":"Nepal","GU_A3":"NPL","SU_DIF":0,"SUBUNIT":"Nepal","SU_A3":"NPL","BRK_DIFF":0,"NAME":"Nepal","NAME_LONG":"Nepal","BRK_A3":"NPL","BRK_NAME":"Nepal","BRK_GROUP":null,"ABBREV":"Nepal","POSTAL":"NP","FORMAL_EN":"Nepal","FORMAL_FR":null,"NAME_CIAWF":"Nepal","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Nepal","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":3,"MAPCOLOR13":12,"POP_EST":28608710,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":30641,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"NP","ISO_A2":"NP","ISO_A2_EH":"NP","ISO_A3":"NPL","ISO_A3_EH":"NPL","ISO_N3":"524","ISO_N3_EH":"524","UN_A3":"524","WB_A2":"NP","WB_A3":"NPL","WOE_ID":23424911,"WOE_ID_EH":23424911,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NPL","ADM0_DIFF":null,"ADM0_TLC":"NPL","ADM0_A3_US":"NPL","ADM0_A3_FR":"NPL","ADM0_A3_RU":"NPL","ADM0_A3_ES":"NPL","ADM0_A3_CN":"NPL","ADM0_A3_TW":"NPL","ADM0_A3_IN":"NPL","ADM0_A3_NP":"NPL","ADM0_A3_PK":"NPL","ADM0_A3_DE":"NPL","ADM0_A3_GB":"NPL","ADM0_A3_BR":"NPL","ADM0_A3_IL":"NPL","ADM0_A3_PS":"NPL","ADM0_A3_SA":"NPL","ADM0_A3_EG":"NPL","ADM0_A3_MA":"NPL","ADM0_A3_PT":"NPL","ADM0_A3_AR":"NPL","ADM0_A3_JP":"NPL","ADM0_A3_KO":"NPL","ADM0_A3_VN":"NPL","ADM0_A3_TR":"NPL","ADM0_A3_ID":"NPL","ADM0_A3_PL":"NPL","ADM0_A3_GR":"NPL","ADM0_A3_IT":"NPL","ADM0_A3_NL":"NPL","ADM0_A3_SE":"NPL","ADM0_A3_BD":"NPL","ADM0_A3_UA":"NPL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":83.639914,"LABEL_Y":28.297925,"NE_ID":1159321121,"WIKIDATAID":"Q837","NAME_AR":"نيبال","NAME_BN":"নেপাল","NAME_DE":"Nepal","NAME_EN":"Nepal","NAME_ES":"Nepal","NAME_FA":"نپال","NAME_FR":"Népal","NAME_EL":"Νεπάλ","NAME_HE":"נפאל","NAME_HI":"नेपाल","NAME_HU":"Nepál","NAME_ID":"Nepal","NAME_IT":"Nepal","NAME_JA":"ネパール","NAME_KO":"네팔","NAME_NL":"Nepal","NAME_PL":"Nepal","NAME_PT":"Nepal","NAME_RU":"Непал","NAME_SV":"Nepal","NAME_TR":"Nepal","NAME_UK":"Непал","NAME_UR":"نیپال","NAME_VI":"Nepal","NAME_ZH":"尼泊尔","NAME_ZHT":"尼泊爾","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[80.05166,26.360303,88.161523,30.3875],"geometry":{"type":"Polygon","coordinates":[[[88.109766,27.870605],[88.150293,27.843311],[88.154297,27.798682],[88.146973,27.749219],[88.105566,27.642432],[88.067871,27.567383],[88.024121,27.408887],[87.984375,27.133936],[87.993164,27.086084],[88.111035,26.928467],[88.157227,26.807324],[88.161523,26.724805],[88.111523,26.586426],[88.054883,26.430029],[88.026953,26.39502],[87.995117,26.382373],[87.849219,26.436914],[87.748828,26.429297],[87.633398,26.399121],[87.513086,26.40498],[87.413574,26.422949],[87.287402,26.360303],[87.166797,26.394238],[87.089551,26.433203],[87.037891,26.541602],[87.016406,26.55542],[86.7625,26.441943],[86.701367,26.435059],[86.543652,26.495996],[86.414453,26.556299],[86.366113,26.574414],[86.241602,26.597998],[86.129395,26.611719],[86.007324,26.649365],[85.855664,26.600195],[85.794531,26.60415],[85.737305,26.639746],[85.707422,26.712646],[85.699902,26.781641],[85.648438,26.829004],[85.568457,26.839844],[85.456445,26.797217],[85.292969,26.741016],[85.240234,26.750342],[85.191797,26.766553],[85.174121,26.781543],[85.151563,26.846631],[85.125391,26.860986],[85.087305,26.862939],[85.020117,26.878516],[84.937207,26.926904],[84.685352,27.041016],[84.653809,27.091699],[84.654785,27.203662],[84.640723,27.249854],[84.610156,27.298682],[84.480859,27.348193],[84.229785,27.427832],[84.091016,27.491357],[84.024805,27.46167],[83.897168,27.435107],[83.828809,27.377832],[83.746973,27.395947],[83.55166,27.456348],[83.447168,27.465332],[83.383984,27.444824],[83.369434,27.410254],[83.289746,27.370996],[83.213867,27.402295],[83.064063,27.444531],[82.932813,27.467676],[82.733398,27.518994],[82.71084,27.59668],[82.677344,27.673437],[82.629883,27.687061],[82.451367,27.671826],[82.287695,27.756543],[82.111914,27.864941],[82.037012,27.900586],[81.987695,27.91377],[81.945215,27.899268],[81.896875,27.874463],[81.852637,27.86709],[81.757227,27.913818],[81.635547,27.980469],[81.486035,28.062207],[81.31084,28.176367],[81.238965,28.240869],[81.20625,28.289404],[81.168945,28.33501],[81.016602,28.40957],[80.896094,28.468555],[80.750781,28.539697],[80.726172,28.553906],[80.671289,28.59624],[80.587012,28.649609],[80.517871,28.665186],[80.495801,28.635791],[80.479102,28.604883],[80.418555,28.612012],[80.324805,28.666406],[80.226562,28.72334],[80.149609,28.776074],[80.070703,28.830176],[80.05166,28.870312],[80.08457,28.994189],[80.130469,29.100391],[80.169531,29.124316],[80.233008,29.194629],[80.255957,29.318018],[80.254883,29.42334],[80.316895,29.57207],[80.401855,29.730273],[80.549023,29.899805],[80.612891,29.955859],[80.684082,29.994336],[80.819922,30.119336],[80.848145,30.139746],[80.907617,30.171924],[80.966113,30.180029],[81.010254,30.164502],[81.055566,30.098975],[81.110352,30.036816],[81.177148,30.039893],[81.255078,30.093311],[81.417188,30.337598],[81.641895,30.3875],[81.854883,30.362402],[82.043359,30.326758],[82.098926,30.245068],[82.135352,30.158984],[82.158984,30.115186],[82.220703,30.063867],[82.486523,29.941504],[82.64082,29.831201],[82.854297,29.683398],[83.013965,29.618066],[83.155469,29.612646],[83.235156,29.55459],[83.355176,29.43916],[83.456641,29.306348],[83.583496,29.183594],[83.671094,29.187598],[83.79043,29.227441],[83.935938,29.279492],[84.021973,29.253857],[84.101367,29.219971],[84.127832,29.156299],[84.175586,29.036377],[84.228711,28.911768],[84.312109,28.868115],[84.410742,28.803906],[84.46543,28.75293],[84.650586,28.65957],[84.676758,28.621533],[84.714258,28.595557],[84.759375,28.579248],[84.796875,28.560205],[84.855078,28.553613],[85.069141,28.609668],[85.126367,28.602637],[85.159082,28.592236],[85.160156,28.571875],[85.121484,28.484277],[85.088574,28.372266],[85.122461,28.315967],[85.212109,28.292627],[85.410645,28.276025],[85.67832,28.277441],[85.759473,28.220654],[85.840234,28.135352],[85.92168,27.989697],[85.954102,27.928223],[85.994531,27.9104],[86.06416,27.934717],[86.075488,27.99458],[86.078711,28.083594],[86.137012,28.114355],[86.174219,28.091699],[86.217969,28.02207],[86.328613,27.959521],[86.408691,27.928662],[86.484961,27.939551],[86.516895,27.963525],[86.554492,28.085205],[86.614453,28.103027],[86.690527,28.094922],[86.719629,28.070654],[86.750391,28.02207],[86.842383,27.99917],[86.933789,27.968457],[87.020117,27.928662],[87.141406,27.83833],[87.290723,27.821924],[87.46416,27.823828],[87.555273,27.821826],[87.622559,27.815186],[87.682715,27.821387],[87.860742,27.886084],[87.933398,27.89082],[88.02334,27.883398],[88.109766,27.870605]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Nauru","SOV_A3":"NRU","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Nauru","ADM0_A3":"NRU","GEOU_DIF":0,"GEOUNIT":"Nauru","GU_A3":"NRU","SU_DIF":0,"SUBUNIT":"Nauru","SU_A3":"NRU","BRK_DIFF":0,"NAME":"Nauru","NAME_LONG":"Nauru","BRK_A3":"NRU","BRK_NAME":"Nauru","BRK_GROUP":null,"ABBREV":"Nauru","POSTAL":"NR","FORMAL_EN":"Republic of Nauru","FORMAL_FR":null,"NAME_CIAWF":"Nauru","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Nauru","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":7,"MAPCOLOR9":6,"MAPCOLOR13":9,"POP_EST":12581,"POP_RANK":6,"POP_YEAR":2019,"GDP_MD":118,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"NR","ISO_A2":"NR","ISO_A2_EH":"NR","ISO_A3":"NRU","ISO_A3_EH":"NRU","ISO_N3":"520","ISO_N3_EH":"520","UN_A3":"520","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424912,"WOE_ID_EH":23424912,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NRU","ADM0_DIFF":null,"ADM0_TLC":"NRU","ADM0_A3_US":"NRU","ADM0_A3_FR":"NRU","ADM0_A3_RU":"NRU","ADM0_A3_ES":"NRU","ADM0_A3_CN":"NRU","ADM0_A3_TW":"NRU","ADM0_A3_IN":"NRU","ADM0_A3_NP":"NRU","ADM0_A3_PK":"NRU","ADM0_A3_DE":"NRU","ADM0_A3_GB":"NRU","ADM0_A3_BR":"NRU","ADM0_A3_IL":"NRU","ADM0_A3_PS":"NRU","ADM0_A3_SA":"NRU","ADM0_A3_EG":"NRU","ADM0_A3_MA":"NRU","ADM0_A3_PT":"NRU","ADM0_A3_AR":"NRU","ADM0_A3_JP":"NRU","ADM0_A3_KO":"NRU","ADM0_A3_VN":"NRU","ADM0_A3_TR":"NRU","ADM0_A3_ID":"NRU","ADM0_A3_PL":"NRU","ADM0_A3_GR":"NRU","ADM0_A3_IT":"NRU","ADM0_A3_NL":"NRU","ADM0_A3_SE":"NRU","ADM0_A3_BD":"NRU","ADM0_A3_UA":"NRU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Micronesia","REGION_WB":"East Asia & Pacific","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":3,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":166.932644,"LABEL_Y":-0.520261,"NE_ID":1159321123,"WIKIDATAID":"Q697","NAME_AR":"ناورو","NAME_BN":"নাউরু","NAME_DE":"Nauru","NAME_EN":"Nauru","NAME_ES":"Nauru","NAME_FA":"نائورو","NAME_FR":"Nauru","NAME_EL":"Ναουρού","NAME_HE":"נאורו","NAME_HI":"नौरु","NAME_HU":"Nauru","NAME_ID":"Nauru","NAME_IT":"Nauru","NAME_JA":"ナウル","NAME_KO":"나우루","NAME_NL":"Nauru","NAME_PL":"Nauru","NAME_PT":"Nauru","NAME_RU":"Науру","NAME_SV":"Nauru","NAME_TR":"Nauru","NAME_UK":"Науру","NAME_UR":"ناورو","NAME_VI":"Nauru","NAME_ZH":"瑙鲁","NAME_ZHT":"諾魯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[166.907031,-0.550781,166.958398,-0.489355],"geometry":{"type":"Polygon","coordinates":[[[166.958398,-0.516602],[166.938965,-0.550781],[166.916406,-0.546484],[166.907031,-0.52373],[166.913574,-0.499121],[166.938965,-0.489355],[166.955664,-0.496973],[166.958398,-0.516602]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Namibia","SOV_A3":"NAM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Namibia","ADM0_A3":"NAM","GEOU_DIF":0,"GEOUNIT":"Namibia","GU_A3":"NAM","SU_DIF":0,"SUBUNIT":"Namibia","SU_A3":"NAM","BRK_DIFF":0,"NAME":"Namibia","NAME_LONG":"Namibia","BRK_A3":"NAM","BRK_NAME":"Namibia","BRK_GROUP":null,"ABBREV":"Nam.","POSTAL":"NA","FORMAL_EN":"Republic of Namibia","FORMAL_FR":null,"NAME_CIAWF":"Namibia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Namibia","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":1,"MAPCOLOR13":7,"POP_EST":2494530,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":12366,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"WA","ISO_A2":"NA","ISO_A2_EH":"NA","ISO_A3":"NAM","ISO_A3_EH":"NAM","ISO_N3":"516","ISO_N3_EH":"516","UN_A3":"516","WB_A2":"NA","WB_A3":"NAM","WOE_ID":23424987,"WOE_ID_EH":23424987,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NAM","ADM0_DIFF":null,"ADM0_TLC":"NAM","ADM0_A3_US":"NAM","ADM0_A3_FR":"NAM","ADM0_A3_RU":"NAM","ADM0_A3_ES":"NAM","ADM0_A3_CN":"NAM","ADM0_A3_TW":"NAM","ADM0_A3_IN":"NAM","ADM0_A3_NP":"NAM","ADM0_A3_PK":"NAM","ADM0_A3_DE":"NAM","ADM0_A3_GB":"NAM","ADM0_A3_BR":"NAM","ADM0_A3_IL":"NAM","ADM0_A3_PS":"NAM","ADM0_A3_SA":"NAM","ADM0_A3_EG":"NAM","ADM0_A3_MA":"NAM","ADM0_A3_PT":"NAM","ADM0_A3_AR":"NAM","ADM0_A3_JP":"NAM","ADM0_A3_KO":"NAM","ADM0_A3_VN":"NAM","ADM0_A3_TR":"NAM","ADM0_A3_ID":"NAM","ADM0_A3_PL":"NAM","ADM0_A3_GR":"NAM","ADM0_A3_IT":"NAM","ADM0_A3_NL":"NAM","ADM0_A3_SE":"NAM","ADM0_A3_BD":"NAM","ADM0_A3_UA":"NAM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Southern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7.5,"LABEL_X":17.108166,"LABEL_Y":-20.575298,"NE_ID":1159321085,"WIKIDATAID":"Q1030","NAME_AR":"ناميبيا","NAME_BN":"নামিবিয়া","NAME_DE":"Namibia","NAME_EN":"Namibia","NAME_ES":"Namibia","NAME_FA":"نامیبیا","NAME_FR":"Namibie","NAME_EL":"Ναμίμπια","NAME_HE":"נמיביה","NAME_HI":"नामीबिया","NAME_HU":"Namíbia","NAME_ID":"Namibia","NAME_IT":"Namibia","NAME_JA":"ナミビア","NAME_KO":"나미비아","NAME_NL":"Namibië","NAME_PL":"Namibia","NAME_PT":"Namíbia","NAME_RU":"Намибия","NAME_SV":"Namibia","NAME_TR":"Namibya","NAME_UK":"Намібія","NAME_UR":"نمیبیا","NAME_VI":"Namibia","NAME_ZH":"纳米比亚","NAME_ZHT":"納米比亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[11.72168,-28.93877,25.258789,-16.967676],"geometry":{"type":"Polygon","coordinates":[[[23.380664,-17.640625],[23.594922,-17.599414],[23.799219,-17.560156],[24.036914,-17.520898],[24.227148,-17.489551],[24.274902,-17.481055],[24.73291,-17.517773],[24.932422,-17.543457],[25.001758,-17.568555],[25.092188,-17.634375],[25.258789,-17.793555],[25.216016,-17.787598],[24.909082,-17.821387],[24.792188,-17.864648],[24.530566,-18.052734],[24.474902,-18.028516],[24.412207,-17.989453],[24.358984,-17.978223],[24.243945,-18.023438],[24.129297,-18.077539],[24.002637,-18.154102],[23.89834,-18.229199],[23.864258,-18.269531],[23.700488,-18.424316],[23.647168,-18.449414],[23.599707,-18.459961],[23.580566,-18.45293],[23.560156,-18.386426],[23.459766,-18.231055],[23.298633,-18.027344],[23.251563,-18.00752],[23.219336,-17.999707],[23.099902,-18.00957],[22.752734,-18.067188],[22.460059,-18.115723],[22.011426,-18.198633],[21.529688,-18.265625],[21.23252,-18.306836],[20.974121,-18.318848],[20.974316,-18.520508],[20.975,-18.928516],[20.975586,-19.336426],[20.976172,-19.744336],[20.976855,-20.152344],[20.977441,-20.560254],[20.978125,-20.968164],[20.978711,-21.376074],[20.979297,-21.784082],[20.979492,-21.961914],[20.970996,-22.000195],[20.822754,-22.000195],[20.4875,-22.000195],[20.205371,-22.000195],[19.977344,-22.000195],[19.977637,-22.242578],[19.97793,-22.529297],[19.978223,-22.815918],[19.978516,-23.102539],[19.978906,-23.38916],[19.979297,-23.675781],[19.97959,-23.962402],[19.979883,-24.249023],[19.980176,-24.535742],[19.980469,-24.751953],[19.980469,-24.776758],[19.980469,-25.196777],[19.980469,-25.641602],[19.980469,-26.086328],[19.980469,-26.531152],[19.980469,-26.975977],[19.980469,-27.420703],[19.980469,-27.865527],[19.980469,-28.310352],[19.980469,-28.45127],[19.877832,-28.449414],[19.671484,-28.503906],[19.539844,-28.574609],[19.48291,-28.661621],[19.407227,-28.714453],[19.312695,-28.733301],[19.270996,-28.777734],[19.282227,-28.847949],[19.245801,-28.90166],[19.161719,-28.93877],[19.026074,-28.92793],[18.83877,-28.869141],[18.600391,-28.855273],[18.31084,-28.88623],[18.102734,-28.87168],[17.976074,-28.811328],[17.841602,-28.776953],[17.699316,-28.768359],[17.616797,-28.743066],[17.447949,-28.698145],[17.415723,-28.621094],[17.395898,-28.562695],[17.347852,-28.501172],[17.342578,-28.45166],[17.380273,-28.413965],[17.385742,-28.353223],[17.358691,-28.269434],[17.312012,-28.228613],[17.245801,-28.230859],[17.20459,-28.198828],[17.188477,-28.13252],[17.149414,-28.082227],[17.05625,-28.031055],[16.933301,-28.069629],[16.875293,-28.12793],[16.841211,-28.218945],[16.810156,-28.264551],[16.794531,-28.34082],[16.7875,-28.394727],[16.755762,-28.452148],[16.723047,-28.475488],[16.689453,-28.464941],[16.626172,-28.487891],[16.487109,-28.572852],[16.447559,-28.617578],[16.335059,-28.536523],[16.007129,-28.231738],[15.890918,-28.152539],[15.719043,-27.96582],[15.341504,-27.386523],[15.287598,-27.275],[15.215723,-26.995117],[15.132812,-26.787598],[15.12373,-26.667871],[15.163281,-26.600195],[15.139063,-26.508008],[15.096582,-26.425781],[14.967773,-26.318066],[14.93125,-25.958203],[14.845215,-25.725684],[14.863672,-25.533594],[14.822559,-25.358594],[14.818555,-25.246387],[14.837109,-25.033203],[14.767969,-24.787988],[14.62793,-24.548047],[14.501563,-24.201953],[14.483398,-24.050391],[14.496875,-23.642871],[14.472461,-23.47666],[14.473828,-23.281152],[14.423828,-23.078613],[14.40332,-22.968066],[14.438477,-22.880566],[14.459277,-22.908203],[14.495703,-22.921387],[14.519922,-22.805176],[14.525977,-22.702539],[14.462793,-22.449121],[14.321875,-22.189941],[13.973242,-21.767578],[13.888086,-21.606641],[13.839355,-21.473242],[13.450586,-20.916699],[13.284375,-20.523926],[13.168359,-20.184668],[13.04209,-20.028223],[12.458203,-18.926758],[12.328711,-18.751074],[12.095703,-18.540918],[12.041211,-18.470703],[11.951367,-18.270508],[11.775879,-18.001758],[11.733496,-17.750977],[11.72168,-17.466797],[11.743066,-17.249219],[11.902539,-17.226562],[12.013965,-17.168555],[12.114355,-17.164551],[12.213379,-17.209961],[12.318457,-17.213379],[12.359277,-17.205859],[12.548145,-17.212695],[12.656543,-17.160547],[12.785156,-17.108203],[12.859277,-17.062598],[12.963184,-17.01543],[13.101172,-16.967676],[13.179492,-16.97168],[13.275684,-16.989551],[13.403711,-17.007812],[13.475977,-17.040039],[13.561719,-17.141211],[13.694336,-17.233496],[13.791992,-17.288379],[13.904199,-17.360742],[13.937988,-17.38877],[13.987402,-17.404199],[14.01748,-17.408887],[14.225879,-17.397754],[14.414746,-17.387695],[14.617969,-17.387988],[15.000586,-17.388574],[15.383203,-17.38916],[15.76582,-17.389648],[16.148438,-17.390234],[16.531055,-17.39082],[16.913672,-17.391406],[17.296289,-17.391992],[17.678809,-17.392578],[17.835352,-17.392773],[18.108789,-17.395996],[18.396387,-17.399414],[18.428223,-17.405176],[18.460352,-17.424609],[18.486621,-17.442773],[18.588184,-17.57002],[18.718066,-17.703223],[18.825977,-17.766309],[18.955273,-17.803516],[19.076465,-17.817676],[19.189453,-17.808496],[19.377148,-17.825488],[19.639355,-17.868652],[19.911816,-17.881348],[20.194336,-17.863672],[20.392969,-17.887402],[20.507617,-17.952539],[20.625098,-17.99668],[20.745508,-18.019727],[20.908301,-18.006055],[21.113477,-17.955762],[21.287891,-17.962988],[21.36875,-17.999512],[21.416895,-18.000684],[21.718457,-17.947754],[21.96084,-17.905176],[22.324219,-17.8375],[22.624023,-17.781641],[23.068262,-17.698828],[23.380664,-17.640625]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Mozambique","SOV_A3":"MOZ","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Mozambique","ADM0_A3":"MOZ","GEOU_DIF":0,"GEOUNIT":"Mozambique","GU_A3":"MOZ","SU_DIF":0,"SUBUNIT":"Mozambique","SU_A3":"MOZ","BRK_DIFF":0,"NAME":"Mozambique","NAME_LONG":"Mozambique","BRK_A3":"MOZ","BRK_NAME":"Mozambique","BRK_GROUP":null,"ABBREV":"Moz.","POSTAL":"MZ","FORMAL_EN":"Republic of Mozambique","FORMAL_FR":null,"NAME_CIAWF":"Mozambique","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Mozambique","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":2,"MAPCOLOR9":1,"MAPCOLOR13":4,"POP_EST":30366036,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":15291,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"MZ","ISO_A2":"MZ","ISO_A2_EH":"MZ","ISO_A3":"MOZ","ISO_A3_EH":"MOZ","ISO_N3":"508","ISO_N3_EH":"508","UN_A3":"508","WB_A2":"MZ","WB_A3":"MOZ","WOE_ID":23424902,"WOE_ID_EH":23424902,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MOZ","ADM0_DIFF":null,"ADM0_TLC":"MOZ","ADM0_A3_US":"MOZ","ADM0_A3_FR":"MOZ","ADM0_A3_RU":"MOZ","ADM0_A3_ES":"MOZ","ADM0_A3_CN":"MOZ","ADM0_A3_TW":"MOZ","ADM0_A3_IN":"MOZ","ADM0_A3_NP":"MOZ","ADM0_A3_PK":"MOZ","ADM0_A3_DE":"MOZ","ADM0_A3_GB":"MOZ","ADM0_A3_BR":"MOZ","ADM0_A3_IL":"MOZ","ADM0_A3_PS":"MOZ","ADM0_A3_SA":"MOZ","ADM0_A3_EG":"MOZ","ADM0_A3_MA":"MOZ","ADM0_A3_PT":"MOZ","ADM0_A3_AR":"MOZ","ADM0_A3_JP":"MOZ","ADM0_A3_KO":"MOZ","ADM0_A3_VN":"MOZ","ADM0_A3_TR":"MOZ","ADM0_A3_ID":"MOZ","ADM0_A3_PL":"MOZ","ADM0_A3_GR":"MOZ","ADM0_A3_IT":"MOZ","ADM0_A3_NL":"MOZ","ADM0_A3_SE":"MOZ","ADM0_A3_BD":"MOZ","ADM0_A3_UA":"MOZ","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":37.83789,"LABEL_Y":-13.94323,"NE_ID":1159321073,"WIKIDATAID":"Q1029","NAME_AR":"موزمبيق","NAME_BN":"মোজাম্বিক","NAME_DE":"Mosambik","NAME_EN":"Mozambique","NAME_ES":"Mozambique","NAME_FA":"موزامبیک","NAME_FR":"Mozambique","NAME_EL":"Μοζαμβίκη","NAME_HE":"מוזמביק","NAME_HI":"मोज़ाम्बीक","NAME_HU":"Mozambik","NAME_ID":"Mozambik","NAME_IT":"Mozambico","NAME_JA":"モザンビーク","NAME_KO":"모잠비크","NAME_NL":"Mozambique","NAME_PL":"Mozambik","NAME_PT":"Moçambique","NAME_RU":"Мозамбик","NAME_SV":"Moçambique","NAME_TR":"Mozambik","NAME_UK":"Мозамбік","NAME_UR":"موزمبیق","NAME_VI":"Mozambique","NAME_ZH":"莫桑比克","NAME_ZHT":"莫三比克","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[30.221777,-26.861621,40.844531,-10.464355],"geometry":{"type":"Polygon","coordinates":[[[31.287891,-22.402051],[31.429492,-22.298828],[31.571484,-22.153516],[31.737695,-21.983398],[31.885938,-21.831543],[32.016309,-21.698047],[32.194727,-21.51543],[32.371094,-21.334863],[32.412402,-21.311816],[32.429785,-21.29707],[32.353613,-21.136523],[32.476172,-20.950098],[32.482813,-20.828906],[32.477637,-20.712988],[32.492383,-20.659766],[32.529297,-20.613086],[32.672559,-20.516113],[32.780859,-20.361523],[32.869629,-20.217188],[32.992773,-19.984863],[33.004883,-19.930176],[33.006738,-19.873828],[32.972656,-19.79541],[32.89043,-19.668066],[32.830762,-19.558203],[32.777637,-19.38877],[32.830957,-19.241406],[32.85,-19.152441],[32.849805,-19.104395],[32.826172,-19.058789],[32.766211,-19.024316],[32.716504,-19.001855],[32.699707,-18.940918],[32.699219,-18.868457],[32.721973,-18.828418],[32.854492,-18.763672],[32.88457,-18.728516],[32.900293,-18.689063],[32.90166,-18.63291],[32.94248,-18.492676],[32.993066,-18.35957],[32.996387,-18.312598],[32.978516,-18.271484],[32.964648,-18.196289],[32.955566,-18.08291],[32.954688,-17.76543],[32.980762,-17.4375],[32.969336,-17.251563],[32.884375,-17.037793],[32.87627,-16.883594],[32.937891,-16.775977],[32.948047,-16.712305],[32.90293,-16.704199],[32.810254,-16.697656],[32.741797,-16.677637],[32.63584,-16.589453],[32.451953,-16.515723],[32.243262,-16.44873],[31.939844,-16.428809],[31.687598,-16.21416],[31.489844,-16.179688],[31.426172,-16.152344],[31.23623,-16.023633],[30.93877,-16.011719],[30.630176,-15.999219],[30.437793,-15.995313],[30.409375,-15.978223],[30.398145,-15.800781],[30.396094,-15.643066],[30.379883,-15.505859],[30.350586,-15.349707],[30.305664,-15.288867],[30.252148,-15.183203],[30.225,-15.066895],[30.221777,-15.010547],[30.231836,-14.990332],[30.446094,-14.90752],[30.537695,-14.866504],[30.67334,-14.819141],[30.915137,-14.75332],[31.130859,-14.694629],[31.328516,-14.637695],[31.537891,-14.577148],[31.623047,-14.536719],[31.728906,-14.496094],[31.982129,-14.414453],[32.054492,-14.386523],[32.199902,-14.34082],[32.272852,-14.323047],[32.553223,-14.22959],[32.874512,-14.122461],[32.987109,-14.084961],[33.201758,-14.013379],[33.243555,-14.043066],[33.389941,-14.289453],[33.505273,-14.434082],[33.636426,-14.568164],[33.658301,-14.561621],[33.696094,-14.530273],[33.761426,-14.517285],[33.969824,-14.487109],[34.049414,-14.485254],[34.101855,-14.449316],[34.208789,-14.42373],[34.33252,-14.408594],[34.375,-14.424805],[34.505273,-14.598145],[34.524121,-14.730762],[34.551172,-14.922363],[34.557617,-15.015918],[34.555469,-15.140918],[34.54082,-15.297266],[34.434961,-15.477148],[34.414746,-15.566797],[34.358008,-15.705273],[34.283008,-15.773438],[34.246094,-15.829395],[34.248242,-15.8875],[34.288281,-15.936133],[34.375977,-16.02373],[34.403027,-16.080273],[34.395117,-16.130859],[34.395508,-16.199219],[34.416406,-16.246777],[34.441309,-16.274414],[34.528125,-16.319141],[34.612695,-16.431543],[34.758789,-16.56709],[34.933398,-16.760352],[35.015332,-16.819531],[35.079883,-16.833887],[35.112109,-16.898535],[35.094238,-16.973828],[35.043945,-17.016895],[35.064648,-17.078613],[35.093066,-17.110938],[35.124609,-17.127246],[35.201367,-17.131055],[35.272559,-17.118457],[35.29043,-17.096973],[35.281152,-16.807813],[35.229785,-16.639258],[35.17832,-16.57334],[35.167188,-16.560254],[35.185254,-16.504883],[35.242773,-16.375391],[35.291504,-16.247168],[35.322461,-16.193164],[35.358496,-16.160547],[35.599316,-16.125879],[35.708887,-16.095801],[35.755273,-16.058301],[35.791211,-15.958691],[35.819922,-15.680371],[35.830273,-15.418945],[35.805371,-15.265625],[35.839941,-15.034668],[35.892773,-14.891797],[35.866699,-14.86377],[35.847168,-14.670898],[35.69043,-14.465527],[35.488477,-14.201074],[35.375781,-14.058691],[35.247461,-13.896875],[35.013867,-13.643457],[34.906836,-13.55166],[34.850488,-13.516016],[34.661621,-13.486719],[34.611523,-13.437891],[34.563672,-13.360156],[34.545703,-13.216309],[34.542578,-13.108691],[34.521289,-12.925781],[34.48291,-12.666797],[34.46582,-12.590723],[34.412109,-12.395898],[34.36084,-12.210547],[34.357813,-12.164746],[34.375977,-12.120215],[34.462891,-11.983789],[34.524805,-11.887012],[34.553906,-11.834082],[34.60625,-11.690039],[34.618555,-11.620215],[34.65957,-11.588672],[34.826563,-11.575684],[34.959473,-11.578125],[35.182617,-11.574805],[35.418262,-11.583203],[35.451367,-11.589551],[35.504395,-11.604785],[35.564355,-11.602344],[35.630957,-11.582031],[35.704688,-11.532129],[35.785449,-11.45293],[35.911328,-11.454688],[36.082227,-11.537305],[36.175488,-11.609277],[36.191309,-11.670703],[36.305664,-11.706348],[36.518652,-11.716211],[36.673828,-11.684277],[36.771094,-11.610352],[36.872656,-11.571289],[36.978906,-11.566992],[37.05918,-11.592188],[37.113867,-11.647168],[37.218359,-11.686523],[37.372852,-11.710449],[37.541699,-11.675098],[37.724805,-11.580664],[37.829297,-11.481934],[37.855078,-11.379102],[37.885352,-11.316699],[37.920215,-11.294727],[38.017285,-11.282129],[38.176563,-11.278711],[38.315137,-11.311133],[38.491797,-11.413281],[38.60332,-11.345313],[38.794727,-11.228906],[38.9875,-11.167285],[39.170996,-11.166895],[39.321582,-11.122559],[39.43916,-11.03457],[39.563477,-10.978516],[39.694434,-10.954785],[39.81709,-10.912402],[39.988672,-10.820801],[40.166211,-10.6875],[40.347461,-10.551563],[40.463574,-10.464355],[40.516699,-10.567383],[40.611719,-10.661523],[40.555078,-10.716211],[40.486621,-10.765137],[40.597168,-10.830664],[40.516113,-10.92959],[40.50625,-10.998438],[40.526855,-11.025391],[40.544531,-11.065625],[40.491406,-11.178906],[40.420996,-11.265625],[40.402832,-11.332031],[40.465137,-11.449414],[40.433105,-11.657324],[40.493555,-11.844434],[40.510449,-11.94043],[40.531543,-12.00459],[40.501465,-12.119434],[40.50918,-12.312891],[40.523145,-12.392773],[40.487109,-12.492188],[40.54834,-12.526563],[40.580859,-12.635547],[40.57207,-12.758398],[40.55332,-12.824609],[40.447656,-12.904785],[40.435156,-12.935938],[40.436816,-12.983105],[40.56875,-12.984668],[40.573242,-13.057715],[40.564453,-13.115234],[40.569531,-13.223438],[40.551953,-13.29375],[40.58291,-13.374023],[40.545117,-13.462891],[40.558203,-13.531445],[40.559863,-13.620313],[40.590527,-13.84502],[40.595703,-14.122852],[40.602539,-14.167383],[40.649512,-14.198828],[40.715625,-14.214453],[40.713086,-14.290625],[40.639941,-14.390039],[40.635547,-14.451855],[40.646094,-14.538672],[40.72666,-14.420703],[40.775,-14.421289],[40.818164,-14.467578],[40.812109,-14.535547],[40.826953,-14.569043],[40.820605,-14.634961],[40.844531,-14.718652],[40.835156,-14.791504],[40.775977,-14.84248],[40.700684,-14.929785],[40.687402,-15.011621],[40.694336,-15.065234],[40.642188,-15.082422],[40.617773,-15.115527],[40.653125,-15.192676],[40.650977,-15.260938],[40.558984,-15.473438],[40.313867,-15.763965],[40.208008,-15.86709],[40.108789,-15.979297],[40.108887,-16.025293],[40.099219,-16.065332],[39.983594,-16.225488],[39.859766,-16.251758],[39.790918,-16.294531],[39.844629,-16.435645],[39.764551,-16.468164],[39.625391,-16.579395],[39.242285,-16.792578],[39.181738,-16.841992],[39.084375,-16.972852],[38.956055,-17.00459],[38.884766,-17.041602],[38.757617,-17.055176],[38.713281,-17.045703],[38.669922,-17.050293],[38.633301,-17.07832],[38.380762,-17.170117],[38.144922,-17.242773],[38.086914,-17.275977],[38.048242,-17.321387],[37.839453,-17.393164],[37.512305,-17.570703],[37.244531,-17.739941],[37.050586,-17.909277],[36.999512,-17.934961],[36.939355,-17.993457],[36.919238,-18.080078],[36.899609,-18.129004],[36.756152,-18.307324],[36.540137,-18.518164],[36.498047,-18.575781],[36.412207,-18.692969],[36.403711,-18.769727],[36.327246,-18.793164],[36.262891,-18.719629],[36.235645,-18.861328],[36.183203,-18.871387],[36.125,-18.842383],[35.980078,-18.9125],[35.853711,-18.993359],[35.65127,-19.163867],[35.365332,-19.493945],[34.947852,-19.812695],[34.89082,-19.821777],[34.852344,-19.820508],[34.720996,-19.70957],[34.649414,-19.701367],[34.713477,-19.767188],[34.755762,-19.821973],[34.74502,-19.929492],[34.75,-20.09082],[34.698145,-20.404395],[34.705078,-20.473047],[34.764746,-20.561914],[34.877051,-20.670801],[34.982324,-20.80625],[35.117578,-21.195215],[35.128027,-21.395313],[35.267676,-21.650977],[35.272949,-21.761719],[35.329297,-22.037402],[35.325586,-22.260352],[35.315723,-22.396875],[35.383008,-22.45459],[35.407813,-22.402539],[35.400879,-22.316211],[35.418848,-22.177637],[35.456348,-22.115918],[35.49375,-22.124707],[35.504883,-22.190137],[35.530078,-22.248145],[35.540234,-22.302637],[35.541992,-22.376563],[35.490234,-22.657715],[35.505762,-22.77207],[35.575391,-22.963086],[35.494434,-23.185156],[35.376953,-23.707813],[35.37041,-23.798242],[35.398828,-23.837695],[35.462109,-23.851074],[35.485352,-23.784473],[35.522461,-23.784961],[35.541992,-23.824414],[35.489648,-24.065527],[35.438086,-24.171191],[35.254883,-24.430273],[35.155957,-24.541406],[34.99209,-24.650586],[34.607324,-24.821289],[33.836035,-25.067969],[33.530078,-25.188867],[33.347461,-25.260938],[32.961133,-25.49043],[32.792188,-25.644336],[32.722559,-25.820898],[32.655859,-25.901758],[32.59043,-26.004102],[32.647461,-26.091992],[32.703516,-26.158496],[32.769629,-26.203027],[32.803906,-26.241406],[32.848828,-26.268066],[32.894043,-26.129883],[32.916406,-26.086914],[32.954883,-26.083594],[32.933594,-26.252344],[32.88916,-26.830469],[32.886133,-26.849316],[32.776563,-26.850977],[32.58877,-26.855762],[32.477734,-26.858496],[32.353516,-26.861621],[32.199609,-26.833496],[32.112891,-26.839453],[32.105957,-26.52002],[32.07793,-26.449805],[32.04834,-26.347168],[32.041406,-26.28125],[32.059961,-26.215039],[32.068848,-26.110156],[32.060547,-26.018359],[31.968457,-25.972266],[31.948242,-25.957617],[31.92832,-25.885352],[31.920313,-25.773926],[31.98457,-25.631934],[31.979395,-25.359473],[31.987012,-25.263477],[31.985742,-25.073828],[31.984375,-24.844043],[31.983203,-24.638281],[31.98584,-24.460645],[31.966602,-24.376465],[31.950586,-24.330273],[31.908008,-24.23623],[31.858301,-24.040234],[31.799609,-23.892188],[31.724023,-23.794531],[31.7,-23.743066],[31.675586,-23.674219],[31.604102,-23.55293],[31.545605,-23.482324],[31.529688,-23.425781],[31.531738,-23.279492],[31.466699,-23.016699],[31.419336,-22.825098],[31.348047,-22.617578],[31.300195,-22.478613],[31.293164,-22.454688],[31.287891,-22.402051]],[[34.641602,-12.013672],[34.624219,-11.984766],[34.591406,-11.971094],[34.554004,-11.982227],[34.541602,-12.018652],[34.580469,-12.06582],[34.621777,-12.066602],[34.641602,-12.013672]],[[34.719336,-12.110645],[34.745996,-12.088379],[34.75625,-12.059082],[34.755957,-12.030762],[34.738965,-12.013086],[34.714941,-12.002734],[34.679883,-12.008887],[34.66748,-12.047559],[34.662109,-12.100781],[34.68418,-12.118652],[34.719336,-12.110645]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Morocco","SOV_A3":"MAR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Morocco","ADM0_A3":"MAR","GEOU_DIF":0,"GEOUNIT":"Morocco","GU_A3":"MAR","SU_DIF":0,"SUBUNIT":"Morocco","SU_A3":"MAR","BRK_DIFF":0,"NAME":"Morocco","NAME_LONG":"Morocco","BRK_A3":"MAR","BRK_NAME":"Morocco","BRK_GROUP":null,"ABBREV":"Mor.","POSTAL":"MA","FORMAL_EN":"Kingdom of Morocco","FORMAL_FR":null,"NAME_CIAWF":"Morocco","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Morocco","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":3,"MAPCOLOR13":9,"POP_EST":36471769,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":119700,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"MO","ISO_A2":"MA","ISO_A2_EH":"MA","ISO_A3":"MAR","ISO_A3_EH":"MAR","ISO_N3":"504","ISO_N3_EH":"504","UN_A3":"504","WB_A2":"MA","WB_A3":"MAR","WOE_ID":23424893,"WOE_ID_EH":23424893,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MAR","ADM0_DIFF":null,"ADM0_TLC":"MAR","ADM0_A3_US":"MAR","ADM0_A3_FR":"MAR","ADM0_A3_RU":"MAR","ADM0_A3_ES":"MAR","ADM0_A3_CN":"MAR","ADM0_A3_TW":"MAR","ADM0_A3_IN":"MAR","ADM0_A3_NP":"MAR","ADM0_A3_PK":"MAR","ADM0_A3_DE":"MAR","ADM0_A3_GB":"MAR","ADM0_A3_BR":"MAR","ADM0_A3_IL":"MAR","ADM0_A3_PS":"MAR","ADM0_A3_SA":"MAR","ADM0_A3_EG":"MAR","ADM0_A3_MA":"MAR","ADM0_A3_PT":"MAR","ADM0_A3_AR":"MAR","ADM0_A3_JP":"MAR","ADM0_A3_KO":"MAR","ADM0_A3_VN":"MAR","ADM0_A3_TR":"MAR","ADM0_A3_ID":"MAR","ADM0_A3_PL":"MAR","ADM0_A3_GR":"MAR","ADM0_A3_IT":"MAR","ADM0_A3_NL":"MAR","ADM0_A3_SE":"MAR","ADM0_A3_BD":"MAR","ADM0_A3_UA":"MAR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Northern Africa","REGION_WB":"Middle East & North Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":8,"LABEL_X":-7.187296,"LABEL_Y":31.650723,"NE_ID":1159321035,"WIKIDATAID":"Q1028","NAME_AR":"المغرب","NAME_BN":"মরক্কো","NAME_DE":"Marokko","NAME_EN":"Morocco","NAME_ES":"Marruecos","NAME_FA":"مراکش","NAME_FR":"Maroc","NAME_EL":"Μαρόκο","NAME_HE":"מרוקו","NAME_HI":"मोरक्को","NAME_HU":"Marokkó","NAME_ID":"Maroko","NAME_IT":"Marocco","NAME_JA":"モロッコ","NAME_KO":"모로코","NAME_NL":"Marokko","NAME_PL":"Maroko","NAME_PT":"Marrocos","NAME_RU":"Марокко","NAME_SV":"Marocko","NAME_TR":"Fas","NAME_UK":"Марокко","NAME_UR":"مراکش","NAME_VI":"Maroc","NAME_ZH":"摩洛哥","NAME_ZHT":"摩洛哥","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-17.003076,21.420703,-1.065527,35.929883],"geometry":{"type":"Polygon","coordinates":[[[-2.219629,35.104199],[-2.190771,35.029785],[-2.131787,34.97085],[-1.920898,34.835547],[-1.795605,34.751904],[-1.792187,34.723193],[-1.832422,34.654639],[-1.849658,34.607324],[-1.816602,34.55708],[-1.739453,34.496094],[-1.733301,34.467041],[-1.751855,34.433252],[-1.791797,34.36792],[-1.706934,34.176074],[-1.692676,33.990283],[-1.714697,33.858203],[-1.714111,33.781836],[-1.702979,33.716846],[-1.63125,33.566748],[-1.679199,33.318652],[-1.625098,33.18335],[-1.550732,33.073584],[-1.51001,32.877637],[-1.45,32.784814],[-1.352148,32.703369],[-1.296387,32.675684],[-1.188232,32.608496],[-1.111035,32.552295],[-1.065527,32.468311],[-1.162598,32.39917],[-1.240332,32.337598],[-1.262109,32.271143],[-1.225928,32.164551],[-1.225928,32.107227],[-1.275342,32.089014],[-1.477051,32.094873],[-1.635156,32.099561],[-1.816992,32.104785],[-2.072803,32.115039],[-2.23125,32.121338],[-2.448389,32.12998],[-2.523242,32.125684],[-2.722607,32.095752],[-2.863428,32.074707],[-2.887207,32.068848],[-2.930859,32.042529],[-2.961133,31.963965],[-2.988232,31.874219],[-3.017383,31.834277],[-3.439795,31.704541],[-3.60459,31.686768],[-3.700244,31.700098],[-3.768164,31.689551],[-3.826758,31.661914],[-3.84668,31.619873],[-3.849561,31.566406],[-3.837109,31.512354],[-3.796436,31.437109],[-3.78916,31.361816],[-3.815137,31.308838],[-3.821387,31.255469],[-3.833398,31.197803],[-3.811816,31.166602],[-3.770996,31.161816],[-3.730176,31.1354],[-3.67251,31.111377],[-3.624512,31.065771],[-3.626904,31.000928],[-3.666797,30.964014],[-3.702002,30.944482],[-3.860059,30.927246],[-3.985352,30.913525],[-4.148779,30.80957],[-4.322852,30.698877],[-4.52915,30.625537],[-4.619629,30.604785],[-4.778516,30.552393],[-4.968262,30.465381],[-5.061914,30.326416],[-5.180127,30.166162],[-5.293652,30.058643],[-5.448779,29.956934],[-5.593311,29.917969],[-5.775,29.869043],[-6.004297,29.83125],[-6.166504,29.818945],[-6.214795,29.810693],[-6.357617,29.808301],[-6.427637,29.816113],[-6.479736,29.820361],[-6.500879,29.809131],[-6.50791,29.783789],[-6.510693,29.726025],[-6.520557,29.659863],[-6.565674,29.603857],[-6.597754,29.578955],[-6.635352,29.568799],[-6.755127,29.583838],[-6.855566,29.601611],[-7.094922,29.625195],[-7.142432,29.61958],[-7.160205,29.612646],[-7.234912,29.574902],[-7.349756,29.494727],[-7.427686,29.425],[-7.485742,29.392236],[-7.624609,29.375195],[-7.685156,29.349512],[-7.943848,29.174756],[-7.998926,29.132422],[-8.265186,28.980518],[-8.340479,28.930176],[-8.399316,28.880176],[-8.55835,28.767871],[-8.659912,28.718604],[-8.678418,28.689404],[-8.68335,28.620752],[-8.68335,28.469238],[-8.68335,28.323682],[-8.68335,28.112012],[-8.68335,27.900391],[-8.68335,27.656445],[-8.817822,27.656445],[-8.817773,27.655908],[-8.813916,27.613867],[-8.78457,27.530859],[-8.774365,27.460547],[-8.788965,27.416553],[-8.802686,27.360937],[-8.796826,27.308203],[-8.774365,27.250586],[-8.753857,27.191016],[-8.753857,27.150977],[-8.794873,27.120703],[-8.889062,27.104102],[-9.001904,27.09043],[-9.084424,27.09043],[-9.208447,27.100195],[-9.285596,27.098242],[-9.352979,27.098242],[-9.413037,27.088477],[-9.487305,27.050391],[-9.569824,26.99082],[-9.67334,26.910742],[-9.735352,26.860937],[-9.817871,26.850195],[-9.900342,26.850195],[-9.980908,26.890234],[-10.032715,26.910742],[-10.066846,26.908789],[-10.123047,26.880469],[-10.189453,26.860937],[-10.251465,26.860937],[-10.354932,26.900977],[-10.478955,26.960547],[-10.55127,26.99082],[-10.654248,27.000586],[-10.757764,27.020117],[-10.830078,27.010352],[-10.922803,27.010352],[-11.046826,26.970312],[-11.150342,26.941016],[-11.263623,26.910742],[-11.392578,26.883398],[-11.361279,26.793555],[-11.316846,26.744727],[-11.316846,26.68418],[-11.337891,26.633398],[-11.399902,26.583594],[-11.470703,26.520117],[-11.51167,26.470312],[-11.553174,26.400977],[-11.583984,26.360937],[-11.637207,26.295508],[-11.684521,26.213477],[-11.699219,26.162695],[-11.718213,26.104102],[-11.754883,26.086523],[-11.880859,26.070898],[-11.960889,26.050391],[-12.030762,26.030859],[-12.056787,25.996338],[-12.060986,25.99082],[-12.081055,25.920508],[-12.081055,25.870703],[-12.101025,25.830664],[-12.130859,25.731055],[-12.17085,25.640234],[-12.201123,25.520117],[-12.230957,25.420508],[-12.270947,25.260303],[-12.310986,25.110937],[-12.36084,24.970312],[-12.400879,24.880469],[-12.431152,24.830664],[-12.500977,24.770117],[-12.561035,24.731055],[-12.630811,24.680273],[-12.710938,24.630469],[-12.820752,24.570898],[-12.911133,24.520117],[-12.947852,24.497266],[-12.991162,24.470312],[-13.061035,24.400977],[-13.121094,24.300391],[-13.161133,24.220312],[-13.230957,24.09043],[-13.280762,24.020117],[-13.310986,23.981055],[-13.391113,23.941016],[-13.480957,23.910742],[-13.581055,23.870703],[-13.661084,23.830664],[-13.770947,23.790625],[-13.840771,23.750586],[-13.891113,23.691016],[-13.931104,23.620703],[-13.980908,23.520117],[-14.020996,23.410742],[-14.040967,23.34043],[-14.101074,23.100195],[-14.121094,22.960547],[-14.141064,22.870703],[-14.170898,22.760352],[-14.190869,22.59043],[-14.190869,22.450781],[-14.210938,22.370703],[-14.221191,22.310156],[-14.270996,22.24082],[-14.311035,22.191016],[-14.380811,22.120703],[-14.440918,22.080664],[-14.460889,22.040625],[-14.520996,21.990869],[-14.581006,21.910742],[-14.630859,21.860937],[-14.621094,21.820898],[-14.610791,21.750586],[-14.641113,21.680273],[-14.67085,21.600195],[-14.750977,21.500586],[-14.84082,21.450781],[-14.971143,21.441016],[-15.150879,21.441016],[-15.290967,21.450781],[-15.460938,21.450781],[-15.610791,21.470312],[-15.750928,21.49082],[-15.92085,21.500586],[-16.041016,21.500586],[-16.190869,21.481055],[-16.581006,21.481055],[-16.730957,21.470312],[-16.951123,21.430273],[-17.002979,21.420752],[-17.003076,21.420703],[-16.930859,21.9],[-16.793262,22.159717],[-16.683984,22.274365],[-16.514404,22.333496],[-16.35874,22.594531],[-16.304297,22.834814],[-16.201855,22.945361],[-16.169727,23.031934],[-16.210254,23.0979],[-16.113672,23.227539],[-15.996729,23.425488],[-15.942627,23.552637],[-15.805957,23.749512],[-15.789258,23.792871],[-15.80166,23.842236],[-15.855176,23.800342],[-15.912549,23.727588],[-15.980713,23.670312],[-15.952832,23.74082],[-15.899316,23.844434],[-15.777783,23.95293],[-15.586328,24.072754],[-15.188623,24.478809],[-15.038867,24.548828],[-14.904297,24.719775],[-14.856055,24.871582],[-14.84292,25.220117],[-14.794922,25.40415],[-14.707031,25.547705],[-14.602295,25.808545],[-14.522754,25.925244],[-14.470557,26.163037],[-14.413867,26.253711],[-14.312451,26.296729],[-14.168359,26.41543],[-13.9521,26.48877],[-13.695898,26.64292],[-13.575781,26.735107],[-13.495752,26.872656],[-13.409814,27.146631],[-13.256152,27.434619],[-13.177393,27.651855],[-13.175977,27.655713],[-13.040723,27.769824],[-12.948926,27.91416],[-12.793652,27.978418],[-12.468896,28.009424],[-11.986084,28.129297],[-11.552686,28.310107],[-11.430176,28.382031],[-11.299072,28.526074],[-11.080957,28.71377],[-10.673828,28.939209],[-10.486475,29.064941],[-10.200586,29.380371],[-10.010498,29.641406],[-9.852637,29.809229],[-9.743457,29.958203],[-9.66709,30.109277],[-9.623828,30.352637],[-9.65293,30.447559],[-9.773145,30.603125],[-9.853906,30.64458],[-9.875488,30.71792],[-9.832422,30.847266],[-9.83335,31.069629],[-9.808691,31.424609],[-9.674951,31.710986],[-9.347461,32.086377],[-9.286572,32.240576],[-9.249121,32.48584],[-9.24585,32.572461],[-8.83623,32.920459],[-8.596289,33.187158],[-8.512842,33.252441],[-8.301172,33.374365],[-7.562354,33.640283],[-7.144678,33.830322],[-6.900977,33.969043],[-6.755762,34.13291],[-6.353125,34.776074],[-5.957568,35.681152],[-5.924805,35.785791],[-5.747949,35.815967],[-5.622852,35.828906],[-5.522266,35.862012],[-5.397363,35.929883],[-5.277832,35.902734],[-5.337646,35.856543],[-5.337646,35.745215],[-5.252686,35.614746],[-5.105371,35.467773],[-4.837207,35.281299],[-4.62832,35.206396],[-4.32998,35.161475],[-3.982422,35.243408],[-3.787988,35.244922],[-3.693262,35.27998],[-3.590625,35.22832],[-3.394727,35.211816],[-3.206006,35.239111],[-3.063086,35.317236],[-2.972217,35.407275],[-2.957959,35.363086],[-2.953613,35.315137],[-2.925977,35.287109],[-2.869531,35.172656],[-2.839941,35.127832],[-2.731396,35.135205],[-2.636816,35.112695],[-2.42373,35.123486],[-2.219629,35.104199]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":7,"SOVEREIGNT":"Western Sahara","SOV_A3":"SAH","ADM0_DIF":0,"LEVEL":2,"TYPE":"Indeterminate","TLC":"1","ADMIN":"Western Sahara","ADM0_A3":"SAH","GEOU_DIF":0,"GEOUNIT":"Western Sahara","GU_A3":"SAH","SU_DIF":0,"SUBUNIT":"Western Sahara","SU_A3":"SAH","BRK_DIFF":1,"NAME":"W. Sahara","NAME_LONG":"Western Sahara","BRK_A3":"B28","BRK_NAME":"W. Sahara","BRK_GROUP":null,"ABBREV":"W. Sah.","POSTAL":"WS","FORMAL_EN":"Sahrawi Arab Democratic Republic","FORMAL_FR":null,"NAME_CIAWF":"Western Sahara","NOTE_ADM0":null,"NOTE_BRK":"Self admin.; Claimed by Morocco","NAME_SORT":"Western Sahara","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":7,"MAPCOLOR9":4,"MAPCOLOR13":4,"POP_EST":603253,"POP_RANK":11,"POP_YEAR":2017,"GDP_MD":907,"GDP_YEAR":2007,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"WI","ISO_A2":"EH","ISO_A2_EH":"EH","ISO_A3":"ESH","ISO_A3_EH":"ESH","ISO_N3":"732","ISO_N3_EH":"732","UN_A3":"732","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424990,"WOE_ID_EH":23424990,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"B28","ADM0_DIFF":null,"ADM0_TLC":"B28","ADM0_A3_US":"SAH","ADM0_A3_FR":"MAR","ADM0_A3_RU":"SAH","ADM0_A3_ES":"SAH","ADM0_A3_CN":"SAH","ADM0_A3_TW":"SAH","ADM0_A3_IN":"MAR","ADM0_A3_NP":"SAH","ADM0_A3_PK":"SAH","ADM0_A3_DE":"SAH","ADM0_A3_GB":"SAH","ADM0_A3_BR":"SAH","ADM0_A3_IL":"SAH","ADM0_A3_PS":"MAR","ADM0_A3_SA":"MAR","ADM0_A3_EG":"SAH","ADM0_A3_MA":"MAR","ADM0_A3_PT":"SAH","ADM0_A3_AR":"SAH","ADM0_A3_JP":"SAH","ADM0_A3_KO":"SAH","ADM0_A3_VN":"SAH","ADM0_A3_TR":"MAR","ADM0_A3_ID":"MAR","ADM0_A3_PL":"MAR","ADM0_A3_GR":"SAH","ADM0_A3_IT":"SAH","ADM0_A3_NL":"MAR","ADM0_A3_SE":"SAH","ADM0_A3_BD":"SAH","ADM0_A3_UA":"SAH","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Northern Africa","REGION_WB":"Middle East & North Africa","NAME_LEN":9,"LONG_LEN":14,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":4.7,"MIN_LABEL":6,"MAX_LABEL":11,"LABEL_X":-12.630304,"LABEL_Y":23.967592,"NE_ID":1159321223,"WIKIDATAID":"Q6250","NAME_AR":"الصحراء الغربية","NAME_BN":"পশ্চিম সাহারা","NAME_DE":"Westsahara","NAME_EN":"Western Sahara","NAME_ES":"Sahara Occidental","NAME_FA":"صحرای غربی","NAME_FR":"Sahara occidental","NAME_EL":"Δυτική Σαχάρα","NAME_HE":"סהרה המערבית","NAME_HI":"पश्चिमी सहारा","NAME_HU":"Nyugat-Szahara","NAME_ID":"Sahara Barat","NAME_IT":"Sahara Occidentale","NAME_JA":"西サハラ","NAME_KO":"서사하라","NAME_NL":"Westelijke Sahara","NAME_PL":"Sahara Zachodnia","NAME_PT":"Sara Ocidental","NAME_RU":"Западная Сахара","NAME_SV":"Västsahara","NAME_TR":"Batı Sahra","NAME_UK":"Західна Сахара","NAME_UR":"مغربی صحارا","NAME_VI":"Tây Sahara","NAME_ZH":"西撒哈拉","NAME_ZHT":"西撒哈拉","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":"Unrecognized","FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":"Unrecognized","FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":"Unrecognized","FCLASS_SA":"Unrecognized","FCLASS_EG":null,"FCLASS_MA":"Unrecognized","FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":"Unrecognized","FCLASS_ID":"Unrecognized","FCLASS_PL":"Unrecognized","FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":"Unrecognized","FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-17.098779,20.806152,-8.682129,27.656445],"geometry":{"type":"Polygon","coordinates":[[[-8.817773,27.655908],[-8.817822,27.656445],[-8.68335,27.656445],[-8.68335,27.490234],[-8.68335,27.285937],[-8.683105,27.119287],[-8.682861,26.921338],[-8.682617,26.723145],[-8.682324,26.497705],[-8.682129,26.273193],[-8.682129,26.109473],[-8.682227,25.995508],[-8.885645,25.995508],[-9.071924,25.995508],[-9.258203,25.995508],[-9.444531,25.995508],[-9.630859,25.995508],[-9.817187,25.995459],[-10.003516,25.995459],[-10.189795,25.995459],[-10.376123,25.995459],[-10.562451,25.995459],[-10.748779,25.995459],[-10.935107,25.995459],[-11.121387,25.995459],[-11.307715,25.99541],[-11.494043,25.99541],[-11.680371,25.99541],[-11.86665,25.99541],[-12.016309,25.99541],[-12.016309,25.876318],[-12.016309,25.740137],[-12.016309,25.604004],[-12.016309,25.467871],[-12.016309,25.331689],[-12.016309,25.195557],[-12.016309,25.059375],[-12.016309,24.923242],[-12.016309,24.787109],[-12.016309,24.650977],[-12.016309,24.514795],[-12.016309,24.378662],[-12.016309,24.24248],[-12.016309,24.106348],[-12.016309,23.970215],[-12.016309,23.834033],[-12.016309,23.6979],[-12.016309,23.576465],[-12.023438,23.467578],[-12.08335,23.435449],[-12.226172,23.37749],[-12.3729,23.318018],[-12.559375,23.29082],[-12.62041,23.271338],[-12.7396,23.192725],[-12.895996,23.089551],[-13.031494,23.000244],[-13.120898,22.884082],[-13.153271,22.820508],[-13.166504,22.753223],[-13.155957,22.689307],[-13.107324,22.560742],[-13.094336,22.495996],[-13.086768,22.383252],[-13.078467,22.260449],[-13.06958,22.128174],[-13.060645,21.995752],[-13.051221,21.854785],[-13.041748,21.713818],[-13.032227,21.57207],[-13.025098,21.466797],[-13.016211,21.333936],[-13.167432,21.333789],[-13.396729,21.333545],[-13.626025,21.333252],[-13.855371,21.332959],[-14.084668,21.332715],[-14.313965,21.332422],[-14.543262,21.332129],[-14.772607,21.331885],[-15.001904,21.331592],[-15.231201,21.331299],[-15.460547,21.331055],[-15.689795,21.330762],[-15.919141,21.330469],[-16.148438,21.330225],[-16.377734,21.329932],[-16.607031,21.329639],[-16.836328,21.329395],[-16.964551,21.329248],[-17.005908,21.142432],[-17.042383,21.008008],[-17.063965,20.898828],[-17.048047,20.806152],[-17.098779,20.856885],[-17.009619,21.3771],[-17.003076,21.420703],[-17.002979,21.420752],[-16.951123,21.430273],[-16.730957,21.470312],[-16.581006,21.481055],[-16.190869,21.481055],[-16.041016,21.500586],[-15.92085,21.500586],[-15.750928,21.49082],[-15.610791,21.470312],[-15.460938,21.450781],[-15.290967,21.450781],[-15.150879,21.441016],[-14.971143,21.441016],[-14.84082,21.450781],[-14.750977,21.500586],[-14.67085,21.600195],[-14.641113,21.680273],[-14.610791,21.750586],[-14.621094,21.820898],[-14.630859,21.860937],[-14.581006,21.910742],[-14.520996,21.990869],[-14.460889,22.040625],[-14.440918,22.080664],[-14.380811,22.120703],[-14.311035,22.191016],[-14.270996,22.24082],[-14.221191,22.310156],[-14.210938,22.370703],[-14.190869,22.450781],[-14.190869,22.59043],[-14.170898,22.760352],[-14.141064,22.870703],[-14.121094,22.960547],[-14.101074,23.100195],[-14.040967,23.34043],[-14.020996,23.410742],[-13.980908,23.520117],[-13.931104,23.620703],[-13.891113,23.691016],[-13.840771,23.750586],[-13.770947,23.790625],[-13.661084,23.830664],[-13.581055,23.870703],[-13.480957,23.910742],[-13.391113,23.941016],[-13.310986,23.981055],[-13.280762,24.020117],[-13.230957,24.09043],[-13.161133,24.220312],[-13.121094,24.300391],[-13.061035,24.400977],[-12.991162,24.470312],[-12.947852,24.497266],[-12.911133,24.520117],[-12.820752,24.570898],[-12.710938,24.630469],[-12.630811,24.680273],[-12.561035,24.731055],[-12.500977,24.770117],[-12.431152,24.830664],[-12.400879,24.880469],[-12.36084,24.970312],[-12.310986,25.110937],[-12.270947,25.260303],[-12.230957,25.420508],[-12.201123,25.520117],[-12.17085,25.640234],[-12.130859,25.731055],[-12.101025,25.830664],[-12.081055,25.870703],[-12.081055,25.920508],[-12.060986,25.99082],[-12.056787,25.996338],[-12.030762,26.030859],[-11.960889,26.050391],[-11.880859,26.070898],[-11.754883,26.086523],[-11.718213,26.104102],[-11.699219,26.162695],[-11.684521,26.213477],[-11.637207,26.295508],[-11.583984,26.360937],[-11.553174,26.400977],[-11.51167,26.470312],[-11.470703,26.520117],[-11.399902,26.583594],[-11.337891,26.633398],[-11.316846,26.68418],[-11.316846,26.744727],[-11.361279,26.793555],[-11.392578,26.883398],[-11.263623,26.910742],[-11.150342,26.941016],[-11.046826,26.970312],[-10.922803,27.010352],[-10.830078,27.010352],[-10.757764,27.020117],[-10.654248,27.000586],[-10.55127,26.99082],[-10.478955,26.960547],[-10.354932,26.900977],[-10.251465,26.860937],[-10.189453,26.860937],[-10.123047,26.880469],[-10.066846,26.908789],[-10.032715,26.910742],[-9.980908,26.890234],[-9.900342,26.850195],[-9.817871,26.850195],[-9.735352,26.860937],[-9.67334,26.910742],[-9.569824,26.99082],[-9.487305,27.050391],[-9.413037,27.088477],[-9.352979,27.098242],[-9.285596,27.098242],[-9.208447,27.100195],[-9.084424,27.09043],[-9.001904,27.09043],[-8.889062,27.104102],[-8.794873,27.120703],[-8.753857,27.150977],[-8.753857,27.191016],[-8.774365,27.250586],[-8.796826,27.308203],[-8.802686,27.360937],[-8.788965,27.416553],[-8.774365,27.460547],[-8.78457,27.530859],[-8.813916,27.613867],[-8.817773,27.655908]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Montenegro","SOV_A3":"MNE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Montenegro","ADM0_A3":"MNE","GEOU_DIF":0,"GEOUNIT":"Montenegro","GU_A3":"MNE","SU_DIF":0,"SUBUNIT":"Montenegro","SU_A3":"MNE","BRK_DIFF":0,"NAME":"Montenegro","NAME_LONG":"Montenegro","BRK_A3":"MNE","BRK_NAME":"Montenegro","BRK_GROUP":null,"ABBREV":"Mont.","POSTAL":"ME","FORMAL_EN":"Montenegro","FORMAL_FR":null,"NAME_CIAWF":"Montenegro","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Montenegro","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":5,"POP_EST":622137,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":5542,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"MJ","ISO_A2":"ME","ISO_A2_EH":"ME","ISO_A3":"MNE","ISO_A3_EH":"MNE","ISO_N3":"499","ISO_N3_EH":"499","UN_A3":"499","WB_A2":"ME","WB_A3":"MNE","WOE_ID":20069817,"WOE_ID_EH":20069817,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MNE","ADM0_DIFF":null,"ADM0_TLC":"MNE","ADM0_A3_US":"MNE","ADM0_A3_FR":"MNE","ADM0_A3_RU":"MNE","ADM0_A3_ES":"MNE","ADM0_A3_CN":"MNE","ADM0_A3_TW":"MNE","ADM0_A3_IN":"MNE","ADM0_A3_NP":"MNE","ADM0_A3_PK":"MNE","ADM0_A3_DE":"MNE","ADM0_A3_GB":"MNE","ADM0_A3_BR":"MNE","ADM0_A3_IL":"MNE","ADM0_A3_PS":"MNE","ADM0_A3_SA":"MNE","ADM0_A3_EG":"MNE","ADM0_A3_MA":"MNE","ADM0_A3_PT":"MNE","ADM0_A3_AR":"MNE","ADM0_A3_JP":"MNE","ADM0_A3_KO":"MNE","ADM0_A3_VN":"MNE","ADM0_A3_TR":"MNE","ADM0_A3_ID":"MNE","ADM0_A3_PL":"MNE","ADM0_A3_GR":"MNE","ADM0_A3_IT":"MNE","ADM0_A3_NL":"MNE","ADM0_A3_SE":"MNE","ADM0_A3_BD":"MNE","ADM0_A3_UA":"MNE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":19.143727,"LABEL_Y":42.803101,"NE_ID":1159321069,"WIKIDATAID":"Q236","NAME_AR":"الجبل الأسود","NAME_BN":"মন্টিনিগ্রো","NAME_DE":"Montenegro","NAME_EN":"Montenegro","NAME_ES":"Montenegro","NAME_FA":"مونتهنگرو","NAME_FR":"Monténégro","NAME_EL":"Μαυροβούνιο","NAME_HE":"מונטנגרו","NAME_HI":"मॉन्टेनीग्रो","NAME_HU":"Montenegró","NAME_ID":"Montenegro","NAME_IT":"Montenegro","NAME_JA":"モンテネグロ","NAME_KO":"몬테네그로","NAME_NL":"Montenegro","NAME_PL":"Czarnogóra","NAME_PT":"Montenegro","NAME_RU":"Черногория","NAME_SV":"Montenegro","NAME_TR":"Karadağ","NAME_UK":"Чорногорія","NAME_UR":"مونٹینیگرو","NAME_VI":"Montenegro","NAME_ZH":"黑山","NAME_ZHT":"蒙特內哥羅","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[18.436328,41.869092,20.347656,43.542334],"geometry":{"type":"Polygon","coordinates":[[[19.194336,43.533301],[19.191602,43.521045],[19.196484,43.48501],[19.21875,43.449951],[19.298242,43.413965],[19.414648,43.342822],[19.551563,43.212256],[19.614453,43.173437],[19.670996,43.163965],[19.781152,43.109766],[19.858008,43.096533],[19.944043,43.081641],[20.167871,42.968506],[20.268457,42.935449],[20.339941,42.892871],[20.347656,42.852783],[20.344336,42.82793],[20.215137,42.798828],[20.192578,42.754639],[20.12998,42.759766],[20.054297,42.760059],[20.029492,42.732031],[20.065723,42.68584],[20.089258,42.631543],[20.070312,42.55708],[20.063965,42.547266],[20.045703,42.549902],[19.939063,42.506689],[19.859766,42.486328],[19.788281,42.476172],[19.754492,42.496924],[19.737793,42.525146],[19.740723,42.606934],[19.727832,42.634521],[19.703418,42.647949],[19.654492,42.628564],[19.597461,42.56543],[19.544531,42.491943],[19.465137,42.415381],[19.399609,42.341895],[19.329004,42.249268],[19.280664,42.172559],[19.330859,42.129297],[19.361426,42.069092],[19.352148,42.024023],[19.361133,41.997754],[19.345508,41.918848],[19.342383,41.869092],[19.186426,41.948633],[19.122266,42.060498],[18.894238,42.249463],[18.63291,42.378076],[18.619043,42.398389],[18.633398,42.423145],[18.645898,42.442725],[18.591602,42.444189],[18.553516,42.428516],[18.51748,42.43291],[18.47666,42.481104],[18.438086,42.522949],[18.436328,42.559717],[18.453906,42.564502],[18.480078,42.579199],[18.534961,42.620117],[18.545898,42.641602],[18.543262,42.67417],[18.466016,42.777246],[18.455078,42.844092],[18.443848,42.968457],[18.460156,42.9979],[18.488477,43.012158],[18.623633,43.027686],[18.621875,43.124609],[18.62998,43.153662],[18.656836,43.193945],[18.674219,43.230811],[18.749219,43.283545],[18.851074,43.346338],[18.895605,43.348193],[18.934668,43.339453],[18.978711,43.2854],[19.02666,43.292432],[19.036719,43.357324],[18.973828,43.442383],[18.940234,43.496729],[18.950684,43.52666],[18.974219,43.542334],[19.02832,43.53252],[19.080078,43.517725],[19.112793,43.527734],[19.164355,43.535449],[19.194336,43.533301]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Mongolia","SOV_A3":"MNG","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Mongolia","ADM0_A3":"MNG","GEOU_DIF":0,"GEOUNIT":"Mongolia","GU_A3":"MNG","SU_DIF":0,"SUBUNIT":"Mongolia","SU_A3":"MNG","BRK_DIFF":0,"NAME":"Mongolia","NAME_LONG":"Mongolia","BRK_A3":"MNG","BRK_NAME":"Mongolia","BRK_GROUP":null,"ABBREV":"Mong.","POSTAL":"MN","FORMAL_EN":"Mongolia","FORMAL_FR":null,"NAME_CIAWF":"Mongolia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Mongolia","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":5,"MAPCOLOR9":5,"MAPCOLOR13":6,"POP_EST":3225167,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":13996,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"MG","ISO_A2":"MN","ISO_A2_EH":"MN","ISO_A3":"MNG","ISO_A3_EH":"MNG","ISO_N3":"496","ISO_N3_EH":"496","UN_A3":"496","WB_A2":"MN","WB_A3":"MNG","WOE_ID":23424887,"WOE_ID_EH":23424887,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MNG","ADM0_DIFF":null,"ADM0_TLC":"MNG","ADM0_A3_US":"MNG","ADM0_A3_FR":"MNG","ADM0_A3_RU":"MNG","ADM0_A3_ES":"MNG","ADM0_A3_CN":"MNG","ADM0_A3_TW":"MNG","ADM0_A3_IN":"MNG","ADM0_A3_NP":"MNG","ADM0_A3_PK":"MNG","ADM0_A3_DE":"MNG","ADM0_A3_GB":"MNG","ADM0_A3_BR":"MNG","ADM0_A3_IL":"MNG","ADM0_A3_PS":"MNG","ADM0_A3_SA":"MNG","ADM0_A3_EG":"MNG","ADM0_A3_MA":"MNG","ADM0_A3_PT":"MNG","ADM0_A3_AR":"MNG","ADM0_A3_JP":"MNG","ADM0_A3_KO":"MNG","ADM0_A3_VN":"MNG","ADM0_A3_TR":"MNG","ADM0_A3_ID":"MNG","ADM0_A3_PL":"MNG","ADM0_A3_GR":"MNG","ADM0_A3_IT":"MNG","ADM0_A3_NL":"MNG","ADM0_A3_SE":"MNG","ADM0_A3_BD":"MNG","ADM0_A3_UA":"MNG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7,"LABEL_X":104.150405,"LABEL_Y":45.997488,"NE_ID":1159321071,"WIKIDATAID":"Q711","NAME_AR":"منغوليا","NAME_BN":"মঙ্গোলিয়া","NAME_DE":"Mongolei","NAME_EN":"Mongolia","NAME_ES":"Mongolia","NAME_FA":"مغولستان","NAME_FR":"Mongolie","NAME_EL":"Μογγολία","NAME_HE":"מונגוליה","NAME_HI":"मंगोलिया","NAME_HU":"Mongólia","NAME_ID":"Mongolia","NAME_IT":"Mongolia","NAME_JA":"モンゴル国","NAME_KO":"몽골","NAME_NL":"Mongolië","NAME_PL":"Mongolia","NAME_PT":"Mongólia","NAME_RU":"Монголия","NAME_SV":"Mongoliet","NAME_TR":"Moğolistan","NAME_UK":"Монголія","NAME_UR":"منگولیا","NAME_VI":"Mông Cổ","NAME_ZH":"蒙古国","NAME_ZHT":"蒙古國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[87.743164,41.595508,119.897852,52.117285],"geometry":{"type":"Polygon","coordinates":[[[87.814258,49.162305],[87.818262,49.162109],[87.934766,49.164551],[87.988086,49.186914],[88.028516,49.219775],[88.115723,49.256299],[88.134277,49.298437],[88.135547,49.381494],[88.192578,49.451709],[88.337793,49.472559],[88.393359,49.482861],[88.452441,49.472705],[88.544336,49.482568],[88.633203,49.486133],[88.682715,49.464551],[88.747852,49.44624],[88.831641,49.448437],[88.860352,49.481543],[88.863867,49.527637],[88.900195,49.539697],[88.94541,49.507666],[88.970605,49.48374],[89.008398,49.472803],[89.109473,49.501367],[89.17998,49.532227],[89.20293,49.595703],[89.243945,49.627051],[89.299219,49.611133],[89.395605,49.611523],[89.475,49.660547],[89.579199,49.699707],[89.654102,49.71748],[89.669531,49.750488],[89.634277,49.823291],[89.643848,49.903027],[89.744238,49.948096],[89.878027,49.953516],[89.977344,49.984326],[90.00498,50.069287],[90.053711,50.09375],[90.103711,50.10332],[90.224512,50.116699],[90.311328,50.151172],[90.364844,50.166895],[90.516895,50.21333],[90.655078,50.222363],[90.714355,50.259424],[90.760742,50.305957],[90.838086,50.32373],[90.917188,50.36416],[91.021582,50.415479],[91.062793,50.422607],[91.233789,50.452393],[91.300586,50.463379],[91.34082,50.470068],[91.415039,50.468018],[91.446484,50.522168],[91.52168,50.562012],[91.596875,50.575537],[91.63418,50.615137],[91.706348,50.665527],[91.804297,50.693604],[91.956543,50.697607],[92.104004,50.691992],[92.192383,50.700586],[92.265332,50.775195],[92.279004,50.812207],[92.295801,50.849805],[92.354785,50.86416],[92.426367,50.803076],[92.486426,50.765088],[92.578906,50.725439],[92.62666,50.688281],[92.681348,50.683203],[92.738672,50.710938],[92.779297,50.778662],[92.856445,50.789111],[92.941309,50.778223],[92.963574,50.744922],[92.970703,50.7125],[93.009863,50.654541],[93.103125,50.603906],[93.222559,50.606543],[93.270508,50.615576],[93.386816,50.608496],[93.501074,50.597461],[93.625586,50.585547],[93.662012,50.583691],[93.79541,50.577637],[93.989844,50.568848],[94.075781,50.572852],[94.251074,50.556396],[94.287012,50.511377],[94.319336,50.404883],[94.346875,50.303418],[94.354688,50.221826],[94.400195,50.179639],[94.458496,50.165723],[94.496875,50.132812],[94.564648,50.087939],[94.614746,50.02373],[94.675488,50.028076],[94.718066,50.043262],[94.81123,50.048193],[94.930273,50.04375],[95.012891,50.008252],[95.044336,49.961572],[95.111426,49.935449],[95.166211,49.943848],[95.329492,49.944141],[95.385645,49.941211],[95.441797,49.915527],[95.522656,49.91123],[95.567187,49.943848],[95.707812,49.966016],[95.789355,50.0125],[95.851953,50.012939],[95.899414,49.990576],[95.935742,49.96001],[95.989551,49.973584],[96.018555,49.998779],[96.065527,49.99873],[96.111719,49.982471],[96.229688,49.954102],[96.315039,49.901123],[96.381152,49.896045],[96.466406,49.911523],[96.505762,49.918701],[96.543262,49.892529],[96.598437,49.878418],[96.640234,49.897852],[96.711719,49.911572],[96.985742,49.882812],[97.049121,49.829883],[97.097656,49.805029],[97.136914,49.761719],[97.208594,49.730811],[97.359766,49.741455],[97.418359,49.773047],[97.54082,49.843115],[97.589355,49.911475],[97.650977,49.933594],[97.720703,49.944629],[97.785547,49.944531],[97.853906,49.946777],[97.936621,49.996777],[98.003906,50.014258],[98.103418,50.077832],[98.121973,50.106592],[98.170117,50.180566],[98.2,50.227686],[98.250293,50.302441],[98.277344,50.422998],[98.292676,50.486963],[98.279492,50.533252],[98.220508,50.557178],[98.14502,50.568555],[98.078906,50.603809],[98.029785,50.644629],[98.001172,50.702051],[97.961914,50.769141],[97.96416,50.817676],[97.953125,50.855176],[97.919824,50.887158],[97.856152,50.943359],[97.825293,50.985254],[97.835742,51.05166],[97.91084,51.165186],[97.917871,51.217871],[97.927344,51.250732],[97.923242,51.280469],[97.946875,51.348437],[97.98916,51.377051],[98.037598,51.449951],[98.103125,51.483545],[98.184668,51.485742],[98.219922,51.505615],[98.2375,51.578418],[98.276855,51.63457],[98.303125,51.674268],[98.352734,51.717627],[98.640527,51.801172],[98.760156,51.905078],[98.802539,51.957471],[98.848633,52.070068],[98.893164,52.117285],[98.958105,52.101709],[99.034277,52.0354],[99.091406,52.034863],[99.176172,51.998877],[99.407031,51.923535],[99.532324,51.899902],[99.612891,51.892529],[99.719238,51.871631],[99.787891,51.827539],[99.92168,51.755518],[100.03457,51.737109],[100.230371,51.729834],[100.468945,51.726074],[100.53623,51.713477],[100.710742,51.661572],[100.903613,51.604248],[101.085352,51.553027],[101.223242,51.513281],[101.304492,51.474756],[101.38125,51.452637],[101.464355,51.471484],[101.570898,51.467187],[101.821191,51.421045],[101.979199,51.382227],[102.111523,51.353467],[102.155664,51.31377],[102.160059,51.26084],[102.142383,51.216064],[102.151953,51.10752],[102.194531,51.050684],[102.210254,50.974316],[102.226172,50.901465],[102.215039,50.829443],[102.235059,50.791211],[102.276563,50.768701],[102.316602,50.718457],[102.30332,50.665527],[102.285742,50.634668],[102.288379,50.585107],[102.336426,50.544238],[102.406836,50.536182],[102.469434,50.525684],[102.546289,50.461328],[102.683301,50.387158],[102.76543,50.366553],[102.859668,50.333252],[103.039453,50.300635],[103.161719,50.290723],[103.233789,50.264258],[103.304395,50.200293],[103.421191,50.187061],[103.496289,50.164941],[103.63291,50.138574],[103.723242,50.153857],[103.802637,50.176074],[103.856152,50.171826],[103.958496,50.157275],[104.078711,50.154248],[104.179688,50.169434],[104.259961,50.214453],[104.353906,50.275293],[104.466309,50.306152],[104.596387,50.317187],[104.685352,50.341846],[104.976953,50.38291],[105.094727,50.389941],[105.185938,50.42959],[105.266699,50.460498],[105.383594,50.47373],[105.541602,50.44126],[105.692578,50.41416],[105.875195,50.405371],[105.996484,50.36792],[106.08252,50.332568],[106.217871,50.30459],[106.368457,50.317578],[106.574414,50.328809],[106.711133,50.312598],[106.853711,50.248291],[106.941309,50.19668],[107.040234,50.086475],[107.143066,50.033008],[107.233301,49.989404],[107.34707,49.98667],[107.630957,49.983105],[107.786816,49.96001],[107.916602,49.947803],[107.947852,49.924707],[107.934863,49.849023],[107.93877,49.740723],[107.936719,49.691016],[107.96543,49.653516],[108.00957,49.646875],[108.033789,49.593994],[108.098047,49.562646],[108.213086,49.524805],[108.406934,49.396387],[108.522461,49.341504],[108.613672,49.322803],[108.733008,49.335645],[108.919922,49.335352],[109.236719,49.334912],[109.453711,49.296338],[109.528711,49.269873],[109.750391,49.239307],[109.994531,49.205615],[110.199902,49.17041],[110.321387,49.215869],[110.427832,49.219971],[110.52959,49.187061],[110.631055,49.137598],[110.709766,49.142969],[110.82793,49.166162],[111.204199,49.304297],[111.336621,49.355859],[111.429297,49.342627],[111.511914,49.360937],[111.574805,49.376416],[111.735547,49.397754],[111.833398,49.403613],[111.934473,49.416016],[112.079688,49.424219],[112.375195,49.5146],[112.494922,49.532324],[112.697363,49.507275],[112.806445,49.523584],[112.914844,49.569238],[113.055566,49.61626],[113.09209,49.692529],[113.16416,49.797168],[113.319043,49.874316],[113.445508,49.941602],[113.574219,50.007031],[113.732422,50.061523],[113.881152,50.101123],[114.070703,50.204736],[114.221777,50.257275],[114.29707,50.274414],[114.386328,50.255469],[114.554004,50.241455],[114.674902,50.245703],[114.743164,50.233691],[114.87959,50.183057],[115.00332,50.138574],[115.098047,50.059424],[115.274512,49.948877],[115.365039,49.911768],[115.429199,49.896484],[115.587988,49.886035],[115.717773,49.880615],[115.795215,49.905908],[115.925977,49.952148],[116.13457,50.010791],[116.216797,50.009277],[116.351172,49.978076],[116.551172,49.920312],[116.631543,49.877051],[116.683301,49.823779],[116.589746,49.684814],[116.402148,49.406201],[116.243359,49.170361],[116.159668,49.037451],[116.098242,48.936133],[116.034375,48.840039],[116.025488,48.782275],[115.953809,48.689355],[115.820508,48.577246],[115.791699,48.455713],[115.796582,48.346338],[115.785547,48.248242],[115.639453,48.18623],[115.525098,48.130859],[115.557617,47.94502],[115.616406,47.874805],[115.711719,47.798926],[115.811719,47.738232],[115.898242,47.686914],[115.993848,47.711328],[116.074805,47.789551],[116.231152,47.858203],[116.317187,47.859863],[116.378223,47.844043],[116.513477,47.839551],[116.651953,47.864502],[116.760547,47.869775],[116.901172,47.853076],[116.95166,47.836572],[117.069727,47.806396],[117.19707,47.740283],[117.285937,47.666357],[117.350781,47.652197],[117.383984,47.675732],[117.455078,47.741357],[117.555371,47.804688],[117.67666,47.908301],[117.768359,47.987891],[117.84043,47.999854],[117.979199,47.999609],[118.041895,48.018945],[118.14707,48.028906],[118.239648,47.999512],[118.498438,47.983984],[118.567773,47.943262],[118.690527,47.822266],[118.759961,47.757617],[118.880273,47.725098],[118.953125,47.70293],[119.017578,47.685352],[119.081934,47.65415],[119.097266,47.61626],[119.122949,47.558496],[119.162402,47.525195],[119.235254,47.492578],[119.29082,47.472656],[119.308594,47.430713],[119.325977,47.410156],[119.37666,47.380859],[119.526953,47.255908],[119.600195,47.222461],[119.711133,47.15],[119.757227,47.090039],[119.759863,47.027002],[119.788477,46.978809],[119.862695,46.906592],[119.897852,46.857812],[119.88418,46.791455],[119.895898,46.732861],[119.867188,46.672168],[119.747461,46.627197],[119.706641,46.606006],[119.620215,46.603955],[119.474023,46.62666],[119.331836,46.613818],[119.162109,46.638672],[119.028516,46.692187],[118.957129,46.734863],[118.843945,46.760205],[118.790332,46.74707],[118.722949,46.691895],[118.64873,46.70166],[118.580469,46.691895],[118.404395,46.703174],[118.308691,46.717041],[118.156836,46.678564],[118.071289,46.666602],[117.910449,46.619336],[117.813477,46.537695],[117.741211,46.518164],[117.671094,46.52207],[117.620508,46.552002],[117.546875,46.588281],[117.438086,46.58623],[117.405566,46.570898],[117.392188,46.537598],[117.356348,46.43667],[117.356934,46.391309],[117.333398,46.362012],[117.269043,46.352246],[117.155957,46.355078],[116.978809,46.361768],[116.859082,46.387939],[116.787012,46.37666],[116.688867,46.321973],[116.619336,46.313086],[116.562598,46.289795],[116.516699,46.209082],[116.444824,46.158789],[116.357617,46.096582],[116.264551,45.963037],[116.212988,45.886914],[116.229102,45.845752],[116.240625,45.795996],[116.197656,45.739355],[116.109863,45.686719],[116.039551,45.676953],[115.93418,45.626172],[115.78916,45.534814],[115.681055,45.458252],[115.539453,45.439502],[115.439453,45.419971],[115.21748,45.396191],[115.162598,45.390234],[114.919238,45.378271],[114.73877,45.419629],[114.644336,45.413281],[114.560156,45.38999],[114.517188,45.3646],[114.502246,45.316309],[114.487305,45.271729],[114.419141,45.202588],[114.281055,45.110889],[114.167383,45.049854],[114.080273,44.971143],[114.030273,44.942578],[113.930859,44.912305],[113.877051,44.896191],[113.752148,44.825928],[113.652637,44.763477],[113.587012,44.745703],[113.50791,44.762354],[113.455664,44.767432],[113.300977,44.79165],[113.196094,44.794824],[113.049414,44.810352],[112.706738,44.883447],[112.596777,44.917676],[112.499316,45.010937],[112.411328,45.058203],[112.29209,45.063037],[112.112891,45.062939],[112.032617,45.081641],[111.898047,45.064062],[111.751074,44.969531],[111.681445,44.89917],[111.621289,44.827148],[111.547461,44.6729],[111.514746,44.569824],[111.489453,44.511572],[111.410937,44.419189],[111.402246,44.367285],[111.42959,44.322363],[111.48623,44.271631],[111.519727,44.191895],[111.602637,44.107129],[111.683789,44.041113],[111.836914,43.934668],[111.880273,43.878906],[111.931738,43.814941],[111.942871,43.752441],[111.933203,43.711426],[111.878125,43.680176],[111.771094,43.6646],[111.719727,43.621143],[111.64082,43.563184],[111.547363,43.496289],[111.503516,43.492773],[111.451074,43.474902],[111.186816,43.391992],[111.086523,43.36875],[111.007227,43.341406],[110.913281,43.256885],[110.839551,43.194092],[110.748535,43.110791],[110.708594,43.073877],[110.627539,42.990527],[110.520898,42.895264],[110.461719,42.844141],[110.42959,42.813574],[110.400391,42.773682],[110.288867,42.742725],[110.196875,42.71001],[110.058008,42.660596],[109.858789,42.60625],[109.698047,42.553809],[109.595508,42.510547],[109.443164,42.455957],[109.339844,42.438379],[109.131641,42.440576],[108.874512,42.426465],[108.687305,42.416113],[108.546484,42.429297],[108.333984,42.436768],[108.171191,42.447314],[108.062305,42.427197],[107.805957,42.405859],[107.74873,42.400977],[107.292383,42.349268],[107.090723,42.321533],[106.906055,42.308887],[106.77002,42.288721],[106.693164,42.263574],[106.579102,42.227344],[106.51875,42.211572],[106.317187,42.140576],[105.867578,41.993994],[105.566406,41.875098],[105.51709,41.854736],[105.314355,41.770898],[105.19707,41.738037],[105.11543,41.663281],[105.050586,41.615918],[104.982031,41.595508],[104.860352,41.64375],[104.773633,41.641162],[104.498242,41.658691],[104.498242,41.877002],[104.305176,41.846143],[103.997266,41.796973],[103.711133,41.751318],[103.449707,41.855859],[103.247852,41.936572],[103.072852,42.005957],[102.806836,42.052002],[102.575195,42.09209],[102.156641,42.158105],[101.972949,42.215869],[101.879883,42.292334],[101.713867,42.46582],[101.659961,42.500049],[101.579102,42.523535],[101.495313,42.53877],[101.31377,42.537891],[101.091992,42.551318],[100.772559,42.587793],[100.519043,42.616797],[100.086328,42.670752],[99.983789,42.677344],[99.757422,42.629443],[99.467871,42.568213],[98.946875,42.616211],[98.716309,42.638721],[98.248242,42.684521],[97.718945,42.736279],[97.205664,42.789795],[96.833008,42.760254],[96.625293,42.743848],[96.385449,42.720361],[96.352344,42.746777],[96.34248,42.849316],[96.299512,42.928711],[96.168457,43.014502],[96.080273,43.096143],[95.9125,43.206494],[95.85957,43.275977],[95.841992,43.383691],[95.687305,43.664062],[95.591211,43.853613],[95.567187,43.892236],[95.525586,43.953955],[95.471289,43.986182],[95.356445,44.005957],[95.325586,44.039355],[95.325586,44.104883],[95.343652,44.19541],[95.366797,44.261523],[95.350293,44.278076],[95.049805,44.259424],[94.866016,44.30332],[94.712012,44.35083],[94.494336,44.47251],[94.364746,44.519482],[94.199316,44.645166],[93.95791,44.674951],[93.868164,44.724219],[93.755273,44.831934],[93.656445,44.900977],[93.516211,44.944482],[93.294336,44.983154],[92.916016,45.020166],[92.787891,45.035742],[92.578906,45.010986],[92.423828,45.008936],[92.172656,45.035254],[92.029785,45.068506],[91.852832,45.069336],[91.737793,45.068945],[91.584375,45.076514],[91.510059,45.098242],[91.441016,45.124756],[91.312109,45.118115],[91.221777,45.144531],[91.137695,45.193945],[91.05,45.217432],[90.953613,45.215918],[90.913965,45.193945],[90.877246,45.196094],[90.853223,45.262891],[90.763184,45.370654],[90.749609,45.418945],[90.694434,45.474658],[90.661816,45.525244],[90.670703,45.595166],[90.709668,45.730811],[90.795898,45.853516],[90.852441,45.8854],[90.887109,45.921631],[90.959766,45.985059],[91.001758,46.035791],[90.996777,46.10498],[90.947559,46.177295],[90.911523,46.270654],[90.918262,46.324268],[90.971484,46.387988],[91.033887,46.529004],[91.028906,46.566064],[91.004297,46.595752],[90.997852,46.661084],[90.985742,46.749023],[90.910547,46.883252],[90.869922,46.954492],[90.799023,46.985156],[90.715527,47.003857],[90.643359,47.100293],[90.55293,47.214014],[90.496191,47.285156],[90.476465,47.328809],[90.46748,47.408154],[90.425195,47.504102],[90.380664,47.556641],[90.347461,47.596973],[90.330664,47.655176],[90.313281,47.676172],[90.191016,47.7021],[90.103223,47.74541],[90.066602,47.803564],[90.053906,47.850488],[90.02793,47.877686],[89.958691,47.886328],[89.910449,47.844336],[89.831348,47.823291],[89.778125,47.827002],[89.725586,47.85249],[89.693164,47.87915],[89.638477,47.909082],[89.560938,48.003955],[89.479199,48.029053],[89.329883,48.024854],[89.196289,47.980908],[89.115625,47.987695],[89.047656,48.002539],[88.971094,48.049951],[88.917773,48.089014],[88.838281,48.101709],[88.681836,48.170557],[88.575977,48.220166],[88.566797,48.317432],[88.51709,48.384473],[88.413965,48.403418],[88.309961,48.47207],[88.158203,48.509082],[88.062598,48.537842],[87.979688,48.555127],[87.967383,48.581055],[87.972266,48.60332],[88.010645,48.64043],[88.050195,48.675049],[88.060059,48.707178],[88.02793,48.735596],[87.942187,48.765283],[87.831836,48.79165],[87.80918,48.835742],[87.743164,48.881641],[87.754687,48.918555],[87.806836,48.945508],[87.859863,48.965527],[87.872168,49.000146],[87.834668,49.031934],[87.816309,49.080273],[87.825195,49.116309],[87.814258,49.162305]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Moldova","SOV_A3":"MDA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Moldova","ADM0_A3":"MDA","GEOU_DIF":0,"GEOUNIT":"Moldova","GU_A3":"MDA","SU_DIF":0,"SUBUNIT":"Moldova","SU_A3":"MDA","BRK_DIFF":0,"NAME":"Moldova","NAME_LONG":"Moldova","BRK_A3":"MDA","BRK_NAME":"Moldova","BRK_GROUP":null,"ABBREV":"Mda.","POSTAL":"MD","FORMAL_EN":"Republic of Moldova","FORMAL_FR":null,"NAME_CIAWF":"Moldova","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Moldova","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":5,"MAPCOLOR9":4,"MAPCOLOR13":12,"POP_EST":2657637,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":11968,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"MD","ISO_A2":"MD","ISO_A2_EH":"MD","ISO_A3":"MDA","ISO_A3_EH":"MDA","ISO_N3":"498","ISO_N3_EH":"498","UN_A3":"498","WB_A2":"MD","WB_A3":"MDA","WOE_ID":23424885,"WOE_ID_EH":23424885,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MDA","ADM0_DIFF":null,"ADM0_TLC":"MDA","ADM0_A3_US":"MDA","ADM0_A3_FR":"MDA","ADM0_A3_RU":"MDA","ADM0_A3_ES":"MDA","ADM0_A3_CN":"MDA","ADM0_A3_TW":"MDA","ADM0_A3_IN":"MDA","ADM0_A3_NP":"MDA","ADM0_A3_PK":"MDA","ADM0_A3_DE":"MDA","ADM0_A3_GB":"MDA","ADM0_A3_BR":"MDA","ADM0_A3_IL":"MDA","ADM0_A3_PS":"MDA","ADM0_A3_SA":"MDA","ADM0_A3_EG":"MDA","ADM0_A3_MA":"MDA","ADM0_A3_PT":"MDA","ADM0_A3_AR":"MDA","ADM0_A3_JP":"MDA","ADM0_A3_KO":"MDA","ADM0_A3_VN":"MDA","ADM0_A3_TR":"MDA","ADM0_A3_ID":"MDA","ADM0_A3_PL":"MDA","ADM0_A3_GR":"MDA","ADM0_A3_IT":"MDA","ADM0_A3_NL":"MDA","ADM0_A3_SE":"MDA","ADM0_A3_BD":"MDA","ADM0_A3_UA":"MDA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":28.487904,"LABEL_Y":47.434999,"NE_ID":1159321045,"WIKIDATAID":"Q217","NAME_AR":"مولدوفا","NAME_BN":"মলদোভা","NAME_DE":"Republik Moldau","NAME_EN":"Moldova","NAME_ES":"Moldavia","NAME_FA":"مولداوی","NAME_FR":"Moldavie","NAME_EL":"Μολδαβία","NAME_HE":"מולדובה","NAME_HI":"मॉल्डोवा","NAME_HU":"Moldova","NAME_ID":"Moldova","NAME_IT":"Moldavia","NAME_JA":"モルドバ","NAME_KO":"몰도바","NAME_NL":"Moldavië","NAME_PL":"Mołdawia","NAME_PT":"Moldávia","NAME_RU":"Молдавия","NAME_SV":"Moldavien","NAME_TR":"Moldova","NAME_UK":"Молдова","NAME_UR":"مالدووا","NAME_VI":"Moldova","NAME_ZH":"摩尔多瓦","NAME_ZHT":"摩爾多瓦","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[26.618945,45.450439,30.131055,48.477734],"geometry":{"type":"Polygon","coordinates":[[[26.618945,48.259863],[26.64043,48.294141],[26.84707,48.387158],[26.900586,48.371924],[27.008496,48.368262],[27.228516,48.371436],[27.336914,48.432715],[27.403809,48.415625],[27.458398,48.443066],[27.549219,48.477734],[27.562207,48.47041],[27.57373,48.464893],[27.714453,48.449512],[27.82002,48.41626],[27.890625,48.365234],[27.963379,48.333545],[28.038477,48.321289],[28.080078,48.295801],[28.088477,48.257031],[28.158789,48.237988],[28.291016,48.238574],[28.347168,48.213037],[28.326953,48.161426],[28.340527,48.144434],[28.3875,48.162109],[28.423047,48.146875],[28.441992,48.108691],[28.463086,48.090527],[28.530469,48.150293],[28.60166,48.144385],[28.773828,48.11958],[28.86582,47.995654],[28.923145,47.951123],[28.97334,47.933008],[29.036914,47.952344],[29.092969,47.975439],[29.125391,47.964551],[29.194824,47.882422],[29.211133,47.775],[29.210742,47.731543],[29.186035,47.658594],[29.150879,47.580859],[29.122949,47.530371],[29.134863,47.489697],[29.159766,47.455664],[29.200586,47.444482],[29.333789,47.375732],[29.383398,47.328027],[29.455664,47.292627],[29.510645,47.290723],[29.53916,47.270996],[29.549316,47.246826],[29.541797,47.185547],[29.510938,47.128027],[29.515039,47.091113],[29.563477,47.04751],[29.568652,46.996729],[29.571973,46.964014],[29.597754,46.938818],[29.719727,46.88291],[29.877832,46.828906],[29.918066,46.782422],[29.94248,46.723779],[29.934766,46.625],[29.924316,46.538867],[30.131055,46.423096],[30.10752,46.401562],[30.075684,46.377832],[29.878027,46.360205],[29.837891,46.350537],[29.751953,46.437793],[29.706836,46.44873],[29.664551,46.416748],[29.614941,46.398828],[29.555078,46.407764],[29.491016,46.434668],[29.458789,46.45376],[29.432813,46.455957],[29.392871,46.436914],[29.339551,46.445068],[29.304883,46.466602],[29.25459,46.392627],[29.223828,46.376953],[29.20459,46.379346],[29.200781,46.50498],[29.18623,46.523975],[29.146289,46.526904],[29.049902,46.497021],[28.958398,46.458496],[28.927441,46.424121],[28.930566,46.362256],[28.94375,46.288428],[29.00625,46.176465],[28.971875,46.127637],[28.947754,46.049951],[28.849512,45.978662],[28.73877,45.937158],[28.729297,45.852002],[28.667578,45.793848],[28.562305,45.735791],[28.491602,45.665771],[28.509473,45.617822],[28.51377,45.572412],[28.501758,45.541553],[28.499023,45.517725],[28.471387,45.507178],[28.310352,45.498584],[28.264844,45.483887],[28.2125,45.450439],[28.1625,45.51377],[28.111914,45.569141],[28.074707,45.598975],[28.090332,45.612744],[28.130859,45.628271],[28.159766,45.647119],[28.15625,45.713086],[28.134961,45.788867],[28.115527,45.825537],[28.113574,45.883057],[28.099707,45.972607],[28.119141,46.138672],[28.199609,46.347559],[28.244336,46.45127],[28.222656,46.508057],[28.239453,46.64082],[28.204688,46.706396],[28.15,46.79209],[28.071777,46.978418],[27.974219,47.043213],[27.853809,47.114502],[27.802344,47.168311],[27.767969,47.227588],[27.696191,47.286426],[27.614063,47.340527],[27.51582,47.475635],[27.464844,47.53667],[27.449219,47.553125],[27.336914,47.639746],[27.27793,47.717969],[27.248145,47.782227],[27.230859,47.841748],[27.152051,47.959277],[27.080371,48.047656],[27.012207,48.110498],[26.980762,48.155029],[26.900977,48.211133],[26.787305,48.255811],[26.71377,48.263477],[26.618945,48.259863]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":6,"LABELRANK":6,"SOVEREIGNT":"Monaco","SOV_A3":"MCO","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Monaco","ADM0_A3":"MCO","GEOU_DIF":0,"GEOUNIT":"Monaco","GU_A3":"MCO","SU_DIF":0,"SUBUNIT":"Monaco","SU_A3":"MCO","BRK_DIFF":0,"NAME":"Monaco","NAME_LONG":"Monaco","BRK_A3":"MCO","BRK_NAME":"Monaco","BRK_GROUP":null,"ABBREV":"Mco.","POSTAL":"MC","FORMAL_EN":"Principality of Monaco","FORMAL_FR":null,"NAME_CIAWF":"Monaco","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Monaco","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":2,"MAPCOLOR13":12,"POP_EST":38964,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":7188,"GDP_YEAR":2018,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"MN","ISO_A2":"MC","ISO_A2_EH":"MC","ISO_A3":"MCO","ISO_A3_EH":"MCO","ISO_N3":"492","ISO_N3_EH":"492","UN_A3":"492","WB_A2":"MC","WB_A3":"MCO","WOE_ID":23424892,"WOE_ID_EH":23424892,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MCO","ADM0_DIFF":null,"ADM0_TLC":"MCO","ADM0_A3_US":"MCO","ADM0_A3_FR":"MCO","ADM0_A3_RU":"MCO","ADM0_A3_ES":"MCO","ADM0_A3_CN":"MCO","ADM0_A3_TW":"MCO","ADM0_A3_IN":"MCO","ADM0_A3_NP":"MCO","ADM0_A3_PK":"MCO","ADM0_A3_DE":"MCO","ADM0_A3_GB":"MCO","ADM0_A3_BR":"MCO","ADM0_A3_IL":"MCO","ADM0_A3_PS":"MCO","ADM0_A3_SA":"MCO","ADM0_A3_EG":"MCO","ADM0_A3_MA":"MCO","ADM0_A3_PT":"MCO","ADM0_A3_AR":"MCO","ADM0_A3_JP":"MCO","ADM0_A3_KO":"MCO","ADM0_A3_VN":"MCO","ADM0_A3_TR":"MCO","ADM0_A3_ID":"MCO","ADM0_A3_PL":"MCO","ADM0_A3_GR":"MCO","ADM0_A3_IT":"MCO","ADM0_A3_NL":"MCO","ADM0_A3_SE":"MCO","ADM0_A3_BD":"MCO","ADM0_A3_UA":"MCO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":5,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":7.398291,"LABEL_Y":43.739652,"NE_ID":1159321043,"WIKIDATAID":"Q235","NAME_AR":"موناكو","NAME_BN":"মোনাকো","NAME_DE":"Monaco","NAME_EN":"Monaco","NAME_ES":"Mónaco","NAME_FA":"موناکو","NAME_FR":"Monaco","NAME_EL":"Μονακό","NAME_HE":"מונקו","NAME_HI":"मोनैको","NAME_HU":"Monaco","NAME_ID":"Monako","NAME_IT":"Principato di Monaco","NAME_JA":"モナコ","NAME_KO":"모나코","NAME_NL":"Monaco","NAME_PL":"Monako","NAME_PT":"Mónaco","NAME_RU":"Монако","NAME_SV":"Monaco","NAME_TR":"Monako","NAME_UK":"Монако","NAME_UR":"موناکو","NAME_VI":"Monaco","NAME_ZH":"摩纳哥","NAME_ZHT":"摩納哥","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[7.377734,43.731738,7.438672,43.770898],"geometry":{"type":"Polygon","coordinates":[[[7.438672,43.750439],[7.377734,43.731738],[7.380078,43.753223],[7.39502,43.765332],[7.414453,43.770898],[7.436914,43.761475],[7.438672,43.750439]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Mexico","SOV_A3":"MEX","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Mexico","ADM0_A3":"MEX","GEOU_DIF":0,"GEOUNIT":"Mexico","GU_A3":"MEX","SU_DIF":0,"SUBUNIT":"Mexico","SU_A3":"MEX","BRK_DIFF":0,"NAME":"Mexico","NAME_LONG":"Mexico","BRK_A3":"MEX","BRK_NAME":"Mexico","BRK_GROUP":null,"ABBREV":"Mex.","POSTAL":"MX","FORMAL_EN":"United Mexican States","FORMAL_FR":null,"NAME_CIAWF":"Mexico","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Mexico","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":1,"MAPCOLOR9":7,"MAPCOLOR13":3,"POP_EST":127575529,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":1268870,"GDP_YEAR":2019,"ECONOMY":"4. Emerging region: MIKT","INCOME_GRP":"3. Upper middle income","FIPS_10":"MX","ISO_A2":"MX","ISO_A2_EH":"MX","ISO_A3":"MEX","ISO_A3_EH":"MEX","ISO_N3":"484","ISO_N3_EH":"484","UN_A3":"484","WB_A2":"MX","WB_A3":"MEX","WOE_ID":23424900,"WOE_ID_EH":23424900,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MEX","ADM0_DIFF":null,"ADM0_TLC":"MEX","ADM0_A3_US":"MEX","ADM0_A3_FR":"MEX","ADM0_A3_RU":"MEX","ADM0_A3_ES":"MEX","ADM0_A3_CN":"MEX","ADM0_A3_TW":"MEX","ADM0_A3_IN":"MEX","ADM0_A3_NP":"MEX","ADM0_A3_PK":"MEX","ADM0_A3_DE":"MEX","ADM0_A3_GB":"MEX","ADM0_A3_BR":"MEX","ADM0_A3_IL":"MEX","ADM0_A3_PS":"MEX","ADM0_A3_SA":"MEX","ADM0_A3_EG":"MEX","ADM0_A3_MA":"MEX","ADM0_A3_PT":"MEX","ADM0_A3_AR":"MEX","ADM0_A3_JP":"MEX","ADM0_A3_KO":"MEX","ADM0_A3_VN":"MEX","ADM0_A3_TR":"MEX","ADM0_A3_ID":"MEX","ADM0_A3_PL":"MEX","ADM0_A3_GR":"MEX","ADM0_A3_IT":"MEX","ADM0_A3_NL":"MEX","ADM0_A3_SE":"MEX","ADM0_A3_BD":"MEX","ADM0_A3_UA":"MEX","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":6.7,"LABEL_X":-102.289448,"LABEL_Y":23.919988,"NE_ID":1159321055,"WIKIDATAID":"Q96","NAME_AR":"المكسيك","NAME_BN":"মেক্সিকো","NAME_DE":"Mexiko","NAME_EN":"Mexico","NAME_ES":"México","NAME_FA":"مکزیک","NAME_FR":"Mexique","NAME_EL":"Μεξικό","NAME_HE":"מקסיקו","NAME_HI":"मेक्सिको","NAME_HU":"Mexikó","NAME_ID":"Meksiko","NAME_IT":"Messico","NAME_JA":"メキシコ","NAME_KO":"멕시코","NAME_NL":"Mexico","NAME_PL":"Meksyk","NAME_PT":"México","NAME_RU":"Мексика","NAME_SV":"Mexiko","NAME_TR":"Meksika","NAME_UK":"Мексика","NAME_UR":"میکسیکو","NAME_VI":"México","NAME_ZH":"墨西哥","NAME_ZHT":"墨西哥","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-118.401367,14.54541,-86.696289,32.715332],"geometry":{"type":"MultiPolygon","coordinates":[[[[-117.128271,32.53335],[-116.84209,32.554785],[-116.555957,32.576221],[-116.269824,32.597607],[-115.983691,32.619043],[-115.69751,32.640479],[-115.411377,32.661865],[-115.125195,32.683301],[-114.839062,32.704736],[-114.724756,32.715332],[-114.787988,32.564795],[-114.835938,32.508301],[-114.361719,32.360303],[-113.887451,32.212305],[-113.413184,32.064307],[-112.938965,31.91626],[-112.464746,31.768262],[-111.990479,31.620215],[-111.516211,31.472266],[-111.041992,31.324219],[-110.688525,31.324854],[-110.335107,31.325537],[-109.981641,31.326172],[-109.628223,31.326807],[-109.274756,31.327441],[-108.921338,31.328125],[-108.567871,31.328809],[-108.214453,31.329443],[-108.213818,31.441895],[-108.213184,31.554395],[-108.2125,31.666846],[-108.211816,31.779346],[-107.992041,31.778174],[-107.772217,31.777051],[-107.552344,31.775879],[-107.33252,31.774756],[-107.112695,31.773633],[-106.892871,31.772461],[-106.673047,31.771338],[-106.453223,31.770166],[-106.44541,31.768408],[-106.436035,31.764453],[-106.346973,31.679004],[-106.255713,31.544678],[-106.148047,31.450928],[-106.024072,31.397754],[-105.812695,31.241016],[-105.514014,30.980762],[-105.27583,30.807275],[-105.098145,30.720557],[-104.978809,30.645947],[-104.917871,30.58335],[-104.835889,30.447656],[-104.681348,30.134375],[-104.681348,29.990527],[-104.622217,29.854297],[-104.504004,29.677686],[-104.400635,29.57373],[-104.312207,29.542432],[-104.215527,29.479883],[-104.110596,29.386133],[-103.989746,29.323145],[-103.85293,29.291064],[-103.663965,29.206885],[-103.422949,29.070703],[-103.257715,29.001123],[-103.168311,28.998193],[-103.08999,29.041895],[-103.022852,29.132227],[-102.956836,29.190381],[-102.891992,29.216406],[-102.865674,29.258008],[-102.877832,29.315332],[-102.833984,29.443945],[-102.73418,29.643945],[-102.614941,29.752344],[-102.47627,29.769092],[-102.385645,29.806641],[-102.343066,29.86499],[-102.268945,29.871191],[-102.163086,29.825244],[-101.990918,29.795703],[-101.752344,29.782471],[-101.611621,29.786963],[-101.568701,29.809229],[-101.546387,29.808057],[-101.544629,29.783545],[-101.509277,29.773145],[-101.440381,29.776855],[-101.380371,29.742578],[-101.303516,29.634082],[-101.038965,29.4604],[-101.038623,29.460303],[-101.016309,29.400684],[-100.924121,29.314697],[-100.75459,29.18252],[-100.658643,29.068555],[-100.636328,28.972803],[-100.549707,28.821338],[-100.398926,28.614209],[-100.331738,28.502539],[-100.348145,28.486426],[-100.336279,28.428125],[-100.296045,28.327686],[-100.221289,28.242627],[-100.111963,28.172949],[-100.001416,28.047852],[-99.889648,27.867285],[-99.754248,27.729932],[-99.595312,27.635889],[-99.505322,27.54834],[-99.484277,27.467383],[-99.48584,27.398047],[-99.510059,27.340332],[-99.499805,27.285498],[-99.455127,27.233691],[-99.440234,27.170117],[-99.457715,27.081689],[-99.456543,27.056689],[-99.456494,27.056641],[-99.443555,27.03667],[-99.302441,26.884717],[-99.229932,26.761914],[-99.172363,26.565918],[-99.17207,26.56416],[-99.107764,26.446924],[-99.015283,26.398975],[-98.873193,26.38125],[-98.765234,26.34043],[-98.691406,26.276465],[-98.598291,26.237842],[-98.485889,26.224561],[-98.378125,26.182373],[-98.275049,26.111182],[-98.082812,26.064453],[-97.801416,26.042041],[-97.587256,25.98418],[-97.440283,25.89082],[-97.375635,25.871826],[-97.358154,25.870508],[-97.349756,25.884766],[-97.338672,25.911182],[-97.281787,25.941602],[-97.14624,25.961475],[-97.164453,25.754932],[-97.224902,25.585449],[-97.424072,25.233105],[-97.50708,25.014551],[-97.667676,24.38999],[-97.717041,23.980615],[-97.728613,23.787939],[-97.742676,23.760645],[-97.727393,23.732227],[-97.765869,23.306152],[-97.745215,22.942383],[-97.75835,22.886035],[-97.816699,22.776318],[-97.857812,22.624512],[-97.841602,22.55708],[-97.84248,22.510303],[-97.782373,22.279297],[-97.763281,22.105859],[-97.584766,21.808545],[-97.484521,21.704834],[-97.360156,21.614941],[-97.314502,21.564209],[-97.336865,21.437891],[-97.387549,21.373926],[-97.40918,21.272559],[-97.434131,21.356494],[-97.424414,21.465332],[-97.384814,21.523828],[-97.383447,21.566699],[-97.456592,21.612402],[-97.590381,21.762012],[-97.753809,22.02666],[-97.637549,21.603662],[-97.597607,21.535889],[-97.566553,21.507715],[-97.514551,21.477979],[-97.501074,21.432031],[-97.500586,21.398047],[-97.357129,21.104004],[-97.194971,20.800098],[-97.186328,20.717041],[-97.121436,20.61499],[-96.708691,20.188281],[-96.456055,19.869775],[-96.368359,19.567236],[-96.315332,19.472852],[-96.289551,19.34375],[-96.123975,19.199072],[-96.073389,19.105664],[-95.984668,19.05376],[-95.913037,18.897168],[-95.778125,18.805518],[-95.810352,18.803857],[-95.928223,18.850098],[-95.920361,18.81958],[-95.821094,18.754639],[-95.626807,18.690576],[-95.57832,18.69043],[-95.654932,18.723682],[-95.719824,18.768359],[-95.697119,18.774902],[-95.561426,18.719141],[-95.181836,18.700732],[-95.014697,18.570605],[-94.798145,18.5146],[-94.681641,18.348486],[-94.546191,18.174854],[-94.459766,18.16665],[-94.392285,18.165967],[-94.189014,18.195264],[-93.873145,18.304443],[-93.764404,18.35791],[-93.552344,18.430469],[-93.22793,18.443799],[-93.127344,18.423437],[-92.884766,18.468652],[-92.769092,18.524121],[-92.728955,18.574512],[-92.710107,18.61167],[-92.485303,18.664795],[-92.441016,18.675293],[-92.213184,18.684863],[-92.103223,18.704395],[-91.973779,18.715869],[-91.880371,18.637793],[-91.880469,18.599658],[-91.942676,18.563428],[-91.913574,18.528516],[-91.802979,18.470605],[-91.599707,18.447168],[-91.533984,18.456543],[-91.440479,18.541846],[-91.275244,18.624463],[-91.27876,18.720654],[-91.308301,18.773291],[-91.356299,18.776562],[-91.367773,18.806104],[-91.334229,18.876807],[-91.343066,18.900586],[-91.445557,18.832813],[-91.469189,18.833008],[-91.457861,18.864648],[-91.43667,18.889795],[-91.135937,19.0375],[-91.058936,19.098193],[-90.955029,19.15166],[-90.739258,19.352246],[-90.693164,19.729883],[-90.650098,19.795947],[-90.50708,19.911865],[-90.491699,19.946777],[-90.482422,20.025732],[-90.486377,20.224023],[-90.47832,20.37998],[-90.484131,20.556348],[-90.458447,20.713721],[-90.435156,20.75752],[-90.353125,21.009424],[-90.18291,21.120898],[-89.887646,21.252637],[-89.819775,21.274609],[-88.878711,21.414111],[-88.74668,21.448145],[-88.584912,21.538672],[-88.466699,21.569385],[-88.251025,21.566895],[-88.184766,21.578955],[-88.171729,21.591455],[-88.171387,21.603516],[-88.131641,21.615869],[-88.006836,21.604053],[-87.77373,21.549512],[-87.688818,21.53584],[-87.480469,21.472461],[-87.250879,21.446973],[-87.21792,21.458008],[-87.187598,21.477295],[-87.164307,21.514209],[-87.188281,21.546436],[-87.210596,21.543945],[-87.249463,21.526611],[-87.295752,21.524951],[-87.38667,21.551465],[-87.368506,21.57373],[-87.275732,21.571631],[-87.216455,21.582422],[-87.128467,21.621484],[-87.034766,21.592236],[-86.911719,21.462842],[-86.824072,21.42168],[-86.81709,21.234229],[-86.803857,21.200049],[-86.771777,21.150537],[-86.815527,21.005225],[-86.864697,20.885059],[-86.926221,20.786475],[-87.05957,20.63125],[-87.22124,20.507275],[-87.421387,20.231396],[-87.467187,20.102148],[-87.46582,19.998535],[-87.431934,19.898486],[-87.441748,19.861523],[-87.466211,19.82417],[-87.506885,19.82749],[-87.585791,19.779492],[-87.687695,19.637109],[-87.690088,19.593701],[-87.645312,19.553906],[-87.587305,19.572998],[-87.51167,19.574707],[-87.469385,19.586475],[-87.424756,19.58335],[-87.434717,19.501709],[-87.482666,19.44375],[-87.512891,19.425586],[-87.566992,19.415723],[-87.627539,19.382715],[-87.658691,19.352344],[-87.655762,19.257861],[-87.62207,19.250488],[-87.550781,19.320947],[-87.509473,19.31748],[-87.501074,19.287793],[-87.593555,19.046387],[-87.653027,18.798535],[-87.733545,18.655029],[-87.761816,18.446143],[-87.804102,18.35708],[-87.853223,18.268994],[-87.881982,18.273877],[-87.959668,18.440869],[-88.039062,18.483887],[-88.056445,18.524463],[-88.011133,18.726855],[-88.031738,18.838916],[-88.073779,18.834473],[-88.126758,18.773047],[-88.196777,18.719678],[-88.195312,18.642627],[-88.275732,18.514551],[-88.295654,18.472412],[-88.372412,18.482324],[-88.461279,18.476758],[-88.522998,18.445898],[-88.586182,18.290527],[-88.743604,18.071631],[-88.806348,17.965527],[-88.857373,17.928809],[-88.897803,17.914551],[-88.942627,17.939648],[-89.050439,17.999707],[-89.133545,17.970801],[-89.162354,17.901953],[-89.161475,17.814844],[-89.371533,17.81499],[-89.728809,17.815332],[-90.183594,17.815723],[-90.622021,17.816113],[-90.98916,17.816406],[-90.99043,17.620752],[-90.991602,17.447461],[-90.992969,17.252441],[-91.195508,17.254102],[-91.409619,17.255859],[-91.392334,17.236426],[-91.319189,17.199805],[-91.22417,17.112256],[-91.111865,16.976172],[-90.97583,16.867822],[-90.816016,16.787109],[-90.710693,16.708105],[-90.659961,16.630908],[-90.634375,16.565137],[-90.634082,16.510742],[-90.575781,16.467822],[-90.471094,16.439551],[-90.416992,16.391016],[-90.416992,16.351318],[-90.450146,16.261377],[-90.459863,16.162354],[-90.447168,16.072705],[-90.521973,16.071191],[-90.703223,16.071045],[-90.97959,16.070801],[-91.233789,16.070654],[-91.433984,16.070459],[-91.736572,16.070166],[-91.819434,15.932373],[-91.957227,15.703223],[-92.082129,15.495557],[-92.187158,15.320898],[-92.204248,15.275],[-92.204346,15.237695],[-92.074805,15.074219],[-92.09873,15.026758],[-92.144238,15.001953],[-92.158545,14.963574],[-92.155664,14.901318],[-92.186377,14.818359],[-92.176465,14.761328],[-92.159912,14.691016],[-92.187061,14.630078],[-92.209033,14.570996],[-92.235156,14.54541],[-92.264551,14.567773],[-92.530957,14.839648],[-92.808936,15.138574],[-92.918408,15.236133],[-93.024414,15.310254],[-93.166895,15.448047],[-93.541162,15.750391],[-93.734375,15.888477],[-93.916064,16.053564],[-94.078955,16.145264],[-94.239893,16.205078],[-94.311279,16.239355],[-94.37417,16.284766],[-94.409033,16.287354],[-94.426416,16.22627],[-94.370166,16.19541],[-94.302832,16.169336],[-94.249512,16.167529],[-94.193408,16.145605],[-94.02832,16.062061],[-94.00127,16.018945],[-94.470752,16.186572],[-94.661523,16.201904],[-94.682275,16.228223],[-94.587109,16.31582],[-94.616846,16.347559],[-94.650781,16.351807],[-94.752832,16.291211],[-94.79082,16.287158],[-94.797461,16.327051],[-94.79292,16.3646],[-94.858691,16.419727],[-94.900439,16.41748],[-94.934717,16.379102],[-95.023535,16.30625],[-95.02085,16.277637],[-94.846045,16.246582],[-94.785791,16.229102],[-94.799414,16.209668],[-94.949316,16.21001],[-95.134375,16.176953],[-95.464404,15.974707],[-95.771777,15.887793],[-96.213574,15.693066],[-96.408643,15.683105],[-96.51084,15.651904],[-96.807959,15.726416],[-97.184668,15.909277],[-97.754785,15.966846],[-98.138965,16.206299],[-98.520312,16.304834],[-98.762207,16.534766],[-98.907959,16.54458],[-99.00166,16.581445],[-99.348047,16.664746],[-99.690674,16.719629],[-100.024512,16.920508],[-100.243018,16.98418],[-100.431885,17.064062],[-100.847803,17.200488],[-101.001953,17.276123],[-101.147852,17.393115],[-101.385498,17.514209],[-101.487061,17.615332],[-101.600293,17.651562],[-101.762402,17.841992],[-101.84707,17.922266],[-101.918701,17.959766],[-101.995508,17.972705],[-102.216602,17.957422],[-102.546973,18.041406],[-102.699561,18.062842],[-103.018506,18.186865],[-103.441602,18.325391],[-103.580273,18.484375],[-103.698926,18.632959],[-103.912451,18.828467],[-104.045654,18.911816],[-104.277002,19.010986],[-104.405176,19.091211],[-104.602979,19.152881],[-104.938477,19.309375],[-105.045215,19.443262],[-105.107666,19.562207],[-105.286377,19.706494],[-105.48208,19.976074],[-105.532422,20.075391],[-105.57041,20.227832],[-105.615918,20.316309],[-105.669434,20.385596],[-105.642139,20.435986],[-105.542578,20.497949],[-105.377051,20.511865],[-105.260156,20.579053],[-105.244678,20.63418],[-105.252295,20.668506],[-105.327051,20.752979],[-105.420117,20.775391],[-105.492383,20.776611],[-105.51084,20.80874],[-105.456348,20.843799],[-105.393994,20.926123],[-105.301953,21.026562],[-105.237061,21.119189],[-105.225,21.249707],[-105.233252,21.38042],[-105.208691,21.49082],[-105.431445,21.618262],[-105.457422,21.672461],[-105.527441,21.818457],[-105.649121,21.988086],[-105.645508,22.326904],[-105.791797,22.62749],[-105.943359,22.777002],[-106.021729,22.829053],[-106.23457,23.060937],[-106.402246,23.195605],[-106.566504,23.449463],[-106.72876,23.610693],[-106.935498,23.88125],[-107.084863,24.016113],[-107.764941,24.471924],[-107.726611,24.471924],[-107.527246,24.360059],[-107.493701,24.369385],[-107.488916,24.423975],[-107.511914,24.48916],[-107.548877,24.504785],[-107.602002,24.490137],[-107.673682,24.503564],[-107.709521,24.525049],[-107.816699,24.539014],[-107.951172,24.614893],[-108.008789,24.693555],[-108.015088,24.783398],[-108.207666,24.974805],[-108.280762,25.081543],[-108.243311,25.073682],[-108.192041,25.030664],[-108.140088,25.018408],[-108.079639,25.018066],[-108.035693,25.035352],[-108.051465,25.067041],[-108.092822,25.093506],[-108.373682,25.194336],[-108.46626,25.265137],[-108.696387,25.38291],[-108.750977,25.424219],[-108.787256,25.538037],[-108.843604,25.543311],[-108.893164,25.511572],[-109.028809,25.480469],[-109.063477,25.516699],[-109.068457,25.551563],[-108.972754,25.588477],[-108.884863,25.696045],[-108.886572,25.733447],[-108.935156,25.690283],[-109.00835,25.641992],[-109.084082,25.615039],[-109.196484,25.592529],[-109.253955,25.608789],[-109.304297,25.633154],[-109.384961,25.727148],[-109.425635,26.032568],[-109.35415,26.138477],[-109.270654,26.243115],[-109.199707,26.305225],[-109.158789,26.25835],[-109.116699,26.252734],[-109.146338,26.305713],[-109.216016,26.355273],[-109.240625,26.404687],[-109.243262,26.449951],[-109.27627,26.533887],[-109.482861,26.710352],[-109.676074,26.696826],[-109.754785,26.70293],[-109.828369,26.770117],[-109.890918,26.883398],[-109.921729,26.978174],[-109.925635,27.028662],[-109.943994,27.079346],[-110.277148,27.162207],[-110.377295,27.233301],[-110.477783,27.322656],[-110.519385,27.395605],[-110.560645,27.450146],[-110.592676,27.544336],[-110.615479,27.653906],[-110.578271,27.795654],[-110.529883,27.864209],[-110.759033,27.915186],[-110.848633,27.917578],[-110.920801,27.888867],[-110.986084,27.925977],[-111.121387,27.966992],[-111.282422,28.115234],[-111.47168,28.383984],[-111.680078,28.470557],[-111.747217,28.563965],[-111.832422,28.648145],[-111.907031,28.75249],[-111.918604,28.7979],[-111.94082,28.823193],[-112.044873,28.895898],[-112.161768,29.018896],[-112.192041,29.117969],[-112.223486,29.269482],[-112.301416,29.3229],[-112.378223,29.347705],[-112.393213,29.419727],[-112.388672,29.460107],[-112.414551,29.536426],[-112.5729,29.719531],[-112.653125,29.870068],[-112.697168,29.916846],[-112.738379,29.985449],[-112.759229,30.125684],[-112.824805,30.300146],[-112.951758,30.51001],[-113.057666,30.651025],[-113.110449,30.793311],[-113.087012,30.938086],[-113.10498,31.027197],[-113.118604,31.048096],[-113.107959,31.077295],[-113.072803,31.060889],[-113.04292,31.087012],[-113.046729,31.179248],[-113.083643,31.207178],[-113.186182,31.236035],[-113.231445,31.255957],[-113.480811,31.293604],[-113.623486,31.345898],[-113.633008,31.467627],[-113.699951,31.52334],[-113.759424,31.557764],[-113.947754,31.629346],[-113.97749,31.592725],[-114.002686,31.525146],[-114.080908,31.510352],[-114.149316,31.507373],[-114.264062,31.554443],[-114.548682,31.733545],[-114.608789,31.762256],[-114.697607,31.777441],[-114.741309,31.806494],[-114.933594,31.900732],[-114.895068,31.850635],[-114.839502,31.798535],[-114.789893,31.647119],[-114.848145,31.537939],[-114.881885,31.156396],[-114.844678,31.080469],[-114.761035,30.95874],[-114.703369,30.765186],[-114.685449,30.621191],[-114.633301,30.506885],[-114.649756,30.238135],[-114.629932,30.156299],[-114.550488,30.022266],[-114.403418,29.896484],[-114.372607,29.830225],[-114.179199,29.734326],[-114.061914,29.609521],[-113.828955,29.439453],[-113.755469,29.36748],[-113.545312,29.102246],[-113.538477,29.023389],[-113.499707,28.926709],[-113.381836,28.94668],[-113.328906,28.873047],[-113.33501,28.839062],[-113.320703,28.813135],[-113.258887,28.818848],[-113.205566,28.798779],[-113.093652,28.511768],[-113.033594,28.472607],[-112.956641,28.455859],[-112.87085,28.424219],[-112.865234,28.350635],[-112.868457,28.291992],[-112.795703,28.207129],[-112.808057,28.092187],[-112.749316,27.994873],[-112.758203,27.900635],[-112.734033,27.825977],[-112.552637,27.657471],[-112.329199,27.523438],[-112.282617,27.347461],[-112.191455,27.18667],[-112.098145,27.145947],[-112.003955,27.079102],[-112.015576,27.009717],[-112.009082,26.96709],[-111.883154,26.840186],[-111.862646,26.678516],[-111.754004,26.572705],[-111.723389,26.564404],[-111.699414,26.580957],[-111.778516,26.687256],[-111.816846,26.75625],[-111.821777,26.865088],[-111.795264,26.879687],[-111.569678,26.707617],[-111.545898,26.579199],[-111.470166,26.506641],[-111.464502,26.408447],[-111.418506,26.349951],[-111.40459,26.265039],[-111.332129,26.125439],[-111.330371,25.931348],[-111.291602,25.789795],[-111.149561,25.572607],[-111.034424,25.526953],[-111.013623,25.420312],[-110.893945,25.144238],[-110.755664,24.99458],[-110.686768,24.867676],[-110.677246,24.788525],[-110.729004,24.671533],[-110.734521,24.589844],[-110.659326,24.341455],[-110.546973,24.21416],[-110.421484,24.183398],[-110.399658,24.165137],[-110.409619,24.130957],[-110.367432,24.100488],[-110.319971,24.139453],[-110.296826,24.194873],[-110.320898,24.25918],[-110.325098,24.305957],[-110.30376,24.339453],[-110.262891,24.344531],[-110.022803,24.174609],[-109.98252,24.109375],[-109.893164,24.033008],[-109.811328,23.939014],[-109.775977,23.864893],[-109.710547,23.803809],[-109.676563,23.661572],[-109.509619,23.5979],[-109.42085,23.480127],[-109.41499,23.405566],[-109.458057,23.214746],[-109.495703,23.159814],[-109.630469,23.078662],[-109.728418,22.981836],[-109.823047,22.922168],[-109.923437,22.885889],[-110.00625,22.894043],[-110.086035,23.005469],[-110.180615,23.341504],[-110.244092,23.412256],[-110.28877,23.517676],[-110.362695,23.604932],[-110.62998,23.737305],[-110.764893,23.877002],[-110.895557,23.970264],[-111.036182,24.105273],[-111.419336,24.329004],[-111.578223,24.443018],[-111.68291,24.555811],[-111.750391,24.55415],[-111.80249,24.542529],[-111.822266,24.573389],[-111.825195,24.631787],[-111.848242,24.670068],[-112.072559,24.840039],[-112.119043,24.934033],[-112.128516,25.043115],[-112.077979,25.323975],[-112.055762,25.488232],[-112.069873,25.572852],[-112.093359,25.584375],[-112.1146,25.630371],[-112.119775,25.765527],[-112.173828,25.912598],[-112.377246,26.213916],[-112.526074,26.273486],[-112.658398,26.316748],[-113.020752,26.583252],[-113.119238,26.716504],[-113.143213,26.792187],[-113.155811,26.94624],[-113.205762,26.856982],[-113.272266,26.790967],[-113.425879,26.795801],[-113.598535,26.721289],[-113.70127,26.791357],[-113.756641,26.87085],[-113.840967,26.966504],[-113.935937,26.985254],[-113.996484,26.987695],[-114.110059,27.105957],[-114.201855,27.143506],[-114.333398,27.158008],[-114.445264,27.218164],[-114.479687,27.283594],[-114.498291,27.376221],[-114.539893,27.431104],[-114.715625,27.539551],[-114.85874,27.65918],[-114.993506,27.736035],[-115.033203,27.798877],[-115.036475,27.841846],[-114.823535,27.829932],[-114.57002,27.783936],[-114.448486,27.796875],[-114.372705,27.841211],[-114.300586,27.872998],[-114.289062,27.838574],[-114.302246,27.775732],[-114.232666,27.718115],[-114.137207,27.671436],[-114.069336,27.675684],[-114.135059,27.726611],[-114.175391,27.830566],[-114.157324,27.867969],[-114.158398,27.919678],[-114.252637,27.908008],[-114.265869,27.934473],[-114.185254,28.013281],[-114.092725,28.221338],[-114.048486,28.426172],[-114.145508,28.60542],[-114.309229,28.729932],[-114.664014,29.09458],[-114.875928,29.281885],[-114.937305,29.351611],[-114.993506,29.384424],[-115.166357,29.427246],[-115.311182,29.531934],[-115.565283,29.680029],[-115.673828,29.756396],[-115.748682,29.935742],[-115.808301,29.960205],[-115.789551,30.08418],[-115.815625,30.303613],[-115.858203,30.359814],[-115.995801,30.414453],[-116.028564,30.563574],[-116.035352,30.705469],[-116.062158,30.80415],[-116.296289,30.970508],[-116.309619,31.050977],[-116.309668,31.127344],[-116.333447,31.202783],[-116.458496,31.360986],[-116.60957,31.499072],[-116.662158,31.564893],[-116.668457,31.698633],[-116.72207,31.73457],[-116.701709,31.743652],[-116.6521,31.740332],[-116.623877,31.758008],[-116.620801,31.851074],[-116.847998,31.997363],[-116.913672,32.198535],[-117.034766,32.305029],[-117.063135,32.343604],[-117.128271,32.53335]]],[[[-86.939648,20.30332],[-86.991406,20.272168],[-87.019434,20.382324],[-86.977979,20.489795],[-86.927832,20.551514],[-86.828564,20.558789],[-86.763281,20.579053],[-86.755029,20.551758],[-86.808789,20.468457],[-86.939648,20.30332]]],[[[-106.502246,21.61084],[-106.531348,21.528516],[-106.607031,21.561475],[-106.63418,21.613135],[-106.639355,21.697852],[-106.597363,21.712158],[-106.536426,21.676367],[-106.523828,21.652344],[-106.502246,21.61084]]],[[[-110.914453,18.741455],[-110.974805,18.720361],[-111.063672,18.781641],[-111.039941,18.830127],[-110.989404,18.863135],[-110.94209,18.801709],[-110.914453,18.741455]]],[[[-110.567383,25.003467],[-110.538867,24.891553],[-110.590186,24.908057],[-110.657422,24.968848],[-110.703418,25.046631],[-110.699268,25.081445],[-110.690234,25.087842],[-110.595215,25.042139],[-110.567383,25.003467]]],[[[-113.155615,29.052246],[-113.162793,29.034766],[-113.264746,29.096729],[-113.496338,29.307617],[-113.580615,29.413232],[-113.594385,29.462695],[-113.587207,29.573047],[-113.507959,29.559912],[-113.415918,29.485937],[-113.37583,29.41748],[-113.373828,29.338916],[-113.202148,29.301855],[-113.17793,29.131934],[-113.155615,29.052246]]],[[[-115.170605,28.069385],[-115.184277,28.037256],[-115.35293,28.103955],[-115.2604,28.220557],[-115.273975,28.342773],[-115.233545,28.368359],[-115.196973,28.327881],[-115.148535,28.172119],[-115.170605,28.069385]]],[[[-112.203076,29.005322],[-112.278418,28.769336],[-112.355273,28.773145],[-112.514062,28.847607],[-112.531006,28.893994],[-112.469824,29.167725],[-112.423535,29.203662],[-112.285059,29.24043],[-112.263428,29.206787],[-112.24873,29.125977],[-112.203076,29.005322]]],[[[-118.242773,28.941943],[-118.285498,28.90376],[-118.400098,29.112305],[-118.401367,29.162744],[-118.367822,29.187598],[-118.312305,29.182861],[-118.312061,29.130518],[-118.265527,29.086426],[-118.247363,29.043359],[-118.242773,28.941943]]],[[[-86.714014,21.239307],[-86.696289,21.191016],[-86.713623,21.196777],[-86.736377,21.233301],[-86.752881,21.278809],[-86.739062,21.27998],[-86.726904,21.264307],[-86.714014,21.239307]]],[[[-91.683691,18.677344],[-91.796143,18.654199],[-91.816113,18.675879],[-91.589111,18.778027],[-91.550293,18.773682],[-91.536719,18.76001],[-91.654248,18.711475],[-91.683691,18.677344]]],[[[-109.805078,24.151074],[-109.826758,24.147559],[-109.87793,24.200635],[-109.900488,24.330908],[-109.890332,24.344824],[-109.793799,24.183398],[-109.795605,24.163574],[-109.805078,24.151074]]],[[[-114.694141,31.705615],[-114.727246,31.701367],[-114.789209,31.747412],[-114.78457,31.789795],[-114.771094,31.794092],[-114.709082,31.756885],[-114.687939,31.724219],[-114.694141,31.705615]]],[[[-111.100293,26.020605],[-111.087744,25.984521],[-111.094434,25.974072],[-111.135254,25.99917],[-111.204492,25.849707],[-111.224658,25.835889],[-111.18291,26.040625],[-111.139258,26.069824],[-111.090869,26.075684],[-111.100293,26.020605]]],[[[-111.698877,24.393604],[-111.712305,24.346387],[-112.013281,24.533398],[-111.940869,24.551123],[-111.856836,24.537988],[-111.698877,24.393604]]],[[[-112.057275,24.545703],[-112.077344,24.53457],[-112.162891,24.650293],[-112.175488,24.72959],[-112.210498,24.763135],[-112.296777,24.789648],[-112.222314,24.951123],[-112.159424,25.285645],[-112.131689,25.224365],[-112.198389,24.885449],[-112.19502,24.841064],[-112.16377,24.799658],[-112.130225,24.72959],[-112.12627,24.654004],[-112.06748,24.583643],[-112.057275,24.545703]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Mauritius","SOV_A3":"MUS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Mauritius","ADM0_A3":"MUS","GEOU_DIF":0,"GEOUNIT":"Mauritius","GU_A3":"MUS","SU_DIF":0,"SUBUNIT":"Mauritius","SU_A3":"MUS","BRK_DIFF":0,"NAME":"Mauritius","NAME_LONG":"Mauritius","BRK_A3":"MUS","BRK_NAME":"Mauritius","BRK_GROUP":null,"ABBREV":"Mus.","POSTAL":"MU","FORMAL_EN":"Republic of Mauritius","FORMAL_FR":null,"NAME_CIAWF":"Mauritius","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Mauritius","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":3,"MAPCOLOR9":5,"MAPCOLOR13":7,"POP_EST":1265711,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":14048,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"MP","ISO_A2":"MU","ISO_A2_EH":"MU","ISO_A3":"MUS","ISO_A3_EH":"MUS","ISO_N3":"480","ISO_N3_EH":"480","UN_A3":"480","WB_A2":"MU","WB_A3":"MUS","WOE_ID":23424894,"WOE_ID_EH":23424894,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MUS","ADM0_DIFF":null,"ADM0_TLC":"MUS","ADM0_A3_US":"MUS","ADM0_A3_FR":"MUS","ADM0_A3_RU":"MUS","ADM0_A3_ES":"MUS","ADM0_A3_CN":"MUS","ADM0_A3_TW":"MUS","ADM0_A3_IN":"MUS","ADM0_A3_NP":"MUS","ADM0_A3_PK":"MUS","ADM0_A3_DE":"MUS","ADM0_A3_GB":"MUS","ADM0_A3_BR":"MUS","ADM0_A3_IL":"MUS","ADM0_A3_PS":"MUS","ADM0_A3_SA":"MUS","ADM0_A3_EG":"MUS","ADM0_A3_MA":"MUS","ADM0_A3_PT":"MUS","ADM0_A3_AR":"MUS","ADM0_A3_JP":"MUS","ADM0_A3_KO":"MUS","ADM0_A3_VN":"MUS","ADM0_A3_TR":"MUS","ADM0_A3_ID":"MUS","ADM0_A3_PL":"MUS","ADM0_A3_GR":"MUS","ADM0_A3_IT":"MUS","ADM0_A3_NL":"MUS","ADM0_A3_SE":"MUS","ADM0_A3_BD":"MUS","ADM0_A3_UA":"MUS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":4,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":57.565848,"LABEL_Y":-20.299506,"NE_ID":1159321079,"WIKIDATAID":"Q1027","NAME_AR":"موريشيوس","NAME_BN":"মরিশাস","NAME_DE":"Mauritius","NAME_EN":"Mauritius","NAME_ES":"Mauricio","NAME_FA":"موریس","NAME_FR":"Maurice","NAME_EL":"Μαυρίκιος","NAME_HE":"מאוריציוס","NAME_HI":"मॉरिशस","NAME_HU":"Mauritius","NAME_ID":"Mauritius","NAME_IT":"Mauritius","NAME_JA":"モーリシャス","NAME_KO":"모리셔스","NAME_NL":"Mauritius","NAME_PL":"Mauritius","NAME_PT":"Maurícia","NAME_RU":"Маврикий","NAME_SV":"Mauritius","NAME_TR":"Mauritius","NAME_UK":"Маврикій","NAME_UR":"موریشس","NAME_VI":"Mauritius","NAME_ZH":"毛里求斯","NAME_ZHT":"模里西斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[57.317676,-20.513184,57.791992,-19.989941],"geometry":{"type":"Polygon","coordinates":[[[57.65127,-20.484863],[57.524805,-20.513184],[57.383301,-20.503711],[57.32832,-20.45],[57.317676,-20.427637],[57.365137,-20.406445],[57.362109,-20.337598],[57.385742,-20.228613],[57.416016,-20.183789],[57.486426,-20.143945],[57.515039,-20.055957],[57.575781,-19.997168],[57.656543,-19.989941],[57.737207,-20.098438],[57.791992,-20.212598],[57.780664,-20.326953],[57.725,-20.368848],[57.706641,-20.434863],[57.65127,-20.484863]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":3,"SOVEREIGNT":"Mauritania","SOV_A3":"MRT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Mauritania","ADM0_A3":"MRT","GEOU_DIF":0,"GEOUNIT":"Mauritania","GU_A3":"MRT","SU_DIF":0,"SUBUNIT":"Mauritania","SU_A3":"MRT","BRK_DIFF":0,"NAME":"Mauritania","NAME_LONG":"Mauritania","BRK_A3":"MRT","BRK_NAME":"Mauritania","BRK_GROUP":null,"ABBREV":"Mrt.","POSTAL":"MR","FORMAL_EN":"Islamic Republic of Mauritania","FORMAL_FR":null,"NAME_CIAWF":"Mauritania","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Mauritania","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":3,"MAPCOLOR9":2,"MAPCOLOR13":1,"POP_EST":4525696,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":7600,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"MR","ISO_A2":"MR","ISO_A2_EH":"MR","ISO_A3":"MRT","ISO_A3_EH":"MRT","ISO_N3":"478","ISO_N3_EH":"478","UN_A3":"478","WB_A2":"MR","WB_A3":"MRT","WOE_ID":23424896,"WOE_ID_EH":23424896,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MRT","ADM0_DIFF":null,"ADM0_TLC":"MRT","ADM0_A3_US":"MRT","ADM0_A3_FR":"MRT","ADM0_A3_RU":"MRT","ADM0_A3_ES":"MRT","ADM0_A3_CN":"MRT","ADM0_A3_TW":"MRT","ADM0_A3_IN":"MRT","ADM0_A3_NP":"MRT","ADM0_A3_PK":"MRT","ADM0_A3_DE":"MRT","ADM0_A3_GB":"MRT","ADM0_A3_BR":"MRT","ADM0_A3_IL":"MRT","ADM0_A3_PS":"MRT","ADM0_A3_SA":"MRT","ADM0_A3_EG":"MRT","ADM0_A3_MA":"MRT","ADM0_A3_PT":"MRT","ADM0_A3_AR":"MRT","ADM0_A3_JP":"MRT","ADM0_A3_KO":"MRT","ADM0_A3_VN":"MRT","ADM0_A3_TR":"MRT","ADM0_A3_ID":"MRT","ADM0_A3_PL":"MRT","ADM0_A3_GR":"MRT","ADM0_A3_IT":"MRT","ADM0_A3_NL":"MRT","ADM0_A3_SE":"MRT","ADM0_A3_BD":"MRT","ADM0_A3_UA":"MRT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-9.740299,"LABEL_Y":19.587062,"NE_ID":1159321075,"WIKIDATAID":"Q1025","NAME_AR":"موريتانيا","NAME_BN":"মৌরিতানিয়া","NAME_DE":"Mauretanien","NAME_EN":"Mauritania","NAME_ES":"Mauritania","NAME_FA":"موریتانی","NAME_FR":"Mauritanie","NAME_EL":"Μαυριτανία","NAME_HE":"מאוריטניה","NAME_HI":"मॉरीतानिया","NAME_HU":"Mauritánia","NAME_ID":"Mauritania","NAME_IT":"Mauritania","NAME_JA":"モーリタニア","NAME_KO":"모리타니","NAME_NL":"Mauritanië","NAME_PL":"Mauretania","NAME_PT":"Mauritânia","NAME_RU":"Мавритания","NAME_SV":"Mauretanien","NAME_TR":"Moritanya","NAME_UK":"Мавританія","NAME_UR":"موریتانیہ","NAME_VI":"Mauritanie","NAME_ZH":"毛里塔尼亚","NAME_ZHT":"茅利塔尼亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-17.063965,14.745361,-4.822607,27.285937],"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.37334,19.706445],[-16.437549,19.609277],[-16.465967,19.646387],[-16.477002,19.710352],[-16.420166,19.801953],[-16.393262,19.849268],[-16.343652,19.866211],[-16.37334,19.706445]]],[[[-12.280615,14.809033],[-12.302539,14.816992],[-12.408691,14.889014],[-12.459863,14.974658],[-12.543555,15.039014],[-12.659619,15.08208],[-12.735254,15.13125],[-12.770312,15.18667],[-12.813184,15.223535],[-12.858496,15.242529],[-12.862646,15.262402],[-12.851904,15.289648],[-12.862695,15.34043],[-12.930859,15.453027],[-12.994336,15.504883],[-13.048535,15.496631],[-13.079297,15.510449],[-13.0979,15.535254],[-13.105273,15.571777],[-13.142383,15.60332],[-13.206445,15.616895],[-13.258008,15.700391],[-13.297021,15.853857],[-13.347559,15.973486],[-13.409668,16.05918],[-13.454102,16.091113],[-13.486963,16.097021],[-13.498145,16.110303],[-13.506982,16.135205],[-13.555518,16.144043],[-13.623535,16.118311],[-13.684668,16.126904],[-13.714941,16.168799],[-13.756641,16.17251],[-13.809814,16.138037],[-13.868457,16.148145],[-13.932617,16.202881],[-13.968164,16.257227],[-13.975049,16.311133],[-14.085645,16.418848],[-14.300098,16.580273],[-14.53374,16.655957],[-14.786719,16.645898],[-14.928613,16.653516],[-14.959521,16.678906],[-14.990625,16.676904],[-15.021924,16.647461],[-15.055225,16.640967],[-15.090576,16.657373],[-15.112646,16.644922],[-15.121436,16.603613],[-15.210547,16.582617],[-15.37998,16.581982],[-15.516699,16.556592],[-15.620801,16.506592],[-15.768213,16.485107],[-15.958984,16.492139],[-16.074023,16.510449],[-16.113281,16.540137],[-16.168359,16.54707],[-16.239014,16.531299],[-16.302295,16.451318],[-16.358105,16.307178],[-16.404346,16.224902],[-16.441016,16.204541],[-16.480078,16.097217],[-16.502051,15.917334],[-16.535254,15.838379],[-16.535742,16.286816],[-16.481299,16.454248],[-16.463623,16.601514],[-16.34668,16.926416],[-16.207471,17.192578],[-16.078906,17.54585],[-16.030322,17.887939],[-16.046729,18.223145],[-16.084961,18.521191],[-16.150098,18.718164],[-16.213086,19.00332],[-16.305908,19.153809],[-16.476172,19.285059],[-16.514453,19.361963],[-16.474805,19.390625],[-16.371289,19.410254],[-16.305273,19.512646],[-16.444873,19.473145],[-16.283398,19.787158],[-16.233203,20.000977],[-16.241162,20.14126],[-16.210449,20.22793],[-16.33374,20.415869],[-16.429785,20.652344],[-16.479199,20.689795],[-16.53042,20.709521],[-16.534912,20.654004],[-16.562695,20.60415],[-16.62251,20.63418],[-16.728369,20.806152],[-16.876074,21.086133],[-16.92793,21.114795],[-16.971143,21.076465],[-16.998242,21.039697],[-17.048047,20.806152],[-17.063965,20.898828],[-17.042383,21.008008],[-17.005908,21.142432],[-16.964551,21.329248],[-16.836328,21.329395],[-16.607031,21.329639],[-16.377734,21.329932],[-16.148438,21.330225],[-15.919141,21.330469],[-15.689795,21.330762],[-15.460547,21.331055],[-15.231201,21.331299],[-15.001904,21.331592],[-14.772607,21.331885],[-14.543262,21.332129],[-14.313965,21.332422],[-14.084668,21.332715],[-13.855371,21.332959],[-13.626025,21.333252],[-13.396729,21.333545],[-13.167432,21.333789],[-13.016211,21.333936],[-13.025098,21.466797],[-13.032227,21.57207],[-13.041748,21.713818],[-13.051221,21.854785],[-13.060645,21.995752],[-13.06958,22.128174],[-13.078467,22.260449],[-13.086768,22.383252],[-13.094336,22.495996],[-13.107324,22.560742],[-13.155957,22.689307],[-13.166504,22.753223],[-13.153271,22.820508],[-13.120898,22.884082],[-13.031494,23.000244],[-12.895996,23.089551],[-12.7396,23.192725],[-12.62041,23.271338],[-12.559375,23.29082],[-12.3729,23.318018],[-12.226172,23.37749],[-12.08335,23.435449],[-12.023438,23.467578],[-12.016309,23.576465],[-12.016309,23.6979],[-12.016309,23.834033],[-12.016309,23.970215],[-12.016309,24.106348],[-12.016309,24.24248],[-12.016309,24.378662],[-12.016309,24.514795],[-12.016309,24.650977],[-12.016309,24.787109],[-12.016309,24.923242],[-12.016309,25.059375],[-12.016309,25.195557],[-12.016309,25.331689],[-12.016309,25.467871],[-12.016309,25.604004],[-12.016309,25.740137],[-12.016309,25.876318],[-12.016309,25.99541],[-11.86665,25.99541],[-11.680371,25.99541],[-11.494043,25.99541],[-11.307715,25.99541],[-11.121387,25.995459],[-10.935107,25.995459],[-10.748779,25.995459],[-10.562451,25.995459],[-10.376123,25.995459],[-10.189795,25.995459],[-10.003516,25.995459],[-9.817187,25.995459],[-9.630859,25.995508],[-9.444531,25.995508],[-9.258203,25.995508],[-9.071924,25.995508],[-8.885645,25.995508],[-8.682227,25.995508],[-8.682129,26.109473],[-8.682129,26.273193],[-8.682324,26.497705],[-8.682617,26.723145],[-8.682861,26.921338],[-8.683105,27.119287],[-8.68335,27.285937],[-8.495312,27.175342],[-8.307275,27.064746],[-8.119238,26.95415],[-7.931152,26.843555],[-7.743115,26.732959],[-7.555078,26.622363],[-7.366992,26.511768],[-7.178906,26.401172],[-6.990869,26.290576],[-6.802832,26.17998],[-6.614746,26.069434],[-6.426709,25.958789],[-6.238672,25.848193],[-6.050586,25.737598],[-5.862549,25.627002],[-5.674512,25.516406],[-5.516943,25.423779],[-5.275,25.274512],[-5.049512,25.135449],[-4.822607,24.995605],[-5.1729,24.99541],[-5.640771,24.995166],[-5.959814,24.994971],[-6.287207,24.994824],[-6.594092,24.994629],[-6.567383,24.766797],[-6.538965,24.518164],[-6.510449,24.269482],[-6.482031,24.020801],[-6.453516,23.772168],[-6.425049,23.523486],[-6.396582,23.274805],[-6.368115,23.026123],[-6.339648,22.77749],[-6.311133,22.528857],[-6.282715,22.280176],[-6.254199,22.031543],[-6.225732,21.782861],[-6.197266,21.53418],[-6.168799,21.285547],[-6.140332,21.036865],[-6.111816,20.788184],[-6.083398,20.539502],[-6.054883,20.290869],[-6.026416,20.042187],[-5.997949,19.793506],[-5.969482,19.544873],[-5.941016,19.296191],[-5.9125,19.04751],[-5.884082,18.798877],[-5.855566,18.550244],[-5.8271,18.301563],[-5.798633,18.05293],[-5.770166,17.804248],[-5.741699,17.555566],[-5.713184,17.306885],[-5.684766,17.058252],[-5.65625,16.80957],[-5.628662,16.568652],[-5.509619,16.442041],[-5.359912,16.282861],[-5.403564,16.05791],[-5.455615,15.789404],[-5.5125,15.496289],[-5.723877,15.496289],[-5.927832,15.496289],[-6.131787,15.49624],[-6.335742,15.496191],[-6.539648,15.496191],[-6.743604,15.496191],[-6.947559,15.496191],[-7.151514,15.496191],[-7.355469,15.496191],[-7.559375,15.496143],[-7.763379,15.496143],[-7.967285,15.496143],[-8.17124,15.496143],[-8.375195,15.496143],[-8.57915,15.496143],[-8.783105,15.496094],[-8.987061,15.496094],[-9.176807,15.496094],[-9.293701,15.502832],[-9.335449,15.525684],[-9.350586,15.677393],[-9.385352,15.667627],[-9.426562,15.623047],[-9.447705,15.574854],[-9.440332,15.51167],[-9.446924,15.458203],[-9.577832,15.437256],[-9.755078,15.401465],[-9.941406,15.373779],[-10.129541,15.383691],[-10.19375,15.396045],[-10.262109,15.416016],[-10.411816,15.437939],[-10.493164,15.439795],[-10.586572,15.434863],[-10.696582,15.422656],[-10.731982,15.394922],[-10.815088,15.281738],[-10.895605,15.150488],[-10.948242,15.151123],[-11.007422,15.2229],[-11.169336,15.358643],[-11.365625,15.536768],[-11.455225,15.625391],[-11.502686,15.636816],[-11.596729,15.573242],[-11.675879,15.512061],[-11.760156,15.425537],[-11.798437,15.342725],[-11.82876,15.244873],[-11.842236,15.129395],[-11.872852,14.995166],[-11.940918,14.886914],[-12.021582,14.804932],[-12.081543,14.766357],[-12.104687,14.745361],[-12.280615,14.809033]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":5,"SOVEREIGNT":"Malta","SOV_A3":"MLT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Malta","ADM0_A3":"MLT","GEOU_DIF":0,"GEOUNIT":"Malta","GU_A3":"MLT","SU_DIF":0,"SUBUNIT":"Malta","SU_A3":"MLT","BRK_DIFF":0,"NAME":"Malta","NAME_LONG":"Malta","BRK_A3":"MLT","BRK_NAME":"Malta","BRK_GROUP":null,"ABBREV":"Malta","POSTAL":"M","FORMAL_EN":"Republic of Malta","FORMAL_FR":null,"NAME_CIAWF":"Malta","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Malta","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":502653,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":14989,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"MT","ISO_A2":"MT","ISO_A2_EH":"MT","ISO_A3":"MLT","ISO_A3_EH":"MLT","ISO_N3":"470","ISO_N3_EH":"470","UN_A3":"470","WB_A2":"MT","WB_A3":"MLT","WOE_ID":23424897,"WOE_ID_EH":23424897,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MLT","ADM0_DIFF":null,"ADM0_TLC":"MLT","ADM0_A3_US":"MLT","ADM0_A3_FR":"MLT","ADM0_A3_RU":"MLT","ADM0_A3_ES":"MLT","ADM0_A3_CN":"MLT","ADM0_A3_TW":"MLT","ADM0_A3_IN":"MLT","ADM0_A3_NP":"MLT","ADM0_A3_PK":"MLT","ADM0_A3_DE":"MLT","ADM0_A3_GB":"MLT","ADM0_A3_BR":"MLT","ADM0_A3_IL":"MLT","ADM0_A3_PS":"MLT","ADM0_A3_SA":"MLT","ADM0_A3_EG":"MLT","ADM0_A3_MA":"MLT","ADM0_A3_PT":"MLT","ADM0_A3_AR":"MLT","ADM0_A3_JP":"MLT","ADM0_A3_KO":"MLT","ADM0_A3_VN":"MLT","ADM0_A3_TR":"MLT","ADM0_A3_ID":"MLT","ADM0_A3_PL":"MLT","ADM0_A3_GR":"MLT","ADM0_A3_IT":"MLT","ADM0_A3_NL":"MLT","ADM0_A3_SE":"MLT","ADM0_A3_BD":"MLT","ADM0_A3_UA":"MLT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Middle East & North Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":3,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":14.433005,"LABEL_Y":35.892886,"NE_ID":1159321065,"WIKIDATAID":"Q233","NAME_AR":"مالطا","NAME_BN":"মাল্টা","NAME_DE":"Malta","NAME_EN":"Malta","NAME_ES":"Malta","NAME_FA":"مالت","NAME_FR":"Malte","NAME_EL":"Μάλτα","NAME_HE":"מלטה","NAME_HI":"माल्टा","NAME_HU":"Málta","NAME_ID":"Malta","NAME_IT":"Malta","NAME_JA":"マルタ","NAME_KO":"몰타","NAME_NL":"Malta","NAME_PL":"Malta","NAME_PT":"Malta","NAME_RU":"Мальта","NAME_SV":"Malta","NAME_TR":"Malta","NAME_UK":"Мальта","NAME_UR":"مالٹا","NAME_VI":"Malta","NAME_ZH":"马耳他","NAME_ZHT":"馬耳他","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[14.180371,35.820215,14.566211,36.075781],"geometry":{"type":"MultiPolygon","coordinates":[[[[14.566211,35.852734],[14.532715,35.820215],[14.436426,35.82168],[14.352344,35.872266],[14.35127,35.978418],[14.44834,35.957422],[14.537012,35.886279],[14.566211,35.852734]]],[[[14.313477,36.027588],[14.253613,36.012158],[14.194238,36.042236],[14.180371,36.0604],[14.263281,36.075781],[14.303711,36.062305],[14.320898,36.03623],[14.313477,36.027588]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Mali","SOV_A3":"MLI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Mali","ADM0_A3":"MLI","GEOU_DIF":0,"GEOUNIT":"Mali","GU_A3":"MLI","SU_DIF":0,"SUBUNIT":"Mali","SU_A3":"MLI","BRK_DIFF":0,"NAME":"Mali","NAME_LONG":"Mali","BRK_A3":"MLI","BRK_NAME":"Mali","BRK_GROUP":null,"ABBREV":"Mali","POSTAL":"ML","FORMAL_EN":"Republic of Mali","FORMAL_FR":null,"NAME_CIAWF":"Mali","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Mali","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":7,"POP_EST":19658031,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":17279,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"ML","ISO_A2":"ML","ISO_A2_EH":"ML","ISO_A3":"MLI","ISO_A3_EH":"MLI","ISO_N3":"466","ISO_N3_EH":"466","UN_A3":"466","WB_A2":"ML","WB_A3":"MLI","WOE_ID":23424891,"WOE_ID_EH":23424891,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MLI","ADM0_DIFF":null,"ADM0_TLC":"MLI","ADM0_A3_US":"MLI","ADM0_A3_FR":"MLI","ADM0_A3_RU":"MLI","ADM0_A3_ES":"MLI","ADM0_A3_CN":"MLI","ADM0_A3_TW":"MLI","ADM0_A3_IN":"MLI","ADM0_A3_NP":"MLI","ADM0_A3_PK":"MLI","ADM0_A3_DE":"MLI","ADM0_A3_GB":"MLI","ADM0_A3_BR":"MLI","ADM0_A3_IL":"MLI","ADM0_A3_PS":"MLI","ADM0_A3_SA":"MLI","ADM0_A3_EG":"MLI","ADM0_A3_MA":"MLI","ADM0_A3_PT":"MLI","ADM0_A3_AR":"MLI","ADM0_A3_JP":"MLI","ADM0_A3_KO":"MLI","ADM0_A3_VN":"MLI","ADM0_A3_TR":"MLI","ADM0_A3_ID":"MLI","ADM0_A3_PL":"MLI","ADM0_A3_GR":"MLI","ADM0_A3_IT":"MLI","ADM0_A3_NL":"MLI","ADM0_A3_SE":"MLI","ADM0_A3_BD":"MLI","ADM0_A3_UA":"MLI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7,"LABEL_X":-2.038455,"LABEL_Y":18.692713,"NE_ID":1159321063,"WIKIDATAID":"Q912","NAME_AR":"مالي","NAME_BN":"মালি","NAME_DE":"Mali","NAME_EN":"Mali","NAME_ES":"Malí","NAME_FA":"مالی","NAME_FR":"Mali","NAME_EL":"Μάλι","NAME_HE":"מאלי","NAME_HI":"माली","NAME_HU":"Mali","NAME_ID":"Mali","NAME_IT":"Mali","NAME_JA":"マリ共和国","NAME_KO":"말리","NAME_NL":"Mali","NAME_PL":"Mali","NAME_PT":"Mali","NAME_RU":"Мали","NAME_SV":"Mali","NAME_TR":"Mali","NAME_UK":"Малі","NAME_UR":"مالی","NAME_VI":"Mali","NAME_ZH":"马里","NAME_ZHT":"馬利共和國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-12.280615,10.143262,4.234668,24.995605],"geometry":{"type":"Polygon","coordinates":[[[-11.389404,12.404395],[-11.382422,12.479248],[-11.448779,12.531934],[-11.450586,12.557715],[-11.444092,12.627588],[-11.414355,12.775488],[-11.417432,12.831885],[-11.390381,12.941992],[-11.433936,12.991602],[-11.444141,13.028223],[-11.492822,13.086963],[-11.548779,13.170264],[-11.56167,13.236963],[-11.581348,13.290039],[-11.634961,13.369873],[-11.674463,13.382373],[-11.758252,13.394531],[-11.772217,13.36709],[-11.803369,13.327295],[-11.831689,13.31582],[-11.877783,13.364551],[-11.895215,13.406299],[-11.89458,13.444434],[-11.95708,13.510889],[-12.054199,13.633057],[-12.044141,13.733887],[-11.98418,13.788086],[-11.966357,13.828955],[-11.960889,13.875293],[-11.988086,13.930762],[-12.020117,13.974658],[-12.011182,14.071826],[-12.019189,14.206494],[-12.068359,14.274219],[-12.112891,14.323291],[-12.175244,14.37666],[-12.228418,14.458594],[-12.206836,14.571143],[-12.186523,14.648145],[-12.280615,14.809033],[-12.104687,14.745361],[-12.081543,14.766357],[-12.021582,14.804932],[-11.940918,14.886914],[-11.872852,14.995166],[-11.842236,15.129395],[-11.82876,15.244873],[-11.798437,15.342725],[-11.760156,15.425537],[-11.675879,15.512061],[-11.596729,15.573242],[-11.502686,15.636816],[-11.455225,15.625391],[-11.365625,15.536768],[-11.169336,15.358643],[-11.007422,15.2229],[-10.948242,15.151123],[-10.895605,15.150488],[-10.815088,15.281738],[-10.731982,15.394922],[-10.696582,15.422656],[-10.586572,15.434863],[-10.493164,15.439795],[-10.411816,15.437939],[-10.262109,15.416016],[-10.19375,15.396045],[-10.129541,15.383691],[-9.941406,15.373779],[-9.755078,15.401465],[-9.577832,15.437256],[-9.446924,15.458203],[-9.440332,15.51167],[-9.447705,15.574854],[-9.426562,15.623047],[-9.385352,15.667627],[-9.350586,15.677393],[-9.335449,15.525684],[-9.293701,15.502832],[-9.176807,15.496094],[-8.987061,15.496094],[-8.783105,15.496094],[-8.57915,15.496143],[-8.375195,15.496143],[-8.17124,15.496143],[-7.967285,15.496143],[-7.763379,15.496143],[-7.559375,15.496143],[-7.355469,15.496191],[-7.151514,15.496191],[-6.947559,15.496191],[-6.743604,15.496191],[-6.539648,15.496191],[-6.335742,15.496191],[-6.131787,15.49624],[-5.927832,15.496289],[-5.723877,15.496289],[-5.5125,15.496289],[-5.455615,15.789404],[-5.403564,16.05791],[-5.359912,16.282861],[-5.509619,16.442041],[-5.628662,16.568652],[-5.65625,16.80957],[-5.684766,17.058252],[-5.713184,17.306885],[-5.741699,17.555566],[-5.770166,17.804248],[-5.798633,18.05293],[-5.8271,18.301563],[-5.855566,18.550244],[-5.884082,18.798877],[-5.9125,19.04751],[-5.941016,19.296191],[-5.969482,19.544873],[-5.997949,19.793506],[-6.026416,20.042187],[-6.054883,20.290869],[-6.083398,20.539502],[-6.111816,20.788184],[-6.140332,21.036865],[-6.168799,21.285547],[-6.197266,21.53418],[-6.225732,21.782861],[-6.254199,22.031543],[-6.282715,22.280176],[-6.311133,22.528857],[-6.339648,22.77749],[-6.368115,23.026123],[-6.396582,23.274805],[-6.425049,23.523486],[-6.453516,23.772168],[-6.482031,24.020801],[-6.510449,24.269482],[-6.538965,24.518164],[-6.567383,24.766797],[-6.594092,24.994629],[-6.287207,24.994824],[-5.959814,24.994971],[-5.640771,24.995166],[-5.1729,24.99541],[-4.822607,24.995605],[-4.516992,24.804492],[-4.240332,24.623535],[-3.912793,24.409473],[-3.585352,24.195361],[-3.257861,23.98125],[-2.930371,23.767139],[-2.60293,23.553027],[-2.275391,23.338867],[-1.9479,23.124805],[-1.62041,22.910645],[-1.292969,22.696533],[-0.965479,22.482471],[-0.637988,22.268311],[-0.310547,22.054199],[0.016992,21.840137],[0.344434,21.625977],[0.671875,21.411865],[0.999414,21.197754],[1.145508,21.102246],[1.15918,21.0625],[1.172754,20.981982],[1.164062,20.891309],[1.165723,20.817432],[1.208887,20.767285],[1.290234,20.713574],[1.610645,20.555566],[1.636035,20.524365],[1.647363,20.458838],[1.685449,20.378369],[1.753223,20.331592],[1.832422,20.296875],[1.928809,20.272705],[2.219336,20.247803],[2.280859,20.210303],[2.406152,20.063867],[2.474219,20.03501],[2.667773,19.99292],[2.80791,19.969434],[2.865723,19.955957],[2.99248,19.916602],[3.130273,19.850195],[3.203711,19.789697],[3.203418,19.770752],[3.202734,19.718311],[3.20166,19.5604],[3.227051,19.473584],[3.255859,19.410938],[3.254395,19.372607],[3.219629,19.34541],[3.192383,19.312061],[3.177246,19.268164],[3.137891,19.212158],[3.106055,19.150098],[3.119727,19.103174],[3.174219,19.0729],[3.255957,19.013281],[3.323438,18.988379],[3.356445,18.986621],[3.400879,18.988428],[3.43877,18.996143],[3.683496,19.041602],[3.910156,19.08374],[4.227637,19.142773],[4.228223,18.968066],[4.229004,18.704346],[4.22998,18.410596],[4.230859,18.139453],[4.231934,17.830518],[4.232715,17.582178],[4.233691,17.288428],[4.234668,16.996387],[4.20293,16.962695],[4.191211,16.798193],[4.182129,16.581787],[4.121289,16.357715],[4.014844,16.192725],[3.976172,16.035547],[3.94707,15.945654],[3.907227,15.896826],[3.897949,15.837988],[3.876953,15.755273],[3.842969,15.701709],[3.816504,15.674023],[3.70957,15.641699],[3.520508,15.483105],[3.504297,15.356348],[3.289062,15.391113],[3.060156,15.427197],[3.029395,15.424854],[3.010547,15.408301],[3.001074,15.340967],[2.689648,15.329883],[2.420801,15.32041],[2.088184,15.309375],[1.859375,15.301709],[1.569141,15.286475],[1.300195,15.272266],[1.121289,15.126123],[0.960059,14.986914],[0.947461,14.982129],[0.718652,14.954883],[0.433008,14.979004],[0.28623,14.980176],[0.228711,14.963672],[0.21748,14.911475],[0.007324,14.984814],[-0.235889,15.059424],[-0.40542,15.0125],[-0.432275,15.028516],[-0.454492,15.059668],[-0.536523,15.077881],[-0.666455,15.069775],[-0.760449,15.047754],[-0.907959,14.937402],[-1.019189,14.841357],[-1.049561,14.819531],[-1.20498,14.761523],[-1.493652,14.626074],[-1.657324,14.526807],[-1.695068,14.508496],[-1.767773,14.486035],[-1.879785,14.481494],[-1.973047,14.456543],[-2.057129,14.194629],[-2.113232,14.168457],[-2.457227,14.274121],[-2.526904,14.258301],[-2.586719,14.227588],[-2.778857,14.07373],[-2.873926,13.950732],[-2.925879,13.786768],[-2.918506,13.736377],[-2.91709,13.679492],[-2.95083,13.648438],[-2.997217,13.637109],[-3.038672,13.639111],[-3.198437,13.672852],[-3.248633,13.65835],[-3.270166,13.577441],[-3.266748,13.400781],[-3.301758,13.280762],[-3.396729,13.243701],[-3.469922,13.196387],[-3.527637,13.182715],[-3.575781,13.194189],[-3.853467,13.373535],[-3.947314,13.402197],[-4.051172,13.382422],[-4.151025,13.306201],[-4.196191,13.256152],[-4.258691,13.197314],[-4.328711,13.119043],[-4.310254,13.05249],[-4.260645,12.975342],[-4.225244,12.879492],[-4.2271,12.793701],[-4.480615,12.672217],[-4.459863,12.630371],[-4.421924,12.581592],[-4.421582,12.493066],[-4.428711,12.337598],[-4.479883,12.281787],[-4.546045,12.226465],[-4.586914,12.155029],[-4.627246,12.120215],[-4.699316,12.076172],[-4.797949,12.032129],[-4.968994,11.993311],[-5.105908,11.967529],[-5.15752,11.942383],[-5.230176,11.890283],[-5.288135,11.82793],[-5.302002,11.760449],[-5.290527,11.683301],[-5.270312,11.619873],[-5.244775,11.576758],[-5.229395,11.522461],[-5.250244,11.375781],[-5.299854,11.205957],[-5.347412,11.130273],[-5.424219,11.088721],[-5.490479,11.042383],[-5.468555,10.931055],[-5.45708,10.771387],[-5.475684,10.643945],[-5.479004,10.565088],[-5.507031,10.483447],[-5.523535,10.426025],[-5.556592,10.439941],[-5.694287,10.433203],[-5.843848,10.389551],[-5.896191,10.354736],[-5.907568,10.307227],[-5.940674,10.275098],[-5.988672,10.239111],[-6.03457,10.194824],[-6.117188,10.201904],[-6.196875,10.232129],[-6.238379,10.261621],[-6.241309,10.279199],[-6.21499,10.322363],[-6.192627,10.369434],[-6.190674,10.400293],[-6.217773,10.47627],[-6.239746,10.558105],[-6.230664,10.59751],[-6.250244,10.71792],[-6.261133,10.724072],[-6.365625,10.692822],[-6.40415,10.685107],[-6.425879,10.671777],[-6.432617,10.64873],[-6.40752,10.572363],[-6.423926,10.559131],[-6.482617,10.56123],[-6.5646,10.586426],[-6.65415,10.656445],[-6.676367,10.633789],[-6.686133,10.578027],[-6.691992,10.512012],[-6.669336,10.392187],[-6.693262,10.349463],[-6.753223,10.357129],[-6.833643,10.356982],[-6.903809,10.345068],[-6.950342,10.342334],[-6.979492,10.299561],[-6.991748,10.251855],[-6.963818,10.19873],[-6.968164,10.176221],[-6.989453,10.155664],[-7.01709,10.143262],[-7.039746,10.144775],[-7.104883,10.203516],[-7.182324,10.225684],[-7.363184,10.259375],[-7.385059,10.340137],[-7.414795,10.341309],[-7.456543,10.383936],[-7.497949,10.439795],[-7.532812,10.436816],[-7.562109,10.42124],[-7.661133,10.427441],[-7.749072,10.342285],[-7.814209,10.236572],[-7.884082,10.185742],[-7.960938,10.163477],[-7.990625,10.1625],[-7.974463,10.229541],[-7.985693,10.278418],[-8.007275,10.321875],[-8.231494,10.437988],[-8.26665,10.485986],[-8.301562,10.617578],[-8.324121,10.749512],[-8.32168,10.826953],[-8.306348,10.896094],[-8.312744,10.949756],[-8.337402,10.990625],[-8.404492,11.029932],[-8.474707,11.048389],[-8.563525,10.99668],[-8.606201,10.986963],[-8.646191,10.990479],[-8.666699,11.009473],[-8.663916,11.03584],[-8.567285,11.177002],[-8.520312,11.235937],[-8.463525,11.280713],[-8.425293,11.304736],[-8.400684,11.339404],[-8.398535,11.366553],[-8.407471,11.386279],[-8.470703,11.412207],[-8.56875,11.478076],[-8.621143,11.485107],[-8.664941,11.51499],[-8.711426,11.617773],[-8.733105,11.6375],[-8.779736,11.648242],[-8.822021,11.673242],[-8.820068,11.807129],[-8.818311,11.92251],[-8.913867,12.108545],[-8.95083,12.225586],[-8.998926,12.345898],[-9.043066,12.402344],[-9.120459,12.449951],[-9.215527,12.482861],[-9.3,12.490283],[-9.365186,12.479297],[-9.395361,12.464648],[-9.393652,12.442236],[-9.34082,12.366016],[-9.331543,12.32373],[-9.340186,12.282764],[-9.358105,12.25542],[-9.40498,12.252441],[-9.486816,12.228662],[-9.587744,12.182471],[-9.658301,12.143115],[-9.714746,12.04248],[-9.754004,12.029932],[-9.820703,12.04248],[-10.010645,12.116455],[-10.16709,12.177441],[-10.274854,12.212646],[-10.339893,12.190283],[-10.372754,12.179541],[-10.46582,12.138672],[-10.589502,11.990283],[-10.618994,11.941211],[-10.643701,11.925537],[-10.677344,11.899414],[-10.709229,11.89873],[-10.734912,11.916455],[-10.743018,11.927246],[-10.806494,12.034277],[-10.876172,12.151855],[-10.933203,12.205176],[-11.004541,12.20752],[-11.06582,12.170801],[-11.129248,12.09502],[-11.209668,12.024854],[-11.260693,12.004053],[-11.305176,12.01543],[-11.414648,12.104004],[-11.492432,12.166943],[-11.502197,12.198633],[-11.474561,12.247168],[-11.447559,12.319238],[-11.418066,12.377686],[-11.389404,12.404395]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":5,"SOVEREIGNT":"Maldives","SOV_A3":"MDV","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Maldives","ADM0_A3":"MDV","GEOU_DIF":0,"GEOUNIT":"Maldives","GU_A3":"MDV","SU_DIF":0,"SUBUNIT":"Maldives","SU_A3":"MDV","BRK_DIFF":0,"NAME":"Maldives","NAME_LONG":"Maldives","BRK_A3":"MDV","BRK_NAME":"Maldives","BRK_GROUP":null,"ABBREV":"Mald.","POSTAL":"MV","FORMAL_EN":"Republic of Maldives","FORMAL_FR":null,"NAME_CIAWF":"Maldives","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Maldives","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":3,"MAPCOLOR9":1,"MAPCOLOR13":7,"POP_EST":530953,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":5642,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"MV","ISO_A2":"MV","ISO_A2_EH":"MV","ISO_A3":"MDV","ISO_A3_EH":"MDV","ISO_N3":"462","ISO_N3_EH":"462","UN_A3":"462","WB_A2":"MV","WB_A3":"MDV","WOE_ID":23424899,"WOE_ID_EH":23424899,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MDV","ADM0_DIFF":null,"ADM0_TLC":"MDV","ADM0_A3_US":"MDV","ADM0_A3_FR":"MDV","ADM0_A3_RU":"MDV","ADM0_A3_ES":"MDV","ADM0_A3_CN":"MDV","ADM0_A3_TW":"MDV","ADM0_A3_IN":"MDV","ADM0_A3_NP":"MDV","ADM0_A3_PK":"MDV","ADM0_A3_DE":"MDV","ADM0_A3_GB":"MDV","ADM0_A3_BR":"MDV","ADM0_A3_IL":"MDV","ADM0_A3_PS":"MDV","ADM0_A3_SA":"MDV","ADM0_A3_EG":"MDV","ADM0_A3_MA":"MDV","ADM0_A3_PT":"MDV","ADM0_A3_AR":"MDV","ADM0_A3_JP":"MDV","ADM0_A3_KO":"MDV","ADM0_A3_VN":"MDV","ADM0_A3_TR":"MDV","ADM0_A3_ID":"MDV","ADM0_A3_PL":"MDV","ADM0_A3_GR":"MDV","ADM0_A3_IT":"MDV","ADM0_A3_NL":"MDV","ADM0_A3_SE":"MDV","ADM0_A3_BD":"MDV","ADM0_A3_UA":"MDV","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":73.507554,"LABEL_Y":4.174441,"NE_ID":1159321053,"WIKIDATAID":"Q826","NAME_AR":"المالديف","NAME_BN":"মালদ্বীপ","NAME_DE":"Malediven","NAME_EN":"Maldives","NAME_ES":"Maldivas","NAME_FA":"مالدیو","NAME_FR":"Maldives","NAME_EL":"Μαλδίβες","NAME_HE":"האיים המלדיביים","NAME_HI":"मालदीव","NAME_HU":"Maldív-szigetek","NAME_ID":"Maladewa","NAME_IT":"Maldive","NAME_JA":"モルディブ","NAME_KO":"몰디브","NAME_NL":"Maldiven","NAME_PL":"Malediwy","NAME_PT":"Maldivas","NAME_RU":"Мальдивы","NAME_SV":"Maldiverna","NAME_TR":"Maldivler","NAME_UK":"Мальдіви","NAME_UR":"مالدیپ","NAME_VI":"Maldives","NAME_ZH":"马尔代夫","NAME_ZHT":"馬爾地夫","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[73.382031,3.229395,73.52832,4.247656],"geometry":{"type":"MultiPolygon","coordinates":[[[[73.416602,3.23125],[73.395313,3.229395],[73.382031,3.246484],[73.384961,3.271387],[73.401563,3.28877],[73.427734,3.289844],[73.442773,3.274316],[73.434961,3.250146],[73.416602,3.23125]]],[[[73.512207,4.164551],[73.494824,4.155176],[73.478613,4.158936],[73.473047,4.170703],[73.481152,4.188135],[73.494727,4.210449],[73.504102,4.234619],[73.517773,4.247656],[73.52832,4.243311],[73.527148,4.229687],[73.522168,4.211035],[73.519043,4.186865],[73.512207,4.164551]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Malaysia","SOV_A3":"MYS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Malaysia","ADM0_A3":"MYS","GEOU_DIF":0,"GEOUNIT":"Malaysia","GU_A3":"MYS","SU_DIF":0,"SUBUNIT":"Malaysia","SU_A3":"MYS","BRK_DIFF":0,"NAME":"Malaysia","NAME_LONG":"Malaysia","BRK_A3":"MYS","BRK_NAME":"Malaysia","BRK_GROUP":null,"ABBREV":"Malay.","POSTAL":"MY","FORMAL_EN":"Malaysia","FORMAL_FR":null,"NAME_CIAWF":"Malaysia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Malaysia","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":4,"MAPCOLOR9":3,"MAPCOLOR13":6,"POP_EST":31949777,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":364681,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"MY","ISO_A2":"MY","ISO_A2_EH":"MY","ISO_A3":"MYS","ISO_A3_EH":"MYS","ISO_N3":"458","ISO_N3_EH":"458","UN_A3":"458","WB_A2":"MY","WB_A3":"MYS","WOE_ID":23424901,"WOE_ID_EH":23424901,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MYS","ADM0_DIFF":null,"ADM0_TLC":"MYS","ADM0_A3_US":"MYS","ADM0_A3_FR":"MYS","ADM0_A3_RU":"MYS","ADM0_A3_ES":"MYS","ADM0_A3_CN":"MYS","ADM0_A3_TW":"MYS","ADM0_A3_IN":"MYS","ADM0_A3_NP":"MYS","ADM0_A3_PK":"MYS","ADM0_A3_DE":"MYS","ADM0_A3_GB":"MYS","ADM0_A3_BR":"MYS","ADM0_A3_IL":"MYS","ADM0_A3_PS":"MYS","ADM0_A3_SA":"MYS","ADM0_A3_EG":"MYS","ADM0_A3_MA":"MYS","ADM0_A3_PT":"MYS","ADM0_A3_AR":"MYS","ADM0_A3_JP":"MYS","ADM0_A3_KO":"MYS","ADM0_A3_VN":"MYS","ADM0_A3_TR":"MYS","ADM0_A3_ID":"MYS","ADM0_A3_PL":"MYS","ADM0_A3_GR":"MYS","ADM0_A3_IT":"MYS","ADM0_A3_NL":"MYS","ADM0_A3_SE":"MYS","ADM0_A3_BD":"MYS","ADM0_A3_UA":"MYS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":113.83708,"LABEL_Y":2.528667,"NE_ID":1159321083,"WIKIDATAID":"Q833","NAME_AR":"ماليزيا","NAME_BN":"মালয়েশিয়া","NAME_DE":"Malaysia","NAME_EN":"Malaysia","NAME_ES":"Malasia","NAME_FA":"مالزی","NAME_FR":"Malaisie","NAME_EL":"Μαλαισία","NAME_HE":"מלזיה","NAME_HI":"मलेशिया","NAME_HU":"Malajzia","NAME_ID":"Malaysia","NAME_IT":"Malaysia","NAME_JA":"マレーシア","NAME_KO":"말레이시아","NAME_NL":"Maleisië","NAME_PL":"Malezja","NAME_PT":"Malásia","NAME_RU":"Малайзия","NAME_SV":"Malaysia","NAME_TR":"Malezya","NAME_UK":"Малайзія","NAME_UR":"ملائیشیا","NAME_VI":"Malaysia","NAME_ZH":"马来西亚","NAME_ZHT":"馬來西亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[99.646289,0.861963,119.266309,7.35166],"geometry":{"type":"MultiPolygon","coordinates":[[[[100.119141,6.441992],[100.137988,6.488672],[100.16123,6.641602],[100.176758,6.671826],[100.216602,6.686621],[100.261426,6.682715],[100.34541,6.549902],[100.563867,6.467529],[100.629492,6.447998],[100.715625,6.480664],[100.754492,6.460059],[100.79375,6.426172],[100.816504,6.331641],[100.873926,6.24541],[100.98877,6.257666],[101.029395,6.245312],[101.053516,6.242578],[101.075977,6.166064],[101.086523,6.033691],[101.075586,5.956494],[100.992773,5.846191],[100.981641,5.771045],[101.025195,5.724512],[101.081738,5.674902],[101.113965,5.636768],[101.147656,5.643066],[101.190625,5.66875],[101.229785,5.733691],[101.257031,5.789355],[101.404199,5.85166],[101.556055,5.907764],[101.576758,5.902002],[101.601367,5.877148],[101.65,5.795996],[101.678418,5.778809],[101.719531,5.770605],[101.790723,5.779346],[101.873633,5.825293],[101.917188,5.911377],[101.936133,5.979346],[102.055176,6.09668],[102.068359,6.184668],[102.101074,6.242236],[102.274023,6.203418],[102.340137,6.172021],[102.534375,5.862549],[102.790234,5.644922],[102.898535,5.56377],[102.982422,5.524951],[103.09707,5.408447],[103.196973,5.262158],[103.41582,4.850293],[103.453906,4.669482],[103.46875,4.393262],[103.420508,3.976855],[103.362012,3.769141],[103.37334,3.671094],[103.453516,3.520605],[103.429492,3.378564],[103.44502,3.260596],[103.439453,2.933105],[103.485156,2.836572],[103.537305,2.774756],[103.812207,2.580469],[103.832324,2.508496],[103.967773,2.26123],[104.218555,1.722852],[104.288477,1.480664],[104.280371,1.415576],[104.250098,1.388574],[104.176367,1.364893],[104.114941,1.412256],[104.094238,1.446191],[104.100586,1.48833],[104.076172,1.529785],[104.016016,1.579297],[103.981445,1.623633],[103.991211,1.550049],[103.991504,1.454785],[103.915137,1.44668],[103.816797,1.476562],[103.694531,1.449658],[103.549805,1.332812],[103.480273,1.329492],[103.427344,1.429834],[103.4,1.497852],[103.356836,1.546143],[102.896875,1.792334],[102.727148,1.855566],[102.548242,2.042383],[102.145605,2.248486],[101.889941,2.449414],[101.78125,2.573584],[101.519727,2.683643],[101.406836,2.813477],[101.351367,2.838965],[101.295508,2.885205],[101.354297,3.011133],[101.330176,3.14248],[101.299902,3.253271],[101.11543,3.472021],[101.024805,3.624707],[100.85127,3.776709],[100.781836,3.864453],[100.71543,3.966211],[100.757031,4.001807],[100.795508,4.023389],[100.760254,4.097217],[100.661035,4.225732],[100.614551,4.373437],[100.614551,4.652246],[100.473437,5.044287],[100.352637,5.587695],[100.374023,5.777979],[100.343262,5.98418],[100.263281,6.18252],[100.158398,6.324219],[100.119141,6.441992]]],[[[117.574414,4.170605],[117.537305,4.171387],[117.450879,4.192871],[117.277539,4.299316],[117.100586,4.337061],[116.843555,4.340137],[116.697852,4.35498],[116.638672,4.339111],[116.589063,4.338428],[116.553125,4.359863],[116.514746,4.370801],[116.414551,4.308203],[116.367676,4.327344],[116.320312,4.353711],[116.23623,4.362549],[116.134473,4.355176],[116.021582,4.290674],[115.896191,4.348682],[115.860742,4.348047],[115.836816,4.333301],[115.782422,4.25376],[115.678809,4.193018],[115.627539,4.081982],[115.596094,3.975537],[115.568457,3.93877],[115.560938,3.733057],[115.544531,3.633691],[115.570703,3.502295],[115.566113,3.445752],[115.519922,3.36167],[115.514258,3.342383],[115.489746,3.208643],[115.499121,3.173145],[115.493164,3.128125],[115.454395,3.034326],[115.38418,3.00874],[115.310156,2.993945],[115.246973,3.025928],[115.189941,2.974463],[115.117578,2.894873],[115.086328,2.841113],[115.086523,2.791211],[115.093652,2.757812],[115.078906,2.723437],[115.077051,2.687012],[115.080762,2.634229],[115.129883,2.612402],[115.180859,2.566895],[115.179102,2.523193],[115.150781,2.49292],[115.086523,2.446143],[114.969141,2.35083],[114.836328,2.269385],[114.786426,2.250488],[114.768359,2.212939],[114.758691,2.162402],[114.787988,2.051611],[114.81582,2.018945],[114.830566,1.980029],[114.812695,1.933789],[114.8,1.893945],[114.751074,1.868994],[114.703516,1.850781],[114.686133,1.819043],[114.660937,1.686279],[114.632227,1.617041],[114.56748,1.51416],[114.545898,1.467139],[114.5125,1.452002],[114.387109,1.500049],[114.274707,1.470898],[114.125977,1.452344],[114,1.455273],[113.902344,1.434277],[113.835254,1.379883],[113.760352,1.311377],[113.681641,1.260596],[113.622266,1.235937],[113.513184,1.308398],[113.458203,1.302148],[113.358984,1.327148],[113.12627,1.408105],[113.068652,1.431787],[113.006543,1.433887],[112.988281,1.457129],[112.998047,1.49624],[112.988281,1.547559],[112.942969,1.566992],[112.476172,1.559082],[112.341602,1.514746],[112.250684,1.479639],[112.185742,1.439062],[112.167383,1.338184],[112.128613,1.243604],[112.078516,1.143359],[111.923145,1.113281],[111.808984,1.01167],[111.769727,0.999463],[111.691309,1.014209],[111.607422,1.022607],[111.54668,0.994336],[111.483203,0.995752],[111.286719,1.043213],[111.101367,1.050537],[110.996094,1.026367],[110.938086,1.017334],[110.614746,0.878125],[110.505762,0.861963],[110.461426,0.88208],[110.399023,0.939062],[110.315234,0.995996],[110.114746,1.190137],[110.04082,1.235742],[109.991699,1.282568],[109.944922,1.338037],[109.878516,1.397852],[109.818066,1.438965],[109.735742,1.522949],[109.654004,1.614893],[109.63584,1.77666],[109.570801,1.806299],[109.548926,1.84834],[109.538965,1.896191],[109.628906,2.027539],[109.694336,1.88877],[109.719629,1.857812],[109.864844,1.764453],[109.98457,1.717627],[110.114062,1.698584],[110.245898,1.694727],[110.29834,1.701172],[110.349219,1.719727],[110.399512,1.699854],[110.675195,1.548047],[110.782031,1.52085],[110.894922,1.532471],[110.939941,1.517334],[111.098437,1.400879],[111.145215,1.386963],[111.223242,1.39585],[111.123438,1.449023],[111.058008,1.48667],[111.028711,1.557812],[111.046582,1.633643],[111.110156,1.684082],[111.154199,1.73877],[111.17002,1.902295],[111.198047,1.985107],[111.250879,2.063867],[111.268164,2.139746],[111.208887,2.197656],[111.195508,2.297168],[111.208594,2.379639],[111.242188,2.435742],[111.295898,2.398779],[111.351367,2.364453],[111.406152,2.367871],[111.443848,2.381543],[111.450781,2.424072],[111.44043,2.498096],[111.443262,2.634326],[111.5125,2.743018],[111.623242,2.817969],[111.727734,2.853809],[112.118848,2.914697],[112.737305,3.070459],[112.920508,3.130713],[112.987891,3.161914],[113.044727,3.205225],[113.140234,3.343506],[113.320117,3.561475],[113.446094,3.740576],[113.712109,4.001416],[113.923926,4.243213],[113.952539,4.288721],[113.987793,4.420703],[113.99043,4.482812],[113.984277,4.545801],[114.0125,4.575244],[114.053613,4.592871],[114.063867,4.592676],[114.095117,4.565234],[114.168848,4.526953],[114.224121,4.477881],[114.261035,4.414258],[114.287598,4.354736],[114.289648,4.304199],[114.322949,4.262793],[114.416602,4.255859],[114.44707,4.203564],[114.512207,4.113574],[114.571777,4.049072],[114.608301,4.023975],[114.654102,4.037646],[114.725,4.096533],[114.776172,4.168799],[114.810449,4.266504],[114.783496,4.280762],[114.831055,4.354492],[114.840234,4.393213],[114.818262,4.42876],[114.790137,4.463916],[114.779297,4.553027],[114.759961,4.666504],[114.74668,4.718066],[114.78418,4.754834],[114.864551,4.801758],[114.944727,4.85625],[115.026758,4.899707],[115.028809,4.821143],[115.026758,4.691357],[115.051562,4.582666],[115.107031,4.39043],[115.170605,4.364209],[115.24668,4.347217],[115.290625,4.352588],[115.319238,4.365283],[115.326758,4.380762],[115.279297,4.456348],[115.266699,4.633984],[115.22793,4.750586],[115.168457,4.866699],[115.140039,4.899756],[115.374902,4.932764],[115.427637,4.969189],[115.519824,5.048926],[115.554492,5.093555],[115.582031,5.194141],[115.466895,5.254102],[115.42168,5.330518],[115.419043,5.413184],[115.556445,5.566699],[115.603906,5.603418],[115.624512,5.548877],[115.685059,5.535107],[115.74082,5.533008],[115.796875,5.536133],[115.877148,5.613525],[115.918457,5.724951],[116.059766,5.882373],[116.110059,6.003271],[116.138379,6.129541],[116.494727,6.52168],[116.538281,6.582715],[116.749805,6.9771],[116.776172,6.990234],[116.833008,6.952051],[116.849805,6.826709],[116.841992,6.77207],[116.807715,6.691064],[116.788086,6.606104],[116.812402,6.60791],[116.913281,6.659668],[117.018555,6.797363],[117.07793,6.916846],[117.128516,6.968896],[117.229883,6.93999],[117.252441,6.919238],[117.245313,6.833398],[117.25498,6.783447],[117.294043,6.676904],[117.380371,6.612256],[117.499219,6.571484],[117.609668,6.512646],[117.645703,6.473682],[117.669629,6.426758],[117.69375,6.35],[117.695605,6.272314],[117.615918,6.196533],[117.649805,6.073584],[117.644531,6.001855],[117.617188,5.940723],[117.501172,5.884668],[117.817676,5.94043],[117.895801,5.972266],[118.003809,6.05332],[118.061719,5.983447],[118.11582,5.8625],[118.072266,5.83208],[117.934766,5.7875],[117.928027,5.769189],[117.973633,5.70625],[118.031152,5.712109],[118.144629,5.754199],[118.249121,5.820557],[118.299805,5.819727],[118.353125,5.806055],[118.456348,5.763428],[118.51416,5.728906],[118.563086,5.684521],[118.594824,5.59209],[118.713672,5.558545],[118.957324,5.429004],[119.002539,5.417822],[119.05,5.415234],[119.178418,5.430908],[119.223437,5.412646],[119.255566,5.365918],[119.266309,5.308105],[119.262793,5.245898],[119.249707,5.19873],[119.219629,5.159814],[119.132227,5.100488],[118.9125,5.0229],[118.67207,4.964062],[118.551367,4.968115],[118.381836,5.018506],[118.32002,5.012012],[118.260547,4.988867],[118.185352,4.828516],[118.324219,4.668701],[118.5625,4.502148],[118.595117,4.460645],[118.586328,4.409668],[118.54834,4.379248],[118.498047,4.362354],[118.364062,4.335742],[118.228711,4.316016],[118.117285,4.287598],[118.008203,4.250244],[117.895605,4.262939],[117.741016,4.337549],[117.696484,4.342822],[117.649805,4.304492],[117.603809,4.2],[117.574414,4.170605]]],[[[104.221582,2.731738],[104.17334,2.721338],[104.146875,2.728223],[104.129102,2.767236],[104.169824,2.856836],[104.184766,2.871729],[104.223242,2.774219],[104.221582,2.731738]]],[[[100.288965,5.294727],[100.26377,5.266992],[100.191016,5.282861],[100.203906,5.446875],[100.245508,5.467773],[100.310156,5.437939],[100.338867,5.410059],[100.288965,5.294727]]],[[[99.848047,6.465723],[99.918652,6.358594],[99.883398,6.31084],[99.86582,6.29707],[99.823242,6.312744],[99.782617,6.271582],[99.74375,6.263281],[99.704688,6.337549],[99.656641,6.367139],[99.646289,6.418359],[99.710547,6.427344],[99.749219,6.409619],[99.82168,6.44502],[99.848047,6.465723]]],[[[117.141602,7.168213],[117.080664,7.115283],[117.060156,7.178857],[117.064258,7.260693],[117.146875,7.337012],[117.264063,7.35166],[117.280762,7.290625],[117.266797,7.220801],[117.239355,7.184766],[117.141602,7.168213]]],[[[101.318555,2.988477],[101.268066,2.97041],[101.26543,2.996484],[101.274219,3.032812],[101.31123,3.067383],[101.328418,3.047607],[101.318555,2.988477]]],[[[111.389258,2.415332],[111.358691,2.402197],[111.311523,2.437598],[111.300391,2.741162],[111.333496,2.768311],[111.355078,2.764453],[111.37832,2.709326],[111.37627,2.576318],[111.380469,2.458936],[111.389258,2.415332]]],[[[117.884766,4.186133],[117.74541,4.166943],[117.649023,4.168994],[117.666797,4.204004],[117.662109,4.250195],[117.708008,4.262402],[117.761426,4.252344],[117.884766,4.186133]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":6,"SOVEREIGNT":"Malawi","SOV_A3":"MWI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Malawi","ADM0_A3":"MWI","GEOU_DIF":0,"GEOUNIT":"Malawi","GU_A3":"MWI","SU_DIF":0,"SUBUNIT":"Malawi","SU_A3":"MWI","BRK_DIFF":0,"NAME":"Malawi","NAME_LONG":"Malawi","BRK_A3":"MWI","BRK_NAME":"Malawi","BRK_GROUP":null,"ABBREV":"Mal.","POSTAL":"MW","FORMAL_EN":"Republic of Malawi","FORMAL_FR":null,"NAME_CIAWF":"Malawi","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Malawi","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":5,"POP_EST":18628747,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":7666,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"MI","ISO_A2":"MW","ISO_A2_EH":"MW","ISO_A3":"MWI","ISO_A3_EH":"MWI","ISO_N3":"454","ISO_N3_EH":"454","UN_A3":"454","WB_A2":"MW","WB_A3":"MWI","WOE_ID":23424889,"WOE_ID_EH":23424889,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MWI","ADM0_DIFF":null,"ADM0_TLC":"MWI","ADM0_A3_US":"MWI","ADM0_A3_FR":"MWI","ADM0_A3_RU":"MWI","ADM0_A3_ES":"MWI","ADM0_A3_CN":"MWI","ADM0_A3_TW":"MWI","ADM0_A3_IN":"MWI","ADM0_A3_NP":"MWI","ADM0_A3_PK":"MWI","ADM0_A3_DE":"MWI","ADM0_A3_GB":"MWI","ADM0_A3_BR":"MWI","ADM0_A3_IL":"MWI","ADM0_A3_PS":"MWI","ADM0_A3_SA":"MWI","ADM0_A3_EG":"MWI","ADM0_A3_MA":"MWI","ADM0_A3_PT":"MWI","ADM0_A3_AR":"MWI","ADM0_A3_JP":"MWI","ADM0_A3_KO":"MWI","ADM0_A3_VN":"MWI","ADM0_A3_TR":"MWI","ADM0_A3_ID":"MWI","ADM0_A3_PL":"MWI","ADM0_A3_GR":"MWI","ADM0_A3_IT":"MWI","ADM0_A3_NL":"MWI","ADM0_A3_SE":"MWI","ADM0_A3_BD":"MWI","ADM0_A3_UA":"MWI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":33.608082,"LABEL_Y":-13.386737,"NE_ID":1159321081,"WIKIDATAID":"Q1020","NAME_AR":"مالاوي","NAME_BN":"মালাউই","NAME_DE":"Malawi","NAME_EN":"Malawi","NAME_ES":"Malaui","NAME_FA":"مالاوی","NAME_FR":"Malawi","NAME_EL":"Μαλάουι","NAME_HE":"מלאווי","NAME_HI":"मलावी","NAME_HU":"Malawi","NAME_ID":"Malawi","NAME_IT":"Malawi","NAME_JA":"マラウイ","NAME_KO":"말라위","NAME_NL":"Malawi","NAME_PL":"Malawi","NAME_PT":"Malawi","NAME_RU":"Малави","NAME_SV":"Malawi","NAME_TR":"Malavi","NAME_UK":"Малаві","NAME_UR":"ملاوی","NAME_VI":"Malawi","NAME_ZH":"马拉维","NAME_ZHT":"馬拉威","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[32.67041,-17.131055,35.892773,-9.39502],"geometry":{"type":"MultiPolygon","coordinates":[[[[34.719336,-12.110645],[34.68418,-12.118652],[34.662109,-12.100781],[34.66748,-12.047559],[34.679883,-12.008887],[34.714941,-12.002734],[34.738965,-12.013086],[34.755957,-12.030762],[34.75625,-12.059082],[34.745996,-12.088379],[34.719336,-12.110645]]],[[[34.641602,-12.013672],[34.621777,-12.066602],[34.580469,-12.06582],[34.541602,-12.018652],[34.554004,-11.982227],[34.591406,-11.971094],[34.624219,-11.984766],[34.641602,-12.013672]]],[[[33.201758,-14.013379],[33.148047,-13.940918],[33.103613,-13.95918],[33.042383,-14.010059],[33.009277,-14.02373],[32.99209,-14.022168],[32.98125,-14.009375],[32.967578,-13.976855],[32.920313,-13.883887],[32.867188,-13.817383],[32.811035,-13.791602],[32.765137,-13.761035],[32.785352,-13.731445],[32.806738,-13.710254],[32.797461,-13.688477],[32.771777,-13.656543],[32.67207,-13.610352],[32.67041,-13.59043],[32.758398,-13.550293],[32.814063,-13.502734],[32.851855,-13.457031],[32.899707,-13.357031],[32.938574,-13.257422],[32.967578,-13.225],[32.977637,-13.158887],[32.971094,-13.084277],[32.99043,-12.989453],[33,-12.899609],[32.970508,-12.864746],[32.945605,-12.804395],[32.975195,-12.701367],[33.021582,-12.630469],[33.243457,-12.556543],[33.397949,-12.489844],[33.430664,-12.460449],[33.483203,-12.403418],[33.512305,-12.347754],[33.491406,-12.331055],[33.37002,-12.329688],[33.340137,-12.308301],[33.252344,-12.112598],[33.300977,-11.888184],[33.305078,-11.8],[33.303906,-11.69082],[33.288281,-11.611133],[33.25,-11.577637],[33.226367,-11.534863],[33.232715,-11.417676],[33.268359,-11.403906],[33.345508,-11.249121],[33.379785,-11.15791],[33.338672,-11.085156],[33.293262,-10.981152],[33.272754,-10.915039],[33.261328,-10.893359],[33.292773,-10.852344],[33.344922,-10.812695],[33.403125,-10.801758],[33.464746,-10.783105],[33.659082,-10.590527],[33.661523,-10.553125],[33.626172,-10.488574],[33.553711,-10.391309],[33.537598,-10.351562],[33.528906,-10.234668],[33.500098,-10.199707],[33.393555,-10.120898],[33.311523,-10.037988],[33.337109,-9.954004],[33.350977,-9.862207],[33.310449,-9.811816],[33.25,-9.75957],[33.212695,-9.683008],[33.195703,-9.626172],[33.148047,-9.603516],[33.104492,-9.602637],[33.072461,-9.638184],[33.037793,-9.635059],[32.995996,-9.622852],[32.982129,-9.573633],[32.979883,-9.520313],[32.951074,-9.48418],[32.92334,-9.433984],[32.919922,-9.407422],[32.937305,-9.399707],[32.974023,-9.39502],[33.130469,-9.495898],[33.225293,-9.500488],[33.330859,-9.519141],[33.420898,-9.608008],[33.467773,-9.619727],[33.527539,-9.60752],[33.697656,-9.598145],[33.766211,-9.610938],[33.854199,-9.662988],[33.888867,-9.670117],[33.943945,-9.672168],[33.953711,-9.658203],[33.959375,-9.627344],[33.949609,-9.565332],[33.962109,-9.531738],[33.995605,-9.49541],[34.088574,-9.537793],[34.320898,-9.731543],[34.327832,-9.756543],[34.475977,-9.948828],[34.524219,-10.030176],[34.524219,-10.073145],[34.569922,-10.241113],[34.57998,-10.319824],[34.569727,-10.379688],[34.571582,-10.427637],[34.589551,-10.496191],[34.583594,-10.525098],[34.636523,-10.625586],[34.661816,-10.710059],[34.66709,-10.79248],[34.652344,-10.872852],[34.605664,-10.990234],[34.597656,-11.0375],[34.60791,-11.080469],[34.638086,-11.127148],[34.688477,-11.177441],[34.726465,-11.238184],[34.752148,-11.309473],[34.773828,-11.341699],[34.800879,-11.340918],[34.850586,-11.351953],[34.890625,-11.393555],[34.937012,-11.463477],[34.952637,-11.54375],[34.959473,-11.578125],[34.826563,-11.575684],[34.65957,-11.588672],[34.618555,-11.620215],[34.60625,-11.690039],[34.553906,-11.834082],[34.524805,-11.887012],[34.462891,-11.983789],[34.375977,-12.120215],[34.357813,-12.164746],[34.36084,-12.210547],[34.412109,-12.395898],[34.46582,-12.590723],[34.48291,-12.666797],[34.521289,-12.925781],[34.542578,-13.108691],[34.545703,-13.216309],[34.563672,-13.360156],[34.611523,-13.437891],[34.661621,-13.486719],[34.850488,-13.516016],[34.906836,-13.55166],[35.013867,-13.643457],[35.247461,-13.896875],[35.375781,-14.058691],[35.488477,-14.201074],[35.69043,-14.465527],[35.847168,-14.670898],[35.866699,-14.86377],[35.892773,-14.891797],[35.839941,-15.034668],[35.805371,-15.265625],[35.830273,-15.418945],[35.819922,-15.680371],[35.791211,-15.958691],[35.755273,-16.058301],[35.708887,-16.095801],[35.599316,-16.125879],[35.358496,-16.160547],[35.322461,-16.193164],[35.291504,-16.247168],[35.242773,-16.375391],[35.185254,-16.504883],[35.167188,-16.560254],[35.17832,-16.57334],[35.229785,-16.639258],[35.281152,-16.807813],[35.29043,-17.096973],[35.272559,-17.118457],[35.201367,-17.131055],[35.124609,-17.127246],[35.093066,-17.110938],[35.064648,-17.078613],[35.043945,-17.016895],[35.094238,-16.973828],[35.112109,-16.898535],[35.079883,-16.833887],[35.015332,-16.819531],[34.933398,-16.760352],[34.758789,-16.56709],[34.612695,-16.431543],[34.528125,-16.319141],[34.441309,-16.274414],[34.416406,-16.246777],[34.395508,-16.199219],[34.395117,-16.130859],[34.403027,-16.080273],[34.375977,-16.02373],[34.288281,-15.936133],[34.248242,-15.8875],[34.246094,-15.829395],[34.283008,-15.773438],[34.358008,-15.705273],[34.414746,-15.566797],[34.434961,-15.477148],[34.54082,-15.297266],[34.555469,-15.140918],[34.557617,-15.015918],[34.551172,-14.922363],[34.524121,-14.730762],[34.505273,-14.598145],[34.375,-14.424805],[34.33252,-14.408594],[34.208789,-14.42373],[34.101855,-14.449316],[34.049414,-14.485254],[33.969824,-14.487109],[33.761426,-14.517285],[33.696094,-14.530273],[33.658301,-14.561621],[33.636426,-14.568164],[33.505273,-14.434082],[33.389941,-14.289453],[33.243555,-14.043066],[33.201758,-14.013379]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Madagascar","SOV_A3":"MDG","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Madagascar","ADM0_A3":"MDG","GEOU_DIF":0,"GEOUNIT":"Madagascar","GU_A3":"MDG","SU_DIF":0,"SUBUNIT":"Madagascar","SU_A3":"MDG","BRK_DIFF":0,"NAME":"Madagascar","NAME_LONG":"Madagascar","BRK_A3":"MDG","BRK_NAME":"Madagascar","BRK_GROUP":null,"ABBREV":"Mad.","POSTAL":"MG","FORMAL_EN":"Republic of Madagascar","FORMAL_FR":null,"NAME_CIAWF":"Madagascar","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Madagascar","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":5,"MAPCOLOR9":2,"MAPCOLOR13":3,"POP_EST":26969307,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":14114,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"MA","ISO_A2":"MG","ISO_A2_EH":"MG","ISO_A3":"MDG","ISO_A3_EH":"MDG","ISO_N3":"450","ISO_N3_EH":"450","UN_A3":"450","WB_A2":"MG","WB_A3":"MDG","WOE_ID":23424883,"WOE_ID_EH":23424883,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MDG","ADM0_DIFF":null,"ADM0_TLC":"MDG","ADM0_A3_US":"MDG","ADM0_A3_FR":"MDG","ADM0_A3_RU":"MDG","ADM0_A3_ES":"MDG","ADM0_A3_CN":"MDG","ADM0_A3_TW":"MDG","ADM0_A3_IN":"MDG","ADM0_A3_NP":"MDG","ADM0_A3_PK":"MDG","ADM0_A3_DE":"MDG","ADM0_A3_GB":"MDG","ADM0_A3_BR":"MDG","ADM0_A3_IL":"MDG","ADM0_A3_PS":"MDG","ADM0_A3_SA":"MDG","ADM0_A3_EG":"MDG","ADM0_A3_MA":"MDG","ADM0_A3_PT":"MDG","ADM0_A3_AR":"MDG","ADM0_A3_JP":"MDG","ADM0_A3_KO":"MDG","ADM0_A3_VN":"MDG","ADM0_A3_TR":"MDG","ADM0_A3_ID":"MDG","ADM0_A3_PL":"MDG","ADM0_A3_GR":"MDG","ADM0_A3_IT":"MDG","ADM0_A3_NL":"MDG","ADM0_A3_SE":"MDG","ADM0_A3_BD":"MDG","ADM0_A3_UA":"MDG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":7,"LABEL_X":46.704241,"LABEL_Y":-18.628288,"NE_ID":1159321051,"WIKIDATAID":"Q1019","NAME_AR":"مدغشقر","NAME_BN":"মাদাগাস্কার","NAME_DE":"Madagaskar","NAME_EN":"Madagascar","NAME_ES":"Madagascar","NAME_FA":"ماداگاسکار","NAME_FR":"Madagascar","NAME_EL":"Μαδαγασκάρη","NAME_HE":"מדגסקר","NAME_HI":"मेडागास्कर","NAME_HU":"Madagaszkár","NAME_ID":"Madagaskar","NAME_IT":"Madagascar","NAME_JA":"マダガスカル","NAME_KO":"마다가스카르","NAME_NL":"Madagaskar","NAME_PL":"Madagaskar","NAME_PT":"Madagáscar","NAME_RU":"Мадагаскар","NAME_SV":"Madagaskar","NAME_TR":"Madagaskar","NAME_UK":"Мадагаскар","NAME_UR":"مڈغاسکر","NAME_VI":"Madagascar","NAME_ZH":"马达加斯加","NAME_ZHT":"馬達加斯加","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[43.257129,-25.570508,50.482715,-12.07959],"geometry":{"type":"MultiPolygon","coordinates":[[[[49.538281,-12.432129],[49.58418,-12.536719],[49.637793,-12.637109],[49.80498,-12.879688],[49.876465,-12.973047],[49.9375,-13.072266],[49.967188,-13.270215],[50.073438,-13.57793],[50.173828,-14.040234],[50.20459,-14.514453],[50.235352,-14.732031],[50.313477,-14.936816],[50.441309,-15.149316],[50.482715,-15.385645],[50.40459,-15.629102],[50.291504,-15.858496],[50.262305,-15.901563],[50.208984,-15.960449],[50.184961,-15.957813],[50.094434,-15.898633],[50.02041,-15.801758],[49.926563,-15.573535],[49.892578,-15.457715],[49.85332,-15.439453],[49.74375,-15.449512],[49.664355,-15.521582],[49.649902,-15.566992],[49.666992,-15.695703],[49.69707,-15.811426],[49.710449,-15.928906],[49.712793,-16.076758],[49.742285,-16.121484],[49.785938,-16.159082],[49.831055,-16.255859],[49.839063,-16.486523],[49.811328,-16.603027],[49.733984,-16.703027],[49.738574,-16.758398],[49.767188,-16.815137],[49.739746,-16.849414],[49.636914,-16.892871],[49.595215,-16.931152],[49.539551,-17.03291],[49.449316,-17.240625],[49.437109,-17.34668],[49.493652,-17.669531],[49.477832,-17.898535],[49.362891,-18.336328],[49.296875,-18.544043],[49.20332,-18.792285],[49.060059,-19.119629],[48.918066,-19.530469],[48.797461,-19.953223],[48.708301,-20.207324],[48.607031,-20.45752],[48.468555,-20.9],[48.350781,-21.349023],[48.175879,-21.843066],[47.934473,-22.393945],[47.908398,-22.46582],[47.858301,-22.747266],[47.804102,-22.991504],[47.739453,-23.233398],[47.604102,-23.633105],[47.588672,-23.756348],[47.558008,-23.874609],[47.427637,-24.125195],[47.372559,-24.218457],[47.333594,-24.317578],[47.311719,-24.443164],[47.272852,-24.564355],[47.177344,-24.787207],[47.034961,-24.979004],[46.938184,-25.04873],[46.728516,-25.149902],[46.622266,-25.17041],[46.386719,-25.172754],[46.158691,-25.230371],[45.920898,-25.341309],[45.692188,-25.468457],[45.60459,-25.528711],[45.508008,-25.563184],[45.205762,-25.570508],[45.115234,-25.543066],[44.812891,-25.33418],[44.695801,-25.299707],[44.473828,-25.271094],[44.406738,-25.25332],[44.345898,-25.226074],[44.256152,-25.116895],[44.078125,-25.024609],[44.035352,-24.995703],[44.008301,-24.932031],[43.989844,-24.863477],[43.94375,-24.786719],[43.90957,-24.640625],[43.851562,-24.538379],[43.6875,-24.35791],[43.67002,-24.300293],[43.656836,-24.108789],[43.662109,-23.979199],[43.646094,-23.741895],[43.664746,-23.630273],[43.722266,-23.529688],[43.69873,-23.420898],[43.637598,-23.306543],[43.614648,-23.188184],[43.569531,-23.080469],[43.397852,-22.886328],[43.35752,-22.79082],[43.32959,-22.691895],[43.264844,-22.383594],[43.257129,-22.276367],[43.266602,-22.049316],[43.290527,-21.93252],[43.332227,-21.851172],[43.342676,-21.79043],[43.369727,-21.738281],[43.410547,-21.696484],[43.437793,-21.64668],[43.501855,-21.356445],[43.583105,-21.291992],[43.703613,-21.25498],[43.800195,-21.179199],[43.855664,-21.076855],[43.911133,-20.86582],[44.063086,-20.65625],[44.117188,-20.546094],[44.239648,-20.379688],[44.348145,-20.145508],[44.381055,-20.035156],[44.404688,-19.92207],[44.432227,-19.674219],[44.45293,-19.550879],[44.448828,-19.428711],[44.386523,-19.303125],[44.23877,-19.075195],[44.233984,-19.032617],[44.245703,-18.863184],[44.233105,-18.740625],[44.178711,-18.618555],[44.108789,-18.503516],[44.040039,-18.288477],[44.006641,-17.933008],[44.013672,-17.804492],[43.993555,-17.690332],[43.943555,-17.581445],[43.979395,-17.391602],[44.421387,-16.702637],[44.435742,-16.621484],[44.417969,-16.411328],[44.427051,-16.289062],[44.44248,-16.24375],[44.476172,-16.217285],[44.551855,-16.204492],[44.90918,-16.174512],[44.955078,-16.15332],[45.044238,-16.095117],[45.166797,-15.982813],[45.222852,-15.950488],[45.271289,-15.962305],[45.302344,-16.010449],[45.342188,-16.036719],[45.486328,-15.98584],[45.541797,-15.984277],[45.598242,-15.992578],[45.624707,-15.945801],[45.640527,-15.883105],[45.661523,-15.838867],[45.700195,-15.81377],[45.885938,-15.800098],[46.004297,-15.782129],[46.15752,-15.738281],[46.190527,-15.746875],[46.314063,-15.90459],[46.351562,-15.918164],[46.399609,-15.924609],[46.441602,-15.895898],[46.341309,-15.813379],[46.326172,-15.766699],[46.331445,-15.713672],[46.385156,-15.600098],[46.475098,-15.513477],[46.674707,-15.381836],[46.882031,-15.22959],[46.942285,-15.219043],[46.993262,-15.243164],[47.032324,-15.422656],[47.027441,-15.452246],[47.060547,-15.456348],[47.099219,-15.43418],[47.133398,-15.361719],[47.135156,-15.301563],[47.107324,-15.243848],[47.09375,-15.19502],[47.092578,-15.150098],[47.197656,-15.044043],[47.280469,-14.942676],[47.31875,-14.821777],[47.351953,-14.766113],[47.439063,-14.70332],[47.464746,-14.713281],[47.485059,-14.764355],[47.496387,-14.818359],[47.474023,-14.871973],[47.44209,-14.925],[47.429199,-14.995703],[47.47832,-15.009375],[47.524707,-14.992188],[47.592578,-14.864258],[47.67002,-14.743262],[47.716016,-14.680371],[47.774023,-14.636719],[47.87041,-14.645508],[47.96416,-14.672559],[47.811523,-14.544824],[47.77334,-14.369922],[47.955176,-14.067285],[47.956934,-14.004297],[47.983203,-13.984863],[47.995508,-13.960449],[47.901367,-13.858203],[47.883594,-13.80752],[47.895996,-13.730664],[47.941016,-13.662402],[47.981836,-13.614648],[48.039844,-13.596289],[48.085938,-13.622559],[48.187109,-13.706543],[48.255273,-13.719336],[48.337695,-13.638672],[48.405078,-13.537988],[48.506445,-13.46875],[48.621387,-13.425977],[48.796484,-13.26748],[48.910352,-12.93584],[48.919434,-12.839063],[48.894238,-12.72168],[48.853809,-12.610156],[48.786328,-12.470898],[48.803906,-12.440039],[48.899609,-12.458496],[48.931738,-12.439063],[49.035742,-12.31582],[49.207031,-12.07959],[49.263477,-12.080176],[49.312109,-12.123926],[49.330176,-12.188672],[49.363965,-12.236328],[49.479785,-12.348438],[49.538281,-12.432129]]],[[[48.342188,-13.363867],[48.343555,-13.400391],[48.211914,-13.385254],[48.191211,-13.259961],[48.255664,-13.256055],[48.269727,-13.20459],[48.308887,-13.198242],[48.351074,-13.30957],[48.342188,-13.363867]]],[[[49.936426,-16.90293],[49.824023,-17.086523],[49.855664,-16.933203],[49.985938,-16.712402],[50.023047,-16.695312],[49.936426,-16.90293]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"North Macedonia","SOV_A3":"MKD","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"North Macedonia","ADM0_A3":"MKD","GEOU_DIF":0,"GEOUNIT":"North Macedonia","GU_A3":"MKD","SU_DIF":0,"SUBUNIT":"North Macedonia","SU_A3":"MKD","BRK_DIFF":0,"NAME":"North Macedonia","NAME_LONG":"North Macedonia","BRK_A3":"MKD","BRK_NAME":"North Macedonia","BRK_GROUP":null,"ABBREV":"N. Mac.","POSTAL":"NM","FORMAL_EN":"Republic of North Macedonia","FORMAL_FR":null,"NAME_CIAWF":"North Macedonia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"North Macedonia","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":3,"MAPCOLOR9":7,"MAPCOLOR13":3,"POP_EST":2083459,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":12547,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"MK","ISO_A2":"MK","ISO_A2_EH":"MK","ISO_A3":"MKD","ISO_A3_EH":"MKD","ISO_N3":"807","ISO_N3_EH":"807","UN_A3":"807","WB_A2":"MK","WB_A3":"MKD","WOE_ID":23424890,"WOE_ID_EH":23424890,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MKD","ADM0_DIFF":null,"ADM0_TLC":"MKD","ADM0_A3_US":"MKD","ADM0_A3_FR":"MKD","ADM0_A3_RU":"MKD","ADM0_A3_ES":"MKD","ADM0_A3_CN":"MKD","ADM0_A3_TW":"MKD","ADM0_A3_IN":"MKD","ADM0_A3_NP":"MKD","ADM0_A3_PK":"MKD","ADM0_A3_DE":"MKD","ADM0_A3_GB":"MKD","ADM0_A3_BR":"MKD","ADM0_A3_IL":"MKD","ADM0_A3_PS":"MKD","ADM0_A3_SA":"MKD","ADM0_A3_EG":"MKD","ADM0_A3_MA":"MKD","ADM0_A3_PT":"MKD","ADM0_A3_AR":"MKD","ADM0_A3_JP":"MKD","ADM0_A3_KO":"MKD","ADM0_A3_VN":"MKD","ADM0_A3_TR":"MKD","ADM0_A3_ID":"MKD","ADM0_A3_PL":"MKD","ADM0_A3_GR":"MKD","ADM0_A3_IT":"MKD","ADM0_A3_NL":"MKD","ADM0_A3_SE":"MKD","ADM0_A3_BD":"MKD","ADM0_A3_UA":"MKD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":15,"LONG_LEN":15,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":21.555839,"LABEL_Y":41.558223,"NE_ID":1159321061,"WIKIDATAID":"Q221","NAME_AR":"مقدونيا الشمالية","NAME_BN":"উত্তর মেসিডোনিয়া","NAME_DE":"Nordmazedonien","NAME_EN":"North Macedonia","NAME_ES":"Macedonia del Norte","NAME_FA":"مقدونیه شمالی","NAME_FR":"Macédoine du Nord","NAME_EL":"Βόρεια Μακεδονία","NAME_HE":"מקדוניה הצפונית","NAME_HI":"उत्तर मैसिडोनिया","NAME_HU":"Észak-Macedónia","NAME_ID":"Republik Makedonia Utara","NAME_IT":"Macedonia del Nord","NAME_JA":"北マケドニア","NAME_KO":"북마케도니아","NAME_NL":"Noord-Macedonië","NAME_PL":"Macedonia Północna","NAME_PT":"Macedónia do Norte","NAME_RU":"Северная Македония","NAME_SV":"Nordmakedonien","NAME_TR":"Kuzey Makedonya","NAME_UK":"Північна Македонія","NAME_UR":"شمالی مقدونیہ","NAME_VI":"Bắc Macedonia","NAME_ZH":"北马其顿","NAME_ZHT":"北馬其頓","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[20.448633,40.849902,23.005664,42.358154],"geometry":{"type":"Polygon","coordinates":[[[21.5625,42.24751],[21.618262,42.242139],[21.739258,42.267725],[21.814648,42.303125],[21.853027,42.308398],[21.904102,42.32207],[21.977539,42.320068],[22.052051,42.304639],[22.14668,42.325],[22.239746,42.358154],[22.277051,42.349854],[22.317383,42.321729],[22.344043,42.313965],[22.498242,42.165088],[22.582715,42.104834],[22.682324,42.059131],[22.796094,42.025684],[22.836816,41.993604],[22.90918,41.835205],[22.943945,41.775098],[22.991992,41.757178],[23.003613,41.739844],[23.005664,41.716943],[22.951465,41.605615],[22.929688,41.356104],[22.916016,41.336279],[22.859277,41.337354],[22.783887,41.331982],[22.755078,41.312744],[22.724805,41.178516],[22.603613,41.140186],[22.493555,41.118506],[22.400781,41.123389],[22.237695,41.155176],[22.184473,41.158643],[22.138867,41.140527],[21.993359,41.130957],[21.929492,41.107422],[21.779492,40.950439],[21.627539,40.896338],[21.575781,40.868945],[21.459668,40.903613],[21.404102,40.907178],[21.32373,40.867139],[21.147559,40.863135],[21.1,40.856152],[20.964258,40.849902],[20.958594,40.871533],[20.933496,40.903125],[20.870215,40.91792],[20.74082,40.905273],[20.709277,40.928369],[20.656055,41.06167],[20.614453,41.083057],[20.567871,41.127832],[20.488965,41.272607],[20.487012,41.336084],[20.492383,41.391406],[20.448633,41.521289],[20.475586,41.554102],[20.516211,41.574756],[20.516602,41.627051],[20.505176,41.706494],[20.553125,41.862354],[20.566211,41.873682],[20.578516,41.866211],[20.694922,41.853809],[20.725,41.873535],[20.744141,41.904297],[20.750391,42.018359],[20.778125,42.071045],[21.059766,42.171289],[21.14248,42.175],[21.206055,42.128955],[21.256348,42.099512],[21.286621,42.100391],[21.297559,42.130078],[21.331738,42.187158],[21.389551,42.219824],[21.56084,42.247656],[21.5625,42.24751]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Luxembourg","SOV_A3":"LUX","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Luxembourg","ADM0_A3":"LUX","GEOU_DIF":0,"GEOUNIT":"Luxembourg","GU_A3":"LUX","SU_DIF":0,"SUBUNIT":"Luxembourg","SU_A3":"LUX","BRK_DIFF":0,"NAME":"Luxembourg","NAME_LONG":"Luxembourg","BRK_A3":"LUX","BRK_NAME":"Luxembourg","BRK_GROUP":null,"ABBREV":"Lux.","POSTAL":"L","FORMAL_EN":"Grand Duchy of Luxembourg","FORMAL_FR":null,"NAME_CIAWF":"Luxembourg","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Luxembourg","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":7,"MAPCOLOR9":3,"MAPCOLOR13":7,"POP_EST":619896,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":71104,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"LU","ISO_A2":"LU","ISO_A2_EH":"LU","ISO_A3":"LUX","ISO_A3_EH":"LUX","ISO_N3":"442","ISO_N3_EH":"442","UN_A3":"442","WB_A2":"LU","WB_A3":"LUX","WOE_ID":23424881,"WOE_ID_EH":23424881,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LUX","ADM0_DIFF":null,"ADM0_TLC":"LUX","ADM0_A3_US":"LUX","ADM0_A3_FR":"LUX","ADM0_A3_RU":"LUX","ADM0_A3_ES":"LUX","ADM0_A3_CN":"LUX","ADM0_A3_TW":"LUX","ADM0_A3_IN":"LUX","ADM0_A3_NP":"LUX","ADM0_A3_PK":"LUX","ADM0_A3_DE":"LUX","ADM0_A3_GB":"LUX","ADM0_A3_BR":"LUX","ADM0_A3_IL":"LUX","ADM0_A3_PS":"LUX","ADM0_A3_SA":"LUX","ADM0_A3_EG":"LUX","ADM0_A3_MA":"LUX","ADM0_A3_PT":"LUX","ADM0_A3_AR":"LUX","ADM0_A3_JP":"LUX","ADM0_A3_KO":"LUX","ADM0_A3_VN":"LUX","ADM0_A3_TR":"LUX","ADM0_A3_ID":"LUX","ADM0_A3_PL":"LUX","ADM0_A3_GR":"LUX","ADM0_A3_IT":"LUX","ADM0_A3_NL":"LUX","ADM0_A3_SE":"LUX","ADM0_A3_BD":"LUX","ADM0_A3_UA":"LUX","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":5,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5.7,"MAX_LABEL":10,"LABEL_X":6.07762,"LABEL_Y":49.733732,"NE_ID":1159321031,"WIKIDATAID":"Q32","NAME_AR":"لوكسمبورغ","NAME_BN":"লুক্সেমবুর্গ","NAME_DE":"Luxemburg","NAME_EN":"Luxembourg","NAME_ES":"Luxemburgo","NAME_FA":"لوکزامبورگ","NAME_FR":"Luxembourg","NAME_EL":"Λουξεμβούργο","NAME_HE":"לוקסמבורג","NAME_HI":"लक्ज़मबर्ग","NAME_HU":"Luxemburg","NAME_ID":"Luksemburg","NAME_IT":"Lussemburgo","NAME_JA":"ルクセンブルク","NAME_KO":"룩셈부르크","NAME_NL":"Luxemburg","NAME_PL":"Luksemburg","NAME_PT":"Luxemburgo","NAME_RU":"Люксембург","NAME_SV":"Luxemburg","NAME_TR":"Lüksemburg","NAME_UK":"Люксембург","NAME_UR":"لکسمبرگ","NAME_VI":"Luxembourg","NAME_ZH":"卢森堡","NAME_ZHT":"盧森堡","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[5.725,49.445459,6.49375,50.167187],"geometry":{"type":"Polygon","coordinates":[[[6.116504,50.120996],[6.108301,50.094238],[6.109766,50.034375],[6.138184,49.974316],[6.204883,49.915137],[6.256055,49.872168],[6.324609,49.837891],[6.440918,49.805322],[6.487305,49.798486],[6.49375,49.754395],[6.484766,49.707812],[6.444629,49.682031],[6.406738,49.644971],[6.37832,49.599609],[6.348438,49.512695],[6.344336,49.452734],[6.277344,49.477539],[6.242188,49.494336],[6.181055,49.498926],[6.119922,49.485205],[6.074121,49.454639],[6.011426,49.445459],[5.959473,49.454639],[5.928906,49.477539],[5.901367,49.489746],[5.823438,49.505078],[5.789746,49.538281],[5.81543,49.553809],[5.837598,49.57832],[5.856543,49.612842],[5.880371,49.644775],[5.803711,49.732178],[5.787988,49.758887],[5.725,49.808301],[5.725781,49.83335],[5.74082,49.857178],[5.735254,49.875635],[5.744043,49.919629],[5.788086,49.96123],[5.817383,50.012695],[5.866895,50.082812],[5.97627,50.167187],[6.054785,50.154297],[6.089063,50.15459],[6.110059,50.123779],[6.116504,50.120996]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":5,"SOVEREIGNT":"Lithuania","SOV_A3":"LTU","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Lithuania","ADM0_A3":"LTU","GEOU_DIF":0,"GEOUNIT":"Lithuania","GU_A3":"LTU","SU_DIF":0,"SUBUNIT":"Lithuania","SU_A3":"LTU","BRK_DIFF":0,"NAME":"Lithuania","NAME_LONG":"Lithuania","BRK_A3":"LTU","BRK_NAME":"Lithuania","BRK_GROUP":null,"ABBREV":"Lith.","POSTAL":"LT","FORMAL_EN":"Republic of Lithuania","FORMAL_FR":null,"NAME_CIAWF":"Lithuania","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Lithuania","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":3,"MAPCOLOR9":3,"MAPCOLOR13":9,"POP_EST":2786844,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":54627,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"3. Upper middle income","FIPS_10":"LH","ISO_A2":"LT","ISO_A2_EH":"LT","ISO_A3":"LTU","ISO_A3_EH":"LTU","ISO_N3":"440","ISO_N3_EH":"440","UN_A3":"440","WB_A2":"LT","WB_A3":"LTU","WOE_ID":23424875,"WOE_ID_EH":23424875,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LTU","ADM0_DIFF":null,"ADM0_TLC":"LTU","ADM0_A3_US":"LTU","ADM0_A3_FR":"LTU","ADM0_A3_RU":"LTU","ADM0_A3_ES":"LTU","ADM0_A3_CN":"LTU","ADM0_A3_TW":"LTU","ADM0_A3_IN":"LTU","ADM0_A3_NP":"LTU","ADM0_A3_PK":"LTU","ADM0_A3_DE":"LTU","ADM0_A3_GB":"LTU","ADM0_A3_BR":"LTU","ADM0_A3_IL":"LTU","ADM0_A3_PS":"LTU","ADM0_A3_SA":"LTU","ADM0_A3_EG":"LTU","ADM0_A3_MA":"LTU","ADM0_A3_PT":"LTU","ADM0_A3_AR":"LTU","ADM0_A3_JP":"LTU","ADM0_A3_KO":"LTU","ADM0_A3_VN":"LTU","ADM0_A3_TR":"LTU","ADM0_A3_ID":"LTU","ADM0_A3_PL":"LTU","ADM0_A3_GR":"LTU","ADM0_A3_IT":"LTU","ADM0_A3_NL":"LTU","ADM0_A3_SE":"LTU","ADM0_A3_BD":"LTU","ADM0_A3_UA":"LTU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":24.089932,"LABEL_Y":55.103703,"NE_ID":1159321029,"WIKIDATAID":"Q37","NAME_AR":"ليتوانيا","NAME_BN":"লিথুয়ানিয়া","NAME_DE":"Litauen","NAME_EN":"Lithuania","NAME_ES":"Lituania","NAME_FA":"لیتوانی","NAME_FR":"Lituanie","NAME_EL":"Λιθουανία","NAME_HE":"ליטא","NAME_HI":"लिथुआनिया","NAME_HU":"Litvánia","NAME_ID":"Lituania","NAME_IT":"Lituania","NAME_JA":"リトアニア","NAME_KO":"리투아니아","NAME_NL":"Litouwen","NAME_PL":"Litwa","NAME_PT":"Lituânia","NAME_RU":"Литва","NAME_SV":"Litauen","NAME_TR":"Litvanya","NAME_UK":"Литва","NAME_UR":"لتھووینیا","NAME_VI":"Litva","NAME_ZH":"立陶宛","NAME_ZHT":"立陶宛","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[20.899805,53.892969,26.775684,56.411182],"geometry":{"type":"MultiPolygon","coordinates":[[[[20.957813,55.278906],[20.899805,55.28667],[21.014063,55.401953],[21.057617,55.476807],[21.087891,55.583105],[21.114844,55.616504],[21.115723,55.568164],[21.103906,55.487744],[21.031738,55.350488],[20.957813,55.278906]]],[[[22.766211,54.356787],[22.724316,54.405615],[22.679883,54.493018],[22.684473,54.562939],[22.709668,54.632617],[22.83125,54.838477],[22.824707,54.871289],[22.736523,54.928857],[22.627441,54.970703],[22.567285,55.059131],[22.346387,55.064258],[22.137891,55.059375],[22.072363,55.063672],[21.873926,55.100732],[21.682715,55.160352],[21.554688,55.195312],[21.44707,55.234424],[21.389258,55.275537],[21.297559,55.264453],[21.235742,55.264111],[21.236328,55.271191],[21.201074,55.343799],[21.237891,55.455029],[21.171094,55.617725],[21.061914,55.813428],[21.053809,56.022949],[21.046094,56.070068],[21.314648,56.188135],[21.653516,56.314551],[21.730566,56.325977],[22.042871,56.400781],[22.08457,56.406738],[22.365918,56.392871],[22.586914,56.375098],[22.773242,56.377295],[22.875586,56.396436],[22.968262,56.38042],[23.042969,56.324072],[23.119824,56.330664],[23.195898,56.367139],[23.612695,56.333838],[23.706738,56.334619],[23.812695,56.329248],[24.008203,56.295264],[24.120703,56.264258],[24.367871,56.283008],[24.473633,56.284082],[24.529004,56.296289],[24.699512,56.381299],[24.773242,56.395898],[24.841016,56.411182],[24.903027,56.398193],[24.943848,56.325586],[25.069922,56.200391],[25.206934,56.178418],[25.585742,56.130176],[25.663184,56.104834],[25.876367,55.994336],[26.004199,55.940137],[26.085547,55.896875],[26.20957,55.812109],[26.28125,55.750439],[26.401074,55.703809],[26.542871,55.672412],[26.593555,55.667529],[26.59082,55.622656],[26.566602,55.546484],[26.519238,55.448145],[26.469531,55.371924],[26.457617,55.34248],[26.495313,55.318018],[26.68125,55.306445],[26.760156,55.293359],[26.775684,55.273096],[26.734375,55.246777],[26.675,55.224902],[26.648438,55.204199],[26.601172,55.130176],[26.291797,55.1396],[26.250781,55.124512],[26.23125,55.090137],[26.21582,55.050391],[26.175195,55.003271],[26.092969,54.962305],[25.964453,54.947168],[25.859277,54.919287],[25.780859,54.833252],[25.722461,54.717871],[25.723926,54.636035],[25.731641,54.590381],[25.724805,54.564258],[25.685156,54.535791],[25.620313,54.4604],[25.567578,54.377051],[25.547363,54.331836],[25.55752,54.310693],[25.616895,54.310107],[25.702539,54.292969],[25.748145,54.259668],[25.765039,54.221191],[25.765234,54.179785],[25.749219,54.156982],[25.680566,54.140479],[25.573047,54.139893],[25.510352,54.159619],[25.497363,54.175244],[25.527344,54.215137],[25.505664,54.264941],[25.461133,54.292773],[25.370605,54.251221],[25.283691,54.25127],[25.179492,54.214258],[25.111426,54.154932],[25.046094,54.133057],[24.869531,54.145166],[24.825684,54.118994],[24.789258,53.998242],[24.768164,53.974658],[24.620703,53.979834],[24.478516,53.931836],[24.317969,53.892969],[24.236621,53.919971],[24.191309,53.950439],[24.103906,53.94502],[24.008496,53.931641],[23.944434,53.938965],[23.872559,53.935693],[23.733691,53.912256],[23.559082,53.919824],[23.484668,53.939795],[23.477637,53.958936],[23.483008,54.005957],[23.481348,54.079004],[23.453613,54.143457],[23.370117,54.200488],[23.282324,54.240332],[23.170313,54.281445],[23.0875,54.299463],[23.042188,54.304199],[23.031934,54.327881],[23.015527,54.34834],[22.976758,54.366357],[22.893945,54.390527],[22.82373,54.395801],[22.766211,54.356787]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Liechtenstein","SOV_A3":"LIE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Liechtenstein","ADM0_A3":"LIE","GEOU_DIF":0,"GEOUNIT":"Liechtenstein","GU_A3":"LIE","SU_DIF":0,"SUBUNIT":"Liechtenstein","SU_A3":"LIE","BRK_DIFF":0,"NAME":"Liechtenstein","NAME_LONG":"Liechtenstein","BRK_A3":"LIE","BRK_NAME":"Liechtenstein","BRK_GROUP":null,"ABBREV":"Liech.","POSTAL":"FL","FORMAL_EN":"Principality of Liechtenstein","FORMAL_FR":null,"NAME_CIAWF":"Liechtenstein","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Liechtenstein","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":4,"MAPCOLOR9":2,"MAPCOLOR13":9,"POP_EST":38019,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":6876,"GDP_YEAR":2018,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"LS","ISO_A2":"LI","ISO_A2_EH":"LI","ISO_A3":"LIE","ISO_A3_EH":"LIE","ISO_N3":"438","ISO_N3_EH":"438","UN_A3":"438","WB_A2":"LI","WB_A3":"LIE","WOE_ID":23424879,"WOE_ID_EH":23424879,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LIE","ADM0_DIFF":null,"ADM0_TLC":"LIE","ADM0_A3_US":"LIE","ADM0_A3_FR":"LIE","ADM0_A3_RU":"LIE","ADM0_A3_ES":"LIE","ADM0_A3_CN":"LIE","ADM0_A3_TW":"LIE","ADM0_A3_IN":"LIE","ADM0_A3_NP":"LIE","ADM0_A3_PK":"LIE","ADM0_A3_DE":"LIE","ADM0_A3_GB":"LIE","ADM0_A3_BR":"LIE","ADM0_A3_IL":"LIE","ADM0_A3_PS":"LIE","ADM0_A3_SA":"LIE","ADM0_A3_EG":"LIE","ADM0_A3_MA":"LIE","ADM0_A3_PT":"LIE","ADM0_A3_AR":"LIE","ADM0_A3_JP":"LIE","ADM0_A3_KO":"LIE","ADM0_A3_VN":"LIE","ADM0_A3_TR":"LIE","ADM0_A3_ID":"LIE","ADM0_A3_PL":"LIE","ADM0_A3_GR":"LIE","ADM0_A3_IT":"LIE","ADM0_A3_NL":"LIE","ADM0_A3_SE":"LIE","ADM0_A3_BD":"LIE","ADM0_A3_UA":"LIE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":13,"LONG_LEN":13,"ABBREV_LEN":6,"TINY":6,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":9.559439,"LABEL_Y":47.111405,"NE_ID":1159321021,"WIKIDATAID":"Q347","NAME_AR":"ليختنشتاين","NAME_BN":"লিশটেনস্টাইন","NAME_DE":"Liechtenstein","NAME_EN":"Liechtenstein","NAME_ES":"Liechtenstein","NAME_FA":"لیختناشتاین","NAME_FR":"Liechtenstein","NAME_EL":"Λίχτενσταϊν","NAME_HE":"ליכטנשטיין","NAME_HI":"लिक्टेन्स्टाइन","NAME_HU":"Liechtenstein","NAME_ID":"Liechtenstein","NAME_IT":"Liechtenstein","NAME_JA":"リヒテンシュタイン","NAME_KO":"리히텐슈타인","NAME_NL":"Liechtenstein","NAME_PL":"Liechtenstein","NAME_PT":"Liechtenstein","NAME_RU":"Лихтенштейн","NAME_SV":"Liechtenstein","NAME_TR":"Lihtenştayn","NAME_UK":"Ліхтенштейн","NAME_UR":"لیختینستائن","NAME_VI":"Liechtenstein","NAME_ZH":"列支敦士登","NAME_ZHT":"列支敦斯登","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[9.479492,47.057373,9.610547,47.270752],"geometry":{"type":"Polygon","coordinates":[[[9.580273,47.057373],[9.502344,47.062744],[9.487695,47.062256],[9.479492,47.09751],[9.484277,47.172656],[9.527539,47.270752],[9.536816,47.254639],[9.542188,47.234131],[9.551074,47.212256],[9.555762,47.185498],[9.571875,47.15791],[9.601172,47.13208],[9.610547,47.107129],[9.595703,47.07583],[9.580273,47.057373]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Libya","SOV_A3":"LBY","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Libya","ADM0_A3":"LBY","GEOU_DIF":0,"GEOUNIT":"Libya","GU_A3":"LBY","SU_DIF":0,"SUBUNIT":"Libya","SU_A3":"LBY","BRK_DIFF":0,"NAME":"Libya","NAME_LONG":"Libya","BRK_A3":"LBY","BRK_NAME":"Libya","BRK_GROUP":null,"ABBREV":"Libya","POSTAL":"LY","FORMAL_EN":"Libya","FORMAL_FR":null,"NAME_CIAWF":"Libya","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Libya","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":11,"POP_EST":6777452,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":52091,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"LY","ISO_A2":"LY","ISO_A2_EH":"LY","ISO_A3":"LBY","ISO_A3_EH":"LBY","ISO_N3":"434","ISO_N3_EH":"434","UN_A3":"434","WB_A2":"LY","WB_A3":"LBY","WOE_ID":23424882,"WOE_ID_EH":23424882,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LBY","ADM0_DIFF":null,"ADM0_TLC":"LBY","ADM0_A3_US":"LBY","ADM0_A3_FR":"LBY","ADM0_A3_RU":"LBY","ADM0_A3_ES":"LBY","ADM0_A3_CN":"LBY","ADM0_A3_TW":"LBY","ADM0_A3_IN":"LBY","ADM0_A3_NP":"LBY","ADM0_A3_PK":"LBY","ADM0_A3_DE":"LBY","ADM0_A3_GB":"LBY","ADM0_A3_BR":"LBY","ADM0_A3_IL":"LBY","ADM0_A3_PS":"LBY","ADM0_A3_SA":"LBY","ADM0_A3_EG":"LBY","ADM0_A3_MA":"LBY","ADM0_A3_PT":"LBY","ADM0_A3_AR":"LBY","ADM0_A3_JP":"LBY","ADM0_A3_KO":"LBY","ADM0_A3_VN":"LBY","ADM0_A3_TR":"LBY","ADM0_A3_ID":"LBY","ADM0_A3_PL":"LBY","ADM0_A3_GR":"LBY","ADM0_A3_IT":"LBY","ADM0_A3_NL":"LBY","ADM0_A3_SE":"LBY","ADM0_A3_BD":"LBY","ADM0_A3_UA":"LBY","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Northern Africa","REGION_WB":"Middle East & North Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":18.011015,"LABEL_Y":26.638944,"NE_ID":1159321017,"WIKIDATAID":"Q1016","NAME_AR":"ليبيا","NAME_BN":"লিবিয়া","NAME_DE":"Libyen","NAME_EN":"Libya","NAME_ES":"Libia","NAME_FA":"لیبی","NAME_FR":"Libye","NAME_EL":"Λιβύη","NAME_HE":"לוב","NAME_HI":"लीबिया","NAME_HU":"Líbia","NAME_ID":"Libya","NAME_IT":"Libia","NAME_JA":"リビア","NAME_KO":"리비아","NAME_NL":"Libië","NAME_PL":"Libia","NAME_PT":"Líbia","NAME_RU":"Ливия","NAME_SV":"Libyen","NAME_TR":"Libya","NAME_UK":"Лівія","NAME_UR":"لیبیا","NAME_VI":"Libya","NAME_ZH":"利比亚","NAME_ZHT":"利比亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[9.310254,19.496631,25.150488,33.181934],"geometry":{"type":"Polygon","coordinates":[[[9.51875,30.229395],[9.637988,30.282324],[9.807422,30.342236],[9.89502,30.387305],[9.93252,30.425342],[10.059766,30.580078],[10.125977,30.665967],[10.216406,30.783203],[10.256055,30.864941],[10.257031,30.94082],[10.243359,31.032129],[10.172656,31.250977],[10.114941,31.46377],[10.159863,31.545801],[10.195996,31.585107],[10.274609,31.684961],[10.306055,31.704834],[10.475781,31.736035],[10.543652,31.802539],[10.595508,31.885742],[10.608887,31.929541],[10.683008,31.975391],[10.771582,32.021191],[10.826367,32.080664],[11.005176,32.172705],[11.168262,32.256738],[11.358008,32.345215],[11.50498,32.413672],[11.535938,32.47334],[11.533789,32.524951],[11.453906,32.642578],[11.453906,32.781689],[11.45918,32.897363],[11.467188,32.965723],[11.502441,33.155566],[11.50459,33.181934],[11.657129,33.118896],[11.813477,33.093701],[12.279883,32.858545],[12.427051,32.829102],[12.753516,32.801074],[13.138086,32.897363],[13.283496,32.914648],[13.536328,32.824268],[13.647754,32.798828],[13.835352,32.791797],[14.155664,32.709766],[14.237109,32.68125],[14.423828,32.550293],[14.513379,32.511084],[15.176563,32.391162],[15.266895,32.31167],[15.359082,32.159668],[15.363086,31.971191],[15.414062,31.834229],[15.496387,31.656787],[15.595801,31.531104],[15.705957,31.426416],[15.832227,31.360986],[16.123047,31.264453],[16.450977,31.227295],[16.781543,31.214746],[17.349219,31.081494],[17.830469,30.927588],[17.949316,30.851904],[18.19043,30.777295],[18.669824,30.415674],[18.936426,30.29043],[19.12373,30.266113],[19.291699,30.288086],[19.589844,30.41377],[19.713281,30.488379],[20.013184,30.800684],[20.111523,30.963721],[20.150977,31.078613],[20.141113,31.195508],[20.103809,31.300537],[20.02002,31.410645],[19.96123,31.556006],[19.926367,31.817529],[19.973438,31.999072],[20.030957,32.107861],[20.121484,32.21875],[20.370605,32.430762],[20.621094,32.580176],[21.062305,32.775537],[21.31875,32.777686],[21.424707,32.79917],[21.635938,32.937305],[21.721387,32.94248],[21.839453,32.908643],[22.187402,32.918262],[22.340625,32.879883],[22.523438,32.793945],[22.754102,32.740527],[22.916895,32.687158],[23.090625,32.61875],[23.129688,32.448145],[23.110449,32.397412],[23.10625,32.331445],[23.286328,32.213818],[23.797656,32.158691],[23.898438,32.127197],[24.038965,32.037012],[24.129688,32.009229],[24.479785,31.996533],[24.683887,32.015967],[24.878516,31.984277],[24.950684,31.953711],[25.025,31.88335],[25.115039,31.712305],[25.150488,31.65498],[25.112012,31.626904],[25.057227,31.567187],[25.022656,31.514014],[24.92998,31.42749],[24.852734,31.334814],[24.859961,31.19917],[24.877539,31.06123],[24.929492,30.926465],[24.973926,30.776562],[24.961426,30.678516],[24.923047,30.558008],[24.877539,30.45752],[24.726465,30.250586],[24.703223,30.201074],[24.711621,30.131543],[24.803711,29.886035],[24.81084,29.80874],[24.865918,29.570264],[24.916113,29.37627],[24.97168,29.223828],[24.980273,29.181885],[24.980273,28.957324],[24.980273,28.732764],[24.980273,28.508203],[24.980273,28.283643],[24.980273,28.059082],[24.980273,27.834521],[24.980273,27.609961],[24.980273,27.3854],[24.980273,27.16084],[24.980273,26.93623],[24.980273,26.71167],[24.980273,26.487109],[24.980273,26.262549],[24.980273,26.037988],[24.980273,25.813428],[24.980273,25.588867],[24.980273,25.364307],[24.980273,25.139746],[24.980273,24.915186],[24.980273,24.690625],[24.980273,24.466064],[24.980273,24.241504],[24.980273,24.016943],[24.980273,23.792383],[24.980273,23.567822],[24.980273,23.343213],[24.980273,23.118652],[24.980273,22.894092],[24.980273,22.669531],[24.980273,22.444971],[24.980273,22.22041],[24.980273,21.99585],[24.980078,21.497559],[24.979883,20.999219],[24.979688,20.500928],[24.979492,20.002588],[24.976367,20.000781],[24.973242,19.999023],[24.970215,19.997266],[24.966992,19.995459],[24.72041,19.995557],[24.473633,19.995703],[24.226953,19.99585],[23.980273,19.995947],[23.980273,19.871094],[23.980273,19.746289],[23.980273,19.621484],[23.980273,19.496631],[23.50127,19.733203],[23.022168,19.969775],[22.543066,20.206348],[22.064063,20.44292],[21.584961,20.679492],[21.105859,20.916113],[20.626758,21.152637],[20.147656,21.389258],[19.668555,21.62583],[19.189453,21.862402],[18.710449,22.098975],[18.231348,22.335547],[17.752246,22.572119],[17.273242,22.808691],[16.794141,23.045264],[16.315039,23.281836],[15.984082,23.445215],[15.627148,23.285742],[15.347461,23.160693],[14.979004,22.996191],[14.978906,22.996289],[14.555664,22.78252],[14.230762,22.618457],[14.215527,22.619678],[14.200684,22.62373],[13.862695,22.9021],[13.598633,23.119531],[13.48125,23.180176],[12.983594,23.29126],[12.48877,23.40166],[11.967871,23.517871],[11.873047,23.694824],[11.766992,23.892578],[11.624219,24.139697],[11.536914,24.29082],[11.507617,24.314355],[11.108203,24.434033],[10.686133,24.551367],[10.438965,24.480225],[10.395898,24.485596],[10.325781,24.530225],[10.255859,24.591016],[10.218652,24.676221],[10.119531,24.790234],[10.028125,25.051025],[10.019043,25.258545],[10.000684,25.33208],[9.781055,25.624268],[9.58125,25.890137],[9.448242,26.067139],[9.422363,26.14707],[9.437891,26.245508],[9.491406,26.33374],[9.684961,26.438232],[9.859375,26.551953],[9.883203,26.630811],[9.894434,26.847949],[9.837109,26.91582],[9.79541,27.044775],[9.752539,27.219336],[9.747559,27.330859],[9.825293,27.552979],[9.916016,27.785693],[9.858203,28.043311],[9.815625,28.560205],[9.842578,28.966992],[9.820703,29.114795],[9.805273,29.176953],[9.745898,29.368945],[9.672656,29.566992],[9.640137,29.636426],[9.546191,29.795947],[9.391016,29.993652],[9.310254,30.115234],[9.420996,30.179297],[9.51875,30.229395]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Liberia","SOV_A3":"LBR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Liberia","ADM0_A3":"LBR","GEOU_DIF":0,"GEOUNIT":"Liberia","GU_A3":"LBR","SU_DIF":0,"SUBUNIT":"Liberia","SU_A3":"LBR","BRK_DIFF":0,"NAME":"Liberia","NAME_LONG":"Liberia","BRK_A3":"LBR","BRK_NAME":"Liberia","BRK_GROUP":null,"ABBREV":"Liberia","POSTAL":"LR","FORMAL_EN":"Republic of Liberia","FORMAL_FR":null,"NAME_CIAWF":"Liberia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Liberia","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":9,"POP_EST":4937374,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":3070,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"LI","ISO_A2":"LR","ISO_A2_EH":"LR","ISO_A3":"LBR","ISO_A3_EH":"LBR","ISO_N3":"430","ISO_N3_EH":"430","UN_A3":"430","WB_A2":"LR","WB_A3":"LBR","WOE_ID":23424876,"WOE_ID_EH":23424876,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LBR","ADM0_DIFF":null,"ADM0_TLC":"LBR","ADM0_A3_US":"LBR","ADM0_A3_FR":"LBR","ADM0_A3_RU":"LBR","ADM0_A3_ES":"LBR","ADM0_A3_CN":"LBR","ADM0_A3_TW":"LBR","ADM0_A3_IN":"LBR","ADM0_A3_NP":"LBR","ADM0_A3_PK":"LBR","ADM0_A3_DE":"LBR","ADM0_A3_GB":"LBR","ADM0_A3_BR":"LBR","ADM0_A3_IL":"LBR","ADM0_A3_PS":"LBR","ADM0_A3_SA":"LBR","ADM0_A3_EG":"LBR","ADM0_A3_MA":"LBR","ADM0_A3_PT":"LBR","ADM0_A3_AR":"LBR","ADM0_A3_JP":"LBR","ADM0_A3_KO":"LBR","ADM0_A3_VN":"LBR","ADM0_A3_TR":"LBR","ADM0_A3_ID":"LBR","ADM0_A3_PL":"LBR","ADM0_A3_GR":"LBR","ADM0_A3_IT":"LBR","ADM0_A3_NL":"LBR","ADM0_A3_SE":"LBR","ADM0_A3_BD":"LBR","ADM0_A3_UA":"LBR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-9.460379,"LABEL_Y":6.447177,"NE_ID":1159321015,"WIKIDATAID":"Q1014","NAME_AR":"ليبيريا","NAME_BN":"লাইবেরিয়া","NAME_DE":"Liberia","NAME_EN":"Liberia","NAME_ES":"Liberia","NAME_FA":"لیبریا","NAME_FR":"Liberia","NAME_EL":"Λιβερία","NAME_HE":"ליבריה","NAME_HI":"लाइबेरिया","NAME_HU":"Libéria","NAME_ID":"Liberia","NAME_IT":"Liberia","NAME_JA":"リベリア","NAME_KO":"라이베리아","NAME_NL":"Liberia","NAME_PL":"Liberia","NAME_PT":"Libéria","NAME_RU":"Либерия","NAME_SV":"Liberia","NAME_TR":"Liberya","NAME_UK":"Ліберія","NAME_UR":"لائبیریا","NAME_VI":"Liberia","NAME_ZH":"利比里亚","NAME_ZHT":"賴比瑞亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-11.50752,4.351318,-7.399902,8.537695],"geometry":{"type":"Polygon","coordinates":[[[-11.50752,6.906543],[-11.454541,6.951221],[-11.37666,7.094678],[-11.267676,7.232617],[-11.166113,7.314404],[-11.0854,7.398584],[-11.000244,7.463037],[-10.878076,7.538232],[-10.691309,7.736426],[-10.647461,7.759375],[-10.617578,7.896436],[-10.57085,8.071143],[-10.516748,8.125293],[-10.389551,8.157617],[-10.359814,8.187939],[-10.314648,8.31084],[-10.285742,8.454102],[-10.283203,8.485156],[-10.233057,8.488818],[-10.147412,8.519727],[-10.097656,8.505859],[-10.075684,8.4646],[-10.064355,8.429883],[-9.804736,8.519189],[-9.781982,8.537695],[-9.768262,8.53457],[-9.735596,8.453955],[-9.716895,8.458887],[-9.701172,8.482178],[-9.683887,8.484424],[-9.663574,8.473535],[-9.643213,8.436035],[-9.610156,8.402344],[-9.553906,8.378613],[-9.518262,8.346094],[-9.522217,8.26001],[-9.508496,8.17627],[-9.484131,8.156982],[-9.471143,8.106982],[-9.464551,8.0521],[-9.451123,8.023242],[-9.441553,7.96792],[-9.446387,7.908496],[-9.436328,7.866699],[-9.394922,7.794629],[-9.369141,7.703809],[-9.368945,7.639551],[-9.383984,7.571875],[-9.411475,7.509961],[-9.459766,7.442529],[-9.463818,7.415869],[-9.435107,7.398438],[-9.39165,7.394922],[-9.355322,7.408691],[-9.263281,7.377734],[-9.215186,7.333301],[-9.172852,7.278418],[-9.134814,7.250586],[-9.117578,7.215918],[-9.052344,7.225488],[-8.976562,7.258887],[-8.960986,7.274609],[-8.938428,7.266162],[-8.889648,7.262695],[-8.855518,7.322803],[-8.82793,7.391943],[-8.769141,7.466797],[-8.740234,7.495703],[-8.732617,7.543555],[-8.729443,7.605273],[-8.708301,7.658887],[-8.659766,7.688379],[-8.607324,7.687939],[-8.578857,7.677051],[-8.564404,7.625098],[-8.522266,7.585547],[-8.486426,7.558496],[-8.467285,7.547021],[-8.437158,7.516406],[-8.40874,7.411816],[-8.296631,7.074023],[-8.302344,6.980957],[-8.324512,6.92002],[-8.325098,6.8604],[-8.332568,6.801562],[-8.401221,6.705127],[-8.603564,6.507812],[-8.587891,6.490527],[-8.539551,6.468066],[-8.490332,6.456396],[-8.449902,6.4625],[-8.399316,6.413184],[-8.344873,6.35127],[-8.287109,6.319043],[-8.203857,6.290723],[-8.131006,6.287549],[-8.068945,6.298389],[-7.981592,6.286133],[-7.888623,6.234863],[-7.855518,6.150146],[-7.833252,6.076367],[-7.800928,6.038916],[-7.796533,5.975098],[-7.730371,5.919043],[-7.636133,5.907715],[-7.513916,5.842041],[-7.482812,5.845508],[-7.469434,5.853711],[-7.454395,5.841309],[-7.42373,5.651318],[-7.399902,5.550586],[-7.412451,5.509912],[-7.428906,5.477881],[-7.429834,5.324512],[-7.485205,5.236426],[-7.494141,5.139795],[-7.509766,5.108496],[-7.568896,5.080664],[-7.569336,5.006445],[-7.585059,4.916748],[-7.591211,4.821533],[-7.574658,4.572314],[-7.571582,4.386426],[-7.544971,4.351318],[-7.66001,4.366797],[-7.998242,4.508691],[-8.259033,4.58999],[-9.132178,5.054639],[-9.374756,5.241064],[-9.654395,5.518701],[-10.276367,6.077637],[-10.418164,6.167334],[-10.59707,6.210938],[-10.707617,6.258496],[-10.785596,6.310156],[-10.849023,6.465088],[-11.004541,6.557373],[-11.291602,6.688232],[-11.50752,6.906543]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Lesotho","SOV_A3":"LSO","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Lesotho","ADM0_A3":"LSO","GEOU_DIF":0,"GEOUNIT":"Lesotho","GU_A3":"LSO","SU_DIF":0,"SUBUNIT":"Lesotho","SU_A3":"LSO","BRK_DIFF":0,"NAME":"Lesotho","NAME_LONG":"Lesotho","BRK_A3":"LSO","BRK_NAME":"Lesotho","BRK_GROUP":null,"ABBREV":"Les.","POSTAL":"LS","FORMAL_EN":"Kingdom of Lesotho","FORMAL_FR":null,"NAME_CIAWF":"Lesotho","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Lesotho","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":5,"MAPCOLOR9":2,"MAPCOLOR13":8,"POP_EST":2125268,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":2376,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"LT","ISO_A2":"LS","ISO_A2_EH":"LS","ISO_A3":"LSO","ISO_A3_EH":"LSO","ISO_N3":"426","ISO_N3_EH":"426","UN_A3":"426","WB_A2":"LS","WB_A3":"LSO","WOE_ID":23424880,"WOE_ID_EH":23424880,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LSO","ADM0_DIFF":null,"ADM0_TLC":"LSO","ADM0_A3_US":"LSO","ADM0_A3_FR":"LSO","ADM0_A3_RU":"LSO","ADM0_A3_ES":"LSO","ADM0_A3_CN":"LSO","ADM0_A3_TW":"LSO","ADM0_A3_IN":"LSO","ADM0_A3_NP":"LSO","ADM0_A3_PK":"LSO","ADM0_A3_DE":"LSO","ADM0_A3_GB":"LSO","ADM0_A3_BR":"LSO","ADM0_A3_IL":"LSO","ADM0_A3_PS":"LSO","ADM0_A3_SA":"LSO","ADM0_A3_EG":"LSO","ADM0_A3_MA":"LSO","ADM0_A3_PT":"LSO","ADM0_A3_AR":"LSO","ADM0_A3_JP":"LSO","ADM0_A3_KO":"LSO","ADM0_A3_VN":"LSO","ADM0_A3_TR":"LSO","ADM0_A3_ID":"LSO","ADM0_A3_PL":"LSO","ADM0_A3_GR":"LSO","ADM0_A3_IT":"LSO","ADM0_A3_NL":"LSO","ADM0_A3_SE":"LSO","ADM0_A3_BD":"LSO","ADM0_A3_UA":"LSO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Southern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":28.246639,"LABEL_Y":-29.480158,"NE_ID":1159321027,"WIKIDATAID":"Q1013","NAME_AR":"ليسوتو","NAME_BN":"লেসোথো","NAME_DE":"Lesotho","NAME_EN":"Lesotho","NAME_ES":"Lesoto","NAME_FA":"لسوتو","NAME_FR":"Lesotho","NAME_EL":"Λεσότο","NAME_HE":"לסוטו","NAME_HI":"लेसोथो","NAME_HU":"Lesotho","NAME_ID":"Lesotho","NAME_IT":"Lesotho","NAME_JA":"レソト","NAME_KO":"레소토","NAME_NL":"Lesotho","NAME_PL":"Lesotho","NAME_PT":"Lesoto","NAME_RU":"Лесото","NAME_SV":"Lesotho","NAME_TR":"Lesotho","NAME_UK":"Лесото","NAME_UR":"لیسوتھو","NAME_VI":"Lesotho","NAME_ZH":"莱索托","NAME_ZHT":"賴索托","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[27.051758,-30.642285,29.390723,-28.581738],"geometry":{"type":"Polygon","coordinates":[[[28.736914,-30.101953],[28.646875,-30.126563],[28.634375,-30.128711],[28.57666,-30.123047],[28.499609,-30.128906],[28.439063,-30.14248],[28.39209,-30.147559],[28.31543,-30.218457],[28.176172,-30.409863],[28.139063,-30.449902],[28.128711,-30.525098],[28.096387,-30.58457],[28.056836,-30.631055],[28.018164,-30.642285],[27.901855,-30.623828],[27.753125,-30.6],[27.666602,-30.542285],[27.589648,-30.466406],[27.549023,-30.41123],[27.506543,-30.380957],[27.491992,-30.363965],[27.431445,-30.338477],[27.408594,-30.325293],[27.388477,-30.315918],[27.364063,-30.279199],[27.349707,-30.247363],[27.355371,-30.158594],[27.312695,-30.105664],[27.239746,-30.015332],[27.193555,-29.941309],[27.130469,-29.840234],[27.091797,-29.753711],[27.051758,-29.664062],[27.056934,-29.625586],[27.095215,-29.599316],[27.207422,-29.554199],[27.294531,-29.519336],[27.356836,-29.455273],[27.424902,-29.360059],[27.458008,-29.302734],[27.491016,-29.276563],[27.527148,-29.236133],[27.590234,-29.146484],[27.660449,-29.046973],[27.735547,-28.940039],[27.830371,-28.909082],[27.959863,-28.87334],[28.084375,-28.77998],[28.232617,-28.70127],[28.471875,-28.61582],[28.583398,-28.594141],[28.625781,-28.581738],[28.652637,-28.597852],[28.681152,-28.646777],[28.721777,-28.687695],[28.816211,-28.758887],[28.85625,-28.776074],[28.953711,-28.881445],[29.058008,-28.953711],[29.178027,-29.036914],[29.259766,-29.07832],[29.301367,-29.089844],[29.335938,-29.163672],[29.370898,-29.218457],[29.390723,-29.269727],[29.386719,-29.319727],[29.348828,-29.441992],[29.293555,-29.566895],[29.249219,-29.618848],[29.195117,-29.65166],[29.142188,-29.700977],[29.121973,-29.801172],[29.098047,-29.919043],[29.029004,-29.967578],[28.975293,-29.999414],[28.901074,-30.038477],[28.736914,-30.101953]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Lebanon","SOV_A3":"LBN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Lebanon","ADM0_A3":"LBN","GEOU_DIF":0,"GEOUNIT":"Lebanon","GU_A3":"LBN","SU_DIF":0,"SUBUNIT":"Lebanon","SU_A3":"LBN","BRK_DIFF":0,"NAME":"Lebanon","NAME_LONG":"Lebanon","BRK_A3":"LBN","BRK_NAME":"Lebanon","BRK_GROUP":null,"ABBREV":"Leb.","POSTAL":"LB","FORMAL_EN":"Lebanese Republic","FORMAL_FR":null,"NAME_CIAWF":"Lebanon","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Lebanon","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":12,"POP_EST":6855713,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":51991,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"LE","ISO_A2":"LB","ISO_A2_EH":"LB","ISO_A3":"LBN","ISO_A3_EH":"LBN","ISO_N3":"422","ISO_N3_EH":"422","UN_A3":"422","WB_A2":"LB","WB_A3":"LBN","WOE_ID":23424873,"WOE_ID_EH":23424873,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LBN","ADM0_DIFF":null,"ADM0_TLC":"LBN","ADM0_A3_US":"LBN","ADM0_A3_FR":"LBN","ADM0_A3_RU":"LBN","ADM0_A3_ES":"LBN","ADM0_A3_CN":"LBN","ADM0_A3_TW":"LBN","ADM0_A3_IN":"LBN","ADM0_A3_NP":"LBN","ADM0_A3_PK":"LBN","ADM0_A3_DE":"LBN","ADM0_A3_GB":"LBN","ADM0_A3_BR":"LBN","ADM0_A3_IL":"LBN","ADM0_A3_PS":"LBN","ADM0_A3_SA":"LBN","ADM0_A3_EG":"LBN","ADM0_A3_MA":"LBN","ADM0_A3_PT":"LBN","ADM0_A3_AR":"LBN","ADM0_A3_JP":"LBN","ADM0_A3_KO":"LBN","ADM0_A3_VN":"LBN","ADM0_A3_TR":"LBN","ADM0_A3_ID":"LBN","ADM0_A3_PL":"LBN","ADM0_A3_GR":"LBN","ADM0_A3_IT":"LBN","ADM0_A3_NL":"LBN","ADM0_A3_SE":"LBN","ADM0_A3_BD":"LBN","ADM0_A3_UA":"LBN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":4,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":35.992892,"LABEL_Y":34.133368,"NE_ID":1159321013,"WIKIDATAID":"Q822","NAME_AR":"لبنان","NAME_BN":"লেবানন","NAME_DE":"Libanon","NAME_EN":"Lebanon","NAME_ES":"Líbano","NAME_FA":"لبنان","NAME_FR":"Liban","NAME_EL":"Λίβανος","NAME_HE":"לבנון","NAME_HI":"लेबनान","NAME_HU":"Libanon","NAME_ID":"Lebanon","NAME_IT":"Libano","NAME_JA":"レバノン","NAME_KO":"레바논","NAME_NL":"Libanon","NAME_PL":"Liban","NAME_PT":"Líbano","NAME_RU":"Ливан","NAME_SV":"Libanon","NAME_TR":"Lübnan","NAME_UK":"Ліван","NAME_UR":"لبنان","NAME_VI":"Liban","NAME_ZH":"黎巴嫩","NAME_ZHT":"黎巴嫩","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[35.108594,33.075684,36.584961,34.678711],"geometry":{"type":"Polygon","coordinates":[[[35.97627,34.629199],[36.151074,34.628613],[36.263574,34.632861],[36.296289,34.678711],[36.383887,34.65791],[36.433008,34.613477],[36.388672,34.566895],[36.32627,34.51333],[36.329883,34.499609],[36.376465,34.495166],[36.455566,34.466162],[36.504395,34.432373],[36.584961,34.22124],[36.535156,34.134326],[36.45752,34.056836],[36.422852,34.049854],[36.354883,34.011328],[36.297852,33.958643],[36.277832,33.925293],[36.282227,33.894189],[36.362793,33.855127],[36.365039,33.839355],[36.348535,33.827051],[36.283398,33.835596],[36.199414,33.839551],[36.149805,33.839502],[36.092188,33.831592],[36.018848,33.783936],[35.986133,33.752637],[35.968457,33.732422],[35.942383,33.667578],[35.97168,33.623096],[36.02666,33.597949],[36.034473,33.585059],[36.022266,33.5625],[35.967578,33.53457],[35.926563,33.500293],[35.914746,33.465381],[35.869141,33.431738],[35.840723,33.415674],[35.7875,33.369775],[35.734473,33.332617],[35.627246,33.275049],[35.60293,33.240625],[35.579297,33.271484],[35.53252,33.250488],[35.493164,33.119482],[35.41123,33.075684],[35.308887,33.079541],[35.22334,33.091992],[35.108594,33.083691],[35.155078,33.16001],[35.203516,33.258984],[35.251367,33.392627],[35.335742,33.503467],[35.51084,33.879736],[35.611816,34.032178],[35.647852,34.248242],[35.804297,34.437402],[35.921387,34.493311],[35.97793,34.547412],[35.97627,34.629199]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Latvia","SOV_A3":"LVA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Latvia","ADM0_A3":"LVA","GEOU_DIF":0,"GEOUNIT":"Latvia","GU_A3":"LVA","SU_DIF":0,"SUBUNIT":"Latvia","SU_A3":"LVA","BRK_DIFF":0,"NAME":"Latvia","NAME_LONG":"Latvia","BRK_A3":"LVA","BRK_NAME":"Latvia","BRK_GROUP":null,"ABBREV":"Lat.","POSTAL":"LV","FORMAL_EN":"Republic of Latvia","FORMAL_FR":null,"NAME_CIAWF":"Latvia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Latvia","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":7,"MAPCOLOR9":6,"MAPCOLOR13":13,"POP_EST":1912789,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":34102,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"3. Upper middle income","FIPS_10":"LG","ISO_A2":"LV","ISO_A2_EH":"LV","ISO_A3":"LVA","ISO_A3_EH":"LVA","ISO_N3":"428","ISO_N3_EH":"428","UN_A3":"428","WB_A2":"LV","WB_A3":"LVA","WOE_ID":23424874,"WOE_ID_EH":23424874,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LVA","ADM0_DIFF":null,"ADM0_TLC":"LVA","ADM0_A3_US":"LVA","ADM0_A3_FR":"LVA","ADM0_A3_RU":"LVA","ADM0_A3_ES":"LVA","ADM0_A3_CN":"LVA","ADM0_A3_TW":"LVA","ADM0_A3_IN":"LVA","ADM0_A3_NP":"LVA","ADM0_A3_PK":"LVA","ADM0_A3_DE":"LVA","ADM0_A3_GB":"LVA","ADM0_A3_BR":"LVA","ADM0_A3_IL":"LVA","ADM0_A3_PS":"LVA","ADM0_A3_SA":"LVA","ADM0_A3_EG":"LVA","ADM0_A3_MA":"LVA","ADM0_A3_PT":"LVA","ADM0_A3_AR":"LVA","ADM0_A3_JP":"LVA","ADM0_A3_KO":"LVA","ADM0_A3_VN":"LVA","ADM0_A3_TR":"LVA","ADM0_A3_ID":"LVA","ADM0_A3_PL":"LVA","ADM0_A3_GR":"LVA","ADM0_A3_IT":"LVA","ADM0_A3_NL":"LVA","ADM0_A3_SE":"LVA","ADM0_A3_BD":"LVA","ADM0_A3_UA":"LVA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":25.458723,"LABEL_Y":57.066872,"NE_ID":1159321033,"WIKIDATAID":"Q211","NAME_AR":"لاتفيا","NAME_BN":"লাতভিয়া","NAME_DE":"Lettland","NAME_EN":"Latvia","NAME_ES":"Letonia","NAME_FA":"لتونی","NAME_FR":"Lettonie","NAME_EL":"Λετονία","NAME_HE":"לטביה","NAME_HI":"लातविया","NAME_HU":"Lettország","NAME_ID":"Latvia","NAME_IT":"Lettonia","NAME_JA":"ラトビア","NAME_KO":"라트비아","NAME_NL":"Letland","NAME_PL":"Łotwa","NAME_PT":"Letónia","NAME_RU":"Латвия","NAME_SV":"Lettland","NAME_TR":"Letonya","NAME_UK":"Латвія","NAME_UR":"لٹویا","NAME_VI":"Latvia","NAME_ZH":"拉脱维亚","NAME_ZHT":"拉脫維亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[21.014941,55.667529,28.202051,58.063428],"geometry":{"type":"Polygon","coordinates":[[[26.593555,55.667529],[26.542871,55.672412],[26.401074,55.703809],[26.28125,55.750439],[26.20957,55.812109],[26.085547,55.896875],[26.004199,55.940137],[25.876367,55.994336],[25.663184,56.104834],[25.585742,56.130176],[25.206934,56.178418],[25.069922,56.200391],[24.943848,56.325586],[24.903027,56.398193],[24.841016,56.411182],[24.773242,56.395898],[24.699512,56.381299],[24.529004,56.296289],[24.473633,56.284082],[24.367871,56.283008],[24.120703,56.264258],[24.008203,56.295264],[23.812695,56.329248],[23.706738,56.334619],[23.612695,56.333838],[23.195898,56.367139],[23.119824,56.330664],[23.042969,56.324072],[22.968262,56.38042],[22.875586,56.396436],[22.773242,56.377295],[22.586914,56.375098],[22.365918,56.392871],[22.08457,56.406738],[22.042871,56.400781],[21.730566,56.325977],[21.653516,56.314551],[21.314648,56.188135],[21.046094,56.070068],[21.014941,56.258936],[21.031445,56.636572],[21.071289,56.82373],[21.257422,56.932764],[21.350781,57.017676],[21.405078,57.131006],[21.421484,57.23584],[21.45918,57.322461],[21.728711,57.570996],[21.942383,57.597852],[22.231445,57.666797],[22.55459,57.724268],[22.616992,57.651172],[22.648633,57.595361],[23.037793,57.39209],[23.136816,57.323828],[23.287305,57.089746],[23.647754,56.971045],[23.931152,57.008496],[24.054297,57.066113],[24.28125,57.172314],[24.382617,57.250049],[24.403223,57.325],[24.362988,57.645312],[24.301563,57.784131],[24.322559,57.870605],[24.3625,57.866162],[24.458887,57.907861],[24.775781,57.985254],[24.839063,57.988721],[24.911328,58.00459],[25.111035,58.063428],[25.175195,58.032129],[25.228711,57.996582],[25.258301,57.996143],[25.272656,58.009375],[25.268652,58.032227],[25.282617,58.048486],[25.340039,58.039453],[25.571289,57.942773],[25.660156,57.920166],[25.720898,57.913818],[25.79375,57.868555],[25.991113,57.838184],[26.015234,57.814746],[26.030371,57.785547],[26.215039,57.662744],[26.298047,57.601074],[26.462109,57.544482],[26.532617,57.531006],[26.819727,57.588721],[26.899805,57.608789],[26.966016,57.609131],[27.033398,57.57876],[27.187109,57.53833],[27.326563,57.525488],[27.351953,57.528125],[27.469727,57.524023],[27.511133,57.508154],[27.538672,57.429785],[27.672754,57.368115],[27.796875,57.316943],[27.828613,57.293311],[27.838281,57.247705],[27.830273,57.194482],[27.814551,57.166895],[27.762793,57.135107],[27.717383,57.054639],[27.711133,56.978076],[27.639453,56.845654],[27.655664,56.843213],[27.806055,56.86709],[27.848633,56.853418],[27.881543,56.82417],[27.89209,56.741064],[27.941406,56.703711],[27.991602,56.645312],[28.00752,56.599854],[28.103125,56.545703],[28.11084,56.510693],[28.169238,56.386865],[28.191699,56.315576],[28.202051,56.2604],[28.17334,56.190332],[28.147949,56.14292],[28.117871,56.145801],[28.032031,56.133301],[27.896289,56.076172],[27.694238,55.941553],[27.642285,55.911719],[27.589453,55.80918],[27.576758,55.798779],[27.45918,55.803516],[27.427148,55.805957],[27.30918,55.803906],[27.052539,55.830566],[26.953027,55.812939],[26.822461,55.709229],[26.771875,55.693994],[26.620215,55.679639],[26.593555,55.667529]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Laos","SOV_A3":"LAO","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Laos","ADM0_A3":"LAO","GEOU_DIF":0,"GEOUNIT":"Laos","GU_A3":"LAO","SU_DIF":0,"SUBUNIT":"Laos","SU_A3":"LAO","BRK_DIFF":0,"NAME":"Laos","NAME_LONG":"Lao PDR","BRK_A3":"LAO","BRK_NAME":"Laos","BRK_GROUP":null,"ABBREV":"Laos","POSTAL":"LA","FORMAL_EN":"Lao People's Democratic Republic","FORMAL_FR":null,"NAME_CIAWF":"Laos","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Lao PDR","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":1,"MAPCOLOR13":9,"POP_EST":7169455,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":18173,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"LA","ISO_A2":"LA","ISO_A2_EH":"LA","ISO_A3":"LAO","ISO_A3_EH":"LAO","ISO_N3":"418","ISO_N3_EH":"418","UN_A3":"418","WB_A2":"LA","WB_A3":"LAO","WOE_ID":23424872,"WOE_ID_EH":23424872,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"LAO","ADM0_DIFF":null,"ADM0_TLC":"LAO","ADM0_A3_US":"LAO","ADM0_A3_FR":"LAO","ADM0_A3_RU":"LAO","ADM0_A3_ES":"LAO","ADM0_A3_CN":"LAO","ADM0_A3_TW":"LAO","ADM0_A3_IN":"LAO","ADM0_A3_NP":"LAO","ADM0_A3_PK":"LAO","ADM0_A3_DE":"LAO","ADM0_A3_GB":"LAO","ADM0_A3_BR":"LAO","ADM0_A3_IL":"LAO","ADM0_A3_PS":"LAO","ADM0_A3_SA":"LAO","ADM0_A3_EG":"LAO","ADM0_A3_MA":"LAO","ADM0_A3_PT":"LAO","ADM0_A3_AR":"LAO","ADM0_A3_JP":"LAO","ADM0_A3_KO":"LAO","ADM0_A3_VN":"LAO","ADM0_A3_TR":"LAO","ADM0_A3_ID":"LAO","ADM0_A3_PL":"LAO","ADM0_A3_GR":"LAO","ADM0_A3_IT":"LAO","ADM0_A3_NL":"LAO","ADM0_A3_SE":"LAO","ADM0_A3_BD":"LAO","ADM0_A3_UA":"LAO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":4,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":102.533912,"LABEL_Y":19.431821,"NE_ID":1159321011,"WIKIDATAID":"Q819","NAME_AR":"لاوس","NAME_BN":"লাওস","NAME_DE":"Laos","NAME_EN":"Laos","NAME_ES":"Laos","NAME_FA":"لائوس","NAME_FR":"Laos","NAME_EL":"Λάος","NAME_HE":"לאוס","NAME_HI":"लाओस","NAME_HU":"Laosz","NAME_ID":"Laos","NAME_IT":"Laos","NAME_JA":"ラオス","NAME_KO":"라오스","NAME_NL":"Laos","NAME_PL":"Laos","NAME_PT":"Laos","NAME_RU":"Лаос","NAME_SV":"Laos","NAME_TR":"Laos","NAME_UK":"Лаос","NAME_UR":"لاؤس","NAME_VI":"Lào","NAME_ZH":"老挝","NAME_ZHT":"寮國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[100.114941,13.921191,107.653125,22.495264],"geometry":{"type":"Polygon","coordinates":[[[102.127441,22.379199],[102.183008,22.284033],[102.301367,22.178174],[102.442676,22.027148],[102.4875,21.957764],[102.58252,21.904297],[102.609668,21.851758],[102.63125,21.771338],[102.64082,21.711426],[102.662012,21.676025],[102.695312,21.662109],[102.738574,21.67793],[102.771094,21.709668],[102.798242,21.797949],[102.815918,21.807373],[102.845215,21.734766],[102.876172,21.722266],[102.917676,21.712939],[102.949609,21.681348],[102.95918,21.626221],[102.948633,21.569775],[102.90957,21.506348],[102.8875,21.439941],[102.872266,21.3375],[102.851172,21.265918],[102.883789,21.202588],[103.104492,20.89165],[103.210742,20.840625],[103.463574,20.779834],[103.554688,20.737842],[103.635059,20.69707],[103.714453,20.716943],[103.790527,20.809521],[103.882031,20.861426],[104.052051,20.941211],[104.101367,20.945508],[104.195312,20.913965],[104.349609,20.821094],[104.461426,20.73374],[104.530371,20.687988],[104.583203,20.64668],[104.575195,20.600244],[104.532715,20.554883],[104.478613,20.52959],[104.407813,20.485742],[104.367773,20.441406],[104.392188,20.424756],[104.496191,20.413672],[104.618848,20.374512],[104.656445,20.328516],[104.661914,20.289014],[104.676953,20.224707],[104.69873,20.205322],[104.812695,20.216846],[104.847852,20.202441],[104.888672,20.169092],[104.929199,20.082813],[104.92793,20.018115],[104.845801,19.947168],[104.815137,19.904004],[104.801758,19.836133],[104.743164,19.754736],[104.587891,19.61875],[104.546289,19.610547],[104.259863,19.685498],[104.127148,19.680859],[104.062793,19.678418],[104.032031,19.675146],[104.013477,19.646484],[104.051562,19.56416],[104.062891,19.482568],[104.027539,19.420459],[103.932031,19.366064],[103.896387,19.33999],[103.891602,19.30498],[103.918359,19.268506],[104.006348,19.230908],[104.108594,19.195557],[104.445801,18.983838],[104.517969,18.934082],[104.613281,18.860645],[104.716504,18.803418],[104.993164,18.72832],[105.115137,18.678857],[105.146484,18.650977],[105.14541,18.616797],[105.113477,18.573047],[105.087012,18.49624],[105.08584,18.450098],[105.114551,18.405273],[105.163281,18.338721],[105.273242,18.235352],[105.333496,18.189648],[105.4,18.179248],[105.458203,18.154297],[105.518555,18.077441],[105.588477,17.983691],[105.597656,17.918262],[105.627246,17.834424],[105.691406,17.737842],[105.779492,17.644434],[105.902734,17.528662],[105.973535,17.446973],[106.00625,17.415283],[106.269531,17.216797],[106.333398,17.143701],[106.425977,17.002539],[106.465332,16.981836],[106.502246,16.954102],[106.525977,16.876611],[106.533691,16.821045],[106.546191,16.650732],[106.593652,16.600098],[106.6375,16.537939],[106.656445,16.492627],[106.696094,16.458984],[106.739551,16.452539],[106.791602,16.490332],[106.832422,16.52627],[106.851074,16.515625],[106.892773,16.396533],[106.930664,16.353125],[107.001953,16.311816],[107.069727,16.279834],[107.217383,16.136328],[107.296484,16.084033],[107.350098,16.067383],[107.396387,16.043018],[107.410156,15.997852],[107.391992,15.95166],[107.360645,15.921729],[107.188867,15.838623],[107.165918,15.80249],[107.189551,15.747266],[107.232617,15.678076],[107.279395,15.618701],[107.33877,15.560498],[107.45957,15.46582],[107.564258,15.391602],[107.62168,15.309863],[107.653125,15.255225],[107.633691,15.189844],[107.589648,15.118457],[107.555273,15.057031],[107.496289,15.021436],[107.480371,14.979883],[107.504687,14.915918],[107.524512,14.871826],[107.51377,14.817383],[107.519434,14.705078],[107.465137,14.66499],[107.414746,14.562891],[107.379883,14.555322],[107.292676,14.592383],[107.262305,14.572119],[107.206641,14.4979],[107.109375,14.416699],[107.062402,14.415771],[107.030176,14.425684],[106.992187,14.391016],[106.938086,14.327344],[106.913184,14.329395],[106.819922,14.314697],[106.783496,14.335107],[106.738184,14.387744],[106.66543,14.441309],[106.599219,14.479395],[106.563672,14.505078],[106.531152,14.549414],[106.501465,14.578223],[106.446973,14.515039],[106.35498,14.454785],[106.267969,14.466211],[106.225391,14.476221],[106.190723,14.388135],[106.165234,14.372363],[106.008398,14.357178],[105.978906,14.343018],[106.004102,14.262891],[106.09668,14.1271],[106.124707,14.049121],[106.066797,13.921191],[105.904492,13.924512],[105.831445,13.976611],[105.764063,14.049072],[105.739746,14.084961],[105.531543,14.156152],[105.392676,14.10708],[105.350195,14.10957],[105.284863,14.161475],[105.245703,14.200537],[105.207031,14.259375],[105.185547,14.319092],[105.183301,14.34624],[105.243652,14.367871],[105.342188,14.416699],[105.422656,14.471631],[105.475586,14.530127],[105.497363,14.590674],[105.500195,14.66123],[105.523047,14.843311],[105.54668,14.932471],[105.533398,15.041602],[105.49043,15.127588],[105.49043,15.256592],[105.505859,15.319629],[105.513184,15.360889],[105.57373,15.413232],[105.615625,15.488281],[105.638867,15.585938],[105.641016,15.656543],[105.62207,15.699951],[105.562402,15.74126],[105.462012,15.78042],[105.398926,15.829883],[105.373242,15.889697],[105.375586,15.942188],[105.40625,15.987451],[105.330664,16.037891],[105.14873,16.093555],[105.047168,16.160254],[105.025781,16.237988],[104.949902,16.339941],[104.819336,16.466064],[104.750586,16.647559],[104.743555,16.884375],[104.758984,17.077148],[104.816016,17.300293],[104.739648,17.46167],[104.655859,17.546729],[104.539258,17.609277],[104.428125,17.698975],[104.322656,17.81582],[104.196191,17.988379],[104.04873,18.216699],[103.949609,18.318994],[103.898828,18.295313],[103.792285,18.316504],[103.629687,18.382568],[103.487988,18.418164],[103.366992,18.42334],[103.288281,18.408398],[103.251758,18.373486],[103.248926,18.338965],[103.27959,18.30498],[103.263184,18.278467],[103.199707,18.259473],[103.148535,18.221729],[103.091211,18.138232],[103.051367,18.028516],[102.991406,17.98623],[102.898633,17.976904],[102.807422,17.945557],[102.717578,17.892236],[102.675195,17.851758],[102.680078,17.824121],[102.660645,17.817969],[102.616797,17.83335],[102.596094,17.869629],[102.598242,17.926758],[102.552539,17.965088],[102.458789,17.984619],[102.351855,18.045947],[102.231641,18.148975],[102.148242,18.203857],[102.101465,18.210645],[102.03457,18.169824],[101.947461,18.081494],[101.875488,18.046436],[101.818652,18.064648],[101.774805,18.033398],[101.744141,17.952686],[101.6875,17.889404],[101.563672,17.820508],[101.555078,17.812354],[101.413672,17.71875],[101.299707,17.625],[101.16748,17.499023],[101.105176,17.479541],[101.045703,17.509961],[100.955859,17.541113],[100.908496,17.583887],[100.999023,17.797168],[101.113281,18.033545],[101.143945,18.142627],[101.14873,18.222168],[101.1375,18.286865],[101.092773,18.354541],[101.050586,18.407031],[101.046973,18.441992],[101.060449,18.479004],[101.106348,18.533545],[101.165527,18.618311],[101.220508,18.792773],[101.286328,18.977148],[101.279883,19.088916],[101.226562,19.211523],[101.197559,19.32793],[101.220801,19.486621],[101.211914,19.54834],[101.154688,19.579199],[100.966504,19.610791],[100.906055,19.605371],[100.858203,19.585059],[100.806836,19.541943],[100.743945,19.514746],[100.625488,19.499854],[100.513574,19.553467],[100.420117,19.644482],[100.397656,19.756104],[100.466211,19.888916],[100.514551,19.996338],[100.543066,20.088672],[100.539941,20.132373],[100.519531,20.17793],[100.491602,20.184082],[100.431543,20.240723],[100.373145,20.340381],[100.317969,20.385889],[100.266016,20.377295],[100.218066,20.3396],[100.174121,20.272754],[100.139746,20.24541],[100.114941,20.257666],[100.122461,20.31665],[100.129687,20.372217],[100.183887,20.589111],[100.249316,20.730273],[100.326074,20.795703],[100.407422,20.823242],[100.493359,20.812988],[100.565137,20.825098],[100.622949,20.85957],[100.617676,20.879248],[100.549316,20.884229],[100.522266,20.921924],[100.536133,20.992383],[100.566602,21.038184],[100.613672,21.059326],[100.65918,21.130371],[100.703125,21.251367],[100.756641,21.312646],[100.819531,21.314209],[100.927539,21.366211],[101.080371,21.468652],[101.138867,21.56748],[101.19668,21.52207],[101.175391,21.40752],[101.205566,21.383301],[101.219922,21.342432],[101.211816,21.278223],[101.224414,21.22373],[101.247852,21.197314],[101.281445,21.184131],[101.443555,21.230811],[101.542383,21.234277],[101.583887,21.203564],[101.62168,21.184424],[101.668555,21.169629],[101.704785,21.150146],[101.728125,21.156396],[101.783496,21.20415],[101.800586,21.212598],[101.802051,21.235986],[101.763086,21.278906],[101.722949,21.314941],[101.724219,21.39502],[101.743457,21.533838],[101.747266,21.605762],[101.743945,21.777979],[101.736523,21.826514],[101.699609,21.882471],[101.60293,21.989697],[101.575781,22.055273],[101.560254,22.120898],[101.561816,22.162402],[101.537305,22.209863],[101.524512,22.253662],[101.567871,22.276367],[101.619922,22.327441],[101.646191,22.40542],[101.671484,22.462305],[101.70752,22.486572],[101.73877,22.495264],[101.759961,22.490332],[101.841797,22.388477],[101.94541,22.439404],[102.024414,22.439209],[102.091504,22.412256],[102.127441,22.379199]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Kyrgyzstan","SOV_A3":"KGZ","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Kyrgyzstan","ADM0_A3":"KGZ","GEOU_DIF":0,"GEOUNIT":"Kyrgyzstan","GU_A3":"KGZ","SU_DIF":0,"SUBUNIT":"Kyrgyzstan","SU_A3":"KGZ","BRK_DIFF":0,"NAME":"Kyrgyzstan","NAME_LONG":"Kyrgyzstan","BRK_A3":"KGZ","BRK_NAME":"Kyrgyzstan","BRK_GROUP":null,"ABBREV":"Kgz.","POSTAL":"KG","FORMAL_EN":"Kyrgyz Republic","FORMAL_FR":null,"NAME_CIAWF":"Kyrgyzstan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Kyrgyz Republic","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":7,"MAPCOLOR9":7,"MAPCOLOR13":6,"POP_EST":6456900,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":8454,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"5. Low income","FIPS_10":"KG","ISO_A2":"KG","ISO_A2_EH":"KG","ISO_A3":"KGZ","ISO_A3_EH":"KGZ","ISO_N3":"417","ISO_N3_EH":"417","UN_A3":"417","WB_A2":"KG","WB_A3":"KGZ","WOE_ID":23424864,"WOE_ID_EH":23424864,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"KGZ","ADM0_DIFF":null,"ADM0_TLC":"KGZ","ADM0_A3_US":"KGZ","ADM0_A3_FR":"KGZ","ADM0_A3_RU":"KGZ","ADM0_A3_ES":"KGZ","ADM0_A3_CN":"KGZ","ADM0_A3_TW":"KGZ","ADM0_A3_IN":"KGZ","ADM0_A3_NP":"KGZ","ADM0_A3_PK":"KGZ","ADM0_A3_DE":"KGZ","ADM0_A3_GB":"KGZ","ADM0_A3_BR":"KGZ","ADM0_A3_IL":"KGZ","ADM0_A3_PS":"KGZ","ADM0_A3_SA":"KGZ","ADM0_A3_EG":"KGZ","ADM0_A3_MA":"KGZ","ADM0_A3_PT":"KGZ","ADM0_A3_AR":"KGZ","ADM0_A3_JP":"KGZ","ADM0_A3_KO":"KGZ","ADM0_A3_VN":"KGZ","ADM0_A3_TR":"KGZ","ADM0_A3_ID":"KGZ","ADM0_A3_PL":"KGZ","ADM0_A3_GR":"KGZ","ADM0_A3_IT":"KGZ","ADM0_A3_NL":"KGZ","ADM0_A3_SE":"KGZ","ADM0_A3_BD":"KGZ","ADM0_A3_UA":"KGZ","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Central Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":74.532637,"LABEL_Y":41.66854,"NE_ID":1159320977,"WIKIDATAID":"Q813","NAME_AR":"قيرغيزستان","NAME_BN":"কিরগিজস্তান","NAME_DE":"Kirgisistan","NAME_EN":"Kyrgyzstan","NAME_ES":"Kirguistán","NAME_FA":"قرقیزستان","NAME_FR":"Kirghizistan","NAME_EL":"Κιργιζία","NAME_HE":"קירגיזסטן","NAME_HI":"किर्गिज़स्तान","NAME_HU":"Kirgizisztán","NAME_ID":"Kirgizstan","NAME_IT":"Kirghizistan","NAME_JA":"キルギス","NAME_KO":"키르기스스탄","NAME_NL":"Kirgizië","NAME_PL":"Kirgistan","NAME_PT":"Quirguistão","NAME_RU":"Киргизия","NAME_SV":"Kirgizistan","NAME_TR":"Kırgızistan","NAME_UK":"Киргизстан","NAME_UR":"کرغیزستان","NAME_VI":"Kyrgyzstan","NAME_ZH":"吉尔吉斯斯坦","NAME_ZHT":"吉爾吉斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[69.229102,39.20752,80.246191,43.240381],"geometry":{"type":"Polygon","coordinates":[[[70.958008,40.238867],[70.990625,40.254883],[71.094531,40.27124],[71.304688,40.286914],[71.376172,40.275195],[71.457422,40.241992],[71.52041,40.208984],[71.580469,40.210254],[71.629883,40.217139],[71.650879,40.208008],[71.666797,40.178613],[71.69248,40.152344],[71.772656,40.188037],[71.84541,40.234326],[71.902734,40.240967],[71.955664,40.258594],[71.971094,40.289502],[72.012598,40.340723],[72.13125,40.438623],[72.192871,40.454443],[72.232813,40.454395],[72.234668,40.438623],[72.254004,40.424219],[72.357715,40.40166],[72.389258,40.427393],[72.405957,40.463086],[72.369727,40.519727],[72.369043,40.543457],[72.382617,40.565137],[72.402051,40.578076],[72.56748,40.524365],[72.604102,40.525439],[72.67959,40.555615],[72.748828,40.608691],[72.773828,40.650391],[73.112891,40.786035],[73.136914,40.810645],[73.132129,40.828516],[72.990039,40.860107],[72.925977,40.842432],[72.866602,40.842334],[72.830957,40.862158],[72.658301,40.869922],[72.62041,40.883789],[72.505957,40.981689],[72.427344,41.018945],[72.364063,41.043457],[72.294922,41.039941],[72.213086,41.014258],[72.187305,41.025928],[72.180664,41.066846],[72.180957,41.118457],[72.164258,41.17373],[72.11543,41.186572],[72.052441,41.164746],[71.958496,41.187061],[71.878613,41.19502],[71.858008,41.311377],[71.825781,41.361035],[71.79248,41.413135],[71.757715,41.428027],[71.700684,41.454004],[71.697266,41.515576],[71.685156,41.533008],[71.664941,41.541211],[71.6375,41.53418],[71.602246,41.503271],[71.619629,41.435449],[71.60625,41.367432],[71.585547,41.333252],[71.545605,41.308057],[71.5,41.307471],[71.420898,41.341895],[71.408398,41.136035],[71.393066,41.123389],[71.298828,41.15249],[71.223438,41.139941],[71.110742,41.152637],[71.025977,41.186572],[70.962598,41.195996],[70.860449,41.224902],[70.782422,41.2625],[70.734375,41.400537],[70.688867,41.449805],[70.645898,41.460352],[70.471387,41.412646],[70.407813,41.449561],[70.290039,41.496826],[70.200879,41.514453],[70.176953,41.53999],[70.180957,41.571436],[70.45498,41.725049],[70.562891,41.830811],[70.630859,41.875488],[70.727734,41.905225],[70.80332,41.922656],[70.841895,42.019629],[70.856641,42.030811],[70.910352,42.037988],[71.032227,42.077783],[71.228516,42.162891],[71.232324,42.186279],[71.212695,42.206445],[71.12998,42.25],[71.036035,42.284668],[70.979004,42.266553],[70.946777,42.248682],[70.892871,42.293701],[70.892871,42.33999],[70.952344,42.419385],[71.001953,42.459082],[71.022754,42.535449],[71.093555,42.586523],[71.167383,42.667432],[71.256641,42.733545],[71.42207,42.783154],[71.514258,42.766943],[71.600781,42.778662],[71.734766,42.818896],[71.760547,42.821484],[71.816797,42.822168],[72.161816,42.760693],[72.275781,42.757666],[72.543164,42.677734],[72.666113,42.6604],[72.75293,42.637891],[72.792383,42.603467],[72.855078,42.561133],[73.19082,42.526855],[73.28291,42.504102],[73.316016,42.466992],[73.411621,42.419775],[73.492969,42.409033],[73.421875,42.593506],[73.450195,42.703027],[73.55625,43.002783],[73.612012,43.0479],[73.718555,43.087891],[73.886035,43.132568],[73.949219,43.19502],[74.08623,43.188623],[74.145898,43.194092],[74.186816,43.205273],[74.209082,43.240381],[74.363867,43.179443],[74.622266,43.056201],[74.817578,42.978174],[75.047656,42.904395],[75.366211,42.836963],[75.635645,42.8146],[75.681738,42.830469],[75.789551,42.93291],[75.840332,42.9375],[75.932227,42.928516],[76.218164,42.92373],[76.50918,42.918896],[76.646484,42.928809],[76.944043,42.971484],[76.988086,42.973584],[77.057324,42.970654],[77.235547,42.912646],[77.368555,42.904443],[77.459277,42.904736],[77.512207,42.900049],[77.622461,42.902246],[77.80166,42.895215],[78.023145,42.85752],[78.290039,42.864355],[78.375977,42.871484],[78.524219,42.864648],[78.642285,42.828711],[78.791504,42.79082],[78.885156,42.774902],[78.947949,42.766699],[79.059863,42.763818],[79.12666,42.775732],[79.164844,42.759033],[79.203027,42.666016],[79.295508,42.604834],[79.367773,42.547217],[79.428223,42.483496],[79.490137,42.457568],[79.598437,42.456641],[79.803418,42.438477],[79.921094,42.413135],[80.071289,42.302979],[80.209375,42.190039],[80.229199,42.129834],[80.246191,42.059814],[80.235156,42.043457],[80.216211,42.032422],[79.909668,42.01499],[79.84043,41.995752],[79.766113,41.898877],[79.503906,41.820996],[79.354395,41.781055],[79.293555,41.782812],[79.148438,41.719141],[78.742578,41.560059],[78.543164,41.45957],[78.442871,41.417529],[78.362402,41.371631],[78.348828,41.325195],[78.346289,41.281445],[78.123438,41.075635],[77.956445,41.050684],[77.815234,41.055615],[77.719336,41.024316],[77.581738,40.992773],[77.283984,41.014355],[77.182031,41.010742],[76.986621,41.03916],[76.907715,41.02417],[76.824023,40.982324],[76.708398,40.818115],[76.661133,40.779639],[76.639844,40.742236],[76.622168,40.662354],[76.57793,40.577881],[76.520898,40.51123],[76.480176,40.449512],[76.396387,40.389795],[76.318555,40.352246],[76.258301,40.430762],[76.206055,40.408398],[76.156641,40.376465],[76.062305,40.387549],[76.004297,40.371436],[75.871973,40.303223],[75.677148,40.305811],[75.655957,40.329248],[75.617383,40.516602],[75.583496,40.605322],[75.555566,40.625195],[75.520801,40.627539],[75.241016,40.480273],[75.111328,40.454102],[75.004492,40.449512],[74.865625,40.493506],[74.835156,40.482617],[74.811133,40.458789],[74.80127,40.428516],[74.841797,40.344971],[74.830469,40.328516],[74.767773,40.329883],[74.679883,40.310596],[74.613086,40.272168],[74.411914,40.137207],[74.242676,40.092041],[74.085156,40.074316],[74.020508,40.059375],[73.991602,40.043115],[73.93877,39.978809],[73.88457,39.87793],[73.85625,39.828662],[73.835352,39.800146],[73.839746,39.762842],[73.88252,39.714551],[73.914648,39.606494],[73.907129,39.578516],[73.872754,39.533301],[73.822949,39.488965],[73.715723,39.462256],[73.631641,39.448877],[73.575586,39.457617],[73.47041,39.460596],[73.387402,39.442725],[73.336133,39.412354],[73.234961,39.374561],[73.109277,39.361914],[72.949414,39.35708],[72.872461,39.3604],[72.639941,39.385986],[72.563379,39.377197],[72.490234,39.357373],[72.357715,39.336865],[72.287207,39.27373],[72.249805,39.215674],[72.22998,39.20752],[72.147363,39.260742],[72.08418,39.310645],[72.042773,39.352148],[71.991016,39.350928],[71.805957,39.275586],[71.778613,39.277979],[71.725684,39.306592],[71.735352,39.377734],[71.732227,39.422998],[71.672656,39.44707],[71.546289,39.453076],[71.50332,39.478809],[71.505859,39.51709],[71.517383,39.553857],[71.503027,39.582178],[71.470313,39.603662],[71.404297,39.597852],[71.328516,39.568701],[71.272852,39.535303],[71.202734,39.519824],[71.118066,39.513574],[71.065039,39.493408],[71.004883,39.411865],[70.799316,39.394727],[70.733105,39.413281],[70.678613,39.471289],[70.607813,39.564404],[70.567969,39.575879],[70.501172,39.587354],[70.39209,39.581885],[70.244824,39.542627],[70.209277,39.575],[70.171094,39.58418],[70.136816,39.557568],[70.10166,39.560596],[69.955957,39.553076],[69.77207,39.556738],[69.666992,39.574902],[69.598828,39.573779],[69.463281,39.53208],[69.391504,39.532471],[69.297656,39.524805],[69.280273,39.665869],[69.229102,39.761084],[69.244727,39.8271],[69.278809,39.917773],[69.307227,39.968555],[69.36543,39.94707],[69.431934,39.909766],[69.47627,39.919727],[69.487891,39.950439],[69.470996,39.990625],[69.46875,40.020752],[69.493652,40.060352],[69.530273,40.097314],[69.765234,40.158008],[69.966797,40.202246],[70.071484,40.172754],[70.274414,40.104834],[70.378906,40.069873],[70.451367,40.049219],[70.515137,39.949902],[70.556836,39.954492],[70.599219,39.974512],[70.624121,39.998975],[70.644336,40.083447],[70.738574,40.131152],[70.946387,40.187598],[70.960938,40.220654],[70.958008,40.238867]],[[71.206152,39.892578],[71.215625,39.906787],[71.179297,39.979834],[71.228711,40.048145],[71.130273,40.059668],[71.080371,40.079883],[71.024121,40.14917],[71.005469,40.152295],[70.97627,40.133252],[70.960645,40.087988],[70.974414,40.038867],[71.014453,40.005762],[71.041016,39.994922],[71.044824,39.992529],[71.043652,39.976318],[71.011719,39.895117],[71.064258,39.884912],[71.15625,39.883447],[71.206152,39.892578]],[[71.779688,39.950244],[71.789941,39.995312],[71.765332,39.993262],[71.736523,39.980957],[71.68125,39.968652],[71.668945,39.946094],[71.705859,39.917432],[71.75293,39.907129],[71.779688,39.950244]],[[70.70166,39.825293],[70.698242,39.84585],[70.66416,39.855469],[70.56709,39.866602],[70.497754,39.882422],[70.482813,39.882715],[70.489258,39.863037],[70.518652,39.828174],[70.55957,39.790918],[70.612109,39.786768],[70.70166,39.825293]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Kuwait","SOV_A3":"KWT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Kuwait","ADM0_A3":"KWT","GEOU_DIF":0,"GEOUNIT":"Kuwait","GU_A3":"KWT","SU_DIF":0,"SUBUNIT":"Kuwait","SU_A3":"KWT","BRK_DIFF":0,"NAME":"Kuwait","NAME_LONG":"Kuwait","BRK_A3":"KWT","BRK_NAME":"Kuwait","BRK_GROUP":null,"ABBREV":"Kwt.","POSTAL":"KW","FORMAL_EN":"State of Kuwait","FORMAL_FR":null,"NAME_CIAWF":"Kuwait","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Kuwait","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":2,"POP_EST":4207083,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":134628,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"KU","ISO_A2":"KW","ISO_A2_EH":"KW","ISO_A3":"KWT","ISO_A3_EH":"KWT","ISO_N3":"414","ISO_N3_EH":"414","UN_A3":"414","WB_A2":"KW","WB_A3":"KWT","WOE_ID":23424870,"WOE_ID_EH":23424870,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"KWT","ADM0_DIFF":null,"ADM0_TLC":"KWT","ADM0_A3_US":"KWT","ADM0_A3_FR":"KWT","ADM0_A3_RU":"KWT","ADM0_A3_ES":"KWT","ADM0_A3_CN":"KWT","ADM0_A3_TW":"KWT","ADM0_A3_IN":"KWT","ADM0_A3_NP":"KWT","ADM0_A3_PK":"KWT","ADM0_A3_DE":"KWT","ADM0_A3_GB":"KWT","ADM0_A3_BR":"KWT","ADM0_A3_IL":"KWT","ADM0_A3_PS":"KWT","ADM0_A3_SA":"KWT","ADM0_A3_EG":"KWT","ADM0_A3_MA":"KWT","ADM0_A3_PT":"KWT","ADM0_A3_AR":"KWT","ADM0_A3_JP":"KWT","ADM0_A3_KO":"KWT","ADM0_A3_VN":"KWT","ADM0_A3_TR":"KWT","ADM0_A3_ID":"KWT","ADM0_A3_PL":"KWT","ADM0_A3_GR":"KWT","ADM0_A3_IT":"KWT","ADM0_A3_NL":"KWT","ADM0_A3_SE":"KWT","ADM0_A3_BD":"KWT","ADM0_A3_UA":"KWT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":47.313999,"LABEL_Y":29.413628,"NE_ID":1159321009,"WIKIDATAID":"Q817","NAME_AR":"الكويت","NAME_BN":"কুয়েত","NAME_DE":"Kuwait","NAME_EN":"Kuwait","NAME_ES":"Kuwait","NAME_FA":"کویت","NAME_FR":"Koweït","NAME_EL":"Κουβέιτ","NAME_HE":"כווית","NAME_HI":"कुवैत","NAME_HU":"Kuvait","NAME_ID":"Kuwait","NAME_IT":"Kuwait","NAME_JA":"クウェート","NAME_KO":"쿠웨이트","NAME_NL":"Koeweit","NAME_PL":"Kuwejt","NAME_PT":"Kuwait","NAME_RU":"Кувейт","NAME_SV":"Kuwait","NAME_TR":"Kuveyt","NAME_UK":"Кувейт","NAME_UR":"کویت","NAME_VI":"Kuwait","NAME_ZH":"科威特","NAME_ZHT":"科威特","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[46.531445,28.533154,48.44248,30.097314],"geometry":{"type":"MultiPolygon","coordinates":[[[[48.275391,29.624316],[48.218262,29.601953],[48.179688,29.611426],[48.142578,29.665283],[48.081445,29.798926],[48.114746,29.848779],[48.113477,29.870215],[48.120117,29.886328],[48.138867,29.896582],[48.158594,29.95957],[48.184766,29.978857],[48.227734,29.936328],[48.348242,29.782666],[48.347363,29.719971],[48.340234,29.694727],[48.275391,29.624316]]],[[[48.44248,28.54292],[48.26875,28.540527],[48.049609,28.5375],[47.871973,28.535449],[47.671289,28.533154],[47.583105,28.627979],[47.553223,28.731543],[47.521289,28.837842],[47.433203,28.989551],[47.13877,29.026172],[46.982227,29.045654],[46.724805,29.074609],[46.531445,29.09624],[46.69375,29.259668],[46.769336,29.347461],[46.905859,29.5375],[46.975977,29.672852],[47.043652,29.822998],[47.102051,29.93999],[47.114355,29.961328],[47.148242,30.000977],[47.223242,30.041504],[47.331348,30.079687],[47.514844,30.096484],[47.64375,30.097314],[47.672754,30.095605],[47.753906,30.076611],[47.978711,29.982812],[47.973633,29.945898],[48.005664,29.835791],[48.077344,29.715576],[48.136133,29.618115],[48.143457,29.572461],[48.089453,29.579102],[48.04834,29.59751],[47.969629,29.616699],[47.81748,29.487402],[47.725293,29.416943],[47.722656,29.393018],[47.845313,29.365723],[47.935352,29.366602],[47.998145,29.385547],[48.051465,29.355371],[48.086328,29.275488],[48.100391,29.210742],[48.183789,28.979395],[48.25293,28.90127],[48.339258,28.763281],[48.371289,28.691846],[48.389648,28.631592],[48.44248,28.54292]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Kosovo","SOV_A3":"KOS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Disputed","TLC":"1","ADMIN":"Kosovo","ADM0_A3":"KOS","GEOU_DIF":0,"GEOUNIT":"Kosovo","GU_A3":"KOS","SU_DIF":0,"SUBUNIT":"Kosovo","SU_A3":"KOS","BRK_DIFF":0,"NAME":"Kosovo","NAME_LONG":"Kosovo","BRK_A3":"KOS","BRK_NAME":"Kosovo","BRK_GROUP":null,"ABBREV":"Kos.","POSTAL":"KO","FORMAL_EN":"Republic of Kosovo","FORMAL_FR":null,"NAME_CIAWF":"Kosovo","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Kosovo","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":3,"MAPCOLOR13":11,"POP_EST":1794248,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":7926,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"KV","ISO_A2":"-99","ISO_A2_EH":"XK","ISO_A3":"-99","ISO_A3_EH":"-99","ISO_N3":"-99","ISO_N3_EH":"-99","UN_A3":"-099","WB_A2":"KV","WB_A3":"KSV","WOE_ID":-90,"WOE_ID_EH":29389201,"WOE_NOTE":"Subunit of Serbia in WOE still; should include 29389201, 29389207, 29389218, 29389209 and 29389214.","ADM0_ISO":"SRB","ADM0_DIFF":"1","ADM0_TLC":"KOS","ADM0_A3_US":"KOS","ADM0_A3_FR":"KOS","ADM0_A3_RU":"SRB","ADM0_A3_ES":"SRB","ADM0_A3_CN":"SRB","ADM0_A3_TW":"KOS","ADM0_A3_IN":"SRB","ADM0_A3_NP":"SRB","ADM0_A3_PK":"KOS","ADM0_A3_DE":"KOS","ADM0_A3_GB":"SRB","ADM0_A3_BR":"KOS","ADM0_A3_IL":"KOS","ADM0_A3_PS":"SRB","ADM0_A3_SA":"KOS","ADM0_A3_EG":"KOS","ADM0_A3_MA":"SRB","ADM0_A3_PT":"KOS","ADM0_A3_AR":"SRB","ADM0_A3_JP":"KOS","ADM0_A3_KO":"KOS","ADM0_A3_VN":"SRB","ADM0_A3_TR":"KOS","ADM0_A3_ID":"SRB","ADM0_A3_PL":"KOS","ADM0_A3_GR":"SRB","ADM0_A3_IT":"KOS","ADM0_A3_NL":"KOS","ADM0_A3_SE":"KOS","ADM0_A3_BD":"KOS","ADM0_A3_UA":"SRB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":20.860719,"LABEL_Y":42.593587,"NE_ID":1159321007,"WIKIDATAID":"Q1246","NAME_AR":"كوسوفو","NAME_BN":"কসোভো","NAME_DE":"Kosovo","NAME_EN":"Kosovo","NAME_ES":"Kosovo","NAME_FA":"کوزووو","NAME_FR":"Kosovo","NAME_EL":"Κοσσυφοπέδιο","NAME_HE":"קוסובו","NAME_HI":"कोसोवो गणराज्य","NAME_HU":"Koszovó","NAME_ID":"Kosovo","NAME_IT":"Kosovo","NAME_JA":"コソボ共和国","NAME_KO":"코소보","NAME_NL":"Kosovo","NAME_PL":"Kosowo","NAME_PT":"Kosovo","NAME_RU":"Республика Косово","NAME_SV":"Kosovo","NAME_TR":"Kosova","NAME_UK":"Косово","NAME_UR":"کوسووہ","NAME_VI":"Kosovo","NAME_ZH":"科索沃","NAME_ZHT":"科索沃","FCLASS_ISO":"Unrecognized","TLC_DIFF":"1","FCLASS_TLC":"Admin-0 country","FCLASS_US":"Admin-0 country","FCLASS_FR":"Admin-0 country","FCLASS_RU":"Admin-1 region","FCLASS_ES":"Unrecognized","FCLASS_CN":"Unrecognized","FCLASS_TW":"Admin-0 country","FCLASS_IN":"Admin-1 region","FCLASS_NP":"Unrecognized","FCLASS_PK":"Admin-0 country","FCLASS_DE":"Admin-0 country","FCLASS_GB":"Admin-0 country","FCLASS_BR":"Unrecognized","FCLASS_IL":"Admin-0 country","FCLASS_PS":"Unrecognized","FCLASS_SA":"Admin-0 country","FCLASS_EG":"Admin-0 country","FCLASS_MA":"Unrecognized","FCLASS_PT":"Admin-0 country","FCLASS_AR":"Unrecognized","FCLASS_JP":"Admin-0 country","FCLASS_KO":"Admin-0 country","FCLASS_VN":"Unrecognized","FCLASS_TR":"Admin-0 country","FCLASS_ID":"Unrecognized","FCLASS_PL":"Admin-0 country","FCLASS_GR":"Unrecognized","FCLASS_IT":"Admin-0 country","FCLASS_NL":"Admin-0 country","FCLASS_SE":"Admin-0 country","FCLASS_BD":"Admin-0 country","FCLASS_UA":"Unrecognized"},"bbox":[20.029492,41.853809,21.75293,43.261084],"geometry":{"type":"Polygon","coordinates":[[[20.344336,42.82793],[20.468848,42.85791],[20.486816,42.879053],[20.458398,42.924561],[20.475098,42.953027],[20.624023,43.03418],[20.648535,43.070947],[20.657617,43.099854],[20.637598,43.130371],[20.609668,43.178418],[20.623145,43.198633],[20.700586,43.226367],[20.763379,43.258594],[20.800586,43.261084],[20.823828,43.237939],[20.823828,43.213965],[20.844434,43.173437],[20.890723,43.15166],[20.967676,43.116016],[21.057031,43.091699],[21.127051,43.043018],[21.222656,42.956201],[21.237109,42.913232],[21.323145,42.874707],[21.403027,42.831543],[21.390625,42.751416],[21.6625,42.681494],[21.723828,42.681982],[21.75293,42.669824],[21.752148,42.651514],[21.730664,42.595459],[21.619043,42.423242],[21.609863,42.387451],[21.52998,42.35],[21.518945,42.328418],[21.541602,42.280811],[21.5625,42.24751],[21.56084,42.247656],[21.389551,42.219824],[21.331738,42.187158],[21.297559,42.130078],[21.286621,42.100391],[21.256348,42.099512],[21.206055,42.128955],[21.14248,42.175],[21.059766,42.171289],[20.778125,42.071045],[20.750391,42.018359],[20.744141,41.904297],[20.725,41.873535],[20.694922,41.853809],[20.578516,41.866211],[20.566211,41.873682],[20.581445,41.917432],[20.575391,42.013086],[20.522852,42.171484],[20.485449,42.223389],[20.408301,42.274951],[20.348242,42.308789],[20.240527,42.338965],[20.185742,42.425879],[20.103516,42.524658],[20.063965,42.547266],[20.070312,42.55708],[20.089258,42.631543],[20.065723,42.68584],[20.029492,42.732031],[20.054297,42.760059],[20.12998,42.759766],[20.192578,42.754639],[20.215137,42.798828],[20.344336,42.82793]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":6,"SOVEREIGNT":"Kiribati","SOV_A3":"KIR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Kiribati","ADM0_A3":"KIR","GEOU_DIF":0,"GEOUNIT":"Kiribati","GU_A3":"KIR","SU_DIF":0,"SUBUNIT":"Kiribati","SU_A3":"KIR","BRK_DIFF":0,"NAME":"Kiribati","NAME_LONG":"Kiribati","BRK_A3":"KIR","BRK_NAME":"Kiribati","BRK_GROUP":null,"ABBREV":"Kir.","POSTAL":"KI","FORMAL_EN":"Republic of Kiribati","FORMAL_FR":null,"NAME_CIAWF":"Kiribati","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Kiribati","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":7,"MAPCOLOR9":6,"MAPCOLOR13":12,"POP_EST":117606,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":194,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"KR","ISO_A2":"KI","ISO_A2_EH":"KI","ISO_A3":"KIR","ISO_A3_EH":"KIR","ISO_N3":"296","ISO_N3_EH":"296","UN_A3":"296","WB_A2":"KI","WB_A3":"KIR","WOE_ID":23424867,"WOE_ID_EH":23424867,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"KIR","ADM0_DIFF":null,"ADM0_TLC":"KIR","ADM0_A3_US":"KIR","ADM0_A3_FR":"KIR","ADM0_A3_RU":"KIR","ADM0_A3_ES":"KIR","ADM0_A3_CN":"KIR","ADM0_A3_TW":"KIR","ADM0_A3_IN":"KIR","ADM0_A3_NP":"KIR","ADM0_A3_PK":"KIR","ADM0_A3_DE":"KIR","ADM0_A3_GB":"KIR","ADM0_A3_BR":"KIR","ADM0_A3_IL":"KIR","ADM0_A3_PS":"KIR","ADM0_A3_SA":"KIR","ADM0_A3_EG":"KIR","ADM0_A3_MA":"KIR","ADM0_A3_PT":"KIR","ADM0_A3_AR":"KIR","ADM0_A3_JP":"KIR","ADM0_A3_KO":"KIR","ADM0_A3_VN":"KIR","ADM0_A3_TR":"KIR","ADM0_A3_ID":"KIR","ADM0_A3_PL":"KIR","ADM0_A3_GR":"KIR","ADM0_A3_IT":"KIR","ADM0_A3_NL":"KIR","ADM0_A3_SE":"KIR","ADM0_A3_BD":"KIR","ADM0_A3_UA":"KIR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Micronesia","REGION_WB":"East Asia & Pacific","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-157.384577,"LABEL_Y":1.820437,"NE_ID":1159320981,"WIKIDATAID":"Q710","NAME_AR":"كيريباتي","NAME_BN":"কিরিবাস","NAME_DE":"Kiribati","NAME_EN":"Kiribati","NAME_ES":"Kiribati","NAME_FA":"کیریباتی","NAME_FR":"Kiribati","NAME_EL":"Κιριμπάτι","NAME_HE":"קיריבטי","NAME_HI":"किरिबाती","NAME_HU":"Kiribati","NAME_ID":"Kiribati","NAME_IT":"Kiribati","NAME_JA":"キリバス","NAME_KO":"키리바시","NAME_NL":"Kiribati","NAME_PL":"Kiribati","NAME_PT":"Kiribati","NAME_RU":"Кирибати","NAME_SV":"Kiribati","NAME_TR":"Kiribati","NAME_UK":"Кірибаті","NAME_UR":"کیریباتی","NAME_VI":"Kiribati","NAME_ZH":"基里巴斯","NAME_ZHT":"吉里巴斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-174.54082,-11.456836,174.778906,3.923535],"geometry":{"type":"MultiPolygon","coordinates":[[[[172.969629,3.129199],[172.90625,3.095898],[172.887109,3.10127],[172.9625,3.148779],[172.962207,3.14292],[172.969629,3.129199]]],[[[172.844238,3.051221],[172.770313,3.012549],[172.750488,3.033057],[172.777344,3.033887],[172.826953,3.071094],[172.887109,3.073975],[172.880273,3.053516],[172.844238,3.051221]]],[[[173.01875,1.845703],[173.023633,1.822559],[172.966602,1.8854],[172.932715,1.925928],[172.934766,1.943701],[172.950098,1.93252],[172.969141,1.912695],[172.981543,1.896973],[173.01875,1.845703]]],[[[173.029395,1.717383],[172.993262,1.713086],[173.02041,1.72749],[173.027832,1.747314],[173.023633,1.809326],[173.037695,1.804395],[173.042676,1.77876],[173.045215,1.741553],[173.029395,1.717383]]],[[[173.032813,1.013135],[173.086523,0.973437],[173.079492,0.94624],[173.061426,0.915234],[172.991113,0.835449],[172.969922,0.842773],[173.038574,0.914746],[173.065039,0.962695],[173.025586,0.999072],[173.009961,0.990967],[173.003711,0.990967],[172.990039,1.025098],[173.003711,1.025098],[173.032813,1.013135]]],[[[174.508691,-0.801758],[174.476367,-0.829004],[174.464063,-0.804199],[174.479688,-0.773633],[174.452734,-0.64707],[174.407813,-0.629785],[174.381055,-0.591797],[174.394043,-0.591797],[174.43877,-0.626563],[174.474805,-0.642188],[174.49541,-0.725684],[174.508691,-0.801758]]],[[[174.773242,-1.211914],[174.778906,-1.263379],[174.755957,-1.256445],[174.748438,-1.236426],[174.741016,-1.18457],[174.716797,-1.133691],[174.744141,-1.147363],[174.766602,-1.187109],[174.773242,-1.211914]]],[[[173.038379,1.34209],[173.011328,1.338379],[173.028613,1.35874],[173.143359,1.381348],[173.15332,1.387549],[173.171875,1.375146],[173.171484,1.363379],[173.163086,1.35752],[173.106348,1.35708],[173.061719,1.346338],[173.038379,1.34209]]],[[[169.551074,-0.87373],[169.541699,-0.875977],[169.522949,-0.865625],[169.525586,-0.852637],[169.538672,-0.846875],[169.555273,-0.856543],[169.551074,-0.87373]]],[[[-172.214551,-4.511133],[-172.208301,-4.517969],[-172.193896,-4.516016],[-172.180957,-4.514844],[-172.188818,-4.52168],[-172.215234,-4.524414],[-172.22832,-4.507031],[-172.212207,-4.493945],[-172.197852,-4.491699],[-172.196387,-4.49541],[-172.197217,-4.499512],[-172.203857,-4.499512],[-172.214746,-4.502637],[-172.214551,-4.511133]]],[[[-171.085156,-3.135449],[-171.089795,-3.143262],[-171.096729,-3.136914],[-171.091748,-3.125098],[-171.087695,-3.115039],[-171.081006,-3.12041],[-171.085156,-3.135449]]],[[[-171.233203,-4.463477],[-171.243018,-4.468066],[-171.254541,-4.466504],[-171.261768,-4.459766],[-171.261963,-4.449219],[-171.252393,-4.441602],[-171.239404,-4.444141],[-171.231885,-4.453711],[-171.233203,-4.463477]]],[[[-174.512939,-4.675098],[-174.501123,-4.688379],[-174.501025,-4.694727],[-174.506738,-4.693652],[-174.523877,-4.689648],[-174.529248,-4.681641],[-174.516748,-4.686816],[-174.511475,-4.685645],[-174.523047,-4.674023],[-174.533105,-4.665332],[-174.540674,-4.661719],[-174.54082,-4.657324],[-174.531396,-4.659473],[-174.512939,-4.675098]]],[[[-154.95625,-4.087988],[-154.959033,-4.093848],[-154.971094,-4.08584],[-154.994629,-4.071094],[-155.0146,-4.054883],[-155.015039,-4.048047],[-154.986963,-4.038574],[-154.951221,-4.031055],[-154.943359,-4.041602],[-154.950049,-4.055957],[-154.95625,-4.087988]]],[[[-151.782617,-11.441016],[-151.790869,-11.456836],[-151.806689,-11.45127],[-151.815967,-11.431152],[-151.819141,-11.409277],[-151.813281,-11.391797],[-151.802783,-11.392676],[-151.791113,-11.414355],[-151.782617,-11.441016]]],[[[-155.863818,-5.62666],[-155.887109,-5.631836],[-155.914355,-5.631641],[-155.92793,-5.618555],[-155.928613,-5.607617],[-155.919385,-5.60752],[-155.910791,-5.609473],[-155.872266,-5.611328],[-155.862354,-5.619141],[-155.863818,-5.62666]]],[[[-157.342139,1.855566],[-157.175781,1.739844],[-157.246143,1.731738],[-157.420117,1.787549],[-157.578955,1.902051],[-157.531494,1.926855],[-157.508203,1.885693],[-157.43584,1.847266],[-157.393213,1.927686],[-157.365186,1.946094],[-157.492188,2.029297],[-157.441895,2.025049],[-157.321875,1.968555],[-157.342139,1.855566]]],[[[-159.339063,3.923535],[-159.259326,3.839209],[-159.274756,3.796582],[-159.332275,3.800488],[-159.35874,3.815332],[-159.313672,3.822656],[-159.30625,3.838379],[-159.326807,3.863184],[-159.354199,3.880518],[-159.373193,3.880518],[-159.377783,3.846631],[-159.409033,3.873242],[-159.390967,3.899561],[-159.369043,3.916992],[-159.339063,3.923535]]],[[[-171.697607,-2.766406],[-171.66499,-2.785547],[-171.639648,-2.81123],[-171.627637,-2.846973],[-171.628418,-2.855859],[-171.647363,-2.855566],[-171.670605,-2.844434],[-171.687305,-2.829785],[-171.696094,-2.825684],[-171.698291,-2.822266],[-171.678369,-2.824512],[-171.655371,-2.839844],[-171.638525,-2.84668],[-171.639746,-2.829199],[-171.660205,-2.798535],[-171.672656,-2.787988],[-171.688037,-2.779102],[-171.705957,-2.773145],[-171.718164,-2.778613],[-171.724805,-2.781348],[-171.727637,-2.774121],[-171.725146,-2.767871],[-171.718896,-2.761426],[-171.697607,-2.766406]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":2,"SOVEREIGNT":"Kenya","SOV_A3":"KEN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Kenya","ADM0_A3":"KEN","GEOU_DIF":0,"GEOUNIT":"Kenya","GU_A3":"KEN","SU_DIF":0,"SUBUNIT":"Kenya","SU_A3":"KEN","BRK_DIFF":0,"NAME":"Kenya","NAME_LONG":"Kenya","BRK_A3":"KEN","BRK_NAME":"Kenya","BRK_GROUP":null,"ABBREV":"Ken.","POSTAL":"KE","FORMAL_EN":"Republic of Kenya","FORMAL_FR":null,"NAME_CIAWF":"Kenya","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Kenya","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":2,"MAPCOLOR9":7,"MAPCOLOR13":3,"POP_EST":52573973,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":95503,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"5. Low income","FIPS_10":"KE","ISO_A2":"KE","ISO_A2_EH":"KE","ISO_A3":"KEN","ISO_A3_EH":"KEN","ISO_N3":"404","ISO_N3_EH":"404","UN_A3":"404","WB_A2":"KE","WB_A3":"KEN","WOE_ID":23424863,"WOE_ID_EH":23424863,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"KEN","ADM0_DIFF":null,"ADM0_TLC":"KEN","ADM0_A3_US":"KEN","ADM0_A3_FR":"KEN","ADM0_A3_RU":"KEN","ADM0_A3_ES":"KEN","ADM0_A3_CN":"KEN","ADM0_A3_TW":"KEN","ADM0_A3_IN":"KEN","ADM0_A3_NP":"KEN","ADM0_A3_PK":"KEN","ADM0_A3_DE":"KEN","ADM0_A3_GB":"KEN","ADM0_A3_BR":"KEN","ADM0_A3_IL":"KEN","ADM0_A3_PS":"KEN","ADM0_A3_SA":"KEN","ADM0_A3_EG":"KEN","ADM0_A3_MA":"KEN","ADM0_A3_PT":"KEN","ADM0_A3_AR":"KEN","ADM0_A3_JP":"KEN","ADM0_A3_KO":"KEN","ADM0_A3_VN":"KEN","ADM0_A3_TR":"KEN","ADM0_A3_ID":"KEN","ADM0_A3_PL":"KEN","ADM0_A3_GR":"KEN","ADM0_A3_IT":"KEN","ADM0_A3_NL":"KEN","ADM0_A3_SE":"KEN","ADM0_A3_BD":"KEN","ADM0_A3_UA":"KEN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":37.907632,"LABEL_Y":0.549043,"NE_ID":1159320971,"WIKIDATAID":"Q114","NAME_AR":"كينيا","NAME_BN":"কেনিয়া","NAME_DE":"Kenia","NAME_EN":"Kenya","NAME_ES":"Kenia","NAME_FA":"کنیا","NAME_FR":"Kenya","NAME_EL":"Κένυα","NAME_HE":"קניה","NAME_HI":"कीनिया","NAME_HU":"Kenya","NAME_ID":"Kenya","NAME_IT":"Kenya","NAME_JA":"ケニア","NAME_KO":"케냐","NAME_NL":"Kenia","NAME_PL":"Kenia","NAME_PT":"Quénia","NAME_RU":"Кения","NAME_SV":"Kenya","NAME_TR":"Kenya","NAME_UK":"Кенія","NAME_UR":"کینیا","NAME_VI":"Kenya","NAME_ZH":"肯尼亚","NAME_ZHT":"肯亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[33.9,-4.692383,41.883984,5.492285],"geometry":{"type":"MultiPolygon","coordinates":[[[[40.994434,-2.158398],[40.957324,-2.167285],[40.976465,-2.109766],[41.086035,-2.036523],[41.130664,-2.053027],[41.139258,-2.069824],[41.136816,-2.085059],[41.118164,-2.100098],[40.994434,-2.158398]]],[[[33.903223,-1.002051],[33.9,-0.831641],[33.924414,-0.397852],[33.921484,-0.016992],[33.943164,0.173779],[34.037207,0.294531],[34.080566,0.382471],[34.111719,0.505127],[34.160938,0.605176],[34.272559,0.686426],[34.292578,0.73125],[34.41084,0.867285],[34.481738,1.042139],[34.535254,1.101562],[34.601953,1.156445],[34.649121,1.185303],[34.726758,1.214258],[34.787598,1.230713],[34.798633,1.244531],[34.803809,1.272852],[34.783594,1.381152],[34.80957,1.416699],[34.850977,1.489014],[34.89834,1.556494],[34.941211,1.599268],[34.965234,1.643359],[34.976465,1.719629],[34.978223,1.773633],[34.977539,1.861914],[34.964063,2.062402],[34.913965,2.230176],[34.883008,2.41792],[34.905762,2.479687],[34.866211,2.589697],[34.84668,2.595752],[34.814453,2.619824],[34.773438,2.723437],[34.74248,2.818115],[34.723242,2.841943],[34.58916,2.924756],[34.522559,3.119971],[34.447852,3.163477],[34.407227,3.35752],[34.399414,3.412695],[34.441797,3.60625],[34.437695,3.650586],[34.392871,3.691504],[34.26709,3.733154],[34.165039,3.812988],[34.178223,3.840869],[34.185742,3.869775],[34.132031,3.88916],[33.976074,4.220215],[34.176855,4.419092],[34.380176,4.620654],[34.639844,4.875488],[34.87832,5.10957],[35.084473,5.311865],[35.268359,5.492285],[35.263867,5.45791],[35.264648,5.412061],[35.287598,5.384082],[35.325293,5.364893],[35.37793,5.385156],[35.424023,5.413281],[35.468652,5.419092],[35.74502,5.343994],[35.791406,5.278564],[35.788477,5.208105],[35.800293,5.156934],[35.779297,5.105566],[35.756152,4.950488],[35.763086,4.808008],[35.845605,4.702637],[35.919824,4.619824],[35.978711,4.503809],[36.021973,4.468115],[36.081934,4.449707],[36.271875,4.444727],[36.553027,4.437256],[36.823633,4.430127],[36.848242,4.427344],[36.905566,4.411475],[37.15459,4.254541],[37.38252,4.11084],[37.575488,3.985937],[37.762891,3.864648],[37.944922,3.746729],[38.086133,3.648828],[38.225293,3.618994],[38.451563,3.604834],[38.608008,3.600098],[38.752734,3.558984],[38.967773,3.520605],[39.12832,3.500879],[39.225488,3.47876],[39.494434,3.456104],[39.538867,3.469189],[39.65752,3.577832],[39.790332,3.754248],[39.842188,3.851465],[40.01416,3.947949],[40.316016,4.082715],[40.528711,4.177637],[40.765234,4.273047],[40.872656,4.190332],[41.020801,4.057471],[41.087207,3.991943],[41.14043,3.962988],[41.220898,3.943555],[41.318945,3.943066],[41.372461,3.946191],[41.481934,3.963281],[41.737695,3.979053],[41.883984,3.977734],[41.760938,3.801611],[41.613477,3.590479],[41.341797,3.20166],[41.134961,2.99707],[40.978711,2.842432],[40.964453,2.814648],[40.965039,2.642334],[40.966699,2.220947],[40.97002,1.378174],[40.973242,0.5354],[40.976562,-0.307324],[40.978223,-0.728711],[40.978711,-0.870313],[41.11582,-1.047461],[41.249805,-1.220508],[41.426953,-1.449512],[41.521875,-1.572266],[41.537598,-1.613184],[41.532715,-1.695312],[41.386914,-1.866992],[41.26748,-1.94502],[41.106836,-1.982324],[41.058691,-1.975195],[40.995508,-1.950586],[40.970703,-1.991797],[40.952148,-2.055957],[40.916602,-2.04248],[40.889746,-2.023535],[40.905859,-2.1375],[40.922363,-2.19375],[40.898242,-2.269922],[40.820117,-2.336328],[40.813184,-2.392383],[40.644141,-2.539453],[40.404492,-2.555664],[40.278516,-2.628613],[40.222461,-2.688379],[40.179785,-2.819043],[40.194727,-3.019238],[40.128125,-3.17334],[40.11543,-3.250586],[39.991699,-3.350684],[39.936816,-3.44248],[39.896289,-3.53584],[39.860938,-3.576758],[39.819141,-3.786035],[39.761426,-3.913086],[39.745801,-3.955176],[39.731641,-3.993262],[39.686914,-4.067871],[39.658008,-4.119141],[39.637109,-4.152832],[39.490918,-4.478418],[39.376953,-4.625488],[39.2875,-4.608594],[39.228125,-4.665527],[39.221777,-4.692383],[39.190137,-4.677246],[39.11543,-4.623535],[38.961914,-4.512988],[38.808398,-4.402441],[38.654883,-4.291895],[38.501367,-4.181445],[38.347852,-4.070898],[38.194336,-3.960352],[38.04082,-3.849805],[37.887305,-3.739258],[37.797266,-3.674414],[37.757422,-3.636133],[37.726172,-3.559766],[37.711035,-3.54082],[37.670117,-3.516797],[37.62207,-3.511523],[37.608203,-3.49707],[37.608691,-3.460254],[37.625391,-3.407227],[37.681836,-3.305762],[37.687988,-3.246191],[37.676855,-3.178418],[37.65918,-3.07002],[37.643848,-3.04541],[37.542188,-2.988574],[37.329004,-2.869629],[37.11582,-2.750586],[36.902637,-2.631641],[36.689453,-2.512598],[36.476367,-2.393555],[36.263086,-2.274609],[36.05,-2.155664],[35.836914,-2.036621],[35.62373,-1.917578],[35.410547,-1.798633],[35.197461,-1.67959],[34.984277,-1.560547],[34.771094,-1.441602],[34.55791,-1.322559],[34.344727,-1.203613],[34.131641,-1.08457],[34.051563,-1.039844],[33.979395,-1.002051],[33.903223,-1.002051]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":3,"SOVEREIGNT":"Kazakhstan","SOV_A3":"KA1","ADM0_DIF":1,"LEVEL":1,"TYPE":"Sovereignty","TLC":"1","ADMIN":"Kazakhstan","ADM0_A3":"KAZ","GEOU_DIF":0,"GEOUNIT":"Kazakhstan","GU_A3":"KAZ","SU_DIF":0,"SUBUNIT":"Kazakhstan","SU_A3":"KAZ","BRK_DIFF":0,"NAME":"Kazakhstan","NAME_LONG":"Kazakhstan","BRK_A3":"KAZ","BRK_NAME":"Kazakhstan","BRK_GROUP":null,"ABBREV":"Kaz.","POSTAL":"KZ","FORMAL_EN":"Republic of Kazakhstan","FORMAL_FR":null,"NAME_CIAWF":"Kazakhstan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Kazakhstan","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":1,"MAPCOLOR9":6,"MAPCOLOR13":1,"POP_EST":18513930,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":181665,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"KZ","ISO_A2":"KZ","ISO_A2_EH":"KZ","ISO_A3":"KAZ","ISO_A3_EH":"KAZ","ISO_N3":"398","ISO_N3_EH":"398","UN_A3":"398","WB_A2":"KZ","WB_A3":"KAZ","WOE_ID":-90,"WOE_ID_EH":23424871,"WOE_NOTE":"Includes Baykonur Cosmodrome as an Admin-1 states provinces","ADM0_ISO":"KAZ","ADM0_DIFF":null,"ADM0_TLC":"KAZ","ADM0_A3_US":"KAZ","ADM0_A3_FR":"KAZ","ADM0_A3_RU":"KAZ","ADM0_A3_ES":"KAZ","ADM0_A3_CN":"KAZ","ADM0_A3_TW":"KAZ","ADM0_A3_IN":"KAZ","ADM0_A3_NP":"KAZ","ADM0_A3_PK":"KAZ","ADM0_A3_DE":"KAZ","ADM0_A3_GB":"KAZ","ADM0_A3_BR":"KAZ","ADM0_A3_IL":"KAZ","ADM0_A3_PS":"KAZ","ADM0_A3_SA":"KAZ","ADM0_A3_EG":"KAZ","ADM0_A3_MA":"KAZ","ADM0_A3_PT":"KAZ","ADM0_A3_AR":"KAZ","ADM0_A3_JP":"KAZ","ADM0_A3_KO":"KAZ","ADM0_A3_VN":"KAZ","ADM0_A3_TR":"KAZ","ADM0_A3_ID":"KAZ","ADM0_A3_PL":"KAZ","ADM0_A3_GR":"KAZ","ADM0_A3_IT":"KAZ","ADM0_A3_NL":"KAZ","ADM0_A3_SE":"KAZ","ADM0_A3_BD":"KAZ","ADM0_A3_UA":"KAZ","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Central Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":7,"LABEL_X":68.685548,"LABEL_Y":49.054149,"NE_ID":1159320967,"WIKIDATAID":"Q232","NAME_AR":"كازاخستان","NAME_BN":"কাজাখস্তান","NAME_DE":"Kasachstan","NAME_EN":"Kazakhstan","NAME_ES":"Kazajistán","NAME_FA":"قزاقستان","NAME_FR":"Kazakhstan","NAME_EL":"Καζακστάν","NAME_HE":"קזחסטן","NAME_HI":"कज़ाख़िस्तान","NAME_HU":"Kazahsztán","NAME_ID":"Kazakhstan","NAME_IT":"Kazakistan","NAME_JA":"カザフスタン","NAME_KO":"카자흐스탄","NAME_NL":"Kazachstan","NAME_PL":"Kazachstan","NAME_PT":"Cazaquistão","NAME_RU":"Казахстан","NAME_SV":"Kazakstan","NAME_TR":"Kazakistan","NAME_UK":"Казахстан","NAME_UR":"قازقستان","NAME_VI":"Kazakhstan","NAME_ZH":"哈萨克斯坦","NAME_ZHT":"哈薩克","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[46.60918,40.608643,87.322852,55.3896],"geometry":{"type":"MultiPolygon","coordinates":[[[[50.184473,44.854639],[50.14873,44.826465],[50.095313,44.830615],[49.995117,44.936963],[50.023047,45.044727],[50.059375,45.066797],[50.109863,45.081934],[50.116602,45.058252],[50.045313,45.01001],[50.038867,44.949121],[50.098145,44.881543],[50.184473,44.854639]]],[[[50.311719,44.97207],[50.277246,44.958594],[50.256152,45.022412],[50.294922,45.075928],[50.349707,45.083008],[50.330859,44.998437],[50.311719,44.97207]]],[[[52.682422,45.411816],[52.664844,45.401318],[52.59834,45.428174],[52.554297,45.473975],[52.608887,45.528027],[52.65957,45.518066],[52.692969,45.460742],[52.682422,45.411816]]],[[[70.946777,42.248682],[70.860352,42.207227],[70.764551,42.194189],[70.715234,42.168652],[70.6625,42.107471],[70.613281,42.054736],[70.584277,42.036035],[70.540137,42.039453],[70.489063,42.080273],[70.416016,42.078564],[70.328906,42.027979],[70.225879,41.945996],[70.095605,41.820508],[69.959961,41.754053],[69.788086,41.697314],[69.663867,41.672119],[69.565137,41.629053],[69.400977,41.541895],[69.368359,41.490576],[69.249316,41.460254],[69.153613,41.425244],[69.064941,41.366943],[69.043457,41.264111],[68.986914,41.205029],[68.851172,41.123828],[68.737109,41.041895],[68.662793,40.961523],[68.584082,40.87627],[68.559277,40.829297],[68.556543,40.765137],[68.593652,40.711279],[68.600684,40.659961],[68.572656,40.622656],[68.495703,40.608643],[68.415039,40.619434],[68.291895,40.656104],[68.160254,40.721777],[68.112305,40.754053],[68.047656,40.809277],[68.057031,40.860596],[68.090332,40.960254],[68.113086,41.028613],[68.059375,41.061279],[68.019727,41.09624],[67.991406,41.130029],[67.935742,41.196582],[67.865723,41.180273],[67.805078,41.163916],[67.735059,41.187256],[67.528027,41.177148],[67.371582,41.169531],[67.225,41.162354],[67.038672,41.15332],[66.814258,41.142383],[66.749805,41.15708],[66.709668,41.17915],[66.668652,41.270752],[66.645313,41.348633],[66.60166,41.494336],[66.572559,41.606982],[66.537891,41.74126],[66.515039,41.889404],[66.498633,41.994873],[66.328809,41.99834],[66.193164,42.001123],[66.00957,42.004883],[66.01123,42.08877],[66.013184,42.194482],[66.015527,42.314795],[66.049805,42.472754],[66.062695,42.605176],[66.078516,42.76665],[66.088867,42.873389],[66.100293,42.99082],[66.005664,42.95459],[65.901074,42.914502],[65.803027,42.876953],[65.735645,42.972119],[65.670215,43.0646],[65.570703,43.205176],[65.496191,43.310547],[65.366504,43.372021],[65.270508,43.417529],[65.170898,43.494189],[65.084863,43.573682],[65.003125,43.649072],[64.905469,43.714697],[64.811816,43.693945],[64.706055,43.652979],[64.604102,43.613477],[64.496094,43.571631],[64.443164,43.551172],[64.318164,43.558936],[64.208789,43.565723],[64.013281,43.577832],[63.848145,43.588135],[63.679688,43.598633],[63.444824,43.613232],[63.207031,43.627979],[63.047656,43.608496],[62.846191,43.583887],[62.634473,43.558008],[62.459375,43.536621],[62.237891,43.50957],[62.071973,43.489355],[61.990234,43.492139],[61.887598,43.577246],[61.723242,43.713574],[61.623633,43.796191],[61.525879,43.877197],[61.385059,43.993945],[61.271484,44.082275],[61.160742,44.168604],[61.09707,44.248242],[61.065332,44.348389],[61.00791,44.393799],[60.879199,44.455078],[60.741113,44.52085],[60.60293,44.586621],[60.464746,44.652441],[60.32666,44.718213],[60.188477,44.783984],[60.050293,44.849756],[59.912207,44.915576],[59.774023,44.981299],[59.635938,45.04707],[59.497852,45.112842],[59.35957,45.178613],[59.221484,45.244434],[59.083398,45.310205],[58.945117,45.375977],[58.807031,45.441797],[58.668945,45.507568],[58.555273,45.555371],[58.449414,45.54292],[58.291113,45.509424],[58.125195,45.474365],[57.961035,45.439697],[57.666699,45.377441],[57.477344,45.337451],[57.329297,45.303662],[57.17168,45.267725],[56.965039,45.220605],[56.791895,45.181055],[56.58877,45.134766],[56.40918,45.093799],[56.25791,45.059326],[56.100488,45.023389],[55.975684,44.994922],[55.975781,44.765381],[55.975977,44.53584],[55.976074,44.306299],[55.976172,44.076758],[55.97627,43.847217],[55.976367,43.617627],[55.976465,43.388086],[55.976562,43.158594],[55.97666,42.929053],[55.976758,42.699512],[55.976855,42.469971],[55.976953,42.24043],[55.977051,42.010889],[55.977148,41.781348],[55.977344,41.551758],[55.977441,41.322217],[55.934961,41.324121],[55.839063,41.310791],[55.678613,41.278809],[55.545215,41.262744],[55.487012,41.272266],[55.434375,41.296289],[55.388379,41.346924],[55.319727,41.408398],[55.249609,41.458105],[55.162305,41.560254],[55.101855,41.638721],[54.952344,41.81001],[54.931641,41.864014],[54.903711,41.919092],[54.853809,41.965186],[54.67793,42.078223],[54.472852,42.180176],[54.271875,42.27998],[54.214941,42.304199],[54.120996,42.335205],[54.005176,42.335889],[53.926367,42.329785],[53.685352,42.296875],[53.500781,42.258252],[53.250098,42.205859],[53.055859,42.147754],[53.0125,42.130713],[52.870508,42.060596],[52.696875,41.944385],[52.493848,41.780371],[52.467578,41.885889],[52.458594,42.04834],[52.462109,42.100635],[52.517188,42.237158],[52.573242,42.330859],[52.618359,42.428223],[52.638477,42.555664],[52.596582,42.760156],[52.55,42.805469],[52.493945,42.820264],[52.434277,42.824463],[52.324414,42.816162],[52.273047,42.799805],[52.183691,42.86875],[52.075586,42.879785],[52.018555,42.860547],[51.960742,42.850586],[51.898242,42.869629],[51.844141,42.910449],[51.811035,42.954443],[51.785156,43.004346],[51.700391,43.104053],[51.616016,43.158447],[51.514063,43.170508],[51.347852,43.167383],[51.29541,43.174121],[51.292383,43.230713],[51.313379,43.355664],[51.313867,43.42085],[51.301758,43.482373],[51.274121,43.53291],[51.238965,43.576709],[51.139648,43.648779],[51.064844,43.750146],[50.939844,43.958545],[50.830762,44.192773],[50.782617,44.228027],[50.684961,44.265088],[50.471777,44.294775],[50.331152,44.325488],[50.275586,44.355127],[50.252539,44.406494],[50.25293,44.461523],[50.264551,44.526562],[50.297461,44.581543],[50.409473,44.624023],[50.652441,44.63335],[50.860352,44.62876],[51.048828,44.530469],[51.110742,44.507812],[51.177148,44.501367],[51.310742,44.532422],[51.37666,44.541211],[51.543555,44.531006],[51.49375,44.577539],[51.431055,44.601953],[51.366309,44.599854],[51.310254,44.61875],[51.218164,44.708984],[51.05791,44.811572],[51.020703,44.854004],[51.009375,44.921826],[51.040332,44.980322],[51.153711,45.040234],[51.249902,45.12168],[51.294043,45.229785],[51.333398,45.27959],[51.415723,45.357861],[51.539648,45.342871],[51.732617,45.399463],[52.04873,45.388379],[52.426758,45.404639],[52.531055,45.398633],[52.771973,45.343506],[52.910742,45.319727],[53.078906,45.30752],[53.200391,45.331982],[53.085742,45.407373],[52.8375,45.496729],[52.773828,45.572754],[52.8875,45.779541],[53.041602,45.967871],[53.135254,46.19165],[53.108984,46.414062],[53.063965,46.475293],[53.078516,46.547461],[53.132422,46.60835],[53.170215,46.669043],[53.1375,46.742041],[53.069434,46.856055],[53.03457,46.89292],[52.916016,46.954395],[52.677637,46.957129],[52.483203,46.990674],[52.420313,46.963672],[52.384863,46.922119],[52.340332,46.894775],[52.18877,46.839502],[52.138281,46.828613],[52.085547,46.8396],[52.011133,46.901904],[51.945117,46.894873],[51.744531,46.93374],[51.650098,47.018066],[51.615234,47.029932],[51.29082,47.097314],[51.178027,47.110156],[50.92002,47.040674],[50.732715,46.95166],[50.679883,46.938721],[50.58291,46.882275],[50.528418,46.873291],[50.472266,46.88291],[50.419336,46.879492],[50.30625,46.794922],[50.101562,46.696436],[49.999805,46.634277],[49.886328,46.595654],[49.760547,46.571484],[49.631543,46.567578],[49.584375,46.545215],[49.437207,46.537256],[49.347461,46.519141],[49.344238,46.485547],[49.362109,46.410205],[49.28584,46.436816],[49.205664,46.385693],[49.232227,46.337158],[49.184277,46.348828],[48.958984,46.442139],[48.774316,46.507959],[48.610156,46.566455],[48.586035,46.5771],[48.541211,46.605615],[48.50918,46.649951],[48.502344,46.698633],[48.518555,46.734326],[48.558398,46.757129],[48.605273,46.765918],[48.64707,46.758691],[48.693555,46.736816],[48.776367,46.710352],[48.883594,46.70542],[48.950293,46.725781],[48.959375,46.774609],[48.831836,46.954932],[48.714355,47.100488],[48.600684,47.262305],[48.552539,47.320996],[48.413086,47.456494],[48.275684,47.589941],[48.166992,47.708789],[48.109961,47.74541],[47.934668,47.760693],[47.600195,47.78999],[47.481934,47.803906],[47.387305,47.768652],[47.292383,47.740918],[47.202051,47.79248],[47.130762,47.876758],[47.093262,47.947705],[47.111523,48.020117],[47.119043,48.127002],[47.064648,48.232471],[47.004297,48.284473],[46.853125,48.323584],[46.660938,48.412256],[46.60918,48.573877],[46.702637,48.805566],[46.85293,48.969629],[46.962207,49.03833],[47.014258,49.09834],[47.031348,49.150293],[47.018164,49.199902],[46.953418,49.252588],[46.85293,49.303857],[46.802051,49.36709],[46.823145,49.502246],[46.889551,49.696973],[46.991992,49.852734],[47.12959,49.939062],[47.24834,50.000879],[47.295215,50.058496],[47.297656,50.140234],[47.294727,50.21748],[47.326465,50.273535],[47.376367,50.318115],[47.429199,50.357959],[47.503613,50.402734],[47.599609,50.413574],[47.705762,50.377979],[47.849609,50.282324],[48.060742,50.093604],[48.181348,49.97002],[48.224805,49.931934],[48.334961,49.858252],[48.434277,49.828516],[48.6,49.874707],[48.758984,49.92832],[48.810254,49.962402],[48.843262,50.013135],[48.817969,50.099854],[48.784766,50.156445],[48.749414,50.228467],[48.700488,50.35376],[48.666016,50.550342],[48.625098,50.612695],[48.655176,50.619873],[48.734766,50.606885],[48.808398,50.601318],[48.91377,50.64458],[49.058691,50.726074],[49.323438,50.851709],[49.379492,50.934668],[49.424609,51.027002],[49.498047,51.083594],[49.666309,51.102295],[49.822266,51.131885],[49.932324,51.197168],[50.104883,51.25459],[50.246875,51.289502],[50.309277,51.321582],[50.353711,51.369727],[50.516309,51.505615],[50.643945,51.58916],[50.756152,51.675146],[50.793945,51.729199],[50.882422,51.719189],[51.017871,51.681641],[51.163477,51.647461],[51.269922,51.594482],[51.290723,51.540186],[51.301074,51.497412],[51.344531,51.475342],[51.395996,51.471289],[51.473438,51.482031],[51.609082,51.483984],[51.775391,51.554248],[52.007129,51.672705],[52.219141,51.709375],[52.331055,51.681299],[52.423047,51.594238],[52.496191,51.512158],[52.571191,51.481641],[52.617773,51.480762],[52.635156,51.479541],[52.728125,51.498145],[52.735059,51.4979],[52.820508,51.49458],[52.902637,51.466943],[53.038379,51.463721],[53.227344,51.484961],[53.247266,51.493604],[53.338086,51.482373],[53.448633,51.444531],[53.534668,51.399561],[53.688086,51.251807],[53.776465,51.213721],[53.956836,51.161182],[54.041504,51.115186],[54.139746,51.040771],[54.191113,50.995703],[54.297852,50.914062],[54.421484,50.780322],[54.443359,50.673926],[54.471484,50.583789],[54.517383,50.541162],[54.555273,50.535791],[54.596191,50.550684],[54.636133,50.591602],[54.65,50.660156],[54.637891,50.781055],[54.60625,50.879883],[54.565625,50.911279],[54.546094,50.946045],[54.572949,50.990234],[54.641602,51.011572],[54.727148,50.998096],[54.867969,50.941357],[55.014844,50.869775],[55.195215,50.744727],[55.361133,50.665283],[55.542285,50.601807],[55.68623,50.582861],[55.797656,50.602051],[55.929199,50.65376],[56.049707,50.713525],[56.104492,50.77627],[56.143945,50.844629],[56.325586,50.936084],[56.491406,51.019531],[56.566895,51.004492],[56.620215,50.980859],[56.790332,51.031592],[56.849609,51.045557],[57.011719,51.065186],[57.179004,51.036035],[57.3125,50.946533],[57.442188,50.888867],[57.557813,50.895557],[57.653809,50.925146],[57.716992,50.980957],[57.764844,51.046875],[57.828906,51.089014],[57.838867,51.09165],[58.045117,51.068848],[58.174707,51.072266],[58.188477,51.081738],[58.35918,51.063818],[58.547461,50.971045],[58.664551,50.868311],[58.814063,50.737207],[58.883691,50.694434],[58.984863,50.676123],[59.064355,50.668213],[59.170898,50.6479],[59.452344,50.62041],[59.495117,50.604297],[59.523926,50.582812],[59.497852,50.511084],[59.523047,50.492871],[59.751172,50.543945],[59.812402,50.582031],[59.887793,50.690186],[59.955176,50.799268],[60.005273,50.839697],[60.058594,50.850293],[60.112109,50.83418],[60.186719,50.769775],[60.288086,50.70415],[60.424805,50.67915],[60.508496,50.669189],[60.637988,50.663721],[60.942285,50.695508],[61.226855,50.774805],[61.389453,50.861035],[61.465039,50.990234],[61.512207,51.137012],[61.585059,51.229687],[61.554688,51.324609],[61.411328,51.414746],[61.363086,51.441895],[61.014844,51.492383],[60.993359,51.528711],[60.973535,51.537061],[60.630371,51.616943],[60.464746,51.651172],[60.418359,51.703906],[60.3875,51.772998],[60.280371,51.834619],[60.06748,51.890625],[60.030273,51.933252],[60.065527,51.976465],[60.233691,52.024512],[60.425488,52.125586],[60.499316,52.146338],[60.670313,52.15083],[60.828418,52.233398],[60.937598,52.280566],[60.994531,52.336865],[60.979492,52.394775],[60.821289,52.569824],[60.774414,52.675781],[60.802344,52.744727],[60.893262,52.819434],[60.944727,52.860156],[61.006543,52.93335],[61.047461,52.972461],[61.206934,52.989062],[61.400781,52.995996],[61.533594,52.978516],[61.719336,52.969385],[61.888574,52.955908],[61.974219,52.94375],[62.037109,52.966113],[62.082715,53.00542],[62.081055,53.057422],[62.014648,53.107861],[61.766211,53.173926],[61.659863,53.228467],[61.576172,53.222461],[61.436816,53.239404],[61.310938,53.275195],[61.199219,53.287158],[61.162793,53.336768],[61.185938,53.406201],[61.228906,53.445898],[61.311621,53.465723],[61.400977,53.455811],[61.498535,53.484668],[61.526563,53.501562],[61.534961,53.523291],[61.519141,53.554492],[61.474121,53.580273],[61.409961,53.587061],[61.336133,53.565186],[61.247949,53.550977],[61.098535,53.583105],[60.979492,53.621729],[60.985547,53.657422],[61.073535,53.710449],[61.113184,53.753467],[61.113184,53.812988],[61.113184,53.882471],[61.14375,53.963818],[61.231055,54.019482],[61.333691,54.049268],[61.598145,53.994922],[61.928711,53.946484],[61.985645,53.954395],[62.002344,53.979932],[62.040234,54.002637],[62.499023,54.013184],[62.588281,54.044434],[62.632715,54.069287],[63.073926,54.105225],[63.126563,54.139258],[63.191309,54.171045],[63.292676,54.170459],[63.413672,54.183203],[63.582031,54.221924],[63.701367,54.243213],[63.721191,54.24502],[63.84707,54.236475],[64.003906,54.26709],[64.037402,54.279736],[64.062891,54.30293],[64.199414,54.347412],[64.46123,54.38418],[64.525098,54.362158],[64.649902,54.352246],[64.809277,54.368555],[64.926758,54.396631],[64.99541,54.36875],[65.088379,54.340186],[65.157813,54.364404],[65.192188,54.441113],[65.237402,54.516064],[65.315918,54.551562],[65.378125,54.564453],[65.434375,54.593311],[65.476953,54.623291],[65.707813,54.618701],[65.914258,54.693311],[65.954688,54.659521],[66.222656,54.667383],[66.555371,54.71543],[66.754492,54.737891],[67.09834,54.788184],[67.257324,54.828809],[67.484668,54.854492],[67.693359,54.872412],[67.829883,54.943555],[67.939941,54.953711],[68.073828,54.95957],[68.155859,54.976709],[68.209375,55.003027],[68.244043,55.052441],[68.225293,55.115234],[68.20625,55.160937],[68.301953,55.186523],[68.438477,55.194434],[68.524805,55.204834],[68.712891,55.308496],[68.842969,55.35835],[68.977246,55.3896],[69.246973,55.37251],[69.493262,55.356885],[69.740234,55.307373],[69.870215,55.245654],[69.981738,55.199072],[70.087402,55.176758],[70.182422,55.162451],[70.293359,55.183594],[70.371484,55.212256],[70.417188,55.253174],[70.486328,55.282373],[70.738086,55.305176],[70.790332,55.261133],[70.910156,55.127979],[70.991797,54.950488],[71.12627,54.715039],[71.185547,54.599316],[71.15918,54.538623],[71.159766,54.45542],[71.152148,54.364062],[71.052734,54.260498],[71.093164,54.212207],[71.336426,54.15835],[71.677148,54.178027],[71.887402,54.221484],[72.004492,54.205664],[72.065625,54.231641],[72.105371,54.308447],[72.186035,54.325635],[72.269141,54.272119],[72.329492,54.181445],[72.387305,54.123047],[72.383008,54.053662],[72.404297,53.964453],[72.446777,53.941846],[72.530273,53.975781],[72.585938,53.995947],[72.599219,54.023047],[72.575586,54.056494],[72.564258,54.09043],[72.582715,54.121582],[72.622266,54.134326],[72.741016,54.124512],[72.914062,54.107324],[73.119336,53.980762],[73.229883,53.957812],[73.276563,53.955615],[73.380664,53.962842],[73.505664,53.999316],[73.589941,54.044971],[73.617969,54.067383],[73.666406,54.063477],[73.712402,54.042383],[73.715527,53.996191],[73.678906,53.929443],[73.554199,53.868311],[73.399414,53.811475],[73.305664,53.707227],[73.285742,53.598389],[73.326855,53.543164],[73.361914,53.506201],[73.371875,53.454395],[73.406934,53.447559],[73.469922,53.468896],[73.642969,53.57627],[73.731152,53.602783],[73.858984,53.619727],[74.068652,53.611426],[74.209961,53.576465],[74.277344,53.527734],[74.351562,53.487646],[74.402734,53.504443],[74.429297,53.550732],[74.430469,53.603711],[74.451953,53.647266],[74.681445,53.754395],[74.83418,53.825684],[74.886816,53.834033],[74.988965,53.819238],[75.052148,53.826709],[75.220215,53.893799],[75.377051,53.970117],[75.392383,54.021729],[75.398145,54.068506],[75.437207,54.089648],[75.656836,54.106006],[75.692871,54.114795],[75.880664,54.167969],[76.140527,54.258545],[76.266602,54.311963],[76.496484,54.335693],[76.53916,54.351074],[76.615527,54.387109],[76.759375,54.436865],[76.837305,54.442383],[76.788965,54.321875],[76.703027,54.182471],[76.65459,54.145264],[76.42168,54.151514],[76.42207,54.113525],[76.458594,54.055273],[76.484766,54.022559],[76.513086,53.993213],[76.575684,53.942529],[76.820703,53.822656],[77.132422,53.670117],[77.469238,53.498779],[77.704395,53.37915],[77.799414,53.317432],[77.859961,53.269189],[78.033496,53.094971],[78.198047,52.929688],[78.475488,52.638428],[78.721484,52.357031],[78.99209,52.047412],[79.14873,51.868115],[79.468848,51.493115],[79.554297,51.377979],[79.716406,51.16001],[79.859668,50.955469],[79.98623,50.774561],[80.065918,50.758203],[80.07207,50.807275],[80.086328,50.83999],[80.127246,50.85835],[80.220215,50.911768],[80.27041,50.924609],[80.345215,50.919092],[80.423633,50.946289],[80.452246,50.997607],[80.433594,51.092627],[80.421484,51.136377],[80.448047,51.18335],[80.491016,51.201758],[80.550684,51.216602],[80.605469,51.224219],[80.650488,51.277344],[80.735254,51.293408],[80.813086,51.283496],[80.877344,51.281445],[80.934082,51.242773],[80.965625,51.189795],[81.026758,51.185693],[81.127246,51.191064],[81.141016,51.146582],[81.112402,51.072363],[81.077539,51.014941],[81.071484,50.96875],[81.124609,50.946289],[81.319141,50.966406],[81.388281,50.956494],[81.410156,50.909766],[81.437695,50.871045],[81.451563,50.823682],[81.431445,50.771143],[81.465918,50.739844],[81.633887,50.739111],[81.752051,50.764404],[81.933691,50.766357],[82.098047,50.71084],[82.211914,50.719434],[82.326367,50.741895],[82.493945,50.727588],[82.611719,50.771484],[82.692969,50.826318],[82.718555,50.869482],[82.76084,50.893359],[82.919043,50.893115],[83.019238,50.897266],[83.092773,50.960596],[83.160254,50.989209],[83.27373,50.99458],[83.357324,50.99458],[83.581445,50.935742],[83.717773,50.887158],[83.859766,50.818018],[83.945117,50.774658],[84.002344,50.676855],[84.099316,50.604736],[84.175977,50.520557],[84.194531,50.437451],[84.257812,50.288232],[84.323242,50.23916],[84.400977,50.23916],[84.499023,50.21875],[84.607324,50.202393],[84.838965,50.091309],[84.924023,50.087988],[84.989453,50.061426],[84.999707,50.010303],[84.975195,49.951074],[85.000781,49.894141],[85.076465,49.821631],[85.136523,49.750732],[85.210156,49.664844],[85.232617,49.61582],[85.291895,49.599463],[85.371582,49.623926],[85.498438,49.605371],[85.880469,49.556543],[85.933594,49.550439],[85.974414,49.499316],[86.02959,49.503418],[86.092969,49.505469],[86.180859,49.499316],[86.242188,49.546338],[86.292383,49.5875],[86.417969,49.638477],[86.522266,49.707764],[86.610156,49.769141],[86.675488,49.777295],[86.728711,49.748682],[86.730664,49.695557],[86.665332,49.656689],[86.614258,49.609717],[86.626465,49.562695],[86.714355,49.558594],[86.812109,49.487891],[86.95293,49.32207],[87.000977,49.287305],[87.070605,49.25459],[87.148047,49.239795],[87.233691,49.216162],[87.296875,49.147656],[87.322852,49.085791],[87.22998,49.105859],[87.048535,49.109912],[86.937988,49.097559],[86.885938,49.090576],[86.808301,49.049707],[86.753125,49.008838],[86.728613,48.939355],[86.757812,48.860742],[86.717969,48.697168],[86.66377,48.635547],[86.549414,48.528613],[86.483301,48.505371],[86.372559,48.48623],[86.265625,48.454541],[86.056152,48.42373],[85.829883,48.408057],[85.749414,48.385059],[85.692187,48.311816],[85.651563,48.250537],[85.626367,48.204004],[85.562305,48.051855],[85.525977,47.915625],[85.561621,47.746484],[85.588281,47.558496],[85.586621,47.493652],[85.641797,47.397412],[85.669824,47.338379],[85.656641,47.254639],[85.577246,47.188477],[85.529688,47.100781],[85.484766,47.063525],[85.355371,47.046729],[85.233496,47.036377],[85.110547,46.96123],[85.012207,46.909229],[84.858203,46.843164],[84.786133,46.830713],[84.745996,46.864355],[84.719531,46.939355],[84.666602,46.972363],[84.592285,46.974951],[84.532422,46.975781],[84.338867,46.996143],[84.215137,46.994727],[84.12207,46.978613],[84.016016,46.970508],[83.832617,46.997852],[83.713965,47.021045],[83.634082,47.043213],[83.443555,47.108643],[83.193066,47.186572],[83.090332,47.209375],[83.029492,47.185937],[83.020117,47.141455],[83.004102,47.033496],[82.974902,46.966016],[82.8,46.624463],[82.692187,46.38667],[82.555078,46.158691],[82.511719,46.005811],[82.429688,45.811914],[82.348145,45.671533],[82.315234,45.594922],[82.312207,45.563721],[82.32666,45.519922],[82.45166,45.471973],[82.58252,45.442578],[82.611621,45.424268],[82.625781,45.374414],[82.621094,45.293115],[82.596973,45.215967],[82.558984,45.15542],[82.521484,45.125488],[82.478711,45.123584],[82.39668,45.162451],[82.323438,45.205859],[82.266602,45.219092],[82.122754,45.194873],[81.989258,45.161865],[81.944922,45.16084],[81.86748,45.18208],[81.789648,45.226025],[81.758887,45.31084],[81.691992,45.349365],[81.602051,45.31084],[81.334766,45.246191],[81.040332,45.169141],[80.85332,45.129297],[80.780078,45.135547],[80.634766,45.126514],[80.50918,45.10498],[80.414941,45.075098],[80.228223,45.033984],[80.05918,45.006445],[79.950195,44.944092],[79.871875,44.883789],[79.875293,44.86084],[79.932129,44.825195],[79.997168,44.797217],[80.127832,44.80376],[80.255078,44.808105],[80.36084,44.770312],[80.455469,44.746094],[80.481543,44.714648],[80.455469,44.684082],[80.400586,44.676904],[80.381445,44.65542],[80.391016,44.626807],[80.355078,44.552002],[80.336328,44.438379],[80.354883,44.326514],[80.365332,44.223291],[80.358984,44.171289],[80.355273,44.097266],[80.395801,44.047168],[80.431543,43.951758],[80.495996,43.89209],[80.593457,43.685107],[80.650781,43.56416],[80.703809,43.427051],[80.66543,43.352979],[80.667773,43.310059],[80.729785,43.274268],[80.757031,43.204346],[80.785742,43.161572],[80.777734,43.118945],[80.751172,43.10249],[80.616992,43.128271],[80.507031,43.085791],[80.390234,43.043115],[80.374512,43.02041],[80.371289,42.995605],[80.383398,42.973779],[80.450684,42.935547],[80.54375,42.911719],[80.538965,42.873486],[80.424023,42.855762],[80.250293,42.797266],[80.202246,42.734473],[80.165039,42.665527],[80.161914,42.625537],[80.179297,42.518359],[80.205762,42.399414],[80.255078,42.27417],[80.259082,42.2354],[80.233008,42.207812],[80.209375,42.190039],[80.071289,42.302979],[79.921094,42.413135],[79.803418,42.438477],[79.598437,42.456641],[79.490137,42.457568],[79.428223,42.483496],[79.367773,42.547217],[79.295508,42.604834],[79.203027,42.666016],[79.164844,42.759033],[79.12666,42.775732],[79.059863,42.763818],[78.947949,42.766699],[78.885156,42.774902],[78.791504,42.79082],[78.642285,42.828711],[78.524219,42.864648],[78.375977,42.871484],[78.290039,42.864355],[78.023145,42.85752],[77.80166,42.895215],[77.622461,42.902246],[77.512207,42.900049],[77.459277,42.904736],[77.368555,42.904443],[77.235547,42.912646],[77.057324,42.970654],[76.988086,42.973584],[76.944043,42.971484],[76.646484,42.928809],[76.50918,42.918896],[76.218164,42.92373],[75.932227,42.928516],[75.840332,42.9375],[75.789551,42.93291],[75.681738,42.830469],[75.635645,42.8146],[75.366211,42.836963],[75.047656,42.904395],[74.817578,42.978174],[74.622266,43.056201],[74.363867,43.179443],[74.209082,43.240381],[74.186816,43.205273],[74.145898,43.194092],[74.08623,43.188623],[73.949219,43.19502],[73.886035,43.132568],[73.718555,43.087891],[73.612012,43.0479],[73.55625,43.002783],[73.450195,42.703027],[73.421875,42.593506],[73.492969,42.409033],[73.411621,42.419775],[73.316016,42.466992],[73.28291,42.504102],[73.19082,42.526855],[72.855078,42.561133],[72.792383,42.603467],[72.75293,42.637891],[72.666113,42.6604],[72.543164,42.677734],[72.275781,42.757666],[72.161816,42.760693],[71.816797,42.822168],[71.760547,42.821484],[71.734766,42.818896],[71.600781,42.778662],[71.514258,42.766943],[71.42207,42.783154],[71.256641,42.733545],[71.167383,42.667432],[71.093555,42.586523],[71.022754,42.535449],[71.001953,42.459082],[70.952344,42.419385],[70.892871,42.33999],[70.892871,42.293701],[70.946777,42.248682]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Jordan","SOV_A3":"JOR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Jordan","ADM0_A3":"JOR","GEOU_DIF":0,"GEOUNIT":"Jordan","GU_A3":"JOR","SU_DIF":0,"SUBUNIT":"Jordan","SU_A3":"JOR","BRK_DIFF":0,"NAME":"Jordan","NAME_LONG":"Jordan","BRK_A3":"JOR","BRK_NAME":"Jordan","BRK_GROUP":null,"ABBREV":"Jord.","POSTAL":"J","FORMAL_EN":"Hashemite Kingdom of Jordan","FORMAL_FR":null,"NAME_CIAWF":"Jordan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Jordan","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":4,"POP_EST":10101694,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":44502,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"JO","ISO_A2":"JO","ISO_A2_EH":"JO","ISO_A3":"JOR","ISO_A3_EH":"JOR","ISO_N3":"400","ISO_N3_EH":"400","UN_A3":"400","WB_A2":"JO","WB_A3":"JOR","WOE_ID":23424860,"WOE_ID_EH":23424860,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"JOR","ADM0_DIFF":null,"ADM0_TLC":"JOR","ADM0_A3_US":"JOR","ADM0_A3_FR":"JOR","ADM0_A3_RU":"JOR","ADM0_A3_ES":"JOR","ADM0_A3_CN":"JOR","ADM0_A3_TW":"JOR","ADM0_A3_IN":"JOR","ADM0_A3_NP":"JOR","ADM0_A3_PK":"JOR","ADM0_A3_DE":"JOR","ADM0_A3_GB":"JOR","ADM0_A3_BR":"JOR","ADM0_A3_IL":"JOR","ADM0_A3_PS":"JOR","ADM0_A3_SA":"JOR","ADM0_A3_EG":"JOR","ADM0_A3_MA":"JOR","ADM0_A3_PT":"JOR","ADM0_A3_AR":"JOR","ADM0_A3_JP":"JOR","ADM0_A3_KO":"JOR","ADM0_A3_VN":"JOR","ADM0_A3_TR":"JOR","ADM0_A3_ID":"JOR","ADM0_A3_PL":"JOR","ADM0_A3_GR":"JOR","ADM0_A3_IT":"JOR","ADM0_A3_NL":"JOR","ADM0_A3_SE":"JOR","ADM0_A3_BD":"JOR","ADM0_A3_UA":"JOR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":36.375991,"LABEL_Y":30.805025,"NE_ID":1159320935,"WIKIDATAID":"Q810","NAME_AR":"الأردن","NAME_BN":"জর্ডান","NAME_DE":"Jordanien","NAME_EN":"Jordan","NAME_ES":"Jordania","NAME_FA":"اردن","NAME_FR":"Jordanie","NAME_EL":"Ιορδανία","NAME_HE":"ירדן","NAME_HI":"जॉर्डन","NAME_HU":"Jordánia","NAME_ID":"Yordania","NAME_IT":"Giordania","NAME_JA":"ヨルダン","NAME_KO":"요르단","NAME_NL":"Jordanië","NAME_PL":"Jordania","NAME_PT":"Jordânia","NAME_RU":"Иордания","NAME_SV":"Jordanien","NAME_TR":"Ürdün","NAME_UK":"Йорданія","NAME_UR":"اردن","NAME_VI":"Jordan","NAME_ZH":"约旦","NAME_ZHT":"約旦","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[34.950781,29.190479,39.292773,33.372217],"geometry":{"type":"Polygon","coordinates":[[[35.787305,32.734912],[35.894727,32.71377],[35.956445,32.666699],[36.059473,32.533789],[36.219727,32.495117],[36.284277,32.457471],[36.37207,32.386914],[36.479199,32.361328],[36.818359,32.317285],[37.088965,32.465527],[37.317578,32.590771],[37.577441,32.733057],[37.754102,32.829834],[38.055762,32.994873],[38.254297,33.099219],[38.515625,33.236621],[38.773535,33.372217],[38.84502,33.150879],[38.914844,32.934668],[38.987402,32.710693],[39.057813,32.493164],[38.981641,32.472559],[39.041406,32.305664],[39.140039,32.331201],[39.247461,32.350977],[39.292773,32.243848],[39.14541,32.124512],[38.99707,32.007471],[38.962305,31.994922],[38.769629,31.946484],[38.375488,31.847461],[38.111426,31.781152],[37.773828,31.696338],[37.493359,31.625879],[37.215625,31.556104],[36.958594,31.491504],[37.105273,31.355176],[37.329492,31.146826],[37.479004,31.007764],[37.655469,30.828955],[37.812988,30.669287],[37.980078,30.5],[37.862891,30.442627],[37.669727,30.348145],[37.649902,30.330957],[37.633594,30.313281],[37.553613,30.14458],[37.490723,30.011719],[37.469238,29.995068],[37.199414,29.946289],[36.927051,29.89707],[36.755273,29.866016],[36.703906,29.831641],[36.591797,29.666113],[36.476074,29.495117],[36.282813,29.355371],[36.068457,29.200537],[36.01543,29.190479],[35.860352,29.214258],[35.595313,29.254883],[35.33916,29.294092],[35.16377,29.320947],[34.950781,29.353516],[34.982227,29.484473],[34.973438,29.555029],[35.023926,29.787061],[35.053418,29.896924],[35.068164,29.977881],[35.141602,30.141699],[35.132617,30.195312],[35.148145,30.384326],[35.140625,30.420898],[35.174023,30.523926],[35.236621,30.673486],[35.297852,30.802246],[35.320117,30.860205],[35.383008,30.982275],[35.439258,31.132422],[35.409668,31.214453],[35.400684,31.230518],[35.423535,31.324854],[35.422852,31.325391],[35.450586,31.479297],[35.46543,31.562354],[35.499414,31.672363],[35.558984,31.765527],[35.531445,31.984912],[35.534766,32.103027],[35.57207,32.237891],[35.551465,32.395508],[35.569043,32.619873],[35.572852,32.640869],[35.594531,32.668018],[35.61123,32.68208],[35.734473,32.728906],[35.787305,32.734912]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":2,"SOVEREIGNT":"Japan","SOV_A3":"JPN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Japan","ADM0_A3":"JPN","GEOU_DIF":0,"GEOUNIT":"Japan","GU_A3":"JPN","SU_DIF":0,"SUBUNIT":"Japan","SU_A3":"JPN","BRK_DIFF":0,"NAME":"Japan","NAME_LONG":"Japan","BRK_A3":"JPN","BRK_NAME":"Japan","BRK_GROUP":null,"ABBREV":"Japan","POSTAL":"J","FORMAL_EN":"Japan","FORMAL_FR":null,"NAME_CIAWF":"Japan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Japan","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":3,"MAPCOLOR9":5,"MAPCOLOR13":4,"POP_EST":126264931,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":5081769,"GDP_YEAR":2019,"ECONOMY":"1. Developed region: G7","INCOME_GRP":"1. High income: OECD","FIPS_10":"JA","ISO_A2":"JP","ISO_A2_EH":"JP","ISO_A3":"JPN","ISO_A3_EH":"JPN","ISO_N3":"392","ISO_N3_EH":"392","UN_A3":"392","WB_A2":"JP","WB_A3":"JPN","WOE_ID":23424856,"WOE_ID_EH":23424856,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"JPN","ADM0_DIFF":null,"ADM0_TLC":"JPN","ADM0_A3_US":"JPN","ADM0_A3_FR":"JPN","ADM0_A3_RU":"JPN","ADM0_A3_ES":"JPN","ADM0_A3_CN":"JPN","ADM0_A3_TW":"JPN","ADM0_A3_IN":"JPN","ADM0_A3_NP":"JPN","ADM0_A3_PK":"JPN","ADM0_A3_DE":"JPN","ADM0_A3_GB":"JPN","ADM0_A3_BR":"JPN","ADM0_A3_IL":"JPN","ADM0_A3_PS":"JPN","ADM0_A3_SA":"JPN","ADM0_A3_EG":"JPN","ADM0_A3_MA":"JPN","ADM0_A3_PT":"JPN","ADM0_A3_AR":"JPN","ADM0_A3_JP":"JPN","ADM0_A3_KO":"JPN","ADM0_A3_VN":"JPN","ADM0_A3_TR":"JPN","ADM0_A3_ID":"JPN","ADM0_A3_PL":"JPN","ADM0_A3_GR":"JPN","ADM0_A3_IT":"JPN","ADM0_A3_NL":"JPN","ADM0_A3_SE":"JPN","ADM0_A3_BD":"JPN","ADM0_A3_UA":"JPN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":7,"LABEL_X":138.44217,"LABEL_Y":36.142538,"NE_ID":1159320937,"WIKIDATAID":"Q17","NAME_AR":"اليابان","NAME_BN":"জাপান","NAME_DE":"Japan","NAME_EN":"Japan","NAME_ES":"Japón","NAME_FA":"ژاپن","NAME_FR":"Japon","NAME_EL":"Ιαπωνία","NAME_HE":"יפן","NAME_HI":"जापान","NAME_HU":"Japán","NAME_ID":"Jepang","NAME_IT":"Giappone","NAME_JA":"日本","NAME_KO":"일본","NAME_NL":"Japan","NAME_PL":"Japonia","NAME_PT":"Japão","NAME_RU":"Япония","NAME_SV":"Japan","NAME_TR":"Japonya","NAME_UK":"Японія","NAME_UR":"جاپان","NAME_VI":"Nhật Bản","NAME_ZH":"日本","NAME_ZHT":"日本","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[123.679785,24.266064,145.833008,45.509521],"geometry":{"type":"MultiPolygon","coordinates":[[[[133.370508,36.203857],[133.324707,36.166504],[133.239258,36.17876],[133.189941,36.232617],[133.206152,36.293408],[133.295703,36.340137],[133.38125,36.246387],[133.370508,36.203857]]],[[[138.344043,37.822119],[138.249023,37.81958],[138.225195,37.829395],[138.282813,37.854199],[138.287891,37.895801],[138.322266,37.969531],[138.32168,37.99082],[138.246191,37.99458],[138.25,38.078467],[138.306348,38.161133],[138.461328,38.291455],[138.503613,38.315918],[138.510059,38.258984],[138.462793,38.124316],[138.453613,38.075684],[138.575195,38.065527],[138.496973,37.903906],[138.344043,37.822119]]],[[[134.932813,34.288135],[134.824414,34.20293],[134.730664,34.208887],[134.683496,34.246973],[134.667871,34.294141],[134.757227,34.368164],[134.834277,34.472656],[134.904102,34.519092],[134.960742,34.544922],[135.004688,34.544043],[134.905469,34.398291],[134.932813,34.288135]]],[[[130.622754,30.262988],[130.508203,30.241406],[130.445605,30.264697],[130.388086,30.388184],[130.497168,30.465527],[130.643555,30.388965],[130.673242,30.366895],[130.622754,30.262988]]],[[[130.959766,30.396924],[130.872168,30.386328],[130.870313,30.444238],[130.939941,30.575098],[130.947363,30.671191],[131.012207,30.792285],[131.039844,30.818896],[131.060352,30.828467],[131.082617,30.790869],[131.057422,30.64248],[130.992578,30.52998],[130.959766,30.396924]]],[[[130.08252,32.229687],[130.003516,32.193994],[129.993359,32.228174],[129.960156,32.24375],[130.017285,32.291846],[130.015332,32.313672],[129.979297,32.346191],[130.021289,32.468848],[130.009766,32.521631],[130.167773,32.541211],[130.19668,32.491602],[130.199512,32.340576],[130.08252,32.229687]]],[[[129.279492,34.123389],[129.214453,34.082812],[129.186426,34.14502],[129.214844,34.320654],[129.337109,34.284766],[129.335059,34.230811],[129.279492,34.123389]]],[[[129.385645,34.353662],[129.365332,34.305518],[129.297461,34.3396],[129.266699,34.370459],[129.329395,34.521875],[129.32207,34.579297],[129.325879,34.607275],[129.451074,34.686572],[129.472461,34.671338],[129.480176,34.649463],[129.469141,34.615527],[129.475391,34.54043],[129.381445,34.416455],[129.385645,34.353662]]],[[[128.665332,32.783887],[128.704102,32.756885],[128.761035,32.772363],[128.806055,32.775977],[128.838574,32.762891],[128.879395,32.693311],[128.894531,32.652148],[128.821289,32.646338],[128.79043,32.636719],[128.750488,32.586133],[128.692969,32.604736],[128.657324,32.628418],[128.649121,32.662012],[128.665332,32.783887]]],[[[130.381055,32.42373],[130.292578,32.419336],[130.256055,32.431006],[130.241699,32.462793],[130.36543,32.527197],[130.461426,32.515723],[130.418555,32.457715],[130.381055,32.42373]]],[[[141.072754,45.332861],[141.033984,45.269336],[140.982129,45.36377],[140.97168,45.465479],[141.00166,45.464844],[141.056738,45.449561],[141.069922,45.4],[141.072754,45.332861]]],[[[141.29541,45.119336],[141.225977,45.112207],[141.145313,45.153906],[141.135352,45.206201],[141.19375,45.247852],[141.251855,45.232471],[141.310059,45.178564],[141.329199,45.150488],[141.29541,45.119336]]],[[[139.48125,42.081006],[139.458398,42.075635],[139.43457,42.084082],[139.411523,42.159668],[139.431348,42.199561],[139.495801,42.227441],[139.558398,42.235205],[139.505078,42.096387],[139.48125,42.081006]]],[[[134.351855,34.483643],[134.333203,34.46377],[134.315332,34.468945],[134.251855,34.423047],[134.238086,34.467041],[134.188281,34.496338],[134.182129,34.519238],[134.325977,34.534375],[134.372266,34.522363],[134.351855,34.483643]]],[[[139.456445,34.726514],[139.445703,34.679541],[139.392383,34.689893],[139.366895,34.720508],[139.37002,34.775439],[139.426172,34.775879],[139.456445,34.726514]]],[[[129.076953,32.840283],[129.051953,32.829492],[129.019629,32.919629],[128.997266,32.951855],[129.034961,32.969092],[129.109766,33.132568],[129.123633,33.067676],[129.152734,33.00332],[129.181934,32.993115],[129.153516,32.946191],[129.111621,32.928857],[129.076953,32.840283]]],[[[129.491797,33.223047],[129.421387,33.17583],[129.37041,33.176025],[129.416992,33.231104],[129.423145,33.257373],[129.461914,33.33125],[129.537988,33.357764],[129.569922,33.361035],[129.508105,33.284326],[129.491797,33.223047]]],[[[129.795703,33.748828],[129.726562,33.707324],[129.674805,33.739697],[129.7,33.828906],[129.717285,33.858398],[129.776367,33.829199],[129.795703,33.748828]]],[[[132.578418,34.115186],[132.549414,34.075098],[132.460938,34.087256],[132.496289,34.121973],[132.523535,34.164062],[132.543457,34.172656],[132.560156,34.126904],[132.578418,34.115186]]],[[[132.266016,33.945166],[132.314551,33.908594],[132.430469,33.923535],[132.444922,33.913184],[132.411035,33.879932],[132.359961,33.847021],[132.267285,33.871484],[132.208789,33.872852],[132.200586,33.927783],[132.208008,33.947803],[132.266016,33.945166]]],[[[129.717969,31.657129],[129.686816,31.639648],[129.706836,31.718262],[129.787305,31.787109],[129.793652,31.74248],[129.717969,31.657129]]],[[[142.188184,26.616504],[142.169922,26.615674],[142.107129,26.721533],[142.125293,26.726465],[142.161719,26.709961],[142.202148,26.648779],[142.188184,26.616504]]],[[[143.824316,44.116992],[143.949512,44.111914],[144.005469,44.11665],[144.101367,44.101562],[144.481836,43.949561],[144.59668,43.930225],[144.715234,43.927979],[144.798535,43.940234],[144.871875,43.981934],[145.101562,44.166162],[145.342773,44.333887],[145.369531,44.327393],[145.369629,44.281299],[145.351953,44.229785],[145.245215,44.076172],[145.126367,43.869385],[145.101074,43.764551],[145.139648,43.6625],[145.214063,43.578223],[145.272949,43.462891],[145.34082,43.302539],[145.436133,43.282227],[145.487891,43.279736],[145.583301,43.327783],[145.673633,43.388867],[145.75127,43.396289],[145.833008,43.385937],[145.725586,43.343457],[145.624219,43.291309],[145.537402,43.192676],[145.505078,43.174219],[145.404785,43.180273],[145.347461,43.176709],[145.230078,43.135498],[145.127148,43.088867],[145.028809,43.031641],[144.921387,43.000928],[144.807129,42.993701],[144.630762,42.946924],[144.516211,42.943604],[144.301563,42.984424],[144.197266,42.973633],[143.969336,42.881396],[143.762109,42.748145],[143.580957,42.59873],[143.429492,42.418896],[143.368652,42.325146],[143.332129,42.220361],[143.327148,42.151025],[143.313672,42.084326],[143.278711,42.037842],[143.236523,42.000195],[143.111719,42.022217],[142.906348,42.118359],[142.508203,42.257959],[142.087891,42.471729],[141.851367,42.579053],[141.406641,42.546924],[140.986133,42.342139],[140.948438,42.35957],[140.787598,42.5],[140.709766,42.555615],[140.616797,42.571338],[140.547656,42.569531],[140.480469,42.559375],[140.385449,42.487158],[140.350586,42.435107],[140.323535,42.376074],[140.315234,42.334277],[140.32666,42.293359],[140.416602,42.200732],[140.527539,42.131787],[140.577734,42.118652],[140.684277,42.123486],[140.733789,42.116357],[140.912305,41.977783],[141.107715,41.848047],[141.150977,41.805078],[141.078711,41.759814],[140.999512,41.737402],[140.90752,41.743262],[140.816406,41.7604],[140.659863,41.815576],[140.592969,41.768555],[140.48916,41.672168],[140.431641,41.567383],[140.384961,41.519287],[140.270117,41.456006],[140.148633,41.423242],[140.085156,41.434082],[140.036621,41.473779],[140.00918,41.521338],[139.995313,41.576416],[140.021289,41.695752],[140.08418,41.803223],[140.108398,41.912939],[140.056836,42.067334],[140.024121,42.099561],[139.895117,42.190039],[139.835449,42.278076],[139.820898,42.387598],[139.828516,42.448145],[139.860156,42.581738],[139.891113,42.649219],[139.950586,42.671436],[140.015039,42.684766],[140.114648,42.732959],[140.224121,42.795508],[140.328613,42.866846],[140.432227,42.954102],[140.486426,43.049902],[140.397461,43.167334],[140.379297,43.237109],[140.392383,43.303125],[140.486914,43.338184],[140.58457,43.311719],[140.780664,43.21499],[140.819141,43.205469],[140.953809,43.200977],[141.138184,43.179932],[141.24502,43.185059],[141.296289,43.199658],[141.374121,43.279639],[141.412305,43.381494],[141.39834,43.5125],[141.397656,43.642627],[141.446777,43.748633],[141.600684,43.918994],[141.644727,44.019434],[141.66084,44.263623],[141.716309,44.371191],[141.760938,44.48252],[141.782227,44.716357],[141.719043,44.941064],[141.655762,45.051221],[141.583008,45.155957],[141.59375,45.255957],[141.652539,45.348633],[141.654004,45.376562],[141.667969,45.40127],[141.778125,45.418896],[141.829492,45.43877],[141.878711,45.483301],[141.937695,45.509521],[141.980859,45.483496],[142.016406,45.437939],[142.171582,45.325635],[142.416016,45.125],[142.704102,44.819189],[142.884766,44.670117],[143.075098,44.534912],[143.288574,44.396631],[143.511914,44.277539],[143.65459,44.221338],[143.759082,44.131641],[143.824316,44.116992]]],[[[131.174609,33.602588],[131.30918,33.572754],[131.366016,33.570898],[131.41875,33.584424],[131.498828,33.623584],[131.583008,33.652393],[131.643066,33.637793],[131.696289,33.602832],[131.724219,33.553809],[131.710645,33.502344],[131.615527,33.391846],[131.537402,33.274072],[131.71709,33.2521],[131.896582,33.25459],[131.854688,33.181641],[131.847852,33.118066],[131.902734,33.087793],[131.949316,33.04707],[131.937207,33.010156],[131.910449,32.973682],[132.008594,32.919043],[132.002148,32.882373],[131.97666,32.843945],[131.732129,32.592822],[131.660352,32.465625],[131.610352,32.325488],[131.564648,32.223047],[131.531152,32.116748],[131.505664,32.001953],[131.460254,31.883496],[131.475293,31.778418],[131.459961,31.670801],[131.337207,31.404687],[131.249707,31.409619],[131.139746,31.441846],[131.070801,31.436865],[131.035156,31.377686],[131.098438,31.256152],[130.902246,31.112061],[130.685742,31.015137],[130.68418,31.059277],[130.704492,31.094092],[130.735742,31.12207],[130.758398,31.155811],[130.789746,31.269092],[130.774219,31.383203],[130.708984,31.526074],[130.704199,31.577441],[130.749414,31.598193],[130.779785,31.604102],[130.796289,31.624072],[130.796875,31.671289],[130.77627,31.706299],[130.714551,31.717676],[130.655078,31.718408],[130.613477,31.66543],[130.556055,31.563086],[130.528125,31.459668],[130.54043,31.403076],[130.565918,31.352393],[130.644531,31.26748],[130.621484,31.217529],[130.58877,31.178516],[130.310645,31.266895],[130.250586,31.273193],[130.200684,31.291895],[130.147266,31.408496],[130.260547,31.436572],[130.294141,31.450684],[130.306641,31.487793],[130.321973,31.601465],[130.268945,31.696338],[130.224219,31.730078],[130.187891,31.768848],[130.210938,31.848975],[130.195801,31.949854],[130.194434,32.090771],[130.214063,32.115039],[130.319141,32.143506],[130.394922,32.218994],[130.462012,32.304932],[130.560352,32.456055],[130.640527,32.619238],[130.563281,32.626367],[130.497852,32.656934],[130.569434,32.734131],[130.547266,32.831592],[130.44043,32.951367],[130.381738,33.092578],[130.287305,33.154785],[130.2375,33.177637],[130.176855,33.144531],[130.126855,33.104834],[130.173145,33.012988],[130.167773,32.931787],[130.175,32.851318],[130.222168,32.846826],[130.280078,32.866846],[130.326465,32.852637],[130.353516,32.810352],[130.36084,32.755859],[130.34043,32.701855],[130.297656,32.675],[130.245508,32.677148],[130.192969,32.706299],[130.152051,32.747852],[130.054102,32.770801],[129.950781,32.721729],[129.852539,32.621729],[129.768555,32.570996],[129.808105,32.645264],[129.826758,32.725342],[129.785938,32.781641],[129.690039,32.875244],[129.667773,32.929395],[129.662305,32.994922],[129.679102,33.059961],[129.777734,32.985547],[129.82832,32.892676],[129.900781,32.851904],[129.991699,32.851562],[129.921875,32.987988],[129.896777,33.022363],[129.79873,33.083594],[129.665039,33.186621],[129.580078,33.236279],[129.610156,33.343652],[129.659961,33.36499],[129.702148,33.359814],[129.844141,33.321777],[129.85752,33.375244],[129.836621,33.403809],[129.825684,33.437012],[129.919141,33.483496],[130.07207,33.521777],[130.103418,33.539697],[130.130566,33.578174],[130.167969,33.598291],[130.275098,33.597705],[130.365039,33.634473],[130.439453,33.734229],[130.457227,33.788965],[130.483789,33.834619],[130.669531,33.915479],[130.715625,33.927783],[130.839648,33.917773],[130.953125,33.872021],[131.009082,33.77583],[131.058105,33.672852],[131.174609,33.602588]]],[[[134.357422,34.256348],[134.495703,34.214746],[134.6375,34.226611],[134.635254,34.043945],[134.655371,33.982617],[134.695312,33.927734],[134.674805,33.847803],[134.738867,33.820508],[134.54873,33.729297],[134.377051,33.608398],[134.306543,33.526807],[134.242676,33.439453],[134.205664,33.346973],[134.181641,33.247217],[134.124121,33.286768],[133.958691,33.44834],[133.854004,33.492676],[133.685645,33.516309],[133.632031,33.510986],[133.285938,33.359961],[133.239941,33.249609],[133.145605,33.083154],[133.100879,33.028223],[133.051172,33.012451],[133.016016,32.983887],[132.977246,32.841992],[132.869922,32.75459],[132.804297,32.752002],[132.692188,32.775928],[132.641797,32.762451],[132.708984,32.90249],[132.601953,32.919531],[132.495117,32.916602],[132.492578,33.007666],[132.427832,33.059375],[132.475781,33.126465],[132.477148,33.181152],[132.505273,33.211279],[132.515039,33.255371],[132.511426,33.293066],[132.44541,33.30459],[132.405176,33.33125],[132.412793,33.430469],[132.374902,33.434082],[132.281055,33.416797],[132.08584,33.340137],[132.032617,33.33999],[132.114453,33.39458],[132.287891,33.469531],[132.365918,33.512451],[132.536035,33.63291],[132.643066,33.689941],[132.698926,33.790918],[132.716211,33.852246],[132.752344,33.906152],[132.784277,33.992432],[132.839453,34.02124],[132.935156,34.095312],[132.990137,34.088135],[133.05127,33.997119],[133.133691,33.927295],[133.193066,33.933203],[133.298828,33.968994],[133.349805,33.977051],[133.47207,33.972803],[133.582031,34.017139],[133.626758,34.069385],[133.643457,34.134668],[133.602637,34.243848],[133.655566,34.232861],[133.70625,34.237354],[133.825586,34.306836],[133.94834,34.348047],[134.075879,34.358398],[134.219238,34.319043],[134.357422,34.256348]]],[[[141.229297,41.372656],[141.26875,41.353809],[141.455469,41.404736],[141.419922,41.251172],[141.4,41.096338],[141.413672,40.839355],[141.430469,40.72334],[141.462793,40.611133],[141.542285,40.530713],[141.646289,40.473633],[141.79707,40.291162],[141.87793,40.067236],[141.935059,39.958496],[141.977832,39.844434],[141.99082,39.792236],[141.991895,39.739893],[141.979102,39.668359],[141.993164,39.610547],[141.976953,39.428809],[141.909473,39.218701],[141.900781,39.111328],[141.84209,39.090039],[141.806543,39.04043],[141.776172,39.017432],[141.74248,38.999609],[141.693555,38.995166],[141.658594,38.974854],[141.644727,38.91792],[141.622266,38.865137],[141.579688,38.816504],[141.546289,38.762842],[141.51875,38.632031],[141.508789,38.497852],[141.46748,38.40415],[141.368164,38.379736],[141.254297,38.381396],[141.108398,38.337939],[141.077344,38.312549],[140.962109,38.148877],[140.929004,38.052881],[140.92793,37.949609],[140.959961,37.822607],[141.003418,37.698437],[141.036328,37.467236],[141.00166,37.114648],[140.968359,37.002051],[140.895117,36.925732],[140.839648,36.890332],[140.791797,36.846875],[140.729883,36.731885],[140.627344,36.502783],[140.618848,36.445312],[140.619238,36.385596],[140.591602,36.307812],[140.573535,36.231348],[140.59043,36.142432],[140.621973,36.059229],[140.75957,35.845703],[140.813477,35.78252],[140.874023,35.724951],[140.639258,35.661279],[140.596875,35.632031],[140.457422,35.510254],[140.412891,35.394775],[140.416504,35.266992],[140.392969,35.221143],[140.354688,35.181445],[140.314746,35.155029],[140.158887,35.096484],[140.05918,35.038281],[139.959766,34.947314],[139.92041,34.899609],[139.843945,34.914893],[139.799219,34.956934],[139.843262,35.009863],[139.829688,35.072168],[139.851465,35.232324],[139.826465,35.29668],[139.906152,35.345264],[139.944141,35.422998],[140.027148,35.485205],[140.086328,35.54043],[140.096875,35.585156],[140.043652,35.63335],[139.9875,35.668213],[139.909766,35.668359],[139.834766,35.658057],[139.786328,35.612109],[139.770117,35.549561],[139.773926,35.520361],[139.767773,35.494824],[139.65,35.409131],[139.665527,35.319482],[139.7,35.273975],[139.744043,35.252393],[139.730859,35.221533],[139.675,35.149268],[139.635938,35.142139],[139.564063,35.243262],[139.474414,35.298535],[139.363477,35.298096],[139.249414,35.278027],[139.162695,35.210742],[139.134082,35.154883],[139.11582,35.097119],[139.121973,34.956494],[139.086035,34.83916],[139.015625,34.736035],[138.982617,34.698389],[138.89668,34.628418],[138.8375,34.619238],[138.795117,34.651025],[138.761035,34.699219],[138.804492,34.875732],[138.802734,34.974805],[138.903613,35.025244],[138.820898,35.095703],[138.719629,35.124072],[138.577148,35.086475],[138.537012,35.044141],[138.50957,34.987158],[138.433105,34.915186],[138.348633,34.847705],[138.253223,34.732666],[138.189063,34.596338],[137.979004,34.640918],[137.864258,34.650879],[137.748535,34.647412],[137.543359,34.664209],[137.318066,34.636377],[137.061719,34.582812],[137.077051,34.621436],[137.287793,34.703516],[137.29541,34.727588],[137.275195,34.77251],[137.222656,34.774707],[137.096582,34.759033],[137.032227,34.765918],[137.005957,34.814111],[136.963281,34.834912],[136.934766,34.815186],[136.944141,34.721533],[136.912891,34.709033],[136.871289,34.733105],[136.88457,34.805859],[136.856152,34.9125],[136.85293,34.978711],[136.89707,35.035547],[136.851855,35.059521],[136.804199,35.050293],[136.743555,35.022998],[136.690039,34.984131],[136.576953,34.789551],[136.533008,34.678369],[136.61582,34.589062],[136.841602,34.464209],[136.880273,34.433594],[136.881152,34.380469],[136.853711,34.324072],[136.792188,34.299268],[136.544434,34.257715],[136.329883,34.176855],[136.267871,34.094873],[136.072559,33.778223],[135.916211,33.561719],[135.695312,33.486963],[135.452832,33.553369],[135.394238,33.62876],[135.346777,33.721973],[135.256641,33.80625],[135.175391,33.898047],[135.12793,34.006982],[135.135352,34.182617],[135.100098,34.288379],[135.131934,34.316553],[135.265625,34.380811],[135.309277,34.416797],[135.384766,34.500439],[135.411816,34.546973],[135.415918,34.61748],[135.355176,34.654297],[135.198242,34.65293],[135.041699,34.631006],[134.929883,34.661816],[134.784961,34.74707],[134.740039,34.765234],[134.583789,34.770605],[134.472266,34.754785],[134.362695,34.723682],[134.246875,34.713867],[134.208301,34.697656],[134.074512,34.593115],[133.968262,34.527295],[133.876367,34.494629],[133.67793,34.485889],[133.578613,34.464697],[133.474414,34.430127],[133.445312,34.433154],[133.335645,34.385352],[133.209766,34.343994],[133.142383,34.302441],[133.018945,34.32959],[132.774609,34.255225],[132.656543,34.246094],[132.534473,34.287061],[132.421289,34.353369],[132.312598,34.324951],[132.238086,34.227002],[132.201953,34.032031],[132.159375,33.944238],[132.146484,33.83877],[132.090234,33.855469],[131.763184,34.045264],[131.740527,34.052051],[131.476172,34.019385],[131.40791,34.003613],[131.322754,33.965186],[131.232617,33.947998],[131.150391,33.975635],[131.071875,34.020654],[130.996387,34.007275],[130.918848,33.975732],[130.889258,34.261816],[130.904297,34.299561],[130.951855,34.349707],[131.004199,34.392578],[131.132227,34.407373],[131.261816,34.393457],[131.354395,34.413184],[131.43252,34.469824],[131.515039,34.550146],[131.608008,34.615479],[131.734082,34.66709],[131.856055,34.726318],[131.963086,34.809375],[132.064746,34.9],[132.158203,34.966504],[132.25957,35.022314],[132.414062,35.156299],[132.619043,35.306836],[132.697656,35.418311],[132.746582,35.449023],[132.922949,35.511279],[133.156934,35.558838],[133.267188,35.556543],[133.376465,35.458838],[133.435352,35.472217],[133.494922,35.497461],[133.61543,35.511426],[133.739355,35.495264],[133.860254,35.494873],[133.98125,35.507227],[134.214063,35.539258],[134.336523,35.57793],[134.456055,35.62793],[134.882227,35.663232],[135.174316,35.74707],[135.220508,35.741113],[135.26543,35.721777],[135.26875,35.659668],[135.232031,35.591895],[135.267773,35.550879],[135.326953,35.525537],[135.601855,35.517725],[135.680273,35.503125],[135.79502,35.549512],[135.903125,35.606885],[136.016211,35.68252],[136.095313,35.767627],[136.022266,35.874121],[136.00625,35.990576],[136.06748,36.116846],[136.15625,36.22334],[136.261816,36.287695],[136.358984,36.361768],[136.555859,36.571973],[136.698145,36.742041],[136.749316,36.951025],[136.719238,37.198389],[136.843457,37.382129],[136.962305,37.413672],[137.198633,37.497461],[137.322656,37.52207],[137.341211,37.485449],[137.3375,37.437451],[137.152051,37.283154],[137.045801,37.219727],[136.982227,37.200049],[136.924023,37.171973],[136.899902,37.117676],[136.994434,37.026758],[137.018555,36.959619],[137.012695,36.895117],[137.016699,36.837207],[137.12373,36.774072],[137.246289,36.753174],[137.297656,36.75376],[137.342578,36.770361],[137.482617,36.924756],[137.514063,36.951562],[137.913184,37.0646],[138.10957,37.151074],[138.218066,37.173389],[138.319922,37.218408],[138.54834,37.392139],[138.632812,37.472168],[138.709375,37.560645],[138.770605,37.663428],[138.818848,37.774707],[138.885059,37.843945],[139.247168,38.009082],[139.363867,38.099023],[139.400977,38.142578],[139.445801,38.26875],[139.476758,38.399805],[139.520801,38.502539],[139.580176,38.598877],[139.659766,38.697021],[139.749121,38.788135],[139.801953,38.881592],[139.878613,39.104932],[139.912305,39.228564],[139.938574,39.273145],[139.977148,39.310645],[140.01084,39.358057],[140.036523,39.411133],[140.048145,39.463721],[140.064746,39.624414],[140.054688,39.749268],[139.994727,39.855078],[139.945215,39.885107],[139.891211,39.886865],[139.810352,39.877734],[139.741504,39.92085],[139.755469,39.958936],[139.825684,39.966016],[139.873633,39.985693],[139.908008,40.021729],[139.972461,40.136963],[140.011133,40.260352],[140.014453,40.314893],[139.964063,40.414307],[139.923926,40.533887],[139.922852,40.598437],[139.966699,40.672754],[140.029297,40.733154],[140.085352,40.747363],[140.146094,40.751562],[140.20127,40.774902],[140.252344,40.808789],[140.28125,40.846094],[140.32627,40.947656],[140.343555,41.005664],[140.315234,41.160889],[140.344434,41.20332],[140.385938,41.229785],[140.441309,41.209668],[140.498047,41.205664],[140.56416,41.211816],[140.627637,41.19541],[140.639648,41.155615],[140.679395,40.893262],[140.702441,40.857812],[140.748633,40.830322],[140.800781,40.834326],[140.845801,40.875146],[140.876172,40.929541],[140.936035,40.940771],[141.118555,40.882275],[141.183203,40.924023],[141.225391,40.988477],[141.262109,41.102686],[141.244238,41.205615],[141.200391,41.243604],[141.155078,41.236719],[141.115039,41.208496],[141.07041,41.193066],[140.800586,41.138818],[140.801855,41.253662],[140.85957,41.425439],[140.891504,41.479785],[140.936914,41.505566],[141.050195,41.475732],[141.105859,41.455859],[141.229297,41.372656]]],[[[124.293164,24.515918],[124.234277,24.358057],[124.185645,24.335059],[124.135742,24.347607],[124.084766,24.43584],[124.12041,24.469629],[124.170215,24.451855],[124.210547,24.458643],[124.301953,24.587109],[124.324023,24.566357],[124.293164,24.515918]]],[[[123.888672,24.280127],[123.825586,24.266064],[123.749805,24.283301],[123.680664,24.288037],[123.679785,24.317773],[123.752344,24.348486],[123.753711,24.391309],[123.771484,24.414453],[123.934863,24.362012],[123.928125,24.323633],[123.888672,24.280127]]],[[[125.444141,24.743164],[125.359375,24.71709],[125.268945,24.73252],[125.283594,24.871924],[125.314941,24.852393],[125.33457,24.804688],[125.401855,24.776855],[125.444141,24.743164]]],[[[128.258789,26.652783],[128.1625,26.606934],[128.126953,26.552246],[128.037891,26.533594],[127.95127,26.456494],[127.86709,26.44248],[127.869238,26.380566],[127.904785,26.328125],[127.84873,26.318945],[127.790137,26.255078],[127.785547,26.208691],[127.806445,26.17124],[127.803613,26.152539],[127.729395,26.097168],[127.653125,26.094727],[127.649707,26.154492],[127.654883,26.19917],[127.727051,26.30791],[127.728906,26.433936],[127.795898,26.448535],[127.82041,26.466064],[127.925977,26.555713],[127.945508,26.593945],[127.89082,26.631055],[127.894824,26.674951],[127.907227,26.693604],[127.994336,26.679443],[128.029688,26.646875],[128.046777,26.643311],[128.097656,26.667773],[128.121582,26.711426],[128.216504,26.796875],[128.254883,26.881885],[128.331641,26.812109],[128.310938,26.720703],[128.258789,26.652783]]],[[[128.998145,27.720801],[128.95625,27.70249],[128.9,27.727783],[128.882812,27.842432],[128.907617,27.897998],[128.95166,27.910254],[128.989746,27.811133],[129.016406,27.770215],[128.998145,27.720801]]],[[[129.452539,28.208984],[129.366406,28.127734],[129.274902,28.200879],[129.164648,28.249756],[129.21709,28.262939],[129.247852,28.28252],[129.250879,28.313574],[129.322461,28.359619],[129.464551,28.395264],[129.509668,28.39751],[129.560547,28.431055],[129.577148,28.461279],[129.598047,28.475879],[129.689551,28.51748],[129.714648,28.469629],[129.710449,28.432129],[129.641699,28.411279],[129.574609,28.361182],[129.512695,28.29873],[129.456738,28.272314],[129.439063,28.254785],[129.452539,28.208984]]],[[[129.324023,28.104932],[129.330566,28.081592],[129.232422,28.101123],[129.19248,28.19248],[129.257422,28.176172],[129.277344,28.144727],[129.324023,28.104932]]],[[[139.841113,33.056055],[139.823828,33.045459],[139.775684,33.078223],[139.768945,33.107178],[139.777441,33.125146],[139.808887,33.129248],[139.873633,33.093506],[139.841113,33.056055]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Jamaica","SOV_A3":"JAM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Jamaica","ADM0_A3":"JAM","GEOU_DIF":0,"GEOUNIT":"Jamaica","GU_A3":"JAM","SU_DIF":0,"SUBUNIT":"Jamaica","SU_A3":"JAM","BRK_DIFF":0,"NAME":"Jamaica","NAME_LONG":"Jamaica","BRK_A3":"JAM","BRK_NAME":"Jamaica","BRK_GROUP":null,"ABBREV":"Jam.","POSTAL":"J","FORMAL_EN":"Jamaica","FORMAL_FR":null,"NAME_CIAWF":"Jamaica","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Jamaica","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":4,"MAPCOLOR13":10,"POP_EST":2948279,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":16458,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"JM","ISO_A2":"JM","ISO_A2_EH":"JM","ISO_A3":"JAM","ISO_A3_EH":"JAM","ISO_N3":"388","ISO_N3_EH":"388","UN_A3":"388","WB_A2":"JM","WB_A3":"JAM","WOE_ID":23424858,"WOE_ID_EH":23424858,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"JAM","ADM0_DIFF":null,"ADM0_TLC":"JAM","ADM0_A3_US":"JAM","ADM0_A3_FR":"JAM","ADM0_A3_RU":"JAM","ADM0_A3_ES":"JAM","ADM0_A3_CN":"JAM","ADM0_A3_TW":"JAM","ADM0_A3_IN":"JAM","ADM0_A3_NP":"JAM","ADM0_A3_PK":"JAM","ADM0_A3_DE":"JAM","ADM0_A3_GB":"JAM","ADM0_A3_BR":"JAM","ADM0_A3_IL":"JAM","ADM0_A3_PS":"JAM","ADM0_A3_SA":"JAM","ADM0_A3_EG":"JAM","ADM0_A3_MA":"JAM","ADM0_A3_PT":"JAM","ADM0_A3_AR":"JAM","ADM0_A3_JP":"JAM","ADM0_A3_KO":"JAM","ADM0_A3_VN":"JAM","ADM0_A3_TR":"JAM","ADM0_A3_ID":"JAM","ADM0_A3_PL":"JAM","ADM0_A3_GR":"JAM","ADM0_A3_IT":"JAM","ADM0_A3_NL":"JAM","ADM0_A3_SE":"JAM","ADM0_A3_BD":"JAM","ADM0_A3_UA":"JAM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-77.318767,"LABEL_Y":18.137124,"NE_ID":1159320931,"WIKIDATAID":"Q766","NAME_AR":"جامايكا","NAME_BN":"জ্যামাইকা","NAME_DE":"Jamaika","NAME_EN":"Jamaica","NAME_ES":"Jamaica","NAME_FA":"جامائیکا","NAME_FR":"Jamaïque","NAME_EL":"Τζαμάικα","NAME_HE":"ג'מייקה","NAME_HI":"जमैका","NAME_HU":"Jamaica","NAME_ID":"Jamaika","NAME_IT":"Giamaica","NAME_JA":"ジャマイカ","NAME_KO":"자메이카","NAME_NL":"Jamaica","NAME_PL":"Jamajka","NAME_PT":"Jamaica","NAME_RU":"Ямайка","NAME_SV":"Jamaica","NAME_TR":"Jamaika","NAME_UK":"Ямайка","NAME_UR":"جمیکا","NAME_VI":"Jamaica","NAME_ZH":"牙买加","NAME_ZHT":"牙買加","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-78.339502,17.714941,-76.210791,18.522217],"geometry":{"type":"Polygon","coordinates":[[[-77.261475,18.457422],[-77.139551,18.421484],[-77.01377,18.40293],[-76.959375,18.401855],[-76.908203,18.39043],[-76.793262,18.304297],[-76.700732,18.257178],[-76.349854,18.151855],[-76.232764,17.970312],[-76.210791,17.913525],[-76.301465,17.879834],[-76.415527,17.868213],[-76.524609,17.866211],[-76.625391,17.900977],[-76.669385,17.927637],[-76.774316,17.94043],[-76.748291,17.964893],[-76.794824,17.976318],[-76.853223,17.97373],[-76.89624,17.904102],[-76.944141,17.848779],[-77.035937,17.854102],[-77.071289,17.90127],[-77.119482,17.880078],[-77.158398,17.845068],[-77.20498,17.714941],[-77.279883,17.779541],[-77.361426,17.833691],[-77.463867,17.856055],[-77.670752,17.859717],[-77.768164,17.877393],[-77.849414,17.9875],[-77.881299,18.019043],[-77.962988,18.047559],[-78.044482,18.173828],[-78.073633,18.191162],[-78.294092,18.218066],[-78.339502,18.287207],[-78.325977,18.349756],[-78.252441,18.42627],[-78.216699,18.448096],[-78.094531,18.444824],[-77.978174,18.467822],[-77.926855,18.500684],[-77.873437,18.522217],[-77.451611,18.467041],[-77.354248,18.466455],[-77.261475,18.457422]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Italy","SOV_A3":"ITA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Italy","ADM0_A3":"ITA","GEOU_DIF":0,"GEOUNIT":"Italy","GU_A3":"ITA","SU_DIF":0,"SUBUNIT":"Italy","SU_A3":"ITA","BRK_DIFF":0,"NAME":"Italy","NAME_LONG":"Italy","BRK_A3":"ITA","BRK_NAME":"Italy","BRK_GROUP":null,"ABBREV":"Italy","POSTAL":"I","FORMAL_EN":"Italian Republic","FORMAL_FR":null,"NAME_CIAWF":"Italy","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Italy","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":7,"MAPCOLOR9":8,"MAPCOLOR13":7,"POP_EST":60297396,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":2003576,"GDP_YEAR":2019,"ECONOMY":"1. Developed region: G7","INCOME_GRP":"1. High income: OECD","FIPS_10":"IT","ISO_A2":"IT","ISO_A2_EH":"IT","ISO_A3":"ITA","ISO_A3_EH":"ITA","ISO_N3":"380","ISO_N3_EH":"380","UN_A3":"380","WB_A2":"IT","WB_A3":"ITA","WOE_ID":23424853,"WOE_ID_EH":23424853,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ITA","ADM0_DIFF":null,"ADM0_TLC":"ITA","ADM0_A3_US":"ITA","ADM0_A3_FR":"ITA","ADM0_A3_RU":"ITA","ADM0_A3_ES":"ITA","ADM0_A3_CN":"ITA","ADM0_A3_TW":"ITA","ADM0_A3_IN":"ITA","ADM0_A3_NP":"ITA","ADM0_A3_PK":"ITA","ADM0_A3_DE":"ITA","ADM0_A3_GB":"ITA","ADM0_A3_BR":"ITA","ADM0_A3_IL":"ITA","ADM0_A3_PS":"ITA","ADM0_A3_SA":"ITA","ADM0_A3_EG":"ITA","ADM0_A3_MA":"ITA","ADM0_A3_PT":"ITA","ADM0_A3_AR":"ITA","ADM0_A3_JP":"ITA","ADM0_A3_KO":"ITA","ADM0_A3_VN":"ITA","ADM0_A3_TR":"ITA","ADM0_A3_ID":"ITA","ADM0_A3_PL":"ITA","ADM0_A3_GR":"ITA","ADM0_A3_IT":"ITA","ADM0_A3_NL":"ITA","ADM0_A3_SE":"ITA","ADM0_A3_BD":"ITA","ADM0_A3_UA":"ITA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":11.076907,"LABEL_Y":44.732482,"NE_ID":1159320919,"WIKIDATAID":"Q38","NAME_AR":"إيطاليا","NAME_BN":"ইতালি","NAME_DE":"Italien","NAME_EN":"Italy","NAME_ES":"Italia","NAME_FA":"ایتالیا","NAME_FR":"Italie","NAME_EL":"Ιταλία","NAME_HE":"איטליה","NAME_HI":"इटली","NAME_HU":"Olaszország","NAME_ID":"Italia","NAME_IT":"Italia","NAME_JA":"イタリア","NAME_KO":"이탈리아","NAME_NL":"Italië","NAME_PL":"Włochy","NAME_PT":"Itália","NAME_RU":"Италия","NAME_SV":"Italien","NAME_TR":"İtalya","NAME_UK":"Італія","NAME_UR":"اطالیہ","NAME_VI":"Ý","NAME_ZH":"意大利","NAME_ZHT":"義大利","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[6.627734,36.687842,18.48584,47.082129],"geometry":{"type":"MultiPolygon","coordinates":[[[[7.021094,45.925781],[7.055762,45.903809],[7.129004,45.88042],[7.32793,45.912354],[7.451563,45.944434],[7.538574,45.978174],[7.592578,45.972217],[7.787891,45.921826],[7.852344,45.947461],[7.993164,46.015918],[8.014258,46.051904],[8.125195,46.160937],[8.127246,46.187598],[8.081543,46.256006],[8.095703,46.271045],[8.231934,46.341211],[8.298535,46.403418],[8.370703,46.445117],[8.422559,46.446045],[8.436816,46.431885],[8.442969,46.402783],[8.438477,46.282861],[8.458398,46.245898],[8.56543,46.159814],[8.641699,46.110791],[8.818555,46.077148],[8.826758,46.061035],[8.778027,45.996191],[8.885156,45.918701],[8.904297,45.861963],[8.953711,45.830029],[9.02373,45.845703],[9.04668,45.875586],[9.019141,45.928125],[8.998926,45.983105],[9.003027,46.014893],[9.022363,46.051465],[9.070996,46.102441],[9.203418,46.219238],[9.251074,46.286768],[9.259766,46.39126],[9.260156,46.475195],[9.304395,46.495557],[9.399316,46.480664],[9.427637,46.482324],[9.440625,46.430811],[9.481055,46.348779],[9.528711,46.306201],[9.57959,46.296094],[9.639453,46.295898],[9.787793,46.346045],[9.884473,46.367773],[9.939258,46.361816],[9.97168,46.327686],[10.041016,46.238086],[10.080566,46.227979],[10.12832,46.238232],[10.145215,46.253516],[10.129883,46.287988],[10.109668,46.362842],[10.081934,46.420752],[10.045605,46.4479],[10.038281,46.483203],[10.06123,46.546777],[10.087012,46.599902],[10.1375,46.614355],[10.195508,46.621094],[10.272266,46.564844],[10.363086,46.54707],[10.430664,46.550049],[10.44248,46.582861],[10.438281,46.618848],[10.397949,46.665039],[10.406055,46.734863],[10.452832,46.864941],[10.479395,46.855127],[10.579785,46.853711],[10.689258,46.846387],[10.759766,46.793311],[10.828906,46.775244],[10.927344,46.769482],[10.993262,46.777002],[11.025098,46.796973],[11.063477,46.859131],[11.133887,46.936182],[11.244434,46.975684],[11.433203,46.983057],[11.527539,46.997412],[11.625488,46.996582],[11.699414,46.984668],[11.775684,46.986084],[11.969531,47.039697],[12.169434,47.082129],[12.197168,47.075],[12.20127,47.060889],[12.165527,47.028174],[12.130762,46.984766],[12.154102,46.935254],[12.267969,46.835889],[12.330078,46.759814],[12.388281,46.702637],[12.479199,46.67251],[12.598633,46.654102],[12.699805,46.647461],[12.805566,46.625879],[13.16875,46.572656],[13.351562,46.55791],[13.490039,46.555566],[13.7,46.520264],[13.679688,46.462891],[13.637109,46.448535],[13.563281,46.415088],[13.478516,46.369189],[13.399512,46.317529],[13.378223,46.261621],[13.399609,46.224951],[13.420996,46.212305],[13.449805,46.223535],[13.491797,46.216602],[13.544727,46.196582],[13.63252,46.177051],[13.634961,46.157764],[13.616602,46.133105],[13.548047,46.089111],[13.486426,46.039551],[13.480273,46.009229],[13.487695,45.987109],[13.50918,45.973779],[13.600586,45.979785],[13.613965,45.96167],[13.569629,45.834131],[13.583398,45.812354],[13.663477,45.791992],[13.72168,45.761279],[13.831152,45.68042],[13.874707,45.614844],[13.844727,45.592871],[13.775977,45.581982],[13.719824,45.587598],[13.783301,45.627246],[13.62832,45.770947],[13.558203,45.770703],[13.465137,45.709961],[13.206348,45.771387],[13.156738,45.746582],[13.120117,45.6979],[13.030273,45.6375],[12.903027,45.610791],[12.76123,45.544287],[12.611719,45.497217],[12.497559,45.46167],[12.432129,45.46792],[12.536133,45.544922],[12.491797,45.546289],[12.353809,45.491992],[12.274316,45.446045],[12.248828,45.368848],[12.225684,45.241504],[12.286328,45.207715],[12.39248,45.039795],[12.523438,44.967969],[12.497949,44.899414],[12.463574,44.845215],[12.384473,44.79834],[12.319043,44.833105],[12.278906,44.832227],[12.24834,44.72251],[12.30498,44.429443],[12.396289,44.223877],[12.486816,44.134229],[12.691113,43.994727],[12.907031,43.921191],[13.295313,43.686084],[13.508203,43.61167],[13.56416,43.571289],[13.693262,43.389893],[13.804688,43.180371],[13.924902,42.851562],[14.010449,42.689551],[14.182715,42.506445],[14.540723,42.244287],[14.866113,42.052539],[15.16875,41.934033],[15.40498,41.913232],[15.964063,41.939453],[16.061523,41.928125],[16.164648,41.896191],[16.18916,41.814014],[16.15127,41.758496],[16.033691,41.700781],[15.91377,41.62085],[15.900488,41.512061],[16.012598,41.4354],[16.551855,41.232031],[17.103418,41.062158],[17.275195,40.975439],[17.474219,40.840576],[17.95498,40.655176],[18.036133,40.564941],[18.328223,40.37085],[18.460645,40.221045],[18.48584,40.104834],[18.422559,39.986865],[18.393457,39.903613],[18.34375,39.821387],[18.219336,39.852539],[18.07793,39.936963],[17.865039,40.280176],[17.476172,40.314941],[17.395801,40.340234],[17.257715,40.399072],[17.249414,40.437891],[17.215332,40.486426],[17.17998,40.502783],[17.03125,40.513477],[16.928223,40.458057],[16.807031,40.326465],[16.669629,40.137207],[16.52998,39.859668],[16.521875,39.747559],[16.597754,39.638916],[16.824316,39.57832],[16.999219,39.481592],[17.114551,39.380615],[17.122949,39.136572],[17.174609,38.998096],[17.098535,38.919336],[16.951465,38.939795],[16.755469,38.889697],[16.616699,38.800146],[16.558984,38.714795],[16.574219,38.493555],[16.545605,38.409082],[16.282422,38.249561],[16.144141,38.086377],[16.109766,38.018652],[16.056836,37.941846],[15.724512,37.939111],[15.645801,38.034229],[15.643066,38.175391],[15.700195,38.262305],[15.822363,38.302979],[15.904785,38.483496],[15.878906,38.613916],[15.926953,38.671729],[15.972363,38.712598],[16.065527,38.736426],[16.196777,38.759229],[16.209961,38.941113],[16.107422,39.023828],[16.071484,39.139453],[16.023633,39.353613],[15.854395,39.626514],[15.763672,39.870068],[15.692773,39.990186],[15.585156,40.052832],[15.390918,40.052148],[15.294531,40.07002],[14.950879,40.239014],[14.926953,40.264746],[14.929102,40.30957],[14.986133,40.37749],[14.947656,40.469336],[14.906934,40.556055],[14.839551,40.62998],[14.765723,40.668408],[14.61123,40.644775],[14.556934,40.626416],[14.459375,40.632715],[14.382715,40.599854],[14.339941,40.598828],[14.460547,40.728711],[14.428125,40.759326],[14.308887,40.812646],[14.147168,40.820703],[14.102344,40.827148],[14.075879,40.793945],[14.044336,40.812256],[14.047656,40.870312],[13.859766,41.12998],[13.733398,41.235645],[13.669727,41.254492],[13.554785,41.232178],[13.361914,41.278516],[13.246875,41.288867],[13.183398,41.277686],[13.088672,41.243848],[13.041016,41.266211],[13.024219,41.300928],[12.849219,41.40874],[12.630859,41.469678],[12.205664,41.812646],[12.075293,41.940869],[11.807031,42.082031],[11.637305,42.287549],[11.498438,42.362939],[11.296289,42.423291],[11.249707,42.415723],[11.188867,42.393115],[11.141211,42.389893],[11.103223,42.416602],[11.141797,42.444092],[11.184766,42.456592],[11.167773,42.535156],[10.937793,42.738721],[10.803125,42.804297],[10.765137,42.844678],[10.737109,42.899951],[10.708398,42.936328],[10.644629,42.957178],[10.590234,42.953613],[10.514844,42.967529],[10.517285,43.065137],[10.532324,43.140137],[10.520801,43.203809],[10.447559,43.371191],[10.320508,43.513086],[10.245801,43.8521],[10.188086,43.94751],[10.047656,44.019971],[9.730859,44.101172],[9.289355,44.319238],[9.195996,44.322998],[8.930371,44.407764],[8.76582,44.422314],[8.551953,44.346143],[8.292383,44.136523],[8.081641,43.918945],[8.00498,43.876758],[7.733301,43.802588],[7.493164,43.767139],[7.490527,43.822949],[7.482031,43.864893],[7.522656,43.911084],[7.589648,43.96543],[7.651465,44.033643],[7.677148,44.083154],[7.665039,44.116016],[7.637207,44.164844],[7.599414,44.168359],[7.370898,44.127393],[7.318555,44.137988],[7.149414,44.201709],[6.967285,44.280029],[6.900195,44.335742],[6.874805,44.392041],[6.893848,44.428174],[6.878613,44.463281],[6.842969,44.510693],[6.875195,44.564551],[6.931934,44.631641],[6.960352,44.677148],[7.00791,44.688965],[7.030664,44.716699],[6.992676,44.827295],[6.972852,44.84502],[6.939844,44.85874],[6.889355,44.860303],[6.801074,44.883154],[6.738184,44.921387],[6.724707,44.972998],[6.691406,45.022607],[6.634766,45.068164],[6.627734,45.117969],[6.692285,45.144287],[6.780371,45.145312],[6.842285,45.135645],[6.98125,45.215576],[7.032422,45.222607],[7.07832,45.239941],[7.116797,45.349023],[7.146387,45.381738],[7.153418,45.400928],[7.126074,45.423682],[7.013672,45.500488],[6.962402,45.580566],[6.881445,45.670361],[6.80625,45.71001],[6.790918,45.740869],[6.78916,45.780078],[6.804492,45.814551],[6.94082,45.868359],[7.021094,45.925781]],[[12.43916,41.898389],[12.438379,41.906201],[12.430566,41.905469],[12.427539,41.900732],[12.430566,41.897559],[12.43916,41.898389]],[[12.485254,43.901416],[12.514648,43.952979],[12.503711,43.989746],[12.441113,43.982422],[12.396875,43.93457],[12.426367,43.894092],[12.485254,43.901416]]],[[[10.395117,42.858154],[10.42832,42.819189],[10.432227,42.796582],[10.409961,42.770996],[10.419336,42.713184],[10.335645,42.761133],[10.208984,42.736914],[10.13125,42.742041],[10.109766,42.785059],[10.127539,42.810303],[10.248242,42.815771],[10.285742,42.828076],[10.358984,42.822314],[10.395117,42.858154]]],[[[13.938281,40.705615],[13.893652,40.696973],[13.867676,40.70874],[13.853516,40.724072],[13.871191,40.761816],[13.962109,40.739404],[13.96084,40.718164],[13.938281,40.705615]]],[[[12.05127,36.757031],[12.00332,36.745996],[11.940625,36.780371],[11.936426,36.828613],[11.948047,36.843066],[12.024219,36.820947],[12.048047,36.776367],[12.05127,36.757031]]],[[[15.576563,38.220312],[15.508887,38.106641],[15.475684,38.062939],[15.234473,37.784814],[15.206836,37.720557],[15.189844,37.650732],[15.164844,37.589551],[15.131055,37.531885],[15.099512,37.458594],[15.105664,37.375488],[15.116992,37.334717],[15.145996,37.308008],[15.193652,37.282861],[15.230273,37.244336],[15.174121,37.20918],[15.236035,37.138721],[15.288672,37.096924],[15.295703,37.055176],[15.294531,37.013281],[15.185156,36.934814],[15.142383,36.891602],[15.11582,36.839258],[15.104297,36.785254],[15.116309,36.736475],[15.112598,36.687842],[15.002441,36.693896],[14.889648,36.723535],[14.775977,36.7104],[14.614355,36.766602],[14.555469,36.776758],[14.501855,36.798682],[14.367285,36.972852],[14.259082,37.046436],[14.142969,37.103662],[14.024316,37.107129],[13.905469,37.100635],[13.800586,37.135889],[13.587109,37.25415],[13.360938,37.34873],[13.264941,37.410352],[13.221094,37.451807],[13.169922,37.479297],[13.040332,37.506543],[12.924121,37.570508],[12.871191,37.575195],[12.757324,37.567383],[12.699023,37.571826],[12.640234,37.594336],[12.526758,37.669531],[12.454395,37.773779],[12.435547,37.819775],[12.486816,37.938721],[12.547656,38.05293],[12.60166,38.084961],[12.664355,38.10791],[12.702344,38.141699],[12.734375,38.183057],[12.850684,38.063721],[12.902734,38.034863],[12.955469,38.041309],[13.049023,38.084082],[13.056836,38.130908],[13.159961,38.190332],[13.291113,38.191455],[13.35166,38.180518],[13.383496,38.126807],[13.433496,38.110254],[13.491309,38.103125],[13.681543,38.000732],[13.734863,37.984033],[13.788867,37.981201],[13.936621,38.02417],[14.05,38.040527],[14.287695,38.016846],[14.416211,38.042578],[14.505957,38.045508],[14.636719,38.085059],[14.737207,38.150781],[14.789648,38.166992],[14.845898,38.17168],[14.981934,38.167578],[15.11875,38.152734],[15.176074,38.168066],[15.224023,38.211035],[15.27959,38.230371],[15.340723,38.217334],[15.49873,38.290869],[15.568359,38.295898],[15.634668,38.267578],[15.576563,38.220312]]],[[[9.632031,40.882031],[9.682031,40.818115],[9.794336,40.556201],[9.805273,40.499561],[9.782813,40.441504],[9.754199,40.400293],[9.642969,40.268408],[9.659473,40.159229],[9.700781,40.091797],[9.706738,40.017041],[9.686035,39.924365],[9.616992,39.354395],[9.583594,39.253564],[9.5625,39.166016],[9.486328,39.139551],[9.388086,39.167529],[9.26416,39.216797],[9.206934,39.213818],[9.149316,39.196973],[9.101758,39.211279],[9.056348,39.23916],[9.022656,39.043262],[8.966602,38.963721],[8.881348,38.912891],[8.801172,38.909668],[8.718555,38.926709],[8.648535,38.926562],[8.59541,38.964307],[8.55332,39.030322],[8.48623,39.110498],[8.418164,39.205713],[8.410742,39.291797],[8.399121,39.481592],[8.418652,39.523047],[8.44707,39.562793],[8.461035,39.647705],[8.451172,39.72168],[8.471094,39.748096],[8.510742,39.72168],[8.540527,39.731592],[8.538672,39.769678],[8.547754,39.839209],[8.495898,39.897461],[8.407813,39.917236],[8.399316,39.978174],[8.408594,40.037646],[8.455078,40.077588],[8.470801,40.130713],[8.471289,40.292676],[8.40918,40.352344],[8.385352,40.442676],[8.353223,40.500537],[8.295508,40.558643],[8.230273,40.605957],[8.189941,40.651611],[8.180859,40.771045],[8.203809,40.870703],[8.224219,40.91333],[8.245215,40.907031],[8.310156,40.85752],[8.363281,40.846338],[8.468457,40.834326],[8.571875,40.850195],[8.698926,40.895264],[8.821191,40.949902],[8.998145,41.110352],[9.107227,41.14292],[9.163086,41.185156],[9.182129,41.242188],[9.228418,41.25708],[9.283008,41.20166],[9.350781,41.195898],[9.455176,41.150146],[9.500195,41.106348],[9.53877,41.053662],[9.575684,41.030518],[9.615332,41.017285],[9.621191,41.004883],[9.589746,40.99248],[9.553711,40.932129],[9.574023,40.914746],[9.632031,40.882031]]],[[[8.478906,39.067529],[8.421484,38.968652],[8.360938,39.038672],[8.358594,39.098779],[8.366797,39.115918],[8.440625,39.090625],[8.478906,39.067529]]],[[[8.286035,41.039844],[8.252734,40.994141],[8.205664,40.997461],[8.224023,41.031299],[8.267383,41.099121],[8.320215,41.121875],[8.34375,41.101611],[8.318945,41.062744],[8.286035,41.039844]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Israel","SOV_A3":"IS1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Disputed","TLC":"1","ADMIN":"Israel","ADM0_A3":"ISR","GEOU_DIF":0,"GEOUNIT":"Israel","GU_A3":"ISR","SU_DIF":0,"SUBUNIT":"Israel","SU_A3":"ISR","BRK_DIFF":1,"NAME":"Israel","NAME_LONG":"Israel","BRK_A3":"ISR","BRK_NAME":"Israel","BRK_GROUP":null,"ABBREV":"Isr.","POSTAL":"IS","FORMAL_EN":"State of Israel","FORMAL_FR":null,"NAME_CIAWF":"Israel","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Israel","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":9,"POP_EST":9053300,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":394652,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"-99","ISO_A2":"IL","ISO_A2_EH":"IL","ISO_A3":"ISR","ISO_A3_EH":"ISR","ISO_N3":"376","ISO_N3_EH":"376","UN_A3":"376","WB_A2":"IL","WB_A3":"ISR","WOE_ID":23424852,"WOE_ID_EH":23424852,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ISR","ADM0_DIFF":null,"ADM0_TLC":"ISR","ADM0_A3_US":"ISR","ADM0_A3_FR":"ISR","ADM0_A3_RU":"ISR","ADM0_A3_ES":"ISR","ADM0_A3_CN":"ISR","ADM0_A3_TW":"ISR","ADM0_A3_IN":"ISR","ADM0_A3_NP":"ISR","ADM0_A3_PK":"PSX","ADM0_A3_DE":"ISR","ADM0_A3_GB":"ISR","ADM0_A3_BR":"ISR","ADM0_A3_IL":"ISR","ADM0_A3_PS":"ISR","ADM0_A3_SA":"PSX","ADM0_A3_EG":"ISR","ADM0_A3_MA":"ISR","ADM0_A3_PT":"ISR","ADM0_A3_AR":"ISR","ADM0_A3_JP":"ISR","ADM0_A3_KO":"ISR","ADM0_A3_VN":"ISR","ADM0_A3_TR":"ISR","ADM0_A3_ID":"ISR","ADM0_A3_PL":"ISR","ADM0_A3_GR":"ISR","ADM0_A3_IT":"ISR","ADM0_A3_NL":"ISR","ADM0_A3_SE":"ISR","ADM0_A3_BD":"PSX","ADM0_A3_UA":"ISR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":34.847915,"LABEL_Y":30.911148,"NE_ID":1159320895,"WIKIDATAID":"Q801","NAME_AR":"إسرائيل","NAME_BN":"ইসরায়েল","NAME_DE":"Israel","NAME_EN":"Israel","NAME_ES":"Israel","NAME_FA":"اسرائیل","NAME_FR":"Israël","NAME_EL":"Ισραήλ","NAME_HE":"ישראל","NAME_HI":"इज़राइल","NAME_HU":"Izrael","NAME_ID":"Israel","NAME_IT":"Israele","NAME_JA":"イスラエル","NAME_KO":"이스라엘","NAME_NL":"Israël","NAME_PL":"Izrael","NAME_PT":"Israel","NAME_RU":"Израиль","NAME_SV":"Israel","NAME_TR":"İsrail","NAME_UK":"Ізраїль","NAME_UR":"اسرائیل","NAME_VI":"Israel","NAME_ZH":"以色列","NAME_ZHT":"以色列","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":"Unrecognized","FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":"Unrecognized","FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":"Unrecognized","FCLASS_UA":null},"bbox":[34.245313,29.477344,35.887977,33.415674],"geometry":{"type":"Polygon","coordinates":[[[35.840723,33.415674],[35.816125,33.361879],[35.792531,33.334107],[35.785024,33.291089],[35.800038,33.256121],[35.808618,33.208577],[35.826849,33.195117],[35.833283,33.163702],[35.817197,33.133173],[35.824704,33.108024],[35.84508,33.084665],[35.859022,32.989367],[35.887977,32.944379],[35.841863,32.875954],[35.833283,32.820094],[35.787305,32.734912],[35.734473,32.728906],[35.61123,32.68208],[35.594531,32.668018],[35.572852,32.640869],[35.569043,32.619873],[35.551465,32.395508],[35.484375,32.40166],[35.402637,32.450635],[35.386719,32.493018],[35.362109,32.507471],[35.303809,32.512939],[35.193262,32.534424],[35.065039,32.460449],[35.010547,32.338184],[34.999512,32.281055],[34.955957,32.160937],[34.971387,32.087109],[34.978809,31.991602],[34.989746,31.913281],[34.97832,31.866406],[34.953809,31.84126],[34.961133,31.82334],[34.983008,31.816797],[35.053223,31.837939],[35.127148,31.816748],[35.198047,31.776318],[35.203711,31.75],[35.153418,31.734473],[35.034668,31.673242],[34.950977,31.602295],[34.929199,31.536572],[34.872754,31.396875],[34.880469,31.368164],[34.907813,31.351318],[35.101172,31.366211],[35.27666,31.422803],[35.408691,31.48291],[35.450586,31.479297],[35.422852,31.325391],[35.423535,31.324854],[35.400684,31.230518],[35.409668,31.214453],[35.439258,31.132422],[35.383008,30.982275],[35.320117,30.860205],[35.297852,30.802246],[35.236621,30.673486],[35.174023,30.523926],[35.140625,30.420898],[35.148145,30.384326],[35.132617,30.195312],[35.141602,30.141699],[35.068164,29.977881],[35.053418,29.896924],[35.023926,29.787061],[34.973438,29.555029],[34.904297,29.477344],[34.869824,29.563916],[34.791113,29.812109],[34.735059,29.982031],[34.658594,30.191455],[34.529688,30.446045],[34.517773,30.507373],[34.489941,30.596289],[34.400977,30.827832],[34.328516,30.99502],[34.245313,31.208301],[34.34834,31.29292],[34.350195,31.362744],[34.525586,31.525635],[34.524121,31.54165],[34.477344,31.584863],[34.483984,31.592285],[34.678418,31.895703],[34.803809,32.196338],[34.921875,32.614062],[35.005859,32.826611],[35.077051,32.967187],[35.108594,33.083691],[35.22334,33.091992],[35.308887,33.079541],[35.41123,33.075684],[35.493164,33.119482],[35.53252,33.250488],[35.579297,33.271484],[35.60293,33.240625],[35.627246,33.275049],[35.734473,33.332617],[35.7875,33.369775],[35.840723,33.415674]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Israel","SOV_A3":"IS1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Indeterminate","TLC":"1","ADMIN":"Palestine","ADM0_A3":"PSX","GEOU_DIF":0,"GEOUNIT":"Palestine","GU_A3":"PSX","SU_DIF":0,"SUBUNIT":"Palestine","SU_A3":"PSX","BRK_DIFF":0,"NAME":"Palestine","NAME_LONG":"Palestine","BRK_A3":"PSX","BRK_NAME":"Palestine","BRK_GROUP":null,"ABBREV":"Pal.","POSTAL":"PAL","FORMAL_EN":"West Bank and Gaza","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":null,"NOTE_BRK":"Partial self-admin.","NAME_SORT":"Palestine (West Bank and Gaza)","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":8,"POP_EST":4685306,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":16276,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"-99","ISO_A2":"PS","ISO_A2_EH":"PS","ISO_A3":"PSE","ISO_A3_EH":"PSE","ISO_N3":"275","ISO_N3_EH":"275","UN_A3":"275","WB_A2":"GZ","WB_A3":"WBG","WOE_ID":28289408,"WOE_ID_EH":28289408,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PSX","ADM0_DIFF":null,"ADM0_TLC":"PSX","ADM0_A3_US":"PSX","ADM0_A3_FR":"PSX","ADM0_A3_RU":"PSX","ADM0_A3_ES":"PSX","ADM0_A3_CN":"PSX","ADM0_A3_TW":"PSX","ADM0_A3_IN":"PSX","ADM0_A3_NP":"PSX","ADM0_A3_PK":"PSX","ADM0_A3_DE":"PSX","ADM0_A3_GB":"PSX","ADM0_A3_BR":"PSX","ADM0_A3_IL":"PSX","ADM0_A3_PS":"PSX","ADM0_A3_SA":"PSX","ADM0_A3_EG":"PSX","ADM0_A3_MA":"PSX","ADM0_A3_PT":"PSX","ADM0_A3_AR":"PSX","ADM0_A3_JP":"PSX","ADM0_A3_KO":"PSX","ADM0_A3_VN":"PSX","ADM0_A3_TR":"PSX","ADM0_A3_ID":"PSX","ADM0_A3_PL":"PSX","ADM0_A3_GR":"PSX","ADM0_A3_IT":"PSX","ADM0_A3_NL":"PSX","ADM0_A3_SE":"PSX","ADM0_A3_BD":"PSX","ADM0_A3_UA":"PSX","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":7,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":35.291341,"LABEL_Y":32.047431,"NE_ID":1159320899,"WIKIDATAID":"Q23792","NAME_AR":"فلسطين","NAME_BN":"ফিলিস্তিন অঞ্চল","NAME_DE":"Palästina","NAME_EN":"Palestine","NAME_ES":"Palestina","NAME_FA":"فلسطین","NAME_FR":"Palestine","NAME_EL":"Παλαιστίνη","NAME_HE":"ארץ ישראל","NAME_HI":"फ़िलिस्तीनी राज्यक्षेत्र","NAME_HU":"Palesztina","NAME_ID":"Palestina","NAME_IT":"Palestina","NAME_JA":"パレスチナ","NAME_KO":"팔레스타인","NAME_NL":"Palestina","NAME_PL":"Palestyna","NAME_PT":"Palestina","NAME_RU":"Палестина","NAME_SV":"Palestina","NAME_TR":"Filistin","NAME_UK":"Палестина","NAME_UR":"فلسطین","NAME_VI":"Palestine","NAME_ZH":"巴勒斯坦","NAME_ZHT":"巴勒斯坦地區","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":"Admin-0 country","FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":"Admin-0 country","FCLASS_SA":"Admin-0 country","FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":"Admin-0 country","FCLASS_UA":null},"bbox":[34.198145,31.208301,35.57207,32.534424],"geometry":{"type":"MultiPolygon","coordinates":[[[[34.477344,31.584863],[34.524121,31.54165],[34.525586,31.525635],[34.350195,31.362744],[34.34834,31.29292],[34.245313,31.208301],[34.2125,31.292285],[34.198145,31.322607],[34.387305,31.483789],[34.477344,31.584863]]],[[[35.551465,32.395508],[35.57207,32.237891],[35.534766,32.103027],[35.531445,31.984912],[35.558984,31.765527],[35.499414,31.672363],[35.46543,31.562354],[35.450586,31.479297],[35.408691,31.48291],[35.27666,31.422803],[35.101172,31.366211],[34.907813,31.351318],[34.880469,31.368164],[34.872754,31.396875],[34.929199,31.536572],[34.950977,31.602295],[35.034668,31.673242],[35.153418,31.734473],[35.203711,31.75],[35.198047,31.776318],[35.127148,31.816748],[35.053223,31.837939],[34.983008,31.816797],[34.961133,31.82334],[34.953809,31.84126],[34.97832,31.866406],[34.989746,31.913281],[34.978809,31.991602],[34.971387,32.087109],[34.955957,32.160937],[34.999512,32.281055],[35.010547,32.338184],[35.065039,32.460449],[35.193262,32.534424],[35.303809,32.512939],[35.362109,32.507471],[35.386719,32.493018],[35.402637,32.450635],[35.484375,32.40166],[35.551465,32.395508]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":3,"SOVEREIGNT":"Ireland","SOV_A3":"IRL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Ireland","ADM0_A3":"IRL","GEOU_DIF":0,"GEOUNIT":"Ireland","GU_A3":"IRL","SU_DIF":0,"SUBUNIT":"Ireland","SU_A3":"IRL","BRK_DIFF":0,"NAME":"Ireland","NAME_LONG":"Ireland","BRK_A3":"IRL","BRK_NAME":"Ireland","BRK_GROUP":null,"ABBREV":"Ire.","POSTAL":"IRL","FORMAL_EN":"Ireland","FORMAL_FR":null,"NAME_CIAWF":"Ireland","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Ireland","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":3,"MAPCOLOR9":2,"MAPCOLOR13":2,"POP_EST":4941444,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":388698,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"EI","ISO_A2":"IE","ISO_A2_EH":"IE","ISO_A3":"IRL","ISO_A3_EH":"IRL","ISO_N3":"372","ISO_N3_EH":"372","UN_A3":"372","WB_A2":"IE","WB_A3":"IRL","WOE_ID":23424803,"WOE_ID_EH":23424803,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"IRL","ADM0_DIFF":null,"ADM0_TLC":"IRL","ADM0_A3_US":"IRL","ADM0_A3_FR":"IRL","ADM0_A3_RU":"IRL","ADM0_A3_ES":"IRL","ADM0_A3_CN":"IRL","ADM0_A3_TW":"IRL","ADM0_A3_IN":"IRL","ADM0_A3_NP":"IRL","ADM0_A3_PK":"IRL","ADM0_A3_DE":"IRL","ADM0_A3_GB":"IRL","ADM0_A3_BR":"IRL","ADM0_A3_IL":"IRL","ADM0_A3_PS":"IRL","ADM0_A3_SA":"IRL","ADM0_A3_EG":"IRL","ADM0_A3_MA":"IRL","ADM0_A3_PT":"IRL","ADM0_A3_AR":"IRL","ADM0_A3_JP":"IRL","ADM0_A3_KO":"IRL","ADM0_A3_VN":"IRL","ADM0_A3_TR":"IRL","ADM0_A3_ID":"IRL","ADM0_A3_PL":"IRL","ADM0_A3_GR":"IRL","ADM0_A3_IT":"IRL","ADM0_A3_NL":"IRL","ADM0_A3_SE":"IRL","ADM0_A3_BD":"IRL","ADM0_A3_UA":"IRL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-7.798588,"LABEL_Y":53.078726,"NE_ID":1159320877,"WIKIDATAID":"Q27","NAME_AR":"جمهورية أيرلندا","NAME_BN":"প্রজাতন্ত্রী আয়ারল্যান্ড","NAME_DE":"Irland","NAME_EN":"Ireland","NAME_ES":"Irlanda","NAME_FA":"ایرلند","NAME_FR":"Irlande","NAME_EL":"Δημοκρατία της Ιρλανδίας","NAME_HE":"אירלנד","NAME_HI":"आयरलैण्ड","NAME_HU":"Írország","NAME_ID":"Republik Irlandia","NAME_IT":"Irlanda","NAME_JA":"アイルランド","NAME_KO":"아일랜드","NAME_NL":"Ierland","NAME_PL":"Irlandia","NAME_PT":"República da Irlanda","NAME_RU":"Ирландия","NAME_SV":"Irland","NAME_TR":"İrlanda","NAME_UK":"Ірландія","NAME_UR":"جمہوریہ آئرلینڈ","NAME_VI":"Cộng hòa Ireland","NAME_ZH":"爱尔兰","NAME_ZHT":"愛爾蘭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-10.390234,51.47373,-6.027393,55.36582],"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.948193,53.913135],[-9.952441,53.88457],[-10.026514,53.920557],[-10.0625,53.959717],[-10.265723,53.977686],[-10.181055,54.016846],[-10.139746,54.005225],[-9.996387,54.003613],[-9.956152,53.987207],[-9.948193,53.913135]]],[[[-7.218652,55.091992],[-7.376904,55.027686],[-7.401416,55.00332],[-7.445996,54.905127],[-7.45127,54.8771],[-7.502197,54.825439],[-7.550391,54.767969],[-7.606445,54.745703],[-7.68999,54.728027],[-7.7375,54.710449],[-7.797266,54.719287],[-7.872949,54.717871],[-7.910596,54.69834],[-7.90874,54.68335],[-7.886133,54.666064],[-7.819824,54.639697],[-7.746289,54.61582],[-7.754395,54.594922],[-7.793799,54.57124],[-8.044336,54.512451],[-8.118945,54.476953],[-8.144824,54.453516],[-8.118262,54.414258],[-7.918457,54.296582],[-7.884473,54.283789],[-7.854932,54.215283],[-7.67876,54.18667],[-7.606543,54.143848],[-7.544434,54.133594],[-7.409424,54.137305],[-7.355176,54.12124],[-7.324512,54.133447],[-7.306738,54.156006],[-7.193066,54.214111],[-7.155469,54.239502],[-7.178076,54.274902],[-7.202588,54.301807],[-7.133496,54.355371],[-7.049707,54.408252],[-7.007715,54.406689],[-6.936133,54.374316],[-6.877246,54.329102],[-6.869238,54.294043],[-6.85835,54.268652],[-6.802588,54.214355],[-6.766602,54.195605],[-6.669531,54.184717],[-6.646875,54.163428],[-6.664209,54.084766],[-6.649805,54.058643],[-6.548145,54.057275],[-6.440283,54.063623],[-6.402588,54.060645],[-6.363672,54.0771],[-6.303662,54.094873],[-6.218018,54.088721],[-6.175732,54.053516],[-6.156934,54.017236],[-6.230664,54.003613],[-6.307617,54.011035],[-6.345166,53.987207],[-6.347607,53.941309],[-6.321582,53.882178],[-6.270117,53.840234],[-6.229004,53.745703],[-6.194873,53.640869],[-6.141846,53.577539],[-6.130957,53.498926],[-6.13877,53.460303],[-6.129102,53.390869],[-6.15166,53.366406],[-6.134717,53.301221],[-6.072266,53.166309],[-6.04502,53.091162],[-6.027393,52.9271],[-6.071484,52.865625],[-6.130664,52.807275],[-6.169336,52.738135],[-6.199219,52.663477],[-6.217236,52.543115],[-6.34541,52.402002],[-6.399951,52.366943],[-6.463184,52.345361],[-6.325,52.24668],[-6.437939,52.202686],[-6.561084,52.188818],[-6.697314,52.213525],[-6.782227,52.210498],[-6.859717,52.178564],[-6.890234,52.159229],[-6.914648,52.168555],[-6.965771,52.249512],[-7.003271,52.165918],[-7.081787,52.139307],[-7.216211,52.144971],[-7.440869,52.122705],[-7.527295,52.098877],[-7.563184,52.061621],[-7.589844,52.018555],[-7.624902,51.993115],[-7.664551,51.979736],[-7.837988,51.947998],[-7.872168,51.935303],[-7.95249,51.865771],[-8.057812,51.825586],[-8.14502,51.813525],[-8.222461,51.854004],[-8.254297,51.87832],[-8.290234,51.890674],[-8.40918,51.88877],[-8.371631,51.87627],[-8.347363,51.847705],[-8.335596,51.792969],[-8.349121,51.739307],[-8.407812,51.712061],[-8.477832,51.707031],[-8.588281,51.651367],[-8.734473,51.636182],[-8.813428,51.584912],[-9.296484,51.498242],[-9.323877,51.497217],[-9.390576,51.519287],[-9.462891,51.529053],[-9.534863,51.522168],[-9.737305,51.47373],[-9.835352,51.48335],[-9.710352,51.603711],[-9.542383,51.664453],[-9.524902,51.681104],[-9.579834,51.689258],[-9.899023,51.64707],[-10.009912,51.611133],[-10.120752,51.600684],[-10.069434,51.655566],[-9.926416,51.730713],[-9.849707,51.766113],[-9.802881,51.780127],[-9.749512,51.824268],[-9.598828,51.874414],[-10.084229,51.770996],[-10.211719,51.783594],[-10.241748,51.812451],[-10.341064,51.798926],[-10.378711,51.86875],[-10.231592,51.974512],[-10.14585,52.02002],[-10.044043,52.04458],[-9.946045,52.079834],[-9.909668,52.122949],[-9.955811,52.13667],[-10.249512,52.125732],[-10.390234,52.134912],[-10.382617,52.169092],[-10.356689,52.206934],[-10.210938,52.27168],[-10.13208,52.28208],[-10.061768,52.275928],[-9.993115,52.259326],[-9.937305,52.237646],[-9.772119,52.250098],[-9.841064,52.291455],[-9.853223,52.375488],[-9.906055,52.403711],[-9.838477,52.442676],[-9.761133,52.466357],[-9.632227,52.546924],[-9.586328,52.55918],[-9.33125,52.57876],[-9.056152,52.621143],[-8.783447,52.679639],[-8.923291,52.712305],[-8.990283,52.75542],[-9.0979,52.668262],[-9.175391,52.634912],[-9.394238,52.61709],[-9.463477,52.626904],[-9.561035,52.653955],[-9.591357,52.643652],[-9.619531,52.622754],[-9.764355,52.57998],[-9.916602,52.569727],[-9.7396,52.648193],[-9.51499,52.781152],[-9.464893,52.823193],[-9.393652,52.89624],[-9.415723,52.92876],[-9.461963,52.947266],[-9.299219,53.097559],[-9.241895,53.124854],[-9.137598,53.129248],[-9.061133,53.153076],[-9.027441,53.153174],[-8.997168,53.162061],[-8.930127,53.20708],[-9.033545,53.235742],[-9.140332,53.250488],[-9.470752,53.234863],[-9.514209,53.238232],[-9.555176,53.252051],[-9.581738,53.271973],[-9.601758,53.323047],[-9.625977,53.334473],[-9.700586,53.334473],[-9.774072,53.318848],[-9.825391,53.320361],[-9.875781,53.342725],[-9.79541,53.394971],[-9.899023,53.407275],[-10.003906,53.397021],[-10.09126,53.412842],[-10.093994,53.445605],[-10.054395,53.47832],[-10.10625,53.509326],[-10.116992,53.548535],[-10.061719,53.567822],[-10.001367,53.561426],[-9.878271,53.59043],[-9.720654,53.604492],[-9.855859,53.633105],[-9.909717,53.657617],[-9.912305,53.695117],[-9.901611,53.727197],[-9.745068,53.781494],[-9.578223,53.80542],[-9.590527,53.841162],[-9.578857,53.879834],[-9.74751,53.891016],[-9.914062,53.863721],[-9.89624,53.937598],[-9.856348,54.004297],[-9.848486,54.048291],[-9.856445,54.095361],[-9.934473,54.075244],[-9.943604,54.141602],[-9.9771,54.187109],[-10.092676,54.155762],[-10.089697,54.21582],[-10.056396,54.257812],[-9.995947,54.276025],[-9.935937,54.268115],[-9.824561,54.268896],[-9.717139,54.300439],[-9.562305,54.308545],[-9.315527,54.298633],[-9.145898,54.209619],[-9.1021,54.225537],[-9.034277,54.281787],[-9.002441,54.287988],[-8.746777,54.263477],[-8.588037,54.231104],[-8.545557,54.241211],[-8.568457,54.303613],[-8.623145,54.346875],[-8.554443,54.403564],[-8.470996,54.441943],[-8.415234,54.461084],[-8.286523,54.484863],[-8.230371,54.507275],[-8.192969,54.580127],[-8.133447,54.64082],[-8.456543,54.609277],[-8.763916,54.681201],[-8.715186,54.732031],[-8.650293,54.760889],[-8.538281,54.782959],[-8.527686,54.809473],[-8.470996,54.831543],[-8.377295,54.889453],[-8.411719,54.965088],[-8.393262,55.02041],[-8.325781,55.056445],[-8.304688,55.108203],[-8.274609,55.146289],[-8.137695,55.159912],[-8.006104,55.195312],[-7.958594,55.191895],[-7.803174,55.200049],[-7.750537,55.185791],[-7.762549,55.24834],[-7.66709,55.256494],[-7.629785,55.243994],[-7.613379,55.199658],[-7.57002,55.171387],[-7.556641,55.122217],[-7.585693,55.084229],[-7.634277,55.05498],[-7.589844,55.025049],[-7.65874,54.970947],[-7.584375,54.993994],[-7.478418,55.046973],[-7.483936,55.090283],[-7.501953,55.144727],[-7.531445,55.193848],[-7.517871,55.247949],[-7.458301,55.281787],[-7.301758,55.298779],[-7.365967,55.360205],[-7.308789,55.36582],[-7.24668,55.353027],[-7.155322,55.305176],[-7.060254,55.267627],[-6.96167,55.237891],[-7.056396,55.17832],[-7.172852,55.137012],[-7.218652,55.091992]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Iraq","SOV_A3":"IRQ","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Iraq","ADM0_A3":"IRQ","GEOU_DIF":0,"GEOUNIT":"Iraq","GU_A3":"IRQ","SU_DIF":0,"SUBUNIT":"Iraq","SU_A3":"IRQ","BRK_DIFF":0,"NAME":"Iraq","NAME_LONG":"Iraq","BRK_A3":"IRQ","BRK_NAME":"Iraq","BRK_GROUP":null,"ABBREV":"Iraq","POSTAL":"IRQ","FORMAL_EN":"Republic of Iraq","FORMAL_FR":null,"NAME_CIAWF":"Iraq","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Iraq","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":3,"MAPCOLOR13":1,"POP_EST":39309783,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":234094,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"IZ","ISO_A2":"IQ","ISO_A2_EH":"IQ","ISO_A3":"IRQ","ISO_A3_EH":"IRQ","ISO_N3":"368","ISO_N3_EH":"368","UN_A3":"368","WB_A2":"IQ","WB_A3":"IRQ","WOE_ID":23424855,"WOE_ID_EH":23424855,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"IRQ","ADM0_DIFF":null,"ADM0_TLC":"IRQ","ADM0_A3_US":"IRQ","ADM0_A3_FR":"IRQ","ADM0_A3_RU":"IRQ","ADM0_A3_ES":"IRQ","ADM0_A3_CN":"IRQ","ADM0_A3_TW":"IRQ","ADM0_A3_IN":"IRQ","ADM0_A3_NP":"IRQ","ADM0_A3_PK":"IRQ","ADM0_A3_DE":"IRQ","ADM0_A3_GB":"IRQ","ADM0_A3_BR":"IRQ","ADM0_A3_IL":"IRQ","ADM0_A3_PS":"IRQ","ADM0_A3_SA":"IRQ","ADM0_A3_EG":"IRQ","ADM0_A3_MA":"IRQ","ADM0_A3_PT":"IRQ","ADM0_A3_AR":"IRQ","ADM0_A3_JP":"IRQ","ADM0_A3_KO":"IRQ","ADM0_A3_VN":"IRQ","ADM0_A3_TR":"IRQ","ADM0_A3_ID":"IRQ","ADM0_A3_PL":"IRQ","ADM0_A3_GR":"IRQ","ADM0_A3_IT":"IRQ","ADM0_A3_NL":"IRQ","ADM0_A3_SE":"IRQ","ADM0_A3_BD":"IRQ","ADM0_A3_UA":"IRQ","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7.5,"LABEL_X":43.26181,"LABEL_Y":33.09403,"NE_ID":1159320887,"WIKIDATAID":"Q796","NAME_AR":"العراق","NAME_BN":"ইরাক","NAME_DE":"Irak","NAME_EN":"Iraq","NAME_ES":"Irak","NAME_FA":"عراق","NAME_FR":"Irak","NAME_EL":"Ιράκ","NAME_HE":"עיראק","NAME_HI":"इराक","NAME_HU":"Irak","NAME_ID":"Irak","NAME_IT":"Iraq","NAME_JA":"イラク","NAME_KO":"이라크","NAME_NL":"Irak","NAME_PL":"Irak","NAME_PT":"Iraque","NAME_RU":"Ирак","NAME_SV":"Irak","NAME_TR":"Irak","NAME_UK":"Ірак","NAME_UR":"عراق","NAME_VI":"Iraq","NAME_ZH":"伊拉克","NAME_ZHT":"伊拉克","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[38.773535,29.063672,48.546484,37.371875],"geometry":{"type":"Polygon","coordinates":[[[42.358984,37.108594],[42.455859,37.128711],[42.635449,37.249268],[42.741113,37.361914],[42.774609,37.371875],[42.869141,37.334912],[42.936621,37.324756],[43.09248,37.367383],[43.185156,37.344873],[43.263086,37.316504],[43.306738,37.314648],[43.51582,37.244531],[43.567969,37.23584],[43.675781,37.227246],[43.836426,37.223535],[43.940039,37.269287],[44.013184,37.313525],[44.064648,37.312451],[44.114453,37.301855],[44.15625,37.282959],[44.191797,37.249854],[44.208398,37.202637],[44.20166,37.051807],[44.21748,37.011865],[44.245703,36.983301],[44.281836,36.978027],[44.325586,37.010742],[44.401953,37.058496],[44.495996,37.110547],[44.566016,37.158252],[44.605957,37.176025],[44.669336,37.173584],[44.730957,37.165283],[44.765137,37.142432],[44.76543,37.13501],[44.798438,37.063867],[44.880859,36.799316],[44.927832,36.765918],[44.981445,36.737695],[45.019238,36.698389],[45.033984,36.658887],[45.029395,36.597559],[45.031055,36.526074],[45.053125,36.471631],[45.083789,36.430029],[45.112402,36.409277],[45.155273,36.407373],[45.206543,36.397168],[45.241113,36.355957],[45.350879,36.054639],[45.361621,36.015332],[45.407715,36.002783],[45.483789,36.008545],[45.561621,35.977197],[45.64502,35.928369],[45.723438,35.83667],[45.776367,35.821826],[45.941406,35.8354],[46.16748,35.820557],[46.273438,35.773242],[46.2625,35.744141],[46.180957,35.711377],[46.037402,35.673145],[45.99502,35.608105],[45.971094,35.52417],[45.975391,35.476807],[46.010645,35.424805],[46.112109,35.32168],[46.117773,35.284277],[46.135742,35.232275],[46.154688,35.196729],[46.133789,35.127637],[46.041797,35.080176],[45.920898,35.028516],[45.678125,34.798437],[45.660059,34.748779],[45.661523,34.612695],[45.6375,34.573828],[45.56084,34.574512],[45.500781,34.581592],[45.497754,34.533887],[45.459375,34.470361],[45.437598,34.415137],[45.526855,34.284668],[45.542773,34.215527],[45.528613,34.152539],[45.446094,34.044043],[45.39707,33.97085],[45.408984,33.954492],[45.473242,33.925488],[45.67373,33.68667],[45.738281,33.602832],[45.822852,33.624805],[45.854492,33.62334],[45.879395,33.609766],[45.894727,33.581543],[45.894727,33.545654],[45.873242,33.491992],[45.981055,33.470117],[46.019922,33.415723],[46.145898,33.229639],[46.141113,33.174414],[46.080762,33.086523],[46.080469,33.028223],[46.093066,32.975879],[46.112793,32.957666],[46.298242,32.950244],[46.377051,32.929248],[46.569922,32.833936],[46.789062,32.687988],[46.968555,32.568408],[47.121387,32.466602],[47.285156,32.474023],[47.329785,32.455518],[47.371289,32.42373],[47.418164,32.340088],[47.511914,32.15083],[47.591504,32.087988],[47.714551,31.936426],[47.82998,31.794434],[47.753906,31.601367],[47.679492,31.400586],[47.679492,31.141504],[47.679492,31.002393],[47.836328,30.996436],[48.010645,30.989795],[48.012012,30.823633],[48.013477,30.656445],[48.014941,30.465625],[48.066113,30.457666],[48.147559,30.416846],[48.182422,30.355029],[48.226172,30.321338],[48.278906,30.31582],[48.331055,30.285449],[48.382617,30.230176],[48.401367,30.18833],[48.387598,30.159863],[48.398633,30.109619],[48.43457,30.037598],[48.478516,30.003809],[48.546484,29.962354],[48.454199,29.938477],[48.35459,29.956738],[48.141699,30.040918],[48.072754,30.043213],[47.98252,30.011328],[47.978711,29.982812],[47.753906,30.076611],[47.672754,30.095605],[47.64375,30.097314],[47.514844,30.096484],[47.331348,30.079687],[47.223242,30.041504],[47.148242,30.000977],[47.114355,29.961328],[47.102051,29.93999],[47.043652,29.822998],[46.975977,29.672852],[46.905859,29.5375],[46.769336,29.347461],[46.69375,29.259668],[46.531445,29.09624],[46.356445,29.063672],[45.949707,29.09585],[45.498926,29.131543],[45.050293,29.16709],[44.716504,29.193604],[44.69082,29.202344],[44.360742,29.435254],[44.099609,29.619336],[43.77373,29.849219],[43.44082,30.083984],[43.103125,30.322217],[42.857715,30.495215],[42.559766,30.717773],[42.288574,30.92041],[42.074414,31.080371],[41.799707,31.220361],[41.585059,31.329736],[41.272461,31.489014],[41.022461,31.616357],[40.808398,31.725439],[40.478906,31.893359],[40.369336,31.938965],[40.027832,31.99502],[39.704102,32.042529],[39.368652,32.091748],[39.14541,32.124512],[39.292773,32.243848],[39.247461,32.350977],[39.140039,32.331201],[39.041406,32.305664],[38.981641,32.472559],[39.057813,32.493164],[38.987402,32.710693],[38.914844,32.934668],[38.84502,33.150879],[38.773535,33.372217],[39.056738,33.514014],[39.268359,33.62002],[39.564453,33.768359],[39.85,33.911377],[40.121973,34.047656],[40.421484,34.197754],[40.689453,34.332031],[40.935059,34.386572],[40.987012,34.429053],[41.099023,34.612305],[41.194727,34.768994],[41.199219,34.805322],[41.199609,35.027393],[41.216406,35.288184],[41.24834,35.42749],[41.30332,35.550635],[41.354102,35.64043],[41.359375,35.724609],[41.352637,35.809961],[41.300195,35.938965],[41.245605,36.073389],[41.251758,36.203027],[41.261816,36.272461],[41.295996,36.38335],[41.354199,36.464404],[41.416797,36.514648],[41.650195,36.566406],[41.788574,36.597168],[41.974023,36.74082],[42.083984,36.826025],[42.237305,36.961133],[42.350098,37.060596],[42.359082,37.09502],[42.358984,37.108594]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":2,"SOVEREIGNT":"Iran","SOV_A3":"IRN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Iran","ADM0_A3":"IRN","GEOU_DIF":0,"GEOUNIT":"Iran","GU_A3":"IRN","SU_DIF":0,"SUBUNIT":"Iran","SU_A3":"IRN","BRK_DIFF":0,"NAME":"Iran","NAME_LONG":"Iran","BRK_A3":"IRN","BRK_NAME":"Iran","BRK_GROUP":null,"ABBREV":"Iran","POSTAL":"IRN","FORMAL_EN":"Islamic Republic of Iran","FORMAL_FR":null,"NAME_CIAWF":"Iran","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Iran, Islamic Rep.","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":3,"MAPCOLOR9":4,"MAPCOLOR13":13,"POP_EST":82913906,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":453996,"GDP_YEAR":2018,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"IR","ISO_A2":"IR","ISO_A2_EH":"IR","ISO_A3":"IRN","ISO_A3_EH":"IRN","ISO_N3":"364","ISO_N3_EH":"364","UN_A3":"364","WB_A2":"IR","WB_A3":"IRN","WOE_ID":23424851,"WOE_ID_EH":23424851,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"IRN","ADM0_DIFF":null,"ADM0_TLC":"IRN","ADM0_A3_US":"IRN","ADM0_A3_FR":"IRN","ADM0_A3_RU":"IRN","ADM0_A3_ES":"IRN","ADM0_A3_CN":"IRN","ADM0_A3_TW":"IRN","ADM0_A3_IN":"IRN","ADM0_A3_NP":"IRN","ADM0_A3_PK":"IRN","ADM0_A3_DE":"IRN","ADM0_A3_GB":"IRN","ADM0_A3_BR":"IRN","ADM0_A3_IL":"IRN","ADM0_A3_PS":"IRN","ADM0_A3_SA":"IRN","ADM0_A3_EG":"IRN","ADM0_A3_MA":"IRN","ADM0_A3_PT":"IRN","ADM0_A3_AR":"IRN","ADM0_A3_JP":"IRN","ADM0_A3_KO":"IRN","ADM0_A3_VN":"IRN","ADM0_A3_TR":"IRN","ADM0_A3_ID":"IRN","ADM0_A3_PL":"IRN","ADM0_A3_GR":"IRN","ADM0_A3_IT":"IRN","ADM0_A3_NL":"IRN","ADM0_A3_SE":"IRN","ADM0_A3_BD":"IRN","ADM0_A3_UA":"IRN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":6.7,"LABEL_X":54.931495,"LABEL_Y":32.166225,"NE_ID":1159320881,"WIKIDATAID":"Q794","NAME_AR":"إيران","NAME_BN":"ইরান","NAME_DE":"Iran","NAME_EN":"Iran","NAME_ES":"Irán","NAME_FA":"ایران","NAME_FR":"Iran","NAME_EL":"Ιράν","NAME_HE":"איראן","NAME_HI":"ईरान","NAME_HU":"Irán","NAME_ID":"Iran","NAME_IT":"Iran","NAME_JA":"イラン","NAME_KO":"이란","NAME_NL":"Iran","NAME_PL":"Iran","NAME_PT":"Irão","NAME_RU":"Иран","NAME_SV":"Iran","NAME_TR":"İran","NAME_UK":"Іран","NAME_UR":"ایران","NAME_VI":"Iran","NAME_ZH":"伊朗","NAME_ZHT":"伊朗","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[44.023242,25.1021,63.305176,39.768555],"geometry":{"type":"MultiPolygon","coordinates":[[[[56.187988,26.921143],[56.094922,26.801172],[55.954297,26.701123],[55.894141,26.732275],[55.847656,26.730811],[55.747266,26.69248],[55.674609,26.68584],[55.543164,26.617529],[55.42373,26.583105],[55.34043,26.585742],[55.311523,26.592627],[55.29502,26.639209],[55.296484,26.657568],[55.346973,26.647949],[55.531738,26.71001],[55.762598,26.811963],[55.78457,26.857178],[55.747461,26.930957],[55.757617,26.947656],[55.907129,26.909814],[56.074121,26.98335],[56.213965,27.003271],[56.279395,26.9521],[56.187988,26.921143]]],[[[53.91416,37.343555],[54.191602,37.332471],[54.299805,37.353613],[54.458691,37.407568],[54.578906,37.440234],[54.639648,37.444727],[54.699414,37.470166],[54.745215,37.501904],[54.848633,37.722656],[54.900098,37.77793],[55.075586,37.90249],[55.224707,37.981348],[55.380859,38.051123],[55.578418,38.099756],[55.841309,38.094629],[56.050293,38.077539],[56.171191,38.078369],[56.228809,38.073389],[56.27207,38.08042],[56.296973,38.094824],[56.324121,38.191113],[56.366895,38.22251],[56.440625,38.249414],[56.544043,38.249609],[56.669922,38.256641],[56.774609,38.250049],[56.906641,38.213037],[57.079004,38.209961],[57.193555,38.216406],[57.260156,38.17959],[57.308105,38.130371],[57.331445,38.089307],[57.336719,38.03291],[57.335742,37.989941],[57.353711,37.97334],[57.423828,37.947705],[57.520996,37.928467],[57.710547,37.905273],[57.888184,37.86084],[57.980566,37.830469],[58.108789,37.783057],[58.261621,37.66582],[58.318164,37.647217],[58.386719,37.635352],[58.435742,37.638525],[58.550488,37.688184],[58.650195,37.651562],[58.700781,37.65625],[58.81543,37.683496],[58.937207,37.649658],[59.24082,37.520752],[59.274121,37.52373],[59.301758,37.510645],[59.326953,37.481152],[59.344727,37.444727],[59.367383,37.33374],[59.45498,37.252832],[59.562207,37.178906],[59.687207,37.138477],[59.948633,37.041602],[60.062793,36.962891],[60.17832,36.829443],[60.320703,36.653564],[60.341309,36.637646],[60.70791,36.642969],[61.119629,36.642578],[61.169922,36.572266],[61.160352,36.432715],[61.175098,36.289697],[61.212012,36.190527],[61.212402,36.099121],[61.182617,36.052832],[61.159473,35.999902],[61.15293,35.976758],[61.205859,35.943701],[61.252148,35.867627],[61.258691,35.761816],[61.235547,35.705566],[61.238867,35.659277],[61.262012,35.61958],[61.281836,35.553418],[61.278516,35.51377],[61.245508,35.474072],[61.225684,35.424463],[61.199219,35.361621],[61.189258,35.312012],[61.139648,35.288867],[61.1,35.272314],[61.106641,35.209473],[61.126465,35.156543],[61.149609,35.09375],[61.123145,35.050732],[61.106641,35.001123],[61.070215,34.921729],[61.080078,34.855615],[61.04043,34.799365],[60.99082,34.749756],[60.957813,34.710059],[60.951172,34.653857],[60.914746,34.633984],[60.845313,34.587695],[60.802344,34.554639],[60.739453,34.544727],[60.72627,34.518262],[60.736133,34.491797],[60.762598,34.475244],[60.803906,34.418018],[60.889453,34.319434],[60.642676,34.307178],[60.570215,34.219629],[60.485742,34.094775],[60.527051,33.841992],[60.485938,33.711914],[60.51084,33.638916],[60.573828,33.58833],[60.65459,33.5604],[60.806445,33.558691],[60.906934,33.538965],[60.916992,33.505225],[60.859277,33.45625],[60.766895,33.363818],[60.718066,33.323535],[60.560547,33.137842],[60.561914,33.058789],[60.576563,32.994873],[60.644531,32.794385],[60.710449,32.6],[60.829297,32.249414],[60.827246,32.167969],[60.789941,31.987109],[60.7875,31.877197],[60.804297,31.734473],[60.791602,31.660596],[60.820703,31.495166],[60.854102,31.483252],[61.110742,31.451123],[61.346484,31.421631],[61.660156,31.382422],[61.755078,31.285303],[61.814258,31.072559],[61.81084,30.913281],[61.78418,30.831934],[61.559473,30.599365],[61.331641,30.363721],[61.104102,30.128418],[60.843359,29.858691],[61.03418,29.663428],[61.152148,29.542725],[61.318359,29.372607],[61.339453,29.331787],[61.337891,29.26499],[61.508594,29.006055],[61.56875,28.870898],[61.623047,28.791602],[61.758008,28.667676],[61.889844,28.546533],[62.033008,28.491016],[62.130566,28.478809],[62.353027,28.414746],[62.433887,28.363867],[62.564551,28.235156],[62.717578,28.252783],[62.749414,28.252881],[62.758008,28.243555],[62.7625,28.202051],[62.739746,28.002051],[62.782324,27.800537],[62.812012,27.497021],[62.800879,27.444531],[62.764258,27.356738],[62.7625,27.300195],[62.752734,27.265625],[62.762988,27.250195],[62.811621,27.229443],[62.91543,27.218408],[63.166797,27.25249],[63.196094,27.243945],[63.25625,27.20791],[63.301563,27.151465],[63.305176,27.124561],[63.24209,27.077686],[63.231445,26.998145],[63.250391,26.879248],[63.241602,26.864746],[63.186133,26.837598],[63.168066,26.665576],[63.157813,26.649756],[63.092969,26.632324],[62.786621,26.643896],[62.751563,26.63916],[62.636426,26.593652],[62.439258,26.561035],[62.385059,26.542627],[62.312305,26.490869],[62.259668,26.42749],[62.249609,26.369238],[62.239355,26.357031],[62.125977,26.368994],[62.089063,26.318262],[61.869824,26.242432],[61.842383,26.225928],[61.809961,26.165283],[61.780762,25.99585],[61.754395,25.843359],[61.737695,25.821094],[61.668652,25.768994],[61.661816,25.75127],[61.671387,25.692383],[61.640137,25.584619],[61.61543,25.286133],[61.587891,25.202344],[61.533105,25.195508],[61.490332,25.153662],[61.412207,25.1021],[61.242969,25.141992],[61.108594,25.183887],[60.663867,25.282227],[60.615137,25.329834],[60.5875,25.413525],[60.510547,25.437061],[60.400195,25.311572],[60.024707,25.384131],[59.89707,25.361816],[59.818359,25.400879],[59.616016,25.403271],[59.456055,25.481494],[59.227246,25.427734],[59.046094,25.417285],[58.797852,25.55459],[58.530859,25.592432],[58.314258,25.580859],[58.20293,25.591602],[58.022363,25.64082],[57.936621,25.69165],[57.796094,25.653027],[57.73252,25.724902],[57.33457,25.791553],[57.260938,25.918848],[57.205566,26.037207],[57.201367,26.158838],[57.104297,26.371436],[57.071973,26.680078],[57.036035,26.800684],[56.982227,26.905469],[56.910449,26.99458],[56.812891,27.08999],[56.728125,27.127686],[56.356152,27.200244],[56.284375,27.190625],[56.118066,27.143115],[55.941113,27.037598],[55.650293,26.977539],[55.591602,26.932129],[55.518555,26.829932],[55.424023,26.770557],[55.294141,26.785937],[55.15459,26.725391],[54.895801,26.556689],[54.759277,26.505078],[54.644922,26.508936],[54.52207,26.58916],[54.24707,26.696631],[54.069336,26.732373],[53.822559,26.707715],[53.705762,26.725586],[53.507129,26.851758],[53.45498,26.943262],[53.341699,27.004492],[52.98252,27.141943],[52.691602,27.323389],[52.638184,27.391992],[52.602637,27.493359],[52.475879,27.616504],[52.191895,27.717285],[52.030762,27.824414],[51.841992,27.848242],[51.666309,27.844971],[51.589063,27.864209],[51.518555,27.91001],[51.278906,28.131348],[51.276074,28.218848],[51.128418,28.435156],[51.093848,28.512109],[51.062012,28.726123],[51.021191,28.78208],[50.866992,28.870166],[50.842969,28.927832],[50.875781,29.004395],[50.875781,29.062695],[50.795508,29.117432],[50.675195,29.146582],[50.646094,29.212207],[50.667969,29.339844],[50.649609,29.420068],[50.543555,29.547998],[50.386914,29.679053],[50.230176,29.8729],[50.168945,29.92124],[50.128906,30.048096],[50.071582,30.198535],[49.983105,30.209375],[49.554883,30.028955],[49.42998,30.130469],[49.054297,30.306934],[49.028125,30.333447],[49.001953,30.373926],[49.049023,30.397266],[49.096191,30.406787],[49.190332,30.375391],[49.247266,30.4125],[49.224512,30.472314],[49.130371,30.509424],[49.001953,30.506543],[49.037109,30.450488],[48.916797,30.397266],[48.891211,30.327637],[48.908691,30.241455],[48.919141,30.120898],[48.870117,30.062402],[48.832422,30.035498],[48.670898,30.02832],[48.595508,29.975049],[48.546484,29.962354],[48.478516,30.003809],[48.43457,30.037598],[48.398633,30.109619],[48.387598,30.159863],[48.401367,30.18833],[48.382617,30.230176],[48.331055,30.285449],[48.278906,30.31582],[48.226172,30.321338],[48.182422,30.355029],[48.147559,30.416846],[48.066113,30.457666],[48.014941,30.465625],[48.013477,30.656445],[48.012012,30.823633],[48.010645,30.989795],[47.836328,30.996436],[47.679492,31.002393],[47.679492,31.141504],[47.679492,31.400586],[47.753906,31.601367],[47.82998,31.794434],[47.714551,31.936426],[47.591504,32.087988],[47.511914,32.15083],[47.418164,32.340088],[47.371289,32.42373],[47.329785,32.455518],[47.285156,32.474023],[47.121387,32.466602],[46.968555,32.568408],[46.789062,32.687988],[46.569922,32.833936],[46.377051,32.929248],[46.298242,32.950244],[46.112793,32.957666],[46.093066,32.975879],[46.080469,33.028223],[46.080762,33.086523],[46.141113,33.174414],[46.145898,33.229639],[46.019922,33.415723],[45.981055,33.470117],[45.873242,33.491992],[45.894727,33.545654],[45.894727,33.581543],[45.879395,33.609766],[45.854492,33.62334],[45.822852,33.624805],[45.738281,33.602832],[45.67373,33.68667],[45.473242,33.925488],[45.408984,33.954492],[45.39707,33.97085],[45.446094,34.044043],[45.528613,34.152539],[45.542773,34.215527],[45.526855,34.284668],[45.437598,34.415137],[45.459375,34.470361],[45.497754,34.533887],[45.500781,34.581592],[45.56084,34.574512],[45.6375,34.573828],[45.661523,34.612695],[45.660059,34.748779],[45.678125,34.798437],[45.920898,35.028516],[46.041797,35.080176],[46.133789,35.127637],[46.154688,35.196729],[46.135742,35.232275],[46.117773,35.284277],[46.112109,35.32168],[46.010645,35.424805],[45.975391,35.476807],[45.971094,35.52417],[45.99502,35.608105],[46.037402,35.673145],[46.180957,35.711377],[46.2625,35.744141],[46.273438,35.773242],[46.16748,35.820557],[45.941406,35.8354],[45.776367,35.821826],[45.723438,35.83667],[45.64502,35.928369],[45.561621,35.977197],[45.483789,36.008545],[45.407715,36.002783],[45.361621,36.015332],[45.350879,36.054639],[45.241113,36.355957],[45.206543,36.397168],[45.155273,36.407373],[45.112402,36.409277],[45.083789,36.430029],[45.053125,36.471631],[45.031055,36.526074],[45.029395,36.597559],[45.033984,36.658887],[45.019238,36.698389],[44.981445,36.737695],[44.927832,36.765918],[44.880859,36.799316],[44.798438,37.063867],[44.76543,37.13501],[44.765137,37.142432],[44.766699,37.156348],[44.758301,37.21709],[44.796777,37.269775],[44.794141,37.290381],[44.715137,37.357129],[44.604102,37.42373],[44.574023,37.4354],[44.573145,37.506396],[44.577148,37.560205],[44.567188,37.608643],[44.546094,37.636328],[44.545313,37.658154],[44.589941,37.710352],[44.56123,37.744629],[44.397754,37.829248],[44.33623,37.871777],[44.222949,37.880176],[44.211328,37.908057],[44.228906,37.967187],[44.267969,38.038818],[44.329395,38.109277],[44.348926,38.146484],[44.372754,38.209717],[44.380859,38.25459],[44.449609,38.317773],[44.449902,38.334229],[44.430859,38.356787],[44.375781,38.36958],[44.319629,38.374707],[44.298535,38.386279],[44.29082,38.420117],[44.297852,38.557812],[44.280176,38.640674],[44.257031,38.700635],[44.27168,38.836035],[44.232422,38.863232],[44.170801,38.934375],[44.144531,38.994385],[44.158789,39.016748],[44.171875,39.05625],[44.180566,39.108057],[44.178027,39.144824],[44.121289,39.180615],[44.079102,39.218311],[44.074316,39.259961],[44.05752,39.31084],[44.033789,39.351025],[44.023242,39.377441],[44.043945,39.392969],[44.124023,39.405225],[44.24043,39.396777],[44.335449,39.396045],[44.389355,39.422119],[44.455957,39.666748],[44.516699,39.73125],[44.587109,39.768555],[44.725,39.681738],[44.782129,39.651074],[44.817188,39.650439],[44.838184,39.629102],[45.000195,39.423535],[45.07168,39.362891],[45.113086,39.311572],[45.141211,39.254297],[45.190625,39.215625],[45.255957,39.194678],[45.335547,39.13916],[45.389258,39.095898],[45.479688,39.00625],[45.575,38.972803],[45.921875,38.90791],[46.114453,38.877783],[46.170117,38.869043],[46.317773,38.912646],[46.490625,38.906689],[46.554785,38.904395],[46.783203,39.087402],[46.852539,39.148438],[46.988867,39.180176],[47.06543,39.252881],[47.188379,39.340967],[47.338477,39.423877],[47.476172,39.49834],[47.581836,39.543359],[47.772852,39.648584],[47.892285,39.685059],[47.995898,39.683936],[48.151074,39.560547],[48.281738,39.44834],[48.322168,39.399072],[48.257227,39.35498],[48.136035,39.312354],[48.112891,39.281104],[48.104395,39.241113],[48.10918,39.202832],[48.125488,39.171631],[48.274121,39.099121],[48.291016,39.059277],[48.29209,39.018848],[48.275098,38.993604],[48.241992,38.978955],[48.138574,38.958643],[48.050098,38.93501],[48.019336,38.911816],[47.992676,38.884277],[47.996484,38.85376],[48.023242,38.819043],[48.204688,38.724121],[48.225195,38.689209],[48.261328,38.642285],[48.305566,38.613477],[48.38125,38.605615],[48.417383,38.58623],[48.592676,38.411084],[48.635547,38.39873],[48.840332,38.437256],[48.86875,38.435498],[48.870703,38.392529],[48.901367,38.143652],[48.925098,38.015137],[48.959961,37.890137],[49.015332,37.776074],[49.080957,37.667578],[49.171191,37.600586],[49.372461,37.519971],[49.470117,37.49668],[49.726953,37.480518],[49.980664,37.444873],[50.130469,37.407129],[50.17627,37.380518],[50.214063,37.3396],[50.337891,37.14917],[50.533203,37.013672],[50.927441,36.810205],[51.118555,36.742578],[51.762012,36.614502],[52.190137,36.621729],[53.374121,36.86875],[53.767676,36.930322],[53.91543,36.930322],[53.827441,36.881201],[53.679492,36.853125],[53.76875,36.818457],[53.90625,36.812695],[53.970117,36.818311],[54.016211,36.849658],[54.023828,36.901318],[54.017188,36.95249],[53.951953,37.181738],[53.91416,37.343555]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":2,"SOVEREIGNT":"Indonesia","SOV_A3":"IDN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Indonesia","ADM0_A3":"IDN","GEOU_DIF":0,"GEOUNIT":"Indonesia","GU_A3":"IDN","SU_DIF":0,"SUBUNIT":"Indonesia","SU_A3":"IDN","BRK_DIFF":0,"NAME":"Indonesia","NAME_LONG":"Indonesia","BRK_A3":"IDN","BRK_NAME":"Indonesia","BRK_GROUP":null,"ABBREV":"Indo.","POSTAL":"INDO","FORMAL_EN":"Republic of Indonesia","FORMAL_FR":null,"NAME_CIAWF":"Indonesia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Indonesia","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":11,"POP_EST":270625568,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":1119190,"GDP_YEAR":2019,"ECONOMY":"4. Emerging region: MIKT","INCOME_GRP":"4. Lower middle income","FIPS_10":"ID","ISO_A2":"ID","ISO_A2_EH":"ID","ISO_A3":"IDN","ISO_A3_EH":"IDN","ISO_N3":"360","ISO_N3_EH":"360","UN_A3":"360","WB_A2":"ID","WB_A3":"IDN","WOE_ID":23424846,"WOE_ID_EH":23424846,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"IDN","ADM0_DIFF":null,"ADM0_TLC":"IDN","ADM0_A3_US":"IDN","ADM0_A3_FR":"IDN","ADM0_A3_RU":"IDN","ADM0_A3_ES":"IDN","ADM0_A3_CN":"IDN","ADM0_A3_TW":"IDN","ADM0_A3_IN":"IDN","ADM0_A3_NP":"IDN","ADM0_A3_PK":"IDN","ADM0_A3_DE":"IDN","ADM0_A3_GB":"IDN","ADM0_A3_BR":"IDN","ADM0_A3_IL":"IDN","ADM0_A3_PS":"IDN","ADM0_A3_SA":"IDN","ADM0_A3_EG":"IDN","ADM0_A3_MA":"IDN","ADM0_A3_PT":"IDN","ADM0_A3_AR":"IDN","ADM0_A3_JP":"IDN","ADM0_A3_KO":"IDN","ADM0_A3_VN":"IDN","ADM0_A3_TR":"IDN","ADM0_A3_ID":"IDN","ADM0_A3_PL":"IDN","ADM0_A3_GR":"IDN","ADM0_A3_IT":"IDN","ADM0_A3_NL":"IDN","ADM0_A3_SE":"IDN","ADM0_A3_BD":"IDN","ADM0_A3_UA":"IDN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":101.892949,"LABEL_Y":-0.954404,"NE_ID":1159320845,"WIKIDATAID":"Q252","NAME_AR":"إندونيسيا","NAME_BN":"ইন্দোনেশিয়া","NAME_DE":"Indonesien","NAME_EN":"Indonesia","NAME_ES":"Indonesia","NAME_FA":"اندونزی","NAME_FR":"Indonésie","NAME_EL":"Ινδονησία","NAME_HE":"אינדונזיה","NAME_HI":"इंडोनेशिया","NAME_HU":"Indonézia","NAME_ID":"Indonesia","NAME_IT":"Indonesia","NAME_JA":"インドネシア","NAME_KO":"인도네시아","NAME_NL":"Indonesië","NAME_PL":"Indonezja","NAME_PT":"Indonésia","NAME_RU":"Индонезия","NAME_SV":"Indonesien","NAME_TR":"Endonezya","NAME_UK":"Індонезія","NAME_UR":"انڈونیشیا","NAME_VI":"Indonesia","NAME_ZH":"印度尼西亚","NAME_ZHT":"印度尼西亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[95.206641,-10.909668,140.976172,5.907031],"geometry":{"type":"MultiPolygon","coordinates":[[[[97.481543,1.465088],[97.69834,1.18374],[97.786426,1.145898],[97.903223,1.018262],[97.931934,0.973926],[97.902051,0.884229],[97.876465,0.62832],[97.82041,0.564453],[97.683984,0.596094],[97.68252,0.641064],[97.603906,0.833887],[97.46123,0.941406],[97.405371,0.946973],[97.368848,1.056934],[97.296875,1.187354],[97.079199,1.425488],[97.244238,1.423633],[97.324414,1.481641],[97.342773,1.52793],[97.355957,1.539746],[97.481543,1.465088]]],[[[99.163867,-1.77793],[99.071777,-1.783496],[98.874316,-1.663672],[98.827734,-1.609961],[98.816309,-1.538281],[98.626953,-1.261328],[98.601758,-1.197852],[98.676074,-0.970508],[98.869043,-0.915625],[98.932617,-0.954004],[98.954785,-1.05625],[99.065039,-1.240723],[99.101465,-1.340137],[99.128906,-1.38418],[99.14043,-1.418457],[99.130664,-1.442383],[99.210352,-1.559277],[99.267285,-1.627734],[99.271484,-1.738477],[99.163867,-1.77793]]],[[[116.64082,-8.613867],[116.514258,-8.820996],[116.559375,-8.854395],[116.586523,-8.886133],[116.377246,-8.929004],[116.289844,-8.906152],[116.239355,-8.912109],[116.026758,-8.873145],[115.874609,-8.825586],[115.857324,-8.787891],[115.869336,-8.742773],[115.914453,-8.758008],[116.031641,-8.765234],[116.076465,-8.744922],[116.077734,-8.611328],[116.061133,-8.437402],[116.219824,-8.295215],[116.304297,-8.237988],[116.401563,-8.204199],[116.646973,-8.282715],[116.6875,-8.304102],[116.718945,-8.336035],[116.734082,-8.386914],[116.64082,-8.613867]]],[[[115.447852,-8.155176],[115.549414,-8.208301],[115.690918,-8.363574],[115.704297,-8.407129],[115.661426,-8.448242],[115.559961,-8.51416],[115.333789,-8.615723],[115.29502,-8.663672],[115.247168,-8.75752],[115.236133,-8.797559],[115.220215,-8.819531],[115.194238,-8.835449],[115.144922,-8.849023],[115.091504,-8.829395],[115.139746,-8.768945],[115.141602,-8.696875],[115.105664,-8.629492],[115.055078,-8.573047],[114.952051,-8.496387],[114.84209,-8.428516],[114.731348,-8.393945],[114.613184,-8.37832],[114.570898,-8.34541],[114.501758,-8.26084],[114.478906,-8.214746],[114.467578,-8.166309],[114.475293,-8.119434],[114.504297,-8.116602],[114.62002,-8.127734],[114.833008,-8.182617],[114.938477,-8.187109],[114.998145,-8.174414],[115.154004,-8.065723],[115.191016,-8.06748],[115.340234,-8.11543],[115.447852,-8.155176]]],[[[106.045703,-1.669434],[106.080078,-1.738281],[106.127148,-1.800195],[106.161719,-1.866992],[106.208789,-2.188672],[106.365918,-2.464844],[106.818457,-2.57334],[106.744336,-2.617969],[106.706641,-2.658008],[106.678809,-2.704004],[106.612012,-2.895508],[106.618555,-2.936133],[106.657617,-3.001172],[106.667188,-3.071777],[106.610547,-3.071387],[106.546777,-3.055566],[106.496094,-3.029004],[106.44873,-2.994238],[106.397363,-2.966602],[106.341602,-2.94873],[106.250098,-2.894043],[106.125879,-2.855371],[105.99873,-2.824902],[105.937207,-2.743555],[105.908008,-2.643262],[105.939063,-2.493457],[105.907617,-2.451953],[105.862402,-2.41543],[105.806836,-2.307422],[105.78584,-2.181348],[105.705273,-2.132617],[105.599023,-2.103125],[105.552734,-2.079004],[105.342871,-2.125098],[105.292578,-2.114258],[105.247656,-2.079395],[105.133398,-2.042578],[105.137695,-1.972656],[105.191016,-1.916895],[105.316211,-1.860547],[105.374805,-1.813184],[105.386523,-1.750781],[105.364258,-1.705078],[105.373145,-1.657324],[105.412695,-1.611035],[105.45957,-1.574707],[105.585449,-1.526758],[105.64043,-1.610449],[105.667578,-1.680371],[105.700879,-1.731055],[105.754492,-1.658691],[105.72041,-1.533887],[105.816113,-1.506055],[105.910059,-1.50498],[105.980957,-1.53916],[106.027344,-1.593164],[106.045703,-1.669434]]],[[[123.179785,-4.551172],[123.203027,-4.766211],[123.195703,-4.822656],[123.139453,-4.739941],[123.119238,-4.723438],[123.103809,-4.739941],[123.083887,-4.749023],[123.055176,-4.748242],[123.017969,-4.831738],[123.014648,-4.910254],[122.986523,-4.963086],[122.97168,-5.138477],[122.981055,-5.185742],[123.024609,-5.162402],[123.051465,-5.156445],[123.149902,-5.224023],[123.201953,-5.27334],[123.187305,-5.333008],[123.120703,-5.393164],[123.043359,-5.419336],[122.985742,-5.393555],[122.96875,-5.405762],[122.934668,-5.436719],[122.908789,-5.477441],[122.916211,-5.519336],[122.850195,-5.637988],[122.812109,-5.671289],[122.733105,-5.634961],[122.684375,-5.666211],[122.64502,-5.663379],[122.584961,-5.544629],[122.586426,-5.488867],[122.642188,-5.42627],[122.642578,-5.381152],[122.670117,-5.330859],[122.731445,-5.261914],[122.766504,-5.210156],[122.767578,-5.177246],[122.793652,-5.052441],[122.803809,-5.000098],[122.821484,-4.944434],[122.849414,-4.83125],[122.85332,-4.618359],[122.946875,-4.442676],[123.038281,-4.394727],[123.074609,-4.386914],[123.068945,-4.433594],[123.179785,-4.551172]]],[[[122.645117,-5.269434],[122.619336,-5.33584],[122.563867,-5.3875],[122.519727,-5.391211],[122.473633,-5.380664],[122.391992,-5.335449],[122.371289,-5.383105],[122.307031,-5.380957],[122.283105,-5.319531],[122.329004,-5.137695],[122.396289,-5.069824],[122.390039,-4.998535],[122.334473,-4.846582],[122.368945,-4.767188],[122.524414,-4.707129],[122.659961,-4.633887],[122.701953,-4.618652],[122.739746,-4.675],[122.759863,-4.933887],[122.614062,-5.138672],[122.645117,-5.269434]]],[[[108.316016,3.689648],[108.17959,3.653076],[108.100391,3.704541],[108.186133,3.767969],[108.216406,3.772168],[108.236133,3.78457],[108.243262,3.810352],[108.088477,3.8521],[108.044531,3.888965],[108.002344,3.982861],[108.003516,4.042578],[108.201953,4.200488],[108.24834,4.217139],[108.255566,4.151758],[108.392871,3.986182],[108.398828,3.875977],[108.393555,3.836182],[108.316016,3.689648]]],[[[108.207227,-2.997656],[108.191797,-3.103027],[108.167285,-3.142773],[108.083594,-3.194922],[108.055273,-3.226855],[107.977148,-3.221777],[107.967285,-3.166602],[107.941113,-3.129297],[107.858203,-3.086328],[107.836621,-3.09668],[107.821777,-3.160742],[107.65957,-3.205566],[107.614453,-3.209375],[107.636719,-3.124805],[107.594922,-3.058398],[107.591602,-2.976562],[107.583887,-2.940723],[107.563477,-2.920117],[107.604883,-2.863086],[107.598145,-2.799707],[107.641602,-2.731543],[107.666309,-2.566309],[107.837793,-2.530273],[107.874707,-2.559668],[108.074414,-2.596973],[108.215137,-2.696973],[108.290625,-2.82998],[108.207227,-2.997656]]],[[[135.383008,-0.651367],[135.595703,-0.69043],[135.673242,-0.688281],[135.749023,-0.73252],[135.841211,-0.711621],[135.893555,-0.725781],[136.06875,-0.877734],[136.154688,-0.97832],[136.282617,-1.064648],[136.375293,-1.094043],[136.305371,-1.173145],[136.164746,-1.214746],[136.110352,-1.216797],[136.002539,-1.169727],[135.915039,-1.178418],[135.83877,-1.119434],[135.825586,-1.02832],[135.74707,-0.823047],[135.645703,-0.881934],[135.523828,-0.787305],[135.491113,-0.785059],[135.483398,-0.801074],[135.431641,-0.768848],[135.387695,-0.704883],[135.383008,-0.651367]]],[[[135.474219,-1.591797],[135.869141,-1.641992],[135.976172,-1.635547],[136.201563,-1.65498],[136.389648,-1.721582],[136.718555,-1.733984],[136.816699,-1.753809],[136.892578,-1.799707],[136.708594,-1.837695],[136.621875,-1.873047],[136.46084,-1.89043],[136.326074,-1.872461],[136.228125,-1.893652],[136.192578,-1.85918],[136.049219,-1.824121],[135.865723,-1.752148],[135.487598,-1.668359],[135.469727,-1.616211],[135.474219,-1.591797]]],[[[130.813281,-0.004102],[130.986523,-0.046582],[131.025781,-0.039941],[131.276855,-0.149805],[131.316895,-0.204297],[131.302734,-0.241113],[131.339746,-0.290332],[131.25752,-0.365723],[131.217871,-0.374121],[131.177734,-0.345996],[131.097754,-0.330078],[131.005371,-0.360742],[130.946484,-0.337598],[130.89668,-0.268457],[130.808398,-0.226465],[130.683496,-0.080664],[130.622168,-0.085938],[130.638281,-0.142969],[130.691309,-0.180566],[130.761328,-0.291406],[130.801563,-0.302148],[130.843164,-0.29834],[130.899219,-0.344434],[130.896289,-0.416016],[130.750195,-0.443848],[130.699805,-0.391602],[130.688672,-0.296582],[130.606543,-0.328613],[130.574902,-0.361816],[130.550781,-0.366406],[130.496289,-0.267383],[130.340527,-0.262305],[130.236621,-0.209668],[130.287695,-0.154688],[130.294922,-0.101465],[130.3625,-0.072852],[130.430957,-0.098486],[130.499609,-0.060107],[130.54834,-0.069922],[130.584277,-0.04541],[130.722363,-0.029834],[130.813281,-0.004102]]],[[[128.453906,2.051758],[128.295898,2.034717],[128.259961,2.08252],[128.217969,2.297461],[128.330371,2.469336],[128.47207,2.570508],[128.568652,2.596094],[128.602148,2.597607],[128.688477,2.473682],[128.623242,2.224414],[128.547559,2.09707],[128.453906,2.051758]]],[[[128.153027,-1.660547],[128.091797,-1.701172],[128.06123,-1.712402],[127.91377,-1.685156],[127.741016,-1.69082],[127.561621,-1.728516],[127.457617,-1.69668],[127.392188,-1.644824],[127.39502,-1.589844],[127.456738,-1.453711],[127.591797,-1.350781],[127.64668,-1.332422],[127.742969,-1.360254],[127.905078,-1.439063],[128.032813,-1.531641],[128.14873,-1.603711],[128.153027,-1.660547]]],[[[126.055078,-2.45127],[126.037891,-2.469434],[125.97793,-2.41543],[125.937598,-2.262793],[125.903223,-2.222168],[125.862891,-2.077148],[125.873242,-2.035938],[125.922754,-1.974805],[125.962793,-1.975781],[125.992676,-2.011816],[125.975977,-2.168066],[126.065723,-2.36582],[126.055078,-2.45127]]],[[[126.024219,-1.789746],[126.331738,-1.822852],[126.288086,-1.858887],[125.956445,-1.916602],[125.838867,-1.906152],[125.479199,-1.940039],[125.432617,-1.938086],[125.425977,-1.882227],[125.387207,-1.843066],[125.444727,-1.808984],[125.520898,-1.800879],[125.720313,-1.81377],[126.024219,-1.789746]]],[[[124.969531,-1.705469],[125.062988,-1.741016],[125.095898,-1.74082],[125.126758,-1.699316],[125.145801,-1.692578],[125.187891,-1.712891],[125.197656,-1.780273],[125.258203,-1.770898],[125.305371,-1.793945],[125.320215,-1.810059],[125.314063,-1.877148],[125.134766,-1.888965],[125.006738,-1.943066],[124.834473,-1.894434],[124.63916,-1.978223],[124.520605,-2.006934],[124.417773,-2.005176],[124.329688,-1.858887],[124.380859,-1.6875],[124.417578,-1.659277],[124.483008,-1.644336],[124.663965,-1.635938],[124.969531,-1.705469]]],[[[131.325586,-7.999512],[131.30918,-8.01084],[131.184961,-7.997852],[131.11377,-7.997363],[131.123438,-7.921875],[131.086816,-7.865039],[131.136816,-7.781738],[131.137793,-7.684863],[131.190039,-7.671875],[131.197363,-7.616699],[131.260059,-7.470508],[131.296875,-7.438086],[131.349219,-7.425391],[131.411035,-7.340137],[131.446191,-7.315332],[131.482617,-7.250684],[131.535254,-7.220605],[131.530859,-7.165137],[131.560742,-7.135742],[131.643457,-7.112793],[131.700781,-7.140234],[131.736133,-7.19707],[131.643848,-7.266895],[131.691113,-7.438867],[131.624414,-7.626172],[131.580273,-7.682227],[131.498438,-7.730664],[131.473535,-7.77666],[131.377051,-7.869141],[131.347754,-7.948047],[131.343457,-7.981445],[131.325586,-7.999512]]],[[[126.800977,-7.667871],[126.814453,-7.716504],[126.812695,-7.737891],[126.692871,-7.753516],[126.577344,-7.807617],[126.518164,-7.869922],[126.47207,-7.950391],[126.312891,-7.917676],[126.171094,-7.912305],[126.108398,-7.883984],[126.040039,-7.88584],[125.951563,-7.910938],[125.826172,-7.979297],[125.798242,-7.98457],[125.808398,-7.880664],[125.843164,-7.816699],[125.975293,-7.663379],[126.085352,-7.697363],[126.213672,-7.706738],[126.359375,-7.676758],[126.462891,-7.607813],[126.60957,-7.571777],[126.726367,-7.662207],[126.800977,-7.667871]]],[[[124.575586,-8.14082],[124.599609,-8.201758],[124.676855,-8.168066],[124.752246,-8.15957],[124.924121,-8.166016],[125.050293,-8.17959],[125.124609,-8.204785],[125.131738,-8.326465],[125.096777,-8.352832],[124.444238,-8.444629],[124.380664,-8.415137],[124.355566,-8.385938],[124.425977,-8.295801],[124.393555,-8.253027],[124.430664,-8.183203],[124.508594,-8.135449],[124.575586,-8.14082]]],[[[131.001855,-1.315527],[130.966602,-1.343457],[130.845117,-1.317285],[130.782324,-1.255469],[130.739355,-1.172559],[130.712109,-1.104395],[130.704395,-1.050195],[130.667969,-0.983984],[130.672949,-0.959766],[130.897168,-0.890039],[130.939453,-0.915332],[131.033008,-0.917578],[131.073926,-0.968262],[131.046191,-1.188184],[131.001855,-1.315527]]],[[[96.492578,5.229346],[96.615234,5.220215],[96.842676,5.274463],[96.967773,5.269141],[97.085742,5.229932],[97.19043,5.207324],[97.451172,5.236035],[97.500195,5.22832],[97.547168,5.205859],[97.5875,5.170361],[97.706738,5.040137],[97.908398,4.87998],[97.966602,4.77749],[97.999805,4.662256],[98.020703,4.635205],[98.248438,4.414551],[98.27334,4.322314],[98.241211,4.194531],[98.307324,4.092871],[98.52832,3.997559],[98.658691,3.928125],[98.686523,3.885547],[98.705762,3.834766],[98.77793,3.759424],[98.868652,3.710352],[99.151172,3.58125],[99.521484,3.311182],[99.732324,3.183057],[99.906641,2.988184],[99.969434,2.894922],[100.021289,2.794238],[100.127246,2.647607],[100.307227,2.466602],[100.352734,2.411475],[100.401172,2.331641],[100.457031,2.257422],[100.523828,2.18916],[100.603613,2.136963],[100.685254,2.120068],[100.816797,1.989258],[100.887891,1.948242],[100.87666,2.050586],[100.816895,2.140186],[100.817773,2.194238],[100.828223,2.242578],[100.877051,2.283301],[100.935938,2.294727],[101.046191,2.257471],[101.225195,2.102246],[101.300781,2.011816],[101.357617,1.887012],[101.405078,1.757422],[101.47666,1.693066],[101.575,1.670557],[101.684277,1.66123],[101.784766,1.621387],[102.019922,1.442139],[102.098047,1.35791],[102.157227,1.258887],[102.197949,1.141699],[102.22334,1.018701],[102.239062,0.990332],[102.389941,0.841992],[102.469238,0.779297],[102.566406,0.748828],[102.849414,0.715479],[102.949316,0.664209],[103.031836,0.578906],[103.066504,0.491992],[103.00752,0.415332],[102.786328,0.297754],[102.55,0.216455],[102.77959,0.244482],[102.895898,0.278613],[103.002832,0.331982],[103.108691,0.399805],[103.276563,0.494531],[103.338965,0.513721],[103.412305,0.506934],[103.478906,0.480176],[103.578711,0.387061],[103.672656,0.288916],[103.742773,0.174414],[103.786719,0.046973],[103.706445,-0.01958],[103.589453,-0.06875],[103.428516,-0.191797],[103.411621,-0.24043],[103.444434,-0.27168],[103.405176,-0.362207],[103.49541,-0.418066],[103.50918,-0.465527],[103.431152,-0.533594],[103.438574,-0.575586],[103.532715,-0.754688],[103.577539,-0.795703],[103.721094,-0.886719],[103.940039,-0.979102],[104.061133,-1.021387],[104.198535,-1.054297],[104.25752,-1.053418],[104.360547,-1.038379],[104.38125,-1.074219],[104.425684,-1.250684],[104.446875,-1.362402],[104.47832,-1.600098],[104.518555,-1.69873],[104.515918,-1.819434],[104.56875,-1.921777],[104.676367,-1.987207],[104.791016,-2.04082],[104.845215,-2.092969],[104.844531,-2.171777],[104.826074,-2.23418],[104.787305,-2.282715],[104.668457,-2.385547],[104.647266,-2.429883],[104.630566,-2.543359],[104.650781,-2.595215],[104.69834,-2.598145],[104.735742,-2.570898],[104.878418,-2.418848],[104.916992,-2.392188],[104.970801,-2.370898],[105.025879,-2.35752],[105.286523,-2.35625],[105.396973,-2.380176],[105.495313,-2.429688],[105.582031,-2.491992],[105.899121,-2.887793],[106.044336,-3.10625],[106.055762,-3.160645],[106.058398,-3.217188],[106.033691,-3.260938],[105.901465,-3.410059],[105.885059,-3.45127],[105.84375,-3.613672],[105.851562,-3.730566],[105.895508,-3.779688],[105.930469,-3.833008],[105.927734,-3.881348],[105.840625,-4.121777],[105.831445,-4.162891],[105.886523,-4.553906],[105.890527,-4.659766],[105.879297,-4.793652],[105.887207,-5.00957],[105.816113,-5.676563],[105.802734,-5.716406],[105.74834,-5.818262],[105.676562,-5.817578],[105.618555,-5.799609],[105.57793,-5.760645],[105.555566,-5.712305],[105.522656,-5.672754],[105.349414,-5.549512],[105.304004,-5.57002],[105.128125,-5.722852],[105.081348,-5.745508],[105.022656,-5.726855],[104.930273,-5.681152],[104.639551,-5.52041],[104.62168,-5.571777],[104.618164,-5.641504],[104.675977,-5.816211],[104.683984,-5.892676],[104.631055,-5.90791],[104.601562,-5.90459],[104.480859,-5.803125],[104.369531,-5.690723],[104.242969,-5.538867],[104.150488,-5.466602],[104.066797,-5.385938],[103.831445,-5.07959],[103.770312,-5.032813],[103.405664,-4.816406],[103.332129,-4.765234],[103.238867,-4.675684],[103.138672,-4.596191],[102.918945,-4.470703],[102.537695,-4.152148],[102.371973,-3.969238],[102.187695,-3.674512],[102.127539,-3.599219],[101.817871,-3.378027],[101.649023,-3.244043],[101.578613,-3.166992],[101.414258,-2.898828],[101.366211,-2.808496],[101.305664,-2.728711],[101.20625,-2.663965],[101.118555,-2.587793],[100.944434,-2.345215],[100.889551,-2.248535],[100.848047,-2.143945],[100.855273,-1.93418],[100.486523,-1.299121],[100.393945,-1.10127],[100.308203,-0.82666],[100.289062,-0.798828],[100.087891,-0.55293],[100.016699,-0.474219],[99.930664,-0.400195],[99.860059,-0.31377],[99.721289,-0.032959],[99.669824,0.045068],[99.597656,0.102441],[99.33457,0.208594],[99.236426,0.267773],[99.15918,0.351758],[99.111719,0.458936],[99.05957,0.686377],[98.935547,1.031934],[98.796387,1.494629],[98.702539,1.701953],[98.595313,1.8646],[98.564258,1.902148],[98.086523,2.195068],[98.005078,2.238184],[97.918555,2.264209],[97.79502,2.282861],[97.700781,2.358545],[97.662012,2.494287],[97.640625,2.676416],[97.616797,2.785107],[97.59082,2.846582],[97.391309,2.975293],[97.313184,3.077051],[97.247949,3.189014],[97.188379,3.275732],[96.968945,3.575146],[96.893945,3.653711],[96.800977,3.708545],[96.525391,3.766602],[96.444727,3.816309],[96.31084,3.986328],[96.230078,4.072754],[95.987988,4.263281],[95.578613,4.661963],[95.494727,4.761377],[95.431934,4.865039],[95.38125,4.976172],[95.206641,5.284033],[95.220703,5.34624],[95.24707,5.410791],[95.242969,5.464307],[95.223828,5.51709],[95.227832,5.564795],[95.27959,5.592871],[95.396094,5.628809],[95.516992,5.624609],[95.628906,5.609082],[95.737305,5.579297],[95.841309,5.514502],[96.027344,5.351172],[96.133301,5.294287],[96.250879,5.266992],[96.492578,5.229346]]],[[[122.78291,-8.611719],[122.641504,-8.647266],[122.553809,-8.680957],[122.470215,-8.725488],[122.417285,-8.734668],[122.321484,-8.738281],[122.185742,-8.730273],[122.094141,-8.744727],[121.838672,-8.860352],[121.738281,-8.87041],[121.651367,-8.89873],[121.621289,-8.853809],[121.58457,-8.820605],[121.499609,-8.812207],[121.414648,-8.814844],[121.32832,-8.916895],[121.19082,-8.895508],[121.1375,-8.904492],[121.086133,-8.925977],[121.035254,-8.935449],[120.981836,-8.92832],[120.780957,-8.848828],[120.550488,-8.801855],[120.319531,-8.820312],[120.120898,-8.776953],[120.012109,-8.810156],[119.909375,-8.857617],[119.879102,-8.807617],[119.841406,-8.763574],[119.80791,-8.697656],[119.807031,-8.622949],[119.818164,-8.570508],[119.847656,-8.522852],[119.866113,-8.473145],[119.874805,-8.419824],[119.918262,-8.445117],[119.96377,-8.435547],[120.099219,-8.377539],[120.231152,-8.289844],[120.354102,-8.257812],[120.424902,-8.248926],[120.485547,-8.266113],[120.547168,-8.259863],[120.610254,-8.24043],[120.70957,-8.307813],[120.751367,-8.321484],[120.886133,-8.32666],[121.008691,-8.365527],[121.118164,-8.423535],[121.27666,-8.47793],[121.371973,-8.550879],[121.444531,-8.577832],[121.498438,-8.585156],[121.547949,-8.575293],[121.610352,-8.526172],[121.683398,-8.505859],[121.74707,-8.506641],[121.862891,-8.493945],[121.911719,-8.482129],[121.966504,-8.455176],[122.020117,-8.471875],[122.06709,-8.49668],[122.263086,-8.624902],[122.323242,-8.62832],[122.433496,-8.600781],[122.466602,-8.566406],[122.483594,-8.513574],[122.51377,-8.469629],[122.555859,-8.431543],[122.603516,-8.402441],[122.75,-8.353125],[122.850488,-8.304395],[122.919141,-8.221875],[122.758594,-8.185938],[122.792383,-8.126563],[122.845703,-8.093262],[122.916992,-8.105566],[122.97832,-8.151953],[123.005957,-8.329102],[122.955469,-8.354102],[122.923633,-8.380957],[122.902148,-8.416309],[122.811133,-8.481152],[122.846777,-8.562207],[122.82002,-8.595703],[122.78291,-8.611719]]],[[[120.0125,-9.374707],[120.057617,-9.419727],[120.221094,-9.506348],[120.248047,-9.542871],[120.258301,-9.603125],[120.291113,-9.647852],[120.364746,-9.654688],[120.443652,-9.645605],[120.503711,-9.674023],[120.555566,-9.719043],[120.632617,-9.806445],[120.700391,-9.903125],[120.784473,-9.957031],[120.832617,-10.0375],[120.804199,-10.108496],[120.698047,-10.206641],[120.64043,-10.22793],[120.561719,-10.235645],[120.43916,-10.294043],[120.394531,-10.263477],[120.255469,-10.242285],[120.144824,-10.200098],[120.051953,-10.122852],[119.998438,-10.039746],[119.930664,-9.966504],[119.812793,-9.91748],[119.601074,-9.773535],[119.470313,-9.760547],[119.416504,-9.771094],[119.362598,-9.771777],[119.085449,-9.706934],[119.042383,-9.669043],[119.008398,-9.620508],[118.977344,-9.572852],[118.958789,-9.519336],[118.994141,-9.47207],[119.031445,-9.440234],[119.185645,-9.384473],[119.295898,-9.367188],[119.423926,-9.369824],[119.614746,-9.352441],[119.795117,-9.380469],[119.850781,-9.35957],[119.94209,-9.301465],[119.973828,-9.321582],[120.0125,-9.374707]]],[[[118.242383,-8.317773],[118.292383,-8.357227],[118.337891,-8.353516],[118.433203,-8.293262],[118.490625,-8.271484],[118.552148,-8.27041],[118.611914,-8.280664],[118.670605,-8.323438],[118.691797,-8.393457],[118.713867,-8.414941],[118.74834,-8.331152],[118.794238,-8.305859],[118.845703,-8.293066],[118.926172,-8.297656],[118.987793,-8.337695],[119.043848,-8.456738],[119.04209,-8.560938],[119.0625,-8.599805],[119.101074,-8.628223],[119.129687,-8.668164],[119.104199,-8.709961],[119.078906,-8.730469],[119.00625,-8.749609],[118.971484,-8.741211],[118.939355,-8.713086],[118.90332,-8.702734],[118.821191,-8.712109],[118.745898,-8.735449],[118.75625,-8.773633],[118.818066,-8.79082],[118.836719,-8.808887],[118.832617,-8.833398],[118.808301,-8.838281],[118.72793,-8.805273],[118.673633,-8.811914],[118.478613,-8.856445],[118.426953,-8.855469],[118.397852,-8.813379],[118.399902,-8.703711],[118.378906,-8.674609],[118.233984,-8.807813],[118.189941,-8.840527],[118.131543,-8.855957],[118.070703,-8.850586],[117.86123,-8.931445],[117.79541,-8.920117],[117.731641,-8.919922],[117.50791,-9.00752],[117.387891,-9.031934],[117.326367,-9.033691],[117.265039,-9.026172],[117.210254,-9.034082],[117.16123,-9.069238],[117.061328,-9.099023],[116.958203,-9.076367],[116.871094,-9.046191],[116.788477,-9.006348],[116.767969,-8.955469],[116.77207,-8.894336],[116.806934,-8.810938],[116.783105,-8.664648],[116.80127,-8.597949],[116.835059,-8.532422],[116.88623,-8.508301],[116.953125,-8.503418],[117.063672,-8.444434],[117.164844,-8.367188],[117.223633,-8.374512],[117.356641,-8.428516],[117.43457,-8.434961],[117.56709,-8.426367],[117.621777,-8.45957],[117.643359,-8.535547],[117.672852,-8.563281],[117.712109,-8.582617],[117.806055,-8.711133],[117.893164,-8.704395],[117.969531,-8.728027],[118.104102,-8.650293],[118.205957,-8.652148],[118.234863,-8.591895],[118.174023,-8.527539],[118.100488,-8.475195],[118.061035,-8.464258],[118.017871,-8.467383],[117.979102,-8.458887],[117.814844,-8.34209],[117.766406,-8.279004],[117.738379,-8.20459],[117.755273,-8.149512],[117.868262,-8.100879],[117.920996,-8.089063],[118.11748,-8.122266],[118.150684,-8.15],[118.202832,-8.267285],[118.242383,-8.317773]]],[[[124.888867,0.995312],[124.698145,0.825586],[124.639844,0.743555],[124.589063,0.655273],[124.514063,0.557129],[124.427539,0.470605],[124.384375,0.444971],[124.278027,0.398438],[124.216797,0.380371],[124.101367,0.374561],[123.753809,0.305518],[123.639648,0.297461],[123.525977,0.300342],[123.310449,0.317578],[123.26543,0.326611],[123.179492,0.415527],[123.08252,0.48584],[122.996875,0.493506],[122.90957,0.485986],[122.280762,0.481055],[122.060938,0.468018],[121.841992,0.436572],[121.722754,0.450879],[121.60459,0.486133],[121.515723,0.498437],[121.425781,0.494824],[121.012988,0.441699],[120.90918,0.446777],[120.700391,0.514697],[120.579004,0.52832],[120.459961,0.510303],[120.349023,0.449219],[120.307031,0.408252],[120.192285,0.268506],[120.127344,0.166553],[120.07832,0.039746],[120.036035,-0.089941],[120.013281,-0.196191],[120.012109,-0.307129],[120.031738,-0.432031],[120.062891,-0.555566],[120.097461,-0.649902],[120.240625,-0.868262],[120.269824,-0.899219],[120.425391,-0.960645],[120.517578,-1.039453],[120.605078,-1.258496],[120.667383,-1.370117],[120.728613,-1.371484],[120.796973,-1.363672],[120.91582,-1.377832],[121.033691,-1.406543],[121.148535,-1.339453],[121.212598,-1.2125],[121.276855,-1.118164],[121.431348,-0.938574],[121.519336,-0.855566],[121.575586,-0.828516],[121.632715,-0.840332],[121.681152,-0.887891],[121.737695,-0.925684],[121.853125,-0.945996],[121.969629,-0.933301],[122.093652,-0.875],[122.138086,-0.839258],[122.174902,-0.79375],[122.27998,-0.757031],[122.529688,-0.756641],[122.658789,-0.769824],[122.88877,-0.755176],[122.885547,-0.72207],[122.841113,-0.687012],[122.829492,-0.658887],[122.872266,-0.640723],[123.02041,-0.599805],[123.171484,-0.570703],[123.281445,-0.591504],[123.379687,-0.648535],[123.417383,-0.707422],[123.43418,-0.778223],[123.396289,-0.961621],[123.37793,-1.004102],[123.299609,-1.026074],[123.225781,-1.001758],[123.152734,-0.907031],[123.049414,-0.872363],[122.902832,-0.900977],[122.852539,-0.928125],[122.807422,-0.966016],[122.724609,-1.064258],[122.655664,-1.175195],[122.506641,-1.347852],[122.33418,-1.497852],[122.250684,-1.555273],[122.157617,-1.593945],[121.858594,-1.693262],[121.779883,-1.766992],[121.71875,-1.862793],[121.650977,-1.89541],[121.572656,-1.905762],[121.513867,-1.887793],[121.394727,-1.833789],[121.355469,-1.878223],[121.348828,-1.945996],[121.40752,-1.970117],[121.501953,-2.04502],[121.575,-2.150879],[121.621875,-2.173633],[121.725977,-2.208008],[121.769727,-2.240918],[121.848242,-2.331543],[121.971875,-2.542383],[122.013965,-2.656445],[122.082617,-2.749512],[122.291699,-2.907617],[122.30332,-2.952246],[122.29043,-3.004199],[122.306543,-3.051563],[122.38125,-3.142383],[122.399023,-3.200879],[122.317285,-3.275098],[122.312793,-3.382715],[122.262695,-3.527441],[122.251367,-3.57627],[122.25293,-3.62041],[122.288086,-3.661621],[122.329102,-3.694238],[122.385352,-3.711426],[122.43457,-3.739844],[122.529199,-3.852637],[122.578613,-3.882324],[122.609961,-3.923438],[122.606738,-3.984668],[122.649902,-4.020508],[122.689648,-4.084473],[122.750391,-4.1],[122.778809,-4.081641],[122.798242,-4.054199],[122.847949,-4.064551],[122.877344,-4.109082],[122.894336,-4.166309],[122.899805,-4.229395],[122.897363,-4.349121],[122.872266,-4.391992],[122.817578,-4.389941],[122.719727,-4.340723],[122.715039,-4.37627],[122.72168,-4.410742],[122.671875,-4.422168],[122.614746,-4.417383],[122.471387,-4.42207],[122.207129,-4.496387],[122.114258,-4.540234],[122.054199,-4.620117],[122.05,-4.675293],[122.073242,-4.791699],[122.038086,-4.832422],[121.916992,-4.847949],[121.748047,-4.816699],[121.645703,-4.785645],[121.588672,-4.75957],[121.514355,-4.68125],[121.486523,-4.581055],[121.541211,-4.28291],[121.556738,-4.244629],[121.583398,-4.210547],[121.611523,-4.156348],[121.618066,-4.092676],[121.537402,-4.014844],[121.41582,-3.984277],[121.312695,-3.919434],[120.914258,-3.555762],[120.891797,-3.520605],[120.890918,-3.460352],[120.906934,-3.404004],[121.037891,-3.205176],[121.054297,-3.16709],[121.070312,-3.010156],[121.066797,-2.880957],[121.052148,-2.75166],[120.990137,-2.670313],[120.879395,-2.645605],[120.765039,-2.641602],[120.653613,-2.667578],[120.543945,-2.732617],[120.341406,-2.869629],[120.261035,-2.949316],[120.254102,-3.052832],[120.300488,-3.154297],[120.360449,-3.246875],[120.392383,-3.348145],[120.436621,-3.707324],[120.435156,-3.747852],[120.383008,-3.852344],[120.3625,-4.085742],[120.38457,-4.415137],[120.420117,-4.617383],[120.40498,-4.727246],[120.310156,-4.963184],[120.281445,-5.092676],[120.279297,-5.146094],[120.390918,-5.392578],[120.416602,-5.490039],[120.430371,-5.591016],[120.311621,-5.541602],[120.256445,-5.544141],[120.200781,-5.559375],[120.077051,-5.575488],[119.951563,-5.577637],[119.907617,-5.596289],[119.818457,-5.661816],[119.764453,-5.688281],[119.717285,-5.693359],[119.557422,-5.611035],[119.463086,-5.52168],[119.376172,-5.424805],[119.360352,-5.31416],[119.390625,-5.200586],[119.433594,-5.079199],[119.519531,-4.877344],[119.515527,-4.741895],[119.544922,-4.630859],[119.594043,-4.523145],[119.611719,-4.423535],[119.623633,-4.034375],[119.611426,-3.999805],[119.493652,-3.768555],[119.480078,-3.729785],[119.479297,-3.667383],[119.491992,-3.607813],[119.494531,-3.554102],[119.46748,-3.512988],[119.419824,-3.475391],[119.362109,-3.458984],[119.240039,-3.475293],[118.994629,-3.537598],[118.922168,-3.482715],[118.867676,-3.398047],[118.832812,-3.280176],[118.8125,-3.156641],[118.821875,-3.040625],[118.858105,-2.928516],[118.828906,-2.850098],[118.783691,-2.764746],[118.783301,-2.720801],[118.808984,-2.682324],[118.85332,-2.650195],[118.90752,-2.631445],[118.958203,-2.597461],[119.092188,-2.48291],[119.135352,-2.382324],[119.138184,-2.258496],[119.172266,-2.140039],[119.24082,-2.030957],[119.321875,-1.929688],[119.348242,-1.825293],[119.308301,-1.659668],[119.324121,-1.584277],[119.310352,-1.495703],[119.308984,-1.408203],[119.35918,-1.243457],[119.508203,-0.906738],[119.653516,-0.72793],[119.711328,-0.680762],[119.786719,-0.763965],[119.844336,-0.861914],[119.845215,-0.773242],[119.829883,-0.686328],[119.77168,-0.483594],[119.721875,-0.088477],[119.73584,-0.051025],[119.786523,-0.056982],[119.838281,-0.022119],[119.865625,0.040088],[119.811719,0.186914],[119.809277,0.238672],[119.913281,0.445068],[119.998047,0.520215],[120.035156,0.566602],[120.056445,0.692529],[120.100586,0.740137],[120.156543,0.77417],[120.229785,0.86123],[120.269531,0.970801],[120.293848,0.97915],[120.322461,0.983154],[120.366504,0.887549],[120.416016,0.848682],[120.516602,0.817529],[120.602539,0.854395],[120.626465,0.902393],[120.658887,0.943652],[120.711035,0.98667],[120.754883,1.035645],[120.803613,1.149268],[120.867969,1.252832],[120.912109,1.288965],[120.96543,1.311816],[121.024609,1.325781],[121.081738,1.327637],[121.208398,1.2625],[121.281738,1.249805],[121.356738,1.254541],[121.404102,1.243604],[121.440039,1.214404],[121.472754,1.155518],[121.513281,1.104736],[121.550684,1.079687],[121.591797,1.067969],[121.867383,1.088525],[122.108203,1.031152],[122.436621,1.018066],[122.549316,0.984473],[122.657422,0.940576],[122.789844,0.862891],[122.838281,0.845703],[122.89248,0.85],[122.960059,0.922998],[123.012793,0.938965],[123.066504,0.941797],[123.278125,0.928076],[123.84668,0.838184],[123.930762,0.850439],[124.273633,1.022266],[124.41084,1.185107],[124.533691,1.230469],[124.575391,1.304053],[124.600195,1.392432],[124.64375,1.416162],[124.74668,1.441406],[124.787695,1.467578],[124.860645,1.576025],[124.94707,1.672168],[124.989258,1.701025],[125.110938,1.685693],[125.164844,1.643652],[125.233789,1.502295],[125.22168,1.478711],[125.140918,1.408398],[125.11748,1.378906],[125.028027,1.180225],[124.966797,1.082617],[124.888867,0.995312]]],[[[107.373926,-6.007617],[107.474707,-6.121777],[107.562988,-6.182715],[107.666797,-6.21582],[107.776074,-6.218945],[107.883789,-6.233301],[108.008789,-6.276953],[108.137598,-6.29668],[108.197461,-6.289062],[108.254492,-6.266602],[108.29502,-6.265039],[108.330176,-6.286035],[108.419141,-6.382812],[108.515918,-6.471191],[108.537988,-6.516211],[108.603613,-6.729199],[108.677832,-6.790527],[108.779688,-6.808301],[108.899414,-6.808398],[109.018359,-6.817285],[109.294238,-6.866992],[109.403711,-6.860156],[109.500586,-6.810156],[109.586914,-6.842578],[109.820996,-6.902441],[109.93623,-6.91582],[110.06709,-6.89873],[110.198438,-6.895117],[110.260938,-6.912402],[110.321094,-6.938379],[110.372754,-6.947754],[110.42627,-6.947266],[110.520898,-6.897266],[110.583594,-6.805664],[110.634277,-6.690137],[110.674023,-6.569824],[110.700781,-6.518066],[110.736914,-6.472363],[110.78418,-6.442676],[110.834766,-6.424219],[110.972266,-6.435645],[111.000684,-6.464746],[111.154395,-6.669043],[111.181543,-6.686719],[111.34209,-6.699512],[111.386523,-6.692871],[111.484473,-6.651855],[111.540332,-6.648242],[111.643555,-6.69873],[111.688086,-6.741699],[111.737598,-6.773438],[111.989844,-6.805957],[112.087305,-6.893359],[112.136719,-6.905078],[112.312305,-6.894434],[112.433594,-6.903027],[112.539258,-6.926465],[112.586914,-7.050586],[112.625977,-7.178027],[112.64873,-7.221289],[112.751953,-7.265039],[112.794336,-7.304492],[112.78291,-7.431641],[112.794531,-7.552441],[113.013574,-7.657715],[113.248438,-7.718164],[113.497656,-7.723828],[113.747461,-7.703027],[113.87627,-7.677246],[114.037305,-7.632129],[114.070703,-7.633008],[114.382715,-7.771094],[114.409277,-7.79248],[114.444238,-7.895605],[114.443262,-8.00459],[114.384961,-8.263281],[114.381348,-8.334277],[114.386914,-8.405176],[114.448828,-8.559277],[114.481738,-8.603809],[114.59502,-8.684766],[114.599219,-8.727246],[114.583789,-8.769629],[114.45918,-8.740527],[114.383203,-8.705371],[114.339258,-8.647363],[114.276953,-8.614648],[114.159668,-8.626465],[113.940332,-8.568359],[113.692578,-8.478027],[113.25332,-8.286719],[113.133691,-8.288281],[113.018945,-8.312695],[112.897754,-8.361426],[112.77168,-8.396094],[112.678809,-8.40918],[112.586035,-8.399609],[112.351562,-8.353613],[112.115137,-8.323926],[111.509961,-8.305078],[111.338574,-8.261719],[111.055371,-8.239551],[110.830176,-8.201953],[110.607227,-8.149414],[110.038672,-7.890527],[109.852637,-7.828418],[109.281641,-7.704883],[109.193555,-7.694922],[108.986719,-7.704102],[108.85625,-7.667871],[108.741211,-7.66709],[108.570508,-7.707227],[108.517969,-7.736035],[108.451758,-7.796973],[108.335547,-7.794043],[108.220508,-7.782324],[107.91748,-7.724121],[107.804395,-7.688379],[107.695801,-7.635547],[107.597852,-7.566699],[107.546875,-7.541895],[107.284961,-7.47168],[107.071191,-7.447461],[106.631445,-7.415527],[106.535352,-7.394238],[106.455273,-7.368652],[106.411328,-7.311719],[106.416895,-7.239355],[106.448438,-7.176758],[106.491504,-7.113867],[106.519727,-7.053711],[106.198242,-6.927832],[105.944336,-6.858984],[105.834766,-6.845801],[105.724805,-6.846094],[105.600977,-6.860352],[105.478418,-6.853711],[105.420801,-6.833203],[105.361914,-6.826172],[105.30293,-6.841016],[105.255469,-6.835254],[105.243164,-6.778027],[105.273438,-6.729395],[105.335645,-6.674121],[105.370898,-6.664355],[105.387012,-6.750781],[105.404688,-6.767969],[105.459766,-6.786914],[105.483691,-6.781543],[105.580859,-6.670996],[105.608008,-6.616699],[105.655078,-6.469531],[105.706055,-6.497949],[105.757422,-6.480371],[105.786914,-6.456934],[105.868262,-6.116406],[105.936133,-6.016992],[106.028809,-5.934277],[106.075,-5.91416],[106.16582,-5.964746],[106.349707,-5.984082],[106.459082,-6.017578],[106.56875,-6.021875],[106.675879,-6.038379],[106.825195,-6.098242],[106.87793,-6.091992],[106.931641,-6.073438],[107.011621,-6.008496],[107.046289,-5.904199],[107.162109,-5.957129],[107.331836,-5.978125],[107.373926,-6.007617]]],[[[109.628906,2.027539],[109.538965,1.896191],[109.548926,1.84834],[109.570801,1.806299],[109.63584,1.77666],[109.654004,1.614893],[109.735742,1.522949],[109.818066,1.438965],[109.878516,1.397852],[109.944922,1.338037],[109.991699,1.282568],[110.04082,1.235742],[110.114746,1.190137],[110.315234,0.995996],[110.399023,0.939062],[110.461426,0.88208],[110.505762,0.861963],[110.614746,0.878125],[110.938086,1.017334],[110.996094,1.026367],[111.101367,1.050537],[111.286719,1.043213],[111.483203,0.995752],[111.54668,0.994336],[111.607422,1.022607],[111.691309,1.014209],[111.769727,0.999463],[111.808984,1.01167],[111.923145,1.113281],[112.078516,1.143359],[112.128613,1.243604],[112.167383,1.338184],[112.185742,1.439062],[112.250684,1.479639],[112.341602,1.514746],[112.476172,1.559082],[112.942969,1.566992],[112.988281,1.547559],[112.998047,1.49624],[112.988281,1.457129],[113.006543,1.433887],[113.068652,1.431787],[113.12627,1.408105],[113.358984,1.327148],[113.458203,1.302148],[113.513184,1.308398],[113.622266,1.235937],[113.681641,1.260596],[113.760352,1.311377],[113.835254,1.379883],[113.902344,1.434277],[114,1.455273],[114.125977,1.452344],[114.274707,1.470898],[114.387109,1.500049],[114.5125,1.452002],[114.545898,1.467139],[114.56748,1.51416],[114.632227,1.617041],[114.660937,1.686279],[114.686133,1.819043],[114.703516,1.850781],[114.751074,1.868994],[114.8,1.893945],[114.812695,1.933789],[114.830566,1.980029],[114.81582,2.018945],[114.787988,2.051611],[114.758691,2.162402],[114.768359,2.212939],[114.786426,2.250488],[114.836328,2.269385],[114.969141,2.35083],[115.086523,2.446143],[115.150781,2.49292],[115.179102,2.523193],[115.180859,2.566895],[115.129883,2.612402],[115.080762,2.634229],[115.077051,2.687012],[115.078906,2.723437],[115.093652,2.757812],[115.086523,2.791211],[115.086328,2.841113],[115.117578,2.894873],[115.189941,2.974463],[115.246973,3.025928],[115.310156,2.993945],[115.38418,3.00874],[115.454395,3.034326],[115.493164,3.128125],[115.499121,3.173145],[115.489746,3.208643],[115.514258,3.342383],[115.519922,3.36167],[115.566113,3.445752],[115.570703,3.502295],[115.544531,3.633691],[115.560938,3.733057],[115.568457,3.93877],[115.596094,3.975537],[115.627539,4.081982],[115.678809,4.193018],[115.782422,4.25376],[115.836816,4.333301],[115.860742,4.348047],[115.896191,4.348682],[116.021582,4.290674],[116.134473,4.355176],[116.23623,4.362549],[116.320312,4.353711],[116.367676,4.327344],[116.414551,4.308203],[116.514746,4.370801],[116.553125,4.359863],[116.589063,4.338428],[116.638672,4.339111],[116.697852,4.35498],[116.843555,4.340137],[117.100586,4.337061],[117.277539,4.299316],[117.450879,4.192871],[117.537305,4.171387],[117.574414,4.170605],[117.566211,4.162305],[117.497461,4.133398],[117.465332,4.076074],[117.559375,3.98833],[117.566016,3.929932],[117.639063,3.877979],[117.728223,3.796729],[117.731738,3.770264],[117.762012,3.733887],[117.777246,3.689258],[117.714453,3.644824],[117.629883,3.636328],[117.567383,3.678271],[117.509668,3.730371],[117.494922,3.665576],[117.450391,3.628516],[117.287891,3.639307],[117.171582,3.638965],[117.055957,3.622656],[117.113867,3.612646],[117.166406,3.591992],[117.346289,3.426611],[117.384668,3.365381],[117.321875,3.243555],[117.352441,3.19375],[117.42207,3.165186],[117.506836,3.10459],[117.567187,3.098486],[117.610645,3.064355],[117.612402,3.004883],[117.637891,2.95083],[117.569141,2.929297],[117.637207,2.914941],[117.697656,2.887305],[117.664551,2.859277],[117.638867,2.825293],[117.666797,2.806934],[117.749707,2.775586],[117.785937,2.746777],[117.804883,2.668945],[117.885742,2.541748],[118.03418,2.377637],[118.066602,2.317822],[118.066309,2.262744],[118.041602,2.21543],[117.957031,2.159961],[117.889258,2.087012],[117.881055,2.060645],[117.789258,2.026855],[117.83125,2.002002],[117.864648,1.968408],[117.928418,1.866797],[118.080371,1.701855],[118.156836,1.640332],[118.47168,1.416455],[118.638965,1.318994],[118.852539,1.09585],[118.963477,1.044287],[118.984961,0.982129],[118.892383,0.886865],[118.757422,0.839209],[118.534766,0.813525],[118.311523,0.84707],[118.196094,0.874365],[118.095508,0.92915],[118.016309,1.03916],[117.911621,1.098682],[117.951953,1.031982],[117.977344,0.963818],[117.964258,0.889551],[117.923047,0.831348],[117.852539,0.788672],[117.776953,0.754004],[117.745117,0.729639],[117.55332,0.341016],[117.522168,0.235889],[117.46377,-0.200488],[117.462891,-0.32373],[117.548926,-0.554395],[117.556836,-0.675293],[117.573828,-0.727539],[117.5625,-0.770898],[117.521777,-0.79668],[117.357129,-0.867188],[117.240723,-0.925684],[117.146484,-1.008984],[117.070215,-1.112695],[117.003223,-1.187695],[116.913965,-1.223633],[116.849414,-1.218262],[116.79707,-1.183789],[116.760547,-1.117188],[116.739844,-1.044238],[116.726172,-1.098145],[116.728711,-1.150781],[116.759277,-1.207129],[116.770996,-1.266602],[116.753418,-1.327344],[116.715234,-1.375781],[116.611621,-1.428613],[116.554492,-1.473926],[116.545117,-1.553125],[116.517578,-1.598047],[116.47793,-1.632812],[116.332129,-1.7125],[116.299609,-1.744336],[116.275488,-1.784863],[116.353223,-1.778613],[116.424316,-1.784863],[116.42959,-1.86416],[116.451953,-1.923145],[116.423535,-2.052539],[116.313965,-2.139844],[116.368652,-2.158203],[116.418164,-2.186719],[116.528125,-2.20791],[116.56543,-2.299707],[116.549219,-2.41084],[116.529297,-2.510547],[116.450391,-2.538281],[116.40127,-2.519824],[116.352539,-2.521582],[116.316797,-2.551855],[116.307227,-2.60332],[116.375488,-2.578027],[116.37168,-2.706836],[116.353223,-2.832715],[116.330664,-2.902148],[116.288867,-2.958789],[116.225781,-2.976953],[116.166309,-2.93457],[116.154102,-2.983789],[116.172266,-3.025293],[116.257227,-3.126367],[116.205078,-3.148535],[116.16709,-3.183008],[116.15,-3.233203],[116.05752,-3.348242],[116.016699,-3.432813],[115.999414,-3.52334],[115.956152,-3.59502],[115.258203,-3.906836],[114.693555,-4.169727],[114.652539,-4.151855],[114.625293,-4.111719],[114.605957,-3.70332],[114.536133,-3.494434],[114.525586,-3.37666],[114.445996,-3.481836],[114.397168,-3.471191],[114.344336,-3.444434],[114.30459,-3.410059],[114.30166,-3.364746],[114.344336,-3.235156],[114.292676,-3.30625],[114.236328,-3.361133],[114.17793,-3.354395],[114.127637,-3.327246],[114.108984,-3.285156],[114.082227,-3.278906],[113.958789,-3.394336],[113.795801,-3.45625],[113.705078,-3.455273],[113.633594,-3.419922],[113.637305,-3.332031],[113.630078,-3.246094],[113.610059,-3.195703],[113.566309,-3.177734],[113.525977,-3.184082],[113.408984,-3.228906],[113.367188,-3.223633],[113.343164,-3.246484],[113.033984,-2.933496],[112.971484,-3.187109],[112.758008,-3.322168],[112.600293,-3.400488],[112.443945,-3.371094],[112.284961,-3.320996],[112.12666,-3.381445],[111.954883,-3.529688],[111.907422,-3.552539],[111.858105,-3.551855],[111.82207,-3.53252],[111.834375,-3.420117],[111.835938,-3.307715],[111.823047,-3.057227],[111.809375,-3.008008],[111.760156,-2.93916],[111.694727,-2.889453],[111.658301,-2.925781],[111.625488,-2.975488],[111.494922,-2.97334],[111.367578,-2.933691],[111.25918,-2.956445],[111.044336,-3.055762],[110.930078,-3.071094],[110.86875,-3.04873],[110.829688,-2.995117],[110.852051,-2.946191],[110.899316,-2.908594],[110.811133,-2.938477],[110.73584,-2.988672],[110.703125,-3.020898],[110.668164,-3.004785],[110.574023,-2.891406],[110.377539,-2.933789],[110.350977,-2.946777],[110.302539,-2.985352],[110.256055,-2.966113],[110.232617,-2.925098],[110.224316,-2.688672],[110.124414,-2.233887],[110.096582,-2.001367],[110.075,-1.946387],[109.959863,-1.862793],[109.96377,-1.742871],[110.023438,-1.642578],[110.036133,-1.525684],[110.019238,-1.398828],[109.983301,-1.274805],[109.938086,-1.181152],[109.873438,-1.101074],[109.787402,-1.011328],[109.681738,-0.944238],[109.453809,-0.86875],[109.333496,-0.875391],[109.288867,-0.845801],[109.258789,-0.807422],[109.270996,-0.732031],[109.311719,-0.680176],[109.366309,-0.667383],[109.372754,-0.638184],[109.257031,-0.577441],[109.160547,-0.494922],[109.130273,-0.44541],[109.121094,-0.390918],[109.121777,-0.265039],[109.149609,-0.185547],[109.164746,-0.14248],[109.194629,-0.009424],[109.25752,0.031152],[109.247266,0.055762],[109.220215,0.073828],[109.180762,0.11748],[109.148535,0.167676],[109.074805,0.252832],[108.944531,0.355664],[108.922754,0.532812],[108.905859,0.793945],[108.916797,0.912646],[108.958594,1.134619],[109.030859,1.204492],[109.088477,1.223926],[109.131543,1.253857],[109.096094,1.258154],[109.06543,1.247168],[109.010254,1.239648],[109.055469,1.438477],[109.075879,1.495898],[109.166699,1.60708],[109.273145,1.705469],[109.318164,1.821094],[109.378516,1.922705],[109.628906,2.027539]]],[[[127.732715,0.848145],[127.805371,0.825928],[127.881055,0.832129],[127.918652,0.876807],[127.929102,0.934717],[127.967285,1.042578],[128.055273,1.115625],[128.116992,1.127051],[128.160742,1.157812],[128.153125,1.237891],[128.157422,1.316602],[128.222461,1.400635],[128.424121,1.517529],[128.539258,1.559229],[128.688379,1.572559],[128.705176,1.527734],[128.688086,1.463721],[128.716895,1.367285],[128.702637,1.106396],[128.66875,1.069434],[128.514551,0.979248],[128.345996,0.907129],[128.298828,0.876807],[128.257227,0.80498],[128.260645,0.733789],[128.397949,0.638818],[128.61123,0.549951],[128.655273,0.508252],[128.683789,0.438477],[128.691602,0.360352],[128.743262,0.323242],[128.81543,0.305371],[128.863281,0.268359],[128.899609,0.21626],[128.54043,0.337891],[128.446484,0.391553],[128.332813,0.397949],[128.220605,0.414258],[128.106055,0.460889],[127.983105,0.471875],[127.924414,0.438086],[127.901367,0.372266],[127.887402,0.29834],[127.914648,0.206299],[127.912207,0.150537],[127.888965,0.049512],[127.977832,-0.24834],[128.089453,-0.485254],[128.253516,-0.731641],[128.33457,-0.816309],[128.425488,-0.892676],[128.278125,-0.87002],[128.233398,-0.787695],[128.046387,-0.706055],[128.01084,-0.657324],[127.888965,-0.423535],[127.85332,-0.379883],[127.74082,-0.300391],[127.691602,-0.241895],[127.674805,-0.162891],[127.687402,-0.079932],[127.681348,0.034863],[127.685449,0.149023],[127.708691,0.288086],[127.668652,0.336768],[127.616211,0.38291],[127.555371,0.489648],[127.537109,0.610889],[127.541797,0.680664],[127.566992,0.742529],[127.600684,0.796045],[127.608008,0.848242],[127.52041,0.924023],[127.428516,1.13999],[127.420313,1.251953],[127.537109,1.46748],[127.534668,1.57207],[127.55791,1.634229],[127.570703,1.700146],[127.631738,1.843701],[127.731445,1.966113],[127.899902,2.137354],[127.964258,2.174707],[128.036426,2.199023],[128.042773,2.15708],[128.03125,2.119873],[127.906738,1.945654],[127.890137,1.906299],[127.886816,1.832959],[127.946484,1.789648],[128.010938,1.701221],[128.02373,1.583496],[128.025879,1.458105],[128.011719,1.331738],[127.987695,1.2896],[127.885352,1.162793],[127.652832,1.013867],[127.633008,0.977197],[127.634375,0.936133],[127.677441,0.886572],[127.732715,0.848145]]],[[[129.754688,-2.86582],[129.984375,-2.97666],[130.103418,-2.992969],[130.303613,-2.978516],[130.379102,-2.989355],[130.569922,-3.130859],[130.625586,-3.228027],[130.641699,-3.311914],[130.671094,-3.391504],[130.718066,-3.411328],[130.773438,-3.41875],[130.845605,-3.533301],[130.859961,-3.570312],[130.805078,-3.857715],[130.580371,-3.748828],[130.363086,-3.625195],[130.269727,-3.579297],[130.019531,-3.474707],[129.981152,-3.438867],[129.953125,-3.391602],[129.844141,-3.327148],[129.62666,-3.317188],[129.54502,-3.318848],[129.511719,-3.328516],[129.52041,-3.363184],[129.52168,-3.433691],[129.467676,-3.453223],[129.332813,-3.408691],[129.212109,-3.392676],[129.107617,-3.349219],[128.96748,-3.326074],[128.952051,-3.304199],[128.964063,-3.27168],[128.957813,-3.241113],[128.925391,-3.229297],[128.8625,-3.234961],[128.801758,-3.265625],[128.75127,-3.300488],[128.676953,-3.396582],[128.638965,-3.433398],[128.516602,-3.449121],[128.465918,-3.439844],[128.419238,-3.416016],[128.27998,-3.240527],[128.233008,-3.202637],[128.180664,-3.17168],[128.132031,-3.157422],[128.082129,-3.184082],[128.055762,-3.238574],[128.043945,-3.30332],[128.030078,-3.340527],[127.97002,-3.444336],[127.92041,-3.506055],[127.902344,-3.496289],[127.927832,-3.397266],[127.92793,-3.341406],[127.897168,-3.282324],[127.87793,-3.22207],[128.113379,-2.93457],[128.198535,-2.865918],[128.569824,-2.842188],[128.790527,-2.856641],[128.910742,-2.849609],[128.991113,-2.828516],[129.057715,-2.838477],[129.074316,-2.895117],[129.116309,-2.937012],[129.174414,-2.933496],[129.27959,-2.889063],[129.371094,-2.820508],[129.427344,-2.790723],[129.48418,-2.785742],[129.542969,-2.790332],[129.600488,-2.806152],[129.754688,-2.86582]]],[[[126.861133,-3.087891],[127.025488,-3.166016],[127.062891,-3.216992],[127.092383,-3.277539],[127.124707,-3.31084],[127.163477,-3.338086],[127.227344,-3.391016],[127.244238,-3.471094],[127.22959,-3.633008],[127.155176,-3.647266],[127.085059,-3.670898],[126.940918,-3.764551],[126.869922,-3.78291],[126.794141,-3.78916],[126.740332,-3.813672],[126.686328,-3.823633],[126.54668,-3.77168],[126.411133,-3.710645],[126.214551,-3.605176],[126.17832,-3.579395],[126.14668,-3.522754],[126.056543,-3.420996],[126.033984,-3.355859],[126.026465,-3.170508],[126.050098,-3.128125],[126.088281,-3.105469],[126.219629,-3.148145],[126.30625,-3.103223],[126.555078,-3.065234],[126.808301,-3.069141],[126.861133,-3.087891]]],[[[124.922266,-8.94248],[124.915039,-9.031543],[124.936816,-9.053418],[124.973242,-9.064258],[125.100391,-9.004004],[125.124414,-9.01543],[125.149023,-9.042578],[125.149414,-9.122949],[125.100488,-9.189844],[124.977539,-9.194922],[124.960156,-9.21377],[124.958594,-9.254688],[124.968262,-9.294238],[124.996973,-9.325977],[125.033594,-9.381836],[125.068164,-9.511914],[124.997949,-9.565332],[124.963086,-9.665625],[124.841797,-9.759766],[124.708398,-9.91416],[124.601855,-9.992969],[124.508203,-10.086133],[124.427539,-10.148633],[124.326758,-10.169824],[124.175977,-10.183301],[123.971094,-10.294824],[123.857617,-10.343555],[123.747266,-10.347168],[123.644141,-10.310938],[123.604785,-10.270117],[123.614062,-10.215039],[123.648242,-10.167773],[123.690137,-10.128809],[123.716406,-10.078613],[123.599414,-10.015137],[123.589258,-9.966797],[123.635742,-9.838086],[123.66582,-9.705273],[123.709375,-9.614844],[123.876758,-9.453125],[123.977148,-9.372949],[124.036328,-9.341602],[124.052441,-9.375391],[124.090137,-9.416406],[124.115527,-9.423145],[124.13457,-9.413867],[124.282324,-9.42793],[124.319336,-9.41377],[124.375684,-9.349902],[124.412988,-9.314355],[124.438281,-9.238574],[124.444434,-9.190332],[124.575488,-9.155371],[124.645898,-9.116699],[124.708203,-9.061816],[124.889746,-8.968457],[124.922266,-8.94248]]],[[[134.746973,-5.707031],[134.739063,-5.745605],[134.738379,-5.816797],[134.75498,-5.882715],[134.712207,-5.949707],[134.752148,-6.050098],[134.758105,-6.1],[134.755859,-6.170605],[134.744434,-6.202344],[134.71416,-6.295117],[134.683887,-6.328125],[134.661133,-6.337305],[134.637598,-6.365332],[134.441113,-6.334863],[134.356152,-6.270508],[134.280469,-6.200781],[134.264453,-6.17168],[134.175391,-6.090332],[134.154883,-6.062891],[134.153125,-6.019531],[134.225098,-6.008496],[134.301953,-6.009766],[134.298633,-5.970703],[134.343066,-5.833008],[134.226172,-5.744434],[134.205371,-5.707227],[134.247266,-5.681934],[134.341309,-5.712891],[134.456348,-5.55752],[134.490332,-5.525098],[134.506445,-5.438477],[134.570801,-5.427344],[134.616504,-5.438574],[134.646094,-5.492383],[134.657813,-5.539258],[134.645508,-5.581348],[134.700781,-5.603027],[134.746973,-5.707031]]],[[[134.536816,-6.442285],[134.52041,-6.512695],[134.504297,-6.591406],[134.4125,-6.679688],[134.355957,-6.814844],[134.322754,-6.84873],[134.2,-6.908789],[134.09082,-6.833789],[134.05918,-6.769336],[134.107031,-6.471582],[134.154199,-6.481445],[134.184766,-6.479297],[134.194629,-6.459766],[134.124609,-6.426465],[134.11123,-6.255371],[134.114648,-6.19082],[134.168066,-6.17627],[134.23418,-6.226367],[134.317773,-6.316113],[134.415039,-6.386719],[134.536816,-6.442285]]],[[[138.535352,-8.273633],[138.296289,-8.405176],[137.982813,-8.381934],[137.871875,-8.379688],[137.687695,-8.411719],[137.650391,-8.386133],[137.685156,-8.262207],[137.83252,-7.932227],[138.00752,-7.641602],[138.081836,-7.566211],[138.185352,-7.495313],[138.295508,-7.438477],[138.543848,-7.37959],[138.769824,-7.39043],[138.801953,-7.414648],[138.899414,-7.511621],[138.962598,-7.587988],[138.989063,-7.696094],[138.892969,-7.882129],[138.785938,-8.059082],[138.611719,-8.19834],[138.535352,-8.273633]]],[[[140.973438,-2.609766],[140.973438,-2.613574],[140.973438,-2.681055],[140.973535,-2.803418],[140.973633,-3.006641],[140.97373,-3.209961],[140.973828,-3.413281],[140.973926,-3.616602],[140.974023,-3.819824],[140.974023,-4.023145],[140.974219,-4.226465],[140.974219,-4.429785],[140.974316,-4.633008],[140.974414,-4.836328],[140.974512,-5.039648],[140.974609,-5.242969],[140.974609,-5.446191],[140.974707,-5.649512],[140.974805,-5.852832],[140.974902,-6.056152],[140.975,-6.259375],[140.975,-6.346094],[140.944043,-6.452246],[140.874609,-6.611523],[140.862305,-6.740039],[140.919531,-6.840039],[140.975195,-6.905371],[140.975195,-7.072559],[140.975293,-7.275879],[140.975391,-7.479199],[140.975488,-7.68252],[140.975586,-7.885742],[140.975586,-8.089063],[140.975684,-8.292383],[140.975781,-8.495703],[140.975879,-8.698926],[140.975977,-8.902246],[140.975977,-9.105566],[140.976172,-9.11875],[140.924609,-9.085059],[140.786523,-8.97373],[140.661523,-8.846777],[140.581055,-8.72832],[140.489746,-8.62041],[140.10166,-8.300586],[140.00293,-8.195508],[139.983301,-8.166504],[139.992578,-8.139355],[140.037402,-8.083984],[140.116992,-7.92373],[140.033789,-8.022754],[139.934766,-8.101172],[139.79082,-8.106348],[139.649414,-8.125391],[139.518555,-8.172754],[139.385645,-8.189063],[139.319141,-8.16582],[139.279102,-8.106934],[139.258301,-8.046582],[139.248828,-7.982422],[139.192969,-8.086133],[139.083203,-8.142871],[138.933496,-8.262402],[138.890625,-8.237793],[138.864746,-8.192285],[138.856152,-8.145117],[138.885059,-8.094727],[138.905469,-8.041211],[138.935938,-7.913086],[139.003027,-7.837598],[139.045703,-7.691406],[139.073633,-7.639258],[139.087988,-7.587207],[139.048926,-7.52832],[138.983008,-7.508203],[138.937891,-7.472461],[138.885547,-7.373242],[138.853125,-7.339648],[138.793652,-7.298926],[138.747949,-7.251465],[138.798438,-7.215723],[138.864844,-7.201367],[138.919336,-7.203613],[139.017969,-7.225879],[139.0625,-7.227148],[139.176855,-7.19043],[139.112598,-7.201758],[139.049023,-7.200586],[138.845703,-7.136328],[138.72002,-7.069824],[138.601367,-6.936523],[138.600195,-6.910742],[138.683789,-6.886523],[138.864551,-6.858398],[138.808496,-6.79043],[138.72666,-6.731152],[138.698145,-6.625684],[138.642188,-6.560449],[138.521582,-6.453809],[138.438672,-6.343359],[138.368359,-6.118555],[138.296289,-5.949023],[138.313867,-5.8875],[138.374609,-5.843652],[138.282813,-5.838574],[138.199609,-5.807031],[138.243555,-5.724414],[138.339648,-5.675684],[138.252148,-5.688184],[138.166504,-5.712012],[138.127441,-5.716504],[138.087109,-5.70918],[138.065918,-5.675977],[138.063086,-5.628906],[138.075586,-5.545801],[138.06084,-5.465234],[137.984961,-5.427637],[137.922266,-5.370117],[137.886816,-5.348828],[137.840332,-5.350488],[137.795215,-5.312012],[137.759082,-5.256152],[137.306641,-5.014355],[137.279785,-4.94541],[137.237891,-4.975684],[137.195898,-4.99043],[137.14375,-4.950781],[137.089258,-4.924414],[137.029688,-4.928711],[136.974609,-4.907324],[136.916992,-4.895117],[136.856836,-4.893164],[136.618848,-4.81875],[136.39375,-4.70127],[136.210645,-4.650684],[136.097461,-4.584766],[135.979688,-4.530859],[135.716602,-4.478418],[135.450195,-4.443066],[135.353906,-4.441797],[135.273145,-4.453125],[135.195605,-4.450684],[134.754199,-4.19541],[134.679688,-4.079102],[134.686914,-4.011133],[134.706543,-3.954785],[134.886523,-3.938477],[134.759766,-3.922168],[134.707617,-3.929883],[134.603418,-3.976074],[134.546875,-3.979297],[134.467188,-3.948633],[134.391016,-3.909961],[134.266211,-3.945801],[134.202344,-3.887012],[134.180469,-3.825098],[134.14707,-3.796777],[134.1,-3.799707],[134.036914,-3.821973],[133.973828,-3.817969],[133.933203,-3.775586],[133.904004,-3.720117],[133.860742,-3.680371],[133.808496,-3.65],[133.723047,-3.57793],[133.67832,-3.479492],[133.683398,-3.30918],[133.697168,-3.248145],[133.781641,-3.148926],[133.841504,-3.054785],[133.767383,-3.044336],[133.700391,-3.0875],[133.671973,-3.131836],[133.660742,-3.185547],[133.653125,-3.364355],[133.599414,-3.416113],[133.518164,-3.411914],[133.542285,-3.516406],[133.50918,-3.615527],[133.415137,-3.732129],[133.407227,-3.785156],[133.422266,-3.842578],[133.400879,-3.899023],[133.24873,-4.062305],[133.198047,-4.070117],[133.085156,-4.069043],[132.968555,-4.094922],[132.914453,-4.056934],[132.870117,-4.007422],[132.837109,-3.948926],[132.790918,-3.828125],[132.753906,-3.703613],[132.869727,-3.550977],[132.829785,-3.412988],[132.751367,-3.294629],[132.553516,-3.130664],[132.348242,-2.975098],[132.25498,-2.943457],[132.102051,-2.92959],[132.053906,-2.914551],[132.006348,-2.856055],[131.971191,-2.788574],[132.066895,-2.75957],[132.230664,-2.680371],[132.32334,-2.68418],[132.575488,-2.727148],[132.65293,-2.766211],[132.725,-2.789062],[132.897266,-2.658203],[133.033789,-2.487402],[133.118848,-2.450293],[133.191016,-2.437793],[133.264941,-2.454297],[133.411426,-2.513965],[133.526563,-2.541699],[133.608691,-2.547168],[133.651563,-2.600586],[133.700098,-2.624609],[133.710938,-2.544043],[133.75332,-2.450684],[133.834668,-2.42168],[133.877637,-2.415039],[133.904883,-2.390918],[133.898926,-2.304492],[133.791016,-2.293652],[133.849707,-2.219629],[133.902441,-2.183594],[133.920508,-2.147461],[133.921582,-2.102051],[133.710352,-2.18916],[133.487793,-2.225586],[133.35625,-2.215723],[133.224902,-2.214453],[132.962793,-2.272559],[132.863281,-2.270215],[132.631055,-2.24668],[132.502637,-2.218457],[132.40332,-2.24043],[132.307617,-2.242285],[132.207422,-2.175781],[132.122168,-2.092383],[132.079883,-2.033203],[132.023438,-1.990332],[131.998438,-1.93252],[131.936133,-1.714941],[131.930371,-1.559668],[131.829785,-1.556543],[131.731445,-1.541211],[131.29375,-1.393457],[131.24082,-1.429688],[131.179199,-1.44834],[131.117773,-1.455273],[131.056738,-1.447656],[130.995898,-1.424707],[131.000977,-1.383984],[131.046191,-1.284082],[131.090527,-1.247266],[131.151855,-1.218848],[131.19082,-1.16582],[131.254102,-1.006934],[131.258984,-0.952637],[131.252051,-0.897168],[131.257227,-0.855469],[131.296387,-0.833594],[131.461523,-0.781836],[131.804297,-0.703809],[131.890918,-0.657129],[131.962402,-0.582422],[132.045996,-0.537012],[132.084473,-0.491113],[132.128418,-0.454102],[132.39375,-0.355469],[132.508008,-0.347461],[132.625098,-0.358887],[132.856445,-0.417383],[133.077148,-0.511816],[133.268457,-0.635742],[133.472656,-0.726172],[133.723633,-0.741406],[133.850293,-0.731445],[133.974512,-0.744336],[134.024902,-0.769727],[134.111523,-0.846777],[134.086719,-0.897363],[134.071973,-1.001855],[134.116211,-1.102441],[134.188281,-1.203125],[134.247168,-1.310547],[134.25957,-1.362988],[134.237207,-1.474121],[134.216992,-1.529102],[134.14541,-1.620801],[134.105859,-1.720996],[134.13125,-1.844531],[134.14541,-1.96875],[134.142773,-2.08291],[134.155664,-2.195215],[134.194824,-2.309082],[134.362109,-2.620996],[134.459961,-2.832324],[134.491211,-2.714258],[134.483301,-2.583008],[134.517969,-2.535645],[134.566895,-2.510449],[134.627441,-2.536719],[134.644727,-2.589844],[134.649023,-2.705859],[134.702148,-2.933594],[134.769824,-2.944043],[134.843359,-2.90918],[134.855371,-2.978809],[134.852734,-3.107617],[134.886816,-3.209863],[134.917188,-3.249902],[135.037402,-3.333105],[135.092188,-3.348535],[135.251563,-3.368555],[135.371582,-3.374902],[135.486621,-3.345117],[135.560742,-3.26875],[135.627734,-3.186035],[135.85918,-2.995313],[135.926172,-2.904102],[135.990723,-2.764258],[136.012988,-2.734277],[136.243262,-2.583105],[136.269531,-2.529492],[136.302539,-2.425684],[136.352441,-2.325195],[136.389941,-2.27334],[136.612305,-2.224316],[136.843262,-2.197656],[137.07207,-2.105078],[137.171094,-2.025488],[137.175781,-1.973145],[137.125488,-1.88125],[137.123438,-1.840918],[137.176465,-1.802148],[137.380566,-1.685645],[137.616602,-1.56582],[137.80625,-1.483203],[137.911133,-1.483789],[138.007812,-1.556543],[138.110938,-1.615918],[138.649805,-1.791113],[138.736133,-1.845508],[138.811426,-1.917773],[138.919141,-1.967871],[139.039453,-1.99209],[139.148828,-2.038867],[139.252637,-2.099219],[139.481836,-2.211816],[139.789551,-2.348242],[139.868359,-2.356445],[140.15459,-2.35],[140.204004,-2.375684],[140.250977,-2.412012],[140.294629,-2.42041],[140.622559,-2.445801],[140.673047,-2.47207],[140.720508,-2.508105],[140.747461,-2.607129],[140.973438,-2.609766]]],[[[138.895117,-8.388672],[138.845508,-8.401758],[138.594238,-8.371484],[138.567188,-8.330273],[138.563379,-8.309082],[138.620996,-8.268457],[138.67666,-8.199219],[138.762695,-8.173438],[138.796191,-8.173633],[138.897656,-8.3375],[138.895117,-8.388672]]],[[[101.708105,2.078418],[101.762305,1.996533],[101.773535,1.943457],[101.734082,1.882568],[101.719434,1.78916],[101.602734,1.715723],[101.500781,1.733203],[101.467773,1.759375],[101.403418,1.901318],[101.409668,2.02168],[101.450293,2.067822],[101.544727,2.060742],[101.640723,2.126709],[101.708105,2.078418]]],[[[102.427148,0.990137],[102.380859,0.959766],[102.325293,1.007031],[102.27959,1.075684],[102.255469,1.147168],[102.23418,1.263965],[102.228613,1.347852],[102.256348,1.39707],[102.276465,1.395264],[102.358594,1.345654],[102.412891,1.260791],[102.442871,1.234229],[102.448828,1.15625],[102.428906,1.067285],[102.427148,0.990137]]],[[[102.491895,1.45918],[102.499414,1.330908],[102.425195,1.364453],[102.366895,1.415479],[102.274219,1.453125],[102.161328,1.46543],[102.078711,1.498584],[102.020898,1.558203],[102.018359,1.585645],[102.024023,1.607959],[102.042188,1.625391],[102.469531,1.510059],[102.491895,1.45918]]],[[[103.027539,0.746631],[103.008789,0.708105],[102.971484,0.736523],[102.77627,0.77959],[102.710547,0.784375],[102.541602,0.831592],[102.49043,0.856641],[102.453906,0.889502],[102.466406,0.950342],[102.491406,0.986865],[102.506641,1.08877],[102.549219,1.130225],[102.633203,1.054395],[102.726172,0.989209],[102.780078,0.959375],[102.944141,0.892725],[103.002441,0.859277],[103.027539,0.746631]]],[[[103.166406,0.870166],[103.137207,0.84165],[103.086719,0.848145],[103.033398,0.882031],[102.963965,0.942676],[102.886328,0.996777],[102.787988,1.030957],[102.726465,1.04126],[102.701855,1.053711],[102.725586,1.158838],[102.790137,1.165479],[102.999414,1.067773],[103.067578,1.014746],[103.166406,0.870166]]],[[[103.284473,0.541943],[103.172168,0.536182],[103.139551,0.549072],[103.15332,0.643115],[103.187402,0.699756],[103.238184,0.698633],[103.295117,0.613965],[103.284473,0.541943]]],[[[103.450195,0.664453],[103.429688,0.650879],[103.344434,0.777881],[103.365723,0.851123],[103.386133,0.86958],[103.433105,0.825],[103.470313,0.778125],[103.497461,0.722705],[103.450195,0.664453]]],[[[104.024805,1.180566],[104.088086,1.137012],[104.139844,1.165576],[104.137793,1.128223],[104.127344,1.092383],[104.066113,0.989551],[103.963574,1.013232],[103.939844,1.046484],[103.932227,1.071387],[103.946973,1.087012],[103.955371,1.137451],[103.999805,1.137256],[104.024805,1.180566]]],[[[104.585352,1.216113],[104.591016,1.141064],[104.648145,1.10459],[104.662891,1.049512],[104.652832,0.961035],[104.599121,0.858984],[104.575195,0.831934],[104.504297,0.852637],[104.480664,0.886768],[104.471191,0.913477],[104.481055,0.93252],[104.428613,0.956494],[104.462402,0.995557],[104.439258,1.050439],[104.293945,1.016113],[104.251953,1.014893],[104.244238,1.077393],[104.250195,1.102637],[104.361816,1.181494],[104.428418,1.196045],[104.500098,1.180225],[104.585352,1.216113]]],[[[104.778613,-0.175977],[104.80752,-0.19248],[104.843164,-0.140625],[104.908984,-0.211719],[104.949707,-0.247266],[105.005371,-0.282813],[104.950586,-0.284473],[104.928516,-0.316992],[104.914258,-0.32334],[104.702246,-0.208691],[104.566602,-0.245605],[104.473535,-0.212109],[104.44707,-0.18916],[104.49707,-0.126367],[104.542676,0.017725],[104.635645,-0.018457],[104.658398,-0.062842],[104.652734,-0.076025],[104.713477,-0.103027],[104.778613,-0.175977]]],[[[104.474219,-0.334668],[104.567773,-0.431836],[104.590137,-0.466602],[104.543945,-0.520508],[104.506543,-0.59668],[104.485352,-0.612891],[104.413867,-0.583691],[104.363184,-0.658594],[104.329785,-0.539062],[104.257129,-0.463281],[104.302344,-0.385742],[104.31875,-0.380176],[104.340723,-0.382617],[104.363574,-0.402832],[104.474219,-0.334668]]],[[[103.736523,-0.347949],[103.606348,-0.38291],[103.461328,-0.357617],[103.479004,-0.297461],[103.548926,-0.227539],[103.610938,-0.230566],[103.723926,-0.27666],[103.764258,-0.317773],[103.736523,-0.347949]]],[[[109.710254,-1.180664],[109.51084,-1.282813],[109.463672,-1.277539],[109.428125,-1.241211],[109.450293,-1.044141],[109.475977,-0.985352],[109.614648,-0.979102],[109.699512,-1.007324],[109.743359,-1.039355],[109.760547,-1.105176],[109.750781,-1.14502],[109.710254,-1.180664]]],[[[113.844531,-7.105371],[113.825586,-7.119922],[113.655859,-7.111719],[113.546387,-7.193359],[113.470703,-7.218457],[113.198438,-7.218359],[113.166016,-7.207324],[113.141895,-7.207617],[113.126953,-7.224121],[113.04043,-7.211816],[112.76377,-7.139648],[112.725879,-7.072754],[112.76875,-7.00127],[112.868066,-6.899902],[113.067383,-6.87998],[113.974707,-6.873047],[114.073633,-6.960156],[114.083008,-6.989355],[113.885352,-7.049023],[113.844531,-7.105371]]],[[[134.965332,-1.116016],[134.917383,-1.134277],[134.861719,-1.11416],[134.808887,-1.037598],[134.82793,-0.978809],[134.889258,-0.938477],[134.94082,-0.978906],[134.956738,-1.030566],[134.996289,-1.034082],[134.965332,-1.116016]]],[[[127.249902,-0.495313],[127.187305,-0.521191],[127.119141,-0.520508],[127.104395,-0.413867],[127.126465,-0.278613],[127.189648,-0.255762],[127.290039,-0.284375],[127.253027,-0.318652],[127.280566,-0.391016],[127.249902,-0.495313]]],[[[127.566992,-0.318945],[127.682422,-0.468359],[127.60498,-0.610156],[127.658594,-0.689453],[127.804297,-0.694434],[127.837891,-0.724121],[127.863281,-0.759863],[127.880176,-0.808691],[127.842285,-0.847754],[127.761133,-0.883691],[127.667578,-0.832031],[127.642871,-0.783984],[127.623828,-0.766016],[127.497852,-0.802441],[127.462695,-0.805957],[127.438281,-0.739063],[127.468652,-0.642969],[127.380566,-0.599609],[127.3,-0.500293],[127.29707,-0.460254],[127.329492,-0.390918],[127.325098,-0.33584],[127.371191,-0.331641],[127.455176,-0.406348],[127.491699,-0.335938],[127.527344,-0.306641],[127.566992,-0.318945]]],[[[132.92627,-5.902051],[132.84502,-5.987988],[132.92168,-5.785254],[132.937695,-5.682617],[133.008789,-5.621387],[133.114648,-5.310645],[133.138477,-5.317871],[133.172852,-5.348145],[133.119629,-5.575977],[132.971094,-5.73584],[132.92627,-5.902051]]],[[[132.807129,-5.850781],[132.746289,-5.94707],[132.704883,-5.913086],[132.681445,-5.912598],[132.667285,-5.856055],[132.681348,-5.738867],[132.630176,-5.607031],[132.697852,-5.608984],[132.716504,-5.64834],[132.737793,-5.661719],[132.804297,-5.788867],[132.807129,-5.850781]]],[[[128.275586,-3.674609],[128.249902,-3.711133],[128.191797,-3.735254],[128.143164,-3.732715],[128.158984,-3.697656],[128.146875,-3.677148],[128.11084,-3.686426],[128.052246,-3.714551],[127.978027,-3.770996],[127.934375,-3.743066],[127.925,-3.699316],[127.927539,-3.679395],[128.016211,-3.600879],[128.119141,-3.5875],[128.264355,-3.512305],[128.329102,-3.515918],[128.313672,-3.563672],[128.291016,-3.597656],[128.277441,-3.633203],[128.275586,-3.674609]]],[[[126.816602,4.033496],[126.77627,4.012598],[126.71123,4.020264],[126.704492,4.070996],[126.770117,4.162207],[126.813574,4.258496],[126.767285,4.282568],[126.72207,4.344189],[126.720508,4.41582],[126.757324,4.5479],[126.8125,4.537207],[126.865137,4.479834],[126.886719,4.37251],[126.921094,4.291016],[126.847656,4.17998],[126.816602,4.033496]]],[[[125.658105,3.436035],[125.633203,3.40542],[125.511523,3.461133],[125.517578,3.549609],[125.501172,3.593213],[125.468555,3.639111],[125.455273,3.68418],[125.468848,3.733252],[125.543457,3.67041],[125.585645,3.571094],[125.643555,3.476514],[125.658105,3.436035]]],[[[130.862207,-8.31875],[130.775195,-8.349902],[130.833398,-8.270801],[131.020117,-8.091309],[131.087402,-8.124512],[131.176367,-8.130762],[131.04375,-8.212012],[130.908105,-8.245703],[130.862207,-8.31875]]],[[[129.838867,-7.95459],[129.779785,-8.046484],[129.713477,-8.040723],[129.591895,-7.917383],[129.59873,-7.831348],[129.608984,-7.803418],[129.655469,-7.794824],[129.812988,-7.819727],[129.843555,-7.889355],[129.838867,-7.95459]]],[[[127.823438,-8.098828],[127.998438,-8.139063],[128.098828,-8.134863],[128.119238,-8.170703],[128.023535,-8.255371],[127.820898,-8.190234],[127.78623,-8.120313],[127.823438,-8.098828]]],[[[130.35332,-1.690527],[130.36543,-1.749805],[130.425,-1.80459],[130.404297,-1.889844],[130.380566,-1.902637],[130.393359,-1.941602],[130.418848,-1.971289],[130.372656,-1.991895],[130.338965,-1.981836],[130.28418,-2.009375],[130.248047,-2.047754],[130.133496,-2.063867],[130.093359,-2.02832],[129.886523,-1.986426],[129.754395,-1.894434],[129.737695,-1.866895],[129.993652,-1.758887],[130.105762,-1.730469],[130.199609,-1.732227],[130.317969,-1.691992],[130.35332,-1.690527]]],[[[102.367188,-5.478711],[102.285937,-5.483496],[102.135547,-5.360547],[102.110742,-5.322559],[102.153516,-5.28623],[102.198438,-5.288867],[102.371777,-5.366406],[102.405469,-5.404785],[102.367188,-5.478711]]],[[[100.425098,-3.18291],[100.465137,-3.328516],[100.346094,-3.229199],[100.348437,-3.158789],[100.332031,-3.113086],[100.259961,-3.056934],[100.204297,-2.986816],[100.179297,-2.820215],[100.198535,-2.785547],[100.245605,-2.783203],[100.45459,-3.001953],[100.468848,-3.038965],[100.464258,-3.116895],[100.433887,-3.141309],[100.425098,-3.18291]]],[[[100.204102,-2.741016],[100.132715,-2.821387],[100.014941,-2.819727],[99.991895,-2.769824],[99.996875,-2.649316],[99.968164,-2.609766],[99.969336,-2.594141],[99.987891,-2.525391],[100.011914,-2.510254],[100.201953,-2.679688],[100.204102,-2.741016]]],[[[99.843066,-2.343066],[99.847852,-2.369727],[99.685156,-2.281738],[99.607031,-2.25752],[99.537402,-2.161523],[99.558887,-2.11543],[99.561816,-2.051172],[99.572168,-2.025781],[99.62207,-2.016602],[99.686426,-2.063379],[99.734766,-2.177734],[99.815723,-2.284375],[99.843066,-2.343066]]],[[[98.459277,-0.530469],[98.399707,-0.576855],[98.309668,-0.531836],[98.339941,-0.467871],[98.354785,-0.379297],[98.408789,-0.308984],[98.427148,-0.226465],[98.322949,-0.000781],[98.374512,0.00708],[98.41543,-0.017529],[98.484375,-0.167676],[98.544141,-0.257617],[98.520117,-0.379688],[98.459277,-0.530469]]],[[[96.463672,2.36001],[96.400977,2.350684],[96.340625,2.37207],[96.29043,2.42959],[96.021973,2.595752],[95.938477,2.598437],[95.879785,2.640918],[95.808594,2.655615],[95.733008,2.766504],[95.717188,2.825977],[95.772168,2.85498],[95.80625,2.916016],[95.895801,2.889062],[95.997852,2.781396],[96.101562,2.741211],[96.129785,2.720898],[96.17998,2.661328],[96.417285,2.515186],[96.443066,2.465625],[96.459375,2.41582],[96.463672,2.36001]]],[[[122.042969,-5.437988],[121.97959,-5.464746],[121.859375,-5.350293],[121.808496,-5.256152],[121.820703,-5.20293],[121.856641,-5.15625],[121.87373,-5.144629],[121.866309,-5.095996],[121.913672,-5.072266],[121.965723,-5.075586],[121.999902,-5.14082],[122.041016,-5.158789],[122.061816,-5.221289],[122.042969,-5.437988]]],[[[123.212305,-1.171289],[123.234277,-1.233691],[123.198047,-1.287695],[123.237793,-1.389355],[123.338574,-1.254004],[123.434766,-1.236816],[123.489355,-1.259277],[123.526855,-1.286035],[123.547266,-1.337402],[123.511914,-1.447363],[123.44873,-1.498828],[123.366992,-1.507129],[123.328613,-1.443066],[123.274902,-1.437207],[123.237402,-1.576953],[123.220508,-1.59834],[123.172949,-1.616016],[123.130371,-1.577441],[123.122949,-1.556055],[123.18291,-1.492773],[123.150391,-1.304492],[123.105176,-1.339844],[122.984375,-1.510645],[122.89043,-1.587207],[122.858496,-1.548242],[122.81084,-1.432129],[122.832227,-1.283008],[122.908008,-1.182227],[122.972461,-1.18916],[123.158301,-1.15752],[123.212305,-1.171289]]],[[[121.864355,-0.406836],[121.906836,-0.45127],[121.88125,-0.502637],[121.846875,-0.489844],[121.756055,-0.49082],[121.721777,-0.494727],[121.680957,-0.525],[121.655273,-0.526172],[121.672363,-0.478809],[121.749316,-0.407031],[121.797363,-0.417676],[121.864355,-0.406836]]],[[[120.52832,-6.298438],[120.487305,-6.464844],[120.467969,-6.406152],[120.460742,-6.254004],[120.435547,-6.180176],[120.451563,-6.094922],[120.446484,-5.87627],[120.477344,-5.775293],[120.53418,-5.903809],[120.549219,-5.969238],[120.52832,-6.298438]]],[[[115.377051,-6.970801],[115.295801,-6.987793],[115.220313,-6.952539],[115.222168,-6.905176],[115.240527,-6.86123],[115.353711,-6.838477],[115.414453,-6.839746],[115.479199,-6.870215],[115.524219,-6.901855],[115.546094,-6.938672],[115.424121,-6.940625],[115.377051,-6.970801]]],[[[116.30332,-3.868164],[116.093359,-4.054102],[116.058789,-4.006934],[116.076953,-3.81748],[116.018359,-3.699902],[116.022461,-3.612402],[116.063574,-3.45791],[116.117383,-3.339551],[116.239355,-3.260352],[116.269727,-3.251074],[116.262109,-3.394824],[116.286523,-3.448828],[116.295117,-3.49502],[116.282031,-3.534766],[116.305176,-3.718555],[116.318652,-3.762988],[116.289258,-3.820898],[116.30332,-3.868164]]],[[[122.948926,-10.909277],[122.855859,-10.909668],[122.826172,-10.899121],[122.818457,-10.811035],[122.845703,-10.761816],[123.061426,-10.698438],[123.145801,-10.639941],[123.26543,-10.518164],[123.339648,-10.48623],[123.358496,-10.472461],[123.371094,-10.474902],[123.383105,-10.567578],[123.412891,-10.622656],[123.418164,-10.65127],[123.310742,-10.698438],[123.214844,-10.806152],[123.005273,-10.876367],[122.948926,-10.909277]]],[[[124.286621,-8.329492],[124.225781,-8.391309],[124.184375,-8.49873],[124.14668,-8.531445],[124.065723,-8.55166],[124.017285,-8.443848],[123.927734,-8.448926],[123.971484,-8.354102],[124.01377,-8.318652],[124.06875,-8.317773],[124.095801,-8.356152],[124.110547,-8.364258],[124.239551,-8.203418],[124.265625,-8.201758],[124.287109,-8.208691],[124.304492,-8.228809],[124.286621,-8.329492]]],[[[123.924805,-8.272461],[123.783887,-8.299609],[123.697852,-8.424414],[123.629199,-8.422461],[123.591602,-8.47793],[123.582617,-8.50166],[123.587891,-8.523828],[123.580176,-8.544922],[123.553027,-8.566797],[123.488672,-8.532324],[123.433789,-8.576074],[123.410742,-8.586621],[123.32998,-8.535645],[123.25332,-8.538574],[123.230078,-8.530664],[123.325,-8.439063],[123.45459,-8.353711],[123.475879,-8.322266],[123.425195,-8.313379],[123.394922,-8.300586],[123.391211,-8.280469],[123.473242,-8.26709],[123.52998,-8.265234],[123.573145,-8.291504],[123.600586,-8.291309],[123.775977,-8.19043],[123.845508,-8.213379],[123.896094,-8.239258],[123.924805,-8.272461]]],[[[123.31748,-8.354785],[123.297266,-8.398633],[123.025,-8.395508],[123.032617,-8.337793],[123.108301,-8.274805],[123.133496,-8.253809],[123.21709,-8.235449],[123.336035,-8.269043],[123.31748,-8.354785]]],[[[134.716113,-6.549414],[134.66084,-6.558887],[134.633691,-6.477246],[134.679102,-6.456055],[134.728516,-6.505859],[134.716113,-6.549414]]],[[[103.423926,1.04834],[103.429688,0.993359],[103.363281,1.006836],[103.31543,1.071289],[103.35498,1.117236],[103.37998,1.133643],[103.404883,1.072559],[103.423926,1.04834]]],[[[103.828613,0.801025],[103.833984,0.772217],[103.742383,0.82998],[103.740039,0.871826],[103.751953,0.891357],[103.806641,0.846338],[103.828613,0.801025]]],[[[104.239355,0.833984],[104.176758,0.804883],[104.098145,0.89624],[104.101074,0.91748],[104.108301,0.933545],[104.122754,0.943994],[104.170508,0.896729],[104.227051,0.879883],[104.239355,0.833984]]],[[[104.689258,0.059521],[104.698145,0.034668],[104.650879,0.062695],[104.622363,0.079639],[104.603516,0.095215],[104.499219,0.23208],[104.543848,0.223291],[104.659863,0.103076],[104.689258,0.059521]]],[[[106.285254,3.157129],[106.283691,3.088232],[106.214551,3.128564],[106.200977,3.204883],[106.22373,3.22959],[106.271191,3.216309],[106.285254,3.157129]]],[[[105.760352,2.863037],[105.718555,2.85918],[105.706152,2.888867],[105.70791,2.940088],[105.704199,2.980908],[105.692187,3.011328],[105.692187,3.0625],[105.730664,3.036963],[105.760352,3.013037],[105.794531,2.995947],[105.822168,2.984375],[105.836719,2.976514],[105.809375,2.903955],[105.760352,2.863037]]],[[[108.8875,2.90542],[108.838867,2.853027],[108.786523,2.885645],[108.86709,2.991895],[108.885742,2.998975],[108.8875,2.90542]]],[[[108.953125,-1.619629],[108.837891,-1.661621],[108.803711,-1.567773],[108.877246,-1.539844],[108.956836,-1.564063],[108.953125,-1.619629]]],[[[107.47334,-2.899512],[107.432813,-2.925293],[107.409277,-2.900586],[107.402441,-2.872949],[107.419336,-2.838086],[107.474414,-2.834668],[107.499707,-2.84502],[107.47334,-2.899512]]],[[[106.886426,-3.005273],[106.869727,-3.025293],[106.814258,-3.014453],[106.774316,-2.986816],[106.749219,-2.960449],[106.742871,-2.932813],[106.796875,-2.898926],[106.910645,-2.933984],[106.886426,-3.005273]]],[[[114.412598,-7.133496],[114.397656,-7.173145],[114.346875,-7.163281],[114.298828,-7.097559],[114.322168,-7.080371],[114.348926,-7.073438],[114.383594,-7.080664],[114.412598,-7.133496]]],[[[112.719434,-5.811035],[112.697949,-5.846484],[112.602148,-5.843652],[112.586035,-5.803613],[112.648535,-5.730859],[112.690039,-5.726172],[112.727344,-5.752734],[112.719434,-5.811035]]],[[[105.252832,-6.64043],[105.19043,-6.6625],[105.142773,-6.643066],[105.121387,-6.614941],[105.192285,-6.545605],[105.225684,-6.529102],[105.260547,-6.523926],[105.277441,-6.561426],[105.252832,-6.64043]]],[[[97.33418,2.075635],[97.32832,2.053271],[97.225098,2.158496],[97.108301,2.216895],[97.156641,2.232227],[97.252832,2.216016],[97.291406,2.20083],[97.328711,2.148535],[97.33418,2.075635]]],[[[95.362109,5.812402],[95.342578,5.784131],[95.283203,5.798535],[95.217676,5.889502],[95.241992,5.907031],[95.28252,5.897754],[95.35918,5.876758],[95.366016,5.842676],[95.362109,5.812402]]],[[[123.597559,-1.704297],[123.528613,-1.71084],[123.48252,-1.681445],[123.486621,-1.534863],[123.528516,-1.502832],[123.548535,-1.508203],[123.561328,-1.551855],[123.582031,-1.590918],[123.616406,-1.627441],[123.597559,-1.704297]]],[[[123.242383,-4.112988],[123.144531,-4.233301],[123.076172,-4.227148],[122.994727,-4.148047],[122.970898,-4.061328],[122.969043,-4.02998],[123.024902,-3.980957],[123.211914,-3.997559],[123.246973,-4.040918],[123.242383,-4.112988]]],[[[123.848242,-1.955469],[123.866016,-1.995703],[123.803516,-1.994336],[123.777246,-1.918652],[123.783496,-1.87832],[123.848242,-1.955469]]],[[[123.152539,-1.816504],[123.078809,-1.898926],[123.070898,-1.854883],[123.08584,-1.814844],[123.106445,-1.786719],[123.1375,-1.772656],[123.152539,-1.816504]]],[[[119.464063,-8.741016],[119.424902,-8.750488],[119.385547,-8.736035],[119.40166,-8.64707],[119.378906,-8.586523],[119.419922,-8.539062],[119.430176,-8.45498],[119.446484,-8.429199],[119.470508,-8.455664],[119.481738,-8.472949],[119.502148,-8.481055],[119.546973,-8.482617],[119.557227,-8.518848],[119.555469,-8.553418],[119.536328,-8.589355],[119.482813,-8.628223],[119.444043,-8.671777],[119.464063,-8.741016]]],[[[119.073828,-8.238867],[119.02998,-8.240039],[119.020898,-8.199902],[119.036621,-8.157813],[119.078711,-8.140234],[119.097754,-8.13916],[119.12832,-8.177148],[119.134863,-8.19707],[119.106738,-8.223438],[119.073828,-8.238867]]],[[[115.609961,-8.769824],[115.581934,-8.804199],[115.500879,-8.742871],[115.480469,-8.71543],[115.540625,-8.675391],[115.561426,-8.669922],[115.613281,-8.713184],[115.609961,-8.769824]]],[[[117.649023,4.168994],[117.74541,4.166943],[117.884766,4.186133],[117.917871,4.090527],[117.922852,4.054297],[117.736816,4.004004],[117.625098,4.121484],[117.649023,4.168994]]],[[[117.658398,3.280518],[117.645801,3.247754],[117.560352,3.328223],[117.5375,3.386377],[117.547852,3.431982],[117.636719,3.436084],[117.680859,3.40752],[117.658398,3.280518]]],[[[124.05127,-5.97373],[124.04209,-6.021582],[124.005664,-5.966699],[123.972266,-5.939355],[123.975781,-5.880176],[124.022949,-5.902148],[124.05127,-5.97373]]],[[[123.626758,-5.271582],[123.622754,-5.373047],[123.582617,-5.367383],[123.550098,-5.331836],[123.540918,-5.29834],[123.542773,-5.271094],[123.560645,-5.249805],[123.626758,-5.271582]]],[[[120.774414,-7.118945],[120.672363,-7.124707],[120.64082,-7.11582],[120.633398,-7.018262],[120.745508,-7.060156],[120.781738,-7.063086],[120.774414,-7.118945]]],[[[117.556348,-8.367285],[117.533594,-8.367969],[117.49043,-8.34873],[117.505957,-8.307031],[117.482129,-8.239258],[117.490527,-8.183398],[117.546094,-8.151953],[117.665039,-8.148242],[117.669238,-8.189258],[117.556348,-8.367285]]],[[[116.424121,-3.464453],[116.387793,-3.636719],[116.326563,-3.539062],[116.395312,-3.42334],[116.426953,-3.399902],[116.424121,-3.464453]]],[[[127.372656,0.791309],[127.338379,0.758447],[127.306055,0.769434],[127.286426,0.811914],[127.292773,0.84248],[127.319824,0.862012],[127.353809,0.847461],[127.372656,0.791309]]],[[[134.374219,-2.123535],[134.345215,-2.13877],[134.335059,-2.095215],[134.350781,-2.036914],[134.369531,-2.027637],[134.391016,-2.030762],[134.419043,-2.051758],[134.374219,-2.123535]]],[[[133.570801,-4.245898],[133.621875,-4.299316],[133.50293,-4.257422],[133.333008,-4.169629],[133.320898,-4.111035],[133.464355,-4.199805],[133.570801,-4.245898]]],[[[130.905273,-0.777441],[130.879785,-0.828418],[130.832422,-0.862891],[130.402441,-0.923926],[130.439063,-0.887402],[130.457324,-0.851172],[130.484277,-0.83252],[130.526953,-0.837305],[130.548145,-0.82627],[130.569531,-0.821875],[130.59375,-0.82666],[130.635449,-0.811621],[130.723242,-0.822461],[130.813477,-0.813867],[130.807031,-0.765039],[130.905273,-0.777441]]],[[[130.62666,-0.528711],[130.569141,-0.52998],[130.46543,-0.486523],[130.525879,-0.44873],[130.56416,-0.440918],[130.597461,-0.418262],[130.615918,-0.417285],[130.656934,-0.436523],[130.684277,-0.469141],[130.62666,-0.528711]]],[[[129.548926,-0.187012],[129.505664,-0.189844],[129.469238,-0.131445],[129.370117,-0.066406],[129.308789,0.04541],[129.541992,-0.139258],[129.548926,-0.187012]]],[[[127.453418,-0.005859],[127.448633,-0.036621],[127.417871,0.006348],[127.396777,0.016602],[127.419531,0.124414],[127.431348,0.142578],[127.449414,0.068994],[127.453418,-0.005859]]],[[[127.419727,0.64209],[127.383984,0.631006],[127.373633,0.634863],[127.362891,0.675146],[127.382617,0.743555],[127.424805,0.744385],[127.442578,0.733447],[127.445898,0.683301],[127.419727,0.64209]]],[[[127.300391,-0.780957],[127.289062,-0.801563],[127.18457,-0.775293],[127.156445,-0.760938],[127.209082,-0.619336],[127.258203,-0.623438],[127.30127,-0.758398],[127.300391,-0.780957]]],[[[128.722461,-3.546875],[128.720117,-3.58916],[128.713281,-3.602539],[128.658789,-3.587793],[128.619531,-3.588574],[128.585156,-3.512207],[128.594922,-3.494824],[128.666504,-3.516699],[128.693555,-3.524512],[128.722461,-3.546875]]],[[[128.562598,-3.585449],[128.391602,-3.637891],[128.42832,-3.54043],[128.451563,-3.514746],[128.536328,-3.541309],[128.562598,-3.585449]]],[[[126.719336,3.874658],[126.721777,3.83252],[126.66123,3.928418],[126.6375,4.041943],[126.685547,4.001416],[126.739648,3.917725],[126.719336,3.874658]]],[[[126.851855,3.768457],[126.835547,3.756934],[126.799609,3.783887],[126.777539,3.813428],[126.778906,3.843164],[126.804492,3.85791],[126.857031,3.812402],[126.857813,3.787207],[126.851855,3.768457]]],[[[125.407422,2.651611],[125.397266,2.629541],[125.360059,2.746826],[125.39082,2.805371],[125.435254,2.783887],[125.446484,2.762988],[125.403906,2.707031],[125.407422,2.651611]]],[[[131.982031,-7.202051],[131.969531,-7.251367],[131.926855,-7.225],[131.884473,-7.16748],[131.822852,-7.15918],[131.777539,-7.143945],[131.750781,-7.116797],[131.922266,-7.104492],[131.982031,-7.202051]]],[[[128.670117,-7.183301],[128.625,-7.208594],[128.550195,-7.156348],[128.529785,-7.13457],[128.577344,-7.083203],[128.627734,-7.06875],[128.658301,-7.091113],[128.673242,-7.113379],[128.666895,-7.137988],[128.670117,-7.183301]]],[[[127.419434,-7.623047],[127.355273,-7.646484],[127.375,-7.572461],[127.370703,-7.512793],[127.475195,-7.531055],[127.474023,-7.578516],[127.463965,-7.596875],[127.419434,-7.623047]]],[[[123.416211,-10.302637],[123.325977,-10.3375],[123.325586,-10.26416],[123.395312,-10.171387],[123.458789,-10.139941],[123.493945,-10.176953],[123.496777,-10.193945],[123.405078,-10.227148],[123.416211,-10.302637]]],[[[121.883008,-10.590332],[121.833105,-10.602148],[121.726172,-10.573145],[121.704688,-10.555664],[121.796289,-10.507422],[121.866992,-10.438867],[121.949512,-10.433008],[121.99834,-10.446973],[121.981348,-10.528418],[121.883008,-10.590332]]],[[[134.819531,-6.43418],[134.795117,-6.442383],[134.795313,-6.393066],[134.822949,-6.349609],[134.851855,-6.324609],[134.88584,-6.323535],[134.819531,-6.43418]]],[[[134.674414,-6.749805],[134.657422,-6.765332],[134.631445,-6.73291],[134.629102,-6.712793],[134.663477,-6.657715],[134.697656,-6.625684],[134.735742,-6.62334],[134.726074,-6.668652],[134.674414,-6.749805]]],[[[127.987891,-2.936523],[127.937695,-3.02002],[127.849609,-3.016309],[127.834277,-3.004395],[127.938379,-2.952344],[127.987891,-2.936523]]],[[[127.60625,-3.315137],[127.629297,-3.35918],[127.531055,-3.331348],[127.487695,-3.288184],[127.530469,-3.261523],[127.554492,-3.254297],[127.60625,-3.315137]]],[[[122.977344,-8.545215],[122.945508,-8.604004],[122.887793,-8.587305],[122.903516,-8.530664],[122.932813,-8.49707],[123.010547,-8.44834],[123.089453,-8.439844],[123.137891,-8.456934],[123.153125,-8.475781],[123.030078,-8.494824],[122.977344,-8.545215]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"India","SOV_A3":"IND","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"India","ADM0_A3":"IND","GEOU_DIF":0,"GEOUNIT":"India","GU_A3":"IND","SU_DIF":0,"SUBUNIT":"India","SU_A3":"IND","BRK_DIFF":0,"NAME":"India","NAME_LONG":"India","BRK_A3":"IND","BRK_NAME":"India","BRK_GROUP":null,"ABBREV":"India","POSTAL":"IND","FORMAL_EN":"Republic of India","FORMAL_FR":null,"NAME_CIAWF":"India","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"India","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":3,"MAPCOLOR9":2,"MAPCOLOR13":2,"POP_EST":1366417754,"POP_RANK":18,"POP_YEAR":2019,"GDP_MD":2868929,"GDP_YEAR":2019,"ECONOMY":"3. Emerging region: BRIC","INCOME_GRP":"4. Lower middle income","FIPS_10":"IN","ISO_A2":"IN","ISO_A2_EH":"IN","ISO_A3":"IND","ISO_A3_EH":"IND","ISO_N3":"356","ISO_N3_EH":"356","UN_A3":"356","WB_A2":"IN","WB_A3":"IND","WOE_ID":23424848,"WOE_ID_EH":23424848,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"IND","ADM0_DIFF":null,"ADM0_TLC":"IND","ADM0_A3_US":"IND","ADM0_A3_FR":"IND","ADM0_A3_RU":"IND","ADM0_A3_ES":"IND","ADM0_A3_CN":"IND","ADM0_A3_TW":"IND","ADM0_A3_IN":"IND","ADM0_A3_NP":"IND","ADM0_A3_PK":"IND","ADM0_A3_DE":"IND","ADM0_A3_GB":"IND","ADM0_A3_BR":"IND","ADM0_A3_IL":"IND","ADM0_A3_PS":"IND","ADM0_A3_SA":"IND","ADM0_A3_EG":"IND","ADM0_A3_MA":"IND","ADM0_A3_PT":"IND","ADM0_A3_AR":"IND","ADM0_A3_JP":"IND","ADM0_A3_KO":"IND","ADM0_A3_VN":"IND","ADM0_A3_TR":"IND","ADM0_A3_ID":"IND","ADM0_A3_PL":"IND","ADM0_A3_GR":"IND","ADM0_A3_IT":"IND","ADM0_A3_NL":"IND","ADM0_A3_SE":"IND","ADM0_A3_BD":"IND","ADM0_A3_UA":"IND","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":79.358105,"LABEL_Y":22.686852,"NE_ID":1159320847,"WIKIDATAID":"Q668","NAME_AR":"الهند","NAME_BN":"ভারত","NAME_DE":"Indien","NAME_EN":"India","NAME_ES":"India","NAME_FA":"هند","NAME_FR":"Inde","NAME_EL":"Ινδία","NAME_HE":"הודו","NAME_HI":"भारत","NAME_HU":"India","NAME_ID":"India","NAME_IT":"India","NAME_JA":"インド","NAME_KO":"인도","NAME_NL":"India","NAME_PL":"Indie","NAME_PT":"Índia","NAME_RU":"Индия","NAME_SV":"Indien","NAME_TR":"Hindistan","NAME_UK":"Індія","NAME_UR":"بھارت","NAME_VI":"Ấn Độ","NAME_ZH":"印度","NAME_ZHT":"印度","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[68.165039,6.748682,97.343555,35.495898],"geometry":{"type":"MultiPolygon","coordinates":[[[[68.165039,23.857324],[68.23418,23.900537],[68.28252,23.927979],[68.38125,23.950879],[68.488672,23.967236],[68.586621,23.966602],[68.724121,23.964697],[68.728125,24.265625],[68.739648,24.291992],[68.758984,24.307227],[68.781152,24.313721],[68.8,24.309082],[68.82832,24.264014],[68.863477,24.266504],[68.900781,24.292432],[68.98457,24.273096],[69.051563,24.286328],[69.119531,24.268652],[69.235059,24.268262],[69.443457,24.275391],[69.55918,24.273096],[69.63418,24.225195],[69.716211,24.172607],[69.805176,24.165234],[69.933789,24.171387],[70.021094,24.191553],[70.065137,24.240576],[70.098242,24.2875],[70.289062,24.356299],[70.489258,24.412158],[70.546777,24.418311],[70.565039,24.385791],[70.555859,24.331104],[70.579297,24.279053],[70.659473,24.246094],[70.716309,24.237988],[70.767285,24.24541],[70.805078,24.261963],[70.88623,24.34375],[70.928125,24.362354],[70.982813,24.361035],[71.044043,24.400098],[71.045313,24.42998],[71.00625,24.444336],[70.973242,24.487402],[70.979297,24.522461],[70.969824,24.571875],[70.976367,24.61875],[71.002344,24.653906],[71.047852,24.687744],[71.020703,24.757666],[70.950879,24.891602],[70.877734,25.062988],[70.800488,25.205859],[70.702539,25.331055],[70.652051,25.4229],[70.657227,25.625781],[70.648438,25.666943],[70.614844,25.691895],[70.569531,25.705957],[70.505859,25.685303],[70.448535,25.681348],[70.325195,25.685742],[70.264648,25.706543],[70.100195,25.910059],[70.078613,25.990039],[70.077734,26.071973],[70.132617,26.214795],[70.149219,26.347559],[70.156836,26.471436],[70.147656,26.506445],[70.114648,26.548047],[70.059375,26.57876],[69.911426,26.586133],[69.735938,26.627051],[69.600586,26.699121],[69.506934,26.742676],[69.48125,26.770996],[69.47002,26.804443],[69.494531,26.95415],[69.537012,27.122949],[69.567969,27.174609],[69.621582,27.228076],[69.661328,27.264502],[69.724805,27.312695],[69.896289,27.473633],[70.049805,27.694727],[70.144531,27.849023],[70.193945,27.894873],[70.244336,27.934131],[70.318457,27.981641],[70.403711,28.025049],[70.488574,28.023145],[70.569238,27.983789],[70.629102,27.937451],[70.649121,27.835352],[70.691602,27.768994],[70.737402,27.729004],[70.797949,27.709619],[70.874902,27.714453],[71.184766,27.831641],[71.290137,27.855273],[71.542969,27.869873],[71.716699,27.915088],[71.870313,27.9625],[71.888867,28.047461],[71.948047,28.177295],[72.128516,28.346338],[72.179199,28.421777],[72.233887,28.56582],[72.291992,28.697266],[72.341895,28.751904],[72.625586,28.896143],[72.90332,29.02876],[72.94873,29.088818],[73.12832,29.363916],[73.231152,29.550635],[73.257812,29.610693],[73.317285,29.772998],[73.381641,29.934375],[73.46748,29.97168],[73.658008,30.033203],[73.80918,30.093359],[73.886523,30.162012],[73.933398,30.22207],[73.924609,30.281641],[73.882715,30.352148],[73.891602,30.394043],[73.899316,30.435352],[74.008984,30.519678],[74.215625,30.768994],[74.339355,30.893555],[74.380371,30.893408],[74.509766,30.959668],[74.632812,31.034668],[74.625781,31.06875],[74.610352,31.112842],[74.539746,31.132666],[74.517676,31.185596],[74.534961,31.261377],[74.593945,31.465381],[74.581836,31.523926],[74.509961,31.712939],[74.525977,31.765137],[74.555566,31.818555],[74.635742,31.889746],[74.739453,31.948828],[75.071484,32.089355],[75.13877,32.104785],[75.254102,32.140332],[75.324707,32.215283],[75.333496,32.279199],[75.302637,32.318896],[75.233691,32.372119],[75.104102,32.420361],[74.987305,32.462207],[74.788867,32.457812],[74.685742,32.493799],[74.657813,32.518945],[74.643359,32.607715],[74.663281,32.757666],[74.632422,32.770898],[74.588281,32.753223],[74.483398,32.770996],[74.35459,32.768701],[74.305469,32.810449],[74.32998,32.86084],[74.322754,32.927979],[74.303613,32.991797],[74.283594,33.005127],[74.22207,33.020312],[74.12627,33.075439],[74.049121,33.143408],[74.003809,33.189453],[73.989844,33.221191],[73.994238,33.242188],[74.050391,33.30127],[74.117773,33.384131],[74.142578,33.455371],[74.15,33.506982],[74.13125,33.545068],[74.069727,33.591699],[74.004004,33.632422],[73.977539,33.667822],[73.976465,33.721289],[74.000977,33.788184],[74.078418,33.838672],[74.215625,33.886572],[74.250879,33.946094],[74.246484,33.990186],[74.208984,34.003418],[74.112598,34.003711],[73.949902,34.018799],[73.922363,34.043066],[73.904102,34.075684],[73.903906,34.108008],[73.938281,34.144775],[73.979492,34.191309],[73.972363,34.236621],[73.924609,34.287842],[73.809961,34.325342],[73.794531,34.378223],[73.812109,34.422363],[73.850098,34.485303],[73.883105,34.529053],[73.96123,34.653467],[74.055859,34.680664],[74.171973,34.720898],[74.300391,34.765381],[74.497949,34.732031],[74.594141,34.715771],[74.78877,34.677734],[74.951855,34.64585],[75.118457,34.636816],[75.1875,34.639014],[75.264063,34.601367],[75.452539,34.536719],[75.605566,34.502734],[75.70918,34.503076],[75.862109,34.560254],[75.938281,34.612549],[76.041016,34.669922],[76.172461,34.667725],[76.456738,34.756104],[76.509961,34.740869],[76.594434,34.73584],[76.696289,34.786914],[76.749023,34.847559],[76.75752,34.877832],[76.78291,34.900195],[76.891699,34.938721],[77.000879,34.991992],[77.030664,35.062354],[77.048633,35.109912],[77.168555,35.171533],[77.292969,35.235547],[77.423437,35.302588],[77.571582,35.37876],[77.696973,35.443262],[77.799414,35.495898],[77.802539,35.492773],[77.810938,35.484521],[77.851562,35.460791],[77.894922,35.449023],[77.945898,35.471631],[78.009473,35.490234],[78.042676,35.479785],[78.047461,35.449414],[78.00918,35.306934],[78.012207,35.251025],[78.075781,35.134912],[78.158496,34.946484],[78.236133,34.769824],[78.282031,34.653906],[78.326953,34.606396],[78.515723,34.557959],[78.670801,34.518164],[78.763086,34.45293],[78.864844,34.390332],[78.936426,34.351953],[78.970117,34.302637],[78.976953,34.258105],[78.970605,34.228223],[78.931738,34.188965],[78.753027,34.087695],[78.731738,34.055566],[78.72666,34.013379],[78.761719,33.887598],[78.783789,33.808789],[78.789941,33.650342],[78.801855,33.499707],[78.865039,33.431104],[78.916699,33.386768],[78.948438,33.346533],[79.012598,33.291455],[79.066504,33.250391],[79.1125,33.22627],[79.135156,33.171924],[79.12168,33.108105],[79.102832,33.052539],[79.108594,33.022656],[79.145508,33.001465],[79.202246,32.946045],[79.20957,32.864844],[79.205566,32.809033],[79.22793,32.758789],[79.233887,32.703076],[79.216504,32.564014],[79.219043,32.507568],[79.219336,32.501074],[79.169922,32.497217],[79.127344,32.475781],[79.066992,32.388184],[78.997656,32.365137],[78.918945,32.358203],[78.837891,32.411963],[78.771289,32.468066],[78.753516,32.499268],[78.736719,32.558398],[78.700879,32.597021],[78.631543,32.578955],[78.526367,32.570801],[78.4125,32.557715],[78.391699,32.544727],[78.389648,32.519873],[78.41748,32.466699],[78.441309,32.397363],[78.455273,32.300342],[78.486133,32.23623],[78.495898,32.215771],[78.677734,32.023047],[78.725586,31.983789],[78.735449,31.957959],[78.719727,31.887646],[78.687012,31.805518],[78.693457,31.740381],[78.753906,31.668359],[78.80293,31.618066],[78.755078,31.550293],[78.726758,31.471826],[78.758594,31.436572],[78.743555,31.323779],[78.757812,31.30249],[78.791602,31.293652],[78.844531,31.301514],[78.899512,31.331348],[78.945996,31.337207],[78.973926,31.328613],[79.011133,31.414111],[79.04375,31.426221],[79.107129,31.402637],[79.232617,31.241748],[79.33877,31.105713],[79.369629,31.079932],[79.388477,31.064209],[79.493164,30.993701],[79.56543,30.949072],[79.664258,30.965234],[79.794629,30.968262],[79.871875,30.924609],[79.916602,30.894189],[79.918555,30.889893],[79.924512,30.88877],[80.081445,30.781934],[80.149414,30.789844],[80.194336,30.759229],[80.207129,30.68374],[80.18623,30.605322],[80.191211,30.568408],[80.260938,30.561328],[80.40957,30.509473],[80.541016,30.463525],[80.608887,30.448877],[80.682129,30.414844],[80.746777,30.3604],[80.873535,30.290576],[80.985449,30.237109],[81.010254,30.164502],[80.966113,30.180029],[80.907617,30.171924],[80.848145,30.139746],[80.819922,30.119336],[80.684082,29.994336],[80.612891,29.955859],[80.549023,29.899805],[80.401855,29.730273],[80.316895,29.57207],[80.254883,29.42334],[80.255957,29.318018],[80.233008,29.194629],[80.169531,29.124316],[80.130469,29.100391],[80.08457,28.994189],[80.05166,28.870312],[80.070703,28.830176],[80.149609,28.776074],[80.226562,28.72334],[80.324805,28.666406],[80.418555,28.612012],[80.479102,28.604883],[80.495801,28.635791],[80.517871,28.665186],[80.587012,28.649609],[80.671289,28.59624],[80.726172,28.553906],[80.750781,28.539697],[80.896094,28.468555],[81.016602,28.40957],[81.168945,28.33501],[81.20625,28.289404],[81.238965,28.240869],[81.31084,28.176367],[81.486035,28.062207],[81.635547,27.980469],[81.757227,27.913818],[81.852637,27.86709],[81.896875,27.874463],[81.945215,27.899268],[81.987695,27.91377],[82.037012,27.900586],[82.111914,27.864941],[82.287695,27.756543],[82.451367,27.671826],[82.629883,27.687061],[82.677344,27.673437],[82.71084,27.59668],[82.733398,27.518994],[82.932813,27.467676],[83.064063,27.444531],[83.213867,27.402295],[83.289746,27.370996],[83.369434,27.410254],[83.383984,27.444824],[83.447168,27.465332],[83.55166,27.456348],[83.746973,27.395947],[83.828809,27.377832],[83.897168,27.435107],[84.024805,27.46167],[84.091016,27.491357],[84.229785,27.427832],[84.480859,27.348193],[84.610156,27.298682],[84.640723,27.249854],[84.654785,27.203662],[84.653809,27.091699],[84.685352,27.041016],[84.937207,26.926904],[85.020117,26.878516],[85.087305,26.862939],[85.125391,26.860986],[85.151563,26.846631],[85.174121,26.781543],[85.191797,26.766553],[85.240234,26.750342],[85.292969,26.741016],[85.456445,26.797217],[85.568457,26.839844],[85.648438,26.829004],[85.699902,26.781641],[85.707422,26.712646],[85.737305,26.639746],[85.794531,26.60415],[85.855664,26.600195],[86.007324,26.649365],[86.129395,26.611719],[86.241602,26.597998],[86.366113,26.574414],[86.414453,26.556299],[86.543652,26.495996],[86.701367,26.435059],[86.7625,26.441943],[87.016406,26.55542],[87.037891,26.541602],[87.089551,26.433203],[87.166797,26.394238],[87.287402,26.360303],[87.413574,26.422949],[87.513086,26.40498],[87.633398,26.399121],[87.748828,26.429297],[87.849219,26.436914],[87.995117,26.382373],[88.026953,26.39502],[88.054883,26.430029],[88.111523,26.586426],[88.161523,26.724805],[88.157227,26.807324],[88.111035,26.928467],[87.993164,27.086084],[87.984375,27.133936],[88.024121,27.408887],[88.067871,27.567383],[88.105566,27.642432],[88.146973,27.749219],[88.154297,27.798682],[88.150293,27.843311],[88.109766,27.870605],[88.098926,27.904541],[88.108984,27.933008],[88.141113,27.948926],[88.275195,27.968848],[88.425977,28.01167],[88.486133,28.034473],[88.531641,28.057373],[88.57793,28.093359],[88.621094,28.091846],[88.75625,28.039697],[88.803711,28.006934],[88.828613,27.907275],[88.848828,27.868652],[88.829883,27.767383],[88.749023,27.521875],[88.764844,27.429883],[88.83252,27.362842],[88.891406,27.316064],[88.881641,27.297461],[88.760352,27.218115],[88.73877,27.175586],[88.765625,27.134229],[88.813574,27.099023],[88.835156,27.065576],[88.857617,26.961475],[88.919141,26.932227],[89.040918,26.865039],[89.148242,26.816162],[89.332129,26.848633],[89.38418,26.826562],[89.474609,26.803418],[89.545117,26.79624],[89.586133,26.778955],[89.60918,26.762207],[89.606152,26.741113],[89.609961,26.719434],[89.710938,26.713916],[89.763867,26.701563],[89.943164,26.723926],[90.122949,26.75459],[90.206055,26.84751],[90.242383,26.85415],[90.345898,26.890332],[90.447656,26.850781],[90.559863,26.796582],[90.620313,26.780225],[90.739648,26.77168],[90.855762,26.777734],[91.133887,26.803418],[91.286523,26.789941],[91.426758,26.86709],[91.455859,26.866895],[91.517578,26.807324],[91.671582,26.802002],[91.753711,26.830762],[91.84209,26.852979],[91.898633,26.860059],[91.94375,26.86084],[91.99834,26.85498],[92.049707,26.874854],[92.073438,26.914844],[92.068164,26.975195],[92.030859,27.04082],[91.998633,27.079297],[91.992285,27.099902],[92.002539,27.147363],[92.031152,27.214307],[92.083398,27.290625],[92.044922,27.364697],[91.99082,27.450195],[91.950977,27.458301],[91.85127,27.438623],[91.743066,27.442529],[91.658105,27.493604],[91.594727,27.557666],[91.579297,27.611426],[91.597656,27.677002],[91.625879,27.737305],[91.631934,27.759961],[91.712598,27.759814],[91.824707,27.746436],[91.909375,27.729687],[91.977637,27.730371],[92.10127,27.807617],[92.157617,27.812256],[92.222266,27.826953],[92.250488,27.841504],[92.270117,27.830225],[92.341016,27.820752],[92.414844,27.824609],[92.480664,27.845947],[92.54668,27.879199],[92.664355,27.948926],[92.687793,27.988965],[92.6875,28.025732],[92.665625,28.049854],[92.643457,28.061523],[92.652539,28.093359],[92.701855,28.147119],[92.881836,28.228125],[93.034961,28.327637],[93.119238,28.402295],[93.157813,28.492725],[93.206543,28.59082],[93.251953,28.629492],[93.360547,28.654053],[93.664941,28.690234],[93.760742,28.729785],[93.902246,28.803223],[93.973633,28.860791],[94.013281,28.90752],[94.017676,28.959521],[94.111523,28.975879],[94.193457,29.059912],[94.293262,29.144629],[94.468066,29.216211],[94.623047,29.312402],[94.677051,29.297021],[94.733398,29.251611],[94.763086,29.20127],[94.769434,29.175879],[94.96748,29.144043],[94.998828,29.14917],[95.144727,29.104053],[95.279102,29.049561],[95.353125,29.035889],[95.389258,29.037402],[95.420215,29.054297],[95.456543,29.102295],[95.49375,29.137012],[95.516992,29.151172],[95.51582,29.206348],[95.710352,29.313818],[95.885059,29.390918],[96.035352,29.447168],[96.07959,29.424121],[96.128516,29.381396],[96.194727,29.272461],[96.234961,29.245801],[96.337207,29.260986],[96.355859,29.249072],[96.339746,29.209814],[96.270508,29.16123],[96.180859,29.117676],[96.122363,29.08208],[96.141406,28.963477],[96.137109,28.922607],[96.162207,28.909717],[96.346875,29.027441],[96.435742,29.050684],[96.46709,29.022266],[96.477148,28.959326],[96.55,28.82959],[96.580859,28.763672],[96.395605,28.606543],[96.327344,28.525391],[96.329883,28.496826],[96.326172,28.468555],[96.278906,28.428174],[96.281445,28.412061],[96.319824,28.386523],[96.366406,28.367285],[96.389063,28.36792],[96.427734,28.406006],[96.602637,28.459912],[96.652832,28.449756],[96.775781,28.367041],[96.833008,28.362402],[96.980859,28.337695],[97.075391,28.368945],[97.145117,28.340332],[97.289453,28.236816],[97.322461,28.217969],[97.310254,28.155225],[97.302734,28.085986],[97.33916,28.030859],[97.343555,27.982324],[97.335156,27.937744],[97.306152,27.90708],[97.226074,27.890039],[97.157813,27.836865],[97.049707,27.76001],[96.962793,27.698291],[96.899707,27.643848],[96.876855,27.586719],[96.883594,27.514844],[96.901953,27.4396],[97.103711,27.16333],[97.102051,27.11543],[97.038086,27.102051],[96.953418,27.133301],[96.880273,27.177832],[96.797852,27.296191],[96.731641,27.331494],[96.665723,27.339258],[96.274219,27.278369],[96.19082,27.261279],[96.061426,27.21709],[95.970898,27.128076],[95.905273,27.046631],[95.837305,27.013818],[95.738379,26.950439],[95.463867,26.756055],[95.305078,26.672266],[95.201465,26.641406],[95.128711,26.597266],[95.089453,26.525488],[95.059766,26.473975],[95.050879,26.347266],[95.068945,26.191113],[95.108398,26.091406],[95.129297,26.07041],[95.132422,26.04126],[95.092969,25.987305],[95.040723,25.941309],[95.015234,25.912939],[94.991992,25.770459],[94.945703,25.700244],[94.861133,25.597217],[94.78584,25.519336],[94.667773,25.458887],[94.622852,25.41001],[94.579883,25.319824],[94.554395,25.243457],[94.553027,25.215723],[94.566504,25.191504],[94.615625,25.1646],[94.675293,25.138574],[94.703711,25.097852],[94.707617,25.04873],[94.663281,24.931006],[94.584082,24.767236],[94.493164,24.637646],[94.399414,24.514062],[94.377246,24.47373],[94.293066,24.321875],[94.219727,24.113184],[94.170313,23.972656],[94.127637,23.876465],[94.074805,23.87207],[94.01084,23.90293],[93.855469,23.943896],[93.755859,23.976904],[93.683398,24.006543],[93.633301,24.005371],[93.564063,23.986084],[93.49375,23.972852],[93.452148,23.987402],[93.355566,24.074121],[93.32627,24.064209],[93.307324,24.021875],[93.372559,23.77417],[93.414941,23.68208],[93.408105,23.528027],[93.391309,23.33916],[93.366016,23.13252],[93.349414,23.084961],[93.308008,23.030371],[93.253516,23.015479],[93.203906,23.037012],[93.16416,23.032031],[93.150977,22.997314],[93.1625,22.907959],[93.114258,22.805713],[93.078711,22.718213],[93.088184,22.633252],[93.105078,22.547119],[93.162012,22.360205],[93.162402,22.291895],[93.151172,22.230615],[93.121484,22.205176],[93.070605,22.209424],[93.042969,22.183984],[93.021973,22.145703],[92.964551,22.00376],[92.909473,21.988916],[92.854297,22.010156],[92.771387,22.104785],[92.720996,22.132422],[92.688965,22.130957],[92.674707,22.106006],[92.652637,22.049316],[92.630371,22.011328],[92.574902,21.978076],[92.56123,22.048047],[92.531836,22.410303],[92.50957,22.525684],[92.491406,22.6854],[92.464453,22.734424],[92.430469,22.821826],[92.393164,22.897021],[92.361621,22.929004],[92.341211,23.069824],[92.333789,23.242383],[92.33418,23.323828],[92.289355,23.49248],[92.246094,23.683594],[92.187109,23.675537],[92.152344,23.721875],[92.127051,23.720996],[92.044043,23.677783],[91.978516,23.691992],[91.92959,23.685986],[91.929492,23.598242],[91.937891,23.504688],[91.919141,23.471045],[91.790039,23.361035],[91.754199,23.287305],[91.75791,23.209814],[91.773828,23.106104],[91.750977,23.053516],[91.694922,23.004834],[91.619531,22.979688],[91.553516,22.991553],[91.51123,23.033691],[91.471387,23.14126],[91.43623,23.199902],[91.399414,23.213867],[91.370605,23.197998],[91.366797,23.130469],[91.368652,23.074561],[91.359375,23.068359],[91.338867,23.077002],[91.315234,23.104395],[91.253809,23.373633],[91.165527,23.581055],[91.160449,23.660645],[91.19248,23.762891],[91.232031,23.920459],[91.336426,24.018799],[91.350195,24.060498],[91.36709,24.093506],[91.392676,24.100098],[91.526367,24.090771],[91.571387,24.106592],[91.611133,24.152832],[91.66875,24.190088],[91.726562,24.205078],[91.772461,24.210645],[91.846191,24.175293],[91.876953,24.195312],[91.899023,24.260693],[91.931055,24.325537],[91.95166,24.356738],[92.001074,24.370898],[92.06416,24.374365],[92.085059,24.386182],[92.101953,24.408057],[92.11748,24.493945],[92.198047,24.685742],[92.22666,24.770996],[92.230566,24.78623],[92.22832,24.881348],[92.25127,24.895068],[92.384961,24.848779],[92.443164,24.849414],[92.475,24.868506],[92.485449,24.90332],[92.468359,24.944141],[92.373438,25.015137],[92.204688,25.110937],[92.049707,25.169482],[91.763477,25.160645],[91.479688,25.142139],[91.39668,25.151611],[91.293164,25.177979],[91.038281,25.174072],[90.730176,25.159473],[90.613086,25.167725],[90.555273,25.166602],[90.439355,25.157715],[90.250391,25.184961],[90.119629,25.219971],[90.003809,25.25835],[89.866309,25.293164],[89.833301,25.292773],[89.814063,25.305371],[89.800879,25.336133],[89.796289,25.37583],[89.824902,25.560156],[89.799609,25.8396],[89.822949,25.941406],[89.709863,26.17124],[89.670898,26.213818],[89.619043,26.215674],[89.585742,26.186035],[89.572754,26.132324],[89.591406,26.072412],[89.549902,26.005273],[89.466895,25.983545],[89.369727,26.006104],[89.289258,26.037598],[89.186426,26.105957],[89.108301,26.202246],[89.101953,26.30835],[89.066797,26.376904],[89.018652,26.410254],[88.983398,26.419531],[88.951953,26.412109],[88.924121,26.375098],[88.948242,26.337988],[88.981543,26.286133],[88.97041,26.250879],[88.940723,26.245361],[88.896484,26.260498],[88.828027,26.252197],[88.761914,26.279395],[88.722168,26.281836],[88.682813,26.291699],[88.680664,26.352979],[88.620117,26.430664],[88.518262,26.517773],[88.418164,26.571533],[88.369922,26.564111],[88.345898,26.504785],[88.351465,26.482568],[88.38623,26.471533],[88.436719,26.437109],[88.447852,26.401025],[88.44043,26.369482],[88.378027,26.312012],[88.333984,26.25752],[88.235156,26.178076],[88.150781,26.087158],[88.129004,26.018213],[88.097363,25.956348],[88.08457,25.888232],[88.106641,25.841113],[88.147461,25.811426],[88.25293,25.789795],[88.363086,25.698193],[88.452344,25.574414],[88.502441,25.537012],[88.593457,25.495312],[88.769141,25.490479],[88.79541,25.45625],[88.820312,25.365527],[88.854785,25.333545],[88.944141,25.290771],[88.95166,25.259277],[88.929785,25.222998],[88.890137,25.194385],[88.817285,25.176221],[88.747559,25.168945],[88.677539,25.180469],[88.573828,25.187891],[88.45625,25.188428],[88.372949,24.961523],[88.313379,24.881836],[88.279492,24.881934],[88.188867,24.920605],[88.149805,24.914648],[88.045117,24.713037],[88.030273,24.664453],[88.023438,24.627832],[88.079102,24.549902],[88.145508,24.485791],[88.225,24.460645],[88.287109,24.479736],[88.3375,24.453857],[88.396973,24.389258],[88.498535,24.346631],[88.642285,24.325977],[88.723535,24.274902],[88.733594,24.230908],[88.726562,24.18623],[88.71377,24.069629],[88.699805,24.002539],[88.622559,23.826367],[88.567383,23.674414],[88.595996,23.602197],[88.616406,23.572754],[88.635742,23.55],[88.697656,23.493018],[88.74082,23.436621],[88.704004,23.292822],[88.724414,23.25498],[88.807617,23.229687],[88.89707,23.2104],[88.928125,23.186621],[88.850586,23.040527],[88.866992,22.938867],[88.899707,22.843506],[88.923438,22.687549],[88.926953,22.671143],[88.920703,22.632031],[88.971484,22.510937],[89.05,22.274609],[89.055859,22.18623],[89.051465,22.093164],[89.02793,21.937207],[88.949316,21.937939],[89.019629,21.833643],[89.041992,21.758691],[89.05166,21.654102],[88.96709,21.641357],[88.907422,21.653076],[88.85752,21.744678],[88.834375,21.661377],[88.74502,21.584375],[88.712988,21.621973],[88.694727,21.662402],[88.691211,21.733496],[88.740234,22.00542],[88.730273,22.036084],[88.708301,22.056152],[88.65957,22.066943],[88.641602,22.121973],[88.566797,21.832129],[88.599805,21.71377],[88.584668,21.659717],[88.445996,21.614258],[88.305469,21.72334],[88.2875,21.758203],[88.279199,21.696875],[88.253711,21.622314],[88.12207,21.635791],[88.056836,21.694141],[88.099414,21.793555],[88.181055,22.03291],[88.196289,22.139551],[88.087109,22.217725],[87.994434,22.265674],[87.941406,22.374316],[87.961621,22.255029],[88.010742,22.212646],[88.083008,22.182715],[88.159277,22.121729],[88.104102,22.047363],[88.050781,22.001074],[87.948437,21.825439],[87.82373,21.727344],[87.678223,21.653516],[87.200684,21.544873],[87.100684,21.500781],[86.954102,21.365332],[86.85957,21.236719],[86.842285,21.106348],[86.895801,20.965576],[86.939355,20.745068],[86.975488,20.700146],[86.924512,20.619775],[86.835938,20.534326],[86.7625,20.419141],[86.769238,20.355908],[86.750391,20.313232],[86.49873,20.171631],[86.445801,20.088916],[86.376563,20.006738],[86.293652,20.05376],[86.245215,20.053027],[86.311914,19.987793],[86.30293,19.944678],[86.279492,19.919434],[86.216211,19.895801],[85.85293,19.791748],[85.575,19.69292],[85.496875,19.696924],[85.511133,19.726904],[85.559766,19.753467],[85.555078,19.866895],[85.504102,19.887695],[85.459961,19.895898],[85.248633,19.757666],[85.162793,19.620898],[85.180762,19.594873],[85.228516,19.601318],[85.370898,19.678906],[85.436914,19.656885],[85.441602,19.626562],[85.225586,19.50835],[84.770996,19.125391],[84.749805,19.050098],[84.69082,18.964697],[84.609375,18.884326],[84.462793,18.689746],[84.181738,18.400586],[84.104102,18.292676],[83.654297,18.069873],[83.572266,18.003613],[83.387988,17.78667],[83.19834,17.608984],[82.976855,17.461816],[82.593164,17.273926],[82.35957,17.096191],[82.286523,16.978076],[82.281934,16.936084],[82.307227,16.878564],[82.35,16.825195],[82.359766,16.782813],[82.338672,16.706543],[82.327148,16.664355],[82.258789,16.559863],[82.141504,16.485352],[81.761914,16.329492],[81.711719,16.334473],[81.401855,16.365234],[81.286133,16.337061],[81.238574,16.263965],[81.132129,15.961768],[81.030078,15.881445],[80.993457,15.80874],[80.978711,15.75835],[80.917773,15.759668],[80.864746,15.782227],[80.825977,15.765918],[80.781836,15.867334],[80.707812,15.888086],[80.646582,15.89502],[80.384863,15.792773],[80.293457,15.710742],[80.101074,15.323633],[80.053418,15.074023],[80.098633,14.798242],[80.16543,14.577832],[80.178711,14.47832],[80.170117,14.349414],[80.13623,14.286572],[80.111719,14.212207],[80.143652,14.058936],[80.224414,13.858203],[80.244141,13.773486],[80.245801,13.68584],[80.306543,13.485059],[80.265625,13.521289],[80.233398,13.605762],[80.15625,13.71377],[80.062109,13.60625],[80.114258,13.528711],[80.290332,13.436719],[80.342383,13.361328],[80.229102,12.690332],[80.143066,12.452002],[80.0375,12.295801],[79.981738,12.235449],[79.858496,11.98877],[79.771387,11.690234],[79.754102,11.575293],[79.793359,11.44668],[79.748926,11.370605],[79.693164,11.312549],[79.799023,11.338672],[79.835254,11.268848],[79.848633,11.196875],[79.850195,10.768848],[79.838184,10.322559],[79.756934,10.304346],[79.667383,10.299707],[79.588574,10.312354],[79.531641,10.329639],[79.390527,10.305957],[79.314551,10.256689],[79.253613,10.174805],[79.257812,10.035205],[78.996289,9.683105],[78.939941,9.565771],[78.919141,9.452881],[78.953125,9.393799],[79.019922,9.33335],[79.107031,9.308936],[79.275488,9.284619],[79.356348,9.252148],[79.411426,9.192383],[79.212891,9.256006],[78.97959,9.268555],[78.421484,9.105029],[78.274512,8.990186],[78.19248,8.890869],[78.136035,8.663379],[78.126367,8.511328],[78.060156,8.38457],[77.770312,8.189844],[77.587207,8.129883],[77.517578,8.07832],[77.301465,8.145313],[77.065918,8.315918],[76.966895,8.407275],[76.617285,8.84707],[76.553418,8.902783],[76.48291,9.090771],[76.471777,9.16084],[76.452344,9.18877],[76.419043,9.207812],[76.403125,9.236816],[76.324609,9.4521],[76.292383,9.676465],[76.242383,9.9271],[76.284668,9.909863],[76.343066,9.827344],[76.372266,9.707373],[76.375586,9.539893],[76.419531,9.520459],[76.458789,9.53623],[76.346484,9.922119],[76.24873,10.017969],[76.222754,10.024268],[76.195605,10.086133],[76.192676,10.16377],[76.201465,10.200635],[76.12334,10.327002],[76.096094,10.402246],[75.922559,10.784082],[75.844629,11.057568],[75.723828,11.361768],[75.646094,11.468408],[75.524512,11.703125],[75.422656,11.812207],[75.314648,11.958447],[75.229785,12.02334],[75.19668,12.05752],[74.945508,12.564551],[74.868262,12.84458],[74.80293,12.976855],[74.770508,13.077344],[74.682324,13.506934],[74.681641,13.58374],[74.670898,13.667627],[74.608496,13.849658],[74.498535,14.046338],[74.466699,14.168848],[74.466992,14.216504],[74.397168,14.407422],[74.382227,14.494727],[74.335059,14.575439],[74.280371,14.649512],[74.223047,14.708887],[74.08877,14.902197],[74.040625,14.949365],[73.949219,15.074756],[73.884277,15.306445],[73.800781,15.396973],[73.931934,15.396973],[73.851953,15.482471],[73.813867,15.538574],[73.771777,15.573047],[73.832813,15.659375],[73.732813,15.656934],[73.679883,15.708887],[73.607715,15.871094],[73.476074,16.054248],[73.453711,16.1521],[73.337598,16.459863],[73.23916,17.198535],[73.149023,17.527441],[73.156055,17.621924],[73.047168,17.906738],[72.993945,18.097705],[72.97207,18.259277],[72.943164,18.365625],[72.917187,18.576123],[72.875488,18.642822],[72.870898,18.683057],[72.89873,18.778955],[72.976855,18.927197],[73.005566,19.021094],[72.97207,19.15332],[72.900684,19.014502],[72.834668,18.975586],[72.803027,19.079297],[72.802734,19.21875],[72.794531,19.2521],[72.811621,19.298926],[72.987207,19.277441],[72.787891,19.362988],[72.763965,19.413184],[72.756445,19.450537],[72.799414,19.519824],[72.726563,19.578271],[72.697461,19.757129],[72.675977,19.797949],[72.667773,19.830957],[72.708984,20.078027],[72.881152,20.563184],[72.89375,20.672754],[72.878906,20.828516],[72.840527,20.95249],[72.824316,21.083594],[72.813867,21.117188],[72.751562,21.12915],[72.692383,21.177637],[72.623828,21.371973],[72.686523,21.435742],[72.734766,21.470801],[72.668359,21.455908],[72.613281,21.461816],[72.717578,21.55127],[72.810547,21.619922],[73.022461,21.699609],[73.1125,21.750439],[72.979102,21.704688],[72.839746,21.687256],[72.543066,21.696582],[72.59248,21.877588],[72.644043,21.937988],[72.700195,21.971924],[72.61748,21.961719],[72.522266,21.976221],[72.553027,22.159961],[72.62793,22.199609],[72.708789,22.207178],[72.80918,22.233301],[72.701953,22.263623],[72.590137,22.278125],[72.455957,22.248096],[72.332617,22.270215],[72.182813,22.269727],[72.242578,22.245166],[72.306445,22.189209],[72.274414,22.089746],[72.244336,22.027637],[72.161719,21.984814],[72.094434,21.919971],[72.075586,21.862988],[72.037207,21.823047],[72.10293,21.79458],[72.170898,21.774316],[72.210352,21.728223],[72.256641,21.66123],[72.254004,21.531006],[72.076563,21.224072],[72.015234,21.155713],[71.571094,20.970557],[71.396484,20.869775],[71.024609,20.738867],[70.879687,20.714502],[70.719336,20.74043],[70.485059,20.840186],[70.127344,21.094678],[70.034375,21.178809],[69.748438,21.505713],[69.541992,21.678564],[69.385449,21.839551],[69.191699,21.991504],[69.008789,22.196777],[68.969922,22.290283],[68.983496,22.3854],[69.05166,22.437305],[69.131348,22.41626],[69.194238,22.336084],[69.238867,22.300195],[69.276563,22.285498],[69.549219,22.408398],[69.655176,22.403516],[69.727539,22.465186],[69.819043,22.451758],[70.005859,22.547705],[70.08418,22.553516],[70.177246,22.572754],[70.327734,22.815771],[70.44043,22.970312],[70.513477,23.00249],[70.509375,23.040137],[70.489258,23.089502],[70.43457,23.0771],[70.396289,23.030127],[70.367969,22.973486],[70.339453,22.939746],[70.251172,22.970898],[70.191699,22.965674],[70.118262,22.947021],[69.849805,22.856445],[69.739648,22.775195],[69.664648,22.759082],[69.235937,22.848535],[68.81709,23.053711],[68.640723,23.189941],[68.529199,23.364063],[68.41748,23.571484],[68.453809,23.629492],[68.627148,23.75415],[68.776758,23.8521],[68.642383,23.808496],[68.496875,23.747998],[68.424902,23.705566],[68.343359,23.616846],[68.234961,23.596973],[68.191992,23.728906],[68.165039,23.857324]]],[[[93.890039,6.831055],[93.828809,6.748682],[93.709277,7.000684],[93.658008,7.016064],[93.656348,7.13623],[93.68418,7.183594],[93.822461,7.236621],[93.858984,7.206836],[93.92959,6.973486],[93.890039,6.831055]]],[[[93.733594,7.356494],[93.638477,7.261865],[93.597266,7.31875],[93.614258,7.358105],[93.654688,7.379932],[93.69248,7.410596],[93.733594,7.356494]]],[[[93.140723,8.249512],[93.170605,8.212061],[93.115234,8.218506],[93.064258,8.274951],[93.077539,8.327881],[93.096973,8.349365],[93.140723,8.249512]]],[[[93.442578,7.877832],[93.365039,7.876562],[93.341992,7.919336],[93.309375,7.964014],[93.334473,8.006934],[93.375488,8.01792],[93.433691,7.948389],[93.447363,7.899121],[93.442578,7.877832]]],[[[93.536914,8.056641],[93.490039,8.019434],[93.478223,8.024463],[93.471777,8.052686],[93.469727,8.072656],[93.46123,8.108594],[93.456445,8.171875],[93.494043,8.224658],[93.531641,8.21377],[93.511621,8.159766],[93.536914,8.056641]]],[[[92.7875,9.13667],[92.743555,9.130957],[92.716602,9.165088],[92.713281,9.204883],[92.738574,9.230664],[92.762109,9.243896],[92.785742,9.240527],[92.809277,9.173389],[92.7875,9.13667]]],[[[92.502832,10.554883],[92.472656,10.520752],[92.369531,10.547412],[92.377148,10.650586],[92.352832,10.751123],[92.370703,10.793506],[92.447852,10.865527],[92.510352,10.897461],[92.554004,10.799805],[92.574316,10.704248],[92.502832,10.554883]]],[[[92.693164,11.381152],[92.644531,11.361328],[92.595703,11.386426],[92.633887,11.426758],[92.640234,11.509131],[92.690039,11.463428],[92.687207,11.41123],[92.693164,11.381152]]],[[[92.722754,11.536084],[92.700781,11.512549],[92.668359,11.538721],[92.575586,11.718213],[92.559668,11.833447],[92.533887,11.873389],[92.566504,11.930518],[92.60752,11.949512],[92.631836,12.013867],[92.640625,12.112207],[92.676465,12.192383],[92.694727,12.214697],[92.769238,12.215576],[92.788281,12.225781],[92.777637,12.302539],[92.734082,12.335938],[92.718945,12.357324],[92.720703,12.54126],[92.732031,12.615625],[92.75918,12.669092],[92.740039,12.779639],[92.753125,12.820898],[92.807031,12.878906],[92.830859,13.002637],[92.808984,13.0396],[92.860156,13.230566],[92.857324,13.358105],[92.924609,13.48584],[93.029395,13.543848],[93.062305,13.545459],[93.066699,13.436475],[93.07666,13.400684],[93.016016,13.336182],[93.073828,13.2521],[93.066113,13.221582],[93.042969,13.154883],[93.004687,13.089355],[92.951367,13.0625],[92.909961,12.975195],[92.88623,12.942285],[92.965039,12.850488],[92.990234,12.538525],[92.932617,12.453076],[92.863672,12.436035],[92.879492,12.22793],[92.867188,12.181445],[92.798828,12.079248],[92.78623,12.034668],[92.747656,11.992773],[92.763965,11.94043],[92.796777,11.917529],[92.797559,11.874658],[92.766992,11.764648],[92.764648,11.63916],[92.722754,11.536084]]],[[[93.017383,12.036816],[93.062109,11.899414],[92.981738,11.959473],[92.955371,12.002441],[92.995801,12.031787],[93.017383,12.036816]]],[[[92.717578,12.864893],[92.685742,12.799951],[92.679688,12.939258],[92.694434,12.956787],[92.710645,12.961572],[92.730859,12.948535],[92.717578,12.864893]]],[[[72.780371,11.20249],[72.773047,11.196094],[72.772461,11.214258],[72.781836,11.243311],[72.792676,11.262744],[72.795898,11.260449],[72.792871,11.241553],[72.787891,11.215918],[72.780371,11.20249]]],[[[73.067383,8.269092],[73.05332,8.256689],[73.038867,8.251953],[73.028516,8.253516],[73.023438,8.265918],[73.026074,8.275293],[73.038965,8.264844],[73.055859,8.274561],[73.075195,8.306348],[73.079492,8.316504],[73.083594,8.311035],[73.079785,8.293066],[73.067383,8.269092]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Iceland","SOV_A3":"ISL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Iceland","ADM0_A3":"ISL","GEOU_DIF":0,"GEOUNIT":"Iceland","GU_A3":"ISL","SU_DIF":0,"SUBUNIT":"Iceland","SU_A3":"ISL","BRK_DIFF":0,"NAME":"Iceland","NAME_LONG":"Iceland","BRK_A3":"ISL","BRK_NAME":"Iceland","BRK_GROUP":null,"ABBREV":"Iceland","POSTAL":"IS","FORMAL_EN":"Republic of Iceland","FORMAL_FR":null,"NAME_CIAWF":"Iceland","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Iceland","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":9,"POP_EST":361313,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":24188,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"IC","ISO_A2":"IS","ISO_A2_EH":"IS","ISO_A3":"ISL","ISO_A3_EH":"ISL","ISO_N3":"352","ISO_N3_EH":"352","UN_A3":"352","WB_A2":"IS","WB_A3":"ISL","WOE_ID":23424845,"WOE_ID_EH":23424845,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ISL","ADM0_DIFF":null,"ADM0_TLC":"ISL","ADM0_A3_US":"ISL","ADM0_A3_FR":"ISL","ADM0_A3_RU":"ISL","ADM0_A3_ES":"ISL","ADM0_A3_CN":"ISL","ADM0_A3_TW":"ISL","ADM0_A3_IN":"ISL","ADM0_A3_NP":"ISL","ADM0_A3_PK":"ISL","ADM0_A3_DE":"ISL","ADM0_A3_GB":"ISL","ADM0_A3_BR":"ISL","ADM0_A3_IL":"ISL","ADM0_A3_PS":"ISL","ADM0_A3_SA":"ISL","ADM0_A3_EG":"ISL","ADM0_A3_MA":"ISL","ADM0_A3_PT":"ISL","ADM0_A3_AR":"ISL","ADM0_A3_JP":"ISL","ADM0_A3_KO":"ISL","ADM0_A3_VN":"ISL","ADM0_A3_TR":"ISL","ADM0_A3_ID":"ISL","ADM0_A3_PL":"ISL","ADM0_A3_GR":"ISL","ADM0_A3_IT":"ISL","ADM0_A3_NL":"ISL","ADM0_A3_SE":"ISL","ADM0_A3_BD":"ISL","ADM0_A3_UA":"ISL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":-18.673711,"LABEL_Y":64.779286,"NE_ID":1159320917,"WIKIDATAID":"Q189","NAME_AR":"آيسلندا","NAME_BN":"আইসল্যান্ড","NAME_DE":"Island","NAME_EN":"Iceland","NAME_ES":"Islandia","NAME_FA":"ایسلند","NAME_FR":"Islande","NAME_EL":"Ισλανδία","NAME_HE":"איסלנד","NAME_HI":"आइसलैण्ड","NAME_HU":"Izland","NAME_ID":"Islandia","NAME_IT":"Islanda","NAME_JA":"アイスランド","NAME_KO":"아이슬란드","NAME_NL":"IJsland","NAME_PL":"Islandia","NAME_PT":"Islândia","NAME_RU":"Исландия","NAME_SV":"Island","NAME_TR":"İzlanda","NAME_UK":"Ісландія","NAME_UR":"آئس لینڈ","NAME_VI":"Iceland","NAME_ZH":"冰岛","NAME_ZHT":"冰島","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-24.475684,63.406689,-13.556104,66.526074],"geometry":{"type":"Polygon","coordinates":[[[-15.543115,66.228516],[-15.428467,66.224805],[-15.240918,66.259131],[-15.162402,66.281689],[-14.969971,66.359717],[-14.856104,66.381445],[-14.680664,66.376123],[-14.59585,66.381543],[-14.593896,66.373975],[-14.70166,66.342285],[-14.788232,66.331445],[-14.912207,66.284277],[-15.02998,66.177881],[-15.117383,66.125635],[-15.116406,66.102441],[-15.010303,66.061279],[-14.894043,66.037891],[-14.787158,66.059082],[-14.74043,66.05083],[-14.698193,66.020215],[-14.674365,65.989893],[-14.668994,65.959863],[-14.688232,65.896973],[-14.752539,65.833789],[-14.839307,65.780908],[-14.8271,65.764258],[-14.75752,65.755664],[-14.426221,65.789941],[-14.391846,65.787402],[-14.372803,65.770361],[-14.369092,65.738721],[-14.350879,65.710107],[-14.318164,65.684473],[-14.328369,65.658252],[-14.473389,65.575342],[-14.302295,65.627539],[-14.166943,65.642285],[-13.935449,65.616064],[-13.840723,65.585938],[-13.785254,65.533008],[-13.705127,65.550537],[-13.670312,65.549512],[-13.617871,65.519336],[-13.616016,65.487158],[-13.654443,65.441309],[-13.667773,65.398975],[-13.708008,65.381592],[-13.783252,65.368994],[-13.804785,65.354785],[-13.771631,65.32251],[-13.722852,65.290967],[-13.653467,65.289502],[-13.641113,65.275],[-13.639551,65.257471],[-13.648926,65.236963],[-13.671582,65.222852],[-13.707422,65.215137],[-13.754883,65.192529],[-13.580811,65.143018],[-13.558594,65.124658],[-13.556104,65.097656],[-13.569678,65.068115],[-13.599316,65.035938],[-13.651855,65.016846],[-13.777246,65.013721],[-13.854004,64.992871],[-13.827832,64.958008],[-13.829834,64.914014],[-13.85293,64.862158],[-13.95166,64.783643],[-14.044434,64.741895],[-14.135156,64.714795],[-14.296973,64.724365],[-14.385107,64.745215],[-14.375293,64.677441],[-14.465381,64.635693],[-14.44834,64.60083],[-14.416992,64.583105],[-14.432568,64.53833],[-14.475391,64.493994],[-14.54707,64.445947],[-14.628223,64.415967],[-14.789551,64.379834],[-14.927393,64.319678],[-15.021582,64.295898],[-15.255859,64.296924],[-15.494971,64.258203],[-15.83291,64.17666],[-16.060449,64.11123],[-16.236035,64.037207],[-16.468066,63.916357],[-16.640332,63.865479],[-16.739697,63.851758],[-16.933057,63.840918],[-17.095117,63.808105],[-17.633447,63.746582],[-17.815723,63.712988],[-17.839258,63.682373],[-17.914844,63.636377],[-17.91958,63.619727],[-17.886377,63.606885],[-17.880273,63.590186],[-17.946924,63.535742],[-18.080029,63.496338],[-18.14292,63.496973],[-18.219043,63.530859],[-18.252197,63.529687],[-18.265234,63.524512],[-18.266016,63.513867],[-18.222266,63.473193],[-18.302832,63.454248],[-18.653613,63.406689],[-19.250195,63.441992],[-19.486572,63.478516],[-19.778271,63.536572],[-19.951953,63.552051],[-20.198145,63.555811],[-20.400439,63.637109],[-20.494043,63.687354],[-20.501562,63.708203],[-20.491016,63.731982],[-20.469971,63.748193],[-20.438477,63.756982],[-20.371729,63.757861],[-20.363037,63.764941],[-20.413965,63.805176],[-20.462695,63.792139],[-20.592969,63.735352],[-20.650928,63.737402],[-20.727051,63.765771],[-20.729932,63.793359],[-20.87876,63.803906],[-21.008105,63.838379],[-21.136572,63.887939],[-21.155762,63.906836],[-21.094043,63.934424],[-21.105957,63.939844],[-21.152393,63.944531],[-21.24624,63.935449],[-21.387598,63.872803],[-21.448633,63.858398],[-22.372559,63.84375],[-22.606885,63.837256],[-22.652197,63.827734],[-22.693018,63.868506],[-22.729395,63.959473],[-22.742969,64.019385],[-22.733643,64.048389],[-22.701172,64.083203],[-22.650928,64.077295],[-22.603076,64.049609],[-22.559814,64.010352],[-22.510059,63.991455],[-22.187598,64.039209],[-22.056641,64.071338],[-22.000977,64.101855],[-21.935449,64.15376],[-21.865918,64.180322],[-21.832764,64.20542],[-21.767578,64.284863],[-21.722559,64.321777],[-21.668652,64.349023],[-21.606006,64.366602],[-21.46333,64.37915],[-21.557178,64.397852],[-21.64668,64.397852],[-21.951221,64.313916],[-22.053369,64.313916],[-22.049072,64.327002],[-22.006006,64.350684],[-21.90127,64.391602],[-21.973193,64.394678],[-22.000684,64.413184],[-22.003809,64.452197],[-21.950342,64.51499],[-21.702393,64.597803],[-21.61665,64.61001],[-21.590625,64.626367],[-21.623145,64.639746],[-21.674951,64.647705],[-21.924414,64.562549],[-22.106006,64.533057],[-22.159961,64.538818],[-22.253906,64.571875],[-22.28418,64.586572],[-22.324707,64.624414],[-22.320117,64.647217],[-22.233594,64.713965],[-22.247559,64.726904],[-22.307031,64.733496],[-22.467041,64.794971],[-22.720312,64.788818],[-23.346973,64.824365],[-23.476465,64.809277],[-23.689941,64.756543],[-23.818994,64.73916],[-23.878564,64.750635],[-23.932764,64.778516],[-23.981982,64.816113],[-24.026172,64.863428],[-24.007031,64.896436],[-23.924414,64.915234],[-23.863818,64.92417],[-23.693213,64.912744],[-23.485303,64.94585],[-23.352686,64.952783],[-23.3146,64.958008],[-23.236523,64.993262],[-23.197998,65.002148],[-23.137891,64.989795],[-23.108838,64.965869],[-22.899512,65.003027],[-22.827686,65.02168],[-22.81958,65.033105],[-22.788086,65.046484],[-22.683984,65.026367],[-22.599707,65.025732],[-22.494482,65.039551],[-22.308447,65.045654],[-21.892139,65.048779],[-21.829785,65.079102],[-21.800439,65.105908],[-21.763721,65.17373],[-21.77998,65.187695],[-22.03999,65.125244],[-22.099316,65.126221],[-22.400293,65.159326],[-22.509082,65.196777],[-22.473437,65.226855],[-22.313965,65.291602],[-22.149316,65.343555],[-21.906982,65.399707],[-21.850244,65.421533],[-21.844385,65.447363],[-22.005762,65.493457],[-22.311475,65.480713],[-22.389697,65.5354],[-22.643604,65.567773],[-22.812646,65.547412],[-22.90249,65.580469],[-23.12207,65.534766],[-23.604541,65.468604],[-23.796484,65.422754],[-23.899902,65.407568],[-24.018994,65.44502],[-24.223975,65.487207],[-24.454785,65.500342],[-24.475684,65.525195],[-24.341064,65.601221],[-24.248926,65.61499],[-24.156104,65.608008],[-23.979004,65.55498],[-23.856738,65.538379],[-24.01001,65.616211],[-24.006006,65.646143],[-24.017578,65.690918],[-24.065039,65.710156],[-24.111914,65.759717],[-24.092627,65.776465],[-24.032422,65.782324],[-23.909082,65.765576],[-23.615918,65.67959],[-23.471973,65.694824],[-23.392969,65.726514],[-23.285352,65.75],[-23.315918,65.762256],[-23.569287,65.763721],[-23.704736,65.781201],[-23.773242,65.806348],[-23.832617,65.849219],[-23.811719,65.868896],[-23.741309,65.88457],[-23.524951,65.880029],[-23.66748,65.954297],[-23.766553,65.996973],[-23.777344,66.017578],[-23.770557,66.043457],[-23.757129,66.060791],[-23.737158,66.069434],[-23.488867,66.026074],[-23.434473,66.024219],[-23.484668,66.052246],[-23.593555,66.093408],[-23.598535,66.108838],[-23.552637,66.121582],[-23.52998,66.14502],[-23.52793,66.164404],[-23.452539,66.181006],[-23.376562,66.181738],[-23.3,66.166602],[-23.062549,66.08623],[-23.028516,66.063672],[-23.017285,66.033936],[-23.028906,65.99707],[-23.018994,65.982129],[-22.926221,65.994824],[-22.852246,65.979297],[-22.815332,65.983496],[-22.72334,66.039014],[-22.659863,66.025928],[-22.621582,65.999951],[-22.609717,65.976465],[-22.604053,65.944189],[-22.620215,65.876953],[-22.616016,65.86748],[-22.551562,65.90542],[-22.441699,65.908301],[-22.427539,65.927393],[-22.424219,65.998096],[-22.433154,66.057666],[-22.445312,66.07002],[-22.806445,66.152588],[-22.869238,66.17207],[-22.9479,66.212744],[-22.931982,66.233203],[-22.861621,66.251465],[-22.755518,66.25874],[-22.509375,66.257764],[-22.484424,66.266309],[-22.532129,66.287744],[-22.646094,66.301563],[-22.672754,66.313916],[-22.68623,66.337695],[-22.821338,66.324707],[-22.972021,66.32417],[-23.116943,66.338721],[-23.119922,66.357227],[-23.062695,66.384375],[-22.944336,66.429443],[-22.889209,66.440625],[-22.72373,66.432764],[-22.559326,66.44541],[-22.426123,66.430127],[-22.320459,66.385498],[-22.170215,66.307129],[-21.966992,66.256982],[-21.948389,66.24126],[-21.840234,66.200195],[-21.625293,66.089697],[-21.406885,66.025586],[-21.396777,66.009277],[-21.432715,65.990088],[-21.51665,65.967578],[-21.497461,65.955078],[-21.387793,65.93877],[-21.308789,65.895313],[-21.303467,65.876465],[-21.374902,65.741895],[-21.412842,65.71333],[-21.456641,65.698242],[-21.658447,65.723584],[-21.610352,65.680762],[-21.46626,65.635156],[-21.433643,65.609668],[-21.455127,65.584668],[-21.439404,65.578906],[-21.386621,65.592432],[-21.364746,65.578223],[-21.373877,65.536377],[-21.396338,65.50166],[-21.432178,65.474072],[-21.421875,65.462158],[-21.365479,65.46582],[-21.312549,65.458691],[-21.22998,65.420605],[-21.162988,65.304248],[-21.129687,65.266602],[-21.105713,65.3],[-21.075586,65.384961],[-21.047314,65.428369],[-21.02085,65.430273],[-20.997998,65.444531],[-20.978857,65.471191],[-20.939746,65.565186],[-20.804346,65.636426],[-20.739697,65.658252],[-20.678955,65.663086],[-20.649414,65.654199],[-20.548145,65.579492],[-20.486523,65.566943],[-20.454834,65.571045],[-20.411523,65.621729],[-20.356641,65.719043],[-20.344092,65.827734],[-20.373926,65.947705],[-20.356592,66.033252],[-20.292139,66.084375],[-20.20752,66.100098],[-20.102686,66.080469],[-20.026074,66.049268],[-19.874756,65.930127],[-19.752637,65.867773],[-19.647852,65.800781],[-19.593555,65.779053],[-19.489697,65.768066],[-19.461816,65.772363],[-19.443262,65.787842],[-19.433887,65.814453],[-19.45625,65.984912],[-19.427051,66.037988],[-19.382959,66.075684],[-19.195312,66.0979],[-19.093213,66.121533],[-18.99375,66.160352],[-18.911328,66.181152],[-18.845898,66.183936],[-18.777539,66.168799],[-18.706201,66.135742],[-18.594922,66.071338],[-18.454932,65.964551],[-18.276953,65.884717],[-18.183643,65.758008],[-18.163721,65.736572],[-18.141943,65.734082],[-18.118408,65.750537],[-18.10332,65.773926],[-18.099023,65.830273],[-18.148877,65.905029],[-18.315332,66.093164],[-18.318213,66.128809],[-18.297168,66.157422],[-18.179883,66.160547],[-17.906982,66.143311],[-17.819824,66.114111],[-17.634326,65.99917],[-17.582227,65.971387],[-17.550439,65.964404],[-17.539014,65.97832],[-17.467041,65.999658],[-17.417236,66.025537],[-17.334277,66.088867],[-17.153027,66.202832],[-17.115381,66.206201],[-17.062451,66.197217],[-16.969531,66.167383],[-16.925439,66.143457],[-16.838037,66.125244],[-16.748437,66.131641],[-16.624756,66.171582],[-16.48501,66.195947],[-16.437109,66.252539],[-16.428076,66.278369],[-16.540674,66.446729],[-16.493359,66.481152],[-16.249316,66.5229],[-16.035889,66.526074],[-15.9854,66.514648],[-15.850928,66.432861],[-15.759766,66.391699],[-15.71377,66.358594],[-15.702783,66.285742],[-15.647363,66.258789],[-15.543115,66.228516]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Hungary","SOV_A3":"HUN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Hungary","ADM0_A3":"HUN","GEOU_DIF":0,"GEOUNIT":"Hungary","GU_A3":"HUN","SU_DIF":0,"SUBUNIT":"Hungary","SU_A3":"HUN","BRK_DIFF":0,"NAME":"Hungary","NAME_LONG":"Hungary","BRK_A3":"HUN","BRK_NAME":"Hungary","BRK_GROUP":null,"ABBREV":"Hun.","POSTAL":"HU","FORMAL_EN":"Republic of Hungary","FORMAL_FR":null,"NAME_CIAWF":"Hungary","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Hungary","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":6,"MAPCOLOR9":1,"MAPCOLOR13":5,"POP_EST":9769949,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":163469,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"HU","ISO_A2":"HU","ISO_A2_EH":"HU","ISO_A3":"HUN","ISO_A3_EH":"HUN","ISO_N3":"348","ISO_N3_EH":"348","UN_A3":"348","WB_A2":"HU","WB_A3":"HUN","WOE_ID":23424844,"WOE_ID_EH":23424844,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"HUN","ADM0_DIFF":null,"ADM0_TLC":"HUN","ADM0_A3_US":"HUN","ADM0_A3_FR":"HUN","ADM0_A3_RU":"HUN","ADM0_A3_ES":"HUN","ADM0_A3_CN":"HUN","ADM0_A3_TW":"HUN","ADM0_A3_IN":"HUN","ADM0_A3_NP":"HUN","ADM0_A3_PK":"HUN","ADM0_A3_DE":"HUN","ADM0_A3_GB":"HUN","ADM0_A3_BR":"HUN","ADM0_A3_IL":"HUN","ADM0_A3_PS":"HUN","ADM0_A3_SA":"HUN","ADM0_A3_EG":"HUN","ADM0_A3_MA":"HUN","ADM0_A3_PT":"HUN","ADM0_A3_AR":"HUN","ADM0_A3_JP":"HUN","ADM0_A3_KO":"HUN","ADM0_A3_VN":"HUN","ADM0_A3_TR":"HUN","ADM0_A3_ID":"HUN","ADM0_A3_PL":"HUN","ADM0_A3_GR":"HUN","ADM0_A3_IT":"HUN","ADM0_A3_NL":"HUN","ADM0_A3_SE":"HUN","ADM0_A3_BD":"HUN","ADM0_A3_UA":"HUN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":19.447867,"LABEL_Y":47.086841,"NE_ID":1159320841,"WIKIDATAID":"Q28","NAME_AR":"المجر","NAME_BN":"হাঙ্গেরি","NAME_DE":"Ungarn","NAME_EN":"Hungary","NAME_ES":"Hungría","NAME_FA":"مجارستان","NAME_FR":"Hongrie","NAME_EL":"Ουγγαρία","NAME_HE":"הונגריה","NAME_HI":"हंगरी","NAME_HU":"Magyarország","NAME_ID":"Hongaria","NAME_IT":"Ungheria","NAME_JA":"ハンガリー","NAME_KO":"헝가리","NAME_NL":"Hongarije","NAME_PL":"Węgry","NAME_PT":"Hungria","NAME_RU":"Венгрия","NAME_SV":"Ungern","NAME_TR":"Macaristan","NAME_UK":"Угорщина","NAME_UR":"ہنگری","NAME_VI":"Hungary","NAME_ZH":"匈牙利","NAME_ZHT":"匈牙利","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[16.093066,45.753027,22.87666,48.553467],"geometry":{"type":"Polygon","coordinates":[[[22.131836,48.405322],[22.227148,48.413428],[22.231152,48.412158],[22.253711,48.407373],[22.269434,48.360889],[22.272168,48.358008],[22.295117,48.327295],[22.316699,48.286621],[22.350195,48.256055],[22.423828,48.243311],[22.520117,48.205371],[22.582422,48.134033],[22.676367,48.104395],[22.683105,48.103613],[22.701563,48.107031],[22.769141,48.109619],[22.782227,48.095215],[22.83623,48.060303],[22.857227,48.029541],[22.846484,47.99707],[22.856055,47.960303],[22.87666,47.947266],[22.851758,47.922559],[22.676758,47.799023],[22.608398,47.766309],[22.562891,47.75957],[22.491406,47.772559],[22.41748,47.762646],[22.351465,47.73623],[22.290625,47.727832],[22.244629,47.696387],[22.185059,47.629053],[22.111914,47.572021],[22.037988,47.536621],[21.999707,47.505029],[21.995313,47.395703],[21.954297,47.364258],[21.899219,47.332568],[21.869336,47.30459],[21.785449,47.138135],[21.721777,47.084814],[21.661426,47.043896],[21.651465,47.006543],[21.652637,46.96377],[21.58418,46.878369],[21.494434,46.789746],[21.477051,46.753369],[21.49707,46.704297],[21.411035,46.647852],[21.361328,46.620752],[21.320215,46.607812],[21.294531,46.572461],[21.252246,46.486377],[21.263281,46.447754],[21.264551,46.412305],[21.191797,46.391553],[21.17041,46.352686],[21.151953,46.304346],[21.12168,46.282422],[21.039844,46.242236],[20.837012,46.259717],[20.760254,46.24624],[20.737402,46.21748],[20.732715,46.194434],[20.707422,46.172803],[20.661035,46.145654],[20.613672,46.133496],[20.508105,46.166943],[20.280957,46.133008],[20.241797,46.108594],[20.210156,46.126025],[20.161426,46.141895],[19.934082,46.161475],[19.844434,46.145898],[19.724512,46.151904],[19.613477,46.169189],[19.530762,46.155176],[19.45752,46.087354],[19.421289,46.064453],[19.392871,46.049805],[19.330273,46.028516],[19.278125,46.002881],[19.208398,45.984424],[19.146289,45.987012],[19.087305,46.016162],[19.066211,46.009521],[19.047656,45.982666],[19.015723,45.959717],[18.927832,45.931396],[18.905371,45.931738],[18.900293,45.931738],[18.833008,45.91084],[18.721777,45.899365],[18.666016,45.907471],[18.564648,45.813281],[18.533594,45.796143],[18.437305,45.767334],[18.358301,45.753027],[18.290625,45.764453],[18.263965,45.765479],[17.963867,45.770264],[17.807129,45.79043],[17.706445,45.827246],[17.639648,45.868359],[17.607031,45.91377],[17.529199,45.941309],[17.406348,45.951074],[17.310645,45.996143],[17.242188,46.076611],[17.149609,46.140332],[17.032715,46.187305],[16.939941,46.253662],[16.871484,46.339307],[16.748047,46.416406],[16.569922,46.48501],[16.516211,46.499902],[16.505664,46.52207],[16.418457,46.607227],[16.38125,46.638672],[16.38457,46.680811],[16.367188,46.704785],[16.335449,46.721631],[16.318457,46.78252],[16.308496,46.827979],[16.283594,46.857275],[16.093066,46.863281],[16.252539,46.971924],[16.331836,47.002197],[16.423926,46.996973],[16.453418,47.006787],[16.46123,47.022461],[16.476953,47.057861],[16.484766,47.09126],[16.492676,47.122656],[16.482813,47.140381],[16.438379,47.145898],[16.416895,47.223437],[16.439746,47.252734],[16.462598,47.273145],[16.434375,47.367432],[16.442871,47.399512],[16.514746,47.404541],[16.574414,47.424658],[16.623047,47.447559],[16.636621,47.476611],[16.676563,47.536035],[16.639746,47.608887],[16.432129,47.656299],[16.421289,47.674463],[16.469629,47.695068],[16.521094,47.724463],[16.550977,47.747363],[16.590918,47.750537],[16.647461,47.739014],[16.747559,47.686279],[16.785938,47.678662],[16.823047,47.693994],[16.862695,47.697266],[16.973438,47.695312],[17.066602,47.707568],[17.045605,47.76377],[17.045898,47.804541],[17.030078,47.837109],[17.039941,47.872949],[17.077734,47.900879],[17.089063,47.963623],[17.147363,48.005957],[17.174609,48.012061],[17.277246,48.004346],[17.301563,47.993359],[17.317285,47.990918],[17.480664,47.887598],[17.635254,47.809912],[17.761914,47.770166],[17.947949,47.766895],[18.145605,47.763428],[18.47627,47.777002],[18.724219,47.787158],[18.740625,47.806494],[18.778027,47.852881],[18.74834,47.892676],[18.750098,47.939453],[18.791895,48.000293],[18.91416,48.05083],[19.265137,48.073047],[19.466992,48.110693],[19.497461,48.162109],[19.564258,48.212842],[19.625391,48.223096],[19.70918,48.199805],[19.810059,48.155029],[19.898633,48.131348],[19.950391,48.146631],[20.128613,48.222021],[20.333789,48.295557],[20.475,48.495117],[20.490039,48.526904],[20.643164,48.549707],[20.866602,48.545654],[20.981152,48.519678],[21.067285,48.505908],[21.196387,48.510596],[21.382422,48.553467],[21.451367,48.552246],[21.504688,48.521875],[21.563184,48.495703],[21.602637,48.463672],[21.63252,48.418506],[21.648633,48.401465],[21.674609,48.378369],[21.721484,48.346582],[21.766992,48.338086],[22.111328,48.393359],[22.131836,48.405322]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Honduras","SOV_A3":"HND","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Honduras","ADM0_A3":"HND","GEOU_DIF":0,"GEOUNIT":"Honduras","GU_A3":"HND","SU_DIF":0,"SUBUNIT":"Honduras","SU_A3":"HND","BRK_DIFF":0,"NAME":"Honduras","NAME_LONG":"Honduras","BRK_A3":"HND","BRK_NAME":"Honduras","BRK_GROUP":null,"ABBREV":"Hond.","POSTAL":"HN","FORMAL_EN":"Republic of Honduras","FORMAL_FR":null,"NAME_CIAWF":"Honduras","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Honduras","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":5,"MAPCOLOR9":2,"MAPCOLOR13":5,"POP_EST":9746117,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":25095,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"HO","ISO_A2":"HN","ISO_A2_EH":"HN","ISO_A3":"HND","ISO_A3_EH":"HND","ISO_N3":"340","ISO_N3_EH":"340","UN_A3":"340","WB_A2":"HN","WB_A3":"HND","WOE_ID":23424841,"WOE_ID_EH":23424841,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"HND","ADM0_DIFF":null,"ADM0_TLC":"HND","ADM0_A3_US":"HND","ADM0_A3_FR":"HND","ADM0_A3_RU":"HND","ADM0_A3_ES":"HND","ADM0_A3_CN":"HND","ADM0_A3_TW":"HND","ADM0_A3_IN":"HND","ADM0_A3_NP":"HND","ADM0_A3_PK":"HND","ADM0_A3_DE":"HND","ADM0_A3_GB":"HND","ADM0_A3_BR":"HND","ADM0_A3_IL":"HND","ADM0_A3_PS":"HND","ADM0_A3_SA":"HND","ADM0_A3_EG":"HND","ADM0_A3_MA":"HND","ADM0_A3_PT":"HND","ADM0_A3_AR":"HND","ADM0_A3_JP":"HND","ADM0_A3_KO":"HND","ADM0_A3_VN":"HND","ADM0_A3_TR":"HND","ADM0_A3_ID":"HND","ADM0_A3_PL":"HND","ADM0_A3_GR":"HND","ADM0_A3_IT":"HND","ADM0_A3_NL":"HND","ADM0_A3_SE":"HND","ADM0_A3_BD":"HND","ADM0_A3_UA":"HND","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":-86.887604,"LABEL_Y":14.794801,"NE_ID":1159320827,"WIKIDATAID":"Q783","NAME_AR":"هندوراس","NAME_BN":"হন্ডুরাস","NAME_DE":"Honduras","NAME_EN":"Honduras","NAME_ES":"Honduras","NAME_FA":"هندوراس","NAME_FR":"Honduras","NAME_EL":"Ονδούρα","NAME_HE":"הונדורס","NAME_HI":"हौण्डुरस","NAME_HU":"Honduras","NAME_ID":"Honduras","NAME_IT":"Honduras","NAME_JA":"ホンジュラス","NAME_KO":"온두라스","NAME_NL":"Honduras","NAME_PL":"Honduras","NAME_PT":"Honduras","NAME_RU":"Гондурас","NAME_SV":"Honduras","NAME_TR":"Honduras","NAME_UK":"Гондурас","NAME_UR":"ہونڈوراس","NAME_VI":"Honduras","NAME_ZH":"洪都拉斯","NAME_ZHT":"宏都拉斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-89.362598,12.979248,-83.15752,16.513965],"geometry":{"type":"MultiPolygon","coordinates":[[[[-83.15752,14.993066],[-83.415039,15.008057],[-83.536523,14.977002],[-83.589746,14.907568],[-83.635498,14.876416],[-83.673633,14.883545],[-83.750928,14.85625],[-83.867285,14.794482],[-83.972266,14.771094],[-84.06582,14.786084],[-84.092969,14.770898],[-84.100293,14.750635],[-84.114404,14.731006],[-84.150781,14.72041],[-84.192383,14.726025],[-84.239209,14.747852],[-84.263965,14.738525],[-84.26665,14.698145],[-84.291943,14.687354],[-84.339795,14.706348],[-84.393652,14.691748],[-84.453564,14.643701],[-84.537646,14.633398],[-84.645947,14.661084],[-84.729785,14.713379],[-84.78916,14.790381],[-84.860449,14.809766],[-84.985156,14.752441],[-85.037354,14.685547],[-85.048633,14.644727],[-85.036523,14.607666],[-85.059375,14.582959],[-85.117285,14.570605],[-85.161328,14.525146],[-85.191504,14.446631],[-85.197559,14.385986],[-85.179492,14.343311],[-85.20835,14.311816],[-85.28418,14.29165],[-85.373779,14.223877],[-85.477051,14.108691],[-85.579785,14.028223],[-85.681934,13.982568],[-85.731201,13.931836],[-85.727734,13.876074],[-85.733936,13.858691],[-85.753418,13.852051],[-85.786719,13.844434],[-85.983789,13.965674],[-86.040381,14.050146],[-86.089258,14.037207],[-86.151221,13.99458],[-86.238232,13.899463],[-86.331738,13.770068],[-86.376953,13.755664],[-86.610254,13.774854],[-86.733643,13.763477],[-86.758984,13.746143],[-86.770605,13.69873],[-86.763525,13.635254],[-86.72959,13.407227],[-86.710693,13.313379],[-86.729297,13.284375],[-86.792139,13.279785],[-86.873535,13.266504],[-86.918213,13.223584],[-86.928809,13.179395],[-86.933154,13.117529],[-86.958887,13.053711],[-87.009326,13.007812],[-87.05918,12.991455],[-87.337256,12.979248],[-87.33252,13.084717],[-87.412793,13.127441],[-87.458447,13.21543],[-87.498389,13.274902],[-87.485156,13.310596],[-87.489111,13.35293],[-87.602246,13.385596],[-87.70835,13.360059],[-87.769385,13.37666],[-87.814209,13.39917],[-87.737012,13.451367],[-87.731641,13.483105],[-87.756445,13.506006],[-87.781885,13.521387],[-87.774219,13.580322],[-87.758545,13.649951],[-87.715332,13.812695],[-87.731445,13.841064],[-87.802246,13.88999],[-87.891992,13.894971],[-87.991016,13.879639],[-88.038721,13.904639],[-88.080469,13.960596],[-88.151025,13.987354],[-88.276221,13.942676],[-88.408496,13.875391],[-88.449121,13.850977],[-88.482666,13.854248],[-88.497656,13.904541],[-88.504346,13.964209],[-88.512549,13.978955],[-88.583154,14.000146],[-88.665625,14.015527],[-88.707617,14.03208],[-88.747363,14.072266],[-88.845947,14.124756],[-88.868311,14.163672],[-89.000195,14.252734],[-89.026855,14.296973],[-89.057129,14.32915],[-89.120508,14.370215],[-89.170117,14.360303],[-89.337256,14.411377],[-89.362598,14.416016],[-89.339404,14.460742],[-89.286719,14.52998],[-89.171777,14.606885],[-89.162207,14.669238],[-89.192236,14.788721],[-89.222363,14.866064],[-89.206104,14.900586],[-89.170312,15.039893],[-89.142578,15.072314],[-88.976416,15.142676],[-88.960986,15.152441],[-88.829932,15.251025],[-88.684473,15.360498],[-88.533301,15.481201],[-88.364551,15.616016],[-88.271436,15.694873],[-88.22832,15.729004],[-88.131104,15.701025],[-88.05459,15.764844],[-88.0104,15.786182],[-87.907031,15.862598],[-87.874951,15.879346],[-87.701855,15.910645],[-87.618164,15.909863],[-87.544971,15.832373],[-87.486914,15.790186],[-87.37749,15.826465],[-87.285889,15.834424],[-86.907227,15.762354],[-86.757031,15.794238],[-86.480811,15.801074],[-86.356641,15.783203],[-86.181201,15.885156],[-86.068555,15.905664],[-85.936279,15.953418],[-85.953906,16.002246],[-85.985645,16.02417],[-85.783984,16.002832],[-85.483691,15.899512],[-85.163672,15.918164],[-85.048242,15.973975],[-84.97373,15.989893],[-84.646094,15.883594],[-84.559668,15.802002],[-84.492285,15.793945],[-84.440039,15.812598],[-84.425977,15.829492],[-84.490381,15.847266],[-84.519629,15.872754],[-84.261426,15.822607],[-83.775488,15.436865],[-83.765283,15.405469],[-83.972803,15.519629],[-84.082764,15.510889],[-84.111328,15.492432],[-84.105176,15.430127],[-84.095068,15.400928],[-84.047949,15.397607],[-84.013184,15.414404],[-83.927441,15.394043],[-83.870654,15.352734],[-83.80166,15.289258],[-83.760449,15.220361],[-83.715918,15.219238],[-83.672168,15.260742],[-83.589648,15.265771],[-83.535937,15.219385],[-83.497949,15.222119],[-83.551074,15.293994],[-83.676123,15.36543],[-83.646387,15.368408],[-83.369189,15.23999],[-83.290869,15.078906],[-83.225586,15.042285],[-83.15752,14.993066]]],[[[-86.419922,16.378369],[-86.580273,16.300244],[-86.63042,16.301758],[-86.556934,16.362109],[-86.438281,16.413867],[-86.337842,16.439209],[-86.255518,16.428223],[-86.419922,16.378369]]],[[[-85.870947,16.461523],[-85.947217,16.403613],[-85.960986,16.429688],[-85.924219,16.483301],[-85.878223,16.513965],[-85.833789,16.510889],[-85.844434,16.487744],[-85.870947,16.461523]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Haiti","SOV_A3":"HTI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Haiti","ADM0_A3":"HTI","GEOU_DIF":0,"GEOUNIT":"Haiti","GU_A3":"HTI","SU_DIF":0,"SUBUNIT":"Haiti","SU_A3":"HTI","BRK_DIFF":0,"NAME":"Haiti","NAME_LONG":"Haiti","BRK_A3":"HTI","BRK_NAME":"Haiti","BRK_GROUP":null,"ABBREV":"Haiti","POSTAL":"HT","FORMAL_EN":"Republic of Haiti","FORMAL_FR":null,"NAME_CIAWF":"Haiti","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Haiti","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":1,"MAPCOLOR9":7,"MAPCOLOR13":2,"POP_EST":11263077,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":14332,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"HA","ISO_A2":"HT","ISO_A2_EH":"HT","ISO_A3":"HTI","ISO_A3_EH":"HTI","ISO_N3":"332","ISO_N3_EH":"332","UN_A3":"332","WB_A2":"HT","WB_A3":"HTI","WOE_ID":23424839,"WOE_ID_EH":23424839,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"HTI","ADM0_DIFF":null,"ADM0_TLC":"HTI","ADM0_A3_US":"HTI","ADM0_A3_FR":"HTI","ADM0_A3_RU":"HTI","ADM0_A3_ES":"HTI","ADM0_A3_CN":"HTI","ADM0_A3_TW":"HTI","ADM0_A3_IN":"HTI","ADM0_A3_NP":"HTI","ADM0_A3_PK":"HTI","ADM0_A3_DE":"HTI","ADM0_A3_GB":"HTI","ADM0_A3_BR":"HTI","ADM0_A3_IL":"HTI","ADM0_A3_PS":"HTI","ADM0_A3_SA":"HTI","ADM0_A3_EG":"HTI","ADM0_A3_MA":"HTI","ADM0_A3_PT":"HTI","ADM0_A3_AR":"HTI","ADM0_A3_JP":"HTI","ADM0_A3_KO":"HTI","ADM0_A3_VN":"HTI","ADM0_A3_TR":"HTI","ADM0_A3_ID":"HTI","ADM0_A3_PL":"HTI","ADM0_A3_GR":"HTI","ADM0_A3_IT":"HTI","ADM0_A3_NL":"HTI","ADM0_A3_SE":"HTI","ADM0_A3_BD":"HTI","ADM0_A3_UA":"HTI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-72.224051,"LABEL_Y":19.263784,"NE_ID":1159320839,"WIKIDATAID":"Q790","NAME_AR":"هايتي","NAME_BN":"হাইতি","NAME_DE":"Haiti","NAME_EN":"Haiti","NAME_ES":"Haití","NAME_FA":"هائیتی","NAME_FR":"Haïti","NAME_EL":"Αϊτή","NAME_HE":"האיטי","NAME_HI":"हैती","NAME_HU":"Haiti","NAME_ID":"Haiti","NAME_IT":"Haiti","NAME_JA":"ハイチ","NAME_KO":"아이티","NAME_NL":"Haïti","NAME_PL":"Haiti","NAME_PT":"Haiti","NAME_RU":"Республика Гаити","NAME_SV":"Haiti","NAME_TR":"Haiti","NAME_UK":"Гаїті","NAME_UR":"ہیٹی","NAME_VI":"Haiti","NAME_ZH":"海地","NAME_ZHT":"海地","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-74.478125,18.03916,-71.645312,20.093652],"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.779248,19.718164],[-71.757422,19.688184],[-71.711475,19.486572],[-71.706934,19.421973],[-71.753174,19.324463],[-71.746484,19.28584],[-71.647217,19.195947],[-71.645312,19.163525],[-71.657031,19.130762],[-71.742041,19.045508],[-71.807129,18.987012],[-71.786377,18.92002],[-71.733643,18.856396],[-71.727051,18.803223],[-71.743213,18.73291],[-71.824219,18.645508],[-71.866504,18.61416],[-71.986865,18.610352],[-72.000391,18.5979],[-71.940381,18.512598],[-71.872559,18.416211],[-71.761914,18.341309],[-71.737256,18.270801],[-71.76377,18.203955],[-71.768311,18.03916],[-71.85293,18.119141],[-71.946094,18.186084],[-72.002051,18.212012],[-72.059863,18.228564],[-72.503564,18.219922],[-72.553223,18.208398],[-72.591895,18.186914],[-72.633301,18.176221],[-72.755273,18.156152],[-72.87666,18.151758],[-73.160059,18.205615],[-73.272266,18.233545],[-73.385156,18.251172],[-73.514844,18.245361],[-73.644043,18.229053],[-73.747314,18.190234],[-73.824707,18.121777],[-73.83916,18.058203],[-73.884961,18.041895],[-73.989453,18.143164],[-74.0854,18.215137],[-74.194629,18.269189],[-74.419043,18.346191],[-74.459961,18.393066],[-74.478125,18.45],[-74.3875,18.624707],[-74.284473,18.656689],[-74.227734,18.662695],[-74.100342,18.641113],[-73.975977,18.601416],[-73.8625,18.575439],[-73.687012,18.565332],[-73.591602,18.522363],[-72.917285,18.455713],[-72.789355,18.434814],[-72.739453,18.442139],[-72.695996,18.468213],[-72.659766,18.515332],[-72.618066,18.550781],[-72.418115,18.558691],[-72.376074,18.574463],[-72.346729,18.62373],[-72.347656,18.674951],[-72.465234,18.743555],[-72.649121,18.894141],[-72.811084,19.071582],[-72.741211,19.131348],[-72.767969,19.240625],[-72.741797,19.341846],[-72.703223,19.441064],[-72.863428,19.526074],[-73.052734,19.610742],[-73.315527,19.637305],[-73.396338,19.658691],[-73.438379,19.722119],[-73.400537,19.807422],[-73.315332,19.85459],[-73.217773,19.883691],[-73.117773,19.903809],[-72.876514,19.928076],[-72.637012,19.900879],[-72.429932,19.813281],[-72.219824,19.744629],[-71.954297,19.72168],[-71.834717,19.696729],[-71.779248,19.718164]]],[[[-72.80459,18.777686],[-72.822217,18.707129],[-73.077979,18.790918],[-73.285254,18.896729],[-73.276416,18.954053],[-73.170605,18.967285],[-73.069141,18.932031],[-72.919238,18.861475],[-72.80459,18.777686]]],[[[-72.664062,20.0375],[-72.623486,20.01416],[-72.638867,19.98584],[-72.739795,20.003418],[-72.844238,20.035449],[-72.878418,20.027441],[-72.899316,20.031445],[-72.960352,20.062256],[-72.906738,20.08584],[-72.851465,20.093652],[-72.791016,20.091895],[-72.664062,20.0375]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Guyana","SOV_A3":"GUY","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Guyana","ADM0_A3":"GUY","GEOU_DIF":0,"GEOUNIT":"Guyana","GU_A3":"GUY","SU_DIF":0,"SUBUNIT":"Guyana","SU_A3":"GUY","BRK_DIFF":0,"NAME":"Guyana","NAME_LONG":"Guyana","BRK_A3":"GUY","BRK_NAME":"Guyana","BRK_GROUP":null,"ABBREV":"Guy.","POSTAL":"GY","FORMAL_EN":"Co-operative Republic of Guyana","FORMAL_FR":null,"NAME_CIAWF":"Guyana","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Guyana","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":8,"POP_EST":782766,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":5173,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"GY","ISO_A2":"GY","ISO_A2_EH":"GY","ISO_A3":"GUY","ISO_A3_EH":"GUY","ISO_N3":"328","ISO_N3_EH":"328","UN_A3":"328","WB_A2":"GY","WB_A3":"GUY","WOE_ID":23424836,"WOE_ID_EH":23424836,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GUY","ADM0_DIFF":null,"ADM0_TLC":"GUY","ADM0_A3_US":"GUY","ADM0_A3_FR":"GUY","ADM0_A3_RU":"GUY","ADM0_A3_ES":"GUY","ADM0_A3_CN":"GUY","ADM0_A3_TW":"GUY","ADM0_A3_IN":"GUY","ADM0_A3_NP":"GUY","ADM0_A3_PK":"GUY","ADM0_A3_DE":"GUY","ADM0_A3_GB":"GUY","ADM0_A3_BR":"GUY","ADM0_A3_IL":"GUY","ADM0_A3_PS":"GUY","ADM0_A3_SA":"GUY","ADM0_A3_EG":"GUY","ADM0_A3_MA":"GUY","ADM0_A3_PT":"GUY","ADM0_A3_AR":"GUY","ADM0_A3_JP":"GUY","ADM0_A3_KO":"GUY","ADM0_A3_VN":"GUY","ADM0_A3_TR":"GUY","ADM0_A3_ID":"GUY","ADM0_A3_PL":"GUY","ADM0_A3_GR":"GUY","ADM0_A3_IT":"GUY","ADM0_A3_NL":"GUY","ADM0_A3_SE":"GUY","ADM0_A3_BD":"GUY","ADM0_A3_UA":"GUY","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-58.942643,"LABEL_Y":5.124317,"NE_ID":1159320817,"WIKIDATAID":"Q734","NAME_AR":"غيانا","NAME_BN":"গায়ানা","NAME_DE":"Guyana","NAME_EN":"Guyana","NAME_ES":"Guyana","NAME_FA":"گویان","NAME_FR":"Guyana","NAME_EL":"Γουιάνα","NAME_HE":"גיאנה","NAME_HI":"गयाना","NAME_HU":"Guyana","NAME_ID":"Guyana","NAME_IT":"Guyana","NAME_JA":"ガイアナ","NAME_KO":"가이아나","NAME_NL":"Guyana","NAME_PL":"Gujana","NAME_PT":"Guiana","NAME_RU":"Гайана","NAME_SV":"Guyana","NAME_TR":"Guyana","NAME_UK":"Гаяна","NAME_UR":"گیانا","NAME_VI":"Guyana","NAME_ZH":"圭亚那","NAME_ZHT":"圭亞那","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.39082,1.201221,-56.482812,8.549316],"geometry":{"type":"Polygon","coordinates":[[[-60.742139,5.202051],[-60.954004,5.437402],[-61.167187,5.674219],[-61.376807,5.906982],[-61.39082,5.93877],[-61.303125,6.049512],[-61.224951,6.129199],[-61.159473,6.174414],[-61.128711,6.214307],[-61.152295,6.385107],[-61.151025,6.446533],[-61.181592,6.513379],[-61.203613,6.588379],[-61.177246,6.650928],[-61.145605,6.694531],[-61.104785,6.711377],[-61.00708,6.726611],[-60.937988,6.732764],[-60.913574,6.757812],[-60.87334,6.786914],[-60.82085,6.788477],[-60.71792,6.768311],[-60.671045,6.805957],[-60.586084,6.85708],[-60.39502,6.945361],[-60.3521,7.002881],[-60.32207,7.092041],[-60.325488,7.133984],[-60.345068,7.15],[-60.392383,7.164551],[-60.464941,7.166553],[-60.523193,7.143701],[-60.583203,7.156201],[-60.633301,7.211084],[-60.636182,7.256592],[-60.606543,7.32085],[-60.62373,7.36333],[-60.719238,7.498682],[-60.718652,7.535937],[-60.649463,7.596631],[-60.610107,7.64834],[-60.556348,7.772021],[-60.513623,7.813184],[-60.380615,7.827637],[-60.346777,7.854004],[-60.278906,7.919434],[-60.178174,7.994043],[-60.032422,8.053564],[-59.990723,8.162012],[-59.964844,8.191602],[-59.849072,8.248682],[-59.828906,8.27915],[-59.831641,8.305957],[-60.017529,8.549316],[-59.980615,8.532617],[-59.836523,8.373828],[-59.756738,8.339502],[-59.739941,8.338721],[-59.739307,8.37998],[-59.666113,8.362598],[-59.476904,8.254004],[-59.200244,8.074609],[-58.811572,7.735596],[-58.701074,7.606641],[-58.626611,7.545898],[-58.511084,7.398047],[-58.477295,7.325781],[-58.480566,7.038135],[-58.58291,6.843652],[-58.60791,6.697314],[-58.613477,6.502539],[-58.672949,6.390771],[-58.593994,6.451514],[-58.569482,6.627246],[-58.502295,6.733984],[-58.41499,6.851172],[-58.298437,6.879297],[-58.172852,6.829395],[-58.071777,6.820605],[-57.982568,6.785889],[-57.792871,6.598535],[-57.607568,6.450391],[-57.540137,6.331543],[-57.343652,6.272119],[-57.227539,6.178418],[-57.190234,6.097314],[-57.167236,5.88501],[-57.205273,5.5646],[-57.194775,5.548437],[-57.2479,5.485254],[-57.25752,5.445166],[-57.291895,5.373975],[-57.318555,5.335352],[-57.279639,5.246777],[-57.235303,5.242871],[-57.218457,5.231543],[-57.207324,5.214209],[-57.209814,5.19541],[-57.226855,5.178516],[-57.269287,5.157031],[-57.30957,5.105859],[-57.305762,5.049561],[-57.331006,5.020166],[-57.412158,5.00459],[-57.570898,5.004492],[-57.648828,5.000684],[-57.711084,4.991064],[-57.752002,4.954492],[-57.804102,4.929053],[-57.844922,4.923047],[-57.881104,4.880615],[-57.917041,4.82041],[-57.904883,4.779297],[-57.867871,4.724316],[-57.845996,4.668164],[-57.874707,4.5771],[-57.90625,4.506787],[-57.924707,4.453125],[-57.949756,4.349951],[-58.010742,4.236475],[-58.054492,4.171924],[-58.054297,4.10166],[-58.032227,4.001953],[-57.907715,3.856689],[-57.866553,3.787256],[-57.832666,3.675977],[-57.720361,3.588281],[-57.649463,3.517383],[-57.656104,3.42373],[-57.646729,3.394531],[-57.602734,3.370947],[-57.549609,3.352832],[-57.490576,3.354297],[-57.437891,3.362256],[-57.425586,3.375439],[-57.303662,3.3771],[-57.289941,3.353613],[-57.28291,3.218848],[-57.27793,3.164307],[-57.248975,3.142285],[-57.231641,3.108887],[-57.230566,3.078564],[-57.225,3.003076],[-57.206934,2.963379],[-57.209814,2.882812],[-57.197363,2.853271],[-57.163623,2.833252],[-57.121143,2.775537],[-57.105127,2.768262],[-57.096875,2.747852],[-57.060449,2.665674],[-57.041943,2.641113],[-57.028955,2.6375],[-57.023486,2.608984],[-56.997119,2.532178],[-56.979297,2.513232],[-56.945215,2.456836],[-56.931494,2.395361],[-56.886426,2.325977],[-56.840527,2.277148],[-56.819824,2.22666],[-56.761133,2.114893],[-56.704346,2.036475],[-56.627197,2.016016],[-56.562695,2.005078],[-56.522363,1.974805],[-56.482812,1.942139],[-56.525488,1.927246],[-56.563574,1.907227],[-56.616455,1.922656],[-56.689844,1.914307],[-56.76626,1.892187],[-56.836719,1.88125],[-56.969531,1.916406],[-57.010059,1.92124],[-57.037598,1.936475],[-57.092676,2.005811],[-57.118896,2.013965],[-57.1896,1.981592],[-57.275586,1.959229],[-57.31748,1.963477],[-57.366797,1.940137],[-57.412695,1.908936],[-57.500439,1.773828],[-57.545752,1.726074],[-57.594434,1.704102],[-57.691748,1.704785],[-57.795654,1.7],[-57.873437,1.667285],[-57.946338,1.650586],[-57.982812,1.648438],[-57.995117,1.574316],[-58.011768,1.539941],[-58.034668,1.520264],[-58.091309,1.514355],[-58.142236,1.516992],[-58.173096,1.547852],[-58.23042,1.563281],[-58.281152,1.574316],[-58.314209,1.591943],[-58.340674,1.587549],[-58.362695,1.556689],[-58.380371,1.530225],[-58.395801,1.481738],[-58.472949,1.46626],[-58.506055,1.438672],[-58.486865,1.347754],[-58.495703,1.312256],[-58.511865,1.284668],[-58.605078,1.27915],[-58.684619,1.281055],[-58.730322,1.24751],[-58.787207,1.208496],[-58.821777,1.201221],[-58.8625,1.203613],[-58.916602,1.248877],[-58.968506,1.30459],[-59.100391,1.343652],[-59.231201,1.376025],[-59.316992,1.4646],[-59.337256,1.508203],[-59.377686,1.527344],[-59.479443,1.632422],[-59.535693,1.7],[-59.596631,1.718018],[-59.666602,1.746289],[-59.66377,1.795215],[-59.668506,1.842334],[-59.698535,1.861475],[-59.740723,1.87417],[-59.756201,1.900635],[-59.751758,1.962402],[-59.743506,2.121631],[-59.755225,2.274121],[-59.849121,2.327051],[-59.889648,2.362939],[-59.960791,2.588379],[-59.994336,2.68999],[-59.995898,2.76543],[-59.972314,2.990479],[-59.945654,3.087842],[-59.873047,3.283105],[-59.831152,3.349219],[-59.828809,3.398584],[-59.833057,3.462158],[-59.854395,3.5875],[-59.731641,3.666553],[-59.679004,3.699805],[-59.670215,3.752734],[-59.604443,3.819678],[-59.575391,3.883447],[-59.551123,3.933545],[-59.557764,3.96001],[-59.586426,3.975391],[-59.620215,4.023145],[-59.691211,4.1604],[-59.716895,4.188184],[-59.738574,4.226758],[-59.72749,4.287646],[-59.699707,4.353516],[-59.703271,4.381104],[-59.745801,4.41665],[-59.83335,4.475928],[-59.906104,4.480322],[-59.962354,4.501709],[-60.04502,4.50459],[-60.111133,4.511182],[-60.148633,4.533252],[-60.140918,4.569629],[-60.124561,4.597656],[-60.068945,4.66665],[-60.031787,4.740527],[-60.026758,4.812695],[-60.015479,4.90752],[-59.999365,4.989844],[-59.990674,5.082861],[-60.078076,5.143994],[-60.105957,5.194238],[-60.142041,5.238818],[-60.181738,5.238818],[-60.24165,5.257959],[-60.335205,5.199316],[-60.408789,5.210156],[-60.459521,5.188086],[-60.576416,5.19248],[-60.651367,5.221143],[-60.742139,5.202051]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Guinea-Bissau","SOV_A3":"GNB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Guinea-Bissau","ADM0_A3":"GNB","GEOU_DIF":0,"GEOUNIT":"Guinea-Bissau","GU_A3":"GNB","SU_DIF":0,"SUBUNIT":"Guinea-Bissau","SU_A3":"GNB","BRK_DIFF":0,"NAME":"Guinea-Bissau","NAME_LONG":"Guinea-Bissau","BRK_A3":"GNB","BRK_NAME":"Guinea-Bissau","BRK_GROUP":null,"ABBREV":"GnB.","POSTAL":"GW","FORMAL_EN":"Republic of Guinea-Bissau","FORMAL_FR":null,"NAME_CIAWF":"Guinea-Bissau","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Guinea-Bissau","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":5,"MAPCOLOR9":3,"MAPCOLOR13":4,"POP_EST":1920922,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":1339,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"PU","ISO_A2":"GW","ISO_A2_EH":"GW","ISO_A3":"GNB","ISO_A3_EH":"GNB","ISO_N3":"624","ISO_N3_EH":"624","UN_A3":"624","WB_A2":"GW","WB_A3":"GNB","WOE_ID":23424929,"WOE_ID_EH":23424929,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GNB","ADM0_DIFF":null,"ADM0_TLC":"GNB","ADM0_A3_US":"GNB","ADM0_A3_FR":"GNB","ADM0_A3_RU":"GNB","ADM0_A3_ES":"GNB","ADM0_A3_CN":"GNB","ADM0_A3_TW":"GNB","ADM0_A3_IN":"GNB","ADM0_A3_NP":"GNB","ADM0_A3_PK":"GNB","ADM0_A3_DE":"GNB","ADM0_A3_GB":"GNB","ADM0_A3_BR":"GNB","ADM0_A3_IL":"GNB","ADM0_A3_PS":"GNB","ADM0_A3_SA":"GNB","ADM0_A3_EG":"GNB","ADM0_A3_MA":"GNB","ADM0_A3_PT":"GNB","ADM0_A3_AR":"GNB","ADM0_A3_JP":"GNB","ADM0_A3_KO":"GNB","ADM0_A3_VN":"GNB","ADM0_A3_TR":"GNB","ADM0_A3_ID":"GNB","ADM0_A3_PL":"GNB","ADM0_A3_GR":"GNB","ADM0_A3_IT":"GNB","ADM0_A3_NL":"GNB","ADM0_A3_SE":"GNB","ADM0_A3_BD":"GNB","ADM0_A3_UA":"GNB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":13,"LONG_LEN":13,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-14.52413,"LABEL_Y":12.163712,"NE_ID":1159320799,"WIKIDATAID":"Q1007","NAME_AR":"غينيا بيساو","NAME_BN":"গিনি-বিসাউ","NAME_DE":"Guinea-Bissau","NAME_EN":"Guinea-Bissau","NAME_ES":"Guinea-Bisáu","NAME_FA":"گینه بیسائو","NAME_FR":"Guinée-Bissau","NAME_EL":"Γουινέα-Μπισσάου","NAME_HE":"גינאה ביסאו","NAME_HI":"गिनी-बिसाऊ","NAME_HU":"Bissau-Guinea","NAME_ID":"Guinea-Bissau","NAME_IT":"Guinea-Bissau","NAME_JA":"ギニアビサウ","NAME_KO":"기니비사우","NAME_NL":"Guinee-Bissau","NAME_PL":"Gwinea Bissau","NAME_PT":"Guiné-Bissau","NAME_RU":"Гвинея-Бисау","NAME_SV":"Guinea-Bissau","NAME_TR":"Gine-Bissau","NAME_UK":"Гвінея-Бісау","NAME_UR":"گنی بساؤ","NAME_VI":"Guiné-Bissau","NAME_ZH":"几内亚比绍","NAME_ZHT":"幾內亞比索","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-16.711816,10.940137,-13.673535,12.679932],"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.711816,12.354834],[-16.656934,12.364355],[-16.521338,12.348633],[-16.416309,12.367676],[-16.342285,12.399512],[-16.241504,12.443311],[-16.144189,12.457422],[-15.839551,12.437891],[-15.574805,12.490381],[-15.37793,12.588965],[-15.196094,12.679932],[-14.960596,12.678955],[-14.708154,12.677979],[-14.349219,12.676416],[-14.064844,12.675293],[-13.729248,12.673926],[-13.732617,12.592822],[-13.673535,12.478516],[-13.682373,12.393408],[-13.70791,12.312695],[-13.730078,12.280811],[-13.759766,12.262354],[-13.849463,12.262988],[-13.8875,12.246875],[-13.947314,12.215234],[-13.948877,12.178174],[-13.901172,12.142871],[-13.861914,12.093311],[-13.816309,12.054492],[-13.737988,12.009668],[-13.730664,11.959863],[-13.728564,11.834131],[-13.732764,11.736035],[-13.953223,11.6646],[-14.122314,11.651953],[-14.265576,11.659912],[-14.327832,11.629785],[-14.452441,11.556201],[-14.604785,11.511621],[-14.682959,11.508496],[-14.720264,11.481934],[-14.779297,11.405518],[-14.944434,11.072168],[-14.999023,10.992188],[-15.043018,10.940137],[-15.09375,11.011035],[-15.05459,11.141943],[-15.096777,11.140039],[-15.181055,11.034229],[-15.222119,11.030908],[-15.216699,11.15625],[-15.263379,11.160889],[-15.31748,11.152002],[-15.393115,11.217236],[-15.400586,11.266211],[-15.394531,11.334473],[-15.348437,11.378076],[-15.354687,11.396338],[-15.39917,11.401465],[-15.448975,11.389746],[-15.479492,11.410303],[-15.429102,11.498877],[-15.252588,11.573291],[-15.16377,11.580957],[-15.072656,11.597803],[-15.122412,11.661572],[-15.230371,11.686768],[-15.316699,11.669189],[-15.359668,11.6229],[-15.412988,11.615234],[-15.501904,11.723779],[-15.500244,11.778369],[-15.467187,11.842822],[-15.415723,11.871777],[-15.21084,11.870947],[-15.133105,11.907324],[-15.101709,11.913965],[-15.071973,11.947021],[-15.078271,11.968994],[-15.111523,11.970264],[-15.188086,11.927295],[-15.434766,11.943555],[-15.513477,11.917578],[-15.650684,11.818359],[-15.819385,11.763477],[-15.941748,11.786621],[-15.902734,11.919678],[-15.920215,11.937793],[-15.958789,11.959619],[-16.138428,11.917285],[-16.274316,11.978125],[-16.328076,12.051611],[-16.318848,12.14375],[-16.254736,12.206055],[-16.24458,12.237109],[-16.312305,12.243018],[-16.436816,12.20415],[-16.711816,12.354834]]],[[[-16.114502,11.059424],[-16.194531,11.04458],[-16.231006,11.094238],[-16.236426,11.113428],[-16.194629,11.130127],[-16.175879,11.130811],[-16.144043,11.166846],[-16.104785,11.191016],[-16.087451,11.198779],[-16.067334,11.197217],[-16.052783,11.117529],[-16.072217,11.084082],[-16.114502,11.059424]]],[[[-15.895898,11.082471],[-15.905176,11.054736],[-15.963965,11.058984],[-15.950635,11.087109],[-15.963477,11.095312],[-15.946484,11.179736],[-15.937695,11.192773],[-15.909131,11.161328],[-15.905273,11.14834],[-15.895898,11.082471]]],[[[-15.725146,11.215479],[-15.725146,11.174512],[-15.76748,11.182275],[-15.779785,11.194531],[-15.754687,11.268701],[-15.71748,11.301758],[-15.671924,11.296484],[-15.65835,11.286475],[-15.667187,11.257861],[-15.687109,11.234326],[-15.725146,11.215479]]],[[[-15.553418,11.537012],[-15.562793,11.51377],[-15.619629,11.533496],[-15.536572,11.617627],[-15.482471,11.632324],[-15.484424,11.567529],[-15.526221,11.553857],[-15.553418,11.537012]]],[[[-15.901807,11.46582],[-15.94873,11.434424],[-15.997217,11.44917],[-16.023193,11.477148],[-16.019336,11.527295],[-15.964551,11.598291],[-15.915332,11.589111],[-15.901807,11.46582]]],[[[-15.986426,11.882031],[-16.03833,11.759717],[-16.102441,11.773193],[-16.147363,11.845996],[-16.152441,11.876807],[-16.021875,11.88667],[-15.986426,11.882031]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Guinea","SOV_A3":"GIN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Guinea","ADM0_A3":"GIN","GEOU_DIF":0,"GEOUNIT":"Guinea","GU_A3":"GIN","SU_DIF":0,"SUBUNIT":"Guinea","SU_A3":"GIN","BRK_DIFF":0,"NAME":"Guinea","NAME_LONG":"Guinea","BRK_A3":"GIN","BRK_NAME":"Guinea","BRK_GROUP":null,"ABBREV":"Gin.","POSTAL":"GN","FORMAL_EN":"Republic of Guinea","FORMAL_FR":null,"NAME_CIAWF":"Guinea","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Guinea","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":3,"MAPCOLOR9":7,"MAPCOLOR13":2,"POP_EST":12771246,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":12296,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"GV","ISO_A2":"GN","ISO_A2_EH":"GN","ISO_A3":"GIN","ISO_A3_EH":"GIN","ISO_N3":"324","ISO_N3_EH":"324","UN_A3":"324","WB_A2":"GN","WB_A3":"GIN","WOE_ID":23424835,"WOE_ID_EH":23424835,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GIN","ADM0_DIFF":null,"ADM0_TLC":"GIN","ADM0_A3_US":"GIN","ADM0_A3_FR":"GIN","ADM0_A3_RU":"GIN","ADM0_A3_ES":"GIN","ADM0_A3_CN":"GIN","ADM0_A3_TW":"GIN","ADM0_A3_IN":"GIN","ADM0_A3_NP":"GIN","ADM0_A3_PK":"GIN","ADM0_A3_DE":"GIN","ADM0_A3_GB":"GIN","ADM0_A3_BR":"GIN","ADM0_A3_IL":"GIN","ADM0_A3_PS":"GIN","ADM0_A3_SA":"GIN","ADM0_A3_EG":"GIN","ADM0_A3_MA":"GIN","ADM0_A3_PT":"GIN","ADM0_A3_AR":"GIN","ADM0_A3_JP":"GIN","ADM0_A3_KO":"GIN","ADM0_A3_VN":"GIN","ADM0_A3_TR":"GIN","ADM0_A3_ID":"GIN","ADM0_A3_PL":"GIN","ADM0_A3_GR":"GIN","ADM0_A3_IT":"GIN","ADM0_A3_NL":"GIN","ADM0_A3_SE":"GIN","ADM0_A3_BD":"GIN","ADM0_A3_UA":"GIN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-10.016402,"LABEL_Y":10.618516,"NE_ID":1159320795,"WIKIDATAID":"Q1006","NAME_AR":"غينيا","NAME_BN":"গিনি","NAME_DE":"Guinea","NAME_EN":"Guinea","NAME_ES":"Guinea","NAME_FA":"گینه","NAME_FR":"Guinée","NAME_EL":"Γουινέα","NAME_HE":"גינאה","NAME_HI":"गिनी","NAME_HU":"Guinea","NAME_ID":"Guinea","NAME_IT":"Guinea","NAME_JA":"ギニア","NAME_KO":"기니","NAME_NL":"Guinee","NAME_PL":"Gwinea","NAME_PT":"Guiné","NAME_RU":"Гвинея","NAME_SV":"Guinea","NAME_TR":"Gine","NAME_UK":"Гвінея","NAME_UR":"جمہوریہ گنی","NAME_VI":"Guinée","NAME_ZH":"几内亚","NAME_ZHT":"幾內亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-15.051221,7.215918,-7.681201,12.673926],"geometry":{"type":"Polygon","coordinates":[[[-10.283203,8.485156],[-10.360059,8.495508],[-10.394434,8.480957],[-10.496436,8.362109],[-10.557715,8.315674],[-10.604004,8.319482],[-10.652637,8.330273],[-10.686963,8.32168],[-10.712109,8.335254],[-10.702148,8.364209],[-10.677344,8.400586],[-10.628467,8.52998],[-10.503125,8.660303],[-10.500537,8.687549],[-10.551758,8.76377],[-10.605615,8.867578],[-10.605762,8.978809],[-10.615967,9.05918],[-10.726855,9.081689],[-10.747021,9.095264],[-10.749951,9.122363],[-10.72124,9.194482],[-10.687646,9.261133],[-10.682715,9.289355],[-10.690527,9.314258],[-10.758594,9.385352],[-10.864795,9.516455],[-10.963086,9.661621],[-11.047461,9.786328],[-11.115674,9.843164],[-11.180859,9.925342],[-11.205664,9.977734],[-11.273633,9.996533],[-11.471924,9.995459],[-11.710059,9.994189],[-11.911084,9.993018],[-11.922754,9.922754],[-12.142334,9.875391],[-12.277734,9.929785],[-12.427979,9.898145],[-12.501465,9.862158],[-12.524365,9.787207],[-12.557861,9.70498],[-12.589844,9.671143],[-12.603613,9.634229],[-12.622168,9.600635],[-12.65166,9.561914],[-12.684424,9.48418],[-12.755859,9.373584],[-12.831104,9.302246],[-12.958789,9.26333],[-12.998633,9.146924],[-13.028027,9.103564],[-13.077295,9.069629],[-13.129883,9.047559],[-13.178369,9.060889],[-13.234229,9.070117],[-13.292676,9.049219],[-13.302637,9.078369],[-13.269482,9.170557],[-13.295898,9.218506],[-13.396094,9.314307],[-13.405566,9.360645],[-13.436279,9.420312],[-13.568262,9.543408],[-13.691357,9.535791],[-13.657129,9.639111],[-13.658691,9.776367],[-13.700488,9.85127],[-13.689795,9.927783],[-13.712646,9.922949],[-13.753711,9.870264],[-13.820117,9.887207],[-13.954639,9.968701],[-14.021875,10.047852],[-14.029932,10.115137],[-14.04502,10.14126],[-14.086279,10.127246],[-14.17041,10.128613],[-14.426904,10.24834],[-14.60957,10.549854],[-14.613623,10.617822],[-14.587402,10.734912],[-14.593506,10.766699],[-14.677344,10.688965],[-14.693359,10.741016],[-14.757373,10.862061],[-14.775928,10.931641],[-14.837451,10.962549],[-14.886719,10.968066],[-14.924805,10.944922],[-14.975,10.803418],[-15.012402,10.804346],[-15.051221,10.83457],[-15.043018,10.940137],[-14.999023,10.992188],[-14.944434,11.072168],[-14.779297,11.405518],[-14.720264,11.481934],[-14.682959,11.508496],[-14.604785,11.511621],[-14.452441,11.556201],[-14.327832,11.629785],[-14.265576,11.659912],[-14.122314,11.651953],[-13.953223,11.6646],[-13.732764,11.736035],[-13.728564,11.834131],[-13.730664,11.959863],[-13.737988,12.009668],[-13.816309,12.054492],[-13.861914,12.093311],[-13.901172,12.142871],[-13.948877,12.178174],[-13.947314,12.215234],[-13.8875,12.246875],[-13.849463,12.262988],[-13.759766,12.262354],[-13.730078,12.280811],[-13.70791,12.312695],[-13.682373,12.393408],[-13.673535,12.478516],[-13.732617,12.592822],[-13.729248,12.673926],[-13.405762,12.662256],[-13.372559,12.653613],[-13.228076,12.6396],[-13.138477,12.639746],[-13.08291,12.633545],[-13.059766,12.615039],[-13.064404,12.581055],[-13.079834,12.536279],[-13.061279,12.48999],[-13.011914,12.477637],[-12.985645,12.49165],[-12.960547,12.514355],[-12.930713,12.532275],[-12.888184,12.52002],[-12.797314,12.451904],[-12.713037,12.433154],[-12.620801,12.396191],[-12.534229,12.375781],[-12.457373,12.378369],[-12.399072,12.340088],[-12.291211,12.328027],[-12.151953,12.376611],[-12.042383,12.398047],[-11.888574,12.40332],[-11.808105,12.387305],[-11.573682,12.426318],[-11.456738,12.417578],[-11.389404,12.404395],[-11.418066,12.377686],[-11.447559,12.319238],[-11.474561,12.247168],[-11.502197,12.198633],[-11.492432,12.166943],[-11.414648,12.104004],[-11.305176,12.01543],[-11.260693,12.004053],[-11.209668,12.024854],[-11.129248,12.09502],[-11.06582,12.170801],[-11.004541,12.20752],[-10.933203,12.205176],[-10.876172,12.151855],[-10.806494,12.034277],[-10.743018,11.927246],[-10.734912,11.916455],[-10.709229,11.89873],[-10.677344,11.899414],[-10.643701,11.925537],[-10.618994,11.941211],[-10.589502,11.990283],[-10.46582,12.138672],[-10.372754,12.179541],[-10.339893,12.190283],[-10.274854,12.212646],[-10.16709,12.177441],[-10.010645,12.116455],[-9.820703,12.04248],[-9.754004,12.029932],[-9.714746,12.04248],[-9.658301,12.143115],[-9.587744,12.182471],[-9.486816,12.228662],[-9.40498,12.252441],[-9.358105,12.25542],[-9.340186,12.282764],[-9.331543,12.32373],[-9.34082,12.366016],[-9.393652,12.442236],[-9.395361,12.464648],[-9.365186,12.479297],[-9.3,12.490283],[-9.215527,12.482861],[-9.120459,12.449951],[-9.043066,12.402344],[-8.998926,12.345898],[-8.95083,12.225586],[-8.913867,12.108545],[-8.818311,11.92251],[-8.820068,11.807129],[-8.822021,11.673242],[-8.779736,11.648242],[-8.733105,11.6375],[-8.711426,11.617773],[-8.664941,11.51499],[-8.621143,11.485107],[-8.56875,11.478076],[-8.470703,11.412207],[-8.407471,11.386279],[-8.398535,11.366553],[-8.400684,11.339404],[-8.425293,11.304736],[-8.463525,11.280713],[-8.520312,11.235937],[-8.567285,11.177002],[-8.663916,11.03584],[-8.666699,11.009473],[-8.646191,10.990479],[-8.606201,10.986963],[-8.563525,10.99668],[-8.474707,11.048389],[-8.404492,11.029932],[-8.337402,10.990625],[-8.312744,10.949756],[-8.306348,10.896094],[-8.32168,10.826953],[-8.324121,10.749512],[-8.301562,10.617578],[-8.26665,10.485986],[-8.231494,10.437988],[-8.007275,10.321875],[-7.985693,10.278418],[-7.974463,10.229541],[-7.990625,10.1625],[-8.013525,10.125293],[-8.077832,10.06709],[-8.136621,10.02207],[-8.155176,9.973193],[-8.14585,9.881738],[-8.146045,9.674805],[-8.136963,9.495703],[-8.088672,9.430664],[-8.031006,9.397656],[-7.962695,9.403857],[-7.896191,9.415869],[-7.9,9.308691],[-7.918066,9.188525],[-7.839404,9.151611],[-7.799805,9.115039],[-7.777979,9.080859],[-7.9021,9.01709],[-7.938184,8.979785],[-7.95498,8.879443],[-7.950977,8.786816],[-7.784033,8.720605],[-7.71958,8.643018],[-7.690967,8.5625],[-7.681201,8.410352],[-7.696094,8.375586],[-7.738965,8.375244],[-7.787402,8.421973],[-7.823584,8.467676],[-7.86875,8.467529],[-7.953125,8.477734],[-8.049121,8.495312],[-8.167773,8.490674],[-8.209961,8.483252],[-8.236963,8.455664],[-8.244141,8.40791],[-8.256104,8.253711],[-8.217139,8.219678],[-8.140625,8.181445],[-8.090527,8.165137],[-8.048584,8.169727],[-8.016748,8.144922],[-8.009863,8.078516],[-8.031738,8.029736],[-8.073828,7.984424],[-8.126855,7.867725],[-8.117822,7.824023],[-8.11543,7.760742],[-8.205957,7.590234],[-8.231885,7.556738],[-8.351758,7.590576],[-8.42998,7.601855],[-8.486426,7.558496],[-8.522266,7.585547],[-8.564404,7.625098],[-8.578857,7.677051],[-8.607324,7.687939],[-8.659766,7.688379],[-8.708301,7.658887],[-8.729443,7.605273],[-8.732617,7.543555],[-8.740234,7.495703],[-8.769141,7.466797],[-8.82793,7.391943],[-8.855518,7.322803],[-8.889648,7.262695],[-8.938428,7.266162],[-8.960986,7.274609],[-8.976562,7.258887],[-9.052344,7.225488],[-9.117578,7.215918],[-9.134814,7.250586],[-9.172852,7.278418],[-9.215186,7.333301],[-9.263281,7.377734],[-9.355322,7.408691],[-9.39165,7.394922],[-9.435107,7.398438],[-9.463818,7.415869],[-9.459766,7.442529],[-9.411475,7.509961],[-9.383984,7.571875],[-9.368945,7.639551],[-9.369141,7.703809],[-9.394922,7.794629],[-9.436328,7.866699],[-9.446387,7.908496],[-9.441553,7.96792],[-9.451123,8.023242],[-9.464551,8.0521],[-9.471143,8.106982],[-9.484131,8.156982],[-9.508496,8.17627],[-9.522217,8.26001],[-9.518262,8.346094],[-9.553906,8.378613],[-9.610156,8.402344],[-9.643213,8.436035],[-9.663574,8.473535],[-9.683887,8.484424],[-9.701172,8.482178],[-9.716895,8.458887],[-9.735596,8.453955],[-9.768262,8.53457],[-9.781982,8.537695],[-9.804736,8.519189],[-10.064355,8.429883],[-10.075684,8.4646],[-10.097656,8.505859],[-10.147412,8.519727],[-10.233057,8.488818],[-10.283203,8.485156]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Guatemala","SOV_A3":"GTM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Guatemala","ADM0_A3":"GTM","GEOU_DIF":0,"GEOUNIT":"Guatemala","GU_A3":"GTM","SU_DIF":0,"SUBUNIT":"Guatemala","SU_A3":"GTM","BRK_DIFF":0,"NAME":"Guatemala","NAME_LONG":"Guatemala","BRK_A3":"GTM","BRK_NAME":"Guatemala","BRK_GROUP":null,"ABBREV":"Guat.","POSTAL":"GT","FORMAL_EN":"Republic of Guatemala","FORMAL_FR":null,"NAME_CIAWF":"Guatemala","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Guatemala","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":3,"MAPCOLOR9":3,"MAPCOLOR13":6,"POP_EST":16604026,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":76710,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"GT","ISO_A2":"GT","ISO_A2_EH":"GT","ISO_A3":"GTM","ISO_A3_EH":"GTM","ISO_N3":"320","ISO_N3_EH":"320","UN_A3":"320","WB_A2":"GT","WB_A3":"GTM","WOE_ID":23424834,"WOE_ID_EH":23424834,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GTM","ADM0_DIFF":null,"ADM0_TLC":"GTM","ADM0_A3_US":"GTM","ADM0_A3_FR":"GTM","ADM0_A3_RU":"GTM","ADM0_A3_ES":"GTM","ADM0_A3_CN":"GTM","ADM0_A3_TW":"GTM","ADM0_A3_IN":"GTM","ADM0_A3_NP":"GTM","ADM0_A3_PK":"GTM","ADM0_A3_DE":"GTM","ADM0_A3_GB":"GTM","ADM0_A3_BR":"GTM","ADM0_A3_IL":"GTM","ADM0_A3_PS":"GTM","ADM0_A3_SA":"GTM","ADM0_A3_EG":"GTM","ADM0_A3_MA":"GTM","ADM0_A3_PT":"GTM","ADM0_A3_AR":"GTM","ADM0_A3_JP":"GTM","ADM0_A3_KO":"GTM","ADM0_A3_VN":"GTM","ADM0_A3_TR":"GTM","ADM0_A3_ID":"GTM","ADM0_A3_PL":"GTM","ADM0_A3_GR":"GTM","ADM0_A3_IT":"GTM","ADM0_A3_NL":"GTM","ADM0_A3_SE":"GTM","ADM0_A3_BD":"GTM","ADM0_A3_UA":"GTM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":5,"TINY":4,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-90.497134,"LABEL_Y":14.982133,"NE_ID":1159320815,"WIKIDATAID":"Q774","NAME_AR":"غواتيمالا","NAME_BN":"গুয়াতেমালা","NAME_DE":"Guatemala","NAME_EN":"Guatemala","NAME_ES":"Guatemala","NAME_FA":"گواتمالا","NAME_FR":"Guatemala","NAME_EL":"Γουατεμάλα","NAME_HE":"גואטמלה","NAME_HI":"ग्वाटेमाला","NAME_HU":"Guatemala","NAME_ID":"Guatemala","NAME_IT":"Guatemala","NAME_JA":"グアテマラ","NAME_KO":"과테말라","NAME_NL":"Guatemala","NAME_PL":"Gwatemala","NAME_PT":"Guatemala","NAME_RU":"Гватемала","NAME_SV":"Guatemala","NAME_TR":"Guatemala","NAME_UK":"Гватемала","NAME_UR":"گواتیمالا","NAME_VI":"Guatemala","NAME_ZH":"危地马拉","NAME_ZHT":"瓜地馬拉","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-92.235156,13.736523,-88.22832,17.816406],"geometry":{"type":"Polygon","coordinates":[[[-92.235156,14.54541],[-92.209033,14.570996],[-92.187061,14.630078],[-92.159912,14.691016],[-92.176465,14.761328],[-92.186377,14.818359],[-92.155664,14.901318],[-92.158545,14.963574],[-92.144238,15.001953],[-92.09873,15.026758],[-92.074805,15.074219],[-92.204346,15.237695],[-92.204248,15.275],[-92.187158,15.320898],[-92.082129,15.495557],[-91.957227,15.703223],[-91.819434,15.932373],[-91.736572,16.070166],[-91.433984,16.070459],[-91.233789,16.070654],[-90.97959,16.070801],[-90.703223,16.071045],[-90.521973,16.071191],[-90.447168,16.072705],[-90.459863,16.162354],[-90.450146,16.261377],[-90.416992,16.351318],[-90.416992,16.391016],[-90.471094,16.439551],[-90.575781,16.467822],[-90.634082,16.510742],[-90.634375,16.565137],[-90.659961,16.630908],[-90.710693,16.708105],[-90.816016,16.787109],[-90.97583,16.867822],[-91.111865,16.976172],[-91.22417,17.112256],[-91.319189,17.199805],[-91.392334,17.236426],[-91.409619,17.255859],[-91.195508,17.254102],[-90.992969,17.252441],[-90.991602,17.447461],[-90.99043,17.620752],[-90.98916,17.816406],[-90.622021,17.816113],[-90.183594,17.815723],[-89.728809,17.815332],[-89.371533,17.81499],[-89.161475,17.814844],[-89.171094,17.572266],[-89.182178,17.291211],[-89.190381,17.084668],[-89.20127,16.808984],[-89.212451,16.527148],[-89.227637,16.142822],[-89.2375,15.894434],[-89.232812,15.888672],[-89.113574,15.900684],[-88.937158,15.889844],[-88.894043,15.890625],[-88.83999,15.868994],[-88.79834,15.8625],[-88.708643,15.806543],[-88.603369,15.76416],[-88.53623,15.849609],[-88.571582,15.901074],[-88.597998,15.927344],[-88.593945,15.950293],[-88.22832,15.729004],[-88.271436,15.694873],[-88.364551,15.616016],[-88.533301,15.481201],[-88.684473,15.360498],[-88.829932,15.251025],[-88.960986,15.152441],[-88.976416,15.142676],[-89.142578,15.072314],[-89.170312,15.039893],[-89.206104,14.900586],[-89.222363,14.866064],[-89.192236,14.788721],[-89.162207,14.669238],[-89.171777,14.606885],[-89.286719,14.52998],[-89.339404,14.460742],[-89.362598,14.416016],[-89.383252,14.427637],[-89.418848,14.431104],[-89.500879,14.41377],[-89.540527,14.409912],[-89.573633,14.390088],[-89.576953,14.34707],[-89.555029,14.277246],[-89.547168,14.24126],[-89.570264,14.224658],[-89.671289,14.182715],[-89.711133,14.141309],[-89.749365,14.077002],[-89.793701,14.050098],[-89.839941,14.055078],[-89.872705,14.045605],[-89.942676,13.997363],[-90.048145,13.904053],[-90.104736,13.834766],[-90.105908,13.783008],[-90.095215,13.736523],[-90.479102,13.900928],[-90.606934,13.929004],[-91.146045,13.925586],[-91.377344,13.990186],[-91.640918,14.114941],[-91.819092,14.228223],[-92.235156,14.54541]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Grenada","SOV_A3":"GRD","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Grenada","ADM0_A3":"GRD","GEOU_DIF":0,"GEOUNIT":"Grenada","GU_A3":"GRD","SU_DIF":0,"SUBUNIT":"Grenada","SU_A3":"GRD","BRK_DIFF":0,"NAME":"Grenada","NAME_LONG":"Grenada","BRK_A3":"GRD","BRK_NAME":"Grenada","BRK_GROUP":null,"ABBREV":"Gren.","POSTAL":"GD","FORMAL_EN":"Grenada","FORMAL_FR":null,"NAME_CIAWF":"Grenada","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Grenada","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":4,"MAPCOLOR9":3,"MAPCOLOR13":6,"POP_EST":112003,"POP_RANK":9,"POP_YEAR":2019,"GDP_MD":1210,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"GJ","ISO_A2":"GD","ISO_A2_EH":"GD","ISO_A3":"GRD","ISO_A3_EH":"GRD","ISO_N3":"308","ISO_N3_EH":"308","UN_A3":"308","WB_A2":"GD","WB_A3":"GRD","WOE_ID":23424826,"WOE_ID_EH":23424826,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GRD","ADM0_DIFF":null,"ADM0_TLC":"GRD","ADM0_A3_US":"GRD","ADM0_A3_FR":"GRD","ADM0_A3_RU":"GRD","ADM0_A3_ES":"GRD","ADM0_A3_CN":"GRD","ADM0_A3_TW":"GRD","ADM0_A3_IN":"GRD","ADM0_A3_NP":"GRD","ADM0_A3_PK":"GRD","ADM0_A3_DE":"GRD","ADM0_A3_GB":"GRD","ADM0_A3_BR":"GRD","ADM0_A3_IL":"GRD","ADM0_A3_PS":"GRD","ADM0_A3_SA":"GRD","ADM0_A3_EG":"GRD","ADM0_A3_MA":"GRD","ADM0_A3_PT":"GRD","ADM0_A3_AR":"GRD","ADM0_A3_JP":"GRD","ADM0_A3_KO":"GRD","ADM0_A3_VN":"GRD","ADM0_A3_TR":"GRD","ADM0_A3_ID":"GRD","ADM0_A3_PL":"GRD","ADM0_A3_GR":"GRD","ADM0_A3_IT":"GRD","ADM0_A3_NL":"GRD","ADM0_A3_SE":"GRD","ADM0_A3_BD":"GRD","ADM0_A3_UA":"GRD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-61.680461,"LABEL_Y":12.113156,"NE_ID":1159320813,"WIKIDATAID":"Q769","NAME_AR":"غرينادا","NAME_BN":"গ্রেনাডা","NAME_DE":"Grenada","NAME_EN":"Grenada","NAME_ES":"Granada","NAME_FA":"گرنادا","NAME_FR":"Grenade","NAME_EL":"Γρενάδα","NAME_HE":"גרנדה","NAME_HI":"ग्रेनाडा","NAME_HU":"Grenada","NAME_ID":"Grenada","NAME_IT":"Grenada","NAME_JA":"グレナダ","NAME_KO":"그레나다","NAME_NL":"Grenada","NAME_PL":"Grenada","NAME_PT":"Granada","NAME_RU":"Гренада","NAME_SV":"Grenada","NAME_TR":"Grenada","NAME_UK":"Гренада","NAME_UR":"گریناڈا","NAME_VI":"Grenada","NAME_ZH":"格林纳达","NAME_ZHT":"格瑞那達","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.782178,12.008447,-61.607031,12.237012],"geometry":{"type":"Polygon","coordinates":[[[-61.715527,12.012646],[-61.782178,12.008447],[-61.755762,12.045459],[-61.749902,12.108447],[-61.71499,12.185156],[-61.660449,12.237012],[-61.607031,12.223291],[-61.627148,12.053955],[-61.715527,12.012646]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":3,"SOVEREIGNT":"Greece","SOV_A3":"GRC","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Greece","ADM0_A3":"GRC","GEOU_DIF":0,"GEOUNIT":"Greece","GU_A3":"GRC","SU_DIF":0,"SUBUNIT":"Greece","SU_A3":"GRC","BRK_DIFF":0,"NAME":"Greece","NAME_LONG":"Greece","BRK_A3":"GRC","BRK_NAME":"Greece","BRK_GROUP":null,"ABBREV":"Greece","POSTAL":"GR","FORMAL_EN":"Hellenic Republic","FORMAL_FR":null,"NAME_CIAWF":"Greece","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Greece","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":9,"POP_EST":10716322,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":209852,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"GR","ISO_A2":"GR","ISO_A2_EH":"GR","ISO_A3":"GRC","ISO_A3_EH":"GRC","ISO_N3":"300","ISO_N3_EH":"300","UN_A3":"300","WB_A2":"GR","WB_A3":"GRC","WOE_ID":23424833,"WOE_ID_EH":23424833,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GRC","ADM0_DIFF":null,"ADM0_TLC":"GRC","ADM0_A3_US":"GRC","ADM0_A3_FR":"GRC","ADM0_A3_RU":"GRC","ADM0_A3_ES":"GRC","ADM0_A3_CN":"GRC","ADM0_A3_TW":"GRC","ADM0_A3_IN":"GRC","ADM0_A3_NP":"GRC","ADM0_A3_PK":"GRC","ADM0_A3_DE":"GRC","ADM0_A3_GB":"GRC","ADM0_A3_BR":"GRC","ADM0_A3_IL":"GRC","ADM0_A3_PS":"GRC","ADM0_A3_SA":"GRC","ADM0_A3_EG":"GRC","ADM0_A3_MA":"GRC","ADM0_A3_PT":"GRC","ADM0_A3_AR":"GRC","ADM0_A3_JP":"GRC","ADM0_A3_KO":"GRC","ADM0_A3_VN":"GRC","ADM0_A3_TR":"GRC","ADM0_A3_ID":"GRC","ADM0_A3_PL":"GRC","ADM0_A3_GR":"GRC","ADM0_A3_IT":"GRC","ADM0_A3_NL":"GRC","ADM0_A3_SE":"GRC","ADM0_A3_BD":"GRC","ADM0_A3_UA":"GRC","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":8,"LABEL_X":21.72568,"LABEL_Y":39.492763,"NE_ID":1159320811,"WIKIDATAID":"Q41","NAME_AR":"اليونان","NAME_BN":"গ্রিস","NAME_DE":"Griechenland","NAME_EN":"Greece","NAME_ES":"Grecia","NAME_FA":"یونان","NAME_FR":"Grèce","NAME_EL":"Ελλάδα","NAME_HE":"יוון","NAME_HI":"यूनान","NAME_HU":"Görögország","NAME_ID":"Yunani","NAME_IT":"Grecia","NAME_JA":"ギリシャ","NAME_KO":"그리스","NAME_NL":"Griekenland","NAME_PL":"Grecja","NAME_PT":"Grécia","NAME_RU":"Греция","NAME_SV":"Grekland","NAME_TR":"Yunanistan","NAME_UK":"Греція","NAME_UR":"یونان","NAME_VI":"Hy Lạp","NAME_ZH":"希腊","NAME_ZHT":"希臘","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[19.646484,34.934473,28.231836,41.743799],"geometry":{"type":"MultiPolygon","coordinates":[[[[27.860156,36.553906],[27.838281,36.537988],[27.788086,36.583691],[27.785742,36.60752],[27.836816,36.634863],[27.8625,36.641162],[27.869824,36.62251],[27.869043,36.582666],[27.860156,36.553906]]],[[[20.612305,38.38335],[20.624707,38.267871],[20.695215,38.246191],[20.788867,38.14209],[20.780762,38.088818],[20.761328,38.070557],[20.606152,38.119727],[20.568945,38.097656],[20.523535,38.106641],[20.495508,38.16416],[20.49873,38.184375],[20.47334,38.218799],[20.452148,38.23418],[20.391016,38.188428],[20.352539,38.179883],[20.352246,38.221729],[20.408691,38.336768],[20.435059,38.356201],[20.481445,38.318213],[20.519629,38.332324],[20.54834,38.394531],[20.550293,38.456543],[20.563184,38.474951],[20.612305,38.38335]]],[[[20.888477,37.805371],[20.993945,37.708008],[20.909082,37.732129],[20.818555,37.664746],[20.703809,37.743457],[20.635059,37.823145],[20.619531,37.855029],[20.691504,37.929541],[20.758691,37.852979],[20.839844,37.840723],[20.888477,37.805371]]],[[[20.686719,38.608691],[20.647852,38.600977],[20.614355,38.60625],[20.583984,38.601709],[20.554688,38.582568],[20.55791,38.661865],[20.59248,38.760156],[20.634668,38.817578],[20.694141,38.844238],[20.719629,38.79917],[20.714844,38.63833],[20.686719,38.608691]]],[[[20.758691,38.329443],[20.709277,38.318604],[20.646387,38.414307],[20.623633,38.480322],[20.649707,38.483984],[20.674805,38.476318],[20.70127,38.451416],[20.701074,38.425928],[20.711621,38.398633],[20.73916,38.365771],[20.758691,38.329443]]],[[[20.07793,39.432715],[20.099609,39.376611],[19.975,39.411426],[19.883984,39.461523],[19.808887,39.585303],[19.648926,39.726172],[19.646484,39.76709],[19.707324,39.798096],[19.838574,39.820117],[19.891699,39.797266],[19.926074,39.77373],[19.936816,39.746729],[19.862207,39.692627],[19.84668,39.668115],[19.904102,39.619482],[19.903125,39.6],[19.927344,39.505908],[19.955273,39.47041],[20.027734,39.44209],[20.07793,39.432715]]],[[[23.41543,38.958643],[23.471973,38.850098],[23.525,38.813477],[23.63623,38.770215],[23.688477,38.764697],[23.878223,38.686572],[24.099023,38.670996],[24.127539,38.648486],[24.154688,38.588281],[24.199707,38.541016],[24.211035,38.504248],[24.1875,38.463428],[24.220117,38.338623],[24.275781,38.22002],[24.359668,38.1625],[24.463965,38.145117],[24.563281,38.14751],[24.588379,38.123975],[24.578516,38.020166],[24.536523,37.979736],[24.502344,37.969922],[24.472656,37.980518],[24.445801,38.00498],[24.416504,38.016553],[24.359473,38.018555],[24.317773,38.060352],[24.212012,38.117529],[24.192578,38.15166],[24.189063,38.204297],[24.144141,38.243066],[24.102832,38.316846],[24.063574,38.337207],[24.041895,38.374121],[24.040137,38.38999],[23.88623,38.400732],[23.758789,38.401221],[23.650781,38.443066],[23.617383,38.552539],[23.55332,38.581982],[23.505273,38.612939],[23.465234,38.655859],[23.364063,38.73501],[23.252148,38.801221],[23.143945,38.844824],[23.029102,38.873389],[22.935742,38.839648],[22.881348,38.847656],[22.870313,38.870508],[22.986328,38.915918],[23.145801,39.002686],[23.258203,39.031348],[23.312695,39.034912],[23.41543,38.958643]]],[[[23.779785,39.114404],[23.735156,39.080566],[23.666113,39.095361],[23.593945,39.208594],[23.779785,39.114404]]],[[[23.887988,39.158301],[23.841211,39.146582],[23.888086,39.226367],[23.970898,39.267725],[23.939746,39.200537],[23.887988,39.158301]]],[[[24.674707,38.809229],[24.569043,38.784814],[24.541016,38.788672],[24.564551,38.819434],[24.566406,38.832373],[24.461035,38.888623],[24.473438,38.96167],[24.485645,38.980273],[24.564063,38.942236],[24.58125,38.878857],[24.674707,38.809229]]],[[[24.774219,40.615186],[24.645898,40.579443],[24.515527,40.647021],[24.516699,40.687207],[24.585547,40.76875],[24.62334,40.79292],[24.719141,40.786279],[24.773633,40.730273],[24.786328,40.703857],[24.768652,40.658887],[24.774219,40.615186]]],[[[23.550977,37.925879],[23.511426,37.901172],[23.466797,37.902393],[23.435254,37.911475],[23.419336,37.93125],[23.439063,37.940674],[23.462207,37.980371],[23.483691,37.991113],[23.515527,37.986035],[23.534863,37.970215],[23.550977,37.925879]]],[[[23.053809,36.189795],[23.042188,36.146387],[22.939453,36.176221],[22.91084,36.220996],[22.905664,36.320312],[22.932617,36.36875],[22.950488,36.383936],[22.997852,36.328125],[23.09707,36.246582],[23.053809,36.189795]]],[[[27.176074,35.465283],[27.137891,35.409082],[27.099121,35.456445],[27.11582,35.511133],[27.070703,35.597754],[27.156055,35.72627],[27.158008,35.788672],[27.223145,35.820459],[27.207031,35.714453],[27.157227,35.629492],[27.208887,35.558936],[27.233594,35.478564],[27.176074,35.465283]]],[[[27.019727,36.959033],[26.919922,36.945215],[26.937695,37.024609],[26.888672,37.087256],[26.966602,37.0521],[27.016016,37.009668],[27.040137,37.001562],[27.03457,36.975977],[27.019727,36.959033]]],[[[26.949609,36.7271],[26.918359,36.725928],[26.955566,36.774219],[27.061133,36.840381],[27.214941,36.898633],[27.265625,36.905127],[27.352148,36.868896],[27.193164,36.809131],[27.150977,36.777588],[27.033594,36.770752],[26.949609,36.7271]]],[[[25.545898,36.967578],[25.456738,36.929688],[25.395898,36.984375],[25.361914,37.07041],[25.525293,37.196387],[25.564355,37.185107],[25.587891,37.152539],[25.584277,37.039307],[25.545898,36.967578]]],[[[25.278906,37.068408],[25.199414,36.991309],[25.133301,36.999658],[25.105469,37.034961],[25.146484,37.107422],[25.235059,37.148535],[25.275293,37.137842],[25.271484,37.08418],[25.278906,37.068408]]],[[[25.482422,36.392627],[25.435938,36.340088],[25.370508,36.358936],[25.397168,36.378955],[25.412891,36.404883],[25.414648,36.442285],[25.396875,36.465332],[25.408984,36.47373],[25.467383,36.435059],[25.482422,36.392627]]],[[[25.381738,36.674023],[25.364355,36.65835],[25.288672,36.721533],[25.259961,36.758447],[25.295898,36.78916],[25.406934,36.717334],[25.381738,36.674023]]],[[[26.824414,37.811426],[26.947363,37.778467],[26.981543,37.781982],[27.039648,37.77002],[27.055078,37.709277],[26.978125,37.700488],[26.844922,37.644727],[26.788281,37.656982],[26.720508,37.705469],[26.612891,37.710498],[26.581055,37.72373],[26.638672,37.780859],[26.743359,37.809766],[26.824414,37.811426]]],[[[26.029297,37.529395],[25.982422,37.525586],[25.996777,37.565576],[26.086328,37.634912],[26.211523,37.638281],[26.325586,37.673047],[26.351367,37.674316],[26.296875,37.61958],[26.204883,37.568506],[26.029297,37.529395]]],[[[25.859375,36.79043],[25.771094,36.782227],[25.743164,36.789746],[25.796777,36.807031],[25.834375,36.825391],[25.852441,36.847559],[25.941992,36.886572],[26.000684,36.937402],[26.064453,36.902734],[25.984668,36.879687],[25.859375,36.79043]]],[[[26.460645,36.5854],[26.381641,36.561523],[26.331445,36.511377],[26.27002,36.546924],[26.269824,36.59541],[26.337012,36.580566],[26.38418,36.607861],[26.37002,36.638574],[26.421289,36.624219],[26.460645,36.5854]]],[[[24.355957,37.576855],[24.288965,37.528271],[24.277441,37.601123],[24.32041,37.677734],[24.379102,37.682715],[24.400781,37.649023],[24.355957,37.576855]]],[[[24.435742,37.344434],[24.378906,37.314111],[24.397754,37.383447],[24.369727,37.419629],[24.394824,37.450391],[24.43125,37.475195],[24.448535,37.449561],[24.481445,37.408008],[24.435742,37.344434]]],[[[24.535742,36.76377],[24.5375,36.705029],[24.530664,36.683984],[24.325977,36.655615],[24.344922,36.722998],[24.357422,36.744287],[24.425195,36.712939],[24.450195,36.728955],[24.460352,36.747461],[24.535742,36.76377]]],[[[24.942871,37.493506],[24.937891,37.389697],[24.911523,37.390576],[24.896191,37.406592],[24.895313,37.446338],[24.906543,37.508887],[24.942871,37.493506]]],[[[24.991699,37.759619],[24.962207,37.692383],[24.884082,37.770508],[24.798535,37.824023],[24.766504,37.870703],[24.714355,37.898877],[24.700195,37.96167],[24.763379,37.9875],[24.79043,37.990137],[24.855078,37.913672],[24.956348,37.904785],[24.948438,37.857666],[24.980469,37.796924],[24.991699,37.759619]]],[[[25.255859,37.599609],[25.21875,37.535107],[25.156348,37.545068],[25.051953,37.614453],[25.016309,37.645947],[24.996484,37.676904],[25.039355,37.680664],[25.091797,37.647998],[25.225391,37.630664],[25.255859,37.599609]]],[[[24.720898,36.921436],[24.702637,36.91709],[24.676465,36.959277],[24.670996,36.998584],[24.681445,37.021631],[24.716113,37.023828],[24.763184,36.949219],[24.720898,36.921436]]],[[[26.094043,38.218066],[25.998535,38.161523],[25.891895,38.243311],[25.874316,38.269629],[25.952637,38.302637],[25.991406,38.353516],[25.959961,38.416016],[25.85127,38.508398],[25.846094,38.574023],[26.0125,38.601709],[26.110449,38.544629],[26.160352,38.540723],[26.141211,38.486182],[26.149609,38.468457],[26.157031,38.30293],[26.110742,38.279639],[26.103125,38.23418],[26.094043,38.218066]]],[[[26.410156,39.329443],[26.392773,39.270117],[26.531055,39.171777],[26.578223,39.109521],[26.595605,39.048828],[26.583984,39.031445],[26.531543,39.064355],[26.488672,39.074805],[26.503125,39.031445],[26.547168,38.994141],[26.46875,38.972803],[26.390137,38.973926],[26.16084,39.025879],[26.10791,39.081055],[26.245117,39.164111],[26.273145,39.197559],[26.175977,39.194287],[26.072363,39.095605],[25.90625,39.138965],[25.855469,39.178662],[25.844141,39.200049],[25.90957,39.287549],[26.026465,39.284619],[26.088379,39.304297],[26.164844,39.331982],[26.16543,39.373535],[26.347754,39.383008],[26.410156,39.329443]]],[[[25.685742,40.426562],[25.572656,40.400439],[25.448047,40.482812],[25.568555,40.515869],[25.624316,40.491992],[25.664258,40.463867],[25.685742,40.426562]]],[[[25.437695,39.983301],[25.399902,39.949561],[25.37207,39.891309],[25.357031,39.808105],[25.29873,39.806104],[25.263379,39.822949],[25.251758,39.854395],[25.249414,39.894141],[25.223828,39.892578],[25.203223,39.849414],[25.185156,39.829932],[25.126465,39.82583],[25.062207,39.852393],[25.065234,39.909863],[25.052344,39.976367],[25.058008,39.999658],[25.23418,40.00542],[25.285742,39.956299],[25.348047,39.984766],[25.373633,40.015527],[25.449121,40.034814],[25.437695,39.983301]]],[[[25.402734,37.419141],[25.307129,37.412988],[25.312695,37.489307],[25.348145,37.50918],[25.462988,37.471094],[25.457422,37.44707],[25.402734,37.419141]]],[[[24.523535,37.125098],[24.486523,37.110059],[24.424805,37.131982],[24.441211,37.186865],[24.483789,37.210205],[24.529102,37.192334],[24.535938,37.167676],[24.523535,37.125098]]],[[[27.842773,35.929297],[27.770605,35.908301],[27.745703,35.911035],[27.715527,35.957324],[27.757324,36.069189],[27.718652,36.141113],[27.716309,36.171582],[27.774414,36.21377],[27.815234,36.276953],[27.914453,36.345312],[28.171484,36.426221],[28.231836,36.433643],[28.230078,36.370264],[28.144043,36.209863],[28.067676,36.129687],[28.087793,36.065332],[27.965527,36.04751],[27.842773,35.929297]]],[[[23.852246,35.535449],[23.920605,35.528174],[24.013281,35.529443],[24.034375,35.5354],[24.093359,35.593848],[24.166016,35.595215],[24.197754,35.537451],[24.124023,35.51084],[24.108984,35.495801],[24.123145,35.483643],[24.178516,35.459521],[24.255371,35.468604],[24.257715,35.423145],[24.274902,35.385986],[24.312891,35.363818],[24.354004,35.359473],[24.444922,35.366016],[24.53457,35.380762],[24.626953,35.409912],[24.721289,35.424805],[25.003125,35.409863],[25.104297,35.346924],[25.296777,35.339355],[25.475684,35.306201],[25.569629,35.328076],[25.730176,35.348584],[25.755859,35.326367],[25.735156,35.184033],[25.74502,35.142725],[25.791309,35.122852],[25.837109,35.132568],[25.893359,35.179199],[26.028027,35.215283],[26.167871,35.215088],[26.285547,35.309766],[26.320215,35.315137],[26.298633,35.268604],[26.280859,35.159229],[26.255566,35.095166],[26.244336,35.044678],[26.165625,35.018604],[26.04668,35.01416],[25.829688,35.025195],[25.610938,35.007324],[25.205762,34.959277],[24.799805,34.934473],[24.745215,34.950635],[24.743945,35.014355],[24.735156,35.058301],[24.708887,35.089062],[24.583398,35.115332],[24.463672,35.160352],[23.994336,35.221924],[23.883594,35.246094],[23.703906,35.233496],[23.638086,35.235156],[23.592773,35.257227],[23.561621,35.295166],[23.547559,35.415576],[23.569824,35.534766],[23.608691,35.56626],[23.626563,35.530371],[23.672656,35.513916],[23.71543,35.550146],[23.715039,35.604736],[23.736914,35.655518],[23.770801,35.634229],[23.793359,35.556201],[23.852246,35.535449]]],[[[26.320898,41.716553],[26.410547,41.696338],[26.4625,41.663379],[26.49502,41.633252],[26.544531,41.607227],[26.581348,41.60127],[26.609766,41.512158],[26.624902,41.401758],[26.602344,41.35415],[26.536426,41.343115],[26.330664,41.23877],[26.325684,41.143262],[26.328418,41.097021],[26.332617,41.064307],[26.354102,41.036768],[26.354102,40.99707],[26.331055,40.954492],[26.241211,40.883203],[26.178906,40.826514],[26.10918,40.749658],[26.069727,40.740283],[26.038965,40.726758],[26.010742,40.769141],[25.855664,40.844092],[25.496777,40.887793],[25.325293,40.943115],[25.250098,40.932812],[25.104492,40.994727],[25.004688,40.967529],[24.792969,40.85752],[24.678711,40.869482],[24.556543,40.935596],[24.477051,40.947754],[24.383789,40.912744],[24.234375,40.786133],[24.082324,40.724072],[23.946094,40.74834],[23.762793,40.747803],[23.743262,40.677002],[23.778711,40.627979],[23.878906,40.544385],[23.831934,40.481543],[23.866797,40.418555],[23.932031,40.405762],[24.030566,40.409326],[24.212793,40.327783],[24.29248,40.241797],[24.343359,40.147705],[24.232422,40.215186],[24.158789,40.280029],[24.056055,40.303564],[23.913184,40.358789],[23.823438,40.368018],[23.72793,40.329736],[23.720508,40.286279],[23.823438,40.205127],[23.917578,40.155225],[23.96748,40.114551],[24.000781,40.024609],[23.981836,39.994043],[23.94707,39.965576],[23.835352,40.022266],[23.664551,40.223828],[23.42627,40.263965],[23.386426,40.221973],[23.433203,40.11543],[23.46709,40.073926],[23.674121,39.958887],[23.65752,39.934473],[23.627344,39.924072],[23.395605,39.989844],[23.328223,40.089941],[23.312012,40.216455],[23.098145,40.304297],[22.896484,40.399902],[22.851367,40.490625],[22.892871,40.524268],[22.922266,40.590869],[22.811426,40.578613],[22.741895,40.536475],[22.629492,40.495557],[22.624902,40.428613],[22.642676,40.366602],[22.605469,40.276416],[22.569336,40.119336],[22.592188,40.036914],[22.835742,39.800586],[22.919043,39.628906],[22.978809,39.563818],[23.103418,39.492041],[23.233398,39.358447],[23.288477,39.288818],[23.327734,39.174902],[23.218359,39.104395],[23.154688,39.101465],[23.119434,39.132764],[23.16875,39.210449],[23.161719,39.257764],[22.992871,39.331055],[22.921387,39.306348],[22.838965,39.258594],[22.886035,39.169971],[22.938965,39.111523],[22.965527,39.030908],[23.066699,39.037939],[22.930469,38.947705],[22.802637,38.901611],[22.676855,38.898926],[22.596777,38.890576],[22.569141,38.86748],[22.634277,38.850684],[22.6875,38.84917],[22.774023,38.800391],[23.020313,38.741895],[23.137695,38.667969],[23.25293,38.66123],[23.368945,38.525537],[23.569629,38.489404],[23.683984,38.352441],[23.836035,38.325488],[23.966992,38.275],[24.005371,38.226807],[24.024512,38.139795],[24.033008,37.955322],[24.061328,37.81792],[24.062305,37.774512],[24.055371,37.709619],[24.019727,37.677734],[23.971582,37.676758],[23.877344,37.777783],[23.732813,37.884082],[23.580469,38.010547],[23.537207,38.032764],[23.501758,38.034863],[23.420215,37.99209],[23.193652,37.959033],[23.087402,37.912842],[23.047461,37.902637],[23.036328,37.878369],[23.086133,37.853125],[23.147168,37.795312],[23.147168,37.71626],[23.197559,37.620215],[23.262695,37.59541],[23.347559,37.597559],[23.396191,37.579785],[23.408789,37.541553],[23.458105,37.496924],[23.490625,37.463867],[23.489258,37.440186],[23.252539,37.377295],[23.203027,37.348535],[23.161523,37.333838],[23.1,37.36377],[23.096484,37.440576],[23.015137,37.481787],[22.940527,37.51709],[22.851074,37.532227],[22.775,37.585107],[22.725391,37.542139],[22.765039,37.393311],[22.851074,37.29082],[22.99502,37.015869],[23.060352,36.853516],[23.073535,36.774951],[23.041016,36.644531],[23.111719,36.547607],[23.160156,36.448096],[23.106836,36.451855],[23.060547,36.486963],[22.98291,36.528369],[22.832324,36.687109],[22.779883,36.786182],[22.717188,36.793945],[22.608398,36.779736],[22.489063,36.568164],[22.489453,36.446924],[22.427734,36.475781],[22.374805,36.513574],[22.38125,36.646191],[22.375977,36.701904],[22.231152,36.882568],[22.164746,36.902832],[22.133789,36.963916],[22.080469,37.028955],[22.011719,37.016504],[21.955566,36.990088],[21.940039,36.891797],[21.934277,36.803662],[21.892383,36.737305],[21.738086,36.863232],[21.58291,37.080957],[21.578809,37.200391],[21.69248,37.309277],[21.678906,37.387207],[21.571289,37.541016],[21.416211,37.639941],[21.329297,37.669336],[21.288477,37.774512],[21.205273,37.828857],[21.137988,37.85415],[21.124707,37.891602],[21.14502,37.919287],[21.308105,38.027441],[21.403711,38.19668],[21.451172,38.204736],[21.54873,38.1646],[21.658398,38.175098],[21.748438,38.274219],[21.824707,38.328125],[21.95332,38.321191],[22.24375,38.188721],[22.555859,38.113232],[22.711523,38.046924],[22.799609,37.981201],[22.846387,37.967578],[22.920313,37.958301],[22.916992,38.007471],[22.893164,38.050928],[22.954785,38.074609],[23.12207,38.07334],[23.152539,38.096387],[23.183496,38.133691],[23.148926,38.176074],[23.093555,38.196436],[23.034375,38.2021],[22.99541,38.215527],[22.93252,38.201953],[22.834375,38.234717],[22.783691,38.261719],[22.753906,38.289502],[22.583398,38.344922],[22.42168,38.438525],[22.385254,38.385547],[22.319922,38.356836],[22.226855,38.352832],[21.965332,38.412451],[21.804688,38.366943],[21.71709,38.355029],[21.650098,38.354004],[21.567676,38.333594],[21.472559,38.321387],[21.390137,38.407812],[21.355469,38.474805],[21.331055,38.487305],[21.329785,38.424365],[21.30332,38.373926],[21.182617,38.345557],[21.113184,38.384668],[21.059766,38.503271],[20.992188,38.654004],[20.873242,38.775732],[20.776855,38.80752],[20.768555,38.874414],[20.777344,38.927881],[20.893164,38.941113],[21.074219,38.885156],[21.111621,38.896289],[21.152344,38.92207],[21.144531,38.979199],[21.118359,39.02998],[21.068555,39.032275],[21.034082,39.02627],[20.922754,39.036768],[20.779688,39.008545],[20.713379,39.035156],[20.691309,39.06748],[20.57168,39.147705],[20.468262,39.255273],[20.300781,39.3271],[20.191406,39.545801],[20.099414,39.64126],[20.00127,39.709424],[20.022559,39.710693],[20.059766,39.699121],[20.131055,39.661621],[20.206836,39.653516],[20.248242,39.678369],[20.27207,39.701172],[20.287598,39.738574],[20.293848,39.782227],[20.306152,39.79668],[20.364063,39.791748],[20.382422,39.802637],[20.381641,39.841797],[20.344238,39.890625],[20.311328,39.950781],[20.311133,39.979443],[20.338477,39.991064],[20.383691,40.017187],[20.408008,40.049463],[20.456055,40.065576],[20.527051,40.068506],[20.60625,40.082666],[20.657422,40.117383],[20.664941,40.151758],[20.696973,40.246387],[20.717871,40.292676],[20.75166,40.334912],[20.77002,40.391895],[20.806055,40.445459],[20.881641,40.46792],[20.950195,40.494385],[21.001953,40.563379],[21.030859,40.622461],[21.031055,40.658643],[20.987891,40.717773],[20.955762,40.775293],[20.964258,40.849902],[21.1,40.856152],[21.147559,40.863135],[21.32373,40.867139],[21.404102,40.907178],[21.459668,40.903613],[21.575781,40.868945],[21.627539,40.896338],[21.779492,40.950439],[21.929492,41.107422],[21.993359,41.130957],[22.138867,41.140527],[22.184473,41.158643],[22.237695,41.155176],[22.400781,41.123389],[22.493555,41.118506],[22.603613,41.140186],[22.724805,41.178516],[22.755078,41.312744],[22.783887,41.331982],[22.859277,41.337354],[22.916016,41.336279],[23.025586,41.325635],[23.155957,41.32207],[23.239844,41.384961],[23.37207,41.389648],[23.433398,41.39873],[23.53584,41.386035],[23.635156,41.386768],[23.762305,41.412988],[23.880859,41.455957],[23.973535,41.452295],[24.011328,41.460059],[24.03291,41.469092],[24.056055,41.527246],[24.230371,41.530811],[24.289453,41.525049],[24.386719,41.523535],[24.487891,41.555225],[24.518262,41.552539],[24.569336,41.467383],[24.595996,41.442725],[24.651074,41.419971],[24.77373,41.356104],[24.795801,41.3729],[24.846875,41.394238],[24.993555,41.36499],[25.133398,41.315771],[25.251172,41.243555],[25.381934,41.264355],[25.527051,41.299805],[25.621484,41.310107],[25.723926,41.315039],[25.784961,41.33042],[25.92334,41.311914],[26.066406,41.350684],[26.135352,41.385742],[26.155176,41.434863],[26.143555,41.521533],[26.11123,41.608203],[26.076953,41.640186],[26.066016,41.673242],[26.085547,41.70415],[26.107422,41.725684],[26.200586,41.743799],[26.320898,41.716553]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Ghana","SOV_A3":"GHA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Ghana","ADM0_A3":"GHA","GEOU_DIF":0,"GEOUNIT":"Ghana","GU_A3":"GHA","SU_DIF":0,"SUBUNIT":"Ghana","SU_A3":"GHA","BRK_DIFF":0,"NAME":"Ghana","NAME_LONG":"Ghana","BRK_A3":"GHA","BRK_NAME":"Ghana","BRK_GROUP":null,"ABBREV":"Ghana","POSTAL":"GH","FORMAL_EN":"Republic of Ghana","FORMAL_FR":null,"NAME_CIAWF":"Ghana","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Ghana","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":3,"MAPCOLOR9":1,"MAPCOLOR13":4,"POP_EST":30417856,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":66983,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"GH","ISO_A2":"GH","ISO_A2_EH":"GH","ISO_A3":"GHA","ISO_A3_EH":"GHA","ISO_N3":"288","ISO_N3_EH":"288","UN_A3":"288","WB_A2":"GH","WB_A3":"GHA","WOE_ID":23424824,"WOE_ID_EH":23424824,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GHA","ADM0_DIFF":null,"ADM0_TLC":"GHA","ADM0_A3_US":"GHA","ADM0_A3_FR":"GHA","ADM0_A3_RU":"GHA","ADM0_A3_ES":"GHA","ADM0_A3_CN":"GHA","ADM0_A3_TW":"GHA","ADM0_A3_IN":"GHA","ADM0_A3_NP":"GHA","ADM0_A3_PK":"GHA","ADM0_A3_DE":"GHA","ADM0_A3_GB":"GHA","ADM0_A3_BR":"GHA","ADM0_A3_IL":"GHA","ADM0_A3_PS":"GHA","ADM0_A3_SA":"GHA","ADM0_A3_EG":"GHA","ADM0_A3_MA":"GHA","ADM0_A3_PT":"GHA","ADM0_A3_AR":"GHA","ADM0_A3_JP":"GHA","ADM0_A3_KO":"GHA","ADM0_A3_VN":"GHA","ADM0_A3_TR":"GHA","ADM0_A3_ID":"GHA","ADM0_A3_PL":"GHA","ADM0_A3_GR":"GHA","ADM0_A3_IT":"GHA","ADM0_A3_NL":"GHA","ADM0_A3_SE":"GHA","ADM0_A3_BD":"GHA","ADM0_A3_UA":"GHA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":8,"LABEL_X":-1.036941,"LABEL_Y":7.717639,"NE_ID":1159320793,"WIKIDATAID":"Q117","NAME_AR":"غانا","NAME_BN":"ঘানা","NAME_DE":"Ghana","NAME_EN":"Ghana","NAME_ES":"Ghana","NAME_FA":"غنا","NAME_FR":"Ghana","NAME_EL":"Γκάνα","NAME_HE":"גאנה","NAME_HI":"घाना","NAME_HU":"Ghána","NAME_ID":"Ghana","NAME_IT":"Ghana","NAME_JA":"ガーナ","NAME_KO":"가나","NAME_NL":"Ghana","NAME_PL":"Ghana","NAME_PT":"Gana","NAME_RU":"Гана","NAME_SV":"Ghana","NAME_TR":"Gana","NAME_UK":"Гана","NAME_UR":"گھانا","NAME_VI":"Ghana","NAME_ZH":"加纳","NAME_ZHT":"迦納","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-3.243896,4.762451,1.187207,11.166895],"geometry":{"type":"Polygon","coordinates":[[[-0.068604,11.115625],[-0.004736,11.055566],[0.009424,11.020996],[-0.013867,10.891357],[-0.060596,10.800586],[-0.090186,10.715527],[-0.086328,10.673047],[-0.057715,10.630615],[0.039453,10.563867],[0.089258,10.520605],[0.148242,10.454785],[0.216016,10.390527],[0.331836,10.306934],[0.380859,10.291846],[0.378613,10.268555],[0.362695,10.236475],[0.351855,9.924902],[0.343066,9.84458],[0.33457,9.803955],[0.323926,9.687598],[0.311719,9.670996],[0.289648,9.672314],[0.269531,9.66792],[0.264551,9.644727],[0.272754,9.620947],[0.342578,9.60415],[0.327344,9.586572],[0.275488,9.570605],[0.251563,9.535645],[0.261914,9.495605],[0.233398,9.463525],[0.241504,9.441895],[0.259961,9.426025],[0.289355,9.431836],[0.370996,9.485547],[0.405273,9.491455],[0.447559,9.480273],[0.525684,9.398486],[0.529004,9.358301],[0.497168,9.22124],[0.466113,9.115332],[0.460352,8.974219],[0.493262,8.894922],[0.48877,8.851465],[0.453125,8.81377],[0.372559,8.759277],[0.378613,8.722021],[0.415332,8.652734],[0.483301,8.575293],[0.616211,8.479639],[0.686328,8.354883],[0.688086,8.304248],[0.64707,8.253467],[0.599219,8.20957],[0.583594,8.145801],[0.605176,7.728223],[0.5,7.546875],[0.498926,7.495117],[0.50957,7.435107],[0.537305,7.39873],[0.591016,7.388818],[0.634766,7.353662],[0.619531,7.226562],[0.596191,7.096631],[0.59248,7.033984],[0.579492,7.004102],[0.538086,6.979687],[0.523047,6.938867],[0.533398,6.88833],[0.525586,6.850928],[0.548047,6.80249],[0.595703,6.742188],[0.672754,6.592529],[0.702246,6.580762],[0.71543,6.549316],[0.707227,6.51875],[0.736914,6.452588],[0.822461,6.386377],[0.912207,6.328564],[0.984961,6.320312],[1.002148,6.268555],[1.049902,6.202637],[1.084473,6.173779],[1.139648,6.155029],[1.185059,6.14502],[1.187207,6.089404],[1.105566,6.051367],[1.050293,5.993994],[1.008008,5.906396],[0.949707,5.810254],[0.748828,5.760107],[0.671875,5.759717],[0.259668,5.757324],[-0.126514,5.568164],[-0.34873,5.500781],[-0.485449,5.394238],[-0.669434,5.318555],[-0.797705,5.226709],[-1.064307,5.182666],[-1.50166,5.037988],[-1.638477,4.980859],[-1.776855,4.880371],[-2.001855,4.762451],[-2.090186,4.764062],[-2.266406,4.874072],[-2.398926,4.929346],[-2.723047,5.013721],[-2.96499,5.046289],[-3.081885,5.082471],[-3.114014,5.088672],[-3.086719,5.12832],[-3.019141,5.130811],[-2.94834,5.118848],[-2.894727,5.149023],[-2.815674,5.153027],[-2.795215,5.184521],[-2.788672,5.264111],[-2.7896,5.328223],[-2.761914,5.356934],[-2.75498,5.43252],[-2.793652,5.600098],[-2.821191,5.619189],[-2.962256,5.643018],[-2.972803,5.67627],[-2.998291,5.711328],[-3.025293,5.797754],[-3.056152,5.92627],[-3.105566,6.085645],[-3.200586,6.348242],[-3.224023,6.441064],[-3.240283,6.535645],[-3.243896,6.648682],[-3.224121,6.690771],[-3.227148,6.749121],[-3.235791,6.807227],[-3.168896,6.940967],[-3.037695,7.10459],[-3.010156,7.16377],[-2.985791,7.204883],[-2.982324,7.263623],[-2.959082,7.454541],[-2.896338,7.68501],[-2.856885,7.77207],[-2.830127,7.819043],[-2.798145,7.895996],[-2.789746,7.931934],[-2.668848,8.022217],[-2.613379,8.04668],[-2.600977,8.082227],[-2.619971,8.121094],[-2.611719,8.147559],[-2.582764,8.160791],[-2.538281,8.171631],[-2.505859,8.20874],[-2.556885,8.493018],[-2.597998,8.776367],[-2.600391,8.800439],[-2.624902,8.8396],[-2.649219,8.956592],[-2.689893,9.025098],[-2.746924,9.045117],[-2.74668,9.109619],[-2.689209,9.218604],[-2.674219,9.282617],[-2.701807,9.30166],[-2.705762,9.351367],[-2.686133,9.431738],[-2.69585,9.481348],[-2.706201,9.533936],[-2.765967,9.658057],[-2.780518,9.74585],[-2.749805,9.797217],[-2.750732,9.909668],[-2.783203,10.083105],[-2.788477,10.192578],[-2.766504,10.238184],[-2.7771,10.281592],[-2.820312,10.322852],[-2.823437,10.362939],[-2.786621,10.401904],[-2.791162,10.432422],[-2.837207,10.454639],[-2.878418,10.507959],[-2.914893,10.592334],[-2.907324,10.727979],[-2.838574,10.97749],[-2.829932,10.998389],[-2.7521,10.996973],[-2.75166,10.986377],[-2.50918,10.988721],[-2.231934,10.991406],[-1.900635,10.994678],[-1.599658,10.997656],[-1.586475,11.008887],[-1.536768,11.022656],[-1.232617,10.997217],[-1.04248,11.010059],[-0.961816,11.001709],[-0.90293,10.984717],[-0.771582,10.995264],[-0.701416,10.988965],[-0.648535,10.926758],[-0.627148,10.927393],[-0.597656,10.953662],[-0.545215,10.983691],[-0.491699,11.007617],[-0.453516,11.056299],[-0.430322,11.093262],[-0.395605,11.085693],[-0.345752,11.087939],[-0.312549,11.118896],[-0.299463,11.166895],[-0.068604,11.115625]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Germany","SOV_A3":"DEU","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Germany","ADM0_A3":"DEU","GEOU_DIF":0,"GEOUNIT":"Germany","GU_A3":"DEU","SU_DIF":0,"SUBUNIT":"Germany","SU_A3":"DEU","BRK_DIFF":0,"NAME":"Germany","NAME_LONG":"Germany","BRK_A3":"DEU","BRK_NAME":"Germany","BRK_GROUP":null,"ABBREV":"Ger.","POSTAL":"D","FORMAL_EN":"Federal Republic of Germany","FORMAL_FR":null,"NAME_CIAWF":"Germany","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Germany","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":5,"MAPCOLOR9":5,"MAPCOLOR13":1,"POP_EST":83132799,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":3861123,"GDP_YEAR":2019,"ECONOMY":"1. Developed region: G7","INCOME_GRP":"1. High income: OECD","FIPS_10":"GM","ISO_A2":"DE","ISO_A2_EH":"DE","ISO_A3":"DEU","ISO_A3_EH":"DEU","ISO_N3":"276","ISO_N3_EH":"276","UN_A3":"276","WB_A2":"DE","WB_A3":"DEU","WOE_ID":23424829,"WOE_ID_EH":23424829,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"DEU","ADM0_DIFF":null,"ADM0_TLC":"DEU","ADM0_A3_US":"DEU","ADM0_A3_FR":"DEU","ADM0_A3_RU":"DEU","ADM0_A3_ES":"DEU","ADM0_A3_CN":"DEU","ADM0_A3_TW":"DEU","ADM0_A3_IN":"DEU","ADM0_A3_NP":"DEU","ADM0_A3_PK":"DEU","ADM0_A3_DE":"DEU","ADM0_A3_GB":"DEU","ADM0_A3_BR":"DEU","ADM0_A3_IL":"DEU","ADM0_A3_PS":"DEU","ADM0_A3_SA":"DEU","ADM0_A3_EG":"DEU","ADM0_A3_MA":"DEU","ADM0_A3_PT":"DEU","ADM0_A3_AR":"DEU","ADM0_A3_JP":"DEU","ADM0_A3_KO":"DEU","ADM0_A3_VN":"DEU","ADM0_A3_TR":"DEU","ADM0_A3_ID":"DEU","ADM0_A3_PL":"DEU","ADM0_A3_GR":"DEU","ADM0_A3_IT":"DEU","ADM0_A3_NL":"DEU","ADM0_A3_SE":"DEU","ADM0_A3_BD":"DEU","ADM0_A3_UA":"DEU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":9.678348,"LABEL_Y":50.961733,"NE_ID":1159320539,"WIKIDATAID":"Q183","NAME_AR":"ألمانيا","NAME_BN":"জার্মানি","NAME_DE":"Deutschland","NAME_EN":"Germany","NAME_ES":"Alemania","NAME_FA":"آلمان","NAME_FR":"Allemagne","NAME_EL":"Γερμανία","NAME_HE":"גרמניה","NAME_HI":"जर्मनी","NAME_HU":"Németország","NAME_ID":"Jerman","NAME_IT":"Germania","NAME_JA":"ドイツ","NAME_KO":"독일","NAME_NL":"Duitsland","NAME_PL":"Niemcy","NAME_PT":"Alemanha","NAME_RU":"Германия","NAME_SV":"Tyskland","NAME_TR":"Almanya","NAME_UK":"Німеччина","NAME_UR":"جرمنی","NAME_VI":"Đức","NAME_ZH":"德国","NAME_ZHT":"德國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[5.85752,47.278809,15.016602,55.05874],"geometry":{"type":"MultiPolygon","coordinates":[[[[9.524023,47.524219],[9.35,47.598926],[9.182813,47.670703],[9.127539,47.670703],[8.881152,47.656396],[8.874023,47.662695],[8.831152,47.703613],[8.793066,47.716553],[8.770117,47.709912],[8.754785,47.698047],[8.72832,47.700049],[8.617871,47.766113],[8.572656,47.775635],[8.509863,47.766895],[8.435742,47.731348],[8.403418,47.687793],[8.413281,47.662695],[8.451758,47.651807],[8.552344,47.659131],[8.56709,47.651904],[8.570508,47.637793],[8.559473,47.624023],[8.477637,47.612695],[8.454004,47.596191],[8.430078,47.592139],[8.414746,47.5896],[8.327832,47.606934],[8.198242,47.606934],[8.09375,47.576172],[7.927051,47.563867],[7.698047,47.569873],[7.615625,47.592725],[7.56543,47.606543],[7.529395,47.673877],[7.538574,47.773633],[7.593262,47.905664],[7.608496,48.002588],[7.58418,48.064307],[7.616602,48.156787],[7.705664,48.280029],[7.765137,48.41001],[7.794824,48.546826],[7.837988,48.636035],[7.922754,48.698535],[8.124023,48.873291],[8.140332,48.886426],[8.134863,48.973584],[8.080664,48.985889],[8.00127,49.010937],[7.799219,49.041895],[7.610938,49.061768],[7.525488,49.086377],[7.450586,49.152197],[7.404199,49.153076],[7.313379,49.129541],[7.199902,49.113623],[7.117383,49.127539],[7.065723,49.124854],[7.036719,49.112695],[7.022168,49.123437],[7.001465,49.179883],[6.958301,49.194629],[6.891211,49.20752],[6.849512,49.201953],[6.820703,49.173926],[6.77627,49.15415],[6.735449,49.160596],[6.607617,49.290869],[6.574707,49.319678],[6.566309,49.346191],[6.534277,49.394678],[6.458105,49.442871],[6.382227,49.458154],[6.344336,49.452734],[6.348438,49.512695],[6.37832,49.599609],[6.406738,49.644971],[6.444629,49.682031],[6.484766,49.707812],[6.49375,49.754395],[6.487305,49.798486],[6.440918,49.805322],[6.324609,49.837891],[6.256055,49.872168],[6.204883,49.915137],[6.138184,49.974316],[6.109766,50.034375],[6.108301,50.094238],[6.116504,50.120996],[6.121289,50.139355],[6.175098,50.232666],[6.364453,50.316162],[6.343652,50.400244],[6.340918,50.451758],[6.294922,50.485498],[6.203027,50.499121],[6.178711,50.52251],[6.168457,50.545361],[6.235938,50.59668],[6.154492,50.637256],[6.119434,50.679248],[6.005957,50.732227],[5.993945,50.750439],[6.048438,50.904883],[6.006836,50.949951],[5.955078,50.972949],[5.894727,50.984229],[5.867188,51.005664],[5.85752,51.030127],[5.868359,51.045312],[5.939258,51.04082],[5.961035,51.056689],[6.12998,51.147412],[6.136914,51.164844],[6.113379,51.174707],[6.082422,51.17998],[6.074805,51.199023],[6.075879,51.224121],[6.166211,51.354834],[6.192871,51.410596],[6.198828,51.45],[6.193262,51.488916],[6.141602,51.550098],[6.091113,51.598926],[6.089355,51.637793],[6.052734,51.658252],[5.948535,51.762402],[5.94873,51.802686],[6.007617,51.833984],[6.089844,51.853955],[6.117188,51.87041],[6.166504,51.880762],[6.29707,51.850732],[6.355664,51.824658],[6.372168,51.830029],[6.425,51.858398],[6.517578,51.853955],[6.741797,51.910889],[6.775195,51.938281],[6.800391,51.967383],[6.802441,51.980176],[6.715625,52.036182],[6.712988,52.056885],[6.724512,52.080225],[6.749023,52.098682],[6.800391,52.11123],[6.855078,52.135791],[6.977246,52.205518],[7.019629,52.266016],[7.032617,52.331494],[7.035156,52.380225],[7.001855,52.418994],[6.968164,52.444092],[6.92207,52.440283],[6.83252,52.442285],[6.748828,52.464014],[6.70293,52.499219],[6.691602,52.530176],[6.712402,52.549658],[6.71875,52.573584],[6.705371,52.597656],[6.710742,52.617871],[6.748438,52.634082],[7.013184,52.633545],[7.033008,52.651367],[7.050879,52.744775],[7.11709,52.887012],[7.179492,52.966211],[7.189941,52.999512],[7.188965,53.187207],[7.197266,53.282275],[7.152051,53.326953],[7.05332,53.37583],[7.074316,53.477637],[7.107129,53.556982],[7.206445,53.654541],[7.285254,53.681348],[7.629199,53.697266],[8.009277,53.690723],[8.16709,53.543408],[8.108496,53.467676],[8.200781,53.432422],[8.245215,53.445312],[8.279004,53.511182],[8.301563,53.584131],[8.333887,53.606201],[8.451367,53.551709],[8.492676,53.514355],[8.495215,53.394238],[8.538477,53.556885],[8.50625,53.670752],[8.528418,53.781104],[8.575586,53.838477],[8.618945,53.875],[8.897754,53.835693],[9.205566,53.855957],[9.321973,53.813477],[9.585352,53.600488],[9.673145,53.565625],[9.783984,53.554639],[9.63125,53.600195],[9.312012,53.859131],[9.216406,53.891211],[9.069629,53.900928],[8.978125,53.926221],[8.92041,53.965332],[8.903516,54.000293],[8.906641,54.260791],[8.851562,54.299561],[8.780371,54.313037],[8.736035,54.295215],[8.644922,54.294971],[8.625781,54.353955],[8.648047,54.397656],[8.831152,54.427539],[8.951855,54.467578],[8.957227,54.53833],[8.880957,54.593945],[8.789648,54.695947],[8.682324,54.791846],[8.670313,54.903418],[8.670703,54.90332],[8.857227,54.901123],[8.90293,54.896924],[9.18584,54.844678],[9.25498,54.808008],[9.341992,54.806299],[9.49873,54.84043],[9.61582,54.85542],[9.66123,54.834375],[9.725,54.825537],[9.739746,54.825537],[9.745898,54.807178],[9.892285,54.780615],[9.953809,54.738281],[10.022168,54.673926],[10.028809,54.581299],[9.941309,54.514648],[9.868652,54.472461],[10.143457,54.488428],[10.170801,54.450195],[10.212402,54.408936],[10.360449,54.43833],[10.731543,54.31626],[10.955957,54.375684],[11.013379,54.37915],[11.064355,54.280518],[11.008594,54.181152],[10.810742,54.075146],[10.85459,54.009814],[10.917773,53.995312],[11.104297,54.00918],[11.399609,53.944629],[11.461133,53.964746],[11.700586,54.113525],[11.796289,54.145459],[12.111328,54.168311],[12.168652,54.225879],[12.296289,54.283789],[12.378516,54.347021],[12.575391,54.467383],[12.779102,54.445703],[12.898047,54.422656],[13.028613,54.411035],[13.147461,54.282715],[13.448047,54.140869],[13.724219,54.153223],[13.822266,54.019043],[13.865527,53.853369],[13.950391,53.801367],[14.025,53.767432],[14.25,53.731885],[14.258887,53.729639],[14.266113,53.707129],[14.279883,53.624756],[14.29873,53.556445],[14.414551,53.283496],[14.412305,53.216748],[14.410938,53.199023],[14.368555,53.105566],[14.293164,53.026758],[14.193652,52.982324],[14.138867,52.932861],[14.128613,52.878223],[14.253711,52.78252],[14.514063,52.645605],[14.619434,52.528516],[14.569727,52.431104],[14.55459,52.359668],[14.573926,52.31416],[14.615625,52.277637],[14.679883,52.25],[14.705371,52.207471],[14.692383,52.150049],[14.70459,52.110205],[14.752539,52.081836],[14.748145,52.070801],[14.724805,52.030859],[14.692969,51.958008],[14.674902,51.904834],[14.60166,51.832373],[14.623926,51.770801],[14.681348,51.698193],[14.724902,51.661719],[14.738672,51.627148],[14.710938,51.544922],[14.724707,51.523877],[14.905957,51.46333],[14.935547,51.435352],[14.953125,51.377148],[15.016602,51.252734],[14.963867,51.095117],[14.91748,51.00874],[14.814258,50.871631],[14.809375,50.858984],[14.797461,50.842334],[14.766504,50.818311],[14.72334,50.814697],[14.658203,50.832617],[14.613574,50.855566],[14.623828,50.914746],[14.595215,50.918604],[14.559668,50.954932],[14.545703,50.993945],[14.507324,51.009863],[14.367285,51.02627],[14.319727,51.037793],[14.283203,51.029492],[14.255859,51.001855],[14.27334,50.976904],[14.299414,50.952588],[14.377051,50.914062],[14.369043,50.89873],[14.201758,50.86123],[14.096484,50.822754],[13.998438,50.801123],[13.898535,50.761279],[13.701367,50.716504],[13.556738,50.704639],[13.526563,50.692822],[13.472559,50.616943],[13.436133,50.601074],[13.401172,50.609326],[13.374609,50.621729],[13.341016,50.611426],[13.306055,50.586328],[13.269531,50.576416],[13.237695,50.576758],[13.181152,50.510498],[13.016406,50.490381],[12.99707,50.456055],[12.966797,50.416211],[12.942676,50.406445],[12.868262,50.422217],[12.76543,50.430957],[12.706445,50.409131],[12.635547,50.39707],[12.549023,50.393408],[12.452637,50.349805],[12.358594,50.273242],[12.305664,50.205713],[12.277344,50.181445],[12.231152,50.244873],[12.174805,50.288379],[12.134863,50.310937],[12.099219,50.310986],[12.089844,50.301758],[12.089746,50.268555],[12.127832,50.213428],[12.175,50.17583],[12.18252,50.148047],[12.207813,50.09751],[12.276465,50.042334],[12.38418,49.998584],[12.457617,49.955518],[12.512012,49.895801],[12.5125,49.877441],[12.497559,49.853076],[12.471875,49.830078],[12.450195,49.800146],[12.390527,49.739648],[12.408203,49.713184],[12.457031,49.679785],[12.500293,49.639697],[12.555762,49.574854],[12.632031,49.46123],[12.681152,49.414502],[12.747852,49.366211],[12.813379,49.329346],[12.916699,49.330469],[13.02373,49.260107],[13.140527,49.15835],[13.227832,49.11167],[13.28877,49.097461],[13.339063,49.060791],[13.383691,49.008105],[13.401172,48.977588],[13.440723,48.955566],[13.547656,48.959668],[13.684961,48.876709],[13.769922,48.815967],[13.814746,48.766943],[13.80293,48.74751],[13.797461,48.686426],[13.798828,48.62168],[13.785352,48.587451],[13.723926,48.542383],[13.692188,48.532764],[13.675195,48.523047],[13.486621,48.581836],[13.47168,48.571826],[13.459863,48.564551],[13.409375,48.394141],[13.374609,48.361377],[13.322852,48.33125],[13.215234,48.301904],[13.14043,48.289941],[13.082129,48.275098],[12.897461,48.203711],[12.814258,48.16084],[12.760352,48.106982],[12.760059,48.075977],[12.849902,47.984814],[12.953516,47.890625],[12.954199,47.807764],[12.908301,47.745801],[12.897656,47.721875],[12.928125,47.712842],[12.985547,47.709424],[13.033594,47.69873],[13.054102,47.655127],[13.047949,47.57915],[13.031543,47.508008],[13.014355,47.478076],[12.968066,47.475684],[12.878906,47.506445],[12.809375,47.542187],[12.782813,47.56416],[12.781152,47.59043],[12.796191,47.607031],[12.771387,47.639404],[12.68584,47.669336],[12.594238,47.656299],[12.526563,47.636133],[12.48291,47.637305],[12.435742,47.666113],[12.363184,47.688184],[12.268359,47.702734],[12.209277,47.718262],[12.196875,47.709082],[12.203809,47.646729],[12.185645,47.619531],[11.716797,47.583496],[11.573926,47.549756],[11.469922,47.506104],[11.392969,47.487158],[11.374121,47.460254],[11.297949,47.424902],[11.211914,47.413623],[11.191211,47.425195],[11.136035,47.408887],[11.041992,47.393115],[10.980859,47.398145],[10.952148,47.426709],[10.893945,47.470459],[10.870605,47.500781],[10.873047,47.520215],[10.741602,47.524121],[10.658691,47.547217],[10.482813,47.541797],[10.439453,47.551562],[10.430371,47.541064],[10.403906,47.416992],[10.369141,47.366064],[10.312793,47.313428],[10.240625,47.284131],[10.183008,47.278809],[10.185742,47.317187],[10.200293,47.363428],[10.158789,47.374268],[10.096484,47.37959],[10.066309,47.393359],[10.074219,47.428516],[10.059863,47.449072],[10.034082,47.473584],[9.971582,47.505322],[9.83916,47.552295],[9.748926,47.575537],[9.715137,47.550781],[9.650586,47.525879],[9.548926,47.534033],[9.524023,47.524219]]],[[[13.70918,54.382715],[13.73418,54.31543],[13.707324,54.281152],[13.594922,54.338184],[13.482031,54.337402],[13.414551,54.249561],[13.364355,54.24585],[13.190039,54.325635],[13.162109,54.364551],[13.156348,54.396924],[13.18125,54.508984],[13.17666,54.544238],[13.231445,54.582764],[13.239941,54.638428],[13.336816,54.697119],[13.422754,54.699316],[13.450098,54.649609],[13.491211,54.615381],[13.636035,54.577002],[13.657617,54.55957],[13.670703,54.535449],[13.60332,54.488184],[13.580469,54.463965],[13.601855,54.425146],[13.70918,54.382715]]],[[[14.211426,53.950342],[14.198242,53.919043],[14.213672,53.870752],[14.172168,53.874365],[14.04834,53.863086],[13.925781,53.879053],[13.902148,53.938965],[13.92168,53.996631],[13.872461,54.036279],[13.827148,54.05957],[13.82041,54.092822],[13.827734,54.127246],[14.038867,54.03457],[14.211426,53.950342]]],[[[11.282813,54.417969],[11.129297,54.416016],[11.070703,54.456006],[11.011719,54.466162],[11.043457,54.515479],[11.084961,54.533398],[11.233594,54.50127],[11.280273,54.438379],[11.282813,54.417969]]],[[[8.307715,54.786963],[8.284668,54.76709],[8.295703,54.908301],[8.405176,55.05874],[8.451465,55.055371],[8.404102,55.014746],[8.39043,54.986279],[8.371191,54.929395],[8.379883,54.899854],[8.62959,54.891748],[8.600586,54.865381],[8.347363,54.847607],[8.307715,54.786963]]],[[[8.587891,54.712695],[8.548926,54.688184],[8.453809,54.691064],[8.400391,54.714111],[8.417676,54.738672],[8.468164,54.757422],[8.509961,54.760303],[8.573438,54.74873],[8.587891,54.712695]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Georgia","SOV_A3":"GEO","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Georgia","ADM0_A3":"GEO","GEOU_DIF":0,"GEOUNIT":"Georgia","GU_A3":"GEO","SU_DIF":0,"SUBUNIT":"Georgia","SU_A3":"GEO","BRK_DIFF":0,"NAME":"Georgia","NAME_LONG":"Georgia","BRK_A3":"GEO","BRK_NAME":"Georgia","BRK_GROUP":null,"ABBREV":"Geo.","POSTAL":"GE","FORMAL_EN":"Georgia","FORMAL_FR":null,"NAME_CIAWF":"Georgia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Georgia","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":2,"POP_EST":3720382,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":17477,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"GG","ISO_A2":"GE","ISO_A2_EH":"GE","ISO_A3":"GEO","ISO_A3_EH":"GEO","ISO_N3":"268","ISO_N3_EH":"268","UN_A3":"268","WB_A2":"GE","WB_A3":"GEO","WOE_ID":23424823,"WOE_ID_EH":23424823,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GEO","ADM0_DIFF":null,"ADM0_TLC":"GEO","ADM0_A3_US":"GEO","ADM0_A3_FR":"GEO","ADM0_A3_RU":"GEO","ADM0_A3_ES":"GEO","ADM0_A3_CN":"GEO","ADM0_A3_TW":"GEO","ADM0_A3_IN":"GEO","ADM0_A3_NP":"GEO","ADM0_A3_PK":"GEO","ADM0_A3_DE":"GEO","ADM0_A3_GB":"GEO","ADM0_A3_BR":"GEO","ADM0_A3_IL":"GEO","ADM0_A3_PS":"GEO","ADM0_A3_SA":"GEO","ADM0_A3_EG":"GEO","ADM0_A3_MA":"GEO","ADM0_A3_PT":"GEO","ADM0_A3_AR":"GEO","ADM0_A3_JP":"GEO","ADM0_A3_KO":"GEO","ADM0_A3_VN":"GEO","ADM0_A3_TR":"GEO","ADM0_A3_ID":"GEO","ADM0_A3_PL":"GEO","ADM0_A3_GR":"GEO","ADM0_A3_IT":"GEO","ADM0_A3_NL":"GEO","ADM0_A3_SE":"GEO","ADM0_A3_BD":"GEO","ADM0_A3_UA":"GEO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":43.735724,"LABEL_Y":41.870087,"NE_ID":1159320779,"WIKIDATAID":"Q230","NAME_AR":"جورجيا","NAME_BN":"জর্জিয়া","NAME_DE":"Georgien","NAME_EN":"Georgia","NAME_ES":"Georgia","NAME_FA":"گرجستان","NAME_FR":"Géorgie","NAME_EL":"Γεωργία","NAME_HE":"גאורגיה","NAME_HI":"जॉर्जिया","NAME_HU":"Grúzia","NAME_ID":"Georgia","NAME_IT":"Georgia","NAME_JA":"ジョージア","NAME_KO":"조지아","NAME_NL":"Georgië","NAME_PL":"Gruzja","NAME_PT":"Geórgia","NAME_RU":"Грузия","NAME_SV":"Georgien","NAME_TR":"Gürcistan","NAME_UK":"Грузія","NAME_UR":"جارجیا","NAME_VI":"Gruzia","NAME_ZH":"格鲁吉亚","NAME_ZHT":"喬治亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[39.97832,41.070215,46.672559,43.569775],"geometry":{"type":"Polygon","coordinates":[[[43.439453,41.107129],[43.441602,41.125977],[43.433398,41.155518],[43.402344,41.176562],[43.358984,41.190137],[43.279297,41.185205],[43.205469,41.19917],[43.152832,41.236426],[43.141016,41.264844],[43.171289,41.287939],[43.149023,41.307129],[43.057129,41.352832],[42.906738,41.466846],[42.82168,41.492383],[42.787891,41.563721],[42.754102,41.578906],[42.682422,41.585742],[42.606836,41.578809],[42.59043,41.570703],[42.567383,41.559277],[42.50791,41.470068],[42.466406,41.439844],[42.364355,41.454004],[42.27998,41.475],[42.211133,41.486719],[42.077734,41.494092],[41.925781,41.495654],[41.823535,41.432373],[41.779395,41.440527],[41.701758,41.471582],[41.576563,41.497314],[41.510059,41.51748],[41.701758,41.70542],[41.758789,41.817139],[41.760742,41.884863],[41.762988,41.97002],[41.663281,42.146875],[41.577734,42.397852],[41.48877,42.659326],[41.419434,42.737646],[41.128711,42.828125],[41.061621,42.930859],[40.836621,43.063477],[40.524023,43.121045],[40.462109,43.145703],[40.190625,43.312402],[39.97832,43.419824],[40.02373,43.484863],[40.08457,43.553125],[40.150195,43.569775],[40.342285,43.542725],[40.518945,43.512012],[40.648047,43.533887],[40.80166,43.479932],[40.941992,43.418066],[41.083105,43.374463],[41.358203,43.333398],[41.460742,43.276318],[41.580566,43.219238],[42.05,43.190137],[42.087793,43.199121],[42.122266,43.207324],[42.279688,43.228076],[42.419043,43.224219],[42.566016,43.155127],[42.660254,43.159082],[42.760645,43.16958],[42.890039,43.132617],[42.991602,43.091504],[43.000195,43.049658],[43.08916,42.989062],[43.347949,42.89668],[43.557813,42.844482],[43.623047,42.807715],[43.782617,42.747021],[43.79873,42.727783],[43.79541,42.702979],[43.749902,42.65752],[43.738379,42.616992],[43.759863,42.593848],[43.825977,42.571533],[43.957422,42.566553],[44.004688,42.595605],[44.102734,42.616357],[44.199707,42.653613],[44.329492,42.703516],[44.505859,42.748633],[44.576465,42.748486],[44.644336,42.734717],[44.691797,42.709619],[44.771094,42.616797],[44.850488,42.746826],[44.870996,42.756396],[44.943359,42.730273],[45.071582,42.694141],[45.160254,42.675],[45.208203,42.648242],[45.34375,42.529785],[45.562891,42.535742],[45.655566,42.517676],[45.705273,42.498096],[45.727539,42.475049],[45.688379,42.357373],[45.634277,42.234717],[45.638574,42.205078],[45.726562,42.158887],[45.845996,42.109961],[45.910352,42.070703],[45.954004,42.0354],[46.048438,42.00874],[46.159766,41.992041],[46.212695,41.989893],[46.267773,41.960352],[46.411523,41.904639],[46.429883,41.890967],[46.405469,41.855078],[46.348242,41.790186],[46.302539,41.75708],[46.251855,41.751758],[46.201855,41.736865],[46.184277,41.702148],[46.182129,41.65708],[46.190527,41.624854],[46.203516,41.612598],[46.254688,41.602148],[46.305469,41.507715],[46.384961,41.459863],[46.508789,41.405566],[46.618945,41.34375],[46.672559,41.286816],[46.662402,41.245508],[46.626367,41.159668],[46.534375,41.088574],[46.45791,41.070215],[46.430957,41.077051],[46.380762,41.099316],[46.27998,41.154443],[46.170703,41.197852],[46.086523,41.183838],[46.03125,41.167285],[45.921973,41.186719],[45.792773,41.224414],[45.725488,41.261621],[45.695703,41.289014],[45.715625,41.337646],[45.422266,41.425293],[45.280957,41.449561],[45.217188,41.423193],[45.001367,41.290967],[44.975879,41.27749],[44.811328,41.259375],[44.810938,41.248584],[44.848535,41.220166],[44.841406,41.211377],[44.564844,41.208203],[44.473047,41.191016],[44.227344,41.21333],[44.146484,41.203369],[44.077246,41.18252],[43.90918,41.158984],[43.793164,41.131104],[43.64502,41.11665],[43.491992,41.115527],[43.439453,41.107129]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Gambia","SOV_A3":"GMB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Gambia","ADM0_A3":"GMB","GEOU_DIF":0,"GEOUNIT":"Gambia","GU_A3":"GMB","SU_DIF":0,"SUBUNIT":"Gambia","SU_A3":"GMB","BRK_DIFF":0,"NAME":"Gambia","NAME_LONG":"The Gambia","BRK_A3":"GMB","BRK_NAME":"Gambia","BRK_GROUP":null,"ABBREV":"Gambia","POSTAL":"GM","FORMAL_EN":"Republic of the Gambia","FORMAL_FR":null,"NAME_CIAWF":"Gambia, The","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Gambia, The","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":2347706,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":1826,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"GA","ISO_A2":"GM","ISO_A2_EH":"GM","ISO_A3":"GMB","ISO_A3_EH":"GMB","ISO_N3":"270","ISO_N3_EH":"270","UN_A3":"270","WB_A2":"GM","WB_A3":"GMB","WOE_ID":23424821,"WOE_ID_EH":23424821,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GMB","ADM0_DIFF":null,"ADM0_TLC":"GMB","ADM0_A3_US":"GMB","ADM0_A3_FR":"GMB","ADM0_A3_RU":"GMB","ADM0_A3_ES":"GMB","ADM0_A3_CN":"GMB","ADM0_A3_TW":"GMB","ADM0_A3_IN":"GMB","ADM0_A3_NP":"GMB","ADM0_A3_PK":"GMB","ADM0_A3_DE":"GMB","ADM0_A3_GB":"GMB","ADM0_A3_BR":"GMB","ADM0_A3_IL":"GMB","ADM0_A3_PS":"GMB","ADM0_A3_SA":"GMB","ADM0_A3_EG":"GMB","ADM0_A3_MA":"GMB","ADM0_A3_PT":"GMB","ADM0_A3_AR":"GMB","ADM0_A3_JP":"GMB","ADM0_A3_KO":"GMB","ADM0_A3_VN":"GMB","ADM0_A3_TR":"GMB","ADM0_A3_ID":"GMB","ADM0_A3_PL":"GMB","ADM0_A3_GR":"GMB","ADM0_A3_IT":"GMB","ADM0_A3_NL":"GMB","ADM0_A3_SE":"GMB","ADM0_A3_BD":"GMB","ADM0_A3_UA":"GMB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":6,"LONG_LEN":10,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-14.998318,"LABEL_Y":13.641721,"NE_ID":1159320797,"WIKIDATAID":"Q1005","NAME_AR":"غامبيا","NAME_BN":"গাম্বিয়া","NAME_DE":"Gambia","NAME_EN":"The Gambia","NAME_ES":"Gambia","NAME_FA":"گامبیا","NAME_FR":"Gambie","NAME_EL":"Γκάμπια","NAME_HE":"גמביה","NAME_HI":"गाम्बिया","NAME_HU":"Gambia","NAME_ID":"Gambia","NAME_IT":"Gambia","NAME_JA":"ガンビア","NAME_KO":"감비아","NAME_NL":"Gambia","NAME_PL":"Gambia","NAME_PT":"Gâmbia","NAME_RU":"Гамбия","NAME_SV":"Gambia","NAME_TR":"Gambiya","NAME_UK":"Гамбія","NAME_UR":"گیمبیا","NAME_VI":"Gambia","NAME_ZH":"冈比亚","NAME_ZHT":"甘比亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-16.824805,13.06416,-13.826709,13.812109],"geometry":{"type":"Polygon","coordinates":[[[-16.562305,13.587305],[-16.30874,13.596875],[-16.001611,13.592773],[-15.667187,13.588281],[-15.509668,13.58623],[-15.426855,13.727002],[-15.269531,13.789111],[-15.10835,13.812109],[-15.024463,13.806006],[-14.935791,13.785205],[-14.766016,13.669092],[-14.660156,13.642627],[-14.57085,13.616162],[-14.506982,13.559717],[-14.405469,13.503711],[-14.325537,13.488574],[-14.278027,13.497168],[-14.199023,13.51875],[-14.146973,13.536133],[-13.977393,13.543457],[-13.852832,13.478564],[-13.826709,13.407812],[-13.84751,13.335303],[-14.014893,13.296387],[-14.246777,13.23584],[-14.438574,13.268896],[-14.671924,13.351709],[-14.808252,13.411133],[-14.865039,13.434863],[-14.950293,13.472607],[-15.024609,13.51333],[-15.096387,13.539648],[-15.151123,13.556494],[-15.191602,13.535254],[-15.212109,13.485059],[-15.244531,13.429102],[-15.28623,13.395996],[-15.481836,13.376367],[-15.657324,13.355811],[-15.751562,13.338379],[-15.814404,13.325146],[-15.834277,13.156445],[-16.033057,13.15835],[-16.22832,13.160303],[-16.430859,13.157324],[-16.648779,13.15415],[-16.704541,13.119727],[-16.76333,13.06416],[-16.769336,13.148486],[-16.824805,13.341064],[-16.750391,13.425391],[-16.669336,13.475],[-16.614795,13.435303],[-16.59834,13.356836],[-16.556445,13.303223],[-16.413379,13.269727],[-16.27168,13.293799],[-16.185059,13.282715],[-16.187891,13.326172],[-16.158398,13.384033],[-15.986426,13.408838],[-15.804492,13.425391],[-15.617676,13.460107],[-15.471289,13.458643],[-15.42749,13.468359],[-15.438135,13.483203],[-15.569531,13.499854],[-15.849902,13.459961],[-16.135449,13.448242],[-16.351807,13.343359],[-16.440527,13.353174],[-16.530078,13.457959],[-16.562305,13.587305]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Gabon","SOV_A3":"GAB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Gabon","ADM0_A3":"GAB","GEOU_DIF":0,"GEOUNIT":"Gabon","GU_A3":"GAB","SU_DIF":0,"SUBUNIT":"Gabon","SU_A3":"GAB","BRK_DIFF":0,"NAME":"Gabon","NAME_LONG":"Gabon","BRK_A3":"GAB","BRK_NAME":"Gabon","BRK_GROUP":null,"ABBREV":"Gabon","POSTAL":"GA","FORMAL_EN":"Gabonese Republic","FORMAL_FR":null,"NAME_CIAWF":"Gabon","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Gabon","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":5,"POP_EST":2172579,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":16874,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"GB","ISO_A2":"GA","ISO_A2_EH":"GA","ISO_A3":"GAB","ISO_A3_EH":"GAB","ISO_N3":"266","ISO_N3_EH":"266","UN_A3":"266","WB_A2":"GA","WB_A3":"GAB","WOE_ID":23424822,"WOE_ID_EH":23424822,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GAB","ADM0_DIFF":null,"ADM0_TLC":"GAB","ADM0_A3_US":"GAB","ADM0_A3_FR":"GAB","ADM0_A3_RU":"GAB","ADM0_A3_ES":"GAB","ADM0_A3_CN":"GAB","ADM0_A3_TW":"GAB","ADM0_A3_IN":"GAB","ADM0_A3_NP":"GAB","ADM0_A3_PK":"GAB","ADM0_A3_DE":"GAB","ADM0_A3_GB":"GAB","ADM0_A3_BR":"GAB","ADM0_A3_IL":"GAB","ADM0_A3_PS":"GAB","ADM0_A3_SA":"GAB","ADM0_A3_EG":"GAB","ADM0_A3_MA":"GAB","ADM0_A3_PT":"GAB","ADM0_A3_AR":"GAB","ADM0_A3_JP":"GAB","ADM0_A3_KO":"GAB","ADM0_A3_VN":"GAB","ADM0_A3_TR":"GAB","ADM0_A3_ID":"GAB","ADM0_A3_PL":"GAB","ADM0_A3_GR":"GAB","ADM0_A3_IT":"GAB","ADM0_A3_NL":"GAB","ADM0_A3_SE":"GAB","ADM0_A3_BD":"GAB","ADM0_A3_UA":"GAB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":3,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":11.835939,"LABEL_Y":-0.437739,"NE_ID":1159320693,"WIKIDATAID":"Q1000","NAME_AR":"الغابون","NAME_BN":"গ্যাবন","NAME_DE":"Gabun","NAME_EN":"Gabon","NAME_ES":"Gabón","NAME_FA":"گابن","NAME_FR":"Gabon","NAME_EL":"Γκαμπόν","NAME_HE":"גבון","NAME_HI":"गबॉन","NAME_HU":"Gabon","NAME_ID":"Gabon","NAME_IT":"Gabon","NAME_JA":"ガボン","NAME_KO":"가봉","NAME_NL":"Gabon","NAME_PL":"Gabon","NAME_PT":"Gabão","NAME_RU":"Габон","NAME_SV":"Gabon","NAME_TR":"Gabon","NAME_UK":"Габон","NAME_UR":"گیبون","NAME_VI":"Gabon","NAME_ZH":"加蓬","NAME_ZHT":"加彭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[8.703125,-3.916309,14.480566,2.302197],"geometry":{"type":"Polygon","coordinates":[[[13.293555,2.161572],[13.288672,2.091699],[13.209473,1.92041],[13.172168,1.788574],[13.162695,1.648096],[13.18457,1.535059],[13.222754,1.45459],[13.247363,1.366699],[13.22832,1.30542],[13.190137,1.279248],[13.216309,1.248437],[13.274121,1.241016],[13.372363,1.267773],[13.52334,1.3146],[13.721191,1.382275],[13.851367,1.41875],[14.066211,1.395898],[14.180859,1.370215],[14.239746,1.322559],[14.303027,1.12085],[14.334473,1.090234],[14.386426,1.004443],[14.429883,0.901465],[14.43916,0.849121],[14.434473,0.811475],[14.390625,0.755713],[14.341504,0.673828],[14.324219,0.624219],[14.283105,0.587451],[14.230957,0.551123],[14.0875,0.536572],[14.065527,0.51499],[14.025293,0.427734],[13.949609,0.353809],[13.915137,0.283984],[13.88457,0.19082],[13.890625,0.075293],[13.875488,-0.09082],[13.860059,-0.20332],[13.898047,-0.242578],[14.069434,-0.270117],[14.102832,-0.292383],[14.14834,-0.361914],[14.206738,-0.427344],[14.36377,-0.468555],[14.424707,-0.518652],[14.474121,-0.573438],[14.480566,-0.618359],[14.444922,-0.798828],[14.410645,-0.97207],[14.424023,-1.103906],[14.436914,-1.229785],[14.455566,-1.413184],[14.447266,-1.525098],[14.40293,-1.593359],[14.40293,-1.646973],[14.423242,-1.711523],[14.383984,-1.890039],[14.358594,-1.920215],[14.288379,-1.953516],[14.251465,-2.001465],[14.239648,-2.076758],[14.201758,-2.179883],[14.162891,-2.217578],[14.162891,-2.265527],[14.200391,-2.300586],[14.199805,-2.354199],[14.129785,-2.417969],[14.087402,-2.466895],[13.993848,-2.490625],[13.886914,-2.46543],[13.861816,-2.429883],[13.887695,-2.374512],[13.878516,-2.330176],[13.841602,-2.283691],[13.784375,-2.16377],[13.733789,-2.138477],[13.705566,-2.1875],[13.618555,-2.278613],[13.464941,-2.39541],[13.357324,-2.404785],[13.158594,-2.369141],[12.991992,-2.313379],[12.913574,-2.17627],[12.864453,-2.063281],[12.793555,-1.931836],[12.713672,-1.869434],[12.628418,-1.82959],[12.59043,-1.826855],[12.468652,-1.9],[12.432129,-1.928906],[12.432422,-1.990332],[12.44375,-2.047559],[12.462598,-2.075293],[12.478516,-2.112012],[12.475684,-2.169238],[12.453809,-2.245605],[12.446387,-2.32998],[12.064453,-2.412598],[11.998242,-2.382812],[11.950293,-2.344824],[11.892383,-2.351465],[11.726758,-2.394727],[11.665918,-2.364551],[11.605469,-2.342578],[11.577734,-2.360938],[11.575195,-2.39707],[11.603418,-2.59541],[11.594531,-2.670996],[11.557129,-2.769629],[11.537793,-2.836719],[11.639063,-2.855371],[11.675684,-2.886621],[11.711328,-2.936523],[11.760156,-2.983105],[11.763477,-3.01123],[11.708008,-3.063086],[11.689063,-3.126953],[11.71543,-3.176953],[11.784375,-3.229102],[11.885059,-3.283203],[11.93418,-3.318555],[11.929297,-3.350977],[11.882812,-3.420215],[11.864746,-3.478613],[11.83291,-3.531445],[11.839453,-3.580078],[11.884766,-3.625391],[11.879883,-3.665918],[11.849121,-3.69668],[11.786426,-3.690234],[11.733398,-3.694531],[11.685742,-3.682031],[11.536816,-3.525],[11.504297,-3.520313],[11.288281,-3.641113],[11.234473,-3.69082],[11.190039,-3.762012],[11.130176,-3.916309],[11.032031,-3.826465],[10.947266,-3.662109],[10.848535,-3.561328],[10.640723,-3.398047],[10.585449,-3.278027],[10.347656,-3.013086],[10.006152,-2.74834],[9.759473,-2.518555],[9.72207,-2.467578],[9.763672,-2.473828],[10.001953,-2.588379],[10.034473,-2.575586],[10.062012,-2.549902],[9.959082,-2.489844],[9.86084,-2.442578],[9.768652,-2.413086],[9.676367,-2.415625],[9.624609,-2.36709],[9.591016,-2.293164],[9.574023,-2.22998],[9.533203,-2.163867],[9.402246,-2.027637],[9.370508,-1.975],[9.298926,-1.903027],[9.34248,-1.893652],[9.482813,-1.962305],[9.495313,-1.934961],[9.483203,-1.894629],[9.342188,-1.829395],[9.265625,-1.825098],[9.247949,-1.779297],[9.258398,-1.72627],[9.15752,-1.527734],[9.052832,-1.379102],[9.036328,-1.308887],[9.318848,-1.632031],[9.356641,-1.637598],[9.406348,-1.63457],[9.52334,-1.59834],[9.501074,-1.555176],[9.44834,-1.508887],[9.397168,-1.530176],[9.330664,-1.53457],[9.295801,-1.515234],[9.280176,-1.481934],[9.34668,-1.325],[9.317871,-1.33291],[9.29668,-1.360938],[9.260156,-1.374219],[9.203809,-1.382422],[9.064648,-1.29834],[8.941895,-1.071484],[8.909375,-1.025],[8.876563,-0.946094],[8.844238,-0.913574],[8.703125,-0.591016],[8.757227,-0.614941],[8.821387,-0.708398],[8.946387,-0.68877],[8.995215,-0.634668],[9.037891,-0.636719],[9.081543,-0.624316],[9.136523,-0.57334],[9.29668,-0.35127],[9.339063,-0.058252],[9.325293,0.11582],[9.301855,0.288525],[9.354883,0.343604],[9.375781,0.307227],[9.386133,0.245898],[9.411133,0.200439],[9.468164,0.159766],[9.574316,0.148926],[9.738379,0.084961],[9.796777,0.044238],[9.812695,0.125586],[10.001465,0.194971],[9.944434,0.219873],[9.77666,0.19248],[9.546484,0.295947],[9.470117,0.361914],[9.398828,0.486719],[9.324805,0.5521],[9.32998,0.61084],[9.495313,0.664844],[9.538965,0.658691],[9.556641,0.594189],[9.601074,0.567725],[9.617969,0.576514],[9.625293,0.631641],[9.625879,0.779443],[9.575391,0.991309],[9.59082,1.031982],[9.636133,1.04668],[9.676465,1.074707],[9.70459,1.07998],[9.760547,1.074707],[9.788672,1.025684],[9.803906,0.99873],[9.860352,0.98623],[9.906738,0.960107],[9.94668,0.967139],[9.979785,0.997705],[10.028516,1.004004],[10.178906,1.003564],[10.31543,1.003076],[10.587207,1.002148],[10.858887,1.00127],[11.130664,1.000391],[11.335352,0.999707],[11.334668,1.120752],[11.333594,1.307617],[11.332324,1.528369],[11.331152,1.740186],[11.330078,1.935889],[11.328711,2.167432],[11.339941,2.233838],[11.35332,2.261426],[11.348438,2.299707],[11.558984,2.302197],[11.939746,2.285156],[12.106152,2.2875],[12.153418,2.284375],[12.361328,2.295996],[12.529785,2.281348],[12.601367,2.265039],[12.665723,2.256787],[12.86748,2.246777],[13.130859,2.259424],[13.220313,2.256445],[13.269922,2.224219],[13.293555,2.161572]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"France","ADM0_A3":"FRA","GEOU_DIF":0,"GEOUNIT":"France","GU_A3":"FRA","SU_DIF":0,"SUBUNIT":"France","SU_A3":"FRA","BRK_DIFF":0,"NAME":"France","NAME_LONG":"France","BRK_A3":"FRA","BRK_NAME":"France","BRK_GROUP":null,"ABBREV":"Fr.","POSTAL":"F","FORMAL_EN":"French Republic","FORMAL_FR":null,"NAME_CIAWF":"France","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"France","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":67059887,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":2715518,"GDP_YEAR":2019,"ECONOMY":"1. Developed region: G7","INCOME_GRP":"1. High income: OECD","FIPS_10":"FR","ISO_A2":"-99","ISO_A2_EH":"FR","ISO_A3":"-99","ISO_A3_EH":"FRA","ISO_N3":"-99","ISO_N3_EH":"250","UN_A3":"250","WB_A2":"FR","WB_A3":"FRA","WOE_ID":-90,"WOE_ID_EH":23424819,"WOE_NOTE":"Includes only Metropolitan France (including Corsica)","ADM0_ISO":"FRA","ADM0_DIFF":null,"ADM0_TLC":"FRA","ADM0_A3_US":"FRA","ADM0_A3_FR":"FRA","ADM0_A3_RU":"FRA","ADM0_A3_ES":"FRA","ADM0_A3_CN":"FRA","ADM0_A3_TW":"FRA","ADM0_A3_IN":"FRA","ADM0_A3_NP":"FRA","ADM0_A3_PK":"FRA","ADM0_A3_DE":"FRA","ADM0_A3_GB":"FRA","ADM0_A3_BR":"FRA","ADM0_A3_IL":"FRA","ADM0_A3_PS":"FRA","ADM0_A3_SA":"FRA","ADM0_A3_EG":"FRA","ADM0_A3_MA":"FRA","ADM0_A3_PT":"FRA","ADM0_A3_AR":"FRA","ADM0_A3_JP":"FRA","ADM0_A3_KO":"FRA","ADM0_A3_VN":"FRA","ADM0_A3_TR":"FRA","ADM0_A3_ID":"FRA","ADM0_A3_PL":"FRA","ADM0_A3_GR":"FRA","ADM0_A3_IT":"FRA","ADM0_A3_NL":"FRA","ADM0_A3_SE":"FRA","ADM0_A3_BD":"FRA","ADM0_A3_UA":"FRA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":3,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":2.552275,"LABEL_Y":46.696113,"NE_ID":1159320637,"WIKIDATAID":"Q142","NAME_AR":"فرنسا","NAME_BN":"ফ্রান্স","NAME_DE":"Frankreich","NAME_EN":"France","NAME_ES":"Francia","NAME_FA":"فرانسه","NAME_FR":"France","NAME_EL":"Γαλλία","NAME_HE":"צרפת","NAME_HI":"फ़्रान्स","NAME_HU":"Franciaország","NAME_ID":"Prancis","NAME_IT":"Francia","NAME_JA":"フランス","NAME_KO":"프랑스","NAME_NL":"Frankrijk","NAME_PL":"Francja","NAME_PT":"França","NAME_RU":"Франция","NAME_SV":"Frankrike","NAME_TR":"Fransa","NAME_UK":"Франція","NAME_UR":"فرانس","NAME_VI":"Pháp","NAME_ZH":"法国","NAME_ZHT":"法國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.794092,-21.369043,55.839063,51.097119],"geometry":{"type":"MultiPolygon","coordinates":[[[[9.480371,42.80542],[9.454199,42.658594],[9.473242,42.615576],[9.509375,42.585596],[9.526172,42.552637],[9.556445,42.160937],[9.550684,42.129736],[9.428418,41.972412],[9.400879,41.926221],[9.394824,41.731201],[9.374219,41.678809],[9.330859,41.627148],[9.253418,41.460059],[9.186133,41.384912],[9.003027,41.476562],[8.89502,41.516162],[8.84209,41.558887],[8.80752,41.588379],[8.829785,41.627686],[8.879004,41.668555],[8.886816,41.700684],[8.770996,41.737109],[8.717969,41.761426],[8.718652,41.804004],[8.758691,41.87041],[8.74043,41.925146],[8.673633,41.922363],[8.621875,41.930713],[8.615137,41.959131],[8.653418,41.995557],[8.702539,42.043115],[8.700977,42.095605],[8.641602,42.118213],[8.587793,42.16084],[8.566211,42.218799],[8.60791,42.258447],[8.675488,42.284033],[8.625879,42.343408],[8.592383,42.344727],[8.565625,42.357715],[8.5875,42.385303],[8.640039,42.426562],[8.713086,42.549756],[8.814844,42.60791],[8.994922,42.645312],[9.043652,42.66167],[9.088379,42.70498],[9.137891,42.73291],[9.198047,42.729199],[9.253516,42.712451],[9.287695,42.694629],[9.313379,42.713184],[9.338379,42.766895],[9.323047,42.814062],[9.330957,42.943799],[9.363184,43.017383],[9.415234,43.021484],[9.463281,42.981006],[9.46084,42.945215],[9.478613,42.860498],[9.480371,42.80542]]],[[[7.615625,47.592725],[7.494922,47.547363],[7.467383,47.507666],[7.42002,47.455176],[7.343164,47.433105],[7.265723,47.425781],[7.203125,47.432715],[7.16748,47.453711],[7.169238,47.473242],[7.136035,47.489844],[7.053418,47.489355],[6.968359,47.453223],[6.900391,47.394238],[6.921484,47.36123],[6.984082,47.352539],[7.000586,47.339453],[7.000586,47.32251],[6.978516,47.302051],[6.952051,47.267187],[6.820703,47.163184],[6.688086,47.058252],[6.666895,47.026514],[6.624805,47.004346],[6.45625,46.94834],[6.438574,46.925879],[6.429004,46.832275],[6.410156,46.75542],[6.285156,46.683057],[6.160742,46.611035],[6.129688,46.566992],[6.107031,46.516064],[6.067969,46.458545],[6.060254,46.428174],[6.123242,46.378613],[6.115918,46.337646],[6.095898,46.279395],[6.036133,46.238086],[5.97002,46.214697],[5.971484,46.151221],[6.006641,46.142334],[6.086621,46.147021],[6.199414,46.193066],[6.272949,46.252246],[6.22959,46.308447],[6.224219,46.319434],[6.234668,46.332617],[6.321875,46.393701],[6.428906,46.430518],[6.578223,46.437354],[6.758105,46.415771],[6.776074,46.406641],[6.767383,46.369189],[6.78418,46.313965],[6.816797,46.275195],[6.77207,46.165137],[6.805664,46.130664],[6.858008,46.089404],[6.897266,46.051758],[6.953711,46.017139],[7.003906,45.958838],[7.021094,45.925781],[6.94082,45.868359],[6.804492,45.814551],[6.78916,45.780078],[6.790918,45.740869],[6.80625,45.71001],[6.881445,45.670361],[6.962402,45.580566],[7.013672,45.500488],[7.126074,45.423682],[7.153418,45.400928],[7.146387,45.381738],[7.116797,45.349023],[7.07832,45.239941],[7.032422,45.222607],[6.98125,45.215576],[6.842285,45.135645],[6.780371,45.145312],[6.692285,45.144287],[6.627734,45.117969],[6.634766,45.068164],[6.691406,45.022607],[6.724707,44.972998],[6.738184,44.921387],[6.801074,44.883154],[6.889355,44.860303],[6.939844,44.85874],[6.972852,44.84502],[6.992676,44.827295],[7.030664,44.716699],[7.00791,44.688965],[6.960352,44.677148],[6.931934,44.631641],[6.875195,44.564551],[6.842969,44.510693],[6.878613,44.463281],[6.893848,44.428174],[6.874805,44.392041],[6.900195,44.335742],[6.967285,44.280029],[7.149414,44.201709],[7.318555,44.137988],[7.370898,44.127393],[7.599414,44.168359],[7.637207,44.164844],[7.665039,44.116016],[7.677148,44.083154],[7.651465,44.033643],[7.589648,43.96543],[7.522656,43.911084],[7.482031,43.864893],[7.490527,43.822949],[7.493164,43.767139],[7.438672,43.750439],[7.436914,43.761475],[7.414453,43.770898],[7.39502,43.765332],[7.380078,43.753223],[7.377734,43.731738],[7.261523,43.696094],[7.181445,43.659131],[6.864746,43.43833],[6.716602,43.373584],[6.687402,43.33457],[6.657227,43.26167],[6.570215,43.199072],[6.494043,43.169287],[6.305371,43.138721],[6.115918,43.072363],[6.030566,43.100977],[5.809473,43.0979],[5.671582,43.177832],[5.406543,43.228516],[5.320215,43.344922],[5.199512,43.35249],[5.12041,43.348975],[5.073145,43.366602],[5.06084,43.406299],[5.059766,43.444531],[4.975977,43.426953],[4.911914,43.426953],[4.87373,43.411621],[4.843555,43.393945],[4.80791,43.405225],[4.787207,43.401416],[4.789062,43.378906],[4.712109,43.373291],[4.628711,43.387109],[4.409766,43.447217],[4.376172,43.456396],[4.224219,43.479639],[4.162793,43.503662],[4.113086,43.563037],[4.075098,43.581836],[4.052637,43.593066],[3.91084,43.563086],[3.861621,43.516357],[3.784766,43.461621],[3.258887,43.193213],[3.162891,43.080762],[3.051758,42.915137],[3.043066,42.837891],[3.090918,42.590869],[3.197852,42.461182],[3.211426,42.431152],[3.152148,42.431006],[3.052637,42.447217],[2.97002,42.467236],[2.891406,42.456055],[2.815625,42.429248],[2.749414,42.413037],[2.701855,42.408496],[2.67002,42.393018],[2.654785,42.362109],[2.65166,42.340479],[2.567969,42.345801],[2.374414,42.390283],[2.200391,42.420947],[2.09834,42.386084],[2.032715,42.353516],[1.986523,42.358496],[1.951465,42.392773],[1.92793,42.426318],[1.859766,42.45708],[1.706055,42.50332],[1.713965,42.525635],[1.740234,42.556738],[1.739453,42.575928],[1.709863,42.604443],[1.568164,42.63501],[1.501367,42.642725],[1.458887,42.62168],[1.42832,42.595898],[1.349414,42.690674],[1.293262,42.709961],[1.208301,42.713135],[1.111133,42.742041],[1.010059,42.778955],[0.764453,42.838037],[0.696875,42.845117],[0.669824,42.835742],[0.651758,42.800439],[0.641992,42.700635],[0.631641,42.6896],[0.517676,42.686279],[0.377246,42.700146],[0.312891,42.693262],[0.255469,42.69292],[0.201367,42.719336],[-0.041162,42.689111],[-0.081494,42.703857],[-0.140039,42.748926],[-0.205322,42.785303],[-0.256055,42.803955],[-0.299316,42.825342],[-0.338574,42.828809],[-0.398438,42.808105],[-0.481152,42.799316],[-0.549805,42.802002],[-0.586426,42.798975],[-0.740186,42.909521],[-0.762646,42.939795],[-0.839209,42.948193],[-0.933838,42.949512],[-1.175439,43.021143],[-1.285449,43.059619],[-1.301562,43.082471],[-1.300049,43.100977],[-1.318848,43.096973],[-1.352734,43.064258],[-1.370508,43.037598],[-1.394043,43.032617],[-1.42876,43.036768],[-1.46084,43.051758],[-1.480469,43.071143],[-1.459424,43.10498],[-1.422607,43.149121],[-1.407324,43.197119],[-1.410693,43.240088],[-1.471729,43.267676],[-1.561475,43.279199],[-1.627148,43.282471],[-1.712842,43.307031],[-1.753271,43.324707],[-1.792725,43.372559],[-1.794043,43.407324],[-1.631445,43.438037],[-1.484863,43.56377],[-1.345996,44.020215],[-1.245508,44.559863],[-1.170801,44.661816],[-1.076953,44.689844],[-1.152881,44.764014],[-1.200391,44.726465],[-1.220312,44.686621],[-1.245215,44.666699],[-1.189062,45.161475],[-1.149072,45.342627],[-1.081006,45.532422],[-0.941748,45.45708],[-0.826318,45.380664],[-0.76665,45.314355],[-0.691113,45.093457],[-0.633984,45.047119],[-0.548486,45.000586],[-0.582275,45.051367],[-0.641113,45.090186],[-0.733105,45.384619],[-0.790771,45.468018],[-0.880664,45.538184],[-1.169971,45.685937],[-1.195996,45.714453],[-1.209961,45.770898],[-1.114355,45.768506],[-1.031738,45.741064],[-1.041504,45.772656],[-1.066016,45.805664],[-1.104395,45.925342],[-1.136377,46.204834],[-1.132031,46.252686],[-1.146289,46.311377],[-1.238818,46.324512],[-1.312793,46.326904],[-1.39248,46.350098],[-1.786523,46.514844],[-1.921436,46.684814],[-2.059375,46.810303],[-2.09248,46.865039],[-2.090283,46.920508],[-2.018896,47.037646],[-2.081934,47.111621],[-2.143555,47.126318],[-2.19707,47.162939],[-2.148584,47.223926],[-2.108301,47.262939],[-2.027588,47.273584],[-1.921729,47.260645],[-1.821289,47.225342],[-1.742529,47.215967],[-1.975391,47.310693],[-2.353027,47.27876],[-2.434424,47.290967],[-2.503125,47.312061],[-2.530029,47.381592],[-2.476318,47.412939],[-2.427686,47.470898],[-2.482715,47.511621],[-2.554053,47.527051],[-2.665918,47.526172],[-2.770312,47.513867],[-2.796777,47.537256],[-2.733105,47.601807],[-2.787207,47.625537],[-2.859375,47.614453],[-2.964062,47.601074],[-3.064209,47.621338],[-3.158838,47.694678],[-3.221582,47.694141],[-3.264697,47.685107],[-3.328613,47.71333],[-3.395898,47.72041],[-3.443945,47.711035],[-3.507812,47.753125],[-3.900928,47.837549],[-4.070703,47.847852],[-4.226416,47.809619],[-4.312109,47.8229],[-4.375098,47.877441],[-4.427979,47.968945],[-4.678809,48.039502],[-4.629199,48.085791],[-4.512402,48.096729],[-4.377832,48.128809],[-4.329443,48.169971],[-4.434619,48.217969],[-4.512207,48.229736],[-4.544336,48.246973],[-4.577148,48.290039],[-4.530664,48.309717],[-4.4979,48.299268],[-4.40332,48.293066],[-4.241406,48.303662],[-4.301758,48.34707],[-4.364404,48.356738],[-4.393164,48.367627],[-4.524805,48.372314],[-4.584717,48.35752],[-4.719385,48.363135],[-4.748535,48.41001],[-4.7625,48.450244],[-4.720752,48.539893],[-4.531201,48.619971],[-4.058887,48.70752],[-3.855664,48.694727],[-3.714795,48.710498],[-3.545996,48.765674],[-3.471484,48.812939],[-3.231445,48.84082],[-3.003223,48.790674],[-2.792871,48.601074],[-2.692334,48.536816],[-2.446191,48.648291],[-2.079443,48.64502],[-2.003711,48.58208],[-1.973145,48.635107],[-1.905713,48.697119],[-1.851953,48.668848],[-1.824707,48.630518],[-1.437646,48.641406],[-1.376465,48.652588],[-1.480469,48.697607],[-1.565479,48.805518],[-1.583105,49.202393],[-1.690332,49.313184],[-1.813428,49.490137],[-1.870068,49.595117],[-1.875391,49.631396],[-1.856445,49.683789],[-1.705127,49.680957],[-1.588232,49.667676],[-1.365723,49.707275],[-1.258643,49.680176],[-1.264941,49.598242],[-1.232275,49.494873],[-1.194971,49.444824],[-1.138525,49.387891],[-0.959131,49.393164],[-0.765527,49.359717],[-0.520898,49.354541],[-0.163477,49.296777],[-0.011182,49.330225],[0.136133,49.401514],[0.416895,49.448389],[0.439258,49.473193],[0.277637,49.463281],[0.129395,49.508447],[0.109375,49.55752],[0.126563,49.601562],[0.186719,49.703027],[0.616211,49.862939],[0.924121,49.910205],[1.245508,49.998242],[1.407227,50.088525],[1.514063,50.205078],[1.548438,50.230713],[1.592773,50.252197],[1.551563,50.293945],[1.579492,50.739258],[1.60957,50.819482],[1.672266,50.88501],[1.767676,50.935693],[1.9125,50.990625],[2.445703,51.066504],[2.524902,51.097119],[2.536035,51.049512],[2.574805,50.988574],[2.601465,50.955273],[2.579297,50.911768],[2.596777,50.875928],[2.669141,50.811426],[2.759375,50.750635],[2.839746,50.711768],[2.862402,50.716016],[2.921973,50.727051],[3.022852,50.766895],[3.106836,50.779443],[3.154883,50.748926],[3.182031,50.731689],[3.234961,50.662939],[3.249805,50.591162],[3.27334,50.531543],[3.316211,50.507373],[3.476953,50.499463],[3.59541,50.477344],[3.626758,50.457324],[3.667285,50.324805],[3.689355,50.306055],[3.718848,50.32168],[3.748047,50.343506],[3.788574,50.346973],[3.858105,50.338574],[3.949707,50.335938],[4.044141,50.321338],[4.174609,50.246484],[4.169629,50.221777],[4.144141,50.178418],[4.135254,50.143799],[4.157715,50.129883],[4.192188,50.094141],[4.183887,50.052832],[4.150293,50.023877],[4.136816,50],[4.137012,49.984473],[4.149316,49.971582],[4.176074,49.960254],[4.36875,49.944971],[4.54502,49.960254],[4.656152,50.002441],[4.675098,50.046875],[4.706641,50.09707],[4.772852,50.139062],[4.818652,50.153174],[4.860547,50.135889],[4.790039,49.95957],[4.841504,49.914502],[4.849121,49.847119],[4.867578,49.788135],[4.930566,49.789258],[5.006934,49.778369],[5.061035,49.756543],[5.124121,49.721484],[5.215039,49.689258],[5.278809,49.67793],[5.301953,49.650977],[5.353516,49.619824],[5.434668,49.554492],[5.507324,49.510889],[5.542383,49.511035],[5.610059,49.528223],[5.710449,49.539209],[5.789746,49.538281],[5.823438,49.505078],[5.901367,49.489746],[5.928906,49.477539],[5.959473,49.454639],[6.011426,49.445459],[6.074121,49.454639],[6.119922,49.485205],[6.181055,49.498926],[6.242188,49.494336],[6.277344,49.477539],[6.344336,49.452734],[6.382227,49.458154],[6.458105,49.442871],[6.534277,49.394678],[6.566309,49.346191],[6.574707,49.319678],[6.607617,49.290869],[6.735449,49.160596],[6.77627,49.15415],[6.820703,49.173926],[6.849512,49.201953],[6.891211,49.20752],[6.958301,49.194629],[7.001465,49.179883],[7.022168,49.123437],[7.036719,49.112695],[7.065723,49.124854],[7.117383,49.127539],[7.199902,49.113623],[7.313379,49.129541],[7.404199,49.153076],[7.450586,49.152197],[7.525488,49.086377],[7.610938,49.061768],[7.799219,49.041895],[8.00127,49.010937],[8.080664,48.985889],[8.134863,48.973584],[8.140332,48.886426],[8.124023,48.873291],[7.922754,48.698535],[7.837988,48.636035],[7.794824,48.546826],[7.765137,48.41001],[7.705664,48.280029],[7.616602,48.156787],[7.58418,48.064307],[7.608496,48.002588],[7.593262,47.905664],[7.538574,47.773633],[7.529395,47.673877],[7.56543,47.606543],[7.615625,47.592725]]],[[[-1.17832,45.904053],[-1.213574,45.816602],[-1.280273,45.897119],[-1.368701,45.967676],[-1.388867,46.032959],[-1.388672,46.050391],[-1.285059,46.002686],[-1.17832,45.904053]]],[[[45.180273,-12.976758],[45.117578,-12.984961],[45.087695,-12.958496],[45.069434,-12.895605],[45.088281,-12.835059],[45.093555,-12.786133],[45.042578,-12.70127],[45.092383,-12.653027],[45.134766,-12.70918],[45.158789,-12.712988],[45.223145,-12.752148],[45.204297,-12.824316],[45.208594,-12.847949],[45.179395,-12.920215],[45.180273,-12.976758]]],[[[55.797363,-21.339355],[55.656152,-21.369043],[55.557617,-21.358301],[55.362695,-21.273633],[55.310352,-21.217383],[55.232813,-21.058398],[55.25,-21.002441],[55.311328,-20.904102],[55.450488,-20.865137],[55.596484,-20.87959],[55.661914,-20.90625],[55.73916,-21.021484],[55.839063,-21.138574],[55.822461,-21.277832],[55.797363,-21.339355]]],[[[-60.82627,14.494482],[-60.836621,14.437402],[-60.862109,14.42627],[-60.899414,14.473779],[-61.063721,14.46709],[-61.088867,14.50957],[-61.090332,14.529687],[-61.011328,14.601904],[-61.104297,14.62124],[-61.141113,14.652393],[-61.219727,14.804395],[-61.21333,14.848584],[-61.180811,14.871924],[-61.127393,14.875293],[-61.0271,14.826172],[-60.952539,14.75625],[-60.927148,14.755176],[-60.918652,14.735352],[-60.933691,14.686182],[-60.88916,14.644531],[-60.869971,14.613721],[-60.82627,14.494482]]],[[[-61.327148,16.23042],[-61.444824,16.219287],[-61.522168,16.228027],[-61.53999,16.299609],[-61.500586,16.360205],[-61.528906,16.433789],[-61.510645,16.477686],[-61.471191,16.506641],[-61.406445,16.468311],[-61.396143,16.413428],[-61.355469,16.363184],[-61.172607,16.256104],[-61.327148,16.23042]]],[[[-61.589551,16.006934],[-61.670459,15.962061],[-61.710254,15.975928],[-61.759424,16.062061],[-61.794092,16.300977],[-61.767139,16.340479],[-61.748047,16.355273],[-61.641504,16.325977],[-61.597021,16.292187],[-61.552344,16.270898],[-61.575049,16.227148],[-61.563867,16.047754],[-61.589551,16.006934]]],[[[-61.230469,15.889941],[-61.28623,15.886035],[-61.310742,15.894678],[-61.318408,15.954883],[-61.275293,15.99624],[-61.25,16.006299],[-61.212354,15.959912],[-61.203418,15.92124],[-61.230469,15.889941]]],[[[-54.61626,2.326758],[-54.604736,2.335791],[-54.568408,2.342578],[-54.535937,2.343311],[-54.485547,2.416113],[-54.402002,2.461523],[-54.256738,2.713721],[-54.195508,2.817871],[-54.188086,2.874854],[-54.170703,2.993604],[-54.203125,3.138184],[-54.188037,3.17876],[-54.063184,3.35332],[-54.00957,3.448535],[-54.005957,3.530518],[-53.990479,3.589551],[-54.005908,3.62041],[-54.034229,3.629395],[-54.081982,3.705957],[-54.112793,3.769434],[-54.197461,3.834424],[-54.255518,3.901074],[-54.350732,4.054102],[-54.342139,4.140039],[-54.369141,4.170947],[-54.398389,4.20249],[-54.39624,4.241406],[-54.416016,4.337646],[-54.440674,4.428027],[-54.449609,4.48501],[-54.426074,4.583008],[-54.440234,4.691992],[-54.471143,4.749316],[-54.479687,4.836523],[-54.47334,4.914697],[-54.446875,4.958789],[-54.452197,5.013477],[-54.331641,5.187402],[-54.240186,5.288232],[-54.155957,5.358984],[-54.085303,5.411816],[-53.9896,5.676025],[-53.919922,5.768994],[-53.847168,5.782227],[-53.454443,5.563477],[-53.270361,5.543262],[-52.899316,5.425049],[-52.76499,5.273486],[-52.453955,5.021338],[-52.290527,4.942187],[-52.288916,4.876123],[-52.324609,4.770898],[-52.219971,4.862793],[-52.058105,4.717383],[-52.012305,4.645996],[-51.961914,4.514404],[-51.979346,4.429883],[-52.001709,4.38623],[-52.00293,4.352295],[-51.954785,4.399072],[-51.927686,4.436133],[-51.91958,4.524316],[-51.880273,4.63374],[-51.827539,4.635693],[-51.785645,4.570508],[-51.698633,4.286816],[-51.66582,4.228809],[-51.653271,4.13877],[-51.658105,4.098486],[-51.652539,4.061279],[-51.683447,4.039697],[-51.76709,3.992676],[-51.805273,3.929932],[-51.82749,3.86958],[-51.879492,3.828564],[-51.928906,3.776953],[-51.944336,3.735107],[-51.990625,3.702002],[-51.999512,3.646875],[-52.116113,3.452295],[-52.162598,3.364697],[-52.229443,3.27168],[-52.27124,3.237109],[-52.327881,3.181738],[-52.356641,3.117725],[-52.356641,3.051562],[-52.396387,2.972217],[-52.418408,2.903857],[-52.455859,2.86416],[-52.554688,2.647656],[-52.559473,2.573145],[-52.583008,2.528906],[-52.653174,2.425732],[-52.700635,2.363672],[-52.783398,2.317187],[-52.87041,2.26665],[-52.903467,2.211523],[-52.964844,2.183545],[-53.009717,2.181738],[-53.082275,2.201709],[-53.180078,2.211328],[-53.229785,2.204883],[-53.252197,2.232275],[-53.285498,2.295215],[-53.334424,2.339746],[-53.366016,2.324219],[-53.431836,2.279443],[-53.508984,2.253125],[-53.563965,2.261914],[-53.683691,2.29292],[-53.734717,2.308545],[-53.750146,2.33501],[-53.767773,2.354834],[-53.794238,2.345996],[-53.829541,2.312939],[-53.876611,2.278271],[-53.946436,2.232568],[-54.089746,2.150488],[-54.130078,2.121045],[-54.167383,2.137061],[-54.227979,2.15332],[-54.293066,2.154248],[-54.433105,2.20752],[-54.515088,2.245459],[-54.550488,2.293066],[-54.591943,2.31377],[-54.61626,2.326758]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":4,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Saint Pierre and Miquelon","ADM0_A3":"SPM","GEOU_DIF":0,"GEOUNIT":"Saint Pierre and Miquelon","GU_A3":"SPM","SU_DIF":0,"SUBUNIT":"Saint Pierre and Miquelon","SU_A3":"SPM","BRK_DIFF":0,"NAME":"St. Pierre and Miquelon","NAME_LONG":"Saint Pierre and Miquelon","BRK_A3":"SPM","BRK_NAME":"St. Pierre and Miquelon","BRK_GROUP":null,"ABBREV":"St. P.M.","POSTAL":"PM","FORMAL_EN":"Saint Pierre and Miquelon","FORMAL_FR":null,"NAME_CIAWF":"Saint Pierre and Miquelon","NOTE_ADM0":"Fr.","NOTE_BRK":null,"NAME_SORT":"St. Pierre and Miquelon","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":5997,"POP_RANK":5,"POP_YEAR":2017,"GDP_MD":215,"GDP_YEAR":2016,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"3. Upper middle income","FIPS_10":"SB","ISO_A2":"PM","ISO_A2_EH":"PM","ISO_A3":"SPM","ISO_A3_EH":"SPM","ISO_N3":"666","ISO_N3_EH":"666","UN_A3":"666","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424939,"WOE_ID_EH":23424939,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SPM","ADM0_DIFF":null,"ADM0_TLC":"SPM","ADM0_A3_US":"SPM","ADM0_A3_FR":"SPM","ADM0_A3_RU":"SPM","ADM0_A3_ES":"SPM","ADM0_A3_CN":"SPM","ADM0_A3_TW":"SPM","ADM0_A3_IN":"SPM","ADM0_A3_NP":"SPM","ADM0_A3_PK":"SPM","ADM0_A3_DE":"SPM","ADM0_A3_GB":"SPM","ADM0_A3_BR":"SPM","ADM0_A3_IL":"SPM","ADM0_A3_PS":"SPM","ADM0_A3_SA":"SPM","ADM0_A3_EG":"SPM","ADM0_A3_MA":"SPM","ADM0_A3_PT":"SPM","ADM0_A3_AR":"SPM","ADM0_A3_JP":"SPM","ADM0_A3_KO":"SPM","ADM0_A3_VN":"SPM","ADM0_A3_TR":"SPM","ADM0_A3_ID":"SPM","ADM0_A3_PL":"SPM","ADM0_A3_GR":"SPM","ADM0_A3_IT":"SPM","ADM0_A3_NL":"SPM","ADM0_A3_SE":"SPM","ADM0_A3_BD":"SPM","ADM0_A3_UA":"SPM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Northern America","REGION_WB":"North America","NAME_LEN":23,"LONG_LEN":25,"ABBREV_LEN":8,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-56.332352,"LABEL_Y":47.040344,"NE_ID":1159320647,"WIKIDATAID":"Q34617","NAME_AR":"سان بيير وميكلون","NAME_BN":"সাঁ পিয়ের ও মিকলোঁ","NAME_DE":"Saint-Pierre und Miquelon","NAME_EN":"Saint Pierre and Miquelon","NAME_ES":"San Pedro y Miquelón","NAME_FA":"سن پیر و میکلن","NAME_FR":"Saint-Pierre-et-Miquelon","NAME_EL":"Σαιν-Πιερ και Μικελόν","NAME_HE":"סן-פייר ומיקלון","NAME_HI":"सन्त पियर और मिकलान","NAME_HU":"Saint-Pierre és Miquelon","NAME_ID":"Saint Pierre dan Miquelon","NAME_IT":"Saint-Pierre e Miquelon","NAME_JA":"サンピエール島・ミクロン島","NAME_KO":"생피에르 미클롱","NAME_NL":"Saint-Pierre en Miquelon","NAME_PL":"Saint-Pierre i Miquelon","NAME_PT":"Saint-Pierre e Miquelon","NAME_RU":"Сен-Пьер и Микелон","NAME_SV":"Saint-Pierre och Miquelon","NAME_TR":"Saint Pierre ve Miquelon","NAME_UK":"Сен-П'єр і Мікелон","NAME_UR":"سینٹ پیئر و میکیلون","NAME_VI":"Saint-Pierre và Miquelon","NAME_ZH":"圣皮埃尔和密克隆","NAME_ZHT":"聖皮埃與密克隆群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-56.386914,46.752832,-56.137354,47.098975],"geometry":{"type":"MultiPolygon","coordinates":[[[[-56.150732,46.762402],[-56.17168,46.752832],[-56.243262,46.767187],[-56.20918,46.798242],[-56.185059,46.807275],[-56.152637,46.811084],[-56.137354,46.801562],[-56.139258,46.778662],[-56.150732,46.762402]]],[[[-56.26709,46.838477],[-56.354199,46.795312],[-56.384766,46.819434],[-56.377246,46.847656],[-56.332568,46.915967],[-56.333936,46.935645],[-56.386914,47.067969],[-56.37793,47.089551],[-56.364648,47.098975],[-56.287354,47.070996],[-56.278369,47.03501],[-56.314893,46.953857],[-56.289795,46.899902],[-56.255469,46.860986],[-56.26709,46.838477]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Wallis and Futuna","ADM0_A3":"WLF","GEOU_DIF":0,"GEOUNIT":"Wallis and Futuna","GU_A3":"WLF","SU_DIF":0,"SUBUNIT":"Wallis and Futuna","SU_A3":"WLF","BRK_DIFF":0,"NAME":"Wallis and Futuna Is.","NAME_LONG":"Wallis and Futuna Islands","BRK_A3":"WLF","BRK_NAME":"Wallis and Futuna Islands","BRK_GROUP":null,"ABBREV":"Wlf.","POSTAL":"WF","FORMAL_EN":"Wallis and Futuna Islands","FORMAL_FR":null,"NAME_CIAWF":"Wallis and Futuna","NOTE_ADM0":"Fr.","NOTE_BRK":null,"NAME_SORT":"Wallis and Futuna","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":11558,"POP_RANK":6,"POP_YEAR":2018,"GDP_MD":60,"GDP_YEAR":2016,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"WF","ISO_A2":"WF","ISO_A2_EH":"WF","ISO_A3":"WLF","ISO_A3_EH":"WLF","ISO_N3":"876","ISO_N3_EH":"876","UN_A3":"876","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424989,"WOE_ID_EH":23424989,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"WLF","ADM0_DIFF":null,"ADM0_TLC":"WLF","ADM0_A3_US":"WLF","ADM0_A3_FR":"WLF","ADM0_A3_RU":"WLF","ADM0_A3_ES":"WLF","ADM0_A3_CN":"WLF","ADM0_A3_TW":"WLF","ADM0_A3_IN":"WLF","ADM0_A3_NP":"WLF","ADM0_A3_PK":"WLF","ADM0_A3_DE":"WLF","ADM0_A3_GB":"WLF","ADM0_A3_BR":"WLF","ADM0_A3_IL":"WLF","ADM0_A3_PS":"WLF","ADM0_A3_SA":"WLF","ADM0_A3_EG":"WLF","ADM0_A3_MA":"WLF","ADM0_A3_PT":"WLF","ADM0_A3_AR":"WLF","ADM0_A3_JP":"WLF","ADM0_A3_KO":"WLF","ADM0_A3_VN":"WLF","ADM0_A3_TR":"WLF","ADM0_A3_ID":"WLF","ADM0_A3_PL":"WLF","ADM0_A3_GR":"WLF","ADM0_A3_IT":"WLF","ADM0_A3_NL":"WLF","ADM0_A3_SE":"WLF","ADM0_A3_BD":"WLF","ADM0_A3_UA":"WLF","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":21,"LONG_LEN":25,"ABBREV_LEN":4,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4.7,"MAX_LABEL":9,"LABEL_X":-178.137436,"LABEL_Y":-14.286415,"NE_ID":1159320649,"WIKIDATAID":"Q35555","NAME_AR":"واليس وفوتونا","NAME_BN":"ওয়ালিস ও ফুটুনা","NAME_DE":"Wallis und Futuna","NAME_EN":"Wallis and Futuna","NAME_ES":"Wallis y Futuna","NAME_FA":"والیس و فوتونا","NAME_FR":"Wallis-et-Futuna","NAME_EL":"Ουαλίς και Φουτουνά","NAME_HE":"ואליס ופוטונה","NAME_HI":"वालिस और फ़्यूचूना","NAME_HU":"Wallis és Futuna","NAME_ID":"Wallis dan Futuna","NAME_IT":"Wallis e Futuna","NAME_JA":"ウォリス・フツナ","NAME_KO":"왈리스 푸투나","NAME_NL":"Wallis en Futuna","NAME_PL":"Wallis i Futuna","NAME_PT":"Wallis e Futuna","NAME_RU":"Уоллис и Футуна","NAME_SV":"Wallis- och Futunaöarna","NAME_TR":"Wallis ve Futuna Adaları","NAME_UK":"Волліс і Футуна","NAME_UR":"والس و فتونہ","NAME_VI":"Wallis và Futuna","NAME_ZH":"瓦利斯和富图纳","NAME_ZHT":"瓦利斯和富圖納","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-178.194385,-14.324902,-176.128076,-13.22168],"geometry":{"type":"MultiPolygon","coordinates":[[[[-176.160596,-13.332813],[-176.176904,-13.340918],[-176.195361,-13.30166],[-176.171191,-13.242578],[-176.147949,-13.22168],[-176.128076,-13.268164],[-176.160596,-13.332813]]],[[[-178.04668,-14.318359],[-178.10332,-14.324902],[-178.158594,-14.311914],[-178.194385,-14.255469],[-178.178027,-14.231641],[-178.142236,-14.242578],[-178.105029,-14.28418],[-178.043652,-14.303223],[-178.04668,-14.318359]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Saint Martin","ADM0_A3":"MAF","GEOU_DIF":0,"GEOUNIT":"Saint Martin","GU_A3":"MAF","SU_DIF":0,"SUBUNIT":"Saint Martin","SU_A3":"MAF","BRK_DIFF":0,"NAME":"St-Martin","NAME_LONG":"Saint-Martin","BRK_A3":"MAF","BRK_NAME":"Saint-Martin","BRK_GROUP":null,"ABBREV":"St. M.","POSTAL":"MF","FORMAL_EN":"Saint-Martin (French part)","FORMAL_FR":null,"NAME_CIAWF":"Saint Martin","NOTE_ADM0":"Fr.","NOTE_BRK":null,"NAME_SORT":"St. Martin (French part)","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":38002,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":562,"GDP_YEAR":2016,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"RN","ISO_A2":"MF","ISO_A2_EH":"MF","ISO_A3":"MAF","ISO_A3_EH":"MAF","ISO_N3":"663","ISO_N3_EH":"663","UN_A3":"663","WB_A2":"MF","WB_A3":"MAF","WOE_ID":56042305,"WOE_ID_EH":56042305,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MAF","ADM0_DIFF":null,"ADM0_TLC":"MAF","ADM0_A3_US":"MAF","ADM0_A3_FR":"MAF","ADM0_A3_RU":"MAF","ADM0_A3_ES":"MAF","ADM0_A3_CN":"MAF","ADM0_A3_TW":"MAF","ADM0_A3_IN":"MAF","ADM0_A3_NP":"MAF","ADM0_A3_PK":"MAF","ADM0_A3_DE":"MAF","ADM0_A3_GB":"MAF","ADM0_A3_BR":"MAF","ADM0_A3_IL":"MAF","ADM0_A3_PS":"MAF","ADM0_A3_SA":"MAF","ADM0_A3_EG":"MAF","ADM0_A3_MA":"MAF","ADM0_A3_PT":"MAF","ADM0_A3_AR":"MAF","ADM0_A3_JP":"MAF","ADM0_A3_KO":"MAF","ADM0_A3_VN":"MAF","ADM0_A3_TR":"MAF","ADM0_A3_ID":"MAF","ADM0_A3_PL":"MAF","ADM0_A3_GR":"MAF","ADM0_A3_IT":"MAF","ADM0_A3_NL":"MAF","ADM0_A3_SE":"MAF","ADM0_A3_BD":"MAF","ADM0_A3_UA":"MAF","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":9,"LONG_LEN":12,"ABBREV_LEN":6,"TINY":4,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-63.049399,"LABEL_Y":18.081302,"NE_ID":1159320639,"WIKIDATAID":"Q126125","NAME_AR":"تجمع سان مارتين","NAME_BN":"সেন্ট-মার্টিন","NAME_DE":"Saint-Martin","NAME_EN":"Saint Martin","NAME_ES":"San Martín","NAME_FA":"سنت مارتین فرانسه","NAME_FR":"Saint-Martin","NAME_EL":"Άγιος Μαρτίνος","NAME_HE":"סן מרטן","NAME_HI":"सेंट मार्टिन की सामूहिकता","NAME_HU":"Saint-Martin","NAME_ID":"Saint Martin","NAME_IT":"Saint-Martin","NAME_JA":"サン・マルタン","NAME_KO":"생마르탱","NAME_NL":"Sint-Maarten","NAME_PL":"Saint-Martin","NAME_PT":"São Martinho","NAME_RU":"Сен-Мартен","NAME_SV":"Saint Martin","NAME_TR":"Saint Martin","NAME_UK":"Сен-Мартен","NAME_UR":"سینٹ مارٹن","NAME_VI":"Saint-Martin","NAME_ZH":"法属圣马丁","NAME_ZHT":"法屬聖馬丁","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-63.123047,18.068945,-63.009424,18.115332],"geometry":{"type":"Polygon","coordinates":[[[-63.011182,18.068945],[-63.123047,18.068945],[-63.11499,18.090723],[-63.063086,18.115332],[-63.024805,18.113086],[-63.009424,18.104297],[-63.011182,18.068945]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Saint Barthelemy","ADM0_A3":"BLM","GEOU_DIF":0,"GEOUNIT":"Saint Barthelemy","GU_A3":"BLM","SU_DIF":0,"SUBUNIT":"Saint Barthelemy","SU_A3":"BLM","BRK_DIFF":0,"NAME":"St-Barthélemy","NAME_LONG":"Saint-Barthélemy","BRK_A3":"BLM","BRK_NAME":"St-Barthélemy","BRK_GROUP":null,"ABBREV":"St. B.","POSTAL":"BL","FORMAL_EN":"Saint-Barthélemy","FORMAL_FR":null,"NAME_CIAWF":"Saint Barthelemy","NOTE_ADM0":"Fr.","NOTE_BRK":null,"NAME_SORT":"St-Barthélemy","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":9961,"POP_RANK":5,"POP_YEAR":2017,"GDP_MD":255,"GDP_YEAR":2016,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"TB","ISO_A2":"BL","ISO_A2_EH":"BL","ISO_A3":"BLM","ISO_A3_EH":"BLM","ISO_N3":"652","ISO_N3_EH":"652","UN_A3":"652","WB_A2":"-99","WB_A3":"-99","WOE_ID":56042304,"WOE_ID_EH":56042304,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BLM","ADM0_DIFF":null,"ADM0_TLC":"BLM","ADM0_A3_US":"BLM","ADM0_A3_FR":"BLM","ADM0_A3_RU":"BLM","ADM0_A3_ES":"BLM","ADM0_A3_CN":"BLM","ADM0_A3_TW":"BLM","ADM0_A3_IN":"BLM","ADM0_A3_NP":"BLM","ADM0_A3_PK":"BLM","ADM0_A3_DE":"BLM","ADM0_A3_GB":"BLM","ADM0_A3_BR":"BLM","ADM0_A3_IL":"BLM","ADM0_A3_PS":"BLM","ADM0_A3_SA":"BLM","ADM0_A3_EG":"BLM","ADM0_A3_MA":"BLM","ADM0_A3_PT":"BLM","ADM0_A3_AR":"BLM","ADM0_A3_JP":"BLM","ADM0_A3_KO":"BLM","ADM0_A3_VN":"BLM","ADM0_A3_TR":"BLM","ADM0_A3_ID":"BLM","ADM0_A3_PL":"BLM","ADM0_A3_GR":"BLM","ADM0_A3_IT":"BLM","ADM0_A3_NL":"BLM","ADM0_A3_SE":"BLM","ADM0_A3_BD":"BLM","ADM0_A3_UA":"BLM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":13,"LONG_LEN":16,"ABBREV_LEN":6,"TINY":4,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5.7,"MAX_LABEL":10,"LABEL_X":-62.833193,"LABEL_Y":17.901987,"NE_ID":1159320633,"WIKIDATAID":"Q25362","NAME_AR":"سان بارتيلمي","NAME_BN":"সেন্ট-বার্থেলেমি","NAME_DE":"Saint-Barthélemy","NAME_EN":"Saint Barthélemy","NAME_ES":"San Bartolomé","NAME_FA":"سنت بارثلمی","NAME_FR":"Saint-Barthélemy","NAME_EL":"Άγιος Βαρθολομαίος","NAME_HE":"סן ברתלמי","NAME_HI":"सेंट बार्थेलेमी","NAME_HU":"Saint-Barthélemy","NAME_ID":"Saint-Barthélemy","NAME_IT":"Saint-Barthélemy","NAME_JA":"サン・バルテルミー島","NAME_KO":"생바르텔레미","NAME_NL":"Saint-Barthélemy","NAME_PL":"Saint-Barthélemy","NAME_PT":"Coletividade de São Bartolomeu","NAME_RU":"Сен-Бартелеми","NAME_SV":"Saint-Barthélemy","NAME_TR":"Saint Barthélemy","NAME_UK":"Сен-Бартельмі","NAME_UR":"سینٹ بارتھیملے","NAME_VI":"Saint-Barthélemy","NAME_ZH":"圣巴泰勒米","NAME_ZHT":"聖巴瑟米","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-62.875439,17.875195,-62.799707,17.922266],"geometry":{"type":"Polygon","coordinates":[[[-62.831934,17.876465],[-62.846924,17.875195],[-62.858936,17.883643],[-62.869385,17.898584],[-62.875439,17.913574],[-62.874219,17.922266],[-62.86543,17.918262],[-62.799707,17.908691],[-62.807031,17.897656],[-62.818164,17.885449],[-62.831934,17.876465]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"French Polynesia","ADM0_A3":"PYF","GEOU_DIF":0,"GEOUNIT":"French Polynesia","GU_A3":"PYF","SU_DIF":0,"SUBUNIT":"French Polynesia","SU_A3":"PYF","BRK_DIFF":0,"NAME":"Fr. Polynesia","NAME_LONG":"French Polynesia","BRK_A3":"PYF","BRK_NAME":"Fr. Polynesia","BRK_GROUP":null,"ABBREV":"Fr. Poly.","POSTAL":"PF","FORMAL_EN":"French Polynesia","FORMAL_FR":null,"NAME_CIAWF":"French Polynesia","NOTE_ADM0":"Fr.","NOTE_BRK":null,"NAME_SORT":"French Polynesia","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":279287,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":5490,"GDP_YEAR":2016,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"FP","ISO_A2":"PF","ISO_A2_EH":"PF","ISO_A3":"PYF","ISO_A3_EH":"PYF","ISO_N3":"258","ISO_N3_EH":"258","UN_A3":"258","WB_A2":"PF","WB_A3":"PYF","WOE_ID":23424817,"WOE_ID_EH":23424817,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"PYF","ADM0_DIFF":null,"ADM0_TLC":"PYF","ADM0_A3_US":"PYF","ADM0_A3_FR":"PYF","ADM0_A3_RU":"PYF","ADM0_A3_ES":"PYF","ADM0_A3_CN":"PYF","ADM0_A3_TW":"PYF","ADM0_A3_IN":"PYF","ADM0_A3_NP":"PYF","ADM0_A3_PK":"PYF","ADM0_A3_DE":"PYF","ADM0_A3_GB":"PYF","ADM0_A3_BR":"PYF","ADM0_A3_IL":"PYF","ADM0_A3_PS":"PYF","ADM0_A3_SA":"PYF","ADM0_A3_EG":"PYF","ADM0_A3_MA":"PYF","ADM0_A3_PT":"PYF","ADM0_A3_AR":"PYF","ADM0_A3_JP":"PYF","ADM0_A3_KO":"PYF","ADM0_A3_VN":"PYF","ADM0_A3_TR":"PYF","ADM0_A3_ID":"PYF","ADM0_A3_PL":"PYF","ADM0_A3_GR":"PYF","ADM0_A3_IT":"PYF","ADM0_A3_NL":"PYF","ADM0_A3_SE":"PYF","ADM0_A3_BD":"PYF","ADM0_A3_UA":"PYF","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":13,"LONG_LEN":16,"ABBREV_LEN":9,"TINY":2,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":3.5,"MAX_LABEL":8.5,"LABEL_X":-149.46157,"LABEL_Y":-17.628081,"NE_ID":1159320643,"WIKIDATAID":"Q30971","NAME_AR":"بولينزيا الفرنسية","NAME_BN":"ফরাসি পলিনেশিয়া","NAME_DE":"Französisch-Polynesien","NAME_EN":"French Polynesia","NAME_ES":"Polinesia Francesa","NAME_FA":"پلینزی فرانسه","NAME_FR":"Polynésie française","NAME_EL":"Γαλλική Πολυνησία","NAME_HE":"פולינזיה הצרפתית","NAME_HI":"फ़्रान्सीसी पॉलिनेशिया","NAME_HU":"Francia Polinézia","NAME_ID":"Polinesia Prancis","NAME_IT":"Polinesia francese","NAME_JA":"フランス領ポリネシア","NAME_KO":"프랑스령 폴리네시아","NAME_NL":"Frans-Polynesië","NAME_PL":"Polinezja Francuska","NAME_PT":"Polinésia Francesa","NAME_RU":"Французская Полинезия","NAME_SV":"Franska Polynesien","NAME_TR":"Fransız Polinezyası","NAME_UK":"Французька Полінезія","NAME_UR":"فرانسیسی پولینیشیا","NAME_VI":"Polynésie thuộc Pháp","NAME_ZH":"法属波利尼西亚","NAME_ZHT":"法屬玻里尼西亞","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-151.512402,-20.875879,-136.293896,-8.781543],"geometry":{"type":"MultiPolygon","coordinates":[[[[-151.466602,-16.65752],[-151.484912,-16.665137],[-151.50415,-16.646973],[-151.512402,-16.619043],[-151.505762,-16.574023],[-151.457422,-16.603711],[-151.438086,-16.623438],[-151.466602,-16.65752]]],[[[-149.813672,-17.54502],[-149.844922,-17.571094],[-149.886572,-17.552832],[-149.905127,-17.527734],[-149.911816,-17.501172],[-149.902148,-17.469531],[-149.808789,-17.473926],[-149.782422,-17.487793],[-149.813672,-17.54502]]],[[[-151.409814,-16.877734],[-151.449463,-16.879297],[-151.485498,-16.863672],[-151.476416,-16.760742],[-151.466748,-16.739648],[-151.411182,-16.774414],[-151.364502,-16.864258],[-151.409814,-16.877734]]],[[[-149.321533,-17.690039],[-149.177686,-17.736621],[-149.150879,-17.812109],[-149.181787,-17.862305],[-149.254492,-17.849902],[-149.290479,-17.822461],[-149.341113,-17.732422],[-149.481689,-17.752734],[-149.578906,-17.734961],[-149.632812,-17.617578],[-149.63501,-17.564258],[-149.611426,-17.531641],[-149.508105,-17.496387],[-149.379199,-17.522363],[-149.330078,-17.588965],[-149.321533,-17.690039]]],[[[-139.024316,-9.695215],[-138.874463,-9.747168],[-138.827344,-9.741602],[-138.874951,-9.792871],[-139.024268,-9.820703],[-139.073682,-9.845703],[-139.134082,-9.829492],[-139.166455,-9.770215],[-139.024316,-9.695215]]],[[[-139.059717,-9.931348],[-139.133984,-10.00957],[-139.134229,-9.92627],[-139.107471,-9.91543],[-139.083154,-9.91543],[-139.059717,-9.931348]]],[[[-138.651123,-10.515332],[-138.687744,-10.532422],[-138.690381,-10.425586],[-138.64292,-10.445898],[-138.624463,-10.462988],[-138.632373,-10.492188],[-138.651123,-10.515332]]],[[[-140.072607,-8.910449],[-140.170557,-8.933984],[-140.217432,-8.929688],[-140.252686,-8.848047],[-140.240039,-8.797559],[-140.224414,-8.781543],[-140.057666,-8.801465],[-140.043701,-8.838477],[-140.046143,-8.873633],[-140.072607,-8.910449]]],[[[-140.075635,-9.425977],[-140.097363,-9.444141],[-140.138037,-9.384375],[-140.144385,-9.359375],[-140.070947,-9.328125],[-140.031104,-9.344727],[-140.075635,-9.425977]]],[[[-140.809375,-17.856641],[-140.804443,-17.875684],[-140.84082,-17.873145],[-140.851562,-17.866602],[-140.850732,-17.831055],[-140.824268,-17.787988],[-140.803613,-17.75166],[-140.761426,-17.717773],[-140.686182,-17.683789],[-140.649805,-17.669727],[-140.638232,-17.678027],[-140.652051,-17.683105],[-140.776318,-17.754102],[-140.815186,-17.803711],[-140.83252,-17.838477],[-140.829248,-17.849219],[-140.809375,-17.856641]]],[[[-139.556201,-8.940234],[-139.620996,-8.947949],[-139.631787,-8.898535],[-139.611768,-8.872363],[-139.583984,-8.860059],[-139.53457,-8.875391],[-139.50835,-8.89707],[-139.509912,-8.915625],[-139.556201,-8.940234]]],[[[-140.685352,-18.379883],[-140.671875,-18.416113],[-140.696045,-18.399121],[-140.773242,-18.36377],[-140.781738,-18.33418],[-140.685352,-18.379883]]],[[[-140.829883,-18.189355],[-140.822705,-18.216895],[-140.860059,-18.19873],[-140.895459,-18.147949],[-140.958643,-18.085059],[-140.973535,-18.05918],[-140.925146,-18.083789],[-140.893262,-18.120508],[-140.829883,-18.189355]]],[[[-136.293896,-18.544336],[-136.314063,-18.566309],[-136.316016,-18.545215],[-136.344043,-18.534863],[-136.38291,-18.513672],[-136.435693,-18.489063],[-136.464258,-18.485059],[-136.478516,-18.470801],[-136.458691,-18.463184],[-136.426123,-18.474316],[-136.380371,-18.496777],[-136.327637,-18.519336],[-136.293896,-18.544336]]],[[[-136.971729,-18.341992],[-136.971338,-18.360938],[-137.067578,-18.265332],[-137.029639,-18.272852],[-136.971729,-18.341992]]],[[[-138.505859,-20.857227],[-138.534863,-20.875879],[-138.524023,-20.850586],[-138.546387,-20.795117],[-138.568359,-20.787109],[-138.546387,-20.771191],[-138.514941,-20.813379],[-138.505859,-20.857227]]],[[[-142.511816,-16.096289],[-142.52959,-16.107129],[-142.506836,-16.027734],[-142.481201,-16.017773],[-142.511816,-16.096289]]],[[[-143.440576,-16.619727],[-143.386182,-16.668848],[-143.458545,-16.635449],[-143.550684,-16.621094],[-143.515576,-16.612305],[-143.464697,-16.613574],[-143.440576,-16.619727]]],[[[-143.571143,-16.634766],[-143.610645,-16.64043],[-143.707422,-16.580859],[-143.670215,-16.580859],[-143.614795,-16.618066],[-143.571143,-16.634766]]],[[[-145.051367,-15.856055],[-145.057666,-15.901074],[-145.076416,-15.857617],[-145.137939,-15.788086],[-145.160742,-15.757031],[-145.133545,-15.762012],[-145.051367,-15.856055]]],[[[-145.48667,-16.329785],[-145.482227,-16.346777],[-145.502734,-16.345801],[-145.539844,-16.295117],[-145.553125,-16.251172],[-145.576709,-16.201465],[-145.609131,-16.165234],[-145.612793,-16.131836],[-145.613818,-16.079199],[-145.5771,-16.159863],[-145.542334,-16.224609],[-145.516992,-16.277832],[-145.48667,-16.329785]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"New Caledonia","ADM0_A3":"NCL","GEOU_DIF":0,"GEOUNIT":"New Caledonia","GU_A3":"NCL","SU_DIF":0,"SUBUNIT":"New Caledonia","SU_A3":"NCL","BRK_DIFF":0,"NAME":"New Caledonia","NAME_LONG":"New Caledonia","BRK_A3":"NCL","BRK_NAME":"New Caledonia","BRK_GROUP":null,"ABBREV":"New C.","POSTAL":"NC","FORMAL_EN":"New Caledonia","FORMAL_FR":"Nouvelle-Calédonie","NAME_CIAWF":"New Caledonia","NOTE_ADM0":"Fr.","NOTE_BRK":null,"NAME_SORT":"New Caledonia","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":287800,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":10770,"GDP_YEAR":2016,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"NC","ISO_A2":"NC","ISO_A2_EH":"NC","ISO_A3":"NCL","ISO_A3_EH":"NCL","ISO_N3":"540","ISO_N3_EH":"540","UN_A3":"540","WB_A2":"NC","WB_A3":"NCL","WOE_ID":23424903,"WOE_ID_EH":23424903,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NCL","ADM0_DIFF":null,"ADM0_TLC":"NCL","ADM0_A3_US":"NCL","ADM0_A3_FR":"NCL","ADM0_A3_RU":"NCL","ADM0_A3_ES":"NCL","ADM0_A3_CN":"NCL","ADM0_A3_TW":"NCL","ADM0_A3_IN":"NCL","ADM0_A3_NP":"NCL","ADM0_A3_PK":"NCL","ADM0_A3_DE":"NCL","ADM0_A3_GB":"NCL","ADM0_A3_BR":"NCL","ADM0_A3_IL":"NCL","ADM0_A3_PS":"NCL","ADM0_A3_SA":"NCL","ADM0_A3_EG":"NCL","ADM0_A3_MA":"NCL","ADM0_A3_PT":"NCL","ADM0_A3_AR":"NCL","ADM0_A3_JP":"NCL","ADM0_A3_KO":"NCL","ADM0_A3_VN":"NCL","ADM0_A3_TR":"NCL","ADM0_A3_ID":"NCL","ADM0_A3_PL":"NCL","ADM0_A3_GR":"NCL","ADM0_A3_IT":"NCL","ADM0_A3_NL":"NCL","ADM0_A3_SE":"NCL","ADM0_A3_BD":"NCL","ADM0_A3_UA":"NCL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Melanesia","REGION_WB":"East Asia & Pacific","NAME_LEN":13,"LONG_LEN":13,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4.6,"MAX_LABEL":8,"LABEL_X":165.084004,"LABEL_Y":-21.064697,"NE_ID":1159320641,"WIKIDATAID":"Q33788","NAME_AR":"كاليدونيا الجديدة","NAME_BN":"নতুন ক্যালিডোনিয়া","NAME_DE":"Neukaledonien","NAME_EN":"New Caledonia","NAME_ES":"Nueva Caledonia","NAME_FA":"کالدونیای جدید","NAME_FR":"Nouvelle-Calédonie","NAME_EL":"Νέα Καληδονία","NAME_HE":"קלדוניה החדשה","NAME_HI":"नया कैलेडोनिया","NAME_HU":"Új-Kaledónia","NAME_ID":"Kaledonia Baru","NAME_IT":"Nuova Caledonia","NAME_JA":"ニューカレドニア","NAME_KO":"누벨칼레도니","NAME_NL":"Nieuw-Caledonië","NAME_PL":"Nowa Kaledonia","NAME_PT":"Nova Caledónia","NAME_RU":"Новая Каледония","NAME_SV":"Nya Kaledonien","NAME_TR":"Yeni Kaledonya","NAME_UK":"Нова Каледонія","NAME_UR":"نیو کیلیڈونیا","NAME_VI":"Nouvelle-Calédonie","NAME_ZH":"新喀里多尼亚","NAME_ZHT":"新喀里多尼亞","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[159.928223,-22.661133,168.139063,-19.114648],"geometry":{"type":"MultiPolygon","coordinates":[[[[164.202344,-20.246094],[164.315137,-20.308887],[164.435938,-20.282227],[164.588086,-20.381152],[164.975684,-20.681055],[165.111914,-20.744531],[165.191797,-20.768848],[165.252344,-20.817969],[165.306641,-20.887012],[165.380566,-20.93584],[165.4125,-20.981348],[165.420508,-21.042773],[165.447168,-21.080566],[165.582422,-21.17998],[165.662793,-21.267188],[165.774609,-21.311719],[165.822852,-21.36377],[165.885352,-21.38916],[165.949512,-21.442383],[166.057813,-21.483887],[166.30332,-21.637207],[166.492969,-21.782813],[166.5875,-21.872852],[166.689648,-21.953027],[166.820117,-22.016992],[166.942383,-22.090137],[167.004297,-22.261523],[166.970313,-22.322852],[166.9,-22.35332],[166.834961,-22.355469],[166.774121,-22.376172],[166.570605,-22.265527],[166.522168,-22.249219],[166.467969,-22.256055],[166.437695,-22.231543],[166.416406,-22.196191],[166.292285,-22.155078],[166.17666,-22.08916],[166.143164,-22.044434],[166.12373,-21.98877],[166.096094,-21.956641],[165.933008,-21.908008],[165.823438,-21.853809],[165.743848,-21.777344],[165.620215,-21.724219],[165.427637,-21.615039],[165.328613,-21.580078],[165.241992,-21.525488],[165.010156,-21.326855],[164.927441,-21.289844],[164.855273,-21.201563],[164.655664,-20.99209],[164.559473,-20.905859],[164.454688,-20.829102],[164.374512,-20.739258],[164.312891,-20.632715],[164.169727,-20.480176],[164.152148,-20.414941],[164.158105,-20.347949],[164.123633,-20.304883],[164.065039,-20.278613],[164.037305,-20.233594],[164.040527,-20.172852],[164.059668,-20.141504],[164.202344,-20.246094]]],[[[167.544434,-22.623242],[167.512695,-22.661133],[167.473438,-22.65332],[167.44375,-22.63916],[167.42207,-22.618555],[167.443457,-22.541406],[167.529492,-22.579199],[167.544434,-22.623242]]],[[[159.951758,-19.311719],[159.936426,-19.333105],[159.928223,-19.174316],[159.959863,-19.114648],[159.975098,-19.238281],[159.951758,-19.311719]]],[[[168.010938,-21.42998],[168.05791,-21.448438],[168.139063,-21.445215],[168.120703,-21.61582],[168.006445,-21.643164],[167.966797,-21.641602],[167.941309,-21.605762],[167.875879,-21.582129],[167.879102,-21.523633],[167.81543,-21.392676],[167.925977,-21.372852],[167.988477,-21.337891],[167.984961,-21.369727],[167.994629,-21.406934],[168.010938,-21.42998]]],[[[166.546777,-20.69873],[166.493555,-20.708594],[166.557813,-20.61709],[166.559668,-20.561133],[166.585449,-20.450488],[166.58252,-20.413379],[166.624707,-20.418262],[166.670801,-20.450195],[166.617871,-20.477539],[166.600293,-20.525391],[166.602148,-20.585352],[166.622559,-20.596289],[166.588867,-20.661914],[166.546777,-20.69873]]],[[[167.400879,-21.160645],[167.346191,-21.16875],[167.273242,-21.096777],[167.133887,-21.060645],[167.072656,-20.997266],[167.032715,-20.922559],[167.111719,-20.904102],[167.189453,-20.803516],[167.136426,-20.766113],[167.04502,-20.759473],[167.055762,-20.720215],[167.204004,-20.673535],[167.268945,-20.700586],[167.297949,-20.73252],[167.293457,-20.891504],[167.36084,-20.94209],[167.430566,-21.055273],[167.430273,-21.087012],[167.400879,-21.160645]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"France","SOV_A3":"FR1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"French Southern and Antarctic Lands","ADM0_A3":"ATF","GEOU_DIF":0,"GEOUNIT":"French Southern and Antarctic Lands","GU_A3":"ATF","SU_DIF":0,"SUBUNIT":"French Southern and Antarctic Lands","SU_A3":"ATF","BRK_DIFF":0,"NAME":"Fr. S. Antarctic Lands","NAME_LONG":"French Southern and Antarctic Lands","BRK_A3":"ATF","BRK_NAME":"Fr. S. and Antarctic Lands","BRK_GROUP":null,"ABBREV":"Fr. S.A.L.","POSTAL":"TF","FORMAL_EN":"Territory of the French Southern and Antarctic Lands","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"Fr.","NOTE_BRK":null,"NAME_SORT":"French Southern and Antarctic Lands","NAME_ALT":null,"MAPCOLOR7":7,"MAPCOLOR8":5,"MAPCOLOR9":9,"MAPCOLOR13":11,"POP_EST":140,"POP_RANK":1,"POP_YEAR":2017,"GDP_MD":16,"GDP_YEAR":2016,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"FS","ISO_A2":"TF","ISO_A2_EH":"TF","ISO_A3":"ATF","ISO_A3_EH":"ATF","ISO_N3":"260","ISO_N3_EH":"260","UN_A3":"260","WB_A2":"-99","WB_A3":"-99","WOE_ID":28289406,"WOE_ID_EH":28289406,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ATF","ADM0_DIFF":null,"ADM0_TLC":"ATF","ADM0_A3_US":"ATF","ADM0_A3_FR":"ATF","ADM0_A3_RU":"ATF","ADM0_A3_ES":"ATF","ADM0_A3_CN":"ATF","ADM0_A3_TW":"ATF","ADM0_A3_IN":"ATF","ADM0_A3_NP":"ATF","ADM0_A3_PK":"ATF","ADM0_A3_DE":"ATF","ADM0_A3_GB":"ATF","ADM0_A3_BR":"ATF","ADM0_A3_IL":"ATF","ADM0_A3_PS":"ATF","ADM0_A3_SA":"ATF","ADM0_A3_EG":"ATF","ADM0_A3_MA":"ATF","ADM0_A3_PT":"ATF","ADM0_A3_AR":"ATF","ADM0_A3_JP":"ATF","ADM0_A3_KO":"ATF","ADM0_A3_VN":"ATF","ADM0_A3_TR":"ATF","ADM0_A3_ID":"ATF","ADM0_A3_PL":"ATF","ADM0_A3_GR":"ATF","ADM0_A3_IT":"ATF","ADM0_A3_NL":"ATF","ADM0_A3_SE":"ATF","ADM0_A3_BD":"ATF","ADM0_A3_UA":"ATF","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Africa","SUBREGION":"Seven seas (open ocean)","REGION_WB":"Sub-Saharan Africa","NAME_LEN":22,"LONG_LEN":35,"ABBREV_LEN":10,"TINY":2,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":69.122136,"LABEL_Y":-49.303721,"NE_ID":1159320631,"WIKIDATAID":"Q129003","NAME_AR":"أراض فرنسية جنوبية وأنتارتيكية","NAME_BN":"ফ্র. এস. অ্যান্ড অ্যান্টার্কটিক ল্যান্ড","NAME_DE":"Französische Süd- und Antarktisgebiete","NAME_EN":"French Southern and Antarctic Lands","NAME_ES":"Tierras Australes y Antárticas Francesas","NAME_FA":"سرزمینهای جنوبی و جنوبگانی فرانسه","NAME_FR":"Terres australes et antarctiques françaises","NAME_EL":"Γαλλικά Νότια και Ανταρκτικά Εδάφη","NAME_HE":"הארצות הדרומיות והאנטארקטיות של צרפת","NAME_HI":"दक्षिण फ्रांसीसी और अंटार्कटिक लैंड","NAME_HU":"Francia déli és antarktiszi területek","NAME_ID":"Daratan Selatan dan Antarktika Perancis","NAME_IT":"Terre australi e antartiche francesi","NAME_JA":"フランス領南方・南極地域","NAME_KO":"프랑스령 남방 및 남극","NAME_NL":"Franse Zuidelijke Gebieden","NAME_PL":"Francuskie Terytoria Południowe i Antarktyczne","NAME_PT":"Terras Austrais e Antárticas Francesas","NAME_RU":"Французские Южные и Антарктические территории","NAME_SV":"Franska sydterritorierna","NAME_TR":"Fransız Güney ve Antarktika Toprakları","NAME_UK":"Французькі Південні і Антарктичні території","NAME_UR":"سرزمین جنوبی فرانسیسیہ و انٹارکٹیکا","NAME_VI":"Vùng đất phía Nam và châu Nam Cực thuộc Pháp","NAME_ZH":"法属南部和南极领地","NAME_ZHT":"法屬南部和南極領地","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[51.659277,-49.709863,70.555469,-46.326855],"geometry":{"type":"MultiPolygon","coordinates":[[[[69.184863,-49.10957],[69.265137,-49.11543],[69.314258,-49.10625],[69.534961,-48.974316],[69.592773,-48.970996],[69.587305,-49.071973],[69.644043,-49.117383],[69.572266,-49.129004],[69.43623,-49.124023],[69.405078,-49.181738],[69.542383,-49.255664],[69.610742,-49.26582],[69.666602,-49.264941],[69.770703,-49.248145],[69.854395,-49.221582],[69.983984,-49.159863],[70.061328,-49.136035],[70.208398,-49.134961],[70.284961,-49.076465],[70.320215,-49.058594],[70.40625,-49.061133],[70.484277,-49.083887],[70.530859,-49.136914],[70.555469,-49.201465],[70.536816,-49.265527],[70.485059,-49.327637],[70.389844,-49.365625],[70.411426,-49.410938],[70.386133,-49.433984],[70.338379,-49.435254],[70.297656,-49.424805],[70.237793,-49.371582],[70.16582,-49.342969],[69.993164,-49.344922],[69.915625,-49.348535],[69.902148,-49.389258],[69.861133,-49.420508],[69.818359,-49.437695],[69.759961,-49.430176],[69.749219,-49.447559],[69.780273,-49.490137],[69.855957,-49.544043],[69.986426,-49.581641],[70.062891,-49.589355],[70.073438,-49.517773],[70.16582,-49.509375],[70.247754,-49.530664],[70.307129,-49.583496],[70.258789,-49.600781],[70.216211,-49.628809],[70.207422,-49.665039],[70.124316,-49.704395],[70.075098,-49.708594],[69.918945,-49.689355],[69.826074,-49.644922],[69.803906,-49.613574],[69.74668,-49.601758],[69.682031,-49.642188],[69.612891,-49.650977],[69.477637,-49.617383],[69.352734,-49.563184],[69.274609,-49.542773],[69.153125,-49.529687],[69.085938,-49.65293],[68.992969,-49.70498],[68.872656,-49.709863],[68.814746,-49.699609],[68.782813,-49.65127],[68.791211,-49.599609],[68.810547,-49.550195],[68.84834,-49.499609],[68.87207,-49.444336],[68.861914,-49.392188],[68.818457,-49.353906],[68.841406,-49.285352],[68.798828,-49.231641],[68.813574,-49.19209],[68.883398,-49.164941],[68.853809,-49.141309],[68.816699,-49.135059],[68.790137,-49.103711],[68.769531,-49.065918],[68.796582,-48.994727],[68.836914,-48.926172],[68.832031,-48.84873],[68.900293,-48.775586],[68.958691,-48.693848],[69.002441,-48.66123],[69.057227,-48.656445],[69.08125,-48.679297],[69.093066,-48.723926],[69.071582,-48.752832],[69.122754,-48.766016],[69.136133,-48.861035],[69.104102,-48.899902],[69.099414,-48.937598],[69.032715,-49.017578],[69.052148,-49.081934],[69.184863,-49.10957]]],[[[69.282422,-49.058887],[69.220605,-49.066797],[69.201563,-49.034277],[69.203906,-48.991211],[69.169531,-48.957031],[69.150098,-48.919043],[69.167188,-48.88291],[69.266406,-48.878809],[69.36875,-48.89043],[69.394727,-48.951172],[69.321191,-49.034277],[69.282422,-49.058887]]],[[[51.83457,-46.439941],[51.761719,-46.44873],[51.696582,-46.428125],[51.659277,-46.373633],[51.741895,-46.326855],[51.78418,-46.358887],[51.81543,-46.394727],[51.83457,-46.439941]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Finland","SOV_A3":"FI1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Aland","ADM0_A3":"ALD","GEOU_DIF":0,"GEOUNIT":"Aland","GU_A3":"ALD","SU_DIF":0,"SUBUNIT":"Aland","SU_A3":"ALD","BRK_DIFF":0,"NAME":"Åland","NAME_LONG":"Åland Islands","BRK_A3":"ALD","BRK_NAME":"Åland","BRK_GROUP":null,"ABBREV":"Åland","POSTAL":"AI","FORMAL_EN":"Åland Islands","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"Fin.","NOTE_BRK":null,"NAME_SORT":"Aland","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":6,"POP_EST":29884,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":1563,"GDP_YEAR":2016,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"-99","ISO_A2":"AX","ISO_A2_EH":"AX","ISO_A3":"ALA","ISO_A3_EH":"ALA","ISO_N3":"248","ISO_N3_EH":"248","UN_A3":"248","WB_A2":"-99","WB_A3":"-99","WOE_ID":12577865,"WOE_ID_EH":12577865,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ALD","ADM0_DIFF":null,"ADM0_TLC":"ALD","ADM0_A3_US":"ALD","ADM0_A3_FR":"ALD","ADM0_A3_RU":"ALD","ADM0_A3_ES":"ALD","ADM0_A3_CN":"ALD","ADM0_A3_TW":"ALD","ADM0_A3_IN":"ALD","ADM0_A3_NP":"ALD","ADM0_A3_PK":"ALD","ADM0_A3_DE":"ALD","ADM0_A3_GB":"ALD","ADM0_A3_BR":"ALD","ADM0_A3_IL":"ALD","ADM0_A3_PS":"ALD","ADM0_A3_SA":"ALD","ADM0_A3_EG":"ALD","ADM0_A3_MA":"ALD","ADM0_A3_PT":"ALD","ADM0_A3_AR":"ALD","ADM0_A3_JP":"ALD","ADM0_A3_KO":"ALD","ADM0_A3_VN":"ALD","ADM0_A3_TR":"ALD","ADM0_A3_ID":"ALD","ADM0_A3_PL":"ALD","ADM0_A3_GR":"ALD","ADM0_A3_IT":"ALD","ADM0_A3_NL":"ALD","ADM0_A3_SE":"ALD","ADM0_A3_BD":"ALD","ADM0_A3_UA":"ALD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":5,"LONG_LEN":13,"ABBREV_LEN":5,"TINY":5,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":19.869671,"LABEL_Y":60.156467,"NE_ID":1159320621,"WIKIDATAID":"Q5689","NAME_AR":"جزر أولاند","NAME_BN":"অলান্দ দ্বীপপুঞ্জ","NAME_DE":"Åland","NAME_EN":"Åland","NAME_ES":"Åland","NAME_FA":"جزایر الند","NAME_FR":"Åland","NAME_EL":"Ώλαντ","NAME_HE":"אולנד","NAME_HI":"ऑलैण्ड द्वीपसमूह","NAME_HU":"Åland","NAME_ID":"Åland","NAME_IT":"Isole Åland","NAME_JA":"オーランド諸島","NAME_KO":"올란드 제도","NAME_NL":"Åland","NAME_PL":"Wyspy Alandzkie","NAME_PT":"Åland","NAME_RU":"Аландские острова","NAME_SV":"Åland","NAME_TR":"Åland","NAME_UK":"Аландські острови","NAME_UR":"جزائر ایلانڈ","NAME_VI":"Åland","NAME_ZH":"奥兰","NAME_ZHT":"奧蘭","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":"Unrecognized","FCLASS_ES":null,"FCLASS_CN":"Unrecognized","FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[19.519043,60.01167,20.611328,60.405811],"geometry":{"type":"MultiPolygon","coordinates":[[[[19.989551,60.351172],[20.020215,60.350879],[20.033887,60.359326],[20.087402,60.353418],[20.167871,60.314697],[20.184082,60.29375],[20.239551,60.283008],[20.258887,60.261279],[20.194727,60.193555],[20.155078,60.192285],[20.125488,60.200879],[20.073242,60.193457],[20.042578,60.180664],[20.032324,60.15249],[20.033984,60.093555],[19.799805,60.081738],[19.745996,60.098975],[19.672266,60.233008],[19.686914,60.267627],[19.736523,60.282373],[19.779004,60.285547],[19.785254,60.213379],[19.847656,60.220557],[19.867188,60.268115],[19.871582,60.301611],[19.854688,60.318506],[19.812305,60.331592],[19.787793,60.354053],[19.823047,60.390186],[19.888281,60.405811],[19.944531,60.35752],[19.989551,60.351172]]],[[[19.662305,60.187158],[19.66748,60.164746],[19.629199,60.170361],[19.599805,60.162695],[19.579883,60.135059],[19.536523,60.144971],[19.519043,60.18457],[19.551367,60.243848],[19.628809,60.246094],[19.662305,60.187158]]],[[[20.611328,60.040674],[20.603418,60.016943],[20.521777,60.01167],[20.4875,60.032764],[20.41123,60.030127],[20.397949,60.040674],[20.42959,60.061719],[20.490137,60.074902],[20.569141,60.069629],[20.611328,60.040674]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Finland","SOV_A3":"FI1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Finland","ADM0_A3":"FIN","GEOU_DIF":0,"GEOUNIT":"Finland","GU_A3":"FIN","SU_DIF":0,"SUBUNIT":"Finland","SU_A3":"FIN","BRK_DIFF":0,"NAME":"Finland","NAME_LONG":"Finland","BRK_A3":"FIN","BRK_NAME":"Finland","BRK_GROUP":null,"ABBREV":"Fin.","POSTAL":"FIN","FORMAL_EN":"Republic of Finland","FORMAL_FR":null,"NAME_CIAWF":"Finland","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Finland","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":6,"POP_EST":5520314,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":269296,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"FI","ISO_A2":"FI","ISO_A2_EH":"FI","ISO_A3":"FIN","ISO_A3_EH":"FIN","ISO_N3":"246","ISO_N3_EH":"246","UN_A3":"246","WB_A2":"FI","WB_A3":"FIN","WOE_ID":23424812,"WOE_ID_EH":23424812,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"FIN","ADM0_DIFF":null,"ADM0_TLC":"FIN","ADM0_A3_US":"FIN","ADM0_A3_FR":"FIN","ADM0_A3_RU":"FIN","ADM0_A3_ES":"FIN","ADM0_A3_CN":"FIN","ADM0_A3_TW":"FIN","ADM0_A3_IN":"FIN","ADM0_A3_NP":"FIN","ADM0_A3_PK":"FIN","ADM0_A3_DE":"FIN","ADM0_A3_GB":"FIN","ADM0_A3_BR":"FIN","ADM0_A3_IL":"FIN","ADM0_A3_PS":"FIN","ADM0_A3_SA":"FIN","ADM0_A3_EG":"FIN","ADM0_A3_MA":"FIN","ADM0_A3_PT":"FIN","ADM0_A3_AR":"FIN","ADM0_A3_JP":"FIN","ADM0_A3_KO":"FIN","ADM0_A3_VN":"FIN","ADM0_A3_TR":"FIN","ADM0_A3_ID":"FIN","ADM0_A3_PL":"FIN","ADM0_A3_GR":"FIN","ADM0_A3_IT":"FIN","ADM0_A3_NL":"FIN","ADM0_A3_SE":"FIN","ADM0_A3_BD":"FIN","ADM0_A3_UA":"FIN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":27.276449,"LABEL_Y":63.252361,"NE_ID":1159320623,"WIKIDATAID":"Q33","NAME_AR":"فنلندا","NAME_BN":"ফিনল্যান্ড","NAME_DE":"Finnland","NAME_EN":"Finland","NAME_ES":"Finlandia","NAME_FA":"فنلاند","NAME_FR":"Finlande","NAME_EL":"Φινλανδία","NAME_HE":"פינלנד","NAME_HI":"फ़िनलैण्ड","NAME_HU":"Finnország","NAME_ID":"Finlandia","NAME_IT":"Finlandia","NAME_JA":"フィンランド","NAME_KO":"핀란드","NAME_NL":"Finland","NAME_PL":"Finlandia","NAME_PT":"Finlândia","NAME_RU":"Финляндия","NAME_SV":"Finland","NAME_TR":"Finlandiya","NAME_UK":"Фінляндія","NAME_UR":"فن لینڈ","NAME_VI":"Phần Lan","NAME_ZH":"芬兰","NAME_ZHT":"芬蘭","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[20.622168,59.816016,31.536523,70.064844],"geometry":{"type":"MultiPolygon","coordinates":[[[[24.155469,65.805273],[24.049023,65.989844],[23.994629,66.060352],[23.907324,66.148242],[23.751465,66.191162],[23.720996,66.21543],[23.700293,66.252637],[23.693555,66.304297],[23.673828,66.380713],[23.682031,66.443408],[23.701172,66.480762],[23.768359,66.505859],[23.865527,66.576611],[23.88584,66.628027],[23.894141,66.706885],[23.938867,66.775732],[23.988574,66.810547],[23.976074,66.838232],[23.941797,66.877832],[23.869336,66.934033],[23.758984,67.002588],[23.677344,67.068115],[23.641504,67.129395],[23.623047,67.184131],[23.626074,67.233936],[23.656641,67.267822],[23.760938,67.310498],[23.774902,67.328613],[23.733594,67.4229],[23.66084,67.440039],[23.537109,67.44917],[23.468066,67.449951],[23.454883,67.460254],[23.451465,67.479199],[23.46543,67.517871],[23.504492,67.562158],[23.537012,67.590381],[23.541309,67.614307],[23.500195,67.696191],[23.487793,67.796582],[23.501855,67.875195],[23.63291,67.933203],[23.638867,67.954395],[23.474219,68.017334],[23.355469,68.088672],[23.318555,68.130322],[23.18252,68.136621],[23.097852,68.257568],[22.975391,68.316455],[22.854102,68.367334],[22.782422,68.391016],[22.362109,68.464062],[22.195117,68.477979],[21.997461,68.520605],[21.850195,68.574121],[21.724023,68.608545],[21.616016,68.650977],[21.46543,68.690674],[21.422363,68.724609],[21.259766,68.787451],[21.183398,68.828809],[20.918555,68.906934],[20.908984,68.937744],[20.907031,68.96748],[20.895117,68.979834],[20.622168,69.036865],[20.675879,69.069482],[20.889258,69.071436],[21.065723,69.041748],[21.104492,69.054443],[21.127832,69.080811],[21.052637,69.186572],[21.066113,69.214111],[21.14375,69.247266],[21.266797,69.273682],[21.46123,69.27749],[21.59375,69.273584],[21.621777,69.270703],[21.819727,69.154492],[21.989453,69.041113],[22.079688,68.992773],[22.300391,68.855859],[22.38291,68.776611],[22.410938,68.719873],[22.500684,68.720215],[22.811035,68.695312],[23.07168,68.674365],[23.144336,68.642578],[23.324023,68.648975],[23.4625,68.677637],[23.707031,68.713867],[23.772559,68.758398],[23.854004,68.805908],[23.997363,68.798438],[24.154102,68.760889],[24.332031,68.711523],[24.490527,68.688672],[24.703223,68.652832],[24.802441,68.606494],[24.941406,68.593262],[25.086914,68.6396],[25.172852,68.765283],[25.249121,68.821338],[25.357129,68.862451],[25.480859,68.880615],[25.575293,68.887158],[25.64668,68.919141],[25.74834,68.990137],[25.768164,69.076123],[25.748633,69.231445],[25.767188,69.282666],[25.850195,69.366504],[25.961523,69.588623],[26.011523,69.652637],[26.072461,69.691553],[26.156152,69.714697],[26.308203,69.781934],[26.525391,69.915039],[26.584277,69.926318],[26.740234,69.933057],[26.934277,69.928125],[27.108691,69.904687],[27.127539,69.906494],[27.205664,69.918701],[27.348047,69.960059],[27.591699,70.042236],[27.747852,70.064844],[27.889941,70.06167],[28.047266,69.97168],[28.269141,69.871436],[28.411719,69.822754],[28.800391,69.731494],[29.141602,69.671436],[29.333398,69.472998],[29.238867,69.393945],[29.191797,69.366699],[29.024902,69.287988],[28.846289,69.176904],[28.832617,69.118994],[28.891895,69.060596],[28.96582,69.021973],[28.898926,69.009668],[28.692188,68.961035],[28.566016,68.928223],[28.414062,68.90415],[28.453516,68.872266],[28.705957,68.865527],[28.744824,68.856445],[28.772852,68.840039],[28.777637,68.813818],[28.752051,68.771436],[28.479297,68.537646],[28.470703,68.488379],[28.560156,68.351367],[28.685156,68.189795],[29.062988,68.117969],[29.343848,68.061865],[29.524219,67.929102],[29.821582,67.754004],[29.979199,67.688574],[29.988086,67.668262],[29.941211,67.547461],[29.750586,67.426416],[29.572266,67.324365],[29.387695,67.201416],[29.243359,67.096582],[29.087012,66.970947],[29.069043,66.930225],[29.066211,66.891748],[29.093066,66.849219],[29.293262,66.695508],[29.371191,66.617041],[29.464355,66.532178],[29.544336,66.439697],[29.590723,66.356836],[29.670898,66.276123],[29.720703,66.234863],[29.803516,66.177051],[29.903418,66.091064],[29.936621,66.022949],[30.0875,65.786523],[30.102734,65.72627],[30.095313,65.681689],[30.029004,65.670703],[29.882617,65.663623],[29.723926,65.634375],[29.715918,65.624561],[29.819434,65.56875],[29.728027,65.473438],[29.714844,65.336963],[29.617188,65.265332],[29.608008,65.248682],[29.612402,65.234766],[29.629688,65.223877],[29.810547,65.204736],[29.826172,65.185303],[29.826953,65.145068],[29.81084,65.10791],[29.72002,65.080322],[29.622461,65.039502],[29.600879,65.001953],[29.604199,64.968408],[29.6375,64.911768],[29.70166,64.845752],[29.783203,64.804297],[30.072852,64.765039],[30.110254,64.732568],[30.126172,64.688086],[30.120117,64.644629],[29.985547,64.557715],[29.986621,64.524268],[30.041895,64.443359],[30.108105,64.366113],[30.390625,64.282422],[30.487891,64.236523],[30.51377,64.2],[30.52793,64.141113],[30.526074,64.077295],[30.503906,64.020605],[30.415332,63.94751],[30.210254,63.80332],[30.004102,63.747314],[29.991504,63.735156],[30.055371,63.689014],[30.418555,63.504053],[30.655273,63.41748],[30.974805,63.300635],[31.180859,63.208301],[31.247461,63.141895],[31.336719,63.068066],[31.437012,63.007715],[31.509277,62.955322],[31.536523,62.921631],[31.533984,62.8854],[31.437305,62.776123],[31.382422,62.69165],[31.285645,62.567822],[31.186719,62.481396],[30.935742,62.323779],[30.565625,62.127588],[30.479688,62.068213],[30.306445,61.964844],[30.009961,61.757373],[29.933203,61.711572],[29.690137,61.546094],[29.579395,61.493457],[29.492383,61.444238],[29.25166,61.287793],[28.992969,61.169043],[28.739063,61.05874],[28.662891,61.002832],[28.568164,60.960205],[28.455078,60.919629],[28.407422,60.896924],[28.151953,60.74585],[27.797656,60.536133],[27.761621,60.532861],[27.669336,60.498975],[27.525098,60.490771],[27.462402,60.464844],[27.241895,60.538672],[27.205273,60.543457],[27.075586,60.525146],[26.951172,60.471484],[26.721484,60.455078],[26.607422,60.437695],[26.534668,60.412891],[26.519727,60.471582],[26.551172,60.545996],[26.601758,60.595605],[26.606445,60.62793],[26.569336,60.624561],[26.495801,60.551807],[26.456445,60.466797],[26.377734,60.424072],[26.204688,60.406592],[26.036035,60.474902],[25.955957,60.474219],[26.00625,60.425293],[26.040234,60.371582],[26.03584,60.341504],[25.945898,60.346777],[25.845801,60.3146],[25.758008,60.267529],[25.71543,60.267432],[25.656445,60.333203],[25.548242,60.30249],[25.455762,60.26123],[25.267871,60.24834],[25.155859,60.194092],[24.957617,60.157471],[24.84873,60.15835],[24.600488,60.114258],[24.517969,60.046289],[24.445605,60.021289],[24.342578,60.042334],[24.025195,60.00918],[23.721777,59.965674],[23.592676,59.968164],[23.463574,59.98623],[23.326758,59.925781],[23.181445,59.844922],[23.021289,59.816016],[22.963867,59.826367],[23.009766,59.868799],[23.115723,59.912695],[23.188477,59.972217],[23.198438,60.021826],[23.148438,60.041309],[23.080176,60.047266],[22.994141,60.098535],[22.911719,60.209717],[22.86709,60.21582],[22.844434,60.186621],[22.819141,60.101367],[22.793457,60.076807],[22.749805,60.057275],[22.697363,60.037598],[22.646191,60.028027],[22.462695,60.029199],[22.438574,60.072266],[22.438574,60.090283],[22.471094,60.146973],[22.442676,60.156885],[22.469727,60.201318],[22.512988,60.198926],[22.564258,60.205518],[22.589941,60.228369],[22.587988,60.255664],[22.516699,60.262744],[22.512305,60.281348],[22.575879,60.359082],[22.584961,60.380566],[22.560352,60.38501],[22.520508,60.376562],[22.25791,60.400928],[21.933984,60.500293],[21.854297,60.50542],[21.805273,60.594141],[21.727148,60.58291],[21.613281,60.530957],[21.527832,60.57041],[21.436035,60.596387],[21.410645,60.636963],[21.411914,60.696826],[21.404004,60.767432],[21.378906,60.850049],[21.360547,60.96748],[21.377734,61.059229],[21.450977,61.127148],[21.479102,61.170508],[21.513477,61.281201],[21.521191,61.41084],[21.501758,61.45498],[21.506641,61.484326],[21.565039,61.484326],[21.552344,61.509521],[21.52666,61.523291],[21.498242,61.551953],[21.522461,61.567139],[21.592383,61.568213],[21.598047,61.577881],[21.605957,61.591553],[21.551855,61.666846],[21.545605,61.702734],[21.470508,61.81167],[21.384863,61.914941],[21.255957,61.989648],[21.30166,62.112646],[21.353711,62.223828],[21.343359,62.277393],[21.323438,62.342578],[21.165625,62.414062],[21.142188,62.514795],[21.103613,62.622949],[21.118164,62.689258],[21.143848,62.73999],[21.195703,62.790527],[21.45752,62.95],[21.473535,63.033252],[21.650977,63.039307],[21.568652,63.113721],[21.549219,63.155518],[21.545117,63.204297],[21.800391,63.237695],[21.895703,63.210254],[22.120313,63.244141],[22.319727,63.310449],[22.316211,63.345654],[22.285547,63.377197],[22.243262,63.437939],[22.273242,63.454785],[22.345996,63.442383],[22.312598,63.472559],[22.318652,63.504395],[22.398047,63.491162],[22.527637,63.57998],[22.532324,63.647852],[22.75625,63.68335],[23.014453,63.821826],[23.133594,63.864941],[23.24873,63.896143],[23.493945,64.034473],[23.598926,64.040918],[23.65293,64.13418],[23.861426,64.258252],[23.924805,64.274121],[24.022266,64.385986],[24.27832,64.515283],[24.440625,64.680127],[24.530176,64.738672],[24.55791,64.801025],[24.657617,64.806299],[24.747559,64.8521],[24.942188,64.884033],[25.134277,64.875195],[25.214258,64.853467],[25.288184,64.860352],[25.280762,64.916406],[25.228027,64.951025],[25.271094,64.984277],[25.372656,65.009473],[25.362305,65.065137],[25.340234,65.098633],[25.255859,65.143262],[25.297852,65.243213],[25.30791,65.352734],[25.347852,65.479248],[25.241797,65.546289],[24.839355,65.660352],[24.764258,65.656396],[24.674902,65.670703],[24.581543,65.757129],[24.623242,65.831689],[24.628027,65.85918],[24.591602,65.85835],[24.532617,65.822021],[24.404297,65.780469],[24.2375,65.812354],[24.155469,65.805273]]],[[[21.994238,60.33667],[21.921484,60.332275],[21.818652,60.381836],[21.805664,60.401221],[21.845996,60.412451],[21.819336,60.452295],[21.827246,60.469922],[21.906836,60.438477],[21.950293,60.401709],[21.907813,60.393164],[21.979785,60.355225],[21.994238,60.33667]]],[[[21.217773,63.241309],[21.228516,63.222656],[21.287109,63.227783],[21.366016,63.261768],[21.421973,63.245898],[21.415625,63.197363],[21.377637,63.199219],[21.367188,63.207227],[21.318457,63.179492],[21.309766,63.162695],[21.253418,63.152002],[21.149316,63.199463],[21.083887,63.277539],[21.236328,63.277734],[21.221777,63.259131],[21.217773,63.241309]]],[[[22.175098,60.370752],[22.301758,60.347559],[22.35498,60.355859],[22.415527,60.303369],[22.312891,60.269971],[22.305762,60.228564],[22.346289,60.202832],[22.360547,60.165576],[22.258301,60.165625],[22.209375,60.196973],[22.188086,60.236768],[22.140527,60.264893],[22.077148,60.286328],[22.108203,60.314893],[22.125879,60.355859],[22.175098,60.370752]]],[[[21.450879,60.52959],[21.436914,60.483057],[21.369043,60.488232],[21.3,60.479785],[21.244336,60.525977],[21.214551,60.603857],[21.224707,60.620605],[21.268066,60.638281],[21.30127,60.595557],[21.450879,60.52959]]],[[[21.833203,60.140527],[21.733105,60.106152],[21.69502,60.114355],[21.704785,60.172314],[21.764258,60.198828],[21.864355,60.201807],[21.833203,60.140527]]],[[[21.62832,60.107812],[21.540625,60.0979],[21.486035,60.126807],[21.506738,60.14834],[21.567969,60.172314],[21.634082,60.168994],[21.648145,60.140869],[21.62832,60.107812]]],[[[24.848242,64.991016],[24.698926,64.957813],[24.578613,64.978564],[24.576563,65.042871],[24.651172,65.073975],[24.786035,65.086426],[24.970605,65.055322],[24.997559,65.038721],[24.891797,65.02627],[24.848242,64.991016]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Fiji","SOV_A3":"FJI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Fiji","ADM0_A3":"FJI","GEOU_DIF":0,"GEOUNIT":"Fiji","GU_A3":"FJI","SU_DIF":0,"SUBUNIT":"Fiji","SU_A3":"FJI","BRK_DIFF":0,"NAME":"Fiji","NAME_LONG":"Fiji","BRK_A3":"FJI","BRK_NAME":"Fiji","BRK_GROUP":null,"ABBREV":"Fiji","POSTAL":"FJ","FORMAL_EN":"Republic of Fiji","FORMAL_FR":null,"NAME_CIAWF":"Fiji","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Fiji","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":1,"MAPCOLOR9":2,"MAPCOLOR13":2,"POP_EST":889953,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":5496,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"FJ","ISO_A2":"FJ","ISO_A2_EH":"FJ","ISO_A3":"FJI","ISO_A3_EH":"FJI","ISO_N3":"242","ISO_N3_EH":"242","UN_A3":"242","WB_A2":"FJ","WB_A3":"FJI","WOE_ID":23424813,"WOE_ID_EH":23424813,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"FJI","ADM0_DIFF":null,"ADM0_TLC":"FJI","ADM0_A3_US":"FJI","ADM0_A3_FR":"FJI","ADM0_A3_RU":"FJI","ADM0_A3_ES":"FJI","ADM0_A3_CN":"FJI","ADM0_A3_TW":"FJI","ADM0_A3_IN":"FJI","ADM0_A3_NP":"FJI","ADM0_A3_PK":"FJI","ADM0_A3_DE":"FJI","ADM0_A3_GB":"FJI","ADM0_A3_BR":"FJI","ADM0_A3_IL":"FJI","ADM0_A3_PS":"FJI","ADM0_A3_SA":"FJI","ADM0_A3_EG":"FJI","ADM0_A3_MA":"FJI","ADM0_A3_PT":"FJI","ADM0_A3_AR":"FJI","ADM0_A3_JP":"FJI","ADM0_A3_KO":"FJI","ADM0_A3_VN":"FJI","ADM0_A3_TR":"FJI","ADM0_A3_ID":"FJI","ADM0_A3_PL":"FJI","ADM0_A3_GR":"FJI","ADM0_A3_IT":"FJI","ADM0_A3_NL":"FJI","ADM0_A3_SE":"FJI","ADM0_A3_BD":"FJI","ADM0_A3_UA":"FJI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Melanesia","REGION_WB":"East Asia & Pacific","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":177.975427,"LABEL_Y":-17.826099,"NE_ID":1159320625,"WIKIDATAID":"Q712","NAME_AR":"فيجي","NAME_BN":"ফিজি","NAME_DE":"Fidschi","NAME_EN":"Fiji","NAME_ES":"Fiyi","NAME_FA":"فیجی","NAME_FR":"Fidji","NAME_EL":"Φίτζι","NAME_HE":"פיג'י","NAME_HI":"फ़िजी","NAME_HU":"Fidzsi-szigetek","NAME_ID":"Fiji","NAME_IT":"Figi","NAME_JA":"フィジー","NAME_KO":"피지","NAME_NL":"Fiji","NAME_PL":"Fidżi","NAME_PT":"Fiji","NAME_RU":"Фиджи","NAME_SV":"Fiji","NAME_TR":"Fiji","NAME_UK":"Фіджі","NAME_UR":"فجی","NAME_VI":"Fiji","NAME_ZH":"斐济","NAME_ZHT":"斐濟","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-180,-21.705859,180,-12.476953],"geometry":{"type":"MultiPolygon","coordinates":[[[[179.999219,-16.168555],[179.848242,-16.30166],[179.793848,-16.370313],[179.748145,-16.446289],[179.619141,-16.527734],[179.56416,-16.636914],[179.568164,-16.747461],[179.69707,-16.631934],[179.841016,-16.5375],[179.884961,-16.518457],[179.930371,-16.519434],[179.926563,-16.55166],[179.905957,-16.583594],[179.890039,-16.666992],[179.92793,-16.744434],[179.820801,-16.736914],[179.714746,-16.743555],[179.588965,-16.787012],[179.46543,-16.806055],[179.419336,-16.806543],[179.375,-16.791992],[179.345996,-16.769727],[179.32334,-16.718066],[179.300488,-16.710352],[179.202344,-16.712695],[179.055469,-16.813574],[179.006836,-16.900195],[178.950391,-16.904004],[178.883691,-16.886035],[178.80293,-16.952148],[178.706641,-16.976172],[178.665039,-16.92002],[178.638086,-16.85127],[178.603711,-16.800586],[178.497461,-16.787891],[178.51377,-16.726074],[178.541992,-16.700488],[178.567773,-16.663867],[178.583594,-16.621875],[178.634277,-16.648535],[178.686328,-16.665625],[178.744531,-16.63418],[178.805078,-16.631445],[178.865723,-16.540039],[178.960547,-16.482813],[179.091406,-16.4375],[179.224609,-16.405176],[179.293555,-16.398633],[179.35918,-16.379883],[179.475098,-16.294141],[179.551758,-16.249902],[179.635254,-16.223242],[179.715039,-16.207617],[179.788867,-16.221484],[179.848145,-16.214258],[180,-16.15293],[179.999219,-16.168555]]],[[[178.280176,-17.371973],[178.280176,-17.416211],[178.309473,-17.435352],[178.338574,-17.438477],[178.410938,-17.523047],[178.523242,-17.595801],[178.591602,-17.651465],[178.595703,-17.699023],[178.574902,-17.749316],[178.603809,-17.839355],[178.617871,-17.932813],[178.667676,-18.080859],[178.597363,-18.108984],[178.486719,-18.112305],[178.461133,-18.138965],[178.423438,-18.124219],[178.331543,-18.135254],[178.24375,-18.183984],[178.160156,-18.250195],[178.063965,-18.250391],[177.955469,-18.264063],[177.84707,-18.254883],[177.770801,-18.219531],[177.636426,-18.181055],[177.457324,-18.148242],[177.383203,-18.120703],[177.321387,-18.077539],[177.263477,-17.968652],[177.254883,-17.914941],[177.263965,-17.863477],[177.316309,-17.846094],[177.360156,-17.82002],[177.366406,-17.786035],[177.385742,-17.762305],[177.410938,-17.753711],[177.423242,-17.737305],[177.405566,-17.682129],[177.400684,-17.631641],[177.504492,-17.539551],[177.617969,-17.461035],[177.817969,-17.388477],[177.940234,-17.395117],[178.127637,-17.339258],[178.187598,-17.312988],[178.247168,-17.329102],[178.280176,-17.371973]]],[[[-179.974902,-16.924805],[-180,-16.962988],[-180,-16.907813],[-179.999951,-16.858789],[-180,-16.824316],[-180,-16.785547],[-179.893604,-16.700391],[-179.860986,-16.688281],[-179.822314,-16.765332],[-179.867773,-16.850293],[-179.974902,-16.924805]]],[[[180,-16.963086],[179.925879,-17.000293],[179.896973,-16.964063],[179.930957,-16.875977],[180,-16.785742],[179.999219,-16.858789],[180,-16.963086]]],[[[178.487891,-18.974121],[178.487695,-19.01709],[178.358984,-19.045605],[178.315625,-19.010156],[178.287988,-19.003711],[178.211328,-19.066504],[178.18916,-19.092285],[178.181836,-19.111719],[178.162109,-19.121484],[178.020801,-19.15166],[177.958691,-19.121582],[178.000781,-19.101074],[178.051953,-19.060156],[178.104102,-19.066211],[178.156641,-19.02793],[178.208398,-18.969629],[178.282227,-18.957031],[178.334277,-18.934473],[178.420313,-18.950781],[178.487891,-18.974121]]],[[[-178.988086,-17.97666],[-179.018408,-17.991797],[-179.039209,-17.988379],[-179.063818,-17.972363],[-179.079004,-17.944141],[-179.047607,-17.92041],[-178.999121,-17.947363],[-178.988086,-17.97666]]],[[[-178.761914,-18.233887],[-178.773633,-18.252441],[-178.827344,-18.222168],[-178.8479,-18.202051],[-178.790869,-18.186328],[-178.763086,-18.191406],[-178.761914,-18.233887]]],[[[-178.251123,-17.952734],[-178.306836,-17.963281],[-178.357227,-17.920898],[-178.325391,-17.875781],[-178.280322,-17.886426],[-178.25459,-17.92998],[-178.251123,-17.952734]]],[[[-178.956494,-17.272852],[-178.981836,-17.307031],[-179.003906,-17.294922],[-178.975537,-17.2375],[-178.971484,-17.212695],[-179.014941,-17.182422],[-179.017676,-17.161328],[-179.005029,-17.14834],[-178.952832,-17.182031],[-178.921143,-17.208398],[-178.914844,-17.223047],[-178.924561,-17.248633],[-178.956494,-17.272852]]],[[[-178.535107,-19.166016],[-178.546338,-19.175],[-178.57373,-19.164941],[-178.595947,-19.151367],[-178.598682,-19.137109],[-178.589307,-19.118848],[-178.567676,-19.109277],[-178.556689,-19.112988],[-178.562988,-19.11875],[-178.576172,-19.125195],[-178.574072,-19.143164],[-178.557129,-19.154102],[-178.540625,-19.157031],[-178.535107,-19.166016]]],[[[-179.799854,-18.940332],[-179.797607,-18.969824],[-179.812451,-18.968164],[-179.830225,-18.955566],[-179.839355,-18.961719],[-179.845508,-18.970801],[-179.848584,-18.991309],[-179.851221,-19.00293],[-179.865039,-18.99873],[-179.867334,-18.978418],[-179.862793,-18.96416],[-179.856201,-18.943262],[-179.831104,-18.924219],[-179.799854,-18.940332]]],[[[177.23418,-17.14707],[177.182813,-17.163867],[177.210156,-17.084277],[177.239258,-17.059375],[177.25752,-17.054199],[177.287402,-17.048633],[177.275781,-17.104883],[177.23418,-17.14707]]],[[[179.422363,-17.366797],[179.388965,-17.393848],[179.373145,-17.256152],[179.407617,-17.257324],[179.432813,-17.271582],[179.447168,-17.30625],[179.422363,-17.366797]]],[[[179.349316,-18.102344],[179.34043,-18.110449],[179.253516,-18.030566],[179.256445,-17.999023],[179.271777,-17.970703],[179.306445,-17.944043],[179.337891,-17.989551],[179.362402,-18.065234],[179.349316,-18.102344]]],[[[178.827539,-17.729004],[178.776074,-17.746777],[178.747656,-17.685742],[178.787109,-17.624414],[178.831055,-17.618848],[178.852539,-17.68125],[178.827539,-17.729004]]],[[[-179.929443,-16.502832],[-179.999951,-16.540039],[-179.999951,-16.488867],[-179.943652,-16.441406],[-179.900928,-16.431543],[-179.927344,-16.479102],[-179.929443,-16.502832]]],[[[-179.956152,-16.149219],[-180,-16.168262],[-180,-16.156055],[-180,-16.15293],[-179.969385,-16.126074],[-179.94458,-16.126074],[-179.956152,-16.149219]]],[[[180,-16.540039],[179.987207,-16.541211],[179.984668,-16.522168],[180,-16.488867],[180,-16.540039]]],[[[177.121484,-12.505469],[177.082422,-12.515625],[177.019336,-12.507324],[177.00625,-12.491113],[177.026367,-12.4875],[177.067578,-12.476953],[177.118066,-12.482324],[177.126953,-12.492871],[177.121484,-12.505469]]],[[[174.629688,-21.69502],[174.621875,-21.705859],[174.592969,-21.702344],[174.587207,-21.680078],[174.604199,-21.66748],[174.627734,-21.675977],[174.629688,-21.69502]]],[[[-178.711621,-20.667773],[-178.709521,-20.670508],[-178.714941,-20.670313],[-178.723096,-20.666797],[-178.729102,-20.660156],[-178.730566,-20.652832],[-178.727539,-20.645215],[-178.724561,-20.645703],[-178.719189,-20.652344],[-178.714209,-20.659766],[-178.711621,-20.667773]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Ethiopia","SOV_A3":"ETH","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Ethiopia","ADM0_A3":"ETH","GEOU_DIF":0,"GEOUNIT":"Ethiopia","GU_A3":"ETH","SU_DIF":0,"SUBUNIT":"Ethiopia","SU_A3":"ETH","BRK_DIFF":0,"NAME":"Ethiopia","NAME_LONG":"Ethiopia","BRK_A3":"ETH","BRK_NAME":"Ethiopia","BRK_GROUP":null,"ABBREV":"Eth.","POSTAL":"ET","FORMAL_EN":"Federal Democratic Republic of Ethiopia","FORMAL_FR":null,"NAME_CIAWF":"Ethiopia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Ethiopia","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":13,"POP_EST":112078730,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":95912,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"ET","ISO_A2":"ET","ISO_A2_EH":"ET","ISO_A3":"ETH","ISO_A3_EH":"ETH","ISO_N3":"231","ISO_N3_EH":"231","UN_A3":"231","WB_A2":"ET","WB_A3":"ETH","WOE_ID":23424808,"WOE_ID_EH":23424808,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ETH","ADM0_DIFF":null,"ADM0_TLC":"ETH","ADM0_A3_US":"ETH","ADM0_A3_FR":"ETH","ADM0_A3_RU":"ETH","ADM0_A3_ES":"ETH","ADM0_A3_CN":"ETH","ADM0_A3_TW":"ETH","ADM0_A3_IN":"ETH","ADM0_A3_NP":"ETH","ADM0_A3_PK":"ETH","ADM0_A3_DE":"ETH","ADM0_A3_GB":"ETH","ADM0_A3_BR":"ETH","ADM0_A3_IL":"ETH","ADM0_A3_PS":"ETH","ADM0_A3_SA":"ETH","ADM0_A3_EG":"ETH","ADM0_A3_MA":"ETH","ADM0_A3_PT":"ETH","ADM0_A3_AR":"ETH","ADM0_A3_JP":"ETH","ADM0_A3_KO":"ETH","ADM0_A3_VN":"ETH","ADM0_A3_TR":"ETH","ADM0_A3_ID":"ETH","ADM0_A3_PL":"ETH","ADM0_A3_GR":"ETH","ADM0_A3_IT":"ETH","ADM0_A3_NL":"ETH","ADM0_A3_SE":"ETH","ADM0_A3_BD":"ETH","ADM0_A3_UA":"ETH","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":39.0886,"LABEL_Y":8.032795,"NE_ID":1159320617,"WIKIDATAID":"Q115","NAME_AR":"إثيوبيا","NAME_BN":"ইথিওপিয়া","NAME_DE":"Äthiopien","NAME_EN":"Ethiopia","NAME_ES":"Etiopía","NAME_FA":"اتیوپی","NAME_FR":"Éthiopie","NAME_EL":"Αιθιοπία","NAME_HE":"אתיופיה","NAME_HI":"इथियोपिया","NAME_HU":"Etiópia","NAME_ID":"Ethiopia","NAME_IT":"Etiopia","NAME_JA":"エチオピア","NAME_KO":"에티오피아","NAME_NL":"Ethiopië","NAME_PL":"Etiopia","NAME_PT":"Etiópia","NAME_RU":"Эфиопия","NAME_SV":"Etiopien","NAME_TR":"Etiyopya","NAME_UK":"Ефіопія","NAME_UR":"ایتھوپیا","NAME_VI":"Ethiopia","NAME_ZH":"埃塞俄比亚","NAME_ZHT":"衣索比亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[32.998926,3.456104,47.978223,14.852295],"geometry":{"type":"Polygon","coordinates":[[[35.268359,5.492285],[35.252441,5.511035],[35.164453,5.581201],[35.081934,5.673145],[35.031934,5.774902],[34.983594,5.858301],[34.958984,6.045068],[34.897852,6.159814],[34.838086,6.300146],[34.749219,6.567871],[34.710645,6.660303],[34.63877,6.722168],[34.562793,6.779834],[34.484375,6.898389],[34.279297,7.002832],[34.200391,7.08457],[34.064258,7.225732],[34.030176,7.296973],[34.02041,7.367969],[33.97793,7.43457],[33.902441,7.509521],[33.666113,7.670996],[33.600977,7.69043],[33.516309,7.707764],[33.392285,7.72373],[33.225977,7.760645],[33.080762,7.82373],[33.014648,7.868555],[32.998926,7.899512],[33.012598,7.951514],[33.065234,8.040479],[33.165234,8.251074],[33.234277,8.396387],[33.281055,8.437256],[33.409375,8.447754],[33.545313,8.443408],[33.644824,8.432568],[33.785059,8.431104],[33.95332,8.443506],[34.019727,8.49209],[34.072754,8.545264],[34.094531,8.582227],[34.101758,8.676367],[34.101562,8.751855],[34.091016,9.04126],[34.08457,9.218506],[34.077148,9.420996],[34.078125,9.461523],[34.079297,9.513477],[34.120313,9.729687],[34.159082,9.853418],[34.185254,9.918555],[34.291504,10.124756],[34.31123,10.190869],[34.314844,10.251562],[34.275684,10.528125],[34.343945,10.658643],[34.431445,10.787842],[34.508008,10.842871],[34.571875,10.880176],[34.601758,10.864551],[34.675,10.804932],[34.771289,10.746191],[34.816211,10.75918],[34.882324,10.810547],[34.931445,10.864795],[34.924902,10.962109],[34.969141,11.161768],[34.960742,11.276758],[35.00791,11.419873],[35.059668,11.621045],[35.082715,11.748291],[35.112305,11.816553],[35.252441,11.957031],[35.372754,12.155566],[35.449609,12.300586],[35.596094,12.537305],[35.670215,12.62373],[35.730566,12.661035],[35.820605,12.684863],[35.987598,12.706299],[36.10752,12.726465],[36.125195,12.757031],[36.135352,12.805322],[36.137109,12.911133],[36.160156,13.093311],[36.212207,13.271094],[36.273535,13.405762],[36.306836,13.466846],[36.346289,13.52627],[36.390625,13.626074],[36.44707,13.842041],[36.443945,13.988428],[36.524316,14.256836],[36.542383,14.258203],[36.679102,14.307568],[36.811914,14.315039],[36.940723,14.280566],[37.024512,14.271973],[37.063477,14.289258],[37.099414,14.333984],[37.132617,14.406055],[37.185156,14.445996],[37.257227,14.45376],[37.353711,14.372461],[37.507227,14.156396],[37.546777,14.143848],[37.571191,14.149072],[37.648438,14.322559],[37.708398,14.457227],[37.820312,14.708496],[37.88418,14.852295],[37.943457,14.810547],[38.002539,14.737109],[38.069922,14.702734],[38.141992,14.681494],[38.177051,14.678809],[38.221484,14.649658],[38.376953,14.47041],[38.431445,14.428613],[38.504395,14.424414],[38.812012,14.482324],[38.995703,14.586865],[39.023828,14.628223],[39.074219,14.628223],[39.135449,14.581885],[39.158594,14.5375],[39.198047,14.479395],[39.270117,14.470312],[39.446094,14.511865],[39.531836,14.536719],[39.604883,14.516064],[39.697949,14.499023],[39.756152,14.499023],[39.895117,14.440674],[40.062109,14.459131],[40.140625,14.456055],[40.221484,14.431152],[40.353125,14.338086],[40.524414,14.225195],[40.769531,14.144482],[40.820117,14.11167],[40.938574,13.983105],[41.122363,13.736133],[41.362891,13.499805],[41.625,13.313232],[41.765039,13.183936],[41.85957,13.025879],[41.952148,12.882324],[42.046582,12.820605],[42.134277,12.771436],[42.225,12.661963],[42.289941,12.570215],[42.378516,12.466406],[42.280371,12.324268],[42.149121,12.134131],[41.995898,11.912354],[41.949609,11.857861],[41.815625,11.723779],[41.792676,11.686035],[41.766504,11.589111],[41.764648,11.412891],[41.782031,11.187793],[41.798242,10.980469],[41.872168,10.955811],[41.957422,10.941016],[42.052148,10.968359],[42.166211,10.991602],[42.308105,11.005225],[42.465137,11.04707],[42.557715,11.080762],[42.65498,11.07832],[42.741211,11.042383],[42.783008,11.009277],[42.844141,10.997949],[42.922754,10.999316],[42.906152,10.960254],[42.862891,10.903223],[42.809766,10.845996],[42.763086,10.786914],[42.65957,10.621387],[42.656445,10.6],[42.669238,10.567578],[42.725195,10.491748],[42.783691,10.369629],[42.816406,10.257373],[42.841602,10.203076],[42.9125,10.14082],[43.014746,10.012598],[43.068945,9.926221],[43.181641,9.87998],[43.218457,9.770166],[43.303125,9.609082],[43.394336,9.480273],[43.48252,9.379492],[43.581055,9.340723],[43.620508,9.337402],[43.826758,9.150781],[43.983789,9.008838],[44.022852,8.986035],[44.30625,8.893066],[44.632031,8.786084],[44.893555,8.700195],[45.226953,8.59082],[45.555469,8.483008],[45.863281,8.379883],[46.295996,8.234961],[46.644727,8.118164],[46.919531,8.026123],[46.978223,7.99707],[47.305664,7.99707],[47.637695,7.99707],[47.978223,7.99707],[47.731641,7.759326],[47.452832,7.490479],[47.159766,7.207861],[46.971191,7.026025],[46.671777,6.737256],[46.422949,6.497266],[46.166797,6.234668],[45.934961,5.997217],[45.633594,5.668262],[45.438477,5.45542],[45.132812,5.12168],[44.940527,4.912012],[44.911621,4.899902],[44.636621,4.915771],[44.369531,4.931201],[44.028125,4.950977],[43.988867,4.950537],[43.889453,4.930762],[43.829199,4.911426],[43.583496,4.85498],[43.538281,4.840332],[43.333984,4.750391],[43.125684,4.644482],[43.016016,4.56333],[42.930957,4.445312],[42.894727,4.361084],[42.856641,4.324219],[42.791602,4.291992],[42.355176,4.212256],[42.228418,4.20166],[42.024121,4.137939],[41.915332,4.031299],[41.883984,3.977734],[41.737695,3.979053],[41.481934,3.963281],[41.372461,3.946191],[41.318945,3.943066],[41.220898,3.943555],[41.14043,3.962988],[41.087207,3.991943],[41.020801,4.057471],[40.872656,4.190332],[40.765234,4.273047],[40.528711,4.177637],[40.316016,4.082715],[40.01416,3.947949],[39.842188,3.851465],[39.790332,3.754248],[39.65752,3.577832],[39.538867,3.469189],[39.494434,3.456104],[39.225488,3.47876],[39.12832,3.500879],[38.967773,3.520605],[38.752734,3.558984],[38.608008,3.600098],[38.451563,3.604834],[38.225293,3.618994],[38.086133,3.648828],[37.944922,3.746729],[37.762891,3.864648],[37.575488,3.985937],[37.38252,4.11084],[37.15459,4.254541],[36.905566,4.411475],[36.848242,4.427344],[36.823633,4.430127],[36.553027,4.437256],[36.271875,4.444727],[36.081934,4.449707],[36.021973,4.468115],[35.978711,4.503809],[35.919824,4.619824],[35.845605,4.702637],[35.763086,4.808008],[35.756152,4.950488],[35.779297,5.105566],[35.800293,5.156934],[35.788477,5.208105],[35.791406,5.278564],[35.74502,5.343994],[35.468652,5.419092],[35.424023,5.413281],[35.37793,5.385156],[35.325293,5.364893],[35.287598,5.384082],[35.264648,5.412061],[35.263867,5.45791],[35.268359,5.492285]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Estonia","SOV_A3":"EST","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Estonia","ADM0_A3":"EST","GEOU_DIF":0,"GEOUNIT":"Estonia","GU_A3":"EST","SU_DIF":0,"SUBUNIT":"Estonia","SU_A3":"EST","BRK_DIFF":0,"NAME":"Estonia","NAME_LONG":"Estonia","BRK_A3":"EST","BRK_NAME":"Estonia","BRK_GROUP":null,"ABBREV":"Est.","POSTAL":"EST","FORMAL_EN":"Republic of Estonia","FORMAL_FR":null,"NAME_CIAWF":"Estonia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Estonia","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":1,"MAPCOLOR13":10,"POP_EST":1326590,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":31471,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"EN","ISO_A2":"EE","ISO_A2_EH":"EE","ISO_A3":"EST","ISO_A3_EH":"EST","ISO_N3":"233","ISO_N3_EH":"233","UN_A3":"233","WB_A2":"EE","WB_A3":"EST","WOE_ID":23424805,"WOE_ID_EH":23424805,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"EST","ADM0_DIFF":null,"ADM0_TLC":"EST","ADM0_A3_US":"EST","ADM0_A3_FR":"EST","ADM0_A3_RU":"EST","ADM0_A3_ES":"EST","ADM0_A3_CN":"EST","ADM0_A3_TW":"EST","ADM0_A3_IN":"EST","ADM0_A3_NP":"EST","ADM0_A3_PK":"EST","ADM0_A3_DE":"EST","ADM0_A3_GB":"EST","ADM0_A3_BR":"EST","ADM0_A3_IL":"EST","ADM0_A3_PS":"EST","ADM0_A3_SA":"EST","ADM0_A3_EG":"EST","ADM0_A3_MA":"EST","ADM0_A3_PT":"EST","ADM0_A3_AR":"EST","ADM0_A3_JP":"EST","ADM0_A3_KO":"EST","ADM0_A3_VN":"EST","ADM0_A3_TR":"EST","ADM0_A3_ID":"EST","ADM0_A3_PL":"EST","ADM0_A3_GR":"EST","ADM0_A3_IT":"EST","ADM0_A3_NL":"EST","ADM0_A3_SE":"EST","ADM0_A3_BD":"EST","ADM0_A3_UA":"EST","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":25.867126,"LABEL_Y":58.724865,"NE_ID":1159320615,"WIKIDATAID":"Q191","NAME_AR":"إستونيا","NAME_BN":"এস্তোনিয়া","NAME_DE":"Estland","NAME_EN":"Estonia","NAME_ES":"Estonia","NAME_FA":"استونی","NAME_FR":"Estonie","NAME_EL":"Εσθονία","NAME_HE":"אסטוניה","NAME_HI":"एस्टोनिया","NAME_HU":"Észtország","NAME_ID":"Estonia","NAME_IT":"Estonia","NAME_JA":"エストニア","NAME_KO":"에스토니아","NAME_NL":"Estland","NAME_PL":"Estonia","NAME_PT":"Estónia","NAME_RU":"Эстония","NAME_SV":"Estland","NAME_TR":"Estonya","NAME_UK":"Естонія","NAME_UR":"استونیا","NAME_VI":"Estonia","NAME_ZH":"爱沙尼亚","NAME_ZHT":"愛沙尼亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[21.854492,57.525488,28.151074,59.639014],"geometry":{"type":"MultiPolygon","coordinates":[[[[27.351953,57.528125],[27.326563,57.525488],[27.187109,57.53833],[27.033398,57.57876],[26.966016,57.609131],[26.899805,57.608789],[26.819727,57.588721],[26.532617,57.531006],[26.462109,57.544482],[26.298047,57.601074],[26.215039,57.662744],[26.030371,57.785547],[26.015234,57.814746],[25.991113,57.838184],[25.79375,57.868555],[25.720898,57.913818],[25.660156,57.920166],[25.571289,57.942773],[25.340039,58.039453],[25.282617,58.048486],[25.268652,58.032227],[25.272656,58.009375],[25.258301,57.996143],[25.228711,57.996582],[25.175195,58.032129],[25.111035,58.063428],[24.911328,58.00459],[24.839063,57.988721],[24.775781,57.985254],[24.458887,57.907861],[24.3625,57.866162],[24.322559,57.870605],[24.332031,57.909766],[24.463867,58.105957],[24.4875,58.261621],[24.535742,58.283008],[24.549707,58.30459],[24.529102,58.354248],[24.392188,58.386084],[24.336914,58.381396],[24.287207,58.328027],[24.235645,58.289551],[24.114844,58.266113],[24.010938,58.306641],[23.767578,58.36084],[23.706055,58.433008],[23.691504,58.505615],[23.562793,58.57583],[23.509277,58.658545],[23.530664,58.71626],[23.647461,58.75415],[23.680762,58.787158],[23.533594,58.781934],[23.503613,58.789844],[23.497168,58.819531],[23.432031,58.920654],[23.489648,58.960498],[23.515039,58.999219],[23.467773,59.032178],[23.480176,59.069678],[23.516992,59.107568],[23.494434,59.195654],[23.640527,59.242334],[23.78252,59.275146],[24.083398,59.291895],[24.053613,59.372314],[24.175391,59.375928],[24.380371,59.472656],[24.583594,59.455664],[24.877539,59.52207],[25.44375,59.521143],[25.520898,59.559473],[25.507422,59.597998],[25.509277,59.639014],[25.615723,59.627539],[25.79375,59.634668],[26.46084,59.553906],[26.625,59.553906],[26.852051,59.471777],[26.974707,59.450635],[27.33584,59.450488],[27.892578,59.414209],[28.001855,59.469824],[28.0125,59.484277],[28.06582,59.453174],[28.133008,59.403076],[28.151074,59.374414],[28.12832,59.357568],[28.061328,59.343262],[28.046094,59.327832],[28.016406,59.301709],[27.938184,59.297021],[27.897656,59.277637],[27.849512,59.192676],[27.757617,59.052002],[27.621777,58.944971],[27.513086,58.886279],[27.464453,58.841309],[27.43418,58.787256],[27.427051,58.733057],[27.531348,58.435254],[27.530078,58.381494],[27.505566,58.32627],[27.487793,58.270068],[27.502441,58.221338],[27.571094,58.138086],[27.644141,58.013916],[27.673438,57.934619],[27.721973,57.905469],[27.76875,57.884131],[27.778516,57.870703],[27.776953,57.856738],[27.752832,57.841016],[27.54209,57.799414],[27.514746,57.764209],[27.491992,57.724951],[27.4,57.666797],[27.371777,57.612549],[27.354297,57.550293],[27.351953,57.528125]]],[[[22.617383,58.62124],[22.688379,58.597021],[22.753809,58.604687],[22.820117,58.621533],[22.964258,58.605713],[23.292871,58.483496],[23.323242,58.45083],[23.127148,58.435986],[23.082617,58.398486],[23.035449,58.372314],[22.979883,58.363867],[22.885156,58.311279],[22.757031,58.260889],[22.730273,58.230664],[22.498438,58.23623],[22.37168,58.217139],[22.269336,58.160742],[22.227344,58.051807],[22.152441,57.966797],[22.07627,57.936035],[21.996875,57.931348],[21.978027,57.963281],[21.985547,57.995166],[22.15293,58.115332],[22.187695,58.154346],[22.104395,58.17168],[22.03457,58.213379],[21.882129,58.262354],[21.854492,58.30166],[21.891016,58.30459],[21.924414,58.315869],[21.965039,58.348828],[21.984082,58.38667],[21.862305,58.497168],[21.924414,58.514258],[22.001855,58.510254],[22.081348,58.478125],[22.168555,58.51582],[22.205566,58.521387],[22.266602,58.507959],[22.328125,58.580859],[22.474414,58.604883],[22.546973,58.627393],[22.617383,58.62124]]],[[[22.92373,58.826904],[22.841699,58.777441],[22.792871,58.797217],[22.767285,58.820898],[22.661426,58.70918],[22.542188,58.68999],[22.472656,58.712061],[22.478906,58.753809],[22.411035,58.863379],[22.307422,58.895459],[22.161914,58.898486],[22.05625,58.943604],[22.462598,58.974316],[22.50459,59.026465],[22.587207,59.081201],[22.649414,59.087109],[22.702246,59.074414],[22.712207,59.031982],[22.725488,59.015088],[22.909863,58.991211],[22.981641,58.919824],[23.008691,58.833936],[22.92373,58.826904]]],[[[23.343555,58.550342],[23.260352,58.53999],[23.063477,58.611084],[23.109082,58.659229],[23.16543,58.678125],[23.332813,58.648584],[23.356445,58.575537],[23.343555,58.550342]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Eritrea","SOV_A3":"ERI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Eritrea","ADM0_A3":"ERI","GEOU_DIF":0,"GEOUNIT":"Eritrea","GU_A3":"ERI","SU_DIF":0,"SUBUNIT":"Eritrea","SU_A3":"ERI","BRK_DIFF":0,"NAME":"Eritrea","NAME_LONG":"Eritrea","BRK_A3":"ERI","BRK_NAME":"Eritrea","BRK_GROUP":null,"ABBREV":"Erit.","POSTAL":"ER","FORMAL_EN":"State of Eritrea","FORMAL_FR":null,"NAME_CIAWF":"Eritrea","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Eritrea","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":1,"MAPCOLOR9":2,"MAPCOLOR13":12,"POP_EST":6081196,"POP_RANK":13,"POP_YEAR":2020,"GDP_MD":2065,"GDP_YEAR":2011,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"ER","ISO_A2":"ER","ISO_A2_EH":"ER","ISO_A3":"ERI","ISO_A3_EH":"ERI","ISO_N3":"232","ISO_N3_EH":"232","UN_A3":"232","WB_A2":"ER","WB_A3":"ERI","WOE_ID":23424806,"WOE_ID_EH":23424806,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ERI","ADM0_DIFF":null,"ADM0_TLC":"ERI","ADM0_A3_US":"ERI","ADM0_A3_FR":"ERI","ADM0_A3_RU":"ERI","ADM0_A3_ES":"ERI","ADM0_A3_CN":"ERI","ADM0_A3_TW":"ERI","ADM0_A3_IN":"ERI","ADM0_A3_NP":"ERI","ADM0_A3_PK":"ERI","ADM0_A3_DE":"ERI","ADM0_A3_GB":"ERI","ADM0_A3_BR":"ERI","ADM0_A3_IL":"ERI","ADM0_A3_PS":"ERI","ADM0_A3_SA":"ERI","ADM0_A3_EG":"ERI","ADM0_A3_MA":"ERI","ADM0_A3_PT":"ERI","ADM0_A3_AR":"ERI","ADM0_A3_JP":"ERI","ADM0_A3_KO":"ERI","ADM0_A3_VN":"ERI","ADM0_A3_TR":"ERI","ADM0_A3_ID":"ERI","ADM0_A3_PL":"ERI","ADM0_A3_GR":"ERI","ADM0_A3_IT":"ERI","ADM0_A3_NL":"ERI","ADM0_A3_SE":"ERI","ADM0_A3_BD":"ERI","ADM0_A3_UA":"ERI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":38.285566,"LABEL_Y":15.787401,"NE_ID":1159320581,"WIKIDATAID":"Q986","NAME_AR":"إريتريا","NAME_BN":"ইরিত্রিয়া","NAME_DE":"Eritrea","NAME_EN":"Eritrea","NAME_ES":"Eritrea","NAME_FA":"اریتره","NAME_FR":"Érythrée","NAME_EL":"Ερυθραία","NAME_HE":"אריתריאה","NAME_HI":"इरित्रिया","NAME_HU":"Eritrea","NAME_ID":"Eritrea","NAME_IT":"Eritrea","NAME_JA":"エリトリア","NAME_KO":"에리트레아","NAME_NL":"Eritrea","NAME_PL":"Erytrea","NAME_PT":"Eritreia","NAME_RU":"Эритрея","NAME_SV":"Eritrea","NAME_TR":"Eritre","NAME_UK":"Еритрея","NAME_UR":"اریتریا","NAME_VI":"Eritrea","NAME_ZH":"厄立特里亚","NAME_ZHT":"厄利垂亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[36.426758,12.376562,43.116699,18.005078],"geometry":{"type":"MultiPolygon","coordinates":[[[[36.524316,14.256836],[36.492285,14.544336],[36.470801,14.736475],[36.448145,14.940088],[36.426758,15.13208],[36.521777,15.250146],[36.566016,15.362109],[36.679199,15.726367],[36.724512,15.798877],[36.813477,15.993945],[36.825879,16.050293],[36.91377,16.296191],[36.905469,16.459521],[36.887793,16.624658],[36.935742,16.722363],[36.978711,16.800586],[36.975781,16.866553],[36.995215,17.020557],[37.008984,17.058887],[37.061523,17.061279],[37.169531,17.041406],[37.248828,17.056885],[37.34043,17.05708],[37.411035,17.061719],[37.45293,17.108691],[37.510156,17.288135],[37.547461,17.324121],[37.575977,17.33501],[37.656738,17.368262],[37.725977,17.420508],[37.782422,17.458008],[37.80332,17.465527],[37.862988,17.470264],[37.922559,17.492334],[37.950098,17.517676],[38.025293,17.537793],[38.098926,17.526465],[38.148535,17.548535],[38.181543,17.562842],[38.219043,17.563965],[38.253516,17.584766],[38.267285,17.616699],[38.289844,17.637012],[38.347363,17.683594],[38.37373,17.717334],[38.385547,17.75127],[38.397168,17.778369],[38.422461,17.823926],[38.522852,17.938525],[38.609473,18.005078],[38.911719,17.427148],[39.034473,17.085547],[39.142578,16.72915],[39.222559,16.193701],[39.298926,15.921094],[39.422266,15.78667],[39.506543,15.532129],[39.578809,15.52251],[39.63125,15.452539],[39.720801,15.213672],[39.785547,15.124854],[39.819434,15.20127],[39.815625,15.245312],[39.790332,15.318848],[39.813477,15.413574],[39.86377,15.470312],[39.97832,15.393115],[40.041016,15.334521],[40.057813,15.21709],[40.084082,15.151953],[40.204102,15.014111],[40.305273,14.974023],[40.436523,14.963965],[40.546289,14.933594],[40.634375,14.883008],[40.799316,14.743018],[41.176465,14.620312],[41.479688,14.243896],[41.658203,13.983057],[42.245117,13.587646],[42.346484,13.398096],[42.399316,13.212598],[42.522852,13.221484],[42.734473,13.018604],[42.796191,12.864258],[42.969531,12.80835],[42.999023,12.899512],[43.08291,12.824609],[43.116699,12.708594],[43.005664,12.662305],[42.883301,12.621289],[42.865918,12.622803],[42.825293,12.569336],[42.76748,12.422852],[42.703711,12.380322],[42.670117,12.376562],[42.479395,12.513623],[42.45,12.521338],[42.408594,12.494385],[42.378516,12.466406],[42.289941,12.570215],[42.225,12.661963],[42.134277,12.771436],[42.046582,12.820605],[41.952148,12.882324],[41.85957,13.025879],[41.765039,13.183936],[41.625,13.313232],[41.362891,13.499805],[41.122363,13.736133],[40.938574,13.983105],[40.820117,14.11167],[40.769531,14.144482],[40.524414,14.225195],[40.353125,14.338086],[40.221484,14.431152],[40.140625,14.456055],[40.062109,14.459131],[39.895117,14.440674],[39.756152,14.499023],[39.697949,14.499023],[39.604883,14.516064],[39.531836,14.536719],[39.446094,14.511865],[39.270117,14.470312],[39.198047,14.479395],[39.158594,14.5375],[39.135449,14.581885],[39.074219,14.628223],[39.023828,14.628223],[38.995703,14.586865],[38.812012,14.482324],[38.504395,14.424414],[38.431445,14.428613],[38.376953,14.47041],[38.221484,14.649658],[38.177051,14.678809],[38.141992,14.681494],[38.069922,14.702734],[38.002539,14.737109],[37.943457,14.810547],[37.88418,14.852295],[37.820312,14.708496],[37.708398,14.457227],[37.648438,14.322559],[37.571191,14.149072],[37.546777,14.143848],[37.507227,14.156396],[37.353711,14.372461],[37.257227,14.45376],[37.185156,14.445996],[37.132617,14.406055],[37.099414,14.333984],[37.063477,14.289258],[37.024512,14.271973],[36.940723,14.280566],[36.811914,14.315039],[36.679102,14.307568],[36.542383,14.258203],[36.524316,14.256836]]],[[[40.076465,16.082422],[40.110059,15.985742],[40.012402,16.022656],[39.996094,16.042676],[40.039062,16.080957],[40.048145,16.104492],[40.076465,16.082422]]],[[[40.141211,15.696143],[40.18252,15.64292],[40.211426,15.648145],[40.234082,15.665869],[40.250098,15.703467],[40.408203,15.629199],[40.399023,15.579883],[40.304688,15.577344],[40.195801,15.598145],[40.095117,15.590918],[39.975195,15.612451],[39.947461,15.696143],[40.023926,15.655615],[40.063477,15.665869],[40.070508,15.676611],[40.016309,15.733252],[39.939941,15.744531],[39.945215,15.789062],[39.979395,15.806592],[40.000488,15.828271],[39.956738,15.889404],[40.042578,15.875488],[40.096777,15.838477],[40.132422,15.795264],[40.141211,15.696143]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Equatorial Guinea","SOV_A3":"GNQ","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Equatorial Guinea","ADM0_A3":"GNQ","GEOU_DIF":0,"GEOUNIT":"Equatorial Guinea","GU_A3":"GNQ","SU_DIF":0,"SUBUNIT":"Equatorial Guinea","SU_A3":"GNQ","BRK_DIFF":0,"NAME":"Eq. Guinea","NAME_LONG":"Equatorial Guinea","BRK_A3":"GNQ","BRK_NAME":"Eq. Guinea","BRK_GROUP":null,"ABBREV":"Eq. G.","POSTAL":"GQ","FORMAL_EN":"Republic of Equatorial Guinea","FORMAL_FR":null,"NAME_CIAWF":"Equatorial Guinea","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Equatorial Guinea","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":8,"POP_EST":1355986,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":11026,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"EK","ISO_A2":"GQ","ISO_A2_EH":"GQ","ISO_A3":"GNQ","ISO_A3_EH":"GNQ","ISO_N3":"226","ISO_N3_EH":"226","UN_A3":"226","WB_A2":"GQ","WB_A3":"GNQ","WOE_ID":23424804,"WOE_ID_EH":23424804,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GNQ","ADM0_DIFF":null,"ADM0_TLC":"GNQ","ADM0_A3_US":"GNQ","ADM0_A3_FR":"GNQ","ADM0_A3_RU":"GNQ","ADM0_A3_ES":"GNQ","ADM0_A3_CN":"GNQ","ADM0_A3_TW":"GNQ","ADM0_A3_IN":"GNQ","ADM0_A3_NP":"GNQ","ADM0_A3_PK":"GNQ","ADM0_A3_DE":"GNQ","ADM0_A3_GB":"GNQ","ADM0_A3_BR":"GNQ","ADM0_A3_IL":"GNQ","ADM0_A3_PS":"GNQ","ADM0_A3_SA":"GNQ","ADM0_A3_EG":"GNQ","ADM0_A3_MA":"GNQ","ADM0_A3_PT":"GNQ","ADM0_A3_AR":"GNQ","ADM0_A3_JP":"GNQ","ADM0_A3_KO":"GNQ","ADM0_A3_VN":"GNQ","ADM0_A3_TR":"GNQ","ADM0_A3_ID":"GNQ","ADM0_A3_PL":"GNQ","ADM0_A3_GR":"GNQ","ADM0_A3_IT":"GNQ","ADM0_A3_NL":"GNQ","ADM0_A3_SE":"GNQ","ADM0_A3_BD":"GNQ","ADM0_A3_UA":"GNQ","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":10,"LONG_LEN":17,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":8.9902,"LABEL_Y":2.333,"NE_ID":1159320801,"WIKIDATAID":"Q983","NAME_AR":"غينيا الاستوائية","NAME_BN":"বিষুবীয় গিনি","NAME_DE":"Äquatorialguinea","NAME_EN":"Equatorial Guinea","NAME_ES":"Guinea Ecuatorial","NAME_FA":"گینه استوایی","NAME_FR":"Guinée équatoriale","NAME_EL":"Ισημερινή Γουινέα","NAME_HE":"גינאה המשוונית","NAME_HI":"भूमध्यरेखीय गिनी","NAME_HU":"Egyenlítői-Guinea","NAME_ID":"Guinea Khatulistiwa","NAME_IT":"Guinea Equatoriale","NAME_JA":"赤道ギニア","NAME_KO":"적도 기니","NAME_NL":"Equatoriaal-Guinea","NAME_PL":"Gwinea Równikowa","NAME_PT":"Guiné Equatorial","NAME_RU":"Экваториальная Гвинея","NAME_SV":"Ekvatorialguinea","NAME_TR":"Ekvator Ginesi","NAME_UK":"Екваторіальна Гвінея","NAME_UR":"استوائی گنی","NAME_VI":"Guinea Xích Đạo","NAME_ZH":"赤道几内亚","NAME_ZHT":"赤道幾內亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[8.434277,0.960107,11.335352,3.758301],"geometry":{"type":"MultiPolygon","coordinates":[[[[8.735742,3.758301],[8.760449,3.754346],[8.910059,3.758203],[8.950684,3.705322],[8.946094,3.627539],[8.792188,3.400391],[8.763477,3.304639],[8.704004,3.223633],[8.652344,3.21709],[8.474902,3.264648],[8.444922,3.293506],[8.434277,3.332422],[8.451758,3.4229],[8.464648,3.450586],[8.549805,3.467627],[8.577246,3.482373],[8.622754,3.57998],[8.637695,3.668848],[8.675879,3.735937],[8.735742,3.758301]]],[[[11.328711,2.167432],[11.330078,1.935889],[11.331152,1.740186],[11.332324,1.528369],[11.333594,1.307617],[11.334668,1.120752],[11.335352,0.999707],[11.130664,1.000391],[10.858887,1.00127],[10.587207,1.002148],[10.31543,1.003076],[10.178906,1.003564],[10.028516,1.004004],[9.979785,0.997705],[9.94668,0.967139],[9.906738,0.960107],[9.860352,0.98623],[9.803906,0.99873],[9.788672,1.025684],[9.760547,1.074707],[9.70459,1.07998],[9.676465,1.074707],[9.636133,1.04668],[9.59082,1.031982],[9.599414,1.054443],[9.509863,1.114795],[9.445312,1.120654],[9.385938,1.139258],[9.434082,1.296387],[9.494238,1.435303],[9.584277,1.540234],[9.632129,1.565527],[9.647656,1.617578],[9.718848,1.788672],[9.807031,1.92749],[9.779688,2.068213],[9.800781,2.304443],[9.826172,2.297803],[9.830371,2.275488],[9.836914,2.242383],[9.870117,2.213281],[9.979883,2.167773],[10.307031,2.167725],[10.502246,2.167627],[10.790918,2.167578],[11.096582,2.16748],[11.328711,2.167432]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"El Salvador","SOV_A3":"SLV","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"El Salvador","ADM0_A3":"SLV","GEOU_DIF":0,"GEOUNIT":"El Salvador","GU_A3":"SLV","SU_DIF":0,"SUBUNIT":"El Salvador","SU_A3":"SLV","BRK_DIFF":0,"NAME":"El Salvador","NAME_LONG":"El Salvador","BRK_A3":"SLV","BRK_NAME":"El Salvador","BRK_GROUP":null,"ABBREV":"El. S.","POSTAL":"SV","FORMAL_EN":"Republic of El Salvador","FORMAL_FR":null,"NAME_CIAWF":"El Salvador","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"El Salvador","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":6,"MAPCOLOR13":8,"POP_EST":6453553,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":27022,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"ES","ISO_A2":"SV","ISO_A2_EH":"SV","ISO_A3":"SLV","ISO_A3_EH":"SLV","ISO_N3":"222","ISO_N3_EH":"222","UN_A3":"222","WB_A2":"SV","WB_A3":"SLV","WOE_ID":23424807,"WOE_ID_EH":23424807,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"SLV","ADM0_DIFF":null,"ADM0_TLC":"SLV","ADM0_A3_US":"SLV","ADM0_A3_FR":"SLV","ADM0_A3_RU":"SLV","ADM0_A3_ES":"SLV","ADM0_A3_CN":"SLV","ADM0_A3_TW":"SLV","ADM0_A3_IN":"SLV","ADM0_A3_NP":"SLV","ADM0_A3_PK":"SLV","ADM0_A3_DE":"SLV","ADM0_A3_GB":"SLV","ADM0_A3_BR":"SLV","ADM0_A3_IL":"SLV","ADM0_A3_PS":"SLV","ADM0_A3_SA":"SLV","ADM0_A3_EG":"SLV","ADM0_A3_MA":"SLV","ADM0_A3_PT":"SLV","ADM0_A3_AR":"SLV","ADM0_A3_JP":"SLV","ADM0_A3_KO":"SLV","ADM0_A3_VN":"SLV","ADM0_A3_TR":"SLV","ADM0_A3_ID":"SLV","ADM0_A3_PL":"SLV","ADM0_A3_GR":"SLV","ADM0_A3_IT":"SLV","ADM0_A3_NL":"SLV","ADM0_A3_SE":"SLV","ADM0_A3_BD":"SLV","ADM0_A3_UA":"SLV","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-88.890124,"LABEL_Y":13.685371,"NE_ID":1159321253,"WIKIDATAID":"Q792","NAME_AR":"السلفادور","NAME_BN":"এল সালভাদোর","NAME_DE":"El Salvador","NAME_EN":"El Salvador","NAME_ES":"El Salvador","NAME_FA":"السالوادور","NAME_FR":"Salvador","NAME_EL":"Ελ Σαλβαδόρ","NAME_HE":"אל סלוודור","NAME_HI":"अल साल्वाडोर","NAME_HU":"Salvador","NAME_ID":"El Salvador","NAME_IT":"El Salvador","NAME_JA":"エルサルバドル","NAME_KO":"엘살바도르","NAME_NL":"El Salvador","NAME_PL":"Salwador","NAME_PT":"El Salvador","NAME_RU":"Сальвадор","NAME_SV":"El Salvador","NAME_TR":"El Salvador","NAME_UK":"Сальвадор","NAME_UR":"ایل سیلواڈور","NAME_VI":"El Salvador","NAME_ZH":"萨尔瓦多","NAME_ZHT":"薩爾瓦多","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-90.105908,13.164014,-87.715332,14.431104],"geometry":{"type":"Polygon","coordinates":[[[-89.362598,14.416016],[-89.337256,14.411377],[-89.170117,14.360303],[-89.120508,14.370215],[-89.057129,14.32915],[-89.026855,14.296973],[-89.000195,14.252734],[-88.868311,14.163672],[-88.845947,14.124756],[-88.747363,14.072266],[-88.707617,14.03208],[-88.665625,14.015527],[-88.583154,14.000146],[-88.512549,13.978955],[-88.504346,13.964209],[-88.497656,13.904541],[-88.482666,13.854248],[-88.449121,13.850977],[-88.408496,13.875391],[-88.276221,13.942676],[-88.151025,13.987354],[-88.080469,13.960596],[-88.038721,13.904639],[-87.991016,13.879639],[-87.891992,13.894971],[-87.802246,13.88999],[-87.731445,13.841064],[-87.715332,13.812695],[-87.758545,13.649951],[-87.774219,13.580322],[-87.781885,13.521387],[-87.756445,13.506006],[-87.731641,13.483105],[-87.737012,13.451367],[-87.814209,13.39917],[-87.838379,13.385791],[-87.820703,13.285156],[-87.878076,13.224414],[-87.930859,13.180664],[-88.023438,13.16875],[-88.180664,13.164014],[-88.417139,13.213525],[-88.591553,13.281055],[-88.685645,13.281494],[-88.655859,13.25918],[-88.581543,13.244971],[-88.483887,13.197168],[-88.512012,13.183936],[-88.867041,13.283252],[-89.277637,13.478076],[-89.523242,13.509131],[-89.804199,13.560107],[-89.970459,13.683154],[-90.095215,13.736523],[-90.105908,13.783008],[-90.104736,13.834766],[-90.048145,13.904053],[-89.942676,13.997363],[-89.872705,14.045605],[-89.839941,14.055078],[-89.793701,14.050098],[-89.749365,14.077002],[-89.711133,14.141309],[-89.671289,14.182715],[-89.570264,14.224658],[-89.547168,14.24126],[-89.555029,14.277246],[-89.576953,14.34707],[-89.573633,14.390088],[-89.540527,14.409912],[-89.500879,14.41377],[-89.418848,14.431104],[-89.383252,14.427637],[-89.362598,14.416016]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Egypt","SOV_A3":"EGY","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Egypt","ADM0_A3":"EGY","GEOU_DIF":0,"GEOUNIT":"Egypt","GU_A3":"EGY","SU_DIF":0,"SUBUNIT":"Egypt","SU_A3":"EGY","BRK_DIFF":0,"NAME":"Egypt","NAME_LONG":"Egypt","BRK_A3":"EGY","BRK_NAME":"Egypt","BRK_GROUP":null,"ABBREV":"Egypt","POSTAL":"EG","FORMAL_EN":"Arab Republic of Egypt","FORMAL_FR":null,"NAME_CIAWF":"Egypt","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Egypt, Arab Rep.","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":6,"MAPCOLOR9":7,"MAPCOLOR13":2,"POP_EST":100388073,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":303092,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"4. Lower middle income","FIPS_10":"EG","ISO_A2":"EG","ISO_A2_EH":"EG","ISO_A3":"EGY","ISO_A3_EH":"EGY","ISO_N3":"818","ISO_N3_EH":"818","UN_A3":"818","WB_A2":"EG","WB_A3":"EGY","WOE_ID":23424802,"WOE_ID_EH":23424802,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"EGY","ADM0_DIFF":null,"ADM0_TLC":"EGY","ADM0_A3_US":"EGY","ADM0_A3_FR":"EGY","ADM0_A3_RU":"EGY","ADM0_A3_ES":"EGY","ADM0_A3_CN":"EGY","ADM0_A3_TW":"EGY","ADM0_A3_IN":"EGY","ADM0_A3_NP":"EGY","ADM0_A3_PK":"EGY","ADM0_A3_DE":"EGY","ADM0_A3_GB":"EGY","ADM0_A3_BR":"EGY","ADM0_A3_IL":"EGY","ADM0_A3_PS":"EGY","ADM0_A3_SA":"EGY","ADM0_A3_EG":"EGY","ADM0_A3_MA":"EGY","ADM0_A3_PT":"EGY","ADM0_A3_AR":"EGY","ADM0_A3_JP":"EGY","ADM0_A3_KO":"EGY","ADM0_A3_VN":"EGY","ADM0_A3_TR":"EGY","ADM0_A3_ID":"EGY","ADM0_A3_PL":"EGY","ADM0_A3_GR":"EGY","ADM0_A3_IT":"EGY","ADM0_A3_NL":"EGY","ADM0_A3_SE":"EGY","ADM0_A3_BD":"EGY","ADM0_A3_UA":"EGY","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Northern Africa","REGION_WB":"Middle East & North Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":29.445837,"LABEL_Y":26.186173,"NE_ID":1159320575,"WIKIDATAID":"Q79","NAME_AR":"مصر","NAME_BN":"মিশর","NAME_DE":"Ägypten","NAME_EN":"Egypt","NAME_ES":"Egipto","NAME_FA":"مصر","NAME_FR":"Égypte","NAME_EL":"Αίγυπτος","NAME_HE":"מצרים","NAME_HI":"मिस्र","NAME_HU":"Egyiptom","NAME_ID":"Mesir","NAME_IT":"Egitto","NAME_JA":"エジプト","NAME_KO":"이집트","NAME_NL":"Egypte","NAME_PL":"Egipt","NAME_PT":"Egito","NAME_RU":"Египет","NAME_SV":"Egypten","NAME_TR":"Mısır","NAME_UK":"Єгипет","NAME_UR":"مصر","NAME_VI":"Ai Cập","NAME_ZH":"埃及","NAME_ZHT":"埃及","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[24.703223,21.994873,36.871387,31.65498],"geometry":{"type":"Polygon","coordinates":[[[36.871387,21.996729],[36.543262,21.996631],[36.215234,21.996582],[35.887012,21.996533],[35.558984,21.996484],[35.230859,21.996436],[34.902734,21.996387],[34.574609,21.996338],[34.246484,21.996289],[33.918457,21.99624],[33.590332,21.996191],[33.262207,21.996143],[32.934082,21.996094],[32.606055,21.995996],[32.277832,21.995996],[31.949805,21.995898],[31.62168,21.99585],[31.434473,21.99585],[31.466406,22.084668],[31.486133,22.147803],[31.464258,22.191504],[31.400293,22.202441],[31.358496,22.188623],[31.260645,22.002295],[31.20918,21.994873],[31.092676,21.994873],[30.710645,21.994922],[30.328613,21.99502],[29.94668,21.995117],[29.564551,21.995117],[29.18252,21.995215],[28.800586,21.995264],[28.418555,21.995312],[28.036426,21.995361],[27.654492,21.995459],[27.272461,21.995508],[26.89043,21.995557],[26.508398,21.995605],[26.126367,21.995654],[25.744336,21.995752],[25.362305,21.995801],[24.980273,21.99585],[24.980273,22.22041],[24.980273,22.444971],[24.980273,22.669531],[24.980273,22.894092],[24.980273,23.118652],[24.980273,23.343213],[24.980273,23.567822],[24.980273,23.792383],[24.980273,24.016943],[24.980273,24.241504],[24.980273,24.466064],[24.980273,24.690625],[24.980273,24.915186],[24.980273,25.139746],[24.980273,25.364307],[24.980273,25.588867],[24.980273,25.813428],[24.980273,26.037988],[24.980273,26.262549],[24.980273,26.487109],[24.980273,26.71167],[24.980273,26.93623],[24.980273,27.16084],[24.980273,27.3854],[24.980273,27.609961],[24.980273,27.834521],[24.980273,28.059082],[24.980273,28.283643],[24.980273,28.508203],[24.980273,28.732764],[24.980273,28.957324],[24.980273,29.181885],[24.97168,29.223828],[24.916113,29.37627],[24.865918,29.570264],[24.81084,29.80874],[24.803711,29.886035],[24.711621,30.131543],[24.703223,30.201074],[24.726465,30.250586],[24.877539,30.45752],[24.923047,30.558008],[24.961426,30.678516],[24.973926,30.776562],[24.929492,30.926465],[24.877539,31.06123],[24.859961,31.19917],[24.852734,31.334814],[24.92998,31.42749],[25.022656,31.514014],[25.057227,31.567187],[25.112012,31.626904],[25.150488,31.65498],[25.225488,31.533789],[25.382227,31.512793],[25.893262,31.620898],[26.457324,31.512109],[26.768652,31.470361],[27.248047,31.377881],[27.540039,31.212695],[27.620117,31.191748],[27.82998,31.19502],[27.967578,31.097412],[28.514844,31.050439],[28.806934,30.942676],[28.972754,30.856738],[29.07207,30.830273],[29.159961,30.83457],[29.278906,30.866943],[29.428516,30.927441],[29.591602,31.011523],[29.929785,31.22749],[30.049414,31.26543],[30.127539,31.255664],[30.222656,31.258398],[30.262305,31.316846],[30.312305,31.357031],[30.34375,31.402734],[30.395117,31.457617],[30.570996,31.472998],[30.923535,31.566846],[30.88418,31.522363],[30.562988,31.416992],[30.700488,31.403857],[30.841406,31.439893],[31.001758,31.462793],[31.030859,31.507568],[31.051953,31.591553],[31.08291,31.60332],[31.193945,31.587598],[31.524414,31.458252],[31.606543,31.455762],[31.839258,31.526318],[31.888965,31.541406],[31.964258,31.5021],[32.136035,31.341064],[32.076074,31.344482],[31.892188,31.482471],[31.875879,31.413721],[31.771094,31.292578],[31.902051,31.240186],[32.008496,31.220508],[32.065625,31.152979],[32.101758,31.092822],[32.206543,31.119043],[32.281836,31.200879],[32.242773,31.246533],[32.216211,31.29375],[32.250586,31.294922],[32.323535,31.256055],[32.532813,31.100732],[32.60332,31.06875],[32.68457,31.074023],[32.854492,31.117725],[32.901563,31.110937],[33.129883,31.168164],[33.156738,31.126221],[33.194336,31.084521],[33.37793,31.130957],[33.666504,31.13042],[33.902539,31.180957],[34.17627,31.303906],[34.198145,31.322607],[34.2125,31.292285],[34.245313,31.208301],[34.328516,30.99502],[34.400977,30.827832],[34.489941,30.596289],[34.517773,30.507373],[34.529688,30.446045],[34.658594,30.191455],[34.735059,29.982031],[34.791113,29.812109],[34.869824,29.563916],[34.904297,29.477344],[34.848535,29.432129],[34.736426,29.270605],[34.617188,28.75791],[34.446484,28.357324],[34.427148,28.106494],[34.399707,28.016016],[34.318555,27.888965],[34.220117,27.764307],[34.045117,27.828857],[33.760254,28.047656],[33.594141,28.255566],[33.416113,28.389844],[33.247754,28.567725],[33.201953,28.695703],[33.203711,28.777783],[33.130176,28.978271],[33.075781,29.073047],[32.870605,29.28623],[32.811719,29.4],[32.766699,29.45],[32.721484,29.521777],[32.647168,29.798437],[32.565723,29.973975],[32.473047,29.925439],[32.489453,29.851514],[32.408594,29.749316],[32.359766,29.630664],[32.397266,29.533789],[32.565039,29.386328],[32.599023,29.321924],[32.638086,29.182178],[32.631836,28.992236],[32.658887,28.927734],[32.784473,28.786621],[32.829492,28.702881],[32.856543,28.630615],[32.898242,28.565234],[33.022852,28.442285],[33.202148,28.208301],[33.372266,28.050586],[33.494922,27.974463],[33.54707,27.898145],[33.558789,27.701221],[33.549805,27.607373],[33.657422,27.430566],[33.697266,27.341113],[33.80166,27.268164],[33.849316,27.184912],[33.893066,27.049463],[33.959082,26.649023],[34.049512,26.550732],[34.329297,26.024365],[34.565137,25.691162],[34.679297,25.442529],[34.853223,25.139795],[35.194141,24.475146],[35.39707,24.269971],[35.477832,24.154785],[35.624707,24.066016],[35.783887,23.937793],[35.632031,23.950342],[35.593848,23.942578],[35.54082,23.920654],[35.515234,23.842871],[35.504395,23.779297],[35.522754,23.442529],[35.564355,23.271094],[35.697852,22.946191],[35.797363,22.84873],[35.845801,22.785693],[35.913379,22.739648],[36.229688,22.628809],[36.414551,22.394189],[36.829688,22.097656],[36.87041,22.015771],[36.871387,21.996729]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Ecuador","SOV_A3":"ECU","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Ecuador","ADM0_A3":"ECU","GEOU_DIF":0,"GEOUNIT":"Ecuador","GU_A3":"ECU","SU_DIF":0,"SUBUNIT":"Ecuador","SU_A3":"ECU","BRK_DIFF":0,"NAME":"Ecuador","NAME_LONG":"Ecuador","BRK_A3":"ECU","BRK_NAME":"Ecuador","BRK_GROUP":null,"ABBREV":"Ecu.","POSTAL":"EC","FORMAL_EN":"Republic of Ecuador","FORMAL_FR":null,"NAME_CIAWF":"Ecuador","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Ecuador","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":5,"MAPCOLOR9":2,"MAPCOLOR13":12,"POP_EST":17373662,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":107435,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"EC","ISO_A2":"EC","ISO_A2_EH":"EC","ISO_A3":"ECU","ISO_A3_EH":"ECU","ISO_N3":"218","ISO_N3_EH":"218","UN_A3":"218","WB_A2":"EC","WB_A3":"ECU","WOE_ID":23424801,"WOE_ID_EH":23424801,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ECU","ADM0_DIFF":null,"ADM0_TLC":"ECU","ADM0_A3_US":"ECU","ADM0_A3_FR":"ECU","ADM0_A3_RU":"ECU","ADM0_A3_ES":"ECU","ADM0_A3_CN":"ECU","ADM0_A3_TW":"ECU","ADM0_A3_IN":"ECU","ADM0_A3_NP":"ECU","ADM0_A3_PK":"ECU","ADM0_A3_DE":"ECU","ADM0_A3_GB":"ECU","ADM0_A3_BR":"ECU","ADM0_A3_IL":"ECU","ADM0_A3_PS":"ECU","ADM0_A3_SA":"ECU","ADM0_A3_EG":"ECU","ADM0_A3_MA":"ECU","ADM0_A3_PT":"ECU","ADM0_A3_AR":"ECU","ADM0_A3_JP":"ECU","ADM0_A3_KO":"ECU","ADM0_A3_VN":"ECU","ADM0_A3_TR":"ECU","ADM0_A3_ID":"ECU","ADM0_A3_PL":"ECU","ADM0_A3_GR":"ECU","ADM0_A3_IT":"ECU","ADM0_A3_NL":"ECU","ADM0_A3_SE":"ECU","ADM0_A3_BD":"ECU","ADM0_A3_UA":"ECU","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-78.188375,"LABEL_Y":-1.259076,"NE_ID":1159320567,"WIKIDATAID":"Q736","NAME_AR":"الإكوادور","NAME_BN":"ইকুয়েডর","NAME_DE":"Ecuador","NAME_EN":"Ecuador","NAME_ES":"Ecuador","NAME_FA":"اکوادور","NAME_FR":"Équateur","NAME_EL":"Εκουαδόρ","NAME_HE":"אקוודור","NAME_HI":"ईक्वाडोर","NAME_HU":"Ecuador","NAME_ID":"Ekuador","NAME_IT":"Ecuador","NAME_JA":"エクアドル","NAME_KO":"에콰도르","NAME_NL":"Ecuador","NAME_PL":"Ekwador","NAME_PT":"Equador","NAME_RU":"Эквадор","NAME_SV":"Ecuador","NAME_TR":"Ekvador","NAME_UK":"Еквадор","NAME_UR":"ایکواڈور","NAME_VI":"Ecuador","NAME_ZH":"厄瓜多尔","NAME_ZHT":"厄瓜多爾","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-91.65415,-4.990625,-75.249609,1.455371],"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.284473,-0.106543],[-75.340479,-0.142188],[-75.398389,-0.145996],[-75.475977,-0.157129],[-75.58374,-0.122852],[-75.62627,-0.122852],[-75.632031,-0.157617],[-75.560596,-0.200098],[-75.491064,-0.24834],[-75.465967,-0.321777],[-75.424707,-0.408887],[-75.325244,-0.506543],[-75.263232,-0.555371],[-75.259375,-0.590137],[-75.278711,-0.653906],[-75.283594,-0.707129],[-75.249609,-0.951855],[-75.272412,-0.966797],[-75.30918,-0.968066],[-75.348193,-0.966797],[-75.380127,-0.940234],[-75.408057,-0.924316],[-75.42041,-0.962207],[-75.44917,-1.071191],[-75.513867,-1.316309],[-75.570557,-1.53125],[-75.64165,-1.607324],[-75.744531,-1.728125],[-75.885449,-1.893457],[-76.089795,-2.133105],[-76.240918,-2.243945],[-76.360156,-2.331348],[-76.499365,-2.432324],[-76.679102,-2.562598],[-76.880762,-2.635938],[-77.161475,-2.737695],[-77.360059,-2.809668],[-77.506494,-2.859961],[-77.658984,-2.912402],[-77.860596,-2.981641],[-77.938477,-3.046973],[-78.06792,-3.206836],[-78.128223,-3.283887],[-78.183301,-3.350195],[-78.194629,-3.380469],[-78.187451,-3.399805],[-78.160986,-3.432129],[-78.158496,-3.465137],[-78.194873,-3.48584],[-78.226318,-3.48916],[-78.240381,-3.472559],[-78.250732,-3.436133],[-78.28418,-3.399023],[-78.323047,-3.388281],[-78.345361,-3.397363],[-78.347266,-3.43125],[-78.398047,-3.594824],[-78.399951,-3.674316],[-78.421436,-3.705762],[-78.419775,-3.776855],[-78.471045,-3.843066],[-78.493457,-3.902051],[-78.509082,-3.952148],[-78.550439,-3.986914],[-78.565137,-4.041602],[-78.603369,-4.157324],[-78.647998,-4.248145],[-78.679395,-4.325879],[-78.685156,-4.383984],[-78.66123,-4.425098],[-78.65293,-4.458203],[-78.674463,-4.517676],[-78.686035,-4.562402],[-78.743066,-4.592676],[-78.861523,-4.665039],[-78.907617,-4.714453],[-78.925781,-4.770703],[-78.914209,-4.818652],[-78.919189,-4.858398],[-78.975391,-4.873242],[-78.995264,-4.908008],[-79.033301,-4.969141],[-79.07627,-4.990625],[-79.18667,-4.958203],[-79.268115,-4.957617],[-79.330957,-4.927832],[-79.399414,-4.840039],[-79.455762,-4.766211],[-79.501904,-4.670605],[-79.516162,-4.53916],[-79.577686,-4.500586],[-79.638525,-4.454883],[-79.710986,-4.467578],[-79.797266,-4.476367],[-79.845117,-4.445898],[-79.962891,-4.390332],[-80.063525,-4.327539],[-80.139551,-4.296094],[-80.197461,-4.311035],[-80.232178,-4.349023],[-80.293359,-4.416797],[-80.383496,-4.463672],[-80.42417,-4.461426],[-80.478564,-4.430078],[-80.488477,-4.393652],[-80.443848,-4.33584],[-80.352881,-4.208496],[-80.45376,-4.205176],[-80.488477,-4.165527],[-80.493457,-4.119141],[-80.51001,-4.069531],[-80.490137,-4.010059],[-80.437207,-3.978613],[-80.357861,-4.003418],[-80.303271,-4.005078],[-80.266895,-3.948828],[-80.230518,-3.924023],[-80.194141,-3.905859],[-80.179248,-3.877734],[-80.217578,-3.787695],[-80.228857,-3.738867],[-80.217285,-3.710742],[-80.218945,-3.654492],[-80.220605,-3.613184],[-80.24375,-3.576758],[-80.24541,-3.522168],[-80.265234,-3.49248],[-80.271875,-3.461035],[-80.273535,-3.424609],[-80.29834,-3.406445],[-80.324658,-3.387891],[-80.303125,-3.374805],[-80.159863,-3.324316],[-80.100342,-3.274023],[-80.02666,-3.228125],[-79.96333,-3.157715],[-79.921582,-3.090137],[-79.822705,-2.776953],[-79.729883,-2.579102],[-79.745508,-2.484668],[-79.822412,-2.356543],[-79.839746,-2.167871],[-79.832617,-2.110547],[-79.842139,-2.067383],[-79.893408,-2.145703],[-79.880322,-2.423633],[-79.925586,-2.548535],[-79.989014,-2.578711],[-80.030176,-2.556738],[-80.006641,-2.353809],[-80.053076,-2.390723],[-80.127148,-2.528418],[-80.248633,-2.630566],[-80.255273,-2.664648],[-80.284717,-2.706738],[-80.378564,-2.667969],[-80.450098,-2.625977],[-80.684863,-2.396875],[-80.839062,-2.349023],[-80.932178,-2.269141],[-80.951611,-2.235449],[-80.962793,-2.189258],[-80.867627,-2.141211],[-80.770361,-2.07666],[-80.760596,-1.93457],[-80.763135,-1.822949],[-80.83501,-1.632422],[-80.801416,-1.383398],[-80.82002,-1.28584],[-80.902393,-1.078906],[-80.841406,-0.974707],[-80.623682,-0.89873],[-80.553906,-0.847949],[-80.505078,-0.683789],[-80.455469,-0.585449],[-80.358398,-0.625098],[-80.282373,-0.620508],[-80.384766,-0.583984],[-80.468311,-0.436035],[-80.482275,-0.368262],[-80.321289,-0.16582],[-80.237012,-0.113086],[-80.133398,-0.006055],[-80.046143,0.155371],[-80.025,0.410156],[-80.061035,0.592285],[-80.088281,0.784766],[-80.035937,0.83457],[-79.903516,0.860205],[-79.79585,0.922266],[-79.741211,0.979785],[-79.613184,0.971143],[-79.465381,1.060059],[-79.229053,1.10459],[-78.899658,1.20625],[-78.827051,1.295947],[-78.859668,1.455371],[-78.828857,1.434668],[-78.737109,1.358691],[-78.681641,1.283447],[-78.587646,1.23667],[-78.511523,1.198828],[-78.312109,1.046094],[-78.180664,0.968555],[-78.037012,0.89873],[-77.829541,0.825391],[-77.702881,0.837842],[-77.673193,0.782227],[-77.648633,0.723633],[-77.601318,0.689502],[-77.526123,0.660352],[-77.481396,0.651172],[-77.467676,0.636523],[-77.422754,0.424854],[-77.396338,0.393896],[-77.292676,0.3604],[-77.165723,0.347754],[-77.114111,0.355078],[-77.002441,0.29624],[-76.920117,0.268506],[-76.829346,0.247754],[-76.767725,0.24165],[-76.739307,0.25083],[-76.729004,0.272119],[-76.678516,0.268164],[-76.603027,0.240967],[-76.494629,0.235449],[-76.427295,0.26123],[-76.417969,0.303906],[-76.413379,0.378857],[-76.388184,0.40498],[-76.311035,0.448486],[-76.270605,0.439404],[-76.06792,0.345557],[-76.026172,0.313086],[-75.974854,0.247754],[-75.879785,0.150977],[-75.77666,0.089258],[-75.617334,0.062891],[-75.463965,-0.038428],[-75.284473,-0.106543]]],[[[-80.131592,-2.973145],[-80.150684,-3.011719],[-80.245703,-3.008301],[-80.272949,-2.995898],[-80.272168,-2.951758],[-80.249805,-2.811914],[-80.223682,-2.753125],[-80.145703,-2.696289],[-80.080762,-2.668848],[-79.997266,-2.673828],[-79.909033,-2.725586],[-80.013232,-2.819531],[-80.071191,-2.833789],[-80.093408,-2.845898],[-80.131592,-2.973145]]],[[[-78.909229,1.252783],[-78.965625,1.245361],[-78.991699,1.293213],[-78.923242,1.348926],[-78.899805,1.359766],[-78.909229,1.252783]]],[[[-90.334863,-0.771582],[-90.387109,-0.77334],[-90.542139,-0.676465],[-90.531689,-0.581445],[-90.469727,-0.517383],[-90.269385,-0.484668],[-90.185303,-0.544824],[-90.192725,-0.658789],[-90.261084,-0.741992],[-90.31543,-0.757227],[-90.334863,-0.771582]]],[[[-89.418896,-0.911035],[-89.536621,-0.952344],[-89.577295,-0.933789],[-89.602637,-0.913477],[-89.608594,-0.888574],[-89.543457,-0.826855],[-89.479932,-0.793359],[-89.423145,-0.722266],[-89.318408,-0.680078],[-89.287842,-0.689844],[-89.267432,-0.70459],[-89.259375,-0.728418],[-89.294873,-0.785938],[-89.35835,-0.826074],[-89.418896,-0.911035]]],[[[-91.425977,-0.46084],[-91.526367,-0.478223],[-91.610742,-0.443945],[-91.646582,-0.39082],[-91.65415,-0.310938],[-91.64668,-0.284473],[-91.460156,-0.255664],[-91.399365,-0.322461],[-91.399951,-0.420898],[-91.425977,-0.46084]]],[[[-90.423926,-1.339941],[-90.464404,-1.341992],[-90.519531,-1.299121],[-90.477197,-1.220996],[-90.431982,-1.239844],[-90.39873,-1.262305],[-90.37915,-1.292285],[-90.423926,-1.339941]]],[[[-91.272168,0.025146],[-91.210059,-0.039307],[-91.176221,-0.223047],[-90.975537,-0.416895],[-90.950635,-0.525195],[-90.968457,-0.575586],[-90.958936,-0.595313],[-90.862549,-0.671777],[-90.799658,-0.752051],[-90.905518,-0.940527],[-91.131055,-1.019629],[-91.371533,-1.016992],[-91.419043,-0.99668],[-91.483545,-0.924609],[-91.49541,-0.860938],[-91.458301,-0.799512],[-91.334082,-0.70625],[-91.144678,-0.622852],[-91.120947,-0.559082],[-91.197021,-0.496973],[-91.249512,-0.373633],[-91.369189,-0.287207],[-91.428857,-0.023389],[-91.468701,-0.010303],[-91.55,-0.04668],[-91.590088,-0.014795],[-91.596826,0.0021],[-91.50918,0.062256],[-91.491016,0.105176],[-91.361377,0.12583],[-91.305762,0.091406],[-91.272168,0.025146]]],[[[-90.573926,-0.333984],[-90.620459,-0.364258],[-90.809033,-0.329395],[-90.867773,-0.271387],[-90.820361,-0.192188],[-90.780371,-0.160449],[-90.667529,-0.189844],[-90.55332,-0.278418],[-90.573926,-0.333984]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Dominican Republic","SOV_A3":"DOM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Dominican Republic","ADM0_A3":"DOM","GEOU_DIF":0,"GEOUNIT":"Dominican Republic","GU_A3":"DOM","SU_DIF":0,"SUBUNIT":"Dominican Republic","SU_A3":"DOM","BRK_DIFF":0,"NAME":"Dominican Rep.","NAME_LONG":"Dominican Republic","BRK_A3":"DOM","BRK_NAME":"Dominican Rep.","BRK_GROUP":null,"ABBREV":"Dom. Rep.","POSTAL":"DO","FORMAL_EN":"Dominican Republic","FORMAL_FR":null,"NAME_CIAWF":"Dominican Republic","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Dominican Republic","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":7,"POP_EST":10738958,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":88941,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"DR","ISO_A2":"DO","ISO_A2_EH":"DO","ISO_A3":"DOM","ISO_A3_EH":"DOM","ISO_N3":"214","ISO_N3_EH":"214","UN_A3":"214","WB_A2":"DO","WB_A3":"DOM","WOE_ID":23424800,"WOE_ID_EH":23424800,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"DOM","ADM0_DIFF":null,"ADM0_TLC":"DOM","ADM0_A3_US":"DOM","ADM0_A3_FR":"DOM","ADM0_A3_RU":"DOM","ADM0_A3_ES":"DOM","ADM0_A3_CN":"DOM","ADM0_A3_TW":"DOM","ADM0_A3_IN":"DOM","ADM0_A3_NP":"DOM","ADM0_A3_PK":"DOM","ADM0_A3_DE":"DOM","ADM0_A3_GB":"DOM","ADM0_A3_BR":"DOM","ADM0_A3_IL":"DOM","ADM0_A3_PS":"DOM","ADM0_A3_SA":"DOM","ADM0_A3_EG":"DOM","ADM0_A3_MA":"DOM","ADM0_A3_PT":"DOM","ADM0_A3_AR":"DOM","ADM0_A3_JP":"DOM","ADM0_A3_KO":"DOM","ADM0_A3_VN":"DOM","ADM0_A3_TR":"DOM","ADM0_A3_ID":"DOM","ADM0_A3_PL":"DOM","ADM0_A3_GR":"DOM","ADM0_A3_IT":"DOM","ADM0_A3_NL":"DOM","ADM0_A3_SE":"DOM","ADM0_A3_BD":"DOM","ADM0_A3_UA":"DOM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":14,"LONG_LEN":18,"ABBREV_LEN":9,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":-70.653998,"LABEL_Y":19.104137,"NE_ID":1159320563,"WIKIDATAID":"Q786","NAME_AR":"جمهورية الدومينيكان","NAME_BN":"ডোমিনিকান প্রজাতন্ত্র","NAME_DE":"Dominikanische Republik","NAME_EN":"Dominican Republic","NAME_ES":"República Dominicana","NAME_FA":"جمهوری دومینیکن","NAME_FR":"République dominicaine","NAME_EL":"Δομινικανή Δημοκρατία","NAME_HE":"הרפובליקה הדומיניקנית","NAME_HI":"डोमिनिकन गणराज्य","NAME_HU":"Dominikai Köztársaság","NAME_ID":"Republik Dominika","NAME_IT":"Repubblica Dominicana","NAME_JA":"ドミニカ共和国","NAME_KO":"도미니카 공화국","NAME_NL":"Dominicaanse Republiek","NAME_PL":"Dominikana","NAME_PT":"República Dominicana","NAME_RU":"Доминиканская Республика","NAME_SV":"Dominikanska republiken","NAME_TR":"Dominik Cumhuriyeti","NAME_UK":"Домініканська Республіка","NAME_UR":"جمہوریہ ڈومینیکن","NAME_VI":"Cộng hòa Dominica","NAME_ZH":"多米尼加","NAME_ZHT":"多明尼加","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-72.000391,17.635596,-68.33916,19.913965],"geometry":{"type":"Polygon","coordinates":[[[-71.768311,18.03916],[-71.76377,18.203955],[-71.737256,18.270801],[-71.761914,18.341309],[-71.872559,18.416211],[-71.940381,18.512598],[-72.000391,18.5979],[-71.986865,18.610352],[-71.866504,18.61416],[-71.824219,18.645508],[-71.743213,18.73291],[-71.727051,18.803223],[-71.733643,18.856396],[-71.786377,18.92002],[-71.807129,18.987012],[-71.742041,19.045508],[-71.657031,19.130762],[-71.645312,19.163525],[-71.647217,19.195947],[-71.746484,19.28584],[-71.753174,19.324463],[-71.706934,19.421973],[-71.711475,19.486572],[-71.757422,19.688184],[-71.779248,19.718164],[-71.735107,19.735107],[-71.706055,19.795166],[-71.667383,19.848633],[-71.615967,19.877441],[-71.557764,19.895361],[-71.441699,19.893994],[-71.281348,19.847363],[-71.235937,19.848145],[-71.081934,19.890479],[-70.95415,19.913965],[-70.833887,19.887256],[-70.785254,19.850879],[-70.685937,19.793262],[-70.636182,19.775635],[-70.479346,19.776953],[-70.436426,19.77124],[-70.304736,19.676074],[-70.193848,19.638037],[-70.129443,19.636133],[-70.014062,19.672949],[-69.956836,19.671875],[-69.891211,19.589746],[-69.87832,19.473291],[-69.823437,19.367139],[-69.739404,19.299219],[-69.324951,19.327734],[-69.232471,19.271826],[-69.264258,19.225684],[-69.322754,19.201074],[-69.519727,19.212012],[-69.605957,19.206494],[-69.623242,19.160498],[-69.623633,19.117822],[-69.50835,19.107617],[-69.395264,19.086084],[-69.280225,19.051904],[-69.163037,19.028467],[-69.031299,19.013184],[-68.901367,18.988477],[-68.684766,18.904785],[-68.44541,18.714453],[-68.381396,18.671143],[-68.33916,18.611523],[-68.359277,18.538086],[-68.444824,18.417725],[-68.493213,18.379004],[-68.56377,18.355469],[-68.612207,18.30625],[-68.658838,18.222021],[-68.687402,18.214941],[-68.720996,18.218408],[-68.778467,18.266113],[-68.819531,18.339307],[-68.934961,18.408008],[-69.072266,18.399219],[-69.274512,18.439844],[-69.396973,18.420117],[-69.519434,18.415674],[-69.644727,18.436377],[-69.770654,18.443555],[-69.896387,18.417725],[-70.018311,18.373633],[-70.06333,18.345654],[-70.141602,18.2771],[-70.183105,18.251758],[-70.479932,18.217285],[-70.56543,18.267578],[-70.644678,18.33623],[-70.758838,18.345605],[-70.924316,18.29248],[-71.027832,18.273193],[-71.069971,18.250342],[-71.082227,18.224365],[-71.082617,18.128369],[-71.106006,18.07002],[-71.267285,17.849609],[-71.358301,17.694141],[-71.395703,17.646094],[-71.438965,17.635596],[-71.518359,17.725],[-71.569043,17.757373],[-71.631738,17.773633],[-71.658301,17.821143],[-71.657227,17.888672],[-71.67373,17.954102],[-71.712451,18.005469],[-71.768311,18.03916]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Dominica","SOV_A3":"DMA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Dominica","ADM0_A3":"DMA","GEOU_DIF":0,"GEOUNIT":"Dominica","GU_A3":"DMA","SU_DIF":0,"SUBUNIT":"Dominica","SU_A3":"DMA","BRK_DIFF":0,"NAME":"Dominica","NAME_LONG":"Dominica","BRK_A3":"DMA","BRK_NAME":"Dominica","BRK_GROUP":null,"ABBREV":"D'inca","POSTAL":"DM","FORMAL_EN":"Commonwealth of Dominica","FORMAL_FR":null,"NAME_CIAWF":"Dominica","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Dominica","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":2,"MAPCOLOR13":12,"POP_EST":71808,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":582,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"DO","ISO_A2":"DM","ISO_A2_EH":"DM","ISO_A3":"DMA","ISO_A3_EH":"DMA","ISO_N3":"212","ISO_N3_EH":"212","UN_A3":"212","WB_A2":"DM","WB_A3":"DMA","WOE_ID":23424798,"WOE_ID_EH":23424798,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"DMA","ADM0_DIFF":null,"ADM0_TLC":"DMA","ADM0_A3_US":"DMA","ADM0_A3_FR":"DMA","ADM0_A3_RU":"DMA","ADM0_A3_ES":"DMA","ADM0_A3_CN":"DMA","ADM0_A3_TW":"DMA","ADM0_A3_IN":"DMA","ADM0_A3_NP":"DMA","ADM0_A3_PK":"DMA","ADM0_A3_DE":"DMA","ADM0_A3_GB":"DMA","ADM0_A3_BR":"DMA","ADM0_A3_IL":"DMA","ADM0_A3_PS":"DMA","ADM0_A3_SA":"DMA","ADM0_A3_EG":"DMA","ADM0_A3_MA":"DMA","ADM0_A3_PT":"DMA","ADM0_A3_AR":"DMA","ADM0_A3_JP":"DMA","ADM0_A3_KO":"DMA","ADM0_A3_VN":"DMA","ADM0_A3_TR":"DMA","ADM0_A3_ID":"DMA","ADM0_A3_PL":"DMA","ADM0_A3_GR":"DMA","ADM0_A3_IT":"DMA","ADM0_A3_NL":"DMA","ADM0_A3_SE":"DMA","ADM0_A3_BD":"DMA","ADM0_A3_UA":"DMA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":6,"TINY":4,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-61.344958,"LABEL_Y":15.458829,"NE_ID":1159320543,"WIKIDATAID":"Q784","NAME_AR":"دومينيكا","NAME_BN":"ডোমিনিকা","NAME_DE":"Dominica","NAME_EN":"Dominica","NAME_ES":"Dominica","NAME_FA":"دومینیکا","NAME_FR":"Dominique","NAME_EL":"Δομινίκα","NAME_HE":"דומיניקה","NAME_HI":"डोमिनिका","NAME_HU":"Dominikai Közösség","NAME_ID":"Dominika","NAME_IT":"Dominica","NAME_JA":"ドミニカ国","NAME_KO":"도미니카 연방","NAME_NL":"Dominica","NAME_PL":"Dominika","NAME_PT":"Dominica","NAME_RU":"Доминика","NAME_SV":"Dominica","NAME_TR":"Dominika","NAME_UK":"Домініка","NAME_UR":"ڈومینیکا","NAME_VI":"Dominica","NAME_ZH":"多米尼克","NAME_ZHT":"多米尼克","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.481152,15.227295,-61.251074,15.633105],"geometry":{"type":"Polygon","coordinates":[[[-61.281689,15.249023],[-61.375391,15.227295],[-61.415723,15.399854],[-61.481152,15.525146],[-61.469922,15.603467],[-61.458105,15.633105],[-61.32002,15.585059],[-61.277246,15.526709],[-61.251074,15.373145],[-61.281689,15.249023]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Djibouti","SOV_A3":"DJI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Djibouti","ADM0_A3":"DJI","GEOU_DIF":0,"GEOUNIT":"Djibouti","GU_A3":"DJI","SU_DIF":0,"SUBUNIT":"Djibouti","SU_A3":"DJI","BRK_DIFF":0,"NAME":"Djibouti","NAME_LONG":"Djibouti","BRK_A3":"DJI","BRK_NAME":"Djibouti","BRK_GROUP":null,"ABBREV":"Dji.","POSTAL":"DJ","FORMAL_EN":"Republic of Djibouti","FORMAL_FR":null,"NAME_CIAWF":"Djibouti","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Djibouti","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":4,"MAPCOLOR13":8,"POP_EST":973560,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":3324,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"DJ","ISO_A2":"DJ","ISO_A2_EH":"DJ","ISO_A3":"DJI","ISO_A3_EH":"DJI","ISO_N3":"262","ISO_N3_EH":"262","UN_A3":"262","WB_A2":"DJ","WB_A3":"DJI","WOE_ID":23424797,"WOE_ID_EH":23424797,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"DJI","ADM0_DIFF":null,"ADM0_TLC":"DJI","ADM0_A3_US":"DJI","ADM0_A3_FR":"DJI","ADM0_A3_RU":"DJI","ADM0_A3_ES":"DJI","ADM0_A3_CN":"DJI","ADM0_A3_TW":"DJI","ADM0_A3_IN":"DJI","ADM0_A3_NP":"DJI","ADM0_A3_PK":"DJI","ADM0_A3_DE":"DJI","ADM0_A3_GB":"DJI","ADM0_A3_BR":"DJI","ADM0_A3_IL":"DJI","ADM0_A3_PS":"DJI","ADM0_A3_SA":"DJI","ADM0_A3_EG":"DJI","ADM0_A3_MA":"DJI","ADM0_A3_PT":"DJI","ADM0_A3_AR":"DJI","ADM0_A3_JP":"DJI","ADM0_A3_KO":"DJI","ADM0_A3_VN":"DJI","ADM0_A3_TR":"DJI","ADM0_A3_ID":"DJI","ADM0_A3_PL":"DJI","ADM0_A3_GR":"DJI","ADM0_A3_IT":"DJI","ADM0_A3_NL":"DJI","ADM0_A3_SE":"DJI","ADM0_A3_BD":"DJI","ADM0_A3_UA":"DJI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Middle East & North Africa","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":42.498825,"LABEL_Y":11.976343,"NE_ID":1159320541,"WIKIDATAID":"Q977","NAME_AR":"جيبوتي","NAME_BN":"জিবুতি","NAME_DE":"Dschibuti","NAME_EN":"Djibouti","NAME_ES":"Yibuti","NAME_FA":"جیبوتی","NAME_FR":"Djibouti","NAME_EL":"Τζιμπουτί","NAME_HE":"ג'יבוטי","NAME_HI":"जिबूती","NAME_HU":"Dzsibuti","NAME_ID":"Djibouti","NAME_IT":"Gibuti","NAME_JA":"ジブチ","NAME_KO":"지부티","NAME_NL":"Djibouti","NAME_PL":"Dżibuti","NAME_PT":"Djibouti","NAME_RU":"Джибути","NAME_SV":"Djibouti","NAME_TR":"Cibuti","NAME_UK":"Джибуті","NAME_UR":"جبوتی","NAME_VI":"Djibouti","NAME_ZH":"吉布提","NAME_ZHT":"吉布地","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[41.764648,10.941016,43.409766,12.708594],"geometry":{"type":"Polygon","coordinates":[[[43.245996,11.499805],[43.159375,11.365723],[43.048633,11.194336],[42.922754,10.999316],[42.844141,10.997949],[42.783008,11.009277],[42.741211,11.042383],[42.65498,11.07832],[42.557715,11.080762],[42.465137,11.04707],[42.308105,11.005225],[42.166211,10.991602],[42.052148,10.968359],[41.957422,10.941016],[41.872168,10.955811],[41.798242,10.980469],[41.782031,11.187793],[41.764648,11.412891],[41.766504,11.589111],[41.792676,11.686035],[41.815625,11.723779],[41.949609,11.857861],[41.995898,11.912354],[42.149121,12.134131],[42.280371,12.324268],[42.378516,12.466406],[42.408594,12.494385],[42.45,12.521338],[42.479395,12.513623],[42.670117,12.376562],[42.703711,12.380322],[42.76748,12.422852],[42.825293,12.569336],[42.865918,12.622803],[42.883301,12.621289],[43.005664,12.662305],[43.116699,12.708594],[43.130859,12.660449],[43.298633,12.463867],[43.353516,12.367041],[43.409766,12.189941],[43.380273,12.09126],[43.336719,12.027002],[43.27207,11.969531],[43.048047,11.829053],[42.799023,11.739404],[42.640039,11.560107],[42.521777,11.572168],[42.539746,11.504297],[42.583789,11.496777],[42.652734,11.50957],[42.789746,11.561719],[42.911523,11.586621],[43.042773,11.588477],[43.161719,11.566016],[43.245996,11.499805]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Denmark","SOV_A3":"DN1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Greenland","ADM0_A3":"GRL","GEOU_DIF":0,"GEOUNIT":"Greenland","GU_A3":"GRL","SU_DIF":0,"SUBUNIT":"Greenland","SU_A3":"GRL","BRK_DIFF":0,"NAME":"Greenland","NAME_LONG":"Greenland","BRK_A3":"GRL","BRK_NAME":"Greenland","BRK_GROUP":null,"ABBREV":"Grlnd.","POSTAL":"GL","FORMAL_EN":"Greenland","FORMAL_FR":null,"NAME_CIAWF":"Greenland","NOTE_ADM0":"Den.","NOTE_BRK":null,"NAME_SORT":"Greenland","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":12,"POP_EST":56225,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":3051,"GDP_YEAR":2018,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"GL","ISO_A2":"GL","ISO_A2_EH":"GL","ISO_A3":"GRL","ISO_A3_EH":"GRL","ISO_N3":"304","ISO_N3_EH":"304","UN_A3":"304","WB_A2":"GL","WB_A3":"GRL","WOE_ID":23424828,"WOE_ID_EH":23424828,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"GRL","ADM0_DIFF":null,"ADM0_TLC":"GRL","ADM0_A3_US":"GRL","ADM0_A3_FR":"GRL","ADM0_A3_RU":"GRL","ADM0_A3_ES":"GRL","ADM0_A3_CN":"GRL","ADM0_A3_TW":"GRL","ADM0_A3_IN":"GRL","ADM0_A3_NP":"GRL","ADM0_A3_PK":"GRL","ADM0_A3_DE":"GRL","ADM0_A3_GB":"GRL","ADM0_A3_BR":"GRL","ADM0_A3_IL":"GRL","ADM0_A3_PS":"GRL","ADM0_A3_SA":"GRL","ADM0_A3_EG":"GRL","ADM0_A3_MA":"GRL","ADM0_A3_PT":"GRL","ADM0_A3_AR":"GRL","ADM0_A3_JP":"GRL","ADM0_A3_KO":"GRL","ADM0_A3_VN":"GRL","ADM0_A3_TR":"GRL","ADM0_A3_ID":"GRL","ADM0_A3_PL":"GRL","ADM0_A3_GR":"GRL","ADM0_A3_IT":"GRL","ADM0_A3_NL":"GRL","ADM0_A3_SE":"GRL","ADM0_A3_BD":"GRL","ADM0_A3_UA":"GRL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Northern America","REGION_WB":"Europe & Central Asia","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":-39.335251,"LABEL_Y":74.319387,"NE_ID":1159320551,"WIKIDATAID":"Q223","NAME_AR":"جرينلاند","NAME_BN":"গ্রিনল্যান্ড","NAME_DE":"Grönland","NAME_EN":"Greenland","NAME_ES":"Groenlandia","NAME_FA":"گرینلند","NAME_FR":"Groenland","NAME_EL":"Γροιλανδία","NAME_HE":"גרינלנד","NAME_HI":"ग्रीनलैण्ड","NAME_HU":"Grönland","NAME_ID":"Greenland","NAME_IT":"Groenlandia","NAME_JA":"グリーンランド","NAME_KO":"그린란드","NAME_NL":"Groenland","NAME_PL":"Grenlandia","NAME_PT":"Groenlândia","NAME_RU":"Гренландия","NAME_SV":"Grönland","NAME_TR":"Grönland","NAME_UK":"Гренландія","NAME_UR":"گرین لینڈ","NAME_VI":"Greenland","NAME_ZH":"格陵兰","NAME_ZHT":"格陵蘭","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-72.818066,59.815479,-11.425537,83.599609],"geometry":{"type":"MultiPolygon","coordinates":[[[[-29.952881,83.564844],[-28.991992,83.504785],[-28.483789,83.434912],[-28.377051,83.437207],[-27.688379,83.4104],[-27.034424,83.376904],[-25.947412,83.289648],[-25.795068,83.260986],[-25.912451,83.2375],[-26.182715,83.221387],[-27.571875,83.192627],[-30.091992,83.157422],[-31.533984,83.088916],[-31.992676,83.085352],[-32.032715,82.983447],[-31.836768,82.977881],[-31.515576,82.99165],[-30.386035,83.093701],[-29.963574,83.110498],[-29.175,83.102002],[-28.151465,83.063721],[-27.738525,83.077197],[-27.002051,83.067188],[-26.14082,83.096436],[-25.123389,83.159619],[-24.845166,83.018555],[-24.470312,82.877393],[-24.173633,82.893018],[-23.919531,82.885107],[-23.833545,82.83877],[-23.694629,82.819141],[-23.406934,82.829688],[-22.524902,82.78916],[-21.919678,82.716406],[-21.691797,82.68252],[-21.58252,82.63418],[-21.520654,82.59541],[-21.615771,82.547705],[-21.993945,82.462793],[-22.472559,82.384717],[-23.118066,82.324707],[-23.862207,82.287061],[-29.579395,82.161182],[-29.772754,82.13125],[-29.887402,82.054834],[-29.810986,81.955469],[-29.543848,81.939941],[-28.919434,81.995898],[-27.839502,82.048877],[-27.045947,82.046338],[-25.148828,82.001123],[-24.58916,81.882812],[-24.293066,81.700977],[-23.636523,81.741846],[-23.496143,81.773047],[-23.392969,81.827197],[-23.310547,81.885303],[-23.248779,81.947266],[-23.179834,81.989453],[-23.103711,82.011816],[-22.940088,82.030518],[-22.563379,82.053027],[-21.575537,82.074951],[-21.337988,82.068701],[-21.167383,81.983838],[-21.130322,81.934229],[-21.117969,81.869629],[-21.123437,81.789941],[-21.146582,81.695166],[-21.230518,81.601367],[-21.503906,81.4375],[-21.723633,81.348242],[-21.960742,81.283936],[-22.415283,81.137109],[-22.572754,81.0979],[-23.072461,80.926709],[-23.196387,80.847363],[-23.203662,80.789258],[-23.117725,80.778174],[-22.972852,80.832813],[-22.918945,80.871826],[-22.825684,80.912646],[-22.089404,81.020215],[-21.931348,81.050195],[-21.449756,81.178174],[-21.142432,81.226172],[-20.889746,81.276367],[-20.755859,81.312012],[-20.015723,81.564355],[-19.629932,81.639893],[-19.224756,81.640039],[-19.152979,81.512207],[-18.667383,81.492432],[-18.456543,81.497949],[-18.117871,81.466846],[-17.969385,81.441162],[-17.71665,81.428174],[-17.456055,81.397705],[-17.226221,81.43042],[-17.159033,81.450928],[-16.937061,81.543896],[-16.637109,81.626221],[-16.358984,81.729053],[-16.266797,81.753955],[-16.120703,81.776611],[-15.968896,81.785498],[-15.555518,81.833594],[-15.450635,81.836963],[-15.22749,81.821777],[-14.241992,81.813867],[-13.704492,81.789062],[-12.956006,81.720215],[-12.434424,81.68252],[-12.192871,81.649121],[-11.841113,81.577539],[-11.557471,81.502637],[-11.425537,81.480615],[-11.430664,81.456836],[-11.528809,81.424023],[-12.231348,81.309229],[-12.46123,81.23252],[-13.126221,81.087793],[-13.451172,81.038086],[-13.804297,81.018604],[-14.197363,81.013916],[-14.452344,80.993115],[-14.490137,80.973291],[-14.308496,80.913232],[-14.228564,80.870459],[-14.240186,80.832422],[-14.43125,80.776074],[-14.503564,80.763281],[-15.194238,80.721436],[-15.542676,80.650391],[-15.99751,80.641699],[-16.318945,80.649805],[-16.760596,80.573389],[-16.587793,80.51123],[-16.429443,80.484229],[-15.937256,80.427637],[-15.932617,80.395117],[-16.167773,80.329395],[-16.48877,80.251953],[-16.868408,80.198242],[-17.011133,80.190186],[-17.191162,80.203662],[-17.357227,80.200781],[-17.722852,80.176025],[-18.070947,80.17207],[-18.692578,80.20708],[-19.029004,80.247607],[-19.206006,80.261621],[-19.429199,80.257715],[-19.515039,80.241406],[-19.866797,80.144727],[-20.039502,80.078711],[-20.150146,80.01123],[-20.197412,79.937646],[-20.181348,79.857959],[-20.138477,79.803369],[-20.068848,79.773779],[-19.9854,79.755859],[-19.839307,79.746484],[-19.517871,79.755371],[-19.391504,79.750342],[-19.353027,79.73418],[-19.283594,79.683154],[-19.295996,79.63501],[-19.354199,79.567334],[-19.399316,79.488379],[-19.431201,79.398145],[-19.414014,79.348828],[-19.283984,79.338037],[-19.222949,79.341602],[-19.152197,79.325391],[-19.071777,79.289453],[-19.011328,79.251465],[-18.970801,79.211377],[-18.991992,79.178369],[-19.074951,79.152344],[-19.262207,79.122998],[-19.723047,79.065039],[-19.769824,79.047363],[-19.806055,79.012109],[-19.831592,78.959131],[-19.887207,78.910938],[-19.9729,78.867627],[-20.050488,78.841797],[-20.199902,78.830322],[-20.395703,78.828809],[-20.615576,78.803906],[-21.13374,78.658643],[-21.141455,78.642529],[-20.947461,78.595898],[-20.955664,78.555029],[-21.194775,78.379834],[-21.260205,78.293018],[-21.312012,78.173975],[-21.397266,78.073584],[-21.515967,77.991846],[-21.632666,77.897461],[-21.747559,77.790625],[-21.72959,77.708545],[-21.578906,77.651367],[-21.379687,77.697559],[-21.131885,77.847217],[-20.862598,77.911865],[-20.571826,77.891553],[-20.318604,77.861963],[-19.995117,77.803418],[-19.724316,77.766943],[-19.49043,77.718896],[-19.393994,77.678369],[-19.296875,77.621289],[-19.296094,77.585254],[-19.467529,77.56582],[-19.524121,77.571973],[-19.953223,77.666357],[-20.162061,77.689844],[-20.439209,77.661621],[-20.680811,77.618994],[-20.46377,77.447314],[-20.231934,77.368408],[-19.808643,77.332373],[-19.587598,77.294434],[-19.426416,77.245996],[-19.300293,77.222363],[-19.131006,77.232764],[-18.903418,77.280469],[-18.585889,77.283057],[-18.442627,77.259375],[-18.339014,77.215283],[-18.292383,77.132861],[-18.302734,77.012109],[-18.337256,76.921191],[-18.396045,76.860059],[-18.510303,76.778174],[-18.605762,76.763281],[-18.740283,76.767725],[-18.865332,76.784521],[-18.981006,76.81377],[-19.156348,76.836572],[-19.508789,76.861084],[-19.864941,76.914404],[-20.064355,76.927588],[-20.486719,76.920801],[-20.94209,76.887012],[-20.959912,76.842676],[-21.614697,76.687891],[-21.749023,76.68999],[-21.930811,76.743164],[-22.185254,76.794092],[-22.334326,76.793701],[-22.554541,76.729248],[-22.609326,76.704297],[-22.606641,76.680762],[-22.444434,76.625049],[-22.378613,76.612207],[-22.294873,76.601465],[-22.003711,76.588086],[-21.877344,76.573486],[-21.758105,76.400537],[-21.569092,76.293701],[-21.488232,76.271875],[-21.416846,76.264014],[-21.185449,76.267969],[-20.887402,76.304004],[-20.783301,76.275146],[-20.563818,76.239844],[-20.4354,76.231055],[-20.279297,76.232471],[-20.103613,76.219092],[-19.862891,76.120654],[-19.957715,75.99668],[-19.806885,75.897363],[-19.566016,75.794971],[-19.508984,75.75752],[-19.485693,75.6896],[-19.480273,75.644775],[-19.462158,75.603857],[-19.431445,75.566895],[-19.399512,75.494434],[-19.366455,75.386426],[-19.375293,75.298193],[-19.425977,75.229834],[-19.526367,75.180225],[-19.67627,75.149365],[-19.798486,75.157471],[-19.893164,75.204541],[-20.026562,75.254688],[-20.198682,75.307959],[-20.484961,75.314258],[-20.905859,75.156934],[-21.093848,75.149072],[-21.246533,75.133398],[-21.409424,75.064795],[-21.649316,75.023438],[-21.861035,75.039844],[-22.232861,75.119727],[-22.097754,75.066357],[-21.904346,75.003906],[-21.783936,74.971484],[-21.695117,74.964453],[-21.597656,74.971973],[-21.457324,74.997559],[-21.140576,75.068555],[-21.056689,75.079395],[-20.985791,75.074365],[-20.927783,75.053418],[-20.861084,74.992578],[-20.785693,74.891748],[-20.795312,74.805957],[-20.88999,74.735205],[-20.970996,74.689844],[-21.038281,74.669873],[-21.038477,74.65415],[-20.861572,74.635937],[-20.611133,74.728223],[-20.531738,74.84292],[-20.41709,74.975195],[-20.214258,75.019238],[-19.984912,74.975195],[-19.799707,74.851709],[-19.537793,74.624561],[-19.427344,74.600928],[-19.287012,74.546387],[-19.225098,74.479492],[-19.24165,74.400195],[-19.271582,74.342627],[-19.314941,74.306787],[-19.369141,74.284033],[-19.466748,74.269482],[-19.64624,74.257959],[-20.047559,74.282275],[-20.256445,74.282813],[-20.230566,74.204639],[-20.653125,74.137354],[-21.129443,74.110889],[-21.580566,74.163477],[-21.954932,74.244287],[-21.832031,74.357275],[-21.761963,74.482764],[-21.94292,74.565723],[-21.982617,74.56748],[-21.920166,74.439209],[-21.972705,74.390039],[-22.177197,74.330176],[-22.321582,74.302539],[-22.334326,74.286377],[-22.263525,74.272412],[-22.217334,74.245508],[-22.195654,74.205713],[-22.22002,74.165527],[-22.290576,74.125],[-22.328955,74.090967],[-22.335254,74.063428],[-22.270557,74.029883],[-22.134814,73.990479],[-21.987695,73.970996],[-21.298291,73.962451],[-21.022217,73.94126],[-20.367285,73.848242],[-20.337988,73.819678],[-20.448926,73.653027],[-20.509668,73.492871],[-20.636719,73.463574],[-21.325879,73.456641],[-21.547998,73.431689],[-21.872852,73.358105],[-22.185059,73.269873],[-22.346875,73.269238],[-22.9875,73.34624],[-23.233203,73.397705],[-23.760596,73.543115],[-24.157715,73.764453],[-24.339893,73.672412],[-24.45127,73.628516],[-24.566309,73.605762],[-24.677246,73.602197],[-24.78418,73.61792],[-24.905469,73.652783],[-25.108838,73.733691],[-25.351465,73.813623],[-25.521289,73.851611],[-25.527734,73.84082],[-25.427441,73.793799],[-25.280518,73.7396],[-24.908887,73.580176],[-24.77832,73.539893],[-24.79126,73.511279],[-25.025879,73.485791],[-25.310742,73.431006],[-25.450098,73.390674],[-25.66543,73.292822],[-25.740186,73.277637],[-26.062305,73.253027],[-26.168555,73.259033],[-26.406738,73.312939],[-26.765479,73.348193],[-26.976709,73.379541],[-27.27041,73.436279],[-27.169385,73.37417],[-26.603613,73.279492],[-26.541846,73.248975],[-26.657617,73.192139],[-26.728613,73.171387],[-26.86333,73.166992],[-27.061865,73.178906],[-27.264893,73.176465],[-27.472363,73.159814],[-27.561621,73.138477],[-27.532568,73.112549],[-27.483154,73.088916],[-27.41333,73.067627],[-27.348047,73.067822],[-27.189893,73.132422],[-27.07002,73.137012],[-26.753223,73.121094],[-26.432861,73.171484],[-26.202002,73.193213],[-26.02876,73.198779],[-25.399023,73.275781],[-25.268311,73.361963],[-25.057031,73.396484],[-24.587207,73.422949],[-24.132666,73.409375],[-23.898975,73.398291],[-23.709619,73.316797],[-23.455762,73.259082],[-23.244092,73.193262],[-22.996045,73.171582],[-22.852295,73.083984],[-22.450195,72.986084],[-22.194238,72.965039],[-22.036328,72.918457],[-22.023486,72.720801],[-22.006738,72.635449],[-22.074805,72.399219],[-22.280225,72.344775],[-22.239258,72.220264],[-22.293213,72.119531],[-22.49751,72.157764],[-22.706836,72.223926],[-23.208008,72.326562],[-23.674365,72.392578],[-23.855566,72.452441],[-24.069043,72.49873],[-24.358594,72.687305],[-24.547217,72.921729],[-24.62998,73.037646],[-24.788574,73.044141],[-24.99248,73.013086],[-25.170557,72.980273],[-25.255859,72.924121],[-25.86084,72.846875],[-26.080469,72.793994],[-26.205762,72.795557],[-26.657617,72.71582],[-26.476562,72.677637],[-26.39209,72.672803],[-26.209473,72.694385],[-26.099805,72.721924],[-25.687988,72.797363],[-25.357422,72.810254],[-25.2375,72.842773],[-24.984814,72.889209],[-24.81333,72.901514],[-24.789453,72.889746],[-24.771045,72.868652],[-24.65,72.58252],[-24.700684,72.506348],[-24.836914,72.47334],[-25.128027,72.419189],[-25.203711,72.392969],[-25.117871,72.346973],[-24.844189,72.390332],[-24.666846,72.437354],[-24.572363,72.420215],[-24.417187,72.348242],[-24.242285,72.311328],[-23.797705,72.200732],[-23.587109,72.139795],[-23.290918,72.081006],[-22.955762,71.999414],[-22.868506,71.970654],[-22.562158,71.928271],[-22.496875,71.913818],[-22.370215,71.769824],[-22.264502,71.753809],[-21.959668,71.744678],[-22.01333,71.688818],[-22.311035,71.564551],[-22.46499,71.524902],[-22.503223,71.500439],[-22.488574,71.456689],[-22.479639,71.383447],[-22.417578,71.248682],[-22.347754,71.373486],[-22.299023,71.432324],[-22.233789,71.449951],[-22.16958,71.452539],[-21.961426,71.508203],[-21.752246,71.47832],[-21.697949,71.337451],[-21.671191,71.205957],[-21.689648,71.092383],[-21.666602,70.915869],[-21.674512,70.856299],[-21.625146,70.804639],[-21.573926,70.590479],[-21.522656,70.526221],[-21.625537,70.468555],[-21.943506,70.443457],[-22.069287,70.471875],[-22.384131,70.462402],[-22.384521,70.513135],[-22.399854,70.571289],[-22.401123,70.611914],[-22.422119,70.648682],[-22.437012,70.86001],[-22.526074,70.807812],[-22.531348,70.76499],[-22.555029,70.721436],[-22.609668,70.493311],[-22.690674,70.437305],[-22.942578,70.450781],[-23.190625,70.44248],[-23.327832,70.450977],[-23.791797,70.555176],[-23.971387,70.649463],[-24.130371,70.791064],[-24.228516,70.923389],[-24.265723,71.046338],[-24.377002,71.146387],[-24.562207,71.223535],[-24.781006,71.286084],[-25.033398,71.333936],[-25.25498,71.395703],[-25.445801,71.47124],[-25.655859,71.530029],[-25.885156,71.571924],[-26.211426,71.589941],[-26.688525,71.58335],[-27.010645,71.630566],[-27.087207,71.626563],[-27.162305,71.602197],[-27.107031,71.532666],[-26.737207,71.500781],[-26.452002,71.493506],[-26.074072,71.498047],[-25.842725,71.480176],[-25.757812,71.439941],[-25.699414,71.368311],[-25.667578,71.265332],[-25.742236,71.183594],[-26.014111,71.092822],[-26.15752,71.050293],[-26.575977,70.968701],[-26.71792,70.950488],[-27.067334,70.944922],[-27.335693,70.952783],[-27.68877,70.993457],[-27.888916,71.001709],[-28.303125,71.007178],[-28.398438,70.99292],[-28.291553,70.949316],[-28.115869,70.924609],[-27.992188,70.895215],[-27.979297,70.839502],[-28.023877,70.756787],[-28.069873,70.699023],[-28.145654,70.655664],[-28.41748,70.573535],[-28.530078,70.547559],[-29.036816,70.461523],[-29.07207,70.444971],[-28.953467,70.447217],[-28.633105,70.477783],[-28.540918,70.476904],[-28.015039,70.402246],[-27.596094,70.406689],[-26.747266,70.475537],[-26.67749,70.474219],[-26.621777,70.463379],[-26.56543,70.437549],[-26.508398,70.396631],[-26.576807,70.35708],[-26.770654,70.318896],[-27.07251,70.281201],[-27.203223,70.255713],[-27.328125,70.217139],[-27.56084,70.124463],[-27.628857,70.028223],[-27.38418,69.991602],[-27.274219,70.037939],[-27.144482,70.14082],[-27.027734,70.201221],[-26.752148,70.242188],[-26.415674,70.221338],[-26.155713,70.245605],[-25.624854,70.346973],[-25.529883,70.353174],[-24.748828,70.295068],[-24.041016,70.181201],[-23.667334,70.139307],[-23.173242,70.1146],[-22.284473,70.12583],[-22.206592,70.10791],[-22.235449,70.067578],[-22.287061,70.033398],[-22.435107,69.985742],[-22.614941,69.954248],[-22.726221,69.945361],[-22.820898,69.922852],[-23.033643,69.90083],[-23.088232,69.882959],[-23.014551,69.804834],[-23.049561,69.792725],[-23.236963,69.791455],[-23.552539,69.740527],[-23.811621,69.744189],[-23.865723,69.736719],[-23.816553,69.717822],[-23.764258,69.681348],[-23.708984,69.627246],[-23.739404,69.588623],[-23.855566,69.565576],[-23.943652,69.558057],[-24.24751,69.590381],[-24.29668,69.585547],[-24.252295,69.562354],[-24.227051,69.526953],[-24.220898,69.479297],[-24.295557,69.439307],[-24.451074,69.40708],[-24.740576,69.318408],[-24.866602,69.293066],[-25.13252,69.272119],[-25.188574,69.260547],[-25.080469,69.19248],[-25.092432,69.165186],[-25.272217,69.091602],[-25.544043,69.045703],[-25.581152,69.020947],[-25.606348,68.954443],[-25.626123,68.927979],[-25.697998,68.889893],[-25.955859,68.817285],[-26.138623,68.781152],[-26.229248,68.751563],[-26.341406,68.702148],[-26.48291,68.675928],[-26.653711,68.672852],[-26.815332,68.654346],[-27.081152,68.601807],[-27.26626,68.584326],[-27.851221,68.493506],[-28.126465,68.479004],[-28.364551,68.446533],[-28.854346,68.359814],[-29.087695,68.331934],[-29.249512,68.298779],[-29.426221,68.289307],[-29.713574,68.31084],[-29.868506,68.311572],[-29.96377,68.298535],[-30.051123,68.271924],[-30.195508,68.198975],[-30.318115,68.193311],[-30.72002,68.251172],[-30.711865,68.224951],[-30.605664,68.162354],[-30.610742,68.11792],[-30.849756,68.072852],[-30.978564,68.061328],[-31.168457,68.079834],[-31.419482,68.128467],[-31.741992,68.22998],[-32.137256,68.384912],[-32.327441,68.437305],[-32.313672,68.387598],[-32.269629,68.339014],[-32.195215,68.29165],[-32.180127,68.257275],[-32.224219,68.235986],[-32.282373,68.225244],[-32.35459,68.225098],[-32.366846,68.213037],[-32.248926,68.139111],[-32.155957,68.063184],[-32.164551,67.991113],[-32.274805,67.922852],[-32.369531,67.882764],[-32.44873,67.870947],[-32.918018,67.700684],[-33.04873,67.679248],[-33.108154,67.658203],[-33.156982,67.626709],[-33.293604,67.485742],[-33.348877,67.442725],[-33.458496,67.386719],[-33.504443,67.377002],[-33.517578,67.354199],[-33.497754,67.318164],[-33.527979,67.258154],[-33.608203,67.174219],[-33.881348,66.942285],[-34.10166,66.725928],[-34.198242,66.655078],[-34.268896,66.625049],[-34.313623,66.635791],[-34.422852,66.630176],[-34.475879,66.592139],[-34.523926,66.52334],[-34.57627,66.470898],[-34.632812,66.434766],[-35.074658,66.27915],[-35.188574,66.250293],[-35.290869,66.268555],[-35.411719,66.261523],[-35.662061,66.34375],[-35.705469,66.373975],[-35.867236,66.441406],[-35.861865,66.40625],[-35.834717,66.386865],[-35.812109,66.358398],[-35.755518,66.323535],[-35.630078,66.139941],[-35.729297,66.102246],[-35.81792,66.059229],[-36.044189,65.986621],[-36.288721,65.864844],[-36.379199,65.830811],[-36.399219,65.930078],[-36.388965,65.959717],[-36.527246,66.007715],[-36.522754,65.973145],[-36.537012,65.940869],[-36.637256,65.812305],[-36.665186,65.790088],[-36.714502,65.795068],[-36.822168,65.771338],[-36.932422,65.782568],[-37.025879,65.841113],[-37.062793,65.871436],[-37.233203,65.788086],[-37.316016,65.790234],[-37.329834,65.720166],[-37.410059,65.656348],[-37.516064,65.628711],[-37.66377,65.630859],[-37.754199,65.593066],[-37.954785,65.633594],[-38.00127,65.709619],[-37.842285,65.813818],[-37.797363,65.856787],[-37.826514,65.909668],[-37.787842,65.977979],[-37.484473,66.194629],[-37.278711,66.304395],[-37.290674,66.323926],[-37.569922,66.347852],[-37.813916,66.385498],[-38.05166,66.398438],[-38.156641,66.385596],[-37.98916,66.322656],[-37.752344,66.261523],[-37.868896,66.203125],[-37.969434,66.141113],[-38.073437,65.972559],[-38.139941,65.903516],[-38.398145,65.982861],[-38.520361,66.009668],[-38.442676,65.92168],[-38.216357,65.83833],[-38.201855,65.810889],[-38.203369,65.711719],[-38.636719,65.624365],[-39.088965,65.611133],[-39.413379,65.586279],[-39.960938,65.556201],[-40.173535,65.556152],[-40.191553,65.52251],[-39.655957,65.368896],[-39.57793,65.340771],[-39.652539,65.287842],[-39.763184,65.254932],[-39.937256,65.141602],[-40.028027,65.102539],[-40.253125,65.048877],[-40.667578,65.10874],[-40.880566,65.081982],[-41.084424,65.10083],[-41.088672,65.035352],[-41.027734,64.987549],[-40.966016,64.868848],[-40.829297,64.878076],[-40.655469,64.915332],[-40.521094,64.825488],[-40.432715,64.673193],[-40.278418,64.595947],[-40.209863,64.536279],[-40.182227,64.479932],[-40.278467,64.423828],[-40.477637,64.344434],[-40.698535,64.329736],[-40.686426,64.266943],[-40.781738,64.221777],[-40.98457,64.23501],[-41.079395,64.266504],[-41.177734,64.281445],[-41.581006,64.29834],[-41.175,64.177393],[-41.030566,64.121045],[-40.966309,64.154443],[-40.825684,64.162549],[-40.617773,64.131738],[-40.652344,63.927734],[-40.561279,63.762354],[-40.550391,63.725244],[-40.771533,63.626172],[-40.775195,63.533643],[-40.906836,63.507861],[-41.04873,63.513818],[-41.056152,63.412256],[-41.152246,63.348926],[-41.135205,63.309277],[-41.107715,63.273779],[-41.195459,63.209229],[-41.274707,63.130664],[-41.387891,63.061865],[-41.447852,63.068945],[-41.62793,63.064502],[-41.844482,63.070264],[-42.019727,63.159619],[-42.092383,63.189355],[-42.174512,63.208789],[-42.142969,63.151318],[-42.093994,63.116748],[-41.932275,63.052246],[-41.634473,62.972461],[-41.643604,62.915869],[-41.723242,62.89126],[-41.908984,62.737109],[-41.974902,62.733789],[-42.058252,62.693994],[-42.315625,62.707324],[-42.42373,62.723145],[-42.741113,62.713037],[-42.849072,62.72666],[-42.94165,62.720215],[-42.855273,62.676709],[-42.673682,62.6375],[-42.467139,62.598193],[-42.152979,62.568457],[-42.164355,62.512207],[-42.243164,62.466064],[-42.197949,62.397119],[-42.233105,62.347705],[-42.248145,62.289062],[-42.321484,62.152734],[-42.236133,62.05918],[-42.143066,62.013525],[-42.153857,61.953418],[-42.110205,61.857227],[-42.249707,61.771387],[-42.36543,61.774609],[-42.53042,61.755322],[-42.585303,61.71748],[-42.323633,61.681738],[-42.347363,61.617432],[-42.41875,61.537012],[-42.49375,61.362793],[-42.645996,61.064111],[-42.717041,60.76748],[-43.044092,60.523682],[-43.159961,60.516943],[-43.189063,60.507275],[-43.34834,60.519775],[-43.59834,60.576025],[-43.791992,60.59458],[-43.922705,60.595361],[-43.939551,60.567383],[-43.831152,60.521973],[-43.665479,60.502979],[-43.533057,60.472998],[-43.295654,60.444971],[-43.212988,60.390674],[-43.156494,60.332861],[-43.164844,60.301025],[-43.165332,60.263428],[-43.1229,60.06123],[-43.234814,59.991309],[-43.320117,59.928125],[-43.616895,59.936914],[-43.668506,59.958936],[-43.955029,60.025488],[-43.937402,59.994238],[-43.730127,59.90376],[-43.65791,59.858643],[-43.706201,59.849316],[-43.789844,59.845947],[-43.906543,59.815479],[-44.116992,59.831934],[-44.10542,59.877734],[-44.065479,59.924805],[-44.161719,59.916797],[-44.268945,59.89292],[-44.33125,59.901709],[-44.383594,59.899072],[-44.412939,59.922607],[-44.453467,60.014551],[-44.404932,60.060791],[-44.231348,60.180273],[-44.176123,60.244385],[-44.224365,60.273535],[-44.34834,60.204785],[-44.476367,60.095508],[-44.533154,60.029492],[-44.613281,60.01665],[-44.812207,60.049902],[-45.379248,60.20293],[-45.362354,60.295947],[-45.367773,60.372949],[-45.20249,60.382715],[-45.082275,60.416211],[-44.974707,60.457227],[-44.853516,60.531934],[-44.742432,60.655273],[-44.756738,60.6646],[-45.082715,60.507178],[-45.283301,60.454541],[-45.380518,60.444922],[-45.428857,60.468262],[-45.590283,60.518848],[-45.695215,60.541846],[-45.934326,60.579443],[-45.976514,60.599707],[-46.046631,60.615723],[-46.141943,60.776514],[-46.018652,60.971777],[-45.93374,61.028418],[-45.879883,61.094141],[-45.849414,61.181152],[-45.870215,61.218311],[-45.942285,61.205566],[-45.975684,61.175781],[-45.97041,61.129199],[-46.011719,61.096826],[-46.29668,61.022363],[-46.582422,60.962061],[-46.717773,60.904932],[-46.805664,60.860303],[-46.874463,60.816406],[-46.979687,60.820361],[-47.124854,60.811328],[-47.224414,60.782861],[-47.369727,60.800342],[-47.464648,60.842627],[-47.579053,60.847461],[-47.707471,60.8271],[-47.79624,60.828857],[-47.788867,60.800146],[-47.729932,60.729492],[-47.82793,60.724756],[-48.013965,60.721973],[-48.10752,60.742432],[-48.180811,60.769238],[-48.241943,60.806836],[-48.205176,60.855908],[-47.905957,60.945752],[-47.770312,60.997754],[-47.858789,61.015674],[-48.146143,60.999463],[-48.193945,61.012939],[-48.386426,61.004736],[-48.378125,61.138477],[-48.424951,61.17168],[-48.428174,61.187402],[-48.494824,61.224707],[-48.55791,61.233984],[-48.597168,61.247412],[-48.92207,61.277441],[-48.964502,61.352002],[-48.987207,61.428711],[-49.049219,61.523877],[-49.204736,61.548682],[-49.289062,61.589941],[-49.222266,61.632129],[-49.193115,61.685645],[-49.265234,61.710059],[-49.31123,61.747803],[-49.304492,61.772314],[-49.362891,61.838525],[-49.380273,61.890186],[-49.313477,61.938623],[-49.129785,61.993408],[-49.070557,62.015479],[-49.039648,62.039355],[-48.828711,62.079687],[-49.008154,62.108203],[-49.120459,62.112598],[-49.202295,62.099316],[-49.27793,62.045752],[-49.348535,62.010205],[-49.623779,61.998584],[-49.664258,62.016943],[-49.683398,62.092578],[-49.667725,62.150879],[-49.553467,62.232715],[-49.685254,62.27334],[-49.806055,62.286523],[-49.943359,62.324463],[-50.070215,62.364502],[-50.17915,62.411133],[-50.285205,62.466211],[-50.319238,62.473193],[-50.280908,62.530762],[-50.259326,62.578076],[-50.256006,62.679785],[-50.29873,62.721973],[-50.20376,62.808789],[-50.076025,62.90376],[-49.793115,63.044629],[-50.092236,62.976758],[-50.33833,62.82876],[-50.390088,62.822021],[-50.408203,62.848828],[-50.501563,62.944922],[-50.572021,62.971143],[-50.603516,63.000049],[-50.743506,63.05127],[-50.804297,63.090771],[-50.890479,63.166943],[-51.013086,63.257568],[-51.187598,63.436426],[-51.468848,63.642285],[-51.538184,63.758008],[-51.451074,63.904785],[-51.54751,64.006104],[-51.280078,64.052979],[-50.897559,64.105566],[-50.699365,64.149268],[-50.58501,64.162354],[-50.341895,64.170361],[-50.260693,64.214258],[-50.395947,64.203174],[-50.486621,64.208887],[-50.492285,64.229346],[-50.45874,64.26582],[-50.437061,64.312842],[-50.483398,64.304346],[-50.721045,64.22334],[-51.072314,64.159033],[-51.34668,64.123096],[-51.391113,64.125],[-51.487109,64.103271],[-51.542285,64.097021],[-51.584912,64.103174],[-51.682031,64.164746],[-51.707861,64.205078],[-51.533789,64.314209],[-51.40376,64.463184],[-51.231543,64.560596],[-51.109912,64.572803],[-50.906543,64.567578],[-50.834912,64.558984],[-50.857715,64.616797],[-50.849219,64.644678],[-50.684326,64.678174],[-50.49209,64.693164],[-50.355127,64.682568],[-50.268945,64.614746],[-50.158203,64.489551],[-50.008984,64.447266],[-50.015527,64.507422],[-50.092969,64.584912],[-50.121631,64.70376],[-50.219922,64.753857],[-50.298877,64.778564],[-50.516992,64.766504],[-50.648145,64.85332],[-50.677881,64.885205],[-50.681299,64.927539],[-50.812158,65.051855],[-50.854248,65.113965],[-50.92373,65.196729],[-50.960645,65.201123],[-50.913721,65.096973],[-50.852344,65.023682],[-50.764844,64.862549],[-50.721582,64.797607],[-50.780176,64.746143],[-50.891064,64.695215],[-50.989062,64.664844],[-51.220605,64.628467],[-51.17085,64.707764],[-51.138965,64.785742],[-51.255371,64.758105],[-51.363623,64.701562],[-51.400928,64.623096],[-51.470459,64.551807],[-51.676758,64.377051],[-51.758105,64.279932],[-51.834961,64.231982],[-51.922607,64.21875],[-51.998682,64.256787],[-52.063184,64.346094],[-52.093408,64.415918],[-52.097021,64.59707],[-52.088867,64.681543],[-52.124023,64.79541],[-52.235449,65.060547],[-52.259033,65.154932],[-52.447607,65.205127],[-52.450342,65.221338],[-52.499707,65.275049],[-52.537695,65.328809],[-52.50625,65.348486],[-52.461426,65.362695],[-52.17959,65.441943],[-51.970703,65.530713],[-51.721094,65.669922],[-51.619141,65.713184],[-51.25293,65.746484],[-51.090381,65.751025],[-51.091895,65.775781],[-51.146387,65.785645],[-51.393799,65.77915],[-51.723437,65.723486],[-51.779883,65.703418],[-51.924121,65.616797],[-52.035352,65.569482],[-52.348242,65.461328],[-52.55127,65.461377],[-52.760937,65.59082],[-52.994922,65.566016],[-53.15293,65.574561],[-53.198975,65.594043],[-53.23374,65.77085],[-53.106348,65.977148],[-53.24375,65.979053],[-53.272217,65.987402],[-53.344727,66.034375],[-53.392041,66.04834],[-53.356934,66.073291],[-53.017871,66.170898],[-52.510889,66.362402],[-52.292627,66.437646],[-52.15791,66.470117],[-52.056104,66.507324],[-51.932178,66.587891],[-51.891211,66.623145],[-51.822119,66.651562],[-51.676367,66.683594],[-51.51709,66.732031],[-51.258594,66.841211],[-51.225,66.881543],[-51.281055,66.890967],[-51.401953,66.85376],[-51.647705,66.754004],[-51.823047,66.697852],[-52.42124,66.44668],[-52.675879,66.355225],[-52.814453,66.296875],[-52.921924,66.241113],[-53.035791,66.201416],[-53.156055,66.177734],[-53.412744,66.159961],[-53.53877,66.139355],[-53.614697,66.154492],[-53.648096,66.273535],[-53.622607,66.344043],[-53.634717,66.413672],[-53.570703,66.513281],[-53.475684,66.583838],[-53.435791,66.622168],[-53.41875,66.648535],[-53.222705,66.721436],[-53.114648,66.753809],[-53.038281,66.826807],[-52.603125,66.852734],[-52.491064,66.850146],[-52.431445,66.859912],[-52.386865,66.881152],[-52.429736,66.897559],[-52.560107,66.909082],[-52.906689,66.906885],[-53.226953,66.919385],[-53.373096,66.931934],[-53.443604,66.924658],[-53.56001,66.945947],[-53.687158,66.986475],[-53.884424,67.135547],[-53.805469,67.326904],[-53.798584,67.418164],[-53.5479,67.498193],[-53.413867,67.524707],[-53.223584,67.584961],[-52.969531,67.687256],[-52.666455,67.749707],[-52.512012,67.761279],[-52.383594,67.752344],[-51.909082,67.663721],[-51.665039,67.646387],[-51.450586,67.667725],[-51.181445,67.636523],[-50.705371,67.508887],[-50.613477,67.52793],[-50.640137,67.558838],[-51.171045,67.693604],[-51.167969,67.733838],[-51.03208,67.744385],[-50.887012,67.783545],[-50.968848,67.806641],[-51.321484,67.786572],[-51.423242,67.754492],[-51.765234,67.737842],[-51.943848,67.765186],[-52.104199,67.778711],[-52.344824,67.836914],[-52.546191,67.81792],[-52.673242,67.794971],[-52.89834,67.773242],[-52.97959,67.757764],[-53.418799,67.574561],[-53.603613,67.536475],[-53.735205,67.549023],[-53.642822,67.668262],[-53.616211,67.715332],[-53.616357,67.766602],[-53.577979,67.836816],[-53.35293,67.970508],[-53.211377,68.116943],[-53.151562,68.207764],[-53.040967,68.21792],[-52.889844,68.204541],[-52.436084,68.145654],[-52.058496,68.075488],[-51.77998,68.056738],[-51.596875,68.054785],[-51.518359,68.077148],[-51.456494,68.116064],[-51.432666,68.143018],[-51.414697,68.198193],[-51.393701,68.217773],[-51.33252,68.241846],[-51.207275,68.325537],[-51.169141,68.385205],[-51.210156,68.419922],[-51.293457,68.416357],[-51.456104,68.393506],[-51.478027,68.383984],[-51.475049,68.365381],[-51.632422,68.273047],[-51.804004,68.251807],[-52.198535,68.220801],[-52.378516,68.218604],[-52.698389,68.261523],[-52.746777,68.278369],[-52.780029,68.309863],[-53.17251,68.302734],[-53.289844,68.293262],[-53.383154,68.297363],[-53.337402,68.352148],[-53.213281,68.412988],[-53.039453,68.610889],[-52.893848,68.661523],[-52.60459,68.70874],[-52.302783,68.701123],[-51.780664,68.548193],[-51.623145,68.534814],[-51.478711,68.547168],[-51.133301,68.598438],[-51.069922,68.619189],[-50.945703,68.682666],[-50.800635,68.79126],[-50.807715,68.816992],[-51.030225,68.756299],[-51.148877,68.739941],[-51.249414,68.739941],[-51.156055,68.938428],[-51.119727,69.090527],[-51.084863,69.128271],[-50.792285,69.116846],[-50.392676,69.137402],[-50.297363,69.170605],[-50.298877,69.185352],[-50.459375,69.205518],[-50.536621,69.247852],[-50.671045,69.234473],[-50.851074,69.20625],[-51.076953,69.209473],[-51.057812,69.274805],[-50.892236,69.411768],[-50.875195,69.474219],[-50.810596,69.599023],[-50.804102,69.663037],[-50.720264,69.725342],[-50.459082,69.769727],[-50.349463,69.79624],[-50.343457,69.825244],[-50.5,69.935791],[-50.460254,69.966309],[-50.3375,69.994141],[-50.291699,70.014453],[-50.322949,70.027148],[-50.436084,70.039355],[-50.609863,70.014941],[-50.802344,70.003223],[-50.972705,70.039893],[-51.105713,70.057422],[-51.189941,70.051904],[-51.418848,69.989209],[-51.499072,69.987158],[-51.598096,70.004541],[-52.254639,70.058936],[-52.336035,70.078125],[-52.57124,70.172119],[-52.765039,70.234131],[-53.023047,70.301904],[-53.35752,70.35332],[-53.768506,70.388525],[-54.014453,70.42168],[-54.135645,70.468408],[-54.343311,70.571191],[-54.501172,70.656885],[-54.530762,70.699268],[-54.437988,70.751611],[-54.343555,70.789209],[-54.16582,70.820117],[-53.85918,70.809912],[-53.694434,70.796094],[-53.513086,70.766602],[-53.376025,70.761035],[-53.091309,70.769385],[-52.801953,70.750586],[-52.63042,70.729932],[-52.405225,70.686768],[-51.783789,70.503223],[-51.524463,70.439453],[-51.411719,70.431787],[-50.946875,70.363623],[-50.872363,70.364893],[-50.682129,70.396875],[-50.663281,70.417578],[-50.727539,70.437988],[-50.932666,70.453857],[-51.17334,70.529102],[-51.322852,70.58877],[-51.339893,70.687549],[-51.32041,70.742871],[-51.282813,70.768018],[-51.256592,70.852686],[-51.396094,70.903027],[-51.493555,70.918896],[-51.752686,70.992236],[-51.774316,71.010449],[-51.650098,71.019043],[-51.528418,71.014014],[-51.26709,70.976855],[-51.130078,70.971729],[-51.03042,70.986279],[-51.018945,71.001318],[-51.177783,71.043457],[-51.37666,71.119043],[-51.791895,71.130127],[-52.061377,71.121631],[-52.233594,71.147559],[-52.416895,71.189697],[-52.53457,71.200439],[-52.775,71.174023],[-52.89668,71.170703],[-53.007568,71.17998],[-53.117041,71.312891],[-53.087891,71.352734],[-53.0021,71.369971],[-52.937305,71.412842],[-52.891846,71.457666],[-52.749414,71.501514],[-51.967285,71.599121],[-51.769922,71.671729],[-51.778613,71.68291],[-51.911719,71.669434],[-52.081934,71.636719],[-52.195801,71.62998],[-52.656299,71.672266],[-52.728076,71.662646],[-52.914551,71.601904],[-53.167529,71.535938],[-53.284082,71.539941],[-53.440088,71.579004],[-53.464844,71.606787],[-53.476025,71.640186],[-53.304736,71.685889],[-53.249707,71.710156],[-53.138867,71.775195],[-53.144531,71.807422],[-53.333691,71.789746],[-53.35835,71.819629],[-53.355273,71.870898],[-53.373633,71.935742],[-53.420117,71.999756],[-53.575391,72.098047],[-53.639795,72.12334],[-53.692871,72.159668],[-53.809863,72.292578],[-53.775977,72.32583],[-53.672021,72.351025],[-53.652148,72.362646],[-53.900537,72.341748],[-53.927734,72.318799],[-53.880908,72.284961],[-53.847461,72.239844],[-53.827539,72.183447],[-53.792871,72.134082],[-53.70293,72.080029],[-53.630957,72.051514],[-53.513672,71.97627],[-53.4625,71.893555],[-53.477588,71.849951],[-53.568652,71.805566],[-53.71543,71.757666],[-53.759863,71.718018],[-53.779687,71.678516],[-53.894092,71.641992],[-53.964355,71.655664],[-54.019922,71.657861],[-53.954297,71.592676],[-53.912061,71.525928],[-53.962988,71.458984],[-54.098926,71.418506],[-54.172705,71.417285],[-54.317725,71.384473],[-54.689062,71.367236],[-54.818311,71.375293],[-55.055371,71.408594],[-55.336426,71.426758],[-55.4479,71.471777],[-55.594043,71.553516],[-55.667822,71.626758],[-55.669336,71.691504],[-55.629785,71.738623],[-55.549219,71.768262],[-55.452441,71.957666],[-55.315576,72.110693],[-54.970898,72.268408],[-54.872607,72.325439],[-54.840137,72.356104],[-54.840625,72.379395],[-54.896338,72.394189],[-55.320117,72.199561],[-55.581445,72.178857],[-55.659473,72.222607],[-55.63584,72.300439],[-55.589307,72.318506],[-55.37793,72.311133],[-55.295703,72.354395],[-55.427979,72.419873],[-55.56875,72.437012],[-55.601709,72.453467],[-55.456787,72.503271],[-55.121875,72.499609],[-55.04624,72.534424],[-54.924951,72.571973],[-54.790381,72.641602],[-54.740039,72.700195],[-54.728711,72.750488],[-54.757715,72.791064],[-54.76084,72.831738],[-54.737939,72.87251],[-54.773096,72.917578],[-54.866211,72.966846],[-55.073096,73.015137],[-55.133984,72.960645],[-55.198437,72.938232],[-55.288916,72.933203],[-55.372412,72.956152],[-55.459521,72.964404],[-55.545117,72.984912],[-55.633984,72.991406],[-55.668555,73.00791],[-55.69082,73.054102],[-55.692773,73.112842],[-55.592285,73.140283],[-55.452344,73.161914],[-55.358691,73.20293],[-55.297168,73.262305],[-55.288281,73.3271],[-55.332031,73.397363],[-55.445703,73.460498],[-55.656201,73.399072],[-55.738867,73.383984],[-55.75791,73.42793],[-55.787061,73.460498],[-55.875537,73.504639],[-55.991992,73.536816],[-56.104053,73.558154],[-56.10918,73.590771],[-56.082617,73.62749],[-56.033008,73.670312],[-55.968408,73.75957],[-55.897314,73.751611],[-55.838281,73.759717],[-55.872412,73.833447],[-55.929492,73.89541],[-55.996533,73.930615],[-55.998926,73.945947],[-56.014453,73.963867],[-56.066211,74.007275],[-56.124219,74.039062],[-56.225391,74.129102],[-56.298486,74.163428],[-56.392187,74.181201],[-56.493164,74.182178],[-56.655176,74.158545],[-56.954297,74.131201],[-57.191113,74.118213],[-57.230566,74.125293],[-57.112109,74.159473],[-56.9375,74.195068],[-56.706348,74.219189],[-56.638965,74.278369],[-56.663916,74.32959],[-56.654297,74.378125],[-56.717676,74.429248],[-56.656006,74.457568],[-56.445557,74.486084],[-56.350293,74.490479],[-56.255469,74.526807],[-56.52207,74.614307],[-56.801318,74.67168],[-56.871143,74.694971],[-56.932568,74.73335],[-56.985547,74.786768],[-57.07168,74.840234],[-57.190869,74.89375],[-57.364795,74.945459],[-57.813184,75.03999],[-57.96709,75.105176],[-58.108838,75.204932],[-58.179688,75.247461],[-58.25332,75.278955],[-58.565527,75.352734],[-58.603467,75.385303],[-58.281201,75.47207],[-58.249658,75.506689],[-58.381299,75.612012],[-58.516211,75.689063],[-58.663086,75.716406],[-58.881445,75.730469],[-59.081592,75.764697],[-59.263623,75.818896],[-59.445312,75.858594],[-59.717432,75.896289],[-60.172754,75.993311],[-60.874609,76.097168],[-61.188232,76.157861],[-61.374805,76.17998],[-61.62085,76.185645],[-62.09668,76.242334],[-62.496191,76.260449],[-62.742871,76.252148],[-62.823437,76.261523],[-63.005811,76.319092],[-63.291309,76.352051],[-63.438867,76.339453],[-63.621973,76.277881],[-63.843066,76.217139],[-63.960352,76.208936],[-64.135205,76.264502],[-64.223193,76.30332],[-64.307275,76.316504],[-64.387305,76.304004],[-64.543408,76.253076],[-64.69209,76.21626],[-64.911963,76.17251],[-65.087646,76.151514],[-65.313232,76.146387],[-65.369922,76.130566],[-65.456787,76.129834],[-65.57373,76.144238],[-65.683301,76.172705],[-65.785449,76.215332],[-65.875732,76.23833],[-65.954053,76.241699],[-66.134033,76.219629],[-66.361768,76.154785],[-66.465771,76.13916],[-66.553223,76.145947],[-66.659961,76.166162],[-66.874023,76.217871],[-66.992578,76.212939],[-67.078711,76.194824],[-67.054785,76.151855],[-66.853906,76.05],[-66.674805,75.977393],[-66.826172,75.968799],[-68.14873,76.067041],[-68.317285,76.090771],[-68.560645,76.150195],[-68.763086,76.186621],[-69.107568,76.280859],[-69.3729,76.331885],[-69.460889,76.371729],[-69.484082,76.39917],[-69.399658,76.436279],[-68.86499,76.561377],[-68.660742,76.586621],[-68.24541,76.616748],[-68.147217,76.635645],[-68.114258,76.650635],[-68.223389,76.677686],[-68.767383,76.668018],[-69.252051,76.686133],[-69.673828,76.735889],[-69.747217,76.752393],[-69.818652,76.782764],[-69.888086,76.827051],[-69.872217,76.876611],[-69.771045,76.931445],[-69.711719,76.969043],[-69.694238,76.989453],[-70.224463,76.85459],[-70.441309,76.807373],[-70.613135,76.821826],[-70.733691,76.844189],[-70.792822,76.869092],[-70.790625,76.896484],[-70.77124,76.916504],[-70.734668,76.929004],[-71.015039,76.984863],[-71.141455,77.028662],[-71.154883,77.073877],[-71.055469,77.120508],[-70.958105,77.154346],[-70.862842,77.175439],[-70.603711,77.193848],[-69.656543,77.229004],[-68.97832,77.195312],[-68.747461,77.306934],[-68.591602,77.342529],[-68.135547,77.37959],[-67.433789,77.384668],[-66.937988,77.364209],[-66.705762,77.338037],[-66.389453,77.280273],[-66.371289,77.297705],[-66.447656,77.349805],[-66.453076,77.393066],[-66.325293,77.468213],[-66.266455,77.515381],[-66.306445,77.564502],[-66.445361,77.615674],[-66.691211,77.681201],[-66.823535,77.686621],[-66.970654,77.67085],[-67.147363,77.634521],[-67.514648,77.54292],[-67.688086,77.523779],[-67.977344,77.518896],[-68.137305,77.530469],[-68.291895,77.544189],[-68.533496,77.592773],[-68.621533,77.601855],[-68.728223,77.580566],[-68.853662,77.528857],[-68.974561,77.492627],[-69.090918,77.471924],[-69.199658,77.462939],[-69.351367,77.467139],[-69.976758,77.547656],[-70.118164,77.583496],[-70.126367,77.637793],[-70.318311,77.690381],[-70.5354,77.699561],[-70.561914,77.717187],[-70.286621,77.798242],[-70.081494,77.831396],[-70.114453,77.841357],[-70.412402,77.843115],[-70.613525,77.8],[-70.728711,77.792725],[-70.993604,77.791553],[-71.271631,77.813135],[-71.389844,77.832031],[-71.512402,77.875391],[-71.649902,77.899805],[-72.064941,77.936816],[-72.158545,77.956934],[-72.247266,77.99043],[-72.586328,78.085205],[-72.791504,78.154883],[-72.818066,78.194336],[-72.581299,78.279102],[-72.570947,78.29873],[-72.672461,78.335303],[-72.714795,78.362305],[-72.679736,78.399561],[-72.47251,78.482031],[-72.395605,78.504346],[-72.023682,78.552783],[-71.651318,78.623145],[-71.515625,78.638965],[-71.394775,78.642627],[-70.905762,78.638477],[-70.754102,78.655811],[-70.625391,78.690137],[-70.414209,78.724902],[-69.973535,78.777686],[-68.993457,78.857422],[-68.929639,78.866797],[-68.923926,78.881934],[-69.011963,78.923047],[-69.030518,78.942871],[-68.829834,78.979736],[-68.377051,79.037842],[-68.067529,79.06582],[-67.868359,79.067871],[-67.707764,79.080371],[-67.482227,79.116895],[-67.354541,79.12334],[-66.58374,79.137695],[-66.242773,79.117822],[-66.075342,79.118213],[-65.967871,79.132373],[-65.825537,79.17373],[-65.559766,79.276465],[-65.419873,79.340234],[-65.287793,79.437305],[-65.116943,79.589014],[-64.989258,79.736963],[-64.904639,79.88125],[-64.838965,79.969189],[-64.792285,80.000635],[-64.632422,80.040576],[-64.465723,80.07168],[-64.17915,80.099268],[-64.205273,80.112109],[-64.326807,80.133594],[-64.439941,80.141846],[-64.544629,80.136914],[-64.735254,80.104443],[-64.982227,80.082471],[-65.222119,80.085938],[-65.394922,80.077734],[-65.553418,80.047998],[-65.810449,80.024072],[-65.981934,80.029492],[-66.291504,80.072266],[-66.447705,80.080273],[-66.843652,80.076221],[-66.959473,80.092041],[-67.060645,80.123145],[-67.141309,80.166455],[-67.201465,80.222168],[-67.193164,80.280078],[-67.050635,80.384521],[-66.995898,80.412988],[-66.610059,80.52959],[-66.372314,80.58418],[-66.135693,80.625],[-65.963281,80.648975],[-65.800977,80.659717],[-65.645215,80.685059],[-65.358203,80.766504],[-65.062158,80.836328],[-64.693799,80.966016],[-64.515527,81],[-63.891553,81.056445],[-63.721973,81.057324],[-63.578027,81.043262],[-63.441699,81.013867],[-63.058594,80.885596],[-63.028662,80.889551],[-63.095459,80.938086],[-63.235205,81.08335],[-63.2125,81.143115],[-62.993262,81.206982],[-62.903369,81.218359],[-62.671924,81.214111],[-62.298877,81.194385],[-62.049414,81.172754],[-61.860352,81.137598],[-61.635596,81.115723],[-61.519092,81.116797],[-61.435986,81.133594],[-61.316992,81.188477],[-61.162061,81.281494],[-61.1,81.396094],[-61.130762,81.532324],[-61.175977,81.631885],[-61.235693,81.69458],[-61.20293,81.746875],[-61.015039,81.80957],[-60.842871,81.855371],[-60.432373,81.920166],[-60.099463,81.937354],[-59.901904,81.933008],[-59.642285,81.902637],[-59.281934,81.884033],[-58.956787,81.825195],[-58.429785,81.690039],[-58.079932,81.622217],[-57.790332,81.591748],[-57.504883,81.539893],[-57.082861,81.429932],[-56.862061,81.382715],[-56.730664,81.365625],[-56.615137,81.362891],[-56.658154,81.394287],[-56.859668,81.459961],[-57.168408,81.532178],[-57.853027,81.662012],[-58.230078,81.753662],[-58.568213,81.858203],[-58.816748,81.92041],[-59.268018,81.98208],[-59.261816,82.006641],[-58.717383,82.093066],[-57.716895,82.168311],[-56.589355,82.227148],[-56.211963,82.221143],[-55.548682,82.245752],[-55.48623,82.282861],[-55.343604,82.299561],[-54.725879,82.351367],[-54.548877,82.350635],[-54.277051,82.326074],[-53.987305,82.279248],[-53.853223,82.236865],[-53.671338,82.164062],[-53.582031,82.061572],[-53.595508,81.738037],[-53.590771,81.676855],[-53.555664,81.653271],[-53.430127,81.688379],[-53.27998,81.753613],[-53.14502,81.799756],[-53.041211,81.870996],[-52.968506,81.967139],[-52.925537,82.038379],[-53.101953,82.118945],[-53.110742,82.251221],[-53.022559,82.321729],[-52.775586,82.321729],[-51.754004,82.078223],[-51.351855,82.025635],[-50.894434,81.895215],[-50.360059,81.909082],[-49.867041,81.893018],[-49.648828,81.897803],[-49.541064,81.918066],[-49.694287,81.972119],[-50.394824,82.120703],[-50.713135,82.237354],[-50.935547,82.382812],[-50.989941,82.460156],[-50.819531,82.474072],[-50.037109,82.472412],[-48.861182,82.40542],[-47.357422,82.173633],[-46.617334,82.096973],[-45.291064,81.828809],[-44.890967,81.788281],[-44.729492,81.779834],[-44.607617,81.812939],[-44.532422,81.848926],[-44.526904,81.896826],[-44.591016,81.956689],[-44.627734,82.025879],[-44.637109,82.104443],[-44.54707,82.260059],[-44.333203,82.310791],[-44.238867,82.368164],[-44.326562,82.471729],[-44.577246,82.542627],[-45.552441,82.725244],[-45.556543,82.747021],[-45.359619,82.770947],[-45.067432,82.784961],[-42.650732,82.741455],[-42.232959,82.725488],[-42.054639,82.709814],[-41.976562,82.68916],[-41.876465,82.680322],[-41.357275,82.70498],[-41.369629,82.75],[-41.434424,82.778613],[-44.239209,82.856787],[-44.761963,82.883545],[-45.02793,82.885596],[-45.302979,82.865088],[-45.87334,82.854883],[-46.136816,82.858838],[-46.478174,82.951904],[-46.169043,83.063867],[-45.908887,83.061328],[-45.4146,83.017676],[-45.121777,83.078662],[-44.656934,83.129053],[-44.197314,83.146826],[-43.19458,83.255127],[-43.009277,83.2646],[-42.775537,83.258789],[-42.259521,83.231982],[-42.05459,83.205176],[-41.819775,83.147754],[-41.683496,83.130029],[-41.521973,83.126758],[-41.300146,83.100781],[-40.979395,83.184863],[-40.689453,83.275195],[-40.356836,83.332178],[-39.886328,83.298926],[-39.588428,83.255566],[-39.316016,83.203906],[-38.931104,83.175342],[-38.278369,82.998877],[-38.15625,82.998633],[-38.098584,83.013574],[-38.037012,83.046289],[-38.014893,83.094824],[-37.934766,83.160742],[-37.992773,83.185107],[-38.539551,83.258154],[-38.64292,83.286279],[-38.747803,83.332568],[-38.749561,83.37085],[-38.648242,83.401025],[-38.541455,83.414795],[-38.187939,83.402295],[-38.071094,83.412109],[-37.96084,83.437646],[-37.828027,83.485547],[-37.72334,83.497754],[-37.486914,83.499121],[-37.122998,83.468408],[-36.804492,83.46582],[-36.6896,83.479932],[-36.672119,83.509912],[-36.644434,83.528955],[-36.606494,83.536963],[-35.451855,83.538623],[-35.165527,83.545752],[-34.94165,83.568457],[-34.667773,83.571143],[-34.42832,83.557568],[-34.131934,83.528662],[-33.837354,83.52998],[-33.39834,83.577246],[-32.984424,83.599609],[-30.70293,83.593408],[-29.952881,83.564844]]],[[[-52.731152,69.944727],[-52.398242,69.863428],[-52.045312,69.807227],[-52.010791,69.781543],[-51.983398,69.742676],[-51.977051,69.722412],[-51.985107,69.703613],[-52.007471,69.686279],[-51.981689,69.663965],[-51.907764,69.63667],[-51.900195,69.604785],[-51.988428,69.55],[-52.112598,69.489111],[-52.770459,69.363916],[-53.003125,69.342627],[-53.578418,69.256641],[-53.754346,69.260156],[-53.793164,69.264209],[-53.902051,69.302002],[-54.051172,69.337158],[-54.121045,69.364404],[-54.182715,69.403516],[-54.158154,69.427783],[-54.047363,69.437305],[-53.8896,69.43667],[-53.658301,69.465137],[-53.722266,69.490723],[-53.783057,69.506299],[-53.825,69.540332],[-53.921484,69.533691],[-53.99375,69.553174],[-54.133203,69.56543],[-54.496973,69.577197],[-54.734131,69.610547],[-54.804102,69.630518],[-54.865771,69.665039],[-54.919141,69.713623],[-54.84126,69.901904],[-54.787891,69.949854],[-54.6646,69.965674],[-54.363086,69.923828],[-54.322607,69.941895],[-54.652441,70.011182],[-54.773633,70.052539],[-54.809326,70.085107],[-54.830762,70.132959],[-54.830469,70.161084],[-54.815576,70.189404],[-54.78623,70.217773],[-54.705957,70.256152],[-54.371631,70.317285],[-54.007227,70.296436],[-53.375146,70.221289],[-53.296729,70.205371],[-53.10293,70.140869],[-52.731152,69.944727]]],[[[-51.013672,69.55249],[-51.17041,69.517139],[-51.202051,69.525],[-51.233984,69.551855],[-51.314893,69.674072],[-51.338867,69.732031],[-51.318945,69.804053],[-51.350293,69.854785],[-51.208887,69.913916],[-51.09458,69.92417],[-50.940234,69.908691],[-50.679004,69.848535],[-50.6979,69.829053],[-50.754395,69.797656],[-50.911719,69.756689],[-50.967236,69.664258],[-50.977881,69.617822],[-50.97041,69.583008],[-51.013672,69.55249]]],[[[-53.535205,71.04082],[-53.628809,71.034277],[-53.897559,71.085156],[-53.941162,71.104297],[-53.957812,71.127734],[-53.947461,71.155518],[-53.861865,71.207227],[-53.700977,71.283008],[-53.584473,71.29707],[-53.512354,71.249609],[-53.441406,71.18584],[-53.432129,71.153418],[-53.436914,71.115234],[-53.455469,71.08291],[-53.487793,71.056299],[-53.535205,71.04082]]],[[[-55.016895,72.791113],[-55.158203,72.723291],[-55.273584,72.684326],[-55.523633,72.568408],[-55.566602,72.564355],[-55.634131,72.579443],[-55.686523,72.609912],[-55.781006,72.617236],[-55.813916,72.636475],[-55.827148,72.652148],[-55.869043,72.662109],[-55.935693,72.668359],[-56.042676,72.656445],[-56.140869,72.668457],[-56.214795,72.719189],[-56.078076,72.753223],[-55.993555,72.782275],[-55.666455,72.793701],[-55.574219,72.780371],[-55.51626,72.780713],[-55.42793,72.788623],[-55.234668,72.824805],[-55.205811,72.84165],[-55.033008,72.820508],[-55.016895,72.791113]]],[[[-71.667334,77.325293],[-72.023535,77.316455],[-72.374414,77.35542],[-72.494922,77.385547],[-72.489551,77.431641],[-72.436426,77.447559],[-72.246777,77.463525],[-72.089062,77.46709],[-71.982764,77.459961],[-71.73291,77.431641],[-71.552148,77.403271],[-71.433447,77.394385],[-71.46709,77.353662],[-71.667334,77.325293]]],[[[-44.864551,82.083643],[-45.067432,82.066016],[-45.490771,82.171826],[-46.161035,82.277686],[-46.751904,82.348193],[-47.30752,82.533398],[-47.351221,82.599219],[-47.272266,82.656934],[-46.787207,82.665723],[-46.39917,82.692139],[-45.411377,82.577539],[-44.91748,82.480518],[-44.749902,82.401123],[-44.776367,82.242383],[-44.864551,82.083643]]],[[[-25.432324,70.921338],[-25.397217,70.862451],[-25.393652,70.834668],[-25.401367,70.811279],[-25.420801,70.79458],[-25.467773,70.779687],[-25.380127,70.740576],[-25.35166,70.714307],[-25.346338,70.693311],[-25.402246,70.652686],[-25.800586,70.598926],[-25.911328,70.573047],[-26.049707,70.509131],[-26.217871,70.454053],[-26.273877,70.454346],[-26.33916,70.511426],[-26.604687,70.553369],[-27.104785,70.531494],[-27.690039,70.478662],[-27.897998,70.454004],[-28.003027,70.467139],[-28.035254,70.486816],[-28.036816,70.514355],[-27.967529,70.594824],[-27.939551,70.615283],[-27.805273,70.642041],[-27.714209,70.712793],[-27.743994,70.789746],[-27.708936,70.897119],[-27.617236,70.91377],[-27.3875,70.875635],[-27.238867,70.867578],[-26.975586,70.862695],[-26.621777,70.875635],[-26.337451,70.919238],[-25.818896,71.043652],[-25.726807,71.042041],[-25.66084,70.997949],[-25.612305,70.976318],[-25.458252,70.942529],[-25.432324,70.921338]]],[[[-18.664746,81.846484],[-18.767676,81.814307],[-19.031445,81.827197],[-19.369287,81.917285],[-19.594482,81.99126],[-19.610547,82.078125],[-19.494727,82.116699],[-19.314551,82.123193],[-19.066895,82.04917],[-18.812695,81.949463],[-18.664746,81.846484]]],[[[-17.6125,79.825879],[-18.03584,79.71123],[-18.662012,79.72002],[-19.032422,79.772949],[-19.138281,79.852344],[-18.997168,79.940479],[-18.547363,80.011084],[-17.98291,80.055176],[-17.471387,80.028711],[-17.40083,79.940479],[-17.6125,79.825879]]],[[[-18.997168,77.973779],[-19.129492,77.938525],[-19.217627,78.044336],[-19.297021,78.185449],[-19.314697,78.344189],[-19.111816,78.423584],[-19.005957,78.441211],[-18.9354,78.423584],[-18.953027,78.352979],[-18.953027,78.211914],[-18.882471,78.114893],[-18.997168,77.973779]]],[[[-18.582617,76.042334],[-18.697266,76.015869],[-19.085352,76.430371],[-19.085352,76.580273],[-19.058887,76.694971],[-18.882471,76.703809],[-18.732617,76.642041],[-18.662012,76.403906],[-18.582617,76.042334]]],[[[-18.000537,75.407324],[-17.921191,75.301514],[-17.885889,75.204443],[-17.762402,75.142773],[-17.497852,75.151514],[-17.391992,75.036914],[-17.586035,74.992773],[-18.35332,75.010449],[-18.670801,75.00166],[-18.891309,75.072168],[-18.882471,75.195654],[-18.856055,75.319141],[-18.635547,75.389648],[-18.450342,75.327979],[-18.229883,75.37207],[-18.000537,75.407324]]],[[[-17.953711,77.642334],[-18.147998,77.642334],[-18.22002,77.668359],[-18.174023,77.714355],[-17.903711,77.862598],[-17.813574,77.874609],[-17.681445,77.858594],[-17.641357,77.782471],[-17.729492,77.706396],[-17.953711,77.642334]]],[[[-37.03125,65.531982],[-37.186816,65.531348],[-37.238428,65.609863],[-37.2229,65.695459],[-37.04751,65.722266],[-36.953076,65.66333],[-36.986914,65.575586],[-37.03125,65.531982]]],[[[-46.266699,60.781396],[-46.381543,60.660303],[-46.496338,60.68667],[-46.553125,60.740771],[-46.666211,60.765918],[-46.788086,60.758398],[-46.78999,60.779834],[-46.393896,60.908789],[-46.205225,60.943506],[-46.218604,60.88916],[-46.254492,60.841553],[-46.266699,60.781396]]],[[[-51.675146,70.855225],[-51.808691,70.852539],[-52.119385,70.870654],[-52.144189,70.882275],[-52.148047,70.904395],[-52.106738,70.968018],[-51.969824,70.976465],[-51.806934,70.94165],[-51.631348,70.892139],[-51.606934,70.868848],[-51.675146,70.855225]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Denmark","SOV_A3":"DN1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Faroe Islands","ADM0_A3":"FRO","GEOU_DIF":0,"GEOUNIT":"Faroe Islands","GU_A3":"FRO","SU_DIF":0,"SUBUNIT":"Faroe Islands","SU_A3":"FRO","BRK_DIFF":0,"NAME":"Faeroe Is.","NAME_LONG":"Faeroe Islands","BRK_A3":"FRO","BRK_NAME":"Faeroe Islands","BRK_GROUP":null,"ABBREV":"Faeroe Is.","POSTAL":"FO","FORMAL_EN":"Føroyar Is. (Faeroe Is.)","FORMAL_FR":null,"NAME_CIAWF":"Faroe Islands","NOTE_ADM0":"Den.","NOTE_BRK":null,"NAME_SORT":"Faeroe Islands","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":12,"POP_EST":48678,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":3116,"GDP_YEAR":2018,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"FO","ISO_A2":"FO","ISO_A2_EH":"FO","ISO_A3":"FRO","ISO_A3_EH":"FRO","ISO_N3":"234","ISO_N3_EH":"234","UN_A3":"234","WB_A2":"FO","WB_A3":"FRO","WOE_ID":23424816,"WOE_ID_EH":23424816,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"FRO","ADM0_DIFF":null,"ADM0_TLC":"FRO","ADM0_A3_US":"FRO","ADM0_A3_FR":"FRO","ADM0_A3_RU":"FRO","ADM0_A3_ES":"FRO","ADM0_A3_CN":"FRO","ADM0_A3_TW":"FRO","ADM0_A3_IN":"FRO","ADM0_A3_NP":"FRO","ADM0_A3_PK":"FRO","ADM0_A3_DE":"FRO","ADM0_A3_GB":"FRO","ADM0_A3_BR":"FRO","ADM0_A3_IL":"FRO","ADM0_A3_PS":"FRO","ADM0_A3_SA":"FRO","ADM0_A3_EG":"FRO","ADM0_A3_MA":"FRO","ADM0_A3_PT":"FRO","ADM0_A3_AR":"FRO","ADM0_A3_JP":"FRO","ADM0_A3_KO":"FRO","ADM0_A3_VN":"FRO","ADM0_A3_TR":"FRO","ADM0_A3_ID":"FRO","ADM0_A3_PL":"FRO","ADM0_A3_GR":"FRO","ADM0_A3_IT":"FRO","ADM0_A3_NL":"FRO","ADM0_A3_SE":"FRO","ADM0_A3_BD":"FRO","ADM0_A3_UA":"FRO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":14,"ABBREV_LEN":10,"TINY":3,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-7.058429,"LABEL_Y":62.185604,"NE_ID":1159320549,"WIKIDATAID":"Q4628","NAME_AR":"جزر فارو","NAME_BN":"ফ্যারো দ্বীপপুঞ্জ","NAME_DE":"Färöer","NAME_EN":"Faroe Islands","NAME_ES":"Islas Feroe","NAME_FA":"جزایر فارو","NAME_FR":"îles Féroé","NAME_EL":"Νήσοι Φερόες","NAME_HE":"איי פארו","NAME_HI":"फ़रो द्वीपसमूह","NAME_HU":"Feröer","NAME_ID":"Kepulauan Faroe","NAME_IT":"Fær Øer","NAME_JA":"フェロー諸島","NAME_KO":"페로 제도","NAME_NL":"Faeröer","NAME_PL":"Wyspy Owcze","NAME_PT":"Ilhas Feroe","NAME_RU":"Фарерские острова","NAME_SV":"Färöarna","NAME_TR":"Faroe Adaları","NAME_UK":"Фарерські острови","NAME_UR":"جزائرفارو","NAME_VI":"Quần đảo Faroe","NAME_ZH":"法罗群岛","NAME_ZHT":"法羅群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-7.422607,61.414307,-6.406055,62.355664],"geometry":{"type":"MultiPolygon","coordinates":[[[[-6.623193,61.805957],[-6.642773,61.768311],[-6.670166,61.768652],[-6.764258,61.815332],[-6.83916,61.840771],[-6.863965,61.862256],[-6.884766,61.899121],[-6.841797,61.903711],[-6.790771,61.895361],[-6.662109,61.861768],[-6.62583,61.826709],[-6.623193,61.805957]]],[[[-6.699463,61.444629],[-6.679688,61.414307],[-6.703027,61.417676],[-6.770508,61.452246],[-6.888135,61.534766],[-6.929248,61.60293],[-6.934863,61.634326],[-6.905908,61.630811],[-6.881641,61.602783],[-6.77002,61.584375],[-6.740625,61.570508],[-6.741064,61.536377],[-6.703516,61.495947],[-6.699463,61.444629]]],[[[-7.186865,62.139307],[-7.097119,62.100537],[-7.065186,62.073242],[-7.116797,62.046826],[-7.179395,62.040039],[-7.254932,62.046143],[-7.379102,62.074805],[-7.422607,62.140283],[-7.336768,62.138672],[-7.235303,62.151221],[-7.186865,62.139307]]],[[[-6.631055,62.227881],[-6.655811,62.093604],[-6.696436,62.094336],[-6.768896,62.131494],[-6.823437,62.139111],[-6.840527,62.119287],[-6.837695,62.09541],[-6.809473,62.08042],[-6.722559,61.990381],[-6.714404,61.96416],[-6.725195,61.951465],[-6.809717,61.977441],[-7.013574,62.093994],[-7.172168,62.285596],[-6.958643,62.31626],[-6.803662,62.265967],[-6.631055,62.227881]]],[[[-6.406055,62.258643],[-6.453857,62.186523],[-6.524707,62.197852],[-6.544141,62.205615],[-6.559473,62.224512],[-6.552051,62.278125],[-6.55459,62.355664],[-6.473047,62.291895],[-6.406055,62.258643]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Denmark","SOV_A3":"DN1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Denmark","ADM0_A3":"DNK","GEOU_DIF":0,"GEOUNIT":"Denmark","GU_A3":"DNK","SU_DIF":0,"SUBUNIT":"Denmark","SU_A3":"DNK","BRK_DIFF":0,"NAME":"Denmark","NAME_LONG":"Denmark","BRK_A3":"DNK","BRK_NAME":"Denmark","BRK_GROUP":null,"ABBREV":"Den.","POSTAL":"DK","FORMAL_EN":"Kingdom of Denmark","FORMAL_FR":null,"NAME_CIAWF":"Denmark","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Denmark","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":12,"POP_EST":5818553,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":350104,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"DA","ISO_A2":"DK","ISO_A2_EH":"DK","ISO_A3":"DNK","ISO_A3_EH":"DNK","ISO_N3":"208","ISO_N3_EH":"208","UN_A3":"208","WB_A2":"DK","WB_A3":"DNK","WOE_ID":23424796,"WOE_ID_EH":23424796,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"DNK","ADM0_DIFF":null,"ADM0_TLC":"DNK","ADM0_A3_US":"DNK","ADM0_A3_FR":"DNK","ADM0_A3_RU":"DNK","ADM0_A3_ES":"DNK","ADM0_A3_CN":"DNK","ADM0_A3_TW":"DNK","ADM0_A3_IN":"DNK","ADM0_A3_NP":"DNK","ADM0_A3_PK":"DNK","ADM0_A3_DE":"DNK","ADM0_A3_GB":"DNK","ADM0_A3_BR":"DNK","ADM0_A3_IL":"DNK","ADM0_A3_PS":"DNK","ADM0_A3_SA":"DNK","ADM0_A3_EG":"DNK","ADM0_A3_MA":"DNK","ADM0_A3_PT":"DNK","ADM0_A3_AR":"DNK","ADM0_A3_JP":"DNK","ADM0_A3_KO":"DNK","ADM0_A3_VN":"DNK","ADM0_A3_TR":"DNK","ADM0_A3_ID":"DNK","ADM0_A3_PL":"DNK","ADM0_A3_GR":"DNK","ADM0_A3_IT":"DNK","ADM0_A3_NL":"DNK","ADM0_A3_SE":"DNK","ADM0_A3_BD":"DNK","ADM0_A3_UA":"DNK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Northern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":9.018163,"LABEL_Y":55.966965,"NE_ID":1159320547,"WIKIDATAID":"Q35","NAME_AR":"الدنمارك","NAME_BN":"ডেনমার্ক","NAME_DE":"Dänemark","NAME_EN":"Denmark","NAME_ES":"Dinamarca","NAME_FA":"دانمارک","NAME_FR":"Danemark","NAME_EL":"Δανία","NAME_HE":"דנמרק","NAME_HI":"डेनमार्क","NAME_HU":"Dánia","NAME_ID":"Denmark","NAME_IT":"Danimarca","NAME_JA":"デンマーク","NAME_KO":"덴마크","NAME_NL":"Denemarken","NAME_PL":"Dania","NAME_PT":"Dinamarca","NAME_RU":"Дания","NAME_SV":"Danmark","NAME_TR":"Danimarka","NAME_UK":"Данія","NAME_UR":"ڈنمارک","NAME_VI":"Đan Mạch","NAME_ZH":"丹麦","NAME_ZHT":"丹麥","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[8.121484,54.628857,15.137109,57.736914],"geometry":{"type":"MultiPolygon","coordinates":[[[[12.56875,55.785059],[12.571191,55.684961],[12.545215,55.655811],[12.507031,55.636621],[12.407129,55.61626],[12.320605,55.587842],[12.243457,55.537891],[12.215039,55.466504],[12.275391,55.414258],[12.385156,55.385645],[12.413086,55.286182],[12.322461,55.237109],[12.089941,55.188135],[12.065527,55.069922],[12.073047,54.976758],[12.068848,54.909033],[12.050391,54.815332],[11.862305,54.772607],[11.740918,54.915332],[11.739844,54.972461],[11.703613,55.03916],[11.696777,55.095996],[11.653809,55.186914],[11.475879,55.211523],[11.406836,55.214746],[11.310254,55.197852],[11.286328,55.204443],[11.170703,55.328613],[11.189746,55.465625],[11.128027,55.534766],[11.119531,55.566064],[11.120996,55.600732],[11.070312,55.629297],[11.008789,55.644434],[10.978906,55.721533],[11.049609,55.740234],[11.224414,55.731201],[11.275488,55.736475],[11.322266,55.752539],[11.463672,55.879297],[11.45957,55.907227],[11.474707,55.943457],[11.627734,55.956885],[11.695898,55.90791],[11.682227,55.829492],[11.690918,55.729004],[11.783594,55.70166],[11.819727,55.697656],[11.858301,55.771875],[11.885352,55.807959],[11.92207,55.828076],[11.93457,55.895898],[11.912793,55.937305],[11.866406,55.968164],[12.039648,56.052148],[12.218945,56.118652],[12.323242,56.122119],[12.428223,56.105859],[12.525781,56.083398],[12.578711,56.064062],[12.608398,56.033008],[12.542969,55.958984],[12.524805,55.918457],[12.56875,55.785059]]],[[[9.739746,54.825537],[9.725,54.825537],[9.66123,54.834375],[9.61582,54.85542],[9.49873,54.84043],[9.341992,54.806299],[9.25498,54.808008],[9.18584,54.844678],[8.90293,54.896924],[8.857227,54.901123],[8.670703,54.90332],[8.670313,54.903418],[8.661426,54.985937],[8.638281,55.045557],[8.572949,55.134277],[8.669824,55.155664],[8.651074,55.328564],[8.615918,55.418213],[8.345313,55.510303],[8.132129,55.599805],[8.181348,55.901172],[8.202344,55.982373],[8.121484,56.139893],[8.129883,56.321191],[8.163965,56.606885],[8.231738,56.618066],[8.281445,56.616699],[8.473145,56.56543],[8.55293,56.560303],[8.607617,56.514502],[8.67168,56.495654],[8.718066,56.544287],[8.736133,56.627441],[8.888086,56.735059],[8.994531,56.774805],[9.06709,56.793848],[9.140332,56.750439],[9.196387,56.70166],[9.209668,56.808398],[9.254883,57.011719],[9.110449,57.043652],[8.992773,57.016113],[8.876074,56.887256],[8.771973,56.725293],[8.603125,56.7104],[8.468359,56.664551],[8.34668,56.712109],[8.268262,56.754004],[8.266309,56.815332],[8.284082,56.852344],[8.427051,56.984424],[8.618555,57.111279],[8.811523,57.110059],[8.952246,57.150586],[9.036328,57.15542],[9.298828,57.146533],[9.433594,57.174316],[9.554297,57.232471],[9.815137,57.478418],[9.962305,57.580957],[10.259082,57.617041],[10.533301,57.7354],[10.609961,57.736914],[10.480957,57.648682],[10.460254,57.614551],[10.444629,57.562207],[10.537109,57.448535],[10.517578,57.379346],[10.524121,57.243213],[10.436914,57.172266],[10.338477,57.021338],[10.296094,56.999121],[10.287012,56.822949],[10.29668,56.780908],[10.282715,56.620508],[10.383594,56.554834],[10.490234,56.520508],[10.845898,56.521729],[10.882812,56.492871],[10.926172,56.443262],[10.894434,56.359033],[10.856445,56.295508],[10.753418,56.241992],[10.621191,56.2021],[10.538965,56.200342],[10.426953,56.276172],[10.37373,56.251562],[10.31875,56.212891],[10.22666,56.005371],[10.183008,55.865186],[10.159375,55.853809],[10.107324,55.874463],[10.017383,55.876074],[9.903711,55.842822],[9.962012,55.813086],[10.023633,55.761426],[9.999023,55.735547],[9.899023,55.707568],[9.810352,55.650977],[9.773242,55.608154],[9.661426,55.557471],[9.591113,55.493213],[9.625586,55.413574],[9.640234,55.343652],[9.670996,55.266406],[9.643262,55.204736],[9.504785,55.11626],[9.453711,55.039551],[9.572363,55.040527],[9.64541,55.022803],[9.688184,55.000146],[9.732324,54.968018],[9.705273,54.92832],[9.739746,54.825537]]],[[[10.645117,55.609814],[10.686816,55.557617],[10.738086,55.446338],[10.819238,55.321875],[10.785352,55.269775],[10.808398,55.203027],[10.785254,55.133398],[10.623828,55.052441],[10.442773,55.048779],[10.25459,55.087891],[9.98877,55.163184],[9.967383,55.205469],[9.930078,55.228906],[9.858984,55.357227],[9.860645,55.515479],[9.994238,55.535303],[10.286133,55.61084],[10.353613,55.598975],[10.424023,55.560352],[10.505078,55.558057],[10.622754,55.612842],[10.645117,55.609814]]],[[[11.361426,54.89165],[11.538379,54.82959],[11.658105,54.833154],[11.739551,54.807422],[11.758984,54.767676],[11.765918,54.679443],[11.680371,54.653711],[11.585938,54.662451],[11.457422,54.628857],[11.035547,54.773096],[11.041699,54.893359],[11.058594,54.940576],[11.258496,54.951807],[11.361426,54.89165]]],[[[10.734082,54.750732],[10.689746,54.745068],[10.629492,54.826074],[10.62168,54.851416],[10.69248,54.903271],[10.738281,54.962012],[10.856738,55.052197],[10.925,55.157861],[10.951074,55.156201],[10.920801,55.062109],[10.765234,54.799658],[10.734082,54.750732]]],[[[12.549219,54.965771],[12.511035,54.950879],[12.35752,54.961816],[12.184473,54.89248],[12.118848,54.914404],[12.143652,54.958691],[12.161719,54.974805],[12.219922,54.993604],[12.258789,55.021094],[12.274023,55.064111],[12.310059,55.040918],[12.417188,55.031201],[12.469531,55.01748],[12.513281,54.997314],[12.549219,54.965771]]],[[[12.665723,55.596533],[12.571582,55.554004],[12.550879,55.55625],[12.520313,55.6146],[12.569922,55.650098],[12.599219,55.680225],[12.62002,55.679346],[12.648438,55.646777],[12.665723,55.596533]]],[[[10.484375,54.847559],[10.417285,54.837158],[10.340527,54.858936],[10.215625,54.940967],[10.199902,54.962744],[10.265527,54.948828],[10.346973,54.905957],[10.413672,54.896826],[10.504883,54.860547],[10.484375,54.847559]]],[[[10.06123,54.886377],[9.957129,54.872461],[9.903906,54.896631],[9.80625,54.906006],[9.771191,55.059912],[9.78125,55.069043],[9.830371,55.058252],[9.998828,54.986475],[10.057715,54.90791],[10.06123,54.886377]]],[[[10.607324,55.783057],[10.590332,55.765088],[10.526953,55.783789],[10.520313,55.848486],[10.544336,55.906592],[10.516113,55.958545],[10.547168,55.991943],[10.636328,55.91416],[10.661719,55.877588],[10.627344,55.833887],[10.607324,55.783057]]],[[[11.052148,57.252539],[11.011426,57.229102],[10.873828,57.262256],[10.93457,57.308594],[11.085742,57.329932],[11.174512,57.3229],[11.076855,57.276904],[11.052148,57.252539]]],[[[15.087695,55.021875],[15.050781,55.004932],[14.885547,55.032959],[14.68418,55.102246],[14.713672,55.238037],[14.765332,55.296729],[15.132617,55.144531],[15.137109,55.087158],[15.087695,55.021875]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Czechia","SOV_A3":"CZE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Czechia","ADM0_A3":"CZE","GEOU_DIF":0,"GEOUNIT":"Czechia","GU_A3":"CZE","SU_DIF":0,"SUBUNIT":"Czechia","SU_A3":"CZE","BRK_DIFF":0,"NAME":"Czechia","NAME_LONG":"Czech Republic","BRK_A3":"CZE","BRK_NAME":"Czechia","BRK_GROUP":null,"ABBREV":"Cz.","POSTAL":"CZ","FORMAL_EN":"Czech Republic","FORMAL_FR":"la République tchèque","NAME_CIAWF":"Czechia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Czechia","NAME_ALT":"Česko","MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":2,"MAPCOLOR13":6,"POP_EST":10669709,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":250680,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"EZ","ISO_A2":"CZ","ISO_A2_EH":"CZ","ISO_A3":"CZE","ISO_A3_EH":"CZE","ISO_N3":"203","ISO_N3_EH":"203","UN_A3":"203","WB_A2":"CZ","WB_A3":"CZE","WOE_ID":23424810,"WOE_ID_EH":23424810,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CZE","ADM0_DIFF":null,"ADM0_TLC":"CZE","ADM0_A3_US":"CZE","ADM0_A3_FR":"CZE","ADM0_A3_RU":"CZE","ADM0_A3_ES":"CZE","ADM0_A3_CN":"CZE","ADM0_A3_TW":"CZE","ADM0_A3_IN":"CZE","ADM0_A3_NP":"CZE","ADM0_A3_PK":"CZE","ADM0_A3_DE":"CZE","ADM0_A3_GB":"CZE","ADM0_A3_BR":"CZE","ADM0_A3_IL":"CZE","ADM0_A3_PS":"CZE","ADM0_A3_SA":"CZE","ADM0_A3_EG":"CZE","ADM0_A3_MA":"CZE","ADM0_A3_PT":"CZE","ADM0_A3_AR":"CZE","ADM0_A3_JP":"CZE","ADM0_A3_KO":"CZE","ADM0_A3_VN":"CZE","ADM0_A3_TR":"CZE","ADM0_A3_ID":"CZE","ADM0_A3_PL":"CZE","ADM0_A3_GR":"CZE","ADM0_A3_IT":"CZE","ADM0_A3_NL":"CZE","ADM0_A3_SE":"CZE","ADM0_A3_BD":"CZE","ADM0_A3_UA":"CZE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":14,"ABBREV_LEN":3,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":15.377555,"LABEL_Y":49.882364,"NE_ID":1159320535,"WIKIDATAID":"Q213","NAME_AR":"التشيك","NAME_BN":"চেক প্রজাতন্ত্র","NAME_DE":"Tschechien","NAME_EN":"Czech Republic","NAME_ES":"República Checa","NAME_FA":"جمهوری چک","NAME_FR":"Tchéquie","NAME_EL":"Τσεχία","NAME_HE":"צ'כיה","NAME_HI":"चेक गणराज्य","NAME_HU":"Csehország","NAME_ID":"Republik Ceko","NAME_IT":"Repubblica Ceca","NAME_JA":"チェコ","NAME_KO":"체코","NAME_NL":"Tsjechië","NAME_PL":"Czechy","NAME_PT":"Chéquia","NAME_RU":"Чехия","NAME_SV":"Tjeckien","NAME_TR":"Çek Cumhuriyeti","NAME_UK":"Чехія","NAME_UR":"چیک جمہوریہ","NAME_VI":"Cộng hòa Séc","NAME_ZH":"捷克","NAME_ZHT":"捷克共和國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[12.089746,48.576221,18.832227,51.037793],"geometry":{"type":"Polygon","coordinates":[[[18.832227,49.510791],[18.807031,49.509229],[18.749707,49.493994],[18.676172,49.488477],[18.596484,49.491455],[18.53457,49.464697],[18.476074,49.421094],[18.41582,49.390918],[18.383105,49.363916],[18.364844,49.33623],[18.160938,49.257373],[18.132617,49.224561],[18.109961,49.179785],[18.100391,49.119336],[18.085938,49.065137],[18.050879,49.036523],[17.940723,49.011963],[17.913281,48.99873],[17.892676,48.971143],[17.830859,48.928613],[17.758496,48.888135],[17.625391,48.841846],[17.482617,48.827783],[17.296875,48.842822],[17.188477,48.860937],[17.135645,48.841064],[17.063281,48.780762],[16.985254,48.676904],[16.953125,48.598828],[16.92832,48.620898],[16.883691,48.703711],[16.833203,48.714307],[16.764453,48.722021],[16.712695,48.734229],[16.600977,48.781885],[16.543555,48.79624],[16.47793,48.800098],[16.414844,48.77207],[16.367285,48.738965],[16.219336,48.739404],[16.057227,48.754785],[15.825195,48.864453],[15.765039,48.86543],[15.700781,48.860449],[15.599414,48.886377],[15.40293,48.957373],[15.310938,48.974023],[15.252734,48.963867],[15.199609,48.948145],[15.161719,48.946289],[15.139746,48.969336],[15.066797,48.997852],[14.993457,49.001123],[14.972168,48.983936],[14.947363,48.827734],[14.922559,48.771387],[14.821875,48.774023],[14.785938,48.747363],[14.706641,48.671924],[14.691309,48.599219],[14.553906,48.61333],[14.488672,48.625537],[14.431055,48.61626],[14.367578,48.576221],[14.189844,48.578564],[14.049121,48.60249],[13.98877,48.692432],[13.924316,48.728027],[13.843164,48.759863],[13.814746,48.766943],[13.769922,48.815967],[13.684961,48.876709],[13.547656,48.959668],[13.440723,48.955566],[13.401172,48.977588],[13.383691,49.008105],[13.339063,49.060791],[13.28877,49.097461],[13.227832,49.11167],[13.140527,49.15835],[13.02373,49.260107],[12.916699,49.330469],[12.813379,49.329346],[12.747852,49.366211],[12.681152,49.414502],[12.632031,49.46123],[12.555762,49.574854],[12.500293,49.639697],[12.457031,49.679785],[12.408203,49.713184],[12.390527,49.739648],[12.450195,49.800146],[12.471875,49.830078],[12.497559,49.853076],[12.5125,49.877441],[12.512012,49.895801],[12.457617,49.955518],[12.38418,49.998584],[12.276465,50.042334],[12.207813,50.09751],[12.18252,50.148047],[12.175,50.17583],[12.127832,50.213428],[12.089746,50.268555],[12.089844,50.301758],[12.099219,50.310986],[12.134863,50.310937],[12.174805,50.288379],[12.231152,50.244873],[12.277344,50.181445],[12.305664,50.205713],[12.358594,50.273242],[12.452637,50.349805],[12.549023,50.393408],[12.635547,50.39707],[12.706445,50.409131],[12.76543,50.430957],[12.868262,50.422217],[12.942676,50.406445],[12.966797,50.416211],[12.99707,50.456055],[13.016406,50.490381],[13.181152,50.510498],[13.237695,50.576758],[13.269531,50.576416],[13.306055,50.586328],[13.341016,50.611426],[13.374609,50.621729],[13.401172,50.609326],[13.436133,50.601074],[13.472559,50.616943],[13.526563,50.692822],[13.556738,50.704639],[13.701367,50.716504],[13.898535,50.761279],[13.998438,50.801123],[14.096484,50.822754],[14.201758,50.86123],[14.369043,50.89873],[14.377051,50.914062],[14.299414,50.952588],[14.27334,50.976904],[14.255859,51.001855],[14.283203,51.029492],[14.319727,51.037793],[14.367285,51.02627],[14.507324,51.009863],[14.545703,50.993945],[14.559668,50.954932],[14.595215,50.918604],[14.623828,50.914746],[14.613574,50.855566],[14.658203,50.832617],[14.72334,50.814697],[14.766504,50.818311],[14.797461,50.842334],[14.809375,50.858984],[14.895801,50.861377],[14.98291,50.886572],[14.989941,50.927246],[14.984473,51.003418],[14.99375,51.014355],[15.125977,50.992871],[15.258594,50.958545],[15.277051,50.883008],[15.312598,50.845752],[15.354395,50.811768],[15.394629,50.796289],[15.463965,50.793848],[15.643945,50.748877],[15.730566,50.739697],[15.819238,50.708691],[15.893945,50.676904],[15.948535,50.670264],[15.973828,50.635449],[16.007227,50.611621],[16.066406,50.629932],[16.282227,50.655615],[16.359961,50.621387],[16.4125,50.585156],[16.419727,50.573633],[16.392285,50.54165],[16.379102,50.516895],[16.356641,50.500488],[16.28252,50.483008],[16.240723,50.454687],[16.210352,50.42373],[16.230762,50.394092],[16.291309,50.371875],[16.33418,50.366895],[16.350488,50.345215],[16.487598,50.248389],[16.59668,50.121924],[16.63916,50.102148],[16.679102,50.097461],[16.725293,50.116064],[16.778613,50.157031],[16.841797,50.186719],[16.895313,50.201953],[16.989648,50.236914],[16.993359,50.259717],[16.914746,50.345215],[16.869141,50.414502],[16.880078,50.427051],[16.980762,50.416113],[17.151953,50.37832],[17.415234,50.254785],[17.462305,50.254785],[17.55459,50.264062],[17.654688,50.284229],[17.702246,50.307178],[17.720117,50.298633],[17.735449,50.230762],[17.709277,50.193555],[17.589355,50.157471],[17.596289,50.139502],[17.627051,50.116406],[17.681055,50.100781],[17.746582,50.056787],[17.791699,50.006592],[17.83125,49.983301],[17.874805,49.972266],[17.983789,49.999072],[18.014648,50.020264],[18.02832,50.035254],[18.049512,50.031934],[18.087695,50.007275],[18.099219,49.992773],[18.205273,49.964746],[18.266309,49.930273],[18.305273,49.914062],[18.348438,49.929834],[18.516211,49.902393],[18.562402,49.879346],[18.577148,49.841113],[18.568848,49.81792],[18.594629,49.757812],[18.806934,49.613721],[18.829297,49.540137],[18.832227,49.510791]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Northern Cyprus","SOV_A3":"CYN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Northern Cyprus","ADM0_A3":"CYN","GEOU_DIF":0,"GEOUNIT":"Northern Cyprus","GU_A3":"CYN","SU_DIF":0,"SUBUNIT":"Northern Cyprus","SU_A3":"CYN","BRK_DIFF":0,"NAME":"N. Cyprus","NAME_LONG":"Northern Cyprus","BRK_A3":"CYN","BRK_NAME":"N. Cyprus","BRK_GROUP":null,"ABBREV":"N. Cy.","POSTAL":"CN","FORMAL_EN":"Turkish Republic of Northern Cyprus","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"Self admin.","NOTE_BRK":"Self admin.; Claimed by Cyprus","NAME_SORT":"Cyprus, Northern","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":8,"POP_EST":326000,"POP_RANK":10,"POP_YEAR":2017,"GDP_MD":3600,"GDP_YEAR":2013,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"-99","ISO_A2":"-99","ISO_A2_EH":"-99","ISO_A3":"-99","ISO_A3_EH":"-99","ISO_N3":"-99","ISO_N3_EH":"-99","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":-90,"WOE_ID_EH":23424995,"WOE_NOTE":"WOE lists as subunit of united Cyprus","ADM0_ISO":"CYP","ADM0_DIFF":"1","ADM0_TLC":"CYN","ADM0_A3_US":"CYP","ADM0_A3_FR":"CYP","ADM0_A3_RU":"CYP","ADM0_A3_ES":"CYP","ADM0_A3_CN":"CYP","ADM0_A3_TW":"CYP","ADM0_A3_IN":"CYP","ADM0_A3_NP":"CYP","ADM0_A3_PK":"CYP","ADM0_A3_DE":"CYP","ADM0_A3_GB":"CYP","ADM0_A3_BR":"CYP","ADM0_A3_IL":"CYP","ADM0_A3_PS":"CYP","ADM0_A3_SA":"CYP","ADM0_A3_EG":"CYP","ADM0_A3_MA":"CYP","ADM0_A3_PT":"CYP","ADM0_A3_AR":"CYP","ADM0_A3_JP":"CYP","ADM0_A3_KO":"CYP","ADM0_A3_VN":"CYP","ADM0_A3_TR":"CYN","ADM0_A3_ID":"CYP","ADM0_A3_PL":"CYP","ADM0_A3_GR":"CYP","ADM0_A3_IT":"CYP","ADM0_A3_NL":"CYP","ADM0_A3_SE":"CYP","ADM0_A3_BD":"CYP","ADM0_A3_UA":"CYP","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":9,"LONG_LEN":15,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":6,"MAX_LABEL":10,"LABEL_X":33.692434,"LABEL_Y":35.216071,"NE_ID":1159320531,"WIKIDATAID":"Q23681","NAME_AR":"قبرص الشمالية","NAME_BN":"উত্তর সাইপ্রাস","NAME_DE":"Türkische Republik Nordzypern","NAME_EN":"Turkish Republic of Northern Cyprus","NAME_ES":"República Turca del Norte de Chipre","NAME_FA":"جمهوری ترک قبرس شمالی","NAME_FR":"Chypre du Nord","NAME_EL":"Τουρκική Δημοκρατία της Βόρειας Κύπρου","NAME_HE":"הרפובליקה הטורקית של צפון קפריסין","NAME_HI":"उत्तरी साइप्रस","NAME_HU":"Észak-Ciprus","NAME_ID":"Republik Turki Siprus Utara","NAME_IT":"Cipro del Nord","NAME_JA":"北キプロス・トルコ共和国","NAME_KO":"북키프로스","NAME_NL":"Noord-Cyprus","NAME_PL":"Cypr Północny","NAME_PT":"República Turca do Chipre do Norte","NAME_RU":"Турецкая Республика Северного Кипра","NAME_SV":"Nordcypern","NAME_TR":"Kuzey Kıbrıs Türk Cumhuriyeti","NAME_UK":"Турецька Республіка Північного Кіпру","NAME_UR":"ترک جمہوریہ شمالی قبرص","NAME_VI":"Bắc Síp","NAME_ZH":"北塞浦路斯土耳其共和国","NAME_ZHT":"北賽普勒斯土耳其共和國","FCLASS_ISO":"Unrecognized","TLC_DIFF":"1","FCLASS_TLC":"Admin-0 country","FCLASS_US":"Admin-0 breakaway and disputed","FCLASS_FR":"Unrecognized","FCLASS_RU":"Unrecognized","FCLASS_ES":"Unrecognized","FCLASS_CN":"Unrecognized","FCLASS_TW":"Unrecognized","FCLASS_IN":"Unrecognized","FCLASS_NP":"Unrecognized","FCLASS_PK":"Unrecognized","FCLASS_DE":"Unrecognized","FCLASS_GB":"Unrecognized","FCLASS_BR":"Unrecognized","FCLASS_IL":"Unrecognized","FCLASS_PS":"Unrecognized","FCLASS_SA":"Unrecognized","FCLASS_EG":"Unrecognized","FCLASS_MA":"Unrecognized","FCLASS_PT":"Unrecognized","FCLASS_AR":"Unrecognized","FCLASS_JP":"Unrecognized","FCLASS_KO":"Unrecognized","FCLASS_VN":"Unrecognized","FCLASS_TR":"Admin-0 country","FCLASS_ID":"Unrecognized","FCLASS_PL":"Unrecognized","FCLASS_GR":"Unrecognized","FCLASS_IT":"Unrecognized","FCLASS_NL":"Unrecognized","FCLASS_SE":"Unrecognized","FCLASS_BD":"Unrecognized","FCLASS_UA":"Unrecognized"},"bbox":[32.712695,35.000342,34.556055,35.662061],"geometry":{"type":"Polygon","coordinates":[[[34.004492,35.065234],[33.965723,35.056787],[33.90332,35.085449],[33.866406,35.093604],[33.832031,35.067187],[33.792285,35.048193],[33.756934,35.039746],[33.725781,35.037305],[33.675391,35.017871],[33.614453,35.022754],[33.525684,35.038672],[33.475781,35.000342],[33.463867,35.004932],[33.455957,35.101416],[33.424219,35.140918],[33.383789,35.162695],[33.325586,35.153613],[33.24834,35.156934],[33.191016,35.173145],[33.077539,35.146191],[32.985938,35.116406],[32.919531,35.087842],[32.869434,35.089404],[32.784082,35.115771],[32.720215,35.145361],[32.712695,35.171045],[32.772363,35.15957],[32.879883,35.180566],[32.926367,35.278076],[32.941602,35.39043],[33.123438,35.358203],[33.307813,35.341504],[33.458789,35.335889],[33.607617,35.35415],[34.063477,35.473975],[34.19248,35.545703],[34.272363,35.569971],[34.411133,35.629297],[34.556055,35.662061],[34.463184,35.593506],[33.941992,35.292041],[33.90791,35.202393],[33.93125,35.140381],[34.004492,35.065234]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Cyprus","SOV_A3":"CYP","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Cyprus","ADM0_A3":"CYP","GEOU_DIF":0,"GEOUNIT":"Cyprus","GU_A3":"CYP","SU_DIF":0,"SUBUNIT":"Cyprus","SU_A3":"CYP","BRK_DIFF":0,"NAME":"Cyprus","NAME_LONG":"Cyprus","BRK_A3":"CYP","BRK_NAME":"Cyprus","BRK_GROUP":null,"ABBREV":"Cyp.","POSTAL":"CY","FORMAL_EN":"Republic of Cyprus","FORMAL_FR":null,"NAME_CIAWF":"Cyprus","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Cyprus","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":3,"MAPCOLOR13":7,"POP_EST":1198575,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":24948,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"CY","ISO_A2":"CY","ISO_A2_EH":"CY","ISO_A3":"CYP","ISO_A3_EH":"CYP","ISO_N3":"196","ISO_N3_EH":"196","UN_A3":"196","WB_A2":"CY","WB_A3":"CYP","WOE_ID":-90,"WOE_ID_EH":23424994,"WOE_NOTE":"WOE lists as subunit of united Cyprus","ADM0_ISO":"CYP","ADM0_DIFF":null,"ADM0_TLC":"CYP","ADM0_A3_US":"CYP","ADM0_A3_FR":"CYP","ADM0_A3_RU":"CYP","ADM0_A3_ES":"CYP","ADM0_A3_CN":"CYP","ADM0_A3_TW":"CYP","ADM0_A3_IN":"CYP","ADM0_A3_NP":"CYP","ADM0_A3_PK":"CYP","ADM0_A3_DE":"CYP","ADM0_A3_GB":"CYP","ADM0_A3_BR":"CYP","ADM0_A3_IL":"CYP","ADM0_A3_PS":"CYP","ADM0_A3_SA":"CYP","ADM0_A3_EG":"CYP","ADM0_A3_MA":"CYP","ADM0_A3_PT":"CYP","ADM0_A3_AR":"CYP","ADM0_A3_JP":"CYP","ADM0_A3_KO":"CYP","ADM0_A3_VN":"CYP","ADM0_A3_TR":"CYP","ADM0_A3_ID":"CYP","ADM0_A3_PL":"CYP","ADM0_A3_GR":"CYP","ADM0_A3_IT":"CYP","ADM0_A3_NL":"CYP","ADM0_A3_SE":"CYP","ADM0_A3_BD":"CYP","ADM0_A3_UA":"CYP","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":33.084182,"LABEL_Y":34.913329,"NE_ID":1159320533,"WIKIDATAID":"Q229","NAME_AR":"قبرص","NAME_BN":"সাইপ্রাস","NAME_DE":"Republik Zypern","NAME_EN":"Cyprus","NAME_ES":"Chipre","NAME_FA":"قبرس","NAME_FR":"Chypre","NAME_EL":"Κύπρος","NAME_HE":"קפריסין","NAME_HI":"साइप्रस","NAME_HU":"Ciprus","NAME_ID":"Siprus","NAME_IT":"Cipro","NAME_JA":"キプロス","NAME_KO":"키프로스","NAME_NL":"Cyprus","NAME_PL":"Cypr","NAME_PT":"Chipre","NAME_RU":"Кипр","NAME_SV":"Cypern","NAME_TR":"Kıbrıs Cumhuriyeti","NAME_UK":"Кіпр","NAME_UR":"قبرص","NAME_VI":"Cộng hòa Síp","NAME_ZH":"塞浦路斯","NAME_ZHT":"賽普勒斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[32.300977,34.56958,34.050195,35.182666],"geometry":{"type":"Polygon","coordinates":[[[32.712695,35.171045],[32.720215,35.145361],[32.784082,35.115771],[32.869434,35.089404],[32.919531,35.087842],[32.985938,35.116406],[33.077539,35.146191],[33.191016,35.173145],[33.24834,35.156934],[33.325586,35.153613],[33.383789,35.162695],[33.424219,35.140918],[33.455957,35.101416],[33.463867,35.004932],[33.475781,35.000342],[33.525684,35.038672],[33.614453,35.022754],[33.675391,35.017871],[33.725781,35.037305],[33.756934,35.039746],[33.792285,35.048193],[33.832031,35.067187],[33.866406,35.093604],[33.90332,35.085449],[33.965723,35.056787],[34.004492,35.065234],[34.023633,35.045557],[34.050195,34.988379],[33.936523,34.971484],[33.822461,34.965918],[33.758984,34.973242],[33.699414,34.969873],[33.514453,34.806445],[33.414941,34.750879],[33.296582,34.717725],[33.176074,34.698047],[33.115527,34.695557],[33.062305,34.674805],[33.024902,34.636914],[33.023926,34.6],[33.00791,34.56958],[32.941797,34.575879],[32.914258,34.635498],[32.867188,34.661133],[32.750098,34.647803],[32.692969,34.649365],[32.505566,34.70625],[32.449023,34.729443],[32.41377,34.778027],[32.317188,34.95332],[32.300977,35.082959],[32.390918,35.049805],[32.475,35.08999],[32.555957,35.155762],[32.652344,35.182666],[32.712695,35.171045]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Cuba","SOV_A3":"CU1","ADM0_DIF":1,"LEVEL":1,"TYPE":"Sovereignty","TLC":"1","ADMIN":"Cuba","ADM0_A3":"CUB","GEOU_DIF":0,"GEOUNIT":"Cuba","GU_A3":"CUB","SU_DIF":0,"SUBUNIT":"Cuba","SU_A3":"CUB","BRK_DIFF":0,"NAME":"Cuba","NAME_LONG":"Cuba","BRK_A3":"CUB","BRK_NAME":"Cuba","BRK_GROUP":null,"ABBREV":"Cuba","POSTAL":"CU","FORMAL_EN":"Republic of Cuba","FORMAL_FR":null,"NAME_CIAWF":"Cuba","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Cuba","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":5,"MAPCOLOR9":3,"MAPCOLOR13":4,"POP_EST":11333483,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":100023,"GDP_YEAR":2018,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"CU","ISO_A2":"CU","ISO_A2_EH":"CU","ISO_A3":"CUB","ISO_A3_EH":"CUB","ISO_N3":"192","ISO_N3_EH":"192","UN_A3":"192","WB_A2":"CU","WB_A3":"CUB","WOE_ID":23424793,"WOE_ID_EH":23424793,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CUB","ADM0_DIFF":null,"ADM0_TLC":"CUB","ADM0_A3_US":"CUB","ADM0_A3_FR":"CUB","ADM0_A3_RU":"CUB","ADM0_A3_ES":"CUB","ADM0_A3_CN":"CUB","ADM0_A3_TW":"CUB","ADM0_A3_IN":"CUB","ADM0_A3_NP":"CUB","ADM0_A3_PK":"CUB","ADM0_A3_DE":"CUB","ADM0_A3_GB":"CUB","ADM0_A3_BR":"CUB","ADM0_A3_IL":"CUB","ADM0_A3_PS":"CUB","ADM0_A3_SA":"CUB","ADM0_A3_EG":"CUB","ADM0_A3_MA":"CUB","ADM0_A3_PT":"CUB","ADM0_A3_AR":"CUB","ADM0_A3_JP":"CUB","ADM0_A3_KO":"CUB","ADM0_A3_VN":"CUB","ADM0_A3_TR":"CUB","ADM0_A3_ID":"CUB","ADM0_A3_PL":"CUB","ADM0_A3_GR":"CUB","ADM0_A3_IT":"CUB","ADM0_A3_NL":"CUB","ADM0_A3_SE":"CUB","ADM0_A3_BD":"CUB","ADM0_A3_UA":"CUB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.7,"MAX_LABEL":8,"LABEL_X":-77.975855,"LABEL_Y":21.334024,"NE_ID":1159320527,"WIKIDATAID":"Q241","NAME_AR":"كوبا","NAME_BN":"কিউবা","NAME_DE":"Kuba","NAME_EN":"Cuba","NAME_ES":"Cuba","NAME_FA":"کوبا","NAME_FR":"Cuba","NAME_EL":"Κούβα","NAME_HE":"קובה","NAME_HI":"क्यूबा","NAME_HU":"Kuba","NAME_ID":"Kuba","NAME_IT":"Cuba","NAME_JA":"キューバ","NAME_KO":"쿠바","NAME_NL":"Cuba","NAME_PL":"Kuba","NAME_PT":"Cuba","NAME_RU":"Куба","NAME_SV":"Kuba","NAME_TR":"Küba","NAME_UK":"Куба","NAME_UR":"کیوبا","NAME_VI":"Cuba","NAME_ZH":"古巴","NAME_ZHT":"古巴","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-84.887207,19.855469,-74.136816,23.19043],"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.837451,23.163037],[-81.575439,23.116504],[-81.363623,23.129688],[-81.262354,23.156836],[-81.271631,23.128613],[-81.178613,23.059668],[-81.144629,23.054932],[-81.007666,23.089844],[-80.650146,23.103076],[-80.613428,23.08374],[-80.550488,23.016602],[-80.459229,22.975],[-80.364893,22.943408],[-80.266162,22.934961],[-80.167627,22.949365],[-80.075244,22.942334],[-79.959912,22.876904],[-79.923535,22.869141],[-79.820264,22.887012],[-79.850732,22.827197],[-79.67666,22.743066],[-79.549219,22.577783],[-79.456494,22.509863],[-79.358301,22.448926],[-79.275684,22.407617],[-79.183008,22.387891],[-78.901904,22.395996],[-78.835449,22.390918],[-78.775977,22.367334],[-78.719238,22.358057],[-78.686475,22.366846],[-78.143115,22.109424],[-77.970508,21.971973],[-77.865039,21.900586],[-77.636816,21.797363],[-77.545117,21.774609],[-77.497119,21.78833],[-77.506543,21.811035],[-77.57334,21.868311],[-77.583154,21.889258],[-77.497266,21.871631],[-77.342139,21.755273],[-77.299512,21.712256],[-77.22207,21.672412],[-77.144141,21.643604],[-77.18125,21.597656],[-77.244531,21.59375],[-77.366162,21.612646],[-77.26958,21.537891],[-77.252881,21.483496],[-77.20791,21.478857],[-77.140967,21.538623],[-77.098633,21.589014],[-76.928076,21.458984],[-76.836328,21.399512],[-76.859814,21.364795],[-76.867432,21.33042],[-76.76499,21.362402],[-76.726074,21.358887],[-76.688525,21.34043],[-76.647412,21.284521],[-76.551709,21.272119],[-76.455176,21.273633],[-76.259229,21.227393],[-76.073633,21.133447],[-75.899023,21.114258],[-75.722949,21.111035],[-75.63374,21.061328],[-75.595801,20.994678],[-75.638525,20.947461],[-75.662939,20.898145],[-75.597266,20.837646],[-75.740234,20.811963],[-75.7604,20.775537],[-75.752979,20.736182],[-75.724561,20.714551],[-75.642773,20.733496],[-75.524609,20.71665],[-75.338135,20.701611],[-75.213281,20.713867],[-74.959717,20.672656],[-74.882568,20.650635],[-74.73208,20.573193],[-74.662451,20.522119],[-74.513135,20.38457],[-74.384375,20.330469],[-74.272803,20.317383],[-74.233887,20.326416],[-74.198486,20.311475],[-74.16748,20.292187],[-74.136816,20.231934],[-74.153711,20.168555],[-74.217432,20.117139],[-74.252832,20.079687],[-74.412158,20.075342],[-74.634766,20.058154],[-74.850049,20.002295],[-74.955127,19.95791],[-75.003174,19.928564],[-75.116406,19.901416],[-75.124121,19.924658],[-75.121973,19.953906],[-75.151611,20.00835],[-75.177295,19.959375],[-75.219434,19.923633],[-75.290479,19.893115],[-75.551953,19.891113],[-75.657227,19.932227],[-75.765137,19.9604],[-76.158447,19.989746],[-76.252832,19.987158],[-76.515625,19.956689],[-76.779736,19.940186],[-76.890234,19.921338],[-76.999463,19.892822],[-77.211963,19.89375],[-77.463184,19.861377],[-77.715088,19.855469],[-77.55376,20.082129],[-77.213379,20.300391],[-77.149414,20.347266],[-77.103809,20.40752],[-77.093018,20.45293],[-77.10791,20.49165],[-77.188965,20.559961],[-77.205469,20.61084],[-77.22959,20.64375],[-77.347559,20.672363],[-77.467041,20.689502],[-77.592725,20.690088],[-77.856885,20.713623],[-77.997314,20.715381],[-78.116357,20.761865],[-78.313867,20.92749],[-78.406348,20.973877],[-78.453857,21.010986],[-78.490771,21.053711],[-78.537256,21.296826],[-78.576562,21.413818],[-78.636475,21.515527],[-78.727686,21.592725],[-78.822949,21.618945],[-79.189209,21.552832],[-79.274414,21.562646],[-79.357422,21.585156],[-79.910303,21.742578],[-80.13833,21.829248],[-80.231348,21.872168],[-80.310693,21.933398],[-80.39292,22.03374],[-80.485449,22.123437],[-80.484814,22.087158],[-80.499072,22.063525],[-80.961914,22.052881],[-81.035645,22.073584],[-81.083105,22.097949],[-81.11665,22.134229],[-81.141406,22.206934],[-81.185498,22.267969],[-81.199561,22.20293],[-81.222412,22.14292],[-81.284375,22.109424],[-81.355273,22.104102],[-81.441113,22.183789],[-81.816211,22.200195],[-81.849414,22.213672],[-81.972607,22.290869],[-82.077734,22.387695],[-81.973047,22.421826],[-81.75708,22.466748],[-81.710352,22.49668],[-81.683252,22.534814],[-81.702734,22.591895],[-81.745654,22.63291],[-81.789893,22.657031],[-81.838818,22.672461],[-81.903418,22.679004],[-82.738037,22.689258],[-82.786377,22.65835],[-82.86123,22.595117],[-83.009424,22.514014],[-83.107129,22.429883],[-83.14375,22.386475],[-83.189404,22.35542],[-83.292139,22.303223],[-83.379639,22.222998],[-83.485937,22.187109],[-83.544043,22.208936],[-83.601514,22.20874],[-83.643066,22.188965],[-83.686621,22.179932],[-83.900732,22.170117],[-83.932715,22.149658],[-83.96333,22.09209],[-83.998047,21.980127],[-84.030957,21.943115],[-84.13833,21.929004],[-84.240674,21.89834],[-84.448828,21.79165],[-84.502588,21.776172],[-84.490918,21.854297],[-84.501367,21.930273],[-84.56001,21.933008],[-84.626904,21.920361],[-84.682666,21.899072],[-84.78584,21.842285],[-84.838232,21.82793],[-84.887207,21.856982],[-84.877246,21.894141],[-84.532764,22.031152],[-84.494238,22.041602],[-84.433057,22.031299],[-84.373145,22.035938],[-84.326367,22.074316],[-84.383008,22.255566],[-84.361279,22.378906],[-84.281348,22.474219],[-84.121777,22.618555],[-84.044922,22.666016],[-83.257812,22.967578],[-83.177246,22.983008],[-82.66582,23.043555],[-82.587793,23.064551],[-82.350537,23.153955],[-82.101367,23.19043],[-81.837451,23.163037]]],[[[-77.668994,21.951953],[-77.710059,21.921338],[-77.755029,21.965576],[-77.783643,21.97041],[-77.823193,21.987939],[-77.9,22.037158],[-77.918555,22.088086],[-77.854736,22.091943],[-77.774414,22.082959],[-77.633691,22.054004],[-77.645996,21.996484],[-77.668994,21.951953]]],[[[-78.0271,22.285156],[-78.04751,22.268506],[-78.10166,22.305762],[-78.180029,22.321973],[-78.226123,22.37998],[-78.27002,22.402246],[-78.273535,22.423584],[-78.200977,22.437646],[-78.150586,22.431494],[-78.094141,22.387207],[-78.06167,22.305908],[-78.0271,22.285156]]],[[[-78.630127,22.552246],[-78.492871,22.531055],[-78.445312,22.54375],[-78.399561,22.547461],[-78.351221,22.538623],[-78.283887,22.455469],[-78.343018,22.445117],[-78.389941,22.445117],[-78.424561,22.460107],[-78.547656,22.464014],[-78.629004,22.488184],[-78.673633,22.508838],[-78.695508,22.533984],[-78.630127,22.552246]]],[[[-77.879395,22.127539],[-77.912354,22.124707],[-78.011914,22.166406],[-78.04165,22.20127],[-78.006689,22.247998],[-77.999219,22.29873],[-77.985645,22.3021],[-77.96958,22.240674],[-77.893652,22.214551],[-77.889111,22.201074],[-77.84248,22.148975],[-77.879395,22.127539]]],[[[-82.561768,21.57168],[-82.654834,21.518652],[-82.853174,21.443896],[-82.959619,21.441309],[-83.067285,21.469385],[-83.141504,21.531885],[-83.183789,21.593457],[-83.180225,21.623047],[-83.112939,21.573682],[-83.054883,21.549414],[-83.007227,21.565576],[-82.973584,21.592285],[-83.08252,21.791406],[-83.077734,21.833496],[-82.991211,21.942725],[-82.755762,21.909521],[-82.714551,21.890283],[-82.681836,21.821143],[-82.629395,21.766895],[-82.567822,21.621826],[-82.561768,21.57168]]],[[[-79.349561,22.663916],[-79.3479,22.637695],[-79.522754,22.711133],[-79.597852,22.787646],[-79.628174,22.805225],[-79.57915,22.806738],[-79.382178,22.681348],[-79.349561,22.663916]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Croatia","SOV_A3":"HRV","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Croatia","ADM0_A3":"HRV","GEOU_DIF":0,"GEOUNIT":"Croatia","GU_A3":"HRV","SU_DIF":0,"SUBUNIT":"Croatia","SU_A3":"HRV","BRK_DIFF":0,"NAME":"Croatia","NAME_LONG":"Croatia","BRK_A3":"HRV","BRK_NAME":"Croatia","BRK_GROUP":null,"ABBREV":"Cro.","POSTAL":"HR","FORMAL_EN":"Republic of Croatia","FORMAL_FR":null,"NAME_CIAWF":"Croatia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Croatia","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":4,"MAPCOLOR9":5,"MAPCOLOR13":1,"POP_EST":4067500,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":60752,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"HR","ISO_A2":"HR","ISO_A2_EH":"HR","ISO_A3":"HRV","ISO_A3_EH":"HRV","ISO_N3":"191","ISO_N3_EH":"191","UN_A3":"191","WB_A2":"HR","WB_A3":"HRV","WOE_ID":23424843,"WOE_ID_EH":23424843,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"HRV","ADM0_DIFF":null,"ADM0_TLC":"HRV","ADM0_A3_US":"HRV","ADM0_A3_FR":"HRV","ADM0_A3_RU":"HRV","ADM0_A3_ES":"HRV","ADM0_A3_CN":"HRV","ADM0_A3_TW":"HRV","ADM0_A3_IN":"HRV","ADM0_A3_NP":"HRV","ADM0_A3_PK":"HRV","ADM0_A3_DE":"HRV","ADM0_A3_GB":"HRV","ADM0_A3_BR":"HRV","ADM0_A3_IL":"HRV","ADM0_A3_PS":"HRV","ADM0_A3_SA":"HRV","ADM0_A3_EG":"HRV","ADM0_A3_MA":"HRV","ADM0_A3_PT":"HRV","ADM0_A3_AR":"HRV","ADM0_A3_JP":"HRV","ADM0_A3_KO":"HRV","ADM0_A3_VN":"HRV","ADM0_A3_TR":"HRV","ADM0_A3_ID":"HRV","ADM0_A3_PL":"HRV","ADM0_A3_GR":"HRV","ADM0_A3_IT":"HRV","ADM0_A3_NL":"HRV","ADM0_A3_SE":"HRV","ADM0_A3_BD":"HRV","ADM0_A3_UA":"HRV","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":16.37241,"LABEL_Y":45.805799,"NE_ID":1159320833,"WIKIDATAID":"Q224","NAME_AR":"كرواتيا","NAME_BN":"ক্রোয়েশিয়া","NAME_DE":"Kroatien","NAME_EN":"Croatia","NAME_ES":"Croacia","NAME_FA":"کرواسی","NAME_FR":"Croatie","NAME_EL":"Κροατία","NAME_HE":"קרואטיה","NAME_HI":"क्रोएशिया","NAME_HU":"Horvátország","NAME_ID":"Kroasia","NAME_IT":"Croazia","NAME_JA":"クロアチア","NAME_KO":"크로아티아","NAME_NL":"Kroatië","NAME_PL":"Chorwacja","NAME_PT":"Croácia","NAME_RU":"Хорватия","NAME_SV":"Kroatien","NAME_TR":"Hırvatistan","NAME_UK":"Хорватія","NAME_UR":"کروشیا","NAME_VI":"Croatia","NAME_ZH":"克罗地亚","NAME_ZHT":"克羅地亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[13.517188,42.43291,19.400977,46.534619],"geometry":{"type":"MultiPolygon","coordinates":[[[[13.57793,45.516895],[13.615234,45.476758],[13.878711,45.428369],[13.935645,45.449805],[13.970117,45.482617],[13.970313,45.503369],[13.992773,45.509424],[14.085547,45.477832],[14.16123,45.485156],[14.283008,45.486621],[14.369922,45.481445],[14.427344,45.505762],[14.505176,45.595215],[14.533984,45.645264],[14.568848,45.657227],[14.591797,45.65127],[14.608594,45.610107],[14.649512,45.571484],[14.733594,45.508496],[14.793066,45.478223],[14.84707,45.467334],[14.9,45.492676],[14.95459,45.499902],[15.110449,45.450781],[15.24209,45.441406],[15.339453,45.467041],[15.32666,45.502295],[15.291211,45.541553],[15.283594,45.579687],[15.290137,45.612646],[15.356934,45.645508],[15.353711,45.659912],[15.272949,45.717725],[15.277051,45.732617],[15.454102,45.797607],[15.624805,45.834033],[15.652148,45.862158],[15.668066,45.904443],[15.675586,45.983691],[15.666211,46.048486],[15.596875,46.109229],[15.592578,46.13999],[15.608984,46.171924],[15.635938,46.200732],[15.704199,46.213232],[15.784277,46.233984],[15.847559,46.257861],[15.933301,46.277637],[16.000684,46.305371],[16.066504,46.371338],[16.106445,46.382227],[16.227441,46.372852],[16.25332,46.389111],[16.236719,46.483838],[16.258398,46.50791],[16.301172,46.521387],[16.321191,46.534619],[16.427637,46.524414],[16.516211,46.499902],[16.569922,46.48501],[16.748047,46.416406],[16.871484,46.339307],[16.939941,46.253662],[17.032715,46.187305],[17.149609,46.140332],[17.242188,46.076611],[17.310645,45.996143],[17.406348,45.951074],[17.529199,45.941309],[17.607031,45.91377],[17.639648,45.868359],[17.706445,45.827246],[17.807129,45.79043],[17.963867,45.770264],[18.263965,45.765479],[18.290625,45.764453],[18.358301,45.753027],[18.437305,45.767334],[18.533594,45.796143],[18.564648,45.813281],[18.666016,45.907471],[18.721777,45.899365],[18.833008,45.91084],[18.900293,45.931738],[18.905371,45.931738],[18.901074,45.907617],[18.893555,45.865527],[18.839063,45.835742],[18.894531,45.76709],[18.947266,45.655811],[18.917871,45.60083],[18.953711,45.558008],[19.055078,45.527246],[19.064258,45.51499],[19.033301,45.502197],[19.007617,45.46582],[19.004688,45.399512],[19.093066,45.336914],[19.272852,45.277979],[19.330273,45.268066],[19.352246,45.24541],[19.382324,45.230615],[19.4,45.2125],[19.400977,45.189062],[19.388086,45.172998],[19.303027,45.167285],[19.205957,45.167773],[19.136914,45.19624],[19.130762,45.175488],[19.129688,45.151709],[19.062891,45.137207],[19.1,44.973779],[19.085254,44.926758],[19.060547,44.910986],[19.037598,44.917529],[19.00957,44.919385],[18.995508,44.904004],[19.007129,44.869189],[18.941309,44.865186],[18.836426,44.883252],[18.788379,44.914893],[18.780176,44.947217],[18.779395,44.977246],[18.746094,45.026514],[18.662598,45.077441],[18.488281,45.08584],[18.423926,45.102002],[18.357617,45.120557],[18.284961,45.134277],[18.217969,45.13291],[18.137207,45.119385],[17.996289,45.141797],[17.948633,45.111865],[17.874414,45.077246],[17.812793,45.078125],[17.690137,45.158398],[17.653516,45.163477],[17.546289,45.122559],[17.502637,45.120361],[17.469141,45.133301],[17.324121,45.163965],[17.258691,45.170557],[17.210645,45.156055],[17.125391,45.171777],[16.918652,45.276562],[16.79082,45.196875],[16.530664,45.216699],[16.453516,45.162012],[16.365039,45.05835],[16.293359,45.008838],[16.231055,45.026611],[16.157324,45.072217],[16.02832,45.1896],[15.963184,45.210791],[15.888281,45.215723],[15.822852,45.202783],[15.788086,45.178955],[15.761523,45.00752],[15.737988,44.856396],[15.736621,44.76582],[15.880078,44.681934],[16.049023,44.537598],[16.103418,44.520996],[16.130273,44.47373],[16.169824,44.352002],[16.214258,44.215137],[16.300098,44.124512],[16.377539,44.059619],[16.47207,44.002588],[16.590527,43.913184],[16.687695,43.815039],[16.713477,43.778809],[16.901855,43.649023],[17.08457,43.516553],[17.248047,43.470215],[17.273828,43.445752],[17.275293,43.343848],[17.293066,43.305615],[17.402246,43.198926],[17.624805,43.042773],[17.650488,43.006592],[17.657813,42.980078],[17.643457,42.959766],[17.585156,42.938379],[17.537305,42.962256],[17.329883,43.114893],[17.129395,43.211133],[16.903125,43.392432],[16.600293,43.464062],[16.393945,43.543359],[16.268945,43.53125],[16.131055,43.506299],[16.045996,43.505518],[15.985547,43.519775],[15.942578,43.568945],[15.949121,43.606982],[15.941504,43.656641],[15.820605,43.735937],[15.655664,43.811279],[15.499414,43.908789],[15.18584,44.172119],[15.122949,44.256787],[15.184668,44.2729],[15.231348,44.271436],[15.284277,44.288818],[15.369727,44.289258],[15.470996,44.271973],[15.381348,44.328271],[15.269824,44.383496],[14.981348,44.60293],[14.895215,44.706592],[14.885254,44.818262],[14.906543,44.971387],[14.85459,45.081006],[14.632031,45.2229],[14.550488,45.297705],[14.386133,45.342139],[14.312695,45.337793],[14.268555,45.28252],[14.236328,45.159668],[14.090625,44.997607],[14.041992,44.927197],[13.96582,44.835645],[13.899805,44.829346],[13.860742,44.837402],[13.74248,44.991504],[13.629297,45.108203],[13.613477,45.163428],[13.60332,45.231396],[13.517188,45.481787],[13.57793,45.516895]]],[[[16.650684,42.996582],[16.835547,42.968652],[16.971094,42.981494],[17.093652,42.964355],[17.169824,42.932617],[17.188281,42.917041],[17.089355,42.914893],[16.977539,42.927783],[16.850684,42.895508],[16.738867,42.912744],[16.696387,42.933691],[16.666309,42.959912],[16.650684,42.996582]]],[[[17.194043,43.125781],[17.124121,43.11543],[16.679199,43.123145],[16.549805,43.143896],[16.405859,43.197363],[16.376465,43.21377],[16.521387,43.229248],[16.655957,43.21377],[16.697266,43.174951],[17.061133,43.143896],[17.194043,43.125781]]],[[[16.785254,43.270654],[16.627441,43.268066],[16.490332,43.286182],[16.423145,43.317236],[16.428125,43.343408],[16.448926,43.387061],[16.601562,43.381885],[16.834375,43.35083],[16.891309,43.314648],[16.873633,43.297949],[16.785254,43.270654]]],[[[15.231055,44.062305],[15.24668,44.027051],[15.121875,44.093311],[15.074609,44.137842],[15.06582,44.157666],[15.231055,44.062305]]],[[[14.810254,44.977051],[14.687012,44.955615],[14.62832,44.993945],[14.612988,45.025439],[14.511719,45.0354],[14.450391,45.079199],[14.437891,45.098633],[14.524609,45.146826],[14.571094,45.224756],[14.62998,45.178027],[14.701172,45.090039],[14.73916,45.065479],[14.810254,44.977051]]],[[[14.831445,44.758936],[14.856641,44.714844],[14.7625,44.754639],[14.678223,44.769873],[14.660352,44.799805],[14.672461,44.824365],[14.690527,44.848145],[14.754199,44.844824],[14.76377,44.821387],[14.831445,44.758936]]],[[[15.188477,44.335742],[15.162598,44.30918],[15.097949,44.358154],[15.038574,44.393018],[14.996094,44.434326],[14.912793,44.48584],[14.884668,44.544727],[14.760449,44.664746],[14.741895,44.697363],[14.803809,44.648682],[14.855371,44.618262],[14.898047,44.61084],[15.006445,44.534229],[15.112988,44.435742],[15.239941,44.350195],[15.213574,44.347559],[15.188477,44.335742]]],[[[15.18877,43.922363],[15.203027,43.907715],[15.20166,43.897754],[15.149805,43.911816],[15.13584,43.907275],[14.891309,44.125537],[14.865039,44.167969],[14.952539,44.117188],[15.18877,43.922363]]],[[[15.371387,43.973828],[15.437207,43.899512],[15.374219,43.914795],[15.308594,43.960791],[15.27002,44.010742],[15.371387,43.973828]]],[[[14.488086,44.660059],[14.480371,44.62124],[14.419531,44.670312],[14.388867,44.758301],[14.312402,44.900391],[14.302539,44.94043],[14.342188,44.979932],[14.340039,45.019971],[14.28584,45.144629],[14.33125,45.16499],[14.358203,45.167432],[14.369141,45.080957],[14.39375,45.03125],[14.467383,44.970215],[14.452539,44.869189],[14.467578,44.725342],[14.48252,44.693359],[14.488086,44.660059]]],[[[17.607813,42.769043],[17.744238,42.700342],[17.344141,42.790381],[17.389551,42.798633],[17.431934,42.800391],[17.607813,42.769043]]],[[[18.436328,42.559717],[18.438086,42.522949],[18.47666,42.481104],[18.51748,42.43291],[18.333008,42.527881],[18.160645,42.634033],[17.823828,42.797412],[17.584961,42.837158],[17.258203,42.968457],[17.04541,43.014893],[17.126465,43.025586],[17.219824,43.025879],[17.723633,42.850684],[17.667578,42.897119],[17.740234,42.915479],[17.801953,42.902246],[17.841309,42.845068],[17.918848,42.807422],[18.044531,42.74126],[18.123926,42.690576],[18.304004,42.599414],[18.346582,42.58667],[18.436328,42.559717]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":3,"SOVEREIGNT":"Ivory Coast","SOV_A3":"CIV","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Ivory Coast","ADM0_A3":"CIV","GEOU_DIF":0,"GEOUNIT":"Ivory Coast","GU_A3":"CIV","SU_DIF":0,"SUBUNIT":"Ivory Coast","SU_A3":"CIV","BRK_DIFF":0,"NAME":"Côte d'Ivoire","NAME_LONG":"Côte d'Ivoire","BRK_A3":"CIV","BRK_NAME":"Côte d'Ivoire","BRK_GROUP":null,"ABBREV":"I.C.","POSTAL":"CI","FORMAL_EN":"Republic of Ivory Coast","FORMAL_FR":"Republic of Cote D'Ivoire","NAME_CIAWF":"Cote D'ivoire","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Côte d'Ivoire","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":6,"MAPCOLOR9":3,"MAPCOLOR13":3,"POP_EST":25716544,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":58539,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"IV","ISO_A2":"CI","ISO_A2_EH":"CI","ISO_A3":"CIV","ISO_A3_EH":"CIV","ISO_N3":"384","ISO_N3_EH":"384","UN_A3":"384","WB_A2":"CI","WB_A3":"CIV","WOE_ID":23424854,"WOE_ID_EH":23424854,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CIV","ADM0_DIFF":null,"ADM0_TLC":"CIV","ADM0_A3_US":"CIV","ADM0_A3_FR":"CIV","ADM0_A3_RU":"CIV","ADM0_A3_ES":"CIV","ADM0_A3_CN":"CIV","ADM0_A3_TW":"CIV","ADM0_A3_IN":"CIV","ADM0_A3_NP":"CIV","ADM0_A3_PK":"CIV","ADM0_A3_DE":"CIV","ADM0_A3_GB":"CIV","ADM0_A3_BR":"CIV","ADM0_A3_IL":"CIV","ADM0_A3_PS":"CIV","ADM0_A3_SA":"CIV","ADM0_A3_EG":"CIV","ADM0_A3_MA":"CIV","ADM0_A3_PT":"CIV","ADM0_A3_AR":"CIV","ADM0_A3_JP":"CIV","ADM0_A3_KO":"CIV","ADM0_A3_VN":"CIV","ADM0_A3_TR":"CIV","ADM0_A3_ID":"CIV","ADM0_A3_PL":"CIV","ADM0_A3_GR":"CIV","ADM0_A3_IT":"CIV","ADM0_A3_NL":"CIV","ADM0_A3_SE":"CIV","ADM0_A3_BD":"CIV","ADM0_A3_UA":"CIV","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":13,"LONG_LEN":13,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":8,"LABEL_X":-5.568618,"LABEL_Y":7.49139,"NE_ID":1159320507,"WIKIDATAID":"Q1008","NAME_AR":"ساحل العاج","NAME_BN":"কোত দিভোয়ার","NAME_DE":"Elfenbeinküste","NAME_EN":"Ivory Coast","NAME_ES":"Costa de Marfil","NAME_FA":"ساحل عاج","NAME_FR":"Côte d'Ivoire","NAME_EL":"Ακτή Ελεφαντοστού","NAME_HE":"חוף השנהב","NAME_HI":"कोत दिव्वार","NAME_HU":"Elefántcsontpart","NAME_ID":"Pantai Gading","NAME_IT":"Costa d'Avorio","NAME_JA":"コートジボワール","NAME_KO":"코트디부아르","NAME_NL":"Ivoorkust","NAME_PL":"Wybrzeże Kości Słoniowej","NAME_PT":"Costa do Marfim","NAME_RU":"Кот-д’Ивуар","NAME_SV":"Elfenbenskusten","NAME_TR":"Fildişi Sahili","NAME_UK":"Кот-д'Івуар","NAME_UR":"کوت داوواغ","NAME_VI":"Bờ Biển Ngà","NAME_ZH":"科特迪瓦","NAME_ZHT":"象牙海岸","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-8.603564,4.351318,-2.505859,10.724072],"geometry":{"type":"MultiPolygon","coordinates":[[[[-3.086719,5.12832],[-3.114014,5.088672],[-3.246387,5.114062],[-3.214893,5.147217],[-3.086719,5.12832]]],[[[-7.990625,10.1625],[-7.960938,10.163477],[-7.884082,10.185742],[-7.814209,10.236572],[-7.749072,10.342285],[-7.661133,10.427441],[-7.562109,10.42124],[-7.532812,10.436816],[-7.497949,10.439795],[-7.456543,10.383936],[-7.414795,10.341309],[-7.385059,10.340137],[-7.363184,10.259375],[-7.182324,10.225684],[-7.104883,10.203516],[-7.039746,10.144775],[-7.01709,10.143262],[-6.989453,10.155664],[-6.968164,10.176221],[-6.963818,10.19873],[-6.991748,10.251855],[-6.979492,10.299561],[-6.950342,10.342334],[-6.903809,10.345068],[-6.833643,10.356982],[-6.753223,10.357129],[-6.693262,10.349463],[-6.669336,10.392187],[-6.691992,10.512012],[-6.686133,10.578027],[-6.676367,10.633789],[-6.65415,10.656445],[-6.5646,10.586426],[-6.482617,10.56123],[-6.423926,10.559131],[-6.40752,10.572363],[-6.432617,10.64873],[-6.425879,10.671777],[-6.40415,10.685107],[-6.365625,10.692822],[-6.261133,10.724072],[-6.250244,10.71792],[-6.230664,10.59751],[-6.239746,10.558105],[-6.217773,10.47627],[-6.190674,10.400293],[-6.192627,10.369434],[-6.21499,10.322363],[-6.241309,10.279199],[-6.238379,10.261621],[-6.196875,10.232129],[-6.117188,10.201904],[-6.03457,10.194824],[-5.988672,10.239111],[-5.940674,10.275098],[-5.907568,10.307227],[-5.896191,10.354736],[-5.843848,10.389551],[-5.694287,10.433203],[-5.556592,10.439941],[-5.523535,10.426025],[-5.461279,10.35957],[-5.382275,10.314014],[-5.262305,10.319678],[-5.175293,10.292627],[-5.099854,10.241602],[-5.049316,10.12832],[-4.994043,10.046484],[-4.969922,9.930078],[-4.882715,9.868945],[-4.814453,9.841162],[-4.721777,9.756543],[-4.62583,9.713574],[-4.526611,9.723486],[-4.480273,9.679248],[-4.406201,9.647998],[-4.332227,9.645703],[-4.267187,9.743262],[-4.181152,9.781738],[-3.963477,9.859619],[-3.877637,9.894922],[-3.790625,9.917187],[-3.581152,9.924316],[-3.386279,9.900293],[-3.289697,9.882227],[-3.223535,9.895459],[-3.160693,9.84917],[-3.095801,9.7521],[-3.042627,9.720898],[-2.988281,9.687354],[-2.948145,9.610742],[-2.900879,9.534619],[-2.875146,9.500928],[-2.816748,9.42583],[-2.766602,9.424707],[-2.717187,9.457129],[-2.69585,9.481348],[-2.686133,9.431738],[-2.705762,9.351367],[-2.701807,9.30166],[-2.674219,9.282617],[-2.689209,9.218604],[-2.74668,9.109619],[-2.746924,9.045117],[-2.689893,9.025098],[-2.649219,8.956592],[-2.624902,8.8396],[-2.600391,8.800439],[-2.597998,8.776367],[-2.556885,8.493018],[-2.505859,8.20874],[-2.538281,8.171631],[-2.582764,8.160791],[-2.611719,8.147559],[-2.619971,8.121094],[-2.600977,8.082227],[-2.613379,8.04668],[-2.668848,8.022217],[-2.789746,7.931934],[-2.798145,7.895996],[-2.830127,7.819043],[-2.856885,7.77207],[-2.896338,7.68501],[-2.959082,7.454541],[-2.982324,7.263623],[-2.985791,7.204883],[-3.010156,7.16377],[-3.037695,7.10459],[-3.168896,6.940967],[-3.235791,6.807227],[-3.227148,6.749121],[-3.224121,6.690771],[-3.243896,6.648682],[-3.240283,6.535645],[-3.224023,6.441064],[-3.200586,6.348242],[-3.105566,6.085645],[-3.056152,5.92627],[-3.025293,5.797754],[-2.998291,5.711328],[-2.972803,5.67627],[-2.962256,5.643018],[-2.821191,5.619189],[-2.793652,5.600098],[-2.75498,5.43252],[-2.761914,5.356934],[-2.7896,5.328223],[-2.788672,5.264111],[-2.795215,5.184521],[-2.815674,5.153027],[-2.894727,5.149023],[-2.94834,5.118848],[-3.019141,5.130811],[-3.025879,5.150537],[-3.063965,5.157715],[-3.168701,5.203027],[-3.151416,5.348291],[-3.199951,5.354492],[-3.237598,5.3354],[-3.312012,5.160791],[-3.347559,5.130664],[-3.870605,5.220703],[-3.98418,5.293164],[-4.120166,5.309717],[-4.357275,5.301416],[-4.552832,5.279883],[-4.608887,5.235889],[-4.115186,5.261621],[-4.062061,5.256641],[-4.037207,5.230127],[-4.661523,5.172559],[-4.899707,5.13833],[-4.970117,5.147754],[-5.023682,5.203613],[-5.282373,5.210254],[-5.335449,5.191992],[-5.367529,5.150781],[-5.265771,5.159717],[-5.104883,5.162158],[-5.061816,5.130664],[-5.564746,5.089453],[-5.91377,5.010937],[-6.061719,4.952832],[-6.548437,4.761768],[-6.845166,4.671484],[-6.9229,4.63833],[-7.057959,4.544727],[-7.231396,4.485986],[-7.426074,4.376025],[-7.544971,4.351318],[-7.571582,4.386426],[-7.574658,4.572314],[-7.591211,4.821533],[-7.585059,4.916748],[-7.569336,5.006445],[-7.568896,5.080664],[-7.509766,5.108496],[-7.494141,5.139795],[-7.485205,5.236426],[-7.429834,5.324512],[-7.428906,5.477881],[-7.412451,5.509912],[-7.399902,5.550586],[-7.42373,5.651318],[-7.454395,5.841309],[-7.469434,5.853711],[-7.482812,5.845508],[-7.513916,5.842041],[-7.636133,5.907715],[-7.730371,5.919043],[-7.796533,5.975098],[-7.800928,6.038916],[-7.833252,6.076367],[-7.855518,6.150146],[-7.888623,6.234863],[-7.981592,6.286133],[-8.068945,6.298389],[-8.131006,6.287549],[-8.203857,6.290723],[-8.287109,6.319043],[-8.344873,6.35127],[-8.399316,6.413184],[-8.449902,6.4625],[-8.490332,6.456396],[-8.539551,6.468066],[-8.587891,6.490527],[-8.603564,6.507812],[-8.401221,6.705127],[-8.332568,6.801562],[-8.325098,6.8604],[-8.324512,6.92002],[-8.302344,6.980957],[-8.296631,7.074023],[-8.40874,7.411816],[-8.437158,7.516406],[-8.467285,7.547021],[-8.486426,7.558496],[-8.42998,7.601855],[-8.351758,7.590576],[-8.231885,7.556738],[-8.205957,7.590234],[-8.11543,7.760742],[-8.117822,7.824023],[-8.126855,7.867725],[-8.073828,7.984424],[-8.031738,8.029736],[-8.009863,8.078516],[-8.016748,8.144922],[-8.048584,8.169727],[-8.090527,8.165137],[-8.140625,8.181445],[-8.217139,8.219678],[-8.256104,8.253711],[-8.244141,8.40791],[-8.236963,8.455664],[-8.209961,8.483252],[-8.167773,8.490674],[-8.049121,8.495312],[-7.953125,8.477734],[-7.86875,8.467529],[-7.823584,8.467676],[-7.787402,8.421973],[-7.738965,8.375244],[-7.696094,8.375586],[-7.681201,8.410352],[-7.690967,8.5625],[-7.71958,8.643018],[-7.784033,8.720605],[-7.950977,8.786816],[-7.95498,8.879443],[-7.938184,8.979785],[-7.9021,9.01709],[-7.777979,9.080859],[-7.799805,9.115039],[-7.839404,9.151611],[-7.918066,9.188525],[-7.9,9.308691],[-7.896191,9.415869],[-7.962695,9.403857],[-8.031006,9.397656],[-8.088672,9.430664],[-8.136963,9.495703],[-8.146045,9.674805],[-8.14585,9.881738],[-8.155176,9.973193],[-8.136621,10.02207],[-8.077832,10.06709],[-8.013525,10.125293],[-7.990625,10.1625]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Costa Rica","SOV_A3":"CRI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Costa Rica","ADM0_A3":"CRI","GEOU_DIF":0,"GEOUNIT":"Costa Rica","GU_A3":"CRI","SU_DIF":0,"SUBUNIT":"Costa Rica","SU_A3":"CRI","BRK_DIFF":0,"NAME":"Costa Rica","NAME_LONG":"Costa Rica","BRK_A3":"CRI","BRK_NAME":"Costa Rica","BRK_GROUP":null,"ABBREV":"C.R.","POSTAL":"CR","FORMAL_EN":"Republic of Costa Rica","FORMAL_FR":null,"NAME_CIAWF":"Costa Rica","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Costa Rica","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":4,"MAPCOLOR13":2,"POP_EST":5047561,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":61801,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"CS","ISO_A2":"CR","ISO_A2_EH":"CR","ISO_A3":"CRI","ISO_A3_EH":"CRI","ISO_N3":"188","ISO_N3_EH":"188","UN_A3":"188","WB_A2":"CR","WB_A3":"CRI","WOE_ID":23424791,"WOE_ID_EH":23424791,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CRI","ADM0_DIFF":null,"ADM0_TLC":"CRI","ADM0_A3_US":"CRI","ADM0_A3_FR":"CRI","ADM0_A3_RU":"CRI","ADM0_A3_ES":"CRI","ADM0_A3_CN":"CRI","ADM0_A3_TW":"CRI","ADM0_A3_IN":"CRI","ADM0_A3_NP":"CRI","ADM0_A3_PK":"CRI","ADM0_A3_DE":"CRI","ADM0_A3_GB":"CRI","ADM0_A3_BR":"CRI","ADM0_A3_IL":"CRI","ADM0_A3_PS":"CRI","ADM0_A3_SA":"CRI","ADM0_A3_EG":"CRI","ADM0_A3_MA":"CRI","ADM0_A3_PT":"CRI","ADM0_A3_AR":"CRI","ADM0_A3_JP":"CRI","ADM0_A3_KO":"CRI","ADM0_A3_VN":"CRI","ADM0_A3_TR":"CRI","ADM0_A3_ID":"CRI","ADM0_A3_PL":"CRI","ADM0_A3_GR":"CRI","ADM0_A3_IT":"CRI","ADM0_A3_NL":"CRI","ADM0_A3_SE":"CRI","ADM0_A3_BD":"CRI","ADM0_A3_UA":"CRI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":8,"LABEL_X":-84.077922,"LABEL_Y":10.0651,"NE_ID":1159320525,"WIKIDATAID":"Q800","NAME_AR":"كوستاريكا","NAME_BN":"কোস্টা রিকা","NAME_DE":"Costa Rica","NAME_EN":"Costa Rica","NAME_ES":"Costa Rica","NAME_FA":"کاستاریکا","NAME_FR":"Costa Rica","NAME_EL":"Κόστα Ρίκα","NAME_HE":"קוסטה ריקה","NAME_HI":"कोस्टा रीका","NAME_HU":"Costa Rica","NAME_ID":"Kosta Rika","NAME_IT":"Costa Rica","NAME_JA":"コスタリカ","NAME_KO":"코스타리카","NAME_NL":"Costa Rica","NAME_PL":"Kostaryka","NAME_PT":"Costa Rica","NAME_RU":"Коста-Рика","NAME_SV":"Costa Rica","NAME_TR":"Kosta Rika","NAME_UK":"Коста-Рика","NAME_UR":"کوسٹاریکا","NAME_VI":"Costa Rica","NAME_ZH":"哥斯达黎加","NAME_ZHT":"哥斯大黎加","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-85.908008,8.070654,-82.563574,11.189453],"geometry":{"type":"Polygon","coordinates":[[[-82.563574,9.57666],[-82.569238,9.558203],[-82.586523,9.538818],[-82.611279,9.519238],[-82.644092,9.505859],[-82.723389,9.546094],[-82.801025,9.591797],[-82.843994,9.570801],[-82.860156,9.511475],[-82.888965,9.481006],[-82.925049,9.469043],[-82.939844,9.44917],[-82.942822,9.248877],[-82.940332,9.060107],[-82.881348,9.055859],[-82.783057,8.990283],[-82.741162,8.951709],[-82.727832,8.916064],[-82.73999,8.898584],[-82.811914,8.857422],[-82.881982,8.805322],[-82.917041,8.740332],[-82.855713,8.635303],[-82.842627,8.563965],[-82.844775,8.489355],[-82.861621,8.453516],[-82.997559,8.367773],[-83.027344,8.337744],[-83.023389,8.316016],[-82.948437,8.256836],[-82.912891,8.199609],[-82.883301,8.130566],[-82.879346,8.070654],[-82.947266,8.181738],[-83.041455,8.287744],[-83.12334,8.353076],[-83.12959,8.505469],[-83.162402,8.588184],[-83.285791,8.664355],[-83.391406,8.717725],[-83.469727,8.706836],[-83.421777,8.619238],[-83.297754,8.506885],[-83.289551,8.463818],[-83.291504,8.406006],[-83.376807,8.414893],[-83.452051,8.438477],[-83.54375,8.44585],[-83.604736,8.480322],[-83.734082,8.614453],[-83.642187,8.728906],[-83.613721,8.804053],[-83.616162,8.959814],[-83.637256,9.035352],[-83.736914,9.150293],[-83.895557,9.276416],[-84.117871,9.379443],[-84.222363,9.4625],[-84.482666,9.526172],[-84.581592,9.568359],[-84.658887,9.64668],[-84.670459,9.702881],[-84.643066,9.789404],[-84.714941,9.899414],[-85.025049,10.115723],[-85.198437,10.195312],[-85.235645,10.24209],[-85.263184,10.256641],[-85.236523,10.107373],[-85.160742,10.017432],[-84.962793,9.933447],[-84.90835,9.88457],[-84.886426,9.820947],[-85.00127,9.699268],[-85.059717,9.668311],[-85.077051,9.601953],[-85.114502,9.581787],[-85.154004,9.620068],[-85.314551,9.810937],[-85.624854,9.902441],[-85.681006,9.958594],[-85.796484,10.132861],[-85.849658,10.292041],[-85.830615,10.398145],[-85.703125,10.563477],[-85.66333,10.635449],[-85.671436,10.679785],[-85.667236,10.74502],[-85.714844,10.790576],[-85.832861,10.849951],[-85.908008,10.897559],[-85.887402,10.921289],[-85.752246,10.985254],[-85.743701,11.042969],[-85.744336,11.062109],[-85.722266,11.06626],[-85.702637,11.081543],[-85.690527,11.097461],[-85.653662,11.153076],[-85.621387,11.184473],[-85.58418,11.189453],[-85.538721,11.166309],[-85.368359,11.106445],[-85.178955,11.039941],[-84.90918,10.945312],[-84.797363,11.005908],[-84.701172,11.052197],[-84.63418,11.045605],[-84.48916,10.99165],[-84.401855,10.974463],[-84.348291,10.979883],[-84.255566,10.900732],[-84.20498,10.841309],[-84.196582,10.801709],[-84.168359,10.780371],[-84.096191,10.775684],[-83.919287,10.735352],[-83.811182,10.743262],[-83.712939,10.785889],[-83.658936,10.836865],[-83.641992,10.917236],[-83.617285,10.87749],[-83.588184,10.81499],[-83.575293,10.734717],[-83.448242,10.465918],[-83.346826,10.315381],[-83.124609,10.041602],[-83.028516,9.99126],[-82.866309,9.770947],[-82.810303,9.73457],[-82.778418,9.669531],[-82.610156,9.616016],[-82.563574,9.57666]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Democratic Republic of the Congo","SOV_A3":"COD","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Democratic Republic of the Congo","ADM0_A3":"COD","GEOU_DIF":0,"GEOUNIT":"Democratic Republic of the Congo","GU_A3":"COD","SU_DIF":0,"SUBUNIT":"Democratic Republic of the Congo","SU_A3":"COD","BRK_DIFF":0,"NAME":"Dem. Rep. Congo","NAME_LONG":"Democratic Republic of the Congo","BRK_A3":"COD","BRK_NAME":"Democratic Republic of the Congo","BRK_GROUP":null,"ABBREV":"D.R.C.","POSTAL":"DRC","FORMAL_EN":"Democratic Republic of the Congo","FORMAL_FR":null,"NAME_CIAWF":"Congo, Democratic Republic of the","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Congo, Dem. Rep.","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":7,"POP_EST":86790567,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":50400,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"CG","ISO_A2":"CD","ISO_A2_EH":"CD","ISO_A3":"COD","ISO_A3_EH":"COD","ISO_N3":"180","ISO_N3_EH":"180","UN_A3":"180","WB_A2":"ZR","WB_A3":"ZAR","WOE_ID":23424780,"WOE_ID_EH":23424780,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"COD","ADM0_DIFF":null,"ADM0_TLC":"COD","ADM0_A3_US":"COD","ADM0_A3_FR":"COD","ADM0_A3_RU":"COD","ADM0_A3_ES":"COD","ADM0_A3_CN":"COD","ADM0_A3_TW":"COD","ADM0_A3_IN":"COD","ADM0_A3_NP":"COD","ADM0_A3_PK":"COD","ADM0_A3_DE":"COD","ADM0_A3_GB":"COD","ADM0_A3_BR":"COD","ADM0_A3_IL":"COD","ADM0_A3_PS":"COD","ADM0_A3_SA":"COD","ADM0_A3_EG":"COD","ADM0_A3_MA":"COD","ADM0_A3_PT":"COD","ADM0_A3_AR":"COD","ADM0_A3_JP":"COD","ADM0_A3_KO":"COD","ADM0_A3_VN":"COD","ADM0_A3_TR":"COD","ADM0_A3_ID":"COD","ADM0_A3_PL":"COD","ADM0_A3_GR":"COD","ADM0_A3_IT":"COD","ADM0_A3_NL":"COD","ADM0_A3_SE":"COD","ADM0_A3_BD":"COD","ADM0_A3_UA":"COD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":15,"LONG_LEN":32,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":23.458829,"LABEL_Y":-1.858167,"NE_ID":1159320513,"WIKIDATAID":"Q974","NAME_AR":"جمهورية الكونغو الديمقراطية","NAME_BN":"গণতান্ত্রিক কঙ্গো প্রজাতন্ত্র","NAME_DE":"Demokratische Republik Kongo","NAME_EN":"Democratic Republic of the Congo","NAME_ES":"República Democrática del Congo","NAME_FA":"جمهوری دموکراتیک کنگو","NAME_FR":"République démocratique du Congo","NAME_EL":"Λαϊκή Δημοκρατία του Κονγκό","NAME_HE":"הרפובליקה הדמוקרטית של קונגו","NAME_HI":"कांगो लोकतान्त्रिक गणराज्य","NAME_HU":"Kongói Demokratikus Köztársaság","NAME_ID":"Republik Demokratik Kongo","NAME_IT":"Repubblica Democratica del Congo","NAME_JA":"コンゴ民主共和国","NAME_KO":"콩고 민주 공화국","NAME_NL":"Congo-Kinshasa","NAME_PL":"Demokratyczna Republika Konga","NAME_PT":"República Democrática do Congo","NAME_RU":"Демократическая Республика Конго","NAME_SV":"Kongo-Kinshasa","NAME_TR":"Demokratik Kongo Cumhuriyeti","NAME_UK":"Демократична Республіка Конго","NAME_UR":"جمہوری جمہوریہ کانگو","NAME_VI":"Cộng hòa Dân chủ Congo","NAME_ZH":"刚果民主共和国","NAME_ZHT":"剛果民主共和國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[12.213672,-13.453809,31.274023,5.312109],"geometry":{"type":"Polygon","coordinates":[[[30.751172,-8.193652],[30.57793,-8.22002],[30.327539,-8.258203],[30.051367,-8.300293],[29.766211,-8.34375],[29.483789,-8.386914],[29.215625,-8.427832],[28.972266,-8.464941],[28.898145,-8.485449],[28.934473,-8.590234],[28.917773,-8.700586],[28.869531,-8.78584],[28.793555,-8.891016],[28.758789,-8.932617],[28.68125,-9.014648],[28.616504,-9.072266],[28.484277,-9.169434],[28.400684,-9.224805],[28.400195,-9.275],[28.540527,-9.510059],[28.604199,-9.678809],[28.630078,-9.83125],[28.628906,-9.91875],[28.623535,-10.098828],[28.617188,-10.312988],[28.607422,-10.397363],[28.645508,-10.550195],[28.638867,-10.669238],[28.544238,-10.802344],[28.517969,-10.933203],[28.470313,-11.10957],[28.404199,-11.354395],[28.357227,-11.483008],[28.383398,-11.566699],[28.407031,-11.622852],[28.431836,-11.69834],[28.48252,-11.812109],[28.541602,-11.879199],[28.574609,-11.908105],[28.769434,-12.05127],[28.85,-12.120508],[28.973438,-12.257812],[29.064355,-12.348828],[29.191211,-12.370215],[29.34375,-12.404785],[29.427539,-12.43125],[29.485547,-12.418457],[29.504883,-12.386133],[29.502246,-12.317578],[29.491992,-12.266895],[29.508203,-12.228223],[29.559766,-12.202441],[29.691992,-12.19834],[29.749609,-12.164062],[29.795117,-12.155469],[29.795313,-12.306152],[29.795508,-12.450586],[29.795605,-12.625879],[29.795801,-12.827051],[29.796094,-12.99209],[29.796289,-13.16748],[29.796484,-13.369727],[29.795313,-13.392773],[29.775195,-13.438086],[29.722656,-13.453809],[29.651758,-13.414355],[29.647656,-13.372949],[29.630273,-13.298535],[29.597168,-13.260547],[29.554199,-13.248926],[29.481445,-13.267969],[29.381836,-13.322852],[29.253711,-13.370801],[29.201855,-13.39834],[29.111621,-13.395117],[29.014258,-13.368848],[28.942285,-13.307129],[28.92168,-13.214648],[28.858789,-13.119434],[28.773145,-12.981934],[28.730078,-12.925488],[28.672949,-12.861328],[28.61543,-12.854102],[28.550879,-12.836133],[28.51123,-12.742188],[28.474414,-12.62334],[28.451465,-12.577441],[28.412891,-12.518066],[28.357715,-12.482031],[28.237305,-12.43457],[28.068848,-12.368164],[27.857422,-12.284863],[27.756836,-12.280859],[27.644336,-12.266797],[27.573828,-12.227051],[27.533398,-12.195312],[27.487012,-12.079688],[27.423633,-11.944531],[27.238086,-11.783496],[27.196387,-11.605078],[27.15918,-11.579199],[27.09541,-11.59375],[27.046094,-11.615918],[27.02666,-11.66377],[26.976855,-11.824609],[26.949609,-11.898828],[26.930859,-11.919336],[26.89043,-11.943555],[26.824023,-11.965234],[26.729688,-11.975977],[26.596387,-11.97207],[26.429688,-11.947852],[26.339648,-11.929883],[26.096387,-11.903223],[26.025977,-11.890137],[25.926563,-11.855273],[25.854883,-11.820117],[25.618848,-11.744141],[25.511914,-11.753418],[25.459961,-11.699805],[25.413379,-11.673535],[25.349414,-11.623047],[25.320703,-11.553516],[25.282617,-11.40498],[25.291797,-11.325488],[25.319336,-11.236914],[25.28877,-11.212402],[25.245996,-11.212402],[25.184863,-11.242969],[25.075977,-11.260059],[24.876855,-11.299121],[24.806348,-11.321191],[24.728125,-11.337793],[24.668262,-11.35293],[24.518555,-11.438477],[24.466602,-11.447656],[24.37793,-11.41709],[24.335156,-11.371289],[24.37793,-11.319336],[24.396289,-11.255176],[24.365723,-11.129883],[24.319922,-11.071777],[24.187207,-11.02998],[24.136523,-11.025977],[24.115137,-10.955664],[24.078418,-10.891504],[24.002734,-10.879102],[23.966504,-10.871777],[23.928711,-10.891504],[23.907324,-10.943457],[23.901172,-10.983203],[23.833887,-11.013672],[23.696387,-11.007617],[23.559961,-10.978613],[23.463965,-10.969336],[23.400195,-10.976465],[23.156738,-11.074805],[23.07627,-11.087891],[22.814746,-11.080273],[22.666504,-11.059766],[22.561035,-11.055859],[22.486133,-11.086719],[22.392969,-11.159473],[22.314941,-11.198633],[22.278809,-11.194141],[22.256641,-11.163672],[22.226172,-11.121973],[22.216699,-11.012695],[22.17793,-10.892285],[22.203516,-10.829492],[22.280469,-10.783984],[22.307031,-10.691309],[22.283203,-10.551563],[22.281641,-10.45332],[22.302441,-10.39668],[22.274512,-10.259082],[22.197754,-10.040625],[22.08916,-9.862793],[21.948633,-9.725586],[21.856641,-9.594238],[21.813184,-9.46875],[21.829492,-9.168457],[21.871875,-8.903516],[21.905371,-8.693359],[21.895898,-8.341113],[21.800879,-8.111914],[21.780078,-7.86543],[21.833594,-7.60166],[21.841602,-7.420996],[21.806055,-7.328613],[21.781641,-7.314648],[21.751074,-7.305469],[21.51084,-7.29668],[21.190332,-7.284961],[20.910938,-7.281445],[20.607813,-7.277734],[20.558398,-7.244434],[20.53584,-7.182813],[20.536914,-7.121777],[20.59873,-6.935156],[20.590039,-6.919922],[20.482227,-6.91582],[20.190039,-6.946289],[19.997461,-6.976465],[19.875195,-6.986328],[19.660352,-7.037109],[19.527637,-7.144434],[19.483789,-7.279492],[19.487402,-7.390723],[19.479883,-7.472168],[19.419336,-7.557324],[19.37168,-7.655078],[19.369922,-7.706543],[19.34082,-7.966602],[19.142676,-8.001465],[18.944434,-8.001465],[18.89834,-7.998145],[18.653418,-7.936035],[18.562695,-7.935938],[18.484668,-7.968555],[18.334863,-8.000293],[18.191504,-8.023828],[18.047168,-8.100781],[18.008789,-8.107617],[17.913086,-8.067676],[17.778809,-8.071387],[17.643359,-8.090723],[17.57959,-8.099023],[17.536035,-8.075879],[17.411328,-7.881934],[17.24502,-7.62334],[17.155078,-7.461328],[17.121582,-7.419043],[17.06377,-7.363086],[16.984766,-7.257422],[16.952051,-7.157031],[16.96582,-7.062109],[16.919434,-6.933984],[16.813086,-6.772559],[16.742969,-6.618457],[16.709375,-6.47168],[16.700977,-6.345996],[16.717773,-6.241406],[16.697266,-6.164258],[16.639551,-6.114551],[16.608008,-6.051563],[16.585156,-6.025293],[16.537109,-5.96582],[16.431445,-5.900195],[16.315234,-5.865625],[16.060156,-5.864941],[15.726953,-5.863867],[15.425,-5.868848],[15.089355,-5.874512],[14.749414,-5.880078],[14.65791,-5.888867],[14.398633,-5.892676],[14.19082,-5.875977],[14.11377,-5.865137],[13.978516,-5.857227],[13.764551,-5.855176],[13.649023,-5.861719],[13.371484,-5.861816],[13.346484,-5.863379],[13.302637,-5.881836],[13.184375,-5.85625],[13.068164,-5.864844],[13.00332,-5.836133],[12.86084,-5.854102],[12.791602,-5.877734],[12.680664,-5.96084],[12.514551,-6.004199],[12.45293,-6.000488],[12.411719,-5.986328],[12.315039,-5.895313],[12.24043,-5.807324],[12.213672,-5.758691],[12.255273,-5.746484],[12.386035,-5.727734],[12.48457,-5.71875],[12.503711,-5.695801],[12.518945,-5.424609],[12.522363,-5.148926],[12.487402,-5.112695],[12.453223,-5.090625],[12.451465,-5.071484],[12.502734,-5.036914],[12.573535,-4.996582],[12.596191,-4.978418],[12.674805,-4.905371],[12.829688,-4.736621],[12.947461,-4.695312],[13.057324,-4.651074],[13.072754,-4.634766],[13.087402,-4.601953],[13.136621,-4.604297],[13.152344,-4.620313],[13.176465,-4.655859],[13.219629,-4.705859],[13.297266,-4.765234],[13.375781,-4.829395],[13.414941,-4.837402],[13.478418,-4.80498],[13.55166,-4.756738],[13.65957,-4.721484],[13.685352,-4.688672],[13.699414,-4.618359],[13.707617,-4.543262],[13.71709,-4.454492],[13.739063,-4.44248],[13.778027,-4.433887],[13.849512,-4.458887],[13.882324,-4.484668],[13.940918,-4.484668],[13.978418,-4.46123],[14.046875,-4.41748],[14.133887,-4.4],[14.227051,-4.358105],[14.316211,-4.304102],[14.358301,-4.299414],[14.40293,-4.369727],[14.442773,-4.419043],[14.449805,-4.449512],[14.409961,-4.508105],[14.36543,-4.585547],[14.40293,-4.681641],[14.411914,-4.775],[14.410742,-4.83125],[14.440918,-4.854102],[14.461621,-4.864941],[14.493945,-4.85166],[14.557617,-4.855762],[14.633984,-4.885059],[14.70791,-4.881738],[14.779297,-4.845703],[14.912109,-4.705566],[15.10625,-4.461035],[15.267188,-4.307617],[15.394629,-4.244922],[15.480957,-4.171777],[15.525977,-4.087988],[15.600098,-4.030957],[15.75459,-3.985547],[15.872461,-3.934277],[15.990039,-3.766211],[16.146777,-3.46416],[16.190625,-3.194434],[16.217383,-3.030273],[16.201855,-2.464746],[16.191602,-2.279102],[16.215332,-2.177832],[16.273926,-2.108203],[16.433594,-1.96084],[16.540723,-1.840137],[16.622461,-1.698926],[16.780078,-1.376367],[16.849121,-1.272461],[16.879883,-1.225879],[16.974707,-1.139941],[17.107617,-1.064453],[17.278809,-0.999609],[17.542871,-0.775],[17.752832,-0.549023],[17.724121,-0.277539],[17.773145,-0.052393],[17.887695,0.234131],[17.925195,0.537305],[17.885742,0.856885],[17.902441,1.118066],[18.011719,1.422119],[18.057813,1.534863],[18.072852,1.719385],[18.072168,2.013281],[18.211621,2.414941],[18.343457,2.65542],[18.490918,2.924414],[18.54707,3.087012],[18.622168,3.304053],[18.610352,3.478418],[18.59668,3.678711],[18.633691,3.954297],[18.619922,4.116602],[18.56748,4.257568],[18.594141,4.34624],[18.699902,4.382617],[18.831738,4.523438],[19.068555,4.891406],[19.323438,5.070752],[19.500977,5.12749],[19.686035,5.121387],[19.806543,5.089307],[19.8625,5.031299],[20.002344,4.944727],[20.226367,4.829639],[20.393555,4.686182],[20.486523,4.541553],[20.558105,4.462695],[20.647461,4.435645],[20.792969,4.447314],[20.955762,4.413135],[21.125586,4.332178],[21.229785,4.302197],[21.268359,4.323096],[21.350195,4.311377],[21.537598,4.244824],[21.687012,4.281396],[21.908203,4.253906],[22.422168,4.134961],[22.449707,4.155127],[22.461816,4.159766],[22.505664,4.207666],[22.617188,4.445557],[22.711719,4.591748],[22.755762,4.64668],[22.864551,4.723877],[22.992871,4.743848],[23.115918,4.736914],[23.218848,4.702979],[23.312891,4.663525],[23.417188,4.663135],[23.523633,4.70127],[23.681836,4.770801],[23.848438,4.816357],[23.991699,4.86626],[24.227734,4.953857],[24.319824,4.994141],[24.437109,5.009961],[24.765527,4.930078],[24.978418,4.982959],[25.065234,4.967432],[25.249316,5.024561],[25.283105,5.062695],[25.400195,5.255908],[25.525098,5.312109],[25.713867,5.283691],[25.819922,5.253711],[26.173535,5.171143],[26.632617,5.085205],[26.767578,5.071924],[26.82207,5.062402],[26.870117,5.075684],[27.020605,5.184375],[27.071875,5.199756],[27.114941,5.197852],[27.40332,5.10918],[27.439258,5.039209],[27.491016,4.967578],[27.66416,4.845996],[27.719238,4.77832],[27.761426,4.703223],[27.788086,4.644678],[27.841602,4.597754],[27.916602,4.56792],[27.980664,4.53208],[28.019824,4.479395],[28.078613,4.424805],[28.19209,4.350244],[28.247266,4.348535],[28.311035,4.338037],[28.367188,4.318652],[28.427539,4.32417],[28.524805,4.372852],[28.639551,4.454492],[28.727051,4.50498],[28.939355,4.487061],[29.057422,4.445947],[29.151465,4.388184],[29.224902,4.391895],[29.384863,4.498389],[29.469629,4.611816],[29.552051,4.636035],[29.676855,4.586914],[29.779883,4.480957],[29.870215,4.327148],[29.933984,4.268506],[30.021387,4.177637],[30.194922,3.981934],[30.420703,3.883887],[30.508301,3.835693],[30.536914,3.787207],[30.553516,3.722949],[30.559375,3.652783],[30.586719,3.624219],[30.647656,3.634131],[30.699902,3.644092],[30.757227,3.624219],[30.796973,3.573145],[30.816895,3.53335],[30.838574,3.490723],[30.895313,3.463672],[30.906445,3.408936],[30.867578,3.342139],[30.827832,3.282617],[30.779297,3.163379],[30.754004,3.041797],[30.786523,3.001367],[30.821387,2.967578],[30.839941,2.933496],[30.850781,2.893652],[30.84668,2.847021],[30.769531,2.677979],[30.729883,2.530273],[30.728613,2.455371],[30.830078,2.400439],[30.961914,2.403271],[31.003613,2.369385],[31.045313,2.315527],[31.082129,2.288086],[31.137598,2.288867],[31.176367,2.270068],[31.191406,2.232275],[31.236328,2.191357],[31.274023,2.146289],[31.256055,2.088477],[31.252734,2.04458],[31.158789,1.922021],[30.942578,1.682812],[30.478125,1.239062],[30.477832,1.238818],[30.321094,1.185303],[30.240137,1.102783],[30.18291,0.973486],[30.047363,0.863525],[29.942871,0.819238],[29.931641,0.792871],[29.923828,0.673926],[29.934473,0.499023],[29.885449,0.418945],[29.814648,0.263623],[29.777832,0.166357],[29.749707,0.147217],[29.717676,0.09834],[29.697852,-0.060205],[29.684375,-0.113574],[29.633203,-0.441699],[29.647852,-0.535254],[29.608203,-0.691309],[29.606445,-0.783105],[29.590039,-0.887109],[29.561914,-0.977344],[29.564063,-1.121387],[29.57998,-1.356738],[29.576953,-1.387891],[29.537793,-1.409766],[29.467969,-1.468066],[29.401953,-1.507422],[29.35166,-1.517578],[29.268164,-1.621582],[29.196582,-1.719922],[29.143262,-1.816016],[29.129395,-1.860254],[29.140625,-1.98457],[29.148047,-2.131836],[29.131543,-2.195117],[29.106445,-2.233203],[28.989551,-2.312793],[28.912695,-2.370313],[28.876367,-2.400293],[28.857617,-2.44668],[28.891406,-2.555566],[28.893945,-2.635059],[28.921777,-2.682031],[29.014355,-2.720215],[29.01416,-2.758301],[29.016602,-2.799609],[29.064746,-2.850781],[29.153223,-2.955273],[29.224414,-3.053516],[29.226074,-3.138672],[29.212305,-3.28125],[29.210059,-3.363281],[29.217188,-3.475684],[29.216797,-3.684961],[29.211816,-3.833789],[29.223242,-3.91084],[29.331348,-4.09541],[29.379199,-4.299707],[29.403223,-4.449316],[29.404199,-4.49668],[29.367578,-4.668848],[29.325684,-4.835645],[29.323438,-4.898828],[29.342773,-4.983105],[29.420117,-5.176172],[29.476465,-5.316602],[29.503711,-5.400977],[29.542383,-5.499805],[29.594141,-5.650781],[29.607031,-5.722656],[29.596387,-5.775977],[29.49082,-5.96543],[29.480078,-6.025],[29.50625,-6.17207],[29.54082,-6.313867],[29.590625,-6.394434],[29.709668,-6.616895],[29.798145,-6.691895],[29.961816,-6.803125],[30.10625,-6.915039],[30.161816,-6.973047],[30.212695,-7.037891],[30.313184,-7.203711],[30.374512,-7.338672],[30.406738,-7.460645],[30.485645,-7.627148],[30.558887,-7.781934],[30.653809,-7.970898],[30.720898,-8.104395],[30.751172,-8.193652]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Republic of the Congo","SOV_A3":"COG","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Republic of the Congo","ADM0_A3":"COG","GEOU_DIF":0,"GEOUNIT":"Republic of the Congo","GU_A3":"COG","SU_DIF":0,"SUBUNIT":"Republic of the Congo","SU_A3":"COG","BRK_DIFF":0,"NAME":"Congo","NAME_LONG":"Republic of the Congo","BRK_A3":"COG","BRK_NAME":"Republic of the Congo","BRK_GROUP":null,"ABBREV":"Rep. Congo","POSTAL":"CG","FORMAL_EN":"Republic of the Congo","FORMAL_FR":null,"NAME_CIAWF":"Congo, Republic of the","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Congo, Rep.","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":10,"POP_EST":5380508,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":12267,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"CF","ISO_A2":"CG","ISO_A2_EH":"CG","ISO_A3":"COG","ISO_A3_EH":"COG","ISO_N3":"178","ISO_N3_EH":"178","UN_A3":"178","WB_A2":"CG","WB_A3":"COG","WOE_ID":23424779,"WOE_ID_EH":23424779,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"COG","ADM0_DIFF":null,"ADM0_TLC":"COG","ADM0_A3_US":"COG","ADM0_A3_FR":"COG","ADM0_A3_RU":"COG","ADM0_A3_ES":"COG","ADM0_A3_CN":"COG","ADM0_A3_TW":"COG","ADM0_A3_IN":"COG","ADM0_A3_NP":"COG","ADM0_A3_PK":"COG","ADM0_A3_DE":"COG","ADM0_A3_GB":"COG","ADM0_A3_BR":"COG","ADM0_A3_IL":"COG","ADM0_A3_PS":"COG","ADM0_A3_SA":"COG","ADM0_A3_EG":"COG","ADM0_A3_MA":"COG","ADM0_A3_PT":"COG","ADM0_A3_AR":"COG","ADM0_A3_JP":"COG","ADM0_A3_KO":"COG","ADM0_A3_VN":"COG","ADM0_A3_TR":"COG","ADM0_A3_ID":"COG","ADM0_A3_PL":"COG","ADM0_A3_GR":"COG","ADM0_A3_IT":"COG","ADM0_A3_NL":"COG","ADM0_A3_SE":"COG","ADM0_A3_BD":"COG","ADM0_A3_UA":"COG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":5,"LONG_LEN":21,"ABBREV_LEN":10,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":15.9005,"LABEL_Y":0.142331,"NE_ID":1159320515,"WIKIDATAID":"Q971","NAME_AR":"جمهورية الكونغو","NAME_BN":"কঙ্গো প্রজাতন্ত্র","NAME_DE":"Republik Kongo","NAME_EN":"Republic of the Congo","NAME_ES":"República del Congo","NAME_FA":"جمهوری کنگو","NAME_FR":"République du Congo","NAME_EL":"Δημοκρατία του Κονγκό","NAME_HE":"הרפובליקה של קונגו","NAME_HI":"कांगो गणराज्य","NAME_HU":"Kongói Köztársaság","NAME_ID":"Republik Kongo","NAME_IT":"Repubblica del Congo","NAME_JA":"コンゴ共和国","NAME_KO":"콩고 공화국","NAME_NL":"Congo-Brazzaville","NAME_PL":"Kongo","NAME_PT":"República do Congo","NAME_RU":"Республика Конго","NAME_SV":"Kongo-Brazzaville","NAME_TR":"Kongo Cumhuriyeti","NAME_UK":"Республіка Конго","NAME_UR":"جمہوریہ کانگو","NAME_VI":"Cộng hòa Congo","NAME_ZH":"刚果共和国","NAME_ZHT":"剛果共和國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[11.130176,-5.004297,18.622168,3.687305],"geometry":{"type":"Polygon","coordinates":[[[11.130176,-3.916309],[11.190039,-3.762012],[11.234473,-3.69082],[11.288281,-3.641113],[11.504297,-3.520313],[11.536816,-3.525],[11.685742,-3.682031],[11.733398,-3.694531],[11.786426,-3.690234],[11.849121,-3.69668],[11.879883,-3.665918],[11.884766,-3.625391],[11.839453,-3.580078],[11.83291,-3.531445],[11.864746,-3.478613],[11.882812,-3.420215],[11.929297,-3.350977],[11.93418,-3.318555],[11.885059,-3.283203],[11.784375,-3.229102],[11.71543,-3.176953],[11.689063,-3.126953],[11.708008,-3.063086],[11.763477,-3.01123],[11.760156,-2.983105],[11.711328,-2.936523],[11.675684,-2.886621],[11.639063,-2.855371],[11.537793,-2.836719],[11.557129,-2.769629],[11.594531,-2.670996],[11.603418,-2.59541],[11.575195,-2.39707],[11.577734,-2.360938],[11.605469,-2.342578],[11.665918,-2.364551],[11.726758,-2.394727],[11.892383,-2.351465],[11.950293,-2.344824],[11.998242,-2.382812],[12.064453,-2.412598],[12.446387,-2.32998],[12.453809,-2.245605],[12.475684,-2.169238],[12.478516,-2.112012],[12.462598,-2.075293],[12.44375,-2.047559],[12.432422,-1.990332],[12.432129,-1.928906],[12.468652,-1.9],[12.59043,-1.826855],[12.628418,-1.82959],[12.713672,-1.869434],[12.793555,-1.931836],[12.864453,-2.063281],[12.913574,-2.17627],[12.991992,-2.313379],[13.158594,-2.369141],[13.357324,-2.404785],[13.464941,-2.39541],[13.618555,-2.278613],[13.705566,-2.1875],[13.733789,-2.138477],[13.784375,-2.16377],[13.841602,-2.283691],[13.878516,-2.330176],[13.887695,-2.374512],[13.861816,-2.429883],[13.886914,-2.46543],[13.993848,-2.490625],[14.087402,-2.466895],[14.129785,-2.417969],[14.199805,-2.354199],[14.200391,-2.300586],[14.162891,-2.265527],[14.162891,-2.217578],[14.201758,-2.179883],[14.239648,-2.076758],[14.251465,-2.001465],[14.288379,-1.953516],[14.358594,-1.920215],[14.383984,-1.890039],[14.423242,-1.711523],[14.40293,-1.646973],[14.40293,-1.593359],[14.447266,-1.525098],[14.455566,-1.413184],[14.436914,-1.229785],[14.424023,-1.103906],[14.410645,-0.97207],[14.444922,-0.798828],[14.480566,-0.618359],[14.474121,-0.573438],[14.424707,-0.518652],[14.36377,-0.468555],[14.206738,-0.427344],[14.14834,-0.361914],[14.102832,-0.292383],[14.069434,-0.270117],[13.898047,-0.242578],[13.860059,-0.20332],[13.875488,-0.09082],[13.890625,0.075293],[13.88457,0.19082],[13.915137,0.283984],[13.949609,0.353809],[14.025293,0.427734],[14.065527,0.51499],[14.0875,0.536572],[14.230957,0.551123],[14.283105,0.587451],[14.324219,0.624219],[14.341504,0.673828],[14.390625,0.755713],[14.434473,0.811475],[14.43916,0.849121],[14.429883,0.901465],[14.386426,1.004443],[14.334473,1.090234],[14.303027,1.12085],[14.239746,1.322559],[14.180859,1.370215],[14.066211,1.395898],[13.851367,1.41875],[13.721191,1.382275],[13.52334,1.3146],[13.372363,1.267773],[13.274121,1.241016],[13.216309,1.248437],[13.190137,1.279248],[13.22832,1.30542],[13.247363,1.366699],[13.222754,1.45459],[13.18457,1.535059],[13.162695,1.648096],[13.172168,1.788574],[13.209473,1.92041],[13.288672,2.091699],[13.293555,2.161572],[13.533496,2.159521],[13.772754,2.157422],[14.034375,2.158887],[14.287012,2.160352],[14.484082,2.154736],[14.578906,2.199121],[14.669141,2.13208],[14.713281,2.117139],[14.72832,2.122412],[14.762891,2.075195],[14.875,2.080469],[14.892773,2.069336],[14.902441,2.012305],[15.006445,2.01377],[15.057813,2.000879],[15.099609,2.002344],[15.160059,2.035596],[15.203516,2.024463],[15.282422,1.981738],[15.33877,1.944727],[15.41748,1.956738],[15.600293,1.950391],[15.741602,1.91499],[15.881641,1.816602],[15.975195,1.76001],[16.059375,1.676221],[16.090332,1.69126],[16.119531,1.714111],[16.136133,1.724219],[16.134961,1.795947],[16.087891,1.918066],[16.069629,2.02168],[16.080078,2.106787],[16.115723,2.167822],[16.176563,2.204785],[16.182617,2.262451],[16.183398,2.270068],[16.251758,2.406787],[16.319629,2.542773],[16.40127,2.701025],[16.468555,2.831738],[16.45957,2.896533],[16.466211,2.993213],[16.480078,3.100977],[16.476758,3.165137],[16.496289,3.208838],[16.543066,3.369531],[16.57041,3.463086],[16.610742,3.505371],[16.67334,3.535205],[16.764355,3.536279],[17.002539,3.556689],[17.224707,3.598437],[17.298438,3.617188],[17.437988,3.684619],[17.491602,3.687305],[17.537695,3.661621],[17.806641,3.58418],[17.880371,3.553857],[17.907129,3.558398],[17.947949,3.551758],[18.010742,3.55083],[18.072266,3.560303],[18.111328,3.551074],[18.160938,3.499805],[18.193945,3.50542],[18.237109,3.542676],[18.318164,3.580811],[18.474414,3.622998],[18.499805,3.604102],[18.553809,3.510205],[18.610352,3.478418],[18.622168,3.304053],[18.54707,3.087012],[18.490918,2.924414],[18.343457,2.65542],[18.211621,2.414941],[18.072168,2.013281],[18.072852,1.719385],[18.057813,1.534863],[18.011719,1.422119],[17.902441,1.118066],[17.885742,0.856885],[17.925195,0.537305],[17.887695,0.234131],[17.773145,-0.052393],[17.724121,-0.277539],[17.752832,-0.549023],[17.542871,-0.775],[17.278809,-0.999609],[17.107617,-1.064453],[16.974707,-1.139941],[16.879883,-1.225879],[16.849121,-1.272461],[16.780078,-1.376367],[16.622461,-1.698926],[16.540723,-1.840137],[16.433594,-1.96084],[16.273926,-2.108203],[16.215332,-2.177832],[16.191602,-2.279102],[16.201855,-2.464746],[16.217383,-3.030273],[16.190625,-3.194434],[16.146777,-3.46416],[15.990039,-3.766211],[15.872461,-3.934277],[15.75459,-3.985547],[15.600098,-4.030957],[15.525977,-4.087988],[15.480957,-4.171777],[15.394629,-4.244922],[15.267188,-4.307617],[15.10625,-4.461035],[14.912109,-4.705566],[14.779297,-4.845703],[14.70791,-4.881738],[14.633984,-4.885059],[14.557617,-4.855762],[14.493945,-4.85166],[14.461621,-4.864941],[14.440918,-4.854102],[14.410742,-4.83125],[14.411914,-4.775],[14.40293,-4.681641],[14.36543,-4.585547],[14.409961,-4.508105],[14.449805,-4.449512],[14.442773,-4.419043],[14.40293,-4.369727],[14.358301,-4.299414],[14.316211,-4.304102],[14.227051,-4.358105],[14.133887,-4.4],[14.046875,-4.41748],[13.978418,-4.46123],[13.940918,-4.484668],[13.882324,-4.484668],[13.849512,-4.458887],[13.778027,-4.433887],[13.739063,-4.44248],[13.71709,-4.454492],[13.707617,-4.543262],[13.699414,-4.618359],[13.685352,-4.688672],[13.65957,-4.721484],[13.55166,-4.756738],[13.478418,-4.80498],[13.414941,-4.837402],[13.375781,-4.829395],[13.297266,-4.765234],[13.219629,-4.705859],[13.176465,-4.655859],[13.152344,-4.620313],[13.136621,-4.604297],[13.087402,-4.601953],[13.072754,-4.634766],[13.048047,-4.619238],[12.971387,-4.551758],[12.881055,-4.445117],[12.848145,-4.428906],[12.798242,-4.430566],[12.719434,-4.469727],[12.641699,-4.531152],[12.501465,-4.5875],[12.38457,-4.619141],[12.374023,-4.657715],[12.34668,-4.724121],[12.30791,-4.765527],[12.204297,-4.778613],[12.16709,-4.837695],[12.077539,-4.952148],[12.018359,-5.004297],[12.002734,-4.982031],[11.966797,-4.954395],[11.893262,-4.865723],[11.820703,-4.755469],[11.80127,-4.705176],[11.780859,-4.676563],[11.777539,-4.56582],[11.668066,-4.434277],[11.393848,-4.200293],[11.364453,-4.130566],[11.130176,-3.916309]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Comoros","SOV_A3":"COM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Comoros","ADM0_A3":"COM","GEOU_DIF":0,"GEOUNIT":"Comoros","GU_A3":"COM","SU_DIF":0,"SUBUNIT":"Comoros","SU_A3":"COM","BRK_DIFF":0,"NAME":"Comoros","NAME_LONG":"Comoros","BRK_A3":"COM","BRK_NAME":"Comoros","BRK_GROUP":null,"ABBREV":"Com.","POSTAL":"KM","FORMAL_EN":"Union of the Comoros","FORMAL_FR":null,"NAME_CIAWF":"Comoros","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Comoros","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":10,"POP_EST":850886,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":1165,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"CN","ISO_A2":"KM","ISO_A2_EH":"KM","ISO_A3":"COM","ISO_A3_EH":"COM","ISO_N3":"174","ISO_N3_EH":"174","UN_A3":"174","WB_A2":"KM","WB_A3":"COM","WOE_ID":23424786,"WOE_ID_EH":23424786,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"COM","ADM0_DIFF":null,"ADM0_TLC":"COM","ADM0_A3_US":"COM","ADM0_A3_FR":"COM","ADM0_A3_RU":"COM","ADM0_A3_ES":"COM","ADM0_A3_CN":"COM","ADM0_A3_TW":"COM","ADM0_A3_IN":"COM","ADM0_A3_NP":"COM","ADM0_A3_PK":"COM","ADM0_A3_DE":"COM","ADM0_A3_GB":"COM","ADM0_A3_BR":"COM","ADM0_A3_IL":"COM","ADM0_A3_PS":"COM","ADM0_A3_SA":"COM","ADM0_A3_EG":"COM","ADM0_A3_MA":"COM","ADM0_A3_PT":"COM","ADM0_A3_AR":"COM","ADM0_A3_JP":"COM","ADM0_A3_KO":"COM","ADM0_A3_VN":"COM","ADM0_A3_TR":"COM","ADM0_A3_ID":"COM","ADM0_A3_PL":"COM","ADM0_A3_GR":"COM","ADM0_A3_IT":"COM","ADM0_A3_NL":"COM","ADM0_A3_SE":"COM","ADM0_A3_BD":"COM","ADM0_A3_UA":"COM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":43.318094,"LABEL_Y":-11.727683,"NE_ID":1159320521,"WIKIDATAID":"Q970","NAME_AR":"جزر القمر","NAME_BN":"কোমোরোস","NAME_DE":"Komoren","NAME_EN":"Comoros","NAME_ES":"Comoras","NAME_FA":"مجمعالجزایر قمر","NAME_FR":"Comores","NAME_EL":"Κομόρες","NAME_HE":"קומורו","NAME_HI":"कोमोरोस","NAME_HU":"Comore-szigetek","NAME_ID":"Komoro","NAME_IT":"Comore","NAME_JA":"コモロ","NAME_KO":"코모로","NAME_NL":"Comoren","NAME_PL":"Komory","NAME_PT":"Comores","NAME_RU":"Коморы","NAME_SV":"Komorerna","NAME_TR":"Komorlar","NAME_UK":"Коморські Острови","NAME_UR":"اتحاد القمری","NAME_VI":"Comoros","NAME_ZH":"科摩罗","NAME_ZHT":"葛摩","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[43.22666,-12.368262,44.526758,-11.368457],"geometry":{"type":"MultiPolygon","coordinates":[[[[44.476367,-12.081543],[44.526758,-12.219531],[44.52627,-12.323535],[44.50498,-12.356543],[44.460156,-12.335156],[44.377441,-12.252246],[44.220117,-12.171387],[44.292285,-12.164746],[44.334473,-12.173047],[44.379102,-12.165625],[44.407031,-12.120117],[44.412598,-12.092969],[44.451855,-12.071387],[44.476367,-12.081543]]],[[[43.788672,-12.307031],[43.858984,-12.368262],[43.663672,-12.342871],[43.63291,-12.287695],[43.631348,-12.24707],[43.704297,-12.255957],[43.788672,-12.307031]]],[[[43.46582,-11.90127],[43.446777,-11.914551],[43.355469,-11.85752],[43.30332,-11.844043],[43.22666,-11.751855],[43.256055,-11.432129],[43.280664,-11.391211],[43.299023,-11.374512],[43.341504,-11.368457],[43.392969,-11.408594],[43.379395,-11.61416],[43.447656,-11.752539],[43.491504,-11.862109],[43.46582,-11.90127]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Colombia","SOV_A3":"COL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Colombia","ADM0_A3":"COL","GEOU_DIF":0,"GEOUNIT":"Colombia","GU_A3":"COL","SU_DIF":0,"SUBUNIT":"Colombia","SU_A3":"COL","BRK_DIFF":0,"NAME":"Colombia","NAME_LONG":"Colombia","BRK_A3":"COL","BRK_NAME":"Colombia","BRK_GROUP":null,"ABBREV":"Col.","POSTAL":"CO","FORMAL_EN":"Republic of Colombia","FORMAL_FR":null,"NAME_CIAWF":"Colombia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Colombia","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":1,"POP_EST":50339443,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":323615,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"CO","ISO_A2":"CO","ISO_A2_EH":"CO","ISO_A3":"COL","ISO_A3_EH":"COL","ISO_N3":"170","ISO_N3_EH":"170","UN_A3":"170","WB_A2":"CO","WB_A3":"COL","WOE_ID":23424787,"WOE_ID_EH":23424787,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"COL","ADM0_DIFF":null,"ADM0_TLC":"COL","ADM0_A3_US":"COL","ADM0_A3_FR":"COL","ADM0_A3_RU":"COL","ADM0_A3_ES":"COL","ADM0_A3_CN":"COL","ADM0_A3_TW":"COL","ADM0_A3_IN":"COL","ADM0_A3_NP":"COL","ADM0_A3_PK":"COL","ADM0_A3_DE":"COL","ADM0_A3_GB":"COL","ADM0_A3_BR":"COL","ADM0_A3_IL":"COL","ADM0_A3_PS":"COL","ADM0_A3_SA":"COL","ADM0_A3_EG":"COL","ADM0_A3_MA":"COL","ADM0_A3_PT":"COL","ADM0_A3_AR":"COL","ADM0_A3_JP":"COL","ADM0_A3_KO":"COL","ADM0_A3_VN":"COL","ADM0_A3_TR":"COL","ADM0_A3_ID":"COL","ADM0_A3_PL":"COL","ADM0_A3_GR":"COL","ADM0_A3_IT":"COL","ADM0_A3_NL":"COL","ADM0_A3_SE":"COL","ADM0_A3_BD":"COL","ADM0_A3_UA":"COL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7,"LABEL_X":-73.174347,"LABEL_Y":3.373111,"NE_ID":1159320517,"WIKIDATAID":"Q739","NAME_AR":"كولومبيا","NAME_BN":"কলম্বিয়া","NAME_DE":"Kolumbien","NAME_EN":"Colombia","NAME_ES":"Colombia","NAME_FA":"کلمبیا","NAME_FR":"Colombie","NAME_EL":"Κολομβία","NAME_HE":"קולומביה","NAME_HI":"कोलम्बिया","NAME_HU":"Kolumbia","NAME_ID":"Kolombia","NAME_IT":"Colombia","NAME_JA":"コロンビア","NAME_KO":"콜롬비아","NAME_NL":"Colombia","NAME_PL":"Kolumbia","NAME_PT":"Colômbia","NAME_RU":"Колумбия","NAME_SV":"Colombia","NAME_TR":"Kolombiya","NAME_UK":"Колумбія","NAME_UR":"کولمبیا","NAME_VI":"Colombia","NAME_ZH":"哥伦比亚","NAME_ZHT":"哥倫比亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-79.025439,-4.235938,-66.876025,12.434375],"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.319727,11.861914],[-71.355566,11.849756],[-71.400195,11.823535],[-71.536084,11.774072],[-71.719482,11.726855],[-71.958105,11.666406],[-72.012305,11.601953],[-72.248486,11.196436],[-72.446094,11.114258],[-72.518018,11.053906],[-72.572266,10.977148],[-72.690088,10.83584],[-72.73916,10.727197],[-72.869336,10.49126],[-72.940381,10.195752],[-72.967383,10.029736],[-73.006543,9.78916],[-73.064062,9.668213],[-73.14126,9.554639],[-73.224268,9.443604],[-73.295654,9.322021],[-73.356348,9.226855],[-73.366211,9.194141],[-73.336719,9.16792],[-73.193164,9.194141],[-73.136719,9.222803],[-73.058398,9.25957],[-73.009277,9.239941],[-72.960156,9.135156],[-72.904443,9.12207],[-72.8521,9.135156],[-72.796387,9.108984],[-72.725537,8.848291],[-72.66543,8.627588],[-72.525732,8.489697],[-72.416553,8.381982],[-72.390332,8.287061],[-72.36416,8.152783],[-72.357617,8.087305],[-72.391699,8.047705],[-72.446045,7.966113],[-72.45957,7.809863],[-72.468896,7.757959],[-72.478955,7.613232],[-72.471973,7.524268],[-72.442969,7.454883],[-72.394629,7.415088],[-72.296338,7.394531],[-72.207715,7.370264],[-72.156689,7.249707],[-72.084277,7.096875],[-72.006641,7.032617],[-71.892676,6.990332],[-71.811279,7.005811],[-71.620898,7.03291],[-71.457129,7.026367],[-71.217822,6.985205],[-71.128613,6.986719],[-71.013281,6.994434],[-70.810693,7.077588],[-70.737158,7.090039],[-70.655078,7.082764],[-70.535547,7.040527],[-70.470654,7.007129],[-70.3875,6.972607],[-70.266113,6.947949],[-70.188135,6.952051],[-70.129199,6.953613],[-70.09502,6.937939],[-69.904199,6.700244],[-69.738965,6.494385],[-69.594824,6.321484],[-69.439258,6.134912],[-69.427148,6.123975],[-69.35708,6.147998],[-69.31084,6.137598],[-69.268164,6.099707],[-69.194531,6.115332],[-69.089941,6.184375],[-68.937207,6.198193],[-68.736475,6.156787],[-68.471777,6.156543],[-68.143066,6.19751],[-67.938867,6.241943],[-67.85918,6.289893],[-67.727148,6.284961],[-67.568066,6.241797],[-67.481982,6.180273],[-67.471582,6.119775],[-67.439355,6.025537],[-67.473877,5.92998],[-67.575195,5.833105],[-67.631348,5.709375],[-67.642285,5.558789],[-67.694629,5.44751],[-67.788428,5.375488],[-67.824902,5.270459],[-67.804199,5.13252],[-67.814307,4.930811],[-67.855273,4.665479],[-67.855273,4.506885],[-67.814307,4.455078],[-67.79541,4.380713],[-67.798633,4.283887],[-67.783203,4.198242],[-67.732324,4.086523],[-67.661621,3.864258],[-67.602539,3.768799],[-67.551123,3.733838],[-67.498682,3.691113],[-67.347705,3.46377],[-67.311133,3.415869],[-67.322168,3.373975],[-67.336279,3.342627],[-67.353613,3.322656],[-67.514844,3.187256],[-67.834766,2.892822],[-67.86123,2.855322],[-67.859082,2.793604],[-67.766455,2.833301],[-67.667236,2.800195],[-67.618701,2.793604],[-67.59668,2.769336],[-67.568018,2.689941],[-67.534961,2.676758],[-67.486426,2.643652],[-67.391602,2.559912],[-67.312256,2.47168],[-67.252734,2.429443],[-67.21084,2.390137],[-67.197607,2.332764],[-67.215234,2.275488],[-67.165479,2.142578],[-67.131445,2.10127],[-67.113818,2.050586],[-67.131445,1.999854],[-67.089551,1.940332],[-67.043896,1.823193],[-66.988135,1.680176],[-66.981543,1.600781],[-66.95835,1.564209],[-66.931104,1.458008],[-66.884473,1.358252],[-66.895508,1.289893],[-66.876025,1.223047],[-67.065234,1.178369],[-67.082275,1.1854],[-67.093652,1.21001],[-67.088281,1.400586],[-67.090137,1.615576],[-67.119238,1.703613],[-67.205811,1.844824],[-67.320605,2.03208],[-67.351953,2.08584],[-67.400439,2.116699],[-67.457764,2.121143],[-67.499658,2.10791],[-67.556055,2.072998],[-67.609229,2.035059],[-67.711865,1.922119],[-67.815088,1.790088],[-67.875537,1.760596],[-67.93623,1.748486],[-67.989746,1.752539],[-68.032861,1.788037],[-68.077051,1.860107],[-68.130273,1.955762],[-68.193799,1.987012],[-68.218359,1.957617],[-68.239453,1.901367],[-68.255957,1.845508],[-68.213281,1.774561],[-68.176562,1.719824],[-68.239551,1.72168],[-68.443457,1.721582],[-68.678467,1.721484],[-68.913184,1.721387],[-69.124268,1.721289],[-69.319727,1.72124],[-69.394336,1.725781],[-69.470166,1.75791],[-69.54292,1.773242],[-69.58125,1.770752],[-69.650049,1.739453],[-69.7396,1.734863],[-69.799951,1.705176],[-69.848584,1.70874],[-69.849463,1.543896],[-69.850781,1.308789],[-69.852148,1.059521],[-69.798145,1.078418],[-69.751318,1.076611],[-69.716992,1.059082],[-69.620898,1.073242],[-69.567578,1.065771],[-69.517139,1.059473],[-69.470312,1.058594],[-69.441504,1.038818],[-69.402783,1.042383],[-69.361377,1.064014],[-69.311816,1.050488],[-69.258691,1.015381],[-69.224463,0.963135],[-69.193848,0.898291],[-69.163232,0.864062],[-69.165039,0.801953],[-69.165967,0.75332],[-69.176758,0.712842],[-69.163232,0.68667],[-69.15332,0.658789],[-69.156055,0.642529],[-69.174072,0.635352],[-69.212793,0.629932],[-69.254199,0.625439],[-69.283008,0.627246],[-69.305518,0.652441],[-69.327148,0.655176],[-69.358643,0.651562],[-69.391992,0.666895],[-69.420801,0.698389],[-69.472119,0.729932],[-69.527051,0.716406],[-69.564844,0.700195],[-69.603613,0.680371],[-69.638721,0.659668],[-69.673828,0.665088],[-69.718896,0.649805],[-69.756738,0.626367],[-69.807129,0.607471],[-69.862061,0.598486],[-69.925098,0.589404],[-69.985449,0.58584],[-70.053906,0.578613],[-70.05791,0.447363],[-70.065723,0.189355],[-70.070947,0.018555],[-70.070508,-0.138867],[-70.044043,-0.196191],[-69.922754,-0.31748],[-69.82793,-0.381348],[-69.747461,-0.452539],[-69.66748,-0.482422],[-69.633984,-0.509277],[-69.611914,-0.55332],[-69.600879,-0.599609],[-69.592041,-0.639355],[-69.600879,-0.68125],[-69.620703,-0.720898],[-69.611914,-0.762793],[-69.583252,-0.795898],[-69.574414,-0.837793],[-69.55459,-0.877441],[-69.543555,-0.917188],[-69.519287,-0.945801],[-69.488428,-0.965723],[-69.44873,-0.99873],[-69.444336,-1.02959],[-69.44873,-1.064941],[-69.449121,-1.091602],[-69.411426,-1.152246],[-69.400244,-1.194922],[-69.417871,-1.245703],[-69.434912,-1.42168],[-69.478613,-1.621973],[-69.506445,-1.774902],[-69.551855,-2.024219],[-69.604687,-2.314258],[-69.669043,-2.667676],[-69.732617,-3.016699],[-69.794141,-3.35459],[-69.849756,-3.659863],[-69.911035,-3.996582],[-69.948193,-4.200586],[-69.965918,-4.235938],[-70.017187,-4.162012],[-70.094775,-4.092188],[-70.167529,-4.050195],[-70.198389,-3.995117],[-70.240283,-3.882715],[-70.298437,-3.844238],[-70.339502,-3.814355],[-70.379199,-3.81875],[-70.421094,-3.849609],[-70.48584,-3.869336],[-70.529687,-3.866406],[-70.706201,-3.788965],[-70.735107,-3.781543],[-70.62168,-3.60459],[-70.418994,-3.288281],[-70.290137,-3.087305],[-70.14707,-2.864063],[-70.074023,-2.750195],[-70.064453,-2.730762],[-70.064746,-2.70166],[-70.09585,-2.658203],[-70.164746,-2.639844],[-70.244434,-2.606543],[-70.294629,-2.552539],[-70.36416,-2.529297],[-70.418213,-2.490723],[-70.516797,-2.453125],[-70.575879,-2.418262],[-70.647998,-2.405762],[-70.705371,-2.341992],[-70.914551,-2.218555],[-70.968555,-2.206836],[-71.027295,-2.225781],[-71.113379,-2.24541],[-71.196387,-2.313086],[-71.300098,-2.334863],[-71.396973,-2.334082],[-71.447461,-2.29375],[-71.496094,-2.279199],[-71.559473,-2.224219],[-71.671484,-2.182129],[-71.752539,-2.152734],[-71.802734,-2.166309],[-71.867285,-2.227734],[-71.932471,-2.288672],[-71.984277,-2.326563],[-72.053809,-2.324609],[-72.136816,-2.380664],[-72.218457,-2.400488],[-72.300732,-2.409277],[-72.395605,-2.428906],[-72.500684,-2.39502],[-72.586719,-2.365137],[-72.625342,-2.35166],[-72.660156,-2.361035],[-72.71416,-2.392188],[-72.81123,-2.405469],[-72.887158,-2.408496],[-72.941113,-2.394043],[-72.989648,-2.339746],[-73.068164,-2.312012],[-73.154492,-2.278223],[-73.172656,-2.208398],[-73.160205,-2.156348],[-73.126514,-2.081055],[-73.145215,-2.00332],[-73.181494,-1.880371],[-73.196973,-1.830273],[-73.223975,-1.787695],[-73.266455,-1.772266],[-73.349512,-1.783887],[-73.440283,-1.737402],[-73.496289,-1.693066],[-73.525244,-1.638867],[-73.494336,-1.536621],[-73.521387,-1.449707],[-73.575488,-1.401367],[-73.610254,-1.316406],[-73.664307,-1.248828],[-73.735742,-1.21416],[-73.807178,-1.217969],[-73.863184,-1.19668],[-73.926953,-1.125195],[-73.986816,-1.098145],[-74.054395,-1.028613],[-74.180762,-0.997754],[-74.246387,-0.970605],[-74.283887,-0.927832],[-74.334424,-0.850879],[-74.328613,-0.808398],[-74.353125,-0.766602],[-74.374902,-0.691406],[-74.417871,-0.580664],[-74.465186,-0.517676],[-74.513867,-0.470117],[-74.555078,-0.429883],[-74.616357,-0.37002],[-74.69165,-0.335254],[-74.755371,-0.298633],[-74.780469,-0.244531],[-74.801758,-0.200098],[-74.8375,-0.20332],[-74.888818,-0.199414],[-74.945312,-0.188184],[-75.00498,-0.155859],[-75.054688,-0.116699],[-75.138379,-0.050488],[-75.184082,-0.041748],[-75.224609,-0.041748],[-75.284473,-0.106543],[-75.463965,-0.038428],[-75.617334,0.062891],[-75.77666,0.089258],[-75.879785,0.150977],[-75.974854,0.247754],[-76.026172,0.313086],[-76.06792,0.345557],[-76.270605,0.439404],[-76.311035,0.448486],[-76.388184,0.40498],[-76.413379,0.378857],[-76.417969,0.303906],[-76.427295,0.26123],[-76.494629,0.235449],[-76.603027,0.240967],[-76.678516,0.268164],[-76.729004,0.272119],[-76.739307,0.25083],[-76.767725,0.24165],[-76.829346,0.247754],[-76.920117,0.268506],[-77.002441,0.29624],[-77.114111,0.355078],[-77.165723,0.347754],[-77.292676,0.3604],[-77.396338,0.393896],[-77.422754,0.424854],[-77.467676,0.636523],[-77.481396,0.651172],[-77.526123,0.660352],[-77.601318,0.689502],[-77.648633,0.723633],[-77.673193,0.782227],[-77.702881,0.837842],[-77.829541,0.825391],[-78.037012,0.89873],[-78.180664,0.968555],[-78.312109,1.046094],[-78.511523,1.198828],[-78.587646,1.23667],[-78.681641,1.283447],[-78.737109,1.358691],[-78.828857,1.434668],[-78.859668,1.455371],[-78.888477,1.524072],[-79.025439,1.623682],[-78.957666,1.752197],[-78.792969,1.84873],[-78.576904,1.773779],[-78.550439,1.923633],[-78.628613,2.05625],[-78.617041,2.306787],[-78.591699,2.356641],[-78.534717,2.423682],[-78.460449,2.470068],[-78.416895,2.483496],[-78.342871,2.460547],[-78.296143,2.510498],[-78.12002,2.488184],[-78.06665,2.509131],[-78.030176,2.543066],[-77.987207,2.568994],[-77.932275,2.629248],[-77.900781,2.698828],[-77.874512,2.725879],[-77.813574,2.716357],[-77.807959,2.746387],[-77.77666,2.787305],[-77.67002,2.878857],[-77.671094,2.919336],[-77.700977,3.007568],[-77.693652,3.039941],[-77.632031,3.051172],[-77.559131,3.075977],[-77.520264,3.160254],[-77.472217,3.233789],[-77.417139,3.341797],[-77.356543,3.348584],[-77.324414,3.474756],[-77.242773,3.585352],[-77.076807,3.913281],[-77.126855,3.906055],[-77.166602,3.862256],[-77.212012,3.867432],[-77.263525,3.893213],[-77.248389,4.040967],[-77.278027,4.058496],[-77.358203,3.944727],[-77.427295,4.060449],[-77.433545,4.130957],[-77.404492,4.200781],[-77.40874,4.247754],[-77.520703,4.212793],[-77.515527,4.256299],[-77.44585,4.301025],[-77.414258,4.347607],[-77.353516,4.398291],[-77.32832,4.475],[-77.313672,4.593848],[-77.286328,4.721729],[-77.306543,4.784668],[-77.339453,4.838525],[-77.366748,5.076562],[-77.35918,5.215186],[-77.373291,5.323975],[-77.401758,5.416162],[-77.534424,5.537109],[-77.324609,5.675635],[-77.249268,5.780176],[-77.344678,5.995361],[-77.469434,6.176758],[-77.473047,6.285645],[-77.440088,6.271729],[-77.398242,6.275],[-77.359863,6.504492],[-77.368799,6.575586],[-77.438867,6.690332],[-77.525977,6.693115],[-77.602148,6.837305],[-77.64585,6.869629],[-77.680957,6.9604],[-77.803711,7.137256],[-77.901172,7.229346],[-77.82832,7.442822],[-77.764697,7.483691],[-77.743896,7.536963],[-77.76875,7.668066],[-77.761914,7.698828],[-77.746924,7.711865],[-77.732031,7.710938],[-77.706348,7.691211],[-77.658594,7.634619],[-77.618604,7.564551],[-77.586572,7.543066],[-77.538281,7.56626],[-77.350781,7.705859],[-77.362744,7.749072],[-77.345605,7.836523],[-77.282959,7.908154],[-77.215967,7.93252],[-77.195996,7.972461],[-77.212305,8.033887],[-77.282617,8.187061],[-77.345508,8.269531],[-77.385889,8.35166],[-77.407275,8.427246],[-77.478516,8.498437],[-77.44834,8.565869],[-77.393066,8.644678],[-77.374219,8.658301],[-77.344141,8.636719],[-77.261572,8.493701],[-77.130127,8.400586],[-76.992285,8.250342],[-76.93584,8.146826],[-76.890967,8.127979],[-76.851855,8.090479],[-76.869092,8.062695],[-76.912207,8.033398],[-76.924658,7.973193],[-76.896631,7.939453],[-76.866895,7.917969],[-76.786572,7.931592],[-76.742334,8.002148],[-76.77207,8.310547],[-76.818604,8.464697],[-76.872217,8.512744],[-76.920459,8.57373],[-76.887988,8.619873],[-76.802246,8.640674],[-76.689355,8.694727],[-76.276855,8.989111],[-76.135498,9.265625],[-76.027246,9.365771],[-75.905029,9.430908],[-75.755566,9.415625],[-75.639355,9.450439],[-75.603613,9.538477],[-75.635352,9.657812],[-75.680029,9.729785],[-75.637109,9.834277],[-75.592676,9.992725],[-75.595898,10.12583],[-75.538574,10.205176],[-75.558398,10.236426],[-75.642187,10.172168],[-75.70835,10.143408],[-75.670898,10.196338],[-75.553711,10.327734],[-75.492773,10.527637],[-75.445996,10.610889],[-75.280615,10.727197],[-75.247949,10.783252],[-75.123047,10.87041],[-74.921582,11.057568],[-74.84458,11.109717],[-74.454248,10.989062],[-74.330225,10.99668],[-74.352393,10.974658],[-74.40957,10.967187],[-74.492285,10.934473],[-74.51626,10.8625],[-74.460254,10.787061],[-74.400879,10.765234],[-74.350195,10.813721],[-74.299951,10.952246],[-74.219141,11.105322],[-74.200195,11.265723],[-74.14292,11.32085],[-74.059131,11.340625],[-73.90957,11.308887],[-73.795703,11.275684],[-73.676904,11.271484],[-73.313379,11.295752],[-72.721826,11.712158],[-72.44707,11.801709],[-72.275,11.889258],[-72.165234,12.060205],[-72.135742,12.188574],[-72.055078,12.238428],[-71.970117,12.238281],[-71.93125,12.269531],[-71.919141,12.309082],[-71.714551,12.419971],[-71.597461,12.434375],[-71.493994,12.432275],[-71.262109,12.335303],[-71.155029,12.16416],[-71.137305,12.046338],[-71.28418,11.918311],[-71.319727,11.861914]]],[[[-78.113721,2.541748],[-78.14082,2.519678],[-78.19248,2.559277],[-78.210107,2.60918],[-78.178418,2.646338],[-78.137646,2.63418],[-78.119141,2.603613],[-78.113721,2.541748]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":2,"SOVEREIGNT":"China","SOV_A3":"CH1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"China","ADM0_A3":"CHN","GEOU_DIF":0,"GEOUNIT":"China","GU_A3":"CHN","SU_DIF":0,"SUBUNIT":"China","SU_A3":"CHN","BRK_DIFF":0,"NAME":"China","NAME_LONG":"China","BRK_A3":"CHN","BRK_NAME":"China","BRK_GROUP":null,"ABBREV":"China","POSTAL":"CN","FORMAL_EN":"People's Republic of China","FORMAL_FR":null,"NAME_CIAWF":"China","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"China","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":3,"POP_EST":1397715000,"POP_RANK":18,"POP_YEAR":2019,"GDP_MD":14342903,"GDP_YEAR":2019,"ECONOMY":"3. Emerging region: BRIC","INCOME_GRP":"3. Upper middle income","FIPS_10":"CH","ISO_A2":"CN","ISO_A2_EH":"CN","ISO_A3":"CHN","ISO_A3_EH":"CHN","ISO_N3":"156","ISO_N3_EH":"156","UN_A3":"156","WB_A2":"CN","WB_A3":"CHN","WOE_ID":23424781,"WOE_ID_EH":23424781,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CHN","ADM0_DIFF":null,"ADM0_TLC":"CHN","ADM0_A3_US":"CHN","ADM0_A3_FR":"CHN","ADM0_A3_RU":"CHN","ADM0_A3_ES":"CHN","ADM0_A3_CN":"CHN","ADM0_A3_TW":"TWN","ADM0_A3_IN":"CHN","ADM0_A3_NP":"CHN","ADM0_A3_PK":"CHN","ADM0_A3_DE":"CHN","ADM0_A3_GB":"CHN","ADM0_A3_BR":"CHN","ADM0_A3_IL":"CHN","ADM0_A3_PS":"CHN","ADM0_A3_SA":"CHN","ADM0_A3_EG":"CHN","ADM0_A3_MA":"CHN","ADM0_A3_PT":"CHN","ADM0_A3_AR":"CHN","ADM0_A3_JP":"CHN","ADM0_A3_KO":"CHN","ADM0_A3_VN":"CHN","ADM0_A3_TR":"CHN","ADM0_A3_ID":"CHN","ADM0_A3_PL":"CHN","ADM0_A3_GR":"CHN","ADM0_A3_IT":"CHN","ADM0_A3_NL":"CHN","ADM0_A3_SE":"CHN","ADM0_A3_BD":"CHN","ADM0_A3_UA":"CHN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":5.7,"LABEL_X":106.337289,"LABEL_Y":32.498178,"NE_ID":1159320471,"WIKIDATAID":"Q148","NAME_AR":"الصين","NAME_BN":"গণচীন","NAME_DE":"Volksrepublik China","NAME_EN":"People's Republic of China","NAME_ES":"China","NAME_FA":"جمهوری خلق چین","NAME_FR":"République populaire de Chine","NAME_EL":"Λαϊκή Δημοκρατία της Κίνας","NAME_HE":"הרפובליקה העממית של סין","NAME_HI":"चीनी जनवादी गणराज्य","NAME_HU":"Kína","NAME_ID":"Republik Rakyat Tiongkok","NAME_IT":"Cina","NAME_JA":"中華人民共和国","NAME_KO":"중화인민공화국","NAME_NL":"Volksrepubliek China","NAME_PL":"Chińska Republika Ludowa","NAME_PT":"China","NAME_RU":"Китайская Народная Республика","NAME_SV":"Kina","NAME_TR":"Çin Halk Cumhuriyeti","NAME_UK":"Китайська Народна Республіка","NAME_UR":"عوامی جمہوریہ چین","NAME_VI":"Trung Quốc","NAME_ZH":"中华人民共和国","NAME_ZHT":"中華人民共和國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":"Unrecognized","FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[73.607324,18.218262,134.752344,53.555615],"geometry":{"type":"MultiPolygon","coordinates":[[[[118.183008,24.496289],[118.149512,24.436133],[118.090527,24.446143],[118.08877,24.488867],[118.076758,24.501416],[118.092969,24.541211],[118.103809,24.552344],[118.170703,24.518506],[118.183008,24.496289]]],[[[121.862695,31.492285],[121.780469,31.46377],[121.519922,31.549609],[121.336426,31.64375],[121.226855,31.758105],[121.211133,31.805371],[121.338965,31.797363],[121.46416,31.756445],[121.491797,31.693652],[121.542285,31.673926],[121.576563,31.637305],[121.808301,31.552148],[121.843652,31.526367],[121.862695,31.492285]]],[[[122.295898,29.963428],[122.281543,29.943848],[122.157813,30.00127],[122.024023,30.01333],[121.977832,30.063818],[121.969434,30.143115],[122.110547,30.139746],[122.284473,30.068018],[122.322266,30.031396],[122.295898,29.963428]]],[[[122.172559,29.679004],[122.169043,29.660254],[122.083789,29.725342],[122.042676,29.735937],[122.062305,29.772754],[122.119629,29.782227],[122.165039,29.700781],[122.172559,29.679004]]],[[[122.403906,29.892383],[122.394043,29.846094],[122.367578,29.852686],[122.331836,29.934961],[122.350977,29.955225],[122.401563,29.950244],[122.403906,29.892383]]],[[[119.820898,25.456982],[119.74668,25.410693],[119.700293,25.432715],[119.699414,25.494727],[119.723047,25.550586],[119.695996,25.590869],[119.722559,25.638818],[119.77793,25.653174],[119.797461,25.623242],[119.828711,25.607373],[119.838379,25.591064],[119.838672,25.559668],[119.809082,25.507812],[119.832422,25.47959],[119.820898,25.456982]]],[[[110.385156,21.093164],[110.422363,21.058594],[110.521582,21.083105],[110.539551,21.039014],[110.538867,21.018457],[110.503906,20.967725],[110.421875,21.006885],[110.339941,20.997754],[110.280957,21.001172],[110.264648,21.025195],[110.309863,21.074756],[110.385156,21.093164]]],[[[121.251367,28.086426],[121.164258,28.0625],[121.131543,28.062598],[121.133984,28.135254],[121.205469,28.204395],[121.234375,28.181299],[121.250977,28.145215],[121.251367,28.086426]]],[[[113.555273,22.804199],[113.563672,22.75791],[113.485645,22.82832],[113.463379,22.832373],[113.426074,22.858594],[113.404395,22.902832],[113.464941,22.904541],[113.520508,22.852051],[113.555273,22.804199]]],[[[112.790234,21.601855],[112.771094,21.581836],[112.741992,21.618066],[112.733496,21.669922],[112.712695,21.697949],[112.760547,21.733252],[112.782031,21.772266],[112.839063,21.764502],[112.862598,21.752637],[112.812598,21.712158],[112.800684,21.694873],[112.790234,21.601855]]],[[[112.64375,21.639648],[112.545605,21.618506],[112.525,21.623047],[112.558984,21.674756],[112.647656,21.710254],[112.64375,21.639648]]],[[[107.972656,21.507959],[107.908398,21.5604],[107.802051,21.645166],[107.759277,21.655029],[107.641016,21.613916],[107.471387,21.59834],[107.433496,21.642285],[107.351172,21.608887],[107.27207,21.710645],[107.178516,21.71709],[107.061621,21.794189],[107.019824,21.834863],[107.006445,21.893408],[106.970996,21.923926],[106.925195,21.920117],[106.874512,21.95127],[106.794141,21.981982],[106.729492,22.000342],[106.697656,21.986182],[106.663574,21.978906],[106.657715,22.018213],[106.660059,22.136475],[106.654199,22.241455],[106.636523,22.288623],[106.593164,22.324512],[106.553613,22.341699],[106.536328,22.39541],[106.550391,22.501367],[106.582422,22.573242],[106.633105,22.586035],[106.701563,22.637744],[106.736328,22.710938],[106.780273,22.778906],[106.624023,22.874268],[106.541797,22.90835],[106.450879,22.893896],[106.338086,22.863477],[106.279004,22.857471],[106.249414,22.869434],[106.183984,22.955127],[106.148438,22.970068],[106.068457,22.975537],[106.000977,22.974756],[105.962305,22.937451],[105.902637,22.924951],[105.842969,22.922803],[105.782324,22.969336],[105.691211,23.029932],[105.548145,23.072656],[105.530859,23.121973],[105.494531,23.180859],[105.440137,23.235352],[105.350488,23.307666],[105.275391,23.345215],[105.23877,23.322119],[105.189063,23.281055],[104.995703,23.194336],[104.910156,23.160547],[104.864746,23.136377],[104.826563,23.100195],[104.814746,23.010791],[104.795703,22.911133],[104.740039,22.860498],[104.687305,22.822217],[104.631738,22.818213],[104.577539,22.82002],[104.526855,22.804102],[104.371777,22.704053],[104.29834,22.712012],[104.238281,22.768506],[104.2125,22.809424],[104.143066,22.800146],[104.053906,22.752295],[104.012695,22.666357],[103.99082,22.586133],[103.971387,22.550488],[103.941504,22.540088],[103.915039,22.538232],[103.637305,22.77002],[103.620215,22.782031],[103.570703,22.734424],[103.525391,22.611572],[103.492969,22.587988],[103.470996,22.597412],[103.356055,22.754688],[103.32666,22.769775],[103.300586,22.764404],[103.266309,22.713525],[103.193359,22.638525],[103.137598,22.592969],[103.136328,22.542236],[103.075879,22.49751],[103.005371,22.452979],[102.981934,22.448242],[102.935156,22.466162],[102.874219,22.525391],[102.830078,22.587158],[102.720996,22.648486],[102.598535,22.700391],[102.517188,22.741016],[102.470898,22.750928],[102.42793,22.732812],[102.406445,22.708008],[102.375781,22.646631],[102.302246,22.545996],[102.237012,22.466016],[102.175977,22.414648],[102.127441,22.379199],[102.091504,22.412256],[102.024414,22.439209],[101.94541,22.439404],[101.841797,22.388477],[101.759961,22.490332],[101.73877,22.495264],[101.70752,22.486572],[101.671484,22.462305],[101.646191,22.40542],[101.619922,22.327441],[101.567871,22.276367],[101.524512,22.253662],[101.537305,22.209863],[101.561816,22.162402],[101.560254,22.120898],[101.575781,22.055273],[101.60293,21.989697],[101.699609,21.882471],[101.736523,21.826514],[101.743945,21.777979],[101.747266,21.605762],[101.743457,21.533838],[101.724219,21.39502],[101.722949,21.314941],[101.763086,21.278906],[101.802051,21.235986],[101.800586,21.212598],[101.783496,21.20415],[101.728125,21.156396],[101.704785,21.150146],[101.668555,21.169629],[101.62168,21.184424],[101.583887,21.203564],[101.542383,21.234277],[101.443555,21.230811],[101.281445,21.184131],[101.247852,21.197314],[101.224414,21.22373],[101.211816,21.278223],[101.219922,21.342432],[101.205566,21.383301],[101.175391,21.40752],[101.19668,21.52207],[101.138867,21.56748],[101.147266,21.581641],[101.128125,21.705127],[101.130859,21.735547],[101.120703,21.746094],[101.079785,21.755859],[101.019336,21.736377],[100.835156,21.655176],[100.677148,21.504932],[100.60459,21.471777],[100.531348,21.458105],[100.445703,21.484082],[100.350586,21.501025],[100.214746,21.462988],[100.147656,21.480518],[100.116797,21.511182],[100.089258,21.55791],[100.105762,21.617041],[100.095508,21.660645],[100.041211,21.682764],[99.978223,21.701611],[99.940723,21.75874],[99.925586,21.820801],[99.94043,21.901611],[99.947852,21.98833],[99.917676,22.028027],[99.825391,22.049707],[99.592676,22.08916],[99.388672,22.110791],[99.303125,22.100635],[99.233398,22.110156],[99.192969,22.125977],[99.173438,22.15332],[99.172363,22.19248],[99.205371,22.282568],[99.243066,22.370361],[99.337695,22.498047],[99.343164,22.586523],[99.338281,22.688672],[99.385156,22.825098],[99.466797,22.927295],[99.507129,22.959131],[99.497266,23.00459],[99.464551,23.04624],[99.418066,23.069238],[99.34082,23.095898],[99.220313,23.10332],[99.055078,23.130566],[98.86377,23.19126],[98.885547,23.307471],[98.882617,23.380322],[98.858887,23.440088],[98.819727,23.48252],[98.797852,23.52041],[98.832227,23.624365],[98.787695,23.737842],[98.735059,23.783105],[98.680859,23.841797],[98.676758,23.905078],[98.701563,23.964062],[98.833984,24.090576],[98.835059,24.121191],[98.802344,24.118701],[98.764355,24.116064],[98.583398,24.069824],[98.56416,24.098828],[98.499414,24.115674],[98.367285,24.119043],[98.2125,24.110645],[98.016895,24.06543],[97.837695,23.986279],[97.755664,23.931885],[97.686035,23.898096],[97.629687,23.887158],[97.564551,23.911035],[97.568262,23.988477],[97.690625,24.130811],[97.708203,24.22876],[97.670703,24.312744],[97.666602,24.37998],[97.623633,24.422949],[97.563281,24.443848],[97.531445,24.491699],[97.529395,24.631201],[97.583301,24.774805],[97.670703,24.820117],[97.723828,24.841992],[97.737891,24.869873],[97.710742,24.970361],[97.714941,25.034326],[97.767383,25.158057],[97.819531,25.251855],[97.917969,25.236133],[97.962012,25.259326],[98.010742,25.292529],[98.064063,25.348975],[98.099609,25.415723],[98.142871,25.571094],[98.172559,25.594531],[98.296582,25.568848],[98.333789,25.586768],[98.40166,25.677979],[98.465527,25.788867],[98.558398,25.823242],[98.625391,25.826709],[98.65625,25.863574],[98.654688,25.917773],[98.591016,26.003711],[98.564063,26.072412],[98.571973,26.114062],[98.663184,26.139453],[98.685547,26.189355],[98.671875,26.298535],[98.709473,26.429688],[98.731836,26.583398],[98.739355,26.698145],[98.738477,26.785742],[98.729492,26.877393],[98.716504,27.044922],[98.674805,27.190625],[98.682422,27.245312],[98.676758,27.421924],[98.651172,27.572461],[98.599805,27.598828],[98.504492,27.647656],[98.452539,27.657227],[98.408887,27.639453],[98.392383,27.587061],[98.350488,27.538086],[98.298828,27.550098],[98.274219,27.599072],[98.241016,27.663184],[98.130469,27.967578],[98.118359,28.055225],[98.098926,28.142285],[98.061621,28.185889],[98.022266,28.211523],[97.934082,28.313818],[97.887598,28.356494],[97.864941,28.363574],[97.816504,28.356348],[97.769043,28.356152],[97.730078,28.407129],[97.694629,28.469336],[97.658887,28.5],[97.599219,28.517041],[97.537891,28.510205],[97.502148,28.456348],[97.477734,28.425635],[97.431445,28.353906],[97.356445,28.254492],[97.322461,28.217969],[97.289453,28.236816],[97.145117,28.340332],[97.075391,28.368945],[96.980859,28.337695],[96.833008,28.362402],[96.775781,28.367041],[96.652832,28.449756],[96.602637,28.459912],[96.427734,28.406006],[96.389063,28.36792],[96.366406,28.367285],[96.319824,28.386523],[96.281445,28.412061],[96.278906,28.428174],[96.326172,28.468555],[96.329883,28.496826],[96.327344,28.525391],[96.395605,28.606543],[96.580859,28.763672],[96.55,28.82959],[96.477148,28.959326],[96.46709,29.022266],[96.435742,29.050684],[96.346875,29.027441],[96.162207,28.909717],[96.137109,28.922607],[96.141406,28.963477],[96.122363,29.08208],[96.180859,29.117676],[96.270508,29.16123],[96.339746,29.209814],[96.355859,29.249072],[96.337207,29.260986],[96.234961,29.245801],[96.194727,29.272461],[96.128516,29.381396],[96.07959,29.424121],[96.035352,29.447168],[95.885059,29.390918],[95.710352,29.313818],[95.51582,29.206348],[95.516992,29.151172],[95.49375,29.137012],[95.456543,29.102295],[95.420215,29.054297],[95.389258,29.037402],[95.353125,29.035889],[95.279102,29.049561],[95.144727,29.104053],[94.998828,29.14917],[94.96748,29.144043],[94.769434,29.175879],[94.763086,29.20127],[94.733398,29.251611],[94.677051,29.297021],[94.623047,29.312402],[94.468066,29.216211],[94.293262,29.144629],[94.193457,29.059912],[94.111523,28.975879],[94.017676,28.959521],[94.013281,28.90752],[93.973633,28.860791],[93.902246,28.803223],[93.760742,28.729785],[93.664941,28.690234],[93.360547,28.654053],[93.251953,28.629492],[93.206543,28.59082],[93.157813,28.492725],[93.119238,28.402295],[93.034961,28.327637],[92.881836,28.228125],[92.701855,28.147119],[92.652539,28.093359],[92.643457,28.061523],[92.665625,28.049854],[92.6875,28.025732],[92.687793,27.988965],[92.664355,27.948926],[92.54668,27.879199],[92.480664,27.845947],[92.414844,27.824609],[92.341016,27.820752],[92.270117,27.830225],[92.250488,27.841504],[92.222266,27.826953],[92.157617,27.812256],[92.10127,27.807617],[91.977637,27.730371],[91.909375,27.729687],[91.824707,27.746436],[91.712598,27.759814],[91.631934,27.759961],[91.629395,27.800879],[91.641895,27.923242],[91.605566,27.951709],[91.493359,27.981787],[91.367578,28.021631],[91.306836,28.064014],[91.273047,28.078369],[91.225879,28.07124],[91.149902,28.026758],[91.077734,27.974463],[91.020801,27.970068],[90.9625,27.99458],[90.906641,28.026514],[90.715723,28.071729],[90.630078,28.078564],[90.477344,28.07085],[90.352734,28.080225],[90.333105,28.093994],[90.333789,28.119141],[90.352148,28.168164],[90.362988,28.216504],[90.348242,28.243945],[90.220801,28.277734],[90.104492,28.302051],[89.981055,28.311182],[89.897852,28.294141],[89.816895,28.256299],[89.749805,28.188184],[89.652734,28.158301],[89.536914,28.107422],[89.480664,28.059961],[89.395898,27.958154],[89.272656,27.833154],[89.160449,27.711279],[89.102344,27.592578],[89.025488,27.517871],[88.947559,27.464014],[88.891406,27.316064],[88.83252,27.362842],[88.764844,27.429883],[88.749023,27.521875],[88.829883,27.767383],[88.848828,27.868652],[88.828613,27.907275],[88.803711,28.006934],[88.75625,28.039697],[88.621094,28.091846],[88.57793,28.093359],[88.531641,28.057373],[88.486133,28.034473],[88.425977,28.01167],[88.275195,27.968848],[88.141113,27.948926],[88.108984,27.933008],[88.098926,27.904541],[88.109766,27.870605],[88.02334,27.883398],[87.933398,27.89082],[87.860742,27.886084],[87.682715,27.821387],[87.622559,27.815186],[87.555273,27.821826],[87.46416,27.823828],[87.290723,27.821924],[87.141406,27.83833],[87.020117,27.928662],[86.933789,27.968457],[86.842383,27.99917],[86.750391,28.02207],[86.719629,28.070654],[86.690527,28.094922],[86.614453,28.103027],[86.554492,28.085205],[86.516895,27.963525],[86.484961,27.939551],[86.408691,27.928662],[86.328613,27.959521],[86.217969,28.02207],[86.174219,28.091699],[86.137012,28.114355],[86.078711,28.083594],[86.075488,27.99458],[86.06416,27.934717],[85.994531,27.9104],[85.954102,27.928223],[85.92168,27.989697],[85.840234,28.135352],[85.759473,28.220654],[85.67832,28.277441],[85.410645,28.276025],[85.212109,28.292627],[85.122461,28.315967],[85.088574,28.372266],[85.121484,28.484277],[85.160156,28.571875],[85.159082,28.592236],[85.126367,28.602637],[85.069141,28.609668],[84.855078,28.553613],[84.796875,28.560205],[84.759375,28.579248],[84.714258,28.595557],[84.676758,28.621533],[84.650586,28.65957],[84.46543,28.75293],[84.410742,28.803906],[84.312109,28.868115],[84.228711,28.911768],[84.175586,29.036377],[84.127832,29.156299],[84.101367,29.219971],[84.021973,29.253857],[83.935938,29.279492],[83.79043,29.227441],[83.671094,29.187598],[83.583496,29.183594],[83.456641,29.306348],[83.355176,29.43916],[83.235156,29.55459],[83.155469,29.612646],[83.013965,29.618066],[82.854297,29.683398],[82.64082,29.831201],[82.486523,29.941504],[82.220703,30.063867],[82.158984,30.115186],[82.135352,30.158984],[82.098926,30.245068],[82.043359,30.326758],[81.854883,30.362402],[81.641895,30.3875],[81.417188,30.337598],[81.255078,30.093311],[81.177148,30.039893],[81.110352,30.036816],[81.055566,30.098975],[81.010254,30.164502],[80.985449,30.237109],[80.873535,30.290576],[80.746777,30.3604],[80.682129,30.414844],[80.608887,30.448877],[80.541016,30.463525],[80.40957,30.509473],[80.260938,30.561328],[80.191211,30.568408],[80.18623,30.605322],[80.207129,30.68374],[80.194336,30.759229],[80.149414,30.789844],[80.081445,30.781934],[79.924512,30.88877],[79.918555,30.889893],[79.916602,30.894189],[79.871875,30.924609],[79.794629,30.968262],[79.664258,30.965234],[79.56543,30.949072],[79.493164,30.993701],[79.388477,31.064209],[79.369629,31.079932],[79.33877,31.105713],[79.232617,31.241748],[79.107129,31.402637],[79.04375,31.426221],[79.011133,31.414111],[78.973926,31.328613],[78.945996,31.337207],[78.899512,31.331348],[78.844531,31.301514],[78.791602,31.293652],[78.757812,31.30249],[78.743555,31.323779],[78.758594,31.436572],[78.726758,31.471826],[78.755078,31.550293],[78.80293,31.618066],[78.753906,31.668359],[78.693457,31.740381],[78.687012,31.805518],[78.719727,31.887646],[78.735449,31.957959],[78.725586,31.983789],[78.677734,32.023047],[78.495898,32.215771],[78.486133,32.23623],[78.455273,32.300342],[78.441309,32.397363],[78.41748,32.466699],[78.389648,32.519873],[78.391699,32.544727],[78.4125,32.557715],[78.526367,32.570801],[78.631543,32.578955],[78.700879,32.597021],[78.736719,32.558398],[78.753516,32.499268],[78.771289,32.468066],[78.837891,32.411963],[78.918945,32.358203],[78.997656,32.365137],[79.066992,32.388184],[79.127344,32.475781],[79.169922,32.497217],[79.219336,32.501074],[79.219043,32.507568],[79.216504,32.564014],[79.233887,32.703076],[79.22793,32.758789],[79.205566,32.809033],[79.20957,32.864844],[79.202246,32.946045],[79.145508,33.001465],[79.108594,33.022656],[79.102832,33.052539],[79.12168,33.108105],[79.135156,33.171924],[79.1125,33.22627],[79.066504,33.250391],[79.012598,33.291455],[78.948438,33.346533],[78.916699,33.386768],[78.865039,33.431104],[78.801855,33.499707],[78.789941,33.650342],[78.783789,33.808789],[78.761719,33.887598],[78.72666,34.013379],[78.731738,34.055566],[78.753027,34.087695],[78.931738,34.188965],[78.970605,34.228223],[78.976953,34.258105],[78.970117,34.302637],[78.936426,34.351953],[78.864844,34.390332],[78.763086,34.45293],[78.670801,34.518164],[78.515723,34.557959],[78.326953,34.606396],[78.282031,34.653906],[78.236133,34.769824],[78.158496,34.946484],[78.075781,35.134912],[78.012207,35.251025],[78.00918,35.306934],[78.047461,35.449414],[78.042676,35.479785],[78.009473,35.490234],[77.945898,35.471631],[77.894922,35.449023],[77.851562,35.460791],[77.810938,35.484521],[77.802539,35.492773],[77.799414,35.495898],[77.724023,35.480566],[77.572559,35.471826],[77.52002,35.473437],[77.446484,35.475586],[77.294824,35.508154],[77.090039,35.552051],[76.878906,35.613281],[76.766895,35.661719],[76.727539,35.678662],[76.631836,35.729395],[76.563477,35.772998],[76.55127,35.887061],[76.502051,35.878223],[76.385742,35.837158],[76.25166,35.810937],[76.177832,35.810547],[76.147852,35.829004],[76.10332,35.949219],[76.070898,35.983008],[76.010449,35.996338],[75.945117,36.017578],[75.912305,36.048975],[75.904883,36.088477],[75.934082,36.133936],[75.968652,36.168848],[75.974414,36.382422],[75.951855,36.458105],[75.933008,36.521582],[75.884961,36.600732],[75.840234,36.649707],[75.772168,36.694922],[75.667188,36.741992],[75.57373,36.759326],[75.460254,36.725049],[75.424219,36.738232],[75.376855,36.883691],[75.34668,36.913477],[75.145215,36.973242],[75.053906,36.987158],[74.949121,36.968359],[74.889258,36.952441],[74.841211,36.979102],[74.766016,37.012744],[74.692188,37.035742],[74.600586,37.03667],[74.541406,37.022168],[74.526465,37.030664],[74.497949,37.057227],[74.376172,37.137354],[74.372168,37.157715],[74.558984,37.236621],[74.668945,37.266699],[74.72666,37.290723],[74.738965,37.285645],[74.767383,37.24917],[74.840234,37.225049],[74.891309,37.231641],[74.918164,37.25],[75.008398,37.293555],[75.079004,37.344043],[75.11875,37.385693],[75.097461,37.45127],[74.986426,37.530371],[74.91582,37.572803],[74.894238,37.601416],[74.912305,37.687305],[74.938281,37.77251],[74.921289,37.80498],[74.900293,37.832715],[74.89082,37.925781],[74.84248,38.038086],[74.789648,38.103613],[74.775098,38.191895],[74.77207,38.274756],[74.835938,38.404297],[74.812305,38.460303],[74.74502,38.51001],[74.514063,38.6],[74.277441,38.659766],[74.187305,38.65752],[74.131348,38.661182],[74.065332,38.608496],[74.025586,38.539844],[73.97002,38.533691],[73.869141,38.562891],[73.80166,38.606885],[73.754102,38.698926],[73.716797,38.817236],[73.696094,38.854297],[73.706836,38.88623],[73.72998,38.914697],[73.794531,38.941309],[73.805273,38.968652],[73.795605,39.002148],[73.74375,39.044531],[73.69043,39.104541],[73.607324,39.229199],[73.623145,39.297852],[73.636328,39.39668],[73.631641,39.448877],[73.715723,39.462256],[73.822949,39.488965],[73.872754,39.533301],[73.907129,39.578516],[73.914648,39.606494],[73.88252,39.714551],[73.839746,39.762842],[73.835352,39.800146],[73.85625,39.828662],[73.88457,39.87793],[73.93877,39.978809],[73.991602,40.043115],[74.020508,40.059375],[74.085156,40.074316],[74.242676,40.092041],[74.411914,40.137207],[74.613086,40.272168],[74.679883,40.310596],[74.767773,40.329883],[74.830469,40.328516],[74.841797,40.344971],[74.80127,40.428516],[74.811133,40.458789],[74.835156,40.482617],[74.865625,40.493506],[75.004492,40.449512],[75.111328,40.454102],[75.241016,40.480273],[75.520801,40.627539],[75.555566,40.625195],[75.583496,40.605322],[75.617383,40.516602],[75.655957,40.329248],[75.677148,40.305811],[75.871973,40.303223],[76.004297,40.371436],[76.062305,40.387549],[76.156641,40.376465],[76.206055,40.408398],[76.258301,40.430762],[76.318555,40.352246],[76.396387,40.389795],[76.480176,40.449512],[76.520898,40.51123],[76.57793,40.577881],[76.622168,40.662354],[76.639844,40.742236],[76.661133,40.779639],[76.708398,40.818115],[76.824023,40.982324],[76.907715,41.02417],[76.986621,41.03916],[77.182031,41.010742],[77.283984,41.014355],[77.581738,40.992773],[77.719336,41.024316],[77.815234,41.055615],[77.956445,41.050684],[78.123438,41.075635],[78.346289,41.281445],[78.348828,41.325195],[78.362402,41.371631],[78.442871,41.417529],[78.543164,41.45957],[78.742578,41.560059],[79.148438,41.719141],[79.293555,41.782812],[79.354395,41.781055],[79.503906,41.820996],[79.766113,41.898877],[79.84043,41.995752],[79.909668,42.01499],[80.216211,42.032422],[80.235156,42.043457],[80.246191,42.059814],[80.229199,42.129834],[80.209375,42.190039],[80.233008,42.207812],[80.259082,42.2354],[80.255078,42.27417],[80.205762,42.399414],[80.179297,42.518359],[80.161914,42.625537],[80.165039,42.665527],[80.202246,42.734473],[80.250293,42.797266],[80.424023,42.855762],[80.538965,42.873486],[80.54375,42.911719],[80.450684,42.935547],[80.383398,42.973779],[80.371289,42.995605],[80.374512,43.02041],[80.390234,43.043115],[80.507031,43.085791],[80.616992,43.128271],[80.751172,43.10249],[80.777734,43.118945],[80.785742,43.161572],[80.757031,43.204346],[80.729785,43.274268],[80.667773,43.310059],[80.66543,43.352979],[80.703809,43.427051],[80.650781,43.56416],[80.593457,43.685107],[80.495996,43.89209],[80.431543,43.951758],[80.395801,44.047168],[80.355273,44.097266],[80.358984,44.171289],[80.365332,44.223291],[80.354883,44.326514],[80.336328,44.438379],[80.355078,44.552002],[80.391016,44.626807],[80.381445,44.65542],[80.400586,44.676904],[80.455469,44.684082],[80.481543,44.714648],[80.455469,44.746094],[80.36084,44.770312],[80.255078,44.808105],[80.127832,44.80376],[79.997168,44.797217],[79.932129,44.825195],[79.875293,44.86084],[79.871875,44.883789],[79.950195,44.944092],[80.05918,45.006445],[80.228223,45.033984],[80.414941,45.075098],[80.50918,45.10498],[80.634766,45.126514],[80.780078,45.135547],[80.85332,45.129297],[81.040332,45.169141],[81.334766,45.246191],[81.602051,45.31084],[81.691992,45.349365],[81.758887,45.31084],[81.789648,45.226025],[81.86748,45.18208],[81.944922,45.16084],[81.989258,45.161865],[82.122754,45.194873],[82.266602,45.219092],[82.323438,45.205859],[82.39668,45.162451],[82.478711,45.123584],[82.521484,45.125488],[82.558984,45.15542],[82.596973,45.215967],[82.621094,45.293115],[82.625781,45.374414],[82.611621,45.424268],[82.58252,45.442578],[82.45166,45.471973],[82.32666,45.519922],[82.312207,45.563721],[82.315234,45.594922],[82.348145,45.671533],[82.429688,45.811914],[82.511719,46.005811],[82.555078,46.158691],[82.692187,46.38667],[82.8,46.624463],[82.974902,46.966016],[83.004102,47.033496],[83.020117,47.141455],[83.029492,47.185937],[83.090332,47.209375],[83.193066,47.186572],[83.443555,47.108643],[83.634082,47.043213],[83.713965,47.021045],[83.832617,46.997852],[84.016016,46.970508],[84.12207,46.978613],[84.215137,46.994727],[84.338867,46.996143],[84.532422,46.975781],[84.592285,46.974951],[84.666602,46.972363],[84.719531,46.939355],[84.745996,46.864355],[84.786133,46.830713],[84.858203,46.843164],[85.012207,46.909229],[85.110547,46.96123],[85.233496,47.036377],[85.355371,47.046729],[85.484766,47.063525],[85.529688,47.100781],[85.577246,47.188477],[85.656641,47.254639],[85.669824,47.338379],[85.641797,47.397412],[85.586621,47.493652],[85.588281,47.558496],[85.561621,47.746484],[85.525977,47.915625],[85.562305,48.051855],[85.626367,48.204004],[85.651563,48.250537],[85.692187,48.311816],[85.749414,48.385059],[85.829883,48.408057],[86.056152,48.42373],[86.265625,48.454541],[86.372559,48.48623],[86.483301,48.505371],[86.549414,48.528613],[86.66377,48.635547],[86.717969,48.697168],[86.757812,48.860742],[86.728613,48.939355],[86.753125,49.008838],[86.808301,49.049707],[86.885938,49.090576],[86.937988,49.097559],[87.048535,49.109912],[87.22998,49.105859],[87.322852,49.085791],[87.416699,49.076611],[87.476172,49.091455],[87.51582,49.122412],[87.576563,49.132373],[87.668359,49.147217],[87.7625,49.16582],[87.814258,49.162305],[87.825195,49.116309],[87.816309,49.080273],[87.834668,49.031934],[87.872168,49.000146],[87.859863,48.965527],[87.806836,48.945508],[87.754687,48.918555],[87.743164,48.881641],[87.80918,48.835742],[87.831836,48.79165],[87.942187,48.765283],[88.02793,48.735596],[88.060059,48.707178],[88.050195,48.675049],[88.010645,48.64043],[87.972266,48.60332],[87.967383,48.581055],[87.979688,48.555127],[88.062598,48.537842],[88.158203,48.509082],[88.309961,48.47207],[88.413965,48.403418],[88.51709,48.384473],[88.566797,48.317432],[88.575977,48.220166],[88.681836,48.170557],[88.838281,48.101709],[88.917773,48.089014],[88.971094,48.049951],[89.047656,48.002539],[89.115625,47.987695],[89.196289,47.980908],[89.329883,48.024854],[89.479199,48.029053],[89.560938,48.003955],[89.638477,47.909082],[89.693164,47.87915],[89.725586,47.85249],[89.778125,47.827002],[89.831348,47.823291],[89.910449,47.844336],[89.958691,47.886328],[90.02793,47.877686],[90.053906,47.850488],[90.066602,47.803564],[90.103223,47.74541],[90.191016,47.7021],[90.313281,47.676172],[90.330664,47.655176],[90.347461,47.596973],[90.380664,47.556641],[90.425195,47.504102],[90.46748,47.408154],[90.476465,47.328809],[90.496191,47.285156],[90.55293,47.214014],[90.643359,47.100293],[90.715527,47.003857],[90.799023,46.985156],[90.869922,46.954492],[90.910547,46.883252],[90.985742,46.749023],[90.997852,46.661084],[91.004297,46.595752],[91.028906,46.566064],[91.033887,46.529004],[90.971484,46.387988],[90.918262,46.324268],[90.911523,46.270654],[90.947559,46.177295],[90.996777,46.10498],[91.001758,46.035791],[90.959766,45.985059],[90.887109,45.921631],[90.852441,45.8854],[90.795898,45.853516],[90.709668,45.730811],[90.670703,45.595166],[90.661816,45.525244],[90.694434,45.474658],[90.749609,45.418945],[90.763184,45.370654],[90.853223,45.262891],[90.877246,45.196094],[90.913965,45.193945],[90.953613,45.215918],[91.05,45.217432],[91.137695,45.193945],[91.221777,45.144531],[91.312109,45.118115],[91.441016,45.124756],[91.510059,45.098242],[91.584375,45.076514],[91.737793,45.068945],[91.852832,45.069336],[92.029785,45.068506],[92.172656,45.035254],[92.423828,45.008936],[92.578906,45.010986],[92.787891,45.035742],[92.916016,45.020166],[93.294336,44.983154],[93.516211,44.944482],[93.656445,44.900977],[93.755273,44.831934],[93.868164,44.724219],[93.95791,44.674951],[94.199316,44.645166],[94.364746,44.519482],[94.494336,44.47251],[94.712012,44.35083],[94.866016,44.30332],[95.049805,44.259424],[95.350293,44.278076],[95.366797,44.261523],[95.343652,44.19541],[95.325586,44.104883],[95.325586,44.039355],[95.356445,44.005957],[95.471289,43.986182],[95.525586,43.953955],[95.567187,43.892236],[95.591211,43.853613],[95.687305,43.664062],[95.841992,43.383691],[95.85957,43.275977],[95.9125,43.206494],[96.080273,43.096143],[96.168457,43.014502],[96.299512,42.928711],[96.34248,42.849316],[96.352344,42.746777],[96.385449,42.720361],[96.625293,42.743848],[96.833008,42.760254],[97.205664,42.789795],[97.718945,42.736279],[98.248242,42.684521],[98.716309,42.638721],[98.946875,42.616211],[99.467871,42.568213],[99.757422,42.629443],[99.983789,42.677344],[100.086328,42.670752],[100.519043,42.616797],[100.772559,42.587793],[101.091992,42.551318],[101.31377,42.537891],[101.495313,42.53877],[101.579102,42.523535],[101.659961,42.500049],[101.713867,42.46582],[101.879883,42.292334],[101.972949,42.215869],[102.156641,42.158105],[102.575195,42.09209],[102.806836,42.052002],[103.072852,42.005957],[103.247852,41.936572],[103.449707,41.855859],[103.711133,41.751318],[103.997266,41.796973],[104.305176,41.846143],[104.498242,41.877002],[104.498242,41.658691],[104.773633,41.641162],[104.860352,41.64375],[104.982031,41.595508],[105.050586,41.615918],[105.11543,41.663281],[105.19707,41.738037],[105.314355,41.770898],[105.51709,41.854736],[105.566406,41.875098],[105.867578,41.993994],[106.317187,42.140576],[106.51875,42.211572],[106.579102,42.227344],[106.693164,42.263574],[106.77002,42.288721],[106.906055,42.308887],[107.090723,42.321533],[107.292383,42.349268],[107.74873,42.400977],[107.805957,42.405859],[108.062305,42.427197],[108.171191,42.447314],[108.333984,42.436768],[108.546484,42.429297],[108.687305,42.416113],[108.874512,42.426465],[109.131641,42.440576],[109.339844,42.438379],[109.443164,42.455957],[109.595508,42.510547],[109.698047,42.553809],[109.858789,42.60625],[110.058008,42.660596],[110.196875,42.71001],[110.288867,42.742725],[110.400391,42.773682],[110.42959,42.813574],[110.461719,42.844141],[110.520898,42.895264],[110.627539,42.990527],[110.708594,43.073877],[110.748535,43.110791],[110.839551,43.194092],[110.913281,43.256885],[111.007227,43.341406],[111.086523,43.36875],[111.186816,43.391992],[111.451074,43.474902],[111.503516,43.492773],[111.547363,43.496289],[111.64082,43.563184],[111.719727,43.621143],[111.771094,43.6646],[111.878125,43.680176],[111.933203,43.711426],[111.942871,43.752441],[111.931738,43.814941],[111.880273,43.878906],[111.836914,43.934668],[111.683789,44.041113],[111.602637,44.107129],[111.519727,44.191895],[111.48623,44.271631],[111.42959,44.322363],[111.402246,44.367285],[111.410937,44.419189],[111.489453,44.511572],[111.514746,44.569824],[111.547461,44.6729],[111.621289,44.827148],[111.681445,44.89917],[111.751074,44.969531],[111.898047,45.064062],[112.032617,45.081641],[112.112891,45.062939],[112.29209,45.063037],[112.411328,45.058203],[112.499316,45.010937],[112.596777,44.917676],[112.706738,44.883447],[113.049414,44.810352],[113.196094,44.794824],[113.300977,44.79165],[113.455664,44.767432],[113.50791,44.762354],[113.587012,44.745703],[113.652637,44.763477],[113.752148,44.825928],[113.877051,44.896191],[113.930859,44.912305],[114.030273,44.942578],[114.080273,44.971143],[114.167383,45.049854],[114.281055,45.110889],[114.419141,45.202588],[114.487305,45.271729],[114.502246,45.316309],[114.517188,45.3646],[114.560156,45.38999],[114.644336,45.413281],[114.73877,45.419629],[114.919238,45.378271],[115.162598,45.390234],[115.21748,45.396191],[115.439453,45.419971],[115.539453,45.439502],[115.681055,45.458252],[115.78916,45.534814],[115.93418,45.626172],[116.039551,45.676953],[116.109863,45.686719],[116.197656,45.739355],[116.240625,45.795996],[116.229102,45.845752],[116.212988,45.886914],[116.264551,45.963037],[116.357617,46.096582],[116.444824,46.158789],[116.516699,46.209082],[116.562598,46.289795],[116.619336,46.313086],[116.688867,46.321973],[116.787012,46.37666],[116.859082,46.387939],[116.978809,46.361768],[117.155957,46.355078],[117.269043,46.352246],[117.333398,46.362012],[117.356934,46.391309],[117.356348,46.43667],[117.392188,46.537598],[117.405566,46.570898],[117.438086,46.58623],[117.546875,46.588281],[117.620508,46.552002],[117.671094,46.52207],[117.741211,46.518164],[117.813477,46.537695],[117.910449,46.619336],[118.071289,46.666602],[118.156836,46.678564],[118.308691,46.717041],[118.404395,46.703174],[118.580469,46.691895],[118.64873,46.70166],[118.722949,46.691895],[118.790332,46.74707],[118.843945,46.760205],[118.957129,46.734863],[119.028516,46.692187],[119.162109,46.638672],[119.331836,46.613818],[119.474023,46.62666],[119.620215,46.603955],[119.706641,46.606006],[119.747461,46.627197],[119.867188,46.672168],[119.895898,46.732861],[119.88418,46.791455],[119.897852,46.857812],[119.862695,46.906592],[119.788477,46.978809],[119.759863,47.027002],[119.757227,47.090039],[119.711133,47.15],[119.600195,47.222461],[119.526953,47.255908],[119.37666,47.380859],[119.325977,47.410156],[119.308594,47.430713],[119.29082,47.472656],[119.235254,47.492578],[119.162402,47.525195],[119.122949,47.558496],[119.097266,47.61626],[119.081934,47.65415],[119.017578,47.685352],[118.953125,47.70293],[118.880273,47.725098],[118.759961,47.757617],[118.690527,47.822266],[118.567773,47.943262],[118.498438,47.983984],[118.239648,47.999512],[118.14707,48.028906],[118.041895,48.018945],[117.979199,47.999609],[117.84043,47.999854],[117.768359,47.987891],[117.67666,47.908301],[117.555371,47.804688],[117.455078,47.741357],[117.383984,47.675732],[117.350781,47.652197],[117.285937,47.666357],[117.19707,47.740283],[117.069727,47.806396],[116.95166,47.836572],[116.901172,47.853076],[116.760547,47.869775],[116.651953,47.864502],[116.513477,47.839551],[116.378223,47.844043],[116.317187,47.859863],[116.231152,47.858203],[116.074805,47.789551],[115.993848,47.711328],[115.898242,47.686914],[115.811719,47.738232],[115.711719,47.798926],[115.616406,47.874805],[115.557617,47.94502],[115.525098,48.130859],[115.639453,48.18623],[115.785547,48.248242],[115.796582,48.346338],[115.791699,48.455713],[115.820508,48.577246],[115.953809,48.689355],[116.025488,48.782275],[116.034375,48.840039],[116.098242,48.936133],[116.159668,49.037451],[116.243359,49.170361],[116.402148,49.406201],[116.589746,49.684814],[116.683301,49.823779],[116.888965,49.737793],[117.02168,49.692969],[117.245605,49.624854],[117.477148,49.609424],[117.698438,49.53584],[117.812598,49.513525],[117.873438,49.513477],[118.186621,49.692773],[118.451563,49.844482],[118.755957,49.962842],[118.979492,49.978857],[119.147461,50.013379],[119.259863,50.066406],[119.326074,50.154932],[119.346289,50.278955],[119.301562,50.353906],[119.191895,50.379834],[119.163672,50.406006],[119.216699,50.43252],[119.255859,50.48418],[119.280664,50.560986],[119.344043,50.633887],[119.445703,50.702832],[119.501758,50.779248],[119.512305,50.863135],[119.573438,50.946777],[119.684961,51.030127],[119.745996,51.107715],[119.756641,51.179492],[119.813184,51.267041],[119.966992,51.422119],[120.066895,51.600684],[120.237012,51.722998],[120.510547,51.848535],[120.681445,51.973047],[120.749805,52.096533],[120.744531,52.205469],[120.66543,52.299902],[120.650391,52.395898],[120.699219,52.493604],[120.656152,52.56665],[120.521094,52.615039],[120.360059,52.627002],[120.172754,52.60249],[120.067578,52.63291],[120.044336,52.718213],[120.094531,52.787207],[120.218164,52.839893],[120.421289,52.968066],[120.704102,53.171826],[120.985449,53.28457],[121.405469,53.317041],[121.743945,53.383594],[122.088867,53.451465],[122.337793,53.48501],[122.380176,53.4625],[122.51582,53.456982],[122.744727,53.468506],[122.957617,53.497705],[123.154102,53.54458],[123.30957,53.555615],[123.424023,53.530762],[123.489453,53.529443],[123.534766,53.526465],[123.559766,53.52666],[123.607813,53.546533],[123.740918,53.510986],[123.994727,53.405615],[124.154297,53.358691],[124.219922,53.370117],[124.291406,53.340869],[124.369141,53.270947],[124.465918,53.229639],[124.639844,53.210645],[124.812305,53.133838],[124.882129,53.129736],[124.906641,53.172656],[124.970898,53.197314],[125.075,53.203662],[125.225586,53.16582],[125.422461,53.08374],[125.545996,53.047607],[125.595996,53.057471],[125.649023,53.042285],[125.691699,53.003711],[125.695312,52.956299],[125.680762,52.930811],[125.728125,52.890723],[125.782813,52.890723],[125.871875,52.871533],[125.941602,52.800684],[126.004297,52.767871],[126.048145,52.739453],[126.056055,52.715869],[126.060156,52.691992],[126.04707,52.673486],[126.023242,52.643018],[126.016016,52.610205],[126.045898,52.57334],[126.156641,52.546631],[126.194434,52.519141],[126.20293,52.483838],[126.237598,52.444824],[126.312891,52.399756],[126.341699,52.362012],[126.324219,52.331641],[126.346289,52.30625],[126.383496,52.286523],[126.391504,52.214502],[126.394824,52.172998],[126.455566,52.126465],[126.468066,52.031299],[126.510547,51.92583],[126.653711,51.781299],[126.700781,51.703027],[126.688672,51.609912],[126.70918,51.566309],[126.774512,51.545068],[126.805469,51.505664],[126.801758,51.448047],[126.827344,51.412256],[126.847754,51.37417],[126.833789,51.314893],[126.854395,51.261377],[126.887695,51.230127],[126.911523,51.172314],[126.924805,51.100146],[127.02041,50.985889],[127.198242,50.829443],[127.307031,50.707959],[127.346875,50.621338],[127.347168,50.550098],[127.308203,50.494189],[127.306055,50.453516],[127.34082,50.428076],[127.351172,50.393604],[127.337207,50.350146],[127.395313,50.298584],[127.590234,50.208984],[127.512305,50.07168],[127.491797,49.975049],[127.502441,49.873437],[127.550781,49.801807],[127.636719,49.760205],[127.690137,49.716748],[127.711133,49.671533],[127.814258,49.622119],[127.999609,49.568604],[128.237109,49.559277],[128.526758,49.594238],[128.704004,49.600146],[128.769043,49.576953],[128.791016,49.541846],[128.770313,49.494727],[128.819336,49.46377],[128.938281,49.448926],[129.020313,49.419238],[129.065137,49.374658],[129.120117,49.362061],[129.185156,49.381396],[129.248438,49.378662],[129.309863,49.353857],[129.350098,49.362354],[129.384668,49.389453],[129.440723,49.389453],[129.498145,49.388818],[129.533691,49.323437],[129.591406,49.28667],[129.671094,49.278516],[129.792578,49.198877],[130.037109,48.972266],[130.195996,48.89165],[130.355273,48.866357],[130.553125,48.861182],[130.617188,48.773193],[130.565625,48.680127],[130.552148,48.60249],[130.597266,48.574658],[130.65918,48.483398],[130.746875,48.430371],[130.763477,48.388428],[130.804297,48.341504],[130.787207,48.25459],[130.712109,48.127637],[130.732617,48.019238],[130.848633,47.929443],[130.91543,47.84292],[130.932813,47.759814],[130.961914,47.709326],[131.002734,47.691455],[131.121875,47.697656],[131.319336,47.727832],[131.464258,47.722607],[131.556738,47.682031],[131.785254,47.680518],[132.149805,47.717969],[132.380176,47.729492],[132.47627,47.71499],[132.561914,47.768506],[132.636914,47.890088],[132.707227,47.947266],[132.772852,47.940088],[132.877148,47.979102],[133.020117,48.064404],[133.144043,48.105664],[133.301172,48.101514],[133.468359,48.097168],[133.573242,48.133008],[133.671777,48.207715],[133.842188,48.27373],[134.205859,48.359912],[134.293359,48.373437],[134.334961,48.368848],[134.456152,48.355322],[134.563574,48.321729],[134.665234,48.253906],[134.680859,48.210449],[134.669336,48.15332],[134.647266,48.120166],[134.605371,48.08291],[134.566016,48.02251],[134.591309,47.975195],[134.650293,47.874268],[134.698633,47.801416],[134.752344,47.71543],[134.728125,47.684473],[134.695801,47.624854],[134.596191,47.523877],[134.541895,47.485156],[134.483496,47.447363],[134.38252,47.438232],[134.339453,47.429492],[134.29082,47.413574],[134.260059,47.377734],[134.225195,47.352637],[134.167676,47.302197],[134.162988,47.25874],[134.189258,47.194238],[134.202148,47.128076],[134.136914,47.068994],[134.086426,46.978125],[134.071387,46.950781],[134.045996,46.881982],[134.038574,46.858154],[134.022656,46.713184],[133.95752,46.614258],[133.866602,46.499121],[133.886719,46.430566],[133.902734,46.366943],[133.880273,46.336035],[133.874805,46.309082],[133.861328,46.247754],[133.832813,46.224268],[133.750195,46.185937],[133.700684,46.139746],[133.711133,46.069629],[133.685742,46.008936],[133.647852,45.955225],[133.608008,45.920312],[133.551172,45.897803],[133.513086,45.878809],[133.484668,45.810449],[133.475781,45.757666],[133.449121,45.705078],[133.465625,45.651221],[133.436426,45.604687],[133.355469,45.572217],[133.30957,45.553076],[133.266992,45.545264],[133.186035,45.494824],[133.113379,45.321436],[133.096875,45.220459],[133.113477,45.130713],[133.011719,45.074561],[132.936035,45.029932],[132.88877,45.046045],[132.838672,45.061133],[132.723145,45.080566],[132.665625,45.093701],[132.549023,45.122803],[132.362988,45.159961],[132.181348,45.203271],[132.067383,45.225977],[131.977539,45.243994],[131.909277,45.27373],[131.851855,45.326855],[131.794922,45.305273],[131.74209,45.242627],[131.654004,45.205371],[131.613965,45.136572],[131.578711,45.083643],[131.4875,45.013135],[131.446875,44.984033],[131.268262,44.936133],[131.22793,44.920166],[131.082324,44.91001],[131.033008,44.888867],[130.981641,44.844336],[130.967773,44.799951],[131.003906,44.753223],[131.060645,44.659668],[131.086914,44.595654],[131.125781,44.469189],[131.255273,44.071582],[131.213281,44.00293],[131.174219,43.704736],[131.183594,43.650879],[131.180078,43.56709],[131.182422,43.505566],[131.20918,43.49043],[131.243945,43.469043],[131.261816,43.433057],[131.257324,43.378076],[131.239355,43.337646],[131.211914,43.257764],[131.175586,43.142187],[131.135547,43.097607],[131.108984,43.062451],[131.086133,43.038086],[131.083496,42.956299],[131.068555,42.902246],[131.005566,42.883105],[130.942871,42.851758],[130.868555,42.86333],[130.80332,42.856836],[130.722461,42.83584],[130.577246,42.811621],[130.492969,42.779102],[130.452734,42.75542],[130.424805,42.727051],[130.419922,42.699854],[130.439258,42.685547],[130.520605,42.674316],[130.576563,42.623242],[130.584473,42.567334],[130.526953,42.5354],[130.498242,42.570508],[130.450293,42.581689],[130.360742,42.630859],[130.295605,42.684961],[130.24668,42.744824],[130.248828,42.872607],[130.240332,42.891797],[130.15127,42.917969],[130.124805,42.956006],[130.082617,42.97417],[130.022266,42.962598],[129.976953,42.974854],[129.941211,42.995654],[129.898242,42.998145],[129.861035,42.965088],[129.841504,42.894238],[129.779199,42.776562],[129.773438,42.705469],[129.746484,42.603809],[129.719727,42.475],[129.697852,42.448145],[129.62793,42.444287],[129.603906,42.435889],[129.567578,42.39209],[129.52373,42.384668],[129.484863,42.410303],[129.423633,42.435889],[129.36582,42.439209],[129.313672,42.413574],[129.252539,42.357861],[129.217773,42.312695],[129.205371,42.270557],[129.195508,42.218457],[129.133691,42.168506],[129.077246,42.142383],[128.960645,42.068799],[128.923438,42.038232],[128.839844,42.037842],[128.749023,42.040674],[128.626758,42.02085],[128.427246,42.010742],[128.307813,42.025635],[128.160156,42.011621],[128.045215,41.9875],[128.028711,41.951611],[128.03291,41.898486],[128.056055,41.86377],[128.08418,41.840576],[128.131934,41.769141],[128.181738,41.700049],[128.257812,41.655371],[128.289258,41.607422],[128.290918,41.562793],[128.254883,41.506543],[128.200293,41.433008],[128.149414,41.387744],[128.11123,41.389258],[128.052734,41.415625],[128.013086,41.448682],[127.918652,41.461133],[127.687695,41.43999],[127.572168,41.454736],[127.516992,41.481738],[127.420313,41.483789],[127.270801,41.519824],[127.179688,41.531348],[127.136719,41.554541],[127.128418,41.607422],[127.085352,41.643799],[127.061328,41.687354],[127.006934,41.742041],[126.954785,41.769482],[126.903516,41.781055],[126.847266,41.747998],[126.787695,41.718213],[126.743066,41.724854],[126.721582,41.716553],[126.696973,41.691895],[126.60127,41.640967],[126.57832,41.594336],[126.540137,41.495557],[126.513574,41.393994],[126.49043,41.358057],[126.451465,41.351855],[126.411816,41.321338],[126.328711,41.225684],[126.253613,41.137793],[126.144531,41.078271],[126.093164,41.023682],[126.066797,40.974072],[125.989062,40.904639],[125.874902,40.892236],[125.783984,40.872021],[125.72832,40.866699],[125.688281,40.838672],[125.65918,40.795898],[125.645117,40.778955],[125.593848,40.778955],[125.542578,40.742578],[125.416895,40.659912],[125.314453,40.644629],[125.185938,40.589404],[125.072949,40.547461],[125.025977,40.523877],[125.013379,40.497852],[124.996875,40.464746],[124.942285,40.458154],[124.889355,40.459814],[124.771973,40.38374],[124.712402,40.319238],[124.481055,40.181641],[124.386621,40.104248],[124.362109,40.004053],[124.35,40.011572],[124.26748,39.92417],[124.105762,39.841016],[123.760156,39.822412],[123.650879,39.881592],[123.61123,39.84082],[123.580664,39.786133],[123.490039,39.767871],[123.348145,39.762939],[123.268945,39.726904],[123.226562,39.686621],[123.032227,39.673535],[122.960938,39.619922],[122.840039,39.60083],[122.334863,39.366113],[122.225,39.267334],[122.120898,39.151904],[122.047656,39.093799],[121.982324,39.053174],[121.922656,39.036523],[121.864355,38.996484],[121.805176,38.991406],[121.744824,39.009668],[121.677246,39.003418],[121.632812,38.954834],[121.67041,38.891797],[121.649902,38.865088],[121.517188,38.830762],[121.320117,38.808203],[121.236328,38.766943],[121.207422,38.743506],[121.163574,38.731641],[121.12168,38.813281],[121.106738,38.920801],[121.188281,38.94668],[121.263281,38.960254],[121.679883,39.108691],[121.627637,39.220166],[121.664551,39.26875],[121.757812,39.347559],[121.818457,39.386523],[121.785449,39.40083],[121.5125,39.374854],[121.355664,39.376807],[121.275488,39.384766],[121.299805,39.452197],[121.286328,39.519434],[121.26748,39.544678],[121.406445,39.62124],[121.469531,39.640137],[121.517578,39.638965],[121.514258,39.685254],[121.474219,39.754883],[121.517383,39.844824],[121.800977,39.950537],[121.868945,40.046387],[121.982813,40.13584],[122.190918,40.358252],[122.20332,40.396045],[122.263867,40.500195],[122.275,40.541846],[122.178711,40.602734],[122.14043,40.688184],[121.858789,40.84209],[121.834863,40.974268],[121.808594,40.968506],[121.765625,40.875879],[121.729297,40.846143],[121.598926,40.843408],[121.537109,40.878418],[121.174512,40.90127],[121.085938,40.841602],[121.00293,40.749121],[120.922266,40.683105],[120.841309,40.649219],[120.770703,40.589062],[120.479102,40.230957],[120.368945,40.203857],[119.850391,39.987451],[119.591113,39.902637],[119.391113,39.75249],[119.322363,39.661621],[119.261328,39.560889],[119.224609,39.408057],[119.040137,39.222363],[118.976953,39.182568],[118.912305,39.166406],[118.826465,39.172119],[118.752441,39.160498],[118.626367,39.176855],[118.471973,39.118018],[118.297852,39.06709],[118.147852,39.195068],[118.040918,39.226758],[117.865723,39.19126],[117.784668,39.134473],[117.616699,38.852881],[117.553809,38.691455],[117.557813,38.625146],[117.656055,38.424219],[117.766699,38.31167],[118.014941,38.183398],[118.543262,38.094922],[118.66709,38.126367],[118.8,38.12666],[118.940039,38.042773],[119.027539,37.904004],[119.035645,37.80918],[119.038477,37.776514],[119.070312,37.748584],[119.08916,37.700732],[119.033496,37.661035],[118.99082,37.641357],[118.954883,37.494092],[118.952637,37.331152],[118.998145,37.2771],[119.111816,37.201172],[119.287402,37.138281],[119.449902,37.124756],[119.760547,37.155078],[119.8875,37.253369],[119.87998,37.295801],[119.88291,37.35083],[120.155859,37.49502],[120.311523,37.622705],[120.287109,37.656494],[120.257227,37.679004],[120.284668,37.69209],[120.370117,37.701025],[120.75,37.833936],[121.049023,37.725195],[121.219531,37.600146],[121.388086,37.578955],[121.505273,37.515039],[121.640234,37.460352],[121.816406,37.456641],[121.964844,37.445312],[122.010156,37.495752],[122.056641,37.528906],[122.10957,37.522314],[122.169141,37.456152],[122.337695,37.405273],[122.493262,37.407959],[122.602344,37.426416],[122.666992,37.402832],[122.57334,37.31792],[122.587305,37.181104],[122.515527,37.137842],[122.44668,37.068115],[122.487402,37.022266],[122.523438,37.002637],[122.519727,36.946826],[122.457031,36.915137],[122.340918,36.832227],[122.274219,36.833838],[122.242285,36.849854],[122.219727,36.879541],[122.203223,36.927197],[122.162402,36.958643],[122.049512,36.970752],[121.932715,36.959473],[121.669629,36.836377],[121.413086,36.738379],[121.144043,36.660449],[121.053809,36.611377],[120.989941,36.597949],[120.878516,36.635156],[120.81084,36.632812],[120.79668,36.607227],[120.882617,36.538916],[120.90498,36.485303],[120.895801,36.444141],[120.84707,36.426074],[120.776172,36.456299],[120.711523,36.413281],[120.682227,36.340723],[120.680957,36.168359],[120.637891,36.129932],[120.519336,36.108691],[120.393066,36.053857],[120.348242,36.079199],[120.330273,36.110107],[120.343457,36.189453],[120.327734,36.228174],[120.270117,36.226172],[120.183301,36.202441],[120.116992,36.150293],[120.094141,36.118896],[120.181445,36.01748],[120.264746,36.007227],[120.284766,35.984424],[120.219043,35.934912],[120.054688,35.861133],[120.027441,35.799365],[119.978711,35.740234],[119.911719,35.693213],[119.866211,35.643652],[119.810547,35.617725],[119.719727,35.588721],[119.608398,35.469873],[119.526465,35.358594],[119.429688,35.301416],[119.352832,35.113818],[119.21582,35.011768],[119.165332,34.848828],[119.200977,34.748437],[119.351367,34.749414],[119.426758,34.71416],[119.58291,34.582227],[119.769727,34.496191],[119.963672,34.447803],[120.201465,34.325684],[120.266699,34.274023],[120.322656,34.168994],[120.425684,33.866309],[120.499805,33.716455],[120.504785,33.638184],[120.615625,33.490527],[120.734473,33.236621],[120.871094,33.016504],[120.897363,32.843213],[120.853027,32.764111],[120.853223,32.661377],[120.989941,32.567041],[121.293359,32.457324],[121.341699,32.425049],[121.400977,32.371924],[121.403906,32.20625],[121.450781,32.15332],[121.490527,32.121094],[121.674219,32.051025],[121.751074,31.992871],[121.832422,31.899756],[121.856348,31.816455],[121.866309,31.703564],[121.763574,31.699512],[121.680859,31.712158],[121.351953,31.858789],[121.266406,31.862695],[121.145801,31.842334],[120.973535,31.869385],[120.791699,32.031738],[120.660547,32.081055],[120.520117,32.105859],[120.184082,31.966162],[120.09873,31.975977],[120.073926,31.960254],[120.035937,31.936279],[120.191602,31.906348],[120.347461,31.9521],[120.497168,32.019824],[120.715527,31.98374],[120.752246,31.922852],[120.787793,31.819775],[120.9375,31.750195],[121.055371,31.719434],[121.204883,31.628076],[121.350977,31.485352],[121.660645,31.319727],[121.785937,31.162891],[121.834473,31.061621],[121.87793,30.916992],[121.769434,30.870361],[121.675195,30.86377],[121.527539,30.840967],[121.418945,30.789795],[121.309961,30.699707],[120.997656,30.558252],[120.938281,30.469727],[120.897461,30.392627],[120.821484,30.354639],[120.62998,30.390869],[120.449805,30.387842],[120.245508,30.283545],[120.194629,30.241309],[120.228516,30.249561],[120.260547,30.263037],[120.352539,30.247412],[120.494531,30.303076],[120.633398,30.133154],[120.904492,30.160645],[121.159375,30.301758],[121.258008,30.304102],[121.340625,30.282373],[121.432715,30.22666],[121.67793,29.979102],[121.812305,29.952148],[121.944336,29.894092],[122.017285,29.887695],[122.08291,29.870361],[121.905762,29.779687],[121.676562,29.583789],[121.574609,29.537012],[121.50625,29.48457],[121.69043,29.510986],[121.821875,29.604639],[121.887988,29.627783],[121.941211,29.605908],[121.968359,29.490625],[121.917773,29.13501],[121.853516,29.128906],[121.79082,29.225684],[121.71748,29.256348],[121.655957,29.236133],[121.533691,29.236719],[121.487109,29.193164],[121.447656,29.131348],[121.520898,29.118457],[121.664941,29.010596],[121.679688,28.953125],[121.641016,28.915918],[121.540039,28.931885],[121.6625,28.851416],[121.630078,28.76792],[121.590332,28.734814],[121.519141,28.713672],[121.475195,28.641406],[121.538086,28.521094],[121.602051,28.366602],[121.609961,28.292139],[121.509961,28.324268],[121.35459,28.229883],[121.272266,28.222119],[121.216797,28.346191],[121.145703,28.32666],[121.098437,28.290527],[121.035449,28.157275],[120.958594,28.037012],[120.89248,28.003906],[120.812988,28.013379],[120.747656,28.009961],[120.763477,27.977441],[120.833008,27.937793],[120.833008,27.891455],[120.685156,27.74458],[120.661328,27.687891],[120.664844,27.639453],[120.5875,27.580762],[120.629102,27.482129],[120.60752,27.412402],[120.539844,27.318359],[120.468652,27.25625],[120.38457,27.155518],[120.278711,27.09707],[120.138574,26.886133],[120.097461,26.780664],[120.086719,26.671582],[120.042969,26.633838],[119.967773,26.586377],[119.882227,26.610449],[119.879492,26.683008],[119.842383,26.689307],[119.821289,26.736914],[119.815137,26.797607],[119.824219,26.846387],[119.788672,26.831494],[119.766699,26.774707],[119.710449,26.728662],[119.651563,26.747266],[119.588184,26.784961],[119.589941,26.730469],[119.623633,26.675879],[119.638184,26.621191],[119.725977,26.609424],[119.784766,26.546631],[119.831152,26.450195],[119.840332,26.41416],[119.876465,26.370947],[119.881055,26.33418],[119.797266,26.300146],[119.692676,26.236426],[119.56709,26.127344],[119.463086,26.054688],[119.369727,26.054053],[119.313086,26.062549],[119.232129,26.104395],[119.139453,26.121777],[119.26377,25.974805],[119.332031,25.94873],[119.417773,25.954346],[119.500879,26.00918],[119.61875,26.003564],[119.648242,25.918701],[119.616895,25.8229],[119.552832,25.698682],[119.539453,25.59126],[119.619141,25.437451],[119.622461,25.391162],[119.592773,25.368018],[119.499219,25.408643],[119.421777,25.459619],[119.34375,25.446289],[119.263086,25.468018],[119.180078,25.449805],[119.146289,25.414307],[119.169336,25.355713],[119.243555,25.307031],[119.285547,25.232227],[119.235547,25.205957],[119.024609,25.223438],[118.977539,25.209277],[118.914453,25.126807],[118.955664,25.004785],[118.909082,24.928906],[118.82207,24.911133],[118.70752,24.849805],[118.636914,24.835547],[118.640234,24.809082],[118.691797,24.782324],[118.719141,24.746143],[118.657031,24.621436],[118.560352,24.580371],[118.412012,24.600732],[118.295313,24.572754],[118.194531,24.62583],[118.087109,24.627002],[118.013867,24.559912],[118.005957,24.481982],[117.935059,24.474219],[117.896875,24.479834],[117.842676,24.474316],[117.848242,24.432471],[117.879004,24.395898],[118.024219,24.379639],[118.050586,24.327148],[118.056055,24.246094],[117.904102,24.106445],[117.839453,24.012305],[117.741699,24.014795],[117.667871,23.939258],[117.628223,23.836719],[117.579199,23.856982],[117.466406,23.840576],[117.433105,23.791699],[117.45957,23.771484],[117.462207,23.73623],[117.416992,23.620996],[117.367676,23.588623],[117.34668,23.635742],[117.330762,23.708789],[117.29082,23.714355],[117.225,23.647021],[117.148145,23.598779],[117.08252,23.57876],[117.032813,23.623437],[116.910645,23.64668],[116.860938,23.453076],[116.75957,23.38252],[116.712109,23.360498],[116.629395,23.353857],[116.682324,23.327393],[116.698828,23.277783],[116.669141,23.228174],[116.586426,23.218262],[116.538281,23.179688],[116.519824,23.006592],[116.470703,22.945898],[116.345508,22.941064],[116.251855,22.981348],[116.22207,22.949561],[116.206348,22.918652],[116.157422,22.887451],[116.062598,22.879102],[115.852148,22.801563],[115.755859,22.823926],[115.64043,22.853418],[115.561133,22.824707],[115.534668,22.765186],[115.49834,22.718848],[115.38252,22.718848],[115.289941,22.775977],[115.195801,22.817285],[115.091504,22.781689],[115.012109,22.708936],[114.914453,22.684619],[114.896387,22.639502],[114.853809,22.616797],[114.750391,22.626318],[114.711133,22.738721],[114.65166,22.755273],[114.592773,22.698437],[114.571973,22.654053],[114.544434,22.620605],[114.554199,22.528906],[114.496191,22.527051],[114.420117,22.583252],[114.340625,22.593213],[114.266016,22.540967],[114.228223,22.553955],[114.188184,22.56499],[114.122852,22.56499],[114.097852,22.55127],[114.050391,22.542969],[114.018262,22.514453],[114.01543,22.511914],[113.931152,22.531055],[113.82832,22.607227],[113.754492,22.733643],[113.661133,22.80166],[113.619629,22.861426],[113.603418,22.968896],[113.586328,23.02002],[113.592188,23.076953],[113.620508,23.12749],[113.519727,23.1021],[113.445312,23.055078],[113.460352,22.995703],[113.441895,22.940576],[113.331055,22.912012],[113.337793,22.888818],[113.344824,22.8646],[113.432031,22.789404],[113.449805,22.726123],[113.484766,22.692383],[113.553027,22.594043],[113.551465,22.40415],[113.588867,22.350488],[113.576465,22.297266],[113.549121,22.225195],[113.546777,22.224121],[113.527051,22.245947],[113.494141,22.241553],[113.481055,22.21748],[113.478906,22.195557],[113.473437,22.194434],[113.415723,22.178369],[113.367383,22.164844],[113.327734,22.14541],[113.266406,22.08877],[113.149023,22.075],[113.08877,22.207959],[113.008203,22.119336],[112.983789,21.938232],[112.953906,21.907324],[112.903809,21.881445],[112.808594,21.944629],[112.725391,21.902344],[112.660742,21.859473],[112.634082,21.819873],[112.586328,21.776855],[112.494727,21.818311],[112.421289,21.880615],[112.439453,21.927344],[112.429297,21.958105],[112.396094,21.981348],[112.359668,21.978027],[112.377441,21.91748],[112.389746,21.801221],[112.356445,21.767578],[112.30498,21.741699],[112.193359,21.763135],[112.117188,21.806494],[112.025195,21.843018],[111.943945,21.849658],[111.926465,21.77627],[111.873438,21.717139],[111.824609,21.709766],[111.775977,21.719238],[111.711914,21.655225],[111.681641,21.608496],[111.602734,21.559082],[111.392383,21.535107],[111.319141,21.486133],[111.220605,21.493896],[111.144238,21.482227],[111.100586,21.484717],[111.061133,21.510986],[111.016895,21.511719],[110.996777,21.430273],[110.878027,21.395947],[110.771094,21.386523],[110.652148,21.279102],[110.567187,21.214062],[110.504297,21.207422],[110.458008,21.230566],[110.43457,21.326904],[110.410937,21.338135],[110.397461,21.247705],[110.374609,21.172363],[110.331152,21.131348],[110.193555,21.037646],[110.154004,20.944629],[110.180371,20.858594],[110.36543,20.837598],[110.388477,20.790527],[110.370508,20.752051],[110.326172,20.719922],[110.313086,20.67168],[110.511523,20.518262],[110.517578,20.46001],[110.486914,20.426855],[110.449512,20.35542],[110.344727,20.294824],[110.123145,20.263721],[109.938477,20.295117],[109.88252,20.364063],[109.88584,20.413135],[109.931641,20.398877],[109.983887,20.403271],[109.968359,20.448145],[109.946387,20.474365],[109.861035,20.514307],[109.791992,20.621875],[109.805273,20.711475],[109.767383,20.780713],[109.72627,20.83877],[109.684766,20.873633],[109.662598,20.916895],[109.704492,21.052734],[109.68125,21.131641],[109.760156,21.228369],[109.77959,21.337451],[109.921094,21.376465],[109.930762,21.480566],[109.82959,21.483594],[109.759375,21.560059],[109.743359,21.527979],[109.686914,21.524609],[109.594336,21.671973],[109.566406,21.690576],[109.521484,21.693408],[109.544043,21.537939],[109.435547,21.479492],[109.34668,21.453955],[109.22041,21.443408],[109.148633,21.425537],[109.081543,21.440283],[109.098145,21.487354],[109.133496,21.543604],[109.101758,21.590479],[109.030566,21.626514],[108.921777,21.624414],[108.846387,21.634473],[108.77168,21.630469],[108.743945,21.65127],[108.674512,21.724658],[108.61582,21.770459],[108.589355,21.815967],[108.61582,21.868896],[108.59375,21.901025],[108.479883,21.904639],[108.480859,21.828809],[108.492578,21.739404],[108.525684,21.671387],[108.502148,21.633447],[108.444336,21.607324],[108.382812,21.679199],[108.35459,21.696924],[108.324805,21.693506],[108.302148,21.621924],[108.246289,21.558398],[108.145605,21.565186],[108.067383,21.525977],[107.972656,21.507959]]],[[[110.88877,19.991943],[110.938281,19.947559],[110.970703,19.883301],[110.997656,19.764697],[111.013672,19.655469],[110.912695,19.586084],[110.822266,19.55791],[110.640918,19.291211],[110.603125,19.207031],[110.572168,19.171875],[110.5625,19.135156],[110.566016,19.098535],[110.519336,18.970215],[110.477637,18.812598],[110.45127,18.747949],[110.399512,18.69834],[110.333691,18.673291],[110.29082,18.669531],[110.251758,18.655762],[110.15625,18.569824],[110.048535,18.505225],[110.066406,18.475635],[110.067383,18.447559],[110.020215,18.41626],[109.967676,18.42207],[109.815625,18.39668],[109.759766,18.348291],[109.702734,18.259131],[109.681055,18.247119],[109.589551,18.226318],[109.519336,18.218262],[109.400098,18.281104],[109.340918,18.299609],[109.183203,18.325146],[109.029883,18.367773],[108.922266,18.416113],[108.701563,18.535254],[108.676074,18.750244],[108.638086,18.866309],[108.635645,18.907715],[108.65,19.265039],[108.665527,19.304102],[108.693555,19.338281],[108.791016,19.418164],[108.902832,19.481348],[109.062891,19.613574],[109.179102,19.674121],[109.27666,19.761133],[109.219531,19.757471],[109.177441,19.768457],[109.218945,19.842822],[109.263477,19.882666],[109.314844,19.904395],[109.418164,19.888818],[109.513672,19.904248],[109.584277,19.970312],[109.651367,19.984375],[109.90625,19.962744],[110.083008,19.99292],[110.171582,20.053711],[110.213379,20.056055],[110.343945,20.038818],[110.392285,19.975586],[110.387988,20.018018],[110.393555,20.059229],[110.417578,20.054736],[110.588184,19.976367],[110.58877,20.072461],[110.59834,20.097607],[110.651758,20.137744],[110.678516,20.137061],[110.744531,20.059473],[110.809082,20.014404],[110.88877,19.991943]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"China","SOV_A3":"CH1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Macao S.A.R","ADM0_A3":"MAC","GEOU_DIF":0,"GEOUNIT":"Macao S.A.R","GU_A3":"MAC","SU_DIF":0,"SUBUNIT":"Macao S.A.R","SU_A3":"MAC","BRK_DIFF":0,"NAME":"Macao","NAME_LONG":"Macao","BRK_A3":"MAC","BRK_NAME":"Macao","BRK_GROUP":null,"ABBREV":"Mac.","POSTAL":"MO","FORMAL_EN":"Macao Special Administrative Region, PRC","FORMAL_FR":null,"NAME_CIAWF":"Macau","NOTE_ADM0":"Cn.","NOTE_BRK":"China","NAME_SORT":"Macao SAR, China","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":3,"POP_EST":640445,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":53859,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"MC","ISO_A2":"MO","ISO_A2_EH":"MO","ISO_A3":"MAC","ISO_A3_EH":"MAC","ISO_N3":"446","ISO_N3_EH":"446","UN_A3":"446","WB_A2":"MO","WB_A3":"MAC","WOE_ID":20070017,"WOE_ID_EH":20070017,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MAC","ADM0_DIFF":null,"ADM0_TLC":"MAC","ADM0_A3_US":"MAC","ADM0_A3_FR":"MAC","ADM0_A3_RU":"MAC","ADM0_A3_ES":"MAC","ADM0_A3_CN":"MAC","ADM0_A3_TW":"MAC","ADM0_A3_IN":"MAC","ADM0_A3_NP":"MAC","ADM0_A3_PK":"MAC","ADM0_A3_DE":"MAC","ADM0_A3_GB":"MAC","ADM0_A3_BR":"MAC","ADM0_A3_IL":"MAC","ADM0_A3_PS":"MAC","ADM0_A3_SA":"MAC","ADM0_A3_EG":"MAC","ADM0_A3_MA":"MAC","ADM0_A3_PT":"MAC","ADM0_A3_AR":"MAC","ADM0_A3_JP":"MAC","ADM0_A3_KO":"MAC","ADM0_A3_VN":"MAC","ADM0_A3_TR":"MAC","ADM0_A3_ID":"MAC","ADM0_A3_PL":"MAC","ADM0_A3_GR":"MAC","ADM0_A3_IT":"MAC","ADM0_A3_NL":"MAC","ADM0_A3_SE":"MAC","ADM0_A3_BD":"MAC","ADM0_A3_UA":"MAC","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":113.556038,"LABEL_Y":22.129735,"NE_ID":1159320475,"WIKIDATAID":"Q14773","NAME_AR":"ماكاو","NAME_BN":"মাকাও","NAME_DE":"Macau","NAME_EN":"Macau","NAME_ES":"Macao","NAME_FA":"ماکائو","NAME_FR":"Macao","NAME_EL":"Μακάου","NAME_HE":"מקאו","NAME_HI":"मकाउ","NAME_HU":"Makaó","NAME_ID":"Makau","NAME_IT":"Macao","NAME_JA":"マカオ","NAME_KO":"마카오","NAME_NL":"Macau","NAME_PL":"Makau","NAME_PT":"Macau","NAME_RU":"Макао","NAME_SV":"Macao","NAME_TR":"Makao","NAME_UK":"Аоминь","NAME_UR":"مکاؤ","NAME_VI":"Ma Cao","NAME_ZH":"澳门","NAME_ZHT":"澳門","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":"Admin-1 region","FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[113.478906,22.195557,113.548145,22.245947],"geometry":{"type":"Polygon","coordinates":[[[113.478906,22.195557],[113.481055,22.21748],[113.494141,22.241553],[113.527051,22.245947],[113.548145,22.222607],[113.545508,22.221484],[113.498828,22.20166],[113.48418,22.197754],[113.478906,22.195557]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"China","SOV_A3":"CH1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Hong Kong S.A.R.","ADM0_A3":"HKG","GEOU_DIF":0,"GEOUNIT":"Hong Kong S.A.R.","GU_A3":"HKG","SU_DIF":0,"SUBUNIT":"Hong Kong S.A.R.","SU_A3":"HKG","BRK_DIFF":0,"NAME":"Hong Kong","NAME_LONG":"Hong Kong","BRK_A3":"HKG","BRK_NAME":"Hong Kong","BRK_GROUP":null,"ABBREV":"H.K.","POSTAL":"HK","FORMAL_EN":"Hong Kong Special Administrative Region, PRC","FORMAL_FR":null,"NAME_CIAWF":"Hong Kong","NOTE_ADM0":"Cn.","NOTE_BRK":"China","NAME_SORT":"Hong Kong SAR, China","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":4,"MAPCOLOR9":4,"MAPCOLOR13":3,"POP_EST":7507400,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":365711,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"HK","ISO_A2":"HK","ISO_A2_EH":"HK","ISO_A3":"HKG","ISO_A3_EH":"HKG","ISO_N3":"344","ISO_N3_EH":"344","UN_A3":"344","WB_A2":"HK","WB_A3":"HKG","WOE_ID":24865698,"WOE_ID_EH":24865698,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"HKG","ADM0_DIFF":null,"ADM0_TLC":"HKG","ADM0_A3_US":"HKG","ADM0_A3_FR":"HKG","ADM0_A3_RU":"HKG","ADM0_A3_ES":"HKG","ADM0_A3_CN":"HKG","ADM0_A3_TW":"HKG","ADM0_A3_IN":"HKG","ADM0_A3_NP":"HKG","ADM0_A3_PK":"HKG","ADM0_A3_DE":"HKG","ADM0_A3_GB":"HKG","ADM0_A3_BR":"HKG","ADM0_A3_IL":"HKG","ADM0_A3_PS":"HKG","ADM0_A3_SA":"HKG","ADM0_A3_EG":"HKG","ADM0_A3_MA":"HKG","ADM0_A3_PT":"HKG","ADM0_A3_AR":"HKG","ADM0_A3_JP":"HKG","ADM0_A3_KO":"HKG","ADM0_A3_VN":"HKG","ADM0_A3_TR":"HKG","ADM0_A3_ID":"HKG","ADM0_A3_PL":"HKG","ADM0_A3_GR":"HKG","ADM0_A3_IT":"HKG","ADM0_A3_NL":"HKG","ADM0_A3_SE":"HKG","ADM0_A3_BD":"HKG","ADM0_A3_UA":"HKG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":114.097769,"LABEL_Y":22.448829,"NE_ID":1159320473,"WIKIDATAID":"Q8646","NAME_AR":"هونغ كونغ","NAME_BN":"হংকং","NAME_DE":"Hongkong","NAME_EN":"Hong Kong","NAME_ES":"Hong Kong","NAME_FA":"هنگ کنگ","NAME_FR":"Hong Kong","NAME_EL":"Χονγκ Κονγκ","NAME_HE":"הונג קונג","NAME_HI":"हांगकांग","NAME_HU":"Hongkong","NAME_ID":"Hong Kong","NAME_IT":"Hong Kong","NAME_JA":"香港","NAME_KO":"홍콩","NAME_NL":"Hongkong","NAME_PL":"Hongkong","NAME_PT":"Hong Kong","NAME_RU":"Гонконг","NAME_SV":"Hongkong","NAME_TR":"Hong Kong","NAME_UK":"Гонконг","NAME_UR":"ہانگ کانگ","NAME_VI":"Hồng Kông","NAME_ZH":"香港","NAME_ZHT":"香港","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":"Admin-1 region","FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[113.838867,22.195166,114.335254,22.56499],"geometry":{"type":"MultiPolygon","coordinates":[[[[114.01543,22.511914],[114.018262,22.514453],[114.050391,22.542969],[114.097852,22.55127],[114.122852,22.56499],[114.188184,22.56499],[114.228223,22.553955],[114.266016,22.540967],[114.269629,22.536768],[114.291113,22.499463],[114.28457,22.457617],[114.325195,22.437402],[114.335254,22.39624],[114.290527,22.373779],[114.287891,22.325293],[114.267969,22.295557],[114.139063,22.348438],[114.032813,22.375879],[113.937305,22.36499],[113.902539,22.396094],[113.896484,22.428174],[114.006738,22.484033],[114.01543,22.511914]]],[[[114.232031,22.210547],[114.207227,22.195166],[114.13877,22.268359],[114.134473,22.292236],[114.187402,22.296631],[114.246875,22.263574],[114.243555,22.233545],[114.232031,22.210547]]],[[[113.997754,22.210498],[113.877344,22.210449],[113.851562,22.220459],[113.838867,22.241699],[113.881543,22.280273],[114.043945,22.333398],[114.00332,22.277539],[113.997754,22.210498]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":4,"LABELRANK":2,"SOVEREIGNT":"Chile","SOV_A3":"CHL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Chile","ADM0_A3":"CHL","GEOU_DIF":0,"GEOUNIT":"Chile","GU_A3":"CHL","SU_DIF":0,"SUBUNIT":"Chile","SU_A3":"CHL","BRK_DIFF":0,"NAME":"Chile","NAME_LONG":"Chile","BRK_A3":"CHL","BRK_NAME":"Chile","BRK_GROUP":null,"ABBREV":"Chile","POSTAL":"CL","FORMAL_EN":"Republic of Chile","FORMAL_FR":null,"NAME_CIAWF":"Chile","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Chile","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":1,"MAPCOLOR9":5,"MAPCOLOR13":9,"POP_EST":18952038,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":282318,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"CI","ISO_A2":"CL","ISO_A2_EH":"CL","ISO_A3":"CHL","ISO_A3_EH":"CHL","ISO_N3":"152","ISO_N3_EH":"152","UN_A3":"152","WB_A2":"CL","WB_A3":"CHL","WOE_ID":23424782,"WOE_ID_EH":23424782,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CHL","ADM0_DIFF":null,"ADM0_TLC":"CHL","ADM0_A3_US":"CHL","ADM0_A3_FR":"CHL","ADM0_A3_RU":"CHL","ADM0_A3_ES":"CHL","ADM0_A3_CN":"CHL","ADM0_A3_TW":"CHL","ADM0_A3_IN":"CHL","ADM0_A3_NP":"CHL","ADM0_A3_PK":"CHL","ADM0_A3_DE":"CHL","ADM0_A3_GB":"CHL","ADM0_A3_BR":"CHL","ADM0_A3_IL":"CHL","ADM0_A3_PS":"CHL","ADM0_A3_SA":"CHL","ADM0_A3_EG":"CHL","ADM0_A3_MA":"CHL","ADM0_A3_PT":"CHL","ADM0_A3_AR":"CHL","ADM0_A3_JP":"CHL","ADM0_A3_KO":"CHL","ADM0_A3_VN":"CHL","ADM0_A3_TR":"CHL","ADM0_A3_ID":"CHL","ADM0_A3_PL":"CHL","ADM0_A3_GR":"CHL","ADM0_A3_IT":"CHL","ADM0_A3_NL":"CHL","ADM0_A3_SE":"CHL","ADM0_A3_BD":"CHL","ADM0_A3_UA":"CHL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":6.7,"LABEL_X":-72.318871,"LABEL_Y":-38.151771,"NE_ID":1159320493,"WIKIDATAID":"Q298","NAME_AR":"تشيلي","NAME_BN":"চিলি","NAME_DE":"Chile","NAME_EN":"Chile","NAME_ES":"Chile","NAME_FA":"شیلی","NAME_FR":"Chili","NAME_EL":"Χιλή","NAME_HE":"צ'ילה","NAME_HI":"चिली","NAME_HU":"Chile","NAME_ID":"Chili","NAME_IT":"Cile","NAME_JA":"チリ","NAME_KO":"칠레","NAME_NL":"Chili","NAME_PL":"Chile","NAME_PT":"Chile","NAME_RU":"Чили","NAME_SV":"Chile","NAME_TR":"Şili","NAME_UK":"Чилі","NAME_UR":"چلی","NAME_VI":"Chile","NAME_ZH":"智利","NAME_ZHT":"智利","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-109.434131,-55.891699,-66.435791,-17.506055],"geometry":{"type":"MultiPolygon","coordinates":[[[[-109.27998,-27.14043],[-109.434131,-27.171289],[-109.42915,-27.116211],[-109.390479,-27.068359],[-109.276465,-27.095898],[-109.222852,-27.101074],[-109.27998,-27.14043]]],[[[-78.80415,-33.646484],[-78.98335,-33.667773],[-78.989453,-33.661719],[-78.979297,-33.644141],[-78.938135,-33.613574],[-78.888281,-33.576367],[-78.877441,-33.575195],[-78.859033,-33.578125],[-78.838184,-33.585059],[-78.784668,-33.610156],[-78.768945,-33.627344],[-78.774707,-33.641602],[-78.80415,-33.646484]]],[[[-70.418262,-18.345605],[-70.37749,-18.333594],[-70.282275,-18.325391],[-70.183789,-18.325195],[-70.059082,-18.283496],[-69.926367,-18.206055],[-69.839697,-18.093457],[-69.802588,-17.990234],[-69.802441,-17.9],[-69.841504,-17.785156],[-69.8521,-17.703809],[-69.806104,-17.664941],[-69.684766,-17.649805],[-69.586426,-17.573242],[-69.510937,-17.506055],[-69.49502,-17.619531],[-69.358008,-17.77168],[-69.313379,-17.943164],[-69.282324,-17.964844],[-69.093945,-18.050488],[-69.09043,-18.070703],[-69.118066,-18.102734],[-69.145459,-18.144043],[-69.126367,-18.202441],[-69.092285,-18.282422],[-69.080957,-18.356641],[-69.060156,-18.433008],[-69.039404,-18.550098],[-69.026807,-18.65625],[-68.978857,-18.812988],[-68.969092,-18.909668],[-68.968311,-18.967969],[-68.931006,-19.025195],[-68.857959,-19.093359],[-68.759082,-19.162207],[-68.680664,-19.242383],[-68.620557,-19.29668],[-68.547852,-19.341113],[-68.491992,-19.381934],[-68.470166,-19.409961],[-68.462891,-19.432813],[-68.487012,-19.454395],[-68.575293,-19.560156],[-68.698291,-19.721094],[-68.696191,-19.740723],[-68.578271,-19.856543],[-68.559375,-19.902344],[-68.560693,-19.96709],[-68.600195,-20.044922],[-68.72749,-20.069629],[-68.755811,-20.09082],[-68.759326,-20.115527],[-68.730029,-20.148438],[-68.73457,-20.225195],[-68.688574,-20.310059],[-68.712305,-20.338965],[-68.759229,-20.378027],[-68.760547,-20.416211],[-68.745166,-20.458594],[-68.695801,-20.492969],[-68.499854,-20.612012],[-68.484326,-20.628418],[-68.487402,-20.640723],[-68.563184,-20.720117],[-68.571045,-20.769141],[-68.568945,-20.849805],[-68.558252,-20.901953],[-68.533838,-20.923633],[-68.435498,-20.948242],[-68.313867,-21.129688],[-68.197021,-21.300293],[-68.198535,-21.447266],[-68.186426,-21.618555],[-68.112158,-21.753027],[-68.101807,-21.860645],[-68.076758,-21.982813],[-67.988379,-22.057129],[-67.953906,-22.204004],[-67.944922,-22.282227],[-67.950391,-22.333691],[-67.881738,-22.493359],[-67.87373,-22.630566],[-67.88999,-22.729199],[-67.88916,-22.78418],[-67.879443,-22.822949],[-67.820508,-22.857715],[-67.794434,-22.879492],[-67.707324,-22.88916],[-67.579932,-22.891699],[-67.362256,-22.855176],[-67.194873,-22.82168],[-67.008789,-23.001367],[-67.089746,-23.245117],[-67.219141,-23.633984],[-67.319141,-23.934668],[-67.335596,-23.974805],[-67.356201,-24.033789],[-67.571777,-24.118945],[-67.88623,-24.243359],[-68.047363,-24.308301],[-68.250293,-24.391992],[-68.299512,-24.460352],[-68.358105,-24.497266],[-68.422559,-24.545117],[-68.447119,-24.596973],[-68.507275,-24.629785],[-68.562012,-24.747363],[-68.562012,-24.837695],[-68.527051,-24.899219],[-68.466309,-24.925195],[-68.447119,-24.998926],[-68.428027,-25.050977],[-68.384229,-25.091895],[-68.395215,-25.124707],[-68.430713,-25.149316],[-68.496338,-25.162988],[-68.54082,-25.236719],[-68.59209,-25.42002],[-68.600293,-25.485645],[-68.541895,-25.651563],[-68.51084,-25.741016],[-68.426758,-26.06543],[-68.414502,-26.153711],[-68.529834,-26.276953],[-68.575781,-26.351953],[-68.592187,-26.418066],[-68.591602,-26.47041],[-68.581152,-26.518359],[-68.485107,-26.670313],[-68.37334,-26.806445],[-68.318652,-26.877539],[-68.318652,-26.973242],[-68.345996,-27.02793],[-68.405371,-27.048145],[-68.537354,-27.085352],[-68.59209,-27.140039],[-68.652197,-27.14834],[-68.709619,-27.104492],[-68.769775,-27.11543],[-68.846338,-27.153711],[-68.875098,-27.24668],[-68.941992,-27.405176],[-68.999414,-27.449023],[-69.042187,-27.57002],[-69.118506,-27.743555],[-69.155273,-27.848145],[-69.174414,-27.924707],[-69.251221,-27.973633],[-69.340723,-28.070801],[-69.40957,-28.165332],[-69.436914,-28.192676],[-69.488867,-28.200879],[-69.527148,-28.285645],[-69.656934,-28.413574],[-69.687891,-28.562012],[-69.734912,-28.641113],[-69.743164,-28.783887],[-69.814844,-29.045508],[-69.827881,-29.103223],[-69.900342,-29.148828],[-69.995605,-29.25],[-70.026807,-29.324023],[-69.982617,-29.54541],[-69.927637,-29.769141],[-69.924121,-29.874023],[-69.945459,-30.016406],[-69.959961,-30.07832],[-69.923535,-30.103906],[-69.863379,-30.120313],[-69.844287,-30.175],[-69.888037,-30.213281],[-69.907129,-30.281641],[-69.956348,-30.358203],[-70.102002,-30.388281],[-70.153223,-30.360938],[-70.169629,-30.385547],[-70.161426,-30.440234],[-70.193945,-30.504688],[-70.269385,-30.677246],[-70.319238,-30.833984],[-70.348145,-30.902344],[-70.336426,-30.959766],[-70.311816,-30.992578],[-70.309082,-31.022656],[-70.350586,-31.060449],[-70.388379,-31.121094],[-70.429395,-31.129297],[-70.473096,-31.112793],[-70.51958,-31.148438],[-70.529053,-31.222852],[-70.554688,-31.317383],[-70.566406,-31.42793],[-70.585205,-31.569434],[-70.525635,-31.666406],[-70.450146,-31.841895],[-70.393848,-31.883789],[-70.330957,-31.881055],[-70.281738,-31.916602],[-70.254395,-31.957715],[-70.290918,-32.031055],[-70.355566,-32.042383],[-70.36377,-32.083496],[-70.344629,-32.176465],[-70.32002,-32.266699],[-70.257812,-32.309961],[-70.229785,-32.430664],[-70.169629,-32.47168],[-70.176953,-32.626074],[-70.116162,-32.807422],[-70.052051,-32.859961],[-70.021973,-32.88457],[-70.042139,-32.963672],[-70.093066,-33.026758],[-70.104004,-33.12793],[-70.084863,-33.201758],[-70.019824,-33.271484],[-69.969043,-33.279395],[-69.896191,-33.250977],[-69.819629,-33.283789],[-69.808691,-33.343945],[-69.797754,-33.398633],[-69.83877,-33.469727],[-69.882568,-33.600977],[-69.894336,-33.731348],[-69.881494,-33.929785],[-69.861523,-34.083594],[-69.857373,-34.180469],[-69.852441,-34.224316],[-69.879785,-34.254395],[-69.946338,-34.269922],[-70.002832,-34.27627],[-70.052051,-34.300781],[-70.062988,-34.35],[-70.101465,-34.432031],[-70.14126,-34.492871],[-70.210693,-34.58125],[-70.254687,-34.672656],[-70.289941,-34.732813],[-70.286768,-34.774512],[-70.312109,-34.85498],[-70.338135,-34.921777],[-70.393164,-35.146875],[-70.466602,-35.193652],[-70.525098,-35.216797],[-70.555176,-35.246875],[-70.532324,-35.30791],[-70.47041,-35.326172],[-70.448535,-35.375391],[-70.456738,-35.451953],[-70.415723,-35.523047],[-70.419727,-35.60918],[-70.380176,-35.771875],[-70.415723,-35.878516],[-70.403662,-35.970508],[-70.404785,-36.061719],[-70.456738,-36.132715],[-70.563379,-36.146387],[-70.621875,-36.211914],[-70.721924,-36.283203],[-70.732861,-36.340625],[-70.749268,-36.392578],[-70.790283,-36.411719],[-70.853174,-36.411719],[-70.905127,-36.419922],[-70.97793,-36.487305],[-71.055518,-36.52373],[-71.073242,-36.578027],[-71.066406,-36.644043],[-71.107422,-36.685059],[-71.159375,-36.761621],[-71.192187,-36.843652],[-71.159375,-36.920215],[-71.123828,-37.056934],[-71.118408,-37.114355],[-71.163477,-37.227441],[-71.200391,-37.300293],[-71.164893,-37.393262],[-71.134814,-37.445117],[-71.162842,-37.55918],[-71.186719,-37.631055],[-71.167578,-37.762305],[-71.096191,-37.909961],[-71.028174,-38.041211],[-71.018164,-38.193945],[-71.000488,-38.314844],[-70.967969,-38.445898],[-70.899658,-38.497852],[-70.847656,-38.541602],[-70.858643,-38.604492],[-70.896924,-38.681055],[-70.951611,-38.738477],[-71.087109,-38.75752],[-71.197266,-38.809375],[-71.285742,-38.84541],[-71.353174,-38.888867],[-71.401562,-38.935059],[-71.425586,-38.985645],[-71.409375,-39.205957],[-71.42002,-39.287207],[-71.465381,-39.402344],[-71.507764,-39.495215],[-71.525781,-39.523145],[-71.53125,-39.56416],[-71.539453,-39.602441],[-71.587012,-39.611133],[-71.654297,-39.594238],[-71.692578,-39.605176],[-71.719922,-39.635254],[-71.696826,-39.707031],[-71.67207,-39.833301],[-71.637891,-39.886816],[-71.647119,-39.929199],[-71.659766,-40.020801],[-71.704395,-40.094922],[-71.763672,-40.094629],[-71.801953,-40.124707],[-71.818311,-40.17666],[-71.800586,-40.244336],[-71.722656,-40.299707],[-71.695312,-40.335254],[-71.708984,-40.381738],[-71.769141,-40.400879],[-71.804639,-40.43916],[-71.838525,-40.524414],[-71.883789,-40.620605],[-71.932129,-40.691699],[-71.941357,-40.78916],[-71.873047,-40.892969],[-71.880713,-40.994629],[-71.885596,-41.292383],[-71.892187,-41.393359],[-71.871143,-41.560547],[-71.897607,-41.606641],[-71.911279,-41.650391],[-71.844482,-41.771973],[-71.77002,-41.968555],[-71.75,-42.046777],[-71.760937,-42.101465],[-71.860791,-42.147852],[-71.944092,-42.16709],[-71.993311,-42.134277],[-72.026123,-42.147949],[-72.064404,-42.205371],[-72.108203,-42.251855],[-72.124609,-42.29834],[-72.078125,-42.358496],[-72.053467,-42.473242],[-72.10542,-42.522461],[-72.143701,-42.577148],[-72.130029,-42.648242],[-72.113623,-42.776758],[-72.146436,-42.990039],[-72.102393,-43.065625],[-72.054688,-43.101953],[-71.898584,-43.145313],[-71.781494,-43.166797],[-71.750635,-43.237305],[-71.763867,-43.294629],[-71.820215,-43.322949],[-71.90498,-43.347559],[-71.90498,-43.440137],[-71.832422,-43.527148],[-71.750635,-43.590137],[-71.732764,-43.646777],[-71.737402,-43.704688],[-71.794727,-43.753223],[-71.715967,-43.858398],[-71.680078,-43.92959],[-71.716162,-43.984473],[-71.767187,-44.066699],[-71.812354,-44.106055],[-71.812109,-44.150781],[-71.830762,-44.241406],[-71.835059,-44.330176],[-71.82002,-44.383105],[-71.325732,-44.424902],[-71.212598,-44.441211],[-71.150879,-44.494043],[-71.159717,-44.560254],[-71.221484,-44.630762],[-71.261133,-44.763086],[-71.358154,-44.785156],[-71.455176,-44.749805],[-71.5604,-44.762012],[-71.65166,-44.77041],[-71.782812,-44.774414],[-71.957031,-44.791504],[-72.063721,-44.771875],[-72.07251,-44.82041],[-72.041699,-44.904199],[-71.812354,-44.930664],[-71.596289,-44.979199],[-71.531299,-45.067871],[-71.443457,-45.168262],[-71.35376,-45.230469],[-71.349316,-45.331934],[-71.49043,-45.437695],[-71.508105,-45.512695],[-71.693311,-45.534766],[-71.746191,-45.578906],[-71.772656,-45.724414],[-71.750635,-45.839063],[-71.680078,-45.878711],[-71.631543,-45.953711],[-71.684473,-46.041895],[-71.809277,-46.102734],[-71.875684,-46.160547],[-71.834131,-46.206738],[-71.777637,-46.27998],[-71.762109,-46.319824],[-71.731299,-46.427832],[-71.695215,-46.578418],[-71.699658,-46.651367],[-71.732715,-46.705859],[-71.856445,-46.791602],[-71.940234,-46.83125],[-71.956641,-46.936816],[-71.962988,-47.016016],[-71.954248,-47.0875],[-71.900537,-47.144336],[-71.90498,-47.20166],[-71.978516,-47.213867],[-72.041699,-47.241406],[-72.103418,-47.342773],[-72.28291,-47.446289],[-72.345947,-47.492676],[-72.341504,-47.57207],[-72.412598,-47.685547],[-72.472217,-47.78418],[-72.51792,-47.876367],[-72.509082,-47.97334],[-72.40791,-48.015918],[-72.32832,-48.110059],[-72.293018,-48.229102],[-72.354736,-48.36582],[-72.498145,-48.417383],[-72.582861,-48.475391],[-72.608398,-48.519336],[-72.585938,-48.6625],[-72.591748,-48.729688],[-72.614404,-48.792871],[-72.65127,-48.841602],[-72.728467,-48.896289],[-72.86543,-48.943945],[-72.981738,-48.976758],[-73.033643,-49.014355],[-73.09458,-49.096875],[-73.148877,-49.187988],[-73.135254,-49.300684],[-73.461572,-49.313867],[-73.483643,-49.397656],[-73.554199,-49.463867],[-73.57627,-49.58291],[-73.504541,-49.698047],[-73.47041,-49.794531],[-73.528906,-49.910938],[-73.507715,-50.030273],[-73.50127,-50.125293],[-73.386621,-50.231152],[-73.311719,-50.361914],[-73.27417,-50.472559],[-73.251611,-50.558496],[-73.221631,-50.610742],[-73.174512,-50.67002],[-73.15293,-50.738281],[-73.082373,-50.760352],[-72.955566,-50.696484],[-72.865918,-50.653125],[-72.803613,-50.637695],[-72.62041,-50.647656],[-72.509814,-50.60752],[-72.460156,-50.611719],[-72.392578,-50.634277],[-72.340234,-50.681836],[-72.300635,-50.789551],[-72.276318,-50.910254],[-72.307373,-51.033398],[-72.35918,-51.060156],[-72.376807,-51.09541],[-72.35918,-51.17041],[-72.301855,-51.22334],[-72.303223,-51.298926],[-72.366406,-51.470313],[-72.407666,-51.54082],[-72.334521,-51.620313],[-72.268994,-51.691113],[-72.136963,-51.744043],[-72.028418,-51.818652],[-71.953467,-51.880371],[-71.971094,-51.96416],[-71.918652,-51.989551],[-71.716602,-51.991309],[-71.414746,-51.993945],[-70.943164,-51.998145],[-70.482861,-52.002246],[-69.960254,-52.008203],[-69.712598,-52.075391],[-69.488428,-52.136133],[-69.206201,-52.136133],[-68.924561,-52.208105],[-68.715186,-52.255469],[-68.589795,-52.27334],[-68.460986,-52.29043],[-68.443359,-52.356641],[-69.007227,-52.262695],[-69.133789,-52.211426],[-69.241016,-52.205469],[-69.446875,-52.269434],[-69.560596,-52.421582],[-69.620312,-52.464746],[-69.76333,-52.505566],[-69.907227,-52.513574],[-70.390967,-52.66084],[-70.562939,-52.673438],[-70.680322,-52.7125],[-70.795117,-52.76875],[-70.839062,-52.889551],[-70.821191,-52.963086],[-70.952051,-53.226953],[-70.984326,-53.373633],[-70.985107,-53.44834],[-70.947803,-53.57041],[-70.99585,-53.779297],[-71.082812,-53.825],[-71.297754,-53.883398],[-71.443896,-53.840918],[-71.693799,-53.803125],[-71.871875,-53.722656],[-72.100928,-53.66582],[-72.174414,-53.632324],[-72.376807,-53.471191],[-72.398242,-53.417773],[-72.412891,-53.350195],[-72.306055,-53.253711],[-72.248633,-53.24668],[-72.081152,-53.249609],[-71.941699,-53.234082],[-71.852734,-53.285742],[-71.828223,-53.39834],[-71.867334,-53.458398],[-71.902783,-53.495508],[-71.891699,-53.523535],[-71.791455,-53.48457],[-71.740527,-53.232617],[-71.400342,-53.107031],[-71.288965,-53.033691],[-71.180225,-52.920508],[-71.163281,-52.888086],[-71.155078,-52.845605],[-71.227148,-52.810645],[-71.387744,-52.764258],[-71.897998,-53.001758],[-72.129102,-53.064355],[-72.278027,-53.132324],[-72.458301,-53.254492],[-72.492578,-53.290625],[-72.530811,-53.37168],[-72.548926,-53.460742],[-72.726807,-53.42002],[-72.998389,-53.290723],[-73.052734,-53.243457],[-72.998242,-53.177246],[-72.915527,-53.121973],[-72.909912,-52.936523],[-72.88916,-52.871582],[-72.831885,-52.819531],[-72.727686,-52.762305],[-72.675977,-52.749023],[-72.63208,-52.773828],[-72.626611,-52.817578],[-72.453467,-52.814453],[-72.117578,-52.65],[-71.979297,-52.646094],[-71.79707,-52.682813],[-71.591211,-52.660742],[-71.55415,-52.643945],[-71.511279,-52.605371],[-71.664746,-52.560059],[-71.811914,-52.537012],[-72.225684,-52.520996],[-72.315381,-52.538574],[-72.437695,-52.625781],[-72.478271,-52.604004],[-72.504395,-52.560059],[-72.644824,-52.529102],[-72.712109,-52.535547],[-72.776562,-52.577441],[-72.766016,-52.642578],[-72.801904,-52.712402],[-72.931885,-52.781641],[-73.020264,-52.891797],[-73.016113,-52.977441],[-73.022998,-53.02207],[-73.055469,-53.045605],[-73.122461,-53.073926],[-73.338184,-53.054688],[-73.459863,-52.964844],[-73.50752,-52.903516],[-73.645215,-52.837012],[-73.345947,-52.754297],[-73.24082,-52.707129],[-73.144824,-52.601953],[-73.073193,-52.535059],[-73.123926,-52.487988],[-73.183789,-52.487891],[-73.178174,-52.562695],[-73.244141,-52.624023],[-73.382129,-52.595117],[-73.585693,-52.685742],[-73.71084,-52.661523],[-73.914697,-52.688184],[-74.014453,-52.639355],[-74.03584,-52.577246],[-73.999902,-52.512598],[-74.037354,-52.40293],[-74.093506,-52.37627],[-74.15083,-52.38252],[-74.176562,-52.317188],[-74.238477,-52.202344],[-74.265967,-52.171289],[-74.295654,-52.117871],[-74.264941,-52.104883],[-74.194922,-52.120215],[-74.133545,-52.154785],[-74.040234,-52.15918],[-73.834473,-52.233984],[-73.749121,-52.216016],[-73.702783,-52.198828],[-73.6854,-52.136719],[-73.684326,-52.077734],[-73.649023,-52.077734],[-73.532227,-52.153125],[-73.457959,-52.145996],[-73.326758,-52.165918],[-73.260449,-52.157813],[-73.137354,-52.129688],[-72.943701,-52.046875],[-72.843213,-51.961133],[-72.79502,-51.949512],[-72.7354,-51.960547],[-72.695459,-51.985156],[-72.694824,-52.044727],[-72.649561,-52.099902],[-72.587988,-52.145117],[-72.57085,-52.200098],[-72.583447,-52.254199],[-72.693604,-52.330273],[-72.714014,-52.356738],[-72.677051,-52.384668],[-72.631494,-52.371582],[-72.568701,-52.333984],[-72.53291,-52.282324],[-72.52334,-52.255469],[-72.519336,-52.21709],[-72.524121,-52.170312],[-72.613574,-52.037012],[-72.624756,-52.006934],[-72.624609,-51.946484],[-72.522852,-51.890918],[-72.494141,-51.847559],[-72.489648,-51.763672],[-72.542529,-51.706152],[-72.76123,-51.573242],[-73.126758,-51.439941],[-73.16875,-51.453906],[-73.197021,-51.478027],[-73.163379,-51.495605],[-73.11499,-51.504492],[-72.789355,-51.614258],[-72.70459,-51.67793],[-72.649072,-51.69502],[-72.583301,-51.737305],[-72.600049,-51.799121],[-72.928369,-51.859863],[-73.188672,-51.990625],[-73.383252,-52.07002],[-73.518164,-52.041016],[-73.582324,-51.960352],[-73.650293,-51.85625],[-73.752637,-51.795508],[-73.810645,-51.801172],[-73.857568,-51.789941],[-73.894434,-51.757812],[-73.973242,-51.784473],[-74.146436,-51.712109],[-74.19668,-51.680566],[-74.06958,-51.578711],[-73.929785,-51.617871],[-73.895898,-51.331445],[-73.939502,-51.266309],[-74.12124,-51.19541],[-74.210498,-51.20459],[-74.332324,-51.19502],[-74.414355,-51.1625],[-74.507861,-51.149609],[-74.586865,-51.130664],[-74.690088,-51.086523],[-74.814746,-51.062891],[-74.983105,-50.881055],[-75.055322,-50.785547],[-75.094678,-50.68125],[-74.836621,-50.678906],[-74.685742,-50.662012],[-74.648926,-50.618457],[-74.702051,-50.535352],[-74.775879,-50.469922],[-74.72168,-50.408496],[-74.644482,-50.360938],[-74.564111,-50.382031],[-74.365576,-50.487891],[-74.331445,-50.55957],[-74.190186,-50.778027],[-74.156104,-50.797461],[-74.139404,-50.817773],[-73.847461,-50.940039],[-73.806543,-50.938379],[-73.824609,-50.83584],[-73.740576,-50.69668],[-73.659033,-50.650684],[-73.618164,-50.651172],[-73.613965,-50.62793],[-73.693262,-50.57002],[-73.654443,-50.492676],[-73.679932,-50.490234],[-73.750195,-50.539844],[-73.891504,-50.782715],[-73.978027,-50.827051],[-74.096729,-50.71709],[-74.164111,-50.637891],[-74.197217,-50.609766],[-74.185596,-50.485352],[-73.950342,-50.510547],[-74.031055,-50.469824],[-74.305566,-50.398047],[-74.374121,-50.362988],[-74.425098,-50.350195],[-74.516406,-50.265625],[-74.62959,-50.194043],[-74.434326,-50.065234],[-74.33374,-49.974609],[-74.019434,-50.022754],[-73.958594,-49.994727],[-74.01123,-49.928516],[-74.073291,-49.948535],[-74.171338,-49.907324],[-74.323926,-49.783398],[-74.31875,-49.720117],[-74.29082,-49.604102],[-74.230371,-49.579297],[-74.102002,-49.555371],[-73.955518,-49.593066],[-73.891553,-49.62373],[-73.836377,-49.609375],[-73.89248,-49.523438],[-73.988037,-49.490918],[-74.094434,-49.429688],[-74.083496,-49.361816],[-74.049219,-49.305664],[-74.023438,-49.244141],[-74.005615,-49.158008],[-74.015381,-49.090918],[-73.984766,-49.059961],[-73.937891,-49.046094],[-73.934961,-49.020898],[-74.027734,-49.026172],[-74.061328,-49.111035],[-74.073877,-49.188379],[-74.139795,-49.250488],[-74.167871,-49.320508],[-74.18457,-49.404395],[-74.221289,-49.500586],[-74.301514,-49.463965],[-74.348535,-49.42627],[-74.366553,-49.400488],[-74.358154,-49.351367],[-74.37998,-49.047852],[-74.382129,-48.793652],[-74.341016,-48.595703],[-74.227686,-48.516992],[-74.176221,-48.494141],[-74.129297,-48.504199],[-74.056934,-48.503613],[-74.009082,-48.475],[-74.171533,-48.427441],[-74.270068,-48.45459],[-74.342969,-48.492578],[-74.474414,-48.463965],[-74.499414,-48.362305],[-74.577197,-48.274414],[-74.590723,-48.161914],[-74.584668,-47.999023],[-74.400488,-48.013086],[-74.250439,-48.044922],[-73.853809,-48.042188],[-73.528174,-48.198242],[-73.384473,-48.177344],[-73.391064,-48.145898],[-73.500977,-48.106641],[-73.56958,-48.019336],[-73.609912,-47.993945],[-73.628906,-47.941504],[-73.635107,-47.880371],[-73.715869,-47.655469],[-73.748242,-47.661328],[-73.779248,-47.738477],[-73.84668,-47.866992],[-73.940869,-47.929395],[-74.084766,-47.954688],[-74.227051,-47.968945],[-74.350586,-47.944336],[-74.379346,-47.891211],[-74.376221,-47.829688],[-74.429688,-47.799609],[-74.569238,-47.772949],[-74.608887,-47.758008],[-74.654932,-47.702246],[-74.588428,-47.617969],[-74.533789,-47.567676],[-74.466895,-47.577637],[-74.403564,-47.600391],[-74.322559,-47.666699],[-74.242969,-47.679297],[-74.151953,-47.62666],[-74.134082,-47.59082],[-74.191016,-47.568359],[-74.24292,-47.559668],[-74.323682,-47.531445],[-74.482666,-47.430469],[-74.403271,-47.327539],[-74.215674,-47.20957],[-74.158398,-47.18252],[-74.208057,-47.083105],[-74.151904,-46.974414],[-74.209473,-46.884766],[-74.313574,-46.788184],[-74.454199,-46.766797],[-74.484424,-46.79502],[-74.489355,-46.83457],[-74.466992,-46.864355],[-74.480176,-46.88584],[-74.512256,-46.885156],[-74.69082,-46.863965],[-74.810645,-46.799707],[-75.005957,-46.741113],[-75.031445,-46.695312],[-75.052539,-46.628027],[-74.98418,-46.512109],[-75.01875,-46.510547],[-75.145752,-46.600098],[-75.337402,-46.64707],[-75.478418,-46.662402],[-75.540332,-46.69873],[-75.565088,-46.728711],[-75.527588,-46.746387],[-75.445996,-46.750781],[-75.386426,-46.862695],[-75.401221,-46.905664],[-75.430371,-46.93457],[-75.496631,-46.940137],[-75.635254,-46.862793],[-75.708105,-46.775],[-75.706396,-46.705273],[-75.656787,-46.610352],[-75.436914,-46.483008],[-75.376025,-46.429102],[-75.247021,-46.369336],[-75.074854,-46.23457],[-74.924463,-46.159668],[-74.997656,-46.097656],[-75.074512,-46.004492],[-75.066699,-45.874902],[-74.763135,-45.823633],[-74.630664,-45.844727],[-74.462793,-45.840723],[-74.369141,-45.809668],[-74.301172,-45.803027],[-74.157861,-45.767188],[-74.096191,-45.716797],[-74.081836,-45.67832],[-74.08252,-45.644727],[-74.099268,-45.603418],[-74.122705,-45.496191],[-74.098926,-45.460352],[-74.037549,-45.417676],[-73.957178,-45.404395],[-73.920312,-45.407715],[-73.825,-45.446875],[-73.844141,-45.502441],[-73.882324,-45.569336],[-73.960254,-45.835254],[-73.999512,-45.895313],[-74.061035,-45.947363],[-74.019922,-46.055859],[-74.081543,-46.131836],[-74.356787,-46.212695],[-74.392969,-46.217383],[-74.372461,-46.246289],[-74.213135,-46.239453],[-74.089746,-46.222363],[-73.967578,-46.154102],[-73.929199,-46.049902],[-73.878711,-45.846875],[-73.812549,-45.818164],[-73.735254,-45.811719],[-73.694873,-45.85957],[-73.70791,-45.966699],[-73.708154,-46.070312],[-73.810645,-46.377344],[-73.934814,-46.500684],[-73.948633,-46.533105],[-73.94375,-46.571582],[-73.845361,-46.566016],[-73.770264,-46.499805],[-73.716211,-46.415234],[-73.662061,-46.297461],[-73.668213,-46.212109],[-73.65166,-46.159277],[-73.629443,-45.986523],[-73.591846,-45.899121],[-73.594336,-45.776855],[-73.661963,-45.730762],[-73.756592,-45.702832],[-73.780371,-45.62793],[-73.730762,-45.47998],[-73.549902,-45.483789],[-73.378564,-45.382812],[-73.266211,-45.346191],[-73.202344,-45.353809],[-72.978174,-45.451172],[-72.933838,-45.452344],[-72.94082,-45.417285],[-72.975537,-45.392578],[-73.063867,-45.359766],[-73.226367,-45.255176],[-73.444971,-45.238184],[-73.404883,-45.102344],[-73.362451,-44.978223],[-73.256445,-44.961035],[-73.078418,-44.920215],[-72.738965,-44.73418],[-72.680078,-44.593945],[-72.663867,-44.436426],[-72.827539,-44.39541],[-73.001025,-44.292383],[-73.140967,-44.2375],[-73.265088,-44.168652],[-73.240723,-44.065723],[-73.224463,-43.897949],[-73.068799,-43.862012],[-72.996582,-43.631543],[-73.100977,-43.455176],[-73.075977,-43.323633],[-72.93999,-43.211328],[-72.915479,-43.133594],[-72.878027,-43.048145],[-72.758008,-43.039453],[-72.755371,-42.992969],[-72.766016,-42.908203],[-72.844971,-42.808008],[-72.848047,-42.669141],[-72.773926,-42.505176],[-72.654834,-42.516602],[-72.631836,-42.509668],[-72.716309,-42.410449],[-72.785156,-42.30127],[-72.773242,-42.257715],[-72.707373,-42.220508],[-72.631055,-42.199805],[-72.548437,-42.255762],[-72.430273,-42.433887],[-72.412354,-42.388184],[-72.460107,-42.206641],[-72.499414,-41.980859],[-72.623975,-42.010547],[-72.738184,-41.994629],[-72.781201,-41.95957],[-72.824072,-41.908789],[-72.783838,-41.846777],[-72.743701,-41.800586],[-72.659863,-41.74248],[-72.486035,-41.72207],[-72.3604,-41.649121],[-72.318262,-41.499023],[-72.359473,-41.513867],[-72.427734,-41.645898],[-72.542383,-41.690625],[-72.60083,-41.684082],[-72.669775,-41.659375],[-72.805127,-41.544336],[-72.87998,-41.517578],[-72.952832,-41.514746],[-73.01499,-41.543848],[-73.174072,-41.746582],[-73.241797,-41.780859],[-73.521289,-41.79707],[-73.624023,-41.773633],[-73.735156,-41.74248],[-73.721875,-41.69248],[-73.688086,-41.639258],[-73.625049,-41.611914],[-73.623926,-41.581348],[-73.710645,-41.573633],[-73.810742,-41.51748],[-73.855029,-41.446387],[-73.876172,-41.319336],[-73.965869,-41.118262],[-73.983594,-40.974316],[-73.920312,-40.871582],[-73.784033,-40.468457],[-73.74248,-40.262988],[-73.669434,-40.082324],[-73.670996,-39.963184],[-73.482227,-39.854297],[-73.4104,-39.78916],[-73.249902,-39.422363],[-73.226465,-39.224414],[-73.480762,-38.624023],[-73.520215,-38.509375],[-73.532568,-38.366797],[-73.471875,-38.130078],[-73.464795,-38.040332],[-73.516748,-37.910547],[-73.661816,-37.698535],[-73.6646,-37.59043],[-73.603418,-37.479102],[-73.662402,-37.341016],[-73.633643,-37.255469],[-73.60166,-37.188477],[-73.374561,-37.224316],[-73.271094,-37.207422],[-73.215967,-37.166895],[-73.172852,-37.053516],[-73.15127,-36.876172],[-73.137793,-36.799902],[-73.118066,-36.688379],[-73.006592,-36.643457],[-72.967822,-36.537793],[-72.874561,-36.39043],[-72.778418,-35.978516],[-72.683398,-35.876953],[-72.587354,-35.759668],[-72.623926,-35.585742],[-72.562061,-35.505371],[-72.505176,-35.446973],[-72.45498,-35.34082],[-72.386719,-35.24043],[-72.223779,-35.096191],[-72.182422,-34.920215],[-72.055957,-34.61582],[-72.030762,-34.420508],[-71.991504,-34.288477],[-72.002832,-34.165332],[-71.926855,-34.015625],[-71.853955,-33.889551],[-71.830957,-33.819531],[-71.664355,-33.652637],[-71.636279,-33.519238],[-71.695508,-33.429004],[-71.696582,-33.289062],[-71.742969,-33.095117],[-71.635547,-33.022559],[-71.592041,-32.969531],[-71.452246,-32.65957],[-71.461426,-32.537891],[-71.421289,-32.386816],[-71.513037,-32.20791],[-71.525879,-31.805859],[-71.577295,-31.496387],[-71.661963,-31.169531],[-71.653906,-30.986621],[-71.705664,-30.759277],[-71.708936,-30.628027],[-71.669482,-30.330371],[-71.400391,-30.142969],[-71.348047,-29.933203],[-71.315723,-29.649707],[-71.326709,-29.443164],[-71.353271,-29.350391],[-71.48584,-29.198242],[-71.519238,-28.926465],[-71.493604,-28.855273],[-71.384082,-28.778711],[-71.306738,-28.672461],[-71.266846,-28.50752],[-71.186426,-28.377832],[-71.154492,-28.064063],[-71.086523,-27.814453],[-71.052637,-27.727344],[-70.945801,-27.617871],[-70.925781,-27.588672],[-70.909277,-27.505176],[-70.914258,-27.30791],[-70.8979,-27.1875],[-70.812744,-26.950586],[-70.80293,-26.840918],[-70.708398,-26.596973],[-70.686963,-26.421777],[-70.646582,-26.329395],[-70.662256,-26.225391],[-70.635449,-25.992676],[-70.699609,-25.861133],[-70.713721,-25.78418],[-70.633008,-25.545605],[-70.578125,-25.4875],[-70.489502,-25.376465],[-70.452197,-25.251855],[-70.445361,-25.172656],[-70.558643,-24.778516],[-70.574121,-24.644336],[-70.546436,-24.331641],[-70.507422,-24.129688],[-70.520068,-23.968555],[-70.507422,-23.885742],[-70.487793,-23.781738],[-70.409961,-23.655566],[-70.392334,-23.565918],[-70.419629,-23.528516],[-70.511963,-23.482813],[-70.588135,-23.368359],[-70.593359,-23.255469],[-70.568848,-23.17334],[-70.563184,-23.057031],[-70.449658,-23.03418],[-70.38916,-22.969629],[-70.331689,-22.848633],[-70.259521,-22.556055],[-70.228516,-22.193164],[-70.185449,-21.974609],[-70.155078,-21.866602],[-70.12959,-21.64082],[-70.087549,-21.493066],[-70.080029,-21.356836],[-70.088379,-21.253223],[-70.197021,-20.725391],[-70.193652,-20.531445],[-70.147461,-20.229785],[-70.148145,-19.805078],[-70.157422,-19.705859],[-70.19834,-19.612988],[-70.2104,-19.486914],[-70.275781,-19.267578],[-70.334863,-18.827539],[-70.336084,-18.595215],[-70.361621,-18.398047],[-70.418262,-18.345605]]],[[[-68.629932,-52.652637],[-68.631689,-52.949512],[-68.633447,-53.241895],[-68.635059,-53.51543],[-68.63667,-53.788867],[-68.638232,-54.05293],[-68.639795,-54.324023],[-68.64751,-54.627832],[-68.653223,-54.853613],[-68.803857,-54.853613],[-68.843555,-54.876758],[-69.081641,-54.909863],[-69.486279,-54.858887],[-69.587549,-54.812793],[-69.723437,-54.712109],[-69.771826,-54.73916],[-69.899463,-54.781836],[-70.030518,-54.815527],[-70.138086,-54.819238],[-70.237793,-54.777539],[-70.259082,-54.756348],[-70.281738,-54.751758],[-70.497168,-54.80957],[-70.735156,-54.750586],[-70.924707,-54.714355],[-71.229248,-54.694141],[-71.440918,-54.619629],[-71.831543,-54.626172],[-71.901562,-54.601562],[-71.927734,-54.528711],[-71.906982,-54.494824],[-71.823437,-54.474414],[-71.800146,-54.433984],[-71.71582,-54.443652],[-71.606299,-54.497168],[-71.572754,-54.495313],[-71.500391,-54.444922],[-71.393408,-54.400195],[-71.355225,-54.39541],[-71.158838,-54.450586],[-71.079932,-54.444238],[-70.966455,-54.419531],[-70.946191,-54.398047],[-70.928174,-54.360059],[-70.898242,-54.337891],[-70.797266,-54.327246],[-70.698828,-54.348828],[-70.687549,-54.414746],[-70.701123,-54.485449],[-70.572998,-54.504395],[-70.41792,-54.502246],[-70.310986,-54.528516],[-70.297656,-54.485547],[-70.468311,-54.373242],[-70.53999,-54.303418],[-70.636133,-54.262305],[-70.759863,-54.241309],[-70.863086,-54.110449],[-70.856738,-53.995801],[-70.867725,-53.88418],[-70.644482,-53.822852],[-70.695605,-53.727441],[-70.61875,-53.655078],[-70.531299,-53.627344],[-70.443164,-53.893457],[-70.379736,-53.986719],[-70.460547,-54.005664],[-70.629834,-54.005566],[-70.535303,-54.136133],[-70.37998,-54.180664],[-70.246094,-54.277441],[-70.243359,-54.347656],[-70.168994,-54.379297],[-69.990137,-54.381348],[-69.866992,-54.36748],[-69.809082,-54.320801],[-69.741846,-54.305859],[-69.62168,-54.364063],[-69.419287,-54.407129],[-69.364795,-54.437598],[-69.325098,-54.488184],[-69.322461,-54.542676],[-69.312061,-54.571484],[-69.253174,-54.557422],[-69.169189,-54.483301],[-69.127881,-54.457617],[-69.077246,-54.44502],[-69.045215,-54.428418],[-69.044336,-54.406738],[-69.195654,-54.354395],[-69.988135,-54.109082],[-70.085596,-54.011133],[-70.151123,-53.888086],[-70.148828,-53.761133],[-70.091113,-53.721777],[-69.949707,-53.671582],[-69.689746,-53.600879],[-69.389941,-53.499414],[-69.352441,-53.47998],[-69.355957,-53.416309],[-69.393555,-53.373437],[-69.512549,-53.341992],[-69.637012,-53.334082],[-69.755615,-53.337207],[-69.874121,-53.350488],[-70.090381,-53.418164],[-70.212842,-53.413965],[-70.329297,-53.377637],[-70.415674,-53.304785],[-70.460254,-53.20625],[-70.459961,-53.143359],[-70.443359,-53.085547],[-70.390674,-53.026465],[-70.32002,-53.000684],[-70.256348,-53.004102],[-70.196484,-52.990234],[-70.160889,-52.969922],[-70.130615,-52.942773],[-70.139551,-52.919336],[-70.162744,-52.899023],[-70.25918,-52.857227],[-70.297363,-52.816992],[-70.380127,-52.751953],[-70.334912,-52.733789],[-70.189648,-52.723633],[-70.088232,-52.768555],[-69.993555,-52.821289],[-69.935449,-52.821094],[-69.883203,-52.799023],[-69.763574,-52.731348],[-69.663281,-52.646289],[-69.571875,-52.549316],[-69.498389,-52.491406],[-69.414062,-52.48623],[-69.167041,-52.667578],[-69.079932,-52.674316],[-68.789795,-52.576758],[-68.75752,-52.582031],[-68.659229,-52.631543],[-68.629932,-52.652637]]],[[[-67.079932,-55.153809],[-67.109473,-55.19209],[-67.172559,-55.242578],[-67.257422,-55.281836],[-67.339697,-55.292578],[-67.399268,-55.272266],[-67.429395,-55.236523],[-67.443262,-55.201172],[-67.463477,-55.181738],[-67.494727,-55.177441],[-67.535254,-55.178516],[-67.585205,-55.191992],[-67.691455,-55.242969],[-67.736963,-55.256445],[-67.767773,-55.25957],[-68.07002,-55.221094],[-68.099512,-55.206836],[-68.135107,-55.172656],[-68.174316,-55.071289],[-68.301367,-54.980664],[-68.106934,-54.929395],[-67.874121,-54.929688],[-67.424561,-54.968945],[-67.245264,-54.977637],[-67.107324,-55.063574],[-67.085498,-55.115234],[-67.079932,-55.153809]]],[[[-73.773389,-43.345898],[-73.848584,-43.366797],[-73.918701,-43.371973],[-73.989941,-43.356641],[-74.114404,-43.35791],[-74.238574,-43.318848],[-74.354932,-43.263574],[-74.387354,-43.231641],[-74.373145,-43.185742],[-74.289355,-43.079492],[-74.209473,-42.878711],[-74.156299,-42.590527],[-74.198828,-42.481348],[-74.193555,-42.436035],[-74.174072,-42.381543],[-74.164355,-42.325488],[-74.170312,-42.268945],[-74.160205,-42.216406],[-74.072314,-42.105859],[-74.059375,-42.05625],[-74.056836,-42.002344],[-74.018799,-41.890918],[-74.030518,-41.854004],[-74.063037,-41.822754],[-74.03667,-41.795508],[-73.730957,-41.877246],[-73.527832,-41.896289],[-73.516943,-41.980859],[-73.477783,-42.047168],[-73.454492,-42.165918],[-73.4229,-42.192871],[-73.439258,-42.277832],[-73.532812,-42.314453],[-73.524561,-42.392578],[-73.470801,-42.466309],[-73.549268,-42.492578],[-73.633887,-42.508203],[-73.653467,-42.528711],[-73.714746,-42.544727],[-73.789258,-42.585742],[-73.766846,-42.621875],[-73.673047,-42.704395],[-73.568262,-42.761621],[-73.510742,-42.847168],[-73.436328,-42.936523],[-73.472656,-42.993262],[-73.54082,-43.07373],[-73.649609,-43.127148],[-73.749658,-43.159082],[-73.737891,-43.291406],[-73.773389,-43.345898]]],[[[-74.476172,-49.147852],[-74.466797,-49.294531],[-74.483594,-49.441895],[-74.52207,-49.622949],[-74.515771,-49.65957],[-74.47085,-49.668555],[-74.458838,-49.691113],[-74.471973,-49.78623],[-74.496094,-49.859473],[-74.542578,-49.919141],[-74.569824,-49.990723],[-74.594727,-50.006641],[-74.703369,-50.019238],[-74.762988,-50.011426],[-74.81084,-49.929688],[-74.824707,-49.879492],[-74.821924,-49.813867],[-74.88042,-49.725879],[-74.882227,-49.692188],[-74.859326,-49.63418],[-74.812012,-49.605273],[-74.804834,-49.516016],[-74.781006,-49.489258],[-74.727051,-49.452344],[-74.718848,-49.437012],[-74.723828,-49.423828],[-74.743848,-49.422461],[-74.960107,-49.533008],[-74.981299,-49.56416],[-74.99082,-49.605664],[-74.993506,-49.751758],[-75.031543,-49.83623],[-75.066016,-49.852344],[-75.166943,-49.855957],[-75.300098,-49.847461],[-75.451172,-49.769922],[-75.549805,-49.791309],[-75.570117,-49.69707],[-75.520752,-49.62168],[-75.337061,-49.628223],[-75.305859,-49.494043],[-75.364209,-49.4625],[-75.428857,-49.408398],[-75.46748,-49.358887],[-75.433154,-49.32207],[-75.32666,-49.268652],[-75.269629,-49.262891],[-75.216846,-49.292773],[-75.086035,-49.270215],[-75.093701,-49.185352],[-75.210156,-49.148047],[-75.184229,-49.083594],[-75.037109,-49.02207],[-74.949219,-48.960156],[-74.945215,-48.889453],[-74.980762,-48.818848],[-74.969531,-48.791309],[-74.89624,-48.733203],[-74.793457,-48.705078],[-74.74668,-48.708887],[-74.651562,-48.749902],[-74.566602,-48.754785],[-74.546094,-48.766895],[-74.530664,-48.812598],[-74.476172,-49.147852]]],[[[-75.510254,-48.763477],[-75.622852,-48.764648],[-75.650928,-48.586328],[-75.518457,-48.328809],[-75.509033,-48.230664],[-75.553516,-48.156738],[-75.571484,-48.095898],[-75.560693,-48.070898],[-75.391406,-48.019727],[-75.338379,-48.074023],[-75.275488,-48.218457],[-75.155518,-48.425195],[-75.158496,-48.622656],[-75.225098,-48.671387],[-75.433984,-48.721191],[-75.510254,-48.763477]]],[[[-74.385742,-52.922363],[-74.369336,-52.931445],[-74.32998,-52.929297],[-74.274609,-52.945508],[-74.065967,-52.965332],[-73.879199,-53.012207],[-73.781787,-53.056055],[-73.654004,-53.069824],[-73.549268,-53.125684],[-73.504541,-53.140039],[-73.450586,-53.144336],[-73.310352,-53.247656],[-73.30249,-53.259473],[-73.143359,-53.340918],[-73.135205,-53.353906],[-73.225732,-53.358398],[-73.409375,-53.320508],[-73.501025,-53.318457],[-73.567285,-53.306836],[-73.582812,-53.300195],[-73.595947,-53.25293],[-73.61709,-53.229688],[-73.793506,-53.120703],[-73.866943,-53.096875],[-73.993994,-53.075781],[-74.138574,-53.090527],[-74.236377,-53.076465],[-74.270215,-53.081543],[-74.414404,-52.994922],[-74.558301,-52.921875],[-74.619922,-52.834766],[-74.711523,-52.768164],[-74.712012,-52.74873],[-74.669971,-52.733887],[-74.571533,-52.771289],[-74.474561,-52.835645],[-74.422266,-52.860059],[-74.385742,-52.922363]]],[[[-74.567285,-48.591992],[-74.586279,-48.615723],[-74.70957,-48.601172],[-74.923047,-48.626465],[-75.012842,-48.535742],[-75.052148,-48.391406],[-75.078906,-48.361523],[-75.131934,-48.279297],[-75.158496,-48.225293],[-75.212891,-48.141699],[-75.233887,-48.053418],[-75.247266,-48.026758],[-75.198291,-47.974609],[-74.975098,-47.922852],[-74.895654,-47.839355],[-74.827441,-47.850391],[-74.846191,-48.020801],[-74.805225,-48.078223],[-74.729297,-48.125879],[-74.715234,-48.145508],[-74.702393,-48.205859],[-74.664355,-48.299316],[-74.615137,-48.343066],[-74.602441,-48.370313],[-74.600146,-48.393066],[-74.618213,-48.425195],[-74.567285,-48.591992]]],[[[-72.923242,-53.481641],[-72.896289,-53.562793],[-72.882227,-53.57832],[-72.809375,-53.565332],[-72.685498,-53.55791],[-72.482275,-53.588086],[-72.459229,-53.598828],[-72.3729,-53.6875],[-72.306689,-53.725391],[-72.20542,-53.807422],[-72.30625,-53.862109],[-72.365967,-53.94082],[-72.369141,-53.980762],[-72.408545,-54.003809],[-72.470508,-54.027734],[-72.562891,-54.07373],[-72.676562,-54.078906],[-72.788623,-54.103125],[-72.840381,-54.125098],[-72.870996,-54.126563],[-72.907275,-54.114648],[-72.946094,-54.09209],[-72.958594,-54.065918],[-72.881738,-54.041602],[-72.781689,-53.954785],[-72.76377,-53.864844],[-72.871729,-53.848535],[-72.936133,-53.86084],[-72.984229,-53.860547],[-73.039453,-53.832813],[-73.073047,-53.875293],[-73.085547,-53.915918],[-73.07085,-53.978027],[-73.080762,-53.998047],[-73.119971,-54.009375],[-73.210645,-53.98584],[-73.304736,-53.943945],[-73.312158,-53.919629],[-73.292871,-53.83584],[-73.294922,-53.79209],[-73.314355,-53.729199],[-73.324805,-53.722656],[-73.360107,-53.724023],[-73.470947,-53.736133],[-73.581641,-53.655469],[-73.641504,-53.570312],[-73.845459,-53.545801],[-73.686523,-53.426855],[-73.44707,-53.410059],[-73.365869,-53.470215],[-73.099365,-53.511914],[-73.115332,-53.448047],[-73.110889,-53.425195],[-73.074316,-53.396777],[-73.053613,-53.394434],[-73.02207,-53.414551],[-72.970947,-53.423047],[-72.947266,-53.44248],[-72.923242,-53.481641]]],[[[-74.822949,-51.630176],[-74.780127,-51.824707],[-74.749512,-51.851855],[-74.647461,-51.866211],[-74.536816,-51.965137],[-74.531836,-51.991992],[-74.665967,-52.160059],[-74.694482,-52.279199],[-74.851807,-52.270703],[-74.917725,-52.152246],[-75.017139,-52.037891],[-75.050684,-51.903906],[-75.105371,-51.788867],[-75.008105,-51.72373],[-74.915186,-51.738281],[-74.909668,-51.65],[-74.822949,-51.630176]]],[[[-69.702979,-54.919043],[-68.900781,-55.017773],[-68.653516,-54.95791],[-68.458008,-54.959668],[-68.399805,-55.041992],[-68.598096,-55.12832],[-68.613281,-55.155566],[-68.585547,-55.177734],[-68.381738,-55.191602],[-68.330078,-55.219434],[-68.282666,-55.255176],[-68.322754,-55.308203],[-68.326562,-55.332715],[-68.30542,-55.356641],[-68.152588,-55.436914],[-68.089893,-55.47832],[-68.058301,-55.517969],[-68.045557,-55.5875],[-68.04834,-55.643164],[-68.082666,-55.650586],[-68.15708,-55.633691],[-68.229639,-55.601562],[-68.293359,-55.521387],[-68.338037,-55.505273],[-68.466699,-55.489063],[-68.594189,-55.45],[-68.693555,-55.452246],[-68.78501,-55.435645],[-68.867041,-55.450195],[-68.896143,-55.423828],[-68.931299,-55.370605],[-68.93208,-55.347363],[-68.888965,-55.263281],[-68.890088,-55.241211],[-68.912646,-55.238574],[-69.008203,-55.255762],[-69.046826,-55.244336],[-69.150781,-55.183398],[-69.192627,-55.171875],[-69.29707,-55.16582],[-69.356152,-55.273926],[-69.359229,-55.300684],[-69.299023,-55.369336],[-69.180859,-55.474805],[-69.24082,-55.476758],[-69.411816,-55.444238],[-69.455713,-55.424023],[-69.508691,-55.370898],[-69.610254,-55.339941],[-69.645898,-55.320898],[-69.656299,-55.298438],[-69.657373,-55.229004],[-69.679834,-55.218945],[-69.824023,-55.236523],[-69.853711,-55.219824],[-69.865771,-55.190625],[-69.886768,-55.174121],[-69.979785,-55.147461],[-69.987988,-55.130762],[-69.946533,-55.111035],[-69.92085,-55.061133],[-69.884424,-54.882031],[-69.702979,-54.919043]]],[[[-71.390479,-54.032813],[-71.16875,-54.112598],[-71.021924,-54.111816],[-71.022852,-54.161719],[-71.004883,-54.24668],[-71.028027,-54.281152],[-71.082959,-54.316309],[-71.117529,-54.366309],[-71.143262,-54.374023],[-71.304639,-54.313574],[-71.473291,-54.231152],[-71.558105,-54.245605],[-71.670605,-54.225391],[-71.76123,-54.229785],[-71.817578,-54.276465],[-71.948535,-54.300879],[-71.972363,-54.207227],[-72.091553,-54.11875],[-72.210449,-54.047754],[-72.146045,-53.938867],[-72.068945,-53.921289],[-71.996484,-53.884863],[-71.705127,-53.92334],[-71.55415,-53.956055],[-71.390479,-54.032813]]],[[[-73.735352,-44.394531],[-73.78457,-44.4375],[-73.862305,-44.445117],[-73.983301,-44.494824],[-73.996045,-44.537988],[-74.002051,-44.590918],[-73.918555,-44.654687],[-73.877393,-44.728809],[-73.827881,-44.839844],[-73.792139,-44.945801],[-73.795361,-44.978613],[-73.786475,-45.033594],[-73.727148,-45.119043],[-73.72168,-45.157617],[-73.728174,-45.195898],[-73.7521,-45.266797],[-73.770996,-45.276563],[-73.829883,-45.283496],[-73.834473,-45.326562],[-73.848975,-45.340625],[-74.01626,-45.344922],[-74.099072,-45.325391],[-74.089258,-45.195703],[-74.195215,-45.144824],[-74.267969,-45.058984],[-74.349902,-44.91084],[-74.41875,-44.865234],[-74.498828,-44.748145],[-74.617773,-44.647949],[-74.480518,-44.58457],[-74.501807,-44.473535],[-74.42168,-44.435449],[-74.301221,-44.395703],[-74.2125,-44.426953],[-74.132812,-44.415918],[-74.097217,-44.389355],[-74.108105,-44.275879],[-74.082812,-44.186426],[-73.994922,-44.140234],[-73.900195,-44.134863],[-73.864551,-44.185352],[-73.817773,-44.234961],[-73.703223,-44.274121],[-73.703711,-44.325391],[-73.735352,-44.394531]]],[[[-72.986133,-44.780078],[-73.228467,-44.859961],[-73.35,-44.833203],[-73.39707,-44.774316],[-73.420068,-44.724805],[-73.445068,-44.641016],[-73.403662,-44.596094],[-73.314941,-44.531348],[-73.281982,-44.489551],[-73.266016,-44.440234],[-73.271582,-44.394141],[-73.26001,-44.350293],[-73.207715,-44.334961],[-73.028418,-44.384082],[-72.842432,-44.457715],[-72.776367,-44.508594],[-72.764062,-44.549023],[-72.845312,-44.638477],[-72.897168,-44.712012],[-72.986133,-44.780078]]],[[[-75.04248,-44.890137],[-75.06748,-44.906543],[-75.09873,-44.901758],[-75.124219,-44.869922],[-75.142139,-44.815625],[-75.107422,-44.795117],[-75.079492,-44.795117],[-75.048437,-44.823926],[-75.032227,-44.870508],[-75.04248,-44.890137]]],[[[-75.302002,-50.67998],[-75.330469,-50.772363],[-75.411377,-50.764355],[-75.438525,-50.741113],[-75.452637,-50.68252],[-75.477393,-50.654199],[-75.442676,-50.595508],[-75.419775,-50.530371],[-75.427637,-50.480566],[-75.303711,-50.483984],[-75.156152,-50.496777],[-75.115332,-50.510449],[-75.160449,-50.554395],[-75.203418,-50.580664],[-75.292334,-50.596875],[-75.302002,-50.67998]]],[[[-75.106689,-48.836523],[-75.115088,-48.916016],[-75.262695,-49.068945],[-75.389941,-49.15918],[-75.506104,-49.230664],[-75.580371,-49.22998],[-75.641162,-49.19541],[-75.572852,-49.138867],[-75.487646,-49.082422],[-75.514551,-49.00957],[-75.540137,-48.988477],[-75.576172,-48.980762],[-75.637842,-48.942578],[-75.619141,-48.885938],[-75.583105,-48.858887],[-75.535254,-48.838184],[-75.490479,-48.850488],[-75.297266,-48.810645],[-75.236182,-48.778613],[-75.118604,-48.772949],[-75.106689,-48.836523]]],[[[-75.112207,-47.837695],[-75.18584,-47.850684],[-75.194336,-47.818066],[-75.261035,-47.763867],[-75.203125,-47.728027],[-75.089844,-47.690625],[-75.003955,-47.694727],[-74.926465,-47.723145],[-74.916016,-47.756641],[-75.05127,-47.800488],[-75.084473,-47.824512],[-75.112207,-47.837695]]],[[[-74.66875,-43.607812],[-74.810449,-43.625391],[-74.842676,-43.595508],[-74.841992,-43.570312],[-74.817676,-43.549414],[-74.74502,-43.535938],[-74.697461,-43.553027],[-74.672656,-43.577441],[-74.664795,-43.599609],[-74.66875,-43.607812]]],[[[-73.632178,-44.821484],[-73.664844,-44.83291],[-73.69458,-44.831152],[-73.724756,-44.796875],[-73.734863,-44.75166],[-73.800146,-44.684082],[-73.818457,-44.652148],[-73.816992,-44.613965],[-73.779492,-44.55918],[-73.723926,-44.544238],[-73.686475,-44.546289],[-73.641211,-44.61084],[-73.628223,-44.680762],[-73.616602,-44.75293],[-73.632178,-44.821484]]],[[[-74.558643,-51.277051],[-74.560889,-51.36084],[-74.592578,-51.3875],[-74.620361,-51.395703],[-74.690723,-51.370215],[-74.730908,-51.367383],[-74.797363,-51.411719],[-74.85332,-51.43418],[-74.93667,-51.42832],[-75.047363,-51.39834],[-75.146289,-51.524316],[-75.192432,-51.566699],[-75.289111,-51.625391],[-75.300049,-51.556445],[-75.238477,-51.453516],[-75.21001,-51.383301],[-75.153662,-51.278809],[-75.040332,-51.318164],[-74.881445,-51.279492],[-74.73667,-51.207617],[-74.611572,-51.207129],[-74.570508,-51.24541],[-74.558643,-51.277051]]],[[[-75.054785,-50.296094],[-75.250391,-50.37627],[-75.307861,-50.343066],[-75.449121,-50.343359],[-75.412109,-50.256641],[-75.397852,-50.192676],[-75.376709,-50.167969],[-75.368848,-50.112695],[-75.32666,-50.011816],[-75.209668,-50.04541],[-75.122559,-50.055273],[-75.004248,-50.088672],[-74.875977,-50.109961],[-74.838574,-50.197266],[-74.963379,-50.237305],[-75.054785,-50.296094]]],[[[-73.810645,-43.827246],[-73.789648,-43.876465],[-73.833643,-43.883203],[-73.90415,-43.875391],[-73.938281,-43.914258],[-73.955664,-43.921973],[-74.117773,-43.8875],[-74.142969,-43.872168],[-74.139941,-43.820996],[-73.967187,-43.816504],[-73.856934,-43.783789],[-73.841406,-43.788965],[-73.810645,-43.827246]]],[[[-74.142187,-51.931055],[-74.17207,-51.94209],[-74.283105,-51.91875],[-74.338672,-51.897949],[-74.423633,-51.845117],[-74.437109,-51.790625],[-74.475391,-51.725684],[-74.450781,-51.724902],[-74.362109,-51.750684],[-74.325684,-51.770215],[-74.277051,-51.811621],[-74.133398,-51.870898],[-74.11543,-51.888477],[-74.118896,-51.911133],[-74.142187,-51.931055]]],[[[-74.312891,-45.691504],[-74.368457,-45.73584],[-74.465527,-45.757227],[-74.561621,-45.722461],[-74.677734,-45.738574],[-74.689844,-45.662598],[-74.646436,-45.6],[-74.558398,-45.525586],[-74.494678,-45.425879],[-74.502344,-45.285156],[-74.45,-45.25293],[-74.421875,-45.203223],[-74.310547,-45.172656],[-74.2854,-45.277246],[-74.31543,-45.464063],[-74.240039,-45.574512],[-74.229199,-45.611328],[-74.243896,-45.653613],[-74.312891,-45.691504]]],[[[-67.575195,-55.889648],[-67.611426,-55.891699],[-67.699512,-55.873145],[-67.831543,-55.864844],[-67.846436,-55.857227],[-67.849707,-55.842578],[-67.834082,-55.827539],[-67.762061,-55.816113],[-67.544824,-55.825977],[-67.517285,-55.832813],[-67.509814,-55.844336],[-67.545264,-55.877441],[-67.575195,-55.889648]]],[[[-66.472119,-55.229102],[-66.551709,-55.272852],[-66.611133,-55.269922],[-66.630176,-55.254102],[-66.636621,-55.234375],[-66.624756,-55.213086],[-66.599707,-55.193652],[-66.541553,-55.169434],[-66.523145,-55.165527],[-66.435791,-55.189746],[-66.472119,-55.229102]]],[[[-70.991602,-54.867969],[-70.945117,-54.931348],[-70.92793,-54.942969],[-70.804834,-54.967676],[-70.749316,-54.952734],[-70.615283,-54.945605],[-70.534766,-54.921289],[-70.417529,-54.908887],[-70.283057,-55.065918],[-70.297852,-55.11377],[-70.40415,-55.165625],[-70.475586,-55.177051],[-70.543457,-55.161328],[-70.538721,-55.134961],[-70.551074,-55.111914],[-70.597461,-55.082031],[-70.640918,-55.084863],[-70.710986,-55.106934],[-70.744434,-55.104199],[-70.815479,-55.079883],[-70.939844,-55.061914],[-70.964502,-55.039648],[-70.967285,-55.006836],[-70.990723,-54.99043],[-71.120361,-54.937793],[-71.20332,-54.892969],[-71.273633,-54.886914],[-71.299316,-54.892285],[-71.325342,-54.91377],[-71.388574,-54.934277],[-71.406641,-54.930859],[-71.426904,-54.91377],[-71.437207,-54.889258],[-71.410547,-54.839355],[-71.374268,-54.83457],[-71.19707,-54.844434],[-71.088623,-54.86748],[-70.991602,-54.867969]]],[[[-67.288867,-55.776855],[-67.325293,-55.784766],[-67.352246,-55.766016],[-67.393359,-55.752734],[-67.559961,-55.724805],[-67.563477,-55.707813],[-67.546143,-55.683691],[-67.512793,-55.662012],[-67.448828,-55.640625],[-67.397363,-55.585156],[-67.374072,-55.589355],[-67.350586,-55.612109],[-67.310449,-55.688672],[-67.262451,-55.74375],[-67.267285,-55.762793],[-67.288867,-55.776855]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Chad","SOV_A3":"TCD","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Chad","ADM0_A3":"TCD","GEOU_DIF":0,"GEOUNIT":"Chad","GU_A3":"TCD","SU_DIF":0,"SUBUNIT":"Chad","SU_A3":"TCD","BRK_DIFF":0,"NAME":"Chad","NAME_LONG":"Chad","BRK_A3":"TCD","BRK_NAME":"Chad","BRK_GROUP":null,"ABBREV":"Chad","POSTAL":"TD","FORMAL_EN":"Republic of Chad","FORMAL_FR":null,"NAME_CIAWF":"Chad","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Chad","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":1,"MAPCOLOR9":8,"MAPCOLOR13":6,"POP_EST":15946876,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":11314,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"CD","ISO_A2":"TD","ISO_A2_EH":"TD","ISO_A3":"TCD","ISO_A3_EH":"TCD","ISO_N3":"148","ISO_N3_EH":"148","UN_A3":"148","WB_A2":"TD","WB_A3":"TCD","WOE_ID":23424777,"WOE_ID_EH":23424777,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TCD","ADM0_DIFF":null,"ADM0_TLC":"TCD","ADM0_A3_US":"TCD","ADM0_A3_FR":"TCD","ADM0_A3_RU":"TCD","ADM0_A3_ES":"TCD","ADM0_A3_CN":"TCD","ADM0_A3_TW":"TCD","ADM0_A3_IN":"TCD","ADM0_A3_NP":"TCD","ADM0_A3_PK":"TCD","ADM0_A3_DE":"TCD","ADM0_A3_GB":"TCD","ADM0_A3_BR":"TCD","ADM0_A3_IL":"TCD","ADM0_A3_PS":"TCD","ADM0_A3_SA":"TCD","ADM0_A3_EG":"TCD","ADM0_A3_MA":"TCD","ADM0_A3_PT":"TCD","ADM0_A3_AR":"TCD","ADM0_A3_JP":"TCD","ADM0_A3_KO":"TCD","ADM0_A3_VN":"TCD","ADM0_A3_TR":"TCD","ADM0_A3_ID":"TCD","ADM0_A3_PL":"TCD","ADM0_A3_GR":"TCD","ADM0_A3_IT":"TCD","ADM0_A3_NL":"TCD","ADM0_A3_SE":"TCD","ADM0_A3_BD":"TCD","ADM0_A3_UA":"TCD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":4,"LONG_LEN":4,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":18.645041,"LABEL_Y":15.142959,"NE_ID":1159321301,"WIKIDATAID":"Q657","NAME_AR":"تشاد","NAME_BN":"চাদ","NAME_DE":"Tschad","NAME_EN":"Chad","NAME_ES":"Chad","NAME_FA":"چاد","NAME_FR":"Tchad","NAME_EL":"Τσαντ","NAME_HE":"צ'אד","NAME_HI":"चाड","NAME_HU":"Csád","NAME_ID":"Chad","NAME_IT":"Ciad","NAME_JA":"チャド","NAME_KO":"차드","NAME_NL":"Tsjaad","NAME_PL":"Czad","NAME_PT":"Chade","NAME_RU":"Чад","NAME_SV":"Tchad","NAME_TR":"Çad","NAME_UK":"Чад","NAME_UR":"چاڈ","NAME_VI":"Tchad","NAME_ZH":"乍得","NAME_ZHT":"查德","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[13.448242,7.475293,23.983398,23.445215],"geometry":{"type":"Polygon","coordinates":[[[23.980273,19.496631],[23.980664,19.050586],[23.981055,18.604541],[23.981445,18.158496],[23.981836,17.712402],[23.982227,17.266357],[23.98252,16.820264],[23.98291,16.374219],[23.983301,15.928125],[23.983398,15.780176],[23.970801,15.721533],[23.965234,15.713428],[23.945996,15.703516],[23.708203,15.744971],[23.604004,15.745996],[23.458008,15.713965],[23.243457,15.697217],[23.105176,15.702539],[23.00918,15.62583],[22.933887,15.533105],[22.969531,15.311328],[22.961328,15.238135],[22.932324,15.162109],[22.867188,15.096631],[22.802148,15.044434],[22.763281,14.998682],[22.714941,14.898389],[22.679199,14.851465],[22.682422,14.788623],[22.670898,14.722461],[22.631836,14.688086],[22.532031,14.662744],[22.467773,14.63335],[22.416211,14.585205],[22.381543,14.550488],[22.399707,14.504199],[22.425,14.441211],[22.439355,14.342139],[22.449316,14.284229],[22.49834,14.237061],[22.528223,14.203223],[22.538574,14.161865],[22.509961,14.127441],[22.388184,14.055518],[22.339355,14.028857],[22.283496,13.992334],[22.262109,13.978711],[22.173145,13.910596],[22.128223,13.850146],[22.106445,13.799805],[22.107617,13.730322],[22.15293,13.626416],[22.202344,13.538086],[22.221387,13.471631],[22.232617,13.398779],[22.228125,13.32959],[22.202637,13.269336],[22.158008,13.215039],[21.990234,13.113086],[21.907715,13.000977],[21.841797,12.864746],[21.825293,12.790527],[21.843359,12.741211],[21.878125,12.699365],[21.928125,12.678125],[22.000684,12.671875],[22.121191,12.69458],[22.233398,12.709473],[22.352344,12.660449],[22.414453,12.546387],[22.390234,12.462988],[22.435254,12.311914],[22.475488,12.129248],[22.472461,12.067773],[22.489844,12.044727],[22.564355,12.032959],[22.580957,11.990137],[22.556348,11.669531],[22.591113,11.579883],[22.641016,11.515918],[22.697363,11.482666],[22.754004,11.439844],[22.783398,11.409961],[22.849023,11.403271],[22.922656,11.344873],[22.942773,11.267187],[22.937695,11.192041],[22.894824,11.029004],[22.860059,10.919678],[22.817383,10.927197],[22.730176,10.954053],[22.624023,10.977344],[22.493848,10.99624],[22.369824,10.951514],[22.235938,10.894141],[22.193652,10.851367],[22.15625,10.826074],[22.097168,10.830078],[22.043164,10.822705],[22.01377,10.782031],[21.964844,10.73667],[21.771484,10.642822],[21.730664,10.608691],[21.706543,10.574805],[21.706543,10.537891],[21.726172,10.461621],[21.725781,10.366553],[21.682715,10.289844],[21.632715,10.238281],[21.575781,10.218555],[21.528027,10.207812],[21.496875,10.175684],[21.395996,10.001367],[21.352441,9.969141],[21.263867,9.974609],[21.009473,9.713232],[20.98418,9.636279],[20.891016,9.527148],[20.773242,9.405664],[20.668164,9.347119],[20.659668,9.324512],[20.631445,9.301367],[20.566895,9.274951],[20.34209,9.1271],[20.072656,9.133203],[19.953516,9.075146],[19.837695,9.049365],[19.668359,9.020898],[19.61748,9.023584],[19.400293,9.011621],[19.145508,9.015967],[19.047852,8.99502],[18.95625,8.938867],[18.888281,8.889746],[18.87832,8.873193],[18.888574,8.85249],[18.886035,8.836035],[19.06416,8.71543],[19.108691,8.656152],[19.063867,8.598828],[19.042383,8.590283],[19.039844,8.586914],[19.01084,8.541211],[18.906445,8.405078],[18.747461,8.243799],[18.666211,8.197705],[18.633594,8.167725],[18.591602,8.060791],[18.56416,8.045898],[18.455078,8.032031],[18.238867,8.020361],[17.940137,7.985449],[17.76084,7.973828],[17.649414,7.983594],[17.492676,7.909814],[17.436426,7.890918],[17.402148,7.88457],[17.246973,7.812988],[17.117969,7.701904],[17.071973,7.680811],[16.890332,7.633691],[16.818164,7.557324],[16.784766,7.550977],[16.668359,7.651758],[16.588965,7.743359],[16.550195,7.835889],[16.545313,7.865479],[16.523242,7.859961],[16.459375,7.818994],[16.404395,7.772363],[16.378906,7.683545],[16.191113,7.623437],[16.030664,7.572119],[15.957617,7.507568],[15.84502,7.475293],[15.70127,7.488428],[15.589258,7.515039],[15.480078,7.523779],[15.532422,7.604395],[15.552637,7.664502],[15.557813,7.738037],[15.549805,7.787891],[15.484473,7.812744],[15.442969,7.851855],[15.349023,8.083838],[15.252344,8.322363],[15.116211,8.557324],[14.967969,8.707275],[14.860742,8.798633],[14.82627,8.810303],[14.771289,8.83916],[14.732813,8.865674],[14.536133,9.025244],[14.332324,9.203516],[14.280078,9.285059],[14.17793,9.406494],[14.06416,9.531738],[14.00498,9.588721],[13.977246,9.691553],[14.055957,9.784375],[14.139746,9.901807],[14.243262,9.979736],[14.377246,9.985059],[14.597949,9.953076],[14.83584,9.941699],[15.071582,9.965967],[15.132715,9.982861],[15.193164,9.981494],[15.32002,9.954297],[15.540918,9.960303],[15.654883,10.007812],[15.531934,10.088477],[15.399902,10.216895],[15.276074,10.357373],[15.200977,10.484521],[15.132227,10.648486],[15.068652,10.851074],[15.029883,11.113672],[15.035742,11.2625],[15.055469,11.368555],[15.121973,11.54126],[15.078027,11.642578],[15.087695,11.724365],[15.08125,11.845508],[15.059863,11.907129],[14.973828,12.10835],[14.956738,12.130371],[14.880664,12.269385],[14.84707,12.5021],[14.76123,12.655615],[14.623242,12.729932],[14.544727,12.820215],[14.516211,12.979736],[14.461719,13.021777],[14.244824,13.077344],[14.063965,13.078516],[13.932324,13.258496],[13.763477,13.489551],[13.606348,13.70459],[13.505762,14.134424],[13.448242,14.380664],[13.513672,14.455518],[13.642383,14.630762],[13.807129,14.966113],[14.178223,15.484766],[14.367969,15.750146],[14.74668,16.146631],[15.212109,16.633887],[15.474316,16.908398],[15.516699,17.408496],[15.561523,17.937256],[15.595508,18.337061],[15.637598,18.81084],[15.672949,19.206787],[15.698633,19.495215],[15.735059,19.904053],[15.766211,19.982568],[15.948828,20.303174],[15.963184,20.346191],[15.929297,20.399854],[15.668457,20.672363],[15.587109,20.733301],[15.540332,20.874902],[15.607324,20.954395],[15.293652,21.411523],[15.21582,21.467432],[15.181836,21.523389],[15.177832,21.605811],[15.172266,21.92207],[15.088965,22.418359],[14.979004,22.996191],[15.347461,23.160693],[15.627148,23.285742],[15.984082,23.445215],[16.315039,23.281836],[16.794141,23.045264],[17.273242,22.808691],[17.752246,22.572119],[18.231348,22.335547],[18.710449,22.098975],[19.189453,21.862402],[19.668555,21.62583],[20.147656,21.389258],[20.626758,21.152637],[21.105859,20.916113],[21.584961,20.679492],[22.064063,20.44292],[22.543066,20.206348],[23.022168,19.969775],[23.50127,19.733203],[23.980273,19.496631]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Central African Republic","SOV_A3":"CAF","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Central African Republic","ADM0_A3":"CAF","GEOU_DIF":0,"GEOUNIT":"Central African Republic","GU_A3":"CAF","SU_DIF":0,"SUBUNIT":"Central African Republic","SU_A3":"CAF","BRK_DIFF":0,"NAME":"Central African Rep.","NAME_LONG":"Central African Republic","BRK_A3":"CAF","BRK_NAME":"Central African Rep.","BRK_GROUP":null,"ABBREV":"C.A.R.","POSTAL":"CF","FORMAL_EN":"Central African Republic","FORMAL_FR":null,"NAME_CIAWF":"Central African Republic","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Central African Republic","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":9,"POP_EST":4745185,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":2220,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"CT","ISO_A2":"CF","ISO_A2_EH":"CF","ISO_A3":"CAF","ISO_A3_EH":"CAF","ISO_N3":"140","ISO_N3_EH":"140","UN_A3":"140","WB_A2":"CF","WB_A3":"CAF","WOE_ID":23424792,"WOE_ID_EH":23424792,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CAF","ADM0_DIFF":null,"ADM0_TLC":"CAF","ADM0_A3_US":"CAF","ADM0_A3_FR":"CAF","ADM0_A3_RU":"CAF","ADM0_A3_ES":"CAF","ADM0_A3_CN":"CAF","ADM0_A3_TW":"CAF","ADM0_A3_IN":"CAF","ADM0_A3_NP":"CAF","ADM0_A3_PK":"CAF","ADM0_A3_DE":"CAF","ADM0_A3_GB":"CAF","ADM0_A3_BR":"CAF","ADM0_A3_IL":"CAF","ADM0_A3_PS":"CAF","ADM0_A3_SA":"CAF","ADM0_A3_EG":"CAF","ADM0_A3_MA":"CAF","ADM0_A3_PT":"CAF","ADM0_A3_AR":"CAF","ADM0_A3_JP":"CAF","ADM0_A3_KO":"CAF","ADM0_A3_VN":"CAF","ADM0_A3_TR":"CAF","ADM0_A3_ID":"CAF","ADM0_A3_PL":"CAF","ADM0_A3_GR":"CAF","ADM0_A3_IT":"CAF","ADM0_A3_NL":"CAF","ADM0_A3_SE":"CAF","ADM0_A3_BD":"CAF","ADM0_A3_UA":"CAF","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":20,"LONG_LEN":24,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":20.906897,"LABEL_Y":6.989681,"NE_ID":1159320463,"WIKIDATAID":"Q929","NAME_AR":"جمهورية أفريقيا الوسطى","NAME_BN":"মধ্য আফ্রিকান প্রজাতন্ত্র","NAME_DE":"Zentralafrikanische Republik","NAME_EN":"Central African Republic","NAME_ES":"República Centroafricana","NAME_FA":"جمهوری آفریقای مرکزی","NAME_FR":"République centrafricaine","NAME_EL":"Κεντροαφρικανική Δημοκρατία","NAME_HE":"הרפובליקה המרכז-אפריקאית","NAME_HI":"मध्य अफ़्रीकी गणराज्य","NAME_HU":"Közép-afrikai Köztársaság","NAME_ID":"Republik Afrika Tengah","NAME_IT":"Repubblica Centrafricana","NAME_JA":"中央アフリカ共和国","NAME_KO":"중앙아프리카 공화국","NAME_NL":"Centraal-Afrikaanse Republiek","NAME_PL":"Republika Środkowoafrykańska","NAME_PT":"República Centro-Africana","NAME_RU":"Центральноафриканская Республика","NAME_SV":"Centralafrikanska republiken","NAME_TR":"Orta Afrika Cumhuriyeti","NAME_UK":"Центральноафриканська Республіка","NAME_UR":"وسطی افریقی جمہوریہ","NAME_VI":"Cộng hòa Trung Phi","NAME_ZH":"中非共和国","NAME_ZHT":"中非共和國","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[14.431152,2.270068,27.40332,10.99624],"geometry":{"type":"Polygon","coordinates":[[[24.147363,8.665625],[24.194824,8.653369],[24.220898,8.608252],[24.17998,8.461133],[24.208398,8.369141],[24.291406,8.291406],[24.375488,8.258447],[24.456055,8.239453],[24.736719,8.191553],[24.85332,8.137549],[25.007227,7.964844],[25.200391,7.80791],[25.247363,7.724561],[25.238672,7.648975],[25.181348,7.557227],[25.190137,7.519336],[25.278906,7.42749],[25.380664,7.333398],[25.566602,7.228711],[25.888965,7.064941],[26.036523,6.955225],[26.086914,6.872119],[26.169336,6.781738],[26.28457,6.699023],[26.361816,6.635303],[26.308594,6.455322],[26.324609,6.39624],[26.35332,6.344922],[26.420508,6.27417],[26.447461,6.183008],[26.514258,6.069238],[26.593652,6.017529],[26.726367,5.998242],[26.796484,5.945508],[26.942285,5.854932],[27.083398,5.776855],[27.143945,5.722949],[27.18125,5.675146],[27.213379,5.618799],[27.229102,5.5625],[27.23252,5.440771],[27.256738,5.289648],[27.332422,5.186328],[27.40332,5.10918],[27.114941,5.197852],[27.071875,5.199756],[27.020605,5.184375],[26.870117,5.075684],[26.82207,5.062402],[26.767578,5.071924],[26.632617,5.085205],[26.173535,5.171143],[25.819922,5.253711],[25.713867,5.283691],[25.525098,5.312109],[25.400195,5.255908],[25.283105,5.062695],[25.249316,5.024561],[25.065234,4.967432],[24.978418,4.982959],[24.765527,4.930078],[24.437109,5.009961],[24.319824,4.994141],[24.227734,4.953857],[23.991699,4.86626],[23.848438,4.816357],[23.681836,4.770801],[23.523633,4.70127],[23.417188,4.663135],[23.312891,4.663525],[23.218848,4.702979],[23.115918,4.736914],[22.992871,4.743848],[22.864551,4.723877],[22.755762,4.64668],[22.711719,4.591748],[22.617188,4.445557],[22.505664,4.207666],[22.461816,4.159766],[22.449707,4.155127],[22.422168,4.134961],[21.908203,4.253906],[21.687012,4.281396],[21.537598,4.244824],[21.350195,4.311377],[21.268359,4.323096],[21.229785,4.302197],[21.125586,4.332178],[20.955762,4.413135],[20.792969,4.447314],[20.647461,4.435645],[20.558105,4.462695],[20.486523,4.541553],[20.393555,4.686182],[20.226367,4.829639],[20.002344,4.944727],[19.8625,5.031299],[19.806543,5.089307],[19.686035,5.121387],[19.500977,5.12749],[19.323438,5.070752],[19.068555,4.891406],[18.831738,4.523438],[18.699902,4.382617],[18.594141,4.34624],[18.56748,4.257568],[18.619922,4.116602],[18.633691,3.954297],[18.59668,3.678711],[18.610352,3.478418],[18.553809,3.510205],[18.499805,3.604102],[18.474414,3.622998],[18.318164,3.580811],[18.237109,3.542676],[18.193945,3.50542],[18.160938,3.499805],[18.111328,3.551074],[18.072266,3.560303],[18.010742,3.55083],[17.947949,3.551758],[17.907129,3.558398],[17.880371,3.553857],[17.806641,3.58418],[17.537695,3.661621],[17.491602,3.687305],[17.437988,3.684619],[17.298438,3.617188],[17.224707,3.598437],[17.002539,3.556689],[16.764355,3.536279],[16.67334,3.535205],[16.610742,3.505371],[16.57041,3.463086],[16.543066,3.369531],[16.496289,3.208838],[16.476758,3.165137],[16.480078,3.100977],[16.466211,2.993213],[16.45957,2.896533],[16.468555,2.831738],[16.40127,2.701025],[16.319629,2.542773],[16.251758,2.406787],[16.183398,2.270068],[16.136133,2.36377],[16.106738,2.473486],[16.095508,2.599219],[16.101855,2.632666],[16.083496,2.67002],[16.082129,2.678174],[16.059277,2.772998],[16.082422,2.839111],[16.063477,2.908594],[16.008203,2.97666],[15.958008,3.028711],[15.928711,3.075781],[15.904883,3.09585],[15.849316,3.103076],[15.775,3.127197],[15.676563,3.229687],[15.580859,3.329297],[15.458398,3.456836],[15.360156,3.567139],[15.239844,3.702148],[15.128711,3.826904],[15.062109,3.947217],[15.034863,4.016357],[15.067383,4.022949],[15.11543,4.024463],[15.13584,4.036914],[15.136914,4.069141],[15.0875,4.163965],[15.063574,4.284863],[15.022754,4.358545],[14.893555,4.471875],[14.77041,4.558105],[14.73125,4.602393],[14.708984,4.665576],[14.661719,5.065527],[14.640625,5.179053],[14.601758,5.228809],[14.573535,5.251709],[14.562988,5.279932],[14.568066,5.351074],[14.584375,5.414746],[14.583594,5.439648],[14.616895,5.495508],[14.616895,5.865137],[14.598828,5.883984],[14.577246,5.916016],[14.54248,5.913574],[14.503125,5.916895],[14.463867,5.970703],[14.431152,6.038721],[14.440723,6.086719],[14.475,6.126807],[14.512109,6.161914],[14.559375,6.191211],[14.699512,6.250244],[14.739258,6.279785],[14.764063,6.316357],[14.780371,6.365723],[14.861914,6.555713],[14.982715,6.745312],[15.03457,6.784424],[15.086328,6.909912],[15.157129,7.063574],[15.18584,7.134912],[15.206738,7.206152],[15.245898,7.263574],[15.379102,7.358154],[15.480078,7.523779],[15.589258,7.515039],[15.70127,7.488428],[15.84502,7.475293],[15.957617,7.507568],[16.030664,7.572119],[16.191113,7.623437],[16.378906,7.683545],[16.404395,7.772363],[16.459375,7.818994],[16.523242,7.859961],[16.545313,7.865479],[16.550195,7.835889],[16.588965,7.743359],[16.668359,7.651758],[16.784766,7.550977],[16.818164,7.557324],[16.890332,7.633691],[17.071973,7.680811],[17.117969,7.701904],[17.246973,7.812988],[17.402148,7.88457],[17.436426,7.890918],[17.492676,7.909814],[17.649414,7.983594],[17.76084,7.973828],[17.940137,7.985449],[18.238867,8.020361],[18.455078,8.032031],[18.56416,8.045898],[18.591602,8.060791],[18.633594,8.167725],[18.666211,8.197705],[18.747461,8.243799],[18.906445,8.405078],[19.01084,8.541211],[19.039844,8.586914],[19.042383,8.590283],[19.063867,8.598828],[19.108691,8.656152],[19.06416,8.71543],[18.886035,8.836035],[18.888574,8.85249],[18.87832,8.873193],[18.888281,8.889746],[18.95625,8.938867],[19.047852,8.99502],[19.145508,9.015967],[19.400293,9.011621],[19.61748,9.023584],[19.668359,9.020898],[19.837695,9.049365],[19.953516,9.075146],[20.072656,9.133203],[20.34209,9.1271],[20.566895,9.274951],[20.631445,9.301367],[20.659668,9.324512],[20.668164,9.347119],[20.773242,9.405664],[20.891016,9.527148],[20.98418,9.636279],[21.009473,9.713232],[21.263867,9.974609],[21.352441,9.969141],[21.395996,10.001367],[21.496875,10.175684],[21.528027,10.207812],[21.575781,10.218555],[21.632715,10.238281],[21.682715,10.289844],[21.725781,10.366553],[21.726172,10.461621],[21.706543,10.537891],[21.706543,10.574805],[21.730664,10.608691],[21.771484,10.642822],[21.964844,10.73667],[22.01377,10.782031],[22.043164,10.822705],[22.097168,10.830078],[22.15625,10.826074],[22.193652,10.851367],[22.235938,10.894141],[22.369824,10.951514],[22.493848,10.99624],[22.624023,10.977344],[22.730176,10.954053],[22.817383,10.927197],[22.860059,10.919678],[22.930762,10.795312],[22.964355,10.751807],[23.255859,10.457812],[23.312305,10.387939],[23.456641,10.174268],[23.54502,10.030078],[23.646289,9.8229],[23.65625,9.710352],[23.642773,9.613916],[23.622656,9.340625],[23.596094,9.261914],[23.468262,9.114746],[23.462793,9.048486],[23.489063,8.993311],[23.528027,8.970605],[23.551855,8.943213],[23.537305,8.81582],[23.583203,8.76582],[23.679297,8.732471],[23.921973,8.709717],[24.048145,8.691309],[24.147363,8.665625]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Cabo Verde","SOV_A3":"CPV","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Cabo Verde","ADM0_A3":"CPV","GEOU_DIF":0,"GEOUNIT":"Cabo Verde","GU_A3":"CPV","SU_DIF":0,"SUBUNIT":"Cabo Verde","SU_A3":"CPV","BRK_DIFF":0,"NAME":"Cabo Verde","NAME_LONG":"Republic of Cabo Verde","BRK_A3":"CPV","BRK_NAME":"Cabo Verde","BRK_GROUP":null,"ABBREV":"C.Vd.","POSTAL":"CV","FORMAL_EN":"Republic of Cabo Verde","FORMAL_FR":null,"NAME_CIAWF":"Cabo Verde","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Cabo Verde","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":4,"MAPCOLOR13":11,"POP_EST":549935,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":1981,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"CV","ISO_A2":"CV","ISO_A2_EH":"CV","ISO_A3":"CPV","ISO_A3_EH":"CPV","ISO_N3":"132","ISO_N3_EH":"132","UN_A3":"132","WB_A2":"CV","WB_A3":"CPV","WOE_ID":23424794,"WOE_ID_EH":23424794,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CPV","ADM0_DIFF":null,"ADM0_TLC":"CPV","ADM0_A3_US":"CPV","ADM0_A3_FR":"CPV","ADM0_A3_RU":"CPV","ADM0_A3_ES":"CPV","ADM0_A3_CN":"CPV","ADM0_A3_TW":"CPV","ADM0_A3_IN":"CPV","ADM0_A3_NP":"CPV","ADM0_A3_PK":"CPV","ADM0_A3_DE":"CPV","ADM0_A3_GB":"CPV","ADM0_A3_BR":"CPV","ADM0_A3_IL":"CPV","ADM0_A3_PS":"CPV","ADM0_A3_SA":"CPV","ADM0_A3_EG":"CPV","ADM0_A3_MA":"CPV","ADM0_A3_PT":"CPV","ADM0_A3_AR":"CPV","ADM0_A3_JP":"CPV","ADM0_A3_KO":"CPV","ADM0_A3_VN":"CPV","ADM0_A3_TR":"CPV","ADM0_A3_ID":"CPV","ADM0_A3_PL":"CPV","ADM0_A3_GR":"CPV","ADM0_A3_IT":"CPV","ADM0_A3_NL":"CPV","ADM0_A3_SE":"CPV","ADM0_A3_BD":"CPV","ADM0_A3_UA":"CPV","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":10,"LONG_LEN":22,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-23.639434,"LABEL_Y":15.074761,"NE_ID":1159320523,"WIKIDATAID":"Q1011","NAME_AR":"الرأس الأخضر","NAME_BN":"কাবু ভের্দি","NAME_DE":"Kap Verde","NAME_EN":"Cape Verde","NAME_ES":"Cabo Verde","NAME_FA":"کیپ ورد","NAME_FR":"Cap-Vert","NAME_EL":"Πράσινο Ακρωτήριο","NAME_HE":"כף ורדה","NAME_HI":"केप वर्दे","NAME_HU":"Zöld-foki Köztársaság","NAME_ID":"Tanjung Verde","NAME_IT":"Capo Verde","NAME_JA":"カーボベルデ","NAME_KO":"카보베르데","NAME_NL":"Kaapverdië","NAME_PL":"Republika Zielonego Przylądka","NAME_PT":"Cabo Verde","NAME_RU":"Кабо-Верде","NAME_SV":"Kap Verde","NAME_TR":"Yeşil Burun Adaları","NAME_UK":"Кабо-Верде","NAME_UR":"کیپ ورڈی","NAME_VI":"Cabo Verde","NAME_ZH":"佛得角","NAME_ZHT":"維德角","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-25.341553,14.818213,-22.681885,17.193652],"geometry":{"type":"MultiPolygon","coordinates":[[[[-25.169824,16.946484],[-25.267236,16.925928],[-25.308301,16.93584],[-25.321924,17.015381],[-25.341553,17.067725],[-25.337109,17.091016],[-25.113477,17.193652],[-25.034668,17.176465],[-24.979687,17.094727],[-25.01709,17.049316],[-25.169824,16.946484]]],[[[-23.444238,15.007959],[-23.504687,14.916113],[-23.637207,14.923486],[-23.705371,14.961328],[-23.78501,15.076904],[-23.78252,15.166113],[-23.754492,15.243555],[-23.759375,15.310791],[-23.748096,15.328516],[-23.707227,15.316895],[-23.700635,15.271631],[-23.57998,15.160889],[-23.535254,15.139258],[-23.444238,15.007959]]],[[[-24.887061,16.818115],[-24.969141,16.794189],[-25.019971,16.797217],[-25.093066,16.83252],[-25.070117,16.870703],[-24.991016,16.913232],[-24.936475,16.922119],[-24.891895,16.846484],[-24.887061,16.818115]]],[[[-22.917725,16.237256],[-22.834326,16.218994],[-22.802637,16.225537],[-22.749414,16.221533],[-22.692627,16.169043],[-22.681885,16.113281],[-22.710107,16.043359],[-22.820508,15.986035],[-22.884082,15.992725],[-22.959277,16.045117],[-22.916113,16.148438],[-22.917725,16.237256]]],[[[-24.308252,14.856299],[-24.386133,14.818213],[-24.440527,14.834814],[-24.492188,14.874219],[-24.51709,14.93125],[-24.496875,14.980273],[-24.391992,15.038281],[-24.329492,15.019482],[-24.295801,14.929541],[-24.308252,14.856299]]],[[[-24.087695,16.62251],[-24.046387,16.593066],[-24.032715,16.572021],[-24.094141,16.561035],[-24.243066,16.599414],[-24.282812,16.575928],[-24.322363,16.493115],[-24.398096,16.618408],[-24.39292,16.664453],[-24.376709,16.677783],[-24.271094,16.644873],[-24.087695,16.62251]]],[[[-22.88833,16.659082],[-22.920264,16.60791],[-22.959424,16.683057],[-22.980615,16.700879],[-22.990918,16.808838],[-22.93291,16.841016],[-22.904736,16.84375],[-22.903906,16.732129],[-22.88833,16.659082]]],[[[-23.182129,15.136768],[-23.209961,15.133105],[-23.251807,15.178125],[-23.24248,15.240527],[-23.247168,15.256982],[-23.210254,15.323535],[-23.137744,15.317725],[-23.119336,15.268408],[-23.115869,15.16665],[-23.182129,15.136768]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Canada","SOV_A3":"CAN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Canada","ADM0_A3":"CAN","GEOU_DIF":0,"GEOUNIT":"Canada","GU_A3":"CAN","SU_DIF":0,"SUBUNIT":"Canada","SU_A3":"CAN","BRK_DIFF":0,"NAME":"Canada","NAME_LONG":"Canada","BRK_A3":"CAN","BRK_NAME":"Canada","BRK_GROUP":null,"ABBREV":"Can.","POSTAL":"CA","FORMAL_EN":"Canada","FORMAL_FR":null,"NAME_CIAWF":"Canada","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Canada","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":6,"MAPCOLOR9":2,"MAPCOLOR13":2,"POP_EST":37589262,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":1736425,"GDP_YEAR":2019,"ECONOMY":"1. Developed region: G7","INCOME_GRP":"1. High income: OECD","FIPS_10":"CA","ISO_A2":"CA","ISO_A2_EH":"CA","ISO_A3":"CAN","ISO_A3_EH":"CAN","ISO_N3":"124","ISO_N3_EH":"124","UN_A3":"124","WB_A2":"CA","WB_A3":"CAN","WOE_ID":23424775,"WOE_ID_EH":23424775,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CAN","ADM0_DIFF":null,"ADM0_TLC":"CAN","ADM0_A3_US":"CAN","ADM0_A3_FR":"CAN","ADM0_A3_RU":"CAN","ADM0_A3_ES":"CAN","ADM0_A3_CN":"CAN","ADM0_A3_TW":"CAN","ADM0_A3_IN":"CAN","ADM0_A3_NP":"CAN","ADM0_A3_PK":"CAN","ADM0_A3_DE":"CAN","ADM0_A3_GB":"CAN","ADM0_A3_BR":"CAN","ADM0_A3_IL":"CAN","ADM0_A3_PS":"CAN","ADM0_A3_SA":"CAN","ADM0_A3_EG":"CAN","ADM0_A3_MA":"CAN","ADM0_A3_PT":"CAN","ADM0_A3_AR":"CAN","ADM0_A3_JP":"CAN","ADM0_A3_KO":"CAN","ADM0_A3_VN":"CAN","ADM0_A3_TR":"CAN","ADM0_A3_ID":"CAN","ADM0_A3_PL":"CAN","ADM0_A3_GR":"CAN","ADM0_A3_IT":"CAN","ADM0_A3_NL":"CAN","ADM0_A3_SE":"CAN","ADM0_A3_BD":"CAN","ADM0_A3_UA":"CAN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Northern America","REGION_WB":"North America","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":5.7,"LABEL_X":-101.9107,"LABEL_Y":60.324287,"NE_ID":1159320467,"WIKIDATAID":"Q16","NAME_AR":"كندا","NAME_BN":"কানাডা","NAME_DE":"Kanada","NAME_EN":"Canada","NAME_ES":"Canadá","NAME_FA":"کانادا","NAME_FR":"Canada","NAME_EL":"Καναδάς","NAME_HE":"קנדה","NAME_HI":"कनाडा","NAME_HU":"Kanada","NAME_ID":"Kanada","NAME_IT":"Canada","NAME_JA":"カナダ","NAME_KO":"캐나다","NAME_NL":"Canada","NAME_PL":"Kanada","NAME_PT":"Canadá","NAME_RU":"Канада","NAME_SV":"Kanada","NAME_TR":"Kanada","NAME_UK":"Канада","NAME_UR":"کینیڈا","NAME_VI":"Canada","NAME_ZH":"加拿大","NAME_ZHT":"加拿大","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-141.002148,41.674854,-52.653662,83.116113],"geometry":{"type":"MultiPolygon","coordinates":[[[[-132.655518,54.12749],[-132.564063,54.068652],[-132.344434,54.106055],[-132.303369,54.098877],[-132.261621,54.076318],[-132.215918,54.028418],[-132.166113,53.955225],[-132.155127,53.875195],[-132.175098,53.846533],[-132.214502,53.814746],[-132.564893,53.687646],[-132.574121,53.675391],[-132.567139,53.663965],[-132.534668,53.651709],[-132.464404,53.65332],[-132.186963,53.684814],[-132.17168,53.706836],[-132.152246,53.806982],[-132.114014,53.860156],[-132.110596,53.900293],[-132.135889,53.99585],[-132.134424,54.034277],[-131.94082,54.041992],[-131.819629,54.077344],[-131.695947,54.143164],[-131.667627,54.141357],[-131.6854,54.022803],[-131.702539,53.986377],[-131.821143,53.841504],[-131.88916,53.713965],[-131.922314,53.587891],[-131.928076,53.379199],[-131.957422,53.308691],[-132.011328,53.265186],[-132.347266,53.189209],[-132.520459,53.194043],[-132.674805,53.263184],[-132.74751,53.310498],[-132.692578,53.367871],[-132.654785,53.370557],[-132.54624,53.359277],[-132.462402,53.337891],[-132.425,53.336963],[-132.431348,53.350439],[-132.670166,53.458594],[-132.84502,53.507715],[-132.897998,53.562695],[-132.899561,53.605371],[-132.913379,53.629199],[-133.052246,53.778125],[-133.079492,53.837012],[-133.097656,53.920264],[-133.097949,54.005615],[-133.063867,54.144043],[-133.048389,54.158936],[-132.991455,54.157812],[-132.893066,54.140771],[-132.655518,54.12749]]],[[[-131.753711,53.195557],[-131.652344,53.102979],[-131.622168,53.020068],[-131.634668,52.922168],[-131.795264,52.885059],[-131.879687,52.914648],[-131.916357,52.909131],[-131.971777,52.879834],[-131.904395,52.866699],[-131.810059,52.818701],[-131.727295,52.756396],[-131.610596,52.745215],[-131.455225,52.701709],[-131.572803,52.62334],[-131.590576,52.578223],[-131.443896,52.45332],[-131.42998,52.422119],[-131.383008,52.415723],[-131.273633,52.42583],[-131.259717,52.415918],[-131.259961,52.390039],[-131.327051,52.317529],[-131.319922,52.303076],[-131.25918,52.29165],[-131.142627,52.291113],[-131.116162,52.219092],[-131.221533,52.153613],[-131.421875,52.237988],[-131.511133,52.32207],[-131.562061,52.399951],[-131.623682,52.443994],[-131.809668,52.541699],[-132.092236,52.752783],[-132.165088,52.783301],[-132.238574,52.866797],[-132.259961,52.906982],[-132.258105,52.933887],[-132.229541,52.948096],[-132.144922,52.957471],[-132.14375,52.999316],[-132.468701,53.071875],[-132.504834,53.086719],[-132.546777,53.1375],[-132.524219,53.144922],[-132.34541,53.136084],[-132.153906,53.160498],[-132.035937,53.17915],[-131.989502,53.201953],[-131.893115,53.231445],[-131.853467,53.229736],[-131.753711,53.195557]]],[[[-127.197314,50.640381],[-126.700928,50.515527],[-126.203857,50.453857],[-125.83916,50.380811],[-125.615234,50.358545],[-125.534326,50.34248],[-125.48208,50.316797],[-125.420459,50.254639],[-125.313965,50.106689],[-125.233203,50.012207],[-125.066406,49.848193],[-124.934668,49.731641],[-124.904639,49.685352],[-124.932422,49.670459],[-124.930664,49.643164],[-124.830615,49.530078],[-124.642871,49.428662],[-124.495947,49.380273],[-124.185889,49.300586],[-123.995801,49.224023],[-123.937158,49.170801],[-123.854492,49.119189],[-123.82002,49.083496],[-123.752295,48.951221],[-123.626563,48.824023],[-123.497021,48.58208],[-123.472852,48.602295],[-123.457959,48.674414],[-123.443066,48.690479],[-123.415479,48.698193],[-123.389893,48.670215],[-123.366309,48.606445],[-123.283789,48.455176],[-123.310645,48.411035],[-123.334521,48.406494],[-123.445898,48.427246],[-123.48457,48.400098],[-123.536475,48.344971],[-123.573145,48.322803],[-123.594629,48.333545],[-123.916943,48.386572],[-124.115234,48.436426],[-124.376221,48.515234],[-124.689404,48.597314],[-124.868262,48.653613],[-125.017236,48.711475],[-125.120703,48.760791],[-125.140283,48.802637],[-125.135693,48.822412],[-124.934766,48.956348],[-124.849658,49.028271],[-124.817041,49.083301],[-124.800244,49.141553],[-124.812646,49.212646],[-124.820752,49.207129],[-124.838721,49.139062],[-124.868311,49.078516],[-124.904443,49.031006],[-124.927344,49.014209],[-125.168213,48.991016],[-125.362744,48.998242],[-125.460303,48.941064],[-125.489453,48.933789],[-125.543115,48.952832],[-125.660498,49.02915],[-125.828516,49.091846],[-125.811963,49.107227],[-125.702295,49.139209],[-125.644238,49.185791],[-125.654639,49.193213],[-125.693701,49.190381],[-125.728027,49.199854],[-125.796387,49.260205],[-125.835449,49.27666],[-125.918359,49.249512],[-125.95166,49.248047],[-125.983838,49.287891],[-125.937695,49.379785],[-125.9354,49.401465],[-126.020312,49.368018],[-126.04834,49.379004],[-126.074902,49.408789],[-126.099854,49.421289],[-126.168848,49.415186],[-126.243604,49.442676],[-126.269727,49.431885],[-126.279639,49.392187],[-126.304492,49.382031],[-126.418604,49.449023],[-126.444531,49.451123],[-126.499854,49.399951],[-126.519141,49.396777],[-126.548535,49.418945],[-126.563721,49.543262],[-126.557471,49.578613],[-126.541895,49.590479],[-126.442773,49.619287],[-126.157813,49.650146],[-126.134082,49.672314],[-126.347559,49.66084],[-126.403174,49.677734],[-126.462793,49.720215],[-126.525244,49.71958],[-126.558252,49.733398],[-126.592871,49.764111],[-126.683105,49.876465],[-126.744629,49.904932],[-126.849365,49.922803],[-126.90332,49.944141],[-126.926074,49.934717],[-126.947949,49.902686],[-126.9771,49.882812],[-127.04873,49.871533],[-127.114307,49.879736],[-127.165527,49.910449],[-127.195898,49.94917],[-127.20752,49.992432],[-127.179102,50.050293],[-127.179639,50.073145],[-127.192334,50.099902],[-127.215674,50.121484],[-127.249805,50.137988],[-127.268408,50.129346],[-127.271533,50.095557],[-127.290039,50.07085],[-127.349414,50.051953],[-127.3979,50.08501],[-127.429785,50.130859],[-127.467139,50.163428],[-127.674854,50.16333],[-127.770459,50.121143],[-127.816309,50.117725],[-127.863916,50.127734],[-127.872998,50.150098],[-127.828174,50.211426],[-127.83916,50.293213],[-127.85083,50.313721],[-127.94668,50.326221],[-127.962939,50.345996],[-127.905859,50.445215],[-127.874023,50.463965],[-127.831543,50.471045],[-127.641406,50.479102],[-127.578125,50.464941],[-127.486523,50.404639],[-127.489355,50.427344],[-127.524023,50.495752],[-127.529004,50.536768],[-127.465918,50.583105],[-127.526221,50.59668],[-127.751465,50.607373],[-127.749707,50.577734],[-127.731152,50.535742],[-127.864697,50.498877],[-127.963672,50.492627],[-128.05835,50.498486],[-128.135645,50.520557],[-128.267432,50.609277],[-128.349902,50.696582],[-128.346045,50.744238],[-128.30083,50.794141],[-128.241553,50.828174],[-128.101318,50.857764],[-127.918066,50.860547],[-127.713037,50.820752],[-127.197314,50.640381]]],[[[-130.025098,55.888232],[-130.014062,55.950537],[-130.0229,56.014502],[-130.055957,56.065234],[-130.097852,56.109277],[-130.214697,56.082812],[-130.413135,56.12251],[-130.4771,56.230566],[-130.649072,56.263672],[-130.741699,56.34082],[-130.930225,56.378613],[-131.08291,56.404834],[-131.199414,56.449219],[-131.335791,56.501221],[-131.471875,56.556738],[-131.575098,56.598828],[-131.651514,56.596094],[-131.824268,56.58999],[-131.833105,56.684814],[-131.885986,56.742139],[-131.866162,56.792822],[-131.9625,56.818701],[-132.104297,56.856787],[-132.062891,56.953369],[-132.031543,57.026562],[-132.157031,57.048193],[-132.337988,57.079443],[-132.279395,57.145361],[-132.232178,57.198535],[-132.30166,57.276318],[-132.44248,57.406738],[-132.550488,57.499902],[-132.691504,57.645117],[-132.815527,57.772705],[-132.916846,57.877002],[-133.001416,57.948975],[-133.12041,58.077734],[-133.275293,58.222852],[-133.422559,58.337061],[-133.401123,58.410889],[-133.546387,58.503467],[-133.673926,58.597168],[-133.820752,58.705029],[-133.965723,58.757861],[-134.069189,58.795508],[-134.218506,58.849902],[-134.296973,58.898486],[-134.329639,58.939697],[-134.363525,58.96875],[-134.393066,59.00918],[-134.410205,59.05625],[-134.440771,59.085352],[-134.621973,59.155322],[-134.677246,59.199268],[-134.802393,59.25],[-134.907227,59.271191],[-134.94375,59.288281],[-135.071289,59.441455],[-135.05083,59.496045],[-135.03667,59.550684],[-135.051025,59.578662],[-135.260791,59.69502],[-135.367871,59.743311],[-135.475928,59.793262],[-135.702588,59.72876],[-135.934668,59.662646],[-136.097168,59.638379],[-136.321826,59.604834],[-136.247119,59.53291],[-136.277979,59.480322],[-136.347852,59.456055],[-136.466357,59.459082],[-136.466748,59.279932],[-136.57876,59.152246],[-136.813281,59.150049],[-136.939307,59.106104],[-137.126221,59.040967],[-137.277539,58.988184],[-137.438574,58.903125],[-137.520898,58.915381],[-137.48418,58.991211],[-137.543701,59.119434],[-137.593311,59.22627],[-137.696631,59.281152],[-137.870557,59.373584],[-138.001123,59.44292],[-138.187451,59.541943],[-138.317627,59.611133],[-138.453613,59.683398],[-138.632275,59.778271],[-138.705469,59.901318],[-138.86875,59.945752],[-139.043457,59.993262],[-139.185156,60.083594],[-139.136963,60.172705],[-139.079248,60.279443],[-139.079248,60.343701],[-139.234766,60.339746],[-139.467969,60.333691],[-139.676318,60.32832],[-139.830664,60.252881],[-139.973291,60.183154],[-140.196924,60.2375],[-140.452832,60.299707],[-140.525439,60.218359],[-140.762744,60.259131],[-141.002148,60.300244],[-141.002148,60.592432],[-141.002148,60.884668],[-141.002148,61.176855],[-141.002148,61.469043],[-141.002148,61.761279],[-141.002148,62.053467],[-141.002148,62.345703],[-141.002148,62.637891],[-141.002148,62.930078],[-141.002148,63.222266],[-141.002148,63.514453],[-141.002148,63.806689],[-141.002148,64.098877],[-141.002148,64.391113],[-141.002148,64.683301],[-141.002148,64.975537],[-141.002148,65.267725],[-141.002148,65.559912],[-141.002148,65.852148],[-141.002148,66.144336],[-141.002148,66.436523],[-141.002148,66.72876],[-141.002148,67.020947],[-141.002148,67.313135],[-141.002148,67.605371],[-141.002148,67.897559],[-141.002148,68.189746],[-141.002148,68.481982],[-141.002148,68.77417],[-141.002148,69.066357],[-141.002148,69.358594],[-141.002148,69.650781],[-140.86001,69.635254],[-140.405127,69.60249],[-139.976611,69.621729],[-139.181543,69.515527],[-138.689893,69.316797],[-138.291016,69.219043],[-138.128369,69.151953],[-137.869434,69.092822],[-137.259961,68.964111],[-137.07041,68.950879],[-136.717334,68.88916],[-136.498682,68.897314],[-136.122363,68.882227],[-135.86665,68.832617],[-135.362158,68.696436],[-135.258838,68.684326],[-135.231201,68.694287],[-135.406934,68.828955],[-135.43457,68.841992],[-135.637988,68.892236],[-135.876318,68.916992],[-135.894727,68.926709],[-135.939014,68.97417],[-135.924756,68.992627],[-135.872852,69.001025],[-135.695215,69.000635],[-135.58999,69.008252],[-135.575537,69.026953],[-135.65127,69.031299],[-135.742627,69.049414],[-135.849707,69.081396],[-135.910205,69.111475],[-135.691455,69.311182],[-135.614941,69.291016],[-135.499561,69.337158],[-135.292822,69.307861],[-135.25498,69.323828],[-135.229785,69.425195],[-135.199023,69.449609],[-135.14082,69.467822],[-134.852881,69.485889],[-134.493848,69.46792],[-134.456836,69.477637],[-134.491211,69.545313],[-134.495361,69.571924],[-134.473682,69.632812],[-134.451465,69.665479],[-134.408936,69.681787],[-134.242041,69.668848],[-134.189893,69.638818],[-134.134033,69.587256],[-134.07749,69.557861],[-133.899951,69.528223],[-133.879785,69.507715],[-133.947461,69.429492],[-134.018408,69.388477],[-134.165039,69.280566],[-134.174316,69.252832],[-133.948047,69.301318],[-133.694043,69.368408],[-133.475928,69.405371],[-133.293652,69.412158],[-133.163135,69.433887],[-133.084424,69.470654],[-133.028271,69.508252],[-132.915332,69.629639],[-132.840332,69.650684],[-132.526807,69.643262],[-132.452344,69.646924],[-132.403906,69.65874],[-132.412744,69.674072],[-132.478955,69.692871],[-132.568359,69.698145],[-132.570605,69.706689],[-132.537549,69.726563],[-132.488477,69.738086],[-132.333984,69.751807],[-132.232422,69.708154],[-132.163428,69.70498],[-131.934131,69.753467],[-131.581836,69.882129],[-131.440918,69.91792],[-131.318945,69.92417],[-131.215869,69.900781],[-131.136377,69.906885],[-131.031836,69.979492],[-130.990625,70.018115],[-130.926172,70.051611],[-130.665479,70.127051],[-130.498437,70.143164],[-130.396387,70.129248],[-130.274951,70.097998],[-130.174951,70.085889],[-130.043311,70.095068],[-129.944971,70.090918],[-129.898047,70.106152],[-129.730078,70.19209],[-129.675635,70.192969],[-129.622998,70.167627],[-129.538428,70.105176],[-129.538184,70.073926],[-129.648291,69.997754],[-130.458838,69.77998],[-130.708545,69.685986],[-130.83208,69.651465],[-130.960107,69.632031],[-131.207959,69.615771],[-131.306348,69.596631],[-131.472949,69.579492],[-131.862793,69.549365],[-131.937793,69.534717],[-131.98877,69.517627],[-132.12876,69.402344],[-132.196826,69.364697],[-132.330762,69.307959],[-132.481201,69.273145],[-132.686719,69.259863],[-132.81748,69.205762],[-132.967969,69.101416],[-133.089453,69.02876],[-133.228223,68.967139],[-133.378955,68.88667],[-133.418311,68.844287],[-133.373389,68.788477],[-133.348389,68.769873],[-133.196826,68.739844],[-133.138037,68.746582],[-133.192187,68.776514],[-133.319531,68.819727],[-133.33667,68.835254],[-133.304004,68.847412],[-132.706006,68.814893],[-132.577637,68.847803],[-132.532666,68.875635],[-132.542236,68.889941],[-132.704346,68.895898],[-132.739111,68.922461],[-132.764697,68.972461],[-132.770117,69.012158],[-132.755469,69.041602],[-132.718945,69.079199],[-132.545166,69.140625],[-132.358057,69.166943],[-132.213965,69.20166],[-132.134375,69.234473],[-131.919629,69.290527],[-131.833398,69.335986],[-131.786914,69.371289],[-131.781055,69.388867],[-131.820166,69.401611],[-131.788379,69.431982],[-131.631787,69.459082],[-131.562939,69.461377],[-131.34292,69.4354],[-131.303027,69.415088],[-131.324707,69.361182],[-131.293896,69.363721],[-131.209033,69.432178],[-131.161719,69.45498],[-131.112842,69.459473],[-131.063428,69.450684],[-131.013428,69.428711],[-130.986279,69.362891],[-130.981982,69.253271],[-130.970654,69.209082],[-130.914307,69.284863],[-130.875049,69.32002],[-130.660693,69.481299],[-130.515967,69.569678],[-130.353613,69.655811],[-130.117627,69.720068],[-129.572119,69.826709],[-129.264844,69.85542],[-129.109131,69.881934],[-129.03291,69.90498],[-128.984326,69.933447],[-128.898926,69.966162],[-128.883691,69.963477],[-128.916797,69.894873],[-128.938623,69.875],[-129.13833,69.83252],[-129.15791,69.800098],[-129.13623,69.750049],[-129.101709,69.717041],[-129.054346,69.701074],[-128.971436,69.712402],[-128.853027,69.751025],[-128.705518,69.810156],[-128.386719,69.960156],[-128.35918,69.987598],[-128.278613,70.108105],[-128.09585,70.161328],[-127.764941,70.221875],[-127.683789,70.260352],[-127.974023,70.29292],[-128.03418,70.315332],[-128.043652,70.32876],[-127.988916,70.363135],[-128.121484,70.397363],[-128.170117,70.418457],[-128.168066,70.479785],[-128.127295,70.523828],[-128.040479,70.566406],[-127.991016,70.573828],[-127.861621,70.549072],[-127.752832,70.517139],[-127.376855,70.36875],[-127.225977,70.296143],[-127.138477,70.239355],[-126.926807,70.061719],[-126.833496,69.959082],[-126.758691,69.853369],[-126.684912,69.7771],[-126.612158,69.730322],[-126.250439,69.545264],[-126.063818,69.46709],[-125.907422,69.418555],[-125.727783,69.37998],[-125.524951,69.351563],[-125.386768,69.349219],[-125.171875,69.427979],[-125.166846,69.479785],[-125.261572,69.566162],[-125.356934,69.625977],[-125.345508,69.662451],[-125.219385,69.732373],[-125.227881,69.756738],[-125.201172,69.828809],[-125.114014,69.815039],[-125.07959,69.817822],[-125.031006,69.844287],[-124.968262,69.894385],[-124.88916,69.935791],[-124.793652,69.968506],[-124.76792,69.990039],[-124.862598,70.005518],[-124.92002,70.005566],[-124.962598,70.012598],[-124.990381,70.026611],[-124.952441,70.041748],[-124.745117,70.080176],[-124.706348,70.116992],[-124.639941,70.141455],[-124.555029,70.151221],[-124.502588,70.141113],[-124.444482,70.110596],[-124.441504,70.061914],[-124.467187,69.982568],[-124.471924,69.918506],[-124.406934,69.767432],[-124.349365,69.734521],[-124.124609,69.68999],[-124.138477,69.653174],[-124.398389,69.493848],[-124.453906,69.454834],[-124.481348,69.425146],[-124.47207,69.400049],[-124.426172,69.379443],[-124.338086,69.364844],[-124.111719,69.358887],[-124.049658,69.372852],[-123.609131,69.377441],[-123.528418,69.389355],[-123.460449,69.42002],[-123.361475,69.496631],[-123.248975,69.52002],[-123.213672,69.541504],[-123.144482,69.632471],[-123.1104,69.738135],[-123.076611,69.782471],[-123.025781,69.81001],[-122.956689,69.818848],[-122.7854,69.808447],[-122.704883,69.817383],[-122.3875,69.808447],[-122.070068,69.816162],[-121.741846,69.79751],[-121.531104,69.775781],[-121.33623,69.741553],[-120.962451,69.6604],[-120.814648,69.616846],[-120.292529,69.420557],[-120.13999,69.380566],[-119.852832,69.342334],[-118.868701,69.257178],[-118.744873,69.234277],[-118.485596,69.144873],[-118.306982,69.092725],[-118.095215,69.04292],[-117.830322,68.999902],[-117.311279,68.934912],[-117.226953,68.913428],[-117.131738,68.907129],[-117.025732,68.915967],[-116.549951,68.878809],[-116.424561,68.880615],[-116.334082,68.873633],[-116.222705,68.846826],[-116.059473,68.837012],[-116.065234,68.85542],[-116.251611,68.95791],[-116.243408,68.974072],[-116.166748,68.975342],[-115.936084,68.958105],[-115.883252,68.987305],[-115.806348,68.986621],[-115.631152,68.972559],[-115.442285,68.940918],[-115.239844,68.891846],[-114.99375,68.850049],[-114.620166,68.746094],[-114.413867,68.65957],[-114.218164,68.552051],[-114.11084,68.477344],[-114.092041,68.4354],[-114.051123,68.414648],[-113.988184,68.41499],[-113.964404,68.399072],[-114.020801,68.306494],[-114.053223,68.283398],[-114.095947,68.266797],[-114.274756,68.247852],[-114.765283,68.270215],[-114.852197,68.195264],[-115.127051,68.132031],[-115.175928,68.104395],[-115.186768,68.08418],[-115.16709,68.018555],[-115.201855,67.998438],[-115.426855,67.923535],[-115.434473,67.902344],[-115.288477,67.87168],[-115.133203,67.819189],[-115.011182,67.806396],[-114.856738,67.813574],[-114.662891,67.795215],[-114.429395,67.751221],[-114.267041,67.731152],[-114.175732,67.73501],[-114.051074,67.726904],[-113.893213,67.706885],[-113.681934,67.699951],[-113.21499,67.701758],[-113.074951,67.68667],[-112.879443,67.679883],[-112.503027,67.681934],[-112.435156,67.684766],[-112.314551,67.71958],[-112.236719,67.731104],[-112.101318,67.731738],[-111.710889,67.757324],[-111.575732,67.756836],[-111.450684,67.776172],[-111.29082,67.815234],[-111.192187,67.822559],[-111.154785,67.798242],[-111.087402,67.787646],[-110.990039,67.79082],[-110.804883,67.832324],[-110.371973,67.954199],[-110.21626,67.954004],[-110.101953,67.992236],[-110.073926,67.99292],[-110.04248,67.977197],[-109.936523,67.887891],[-109.904248,67.873535],[-109.831348,67.86582],[-109.760156,67.820117],[-109.686035,67.751758],[-109.630371,67.732715],[-109.224316,67.729785],[-109.08125,67.710742],[-109.038037,67.691162],[-108.994482,67.637109],[-108.967676,67.532373],[-108.949902,67.493945],[-108.890967,67.438086],[-108.852002,67.421973],[-108.815186,67.4375],[-108.715137,67.582812],[-108.680225,67.606201],[-108.61333,67.598047],[-108.59292,67.590869],[-108.491504,67.483301],[-108.346973,67.403418],[-107.988721,67.256396],[-107.930518,67.20249],[-107.90918,67.162549],[-107.929443,67.126807],[-107.991309,67.095166],[-108.088428,67.069775],[-108.220801,67.050586],[-108.344336,67.05752],[-108.459082,67.09043],[-108.496045,67.092285],[-108.455273,67.062988],[-108.218164,66.94126],[-108.157666,66.892627],[-108.101465,66.860352],[-108.049609,66.844336],[-108.001758,66.818018],[-107.957959,66.781299],[-107.760937,66.683691],[-107.704883,66.637109],[-107.480322,66.491797],[-107.373682,66.434668],[-107.291357,66.401807],[-107.259473,66.398535],[-107.278076,66.424902],[-107.564453,66.618506],[-107.710352,66.740039],[-107.730859,66.769189],[-107.740234,66.81377],[-107.745996,66.961475],[-107.725098,66.984131],[-107.626172,67.003125],[-107.499219,66.936182],[-107.45127,66.926758],[-107.418848,66.930713],[-107.4021,66.947998],[-107.329199,66.931982],[-107.200195,66.882568],[-107.156494,66.881738],[-107.25376,66.976367],[-107.32334,67.022559],[-107.347852,67.054785],[-107.283154,67.103271],[-107.318457,67.127783],[-107.482373,67.199121],[-107.56748,67.273047],[-107.644043,67.384766],[-107.650928,67.428223],[-107.638379,67.474219],[-107.649902,67.511279],[-107.753027,67.586865],[-107.865088,67.639209],[-107.954053,67.7],[-107.972119,67.732031],[-107.958398,67.818604],[-107.890918,67.856348],[-107.763086,67.906836],[-107.728613,67.958838],[-107.787451,68.0125],[-107.798291,68.036914],[-107.761035,68.032178],[-107.509375,68.059131],[-107.446191,68.049658],[-107.351123,68.061182],[-107.224121,68.093799],[-107.124805,68.108447],[-106.993652,68.106299],[-106.922559,68.11416],[-106.835645,68.128613],[-106.790723,68.144824],[-106.710986,68.206787],[-106.668408,68.216016],[-106.534863,68.209277],[-106.459473,68.195654],[-106.424268,68.200586],[-106.429492,68.288477],[-106.404395,68.319336],[-106.27124,68.383203],[-106.132129,68.389893],[-106.039307,68.407324],[-105.933057,68.443115],[-105.856934,68.475146],[-105.781201,68.526563],[-105.750195,68.592285],[-105.774316,68.611133],[-105.932227,68.636523],[-106.027148,68.62334],[-106.237305,68.576563],[-106.458057,68.516455],[-106.543311,68.460596],[-106.56665,68.388965],[-106.608496,68.357373],[-106.78042,68.387305],[-106.853711,68.386816],[-106.945801,68.374365],[-107.043311,68.346826],[-107.146191,68.304199],[-107.298145,68.296436],[-107.499121,68.323535],[-107.619336,68.331055],[-107.741504,68.285742],[-107.734229,68.252051],[-107.677637,68.20293],[-107.73418,68.17373],[-108.027197,68.162939],[-108.10459,68.169287],[-108.261035,68.149902],[-108.322803,68.154102],[-108.36792,68.177539],[-108.686572,68.277344],[-108.718115,68.297461],[-108.640918,68.378516],[-108.345752,68.597803],[-108.313477,68.610791],[-107.766357,68.648926],[-107.435938,68.688867],[-106.830664,68.809473],[-106.713477,68.819482],[-106.324268,68.899463],[-106.164453,68.919873],[-106.015674,68.906055],[-105.797949,68.864795],[-105.685596,68.828174],[-105.606055,68.782422],[-105.539844,68.718652],[-105.456934,68.578076],[-105.428613,68.458252],[-105.377441,68.413818],[-105.194971,68.330371],[-105.101318,68.297998],[-105.043604,68.287891],[-104.993799,68.307422],[-104.959814,68.310547],[-104.936719,68.303027],[-104.911963,68.250488],[-104.879443,68.245264],[-104.769629,68.251758],[-104.653174,68.230078],[-104.636377,68.213916],[-104.661133,68.148779],[-104.628174,68.121484],[-104.486816,68.063184],[-104.350732,68.041211],[-104.193555,68.031201],[-103.901563,68.041064],[-103.657227,68.069092],[-103.474121,68.115039],[-103.323242,68.063818],[-103.021777,67.940234],[-102.841553,67.852734],[-102.691992,67.811572],[-102.389111,67.762207],[-102.320361,67.735645],[-102.209766,67.732715],[-102.057227,67.75332],[-101.883643,67.745313],[-101.688867,67.708643],[-101.55498,67.693164],[-101.096387,67.762354],[-101.026416,67.765674],[-100.855615,67.798975],[-100.745605,67.809082],[-100.616113,67.808252],[-100.519629,67.818408],[-100.456104,67.839453],[-100.212939,67.838574],[-99.772949,67.814844],[-99.472266,67.784082],[-99.293555,67.745313],[-99.146875,67.723633],[-99.032178,67.718848],[-98.920459,67.725781],[-98.811719,67.744434],[-98.697266,67.779736],[-98.452783,67.7979],[-98.412109,67.807178],[-98.417139,67.826465],[-98.467822,67.855811],[-98.606494,67.911426],[-98.703564,67.965723],[-98.722217,68.000195],[-98.720068,68.041992],[-98.689844,68.066113],[-98.631543,68.072559],[-98.539844,68.046631],[-98.414795,67.988428],[-98.062549,67.769678],[-97.977637,67.738623],[-97.930762,67.710791],[-97.607422,67.631055],[-97.454932,67.616992],[-97.274268,67.66626],[-97.194434,67.696924],[-97.15542,67.726416],[-97.157178,67.754834],[-97.139844,67.79624],[-97.158057,67.821924],[-97.206543,67.855078],[-97.336133,67.901367],[-97.546631,67.960742],[-97.739111,67.978174],[-97.91333,67.953564],[-98.110498,67.903027],[-98.192529,67.922998],[-98.438379,68.064697],[-98.500293,68.117676],[-98.500244,68.132275],[-98.386084,68.115332],[-98.380859,68.132471],[-98.44917,68.200781],[-98.49126,68.223633],[-98.633008,68.331152],[-98.650488,68.363525],[-98.562256,68.37085],[-98.522217,68.383398],[-98.468555,68.382129],[-98.218555,68.317432],[-98.090527,68.346338],[-97.794238,68.387598],[-97.911035,68.449512],[-97.938867,68.510449],[-97.925098,68.523682],[-97.828564,68.532764],[-97.639551,68.481982],[-97.548047,68.474951],[-97.481104,68.495166],[-97.410352,68.496533],[-97.335791,68.47915],[-97.265918,68.45293],[-97.135986,68.377979],[-97.071777,68.332861],[-96.999561,68.264941],[-96.976709,68.25542],[-96.628174,68.250293],[-96.430664,68.310596],[-96.434961,68.290088],[-96.480225,68.242822],[-96.725146,68.06123],[-96.72207,68.03877],[-96.592188,68.048437],[-96.531299,68.063135],[-96.493701,68.084961],[-96.461182,68.13584],[-96.439355,68.150879],[-96.075586,68.236523],[-95.970312,68.249121],[-96.036035,68.157764],[-96.171338,67.831689],[-96.198828,67.717822],[-96.228467,67.679199],[-96.371387,67.553857],[-96.369141,67.509766],[-96.212842,67.404297],[-96.18501,67.375586],[-96.169238,67.288965],[-96.141455,67.271826],[-96.012598,67.270898],[-95.879102,67.298486],[-95.719922,67.316797],[-95.695166,67.29873],[-95.78252,67.193799],[-95.777686,67.184619],[-95.626416,67.211572],[-95.557031,67.215283],[-95.528711,67.20918],[-95.415918,67.155566],[-95.40459,67.115576],[-95.406982,67.056104],[-95.418896,67.013232],[-95.456982,66.989453],[-95.502246,66.979883],[-95.559375,66.972754],[-95.610645,66.975684],[-95.768652,66.966699],[-95.861816,66.978174],[-95.954053,67.010889],[-96.019531,67.01875],[-96.095459,66.993555],[-96.215576,66.997705],[-96.350439,67.07002],[-96.404248,67.063232],[-96.422559,67.051758],[-96.420264,67.036182],[-96.359521,66.989404],[-95.885303,66.741357],[-95.813281,66.690137],[-95.797363,66.616553],[-95.787549,66.616797],[-95.743164,66.69043],[-95.772119,66.726074],[-96.016113,66.870459],[-96.045361,66.923145],[-96.036865,66.9375],[-95.972363,66.952246],[-95.625049,66.91626],[-95.490381,66.924121],[-95.399658,66.949463],[-95.354102,66.980713],[-95.321094,67.15249],[-95.25874,67.262549],[-95.295605,67.361035],[-95.389551,67.517822],[-95.463379,67.610205],[-95.633691,67.703857],[-95.650488,67.737451],[-95.460693,68.021387],[-95.426514,68.045264],[-95.384082,68.055566],[-95.234717,68.059717],[-95.125879,68.083301],[-94.955225,68.050293],[-94.861035,68.04165],[-94.744434,68.070898],[-94.485303,68.190088],[-94.383838,68.227002],[-94.254785,68.296826],[-94.098145,68.399414],[-93.927734,68.473828],[-93.651709,68.543115],[-93.483008,68.598877],[-93.448926,68.618896],[-93.605811,68.623682],[-93.643945,68.633105],[-93.676172,68.685986],[-93.659863,68.78374],[-93.662793,68.838184],[-93.681445,68.887256],[-93.715771,68.931055],[-93.765723,68.96958],[-93.811328,68.992676],[-93.852441,69.000342],[-93.880713,68.996826],[-93.896094,68.982178],[-93.938086,68.889063],[-93.991553,68.820605],[-94.064893,68.784766],[-94.216943,68.760547],[-94.47832,68.742773],[-94.586768,68.775537],[-94.600439,68.803223],[-94.562549,68.91167],[-94.475635,68.958154],[-94.236621,69.049756],[-94.083643,69.123096],[-94.081152,69.13584],[-94.221826,69.136377],[-94.255371,69.151465],[-94.284961,69.241602],[-94.276758,69.275244],[-94.254736,69.31377],[-94.156348,69.341748],[-93.854395,69.376367],[-93.619482,69.416992],[-93.612646,69.402832],[-93.800977,69.280908],[-93.820459,69.252637],[-93.748535,69.226123],[-93.56748,69.296875],[-93.450586,69.355176],[-93.430957,69.375049],[-93.537061,69.382324],[-93.542871,69.406445],[-93.522412,69.450684],[-93.532275,69.480908],[-93.649805,69.519043],[-93.794385,69.497852],[-93.915088,69.457666],[-94.015283,69.446729],[-94.163184,69.445947],[-94.270801,69.455127],[-94.338135,69.474268],[-94.419189,69.517041],[-94.513916,69.583447],[-94.633838,69.649658],[-94.67627,69.656885],[-94.712695,69.649414],[-94.789258,69.585449],[-94.82251,69.577783],[-95.29209,69.667383],[-95.49126,69.717627],[-95.587598,69.755713],[-95.707422,69.778223],[-95.850684,69.785107],[-95.964941,69.802783],[-96.050146,69.831152],[-96.119092,69.871875],[-96.171777,69.924951],[-96.269385,69.991797],[-96.492383,70.124902],[-96.551367,70.210303],[-96.55957,70.243018],[-96.545605,70.327246],[-96.336572,70.470166],[-96.297705,70.511377],[-96.226416,70.541699],[-96.122754,70.56123],[-96.048145,70.56709],[-95.878613,70.548975],[-95.980176,70.593213],[-95.988184,70.616846],[-95.886328,70.694287],[-95.906396,70.697754],[-96.186426,70.638281],[-96.258008,70.642285],[-96.358887,70.678662],[-96.548926,70.80874],[-96.551074,70.889746],[-96.491309,71.002344],[-96.47041,71.069727],[-96.524756,71.127051],[-96.504443,71.143164],[-96.445459,71.159229],[-96.420752,71.176465],[-96.446582,71.239893],[-96.405664,71.273633],[-96.271338,71.339111],[-96.139648,71.396387],[-96.062012,71.413867],[-95.994434,71.410645],[-95.924072,71.393066],[-95.850879,71.361084],[-95.725391,71.328174],[-95.632568,71.318799],[-95.564258,71.336768],[-95.44751,71.460059],[-95.40625,71.49165],[-95.44541,71.505371],[-95.674219,71.504053],[-95.773389,71.514258],[-95.830371,71.526074],[-95.872314,71.573145],[-95.837744,71.598242],[-95.615918,71.6854],[-95.51167,71.776807],[-95.201221,71.903711],[-94.886963,71.963379],[-94.734863,71.982959],[-94.611133,71.986865],[-94.55708,71.978955],[-94.491064,71.915527],[-94.478809,71.848584],[-94.30835,71.764893],[-94.17124,71.758447],[-94.085986,71.771143],[-93.810205,71.76626],[-93.746289,71.742822],[-93.750879,71.71665],[-93.781641,71.674316],[-93.762842,71.638037],[-93.575879,71.568701],[-93.407471,71.520703],[-93.256348,71.46084],[-93.031299,71.335693],[-92.982568,71.300342],[-92.948682,71.262109],[-92.890186,71.122363],[-92.882715,71.069336],[-92.904199,70.916064],[-92.921973,70.887109],[-92.981445,70.852246],[-92.960889,70.838135],[-92.783008,70.798145],[-92.641699,70.718799],[-92.56748,70.693213],[-92.388477,70.650439],[-92.355811,70.634277],[-92.315381,70.60752],[-92.214453,70.49292],[-92.049121,70.389648],[-92.037207,70.367383],[-92.072607,70.31875],[-92.047363,70.30332],[-91.983545,70.285547],[-91.926221,70.294775],[-91.875537,70.331152],[-91.82041,70.34165],[-91.76084,70.32627],[-91.715625,70.299219],[-91.654053,70.232959],[-91.564062,70.178271],[-91.571631,70.161572],[-91.616113,70.147852],[-91.858594,70.132666],[-91.994971,70.143213],[-92.121045,70.169922],[-92.208643,70.19751],[-92.290332,70.239844],[-92.320508,70.235352],[-92.363281,70.20083],[-92.454687,70.150439],[-92.511865,70.103857],[-92.445752,70.083154],[-92.127002,70.084521],[-92.057715,70.071436],[-91.976709,70.038672],[-92.069043,69.983984],[-92.284766,69.892139],[-92.750928,69.713916],[-92.887793,69.668213],[-92.854541,69.654883],[-92.802637,69.651465],[-92.642822,69.659277],[-92.493457,69.683203],[-92.31167,69.6729],[-92.230762,69.653369],[-92.258301,69.634326],[-92.209082,69.60332],[-91.911963,69.53125],[-91.724121,69.545605],[-91.532373,69.615039],[-91.384229,69.649463],[-91.201807,69.644775],[-91.150879,69.637158],[-91.170312,69.620313],[-91.305029,69.581299],[-91.426855,69.537939],[-91.439941,69.525684],[-91.288135,69.543213],[-90.950195,69.515479],[-90.785742,69.508594],[-90.66665,69.515527],[-90.554932,69.504492],[-90.450537,69.475439],[-90.415576,69.456982],[-90.513281,69.445117],[-90.605566,69.445312],[-90.683984,69.427734],[-90.748535,69.39248],[-90.79458,69.346729],[-90.822119,69.290479],[-90.892285,69.267285],[-91.00498,69.2771],[-91.049219,69.293018],[-91.024854,69.315234],[-91.057764,69.318408],[-91.147852,69.302588],[-91.217969,69.3021],[-91.237207,69.285547],[-90.744775,69.105908],[-90.587305,68.946875],[-90.479004,68.881152],[-90.468359,68.86377],[-90.538965,68.81958],[-90.542529,68.785986],[-90.510156,68.688867],[-90.525244,68.611279],[-90.573633,68.474707],[-90.52832,68.432227],[-90.423047,68.394727],[-90.360059,68.346729],[-90.317236,68.330322],[-90.285254,68.29165],[-90.247754,68.267432],[-90.204785,68.257471],[-90.174414,68.270215],[-90.156836,68.305518],[-90.116406,68.338574],[-90.005322,68.398047],[-89.897705,68.490771],[-89.879492,68.521533],[-89.896582,68.594385],[-89.884229,68.625586],[-89.783105,68.735938],[-89.75083,68.812451],[-89.720166,68.931592],[-89.666602,69.0146],[-89.552002,69.084912],[-89.351904,69.227002],[-89.279541,69.255469],[-89.198486,69.269482],[-89.056738,69.266113],[-88.953516,69.22041],[-88.814551,69.135889],[-88.637744,69.058838],[-88.315527,68.954443],[-88.223535,68.915039],[-88.041357,68.811719],[-87.964355,68.709277],[-87.911523,68.564697],[-87.865967,68.477637],[-87.827734,68.448096],[-87.810303,68.40415],[-87.813574,68.345703],[-87.82793,68.299951],[-87.853271,68.266895],[-87.892676,68.248145],[-87.990967,68.242041],[-88.111133,68.251172],[-88.145801,68.266016],[-88.209082,68.334863],[-88.235254,68.339063],[-88.346973,68.288281],[-88.360693,68.259863],[-88.319629,68.165771],[-88.325098,67.98877],[-88.313818,67.950342],[-88.195898,67.76582],[-87.997168,67.625684],[-87.499121,67.355322],[-87.470801,67.324609],[-87.41792,67.21416],[-87.391943,67.191064],[-87.359375,67.177246],[-87.320264,67.172852],[-87.26626,67.183838],[-87.083203,67.267773],[-86.923926,67.35625],[-86.812793,67.402393],[-86.749854,67.406104],[-86.682031,67.422314],[-86.609375,67.45083],[-86.560791,67.482129],[-86.536426,67.516162],[-86.503516,67.649463],[-86.475537,67.713135],[-86.398047,67.800098],[-86.369678,67.824805],[-85.984473,68.045361],[-85.952588,68.072461],[-85.788867,68.328027],[-85.731104,68.44502],[-85.722803,68.515479],[-85.744873,68.578271],[-85.733838,68.630127],[-85.689795,68.670947],[-85.643164,68.699707],[-85.562451,68.728809],[-85.517773,68.769824],[-85.491064,68.773975],[-85.425049,68.774268],[-85.338086,68.746289],[-85.275098,68.741357],[-84.867578,68.77334],[-84.86748,68.790381],[-85.106641,68.844043],[-85.104346,68.870947],[-85.083398,68.90791],[-85.008301,68.949219],[-84.916064,68.962256],[-84.895312,68.988525],[-84.892725,69.020996],[-84.862207,69.073975],[-84.890039,69.092773],[-85.113525,69.165869],[-85.242627,69.162744],[-85.275488,69.172314],[-85.386768,69.231885],[-85.427539,69.318408],[-85.431934,69.353857],[-85.416406,69.410889],[-85.402246,69.426758],[-85.40918,69.45249],[-85.437207,69.488232],[-85.439502,69.519922],[-85.415967,69.547754],[-85.430127,69.580664],[-85.482031,69.61875],[-85.502441,69.651514],[-85.4479,69.748145],[-85.446094,69.777783],[-85.497461,69.819043],[-85.534814,69.835059],[-85.507373,69.845264],[-85.415137,69.849512],[-85.30498,69.836133],[-85.176807,69.805127],[-85.019824,69.804785],[-84.833984,69.835059],[-84.645117,69.849707],[-84.318799,69.843701],[-84.24165,69.83501],[-83.917187,69.745361],[-83.665332,69.699707],[-83.551709,69.703955],[-82.991357,69.685889],[-82.745605,69.695117],[-82.618359,69.691064],[-82.37417,69.641797],[-82.390234,69.600879],[-82.495703,69.532227],[-82.633301,69.518115],[-82.754834,69.494385],[-82.642041,69.458398],[-82.309863,69.41001],[-82.231836,69.332568],[-82.208154,69.297021],[-82.246777,69.26499],[-82.227539,69.248877],[-82.150537,69.248877],[-81.951807,69.276074],[-81.732178,69.258105],[-81.412305,69.198145],[-81.377832,69.185645],[-81.321582,69.138916],[-81.328662,69.119922],[-81.611426,69.003027],[-81.75835,68.956738],[-81.95166,68.909082],[-81.95791,68.883643],[-81.686914,68.878955],[-81.476025,68.865576],[-81.380908,68.850049],[-81.331299,68.827979],[-81.263525,68.780615],[-81.25249,68.743164],[-81.259131,68.692432],[-81.281543,68.657227],[-81.526855,68.555957],[-81.639502,68.524365],[-81.831396,68.486865],[-81.914844,68.458789],[-82.006494,68.462646],[-82.106348,68.498535],[-82.210156,68.50625],[-82.397217,68.477588],[-82.49873,68.478613],[-82.548633,68.468604],[-82.552686,68.446484],[-82.46416,68.382422],[-82.412988,68.357178],[-82.392871,68.33833],[-82.430664,68.306592],[-82.422705,68.296582],[-82.392529,68.285254],[-82.222412,68.145264],[-82.186572,68.134424],[-82.151318,68.139697],[-82.077637,68.179688],[-82.033887,68.195947],[-82.0125,68.193896],[-82.013379,68.173389],[-82.091895,68.051465],[-82.102148,68.018896],[-82.100488,67.989844],[-82.062549,67.928174],[-81.976465,67.862012],[-81.869336,67.80249],[-81.708594,67.722363],[-81.492773,67.636914],[-81.412305,67.595361],[-81.294336,67.497412],[-81.270117,67.459912],[-81.301074,67.356982],[-81.387207,67.188574],[-81.442725,67.092871],[-81.467578,67.069873],[-81.630078,67.002002],[-81.722363,66.986084],[-81.874463,66.987939],[-81.925537,66.974707],[-82.005078,66.92041],[-82.113184,66.825098],[-82.19834,66.764648],[-82.260547,66.739111],[-82.374756,66.709424],[-82.553662,66.621387],[-82.641504,66.5875],[-82.948877,66.55083],[-83.198779,66.431494],[-83.298389,66.392139],[-83.406445,66.37124],[-83.523096,66.36875],[-83.590283,66.387842],[-83.628369,66.460693],[-83.651074,66.484619],[-83.739209,66.534375],[-83.920215,66.679053],[-83.998047,66.728516],[-84.05,66.739502],[-84.154443,66.731689],[-84.208008,66.736328],[-84.324365,66.781787],[-84.36626,66.811133],[-84.361084,66.822559],[-84.272559,66.839209],[-84.310352,66.862744],[-84.466064,66.927441],[-84.530664,66.961328],[-84.538477,66.972803],[-84.692578,67.016602],[-84.845752,67.028711],[-85.040039,66.956055],[-85.113721,66.906934],[-85.111279,66.890918],[-85.018262,66.87207],[-84.977979,66.88125],[-84.899023,66.926563],[-84.857373,66.940674],[-84.737744,66.933594],[-84.638574,66.902344],[-84.602539,66.875146],[-84.589502,66.856641],[-84.318945,66.711816],[-84.223047,66.682471],[-84.183105,66.647852],[-84.152734,66.590234],[-84.094238,66.526221],[-83.964209,66.420557],[-83.82583,66.28999],[-83.797559,66.238477],[-83.869043,66.213574],[-83.905078,66.211768],[-84.01167,66.231201],[-84.293066,66.291797],[-84.324268,66.290674],[-84.398437,66.25874],[-84.459375,66.18623],[-84.478418,66.179297],[-84.628076,66.207715],[-84.908398,66.271338],[-85.096191,66.325342],[-85.191504,66.369678],[-85.306836,66.440332],[-85.442236,66.537354],[-85.603857,66.568262],[-85.791748,66.532959],[-86.063232,66.520361],[-86.633203,66.531348],[-86.708154,66.523047],[-86.737109,66.510889],[-86.688623,66.457471],[-86.700146,66.442773],[-86.738379,66.432861],[-86.746973,66.41709],[-86.685107,66.3604],[-86.584766,66.321924],[-86.301025,66.269922],[-86.113086,66.225293],[-86.00083,66.186816],[-85.964258,66.154443],[-85.95874,66.119043],[-86.012256,66.048486],[-86.042871,66.022559],[-86.701953,65.670557],[-86.953174,65.528271],[-87.081104,65.44082],[-87.193799,65.383057],[-87.291455,65.354834],[-87.452881,65.338965],[-87.678125,65.335352],[-87.969971,65.348926],[-88.120996,65.39458],[-88.394873,65.516211],[-88.586719,65.587646],[-88.672461,65.611572],[-88.743945,65.67876],[-88.808496,65.69165],[-88.946143,65.703027],[-89.087744,65.738965],[-89.420361,65.860791],[-89.592676,65.909326],[-89.749414,65.936035],[-89.890479,65.94082],[-89.943994,65.933594],[-89.847754,65.872266],[-89.889697,65.868555],[-90.003809,65.882568],[-90.116602,65.882422],[-90.31626,65.926367],[-90.513281,65.920508],[-90.655469,65.929346],[-90.825732,65.953857],[-91.009521,65.965723],[-91.305469,65.964551],[-91.411523,65.959375],[-91.427246,65.9479],[-91.285156,65.894434],[-91.041113,65.829834],[-91.073633,65.885547],[-91.064941,65.899902],[-90.983447,65.919238],[-90.596826,65.884814],[-90.158643,65.812695],[-90.047559,65.805615],[-89.924072,65.780273],[-89.787988,65.736719],[-89.600391,65.647754],[-89.241748,65.446387],[-89.126562,65.395605],[-88.974023,65.348291],[-88.197803,65.279883],[-87.929541,65.280322],[-87.391943,65.260547],[-87.108008,65.224805],[-87.027539,65.198096],[-87.002686,65.108594],[-87.028516,65.063623],[-87.18291,64.926807],[-87.280518,64.826172],[-87.88501,64.400439],[-87.963574,64.30249],[-87.997559,64.243945],[-88.105615,64.183301],[-88.378955,64.089258],[-88.653027,64.009375],[-88.817725,63.992236],[-88.964404,64.01123],[-89.059619,64.034424],[-89.200635,64.11377],[-89.209424,64.10542],[-89.107666,63.981104],[-89.131543,63.968506],[-89.214551,63.984131],[-89.403516,64.03999],[-89.464746,64.029687],[-89.500928,64.014502],[-89.551318,64.014795],[-89.61582,64.030615],[-89.732715,64.076953],[-89.763818,64.099512],[-89.79209,64.168262],[-89.811328,64.180566],[-90.04165,64.140869],[-90.080029,64.127734],[-89.985596,64.100195],[-89.953564,64.080615],[-89.860596,63.978809],[-89.855713,63.956982],[-89.921875,63.943555],[-90.141895,63.981982],[-90.168164,63.97876],[-90.059619,63.87749],[-90.017969,63.829346],[-90.013428,63.804297],[-90.154736,63.689648],[-90.245313,63.641895],[-90.368848,63.624414],[-90.44624,63.636182],[-90.533496,63.66543],[-90.596387,63.661279],[-90.63501,63.623779],[-90.706836,63.596924],[-90.811914,63.580908],[-90.945654,63.587842],[-91.108057,63.617822],[-91.538818,63.725586],[-91.674658,63.742236],[-91.926025,63.75708],[-91.956006,63.772314],[-91.953809,63.786816],[-91.919434,63.800586],[-91.928906,63.812451],[-91.982227,63.822412],[-92.037598,63.813037],[-92.094873,63.784424],[-92.195215,63.775977],[-92.338428,63.787646],[-92.550098,63.829541],[-92.970215,63.937646],[-93.429688,64.028809],[-93.696338,64.147168],[-93.596729,64.040576],[-93.604883,64.004492],[-93.655811,63.972803],[-93.66416,63.941406],[-93.559814,63.865283],[-93.415576,63.837988],[-93.270215,63.840869],[-93.266211,63.85332],[-93.326855,63.872266],[-93.380273,63.900049],[-93.405859,63.941211],[-93.378516,63.948486],[-93.250439,63.926904],[-93.165918,63.901758],[-92.529248,63.76123],[-92.339209,63.734912],[-92.196484,63.707812],[-92.156885,63.691699],[-92.205029,63.656787],[-92.461035,63.569434],[-92.465088,63.555078],[-92.289551,63.562988],[-92.076611,63.63999],[-91.956836,63.675635],[-91.841846,63.697559],[-91.686035,63.659717],[-91.489307,63.562207],[-91.330078,63.506836],[-91.103076,63.475879],[-90.970068,63.442773],[-90.746582,63.351563],[-90.711279,63.304053],[-90.690723,63.110547],[-90.698584,63.063867],[-90.727637,63.01748],[-90.777881,62.971631],[-90.871191,62.945947],[-91.007715,62.94043],[-91.114893,62.921582],[-91.349463,62.818896],[-91.448975,62.804053],[-91.869629,62.834717],[-92.034229,62.863428],[-92.110059,62.861719],[-92.1521,62.839063],[-92.196143,62.828809],[-92.361279,62.819385],[-92.388135,62.800879],[-92.377734,62.772412],[-92.345264,62.733838],[-92.305176,62.71167],[-92.243164,62.683643],[-92.149121,62.665283],[-91.955859,62.644775],[-91.93584,62.592383],[-91.944434,62.575488],[-92.007861,62.540527],[-92.081152,62.544092],[-92.207227,62.585352],[-92.269531,62.586963],[-92.324072,62.5646],[-92.4,62.557227],[-92.497363,62.564844],[-92.551416,62.546729],[-92.562207,62.502881],[-92.594971,62.470068],[-92.707422,62.418213],[-92.767969,62.37998],[-92.765967,62.349951],[-92.701465,62.328223],[-92.627441,62.279053],[-92.544043,62.202295],[-92.527979,62.168408],[-92.579199,62.177344],[-92.648096,62.207764],[-92.734766,62.259717],[-92.86582,62.306201],[-93.154443,62.366846],[-93.205371,62.364941],[-93.179248,62.349561],[-92.987793,62.285937],[-92.914453,62.244971],[-92.905518,62.215137],[-93.065869,62.149756],[-93.070264,62.127832],[-93.027734,62.108643],[-93.01626,62.092676],[-93.073389,62.060547],[-93.16748,62.033643],[-93.349756,62.029785],[-93.366357,62.014551],[-93.296875,61.981592],[-93.273437,61.961084],[-93.333057,61.93291],[-93.372021,61.928955],[-93.581787,61.942041],[-93.526709,61.871631],[-93.494238,61.846924],[-93.429932,61.812109],[-93.314404,61.779785],[-93.312012,61.767285],[-93.352344,61.739551],[-93.420605,61.705811],[-93.709668,61.602539],[-93.912744,61.481445],[-93.940869,61.443652],[-93.889258,61.364062],[-93.888818,61.344043],[-93.941992,61.308008],[-94.060742,61.317822],[-94.083447,61.303662],[-94.055225,61.266162],[-94.049951,61.211279],[-94.067773,61.138867],[-94.154053,61.025439],[-94.308691,60.870996],[-94.427197,60.730713],[-94.509375,60.604541],[-94.568896,60.541992],[-94.67876,60.537695],[-94.761719,60.498242],[-94.705273,60.477539],[-94.670654,60.45332],[-94.646777,60.416406],[-94.67041,60.301074],[-94.741602,60.107373],[-94.785791,59.95332],[-94.77666,59.478125],[-94.788281,59.267871],[-94.819531,59.151318],[-94.870264,59.087988],[-94.957324,59.068848],[-94.846582,59.050342],[-94.776172,59.020605],[-94.74375,58.975439],[-94.713379,58.90332],[-94.673389,58.870117],[-94.62373,58.875732],[-94.579199,58.868457],[-94.539697,58.848389],[-94.419238,58.745508],[-94.287061,58.716016],[-94.280811,58.658936],[-94.332617,58.339111],[-94.332227,58.297363],[-94.272168,58.378027],[-94.208936,58.626367],[-94.123193,58.736719],[-94.055762,58.76001],[-93.780029,58.772559],[-93.486182,58.744482],[-93.375049,58.741016],[-93.278125,58.756396],[-93.17876,58.725635],[-93.15459,58.69458],[-93.126514,58.564404],[-93.100195,58.489844],[-92.925146,58.224512],[-92.841748,58.075879],[-92.739844,57.844043],[-92.70166,57.777783],[-92.489648,57.468604],[-92.449414,57.384863],[-92.432812,57.320312],[-92.439795,57.275049],[-92.478369,57.205273],[-92.548486,57.110937],[-92.614111,57.039014],[-92.675244,56.989551],[-92.737988,56.952637],[-92.802393,56.92832],[-92.798145,56.921973],[-92.725293,56.933545],[-92.650977,56.958301],[-92.510303,57.022314],[-92.456299,57.036719],[-92.303369,57.04585],[-92.298291,57.022754],[-92.372119,56.975146],[-92.355713,56.970605],[-92.249023,57.008984],[-92.018018,57.06377],[-91.111279,57.241211],[-90.897461,57.256934],[-90.592187,57.224463],[-90.344824,57.149072],[-90.075195,57.051904],[-89.79082,56.981348],[-89.342334,56.91543],[-89.211572,56.883838],[-88.948486,56.851318],[-88.826465,56.814258],[-88.679883,56.725049],[-88.44707,56.608691],[-88.271338,56.535693],[-88.075098,56.467285],[-87.878125,56.341602],[-87.560889,56.056348],[-87.482422,56.021289],[-87.286865,55.974658],[-86.919385,55.914551],[-86.376953,55.773242],[-86.138672,55.717871],[-85.984473,55.695898],[-85.830518,55.656934],[-85.67666,55.601074],[-85.559326,55.540186],[-85.478467,55.474268],[-85.407275,55.431152],[-85.282715,55.383301],[-85.218018,55.348975],[-85.212012,55.297461],[-85.362012,55.095459],[-85.365283,55.079297],[-85.213574,55.224365],[-85.128857,55.266211],[-85.060938,55.285645],[-84.919922,55.28335],[-84.705762,55.259229],[-84.517969,55.258887],[-84.356494,55.28252],[-84.218945,55.293115],[-84.105371,55.29082],[-84.022998,55.297803],[-83.971777,55.31416],[-83.910596,55.314648],[-83.667676,55.264502],[-83.569482,55.261816],[-83.214355,55.2146],[-82.986279,55.231396],[-82.947021,55.222217],[-82.867773,55.160693],[-82.800684,55.155908],[-82.6875,55.165527],[-82.577441,55.14873],[-82.393262,55.067822],[-82.308252,54.998145],[-82.226611,54.855908],[-82.219385,54.813477],[-82.370605,54.483496],[-82.418066,54.355811],[-82.42417,54.24458],[-82.394141,54.180469],[-82.263574,54.072998],[-82.239893,54.044824],[-82.162646,53.885693],[-82.141455,53.817627],[-82.15,53.739551],[-82.190625,53.610937],[-82.180371,53.512842],[-82.146191,53.3646],[-82.15918,53.26416],[-82.219238,53.211475],[-82.259912,53.159814],[-82.291602,53.066113],[-82.291553,53.030713],[-82.260449,52.961133],[-82.202686,52.92168],[-82.107959,52.877393],[-82.02002,52.811621],[-81.859277,52.651416],[-81.742334,52.563623],[-81.599414,52.432617],[-81.57168,52.367285],[-81.611523,52.324072],[-81.66123,52.293896],[-81.776367,52.253613],[-81.827881,52.224219],[-81.814551,52.217188],[-81.647998,52.239063],[-81.549512,52.236768],[-81.466211,52.204492],[-81.398096,52.142236],[-81.285059,52.089209],[-81.127197,52.04541],[-80.968506,51.972217],[-80.705518,51.79834],[-80.657959,51.75835],[-80.588037,51.667236],[-80.49585,51.525098],[-80.447607,51.432227],[-80.443311,51.388574],[-80.495508,51.344678],[-80.672705,51.264746],[-80.851221,51.125],[-80.794971,51.131836],[-80.677246,51.190869],[-80.47832,51.307324],[-80.367969,51.329883],[-80.265674,51.316357],[-80.103564,51.282861],[-79.9604,51.235156],[-79.83623,51.17334],[-79.651514,51.007813],[-79.456152,50.875586],[-79.3479,50.762646],[-79.380713,50.834521],[-79.452637,50.917285],[-79.636182,51.049023],[-79.714453,51.117578],[-79.731396,51.150488],[-79.737451,51.186279],[-79.723242,51.25166],[-79.688818,51.346582],[-79.642969,51.413525],[-79.585742,51.452441],[-79.547461,51.493848],[-79.528027,51.537695],[-79.497559,51.569922],[-79.338672,51.628174],[-79.296973,51.622803],[-79.264258,51.552002],[-79.226123,51.537305],[-79.152734,51.526221],[-79.090869,51.501709],[-79.040527,51.46377],[-79.005029,51.425342],[-78.984326,51.386377],[-78.936914,51.259131],[-78.903174,51.200293],[-78.89751,51.27168],[-78.858008,51.383936],[-78.827441,51.42998],[-78.731348,51.497461],[-78.736426,51.526611],[-78.776318,51.565771],[-78.977734,51.733789],[-78.981641,51.774561],[-78.927881,51.798828],[-78.891113,51.845117],[-78.87124,51.913428],[-78.828223,51.962988],[-78.702002,52.032715],[-78.593311,52.139697],[-78.537354,52.213281],[-78.49165,52.2521],[-78.448096,52.261377],[-78.513086,52.291113],[-78.526074,52.310693],[-78.529102,52.39917],[-78.55708,52.491895],[-78.600586,52.535107],[-78.723779,52.627734],[-78.744141,52.655371],[-78.765771,52.760059],[-78.753613,52.812402],[-78.72168,52.856445],[-78.739844,52.898975],[-78.854102,52.976074],[-78.898242,53.043359],[-78.947119,53.206201],[-78.992041,53.410352],[-79.043115,53.560498],[-79.100342,53.656641],[-79.113135,53.717188],[-79.081445,53.742285],[-79.040332,53.817969],[-79.003174,53.836572],[-78.945703,53.831592],[-78.944385,53.840234],[-79.032031,53.881055],[-79.075146,53.932373],[-79.073291,53.951416],[-78.996045,54.00249],[-79.009912,54.023975],[-79.067139,54.051953],[-79.241797,54.098877],[-79.178809,54.116943],[-79.138818,54.157227],[-79.146729,54.169238],[-79.215967,54.185693],[-79.295654,54.216846],[-79.356152,54.263379],[-79.430566,54.336621],[-79.475977,54.394775],[-79.520654,54.491553],[-79.597949,54.60166],[-79.631738,54.629102],[-79.67041,54.646826],[-79.713965,54.65498],[-79.712354,54.671826],[-79.665527,54.697461],[-78.909229,54.881494],[-78.84624,54.908008],[-78.475049,55.011035],[-78.303613,55.068555],[-78.128857,55.151318],[-77.891113,55.236426],[-77.775293,55.29126],[-77.702148,55.344189],[-77.324951,55.555518],[-77.165088,55.663525],[-77.072559,55.756299],[-76.938086,55.867236],[-76.761816,55.996436],[-76.650488,56.107227],[-76.604053,56.199561],[-76.546387,56.358789],[-76.529834,56.499951],[-76.519629,56.706982],[-76.525586,56.891797],[-76.572852,57.181201],[-76.601416,57.272266],[-76.65542,57.380566],[-76.786279,57.598584],[-76.809814,57.657959],[-76.890918,57.758105],[-77.156787,58.018896],[-77.48916,58.195313],[-77.552441,58.2396],[-77.684082,58.291357],[-77.884131,58.350732],[-78.013574,58.39917],[-78.351709,58.580664],[-78.462988,58.602441],[-78.505908,58.649121],[-78.515088,58.682373],[-78.502295,58.769092],[-78.482617,58.829102],[-78.458691,58.873291],[-78.430518,58.901758],[-78.244434,59.035059],[-78.140234,59.141748],[-78.067676,59.200195],[-77.987646,59.245508],[-77.842822,59.305029],[-77.760693,59.380029],[-77.779443,59.4104],[-77.844678,59.443506],[-77.859033,59.475781],[-77.749023,59.558154],[-77.733496,59.580957],[-77.74751,59.658496],[-77.726172,59.675879],[-77.59043,59.680518],[-77.39668,59.569238],[-77.349072,59.578955],[-77.411035,59.609619],[-77.485303,59.68457],[-77.474561,59.715674],[-77.331641,59.796631],[-77.327637,59.833398],[-77.368408,59.884375],[-77.372949,59.925098],[-77.289209,60.022021],[-77.311816,60.042383],[-77.547168,60.061133],[-77.585889,60.088184],[-77.572168,60.100977],[-77.461377,60.133496],[-77.452881,60.145801],[-77.648633,60.3625],[-77.681445,60.4271],[-77.598145,60.506738],[-77.503564,60.542725],[-77.515576,60.563184],[-77.639453,60.566895],[-77.71499,60.577783],[-77.79082,60.639844],[-77.76123,60.679053],[-77.734229,60.696973],[-77.660645,60.789502],[-77.589551,60.808594],[-77.603027,60.825195],[-77.871533,60.78584],[-77.998145,60.818213],[-78.122461,60.809619],[-78.181348,60.819141],[-78.159668,60.852197],[-77.93418,61.002637],[-77.830127,61.084033],[-77.765039,61.15752],[-77.730615,61.206396],[-77.726807,61.230664],[-77.749609,61.393018],[-77.736182,61.437354],[-77.648877,61.478662],[-77.514355,61.556299],[-77.698438,61.626416],[-77.81377,61.694775],[-77.889893,61.728711],[-77.947559,61.761865],[-78.021387,61.83208],[-78.07749,61.923389],[-78.137158,62.107373],[-78.146973,62.208691],[-78.133398,62.282275],[-78.108594,62.318115],[-78.068115,62.35542],[-77.899902,62.426563],[-77.603955,62.531396],[-77.372412,62.57251],[-77.205273,62.549951],[-76.879395,62.525391],[-76.616357,62.465674],[-75.816895,62.315869],[-75.675537,62.249512],[-75.809229,62.193408],[-75.789844,62.17959],[-75.488818,62.286426],[-75.409229,62.30708],[-75.341211,62.312109],[-75.114014,62.270752],[-75.022754,62.264453],[-74.907568,62.230029],[-74.632568,62.115674],[-74.612891,62.125195],[-74.689893,62.183447],[-74.645801,62.211133],[-74.429199,62.271826],[-74.205469,62.321387],[-74.046484,62.37002],[-73.877832,62.434375],[-73.763965,62.46875],[-73.705078,62.473145],[-73.62998,62.454199],[-73.428369,62.368848],[-73.298975,62.325049],[-73.195166,62.27915],[-73.049365,62.198242],[-72.992383,62.18042],[-72.881836,62.125391],[-72.734961,62.131104],[-72.686963,62.124561],[-72.670801,62.113867],[-72.645996,62.076611],[-72.633105,62.052783],[-72.632129,62.027246],[-72.666016,61.955322],[-72.771631,61.84043],[-72.727393,61.838623],[-72.660645,61.863232],[-72.573877,61.907129],[-72.505566,61.922656],[-72.360742,61.887793],[-72.226123,61.831592],[-72.178467,61.801807],[-72.126123,61.753223],[-72.081445,61.728271],[-72.040039,61.680273],[-72.042969,61.664697],[-72.082031,61.641406],[-72.24707,61.602051],[-72.215869,61.587256],[-72.023096,61.611963],[-71.964404,61.636279],[-71.922266,61.676953],[-71.866113,61.688525],[-71.638281,61.617188],[-71.604785,61.592383],[-71.619434,61.5729],[-71.656201,61.550928],[-71.755762,61.526758],[-71.841016,61.466016],[-71.854395,61.439795],[-71.793652,61.421191],[-71.645312,61.413135],[-71.646436,61.39873],[-71.732129,61.37207],[-71.743457,61.337256],[-71.551514,61.213281],[-71.422705,61.158936],[-71.348437,61.148975],[-71.175146,61.146533],[-71.034961,61.125537],[-70.723242,61.055176],[-70.540771,61.04248],[-70.383643,61.063965],[-70.279297,61.068652],[-70.187207,61.040527],[-70.157959,61.020654],[-70.144141,60.981104],[-70.145898,60.921826],[-70.095312,60.880273],[-69.992432,60.856494],[-69.909229,60.860107],[-69.800439,60.906689],[-69.708398,60.914648],[-69.677588,60.949561],[-69.650439,61.01416],[-69.623633,61.049512],[-69.556982,61.059668],[-69.50332,61.04043],[-69.471924,61.010938],[-69.414355,60.922461],[-69.39834,60.882861],[-69.404736,60.846777],[-69.433447,60.814258],[-69.489941,60.77959],[-69.574219,60.742725],[-69.640479,60.689795],[-69.721387,60.567432],[-69.75127,60.487451],[-69.759473,60.440234],[-69.755908,60.388525],[-69.740576,60.332275],[-69.708496,60.285938],[-69.633105,60.220361],[-69.62876,60.198584],[-69.623145,60.145459],[-69.629785,60.122119],[-69.67373,60.075879],[-69.795654,60.029736],[-69.962842,60.017822],[-70.509326,60.015186],[-70.654834,60.026221],[-70.619727,59.984277],[-70.46665,59.97085],[-70.326855,59.971387],[-69.805664,59.944873],[-69.733936,59.918018],[-69.673437,59.870752],[-69.630225,59.821826],[-69.587402,59.722314],[-69.579395,59.675098],[-69.602344,59.622705],[-69.656201,59.565088],[-69.692383,59.488428],[-69.710889,59.392529],[-69.681885,59.341748],[-69.4,59.337793],[-69.344043,59.303076],[-69.350439,59.277197],[-69.450488,59.180029],[-69.459766,59.152441],[-69.414111,59.086865],[-69.420313,59.068213],[-69.448096,59.04917],[-69.474658,59],[-69.500098,58.920654],[-69.531641,58.869238],[-69.608203,58.829492],[-69.648389,58.820801],[-69.677344,58.831348],[-69.753027,58.9396],[-69.78418,58.955713],[-69.813672,58.945557],[-69.828516,58.92876],[-69.828613,58.905371],[-69.841602,58.881152],[-69.867578,58.856152],[-69.97915,58.816357],[-70.159961,58.789404],[-70.154346,58.760596],[-70.033008,58.745166],[-69.878564,58.696973],[-69.789893,58.689307],[-69.650537,58.728271],[-69.381836,58.850732],[-69.271094,58.883936],[-69.173486,58.896631],[-69.063623,58.898242],[-68.941504,58.888916],[-68.698193,58.904541],[-68.637305,58.892871],[-68.562891,58.865918],[-68.474902,58.823486],[-68.414307,58.782715],[-68.381152,58.743506],[-68.326465,58.59541],[-68.252979,58.556641],[-68.235156,58.528174],[-68.229395,58.48457],[-68.233887,58.399219],[-68.314697,58.226904],[-68.356543,58.163232],[-68.468164,58.076318],[-68.596875,58.036865],[-68.825781,57.999854],[-68.945312,57.968799],[-69.035449,57.926025],[-69.04082,57.90249],[-68.780957,57.97583],[-68.495068,58.01167],[-68.413574,58.051758],[-68.351855,58.090723],[-68.289111,58.177686],[-68.175537,58.402588],[-68.111035,58.47334],[-68.021045,58.485303],[-67.981152,58.46123],[-67.887793,58.329395],[-67.888281,58.295752],[-67.911426,58.267236],[-68.063867,58.138965],[-68.008984,58.152051],[-67.855859,58.272607],[-67.82334,58.310254],[-67.805225,58.365479],[-67.755957,58.40459],[-67.737061,58.385449],[-67.689697,58.243799],[-67.688184,58.140234],[-67.680566,58.107031],[-67.697656,58.00874],[-67.678271,57.991113],[-67.632227,58.076123],[-67.617187,58.140332],[-67.596338,58.186133],[-67.569629,58.213477],[-67.381982,58.3],[-67.162842,58.370361],[-67.019434,58.43291],[-66.900391,58.462793],[-66.722168,58.491016],[-66.60791,58.548926],[-66.557715,58.636621],[-66.515039,58.697314],[-66.47998,58.730908],[-66.362402,58.791162],[-66.298535,58.794531],[-66.237402,58.772266],[-66.168213,58.7271],[-66.090918,58.659033],[-66.044629,58.605615],[-66.029541,58.566797],[-66.017041,58.430811],[-66.002393,58.431201],[-65.93125,58.535059],[-65.9229,58.571973],[-65.92793,58.610938],[-65.949658,58.649854],[-66.021289,58.734766],[-66.049365,58.787891],[-66.043066,58.820654],[-65.967041,58.839209],[-65.854834,58.846631],[-65.835937,58.860498],[-65.918408,58.895605],[-65.920703,58.914648],[-65.841406,58.977051],[-65.794824,58.980469],[-65.703564,58.970605],[-65.721924,59.002588],[-65.720996,59.023779],[-65.695264,59.032031],[-65.543994,59.011865],[-65.526318,59.03623],[-65.39624,59.038428],[-65.383545,59.060205],[-65.495996,59.091309],[-65.60625,59.110742],[-65.639844,59.127734],[-65.665625,59.152783],[-65.7,59.21333],[-65.691699,59.229395],[-65.660742,59.229688],[-65.607129,59.213135],[-65.578027,59.244971],[-65.545313,59.319727],[-65.512793,59.350391],[-65.411719,59.31499],[-65.407275,59.330225],[-65.489355,59.447754],[-65.475098,59.470312],[-65.349707,59.478809],[-65.273779,59.46416],[-65.074316,59.378027],[-65.038232,59.387891],[-65.068848,59.411475],[-65.170947,59.462256],[-65.263184,59.495459],[-65.345508,59.511035],[-65.407422,59.539355],[-65.475195,59.616797],[-65.486475,59.648682],[-65.480859,59.690234],[-65.433398,59.776514],[-65.406152,59.795215],[-65.35791,59.809082],[-65.28877,59.818066],[-65.212256,59.809521],[-65.054492,59.752783],[-65.028174,59.770703],[-65.113281,59.801611],[-65.159229,59.830127],[-65.181396,59.86665],[-65.171729,59.908008],[-65.104883,59.993408],[-65.073389,60.062207],[-64.93125,60.252002],[-64.889551,60.286523],[-64.84502,60.308301],[-64.817334,60.331055],[-64.705859,60.336133],[-64.499414,60.268262],[-64.436328,60.228125],[-64.41958,60.171387],[-64.527734,60.094531],[-64.713281,60.037158],[-64.768457,60.012109],[-64.732568,59.997559],[-64.55918,60.043408],[-64.407715,60.064795],[-64.283496,60.064062],[-64.182861,59.972949],[-64.168799,59.846533],[-64.226318,59.741211],[-64.150684,59.793604],[-64.056055,59.822559],[-63.978711,59.753711],[-63.969482,59.697607],[-63.928809,59.644922],[-63.84126,59.574414],[-63.750195,59.512598],[-63.850391,59.447803],[-63.970703,59.409082],[-63.945459,59.380176],[-63.780859,59.349268],[-63.758594,59.318652],[-63.775879,59.277148],[-63.752002,59.277344],[-63.6375,59.341455],[-63.539893,59.332861],[-63.415137,59.194385],[-63.506201,59.115186],[-63.645508,59.078906],[-63.756396,59.063477],[-63.910498,59.065576],[-63.971143,59.053809],[-63.941016,59.027393],[-63.793652,59.027002],[-63.567871,59.047021],[-63.398975,59.079639],[-63.325537,59.081592],[-63.248437,59.068311],[-63.22251,59.057178],[-63.303711,59.034424],[-63.309863,59.026465],[-63.279443,59.003174],[-63.216406,58.927979],[-63.221924,58.911035],[-63.282129,58.867383],[-63.185352,58.857764],[-63.050293,58.878174],[-63.00835,58.85542],[-62.926074,58.765039],[-62.873877,58.672461],[-63.102344,58.545752],[-63.218652,58.519531],[-63.389941,58.452539],[-63.437939,58.398828],[-63.537061,58.329932],[-63.473633,58.330664],[-63.296484,58.441211],[-63.209961,58.466943],[-63.145508,58.460449],[-63.119531,58.441748],[-63.132129,58.41084],[-63.075684,58.414795],[-62.837402,58.479395],[-62.737305,58.492188],[-62.607861,58.496387],[-62.593848,58.474023],[-62.674316,58.319189],[-62.812061,58.200391],[-63.062793,58.1271],[-63.15166,58.08418],[-63.261523,58.014697],[-63.22002,58.002148],[-62.980908,58.093311],[-62.817529,58.129248],[-62.588086,58.158105],[-62.48623,58.154053],[-62.305664,57.972266],[-62.201514,57.954639],[-62.117432,57.964111],[-61.958643,57.911768],[-61.899072,57.861328],[-61.914062,57.825049],[-61.967773,57.80332],[-61.994922,57.769434],[-61.93125,57.668555],[-61.967969,57.611914],[-62.083984,57.561914],[-62.166895,57.536572],[-62.253613,57.52876],[-62.338574,57.484521],[-62.377148,57.477979],[-62.495557,57.489209],[-62.45498,57.461963],[-62.396484,57.448193],[-62.303223,57.440674],[-62.194238,57.45459],[-62.088086,57.452832],[-61.921143,57.420801],[-61.851074,57.381299],[-61.849805,57.37041],[-61.88584,57.347852],[-61.938867,57.274365],[-61.977441,57.247949],[-61.944531,57.228125],[-61.86084,57.197559],[-61.79834,57.18623],[-61.716309,57.196191],[-61.628516,57.183154],[-61.33374,57.010596],[-61.345752,56.921582],[-61.390479,56.852979],[-61.372803,56.77583],[-61.371631,56.680811],[-61.531689,56.65459],[-62.0625,56.699072],[-62.366113,56.766992],[-62.381738,56.787695],[-62.295801,56.832812],[-62.372021,56.836182],[-62.460205,56.818457],[-62.497266,56.801709],[-62.395508,56.730029],[-62.116504,56.666846],[-61.991602,56.59082],[-61.854932,56.584277],[-61.813379,56.570508],[-61.737744,56.526025],[-61.760059,56.510742],[-61.899414,56.50542],[-62.009668,56.453857],[-61.94043,56.423584],[-61.69248,56.39707],[-61.5146,56.390332],[-61.425293,56.360645],[-61.498682,56.327588],[-61.707129,56.288721],[-61.713086,56.230957],[-61.558594,56.207813],[-61.421094,56.221826],[-61.364697,56.216016],[-61.324414,56.076221],[-61.301123,56.047168],[-61.448926,56.022363],[-61.449512,55.995703],[-61.35127,55.973682],[-61.187891,55.955371],[-61.133887,55.930273],[-61.122998,55.888574],[-61.089355,55.866357],[-60.995752,55.862354],[-60.892676,55.914209],[-60.831836,55.957861],[-60.743262,55.941455],[-60.736621,55.886963],[-60.630957,55.825],[-60.592578,55.814844],[-60.562109,55.727002],[-60.47583,55.805127],[-60.412598,55.788574],[-60.341016,55.784668],[-60.36543,55.709082],[-60.408301,55.649561],[-60.351953,55.612354],[-60.308301,55.556982],[-60.192383,55.480908],[-60.224023,55.444385],[-60.360937,55.366309],[-60.433105,55.242773],[-60.450098,55.199951],[-60.520508,55.129004],[-60.617139,55.060205],[-60.556543,55.06748],[-60.340771,55.193945],[-60.212549,55.236426],[-59.930322,55.259424],[-59.862109,55.294873],[-59.758789,55.30957],[-59.695508,55.269141],[-59.689062,55.196338],[-59.605469,55.17334],[-59.517676,55.197363],[-59.437891,55.175928],[-59.48584,55.130176],[-59.741699,54.942578],[-59.816406,54.867236],[-59.837793,54.813965],[-59.749902,54.887012],[-59.428564,55.055518],[-59.394189,55.080713],[-59.32417,55.152832],[-59.25957,55.199951],[-59.086328,55.183252],[-58.997119,55.149463],[-58.955811,55.055078],[-58.885791,54.952246],[-58.780176,54.838379],[-58.499902,54.783105],[-58.398145,54.774121],[-58.222852,54.812695],[-58.195264,54.865918],[-58.058496,54.882227],[-57.962451,54.875732],[-57.929297,54.773145],[-57.826855,54.718652],[-57.724902,54.67373],[-57.626611,54.650342],[-57.483008,54.640283],[-57.404492,54.590869],[-57.404443,54.57041],[-57.485352,54.51748],[-57.563232,54.44043],[-57.699268,54.386572],[-57.889111,54.384082],[-58.151367,54.350439],[-58.161914,54.319971],[-58.219727,54.286475],[-58.359131,54.25332],[-58.435205,54.228125],[-58.558398,54.102979],[-58.633203,54.049561],[-58.719434,54.039404],[-58.84082,54.044482],[-58.920215,54.033105],[-58.978467,54.010254],[-59.012646,53.97627],[-59.038818,53.963623],[-59.201416,53.929102],[-59.496533,53.83418],[-59.652686,53.83125],[-59.749463,53.842285],[-59.823047,53.834424],[-59.87334,53.807764],[-60.01416,53.761572],[-60.056543,53.73335],[-60.081348,53.701025],[-60.100488,53.634229],[-60.117285,53.610107],[-60.144922,53.596143],[-60.26333,53.610059],[-60.39541,53.65332],[-60.369531,53.607471],[-60.160254,53.52998],[-60.100293,53.486963],[-60.157129,53.449805],[-60.290283,53.391455],[-60.305762,53.360107],[-60.251172,53.343555],[-60.272705,53.31709],[-60.345703,53.289014],[-60.3375,53.277441],[-60.329492,53.266113],[-60.14834,53.306543],[-59.987109,53.392822],[-59.881738,53.480078],[-59.829053,53.504541],[-59.621094,53.536816],[-59.498145,53.574756],[-59.322266,53.64375],[-59.129395,53.743945],[-58.91958,53.875293],[-58.652051,53.977881],[-58.326709,54.051807],[-58.088086,54.089502],[-57.935986,54.091162],[-57.928271,54.103564],[-58.064844,54.126758],[-58.177441,54.131299],[-58.31748,54.114453],[-58.360791,54.154492],[-58.356152,54.171924],[-58.309961,54.20166],[-58.19209,54.228174],[-57.614941,54.191113],[-57.416064,54.162744],[-57.198877,53.924365],[-57.148975,53.847705],[-57.134961,53.791846],[-57.156934,53.756885],[-57.243994,53.715479],[-57.489453,53.633105],[-57.524072,53.611426],[-57.527344,53.599902],[-57.420215,53.583252],[-57.386133,53.560547],[-57.331738,53.469092],[-57.221387,53.528516],[-57.012158,53.672607],[-56.840869,53.739453],[-56.696582,53.757666],[-56.524316,53.766455],[-56.46499,53.765039],[-56.444336,53.718311],[-56.354004,53.624463],[-56.270215,53.600098],[-56.110156,53.587598],[-55.966113,53.471143],[-55.91123,53.39082],[-55.859375,53.343896],[-55.863379,53.312256],[-55.854785,53.28584],[-55.816895,53.245752],[-55.797949,53.211963],[-55.808203,53.134668],[-55.892334,53.000439],[-55.829883,52.878418],[-55.85791,52.823389],[-55.87251,52.735693],[-55.818652,52.677148],[-55.802832,52.643164],[-55.848437,52.62334],[-56.166992,52.574756],[-56.292383,52.573779],[-56.324902,52.544531],[-56.228418,52.535986],[-56.052588,52.537402],[-55.840186,52.507617],[-55.746484,52.474561],[-55.705957,52.428271],[-55.716211,52.391504],[-55.777148,52.364258],[-55.89668,52.36958],[-56.011719,52.394482],[-56.004639,52.37041],[-55.833643,52.3104],[-55.783496,52.279932],[-55.691064,52.241602],[-55.672803,52.190137],[-55.695215,52.137793],[-56.01748,51.929297],[-56.282568,51.79707],[-56.548584,51.681006],[-56.975977,51.457666],[-57.018262,51.446777],[-57.095605,51.442529],[-57.299219,51.478271],[-57.46167,51.469092],[-57.76958,51.425928],[-57.85376,51.399512],[-58.022656,51.32207],[-58.089404,51.310986],[-58.270459,51.295215],[-58.442285,51.305908],[-58.510352,51.295068],[-58.593262,51.257129],[-58.614746,51.237061],[-58.637598,51.17168],[-59.054932,50.879102],[-59.165381,50.779883],[-59.378027,50.675439],[-59.611914,50.49209],[-59.815332,50.418262],[-59.886328,50.316406],[-60.080176,50.25459],[-60.438086,50.238867],[-60.608203,50.221143],[-60.807227,50.249805],[-60.956299,50.20542],[-61.180713,50.191504],[-61.289746,50.201953],[-61.724854,50.104053],[-61.835352,50.196973],[-61.919531,50.232861],[-62.165234,50.238916],[-62.36167,50.277295],[-62.540918,50.284521],[-62.71543,50.30166],[-62.830225,50.301465],[-62.949756,50.291357],[-63.135645,50.293799],[-63.238623,50.242578],[-63.58667,50.258203],[-63.733594,50.304639],[-63.853955,50.314355],[-64.01582,50.303955],[-64.17041,50.269434],[-64.508936,50.308936],[-64.867871,50.275488],[-65.180908,50.2979],[-65.268604,50.32002],[-65.762451,50.259277],[-65.955371,50.294141],[-66.125537,50.201025],[-66.242187,50.220361],[-66.368848,50.206641],[-66.411084,50.224268],[-66.495508,50.211865],[-66.550049,50.161182],[-66.621729,50.15542],[-66.740869,50.065527],[-66.941162,49.993701],[-67.234375,49.601758],[-67.261914,49.451172],[-67.372021,49.348438],[-67.469238,49.334619],[-67.549268,49.332275],[-68.05625,49.256787],[-68.281934,49.197168],[-68.220605,49.149658],[-68.294531,49.114355],[-68.414404,49.099512],[-68.543848,49.056152],[-68.627881,49.007178],[-68.669043,48.939502],[-68.929053,48.828955],[-69.230762,48.573633],[-69.374951,48.386426],[-69.550098,48.250781],[-69.673877,48.19917],[-69.761914,48.191162],[-69.851709,48.207373],[-70.001025,48.270947],[-70.110645,48.277979],[-70.383691,48.366504],[-71.018262,48.455615],[-70.922607,48.422314],[-70.83877,48.367383],[-70.671094,48.353223],[-70.500635,48.354346],[-70.145312,48.243555],[-69.971191,48.205762],[-69.865527,48.172266],[-69.775,48.098096],[-69.839844,47.952588],[-69.905566,47.832227],[-69.994434,47.739893],[-70.300098,47.503027],[-70.448047,47.423438],[-70.705859,47.139795],[-70.972705,47.006689],[-71.115625,46.924951],[-71.267773,46.795947],[-71.624756,46.698389],[-71.757275,46.673584],[-71.87959,46.686816],[-72.028467,46.607422],[-72.204639,46.558887],[-72.256641,46.485059],[-72.680127,46.287305],[-72.842676,46.262402],[-72.981006,46.209717],[-73.021924,46.120264],[-73.14541,46.066309],[-73.179687,46.025],[-73.283545,45.899854],[-73.476611,45.738232],[-73.711865,45.711182],[-73.797852,45.654932],[-73.897412,45.56416],[-74.037842,45.501855],[-74.315088,45.531055],[-74.247656,45.492871],[-73.999609,45.43335],[-73.973828,45.345117],[-74.098096,45.324023],[-74.358301,45.206396],[-74.708887,45.003857],[-74.762451,44.999072],[-74.856641,45.003906],[-74.996143,44.970117],[-75.179395,44.899365],[-75.40127,44.772266],[-75.791943,44.49707],[-75.819336,44.468018],[-75.875928,44.416992],[-76.020215,44.362598],[-76.151172,44.303955],[-76.185791,44.242236],[-76.248535,44.214111],[-76.4646,44.057617],[-76.586133,43.924316],[-76.696484,43.784814],[-76.819971,43.628809],[-77.07334,43.626855],[-77.266699,43.62749],[-77.596533,43.628613],[-77.879248,43.629541],[-78.214795,43.630664],[-78.458252,43.631494],[-78.72041,43.624951],[-78.845557,43.58335],[-79.00249,43.527148],[-79.171875,43.466553],[-79.083057,43.331396],[-79.059229,43.278076],[-79.066064,43.106104],[-79.047998,43.087305],[-79.029053,43.061768],[-79.026172,43.017334],[-79.01167,42.997021],[-78.980762,42.980615],[-78.945996,42.961328],[-78.92085,42.935205],[-78.915088,42.909131],[-78.939258,42.863721],[-79.036719,42.802344],[-79.17373,42.748535],[-79.44624,42.651465],[-79.762012,42.538965],[-80.035742,42.441455],[-80.247559,42.366016],[-80.682617,42.299756],[-81.028223,42.247168],[-81.277637,42.20918],[-81.507324,42.103467],[-81.760937,41.986816],[-81.97417,41.888721],[-82.21333,41.778711],[-82.439062,41.674854],[-82.690039,41.675195],[-82.866211,41.753027],[-83.02998,41.832959],[-83.141943,41.975879],[-83.149658,42.141943],[-83.109521,42.250684],[-83.073145,42.300293],[-83.003711,42.331738],[-82.867773,42.385205],[-82.744189,42.493457],[-82.645117,42.558057],[-82.545312,42.624707],[-82.48833,42.739502],[-82.417236,43.017383],[-82.408203,43.072656],[-82.304785,43.263232],[-82.190381,43.474072],[-82.137842,43.570898],[-82.196582,43.822217],[-82.240771,44.015332],[-82.28125,44.192236],[-82.326807,44.391553],[-82.368262,44.572998],[-82.407373,44.743945],[-82.446582,44.915527],[-82.485059,45.08374],[-82.515234,45.204395],[-82.551074,45.347363],[-82.7604,45.447705],[-82.919336,45.517969],[-83.179297,45.632764],[-83.397314,45.729053],[-83.592676,45.817139],[-83.469482,45.994678],[-83.480127,46.02373],[-83.524756,46.058691],[-83.615967,46.116846],[-83.669287,46.122754],[-83.763184,46.109082],[-83.913037,46.0729],[-83.977783,46.084912],[-84.029199,46.147021],[-84.088379,46.226514],[-84.107764,46.288623],[-84.115186,46.370801],[-84.150488,46.444775],[-84.128125,46.483594],[-84.123193,46.50293],[-84.125195,46.527246],[-84.149463,46.542773],[-84.192187,46.549561],[-84.336719,46.518506],[-84.401709,46.515625],[-84.440479,46.498145],[-84.501562,46.461865],[-84.561768,46.457373],[-84.665771,46.543262],[-84.779395,46.637305],[-84.827051,46.766846],[-84.875977,46.899902],[-85.070068,46.979932],[-85.264111,47.059961],[-85.458203,47.139941],[-85.652246,47.219971],[-85.846338,47.3],[-86.040381,47.380029],[-86.234473,47.460059],[-86.428564,47.540088],[-86.495557,47.566602],[-86.672168,47.636426],[-86.921826,47.735205],[-87.208008,47.848486],[-87.494238,47.961768],[-87.743896,48.060547],[-87.920508,48.130371],[-87.987451,48.156885],[-88.160645,48.225391],[-88.378174,48.303076],[-88.611768,48.264014],[-88.898682,48.155713],[-89.062598,48.093799],[-89.185645,48.047412],[-89.273193,48.019971],[-89.455664,47.99624],[-89.550586,47.999902],[-89.775391,48.015332],[-89.901025,47.995459],[-89.993652,48.015332],[-90.039941,48.078174],[-90.091797,48.118115],[-90.320117,48.09917],[-90.60708,48.112598],[-90.744385,48.10459],[-90.797314,48.131055],[-90.840332,48.200537],[-90.916064,48.209131],[-91.043457,48.193701],[-91.220654,48.10459],[-91.387207,48.058545],[-91.518311,48.058301],[-91.647314,48.10459],[-91.858398,48.197559],[-92.005176,48.301855],[-92.171777,48.338379],[-92.298682,48.328906],[-92.348437,48.276611],[-92.4146,48.276611],[-92.460889,48.365869],[-92.500586,48.435352],[-92.583252,48.465088],[-92.732666,48.531836],[-92.836719,48.567773],[-92.99624,48.611816],[-93.051709,48.619873],[-93.155225,48.625342],[-93.257959,48.628857],[-93.377881,48.616553],[-93.463623,48.561279],[-93.564258,48.536914],[-93.707715,48.525439],[-93.803564,48.548926],[-93.851611,48.607275],[-94.055176,48.659033],[-94.41416,48.704102],[-94.620898,48.742627],[-94.675342,48.774414],[-94.705078,48.808496],[-94.712549,48.862988],[-94.712793,48.863428],[-94.803467,49.00293],[-94.842578,49.119189],[-94.8604,49.258594],[-94.854346,49.30459],[-94.874805,49.319043],[-94.939355,49.349414],[-95.155273,49.369678],[-95.158252,49.203076],[-95.162061,48.991748],[-95.3979,48.993164],[-95.824316,48.993164],[-96.250684,48.993164],[-96.677051,48.993164],[-97.103467,48.993164],[-97.529834,48.993164],[-97.956201,48.993164],[-98.382617,48.993164],[-98.808984,48.993164],[-99.235352,48.993115],[-99.661719,48.993115],[-100.088135,48.993115],[-100.514502,48.993115],[-100.940869,48.993115],[-101.367285,48.993115],[-101.793652,48.993115],[-102.22002,48.993115],[-102.646436,48.993115],[-103.072803,48.993115],[-103.49917,48.993115],[-103.925586,48.993115],[-104.351953,48.993115],[-104.77832,48.993115],[-105.204687,48.993115],[-105.631104,48.993115],[-106.057471,48.993115],[-106.483838,48.993115],[-106.910254,48.993115],[-107.336621,48.993115],[-107.762988,48.993115],[-108.189404,48.993115],[-108.615771,48.993115],[-109.042139,48.993115],[-109.468555,48.993066],[-109.894922,48.993066],[-110.321289,48.993066],[-110.747656,48.993066],[-111.174072,48.993066],[-111.600439,48.993066],[-112.026807,48.993066],[-112.453223,48.993066],[-112.87959,48.993066],[-113.305957,48.993066],[-113.732373,48.993066],[-114.15874,48.993066],[-114.585107,48.993066],[-115.011523,48.993066],[-115.437891,48.993066],[-115.864258,48.993066],[-116.290625,48.993066],[-116.717041,48.993066],[-117.143408,48.993066],[-117.569775,48.993066],[-117.996191,48.993066],[-118.422559,48.993066],[-118.848926,48.993066],[-119.275342,48.993066],[-119.701709,48.993018],[-120.128076,48.993018],[-120.554492,48.993018],[-120.980859,48.993018],[-121.407227,48.993018],[-121.833594,48.993018],[-122.26001,48.993018],[-122.686377,48.993018],[-122.78877,48.993018],[-122.826709,49.028418],[-122.92417,49.074658],[-122.962695,49.074609],[-123.002295,49.060889],[-123.027246,49.038525],[-123.049219,48.993018],[-123.063281,48.977734],[-123.077295,48.980225],[-123.086426,48.993018],[-123.117627,49.056348],[-123.109326,49.084619],[-123.077295,49.118359],[-123.079541,49.130615],[-123.150146,49.121045],[-123.181885,49.129492],[-123.196338,49.147705],[-123.191064,49.219531],[-123.229443,49.260498],[-123.183936,49.277734],[-123.067285,49.291553],[-122.947656,49.293262],[-122.912988,49.323193],[-122.879102,49.398926],[-122.964453,49.329346],[-123.015527,49.322168],[-123.174268,49.348193],[-123.276758,49.343945],[-123.290527,49.359473],[-123.286279,49.374951],[-123.264063,49.390479],[-123.247705,49.443018],[-123.222998,49.590479],[-123.190674,49.644287],[-123.17959,49.673535],[-123.1875,49.680322],[-123.325,49.577686],[-123.33667,49.545117],[-123.322412,49.516992],[-123.335645,49.45918],[-123.398975,49.441895],[-123.436963,49.451318],[-123.508203,49.402441],[-123.530566,49.397314],[-123.858936,49.482861],[-123.891846,49.494727],[-123.948389,49.534717],[-124.028613,49.602881],[-124.053809,49.661719],[-124.024023,49.711328],[-123.992627,49.736182],[-123.959521,49.736182],[-123.922754,49.717529],[-123.847119,49.63667],[-123.817187,49.586572],[-123.739062,49.593555],[-123.612744,49.657568],[-123.582471,49.68125],[-123.708301,49.656934],[-123.762695,49.658496],[-123.818018,49.685156],[-123.874414,49.736816],[-123.903809,49.795459],[-123.904248,49.981152],[-123.884961,50.017041],[-123.823828,50.043701],[-123.784668,50.087988],[-123.787695,50.106738],[-123.825439,50.144238],[-123.880127,50.173633],[-123.933594,50.188281],[-123.945898,50.183936],[-123.863037,50.102588],[-123.865723,50.07207],[-123.957422,49.992773],[-123.971387,49.969531],[-123.972119,49.892041],[-123.984912,49.875586],[-124.058789,49.853662],[-124.141602,49.792676],[-124.28125,49.772119],[-124.412598,49.778125],[-124.483252,49.808203],[-124.702295,49.957666],[-124.782373,50.020117],[-124.784277,50.072803],[-124.93418,50.258057],[-124.93335,50.2979],[-124.985596,50.355615],[-125.043604,50.36377],[-125.056689,50.418652],[-124.936816,50.537402],[-124.862646,50.637305],[-124.854248,50.668652],[-124.85752,50.717334],[-124.875439,50.825635],[-124.859863,50.872412],[-124.933594,50.810596],[-124.949268,50.764697],[-124.931055,50.718408],[-124.942529,50.665674],[-124.9854,50.591943],[-125.058789,50.513867],[-125.209863,50.476318],[-125.476318,50.497168],[-125.507178,50.507275],[-125.525977,50.534131],[-125.539355,50.649023],[-125.555566,50.634863],[-125.58584,50.573633],[-125.610156,50.486035],[-125.641309,50.466211],[-125.697559,50.464551],[-125.741211,50.478564],[-125.772412,50.508203],[-125.8396,50.510645],[-125.965039,50.487354],[-126.024121,50.496729],[-126.094336,50.497607],[-126.236572,50.523291],[-126.404492,50.529883],[-126.449951,50.549707],[-126.447461,50.587744],[-126.416113,50.606982],[-126.238916,50.623828],[-126.067236,50.664307],[-125.897607,50.684375],[-125.904102,50.704932],[-125.980713,50.711377],[-126.370313,50.666748],[-126.492969,50.672119],[-126.514355,50.679395],[-126.517334,50.724463],[-126.472217,50.767285],[-126.397119,50.80708],[-126.374609,50.837354],[-126.418213,50.850195],[-126.488184,50.841846],[-126.521777,50.866064],[-126.484619,50.960498],[-126.517334,51.056836],[-126.562891,50.965479],[-126.631787,50.915137],[-126.9604,50.893701],[-127.014062,50.866797],[-127.057568,50.867529],[-127.26748,50.916064],[-127.356934,50.945557],[-127.441211,50.989404],[-127.590869,51.087549],[-127.708105,51.151172],[-127.714307,51.268652],[-127.68916,51.343457],[-127.632715,51.427295],[-127.419678,51.608057],[-127.346582,51.642383],[-127.280664,51.654102],[-126.968115,51.669922],[-126.7354,51.692627],[-126.691455,51.703418],[-127.034082,51.716699],[-127.338721,51.707373],[-127.442725,51.678955],[-127.575732,51.562939],[-127.60957,51.514063],[-127.644873,51.478467],[-127.668701,51.477588],[-127.714063,51.490186],[-127.728711,51.505518],[-127.74751,51.543555],[-127.818945,51.603906],[-127.850537,51.673193],[-127.869141,51.775244],[-127.863232,51.820801],[-127.82998,51.879004],[-127.727637,51.993213],[-127.858789,51.990283],[-127.843311,52.086475],[-127.795361,52.191016],[-127.67334,52.25293],[-127.549707,52.297607],[-127.437939,52.356152],[-127.242236,52.395117],[-127.175732,52.314844],[-127.007959,52.290674],[-126.959473,52.254541],[-126.9,52.18833],[-126.826318,52.125146],[-126.738574,52.064941],[-126.713965,52.060693],[-126.752637,52.112354],[-126.895215,52.225488],[-126.901416,52.265332],[-126.938184,52.308594],[-127.127051,52.370947],[-127.160596,52.394873],[-127.193994,52.457666],[-127.208252,52.498242],[-127.187109,52.537695],[-126.995215,52.65791],[-126.951318,52.72124],[-126.951367,52.751025],[-126.966406,52.784668],[-127.008252,52.842578],[-127.019336,52.84248],[-127.006396,52.75459],[-127.013232,52.719971],[-127.034863,52.681738],[-127.066211,52.652686],[-127.10708,52.632812],[-127.519238,52.359277],[-127.560303,52.343213],[-127.713379,52.318506],[-127.791895,52.289355],[-127.834326,52.250977],[-127.902197,52.150879],[-127.99541,51.950537],[-128.102246,51.788428],[-128.193555,51.998291],[-128.357617,52.158887],[-128.0375,52.318164],[-128.02915,52.34248],[-128.060303,52.427539],[-128.051562,52.45332],[-128.021289,52.490674],[-127.940234,52.545166],[-127.943359,52.550732],[-128.038232,52.531152],[-128.183984,52.40791],[-128.240967,52.368262],[-128.271533,52.362988],[-128.275146,52.435498],[-128.196777,52.623291],[-128.132373,52.805811],[-128.108789,52.858057],[-128.053271,52.910693],[-128.105957,52.906885],[-128.365039,52.825781],[-128.451953,52.876611],[-128.524707,53.140674],[-128.652344,53.243848],[-128.868555,53.328125],[-129.080908,53.367285],[-129.129541,53.442285],[-129.171582,53.533594],[-129.114453,53.641113],[-129.021436,53.692139],[-128.935596,53.715186],[-128.85459,53.704541],[-128.850439,53.665186],[-128.905615,53.559326],[-128.833057,53.549414],[-128.542139,53.420654],[-128.478613,53.410303],[-128.358057,53.459814],[-128.291064,53.457861],[-128.132715,53.417773],[-128.079199,53.369434],[-127.927832,53.274707],[-127.950049,53.329834],[-128.115137,53.445947],[-128.207227,53.483203],[-128.369141,53.490381],[-128.469629,53.470898],[-128.511768,53.476562],[-128.600342,53.506104],[-128.675537,53.55459],[-128.750781,53.66084],[-128.767871,53.710205],[-128.763672,53.746875],[-128.745947,53.780176],[-128.714746,53.81001],[-128.652881,53.831641],[-128.560449,53.845068],[-128.532129,53.858105],[-128.650879,53.918848],[-128.704785,53.918604],[-128.890186,53.829785],[-128.927832,53.822803],[-128.943994,53.840039],[-128.959375,53.841455],[-129.013965,53.797461],[-129.056396,53.777783],[-129.208105,53.641602],[-129.231738,53.576416],[-129.240332,53.479053],[-129.257861,53.417969],[-129.284277,53.393164],[-129.462402,53.346582],[-129.563721,53.251465],[-129.686719,53.333545],[-129.821777,53.412744],[-129.911865,53.551367],[-130.074365,53.575635],[-130.263281,53.65415],[-130.335254,53.723926],[-130.232861,53.867432],[-130.085938,53.975781],[-130.063525,54.105664],[-130.043311,54.133545],[-129.790771,54.165771],[-129.626025,54.230273],[-129.794971,54.236133],[-129.898437,54.226367],[-130.084229,54.181396],[-130.290332,54.270361],[-130.396777,54.35166],[-130.430273,54.420996],[-130.393457,54.479639],[-130.388623,54.539355],[-130.37002,54.62002],[-130.350488,54.655322],[-130.307227,54.700293],[-130.218945,54.730273],[-130.140869,54.822754],[-130.108643,54.887256],[-129.948535,55.081055],[-129.890137,55.164648],[-129.780762,55.280469],[-129.560645,55.462549],[-129.630127,55.452246],[-129.66665,55.43667],[-129.701318,55.438574],[-129.73418,55.458008],[-129.765479,55.498242],[-129.795166,55.55957],[-129.811914,55.532617],[-129.815625,55.417578],[-129.837744,55.319092],[-129.877148,55.250635],[-129.985205,55.111475],[-130.048486,55.057275],[-130.091797,55.107764],[-130.058398,55.194775],[-129.99585,55.264063],[-129.985156,55.358838],[-130.044043,55.471924],[-130.07998,55.562891],[-130.092969,55.631836],[-130.094678,55.694775],[-130.085107,55.751709],[-130.060352,55.813721],[-130.020312,55.880762],[-130.025098,55.888232]]],[[[-109.815967,78.650391],[-109.640967,78.59209],[-109.580859,78.593262],[-109.50415,78.582471],[-109.467285,78.567188],[-109.362207,78.492871],[-109.342139,78.456006],[-109.336035,78.408447],[-109.3521,78.368652],[-109.390527,78.33667],[-109.484473,78.316406],[-109.708789,78.30376],[-110.021875,78.322803],[-110.293457,78.298193],[-110.418359,78.294971],[-110.755078,78.310742],[-110.840039,78.322314],[-111.026758,78.367627],[-111.169189,78.386279],[-111.229004,78.376318],[-111.300488,78.336572],[-111.435059,78.287354],[-111.51748,78.274707],[-111.759717,78.282959],[-112.13125,78.366064],[-112.557812,78.341504],[-112.999902,78.29292],[-113.17251,78.283789],[-113.223047,78.2979],[-113.292578,78.334375],[-113.281689,78.352783],[-113.149951,78.408398],[-112.855859,78.466846],[-112.64082,78.499805],[-112.214014,78.547803],[-111.708789,78.574707],[-111.519873,78.603223],[-111.400342,78.644043],[-111.071484,78.708398],[-110.877588,78.735059],[-110.618066,78.757812],[-110.407812,78.756641],[-110.140479,78.704443],[-109.940869,78.678467],[-109.815967,78.650391]]],[[[-110.458057,78.103223],[-109.656885,78.079248],[-109.622266,78.074756],[-109.619043,78.056836],[-109.679395,77.999316],[-109.771777,77.957422],[-110.199512,77.904834],[-110.751123,77.857227],[-110.865625,77.834131],[-110.856543,77.820361],[-110.811621,77.803174],[-110.719385,77.781445],[-110.292187,77.786377],[-110.189209,77.777002],[-110.152734,77.762939],[-110.130859,77.742383],[-110.117578,77.715576],[-110.116895,77.624707],[-110.139453,77.572119],[-110.198486,77.524512],[-110.371533,77.490625],[-110.682861,77.445898],[-110.893994,77.425977],[-111.060449,77.433154],[-111.226221,77.428516],[-111.951953,77.344189],[-112.176514,77.34375],[-112.372656,77.364111],[-112.643799,77.443701],[-112.925635,77.474951],[-113.046045,77.510742],[-113.164355,77.530273],[-113.197119,77.558838],[-113.208545,77.580176],[-113.188623,77.599756],[-113.137402,77.617529],[-113.120654,77.632617],[-113.167773,77.676465],[-113.189502,77.718311],[-113.271289,77.778418],[-113.283447,77.813037],[-113.282959,77.835645],[-113.269336,77.860059],[-113.215186,77.903516],[-113.187061,77.912354],[-113.021631,77.919141],[-112.804541,77.941602],[-112.30459,78.006787],[-111.206592,78.088135],[-110.873242,78.080615],[-110.727344,78.096582],[-110.458057,78.103223]]],[[[-115.55127,77.363281],[-115.475586,77.324316],[-115.470215,77.308643],[-115.506641,77.292139],[-115.623926,77.265918],[-116.213721,77.178223],[-116.329199,77.137061],[-116.285742,77.10166],[-116.073096,77.02998],[-115.856836,76.969238],[-115.810059,76.939111],[-115.912891,76.908447],[-116.109766,76.918213],[-116.183252,76.915576],[-116.252734,76.901416],[-116.233984,76.874316],[-116.016211,76.784521],[-115.94458,76.73623],[-115.946289,76.711279],[-115.984814,76.686914],[-116.076221,76.653516],[-116.220459,76.611084],[-116.467627,76.577148],[-116.999219,76.531592],[-117.016797,76.496094],[-117.013281,76.469092],[-117.026172,76.403516],[-117.044482,76.373096],[-117.107764,76.321924],[-117.153906,76.297998],[-117.233594,76.281543],[-117.346924,76.272559],[-117.492383,76.272705],[-117.732422,76.316748],[-117.841406,76.344824],[-117.992969,76.405811],[-118.020215,76.446533],[-118.00542,76.49668],[-117.96543,76.574023],[-117.899512,76.653076],[-117.807617,76.733936],[-117.780469,76.784277],[-117.81792,76.804102],[-117.880811,76.805078],[-118.076416,76.772363],[-118.202783,76.760498],[-118.300586,76.73667],[-118.369873,76.700977],[-118.409131,76.662305],[-118.431006,76.587988],[-118.468164,76.547363],[-118.573682,76.525195],[-118.731543,76.525586],[-118.791406,76.512988],[-118.820752,76.48584],[-118.799561,76.46377],[-118.643896,76.417529],[-118.624512,76.365869],[-118.643408,76.334668],[-118.811572,76.2771],[-118.851123,76.257812],[-118.955469,76.167676],[-118.993945,76.144873],[-119.080713,76.124072],[-119.168213,76.126514],[-119.249268,76.159473],[-119.36792,76.221777],[-119.447803,76.275391],[-119.488818,76.320312],[-119.52373,76.340283],[-119.580371,76.326514],[-119.648926,76.279883],[-119.650781,76.243701],[-119.63584,76.189893],[-119.639648,76.156689],[-119.739648,76.117725],[-119.725195,76.099951],[-119.549707,76.052051],[-119.527148,76.030566],[-119.526123,75.997217],[-119.537744,75.982178],[-119.607959,75.98457],[-119.667139,75.945996],[-119.734814,75.91543],[-119.912891,75.858838],[-120.160547,75.851953],[-120.365381,75.824756],[-120.408887,75.825635],[-120.458301,75.870166],[-120.513818,75.95835],[-120.563281,76.008447],[-120.637158,76.034033],[-120.728662,76.134082],[-120.771582,76.166309],[-120.813379,76.179297],[-120.848389,76.182666],[-120.900098,76.163428],[-121.019287,76.020264],[-121.213477,75.983691],[-121.320166,75.977002],[-121.427979,75.981104],[-121.694531,76.020313],[-121.908203,76.034766],[-122.057422,76.018213],[-122.302734,75.959814],[-122.400488,75.944238],[-122.533057,75.950928],[-122.591113,75.972998],[-122.640479,76.009082],[-122.645947,76.031006],[-122.607373,76.038672],[-122.54624,76.080518],[-122.548193,76.097314],[-122.608643,76.121436],[-122.609473,76.140283],[-122.587891,76.152979],[-122.592725,76.162061],[-122.623926,76.16748],[-122.684668,76.162402],[-122.902783,76.134717],[-122.878271,76.164795],[-122.774023,76.227686],[-122.519385,76.353174],[-122.423047,76.390088],[-122.365381,76.401221],[-121.61377,76.441455],[-121.561133,76.453467],[-121.203906,76.622168],[-121.102002,76.660742],[-120.997607,76.691455],[-120.485352,76.793213],[-120.437598,76.816455],[-120.357666,76.886914],[-120.310937,76.90459],[-120.200342,76.931348],[-119.831152,77.073877],[-119.494824,77.176904],[-119.323975,77.240674],[-119.090186,77.305078],[-118.82002,77.332715],[-118.005176,77.381201],[-117.418604,77.317383],[-117.279102,77.313379],[-117.210791,77.331445],[-117.148975,77.36084],[-117.061377,77.348486],[-116.843555,77.339551],[-116.795312,77.346582],[-116.703613,77.379932],[-116.76626,77.398242],[-117.029785,77.431885],[-117.045752,77.448975],[-117.039746,77.465137],[-116.947168,77.503857],[-116.835303,77.528857],[-116.511328,77.547607],[-116.362598,77.542822],[-116.208887,77.516016],[-116.008008,77.460645],[-115.55127,77.363281]]],[[[-108.292383,76.057129],[-108.166309,76.054297],[-108.01875,76.065234],[-107.852295,76.057715],[-107.776855,76.035303],[-107.723486,75.99541],[-107.721289,75.974023],[-107.731836,75.955615],[-107.755176,75.940283],[-107.97041,75.8396],[-108.020703,75.804785],[-107.951074,75.796289],[-107.917529,75.802148],[-107.702588,75.877588],[-107.540918,75.901172],[-107.418262,75.906592],[-107.216211,75.891553],[-107.135693,75.878564],[-107.08042,75.863184],[-107.050391,75.84541],[-106.970947,75.773096],[-106.913525,75.679639],[-106.904199,75.689258],[-106.902783,75.74165],[-106.891699,75.782422],[-106.693115,75.809961],[-106.688086,75.819043],[-106.759375,75.841602],[-106.820068,75.872412],[-106.862061,75.930078],[-106.845654,75.951562],[-106.804102,75.974658],[-106.677002,76.02373],[-106.528613,76.053027],[-106.396582,76.060107],[-105.904834,76.008984],[-105.711328,75.966992],[-105.632666,75.945361],[-105.604443,75.929932],[-105.563281,75.880664],[-105.480908,75.745654],[-105.481445,75.702246],[-105.519482,75.632373],[-105.678418,75.501367],[-105.702637,75.4125],[-105.862598,75.191553],[-105.971973,75.131494],[-106.092627,75.089453],[-106.588232,75.01543],[-106.961133,74.940088],[-107.055615,74.928174],[-107.153418,74.927148],[-107.461914,74.952148],[-107.820068,75.000049],[-108.023633,74.986475],[-108.226611,74.951904],[-108.354443,74.942627],[-108.474756,74.947217],[-108.594189,74.95957],[-108.751318,74.991943],[-108.670264,75.006738],[-108.633301,75.023291],[-108.666016,75.040332],[-108.831299,75.064893],[-109.002539,75.010303],[-109.503125,74.882764],[-110.175781,74.83999],[-110.386719,74.813965],[-110.543408,74.780371],[-110.624756,74.752686],[-110.749316,74.687695],[-110.940869,74.638721],[-111.287549,74.585156],[-111.728711,74.501953],[-112.519336,74.416846],[-113.016895,74.401904],[-113.514062,74.430078],[-113.671582,74.453027],[-113.836816,74.488965],[-114.174756,74.57373],[-114.268262,74.604346],[-114.376953,74.67085],[-114.312695,74.715088],[-114.132471,74.766113],[-113.862891,74.812549],[-113.324316,74.875293],[-112.835986,74.975586],[-112.663037,74.994434],[-112.192822,75.009766],[-111.955762,75.000391],[-111.784229,75.005664],[-111.671094,75.019434],[-111.503271,75.055615],[-111.257959,75.127734],[-111.078906,75.195215],[-111.033496,75.226758],[-111.093457,75.256299],[-111.181201,75.260449],[-111.473926,75.191113],[-111.62085,75.167773],[-111.780859,75.166162],[-112.000488,75.142432],[-112.21416,75.13291],[-112.255518,75.133691],[-112.478076,75.2],[-112.59707,75.21167],[-112.652393,75.204688],[-112.703125,75.187158],[-112.799609,75.138184],[-112.855322,75.120605],[-112.951367,75.107812],[-113.339648,75.093262],[-113.711768,75.068604],[-113.794629,75.083838],[-113.844971,75.112207],[-113.855371,75.129492],[-113.860937,75.187744],[-113.886035,75.210938],[-113.85332,75.259375],[-113.810889,75.296338],[-113.758789,75.321729],[-113.503027,75.39668],[-113.46709,75.416113],[-113.588965,75.412109],[-113.878516,75.375439],[-113.916357,75.388184],[-113.984131,75.430078],[-114.016504,75.434277],[-114.053418,75.416895],[-114.074902,75.392383],[-114.124658,75.291211],[-114.168457,75.239502],[-114.284961,75.249951],[-114.429004,75.281152],[-114.482812,75.2854],[-114.513818,75.275488],[-114.503955,75.258008],[-114.357764,75.171289],[-114.356104,75.140967],[-114.451758,75.087891],[-114.85918,74.999756],[-115.020117,74.976172],[-115.077051,74.985303],[-115.12832,75.009473],[-115.173828,75.048828],[-115.279639,75.101562],[-115.342627,75.113379],[-115.413184,75.11499],[-115.478076,75.104102],[-115.537305,75.080713],[-115.574072,75.055859],[-115.608984,75.00957],[-115.683154,74.97417],[-115.728857,74.968115],[-116.142627,75.041553],[-116.476074,75.171777],[-116.841016,75.151514],[-117.004834,75.156104],[-117.501953,75.203857],[-117.565234,75.23335],[-117.600098,75.27168],[-117.596729,75.292529],[-117.576074,75.314063],[-117.513135,75.356787],[-117.387793,75.421484],[-117.335547,75.442334],[-117.257617,75.459521],[-117.154199,75.472998],[-116.890771,75.480518],[-116.212744,75.482959],[-116.077148,75.492969],[-115.335352,75.618066],[-115.250684,75.638574],[-115.141846,75.678516],[-115.117236,75.69502],[-115.121875,75.705811],[-116.034326,75.606689],[-116.425635,75.585352],[-117.025195,75.601514],[-117.137939,75.617139],[-117.163623,75.644873],[-117.038574,75.718408],[-116.972656,75.745752],[-116.802148,75.771582],[-116.389648,75.808203],[-115.838086,75.840576],[-115.476855,75.841309],[-115.17373,75.866992],[-114.991504,75.896338],[-115.602246,75.894824],[-116.337891,75.881055],[-116.444238,75.890625],[-116.654297,75.929297],[-116.664551,75.957568],[-116.580469,75.991553],[-116.549658,76.016846],[-116.609766,76.07373],[-116.591309,76.095801],[-116.454248,76.143213],[-116.209863,76.194434],[-116.059131,76.201709],[-115.768262,76.184229],[-114.939404,76.166113],[-114.778613,76.172607],[-114.880176,76.194873],[-115.024561,76.211475],[-115.664453,76.239844],[-115.796875,76.252539],[-115.822168,76.27002],[-115.831738,76.295801],[-115.825586,76.329834],[-115.779297,76.364697],[-115.580664,76.4375],[-114.998486,76.497461],[-114.766846,76.505713],[-114.534766,76.501758],[-114.298975,76.474805],[-114.193945,76.451465],[-114.14126,76.422656],[-114.115771,76.39585],[-114.112793,76.349463],[-114.101465,76.331201],[-114.058838,76.300732],[-113.923291,76.22915],[-113.823486,76.206836],[-113.362988,76.248437],[-113.171289,76.257764],[-112.978467,76.244678],[-112.697607,76.201709],[-112.333887,76.071875],[-111.865234,75.939307],[-111.867627,75.910742],[-112.047168,75.866406],[-112.080908,75.847412],[-112.056689,75.834229],[-111.877393,75.825537],[-111.709375,75.83208],[-111.549121,75.822119],[-111.513232,75.810693],[-111.454443,75.762158],[-111.372754,75.676465],[-111.275684,75.6125],[-111.163281,75.570215],[-111.052686,75.548535],[-110.8896,75.546924],[-110.725586,75.559521],[-110.459375,75.555322],[-109.086377,75.506494],[-109.005029,75.51499],[-108.947168,75.541797],[-108.912598,75.586963],[-108.899512,75.624072],[-108.918213,75.674756],[-108.944775,75.698975],[-109.796045,75.863037],[-109.870508,75.929053],[-109.454639,76.02124],[-109.424756,76.042529],[-109.416602,76.071826],[-109.430371,76.109131],[-109.486816,76.144678],[-109.710156,76.212451],[-109.907812,76.222656],[-110.200781,76.289453],[-110.247021,76.306348],[-110.284863,76.332959],[-110.314453,76.369385],[-110.309473,76.397412],[-110.27002,76.416992],[-109.981592,76.484766],[-109.864844,76.522363],[-109.505029,76.69165],[-109.338525,76.759961],[-109.219531,76.791992],[-109.098242,76.811865],[-108.831641,76.821143],[-108.553906,76.758057],[-108.492383,76.754199],[-108.466992,76.737598],[-108.477783,76.708252],[-108.512451,76.680273],[-108.611816,76.629736],[-108.635156,76.608545],[-108.627637,76.586719],[-108.559521,76.536328],[-108.538623,76.503125],[-108.523535,76.447168],[-108.5125,76.438916],[-108.345459,76.39165],[-108.193555,76.330078],[-108.123193,76.233447],[-108.17793,76.200049],[-108.305811,76.154053],[-108.381885,76.115723],[-108.406152,76.085059],[-108.386816,76.066553],[-108.292383,76.057129]]],[[[-114.521533,72.59292],[-114.458105,72.580371],[-114.342432,72.590771],[-114.174463,72.624072],[-113.957813,72.651465],[-113.692432,72.672803],[-113.622168,72.646826],[-113.578076,72.6521],[-113.500049,72.694434],[-113.486133,72.722266],[-113.495898,72.753662],[-113.491406,72.82207],[-113.449854,72.863232],[-113.292383,72.949805],[-113.208008,72.981006],[-113.073535,72.995264],[-112.753613,72.986035],[-112.45376,72.936621],[-112.048096,72.888037],[-111.45542,72.765918],[-111.269727,72.713721],[-111.250391,72.668555],[-111.355518,72.572119],[-111.610889,72.435596],[-111.816016,72.386328],[-111.895166,72.356104],[-111.761621,72.335254],[-111.675098,72.300146],[-111.543555,72.350928],[-111.447363,72.407715],[-111.311182,72.454834],[-111.264795,72.459033],[-111.253418,72.449072],[-111.277148,72.424854],[-111.287256,72.401123],[-111.28374,72.377979],[-111.268066,72.363867],[-111.184619,72.356641],[-111.139893,72.365332],[-110.958984,72.431982],[-110.781543,72.533887],[-110.512549,72.599707],[-110.439307,72.63335],[-110.205127,72.661279],[-110.207959,72.681055],[-110.197168,72.758887],[-110.279102,72.792041],[-110.553613,72.861426],[-110.689404,72.944531],[-110.66084,73.008203],[-110.509277,72.998926],[-110.094629,72.992139],[-110.008447,72.983643],[-109.609961,72.875684],[-109.469092,72.808447],[-109.357129,72.775049],[-109.121924,72.726416],[-109.043018,72.686865],[-108.987402,72.670801],[-108.968164,72.654102],[-108.9854,72.636816],[-108.994434,72.595996],[-108.950781,72.582861],[-108.797852,72.567529],[-108.75498,72.551074],[-108.698291,72.499268],[-108.627734,72.412012],[-108.566357,72.317334],[-108.46958,72.13877],[-108.276416,71.900391],[-108.2104,71.751172],[-108.188232,71.723779],[-108.144678,71.704932],[-108.020801,71.67749],[-107.925342,71.638672],[-107.812842,71.626172],[-107.785449,71.629688],[-107.757471,71.663037],[-107.687256,71.716113],[-107.346924,71.819238],[-107.329297,71.835254],[-107.369434,71.858984],[-107.381787,71.875146],[-107.376855,71.886084],[-107.306006,71.894678],[-107.542627,72.025342],[-107.69585,72.149316],[-107.794043,72.302637],[-107.809033,72.347461],[-107.82373,72.442773],[-107.855615,72.467822],[-107.909814,72.490771],[-107.93252,72.52041],[-107.923682,72.556641],[-107.934375,72.587744],[-107.997168,72.652686],[-108.238232,73.105811],[-108.237402,73.149902],[-108.20415,73.183057],[-108.118311,73.202051],[-107.979932,73.206738],[-107.936182,73.217139],[-107.987061,73.233105],[-108.07749,73.281396],[-108.089404,73.303711],[-108.029053,73.34873],[-107.72002,73.329053],[-107.496289,73.288379],[-107.113477,73.192139],[-107.074414,73.197412],[-107.03252,73.245312],[-106.950781,73.276025],[-106.828369,73.265918],[-106.482129,73.196191],[-106.081641,73.071924],[-105.812695,73.010645],[-105.62417,72.92749],[-105.495947,72.848975],[-105.415137,72.78833],[-105.41167,72.764648],[-105.430078,72.740381],[-105.411084,72.70874],[-105.354541,72.669727],[-105.323193,72.634814],[-105.297559,72.560449],[-105.246924,72.463574],[-105.234082,72.415088],[-104.87832,71.97998],[-104.810303,71.903174],[-104.766992,71.867578],[-104.518311,71.699219],[-104.385937,71.576953],[-104.373145,71.495117],[-104.355371,71.47168],[-104.349561,71.433984],[-104.355811,71.38208],[-104.384863,71.337549],[-104.436816,71.300293],[-104.487061,71.2479],[-104.563086,71.132422],[-104.56958,71.104053],[-104.514795,71.064258],[-104.166846,70.927197],[-103.953467,70.762646],[-103.853467,70.733789],[-103.58457,70.630859],[-103.294678,70.572461],[-103.197168,70.547314],[-103.10498,70.510254],[-103.077197,70.508838],[-103.021191,70.51582],[-103.005176,70.525928],[-103.001221,70.540967],[-103.082812,70.619092],[-103.088574,70.649707],[-103.049561,70.655078],[-102.750488,70.521875],[-102.58916,70.468848],[-102.36875,70.413232],[-101.989844,70.285059],[-101.937207,70.274561],[-101.732227,70.286377],[-101.676318,70.278271],[-101.641162,70.265576],[-101.626807,70.24834],[-101.618457,70.172412],[-101.562402,70.13501],[-101.23916,70.150977],[-101.148535,70.147607],[-101.090771,70.135693],[-101.042676,70.110791],[-100.97334,70.029492],[-100.909082,69.869189],[-100.905713,69.811719],[-100.935107,69.715332],[-100.982373,69.679883],[-101.043701,69.668701],[-101.216211,69.679639],[-101.337256,69.710254],[-101.400098,69.749268],[-101.456738,69.833887],[-101.483838,69.850195],[-101.508398,69.833154],[-101.565088,69.755664],[-101.60249,69.721289],[-101.647656,69.698535],[-101.733594,69.70415],[-101.860254,69.738086],[-102.097949,69.824609],[-102.182129,69.845947],[-102.234326,69.842236],[-102.348096,69.812988],[-102.523486,69.758203],[-102.595898,69.71792],[-102.565234,69.692188],[-102.544922,69.659814],[-102.534863,69.620801],[-102.540918,69.59209],[-102.563135,69.573584],[-102.621094,69.551514],[-102.743604,69.547754],[-102.919775,69.564648],[-103.05918,69.594678],[-103.303223,69.674316],[-103.359277,69.685352],[-103.434766,69.667676],[-103.464893,69.644482],[-103.418018,69.611426],[-103.294043,69.568457],[-103.142432,69.497266],[-103.101855,69.48335],[-103.062744,69.484912],[-103.048926,69.471777],[-103.031836,69.433496],[-103.039795,69.367578],[-103.112695,69.235986],[-103.120215,69.20459],[-103.090332,69.212012],[-102.884082,69.341309],[-102.777441,69.377588],[-102.546484,69.434473],[-102.446777,69.476318],[-102.151416,69.487695],[-102.045947,69.464844],[-101.978223,69.425098],[-101.975537,69.407031],[-102.052881,69.360449],[-102.066895,69.337109],[-102.070898,69.307617],[-102.064014,69.281152],[-102.046094,69.257666],[-101.992969,69.236035],[-101.899121,69.245508],[-101.872852,69.239941],[-101.82251,69.21709],[-101.789258,69.181641],[-101.787793,69.132275],[-101.857129,69.023975],[-101.980566,68.988525],[-102.358789,68.922852],[-102.488428,68.888916],[-102.73833,68.86499],[-102.834863,68.833252],[-102.895068,68.823633],[-103.162256,68.828711],[-103.468213,68.808545],[-103.820361,68.847998],[-104.067334,68.865576],[-104.352686,68.928174],[-104.460156,68.912402],[-104.571436,68.872119],[-105.105859,68.92041],[-105.169287,68.955371],[-105.14834,68.978125],[-105.021631,69.05249],[-105.013574,69.068066],[-105.01958,69.08125],[-105.262354,69.093994],[-105.533008,69.133545],[-105.80498,69.153174],[-106.008398,69.147607],[-106.140869,69.162012],[-106.270166,69.19458],[-106.341162,69.224365],[-106.353955,69.251221],[-106.355713,69.280615],[-106.344238,69.339648],[-106.361377,69.381055],[-106.419971,69.41377],[-106.539795,69.443066],[-106.659082,69.4396],[-106.759961,69.407129],[-106.855811,69.347314],[-107.033447,69.180762],[-107.12251,69.152295],[-107.353369,69.031689],[-107.439893,69.002148],[-107.863379,68.954346],[-108.36499,68.934766],[-108.552539,68.897412],[-108.73042,68.827441],[-108.945898,68.759814],[-109.472119,68.676709],[-109.958545,68.630273],[-110.467627,68.61001],[-110.848096,68.578418],[-110.957227,68.594189],[-111.127588,68.58833],[-111.310937,68.542041],[-111.518066,68.533057],[-112.304932,68.516211],[-112.666211,68.485254],[-112.864258,68.4771],[-113.019531,68.481348],[-113.127734,68.494141],[-113.231396,68.5354],[-113.338086,68.598779],[-113.554834,68.767578],[-113.616846,68.838477],[-113.592529,68.959863],[-113.608545,69.030176],[-113.680664,69.181982],[-113.694141,69.19502],[-114.073437,69.251318],[-114.322949,69.269141],[-114.699072,69.272754],[-115.159033,69.264746],[-115.618115,69.282959],[-115.860742,69.303564],[-116.101562,69.337158],[-116.513477,69.424609],[-116.536816,69.433545],[-116.568799,69.462695],[-116.609473,69.512012],[-116.712012,69.576221],[-116.992773,69.719385],[-117.104004,69.804248],[-117.121973,69.825879],[-117.148633,69.888135],[-117.184033,69.991064],[-117.19541,70.054053],[-117.162744,70.09248],[-117.135449,70.100146],[-116.553809,70.175049],[-115.529102,70.257129],[-114.592334,70.312451],[-114.166992,70.307471],[-113.916602,70.281543],[-113.665527,70.269678],[-113.210742,70.263818],[-112.637891,70.225244],[-112.522754,70.228564],[-112.265967,70.254688],[-112.189648,70.275586],[-111.783691,70.2729],[-111.704883,70.285742],[-111.632568,70.308838],[-111.72583,70.352051],[-112.11416,70.446875],[-113.145508,70.616357],[-113.397021,70.652393],[-113.757275,70.690723],[-113.966064,70.696191],[-114.232178,70.674268],[-114.331396,70.675244],[-114.592627,70.642236],[-114.840723,70.621387],[-115.31123,70.601172],[-115.990918,70.586279],[-116.086084,70.590674],[-116.225879,70.616406],[-116.327295,70.62373],[-116.992529,70.603662],[-117.587061,70.629541],[-118.264062,70.88833],[-118.376514,70.967725],[-118.352539,71.000049],[-118.269092,71.034717],[-117.933838,71.134668],[-117.814063,71.158447],[-117.313965,71.212109],[-116.815283,71.276953],[-116.421533,71.337988],[-116.228223,71.35918],[-116.04209,71.36167],[-115.89165,71.381787],[-115.922266,71.401074],[-116.045312,71.423096],[-116.043945,71.454297],[-115.980273,71.469287],[-115.73374,71.485107],[-115.471875,71.46582],[-115.341016,71.472412],[-115.303418,71.493701],[-115.338135,71.510889],[-115.58667,71.546387],[-116.780273,71.444189],[-117.337109,71.434619],[-117.72334,71.390674],[-117.935645,71.39209],[-118.188184,71.435937],[-118.221875,71.449072],[-118.226465,71.46709],[-118.14834,71.525732],[-117.878418,71.56084],[-117.742334,71.659326],[-117.887598,71.661035],[-118.371533,71.639941],[-118.583008,71.649023],[-118.868408,71.686768],[-118.9521,71.731738],[-118.987695,71.764258],[-118.99375,71.803027],[-118.98418,71.913086],[-118.959814,71.972217],[-118.944629,71.985547],[-118.589844,72.16748],[-118.368652,72.205469],[-118.213477,72.262891],[-118.207471,72.286914],[-118.245898,72.311035],[-118.390479,72.369531],[-118.448633,72.399219],[-118.481299,72.427686],[-118.456592,72.47251],[-118.374512,72.533887],[-118.133105,72.632812],[-117.551709,72.831104],[-117.256445,72.914404],[-116.97168,72.959326],[-116.573242,73.054932],[-115.552197,73.213477],[-114.638232,73.372656],[-114.301904,73.330713],[-114.206396,73.297803],[-114.163965,73.269824],[-114.127051,73.230713],[-114.095459,73.180273],[-114.051709,73.070996],[-114.046143,73.0146],[-114.05376,72.958057],[-114.074756,72.906836],[-114.10918,72.860986],[-114.177686,72.805078],[-114.280322,72.739063],[-114.497852,72.625879],[-114.521533,72.59292]]],[[[-119.736328,74.112646],[-119.728564,74.108447],[-119.471094,74.201221],[-119.314844,74.20625],[-119.205957,74.197998],[-119.171436,74.186182],[-119.149609,74.167871],[-119.13877,74.127588],[-119.131885,74.027881],[-119.117969,74.015527],[-119.08252,74.021191],[-119.025684,74.044727],[-118.744141,74.19209],[-118.625293,74.23252],[-118.543994,74.244629],[-118.199658,74.266748],[-117.965869,74.266064],[-117.707471,74.252344],[-117.514844,74.231738],[-117.198828,74.171143],[-116.950391,74.101416],[-116.722363,74.027148],[-115.957715,73.747949],[-115.634326,73.665527],[-115.510693,73.61875],[-115.455664,73.584668],[-115.40752,73.541895],[-115.392822,73.501953],[-115.411572,73.464795],[-115.446875,73.438867],[-115.524463,73.416748],[-115.992285,73.323242],[-116.238623,73.29458],[-116.48252,73.253223],[-117.06543,73.107275],[-117.464453,73.037744],[-117.983203,72.902197],[-118.961572,72.684131],[-119.077979,72.640332],[-119.131543,72.608838],[-119.407764,72.3604],[-119.512842,72.302686],[-119.76748,72.243848],[-120.089746,72.22915],[-120.179883,72.212646],[-120.194434,72.126758],[-120.31001,71.984082],[-120.36626,71.888037],[-120.443164,71.630811],[-120.460938,71.605078],[-120.519678,71.557422],[-120.619336,71.505762],[-120.930322,71.44624],[-121.159814,71.41499],[-121.472168,71.389014],[-121.546826,71.406787],[-121.622168,71.447607],[-121.700684,71.451172],[-121.749365,71.444775],[-122.156641,71.265918],[-122.549512,71.193555],[-122.719775,71.128174],[-122.839941,71.097461],[-122.936523,71.087988],[-123.095654,71.093799],[-123.210596,71.123437],[-123.314746,71.169189],[-123.393359,71.218848],[-123.595166,71.423193],[-123.681836,71.493115],[-123.755566,71.528027],[-123.953271,71.65249],[-124.007764,71.677441],[-124.759961,71.835156],[-125.126123,71.923633],[-125.214648,71.954785],[-125.29668,71.973047],[-125.766895,71.96084],[-125.829102,71.965625],[-125.845313,71.978662],[-125.789648,72.025],[-125.767725,72.054248],[-125.760498,72.08291],[-125.768604,72.12915],[-125.762598,72.1375],[-125.583789,72.183057],[-125.612793,72.192529],[-125.633789,72.210303],[-125.646777,72.236523],[-125.627295,72.254834],[-125.575488,72.265283],[-125.512402,72.307715],[-125.438086,72.38208],[-125.382764,72.423828],[-125.306006,72.450732],[-125.168311,72.522607],[-125.070215,72.551611],[-124.987109,72.587988],[-124.984668,72.604395],[-125.018555,72.616992],[-125.030225,72.644775],[-125.014746,72.731445],[-125.01543,72.776074],[-125.000391,72.81333],[-124.969678,72.843311],[-124.930859,72.863184],[-124.582568,72.925928],[-124.564941,72.944141],[-124.56084,72.965039],[-124.570215,72.988721],[-124.588281,73.005322],[-124.643311,73.018945],[-124.736426,73.022705],[-124.81709,73.058789],[-124.836426,73.07627],[-124.804053,73.125684],[-124.646924,73.204443],[-124.593994,73.243311],[-124.424219,73.418701],[-124.11416,73.527393],[-124.030176,73.644238],[-123.797266,73.768164],[-123.797803,73.785303],[-123.873047,73.827588],[-124.088037,73.856885],[-124.191504,73.902002],[-124.260742,73.953271],[-124.575342,74.248145],[-124.629102,74.27002],[-124.64502,74.304346],[-124.709326,74.327002],[-124.69624,74.348193],[-123.468311,74.436133],[-122.623145,74.46416],[-121.7479,74.540625],[-121.50415,74.545117],[-121.315234,74.52998],[-121.128711,74.490234],[-120.881641,74.420752],[-120.554492,74.35293],[-119.943604,74.253711],[-119.562646,74.232812],[-119.715381,74.153662],[-119.736914,74.129932],[-119.736328,74.112646]]],[[[-69.488867,83.016797],[-68.673242,82.998779],[-68.409033,83.005273],[-68.106885,82.961182],[-67.924609,82.956006],[-67.624463,82.964404],[-67.405664,82.953906],[-66.59165,82.944043],[-66.422559,82.926855],[-66.424805,82.906152],[-66.600391,82.86123],[-66.836328,82.81792],[-68.357568,82.676807],[-68.469336,82.653369],[-68.172852,82.645947],[-67.735889,82.652441],[-67.39707,82.668115],[-66.997705,82.716064],[-66.865723,82.718848],[-66.611865,82.74209],[-66.120459,82.807129],[-65.727441,82.842432],[-65.549609,82.826953],[-65.4,82.802393],[-65.299023,82.799609],[-65.246582,82.818506],[-65.162402,82.870117],[-65.113184,82.888916],[-64.983887,82.902295],[-64.904883,82.90083],[-64.776758,82.876465],[-64.634766,82.818604],[-64.504004,82.778418],[-64.433398,82.777734],[-64.134229,82.823193],[-63.983594,82.829102],[-63.641016,82.812598],[-63.49873,82.792578],[-63.473047,82.77124],[-63.564062,82.74873],[-63.620605,82.729297],[-63.642529,82.712988],[-63.592676,82.694043],[-63.3854,82.653467],[-63.085352,82.565234],[-63.087061,82.532813],[-63.25083,82.466846],[-63.246777,82.450195],[-62.475195,82.51958],[-61.697168,82.488623],[-61.477051,82.467432],[-61.39248,82.441895],[-61.30249,82.399756],[-61.207227,82.341064],[-61.273535,82.279834],[-61.615381,82.184424],[-61.968652,82.110254],[-62.176709,82.043408],[-62.496484,82.006787],[-63.592285,81.845508],[-64.12793,81.793652],[-64.435791,81.742627],[-64.574023,81.73374],[-65.226172,81.743506],[-65.39917,81.715381],[-65.49541,81.668066],[-65.701074,81.645557],[-66.004736,81.629443],[-66.625732,81.616406],[-66.765039,81.563037],[-66.800586,81.526807],[-66.861133,81.498682],[-66.914062,81.485107],[-68.688525,81.293311],[-68.721191,81.26123],[-68.542578,81.247998],[-68.317676,81.26123],[-65.735693,81.494238],[-65.23999,81.509668],[-64.780078,81.492871],[-64.832764,81.438623],[-65.483984,81.284766],[-66.312842,81.146143],[-66.726855,81.040918],[-67.774365,80.859424],[-68.630469,80.678711],[-68.959375,80.586865],[-69.400098,80.422852],[-69.550684,80.383252],[-69.733789,80.366943],[-69.949316,80.373779],[-70.143506,80.397656],[-70.402637,80.458984],[-70.638672,80.527539],[-70.712598,80.5396],[-70.667822,80.505566],[-70.212793,80.277734],[-70.264893,80.233594],[-71.100293,80.187061],[-71.470068,80.145898],[-71.66084,80.135937],[-71.795898,80.143359],[-71.927637,80.13916],[-72.055957,80.123242],[-72.062988,80.105566],[-71.948682,80.086182],[-71.616113,80.071045],[-70.877051,80.122314],[-70.758496,80.118652],[-70.568408,80.093701],[-70.559082,80.070996],[-70.75752,79.998242],[-71.355811,79.911279],[-71.277637,79.906348],[-71.106348,79.875537],[-71.110156,79.847803],[-71.298584,79.782568],[-71.387842,79.761768],[-71.964551,79.701074],[-72.215527,79.686816],[-72.436523,79.694385],[-73.448145,79.8271],[-73.805078,79.846289],[-74.144238,79.879785],[-74.394482,79.874072],[-74.660205,79.835156],[-74.540723,79.815576],[-74.051025,79.778223],[-73.64209,79.770996],[-73.472461,79.756445],[-73.405908,79.732178],[-73.229395,79.643994],[-73.201123,79.596582],[-73.240137,79.55249],[-73.293555,79.521582],[-73.361523,79.504004],[-73.466064,79.495166],[-73.865967,79.501416],[-74.015381,79.490527],[-74.188672,79.464746],[-74.406006,79.453564],[-74.797949,79.458691],[-75.259473,79.421045],[-75.503418,79.41416],[-75.773828,79.431152],[-76.066895,79.473193],[-76.376074,79.494434],[-76.898828,79.512305],[-76.855078,79.488232],[-76.670898,79.478076],[-76.295703,79.413623],[-76.116357,79.326123],[-75.94751,79.311328],[-75.602734,79.239551],[-75.353662,79.22832],[-75.093604,79.203906],[-74.727246,79.235352],[-74.481201,79.229492],[-74.532324,79.052734],[-74.640918,79.035547],[-75.233154,79.035547],[-75.514648,79.06123],[-75.638965,79.087744],[-75.911816,79.117773],[-76.157568,79.100391],[-76.380371,79.10415],[-76.531445,79.086523],[-76.771143,79.087158],[-77.398047,79.057275],[-77.729248,79.056934],[-77.973779,79.076221],[-78.25791,79.082178],[-78.581641,79.075],[-78.558984,79.05459],[-78.421777,79.048389],[-78.221973,79.015137],[-78.036816,78.963916],[-77.882764,78.942383],[-77.698242,78.954541],[-77.5104,78.978467],[-76.824805,79.017871],[-76.524121,79.024219],[-76.255859,79.006836],[-76.077344,78.985156],[-75.952686,78.959033],[-75.795068,78.889746],[-75.399854,78.881299],[-75.098535,78.858301],[-74.618408,78.757715],[-74.486328,78.750098],[-74.433105,78.724121],[-74.535059,78.659277],[-74.546582,78.620312],[-74.878613,78.544824],[-75.396582,78.522852],[-75.96582,78.529834],[-76.373486,78.521094],[-76.416113,78.511523],[-76.136523,78.491699],[-75.488379,78.403516],[-75.237207,78.355713],[-75.193457,78.327734],[-75.550684,78.221094],[-75.865967,78.009814],[-75.969629,77.993115],[-76.077539,77.987305],[-76.355566,77.991016],[-76.708105,77.937891],[-76.974023,77.927246],[-77.455957,77.947168],[-78.012598,77.946045],[-78.056396,77.911719],[-78.084131,77.846094],[-78.081055,77.747363],[-78.047168,77.615479],[-78.076172,77.519043],[-78.167969,77.458105],[-78.28374,77.413086],[-78.493213,77.369385],[-78.708496,77.342139],[-78.869531,77.33252],[-79.137598,77.331006],[-79.906396,77.299561],[-80.281689,77.301465],[-80.573047,77.314795],[-80.874609,77.358594],[-81.376855,77.482129],[-81.519287,77.50957],[-81.659082,77.525439],[-81.653809,77.498828],[-81.503564,77.429785],[-81.378174,77.385205],[-81.277734,77.365186],[-81.301367,77.344043],[-81.522949,77.31084],[-81.767334,77.295947],[-82.056787,77.296533],[-82.066016,77.283643],[-81.967822,77.247852],[-81.840234,77.214111],[-81.756348,77.204004],[-81.534473,77.214453],[-81.277441,77.25708],[-81.117188,77.269629],[-80.798193,77.259473],[-80.672559,77.244287],[-80.274219,77.150928],[-80.218701,77.146582],[-79.92373,77.193604],[-79.497266,77.196094],[-79.340869,77.158398],[-79.281104,77.085156],[-79.273828,77.025781],[-79.318945,76.980371],[-79.220752,76.936035],[-78.979199,76.892871],[-78.791797,76.883594],[-78.658545,76.908008],[-78.455957,76.967236],[-78.37002,76.98125],[-78.288867,76.977979],[-78.165088,76.934912],[-77.99873,76.851953],[-77.983301,76.75498],[-78.118701,76.644043],[-78.284326,76.57124],[-78.934277,76.451172],[-79.130713,76.403955],[-79.285889,76.354785],[-79.511035,76.310498],[-79.953564,76.25127],[-80.186816,76.240186],[-80.690283,76.176465],[-80.799707,76.173584],[-80.962939,76.183936],[-80.99668,76.21499],[-80.955176,76.270166],[-80.901221,76.321533],[-80.834814,76.369141],[-80.832373,76.408643],[-80.974512,76.470068],[-81.074365,76.498486],[-81.170703,76.512744],[-81.364795,76.504492],[-81.474463,76.487646],[-81.591992,76.484424],[-81.717383,76.494971],[-81.822949,76.52085],[-82.03418,76.629395],[-82.113721,76.643213],[-82.21792,76.639795],[-82.311133,76.655371],[-82.393457,76.689893],[-82.529834,76.723291],[-82.493408,76.697803],[-82.356982,76.636035],[-82.261963,76.574707],[-82.20835,76.51377],[-82.233154,76.46582],[-83.388965,76.439258],[-83.885693,76.453125],[-83.986328,76.49502],[-84.223779,76.675342],[-84.275342,76.356543],[-85.14126,76.30459],[-85.343604,76.313379],[-85.680566,76.349023],[-86.11582,76.434912],[-86.296191,76.491846],[-86.366846,76.548633],[-86.419434,76.579639],[-86.453711,76.584863],[-86.561914,76.516504],[-86.680225,76.376611],[-86.977686,76.412744],[-87.354199,76.448047],[-87.489795,76.58584],[-87.497559,76.386279],[-88.104346,76.412744],[-88.395996,76.405273],[-88.481641,76.580078],[-88.49585,76.772852],[-88.614111,76.650879],[-88.562549,76.547217],[-88.545801,76.420898],[-88.803711,76.456836],[-89.369629,76.474463],[-89.570068,76.491943],[-89.544336,76.659668],[-89.499756,76.826807],[-88.770898,76.993359],[-88.556201,77.072217],[-88.398145,77.103955],[-88.147949,77.124023],[-87.828418,77.136475],[-87.610498,77.126855],[-87.361719,77.13623],[-87.064453,77.165869],[-86.852197,77.174414],[-86.812256,77.184912],[-86.873779,77.200293],[-87.100879,77.307715],[-87.182422,77.332129],[-87.265381,77.343018],[-87.429688,77.347803],[-87.58916,77.394824],[-87.681445,77.436377],[-87.780176,77.492822],[-87.937939,77.599805],[-88.094678,77.719189],[-88.016992,77.784717],[-87.757129,77.83623],[-87.496777,77.871924],[-87.236035,77.891797],[-87.017969,77.892236],[-86.755078,77.863721],[-86.385107,77.808594],[-86.172998,77.746143],[-85.906641,77.613916],[-85.731201,77.508643],[-85.588477,77.461133],[-84.950879,77.374951],[-84.738672,77.361035],[-84.487012,77.367969],[-83.973584,77.390527],[-83.721289,77.414209],[-83.608057,77.442236],[-83.549805,77.482568],[-83.477344,77.513623],[-83.250293,77.584814],[-82.902734,77.732715],[-82.710352,77.849512],[-82.664697,77.888818],[-82.626318,77.936328],[-82.595312,77.992139],[-82.703564,77.962402],[-83.30376,77.67373],[-83.428223,77.621289],[-83.779395,77.532617],[-83.928174,77.518311],[-84.167822,77.522705],[-84.48584,77.561963],[-84.860547,77.499512],[-85.087891,77.515381],[-85.289355,77.559033],[-85.292041,77.763867],[-85.547559,77.927686],[-85.265332,78.010596],[-85.031494,78.062012],[-84.61543,78.195703],[-84.52417,78.19707],[-84.222705,78.176025],[-84.388135,78.206348],[-84.55,78.251367],[-84.910352,78.239697],[-84.783203,78.527588],[-85.024316,78.312402],[-85.270166,78.199512],[-85.418994,78.142432],[-85.585938,78.10957],[-86.217773,78.081201],[-86.062598,78.186963],[-85.920068,78.342871],[-86.070947,78.284619],[-86.427051,78.197021],[-86.693604,78.151025],[-86.913232,78.126807],[-87.339355,78.132666],[-87.551758,78.176611],[-87.491113,78.284424],[-87.491309,78.417187],[-87.361279,78.478711],[-87.164307,78.557617],[-86.95293,78.663916],[-86.80791,78.774365],[-86.241895,78.823633],[-85.691016,78.843701],[-85.229687,78.902002],[-85.00376,78.912256],[-84.787256,78.88457],[-83.90791,78.83916],[-83.547021,78.804492],[-83.388721,78.779346],[-83.271436,78.770313],[-83.147412,78.807861],[-82.989795,78.844141],[-82.441797,78.84043],[-82.290674,78.84707],[-82.151074,78.864111],[-81.981104,78.898486],[-81.780811,78.950342],[-81.750098,78.975781],[-81.889111,78.974854],[-82.02832,78.961865],[-82.237402,78.924072],[-82.43877,78.903662],[-82.644092,78.90752],[-83.058545,78.939502],[-83.778613,78.945264],[-84.145801,78.959814],[-84.316113,78.975293],[-84.412012,78.996582],[-84.49585,79.028564],[-84.567773,79.071289],[-84.530273,79.10127],[-84.383594,79.118555],[-84.256641,79.122168],[-84.053027,79.098682],[-83.824609,79.058838],[-83.575879,79.053662],[-83.662012,79.090039],[-83.978125,79.163135],[-84.197363,79.225098],[-84.381055,79.30127],[-84.522412,79.376611],[-84.836426,79.494727],[-85.089795,79.612158],[-85.268506,79.664111],[-85.456934,79.689844],[-86.031494,79.721924],[-86.146631,79.742822],[-86.420752,79.845215],[-86.494336,80.018164],[-86.614502,80.123535],[-86.498535,80.258252],[-86.307178,80.319336],[-85.159619,80.271777],[-84.675439,80.278906],[-84.056543,80.261963],[-83.723633,80.228955],[-83.34375,80.146973],[-83.004297,80.05459],[-82.67749,79.992773],[-82.377002,79.908252],[-82.048779,79.782764],[-81.855713,79.722559],[-81.688379,79.685791],[-81.463037,79.65415],[-81.038086,79.614209],[-80.667822,79.601025],[-80.475928,79.60625],[-80.270605,79.635205],[-80.124463,79.669482],[-80.287451,79.678955],[-80.714014,79.674951],[-81.010156,79.693115],[-81.179053,79.733447],[-81.358691,79.787793],[-81.644238,79.890234],[-81.860254,79.957178],[-82.332373,80.066357],[-82.681299,80.174902],[-82.961133,80.277881],[-82.987012,80.322607],[-82.784814,80.35376],[-82.536133,80.375537],[-80.979639,80.445264],[-80.051074,80.528564],[-79.674365,80.625244],[-79.629346,80.647852],[-78.386182,80.784375],[-77.507129,80.834766],[-77.169141,80.84292],[-76.862988,80.864795],[-76.850342,80.878174],[-77.118555,80.896436],[-77.389453,80.90542],[-78.003809,80.904834],[-78.550977,80.921436],[-78.716211,80.95166],[-78.681934,81.001074],[-78.629297,81.043457],[-78.463965,81.114355],[-78.286816,81.167627],[-77.536035,81.321094],[-77.030713,81.385693],[-76.885107,81.430273],[-77.972363,81.330811],[-78.352148,81.258936],[-78.733887,81.151025],[-78.931543,81.119238],[-79.072461,81.127637],[-79.19834,81.117578],[-79.30918,81.089062],[-79.402148,81.036865],[-79.477246,80.960986],[-79.54541,80.909326],[-79.606641,80.881787],[-79.761328,80.841943],[-80.133545,80.763916],[-81.007031,80.654883],[-81.300977,80.627197],[-81.552686,80.622803],[-82.368213,80.561328],[-82.613037,80.558887],[-82.884326,80.577539],[-82.768311,80.630664],[-82.336768,80.728662],[-82.222363,80.772314],[-82.498437,80.762793],[-82.77998,80.736035],[-83.401416,80.713965],[-83.647119,80.674072],[-83.885352,80.601758],[-84.07627,80.55625],[-84.219775,80.537793],[-84.417822,80.526758],[-85.14585,80.521143],[-85.307422,80.525977],[-85.726221,80.581152],[-86.097168,80.562109],[-86.250342,80.565771],[-86.531592,80.604736],[-86.61543,80.630029],[-86.603076,80.664014],[-86.440479,80.728027],[-86.2521,80.789551],[-85.639307,80.924609],[-85.246289,80.987891],[-84.679932,81.042383],[-83.349219,81.10332],[-83.288818,81.147949],[-84.635449,81.098096],[-85.780859,81.035059],[-85.966797,81.011914],[-86.233447,80.950098],[-87.080273,80.72627],[-87.329883,80.669775],[-87.71167,80.65625],[-88.003662,80.675391],[-88.231982,80.703809],[-88.625098,80.770068],[-88.921436,80.805615],[-89.06167,80.829541],[-89.14458,80.853662],[-89.211768,80.881934],[-89.263281,80.914307],[-89.166895,80.941309],[-88.413086,80.999756],[-87.388672,80.988379],[-86.929004,81.000439],[-86.476758,81.035742],[-85.80957,81.123584],[-85.083301,81.246875],[-84.941211,81.28623],[-85.206299,81.294873],[-85.40249,81.285303],[-85.875049,81.241211],[-86.622754,81.122656],[-87.275098,81.080811],[-88.886816,81.058496],[-89.398389,81.025342],[-89.623047,81.032471],[-89.792285,81.064844],[-89.980957,81.124707],[-89.947314,81.172656],[-89.563379,81.226465],[-89.262549,81.239063],[-89.208691,81.250098],[-89.635693,81.302051],[-89.673682,81.328613],[-89.427002,81.387451],[-88.892285,81.474121],[-88.621924,81.501416],[-88.126514,81.518799],[-87.616699,81.509326],[-87.597021,81.52583],[-88.101367,81.558643],[-88.479053,81.564648],[-88.978369,81.541504],[-90.303516,81.401123],[-90.416309,81.405371],[-90.609033,81.429541],[-90.55376,81.464209],[-89.845215,81.61167],[-89.82168,81.634863],[-90.330859,81.631543],[-90.480371,81.638525],[-90.626318,81.656006],[-90.83374,81.640479],[-91.102734,81.591992],[-91.292383,81.57124],[-91.402783,81.578223],[-91.684082,81.635693],[-91.647559,81.683838],[-91.423828,81.744238],[-91.219482,81.787744],[-90.941943,81.827441],[-90.490186,81.877246],[-90.163037,81.894043],[-89.63335,81.894531],[-89.381006,81.916748],[-89.156348,81.95542],[-88.875244,82.018018],[-88.566846,82.061084],[-88.063184,82.096484],[-87.638916,82.085059],[-87.404395,82.054199],[-87.218164,82.000098],[-87.018213,81.95874],[-86.999219,81.992139],[-86.834033,82.03335],[-86.626807,82.051025],[-86.377539,82.045117],[-86.15835,82.025537],[-85.874805,81.975684],[-85.645654,81.953271],[-85.537988,81.954639],[-85.403174,81.982227],[-85.044824,81.982812],[-85.052246,81.994531],[-85.169238,82.023389],[-85.310596,82.043994],[-86.580615,82.187207],[-86.615625,82.218555],[-86.187598,82.247949],[-85.92002,82.283057],[-85.794434,82.291602],[-85.480859,82.366309],[-85.275977,82.405225],[-84.896826,82.449414],[-84.744727,82.437354],[-84.553369,82.39834],[-84.368115,82.373926],[-83.823633,82.350684],[-83.590674,82.326465],[-83.175684,82.187207],[-83.010156,82.141699],[-82.774219,82.094922],[-82.633691,82.077295],[-82.356006,82.066016],[-82.327441,82.09248],[-82.65708,82.158301],[-82.747461,82.196436],[-82.708594,82.228711],[-82.638379,82.245752],[-82.536914,82.247266],[-82.276562,82.218457],[-81.584473,82.120557],[-80.549902,82.00459],[-80.153369,81.977637],[-79.908643,81.93623],[-79.685547,81.885889],[-79.465625,81.851123],[-79.424854,81.854443],[-79.629492,81.932324],[-80.129834,82.028369],[-81.468262,82.192383],[-81.997607,82.278271],[-82.253662,82.336328],[-82.447559,82.39502],[-82.451367,82.4271],[-82.268896,82.464648],[-82.023242,82.494385],[-81.717773,82.50625],[-81.681152,82.518652],[-81.958594,82.563232],[-82.12251,82.601758],[-82.116846,82.628662],[-81.785352,82.649219],[-81.579687,82.643018],[-81.188867,82.594482],[-80.8625,82.571533],[-80.809668,82.586377],[-81.146631,82.715576],[-81.178076,82.744678],[-81.128174,82.761719],[-81.010156,82.779053],[-80.657129,82.769092],[-80.075781,82.706201],[-79.035059,82.674658],[-78.748779,82.679395],[-78.791797,82.693896],[-79.207227,82.732764],[-79.641992,82.784961],[-79.833789,82.816504],[-79.974316,82.858984],[-80.141162,82.894238],[-80.154932,82.911133],[-79.886328,82.938525],[-79.180566,82.933203],[-78.524951,82.891113],[-77.968652,82.906348],[-77.618066,82.89585],[-77.47959,82.883154],[-77.225879,82.837207],[-76.420996,82.670898],[-76.335547,82.644434],[-76.244043,82.604102],[-76.146484,82.549854],[-76.009375,82.535156],[-75.744336,82.572412],[-75.565625,82.608545],[-75.642871,82.643506],[-76.086963,82.723633],[-76.187793,82.75791],[-76.409961,82.81582],[-76.908447,82.919434],[-77.041211,82.967529],[-77.124902,83.008545],[-75.744922,83.047168],[-74.41416,83.013135],[-74.197754,82.989014],[-74.055859,82.955371],[-73.916504,82.904199],[-73.703125,82.851855],[-73.272021,82.771582],[-72.658691,82.721631],[-72.775928,82.755664],[-73.234668,82.844238],[-73.441895,82.904834],[-73.440723,82.94585],[-73.403809,82.977148],[-73.331152,82.998779],[-72.81167,83.081201],[-72.069238,83.106055],[-71.983203,83.101416],[-71.405957,82.974854],[-71.132031,82.923047],[-70.940381,82.902246],[-70.933008,82.911279],[-71.19834,82.96958],[-71.402393,83.00127],[-71.423535,83.021143],[-71.084814,83.082666],[-70.870557,83.098145],[-69.969922,83.116113],[-69.867676,83.109619],[-69.782129,83.092529],[-69.569385,83.024902],[-69.488867,83.016797]]],[[[-95.484375,77.791992],[-95.233057,77.753809],[-94.959912,77.774072],[-94.666797,77.776221],[-94.014746,77.759912],[-93.582861,77.770752],[-93.471094,77.764307],[-93.300977,77.739795],[-93.210742,77.710205],[-93.128711,77.660156],[-93.33916,77.629688],[-93.51958,77.474414],[-93.543945,77.46665],[-93.740186,77.464551],[-93.836182,77.452246],[-94.408984,77.474219],[-95.987061,77.484131],[-96.056104,77.503467],[-96.263867,77.594531],[-96.276611,77.630566],[-96.23916,77.672559],[-96.19458,77.700537],[-96.142969,77.714355],[-95.683936,77.782275],[-95.484375,77.791992]]],[[[-93.542578,75.02793],[-93.478271,74.951953],[-93.466602,74.921338],[-93.463477,74.856494],[-93.490869,74.771973],[-93.50918,74.756494],[-93.535645,74.749316],[-93.548291,74.727539],[-93.547168,74.691064],[-93.573096,74.668848],[-93.626172,74.660889],[-93.98457,74.644189],[-94.206055,74.647412],[-94.534521,74.636719],[-94.697266,74.642188],[-94.803857,74.660107],[-94.95874,74.699951],[-95.286084,74.794092],[-95.451221,74.797363],[-95.86543,74.83042],[-96.094238,74.93252],[-96.181738,74.950781],[-96.270117,74.920312],[-96.294189,74.927197],[-96.318555,74.947705],[-96.343164,74.981934],[-96.386328,74.999463],[-96.559863,74.990381],[-96.591162,75.001855],[-96.599609,75.031787],[-96.596924,75.057861],[-96.565771,75.09873],[-96.382861,75.211377],[-96.292383,75.219287],[-96.180371,75.240088],[-96.118408,75.300928],[-96.124902,75.358301],[-95.954639,75.443799],[-95.853174,75.469043],[-95.670801,75.528662],[-95.049512,75.621826],[-94.878174,75.630029],[-94.648633,75.623047],[-94.427246,75.593359],[-94.256689,75.544092],[-93.909082,75.42251],[-93.75083,75.349023],[-93.666846,75.273535],[-93.591211,75.230225],[-93.497559,75.136865],[-93.531738,75.100342],[-93.551807,75.051172],[-93.542578,75.02793]]],[[[-100.001904,73.945898],[-99.157959,73.731592],[-99.039648,73.749268],[-98.784521,73.760547],[-98.519336,73.79209],[-98.151855,73.818213],[-97.927734,73.865771],[-97.832178,73.879346],[-97.669971,73.887744],[-97.581836,73.887549],[-97.327051,73.861865],[-97.224756,73.843799],[-97.170508,73.824854],[-97.111719,73.790332],[-97.011279,73.706152],[-96.996582,73.674902],[-97.001709,73.666504],[-97.09458,73.614746],[-97.156396,73.592187],[-97.28418,73.570752],[-97.394775,73.564209],[-97.489795,73.526611],[-97.596973,73.536621],[-97.625879,73.502295],[-97.6146,73.481348],[-97.58584,73.471143],[-97.531836,73.473584],[-97.470117,73.488232],[-97.350293,73.480957],[-97.287109,73.458447],[-97.230371,73.421289],[-97.27251,73.386816],[-97.484082,73.339209],[-97.795898,73.285303],[-98.17583,73.115771],[-98.375586,73.044678],[-98.416846,73.02251],[-98.436963,73.000244],[-98.430908,72.958057],[-98.421777,72.941016],[-98.36665,72.934131],[-98.180811,72.993066],[-98.061035,73.020508],[-97.939404,73.035596],[-97.724805,73.03667],[-97.636328,73.027637],[-97.475684,72.992285],[-97.32876,72.937842],[-97.29585,72.918018],[-97.309912,72.898145],[-97.370996,72.878125],[-97.377686,72.864941],[-97.237598,72.837451],[-97.083008,72.762842],[-97.0729,72.717578],[-97.140479,72.672754],[-97.158936,72.642773],[-97.128125,72.627588],[-97.051807,72.636816],[-96.869043,72.687012],[-96.671289,72.713184],[-96.59209,72.710254],[-96.54209,72.69873],[-96.489209,72.629883],[-96.445605,72.552441],[-96.440137,72.487305],[-96.472852,72.434375],[-96.519873,72.393115],[-96.638281,72.342041],[-96.745508,72.322607],[-96.801465,72.322412],[-96.795898,72.31377],[-96.66875,72.27124],[-96.615576,72.237256],[-96.592871,72.204492],[-96.600586,72.172852],[-96.618115,72.145898],[-96.766309,72.045947],[-96.758301,72.031689],[-96.717285,72.025146],[-96.624365,71.967578],[-96.613428,71.833838],[-96.946484,71.791895],[-97.024658,71.760742],[-97.116699,71.71084],[-97.222217,71.673486],[-97.46123,71.634229],[-97.582275,71.629688],[-98.181348,71.662451],[-98.241943,71.681494],[-98.283887,71.715527],[-98.30708,71.764502],[-98.313379,71.803076],[-98.302686,71.831104],[-98.305811,71.847559],[-98.322705,71.852344],[-98.389307,71.824268],[-98.458838,71.773193],[-98.420801,71.716504],[-98.231445,71.558936],[-98.195312,71.491211],[-98.190137,71.462451],[-98.198633,71.440869],[-98.412305,71.348828],[-98.535937,71.317627],[-98.662891,71.3021],[-98.783838,71.313672],[-98.898779,71.352344],[-98.98623,71.369482],[-99.167139,71.367188],[-99.223633,71.387109],[-99.276172,71.424219],[-99.403662,71.557178],[-99.581445,71.651562],[-99.734717,71.757227],[-100.124121,71.911523],[-100.325684,72.003857],[-100.594482,72.152344],[-100.706836,72.185937],[-100.800195,72.199414],[-100.983643,72.210059],[-101.026221,72.228564],[-101.093115,72.279053],[-101.208545,72.316992],[-101.250684,72.321777],[-101.318701,72.312842],[-101.49834,72.277881],[-101.723926,72.314893],[-101.774512,72.340918],[-101.804443,72.385059],[-101.83291,72.409277],[-101.909326,72.431055],[-101.973682,72.486133],[-102.402246,72.594727],[-102.65708,72.719434],[-102.70874,72.764502],[-102.713672,72.78291],[-102.6875,72.842822],[-102.628467,72.910791],[-102.551074,72.978271],[-102.503809,73.005908],[-102.336133,73.064111],[-102.204004,73.077295],[-102.019629,73.069922],[-101.922461,73.056982],[-101.8354,73.018018],[-101.798047,72.973096],[-101.754541,72.942822],[-101.617773,72.909717],[-101.543604,72.883057],[-101.434619,72.821045],[-101.350586,72.746289],[-101.273193,72.72168],[-101.087598,72.713281],[-100.896045,72.725928],[-100.484766,72.772949],[-100.468018,72.778809],[-100.442578,72.806836],[-100.395703,72.977002],[-100.367529,72.977734],[-100.22793,72.898926],[-100.18833,72.890283],[-100.128125,72.906689],[-100.092383,72.944971],[-100.096729,72.963135],[-100.184473,73.055322],[-100.236182,73.09541],[-100.282666,73.120312],[-100.334375,73.128467],[-100.446191,73.120557],[-100.531396,73.138281],[-100.550195,73.163721],[-100.536377,73.197852],[-100.489307,73.233936],[-100.438818,73.25459],[-100.340723,73.265186],[-100.225879,73.254688],[-100.066992,73.211084],[-99.966406,73.201416],[-99.825146,73.213867],[-100.005908,73.239502],[-100.257959,73.340234],[-100.366113,73.359033],[-100.497998,73.31582],[-100.587012,73.299561],[-100.755322,73.278467],[-100.889355,73.275342],[-101.450879,73.430957],[-101.48208,73.44585],[-101.523193,73.486377],[-101.518457,73.505029],[-101.463037,73.533838],[-101.323145,73.571973],[-101.114941,73.59585],[-100.975781,73.599756],[-100.854102,73.571289],[-100.676807,73.494287],[-100.52168,73.449316],[-100.508936,73.465479],[-100.536328,73.509717],[-100.607129,73.575391],[-100.65791,73.593359],[-100.782715,73.612939],[-100.898242,73.658057],[-100.952588,73.691406],[-100.981543,73.727197],[-100.985107,73.765332],[-100.962988,73.791406],[-100.915137,73.805371],[-100.483643,73.843506],[-100.182324,73.80127],[-99.991113,73.795166],[-99.911865,73.847021],[-99.939502,73.857129],[-100.040088,73.843799],[-100.153809,73.844092],[-100.224805,73.87251],[-100.227051,73.889111],[-100.138477,73.928857],[-100.001904,73.945898]]],[[[-84.919629,65.261084],[-84.885107,65.248975],[-84.84209,65.255908],[-84.771289,65.305273],[-84.6125,65.447314],[-84.56792,65.460645],[-84.501123,65.458447],[-84.266406,65.367236],[-84.17998,65.316309],[-84.133496,65.245459],[-84.084863,65.217822],[-83.900098,65.18125],[-83.722559,65.168994],[-83.490771,65.131787],[-83.407129,65.103906],[-83.222266,64.967969],[-83.200977,64.959668],[-82.990576,64.904102],[-82.667627,64.780322],[-82.585791,64.761914],[-82.27168,64.721143],[-82.158887,64.690674],[-82.05,64.644287],[-81.928906,64.559424],[-81.787207,64.425977],[-81.676123,64.212646],[-81.667383,64.170508],[-81.680908,64.145557],[-81.720947,64.118896],[-81.902637,64.03125],[-81.887109,64.016406],[-81.716113,64.021875],[-81.335645,64.075781],[-81.104053,64.037109],[-81.023584,64.031055],[-81.005029,64.033301],[-80.921143,64.100488],[-80.828955,64.089941],[-80.694287,64.024756],[-80.607568,63.97207],[-80.568848,63.931934],[-80.579199,63.909229],[-80.668262,63.901465],[-80.450586,63.862939],[-80.261328,63.801953],[-80.302051,63.762207],[-80.504053,63.673779],[-80.711768,63.596387],[-80.953516,63.480273],[-81.013867,63.462549],[-81.046387,63.461572],[-81.179688,63.483203],[-81.371729,63.538086],[-81.96333,63.664453],[-82.145996,63.691162],[-82.378125,63.706787],[-82.411719,63.736523],[-82.46709,63.926953],[-82.571484,63.960693],[-82.929688,64.000439],[-83.033887,64.023242],[-83.038672,64.061426],[-83.016162,64.127002],[-83.065137,64.159033],[-83.185547,64.15752],[-83.303955,64.143799],[-83.494336,64.099219],[-83.583594,64.058105],[-83.61709,64.013428],[-83.637988,63.917822],[-83.661621,63.872607],[-83.728271,63.813379],[-84.022119,63.659863],[-84.141602,63.613721],[-84.260449,63.600488],[-84.307617,63.585791],[-84.3875,63.529102],[-84.506201,63.390039],[-84.55459,63.35],[-84.63291,63.309229],[-84.795557,63.246924],[-84.961523,63.197217],[-85.238135,63.139307],[-85.392627,63.119678],[-85.495508,63.139111],[-85.566113,63.270898],[-85.71416,63.657959],[-85.738721,63.684131],[-85.768945,63.700342],[-85.804688,63.706543],[-86.301562,63.656787],[-86.575684,63.662305],[-86.846875,63.575293],[-86.915234,63.568994],[-87.05293,63.571777],[-87.151904,63.585645],[-87.177148,63.595117],[-87.193848,63.632812],[-87.188916,63.672266],[-87.154395,63.714893],[-87.031934,63.83042],[-86.932031,63.90166],[-86.886035,63.92373],[-86.421729,64.051563],[-86.308594,64.093652],[-86.2521,64.136865],[-86.252197,64.18125],[-86.27417,64.238037],[-86.354492,64.376514],[-86.374902,64.502979],[-86.374268,64.56582],[-86.343848,64.662354],[-86.227637,64.896338],[-86.188281,65.010303],[-86.114209,65.417285],[-86.074609,65.533838],[-86.01709,65.640283],[-85.96167,65.704248],[-85.813965,65.831934],[-85.699072,65.883154],[-85.554688,65.918652],[-85.523047,65.914551],[-85.495508,65.899707],[-85.442432,65.845557],[-85.241113,65.795508],[-85.176221,65.746875],[-85.130371,65.69292],[-85.105371,65.622705],[-85.130322,65.59209],[-85.226318,65.545752],[-85.242773,65.526221],[-85.239941,65.510303],[-85.056055,65.437402],[-84.919629,65.261084]]],[[[-97.700928,76.466504],[-97.689746,76.421826],[-97.701855,76.387402],[-97.737109,76.363135],[-97.73877,76.335254],[-97.706836,76.303711],[-97.573145,76.224219],[-97.530664,76.181543],[-97.524268,76.138721],[-97.531055,76.109424],[-97.613477,76.052637],[-97.65,75.97915],[-97.652148,75.940186],[-97.603027,75.879346],[-97.60166,75.851074],[-97.694238,75.802588],[-97.890527,75.760352],[-97.862793,75.738086],[-97.439551,75.68457],[-97.40752,75.67251],[-97.409619,75.5521],[-97.336035,75.419824],[-97.363477,75.417236],[-97.465234,75.458643],[-97.65332,75.507764],[-97.878223,75.416113],[-97.852734,75.260303],[-97.704883,75.19082],[-97.659912,75.151172],[-97.674316,75.127295],[-97.799365,75.11665],[-97.842725,75.121826],[-97.97085,75.153271],[-98.045312,75.20083],[-98.06875,75.19917],[-98.091699,75.176221],[-98.076758,75.152979],[-97.98999,75.110693],[-97.95332,75.060156],[-97.991797,75.045801],[-98.120947,75.032715],[-98.295166,75.032178],[-98.568652,75.009326],[-98.703516,75.005811],[-98.834814,75.018164],[-99.010059,75.021094],[-99.155811,75.015723],[-99.244922,75.025781],[-99.326123,75.049414],[-99.420605,75.04375],[-99.626904,74.98374],[-99.946631,75.002832],[-100.234375,75.007715],[-100.292285,75.027734],[-100.356641,75.066748],[-100.483496,75.188428],[-100.459473,75.219092],[-100.152051,75.235645],[-100.145703,75.246143],[-100.364111,75.289551],[-100.614893,75.321436],[-100.731152,75.346533],[-100.704248,75.394336],[-100.711914,75.406348],[-100.279639,75.460986],[-99.965283,75.568506],[-99.770215,75.612256],[-99.756006,75.633398],[-99.591162,75.655371],[-99.209424,75.668604],[-99.19458,75.698389],[-99.915137,75.68125],[-100.901758,75.62041],[-101.206836,75.59043],[-101.461328,75.60791],[-102.541406,75.513623],[-102.587402,75.513672],[-102.700391,75.543604],[-102.79751,75.599658],[-102.727832,75.638721],[-102.410693,75.712842],[-102.252051,75.777734],[-102.270654,75.812793],[-102.144727,75.875049],[-101.942822,75.883838],[-101.599658,75.832666],[-101.42124,75.781934],[-101.261426,75.758203],[-101.119385,75.762891],[-100.972803,75.798438],[-101.009912,75.802393],[-101.258838,75.783643],[-101.288037,75.789111],[-101.41499,75.84585],[-101.470312,75.881934],[-101.505908,75.918066],[-101.507861,75.943604],[-101.431348,75.991992],[-101.716797,76.00791],[-101.823389,76.041357],[-101.872119,76.083105],[-101.861377,76.10127],[-101.771387,76.150098],[-101.528955,76.217285],[-101.557031,76.23584],[-101.909814,76.234375],[-101.987451,76.243115],[-102.137744,76.284863],[-102.104687,76.331201],[-101.964209,76.399023],[-101.858496,76.439014],[-101.787549,76.45127],[-101.677246,76.451025],[-101.415186,76.424902],[-101.339746,76.410498],[-101.139062,76.345166],[-101.087891,76.307861],[-101.094189,76.271924],[-101.055811,76.245557],[-100.900098,76.20708],[-100.230664,76.007666],[-100.105713,75.960449],[-100.020117,75.939551],[-99.865479,75.924219],[-99.774854,75.927393],[-99.70127,75.941455],[-99.688916,75.959717],[-99.97832,76.029492],[-100.050977,76.066602],[-100.112842,76.117236],[-100.085791,76.133545],[-100.001758,76.139209],[-99.790186,76.132617],[-99.541064,76.146289],[-99.817236,76.167578],[-99.997607,76.19585],[-100.182764,76.197217],[-100.414209,76.242529],[-100.414355,76.256689],[-100.357617,76.271143],[-100.042725,76.29126],[-99.983105,76.299902],[-99.977734,76.312451],[-100.081885,76.342773],[-100.174658,76.359277],[-100.650684,76.395947],[-100.819873,76.437012],[-100.873633,76.456592],[-100.890771,76.475488],[-100.829736,76.523877],[-100.57373,76.584619],[-100.387939,76.613574],[-100.068701,76.634766],[-99.814062,76.632227],[-99.669043,76.624121],[-99.329492,76.521289],[-99.169629,76.453662],[-98.890332,76.465576],[-98.970996,76.536572],[-99.023633,76.614551],[-98.940869,76.643164],[-98.71084,76.693848],[-98.527588,76.667383],[-98.288672,76.59873],[-98.236182,76.575342],[-97.967334,76.53291],[-97.808398,76.518799],[-97.725879,76.496094],[-97.700928,76.466504]]],[[[-103.426025,79.315625],[-103.19165,79.295312],[-102.914355,79.231104],[-102.652295,79.09502],[-102.638965,79.077588],[-102.637598,79.05498],[-102.648193,79.027148],[-102.682861,78.991016],[-102.730518,78.969336],[-102.595605,78.942969],[-102.580762,78.930127],[-102.592773,78.900928],[-102.576172,78.879395],[-102.49458,78.900684],[-102.424805,78.933203],[-102.407324,78.954102],[-102.393164,79.010303],[-102.188574,79.038379],[-101.973633,79.079199],[-101.872607,79.088379],[-101.703662,79.078906],[-101.299023,78.982178],[-101.14458,78.9729],[-101.088477,78.961523],[-101.037158,78.939014],[-101.033691,78.914697],[-101.115918,78.858301],[-101.147461,78.823975],[-101.128125,78.80166],[-100.916992,78.78291],[-100.435498,78.820312],[-100.014746,78.728613],[-99.781836,78.619629],[-99.609424,78.583057],[-99.582129,78.563281],[-99.631104,78.544678],[-99.680176,78.493506],[-99.818311,78.455371],[-99.847803,78.438232],[-99.774121,78.392969],[-99.768652,78.364551],[-99.778223,78.325098],[-99.751367,78.302979],[-99.562451,78.279346],[-99.131543,78.117529],[-99.053125,78.072363],[-99.00459,78.015967],[-98.999609,77.996875],[-99.061182,77.965625],[-99.128369,77.877148],[-99.166406,77.856934],[-99.341309,77.839648],[-99.659131,77.824072],[-99.955908,77.793799],[-100.274658,77.832715],[-100.586035,77.891797],[-100.680273,77.930664],[-100.75791,77.977686],[-100.778223,77.996045],[-100.80957,78.071631],[-100.826172,78.087744],[-100.957617,78.130225],[-101.074121,78.193848],[-101.297998,78.199365],[-101.829492,78.264111],[-102.056982,78.279541],[-102.284473,78.275],[-102.606982,78.248926],[-102.667676,78.255908],[-102.722705,78.275244],[-102.77207,78.306885],[-102.784326,78.330176],[-102.731348,78.371045],[-103.677246,78.31958],[-103.946582,78.26001],[-104.324219,78.269482],[-104.512646,78.294629],[-104.763574,78.35166],[-104.879346,78.40127],[-104.9854,78.468018],[-104.995557,78.518506],[-104.909619,78.552637],[-104.820117,78.5729],[-104.727051,78.579395],[-104.213965,78.539746],[-103.764355,78.519531],[-103.570508,78.539844],[-103.482568,78.593945],[-103.587988,78.622998],[-104.02085,78.634912],[-103.928516,78.663379],[-103.562695,78.692676],[-103.371582,78.736328],[-103.408398,78.751611],[-103.518359,78.769141],[-104.00874,78.764014],[-104.18501,78.781299],[-104.19458,78.795605],[-104.15498,78.813965],[-103.875635,78.902686],[-103.887158,78.918799],[-104.007227,78.947852],[-104.112744,78.985596],[-104.151953,78.989893],[-104.394824,78.956152],[-104.736035,78.825928],[-104.817432,78.80708],[-104.895508,78.808154],[-104.970215,78.82915],[-104.969531,78.856494],[-104.893408,78.890186],[-104.735254,78.991113],[-104.746777,79.0271],[-104.901367,79.051123],[-105.308789,79.033203],[-105.535645,79.03252],[-105.570752,79.060986],[-105.580176,79.114209],[-105.571045,79.164209],[-105.514551,79.24248],[-105.435693,79.302246],[-105.387695,79.323584],[-104.847363,79.310986],[-103.9646,79.348145],[-103.706396,79.352051],[-103.426025,79.315625]]],[[[-91.885547,81.132861],[-91.75498,81.049316],[-91.272461,80.850098],[-91.053906,80.777686],[-90.68291,80.687695],[-90.636719,80.655322],[-90.632471,80.641699],[-90.643018,80.593701],[-90.537256,80.575928],[-90.217627,80.548242],[-89.861865,80.498437],[-89.797852,80.50127],[-89.673828,80.530762],[-89.524805,80.538818],[-89.329053,80.531738],[-89.235596,80.510645],[-89.166895,80.479639],[-89.138281,80.457422],[-89.13418,80.440234],[-89.204395,80.406934],[-89.196582,80.394043],[-89.154687,80.378516],[-89.147266,80.360352],[-89.217676,80.289258],[-89.19834,80.263184],[-89.019238,80.198486],[-88.857324,80.166211],[-88.537549,80.131152],[-88.329248,80.133691],[-88.199902,80.111475],[-88.196826,80.125195],[-88.255371,80.166504],[-88.380762,80.225195],[-88.6125,80.255371],[-88.64624,80.289746],[-88.663428,80.348291],[-88.643652,80.386865],[-88.524805,80.418018],[-88.424365,80.428076],[-88.125244,80.429492],[-87.96001,80.415625],[-87.675,80.372119],[-87.645508,80.348438],[-87.630273,80.301611],[-87.618359,80.207471],[-87.625488,80.187207],[-87.869141,80.133887],[-87.922314,80.097705],[-87.860693,80.0875],[-87.651367,80.079443],[-87.328516,80.046533],[-87.202051,80.043213],[-87.076172,79.966943],[-86.977197,79.894238],[-87.049512,79.80542],[-87.144238,79.662646],[-87.220264,79.629932],[-87.295166,79.580176],[-87.242871,79.571143],[-86.925244,79.590967],[-86.861035,79.597705],[-86.648828,79.64624],[-86.336963,79.634961],[-86.232227,79.622412],[-86.180469,79.60542],[-86.085547,79.551221],[-86.007031,79.479443],[-85.948975,79.485986],[-85.803857,79.573047],[-85.750928,79.594531],[-85.678613,79.615283],[-85.647852,79.611426],[-85.501367,79.530322],[-85.175586,79.387256],[-85.06377,79.328174],[-85.042139,79.28457],[-85.181348,79.23374],[-85.289844,79.20835],[-86.09165,79.1],[-86.450537,79.038672],[-86.629443,78.991309],[-86.720801,78.975488],[-86.913477,78.982812],[-86.957178,78.974902],[-87.016455,78.898682],[-87.080371,78.866113],[-87.246387,78.813477],[-87.47876,78.718164],[-87.617383,78.676318],[-87.861475,78.706836],[-87.922314,78.751367],[-87.95625,78.851611],[-87.960742,78.893115],[-87.953174,78.915039],[-87.922607,78.950586],[-87.816748,79.036328],[-87.829395,79.045312],[-87.878369,79.038184],[-88.040186,78.995312],[-88.104053,78.972803],[-88.163818,78.933496],[-88.190234,78.867432],[-88.166602,78.745508],[-88.189697,78.696387],[-88.25376,78.671973],[-88.227881,78.653027],[-88.037012,78.626953],[-88.003125,78.615527],[-87.981982,78.594727],[-87.973633,78.564746],[-87.982861,78.537061],[-88.040234,78.494434],[-88.147559,78.4771],[-88.28457,78.496533],[-88.580664,78.601904],[-88.709277,78.596094],[-88.741602,78.584033],[-88.713965,78.546436],[-88.623047,78.462109],[-88.606445,78.391992],[-88.648389,78.33374],[-88.732959,78.241699],[-88.791016,78.192432],[-88.822412,78.185889],[-88.969629,78.184424],[-89.095703,78.209229],[-89.47002,78.370215],[-89.655273,78.438867],[-89.926221,78.573047],[-89.995361,78.600684],[-90.037109,78.606836],[-90.076318,78.54917],[-90.001025,78.495801],[-89.757275,78.370215],[-89.61167,78.278906],[-89.506836,78.203271],[-89.489844,78.171924],[-89.525684,78.159619],[-89.579492,78.166602],[-89.651123,78.193018],[-89.873047,78.237598],[-89.965186,78.262451],[-90.025439,78.29126],[-90.136084,78.313086],[-90.297217,78.328027],[-90.459033,78.330908],[-90.621582,78.321729],[-90.652393,78.307715],[-90.469189,78.268555],[-90.40542,78.24668],[-90.357959,78.21875],[-90.326758,78.184766],[-90.386963,78.163281],[-90.614404,78.149854],[-90.918115,78.158398],[-91.409619,78.187988],[-91.89917,78.236865],[-92.35127,78.312891],[-92.678271,78.389111],[-92.807617,78.429736],[-92.848242,78.460107],[-92.725586,78.48667],[-92.296729,78.520801],[-91.866895,78.542676],[-91.934961,78.561719],[-92.715527,78.605029],[-92.97251,78.612939],[-93.109375,78.601562],[-93.266602,78.608301],[-93.389453,78.642676],[-93.552051,78.707813],[-93.634424,78.750928],[-93.62334,78.767773],[-93.561426,78.777344],[-93.20835,78.769189],[-93.159863,78.775635],[-93.336475,78.808057],[-93.902246,78.872217],[-94.1146,78.928906],[-94.153613,78.951025],[-94.169678,78.972803],[-94.162793,78.994189],[-93.950195,79.037402],[-93.293896,79.139502],[-93.068457,79.155371],[-92.841602,79.156396],[-92.683643,79.185791],[-92.547217,79.282617],[-91.867578,79.317432],[-91.343652,79.360889],[-91.299902,79.372705],[-91.692627,79.364746],[-92.247949,79.373437],[-92.48457,79.439258],[-92.644727,79.450439],[-92.821924,79.449902],[-93.028125,79.429248],[-93.380859,79.368164],[-93.550439,79.353955],[-93.933154,79.290723],[-94.039844,79.295215],[-94.093359,79.302734],[-94.109375,79.315088],[-94.040283,79.357031],[-93.939697,79.385693],[-93.960254,79.395508],[-94.110303,79.401562],[-94.284131,79.400439],[-94.404883,79.390527],[-94.846045,79.335059],[-95.043701,79.293555],[-95.103174,79.289893],[-95.316602,79.354736],[-95.657031,79.390381],[-95.733008,79.418213],[-95.662891,79.527344],[-95.563477,79.549756],[-95.302344,79.568066],[-94.519678,79.667139],[-94.475537,79.686182],[-94.401855,79.736328],[-94.580859,79.725635],[-94.973047,79.677197],[-95.296973,79.653076],[-95.55249,79.653223],[-95.739355,79.660156],[-95.85752,79.673779],[-95.999658,79.704688],[-96.462744,79.84751],[-96.589062,79.91665],[-96.606738,79.977686],[-96.639209,80.02417],[-96.773242,80.135791],[-95.781982,80.066406],[-95.393848,80.053271],[-94.645898,80.04873],[-94.61084,80.055518],[-94.599805,80.073633],[-94.612695,80.102979],[-94.606982,80.125586],[-94.582617,80.141406],[-94.304443,80.181641],[-94.262598,80.194873],[-94.590137,80.201514],[-95.192383,80.134375],[-95.405078,80.13501],[-95.64624,80.230957],[-95.904004,80.214111],[-96.025684,80.221729],[-96.215088,80.245898],[-96.308301,80.266992],[-96.368408,80.293066],[-96.394092,80.315039],[-96.385352,80.332861],[-96.334375,80.352783],[-96.112158,80.38042],[-96.011865,80.383057],[-95.747363,80.365283],[-95.549072,80.366602],[-95.614453,80.39624],[-95.901074,80.47085],[-96.151807,80.553467],[-96.132812,80.691406],[-95.926953,80.720654],[-95.713623,80.725439],[-95.505273,80.690576],[-95.22583,80.685791],[-95.025732,80.646436],[-94.892578,80.570898],[-94.734473,80.572363],[-94.4854,80.558057],[-93.92793,80.55918],[-94.028711,80.586182],[-94.202148,80.609717],[-94.596289,80.640625],[-94.788477,80.75127],[-95.19585,80.808301],[-95.514746,80.838135],[-95.509277,80.863232],[-95.269775,81.000781],[-94.980518,81.049658],[-94.519434,81.031201],[-94.216309,81.057178],[-93.825977,81.105713],[-93.44375,81.083252],[-93.345117,81.085352],[-93.286719,81.100293],[-93.235645,81.128857],[-93.2354,81.155127],[-93.285937,81.179248],[-93.406543,81.209082],[-93.894434,81.213281],[-94.110352,81.225],[-94.194434,81.240918],[-94.218652,81.264941],[-94.231494,81.289697],[-94.232959,81.315137],[-94.220117,81.330762],[-94.179346,81.339258],[-94.059717,81.349316],[-93.604883,81.350586],[-93.332764,81.364404],[-93.034668,81.346289],[-92.412598,81.278271],[-92.211768,81.243604],[-91.997852,81.185498],[-91.885547,81.132861]]],[[[-94.294971,76.912451],[-94.107959,76.90376],[-93.948047,76.91709],[-93.810937,76.91416],[-93.608398,76.873828],[-93.420752,76.812207],[-93.276562,76.784326],[-93.230029,76.770264],[-93.211865,76.754688],[-93.189258,76.708008],[-93.18999,76.686377],[-93.200586,76.669092],[-93.263672,76.626465],[-93.316748,76.573682],[-93.42627,76.527148],[-93.48457,76.492041],[-93.53457,76.447705],[-93.421875,76.474121],[-92.995361,76.62041],[-92.71626,76.602979],[-92.297021,76.616016],[-91.789453,76.675781],[-91.548437,76.685107],[-91.305029,76.680762],[-91.124268,76.661914],[-90.738428,76.581348],[-90.604785,76.542969],[-90.554639,76.515771],[-90.542627,76.495752],[-90.621631,76.464697],[-90.864062,76.483594],[-91.263037,76.500244],[-91.335986,76.510596],[-91.398096,76.509766],[-91.443262,76.498535],[-91.415088,76.455859],[-91.333887,76.446484],[-90.854785,76.437305],[-89.284521,76.301611],[-89.219092,76.258203],[-89.236523,76.239014],[-89.29209,76.217725],[-89.406592,76.18916],[-90.312061,76.158008],[-90.827344,76.185596],[-91.2604,76.22998],[-91.407324,76.220068],[-91.279443,76.159912],[-91.019775,76.141553],[-90.802393,76.105957],[-90.712109,76.076172],[-90.251367,76.053467],[-90.176025,76.030273],[-90.032764,75.970898],[-89.912549,75.966309],[-89.793408,75.924854],[-89.695312,75.853613],[-89.650049,75.844092],[-89.51123,75.856934],[-89.277588,75.795068],[-89.204883,75.762012],[-89.204541,75.737256],[-89.256641,75.698486],[-89.36123,75.645801],[-89.625439,75.58374],[-89.646045,75.565039],[-89.337305,75.572363],[-89.28042,75.564111],[-88.916699,75.453955],[-88.868848,75.451953],[-88.838916,75.463477],[-88.804102,75.50249],[-88.819629,75.538574],[-88.864062,75.588623],[-88.852148,75.624902],[-88.783936,75.647461],[-88.714893,75.658643],[-88.644971,75.658447],[-88.569043,75.645117],[-88.201318,75.512012],[-87.729736,75.575635],[-87.643652,75.54707],[-87.572412,75.493652],[-87.539111,75.484863],[-87.364648,75.591309],[-87.256934,75.617725],[-86.814453,75.491357],[-86.544727,75.463379],[-86.436523,75.436279],[-86.236328,75.406348],[-85.951465,75.39502],[-85.904541,75.441943],[-86.06875,75.502246],[-85.972998,75.528711],[-85.58125,75.579785],[-85.372314,75.572607],[-84.986768,75.644922],[-84.750195,75.654687],[-84.604883,75.653467],[-84.127637,75.762646],[-84.014258,75.779932],[-83.931982,75.818945],[-83.74458,75.812842],[-83.237109,75.75083],[-83.093408,75.756445],[-82.553467,75.818262],[-82.353857,75.83335],[-82.153662,75.831055],[-81.647363,75.794922],[-81.268555,75.756006],[-81.150781,75.735547],[-81.192676,75.684375],[-81.173535,75.669238],[-81.124414,75.658154],[-81.000781,75.643115],[-80.527734,75.642139],[-80.321973,75.629102],[-80.15835,75.581152],[-80.119189,75.562061],[-80.125732,75.542139],[-80.286621,75.490381],[-80.260449,75.479443],[-80.099609,75.467432],[-79.737695,75.461475],[-79.660205,75.449512],[-79.585742,75.384863],[-79.507812,75.295361],[-79.509082,75.259814],[-79.634424,75.199316],[-79.977148,75.118604],[-80.357568,75.051563],[-80.381982,75.03418],[-80.260645,75.002148],[-80.135254,74.988086],[-80.036426,74.990918],[-79.733008,75.021436],[-79.664062,75.02085],[-79.524805,74.989697],[-79.4604,74.958789],[-79.401416,74.917627],[-79.507959,74.880127],[-79.944482,74.833643],[-80.202441,74.894824],[-80.289209,74.908301],[-80.347754,74.902979],[-80.314551,74.876172],[-80.189746,74.827686],[-80.148926,74.795703],[-80.192236,74.780176],[-80.212695,74.749463],[-80.210254,74.703613],[-80.220605,74.657031],[-80.262744,74.584473],[-80.277734,74.581592],[-81.226221,74.56665],[-81.340479,74.553516],[-81.607178,74.502344],[-81.808838,74.476611],[-81.940186,74.472705],[-82.068506,74.48208],[-82.414746,74.535205],[-82.64541,74.525195],[-82.735791,74.530273],[-82.931055,74.565576],[-82.978418,74.583447],[-83.057617,74.629785],[-83.116992,74.693115],[-83.112305,74.732129],[-83.087305,74.788379],[-83.102637,74.816553],[-83.158301,74.816748],[-83.220312,74.828418],[-83.407031,74.884814],[-83.52207,74.901465],[-83.543555,74.892285],[-83.509766,74.848193],[-83.487305,74.834131],[-83.364209,74.801904],[-83.341309,74.7646],[-83.393701,74.670166],[-83.412207,74.65498],[-83.531885,74.585693],[-83.621875,74.565918],[-83.868066,74.564404],[-84.245166,74.515186],[-84.425537,74.508105],[-84.66709,74.51958],[-84.818262,74.541992],[-84.916309,74.567676],[-85.011523,74.604199],[-85.061426,74.606934],[-85.086768,74.527686],[-85.133447,74.517432],[-85.214307,74.518652],[-85.339258,74.543311],[-85.442334,74.600586],[-85.474414,74.600342],[-85.488672,74.566992],[-85.511719,74.545117],[-85.543506,74.534766],[-85.808008,74.498975],[-85.955615,74.498779],[-86.109863,74.539746],[-86.210938,74.535596],[-86.340576,74.513477],[-86.65542,74.55542],[-86.730762,74.557031],[-86.666113,74.489111],[-86.770166,74.478613],[-86.994727,74.480322],[-87.36377,74.502197],[-87.592578,74.470361],[-88.005859,74.489355],[-88.423047,74.494141],[-88.500732,74.509717],[-88.555664,74.541455],[-88.557861,74.569727],[-88.537646,74.608789],[-88.476611,74.666895],[-88.374707,74.744141],[-88.339551,74.784863],[-88.431445,74.803711],[-88.488184,74.828906],[-88.534961,74.831738],[-88.682031,74.802002],[-88.777832,74.715186],[-88.851074,74.68999],[-88.883398,74.711084],[-88.907812,74.763818],[-88.940137,74.789502],[-88.980371,74.788086],[-89.019629,74.774023],[-89.057861,74.747266],[-89.115283,74.737598],[-89.191943,74.744873],[-89.219141,74.731787],[-89.196826,74.698242],[-89.189062,74.666846],[-89.195801,74.637549],[-89.261865,74.60918],[-89.45,74.56792],[-89.558691,74.554736],[-89.844385,74.548584],[-90.015332,74.560889],[-90.361621,74.610449],[-90.553271,74.612744],[-90.784082,74.695898],[-90.966797,74.715088],[-90.95752,74.745166],[-90.877637,74.801074],[-90.880225,74.817773],[-91.129883,74.736279],[-91.163721,74.710254],[-91.13457,74.649854],[-91.167725,74.645508],[-91.339453,74.667236],[-91.50835,74.650684],[-91.549121,74.655566],[-91.665771,74.69917],[-91.871045,74.743506],[-91.961572,74.793213],[-92.102539,74.948389],[-92.17417,75.051074],[-92.165234,75.072021],[-92.060498,75.100977],[-92.076318,75.123535],[-92.206836,75.18125],[-92.347461,75.229785],[-92.389258,75.26333],[-92.40835,75.297266],[-92.4271,75.346387],[-92.427979,75.382715],[-92.411084,75.40625],[-92.330664,75.479443],[-92.110449,75.610645],[-92.080713,75.634473],[-92.068848,75.65791],[-92.09917,75.727295],[-92.141846,75.796826],[-92.185107,75.846533],[-92.306592,75.915137],[-92.47373,75.986475],[-92.708887,76.114453],[-92.883301,76.213965],[-93.091748,76.354004],[-93.192285,76.366016],[-93.308594,76.359619],[-93.559961,76.311426],[-93.644434,76.288525],[-93.665186,76.273145],[-93.852344,76.269678],[-94.382568,76.282324],[-94.585352,76.297168],[-94.736719,76.293262],[-94.996631,76.257715],[-95.273877,76.264404],[-95.447412,76.363037],[-95.84165,76.416162],[-95.959277,76.445996],[-96.039697,76.486719],[-96.013086,76.51333],[-95.788867,76.537207],[-95.695703,76.563428],[-95.650977,76.584668],[-95.873193,76.566406],[-95.971338,76.569629],[-96.639697,76.70293],[-96.845654,76.726416],[-96.880713,76.73833],[-96.897998,76.754004],[-96.897559,76.773486],[-96.878027,76.802783],[-96.679395,76.765771],[-96.590283,76.763037],[-96.451172,76.774072],[-96.401562,76.797217],[-96.433203,76.810693],[-96.661035,76.855176],[-96.771143,76.888916],[-96.813525,76.913477],[-96.769824,76.948242],[-96.758301,76.971777],[-96.685107,76.98501],[-96.550098,76.987939],[-96.377295,77.00459],[-96.06123,77.050049],[-95.849512,77.066211],[-95.638232,77.06377],[-95.126416,77.017334],[-94.616113,76.95835],[-94.294971,76.912451]]],[[[-96.204492,78.531299],[-95.968457,78.505127],[-95.561133,78.516602],[-95.412939,78.497559],[-95.031201,78.430273],[-94.915381,78.390527],[-94.887744,78.360498],[-94.887158,78.345215],[-95.013867,78.312598],[-95.267871,78.262646],[-95.329248,78.225049],[-95.102734,78.178076],[-94.987793,78.136279],[-94.936035,78.106396],[-94.934277,78.075635],[-95.087012,77.992627],[-95.199121,77.968164],[-95.370508,77.970801],[-95.451562,77.963232],[-95.670801,77.924463],[-96.011572,77.887402],[-96.476855,77.872168],[-96.603027,77.849316],[-96.833984,77.811914],[-96.989648,77.806006],[-97.040479,77.827441],[-97.063818,77.859082],[-97.051953,77.880957],[-97.019092,77.908105],[-97.093311,77.933496],[-97.42666,77.982275],[-97.62085,78.050244],[-97.648389,78.071631],[-97.658154,78.090625],[-97.226611,78.103223],[-97.040918,78.116943],[-96.95835,78.139014],[-96.944678,78.151855],[-97.027344,78.157422],[-97.323047,78.203223],[-97.819043,78.230615],[-97.842725,78.262354],[-98.049512,78.325928],[-98.069287,78.386328],[-98.114307,78.403027],[-98.254932,78.429248],[-98.275684,78.437891],[-98.317334,78.476855],[-98.32373,78.498145],[-98.315625,78.51748],[-98.060352,78.55835],[-98.095996,78.58667],[-98.289893,78.692383],[-98.34082,78.751221],[-98.332617,78.773535],[-98.212109,78.804541],[-98.042871,78.805225],[-97.595898,78.795801],[-97.382324,78.78291],[-97.169336,78.757666],[-96.935791,78.720264],[-96.587061,78.687109],[-96.475342,78.665186],[-96.265283,78.595361],[-96.242627,78.573193],[-96.256494,78.551123],[-96.204492,78.531299]]],[[[-93.17085,74.160986],[-92.778027,74.113721],[-92.586816,74.082715],[-92.492822,74.062061],[-92.313867,73.992383],[-92.222705,73.972363],[-91.87417,74.012793],[-91.63042,74.027783],[-91.087988,74.009277],[-90.627441,73.951709],[-90.458008,73.908398],[-90.35459,73.868652],[-90.381396,73.824756],[-90.466162,73.753857],[-90.565576,73.686426],[-90.764551,73.580615],[-90.933691,73.527686],[-90.975488,73.502295],[-91.001953,73.46709],[-91.067627,73.415527],[-91.249316,73.304004],[-91.297803,73.284912],[-91.553711,73.236084],[-91.466016,73.214209],[-91.425928,73.194873],[-91.459619,73.145361],[-91.620996,73.025879],[-91.78833,72.915381],[-91.905322,72.849316],[-92.11792,72.753809],[-92.234912,72.726807],[-92.391943,72.718457],[-93.340625,72.801855],[-93.578662,72.800537],[-94.211328,72.756934],[-94.151709,72.735645],[-93.92002,72.703369],[-93.770557,72.668213],[-93.572266,72.558643],[-93.546484,72.531299],[-93.533936,72.499463],[-93.541602,72.437012],[-93.555176,72.421143],[-93.870605,72.252637],[-93.972559,72.12998],[-94.037549,72.02876],[-94.14375,72.00083],[-94.497168,72.043604],[-94.61123,72.042334],[-95.007861,72.012793],[-95.192969,72.027441],[-95.166797,72.180029],[-95.192676,72.344775],[-95.251025,72.501953],[-95.547607,72.781543],[-95.580322,72.831152],[-95.602148,72.884473],[-95.613184,72.941602],[-95.612207,72.999072],[-95.591602,73.115283],[-95.589258,73.17417],[-95.604102,73.327734],[-95.644238,73.557471],[-95.647998,73.638525],[-95.645264,73.670801],[-95.63291,73.695459],[-95.569434,73.728174],[-95.447412,73.75166],[-95.385986,73.755127],[-94.996143,73.685742],[-94.816846,73.662549],[-94.697607,73.663574],[-94.691016,73.671436],[-94.797168,73.686084],[-94.896924,73.716016],[-95.059473,73.805078],[-95.134131,73.88125],[-95.149023,73.906396],[-95.152588,73.932764],[-95.144775,73.960303],[-95.121191,73.985059],[-95.039844,74.023877],[-94.973535,74.041406],[-94.728955,74.085986],[-94.482568,74.113135],[-93.938818,74.131592],[-93.784619,74.118359],[-93.549219,74.167139],[-93.410303,74.17876],[-93.17085,74.160986]]],[[[-97.439453,69.642676],[-97.408643,69.630762],[-97.350684,69.640869],[-97.305762,69.673486],[-97.278467,69.679639],[-97.236084,69.673486],[-97.096338,69.61499],[-96.989062,69.553613],[-96.875195,69.51001],[-96.694531,69.471094],[-96.299951,69.344385],[-96.18374,69.258691],[-96.060986,69.125439],[-95.951367,69.02373],[-95.854883,68.953564],[-95.751367,68.897656],[-95.585498,68.835107],[-95.437549,68.880615],[-95.37417,68.892139],[-95.319531,68.873193],[-95.267773,68.826074],[-95.295166,68.805029],[-95.359473,68.778369],[-95.465576,68.747266],[-95.614209,68.74502],[-95.685645,68.73584],[-95.802148,68.686475],[-95.894629,68.627246],[-96.024023,68.607275],[-96.267627,68.50791],[-96.401562,68.470703],[-96.598828,68.46084],[-97.008398,68.538672],[-97.263672,68.527734],[-97.472021,68.543701],[-97.704785,68.625928],[-97.885352,68.672461],[-98.235059,68.739355],[-98.257959,68.749268],[-98.273047,68.771875],[-98.280176,68.807178],[-98.296045,68.830762],[-98.320557,68.842725],[-98.375586,68.841699],[-98.431836,68.818359],[-98.539648,68.798242],[-98.703809,68.802783],[-98.775244,68.816748],[-98.829639,68.838623],[-98.859131,68.864355],[-98.863721,68.893799],[-98.878857,68.916455],[-98.904492,68.932422],[-98.964014,68.932861],[-99.057373,68.917676],[-99.093848,68.898877],[-99.073389,68.876563],[-99.090625,68.86333],[-99.254004,68.863184],[-99.317969,68.87627],[-99.440869,68.917676],[-99.494678,68.95957],[-99.564062,69.034131],[-99.557373,69.054297],[-99.513281,69.099609],[-99.455713,69.131201],[-99.085449,69.149756],[-98.912207,69.167578],[-98.723633,69.219141],[-98.503516,69.308301],[-98.455957,69.334668],[-98.450391,69.354053],[-98.466602,69.375],[-98.535352,69.426318],[-98.558545,69.461426],[-98.536719,69.478027],[-98.448389,69.479541],[-98.494873,69.499365],[-98.534375,69.527441],[-98.548242,69.544971],[-98.545996,69.5729],[-98.47583,69.579053],[-98.389355,69.565039],[-98.222314,69.484521],[-98.155762,69.468848],[-98.041357,69.456641],[-98.162988,69.512207],[-98.288818,69.629004],[-98.304492,69.669287],[-98.301221,69.691699],[-98.268213,69.754443],[-98.238672,69.780029],[-98.200488,69.796973],[-98.080762,69.833057],[-97.888965,69.858252],[-97.790723,69.861621],[-97.691211,69.84126],[-97.604346,69.802197],[-97.411377,69.738477],[-97.382568,69.712402],[-97.385693,69.700244],[-97.460156,69.682715],[-97.469434,69.666797],[-97.439453,69.642676]]],[[[-61.105176,45.944727],[-61.071338,45.937109],[-60.936572,45.985547],[-60.865234,45.983496],[-60.868408,45.948633],[-60.984277,45.910693],[-61.037549,45.882227],[-60.970605,45.855811],[-60.971533,45.837988],[-61.051953,45.79502],[-61.09209,45.748389],[-61.059033,45.703369],[-60.930371,45.747705],[-60.877588,45.748096],[-60.806104,45.738086],[-60.737891,45.751416],[-60.699072,45.77334],[-60.472363,45.946533],[-60.460596,45.968701],[-60.704883,45.93291],[-60.733301,45.956592],[-60.573193,46.061426],[-60.585742,46.11665],[-60.504932,46.203857],[-60.430859,46.255615],[-60.376514,46.28457],[-60.297949,46.31123],[-60.243848,46.270117],[-60.226465,46.195557],[-60.09248,46.206006],[-59.961426,46.190967],[-59.865039,46.159521],[-59.85,46.141406],[-59.848779,46.112939],[-59.880908,46.061621],[-59.934033,46.019434],[-59.828027,45.965137],[-59.842187,45.941553],[-60.01582,45.880469],[-60.114453,45.818896],[-60.205078,45.743018],[-60.386084,45.654639],[-60.672949,45.59082],[-60.763721,45.59082],[-60.871582,45.610693],[-60.978613,45.606152],[-61.083691,45.582373],[-61.186426,45.58501],[-61.236328,45.57251],[-61.283691,45.573877],[-61.323437,45.598486],[-61.40835,45.669092],[-61.449805,45.716211],[-61.495312,45.941455],[-61.480615,46.059766],[-61.408643,46.170361],[-61.302197,46.243848],[-61.240527,46.302539],[-60.98252,46.650488],[-60.931982,46.729443],[-60.870166,46.796777],[-60.759668,46.863379],[-60.61665,46.975781],[-60.571045,46.998828],[-60.489062,47.009717],[-60.408203,47.003516],[-60.431348,46.962939],[-60.425439,46.923193],[-60.331738,46.767822],[-60.33291,46.737012],[-60.384082,46.61333],[-60.482422,46.413525],[-60.507715,46.303369],[-60.494531,46.270264],[-60.534424,46.214551],[-60.576855,46.172168],[-60.744824,46.092676],[-60.830566,46.074121],[-60.912207,46.04458],[-61.105176,45.944727]]],[[[-67.124854,45.169434],[-67.170996,45.181982],[-67.213232,45.192529],[-67.249609,45.200781],[-67.270703,45.186719],[-67.290674,45.16792],[-67.315283,45.153809],[-67.366943,45.173779],[-67.399805,45.210156],[-67.452588,45.247656],[-67.472559,45.275879],[-67.461963,45.308691],[-67.438525,45.340381],[-67.42793,45.37793],[-67.45376,45.42124],[-67.477246,45.445898],[-67.493652,45.474072],[-67.487793,45.501025],[-67.454932,45.513965],[-67.424414,45.53042],[-67.413867,45.565576],[-67.432666,45.603125],[-67.486621,45.618408],[-67.531201,45.612549],[-67.595752,45.620752],[-67.65791,45.644189],[-67.698975,45.671191],[-67.730664,45.686475],[-67.755322,45.686475],[-67.784668,45.701709],[-67.802246,45.727539],[-67.799902,45.769775],[-67.791699,45.795557],[-67.775293,45.817871],[-67.774121,45.842529],[-67.781152,45.860156],[-67.782275,45.87417],[-67.777637,45.891797],[-67.767041,45.927002],[-67.784668,45.952783],[-67.786475,46.042139],[-67.789941,46.209326],[-67.792529,46.337402],[-67.795801,46.498389],[-67.797705,46.615625],[-67.800342,46.779883],[-67.802832,46.935742],[-67.806787,47.082812],[-67.934863,47.167627],[-68.096777,47.274854],[-68.235498,47.345947],[-68.310889,47.354492],[-68.358008,47.344531],[-68.376904,47.316162],[-68.480371,47.285791],[-68.668555,47.253467],[-68.828711,47.20332],[-68.887402,47.202832],[-68.937207,47.21123],[-69.003125,47.236426],[-69.048584,47.273633],[-69.064258,47.338135],[-69.050195,47.426611],[-69.146289,47.444775],[-69.242871,47.462988],[-69.302148,47.402002],[-69.358887,47.350635],[-69.471484,47.238672],[-69.629785,47.081348],[-69.717529,46.994873],[-69.871729,46.84292],[-70.007715,46.708936],[-70.038232,46.571436],[-70.067187,46.441064],[-70.179688,46.341846],[-70.248291,46.250879],[-70.278906,46.15],[-70.304492,46.057373],[-70.306445,45.979834],[-70.287158,45.93916],[-70.29624,45.906104],[-70.333447,45.868066],[-70.407861,45.801904],[-70.421094,45.738232],[-70.466602,45.706836],[-70.596387,45.643994],[-70.702246,45.551367],[-70.707422,45.498926],[-70.692139,45.455371],[-70.689795,45.42832],[-70.710938,45.409473],[-70.75332,45.410693],[-70.79917,45.404785],[-70.837793,45.366162],[-70.836816,45.310693],[-70.865039,45.270703],[-70.897998,45.262451],[-70.926221,45.290723],[-70.960156,45.333105],[-70.999902,45.337256],[-71.060254,45.309131],[-71.134668,45.262842],[-71.201611,45.260352],[-71.327295,45.290088],[-71.419043,45.200342],[-71.517529,45.007568],[-71.933643,45.00708],[-72.349756,45.006592],[-72.765918,45.006104],[-73.182031,45.005615],[-73.598145,45.005176],[-74.014258,45.004687],[-74.430371,45.004199],[-74.663232,45.003906],[-74.708887,45.003857],[-74.566309,45.041602],[-74.269043,45.188281],[-74.049805,45.241406],[-73.764648,45.395459],[-73.558105,45.425098],[-73.518799,45.458984],[-73.48418,45.586768],[-73.465283,45.632324],[-73.368848,45.757812],[-73.253027,45.863672],[-73.15957,46.010059],[-72.989941,46.103613],[-72.733447,46.181836],[-72.496191,46.352686],[-72.366162,46.404785],[-72.240137,46.44209],[-72.187207,46.511523],[-72.109277,46.551221],[-71.900928,46.631934],[-71.671289,46.65376],[-71.439209,46.720752],[-71.261182,46.75625],[-71.152002,46.819092],[-70.993262,46.852197],[-70.519482,47.03252],[-70.388086,47.116943],[-70.217773,47.289844],[-70.06958,47.377783],[-70.017139,47.471436],[-69.802246,47.623437],[-69.581055,47.823682],[-69.471045,47.967285],[-69.306348,48.047021],[-68.987061,48.275],[-68.815674,48.366016],[-68.746045,48.376416],[-68.552002,48.457324],[-68.431494,48.541699],[-68.238184,48.626416],[-67.889014,48.730908],[-67.560889,48.855957],[-67.11748,48.96416],[-66.598096,49.126367],[-66.178174,49.213135],[-65.882812,49.225684],[-65.523389,49.266162],[-65.396143,49.262061],[-64.836328,49.191748],[-64.567725,49.104785],[-64.261816,48.921875],[-64.216211,48.873633],[-64.208789,48.806201],[-64.370752,48.838965],[-64.513721,48.841113],[-64.414551,48.803613],[-64.246094,48.691113],[-64.25376,48.550391],[-64.348828,48.423193],[-64.633154,48.360498],[-64.705762,48.310596],[-64.764502,48.228076],[-64.82207,48.196484],[-64.959912,48.159863],[-65.036084,48.10625],[-65.259424,48.02124],[-65.36001,48.011133],[-65.475879,48.031494],[-65.754687,48.11167],[-65.926709,48.188867],[-66.012549,48.14668],[-66.083105,48.102686],[-66.248633,48.117334],[-66.324268,48.0979],[-66.448975,48.119629],[-66.704395,48.022461],[-66.631543,48.011084],[-66.428809,48.066943],[-66.359619,48.060645],[-66.210205,47.988574],[-65.849414,47.911035],[-65.755713,47.859766],[-65.666455,47.696143],[-65.607227,47.67002],[-65.483496,47.687012],[-65.343945,47.76792],[-65.228174,47.811279],[-65.00166,47.846826],[-65.046387,47.793018],[-64.873975,47.797217],[-64.703223,47.724854],[-64.766309,47.673486],[-64.852148,47.569873],[-64.912207,47.368652],[-65.086133,47.233789],[-65.318896,47.101221],[-65.260205,47.069238],[-65.19209,47.049561],[-65.042383,47.088818],[-64.942432,47.086182],[-64.831396,47.060791],[-64.865869,46.957812],[-64.905762,46.887939],[-64.88252,46.822852],[-64.816699,46.698682],[-64.725879,46.671436],[-64.689502,46.512305],[-64.641357,46.425586],[-64.647852,46.355957],[-64.556836,46.311426],[-64.541504,46.240332],[-64.211816,46.220215],[-64.14502,46.192871],[-63.915918,46.16582],[-63.872656,46.146191],[-63.831934,46.107178],[-64.056396,46.021338],[-63.874707,45.959229],[-63.702881,45.858008],[-63.567676,45.87793],[-63.509229,45.874707],[-63.358008,45.811279],[-63.315918,45.779883],[-63.292773,45.751953],[-63.216895,45.757959],[-63.10791,45.782422],[-62.910791,45.776367],[-62.700684,45.740576],[-62.718359,45.685986],[-62.750098,45.648242],[-62.585645,45.660693],[-62.483057,45.621826],[-62.447266,45.640527],[-62.421875,45.664648],[-62.217725,45.730859],[-61.955518,45.868164],[-61.923584,45.851172],[-61.911621,45.799121],[-61.877246,45.714209],[-61.776514,45.655615],[-61.656885,45.642187],[-61.492285,45.687012],[-61.427637,45.648291],[-61.350488,45.573682],[-61.277051,45.476025],[-61.281982,45.441064],[-61.376123,45.410596],[-61.460986,45.366699],[-61.106738,45.348633],[-61.070801,45.330176],[-61.031543,45.291748],[-61.067676,45.252832],[-61.101074,45.233447],[-61.165332,45.256104],[-61.283789,45.235498],[-61.387256,45.185059],[-61.4979,45.157031],[-61.56875,45.153809],[-61.647412,45.130518],[-61.719238,45.094482],[-61.793896,45.084424],[-62.026807,44.994482],[-62.26499,44.936475],[-62.514014,44.843652],[-62.768066,44.785107],[-63.031836,44.714795],[-63.089209,44.708545],[-63.155713,44.711328],[-63.306299,44.642578],[-63.380811,44.651904],[-63.456836,44.639941],[-63.544336,44.655078],[-63.604004,44.683203],[-63.558252,44.610596],[-63.544824,44.54375],[-63.567676,44.514453],[-63.609766,44.47998],[-63.761133,44.486426],[-63.820654,44.510645],[-63.891309,44.546338],[-63.923682,44.603857],[-63.999707,44.644922],[-64.044922,44.587891],[-64.044629,44.54541],[-64.100879,44.487451],[-64.166992,44.58667],[-64.286084,44.550342],[-64.338525,44.444873],[-64.312256,44.414746],[-64.275684,44.334082],[-64.33457,44.291992],[-64.378223,44.303564],[-64.468799,44.185156],[-64.578467,44.142041],[-64.691602,44.021338],[-64.825635,43.929346],[-64.862354,43.867871],[-65.086816,43.727197],[-65.17207,43.731396],[-65.234912,43.726758],[-65.32959,43.668115],[-65.344287,43.549609],[-65.386084,43.565283],[-65.428516,43.561426],[-65.450439,43.524219],[-65.481689,43.518066],[-65.564453,43.553271],[-65.661914,43.534033],[-65.738135,43.560742],[-65.835303,43.734375],[-65.886914,43.795215],[-65.978418,43.814844],[-66.002148,43.778125],[-66.037646,43.742188],[-66.125732,43.813818],[-66.192529,44.079687],[-66.193066,44.143848],[-66.099561,44.36748],[-65.868018,44.568799],[-65.941943,44.575537],[-66.146387,44.435937],[-66.125293,44.469727],[-66.090625,44.504932],[-66.02168,44.561719],[-65.917041,44.615088],[-65.777686,44.646191],[-65.681836,44.650928],[-65.615771,44.68042],[-65.52002,44.732666],[-65.502246,44.7604],[-65.587158,44.728516],[-65.728223,44.697119],[-65.692041,44.738281],[-65.656738,44.760303],[-64.90293,45.120801],[-64.75127,45.180225],[-64.448828,45.256055],[-64.406885,45.305713],[-64.448145,45.337451],[-64.330762,45.309326],[-64.34043,45.268213],[-64.358838,45.238232],[-64.365723,45.187256],[-64.354248,45.138232],[-64.23501,45.114307],[-64.135498,45.023047],[-64.182715,45.147021],[-64.093164,45.21709],[-63.74834,45.310889],[-63.460254,45.321094],[-63.368018,45.364795],[-63.614453,45.394141],[-63.906445,45.378174],[-64.087158,45.410889],[-64.336426,45.389551],[-64.600195,45.410059],[-64.681104,45.382959],[-64.74668,45.324365],[-64.831934,45.350244],[-64.873145,45.35459],[-64.912891,45.374805],[-64.827393,45.475537],[-64.560059,45.625488],[-64.39707,45.755859],[-64.351123,45.783203],[-64.314648,45.835693],[-64.404053,45.826904],[-64.482227,45.806348],[-64.536328,45.866602],[-64.632715,45.946631],[-64.642041,45.91333],[-64.593652,45.813672],[-64.778516,45.638428],[-64.8979,45.625977],[-65.057275,45.544238],[-65.282324,45.473096],[-65.54502,45.337305],[-65.884473,45.2229],[-65.955615,45.222461],[-66.109766,45.316602],[-66.06665,45.359473],[-66.026562,45.417578],[-66.064893,45.40083],[-66.089746,45.375635],[-66.182715,45.335205],[-66.107324,45.256934],[-66.14375,45.227588],[-66.251562,45.189014],[-66.351953,45.133203],[-66.439844,45.095898],[-66.510937,45.143359],[-66.707178,45.083398],[-66.872461,45.067285],[-66.908203,45.097656],[-66.918701,45.145605],[-66.976562,45.157178],[-67.084082,45.143945],[-67.124854,45.169434]]],[[[-55.45874,51.536523],[-55.532422,51.436963],[-55.583398,51.388574],[-55.630762,51.3729],[-55.730713,51.358691],[-55.941162,51.343018],[-56.031104,51.328369],[-56.043945,51.261865],[-56.030664,51.226904],[-55.999902,51.199268],[-55.96084,51.191406],[-55.873535,51.20791],[-55.841113,51.205078],[-55.815088,51.191162],[-55.795508,51.166162],[-55.785352,51.131445],[-55.784717,51.087061],[-55.8,51.033301],[-55.871387,50.907373],[-55.962012,50.837695],[-56.078125,50.780957],[-56.106543,50.759277],[-56.121191,50.733789],[-56.135645,50.650977],[-56.195752,50.584766],[-56.382422,50.416992],[-56.454346,50.380029],[-56.454785,50.350488],[-56.483936,50.27085],[-56.539355,50.206738],[-56.693994,50.059668],[-56.732324,50.007715],[-56.749561,49.966553],[-56.747168,49.908496],[-56.754102,49.88291],[-56.789502,49.83374],[-56.838867,49.787744],[-56.848633,49.765332],[-56.829199,49.724609],[-56.809229,49.7104],[-56.806885,49.67334],[-56.822168,49.613477],[-56.756787,49.651611],[-56.610645,49.787695],[-56.500928,49.869629],[-56.427588,49.897412],[-56.376416,49.933691],[-56.321826,50.01377],[-56.24707,50.090088],[-56.179395,50.11499],[-56.148389,50.100342],[-56.122168,50.062842],[-56.127441,50.015137],[-56.16416,49.957275],[-56.161279,49.940137],[-56.075,49.982617],[-55.927002,50.017773],[-55.87334,50.013135],[-55.764746,49.960449],[-55.674463,49.966553],[-55.530029,49.997168],[-55.50293,49.983154],[-55.527002,49.936768],[-55.583691,49.892383],[-55.717627,49.829004],[-56.03999,49.704687],[-56.140186,49.619141],[-56.121191,49.621729],[-56.051611,49.658398],[-55.978516,49.678125],[-55.901855,49.680859],[-55.869824,49.670166],[-55.882324,49.645947],[-55.892041,49.580273],[-56.087305,49.451953],[-56.041211,49.456836],[-55.815234,49.515283],[-55.678125,49.434619],[-55.489746,49.4625],[-55.375928,49.489746],[-55.37915,49.4729],[-55.354492,49.437695],[-55.355371,49.380859],[-55.343848,49.3729],[-55.289941,49.391943],[-55.280176,49.412744],[-55.283008,49.513818],[-55.266357,49.523926],[-55.229541,49.508154],[-55.207031,49.482031],[-55.200293,49.408496],[-55.225,49.334668],[-55.259326,49.266992],[-55.34248,49.168115],[-55.331934,49.125586],[-55.353174,49.079443],[-55.334766,49.077881],[-55.252344,49.120898],[-55.247363,49.138574],[-55.253809,49.179639],[-55.244531,49.199805],[-55.176123,49.244434],[-55.063184,49.297363],[-55.026172,49.305371],[-55.0104,49.293018],[-55.015918,49.260352],[-54.982617,49.268115],[-54.910547,49.31626],[-54.843652,49.34541],[-54.781885,49.355469],[-54.717627,49.388574],[-54.650879,49.444531],[-54.579053,49.49082],[-54.502197,49.527344],[-54.469189,49.529785],[-54.480615,49.469336],[-54.46543,49.400537],[-54.463477,49.341748],[-54.448242,49.329443],[-54.389062,49.392139],[-54.356152,49.415039],[-54.316748,49.424121],[-54.270801,49.419287],[-53.957715,49.441846],[-53.862451,49.426318],[-53.75498,49.385303],[-53.619434,49.321631],[-53.56958,49.26416],[-53.560059,49.191699],[-53.573437,49.141211],[-53.671143,49.077539],[-53.758057,49.0354],[-53.809326,48.993408],[-53.824902,48.951367],[-53.845215,48.925439],[-53.903223,48.88916],[-54.161279,48.787695],[-54.099512,48.784766],[-53.950684,48.806787],[-53.852881,48.811328],[-53.847754,48.79668],[-53.886816,48.767822],[-53.961523,48.738867],[-53.96958,48.724902],[-53.966016,48.706689],[-53.886133,48.684668],[-53.784082,48.69541],[-53.698047,48.679834],[-53.706348,48.655518],[-53.774609,48.576318],[-53.794629,48.526367],[-53.885547,48.48457],[-54.067773,48.418848],[-54.114453,48.393604],[-54.104248,48.388379],[-53.937012,48.436621],[-53.852734,48.448828],[-53.799316,48.449219],[-53.738867,48.495801],[-53.644434,48.51123],[-53.552051,48.481787],[-53.411328,48.562158],[-53.361084,48.572607],[-53.275439,48.56333],[-53.220264,48.577881],[-53.127344,48.632568],[-53.057275,48.659033],[-53.042676,48.656641],[-53.027588,48.634717],[-53.020752,48.571631],[-53.037305,48.515869],[-53.060205,48.480322],[-53.135742,48.401855],[-53.182129,48.374365],[-53.225098,48.364014],[-53.301172,48.368164],[-53.334326,48.355957],[-53.405518,48.294336],[-53.531201,48.231885],[-53.609766,48.207715],[-53.560205,48.173828],[-53.541846,48.108447],[-53.569434,48.088086],[-53.704297,48.06792],[-53.710156,48.056836],[-53.758203,48.042383],[-53.86958,48.019678],[-53.793555,48.009717],[-53.653027,48.025732],[-53.638232,48.014648],[-53.657617,47.968652],[-53.69502,47.921191],[-53.86167,47.799268],[-53.863672,47.787012],[-53.837744,47.727246],[-53.805371,47.682031],[-53.765137,47.650098],[-53.672363,47.648242],[-53.60376,47.662305],[-53.50376,47.743848],[-53.282715,47.997852],[-53.085449,48.068506],[-52.920996,48.14707],[-52.883301,48.131152],[-52.866016,48.112988],[-52.872021,48.093945],[-52.95498,48.029297],[-52.998242,47.975928],[-53.11084,47.811914],[-53.153857,47.73457],[-53.175537,47.652979],[-53.169824,47.512109],[-53.157666,47.487793],[-53.122461,47.455127],[-53.056836,47.483105],[-52.94502,47.552832],[-52.873193,47.619434],[-52.816943,47.727881],[-52.782422,47.769434],[-52.744922,47.768945],[-52.711426,47.745312],[-52.703271,47.693018],[-52.672168,47.621777],[-52.653662,47.549414],[-52.668506,47.469824],[-52.683643,47.426318],[-52.912402,47.103223],[-52.888135,47.04585],[-52.88208,47.011084],[-52.889209,46.974121],[-52.961719,46.819434],[-53.031934,46.722754],[-53.069775,46.68125],[-53.114844,46.655811],[-53.166992,46.646484],[-53.213672,46.660498],[-53.254883,46.697705],[-53.291309,46.717041],[-53.323047,46.718359],[-53.381738,46.711426],[-53.536133,46.63252],[-53.567773,46.628271],[-53.589795,46.638867],[-53.616357,46.680273],[-53.595166,46.888477],[-53.581348,46.957275],[-53.612158,47.010352],[-53.579639,47.099414],[-53.578467,47.133252],[-53.597363,47.145996],[-53.636377,47.137695],[-53.695361,47.09292],[-53.774316,47.011816],[-53.86001,46.939453],[-54.00957,46.8396],[-54.076025,46.819971],[-54.102393,46.824902],[-54.132812,46.838574],[-54.17373,46.880371],[-54.173291,46.917187],[-54.155225,46.96748],[-54.092676,47.08623],[-53.970508,47.261963],[-53.869092,47.387012],[-53.849512,47.440332],[-53.877881,47.463574],[-53.90083,47.509326],[-53.939746,47.644678],[-53.989014,47.756201],[-54.047266,47.805615],[-54.191846,47.859814],[-54.218408,47.846729],[-54.233887,47.77168],[-54.404687,47.555908],[-54.434473,47.462305],[-54.455908,47.427588],[-54.488135,47.403857],[-54.562549,47.375195],[-54.542383,47.425098],[-54.463232,47.53623],[-54.473926,47.54707],[-54.574512,47.457764],[-54.651172,47.408203],[-54.744678,47.395459],[-54.801514,47.398633],[-54.856641,47.38501],[-55.09043,47.173926],[-55.099219,47.103564],[-55.139648,47.045947],[-55.254932,46.941748],[-55.315723,46.905713],[-55.40127,46.899268],[-55.479297,46.917285],[-55.530713,46.914014],[-55.652344,46.881445],[-55.788525,46.867236],[-55.844727,46.873828],[-55.880615,46.887207],[-55.949902,46.927686],[-55.958203,46.956396],[-55.954492,46.973242],[-55.919238,47.016895],[-55.838379,47.071631],[-55.771826,47.09209],[-55.610059,47.119629],[-55.491504,47.160645],[-55.401221,47.221484],[-55.360889,47.258594],[-55.19082,47.448975],[-54.975635,47.516162],[-54.869531,47.570898],[-54.795361,47.640332],[-54.784619,47.664746],[-54.891016,47.629492],[-54.945947,47.62085],[-55.03501,47.633887],[-55.074561,47.657568],[-55.196582,47.650049],[-55.366309,47.661084],[-55.390771,47.642871],[-55.412695,47.550391],[-55.434668,47.50127],[-55.460645,47.484766],[-55.498633,47.475049],[-55.576123,47.465234],[-55.774707,47.498291],[-55.811377,47.516357],[-55.862061,47.530078],[-56.081348,47.499951],[-56.127246,47.502832],[-56.083691,47.524512],[-55.86709,47.592334],[-55.844385,47.787842],[-55.85791,47.819189],[-55.918457,47.791895],[-56.020117,47.763721],[-56.089648,47.771875],[-56.121436,47.78916],[-56.150586,47.774512],[-56.221289,47.671387],[-56.262988,47.658447],[-56.325781,47.654492],[-56.45957,47.616943],[-56.722314,47.592285],[-56.774121,47.56499],[-56.95249,47.574463],[-57.473437,47.631104],[-57.659814,47.625391],[-57.884082,47.66001],[-57.925537,47.674902],[-58.239307,47.668848],[-58.333203,47.676855],[-58.326953,47.719873],[-58.336865,47.730859],[-58.428027,47.683398],[-58.508887,47.652588],[-58.613135,47.626221],[-58.941162,47.580469],[-59.116943,47.570703],[-59.219287,47.602539],[-59.259766,47.63418],[-59.320654,47.736914],[-59.362402,47.865674],[-59.362061,47.888965],[-59.340869,47.933643],[-59.27207,47.995557],[-58.96084,48.159375],[-58.710596,48.325049],[-58.60498,48.411328],[-58.502637,48.442041],[-58.335547,48.513672],[-58.330225,48.522119],[-58.492236,48.513037],[-58.606152,48.532861],[-58.722559,48.540723],[-58.943799,48.521777],[-59.166797,48.521777],[-59.167676,48.558496],[-59.063428,48.627686],[-58.841797,48.746436],[-58.819189,48.746826],[-58.887109,48.691553],[-58.906445,48.650195],[-58.877246,48.622705],[-58.843408,48.605322],[-58.716455,48.598047],[-58.687354,48.62207],[-58.641602,48.749414],[-58.545605,48.896875],[-58.49375,49.003223],[-58.403662,49.084326],[-58.358691,49.096533],[-58.31875,49.081348],[-58.186133,49.061914],[-58.049658,48.987549],[-58.005566,48.98125],[-57.990527,48.987939],[-58.040576,49.009766],[-58.081836,49.044727],[-58.098926,49.077441],[-58.049072,49.17998],[-57.990674,49.209473],[-57.980078,49.229639],[-58.096875,49.230078],[-58.190918,49.25874],[-58.218896,49.305127],[-58.213379,49.38667],[-58.182715,49.4354],[-58.107422,49.499707],[-58.01582,49.54248],[-57.96123,49.531543],[-57.856055,49.473828],[-57.791309,49.48999],[-57.798828,49.508545],[-57.897461,49.600391],[-57.929053,49.668408],[-57.926172,49.70083],[-57.7125,50.024902],[-57.607959,50.198779],[-57.465527,50.463672],[-57.432617,50.505811],[-57.360449,50.583936],[-57.330566,50.605176],[-57.237402,50.605371],[-57.17959,50.614844],[-57.26416,50.649365],[-57.294434,50.673389],[-57.297998,50.69873],[-57.274902,50.725293],[-57.242139,50.744922],[-57.131641,50.787402],[-57.053271,50.857324],[-57.005664,50.939648],[-57.012744,50.967725],[-57.037305,50.995654],[-57.035937,51.01084],[-56.976367,51.027979],[-56.825146,51.125732],[-56.805469,51.144482],[-56.750195,51.274902],[-56.682422,51.332764],[-56.619043,51.362451],[-56.517969,51.399316],[-56.207373,51.488623],[-56.025586,51.568359],[-55.9021,51.563916],[-55.86582,51.508301],[-55.69043,51.471338],[-55.65957,51.511035],[-55.700635,51.559424],[-55.666406,51.578906],[-55.521631,51.596387],[-55.496436,51.589844],[-55.453223,51.562305],[-55.45874,51.536523]]],[[[-86.589355,71.010791],[-86.549658,70.98877],[-86.321289,71.016797],[-86.127148,71.048975],[-85.824561,71.125732],[-85.643848,71.152441],[-85.094873,71.151953],[-85.001562,71.137451],[-85.042773,71.091602],[-85.065771,71.078613],[-85.047656,71.058691],[-84.988477,71.031738],[-84.870312,71.001807],[-84.82373,71.028613],[-84.7896,71.093262],[-84.708594,71.358691],[-84.674316,71.43877],[-84.658105,71.5146],[-84.659961,71.586133],[-84.699414,71.631445],[-84.840137,71.658643],[-85.032227,71.654053],[-85.130908,71.66123],[-85.250488,71.675293],[-85.339062,71.697266],[-85.39668,71.727051],[-85.511523,71.816553],[-85.596191,71.866406],[-85.81333,71.956445],[-85.911621,71.986523],[-85.862109,72.021973],[-85.664795,72.062793],[-85.545801,72.101562],[-85.405908,72.214844],[-85.321875,72.233154],[-85.01875,72.218164],[-84.608496,72.129492],[-84.35166,72.052637],[-84.28374,72.044482],[-84.282324,72.058447],[-84.347461,72.094434],[-84.642969,72.189551],[-84.777539,72.258789],[-84.841992,72.308154],[-84.811035,72.329541],[-84.644678,72.351416],[-84.623047,72.376563],[-84.849414,72.40625],[-84.96416,72.405615],[-85.056836,72.384375],[-85.156396,72.38291],[-85.341113,72.421533],[-85.391309,72.443994],[-85.497754,72.510596],[-85.553711,72.568604],[-85.615576,72.604639],[-85.637891,72.633203],[-85.649902,72.722168],[-85.644531,72.774463],[-85.619434,72.819189],[-85.574609,72.856396],[-85.454785,72.925146],[-85.387598,72.94502],[-85.262109,72.954004],[-84.989551,72.919873],[-84.256641,72.796729],[-84.274268,72.836426],[-85.094043,73.002637],[-85.383887,73.04541],[-85.454736,73.105469],[-85.018408,73.335498],[-84.616064,73.389551],[-84.416064,73.456494],[-84.088965,73.459375],[-83.781885,73.416895],[-83.776514,73.428467],[-83.91499,73.508398],[-83.904053,73.52832],[-83.729834,73.575879],[-83.410352,73.631689],[-83.020459,73.676025],[-82.943213,73.699121],[-82.843311,73.71543],[-82.659619,73.72959],[-82.202783,73.736475],[-81.946143,73.729834],[-81.605371,73.695996],[-81.406152,73.634521],[-81.344092,73.597754],[-81.23833,73.479541],[-81.151758,73.314014],[-81.025146,73.245215],[-80.821729,73.207178],[-80.681152,73.16582],[-80.603467,73.121191],[-80.582764,73.064941],[-80.619141,72.997168],[-80.591895,72.927686],[-80.500928,72.856592],[-80.430811,72.81626],[-80.277246,72.770166],[-80.274707,72.745557],[-80.322656,72.71748],[-80.424316,72.678906],[-80.675098,72.558643],[-80.99873,72.426221],[-81.229346,72.311719],[-81.240576,72.27793],[-80.760791,72.457178],[-80.611475,72.45083],[-80.604687,72.425781],[-80.702441,72.338281],[-80.821484,72.260254],[-80.941211,72.210156],[-80.919336,72.19126],[-80.691406,72.103467],[-80.733252,72.089014],[-80.843262,72.096191],[-80.888379,72.088281],[-80.921094,72.072314],[-80.941406,72.048242],[-80.942676,72.014355],[-80.925049,71.970703],[-80.926807,71.938086],[-80.9479,71.916553],[-80.925146,71.907666],[-80.858447,71.911426],[-80.802246,71.929199],[-80.70542,71.988135],[-80.386133,72.148779],[-80.181934,72.208789],[-80.116113,72.214062],[-79.92832,72.174951],[-79.884375,72.177197],[-80.090918,72.300879],[-80.108936,72.332178],[-80.066992,72.37832],[-80.041797,72.394238],[-79.926709,72.428174],[-79.831299,72.446289],[-79.777881,72.438721],[-79.693311,72.375928],[-79.653857,72.332178],[-79.583691,72.314648],[-79.427441,72.337305],[-79.32334,72.39082],[-79.194385,72.355713],[-79.000244,72.272021],[-79.017969,72.188232],[-79.017773,72.104346],[-79.007812,72.04292],[-78.775928,71.930371],[-78.614453,71.881006],[-78.585107,71.880615],[-78.588867,71.89751],[-78.622559,71.934961],[-78.711133,71.972412],[-78.79082,72.030273],[-78.862744,72.10083],[-78.820117,72.26543],[-78.699268,72.351416],[-78.582471,72.329346],[-78.428809,72.279785],[-78.307471,72.275146],[-78.116357,72.280322],[-77.726025,72.17998],[-77.516504,72.177783],[-77.535742,72.21875],[-77.694482,72.238428],[-77.926172,72.293848],[-78.287207,72.359814],[-78.453076,72.435205],[-78.484277,72.470605],[-78.479492,72.50874],[-78.458838,72.542334],[-78.422412,72.571533],[-78.350244,72.600195],[-78.001025,72.687598],[-77.753223,72.724756],[-77.566797,72.736865],[-77.255371,72.735889],[-76.893506,72.720654],[-76.697949,72.695068],[-76.473242,72.63335],[-76.18877,72.572217],[-76.087305,72.561328],[-75.96875,72.562744],[-75.833203,72.576514],[-75.704297,72.571533],[-75.294238,72.480859],[-75.185791,72.434229],[-75.120068,72.377734],[-75.071484,72.322852],[-75.039844,72.26958],[-75.052686,72.226367],[-75.394141,72.039795],[-75.542773,72.007959],[-75.640967,71.937158],[-75.787402,71.803076],[-75.911279,71.731299],[-75.922803,71.717236],[-75.896826,71.713721],[-75.82207,71.745898],[-75.693359,71.838574],[-75.599902,71.918457],[-75.428369,71.984375],[-75.147656,72.062988],[-74.903174,72.100488],[-74.694922,72.096924],[-74.519678,72.085645],[-74.377441,72.066553],[-74.292969,72.050586],[-74.266357,72.037695],[-74.209326,71.978662],[-74.212598,71.938672],[-74.248242,71.893652],[-74.315723,71.842676],[-74.621484,71.786279],[-74.789062,71.741992],[-74.892969,71.725537],[-75.204785,71.709131],[-75.191064,71.691602],[-74.959473,71.66748],[-74.700781,71.675586],[-74.707373,71.646924],[-74.828955,71.570898],[-74.868311,71.504736],[-74.834473,71.450586],[-74.840723,71.406592],[-74.931299,71.314063],[-75.035352,71.230518],[-74.996191,71.218115],[-74.758936,71.338135],[-74.695312,71.469434],[-74.599561,71.584863],[-74.488086,71.648389],[-74.404102,71.67251],[-74.139062,71.682227],[-73.99209,71.749609],[-73.866602,71.771045],[-73.814062,71.771436],[-73.707227,71.746338],[-73.713574,71.719873],[-73.868604,71.599365],[-74.197266,71.40415],[-74.06333,71.426465],[-73.97251,71.472852],[-73.850879,71.519141],[-73.712842,71.587598],[-73.62168,71.525537],[-73.481592,71.479248],[-73.397803,71.373437],[-73.262402,71.322461],[-73.180615,71.282861],[-73.192187,71.349854],[-73.310449,71.484277],[-73.278223,71.537988],[-73.186816,71.564893],[-72.901953,71.677783],[-72.703027,71.640137],[-72.580615,71.606787],[-72.519287,71.615625],[-72.3646,71.610986],[-72.116504,71.592773],[-71.875195,71.56123],[-71.640674,71.51626],[-71.459912,71.463721],[-71.332959,71.403467],[-71.256055,71.361816],[-71.229395,71.33877],[-71.186523,71.278711],[-71.219385,71.238818],[-71.396582,71.146875],[-71.49502,71.105127],[-71.593066,71.086377],[-71.856152,71.104785],[-71.937939,71.094287],[-72.023877,71.065332],[-72.297705,70.938818],[-72.449121,70.884082],[-72.598047,70.849219],[-72.632715,70.830762],[-72.312549,70.83252],[-72.223926,70.870166],[-72.15,70.940674],[-72.00918,71.013428],[-71.742529,71.046875],[-71.37085,70.975146],[-71.18623,70.978027],[-71.045361,71.05],[-70.888037,71.099023],[-70.826074,71.10874],[-70.79248,71.10332],[-70.672656,71.052197],[-70.636475,71.006592],[-70.639111,70.902441],[-70.655225,70.870898],[-70.761719,70.792236],[-71.021777,70.674121],[-71.191797,70.629785],[-71.380469,70.605957],[-71.585938,70.565869],[-71.658447,70.533545],[-71.729395,70.487695],[-71.800146,70.457031],[-71.890186,70.431543],[-71.772363,70.394189],[-71.727246,70.395215],[-71.683691,70.417578],[-71.56499,70.505664],[-71.47666,70.544043],[-71.42666,70.5521],[-71.375098,70.548438],[-71.324854,70.531152],[-71.275879,70.500293],[-71.27959,70.425195],[-71.429443,70.127783],[-71.405127,70.128662],[-71.313086,70.209326],[-71.045264,70.519043],[-70.979785,70.581055],[-70.850537,70.643604],[-70.560937,70.738281],[-70.337256,70.787842],[-70.084717,70.829541],[-69.949805,70.84502],[-69.795703,70.83457],[-69.695508,70.785889],[-69.560107,70.777148],[-69.395361,70.789258],[-69.289062,70.783447],[-69.168701,70.76416],[-69.065723,70.728076],[-68.890723,70.687109],[-68.495752,70.610254],[-68.44668,70.594092],[-68.40083,70.56499],[-68.358252,70.5229],[-68.363525,70.48125],[-68.41665,70.43999],[-68.482568,70.414844],[-68.561328,70.405664],[-68.642822,70.383203],[-68.793652,70.324414],[-68.84292,70.314453],[-69.079443,70.28916],[-69.29873,70.276807],[-69.435693,70.253125],[-69.698975,70.189307],[-70.061426,70.07085],[-70.057715,70.042627],[-69.913086,70.029053],[-69.79585,70.046924],[-69.63457,70.12876],[-69.483008,70.160059],[-69.246191,70.185107],[-68.918555,70.206982],[-68.778223,70.203564],[-68.75293,70.19917],[-68.734619,70.179834],[-68.723291,70.145654],[-68.776953,70.101025],[-68.839111,70.079932],[-69.008301,69.978955],[-68.897021,69.952734],[-68.744043,69.941406],[-68.656738,69.968457],[-68.577832,70.030469],[-68.489355,70.064844],[-68.39126,70.071631],[-68.305078,70.087402],[-68.230664,70.112207],[-68.210449,70.128418],[-68.318604,70.160596],[-68.327197,70.180176],[-68.283105,70.228271],[-68.203516,70.281494],[-68.120654,70.3146],[-68.059082,70.317236],[-67.855322,70.281787],[-67.716016,70.219824],[-67.363672,70.034424],[-67.318408,69.998437],[-67.195898,69.860693],[-67.172656,69.799463],[-67.192773,69.756836],[-67.221631,69.730713],[-67.259277,69.721289],[-67.336719,69.720996],[-67.806201,69.777393],[-68.02041,69.770068],[-68.113965,69.754297],[-68.189453,69.730615],[-68.248096,69.700781],[-68.289795,69.664697],[-68.37207,69.644385],[-68.669922,69.643652],[-68.837109,69.623535],[-69.124512,69.574512],[-69.227686,69.547412],[-69.250781,69.511914],[-69.074902,69.518115],[-68.785254,69.564209],[-68.513037,69.577295],[-68.058154,69.475879],[-67.908252,69.460107],[-67.824854,69.474707],[-67.724512,69.479248],[-67.360937,69.47251],[-67.236963,69.460107],[-67.052686,69.421191],[-66.77085,69.33667],[-66.716748,69.311865],[-66.685254,69.285742],[-66.67627,69.258447],[-66.679297,69.191064],[-66.707422,69.168213],[-66.802881,69.152734],[-67.208008,69.170654],[-67.331641,69.184717],[-67.483789,69.166992],[-67.607227,69.173193],[-67.765039,69.200244],[-67.938477,69.248145],[-68.198193,69.202686],[-68.406299,69.232227],[-68.618896,69.206006],[-69.040625,69.097998],[-68.993457,69.079346],[-68.415527,69.17207],[-68.303955,69.166406],[-68.121289,69.132617],[-67.832617,69.065967],[-67.751709,69.038672],[-67.751025,68.933838],[-67.795117,68.86333],[-67.883203,68.783984],[-68.015625,68.794678],[-68.324219,68.844043],[-68.450391,68.85083],[-68.542773,68.842773],[-68.666699,68.811328],[-68.725293,68.810205],[-69.218848,68.872803],[-69.329785,68.875781],[-69.342676,68.869385],[-69.319092,68.856982],[-68.871436,68.759961],[-68.540625,68.749365],[-68.333203,68.732568],[-68.2104,68.702979],[-68.15249,68.681055],[-68.14834,68.616113],[-68.037939,68.550732],[-67.938477,68.52417],[-67.875049,68.522949],[-67.766016,68.547021],[-67.655957,68.550732],[-67.566943,68.533984],[-67.455518,68.4979],[-67.320703,68.487793],[-67.20249,68.465869],[-67.111182,68.461475],[-66.854199,68.471631],[-66.742725,68.457764],[-66.713916,68.445703],[-66.762402,68.424658],[-66.997266,68.37417],[-67.032959,68.326074],[-66.900391,68.263525],[-66.830957,68.215625],[-66.834326,68.179883],[-66.905127,68.098486],[-66.923096,68.065723],[-66.899805,68.063086],[-66.729004,68.129004],[-66.702344,68.120557],[-66.68457,68.029248],[-66.662695,68.034424],[-66.605469,68.11001],[-66.630957,68.210645],[-66.530762,68.250342],[-66.212402,68.28042],[-66.266309,68.122705],[-66.274707,68.040771],[-66.413867,67.904297],[-66.52998,67.860303],[-66.526465,67.851172],[-66.443945,67.833838],[-66.392383,67.831934],[-66.342969,67.853271],[-66.225195,67.95874],[-65.98584,68.068555],[-65.942383,68.070947],[-65.943994,68.031201],[-65.974902,67.957422],[-65.864355,67.922852],[-65.758936,67.95708],[-65.701709,67.98667],[-65.569336,67.982324],[-65.509082,67.968262],[-65.491113,67.935693],[-65.552002,67.799365],[-65.540869,67.765625],[-65.40127,67.674854],[-65.387109,67.680273],[-65.413477,67.724072],[-65.442236,67.832324],[-65.415332,67.879248],[-65.300342,67.939502],[-65.064404,68.026221],[-64.976904,68.043408],[-64.922314,68.031641],[-64.835449,67.98999],[-64.862549,67.965137],[-64.956396,67.939111],[-65.026025,67.892041],[-65.071436,67.823828],[-65.021094,67.787549],[-64.829883,67.784277],[-64.637793,67.840234],[-64.527539,67.812695],[-64.396436,67.739941],[-64.15625,67.622998],[-64.019434,67.654883],[-63.850195,67.566064],[-64.07749,67.495605],[-64.007959,67.347314],[-64.303271,67.353467],[-64.469287,67.341846],[-64.580469,67.355176],[-64.699951,67.350537],[-64.589258,67.315527],[-64.375928,67.301074],[-64.356445,67.256152],[-64.188965,67.257275],[-64.063232,67.265918],[-63.83623,67.264111],[-63.824121,67.315674],[-63.676465,67.345117],[-63.591602,67.377539],[-63.521094,67.35835],[-63.31582,67.336328],[-63.040137,67.23501],[-63.161621,67.174365],[-63.194678,67.117041],[-63.235547,67.068506],[-63.258398,67.024658],[-63.306787,66.994482],[-63.701562,66.822363],[-63.63623,66.820801],[-63.469189,66.862402],[-63.143701,66.924316],[-62.962305,66.949268],[-62.83335,66.932715],[-62.768164,66.931982],[-62.710449,66.954102],[-62.602881,66.928613],[-62.379736,66.905371],[-62.123584,67.046729],[-61.968555,67.019043],[-61.824121,66.931738],[-61.514697,66.778467],[-61.353418,66.689209],[-61.299707,66.64873],[-61.307227,66.608838],[-61.453076,66.566602],[-61.527832,66.558105],[-61.724121,66.637793],[-61.904492,66.678125],[-62.014258,66.673779],[-62.12334,66.643066],[-62.089307,66.625928],[-61.652637,66.503125],[-61.576416,66.4125],[-61.570801,66.3729],[-61.862695,66.312842],[-61.956348,66.309326],[-62.158447,66.337988],[-62.276904,66.391504],[-62.374512,66.41084],[-62.509814,66.417187],[-62.553125,66.406836],[-62.405664,66.315918],[-62.419824,66.288574],[-62.495996,66.270898],[-62.533594,66.227002],[-62.24209,66.147949],[-62.023926,66.067529],[-61.991602,66.035303],[-62.138672,66.011377],[-62.244336,66.005859],[-62.467773,66.01748],[-62.590332,66.034424],[-62.624121,66.01626],[-62.497363,65.974023],[-62.448389,65.945508],[-62.410303,65.905762],[-62.388184,65.868311],[-62.381982,65.833301],[-62.485645,65.804492],[-62.610254,65.723633],[-62.658887,65.639941],[-62.771729,65.631982],[-62.817285,65.647705],[-62.968896,65.622363],[-63.168945,65.657324],[-63.240674,65.695557],[-63.45874,65.853027],[-63.464355,65.835352],[-63.409766,65.755811],[-63.420898,65.708594],[-63.651953,65.674316],[-63.651074,65.660986],[-63.509229,65.636035],[-63.337451,65.616748],[-63.364258,65.543213],[-63.363379,65.229736],[-63.401807,65.118457],[-63.48584,65.02124],[-63.606592,64.928076],[-63.737158,64.989111],[-63.789355,65.051367],[-63.833203,65.083301],[-63.895605,65.109277],[-63.97627,65.121484],[-64.061426,65.121924],[-64.151855,65.066162],[-64.250439,65.114307],[-64.345703,65.172412],[-64.309766,65.324561],[-64.269678,65.400781],[-64.285742,65.400195],[-64.339941,65.36416],[-64.469824,65.252734],[-64.555078,65.116602],[-64.665332,65.168945],[-64.764795,65.234082],[-64.846924,65.299561],[-64.979639,65.375098],[-65.108496,65.46377],[-65.175684,65.568164],[-65.206982,65.589648],[-65.282031,65.67666],[-65.311475,65.701514],[-65.337402,65.709766],[-65.401611,65.764014],[-65.378125,65.82207],[-65.276953,65.890674],[-65.184863,65.939941],[-65.032227,65.988525],[-64.853711,66.015918],[-64.77251,66.078564],[-64.672998,66.192725],[-64.563965,66.272168],[-64.445361,66.317139],[-64.504395,66.325488],[-64.655176,66.287012],[-64.761133,66.230908],[-64.887256,66.137402],[-65.004492,66.077734],[-65.305371,66.008447],[-65.415576,65.99458],[-65.543701,65.987207],[-65.825732,65.996924],[-65.891064,66.020215],[-65.857178,66.086426],[-65.656348,66.204736],[-65.688379,66.213086],[-65.758984,66.171191],[-65.855957,66.142236],[-65.940039,66.127441],[-66.063721,66.132715],[-66.208594,66.206396],[-66.277393,66.229102],[-66.419189,66.254492],[-66.476953,66.279736],[-66.712305,66.460449],[-66.759766,66.508496],[-66.787402,66.555664],[-66.862891,66.595313],[-66.986328,66.62749],[-67.014795,66.622217],[-66.97041,66.581885],[-66.968994,66.547168],[-67.076855,66.525488],[-67.189648,66.533008],[-67.307324,66.569727],[-67.317676,66.520361],[-67.191748,66.432764],[-67.189746,66.321729],[-67.225391,66.310254],[-67.31123,66.30376],[-67.368848,66.31748],[-67.559766,66.400439],[-67.740771,66.458203],[-67.868457,66.490137],[-67.883398,66.467432],[-67.800586,66.367334],[-67.704492,66.268604],[-67.547217,66.187207],[-67.296729,66.090283],[-67.183203,66.034424],[-67.272656,65.955566],[-67.350439,65.929736],[-67.398779,65.921729],[-67.550781,65.921631],[-67.828027,65.965186],[-67.958203,66.013818],[-68.147266,66.129834],[-68.459912,66.249268],[-68.527783,66.248633],[-68.748926,66.200049],[-68.714209,66.192236],[-68.57168,66.188721],[-68.46709,66.173193],[-68.217187,66.078857],[-68.19834,66.038965],[-68.260693,65.99458],[-68.256836,65.938623],[-68.186719,65.870996],[-68.115039,65.827783],[-67.968066,65.797266],[-67.894189,65.793262],[-67.866455,65.773682],[-67.954346,65.623096],[-67.961816,65.581934],[-67.936768,65.564893],[-67.906055,65.563477],[-67.717139,65.625342],[-67.638086,65.64043],[-67.569629,65.643555],[-67.490137,65.626221],[-67.399707,65.588379],[-67.346387,65.549365],[-67.330322,65.50918],[-67.303418,65.48291],[-67.117969,65.440381],[-67.134961,65.420508],[-67.326074,65.356641],[-67.336523,65.346582],[-67.29834,65.341943],[-67.177588,65.303809],[-67.066504,65.244092],[-66.998584,65.172998],[-66.984912,65.138037],[-66.985645,65.104834],[-66.970361,65.084912],[-66.911523,65.081348],[-66.8875,65.093994],[-66.860645,65.091602],[-66.830908,65.07417],[-66.799609,65.019678],[-66.732764,64.860059],[-66.697412,64.815186],[-66.677148,64.813672],[-66.666699,64.973828],[-66.635498,65.000342],[-66.517773,64.971973],[-66.345215,64.909619],[-66.22373,64.854102],[-66.209717,64.828125],[-66.301514,64.777734],[-66.282129,64.755322],[-66.214648,64.722412],[-66.15249,64.734912],[-66.10752,64.791211],[-66.030176,64.846582],[-65.938525,64.885742],[-65.768066,64.853564],[-65.626758,64.770752],[-65.605273,64.742334],[-65.513184,64.706494],[-65.431934,64.726416],[-65.274805,64.631543],[-65.349316,64.588525],[-65.512793,64.525977],[-65.529346,64.504785],[-65.48999,64.509619],[-65.178613,64.509717],[-65.094531,64.48457],[-65.074609,64.43667],[-65.212988,64.303271],[-65.339893,64.315088],[-65.507471,64.318311],[-65.593652,64.311133],[-65.580322,64.293848],[-65.347803,64.232324],[-65.281982,64.181641],[-65.192773,64.129834],[-65.149609,64.087158],[-65.150635,64.067529],[-65.187305,64.037988],[-65.169873,64.028174],[-65.010596,64.008838],[-64.911816,64.026172],[-64.787793,64.032764],[-64.678467,64.027979],[-64.669727,64.00957],[-64.686182,63.960938],[-64.798145,63.915967],[-64.768164,63.90542],[-64.636719,63.918359],[-64.576318,63.897363],[-64.498486,63.790332],[-64.410937,63.706348],[-64.482227,63.687061],[-64.561572,63.679688],[-64.550293,63.572559],[-64.498633,63.462793],[-64.498096,63.357568],[-64.514355,63.263965],[-64.586914,63.243164],[-64.664648,63.245361],[-64.695605,63.268848],[-64.886279,63.54873],[-64.933301,63.599268],[-64.989697,63.643359],[-65.191846,63.764258],[-65.183936,63.744824],[-65.133838,63.689062],[-65.089404,63.605957],[-65.031348,63.440137],[-65.004785,63.333398],[-65.016699,63.292822],[-65.058057,63.282861],[-65.068945,63.263477],[-65.049316,63.234619],[-64.894824,63.125635],[-64.820166,63.06001],[-64.767383,62.991797],[-64.718115,62.945801],[-64.672363,62.921973],[-64.683643,62.902393],[-64.751855,62.887158],[-64.868701,62.879883],[-64.923242,62.88916],[-65.132959,62.952344],[-65.162793,62.932617],[-65.046582,62.701465],[-65.050195,62.646143],[-65.108496,62.626465],[-65.180322,62.649463],[-65.26582,62.715088],[-65.396533,62.788184],[-65.572412,62.868896],[-65.740381,62.931982],[-65.779883,62.930273],[-65.805664,62.911572],[-65.833691,62.908545],[-65.864062,62.921143],[-65.920264,62.968506],[-65.978857,63.000684],[-66.224023,63.107178],[-66.249219,63.108252],[-66.226074,63.076318],[-66.201074,63.00625],[-66.228662,62.990967],[-66.292773,62.99668],[-66.414453,63.027197],[-66.496387,63.097266],[-66.600488,63.218896],[-66.65498,63.264746],[-66.659814,63.234912],[-66.630859,63.119043],[-66.636426,63.080127],[-66.697461,63.069531],[-66.723242,63.080176],[-66.748535,63.111084],[-66.773242,63.162256],[-66.831445,63.201123],[-66.923291,63.227686],[-66.974707,63.255566],[-67.000146,63.305127],[-67.01792,63.316504],[-67.179785,63.305029],[-67.260937,63.340723],[-67.49502,63.481445],[-67.709229,63.633936],[-67.844238,63.714551],[-67.893262,63.73374],[-67.821436,63.63501],[-67.742529,63.489258],[-67.722559,63.422754],[-67.758789,63.419727],[-67.837891,63.449219],[-68.243555,63.637061],[-68.49375,63.725488],[-68.632861,63.741113],[-68.858936,63.751855],[-68.911084,63.703223],[-68.789258,63.595117],[-68.670557,63.513672],[-68.555127,63.458936],[-68.373926,63.352197],[-68.208057,63.214697],[-68.14126,63.172314],[-67.915332,63.113672],[-67.797461,63.098096],[-67.675977,63.093555],[-67.664893,63.072656],[-67.723779,63.033691],[-67.736963,63.00957],[-67.468213,62.948242],[-67.36665,62.91416],[-67.268506,62.857568],[-67.212695,62.843506],[-66.979541,62.70083],[-66.921533,62.678076],[-66.714014,62.631787],[-66.644873,62.602051],[-66.530518,62.509961],[-66.45874,62.463135],[-66.357275,62.351904],[-66.28125,62.302686],[-66.09502,62.246387],[-66.015625,62.230273],[-65.980176,62.208887],[-66.004346,62.158301],[-66.026953,62.137207],[-66.133154,62.102393],[-66.116406,62.053906],[-66.056445,61.96748],[-66.058887,61.913867],[-66.123877,61.893066],[-66.256689,61.868262],[-66.32373,61.870264],[-66.424512,61.890723],[-66.551318,61.925586],[-66.803125,62.012598],[-67.181055,62.072852],[-67.322021,62.105029],[-67.368994,62.134082],[-67.440137,62.15127],[-68.378613,62.235156],[-68.535889,62.255615],[-68.633643,62.281299],[-68.724365,62.318994],[-69.082324,62.405176],[-69.125586,62.423975],[-69.366016,62.571875],[-69.545166,62.74458],[-69.604736,62.767725],[-69.799512,62.790479],[-69.962109,62.776172],[-70.070947,62.757227],[-70.236133,62.763379],[-70.344043,62.791504],[-70.571338,62.869189],[-70.801416,62.910498],[-71.002148,62.978271],[-71.105762,63.002246],[-71.096191,63.019678],[-70.946045,63.120703],[-70.992676,63.119287],[-71.253711,63.042529],[-71.347266,63.066113],[-71.50127,63.126416],[-71.617139,63.187207],[-71.855469,63.355273],[-71.992236,63.416162],[-71.973047,63.429883],[-71.819189,63.435449],[-71.696533,63.430225],[-71.614258,63.444092],[-71.455859,63.512256],[-71.387402,63.555029],[-71.380859,63.580322],[-71.513477,63.586572],[-71.541895,63.598828],[-71.565625,63.626758],[-71.626758,63.662598],[-71.725293,63.706152],[-71.837549,63.724951],[-72.222949,63.708887],[-72.290137,63.727979],[-72.28877,63.756982],[-72.213477,63.838721],[-72.172461,63.87168],[-72.159375,63.889893],[-72.174268,63.893408],[-72.226465,63.891357],[-72.45,63.818115],[-72.498437,63.823486],[-72.586133,63.900781],[-72.639307,63.989063],[-72.678076,64.02002],[-72.72959,64.030469],[-72.913184,64.117188],[-73.174316,64.281885],[-73.270312,64.333496],[-73.3771,64.37959],[-73.454541,64.399268],[-73.443652,64.423486],[-73.278174,64.560254],[-73.271289,64.58252],[-73.413086,64.57417],[-73.626953,64.602539],[-73.728418,64.568262],[-73.792773,64.566211],[-73.867871,64.585352],[-73.910352,64.578125],[-73.950391,64.46582],[-73.981104,64.437744],[-74.025586,64.422656],[-74.064795,64.424658],[-74.09873,64.443701],[-74.0979,64.469922],[-74.130469,64.607812],[-74.205078,64.628125],[-74.415869,64.633496],[-74.46123,64.644678],[-74.512451,64.670166],[-74.55625,64.717334],[-74.592578,64.786182],[-74.634277,64.823926],[-74.681396,64.830664],[-74.719189,64.825146],[-74.747754,64.807324],[-74.813428,64.79624],[-74.91626,64.791992],[-74.919434,64.765527],[-74.823047,64.716895],[-74.729834,64.647363],[-74.640039,64.55708],[-74.694727,64.496582],[-74.893945,64.465723],[-75.067383,64.456689],[-75.215039,64.469385],[-75.328418,64.49043],[-75.487793,64.540771],[-75.715039,64.524365],[-75.766699,64.391943],[-75.815234,64.384668],[-76.031836,64.388086],[-76.118066,64.376318],[-76.406836,64.303174],[-76.494727,64.292969],[-76.561523,64.301611],[-76.626514,64.283936],[-76.723828,64.242041],[-76.856152,64.237646],[-77.023535,64.27085],[-77.165674,64.285059],[-77.28252,64.280371],[-77.402881,64.299902],[-77.526758,64.34375],[-77.627783,64.363477],[-77.760498,64.360156],[-77.791162,64.36709],[-77.984863,64.461084],[-78.045215,64.499268],[-78.174561,64.617725],[-78.197559,64.664648],[-78.200879,64.714746],[-78.189697,64.751807],[-78.144629,64.807715],[-78.095605,64.939258],[-78.055273,64.98291],[-77.99458,65.022607],[-77.876172,65.072949],[-77.447461,65.161572],[-77.360889,65.196533],[-77.363867,65.219775],[-77.461475,65.328174],[-77.4604,65.355908],[-77.427686,65.372119],[-77.358008,65.435449],[-77.326709,65.453125],[-77.251172,65.462891],[-77.094141,65.430859],[-76.958594,65.418018],[-76.778906,65.413867],[-76.481689,65.369727],[-76.066992,65.285449],[-75.82832,65.227051],[-75.648145,65.14082],[-75.519922,65.056006],[-75.501562,65.013086],[-75.560937,64.947021],[-75.590869,64.927686],[-75.589111,64.905029],[-75.555762,64.879199],[-75.4521,64.841602],[-75.427148,64.855859],[-75.435156,64.900781],[-75.413672,64.938525],[-75.362793,64.969043],[-75.357129,65.00874],[-75.39668,65.057568],[-75.445801,65.099707],[-75.504687,65.135156],[-75.772949,65.257031],[-75.798682,65.29751],[-75.708594,65.315723],[-75.31665,65.274805],[-75.166309,65.283936],[-75.109277,65.331445],[-75.047754,65.363965],[-74.981738,65.381445],[-74.849854,65.389062],[-74.665479,65.366943],[-74.574902,65.363672],[-74.494775,65.37168],[-74.390723,65.397559],[-74.236865,65.483887],[-74.138477,65.503467],[-73.9896,65.516992],[-73.87793,65.518848],[-73.675391,65.484326],[-73.550781,65.485254],[-73.560742,65.54292],[-73.643408,65.653223],[-73.746094,65.766699],[-73.826074,65.805176],[-74.033105,65.877051],[-74.276172,66.012744],[-74.401074,66.096973],[-74.433936,66.139014],[-74.416406,66.16709],[-74.374902,66.208154],[-73.933691,66.358057],[-73.584229,66.506934],[-73.430957,66.583154],[-73.357373,66.636279],[-73.280811,66.674951],[-73.201123,66.69917],[-73.033252,66.728174],[-72.985352,66.765381],[-72.974854,66.828516],[-72.946777,66.883252],[-72.788818,67.030615],[-72.667725,67.070459],[-72.485156,67.098096],[-72.364941,67.133398],[-72.22002,67.254297],[-72.234131,67.284424],[-72.301074,67.307275],[-72.352881,67.341895],[-72.576465,67.658643],[-72.725293,67.811621],[-72.903955,67.944775],[-73.063428,68.106982],[-73.328223,68.266748],[-73.331445,68.308984],[-73.284473,68.356982],[-73.306885,68.367822],[-73.580176,68.297754],[-73.644482,68.294531],[-73.749463,68.325],[-73.820508,68.362939],[-73.879346,68.429395],[-73.87334,68.46416],[-73.834424,68.49707],[-73.78252,68.578027],[-73.780615,68.619287],[-73.798437,68.658643],[-73.822119,68.685986],[-73.851562,68.701367],[-73.935156,68.710986],[-74.072998,68.714941],[-74.117969,68.700928],[-73.966064,68.57876],[-73.989258,68.548633],[-74.182812,68.535449],[-74.270117,68.541211],[-74.35,68.556055],[-74.422412,68.579932],[-74.647949,68.70752],[-74.695801,68.755566],[-74.680518,68.790283],[-74.699951,68.80835],[-74.745996,68.796729],[-74.80835,68.795898],[-74.892969,68.808154],[-74.9104,68.823145],[-74.752393,68.89209],[-74.743262,68.913379],[-74.816113,68.936133],[-74.925098,68.940723],[-74.954004,68.961084],[-74.917285,68.982861],[-74.769336,69.020654],[-74.716699,69.045508],[-74.805469,69.064258],[-74.854883,69.06582],[-74.954443,69.024609],[-75.104248,68.940576],[-75.213281,68.909375],[-75.362744,68.948291],[-75.456982,68.961279],[-75.522656,68.952734],[-75.623047,68.887744],[-75.842236,68.840186],[-76.234717,68.728027],[-76.403418,68.692334],[-76.585059,68.69873],[-76.619434,68.721387],[-76.61626,68.759863],[-76.603662,68.791553],[-76.581738,68.816309],[-76.574561,68.84668],[-76.587695,68.974463],[-76.557227,69.009473],[-76.495166,69.03042],[-76.380908,69.052441],[-76.089209,69.026172],[-75.953711,69.030811],[-75.858594,69.060303],[-75.763379,69.10293],[-75.667969,69.158838],[-75.647754,69.212549],[-75.749072,69.299561],[-75.787158,69.318652],[-76.046484,69.386377],[-76.189795,69.410986],[-76.316211,69.421631],[-76.407959,69.441113],[-76.464941,69.469434],[-76.520361,69.516602],[-76.524951,69.548682],[-76.516113,69.590918],[-76.463281,69.619971],[-76.231104,69.653467],[-76.234082,69.662109],[-76.423828,69.686816],[-76.513281,69.683936],[-76.590039,69.65625],[-76.686523,69.59126],[-76.742334,69.5729],[-76.915576,69.611182],[-77.019629,69.616846],[-77.089941,69.635107],[-77.128809,69.652734],[-77.105078,69.670752],[-77.018701,69.689063],[-76.868604,69.745166],[-76.858594,69.775391],[-76.962256,69.824854],[-77.015967,69.836133],[-77.232471,69.85459],[-77.494287,69.83623],[-77.59165,69.845605],[-77.635303,69.900439],[-77.662988,69.965723],[-77.674756,70.041504],[-77.721924,70.170801],[-77.774023,70.238525],[-77.842529,70.24707],[-78.156787,70.219141],[-78.231445,70.218799],[-78.282812,70.22915],[-78.490723,70.315576],[-78.574805,70.346191],[-78.621436,70.353418],[-78.772656,70.445312],[-78.830859,70.463184],[-78.899902,70.508545],[-78.979785,70.581348],[-79.066406,70.603564],[-79.159766,70.575244],[-79.253174,70.534717],[-79.346631,70.481885],[-79.397314,70.437256],[-79.405225,70.400732],[-79.347412,70.372314],[-79.017529,70.325195],[-78.933838,70.293701],[-78.862842,70.241895],[-78.809814,70.178564],[-78.774854,70.103613],[-78.777832,70.047656],[-78.818799,70.010449],[-78.889648,69.97749],[-79.092871,69.925342],[-79.30332,69.894824],[-79.51543,69.887598],[-79.615918,69.894727],[-80.162109,69.995996],[-80.2604,69.996777],[-80.386816,70.010449],[-80.670312,70.0521],[-80.825781,70.056641],[-81.098291,70.091162],[-81.55957,70.11123],[-81.651953,70.094629],[-81.529248,70.048047],[-81.421729,70.024609],[-81.329492,70.024365],[-81.196826,69.982812],[-81.02373,69.9],[-80.924805,69.850586],[-80.842871,69.79165],[-80.840283,69.771387],[-80.921729,69.730908],[-81.564697,69.942725],[-81.957715,69.86875],[-82.138721,69.841211],[-82.293848,69.836914],[-82.487744,69.865967],[-82.925391,69.968164],[-83.091162,70.003906],[-83.149951,70.009082],[-83.530762,69.964795],[-83.859082,69.962744],[-84.521875,70.005225],[-84.765137,70.033643],[-84.829199,70.06333],[-84.909082,70.078223],[-85.052637,70.078223],[-85.432373,70.111377],[-85.780029,70.03667],[-86.198193,70.105127],[-86.322021,70.14541],[-86.361426,70.173047],[-86.483105,70.288574],[-86.499805,70.350391],[-86.465381,70.40625],[-86.431006,70.444531],[-86.396875,70.465332],[-86.624316,70.40127],[-86.70415,70.390723],[-86.809277,70.388281],[-87.122461,70.411963],[-87.171973,70.399854],[-87.155811,70.377441],[-87.074023,70.344824],[-87.063281,70.325098],[-87.237891,70.309717],[-87.502441,70.325684],[-87.617773,70.31875],[-87.670215,70.309814],[-87.789453,70.258252],[-87.838135,70.246582],[-87.900684,70.251904],[-88.17832,70.368604],[-88.4021,70.44248],[-88.662988,70.47085],[-88.782715,70.494482],[-88.848437,70.5229],[-89.208301,70.759717],[-89.25752,70.810693],[-89.371533,70.996143],[-89.409766,71.035693],[-89.455908,71.061719],[-89.365527,71.067188],[-89.025146,71.044629],[-88.695654,71.045605],[-88.51665,71.030566],[-88.309082,70.984326],[-88.038574,70.951318],[-87.844922,70.944385],[-87.534424,70.956592],[-87.181592,70.987549],[-87.140088,71.011621],[-87.368604,71.052832],[-87.572314,71.107568],[-87.760254,71.178516],[-87.872461,71.208545],[-88.060645,71.227246],[-88.589502,71.240283],[-89.079346,71.287939],[-89.417676,71.352197],[-89.693311,71.423486],[-89.805371,71.462305],[-89.845752,71.492285],[-89.888525,71.585742],[-89.933691,71.742725],[-89.977344,71.848047],[-90.019531,71.901807],[-90.025195,71.948779],[-89.931494,72.049023],[-89.663818,72.157959],[-89.657275,72.175049],[-89.710547,72.180127],[-89.8229,72.207813],[-89.858691,72.24834],[-89.873096,72.312646],[-89.874023,72.367188],[-89.861523,72.411914],[-89.816846,72.467725],[-89.701514,72.568066],[-89.536426,72.689844],[-89.357715,72.80415],[-89.3271,72.841553],[-89.311377,72.942969],[-89.287695,73.016943],[-89.263232,73.068994],[-89.225342,73.108057],[-89.114746,73.182178],[-88.976807,73.25249],[-88.760937,73.312402],[-88.742529,73.33457],[-88.7396,73.365283],[-88.727148,73.388184],[-88.705176,73.403271],[-88.17002,73.595313],[-87.926416,73.67334],[-87.719775,73.7229],[-87.472363,73.759424],[-86.76875,73.833984],[-86.406396,73.854785],[-85.950781,73.850146],[-85.110498,73.808154],[-85.009326,73.778613],[-84.983594,73.763721],[-84.946777,73.721631],[-84.974512,73.694775],[-85.204297,73.603564],[-85.493604,73.527686],[-85.681885,73.461475],[-86.000537,73.312549],[-86.086475,73.260254],[-86.481396,72.960254],[-86.574658,72.910547],[-86.629346,72.870801],[-86.667773,72.762549],[-86.656299,72.724023],[-86.594629,72.661133],[-86.380322,72.524658],[-86.322559,72.46084],[-86.324023,72.402148],[-86.348047,72.262256],[-86.350977,72.191309],[-86.341357,72.123193],[-86.297168,72.025781],[-86.218457,71.899121],[-86.036133,71.770947],[-85.750098,71.641357],[-85.537158,71.55542],[-85.327197,71.492139],[-85.078711,71.398486],[-85.023389,71.353223],[-85.137598,71.303418],[-85.405371,71.226758],[-85.757275,71.193945],[-85.94541,71.162646],[-86.179443,71.095898],[-86.473242,71.042627],[-86.589355,71.010791]]],[[[-61.801123,49.093896],[-62.219531,49.079102],[-62.552637,49.140869],[-62.799609,49.170703],[-63.041504,49.224951],[-63.565869,49.399316],[-63.625879,49.459912],[-63.676221,49.534326],[-63.776611,49.602002],[-63.884912,49.657715],[-64.440039,49.827734],[-64.485205,49.886963],[-64.372949,49.925928],[-64.24375,49.944385],[-64.131445,49.94165],[-63.760156,49.875244],[-63.291992,49.816846],[-63.088818,49.772705],[-62.858545,49.705469],[-62.633447,49.623926],[-62.133008,49.40708],[-62.043066,49.389795],[-61.817139,49.283545],[-61.73584,49.20376],[-61.696143,49.139014],[-61.745508,49.105762],[-61.801123,49.093896]]],[[[-63.811279,46.468701],[-63.784229,46.454639],[-63.737012,46.480518],[-63.681445,46.561914],[-63.534375,46.540625],[-63.456494,46.503906],[-63.413135,46.512012],[-63.368652,46.508252],[-63.286084,46.460205],[-63.129395,46.422217],[-62.964014,46.427734],[-62.712012,46.450293],[-62.681934,46.459424],[-62.423096,46.478271],[-62.163574,46.487207],[-62.074268,46.465723],[-62.040869,46.445703],[-62.02373,46.421582],[-62.171777,46.355371],[-62.319971,46.27832],[-62.526074,46.202881],[-62.552002,46.165918],[-62.539209,46.097949],[-62.543262,46.028662],[-62.502588,46.022949],[-62.478076,45.999707],[-62.531348,45.977295],[-62.743164,45.966895],[-62.804883,45.973193],[-62.878369,46.001367],[-62.903516,46.068262],[-62.994629,46.058447],[-63.02207,46.066602],[-62.894531,46.123584],[-62.952637,46.195166],[-63.015039,46.189941],[-63.056348,46.223926],[-63.05293,46.269824],[-62.995117,46.292139],[-62.978467,46.316357],[-63.056885,46.295361],[-63.116992,46.252832],[-63.194727,46.236719],[-63.270801,46.2],[-63.152783,46.18833],[-63.213477,46.159863],[-63.276611,46.153271],[-63.568896,46.209229],[-63.641016,46.230469],[-63.731787,46.289062],[-63.800537,46.367334],[-63.763232,46.370361],[-63.750537,46.384375],[-63.758643,46.397607],[-63.860547,46.408154],[-64.019727,46.404834],[-64.11084,46.425439],[-64.106543,46.562109],[-64.136035,46.599707],[-64.235645,46.631445],[-64.388037,46.640869],[-64.403125,46.691602],[-64.35459,46.769238],[-64.27998,46.835742],[-64.223242,46.90127],[-64.156934,46.954883],[-63.993555,47.061572],[-63.997266,46.981738],[-63.981494,46.912988],[-64.087891,46.775439],[-63.903027,46.639111],[-63.879297,46.608984],[-63.863721,46.572363],[-63.875635,46.538672],[-63.905566,46.508789],[-63.833594,46.493896],[-63.811279,46.468701]]],[[[-82.000488,62.954199],[-81.960547,62.926221],[-81.948584,62.884033],[-81.964404,62.827637],[-81.990186,62.776318],[-82.02583,62.730078],[-82.113721,62.652246],[-82.388037,62.519141],[-82.490967,62.446582],[-82.568262,62.403223],[-83.01582,62.209912],[-83.071387,62.200391],[-83.129687,62.204102],[-83.252393,62.232959],[-83.376807,62.238135],[-83.698877,62.160254],[-83.714404,62.173584],[-83.728613,62.257178],[-83.760937,62.303516],[-83.903125,62.40249],[-83.912402,62.425537],[-83.910498,62.45415],[-83.899268,62.476465],[-83.739062,62.568848],[-83.376416,62.904932],[-83.289453,62.921582],[-83.110937,62.884131],[-83.02627,62.87207],[-82.965771,62.873926],[-82.706445,62.944531],[-82.459717,62.936182],[-82.234766,62.977441],[-82.129248,62.977686],[-82.047607,62.970557],[-82.000488,62.954199]]],[[[-79.545312,62.411719],[-79.466211,62.384521],[-79.336035,62.293701],[-79.286475,62.247656],[-79.272021,62.185986],[-79.306445,62.103516],[-79.323926,62.026074],[-79.372266,61.967773],[-79.462158,61.894092],[-79.541846,61.808008],[-79.611328,61.709619],[-79.66875,61.644434],[-79.714258,61.612549],[-79.76333,61.595947],[-79.816113,61.594629],[-79.896338,61.630127],[-80.00415,61.702539],[-80.091992,61.746826],[-80.204932,61.777246],[-80.265186,61.818213],[-80.276172,61.858594],[-80.279834,61.989502],[-80.275098,62.054639],[-80.260059,62.109033],[-80.234668,62.152686],[-80.178564,62.212793],[-80.021582,62.342969],[-79.926758,62.392871],[-79.868066,62.404346],[-79.712549,62.39502],[-79.649561,62.398291],[-79.597656,62.413232],[-79.545312,62.411719]]],[[[-75.675879,68.32251],[-75.153809,68.234033],[-75.103125,68.201904],[-75.078125,68.173145],[-75.063477,68.141211],[-75.062354,68.075391],[-75.072852,68.049023],[-75.123877,67.985254],[-75.127344,67.965234],[-75.086377,67.751416],[-75.090527,67.634766],[-75.127295,67.537305],[-75.201953,67.45918],[-75.314502,67.400439],[-75.400098,67.366699],[-75.780078,67.283545],[-76.048975,67.262012],[-76.332764,67.258105],[-76.693945,67.23584],[-76.858838,67.240479],[-76.944189,67.250293],[-77.004883,67.266943],[-77.075928,67.319629],[-77.15708,67.40835],[-77.224219,67.508203],[-77.304395,67.685107],[-77.305908,67.706104],[-77.228564,67.850098],[-77.125879,67.94707],[-76.944727,68.090967],[-76.740234,68.23125],[-76.688232,68.254395],[-76.595801,68.278955],[-76.364453,68.318701],[-76.172803,68.308789],[-76.088281,68.313818],[-75.982764,68.332324],[-75.866504,68.336816],[-75.675879,68.32251]]],[[[-79.537305,73.654492],[-79.366797,73.641357],[-78.286523,73.66582],[-78.062939,73.647656],[-77.382129,73.53667],[-77.206543,73.499561],[-77.119775,73.450488],[-77.041504,73.373047],[-77.005322,73.356055],[-76.758691,73.31001],[-76.657275,73.254199],[-76.621582,73.225342],[-76.569775,73.159277],[-76.458447,73.121826],[-76.331152,73.100488],[-76.289551,73.081006],[-76.30957,72.9979],[-76.255273,72.959229],[-76.135059,72.912402],[-76.08999,72.881201],[-76.183398,72.843066],[-76.400537,72.820654],[-77.013574,72.843994],[-77.835938,72.896826],[-78.314209,72.881836],[-78.554053,72.857715],[-79.13418,72.771631],[-79.319336,72.757715],[-79.500537,72.755957],[-79.820703,72.826318],[-79.936865,72.863623],[-79.975293,72.89248],[-80.051611,72.977002],[-80.114453,73.078223],[-80.146436,73.161328],[-80.183301,73.224658],[-80.292725,73.245605],[-80.61792,73.270801],[-80.726855,73.305469],[-80.776416,73.33418],[-80.82417,73.380664],[-80.822949,73.428955],[-80.797998,73.471533],[-80.776953,73.481982],[-80.73584,73.483105],[-80.827002,73.534668],[-80.858496,73.591406],[-80.860742,73.670557],[-80.848877,73.72124],[-80.822852,73.743457],[-80.762744,73.757764],[-80.621387,73.767334],[-80.412305,73.76543],[-80.120264,73.70708],[-79.889355,73.701514],[-79.537305,73.654492]]],[[[-80.731689,52.747266],[-80.802344,52.733984],[-81.009863,52.760645],[-81.096582,52.779883],[-81.352246,52.852002],[-81.839062,52.95791],[-82.005029,53.010498],[-82.039258,53.049902],[-81.951123,53.132227],[-81.901367,53.165576],[-81.847314,53.186279],[-81.335352,53.224268],[-81.135596,53.205811],[-80.900391,53.037158],[-80.765332,52.923242],[-80.710449,52.831592],[-80.709521,52.787402],[-80.731689,52.747266]]],[[[-78.826514,56.145312],[-78.877295,56.131445],[-78.913818,56.132812],[-78.907031,56.166357],[-78.856885,56.23208],[-78.828418,56.289844],[-78.821582,56.339648],[-78.799414,56.383301],[-78.761865,56.420703],[-78.724512,56.439209],[-78.66875,56.438623],[-78.657178,56.317383],[-78.672803,56.260498],[-78.710156,56.212891],[-78.761377,56.174512],[-78.826514,56.145312]]],[[[-78.935596,56.266064],[-79.017969,56.16499],[-79.083887,56.067871],[-79.175488,55.885059],[-79.227832,55.878516],[-79.273633,55.922461],[-79.142285,56.136426],[-79.136084,56.160254],[-79.142285,56.180713],[-79.182129,56.212158],[-79.221826,56.175977],[-79.407422,55.934863],[-79.455322,55.896191],[-79.495117,55.874756],[-79.526758,55.870654],[-79.605713,55.875684],[-79.764746,55.806787],[-79.497461,56.093164],[-79.494678,56.11499],[-79.544727,56.128369],[-79.564551,56.120947],[-79.781104,55.940576],[-79.90459,55.871045],[-79.9875,55.892139],[-80.008252,55.911035],[-80.000781,55.93208],[-79.790039,56.11416],[-79.596338,56.244482],[-79.515283,56.326514],[-79.482373,56.403809],[-79.46792,56.460352],[-79.468945,56.522607],[-79.458887,56.539746],[-79.447656,56.536572],[-79.435303,56.513037],[-79.432031,56.447461],[-79.47627,56.312842],[-79.511816,56.246582],[-79.554199,56.191992],[-79.536328,56.180078],[-79.458301,56.211084],[-79.392627,56.276465],[-79.339355,56.376318],[-79.305322,56.463086],[-79.272412,56.600439],[-79.261133,56.595654],[-79.245752,56.568262],[-79.210449,56.548926],[-79.155176,56.537598],[-79.123535,56.519971],[-79.100244,56.473926],[-79.077734,56.453613],[-78.994971,56.436426],[-78.963184,56.421729],[-78.940332,56.371436],[-78.942432,56.344922],[-78.931201,56.32793],[-78.906641,56.32041],[-78.935596,56.266064]]],[[[-79.977588,56.207031],[-80.028613,56.199414],[-80.088867,56.213867],[-80.057471,56.287354],[-80.005078,56.31792],[-79.874463,56.348437],[-79.852148,56.367188],[-79.8104,56.376514],[-79.74917,56.376514],[-79.681006,56.403955],[-79.605859,56.458838],[-79.579736,56.466357],[-79.632568,56.386523],[-79.687939,56.326807],[-79.977588,56.207031]]],[[[-89.833252,77.267627],[-90.094727,77.2104],[-90.228271,77.212451],[-90.993213,77.329492],[-91.147266,77.387305],[-91.176611,77.42627],[-91.185059,77.481543],[-91.182666,77.557178],[-91.149463,77.608057],[-91.109131,77.625732],[-91.019043,77.643896],[-90.842578,77.65498],[-90.674854,77.648633],[-90.422754,77.628369],[-90.171924,77.594678],[-89.838965,77.491406],[-89.719482,77.442139],[-89.694189,77.378125],[-89.69458,77.338965],[-89.712012,77.3104],[-89.74668,77.292578],[-89.833252,77.267627]]],[[[-104.558154,77.141748],[-104.711377,77.123975],[-105.015576,77.1646],[-105.215088,77.18208],[-105.379932,77.254248],[-105.556348,77.352637],[-105.695117,77.461377],[-105.747217,77.525391],[-105.848145,77.563428],[-105.883154,77.626514],[-106.066113,77.725391],[-106.035596,77.739844],[-105.862988,77.754395],[-105.587891,77.735986],[-105.456104,77.700928],[-105.289648,77.64209],[-105.073877,77.548291],[-105.007227,77.506738],[-104.994287,77.449658],[-104.955322,77.418701],[-104.770215,77.413232],[-104.542236,77.337744],[-104.500781,77.308545],[-104.453711,77.249121],[-104.456982,77.220801],[-104.493359,77.162354],[-104.558154,77.141748]]],[[[-98.791602,79.981104],[-98.768945,79.850879],[-98.789795,79.7854],[-98.840625,79.737061],[-98.885205,79.725684],[-98.945215,79.724072],[-99.218457,79.761865],[-99.301758,79.784082],[-99.30625,79.802881],[-99.333008,79.839551],[-99.515625,79.887158],[-99.857471,79.879492],[-99.999902,79.884033],[-100.056836,79.898242],[-100.092432,79.918652],[-100.126025,80.00127],[-100.120361,80.03042],[-100.078516,80.081104],[-100.053271,80.093359],[-99.802783,80.140137],[-99.731201,80.144092],[-99.424854,80.126416],[-99.153223,80.124219],[-99.016602,80.111133],[-98.894678,80.081787],[-98.823193,80.037354],[-98.791602,79.981104]]],[[[-105.288916,72.919922],[-105.339355,72.914893],[-105.434082,72.937988],[-105.572998,72.989307],[-105.800146,73.093311],[-106.071045,73.196387],[-106.112646,73.258105],[-106.180029,73.304102],[-106.525732,73.413379],[-106.750391,73.457715],[-106.921533,73.479834],[-106.949658,73.510352],[-106.831006,73.599072],[-106.694824,73.669922],[-106.613965,73.695605],[-106.362109,73.718604],[-105.512305,73.765771],[-105.317969,73.767139],[-105.114453,73.744434],[-104.834668,73.647266],[-104.718262,73.636279],[-104.648779,73.614404],[-104.5875,73.578076],[-104.555078,73.541113],[-104.552344,73.465576],[-104.582861,73.353906],[-104.621729,73.311133],[-104.791016,73.167627],[-104.968652,73.088672],[-105.002588,73.037549],[-105.074609,72.997021],[-105.200635,72.947314],[-105.288916,72.919922]]],[[[-102.227344,76.014893],[-102.017871,75.953516],[-102.008008,75.939404],[-102.047461,75.927734],[-102.318115,75.895166],[-102.423437,75.869189],[-102.511377,75.808398],[-102.57959,75.780225],[-102.943555,75.763428],[-103.314746,75.764209],[-103.244727,75.822949],[-103.041504,75.918848],[-103.201562,75.958496],[-103.769775,75.892383],[-103.985254,75.933105],[-103.800781,76.037012],[-103.984521,76.046533],[-104.24248,76.046973],[-104.406055,76.108496],[-104.350635,76.182324],[-104.012061,76.222998],[-103.571436,76.258203],[-103.098242,76.311475],[-102.728027,76.307031],[-102.584082,76.281641],[-102.536133,76.196436],[-102.490039,76.095068],[-102.425684,76.086426],[-102.227344,76.014893]]],[[[-104.022852,76.583105],[-103.973486,76.577588],[-103.821094,76.59751],[-103.722754,76.601074],[-103.613135,76.563428],[-103.584619,76.538867],[-103.190137,76.477441],[-103.051318,76.449854],[-103.033545,76.431494],[-103.082959,76.405176],[-103.199512,76.37085],[-103.311377,76.347559],[-103.472217,76.329053],[-104.270654,76.32627],[-104.35752,76.334619],[-104.407666,76.365137],[-104.506445,76.478955],[-104.576611,76.540186],[-104.603027,76.582715],[-104.585693,76.606494],[-104.500391,76.630371],[-104.205127,76.666113],[-104.074512,76.666113],[-103.99248,76.656982],[-103.959082,76.63877],[-103.969189,76.61416],[-104.022852,76.583105]]],[[[-118.328125,75.579688],[-118.613867,75.51543],[-118.817139,75.522119],[-119.08667,75.569336],[-119.306055,75.585352],[-119.383252,75.601025],[-119.39458,75.617334],[-119.320166,75.662549],[-119.226807,75.698633],[-119.003467,75.76958],[-118.626074,75.90625],[-118.379004,75.957959],[-118.13667,75.994482],[-117.889355,76.076074],[-117.75249,76.112451],[-117.633691,76.115088],[-117.512598,76.099414],[-117.499121,76.077197],[-117.626367,75.965967],[-117.715967,75.921143],[-117.89082,75.805469],[-118.226514,75.611182],[-118.328125,75.579688]]],[[[-113.832471,77.754639],[-114.105908,77.720703],[-114.287207,77.721484],[-114.60835,77.769336],[-114.98042,77.91543],[-115.029346,77.967529],[-114.89043,77.976904],[-114.789502,77.99292],[-114.726465,78.015527],[-114.606885,78.040332],[-114.330371,78.077539],[-114.296875,78.063184],[-114.302881,78.032715],[-114.279834,78.004297],[-114.180957,77.998242],[-114.087207,77.97793],[-113.897754,77.915576],[-113.768018,77.903564],[-113.721387,77.889893],[-113.69668,77.868945],[-113.61792,77.832422],[-113.619385,77.813477],[-113.72583,77.775781],[-113.832471,77.754639]]],[[[-130.927148,54.479053],[-130.950293,54.477783],[-130.959033,54.498682],[-130.953467,54.541846],[-130.921777,54.614893],[-130.906836,54.631787],[-130.777051,54.618896],[-130.758008,54.61377],[-130.753418,54.599707],[-130.763379,54.576709],[-130.805127,54.543799],[-130.927148,54.479053]]],[[[-131.029297,51.961621],[-131.047266,51.959717],[-131.080518,51.98042],[-131.103418,52.013867],[-131.117334,52.101025],[-131.107129,52.136572],[-131.098096,52.150635],[-131.010645,52.095264],[-131.029297,51.961621]]],[[[-130.236279,53.958545],[-130.267236,53.922607],[-130.337549,53.86626],[-130.384229,53.843945],[-130.407227,53.855518],[-130.470264,53.861768],[-130.5375,53.917871],[-130.589844,53.940283],[-130.624609,53.941406],[-130.641846,53.921143],[-130.646289,53.894043],[-130.637891,53.86001],[-130.643701,53.844531],[-130.663574,53.847559],[-130.683447,53.863477],[-130.703174,53.892236],[-130.707275,53.921484],[-130.695703,53.95127],[-130.646924,53.99126],[-130.494629,54.07417],[-130.447998,54.089014],[-130.397314,54.085693],[-130.315869,54.046924],[-130.298486,54.035645],[-130.236279,53.958545]]],[[[-129.848584,53.16792],[-129.868555,53.164502],[-129.934375,53.17666],[-130.151416,53.345703],[-130.305664,53.407373],[-130.410742,53.49082],[-130.517578,53.544238],[-130.452002,53.631152],[-130.394824,53.62041],[-130.19502,53.549658],[-130.0354,53.481104],[-129.944727,53.436377],[-129.754834,53.244775],[-129.768945,53.217285],[-129.848584,53.16792]]],[[[-130.575342,54.769678],[-130.493262,54.83418],[-130.312549,54.945947],[-130.214063,55.025879],[-130.203906,54.947021],[-130.349414,54.814551],[-130.535498,54.74873],[-130.575342,54.769678]]],[[[-128.552441,52.939746],[-128.506543,52.620703],[-128.509912,52.518604],[-128.576807,52.451807],[-128.624023,52.339893],[-128.678955,52.289648],[-128.730908,52.356543],[-128.735547,52.467725],[-128.749414,52.556055],[-128.766455,52.598389],[-128.746338,52.763379],[-128.769629,52.751221],[-128.831201,52.678809],[-128.899805,52.673828],[-129.022852,52.755957],[-129.084717,52.822461],[-129.094873,52.891846],[-129.175928,52.964941],[-129.184326,52.990674],[-129.177686,53.01792],[-129.111084,53.090674],[-129.084082,53.139697],[-129.060352,53.240625],[-129.033252,53.279932],[-128.970215,53.274365],[-128.857715,53.228564],[-128.740381,53.178857],[-128.632666,53.1125],[-128.552441,52.939746]]],[[[-126.09209,49.354004],[-126.064014,49.263623],[-126.186816,49.278125],[-126.229639,49.295654],[-126.231445,49.339062],[-126.208545,49.379785],[-126.115283,49.365039],[-126.09209,49.354004]]],[[[-124.153662,49.531152],[-124.139795,49.510352],[-124.362305,49.588184],[-124.457227,49.634229],[-124.493945,49.66748],[-124.517822,49.686328],[-124.630957,49.735693],[-124.649854,49.75835],[-124.623291,49.775098],[-124.547168,49.764941],[-124.421484,49.727783],[-124.309131,49.667285],[-124.153662,49.531152]]],[[[-126.641211,49.605811],[-126.68042,49.601367],[-126.743408,49.613477],[-126.814209,49.64209],[-126.938574,49.718457],[-126.95127,49.735693],[-126.940039,49.750488],[-126.904883,49.762793],[-126.896875,49.78291],[-126.92583,49.837744],[-126.826074,49.872363],[-126.738135,49.843652],[-126.698145,49.808496],[-126.649902,49.745801],[-126.628174,49.675146],[-126.625781,49.626807],[-126.641211,49.605811]]],[[[-125.184131,50.097119],[-125.195117,50.044336],[-125.25957,50.130029],[-125.358447,50.311523],[-125.345313,50.353955],[-125.301172,50.414062],[-125.260937,50.417822],[-125.195996,50.389746],[-125.139502,50.339697],[-125.126465,50.320264],[-125.091406,50.267773],[-125.074023,50.220654],[-125.112988,50.163477],[-125.184131,50.097119]]],[[[-128.936865,52.51001],[-128.968701,52.464258],[-129.102344,52.574365],[-129.151025,52.605322],[-129.250488,52.722168],[-129.267773,52.772363],[-129.263525,52.800781],[-129.245947,52.81123],[-129.215039,52.803857],[-129.186182,52.79126],[-128.993994,52.661719],[-128.940332,52.600732],[-128.936865,52.51001]]],[[[-127.924658,51.473877],[-127.94126,51.457178],[-127.98125,51.457227],[-128.044531,51.474023],[-128.091797,51.511133],[-128.148779,51.626709],[-128.142383,51.646582],[-128.122754,51.666797],[-128.031738,51.708398],[-127.998682,51.703809],[-127.986816,51.673584],[-127.93252,51.605469],[-127.916357,51.585449],[-127.916309,51.506201],[-127.924658,51.473877]]],[[[-128.36875,52.400879],[-128.44541,52.3875],[-128.419873,52.441113],[-128.4125,52.472852],[-128.42627,52.502734],[-128.435937,52.560352],[-128.439795,52.696387],[-128.364893,52.781885],[-128.247266,52.784375],[-128.248437,52.741211],[-128.298145,52.548242],[-128.323779,52.458984],[-128.343555,52.426074],[-128.36875,52.400879]]],[[[-129.313721,52.992188],[-129.328711,52.984229],[-129.37002,52.997607],[-129.409717,53.02373],[-129.477783,53.097754],[-129.500146,53.128906],[-129.514746,53.179395],[-129.501074,53.18833],[-129.471436,53.183008],[-129.450732,53.174707],[-129.343506,53.052783],[-129.313721,52.992188]]],[[[-129.167725,53.117871],[-129.173242,53.110742],[-129.276855,53.110937],[-129.305713,53.121143],[-129.323877,53.142139],[-129.33125,53.173975],[-129.314355,53.212305],[-129.253076,53.285498],[-129.251172,53.316699],[-129.238184,53.330078],[-129.195215,53.293213],[-129.177002,53.259131],[-129.167725,53.117871]]],[[[-123.4354,48.754443],[-123.477246,48.72876],[-123.499609,48.732178],[-123.517529,48.750146],[-123.582324,48.925781],[-123.554688,48.92207],[-123.467871,48.867383],[-123.487549,48.845703],[-123.422754,48.793359],[-123.406787,48.756055],[-123.4354,48.754443]]],[[[-59.787598,43.9396],[-59.922266,43.903906],[-60.037744,43.906641],[-60.114258,43.939111],[-60.11748,43.953369],[-59.936035,43.9396],[-59.866357,43.947168],[-59.727148,44.002832],[-59.787598,43.9396]]],[[[-60.961572,45.489941],[-61.002881,45.481738],[-61.0125,45.496045],[-61.076172,45.537305],[-61.081738,45.557812],[-61.025977,45.577344],[-60.912451,45.567285],[-60.953027,45.515527],[-60.961572,45.489941]]],[[[-61.914111,47.284521],[-61.878711,47.265527],[-61.815479,47.267578],[-61.772559,47.259814],[-61.83374,47.222607],[-61.95083,47.218994],[-62.008301,47.234277],[-61.924707,47.425146],[-61.827295,47.469092],[-61.627832,47.593848],[-61.548047,47.631787],[-61.474072,47.646777],[-61.395508,47.637646],[-61.475537,47.563965],[-61.582227,47.56001],[-61.684082,47.49873],[-61.750879,47.430811],[-61.83125,47.392041],[-61.886621,47.344629],[-61.914111,47.284521]]],[[[-64.508594,47.886719],[-64.533887,47.81377],[-64.621289,47.751904],[-64.664648,47.747607],[-64.68457,47.753613],[-64.660498,47.793555],[-64.663281,47.863037],[-64.591113,47.872461],[-64.564844,47.86626],[-64.508594,47.886719]]],[[[-64.476074,47.958887],[-64.591309,47.907227],[-64.540723,47.984961],[-64.51958,48.005078],[-64.500195,48.01377],[-64.48125,48.006934],[-64.476074,47.958887]]],[[[-66.273779,44.292285],[-66.324121,44.257324],[-66.311914,44.291602],[-66.250488,44.379004],[-66.210352,44.392041],[-66.273779,44.292285]]],[[[-66.7625,44.681787],[-66.89707,44.628906],[-66.844727,44.763916],[-66.802148,44.805371],[-66.74541,44.791406],[-66.753369,44.709814],[-66.7625,44.681787]]],[[[-73.566504,45.469092],[-73.643555,45.449121],[-73.775342,45.467627],[-73.920215,45.441943],[-73.960547,45.441406],[-73.85293,45.515723],[-73.687451,45.561426],[-73.522461,45.701172],[-73.476074,45.704736],[-73.538867,45.546436],[-73.55166,45.489844],[-73.566504,45.469092]]],[[[-73.695312,45.585498],[-73.815918,45.564893],[-73.857715,45.573584],[-73.724658,45.671826],[-73.572363,45.694482],[-73.695312,45.585498]]],[[[-71.025732,46.872949],[-71.11665,46.864844],[-71.094971,46.899561],[-70.97085,46.961426],[-70.879639,46.996094],[-70.825781,46.995361],[-70.913477,46.919531],[-71.025732,46.872949]]],[[[-55.536133,50.719678],[-55.569678,50.708691],[-55.600781,50.709033],[-55.629346,50.720801],[-55.633887,50.740186],[-55.604492,50.780713],[-55.527197,50.801221],[-55.469287,50.796387],[-55.472754,50.775928],[-55.503809,50.742139],[-55.536133,50.719678]]],[[[-54.554395,49.588867],[-54.708691,49.530664],[-54.743848,49.507764],[-54.786523,49.496143],[-54.818506,49.514453],[-54.863574,49.576074],[-54.85542,49.596582],[-54.813086,49.599365],[-54.78877,49.591211],[-54.782617,49.57207],[-54.764062,49.562354],[-54.733105,49.562158],[-54.61875,49.62207],[-54.55918,49.631494],[-54.537695,49.619971],[-54.554395,49.588867]]],[[[-55.36123,51.889648],[-55.408887,51.888818],[-55.419629,51.900049],[-55.399805,51.938477],[-55.346484,51.982861],[-55.274072,51.995166],[-55.293555,51.92998],[-55.36123,51.889648]]],[[[-54.093701,49.744434],[-54.019922,49.679492],[-53.980664,49.661963],[-54.238379,49.59165],[-54.269238,49.587012],[-54.286133,49.595361],[-54.28877,49.66084],[-54.277637,49.711475],[-54.258984,49.718994],[-54.199365,49.688525],[-54.137695,49.751172],[-54.093701,49.744434]]],[[[-54.227148,47.441357],[-54.276074,47.406543],[-54.325977,47.408105],[-54.320117,47.438525],[-54.258691,47.497656],[-54.227393,47.53999],[-54.22627,47.565527],[-54.214941,47.585107],[-54.168359,47.60708],[-54.128174,47.646826],[-54.147559,47.573096],[-54.227148,47.441357]]],[[[-64.823828,62.55874],[-64.631836,62.547998],[-64.515332,62.551807],[-64.465039,62.535938],[-64.418066,62.487402],[-64.47832,62.417871],[-64.546484,62.391406],[-64.657422,62.383594],[-64.837305,62.40625],[-64.901221,62.421045],[-64.956494,62.45835],[-64.930762,62.48501],[-64.841943,62.494141],[-64.8271,62.50498],[-64.849854,62.525439],[-64.848779,62.543311],[-64.823828,62.55874]]],[[[-68.233789,60.240918],[-68.324121,60.23291],[-68.365234,60.254053],[-68.367871,60.314746],[-68.338281,60.360596],[-68.234766,60.455566],[-68.141895,60.562012],[-68.087598,60.587842],[-67.978027,60.57041],[-67.914209,60.539844],[-67.847559,60.488818],[-67.818848,60.449512],[-67.844238,60.39165],[-67.922314,60.339893],[-68.012305,60.304639],[-68.233789,60.240918]]],[[[-70.337061,62.54873],[-70.406348,62.544824],[-70.541504,62.552344],[-70.686572,62.573193],[-70.766064,62.596875],[-70.837549,62.648096],[-70.85127,62.704346],[-70.986133,62.787793],[-71.136914,62.815918],[-71.220117,62.873926],[-71.134863,62.877979],[-71.013672,62.865332],[-70.834619,62.840088],[-70.674316,62.807031],[-70.442627,62.733789],[-70.366797,62.66582],[-70.291504,62.615967],[-70.268848,62.578076],[-70.288574,62.561572],[-70.337061,62.54873]]],[[[-64.832617,61.366064],[-64.856836,61.354443],[-64.879785,61.35708],[-64.954248,61.4104],[-65.054395,61.432031],[-65.091504,61.452979],[-65.393896,61.562842],[-65.426807,61.611035],[-65.432129,61.649512],[-65.331641,61.668262],[-65.129785,61.685693],[-64.954443,61.685107],[-64.789648,61.662207],[-64.756348,61.637646],[-64.66958,61.593018],[-64.690967,61.539355],[-64.696387,61.471484],[-64.732324,61.438428],[-64.787598,61.413281],[-64.832617,61.366064]]],[[[-65.030566,61.879053],[-65.008057,61.870264],[-64.981055,61.880615],[-64.960547,61.87168],[-64.94668,61.843359],[-64.923535,61.82373],[-64.865137,61.798145],[-64.845508,61.779883],[-64.84707,61.761523],[-64.896582,61.733301],[-64.927734,61.73252],[-65.165918,61.797656],[-65.230273,61.864014],[-65.235352,61.897705],[-65.210547,61.928369],[-65.173926,61.943213],[-65.125635,61.942236],[-65.068359,61.926025],[-65.030566,61.879053]]],[[[-69.160059,59.040234],[-69.22085,58.967578],[-69.301709,58.976611],[-69.330811,58.961621],[-69.352832,58.960742],[-69.316309,59.028955],[-69.311523,59.074805],[-69.32998,59.12124],[-69.303223,59.144873],[-69.195166,59.146143],[-69.193799,59.092773],[-69.180664,59.072705],[-69.155176,59.063574],[-69.160059,59.040234]]],[[[-64.407031,60.36709],[-64.441943,60.297852],[-64.558203,60.323242],[-64.737939,60.375635],[-64.808984,60.4104],[-64.833789,60.448437],[-64.836426,60.501025],[-64.782568,60.509619],[-64.646289,60.5146],[-64.53252,60.441406],[-64.499805,60.430225],[-64.407031,60.36709]]],[[[-60.994482,56.039307],[-60.982715,56.015137],[-61.137012,56.032568],[-61.191309,56.047852],[-61.19585,56.063916],[-61.188184,56.088965],[-61.157568,56.118359],[-61.086914,56.14082],[-61.048535,56.129248],[-60.966406,56.098828],[-60.955371,56.08042],[-60.994482,56.039307]]],[[[-61.743604,57.55459],[-61.659521,57.524951],[-61.6375,57.416064],[-61.795264,57.422461],[-61.975488,57.49541],[-62.01123,57.548486],[-62.007227,57.557617],[-61.983301,57.566748],[-61.9375,57.554102],[-61.893066,57.573145],[-61.84834,57.579346],[-61.743604,57.55459]]],[[[-67.914697,69.540967],[-67.940283,69.534863],[-68.202344,69.58042],[-68.221387,69.616748],[-68.093262,69.657031],[-67.989111,69.67876],[-67.908838,69.681836],[-67.829102,69.675],[-67.75459,69.631445],[-67.844922,69.591748],[-67.914697,69.540967]]],[[[-62.681543,67.056299],[-62.80542,67.028809],[-62.871631,67.062598],[-62.825098,67.072119],[-62.756982,67.112549],[-62.664404,67.148242],[-62.625293,67.176953],[-62.469727,67.190039],[-62.416797,67.188477],[-62.396338,67.17832],[-62.484619,67.134229],[-62.681543,67.056299]]],[[[-79.063086,75.925879],[-79.051758,75.866992],[-79.124414,75.869678],[-79.355664,75.831152],[-79.544531,75.825635],[-79.63877,75.84292],[-79.69873,75.883252],[-79.55127,75.95835],[-79.381787,76.01084],[-79.17832,76.092383],[-79.009326,76.145898],[-78.925879,76.134668],[-78.845166,76.106299],[-78.946436,76.025439],[-79.056641,75.985156],[-79.063086,75.925879]]],[[[-79.866992,56.774561],[-79.894482,56.757129],[-79.943652,56.776758],[-79.945703,56.826904],[-79.898145,56.865283],[-79.860547,56.863525],[-79.82666,56.843115],[-79.83501,56.816016],[-79.866992,56.774561]]],[[[-79.716504,57.515527],[-79.732227,57.50752],[-79.775195,57.514453],[-79.792041,57.448584],[-79.808447,57.442432],[-79.838232,57.483008],[-79.815918,57.517725],[-79.819141,57.541602],[-79.81084,57.559277],[-79.767871,57.59873],[-79.742578,57.607959],[-79.726709,57.60459],[-79.713477,57.555029],[-79.716504,57.515527]]],[[[-79.518164,56.656689],[-79.553467,56.643848],[-79.577393,56.644922],[-79.550732,56.733496],[-79.581738,56.764844],[-79.583545,56.780957],[-79.570117,56.795703],[-79.552881,56.79873],[-79.51123,56.771436],[-79.491064,56.742676],[-79.482178,56.714404],[-79.48457,56.686523],[-79.496533,56.667285],[-79.518164,56.656689]]],[[[-79.938232,53.30415],[-79.939307,53.274268],[-80.004102,53.280078],[-80.039355,53.297168],[-80.067871,53.324072],[-80.074023,53.344287],[-80.049707,53.364453],[-79.974561,53.352246],[-79.938232,53.30415]]],[[[-79.384277,51.951953],[-79.425586,51.944873],[-79.520605,51.95293],[-79.596875,51.978027],[-79.64375,52.010059],[-79.334863,52.098145],[-79.271289,52.086816],[-79.270215,52.071094],[-79.316602,52.023926],[-79.328955,51.992285],[-79.351514,51.968311],[-79.384277,51.951953]]],[[[-123.372363,48.886133],[-123.384814,48.875195],[-123.541016,48.945947],[-123.645605,49.038623],[-123.689258,49.095117],[-123.482324,48.954687],[-123.37793,48.908252],[-123.372363,48.886133]]],[[[-124.977734,50.02959],[-125.001563,50.020752],[-125.025977,50.134082],[-124.995654,50.175195],[-124.987012,50.19585],[-124.99082,50.217139],[-124.937842,50.165918],[-124.916406,50.131543],[-124.907471,50.083984],[-124.908447,50.071289],[-124.977734,50.02959]]],[[[-73.621729,67.783838],[-74.109082,67.78252],[-74.374072,67.7896],[-74.480713,67.804883],[-74.573389,67.828662],[-74.678613,67.905566],[-74.745996,67.984814],[-74.749268,68.018457],[-74.731445,68.048779],[-74.706543,68.06709],[-74.379395,68.093457],[-74.111377,68.060596],[-73.880713,68.021924],[-73.584033,68.015332],[-73.49375,68.000635],[-73.459229,67.989893],[-73.435254,67.97002],[-73.401562,67.878711],[-73.398193,67.829932],[-73.407178,67.793066],[-73.621729,67.783838]]],[[[-77.876709,63.470557],[-77.79209,63.427832],[-77.703711,63.430859],[-77.654785,63.395996],[-77.538477,63.287061],[-77.527295,63.268945],[-77.532715,63.233643],[-77.593896,63.188428],[-77.657666,63.1646],[-77.791455,63.12959],[-77.942432,63.114404],[-78.024414,63.138867],[-78.255957,63.239844],[-78.46875,63.35791],[-78.536768,63.42373],[-78.507324,63.451123],[-78.417285,63.469971],[-78.234912,63.489551],[-77.933936,63.478955],[-77.876709,63.470557]]],[[[-94.526562,75.749316],[-94.624365,75.748877],[-94.751465,75.769678],[-94.787354,75.791406],[-94.814746,75.821191],[-94.833643,75.858984],[-94.860107,75.889209],[-94.894092,75.911865],[-94.901221,75.930762],[-94.881348,75.945947],[-94.839795,75.954443],[-94.744824,75.957227],[-94.537891,75.996436],[-94.498682,75.992188],[-94.471289,75.971436],[-94.443359,75.91709],[-94.41377,75.884863],[-94.332227,75.825977],[-94.296289,75.788086],[-94.304004,75.776318],[-94.329541,75.765918],[-94.526562,75.749316]]],[[[-80.285254,59.624121],[-80.317236,59.621045],[-80.324658,59.633203],[-80.298975,59.67417],[-80.256641,59.67915],[-80.209961,59.724609],[-80.167236,59.708887],[-80.183057,59.683496],[-80.240527,59.644922],[-80.285254,59.624121]]],[[[-80.064209,59.770801],[-80.16709,59.763867],[-80.122217,59.823193],[-80.083643,59.851855],[-80.041162,59.870166],[-79.955859,59.876953],[-79.898633,59.853125],[-79.949609,59.809912],[-80.064209,59.770801]]],[[[-96.782324,72.936621],[-96.943799,72.926709],[-97.092773,72.996924],[-97.097656,73.062402],[-97.087695,73.098486],[-97.069238,73.130176],[-97.01499,73.157275],[-96.862402,73.188818],[-96.793164,73.165479],[-96.767773,73.137305],[-96.744434,73.12627],[-96.645996,73.101904],[-96.598486,73.073828],[-96.603516,73.041553],[-96.6354,72.992432],[-96.670605,72.960938],[-96.709229,72.946973],[-96.782324,72.936621]]],[[[-97.355518,74.526318],[-97.656104,74.465674],[-97.721582,74.489209],[-97.75,74.510547],[-97.516309,74.60249],[-97.416504,74.626563],[-97.318213,74.597998],[-97.291309,74.576367],[-97.303857,74.559668],[-97.355518,74.526318]]],[[[-98.270361,73.868506],[-98.558203,73.847412],[-98.691064,73.856494],[-98.761377,73.828857],[-98.816602,73.817139],[-98.973926,73.812061],[-99.298047,73.861963],[-99.385156,73.879297],[-99.416992,73.89541],[-99.403809,73.910889],[-99.345605,73.925732],[-99.096875,73.948291],[-99.004687,73.964941],[-98.966699,73.988184],[-98.904492,74.006885],[-98.818164,74.020996],[-98.584961,74.034521],[-98.061035,74.104687],[-97.800439,74.114648],[-97.698242,74.108691],[-97.667432,74.090137],[-97.659131,74.071631],[-97.67334,74.053027],[-97.754736,74.005518],[-97.861084,73.968457],[-98.146973,73.888818],[-98.270361,73.868506]]],[[[-90.199805,69.419092],[-90.177393,69.35708],[-90.267285,69.2729],[-90.295459,69.257812],[-90.330273,69.252197],[-90.364062,69.262598],[-90.464697,69.328711],[-90.492041,69.369873],[-90.455127,69.390479],[-90.377246,69.416211],[-90.32207,69.428711],[-90.252832,69.41792],[-90.228564,69.436035],[-90.199805,69.419092]]],[[[-90.492578,69.221094],[-90.574414,69.209424],[-90.625781,69.250928],[-90.667432,69.259473],[-90.685889,69.287158],[-90.771582,69.292578],[-90.765674,69.335986],[-90.742383,69.357324],[-90.662793,69.37417],[-90.599707,69.367822],[-90.539844,69.324609],[-90.510645,69.29043],[-90.485352,69.246631],[-90.492578,69.221094]]],[[[-74.000439,62.618408],[-74.053564,62.609668],[-74.253516,62.621973],[-74.499512,62.668799],[-74.626465,62.712744],[-74.619971,62.726318],[-74.564209,62.733301],[-74.500928,62.726514],[-74.394775,62.695801],[-74.108936,62.680322],[-74.016797,62.662695],[-73.988184,62.636084],[-74.000439,62.618408]]],[[[-74.880859,68.348682],[-74.959326,68.342236],[-75.07251,68.40415],[-75.310156,68.474463],[-75.400244,68.525488],[-75.403418,68.550146],[-75.396191,68.588818],[-75.370166,68.636084],[-75.287402,68.687744],[-75.199756,68.696094],[-75.074707,68.684717],[-74.983643,68.647607],[-74.884766,68.544629],[-74.818945,68.494434],[-74.798242,68.457959],[-74.830957,68.440723],[-74.82793,68.423779],[-74.812891,68.41333],[-74.818555,68.394092],[-74.844971,68.365967],[-74.880859,68.348682]]],[[[-78.531641,60.728564],[-78.668896,60.716895],[-78.669092,60.731348],[-78.612012,60.772314],[-78.399561,60.808105],[-78.241699,60.818652],[-78.278857,60.783887],[-78.372461,60.756396],[-78.531641,60.728564]]],[[[-78.982715,68.192822],[-79.064062,68.181787],[-79.174023,68.234961],[-79.174756,68.264453],[-79.153467,68.335254],[-78.952588,68.353027],[-78.868701,68.310303],[-78.828516,68.268164],[-78.982715,68.192822]]],[[[-76.677588,63.393945],[-76.783154,63.384033],[-76.921875,63.406348],[-77.057227,63.449756],[-77.364746,63.58833],[-77.133691,63.682031],[-76.763623,63.573584],[-76.652441,63.503564],[-76.677588,63.393945]]],[[[-79.430664,69.787793],[-79.390283,69.73042],[-79.36499,69.712354],[-79.402441,69.685156],[-79.552832,69.630859],[-79.881689,69.608691],[-80.04751,69.634326],[-79.971143,69.556348],[-79.954492,69.523486],[-79.977832,69.509668],[-80.046875,69.513867],[-80.161475,69.535938],[-80.227344,69.562402],[-80.244482,69.593164],[-80.268652,69.6],[-80.299707,69.582861],[-80.32959,69.586768],[-80.397852,69.632617],[-80.448047,69.649707],[-80.778223,69.677002],[-80.794775,69.689258],[-80.777539,69.710352],[-80.726611,69.74043],[-80.652539,69.750586],[-80.465918,69.737109],[-80.450684,69.744775],[-80.43833,69.782715],[-80.424219,69.797607],[-80.294922,69.793799],[-80.213672,69.801953],[-80.168848,69.782422],[-80.124609,69.737256],[-80.061768,69.745508],[-79.97085,69.738965],[-79.86958,69.755518],[-79.714844,69.795703],[-79.593994,69.810498],[-79.430664,69.787793]]],[[[-78.029102,69.714893],[-77.977832,69.664893],[-77.969141,69.638965],[-78.03999,69.608398],[-78.307227,69.551807],[-78.470068,69.502539],[-78.552393,69.491553],[-78.662061,69.502637],[-78.795312,69.479736],[-78.848193,69.482812],[-78.789307,69.523145],[-78.578564,69.638818],[-78.401855,69.650635],[-78.344189,69.674805],[-78.295508,69.667139],[-78.267334,69.687158],[-78.262451,69.716846],[-78.200732,69.739502],[-78.145215,69.739209],[-78.029102,69.714893]]],[[[-77.64209,63.991895],[-77.714062,63.945703],[-77.928809,63.962012],[-77.95791,63.976025],[-77.965967,63.99292],[-77.931348,64.014795],[-77.710791,64.035645],[-77.617285,64.037207],[-77.569385,64.03042],[-77.563623,64.02207],[-77.64209,63.991895]]],[[[-83.123486,66.282813],[-83.023877,66.270654],[-82.948145,66.271924],[-82.931348,66.257324],[-83.01084,66.208447],[-83.059863,66.199268],[-83.1479,66.234229],[-83.213916,66.277051],[-83.232568,66.302979],[-83.237842,66.331543],[-83.222266,66.336475],[-83.123486,66.282813]]],[[[-79.210645,68.845459],[-79.279736,68.838721],[-79.361377,68.857666],[-79.390479,68.890186],[-79.405762,68.923047],[-79.391162,68.939941],[-79.354736,68.955908],[-79.305225,68.992334],[-79.242676,69.049268],[-79.144971,69.087451],[-78.930469,69.1229],[-78.9,69.1354],[-78.804102,69.235107],[-78.771826,69.252197],[-78.662012,69.262354],[-78.650195,69.275195],[-78.689062,69.299756],[-78.689062,69.325098],[-78.650195,69.351221],[-78.59668,69.370605],[-78.45791,69.389502],[-78.332568,69.386035],[-78.300488,69.378711],[-78.272461,69.36123],[-78.234082,69.3146],[-78.228955,69.304004],[-78.287012,69.262695],[-78.438965,69.19917],[-78.53291,69.146045],[-78.551758,69.128662],[-78.560303,69.10625],[-78.595654,69.079053],[-78.705371,69.013672],[-78.779199,68.950488],[-78.852686,68.915674],[-79.053613,68.88291],[-79.210645,68.845459]]],[[[-76.995361,69.14375],[-77.121631,69.132129],[-77.215039,69.138086],[-77.275586,69.16167],[-77.321924,69.193604],[-77.379395,69.274023],[-77.358057,69.311523],[-77.351514,69.378662],[-77.340918,69.403857],[-77.318701,69.416309],[-77.187549,69.440088],[-77.10918,69.437402],[-76.994092,69.411768],[-76.745703,69.404004],[-76.684082,69.38042],[-76.668848,69.366162],[-76.67002,69.348584],[-76.687451,69.327686],[-76.810303,69.266748],[-76.869336,69.224854],[-76.91123,69.174658],[-76.995361,69.14375]]],[[[-86.913037,70.113232],[-86.798779,70.105273],[-86.691211,70.115039],[-86.612744,70.105713],[-86.563379,70.077246],[-86.530908,70.047656],[-86.515234,70.017041],[-86.557666,69.995312],[-86.734326,69.976318],[-86.854932,69.985742],[-86.983984,70.011133],[-87.043799,69.999854],[-87.19082,70.018555],[-87.263916,70.043945],[-87.323242,70.080127],[-87.323145,70.102246],[-87.168115,70.127246],[-87.107275,70.14668],[-86.913037,70.113232]]],[[[-83.725977,65.796729],[-83.59751,65.757471],[-83.469434,65.735205],[-83.263184,65.723291],[-83.23374,65.715039],[-83.233936,65.696582],[-83.263672,65.667822],[-83.332422,65.631055],[-83.381445,65.62998],[-83.49541,65.655957],[-83.537109,65.669189],[-83.583203,65.698633],[-83.606543,65.701367],[-83.636377,65.691504],[-83.644385,65.678516],[-83.630664,65.662354],[-83.649512,65.657764],[-83.787549,65.668896],[-83.809229,65.67832],[-83.798193,65.71001],[-83.701904,65.756201],[-83.786523,65.77041],[-83.813574,65.7875],[-83.938965,65.758447],[-84.008496,65.751514],[-84.118262,65.771777],[-84.129932,65.877441],[-84.143213,65.915967],[-84.193213,65.942139],[-84.222949,65.969775],[-84.270898,65.990625],[-84.370117,66.011816],[-84.450586,66.064404],[-84.467383,66.088281],[-84.456348,66.10625],[-84.407178,66.131006],[-84.122266,66.077832],[-83.950391,66.02749],[-83.786963,65.965771],[-83.701367,65.920117],[-83.693652,65.890381],[-83.714893,65.860742],[-83.765137,65.831152],[-83.725977,65.796729]]],[[[-86.595557,67.735938],[-86.638184,67.734863],[-86.705957,67.750146],[-86.861084,67.810498],[-86.892529,67.836572],[-86.908301,67.867041],[-86.908447,67.901953],[-86.89458,67.938086],[-86.84707,68.010254],[-86.937744,68.067578],[-86.959814,68.100244],[-86.94917,68.118701],[-86.898682,68.162891],[-86.884863,68.190527],[-86.833984,68.229687],[-86.7021,68.305615],[-86.569922,68.287695],[-86.451953,68.225488],[-86.421143,68.183447],[-86.430322,68.138721],[-86.42002,68.073926],[-86.390332,67.988916],[-86.382422,67.927295],[-86.396436,67.888965],[-86.446924,67.816992],[-86.489648,67.783594],[-86.546045,67.752197],[-86.595557,67.735938]]],[[[-84.674756,65.575],[-84.727002,65.563721],[-84.78291,65.570068],[-84.830273,65.598975],[-84.868945,65.650537],[-84.931152,65.68916],[-85.071973,65.737354],[-85.096338,65.756201],[-85.136279,65.82085],[-85.144043,65.885352],[-85.17417,65.94375],[-85.175684,65.972412],[-85.149609,66.015381],[-85.031396,66.025488],[-84.938574,66.008545],[-84.919824,65.997021],[-84.889453,65.97207],[-84.869531,65.941504],[-84.757373,65.858936],[-84.691748,65.793164],[-84.602637,65.657373],[-84.602246,65.631494],[-84.62627,65.604053],[-84.674756,65.575]]],[[[-93.043945,61.844092],[-93.084814,61.841699],[-93.176562,61.892725],[-93.19668,61.918555],[-93.075781,61.93501],[-92.993018,61.889697],[-92.999951,61.86748],[-93.043945,61.844092]]],[[[-101.226123,76.579346],[-101.485205,76.575],[-101.60498,76.587012],[-101.613086,76.60459],[-101.509473,76.627734],[-101.165039,76.66543],[-100.962158,76.73418],[-100.886475,76.742676],[-100.621582,76.75249],[-100.467236,76.750342],[-100.269141,76.734131],[-100.746582,76.64917],[-101.226123,76.579346]]],[[[-103.003369,78.146436],[-103.118213,78.126367],[-103.252246,78.138135],[-103.270996,78.150635],[-103.273584,78.165771],[-103.260059,78.183496],[-103.110449,78.24585],[-102.973291,78.267236],[-102.891797,78.27124],[-102.825537,78.250049],[-102.788281,78.218164],[-103.003369,78.146436]]],[[[-101.693555,77.696582],[-101.831055,77.687354],[-102.079834,77.692188],[-102.377832,77.728125],[-102.458203,77.770166],[-102.475049,77.83667],[-102.471533,77.873486],[-102.447705,77.880615],[-102.263184,77.889355],[-101.917871,77.899609],[-101.639404,77.89209],[-101.322021,77.85415],[-101.193213,77.829785],[-101.127588,77.812598],[-101.04624,77.777832],[-101.01958,77.762451],[-101.002051,77.735107],[-101.397656,77.729053],[-101.58457,77.718311],[-101.693555,77.696582]]],[[[-89.726465,76.507422],[-89.773291,76.493848],[-89.924121,76.500879],[-89.974121,76.487549],[-90.054297,76.495117],[-90.164551,76.523584],[-90.293506,76.579492],[-90.440967,76.662793],[-90.55625,76.73457],[-90.5625,76.754297],[-90.524805,76.787842],[-90.409521,76.810156],[-90.136328,76.836963],[-89.948779,76.83623],[-89.774561,76.782031],[-89.725293,76.763428],[-89.69541,76.741162],[-89.694434,76.719824],[-89.708643,76.701172],[-89.787549,76.659619],[-89.822119,76.630615],[-89.821924,76.602197],[-89.804785,76.561084],[-89.772949,76.533936],[-89.726367,76.520801],[-89.726465,76.507422]]],[[[-96.078564,75.510107],[-96.156396,75.477246],[-96.236621,75.474805],[-96.344482,75.505957],[-96.461621,75.494238],[-96.621973,75.431299],[-96.679004,75.394189],[-96.722852,75.380762],[-96.857129,75.369141],[-96.915137,75.379688],[-96.969629,75.412646],[-97.020654,75.468066],[-96.982812,75.509814],[-96.856152,75.537939],[-96.5229,75.583643],[-96.427686,75.606348],[-96.417236,75.630713],[-96.397266,75.646826],[-96.367822,75.654639],[-96.14541,75.613525],[-96.039844,75.585791],[-95.959863,75.554346],[-95.968604,75.541846],[-96.078564,75.510107]]],[[[-95.306641,74.50542],[-95.352441,74.500391],[-95.441504,74.506104],[-95.777197,74.550732],[-95.834375,74.569043],[-95.850732,74.582471],[-95.774414,74.598682],[-95.745605,74.615967],[-95.660449,74.636914],[-95.510205,74.636768],[-95.352539,74.585693],[-95.278369,74.539551],[-95.274463,74.519189],[-95.306641,74.50542]]],[[[-121.076221,75.745264],[-121.154297,75.740625],[-121.240918,75.751855],[-121.221094,75.77749],[-121.026318,75.84751],[-121.01543,75.867529],[-121.018066,75.883838],[-121.042285,75.902979],[-120.993018,75.927441],[-120.913965,75.9375],[-120.887793,75.927979],[-120.878711,75.906689],[-120.896875,75.844531],[-120.92124,75.814453],[-120.954932,75.78877],[-121.006641,75.765723],[-121.076221,75.745264]]],[[[-113.560693,76.743262],[-113.712451,76.710547],[-114.751465,76.758887],[-114.808301,76.774072],[-114.835254,76.794678],[-114.64707,76.851025],[-114.419873,76.875342],[-113.89165,76.894873],[-113.70752,76.872949],[-113.5854,76.847314],[-113.516504,76.825049],[-113.487598,76.783252],[-113.560693,76.743262]]],[[[-104.119922,75.036328],[-104.308691,75.030957],[-104.634326,75.061279],[-104.828125,75.119727],[-104.887402,75.147754],[-104.881641,75.160498],[-104.848096,75.173047],[-104.801318,75.211035],[-104.690381,75.320703],[-104.648828,75.349756],[-104.47417,75.413037],[-104.346191,75.429932],[-104.074658,75.424512],[-103.916992,75.391846],[-103.851172,75.370801],[-103.804102,75.345508],[-103.75791,75.289062],[-103.746484,75.252441],[-103.667236,75.210693],[-103.643506,75.186572],[-103.642139,75.162939],[-103.664258,75.139062],[-103.709717,75.11499],[-103.813916,75.079736],[-104.119922,75.036328]]],[[[-100.217236,68.806689],[-100.248779,68.775049],[-100.287939,68.766064],[-100.365723,68.728809],[-100.397314,68.723828],[-100.442578,68.747559],[-100.480664,68.786182],[-100.496924,68.792236],[-100.521045,68.790674],[-100.573389,68.766064],[-100.596533,68.766406],[-100.615967,68.78291],[-100.625391,68.815918],[-100.624658,68.865283],[-100.599902,68.941357],[-100.59834,68.969092],[-100.611572,68.990186],[-100.600635,69.009424],[-100.565479,69.026807],[-100.520312,69.035059],[-100.413965,69.028076],[-100.329932,68.997559],[-100.288965,68.957666],[-100.206885,68.926172],[-100.178467,68.903906],[-100.217236,68.806689]]],[[[-99.994678,69.013525],[-100.018018,68.954004],[-100.141309,68.969922],[-100.195703,68.991455],[-100.241992,69.040381],[-100.247363,69.052783],[-100.237061,69.071484],[-100.186963,69.114014],[-100.153125,69.129492],[-100.072803,69.111475],[-100.035352,69.086572],[-100.005615,69.047119],[-99.994678,69.013525]]],[[[-100.30835,70.495801],[-100.32124,70.487695],[-100.537256,70.525],[-100.620654,70.546924],[-100.647754,70.563135],[-100.666943,70.59624],[-100.67832,70.646191],[-100.635303,70.670312],[-100.537939,70.668604],[-100.433936,70.649414],[-100.276123,70.594629],[-100.321094,70.578369],[-100.323242,70.542432],[-100.305518,70.508398],[-100.30835,70.495801]]],[[[-95.513672,69.573633],[-95.380908,69.506592],[-95.38208,69.474072],[-95.399414,69.419775],[-95.437451,69.378467],[-95.49624,69.350098],[-95.578516,69.33584],[-95.684375,69.335693],[-95.730127,69.347559],[-95.695898,69.389551],[-95.670166,69.402002],[-95.66582,69.438965],[-95.682812,69.500293],[-95.704102,69.538037],[-95.763623,69.559619],[-95.806201,69.560498],[-95.817773,69.540576],[-95.79834,69.499805],[-95.811816,69.447021],[-95.858203,69.382227],[-95.893457,69.351758],[-95.956055,69.367139],[-95.985937,69.391895],[-95.97793,69.432715],[-95.994775,69.469678],[-95.978857,69.508838],[-95.93623,69.567041],[-95.87583,69.606006],[-95.797754,69.625732],[-95.706641,69.624316],[-95.60249,69.601807],[-95.513672,69.573633]]],[[[-101.171729,69.39707],[-101.253516,69.388477],[-101.268506,69.390576],[-101.261523,69.417822],[-101.267627,69.431494],[-101.289502,69.44126],[-101.217773,69.462939],[-101.207324,69.479834],[-101.230127,69.492822],[-101.328467,69.517432],[-101.356494,69.539697],[-101.351318,69.559229],[-101.312891,69.576074],[-101.244873,69.573535],[-101.09834,69.540771],[-101.031152,69.495459],[-101.000635,69.461914],[-101.04917,69.456934],[-101.086865,69.443359],[-101.126953,69.414697],[-101.171729,69.39707]]],[[[-101.845898,68.586328],[-101.887207,68.584961],[-101.944629,68.602832],[-102.266357,68.663672],[-102.308154,68.681982],[-102.270508,68.707568],[-102.15332,68.740479],[-102.074365,68.774023],[-102.013379,68.825391],[-101.828369,68.798975],[-101.759326,68.774609],[-101.732959,68.753418],[-101.721631,68.724121],[-101.732031,68.652148],[-101.794287,68.636865],[-101.845898,68.586328]]],[[[-104.540674,68.405908],[-104.595996,68.402197],[-104.699463,68.418262],[-104.851123,68.453955],[-104.965234,68.491748],[-105.041748,68.531543],[-105.051367,68.559033],[-104.993994,68.574219],[-104.907275,68.581787],[-104.700391,68.576709],[-104.602002,68.561523],[-104.472119,68.503516],[-104.444531,68.470703],[-104.440479,68.449512],[-104.457129,68.431152],[-104.540674,68.405908]]],[[[-107.899854,67.401807],[-107.950244,67.318213],[-107.969531,67.326025],[-108.003955,67.365918],[-108.07334,67.385059],[-108.152246,67.429443],[-108.151123,67.524805],[-108.12085,67.568164],[-108.127539,67.628564],[-108.048975,67.664893],[-107.990869,67.622119],[-107.974902,67.549365],[-107.989355,67.513574],[-107.931787,67.476465],[-107.905176,67.467041],[-107.890967,67.437207],[-107.899854,67.401807]]],[[[-109.166406,67.982373],[-109.053906,67.971875],[-108.970508,67.979736],[-108.909619,67.939404],[-108.886035,67.898535],[-108.893848,67.884473],[-108.920166,67.878809],[-109.09624,67.924023],[-109.161523,67.951709],[-109.183594,67.975],[-109.166406,67.982373]]],[[[-108.092725,67.005176],[-107.966455,66.997266],[-107.805518,66.998584],[-107.83335,66.921338],[-107.895166,66.871875],[-107.943945,66.857812],[-107.965137,66.884863],[-108.059717,66.946875],[-108.092725,67.005176]]],[[[-109.323145,67.990869],[-109.36084,67.987598],[-109.497949,68.047021],[-109.469141,68.097998],[-109.341699,68.04585],[-109.323535,68.01333],[-109.323145,67.990869]]],[[[-139.043115,69.576904],[-139.125732,69.539307],[-139.256982,69.578564],[-139.291406,69.597852],[-139.1396,69.649609],[-139.072656,69.647656],[-138.931543,69.616943],[-138.878857,69.589697],[-139.043115,69.576904]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Cameroon","SOV_A3":"CMR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Cameroon","ADM0_A3":"CMR","GEOU_DIF":0,"GEOUNIT":"Cameroon","GU_A3":"CMR","SU_DIF":0,"SUBUNIT":"Cameroon","SU_A3":"CMR","BRK_DIFF":0,"NAME":"Cameroon","NAME_LONG":"Cameroon","BRK_A3":"CMR","BRK_NAME":"Cameroon","BRK_GROUP":null,"ABBREV":"Cam.","POSTAL":"CM","FORMAL_EN":"Republic of Cameroon","FORMAL_FR":null,"NAME_CIAWF":"Cameroon","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Cameroon","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":3,"POP_EST":25876380,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":39007,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"CM","ISO_A2":"CM","ISO_A2_EH":"CM","ISO_A3":"CMR","ISO_A3_EH":"CMR","ISO_N3":"120","ISO_N3_EH":"120","UN_A3":"120","WB_A2":"CM","WB_A3":"CMR","WOE_ID":23424785,"WOE_ID_EH":23424785,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"CMR","ADM0_DIFF":null,"ADM0_TLC":"CMR","ADM0_A3_US":"CMR","ADM0_A3_FR":"CMR","ADM0_A3_RU":"CMR","ADM0_A3_ES":"CMR","ADM0_A3_CN":"CMR","ADM0_A3_TW":"CMR","ADM0_A3_IN":"CMR","ADM0_A3_NP":"CMR","ADM0_A3_PK":"CMR","ADM0_A3_DE":"CMR","ADM0_A3_GB":"CMR","ADM0_A3_BR":"CMR","ADM0_A3_IL":"CMR","ADM0_A3_PS":"CMR","ADM0_A3_SA":"CMR","ADM0_A3_EG":"CMR","ADM0_A3_MA":"CMR","ADM0_A3_PT":"CMR","ADM0_A3_AR":"CMR","ADM0_A3_JP":"CMR","ADM0_A3_KO":"CMR","ADM0_A3_VN":"CMR","ADM0_A3_TR":"CMR","ADM0_A3_ID":"CMR","ADM0_A3_PL":"CMR","ADM0_A3_GR":"CMR","ADM0_A3_IT":"CMR","ADM0_A3_NL":"CMR","ADM0_A3_SE":"CMR","ADM0_A3_BD":"CMR","ADM0_A3_UA":"CMR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":12.473488,"LABEL_Y":4.585041,"NE_ID":1159320509,"WIKIDATAID":"Q1009","NAME_AR":"الكاميرون","NAME_BN":"ক্যামেরুন","NAME_DE":"Kamerun","NAME_EN":"Cameroon","NAME_ES":"Camerún","NAME_FA":"کامرون","NAME_FR":"Cameroun","NAME_EL":"Καμερούν","NAME_HE":"קמרון","NAME_HI":"कैमरुन","NAME_HU":"Kamerun","NAME_ID":"Kamerun","NAME_IT":"Camerun","NAME_JA":"カメルーン","NAME_KO":"카메룬","NAME_NL":"Kameroen","NAME_PL":"Kamerun","NAME_PT":"Camarões","NAME_RU":"Камерун","NAME_SV":"Kamerun","NAME_TR":"Kamerun","NAME_UK":"Камерун","NAME_UR":"کیمرون","NAME_VI":"Cameroon","NAME_ZH":"喀麦隆","NAME_ZHT":"喀麥隆","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[8.532813,1.676221,16.183398,13.078516],"geometry":{"type":"Polygon","coordinates":[[[8.555859,4.755225],[8.585156,4.832812],[8.640527,4.927002],[8.715625,5.046875],[8.800977,5.197461],[8.85918,5.46377],[8.898828,5.629687],[8.935059,5.781006],[8.997168,5.917725],[9.060156,6.009082],[9.23877,6.186133],[9.37334,6.319629],[9.442188,6.373389],[9.490234,6.418652],[9.574023,6.47041],[9.659961,6.531982],[9.725586,6.65],[9.779883,6.760156],[9.820703,6.783936],[9.874219,6.803271],[10.038867,6.921387],[10.143555,6.996436],[10.167773,6.95918],[10.185547,6.912793],[10.205469,6.891602],[10.293066,6.876758],[10.413184,6.877734],[10.482324,6.89126],[10.519043,6.930469],[10.556348,7.037451],[10.578125,7.057715],[10.60625,7.063086],[10.737598,6.988281],[10.846484,6.881787],[10.954199,6.776562],[11.008691,6.739111],[11.03252,6.6979],[11.079688,6.505518],[11.106445,6.457715],[11.15332,6.437939],[11.237305,6.450537],[11.324609,6.484668],[11.401758,6.533936],[11.477539,6.597412],[11.529102,6.655029],[11.55166,6.697266],[11.562988,6.854639],[11.580078,6.888867],[11.65752,6.951562],[11.787012,7.056201],[11.861426,7.116406],[11.854785,7.137988],[11.808594,7.201953],[11.767383,7.272266],[11.80918,7.345068],[11.852441,7.400732],[12.016016,7.589746],[12.016602,7.652002],[12.025195,7.727783],[12.155957,7.94248],[12.231152,8.227393],[12.233398,8.282324],[12.311328,8.419727],[12.403516,8.595557],[12.582715,8.624121],[12.651563,8.667773],[12.731152,8.745654],[12.782227,8.817871],[12.806543,8.886621],[12.824414,9.019434],[12.855957,9.170752],[12.875684,9.303516],[12.929492,9.42627],[13.019434,9.48833],[13.175488,9.539648],[13.19873,9.56377],[13.221191,9.645166],[13.23877,9.814014],[13.24375,9.915918],[13.249805,9.960059],[13.269922,10.036182],[13.414551,10.171436],[13.478516,10.383252],[13.535352,10.605078],[13.699902,10.873145],[13.89209,11.140088],[13.981445,11.211865],[14.056738,11.24502],[14.143262,11.248535],[14.202344,11.268164],[14.409473,11.401172],[14.496094,11.446143],[14.559766,11.492285],[14.575391,11.532422],[14.581641,11.591162],[14.561816,11.728711],[14.597363,11.829834],[14.618164,11.986621],[14.627148,12.108691],[14.619727,12.150977],[14.587012,12.209424],[14.580957,12.22207],[14.518945,12.298242],[14.41543,12.344141],[14.272852,12.356494],[14.197461,12.383789],[14.184863,12.447217],[14.177637,12.484082],[14.170313,12.524072],[14.160059,12.612793],[14.063965,13.078516],[14.244824,13.077344],[14.461719,13.021777],[14.516211,12.979736],[14.544727,12.820215],[14.623242,12.729932],[14.76123,12.655615],[14.84707,12.5021],[14.880664,12.269385],[14.956738,12.130371],[14.973828,12.10835],[15.059863,11.907129],[15.08125,11.845508],[15.087695,11.724365],[15.078027,11.642578],[15.121973,11.54126],[15.055469,11.368555],[15.035742,11.2625],[15.029883,11.113672],[15.068652,10.851074],[15.132227,10.648486],[15.200977,10.484521],[15.276074,10.357373],[15.399902,10.216895],[15.531934,10.088477],[15.654883,10.007812],[15.540918,9.960303],[15.32002,9.954297],[15.193164,9.981494],[15.132715,9.982861],[15.071582,9.965967],[14.83584,9.941699],[14.597949,9.953076],[14.377246,9.985059],[14.243262,9.979736],[14.139746,9.901807],[14.055957,9.784375],[13.977246,9.691553],[14.00498,9.588721],[14.06416,9.531738],[14.17793,9.406494],[14.280078,9.285059],[14.332324,9.203516],[14.536133,9.025244],[14.732813,8.865674],[14.771289,8.83916],[14.82627,8.810303],[14.860742,8.798633],[14.967969,8.707275],[15.116211,8.557324],[15.252344,8.322363],[15.349023,8.083838],[15.442969,7.851855],[15.484473,7.812744],[15.549805,7.787891],[15.557813,7.738037],[15.552637,7.664502],[15.532422,7.604395],[15.480078,7.523779],[15.379102,7.358154],[15.245898,7.263574],[15.206738,7.206152],[15.18584,7.134912],[15.157129,7.063574],[15.086328,6.909912],[15.03457,6.784424],[14.982715,6.745312],[14.861914,6.555713],[14.780371,6.365723],[14.764063,6.316357],[14.739258,6.279785],[14.699512,6.250244],[14.559375,6.191211],[14.512109,6.161914],[14.475,6.126807],[14.440723,6.086719],[14.431152,6.038721],[14.463867,5.970703],[14.503125,5.916895],[14.54248,5.913574],[14.577246,5.916016],[14.598828,5.883984],[14.616895,5.865137],[14.616895,5.495508],[14.583594,5.439648],[14.584375,5.414746],[14.568066,5.351074],[14.562988,5.279932],[14.573535,5.251709],[14.601758,5.228809],[14.640625,5.179053],[14.661719,5.065527],[14.708984,4.665576],[14.73125,4.602393],[14.77041,4.558105],[14.893555,4.471875],[15.022754,4.358545],[15.063574,4.284863],[15.0875,4.163965],[15.136914,4.069141],[15.13584,4.036914],[15.11543,4.024463],[15.067383,4.022949],[15.034863,4.016357],[15.062109,3.947217],[15.128711,3.826904],[15.239844,3.702148],[15.360156,3.567139],[15.458398,3.456836],[15.580859,3.329297],[15.676563,3.229687],[15.775,3.127197],[15.849316,3.103076],[15.904883,3.09585],[15.928711,3.075781],[15.958008,3.028711],[16.008203,2.97666],[16.063477,2.908594],[16.082422,2.839111],[16.059277,2.772998],[16.082129,2.678174],[16.083496,2.67002],[16.101855,2.632666],[16.095508,2.599219],[16.106738,2.473486],[16.136133,2.36377],[16.183398,2.270068],[16.182617,2.262451],[16.176563,2.204785],[16.115723,2.167822],[16.080078,2.106787],[16.069629,2.02168],[16.087891,1.918066],[16.134961,1.795947],[16.136133,1.724219],[16.119531,1.714111],[16.090332,1.69126],[16.059375,1.676221],[15.975195,1.76001],[15.881641,1.816602],[15.741602,1.91499],[15.600293,1.950391],[15.41748,1.956738],[15.33877,1.944727],[15.282422,1.981738],[15.203516,2.024463],[15.160059,2.035596],[15.099609,2.002344],[15.057813,2.000879],[15.006445,2.01377],[14.902441,2.012305],[14.892773,2.069336],[14.875,2.080469],[14.762891,2.075195],[14.72832,2.122412],[14.713281,2.117139],[14.669141,2.13208],[14.578906,2.199121],[14.484082,2.154736],[14.287012,2.160352],[14.034375,2.158887],[13.772754,2.157422],[13.533496,2.159521],[13.293555,2.161572],[13.269922,2.224219],[13.220313,2.256445],[13.130859,2.259424],[12.86748,2.246777],[12.665723,2.256787],[12.601367,2.265039],[12.529785,2.281348],[12.361328,2.295996],[12.153418,2.284375],[12.106152,2.2875],[11.939746,2.285156],[11.558984,2.302197],[11.348438,2.299707],[11.35332,2.261426],[11.339941,2.233838],[11.328711,2.167432],[11.096582,2.16748],[10.790918,2.167578],[10.502246,2.167627],[10.307031,2.167725],[9.979883,2.167773],[9.870117,2.213281],[9.836914,2.242383],[9.830371,2.275488],[9.826172,2.297803],[9.800781,2.304443],[9.821777,2.539258],[9.867578,2.734961],[9.885449,2.916553],[9.948438,3.079053],[9.915039,3.239648],[9.876172,3.309766],[9.67207,3.537598],[9.765723,3.623828],[9.642383,3.611768],[9.615918,3.696484],[9.556152,3.798047],[9.592773,3.814307],[9.628125,3.87002],[9.739648,3.85293],[9.736133,3.880127],[9.639941,3.965332],[9.649219,4.00835],[9.688867,4.056396],[9.669531,4.07666],[9.600391,4.026904],[9.550586,4.028418],[9.511816,4.060645],[9.483691,4.066113],[9.500781,4.000732],[9.462012,3.942529],[9.425293,3.922314],[9.362305,3.925732],[9.310938,3.940381],[9.297363,3.972949],[9.249121,3.997852],[9.113867,4.041064],[9.000098,4.091602],[8.977051,4.23042],[8.932031,4.290234],[8.913574,4.357812],[8.902832,4.435156],[8.918262,4.55376],[8.889453,4.572754],[8.856445,4.579248],[8.807129,4.573437],[8.761914,4.580029],[8.70791,4.645703],[8.660352,4.670996],[8.689648,4.550244],[8.65625,4.516357],[8.574414,4.526221],[8.539551,4.571875],[8.532813,4.605859],[8.570508,4.7521],[8.555859,4.755225]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Cambodia","SOV_A3":"KHM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Cambodia","ADM0_A3":"KHM","GEOU_DIF":0,"GEOUNIT":"Cambodia","GU_A3":"KHM","SU_DIF":0,"SUBUNIT":"Cambodia","SU_A3":"KHM","BRK_DIFF":0,"NAME":"Cambodia","NAME_LONG":"Cambodia","BRK_A3":"KHM","BRK_NAME":"Cambodia","BRK_GROUP":null,"ABBREV":"Camb.","POSTAL":"KH","FORMAL_EN":"Kingdom of Cambodia","FORMAL_FR":null,"NAME_CIAWF":"Cambodia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Cambodia","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":3,"MAPCOLOR9":6,"MAPCOLOR13":5,"POP_EST":16486542,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":27089,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"CB","ISO_A2":"KH","ISO_A2_EH":"KH","ISO_A3":"KHM","ISO_A3_EH":"KHM","ISO_N3":"116","ISO_N3_EH":"116","UN_A3":"116","WB_A2":"KH","WB_A3":"KHM","WOE_ID":23424776,"WOE_ID_EH":23424776,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"KHM","ADM0_DIFF":null,"ADM0_TLC":"KHM","ADM0_A3_US":"KHM","ADM0_A3_FR":"KHM","ADM0_A3_RU":"KHM","ADM0_A3_ES":"KHM","ADM0_A3_CN":"KHM","ADM0_A3_TW":"KHM","ADM0_A3_IN":"KHM","ADM0_A3_NP":"KHM","ADM0_A3_PK":"KHM","ADM0_A3_DE":"KHM","ADM0_A3_GB":"KHM","ADM0_A3_BR":"KHM","ADM0_A3_IL":"KHM","ADM0_A3_PS":"KHM","ADM0_A3_SA":"KHM","ADM0_A3_EG":"KHM","ADM0_A3_MA":"KHM","ADM0_A3_PT":"KHM","ADM0_A3_AR":"KHM","ADM0_A3_JP":"KHM","ADM0_A3_KO":"KHM","ADM0_A3_VN":"KHM","ADM0_A3_TR":"KHM","ADM0_A3_ID":"KHM","ADM0_A3_PL":"KHM","ADM0_A3_GR":"KHM","ADM0_A3_IT":"KHM","ADM0_A3_NL":"KHM","ADM0_A3_SE":"KHM","ADM0_A3_BD":"KHM","ADM0_A3_UA":"KHM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":104.50487,"LABEL_Y":12.647584,"NE_ID":1159320979,"WIKIDATAID":"Q424","NAME_AR":"كمبوديا","NAME_BN":"কম্বোডিয়া","NAME_DE":"Kambodscha","NAME_EN":"Cambodia","NAME_ES":"Camboya","NAME_FA":"کامبوج","NAME_FR":"Cambodge","NAME_EL":"Καμπότζη","NAME_HE":"קמבודיה","NAME_HI":"कम्बोडिया","NAME_HU":"Kambodzsa","NAME_ID":"Kamboja","NAME_IT":"Cambogia","NAME_JA":"カンボジア","NAME_KO":"캄보디아","NAME_NL":"Cambodja","NAME_PL":"Kambodża","NAME_PT":"Camboja","NAME_RU":"Камбоджа","NAME_SV":"Kambodja","NAME_TR":"Kamboçya","NAME_UK":"Камбоджа","NAME_UR":"کمبوڈیا","NAME_VI":"Campuchia","NAME_ZH":"柬埔寨","NAME_ZHT":"柬埔寨","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[102.319727,10.41123,107.605469,14.705078],"geometry":{"type":"MultiPolygon","coordinates":[[[[103.045117,11.285059],[103.027344,11.275488],[103.010547,11.275781],[102.993359,11.29043],[102.99502,11.348096],[103.00752,11.383301],[103.036816,11.389941],[103.045117,11.285059]]],[[[103.317773,10.718506],[103.28125,10.679688],[103.222949,10.75957],[103.223437,10.781982],[103.317773,10.718506]]],[[[107.519434,14.705078],[107.535254,14.649951],[107.493164,14.545752],[107.448438,14.451221],[107.364453,14.368701],[107.360352,14.307861],[107.331445,14.126611],[107.342578,14.068896],[107.362109,14.019482],[107.389453,13.993018],[107.462305,13.815625],[107.528613,13.654199],[107.593945,13.52168],[107.605469,13.437793],[107.545508,13.225439],[107.475391,13.030371],[107.481543,12.933105],[107.511523,12.835742],[107.543555,12.705908],[107.555469,12.53999],[107.538086,12.431787],[107.506445,12.364551],[107.445996,12.295703],[107.393359,12.260498],[107.330078,12.319043],[107.279688,12.321582],[107.212109,12.304004],[107.158984,12.277051],[107.050684,12.175879],[106.930664,12.07749],[106.764648,12.052344],[106.700098,11.979297],[106.630957,11.969189],[106.499609,11.965527],[106.413867,11.948437],[106.417773,11.911719],[106.410742,11.738379],[106.4125,11.697803],[106.399219,11.687012],[106.339844,11.681836],[106.23916,11.70835],[106.10293,11.75127],[106.006055,11.758008],[105.95625,11.682471],[105.926562,11.65293],[105.889844,11.648389],[105.851465,11.63501],[105.838477,11.601318],[105.835352,11.559131],[105.854004,11.487061],[105.860938,11.372412],[105.856055,11.294287],[105.891602,11.244824],[106.099512,11.078662],[106.160937,11.037109],[106.167969,11.012305],[106.131543,10.921973],[106.163965,10.794922],[106.098828,10.797266],[105.990137,10.851807],[105.938184,10.885156],[105.875195,10.858496],[105.85332,10.863574],[105.810742,10.926074],[105.755078,10.98999],[105.697754,10.994043],[105.576563,10.968896],[105.452734,10.951416],[105.405762,10.951611],[105.386523,10.940088],[105.314648,10.845166],[105.284277,10.861475],[105.159473,10.897559],[105.045703,10.911377],[105.022266,10.886865],[105.036133,10.809375],[105.061133,10.733789],[105.046387,10.70166],[104.983887,10.661914],[104.90127,10.590234],[104.850586,10.534473],[104.81543,10.520801],[104.689648,10.523242],[104.564258,10.515967],[104.514063,10.46333],[104.466992,10.422363],[104.426367,10.41123],[104.262402,10.54126],[103.937109,10.586621],[103.901758,10.643945],[103.870508,10.655127],[103.840527,10.580566],[103.661914,10.508936],[103.587109,10.552197],[103.532227,10.604639],[103.54043,10.668701],[103.59209,10.721045],[103.680859,10.758594],[103.721875,10.890137],[103.654297,11.058691],[103.59502,11.107764],[103.532422,11.14668],[103.466699,11.083984],[103.411328,10.976758],[103.353613,10.921582],[103.272168,10.909277],[103.152832,10.913721],[103.106445,11.073779],[103.091113,11.211084],[103.107422,11.367773],[103.125488,11.460645],[103.010547,11.588672],[103.004199,11.710596],[102.948633,11.773486],[102.932324,11.741699],[102.933887,11.706689],[102.918066,11.73208],[102.736621,12.089795],[102.70625,12.255664],[102.737402,12.383398],[102.755664,12.42627],[102.70332,12.493506],[102.629687,12.569922],[102.499609,12.669971],[102.490723,12.82832],[102.461719,13.015039],[102.422656,13.077979],[102.362988,13.192969],[102.330762,13.288232],[102.319727,13.53999],[102.336328,13.560303],[102.428516,13.567578],[102.546875,13.585693],[102.565527,13.626367],[102.544727,13.659961],[102.62041,13.716943],[102.728906,13.841895],[102.812793,13.972461],[102.873242,14.054883],[102.909277,14.136719],[103.031055,14.252539],[103.199414,14.332617],[103.313477,14.351318],[103.432422,14.378613],[103.546387,14.417432],[103.600391,14.421094],[103.741895,14.37417],[103.818359,14.362158],[103.898633,14.362793],[103.981836,14.35791],[104.054297,14.362744],[104.227734,14.395508],[104.411621,14.36958],[104.575781,14.390039],[104.779004,14.427832],[104.878809,14.404004],[104.969727,14.366113],[104.982422,14.289453],[105.003418,14.254443],[105.033691,14.227393],[105.074121,14.227441],[105.125977,14.280957],[105.169141,14.336084],[105.183301,14.34624],[105.185547,14.319092],[105.207031,14.259375],[105.245703,14.200537],[105.284863,14.161475],[105.350195,14.10957],[105.392676,14.10708],[105.531543,14.156152],[105.739746,14.084961],[105.764063,14.049072],[105.831445,13.976611],[105.904492,13.924512],[106.066797,13.921191],[106.124707,14.049121],[106.09668,14.1271],[106.004102,14.262891],[105.978906,14.343018],[106.008398,14.357178],[106.165234,14.372363],[106.190723,14.388135],[106.225391,14.476221],[106.267969,14.466211],[106.35498,14.454785],[106.446973,14.515039],[106.501465,14.578223],[106.531152,14.549414],[106.563672,14.505078],[106.599219,14.479395],[106.66543,14.441309],[106.738184,14.387744],[106.783496,14.335107],[106.819922,14.314697],[106.913184,14.329395],[106.938086,14.327344],[106.992187,14.391016],[107.030176,14.425684],[107.062402,14.415771],[107.109375,14.416699],[107.206641,14.4979],[107.262305,14.572119],[107.292676,14.592383],[107.379883,14.555322],[107.414746,14.562891],[107.465137,14.66499],[107.519434,14.705078]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Myanmar","SOV_A3":"MMR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Myanmar","ADM0_A3":"MMR","GEOU_DIF":0,"GEOUNIT":"Myanmar","GU_A3":"MMR","SU_DIF":0,"SUBUNIT":"Myanmar","SU_A3":"MMR","BRK_DIFF":0,"NAME":"Myanmar","NAME_LONG":"Myanmar","BRK_A3":"MMR","BRK_NAME":"Myanmar","BRK_GROUP":null,"ABBREV":"Myan.","POSTAL":"MM","FORMAL_EN":"Republic of the Union of Myanmar","FORMAL_FR":null,"NAME_CIAWF":"Burma","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Myanmar","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":13,"POP_EST":54045420,"POP_RANK":16,"POP_YEAR":2019,"GDP_MD":76085,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"BM","ISO_A2":"MM","ISO_A2_EH":"MM","ISO_A3":"MMR","ISO_A3_EH":"MMR","ISO_N3":"104","ISO_N3_EH":"104","UN_A3":"104","WB_A2":"MM","WB_A3":"MMR","WOE_ID":23424763,"WOE_ID_EH":23424763,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"MMR","ADM0_DIFF":null,"ADM0_TLC":"MMR","ADM0_A3_US":"MMR","ADM0_A3_FR":"MMR","ADM0_A3_RU":"MMR","ADM0_A3_ES":"MMR","ADM0_A3_CN":"MMR","ADM0_A3_TW":"MMR","ADM0_A3_IN":"MMR","ADM0_A3_NP":"MMR","ADM0_A3_PK":"MMR","ADM0_A3_DE":"MMR","ADM0_A3_GB":"MMR","ADM0_A3_BR":"MMR","ADM0_A3_IL":"MMR","ADM0_A3_PS":"MMR","ADM0_A3_SA":"MMR","ADM0_A3_EG":"MMR","ADM0_A3_MA":"MMR","ADM0_A3_PT":"MMR","ADM0_A3_AR":"MMR","ADM0_A3_JP":"MMR","ADM0_A3_KO":"MMR","ADM0_A3_VN":"MMR","ADM0_A3_TR":"MMR","ADM0_A3_ID":"MMR","ADM0_A3_PL":"MMR","ADM0_A3_GR":"MMR","ADM0_A3_IT":"MMR","ADM0_A3_NL":"MMR","ADM0_A3_SE":"MMR","ADM0_A3_BD":"MMR","ADM0_A3_UA":"MMR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":95.804497,"LABEL_Y":21.573855,"NE_ID":1159321067,"WIKIDATAID":"Q836","NAME_AR":"ميانمار","NAME_BN":"মিয়ানমার","NAME_DE":"Myanmar","NAME_EN":"Myanmar","NAME_ES":"Birmania","NAME_FA":"میانمار","NAME_FR":"Birmanie","NAME_EL":"Μιανμάρ","NAME_HE":"מיאנמר","NAME_HI":"म्यान्मार","NAME_HU":"Mianmar","NAME_ID":"Myanmar","NAME_IT":"Birmania","NAME_JA":"ミャンマー","NAME_KO":"미얀마","NAME_NL":"Myanmar","NAME_PL":"Mjanma","NAME_PT":"Myanmar","NAME_RU":"Мьянма","NAME_SV":"Myanmar","NAME_TR":"Myanmar","NAME_UK":"М'янма","NAME_UR":"میانمار","NAME_VI":"Myanma","NAME_ZH":"缅甸","NAME_ZHT":"緬甸","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[92.17959,9.875391,101.147266,28.517041],"geometry":{"type":"MultiPolygon","coordinates":[[[[100.122461,20.31665],[100.003613,20.37959],[99.954297,20.41543],[99.890332,20.424414],[99.825195,20.384473],[99.77334,20.341309],[99.720117,20.325439],[99.638672,20.320459],[99.531641,20.342822],[99.458887,20.363037],[99.447949,20.352051],[99.4875,20.260645],[99.50166,20.187744],[99.485938,20.149854],[99.451563,20.118311],[99.399219,20.093457],[99.337891,20.078906],[99.283691,20.08042],[99.196875,20.115137],[99.130762,20.116602],[99.074219,20.099365],[99.039746,20.073633],[99.020703,20.041797],[98.987402,19.861377],[98.958008,19.804932],[98.916699,19.7729],[98.875781,19.76958],[98.819531,19.778467],[98.760645,19.771094],[98.493848,19.701318],[98.45498,19.694434],[98.371289,19.68916],[98.293652,19.687256],[98.239062,19.690674],[98.111035,19.762158],[98.049023,19.769727],[98.015039,19.749512],[97.991211,19.653711],[97.916406,19.592871],[97.816797,19.459961],[97.793555,19.265869],[97.803906,19.130469],[97.71416,18.996484],[97.706055,18.931787],[97.754004,18.620801],[97.745898,18.588184],[97.727734,18.572021],[97.671582,18.56123],[97.577344,18.528711],[97.515137,18.497754],[97.484961,18.494238],[97.39707,18.517529],[97.373926,18.517969],[97.380664,18.494287],[97.450781,18.359668],[97.523828,18.295898],[97.599316,18.302979],[97.632227,18.290332],[97.622461,18.258008],[97.651563,18.17373],[97.719727,18.037402],[97.739941,17.935303],[97.698535,17.833545],[97.706445,17.797119],[97.729102,17.77583],[97.792969,17.68125],[97.929297,17.533301],[98.063086,17.373291],[98.174609,17.239893],[98.256543,17.147656],[98.438867,16.975684],[98.471191,16.89502],[98.478125,16.732227],[98.523145,16.638184],[98.564746,16.570947],[98.593652,16.514795],[98.660742,16.33042],[98.689258,16.30542],[98.835449,16.417578],[98.869336,16.394189],[98.888281,16.351904],[98.888477,16.298096],[98.865527,16.237061],[98.817969,16.180811],[98.592383,16.050684],[98.574023,15.938623],[98.558203,15.768604],[98.554492,15.559766],[98.565234,15.403564],[98.556934,15.367676],[98.537305,15.350684],[98.452148,15.357373],[98.329395,15.278564],[98.286133,15.271582],[98.232227,15.241357],[98.191016,15.204102],[98.17793,15.147412],[98.202148,14.975928],[98.245996,14.814746],[98.332129,14.696484],[98.400195,14.602979],[98.49502,14.4729],[98.57002,14.359912],[98.721191,14.235742],[98.933594,14.049854],[99.014648,13.947168],[99.08623,13.822754],[99.136816,13.716699],[99.156055,13.575781],[99.17168,13.496924],[99.176172,13.233057],[99.137109,13.172998],[99.107422,13.103516],[99.123926,13.030762],[99.173535,12.961328],[99.173535,12.881934],[99.219824,12.739746],[99.297363,12.652881],[99.371973,12.594238],[99.405078,12.5479],[99.394238,12.473633],[99.416309,12.394824],[99.432422,12.309033],[99.462891,12.190234],[99.522949,12.089648],[99.614746,11.781201],[99.6125,11.749658],[99.572852,11.687158],[99.515234,11.630664],[99.47793,11.6125],[99.442676,11.554395],[99.358789,11.389453],[99.190137,11.105273],[99.025391,10.919971],[98.887109,10.78833],[98.786914,10.708447],[98.757227,10.660937],[98.757227,10.623584],[98.775391,10.557031],[98.768359,10.430859],[98.746875,10.35083],[98.718457,10.266016],[98.702539,10.190381],[98.658008,10.179053],[98.562598,10.034961],[98.521289,10.107227],[98.496875,10.18252],[98.523047,10.353125],[98.464941,10.67583],[98.500977,10.718945],[98.535645,10.740674],[98.598828,10.864404],[98.675586,10.986914],[98.682617,11.133105],[98.744727,11.240381],[98.730078,11.32998],[98.733301,11.435254],[98.746387,11.521289],[98.741406,11.591699],[98.790723,11.665088],[98.875977,11.719727],[98.840234,11.739258],[98.804785,11.779248],[98.693652,11.718359],[98.636328,11.738379],[98.624902,11.801465],[98.639063,11.869141],[98.644922,11.910303],[98.689453,11.956738],[98.686328,12.047119],[98.663867,12.126709],[98.696289,12.225244],[98.630566,12.225488],[98.600293,12.245312],[98.619141,12.3],[98.678711,12.348486],[98.624414,12.440723],[98.664648,12.539941],[98.663184,12.662402],[98.635645,12.770508],[98.637109,12.848242],[98.595117,12.986035],[98.575977,13.161914],[98.487109,13.293066],[98.421289,13.483789],[98.24541,13.733496],[98.248438,13.840381],[98.238965,13.934473],[98.200391,13.980176],[98.149512,13.647607],[98.110645,13.712891],[98.098242,13.89834],[98.072656,13.986475],[98.100195,14.161523],[97.998438,14.335303],[97.976562,14.461475],[97.909766,14.652686],[97.929297,14.695557],[98.01875,14.652588],[97.936523,14.763916],[97.869141,14.738721],[97.812305,14.858936],[97.799805,15.184912],[97.74375,15.306787],[97.774219,15.430957],[97.710352,15.875537],[97.584277,16.01958],[97.609277,16.143848],[97.640625,16.253857],[97.633691,16.457666],[97.664648,16.520459],[97.725977,16.568555],[97.668457,16.551611],[97.619629,16.537207],[97.505078,16.525293],[97.375879,16.522949],[97.331055,16.671777],[97.26748,16.743115],[97.211719,16.892578],[97.17832,17.062012],[97.200195,17.09541],[97.100195,17.164551],[97.074512,17.206934],[96.970117,17.317334],[96.851465,17.401025],[96.877734,17.342187],[96.909766,17.304834],[96.850879,17.20293],[96.908594,17.030957],[96.858008,16.921191],[96.810645,16.778369],[96.76543,16.710352],[96.622461,16.563916],[96.506641,16.514355],[96.431152,16.504932],[96.364355,16.520508],[96.282227,16.595996],[96.262109,16.659131],[96.248926,16.765332],[96.220313,16.780566],[96.189063,16.768311],[96.237695,16.63125],[96.236719,16.567432],[96.324316,16.444434],[96.293066,16.410059],[96.135059,16.342529],[96.080957,16.353369],[96.042871,16.339941],[96.032129,16.284619],[96.012305,16.253711],[95.763281,16.169043],[95.711426,16.073389],[95.679492,15.976758],[95.555664,15.837842],[95.389551,15.722754],[95.348437,15.729297],[95.301465,15.756152],[95.307813,15.88042],[95.364746,15.985449],[95.346777,16.097607],[95.333008,16.033252],[95.225879,15.876807],[95.176953,15.825684],[95.07832,15.83916],[94.942578,15.818262],[94.891211,15.979102],[94.892188,16.038184],[94.882227,16.087939],[94.897852,16.14082],[94.893164,16.182812],[94.860156,16.102441],[94.847754,16.032861],[94.798145,15.971094],[94.661523,15.904395],[94.65625,15.98877],[94.651367,16.064844],[94.680762,16.133301],[94.676562,16.242041],[94.719922,16.39873],[94.716602,16.45249],[94.70332,16.511914],[94.679004,16.425586],[94.665234,16.336133],[94.637695,16.309082],[94.5875,16.288818],[94.495703,16.186133],[94.441602,16.094385],[94.299023,16.007617],[94.223828,16.016455],[94.214258,16.126611],[94.271289,16.517285],[94.327344,16.572168],[94.353418,16.639941],[94.4,16.868164],[94.452441,16.954492],[94.473145,17.135449],[94.494336,17.166553],[94.564453,17.308545],[94.588965,17.569336],[94.560059,17.698975],[94.494336,17.824609],[94.430762,18.20166],[94.26582,18.507227],[94.252148,18.60918],[94.170703,18.732422],[94.245703,18.741162],[94.091309,18.849219],[94.07002,18.893408],[94.038965,19.146191],[94.044922,19.287402],[94.022461,19.268799],[94.001563,19.181787],[93.941016,19.146094],[93.968066,18.995068],[93.961328,18.958398],[93.929199,18.899658],[93.800098,18.960596],[93.705469,19.026904],[93.598145,19.188477],[93.493066,19.369482],[93.530566,19.397559],[93.578613,19.401172],[93.728027,19.266504],[93.824902,19.238477],[93.886133,19.271924],[93.962012,19.329346],[93.998145,19.440869],[93.960742,19.481689],[93.887891,19.503906],[93.839551,19.534131],[93.769922,19.60957],[93.761035,19.648047],[93.739551,19.697266],[93.66875,19.731982],[93.611719,19.776074],[93.659863,19.85415],[93.707031,19.912158],[93.581836,19.90957],[93.439063,20.009424],[93.40957,20.03833],[93.362305,20.058301],[93.25,20.070117],[93.156641,20.040771],[93.199023,19.89834],[93.190625,19.851221],[93.129492,19.858008],[93.001953,20.074854],[93.040332,20.129785],[93.095508,20.181348],[93.068359,20.188672],[93.015137,20.185254],[93.066797,20.377637],[93.035352,20.406152],[93.01875,20.346045],[92.990723,20.287988],[92.882129,20.152148],[92.82832,20.177588],[92.791211,20.211426],[92.843555,20.282617],[92.87168,20.301758],[92.891113,20.340332],[92.850684,20.414844],[92.786914,20.469043],[92.735645,20.562695],[92.708984,20.563965],[92.732617,20.453369],[92.722852,20.295605],[92.608008,20.469873],[92.37832,20.717578],[92.324121,20.791846],[92.311914,20.864453],[92.28623,20.931592],[92.268457,21.004688],[92.264453,21.061475],[92.214746,21.112695],[92.191992,21.202246],[92.17959,21.293115],[92.208203,21.357861],[92.279688,21.427588],[92.330566,21.439795],[92.372656,21.409033],[92.471875,21.362988],[92.53916,21.319824],[92.568555,21.26333],[92.599805,21.270166],[92.631641,21.306201],[92.625293,21.350732],[92.593457,21.467334],[92.584277,21.609033],[92.582812,21.940332],[92.574902,21.978076],[92.630371,22.011328],[92.652637,22.049316],[92.674707,22.106006],[92.688965,22.130957],[92.720996,22.132422],[92.771387,22.104785],[92.854297,22.010156],[92.909473,21.988916],[92.964551,22.00376],[93.021973,22.145703],[93.042969,22.183984],[93.070605,22.209424],[93.121484,22.205176],[93.151172,22.230615],[93.162402,22.291895],[93.162012,22.360205],[93.105078,22.547119],[93.088184,22.633252],[93.078711,22.718213],[93.114258,22.805713],[93.1625,22.907959],[93.150977,22.997314],[93.16416,23.032031],[93.203906,23.037012],[93.253516,23.015479],[93.308008,23.030371],[93.349414,23.084961],[93.366016,23.13252],[93.391309,23.33916],[93.408105,23.528027],[93.414941,23.68208],[93.372559,23.77417],[93.307324,24.021875],[93.32627,24.064209],[93.355566,24.074121],[93.452148,23.987402],[93.49375,23.972852],[93.564063,23.986084],[93.633301,24.005371],[93.683398,24.006543],[93.755859,23.976904],[93.855469,23.943896],[94.01084,23.90293],[94.074805,23.87207],[94.127637,23.876465],[94.170313,23.972656],[94.219727,24.113184],[94.293066,24.321875],[94.377246,24.47373],[94.399414,24.514062],[94.493164,24.637646],[94.584082,24.767236],[94.663281,24.931006],[94.707617,25.04873],[94.703711,25.097852],[94.675293,25.138574],[94.615625,25.1646],[94.566504,25.191504],[94.553027,25.215723],[94.554395,25.243457],[94.579883,25.319824],[94.622852,25.41001],[94.667773,25.458887],[94.78584,25.519336],[94.861133,25.597217],[94.945703,25.700244],[94.991992,25.770459],[95.015234,25.912939],[95.040723,25.941309],[95.092969,25.987305],[95.132422,26.04126],[95.129297,26.07041],[95.108398,26.091406],[95.068945,26.191113],[95.050879,26.347266],[95.059766,26.473975],[95.089453,26.525488],[95.128711,26.597266],[95.201465,26.641406],[95.305078,26.672266],[95.463867,26.756055],[95.738379,26.950439],[95.837305,27.013818],[95.905273,27.046631],[95.970898,27.128076],[96.061426,27.21709],[96.19082,27.261279],[96.274219,27.278369],[96.665723,27.339258],[96.731641,27.331494],[96.797852,27.296191],[96.880273,27.177832],[96.953418,27.133301],[97.038086,27.102051],[97.102051,27.11543],[97.103711,27.16333],[96.901953,27.4396],[96.883594,27.514844],[96.876855,27.586719],[96.899707,27.643848],[96.962793,27.698291],[97.049707,27.76001],[97.157813,27.836865],[97.226074,27.890039],[97.306152,27.90708],[97.335156,27.937744],[97.343555,27.982324],[97.33916,28.030859],[97.302734,28.085986],[97.310254,28.155225],[97.322461,28.217969],[97.356445,28.254492],[97.431445,28.353906],[97.477734,28.425635],[97.502148,28.456348],[97.537891,28.510205],[97.599219,28.517041],[97.658887,28.5],[97.694629,28.469336],[97.730078,28.407129],[97.769043,28.356152],[97.816504,28.356348],[97.864941,28.363574],[97.887598,28.356494],[97.934082,28.313818],[98.022266,28.211523],[98.061621,28.185889],[98.098926,28.142285],[98.118359,28.055225],[98.130469,27.967578],[98.241016,27.663184],[98.274219,27.599072],[98.298828,27.550098],[98.350488,27.538086],[98.392383,27.587061],[98.408887,27.639453],[98.452539,27.657227],[98.504492,27.647656],[98.599805,27.598828],[98.651172,27.572461],[98.676758,27.421924],[98.682422,27.245312],[98.674805,27.190625],[98.716504,27.044922],[98.729492,26.877393],[98.738477,26.785742],[98.739355,26.698145],[98.731836,26.583398],[98.709473,26.429688],[98.671875,26.298535],[98.685547,26.189355],[98.663184,26.139453],[98.571973,26.114062],[98.564063,26.072412],[98.591016,26.003711],[98.654688,25.917773],[98.65625,25.863574],[98.625391,25.826709],[98.558398,25.823242],[98.465527,25.788867],[98.40166,25.677979],[98.333789,25.586768],[98.296582,25.568848],[98.172559,25.594531],[98.142871,25.571094],[98.099609,25.415723],[98.064063,25.348975],[98.010742,25.292529],[97.962012,25.259326],[97.917969,25.236133],[97.819531,25.251855],[97.767383,25.158057],[97.714941,25.034326],[97.710742,24.970361],[97.737891,24.869873],[97.723828,24.841992],[97.670703,24.820117],[97.583301,24.774805],[97.529395,24.631201],[97.531445,24.491699],[97.563281,24.443848],[97.623633,24.422949],[97.666602,24.37998],[97.670703,24.312744],[97.708203,24.22876],[97.690625,24.130811],[97.568262,23.988477],[97.564551,23.911035],[97.629687,23.887158],[97.686035,23.898096],[97.755664,23.931885],[97.837695,23.986279],[98.016895,24.06543],[98.2125,24.110645],[98.367285,24.119043],[98.499414,24.115674],[98.56416,24.098828],[98.583398,24.069824],[98.764355,24.116064],[98.802344,24.118701],[98.835059,24.121191],[98.833984,24.090576],[98.701563,23.964062],[98.676758,23.905078],[98.680859,23.841797],[98.735059,23.783105],[98.787695,23.737842],[98.832227,23.624365],[98.797852,23.52041],[98.819727,23.48252],[98.858887,23.440088],[98.882617,23.380322],[98.885547,23.307471],[98.86377,23.19126],[99.055078,23.130566],[99.220313,23.10332],[99.34082,23.095898],[99.418066,23.069238],[99.464551,23.04624],[99.497266,23.00459],[99.507129,22.959131],[99.466797,22.927295],[99.385156,22.825098],[99.338281,22.688672],[99.343164,22.586523],[99.337695,22.498047],[99.243066,22.370361],[99.205371,22.282568],[99.172363,22.19248],[99.173438,22.15332],[99.192969,22.125977],[99.233398,22.110156],[99.303125,22.100635],[99.388672,22.110791],[99.592676,22.08916],[99.825391,22.049707],[99.917676,22.028027],[99.947852,21.98833],[99.94043,21.901611],[99.925586,21.820801],[99.940723,21.75874],[99.978223,21.701611],[100.041211,21.682764],[100.095508,21.660645],[100.105762,21.617041],[100.089258,21.55791],[100.116797,21.511182],[100.147656,21.480518],[100.214746,21.462988],[100.350586,21.501025],[100.445703,21.484082],[100.531348,21.458105],[100.60459,21.471777],[100.677148,21.504932],[100.835156,21.655176],[101.019336,21.736377],[101.079785,21.755859],[101.120703,21.746094],[101.130859,21.735547],[101.128125,21.705127],[101.147266,21.581641],[101.138867,21.56748],[101.080371,21.468652],[100.927539,21.366211],[100.819531,21.314209],[100.756641,21.312646],[100.703125,21.251367],[100.65918,21.130371],[100.613672,21.059326],[100.566602,21.038184],[100.536133,20.992383],[100.522266,20.921924],[100.549316,20.884229],[100.617676,20.879248],[100.622949,20.85957],[100.565137,20.825098],[100.493359,20.812988],[100.407422,20.823242],[100.326074,20.795703],[100.249316,20.730273],[100.183887,20.589111],[100.129687,20.372217],[100.122461,20.31665]]],[[[98.209766,10.952734],[98.293457,10.779687],[98.284375,10.753125],[98.271484,10.739893],[98.251758,10.744434],[98.218164,10.837744],[98.155371,10.897949],[98.080469,10.886621],[98.142578,10.963135],[98.167285,10.980322],[98.209766,10.952734]]],[[[98.182617,9.933447],[98.134375,9.875391],[98.118066,9.877881],[98.140234,9.974658],[98.220703,10.045215],[98.291699,10.051318],[98.283398,10.007617],[98.23125,9.953955],[98.182617,9.933447]]],[[[98.22168,11.478223],[98.216211,11.455762],[98.209375,11.456543],[98.187305,11.472412],[98.201074,11.567187],[98.239062,11.644727],[98.278125,11.758398],[98.299609,11.783008],[98.30752,11.7229],[98.283789,11.594092],[98.263281,11.523633],[98.22168,11.478223]]],[[[98.516016,11.905029],[98.474316,11.899414],[98.454492,12.061279],[98.466211,12.084277],[98.525293,12.005176],[98.60957,11.956641],[98.576465,11.925098],[98.516016,11.905029]]],[[[98.553809,11.744873],[98.528418,11.538672],[98.464844,11.567187],[98.434766,11.56709],[98.396875,11.683545],[98.399512,11.714844],[98.376465,11.791504],[98.523535,11.804932],[98.553809,11.744873]]],[[[98.413965,12.597949],[98.436426,12.570508],[98.468262,12.571338],[98.459473,12.47373],[98.380859,12.353662],[98.334473,12.336182],[98.313867,12.335986],[98.331445,12.511426],[98.302539,12.611572],[98.312109,12.678174],[98.396484,12.647119],[98.413965,12.597949]]],[[[98.136719,12.150439],[98.125098,12.144873],[98.108496,12.148096],[98.075391,12.164453],[98.037305,12.232471],[98.057324,12.280078],[98.071387,12.291797],[98.104883,12.287793],[98.122461,12.278711],[98.128418,12.26123],[98.118457,12.223389],[98.120117,12.191309],[98.136719,12.150439]]],[[[94.476758,15.945947],[94.411914,15.848389],[94.387891,15.994141],[94.49375,16.075342],[94.545996,16.152832],[94.60127,16.205518],[94.618652,16.141309],[94.566113,16.019287],[94.476758,15.945947]]],[[[97.575,16.253223],[97.537207,16.240137],[97.480371,16.305713],[97.469141,16.461035],[97.516406,16.496875],[97.541992,16.505078],[97.579004,16.486035],[97.593262,16.460791],[97.599609,16.429541],[97.589355,16.397363],[97.575,16.253223]]],[[[93.69082,18.684277],[93.674023,18.675684],[93.569922,18.75957],[93.4875,18.867529],[93.618262,18.888818],[93.744727,18.865527],[93.745508,18.808057],[93.718359,18.715723],[93.69082,18.684277]]],[[[93.491797,19.892578],[93.513281,19.754785],[93.444629,19.806445],[93.419531,19.877588],[93.412891,19.950342],[93.491797,19.892578]]],[[[93.714844,19.558252],[93.829492,19.475293],[93.874707,19.481055],[93.945703,19.428613],[93.947461,19.408154],[93.933984,19.36543],[93.901953,19.332031],[93.815234,19.298682],[93.755859,19.325684],[93.732324,19.416309],[93.662207,19.458936],[93.644043,19.495068],[93.688379,19.544434],[93.714844,19.558252]]],[[[98.541699,10.961523],[98.518945,10.959375],[98.498047,10.964258],[98.477441,10.979736],[98.526563,11.086963],[98.541699,10.961523]]],[[[98.075488,11.692383],[98.083594,11.636816],[98.021094,11.695898],[98.010352,11.860254],[98.05957,11.756689],[98.080762,11.733203],[98.075488,11.692383]]],[[[98.066113,12.389795],[98.060352,12.353516],[98.002344,12.279004],[97.951758,12.322314],[97.938672,12.346094],[97.990234,12.393799],[98.045117,12.387012],[98.059863,12.397852],[98.066113,12.389795]]],[[[98.31543,13.099072],[98.30918,12.934717],[98.259277,13.014014],[98.250781,13.104395],[98.25459,13.188574],[98.265332,13.202246],[98.268555,13.189355],[98.298633,13.15166],[98.31543,13.099072]]],[[[94.804883,15.819336],[94.784375,15.793848],[94.743359,15.812109],[94.733496,15.823047],[94.828027,15.933008],[94.838184,15.89209],[94.804883,15.819336]]],[[[93.010156,19.923926],[93.023242,19.828857],[92.975195,19.868018],[92.912695,19.999805],[92.914648,20.086475],[92.95957,20.046191],[93.010156,19.923926]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Burundi","SOV_A3":"BDI","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Burundi","ADM0_A3":"BDI","GEOU_DIF":0,"GEOUNIT":"Burundi","GU_A3":"BDI","SU_DIF":0,"SUBUNIT":"Burundi","SU_A3":"BDI","BRK_DIFF":0,"NAME":"Burundi","NAME_LONG":"Burundi","BRK_A3":"BDI","BRK_NAME":"Burundi","BRK_GROUP":null,"ABBREV":"Bur.","POSTAL":"BI","FORMAL_EN":"Republic of Burundi","FORMAL_FR":null,"NAME_CIAWF":"Burundi","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Burundi","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":8,"POP_EST":11530580,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":3012,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"BY","ISO_A2":"BI","ISO_A2_EH":"BI","ISO_A3":"BDI","ISO_A3_EH":"BDI","ISO_N3":"108","ISO_N3_EH":"108","UN_A3":"108","WB_A2":"BI","WB_A3":"BDI","WOE_ID":23424774,"WOE_ID_EH":23424774,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BDI","ADM0_DIFF":null,"ADM0_TLC":"BDI","ADM0_A3_US":"BDI","ADM0_A3_FR":"BDI","ADM0_A3_RU":"BDI","ADM0_A3_ES":"BDI","ADM0_A3_CN":"BDI","ADM0_A3_TW":"BDI","ADM0_A3_IN":"BDI","ADM0_A3_NP":"BDI","ADM0_A3_PK":"BDI","ADM0_A3_DE":"BDI","ADM0_A3_GB":"BDI","ADM0_A3_BR":"BDI","ADM0_A3_IL":"BDI","ADM0_A3_PS":"BDI","ADM0_A3_SA":"BDI","ADM0_A3_EG":"BDI","ADM0_A3_MA":"BDI","ADM0_A3_PT":"BDI","ADM0_A3_AR":"BDI","ADM0_A3_JP":"BDI","ADM0_A3_KO":"BDI","ADM0_A3_VN":"BDI","ADM0_A3_TR":"BDI","ADM0_A3_ID":"BDI","ADM0_A3_PL":"BDI","ADM0_A3_GR":"BDI","ADM0_A3_IT":"BDI","ADM0_A3_NL":"BDI","ADM0_A3_SE":"BDI","ADM0_A3_BD":"BDI","ADM0_A3_UA":"BDI","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Eastern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":29.917086,"LABEL_Y":-3.332836,"NE_ID":1159320387,"WIKIDATAID":"Q967","NAME_AR":"بوروندي","NAME_BN":"বুরুন্ডি","NAME_DE":"Burundi","NAME_EN":"Burundi","NAME_ES":"Burundi","NAME_FA":"بوروندی","NAME_FR":"Burundi","NAME_EL":"Μπουρούντι","NAME_HE":"בורונדי","NAME_HI":"बुरुण्डी","NAME_HU":"Burundi","NAME_ID":"Burundi","NAME_IT":"Burundi","NAME_JA":"ブルンジ","NAME_KO":"부룬디","NAME_NL":"Burundi","NAME_PL":"Burundi","NAME_PT":"Burundi","NAME_RU":"Бурунди","NAME_SV":"Burundi","NAME_TR":"Burundi","NAME_UK":"Бурунді","NAME_UR":"برونڈی","NAME_VI":"Burundi","NAME_ZH":"布隆迪","NAME_ZHT":"蒲隆地","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[29.01416,-4.455859,30.811426,-2.312988],"geometry":{"type":"Polygon","coordinates":[[[30.553613,-2.400098],[30.533691,-2.42627],[30.441992,-2.613477],[30.424219,-2.641602],[30.434375,-2.658887],[30.47334,-2.694336],[30.450488,-2.753223],[30.441309,-2.769043],[30.424023,-2.824023],[30.433496,-2.874512],[30.455566,-2.893164],[30.515039,-2.917578],[30.604297,-2.935254],[30.709473,-2.977246],[30.780273,-2.984863],[30.796875,-3.015137],[30.793555,-3.069336],[30.811133,-3.116406],[30.811426,-3.200586],[30.790234,-3.274609],[30.681836,-3.309375],[30.626074,-3.347363],[30.610938,-3.366406],[30.624609,-3.388672],[30.631934,-3.418652],[30.529883,-3.49248],[30.425,-3.588867],[30.4,-3.653906],[30.379102,-3.730762],[30.348438,-3.779785],[30.268555,-3.850488],[30.187109,-3.992871],[30.147168,-4.085352],[29.947266,-4.307324],[29.769531,-4.418066],[29.717773,-4.455859],[29.403223,-4.449316],[29.379199,-4.299707],[29.331348,-4.09541],[29.223242,-3.91084],[29.211816,-3.833789],[29.216797,-3.684961],[29.217188,-3.475684],[29.210059,-3.363281],[29.212305,-3.28125],[29.226074,-3.138672],[29.224414,-3.053516],[29.153223,-2.955273],[29.064746,-2.850781],[29.016602,-2.799609],[29.01416,-2.758301],[29.014355,-2.720215],[29.028613,-2.664551],[29.063184,-2.602539],[29.102051,-2.595703],[29.197559,-2.620313],[29.29707,-2.673047],[29.349805,-2.791504],[29.390234,-2.808594],[29.463672,-2.808398],[29.651367,-2.792773],[29.698047,-2.794727],[29.783398,-2.766406],[29.868164,-2.716406],[29.892578,-2.664648],[29.912402,-2.548633],[29.930176,-2.339551],[29.973438,-2.337109],[30.091895,-2.411523],[30.117285,-2.416602],[30.142285,-2.413965],[30.183301,-2.377051],[30.233789,-2.34707],[30.270996,-2.347852],[30.408496,-2.312988],[30.482227,-2.376074],[30.528906,-2.395605],[30.553613,-2.400098]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Burkina Faso","SOV_A3":"BFA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Burkina Faso","ADM0_A3":"BFA","GEOU_DIF":0,"GEOUNIT":"Burkina Faso","GU_A3":"BFA","SU_DIF":0,"SUBUNIT":"Burkina Faso","SU_A3":"BFA","BRK_DIFF":0,"NAME":"Burkina Faso","NAME_LONG":"Burkina Faso","BRK_A3":"BFA","BRK_NAME":"Burkina Faso","BRK_GROUP":null,"ABBREV":"B.F.","POSTAL":"BF","FORMAL_EN":"Burkina Faso","FORMAL_FR":null,"NAME_CIAWF":"Burkina Faso","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Burkina Faso","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":1,"MAPCOLOR9":5,"MAPCOLOR13":11,"POP_EST":20321378,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":15990,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"UV","ISO_A2":"BF","ISO_A2_EH":"BF","ISO_A3":"BFA","ISO_A3_EH":"BFA","ISO_N3":"854","ISO_N3_EH":"854","UN_A3":"854","WB_A2":"BF","WB_A3":"BFA","WOE_ID":23424978,"WOE_ID_EH":23424978,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BFA","ADM0_DIFF":null,"ADM0_TLC":"BFA","ADM0_A3_US":"BFA","ADM0_A3_FR":"BFA","ADM0_A3_RU":"BFA","ADM0_A3_ES":"BFA","ADM0_A3_CN":"BFA","ADM0_A3_TW":"BFA","ADM0_A3_IN":"BFA","ADM0_A3_NP":"BFA","ADM0_A3_PK":"BFA","ADM0_A3_DE":"BFA","ADM0_A3_GB":"BFA","ADM0_A3_BR":"BFA","ADM0_A3_IL":"BFA","ADM0_A3_PS":"BFA","ADM0_A3_SA":"BFA","ADM0_A3_EG":"BFA","ADM0_A3_MA":"BFA","ADM0_A3_PT":"BFA","ADM0_A3_AR":"BFA","ADM0_A3_JP":"BFA","ADM0_A3_KO":"BFA","ADM0_A3_VN":"BFA","ADM0_A3_TR":"BFA","ADM0_A3_ID":"BFA","ADM0_A3_PL":"BFA","ADM0_A3_GR":"BFA","ADM0_A3_IT":"BFA","ADM0_A3_NL":"BFA","ADM0_A3_SE":"BFA","ADM0_A3_BD":"BFA","ADM0_A3_UA":"BFA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":12,"LONG_LEN":12,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":-1.36388,"LABEL_Y":12.673048,"NE_ID":1159320405,"WIKIDATAID":"Q965","NAME_AR":"بوركينا فاسو","NAME_BN":"বুর্কিনা ফাসো","NAME_DE":"Burkina Faso","NAME_EN":"Burkina Faso","NAME_ES":"Burkina Faso","NAME_FA":"بورکینافاسو","NAME_FR":"Burkina Faso","NAME_EL":"Μπουρκίνα Φάσο","NAME_HE":"בורקינה פאסו","NAME_HI":"बुर्किना फासो","NAME_HU":"Burkina Faso","NAME_ID":"Burkina Faso","NAME_IT":"Burkina Faso","NAME_JA":"ブルキナファソ","NAME_KO":"부르키나파소","NAME_NL":"Burkina Faso","NAME_PL":"Burkina Faso","NAME_PT":"Burkina Faso","NAME_RU":"Буркина-Фасо","NAME_SV":"Burkina Faso","NAME_TR":"Burkina Faso","NAME_UK":"Буркіна-Фасо","NAME_UR":"برکینا فاسو","NAME_VI":"Burkina Faso","NAME_ZH":"布基纳法索","NAME_ZHT":"布基納法索","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-5.523535,9.424707,2.38916,15.077881],"geometry":{"type":"Polygon","coordinates":[[[0.900488,10.993262],[0.642969,10.983057],[0.549121,10.95542],[0.492676,10.95498],[0.490723,10.978174],[0.48418,10.991992],[0.159277,11.069629],[-0.068604,11.115625],[-0.299463,11.166895],[-0.312549,11.118896],[-0.345752,11.087939],[-0.395605,11.085693],[-0.430322,11.093262],[-0.453516,11.056299],[-0.491699,11.007617],[-0.545215,10.983691],[-0.597656,10.953662],[-0.627148,10.927393],[-0.648535,10.926758],[-0.701416,10.988965],[-0.771582,10.995264],[-0.90293,10.984717],[-0.961816,11.001709],[-1.04248,11.010059],[-1.232617,10.997217],[-1.536768,11.022656],[-1.586475,11.008887],[-1.599658,10.997656],[-1.900635,10.994678],[-2.231934,10.991406],[-2.50918,10.988721],[-2.75166,10.986377],[-2.7521,10.996973],[-2.829932,10.998389],[-2.838574,10.97749],[-2.907324,10.727979],[-2.914893,10.592334],[-2.878418,10.507959],[-2.837207,10.454639],[-2.791162,10.432422],[-2.786621,10.401904],[-2.823437,10.362939],[-2.820312,10.322852],[-2.7771,10.281592],[-2.766504,10.238184],[-2.788477,10.192578],[-2.783203,10.083105],[-2.750732,9.909668],[-2.749805,9.797217],[-2.780518,9.74585],[-2.765967,9.658057],[-2.706201,9.533936],[-2.69585,9.481348],[-2.717187,9.457129],[-2.766602,9.424707],[-2.816748,9.42583],[-2.875146,9.500928],[-2.900879,9.534619],[-2.948145,9.610742],[-2.988281,9.687354],[-3.042627,9.720898],[-3.095801,9.7521],[-3.160693,9.84917],[-3.223535,9.895459],[-3.289697,9.882227],[-3.386279,9.900293],[-3.581152,9.924316],[-3.790625,9.917187],[-3.877637,9.894922],[-3.963477,9.859619],[-4.181152,9.781738],[-4.267187,9.743262],[-4.332227,9.645703],[-4.406201,9.647998],[-4.480273,9.679248],[-4.526611,9.723486],[-4.62583,9.713574],[-4.721777,9.756543],[-4.814453,9.841162],[-4.882715,9.868945],[-4.969922,9.930078],[-4.994043,10.046484],[-5.049316,10.12832],[-5.099854,10.241602],[-5.175293,10.292627],[-5.262305,10.319678],[-5.382275,10.314014],[-5.461279,10.35957],[-5.523535,10.426025],[-5.507031,10.483447],[-5.479004,10.565088],[-5.475684,10.643945],[-5.45708,10.771387],[-5.468555,10.931055],[-5.490479,11.042383],[-5.424219,11.088721],[-5.347412,11.130273],[-5.299854,11.205957],[-5.250244,11.375781],[-5.229395,11.522461],[-5.244775,11.576758],[-5.270312,11.619873],[-5.290527,11.683301],[-5.302002,11.760449],[-5.288135,11.82793],[-5.230176,11.890283],[-5.15752,11.942383],[-5.105908,11.967529],[-4.968994,11.993311],[-4.797949,12.032129],[-4.699316,12.076172],[-4.627246,12.120215],[-4.586914,12.155029],[-4.546045,12.226465],[-4.479883,12.281787],[-4.428711,12.337598],[-4.421582,12.493066],[-4.421924,12.581592],[-4.459863,12.630371],[-4.480615,12.672217],[-4.2271,12.793701],[-4.225244,12.879492],[-4.260645,12.975342],[-4.310254,13.05249],[-4.328711,13.119043],[-4.258691,13.197314],[-4.196191,13.256152],[-4.151025,13.306201],[-4.051172,13.382422],[-3.947314,13.402197],[-3.853467,13.373535],[-3.575781,13.194189],[-3.527637,13.182715],[-3.469922,13.196387],[-3.396729,13.243701],[-3.301758,13.280762],[-3.266748,13.400781],[-3.270166,13.577441],[-3.248633,13.65835],[-3.198437,13.672852],[-3.038672,13.639111],[-2.997217,13.637109],[-2.95083,13.648438],[-2.91709,13.679492],[-2.918506,13.736377],[-2.925879,13.786768],[-2.873926,13.950732],[-2.778857,14.07373],[-2.586719,14.227588],[-2.526904,14.258301],[-2.457227,14.274121],[-2.113232,14.168457],[-2.057129,14.194629],[-1.973047,14.456543],[-1.879785,14.481494],[-1.767773,14.486035],[-1.695068,14.508496],[-1.657324,14.526807],[-1.493652,14.626074],[-1.20498,14.761523],[-1.049561,14.819531],[-1.019189,14.841357],[-0.907959,14.937402],[-0.760449,15.047754],[-0.666455,15.069775],[-0.536523,15.077881],[-0.454492,15.059668],[-0.432275,15.028516],[-0.40542,15.0125],[-0.235889,15.059424],[0.007324,14.984814],[0.21748,14.911475],[0.203809,14.865039],[0.202734,14.782812],[0.185059,14.65293],[0.163867,14.497217],[0.250586,14.396436],[0.35459,14.288037],[0.38252,14.245801],[0.354883,14.139014],[0.374023,14.076367],[0.429199,13.972119],[0.522363,13.839746],[0.618164,13.703418],[0.68457,13.6854],[0.747754,13.674512],[0.786035,13.650049],[0.842285,13.626416],[0.897949,13.610937],[0.946582,13.581152],[0.977734,13.551953],[1.017871,13.467871],[1.125977,13.412354],[1.201172,13.35752],[1.170898,13.32959],[1.076855,13.340771],[0.988477,13.364844],[0.976758,13.324512],[0.973047,13.170361],[0.987305,13.041895],[1.00791,13.024805],[1.096777,13.001123],[1.308691,12.834277],[1.500488,12.676465],[1.564941,12.6354],[1.671094,12.619824],[1.789844,12.613281],[1.840918,12.627881],[1.956152,12.707422],[2.017383,12.716211],[2.073828,12.713965],[2.10459,12.70127],[2.159766,12.636426],[2.211523,12.538428],[2.22627,12.466064],[2.221387,12.427246],[2.203809,12.412598],[2.109375,12.393848],[2.068555,12.37915],[2.058398,12.357959],[2.072949,12.309375],[2.091406,12.277979],[2.194434,12.136475],[2.343359,11.945996],[2.38916,11.89707],[2.363281,11.840088],[2.287207,11.69126],[2.230859,11.62915],[1.980371,11.418408],[1.857617,11.443359],[1.6,11.400635],[1.561426,11.449121],[1.501367,11.455566],[1.426758,11.447119],[1.399707,11.428711],[1.391504,11.408008],[1.364844,11.378906],[1.317383,11.295264],[1.280469,11.273975],[1.234668,11.261035],[1.178711,11.262744],[1.145801,11.251904],[1.145508,11.2104],[1.135547,11.174365],[1.097559,11.156348],[1.081543,11.116016],[1.08457,11.076367],[1.062305,11.058203],[1.013867,11.068115],[0.985059,11.079004],[0.958008,11.027783],[0.924609,10.992822],[0.900488,10.993262]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Bulgaria","SOV_A3":"BGR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Bulgaria","ADM0_A3":"BGR","GEOU_DIF":0,"GEOUNIT":"Bulgaria","GU_A3":"BGR","SU_DIF":0,"SUBUNIT":"Bulgaria","SU_A3":"BGR","BRK_DIFF":0,"NAME":"Bulgaria","NAME_LONG":"Bulgaria","BRK_A3":"BGR","BRK_NAME":"Bulgaria","BRK_GROUP":null,"ABBREV":"Bulg.","POSTAL":"BG","FORMAL_EN":"Republic of Bulgaria","FORMAL_FR":null,"NAME_CIAWF":"Bulgaria","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Bulgaria","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":6975761,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":68558,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"3. Upper middle income","FIPS_10":"BU","ISO_A2":"BG","ISO_A2_EH":"BG","ISO_A3":"BGR","ISO_A3_EH":"BGR","ISO_N3":"100","ISO_N3_EH":"100","UN_A3":"100","WB_A2":"BG","WB_A3":"BGR","WOE_ID":23424771,"WOE_ID_EH":23424771,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BGR","ADM0_DIFF":null,"ADM0_TLC":"BGR","ADM0_A3_US":"BGR","ADM0_A3_FR":"BGR","ADM0_A3_RU":"BGR","ADM0_A3_ES":"BGR","ADM0_A3_CN":"BGR","ADM0_A3_TW":"BGR","ADM0_A3_IN":"BGR","ADM0_A3_NP":"BGR","ADM0_A3_PK":"BGR","ADM0_A3_DE":"BGR","ADM0_A3_GB":"BGR","ADM0_A3_BR":"BGR","ADM0_A3_IL":"BGR","ADM0_A3_PS":"BGR","ADM0_A3_SA":"BGR","ADM0_A3_EG":"BGR","ADM0_A3_MA":"BGR","ADM0_A3_PT":"BGR","ADM0_A3_AR":"BGR","ADM0_A3_JP":"BGR","ADM0_A3_KO":"BGR","ADM0_A3_VN":"BGR","ADM0_A3_TR":"BGR","ADM0_A3_ID":"BGR","ADM0_A3_PL":"BGR","ADM0_A3_GR":"BGR","ADM0_A3_IT":"BGR","ADM0_A3_NL":"BGR","ADM0_A3_SE":"BGR","ADM0_A3_BD":"BGR","ADM0_A3_UA":"BGR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":25.15709,"LABEL_Y":42.508785,"NE_ID":1159320409,"WIKIDATAID":"Q219","NAME_AR":"بلغاريا","NAME_BN":"বুলগেরিয়া","NAME_DE":"Bulgarien","NAME_EN":"Bulgaria","NAME_ES":"Bulgaria","NAME_FA":"بلغارستان","NAME_FR":"Bulgarie","NAME_EL":"Βουλγαρία","NAME_HE":"בולגריה","NAME_HI":"बुल्गारिया","NAME_HU":"Bulgária","NAME_ID":"Bulgaria","NAME_IT":"Bulgaria","NAME_JA":"ブルガリア","NAME_KO":"불가리아","NAME_NL":"Bulgarije","NAME_PL":"Bułgaria","NAME_PT":"Bulgária","NAME_RU":"Болгария","NAME_SV":"Bulgarien","NAME_TR":"Bulgaristan","NAME_UK":"Болгарія","NAME_UR":"بلغاریہ","NAME_VI":"Bulgaria","NAME_ZH":"保加利亚","NAME_ZHT":"保加利亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[22.344043,41.243555,28.585352,44.237793],"geometry":{"type":"Polygon","coordinates":[[[28.014453,41.969043],[27.879199,41.986621],[27.831934,41.981299],[27.80166,41.956543],[27.738867,41.961523],[27.661133,41.961328],[27.579883,41.93291],[27.534863,41.920801],[27.474805,41.946875],[27.362891,42.025049],[27.294922,42.079541],[27.244336,42.093262],[27.193359,42.0771],[27.011719,42.058643],[26.96875,42.026855],[26.884863,41.991846],[26.800391,41.975146],[26.679199,41.96333],[26.615332,41.964893],[26.579688,41.947949],[26.549707,41.896729],[26.529297,41.84668],[26.511426,41.826367],[26.360352,41.801562],[26.327246,41.772803],[26.317969,41.744678],[26.320898,41.716553],[26.200586,41.743799],[26.107422,41.725684],[26.085547,41.70415],[26.066016,41.673242],[26.076953,41.640186],[26.11123,41.608203],[26.143555,41.521533],[26.155176,41.434863],[26.135352,41.385742],[26.066406,41.350684],[25.92334,41.311914],[25.784961,41.33042],[25.723926,41.315039],[25.621484,41.310107],[25.527051,41.299805],[25.381934,41.264355],[25.251172,41.243555],[25.133398,41.315771],[24.993555,41.36499],[24.846875,41.394238],[24.795801,41.3729],[24.77373,41.356104],[24.651074,41.419971],[24.595996,41.442725],[24.569336,41.467383],[24.518262,41.552539],[24.487891,41.555225],[24.386719,41.523535],[24.289453,41.525049],[24.230371,41.530811],[24.056055,41.527246],[24.03291,41.469092],[24.011328,41.460059],[23.973535,41.452295],[23.880859,41.455957],[23.762305,41.412988],[23.635156,41.386768],[23.53584,41.386035],[23.433398,41.39873],[23.37207,41.389648],[23.239844,41.384961],[23.155957,41.32207],[23.025586,41.325635],[22.916016,41.336279],[22.929688,41.356104],[22.951465,41.605615],[23.005664,41.716943],[23.003613,41.739844],[22.991992,41.757178],[22.943945,41.775098],[22.90918,41.835205],[22.836816,41.993604],[22.796094,42.025684],[22.682324,42.059131],[22.582715,42.104834],[22.498242,42.165088],[22.344043,42.313965],[22.42207,42.328857],[22.445703,42.359131],[22.523535,42.440967],[22.532422,42.481201],[22.524219,42.503906],[22.47207,42.543311],[22.43623,42.629102],[22.463281,42.709473],[22.465625,42.750781],[22.439258,42.79165],[22.466797,42.84248],[22.522754,42.870312],[22.558105,42.878467],[22.706152,42.883936],[22.799902,42.985742],[22.856836,43.018262],[22.915234,43.075977],[22.942285,43.09707],[22.967969,43.142041],[22.976855,43.187988],[22.85957,43.252344],[22.819727,43.300732],[22.767578,43.35415],[22.696973,43.391064],[22.55459,43.454492],[22.499121,43.518848],[22.474121,43.602246],[22.436328,43.665479],[22.394824,43.706641],[22.386914,43.740137],[22.369629,43.781299],[22.36543,43.862109],[22.399023,43.969531],[22.420801,44.007422],[22.469043,44.018018],[22.597461,44.075293],[22.603418,44.148584],[22.626563,44.194092],[22.66748,44.220215],[22.705078,44.237793],[22.775195,44.195215],[22.94541,44.127295],[23.028516,44.077979],[23.024414,44.047217],[22.985352,44.016992],[22.911328,43.987207],[22.868262,43.9479],[22.856445,43.899023],[22.867676,43.864551],[22.919043,43.834473],[23.224609,43.873877],[23.53457,43.853564],[23.950781,43.78667],[24.226758,43.763477],[24.430566,43.794385],[24.808203,43.738428],[25.159668,43.686328],[25.49707,43.670801],[25.686133,43.711768],[25.818848,43.766846],[25.933398,43.870557],[26.21582,44.007275],[26.489258,44.083984],[26.847754,44.146191],[27.086914,44.167383],[27.120703,44.146143],[27.425391,44.020508],[27.561035,44.020068],[27.670898,43.997803],[27.710742,43.9646],[27.738574,43.956299],[27.884277,43.987354],[27.948926,43.918604],[28.05,43.822412],[28.221973,43.772852],[28.375195,43.744775],[28.423438,43.740479],[28.585352,43.742236],[28.561816,43.501318],[28.46543,43.389307],[28.319629,43.426855],[28.133691,43.395605],[28.035156,43.268262],[27.979297,43.230518],[27.928906,43.186133],[27.896484,43.020703],[27.888867,42.749707],[27.818359,42.71665],[27.753711,42.706543],[27.484766,42.468066],[27.639551,42.400977],[27.708203,42.349951],[27.821387,42.208008],[27.982715,42.047412],[28.014453,41.969043]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Brunei","SOV_A3":"BRN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Brunei","ADM0_A3":"BRN","GEOU_DIF":0,"GEOUNIT":"Brunei","GU_A3":"BRN","SU_DIF":0,"SUBUNIT":"Brunei","SU_A3":"BRN","BRK_DIFF":0,"NAME":"Brunei","NAME_LONG":"Brunei Darussalam","BRK_A3":"BRN","BRK_NAME":"Brunei","BRK_GROUP":null,"ABBREV":"Brunei","POSTAL":"BN","FORMAL_EN":"Negara Brunei Darussalam","FORMAL_FR":null,"NAME_CIAWF":"Brunei","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Brunei","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":6,"MAPCOLOR9":6,"MAPCOLOR13":12,"POP_EST":433285,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":13469,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"BX","ISO_A2":"BN","ISO_A2_EH":"BN","ISO_A3":"BRN","ISO_A3_EH":"BRN","ISO_N3":"096","ISO_N3_EH":"096","UN_A3":"096","WB_A2":"BN","WB_A3":"BRN","WOE_ID":23424773,"WOE_ID_EH":23424773,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BRN","ADM0_DIFF":null,"ADM0_TLC":"BRN","ADM0_A3_US":"BRN","ADM0_A3_FR":"BRN","ADM0_A3_RU":"BRN","ADM0_A3_ES":"BRN","ADM0_A3_CN":"BRN","ADM0_A3_TW":"BRN","ADM0_A3_IN":"BRN","ADM0_A3_NP":"BRN","ADM0_A3_PK":"BRN","ADM0_A3_DE":"BRN","ADM0_A3_GB":"BRN","ADM0_A3_BR":"BRN","ADM0_A3_IL":"BRN","ADM0_A3_PS":"BRN","ADM0_A3_SA":"BRN","ADM0_A3_EG":"BRN","ADM0_A3_MA":"BRN","ADM0_A3_PT":"BRN","ADM0_A3_AR":"BRN","ADM0_A3_JP":"BRN","ADM0_A3_KO":"BRN","ADM0_A3_VN":"BRN","ADM0_A3_TR":"BRN","ADM0_A3_ID":"BRN","ADM0_A3_PL":"BRN","ADM0_A3_GR":"BRN","ADM0_A3_IT":"BRN","ADM0_A3_NL":"BRN","ADM0_A3_SE":"BRN","ADM0_A3_BD":"BRN","ADM0_A3_UA":"BRN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"South-Eastern Asia","REGION_WB":"East Asia & Pacific","NAME_LEN":6,"LONG_LEN":17,"ABBREV_LEN":6,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":114.551943,"LABEL_Y":4.448298,"NE_ID":1159320451,"WIKIDATAID":"Q921","NAME_AR":"بروناي","NAME_BN":"ব্রুনাই","NAME_DE":"Brunei","NAME_EN":"Brunei","NAME_ES":"Brunéi","NAME_FA":"برونئی","NAME_FR":"Brunei","NAME_EL":"Μπρουνέι","NAME_HE":"ברוניי","NAME_HI":"ब्रुनेई","NAME_HU":"Brunei","NAME_ID":"Brunei Darussalam","NAME_IT":"Brunei","NAME_JA":"ブルネイ","NAME_KO":"브루나이","NAME_NL":"Brunei","NAME_PL":"Brunei","NAME_PT":"Brunei","NAME_RU":"Бруней","NAME_SV":"Brunei","NAME_TR":"Brunei","NAME_UK":"Бруней","NAME_UR":"برونائی دار السلام","NAME_VI":"Brunei","NAME_ZH":"文莱","NAME_ZHT":"汶萊","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[114.063867,4.023975,115.326758,5.022363],"geometry":{"type":"MultiPolygon","coordinates":[[[[115.140039,4.899756],[115.168457,4.866699],[115.22793,4.750586],[115.266699,4.633984],[115.279297,4.456348],[115.326758,4.380762],[115.319238,4.365283],[115.290625,4.352588],[115.24668,4.347217],[115.170605,4.364209],[115.107031,4.39043],[115.051562,4.582666],[115.026758,4.691357],[115.028809,4.821143],[115.026758,4.899707],[115.140039,4.899756]]],[[[115.026758,4.899707],[114.944727,4.85625],[114.864551,4.801758],[114.78418,4.754834],[114.74668,4.718066],[114.759961,4.666504],[114.779297,4.553027],[114.790137,4.463916],[114.818262,4.42876],[114.840234,4.393213],[114.831055,4.354492],[114.783496,4.280762],[114.810449,4.266504],[114.776172,4.168799],[114.725,4.096533],[114.654102,4.037646],[114.608301,4.023975],[114.571777,4.049072],[114.512207,4.113574],[114.44707,4.203564],[114.416602,4.255859],[114.322949,4.262793],[114.289648,4.304199],[114.287598,4.354736],[114.261035,4.414258],[114.224121,4.477881],[114.168848,4.526953],[114.095117,4.565234],[114.063867,4.592676],[114.17793,4.590967],[114.299414,4.607178],[114.424414,4.6604],[114.544727,4.724561],[114.645898,4.798145],[114.74082,4.881006],[114.840625,4.946387],[114.99541,5.022363],[115.047656,5.016357],[115.04707,4.962451],[115.026758,4.899707]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Brazil","SOV_A3":"BRA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Brazil","ADM0_A3":"BRA","GEOU_DIF":0,"GEOUNIT":"Brazil","GU_A3":"BRA","SU_DIF":0,"SUBUNIT":"Brazil","SU_A3":"BRA","BRK_DIFF":0,"NAME":"Brazil","NAME_LONG":"Brazil","BRK_A3":"BRA","BRK_NAME":"Brazil","BRK_GROUP":null,"ABBREV":"Brazil","POSTAL":"BR","FORMAL_EN":"Federative Republic of Brazil","FORMAL_FR":null,"NAME_CIAWF":"Brazil","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Brazil","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":6,"MAPCOLOR9":5,"MAPCOLOR13":7,"POP_EST":211049527,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":1839758,"GDP_YEAR":2019,"ECONOMY":"3. Emerging region: BRIC","INCOME_GRP":"3. Upper middle income","FIPS_10":"BR","ISO_A2":"BR","ISO_A2_EH":"BR","ISO_A3":"BRA","ISO_A3_EH":"BRA","ISO_N3":"076","ISO_N3_EH":"076","UN_A3":"076","WB_A2":"BR","WB_A3":"BRA","WOE_ID":23424768,"WOE_ID_EH":23424768,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BRA","ADM0_DIFF":null,"ADM0_TLC":"BRA","ADM0_A3_US":"BRA","ADM0_A3_FR":"BRA","ADM0_A3_RU":"BRA","ADM0_A3_ES":"BRA","ADM0_A3_CN":"BRA","ADM0_A3_TW":"BRA","ADM0_A3_IN":"BRA","ADM0_A3_NP":"BRA","ADM0_A3_PK":"BRA","ADM0_A3_DE":"BRA","ADM0_A3_GB":"BRA","ADM0_A3_BR":"BRA","ADM0_A3_IL":"BRA","ADM0_A3_PS":"BRA","ADM0_A3_SA":"BRA","ADM0_A3_EG":"BRA","ADM0_A3_MA":"BRA","ADM0_A3_PT":"BRA","ADM0_A3_AR":"BRA","ADM0_A3_JP":"BRA","ADM0_A3_KO":"BRA","ADM0_A3_VN":"BRA","ADM0_A3_TR":"BRA","ADM0_A3_ID":"BRA","ADM0_A3_PL":"BRA","ADM0_A3_GR":"BRA","ADM0_A3_IT":"BRA","ADM0_A3_NL":"BRA","ADM0_A3_SE":"BRA","ADM0_A3_BD":"BRA","ADM0_A3_UA":"BRA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":5.7,"LABEL_X":-49.55945,"LABEL_Y":-12.098687,"NE_ID":1159320441,"WIKIDATAID":"Q155","NAME_AR":"البرازيل","NAME_BN":"ব্রাজিল","NAME_DE":"Brasilien","NAME_EN":"Brazil","NAME_ES":"Brasil","NAME_FA":"برزیل","NAME_FR":"Brésil","NAME_EL":"Βραζιλία","NAME_HE":"ברזיל","NAME_HI":"ब्राज़ील","NAME_HU":"Brazília","NAME_ID":"Brasil","NAME_IT":"Brasile","NAME_JA":"ブラジル","NAME_KO":"브라질","NAME_NL":"Brazilië","NAME_PL":"Brazylia","NAME_PT":"Brasil","NAME_RU":"Бразилия","NAME_SV":"Brasilien","NAME_TR":"Brezilya","NAME_UK":"Бразилія","NAME_UR":"برازیل","NAME_VI":"Brasil","NAME_ZH":"巴西","NAME_ZHT":"巴西","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-74.002051,-33.742188,-34.805469,5.257959],"geometry":{"type":"MultiPolygon","coordinates":[[[[-66.876025,1.223047],[-66.619043,0.992139],[-66.429248,0.82168],[-66.347119,0.767187],[-66.30166,0.751953],[-66.191211,0.763281],[-66.060059,0.785352],[-65.996338,0.809766],[-65.925879,0.863135],[-65.811328,0.937256],[-65.718115,0.978027],[-65.681445,0.983447],[-65.644678,0.970361],[-65.566016,0.926074],[-65.522998,0.843408],[-65.562695,0.74751],[-65.556055,0.687988],[-65.473389,0.69126],[-65.407227,0.790479],[-65.36084,0.868652],[-65.263965,0.931885],[-65.169629,1.022217],[-65.10376,1.108105],[-65.026562,1.158447],[-64.910107,1.219727],[-64.817969,1.257129],[-64.731543,1.25332],[-64.667432,1.293848],[-64.584375,1.369873],[-64.52627,1.431006],[-64.486035,1.452783],[-64.405127,1.446875],[-64.304199,1.455273],[-64.205029,1.529492],[-64.114844,1.619287],[-64.067041,1.770508],[-64.035449,1.904443],[-64.008496,1.931592],[-63.975781,1.953027],[-63.937158,1.966992],[-63.844482,1.976709],[-63.682129,2.048145],[-63.570264,2.120508],[-63.463916,2.136035],[-63.43252,2.155566],[-63.393945,2.22251],[-63.374854,2.34043],[-63.389258,2.411914],[-63.584619,2.433936],[-63.712549,2.434033],[-63.92417,2.452441],[-64.024902,2.481885],[-64.046582,2.502393],[-64.048828,2.525098],[-64.028711,2.576074],[-64.009033,2.671875],[-64.037793,2.801514],[-64.143555,3.004883],[-64.218848,3.204687],[-64.22876,3.343994],[-64.227051,3.491211],[-64.221094,3.587402],[-64.275293,3.662695],[-64.56792,3.899805],[-64.668994,4.011816],[-64.702588,4.089307],[-64.817871,4.232275],[-64.788672,4.276025],[-64.722266,4.274414],[-64.665527,4.237109],[-64.613672,4.157715],[-64.576367,4.139893],[-64.525537,4.13999],[-64.255664,4.140332],[-64.19248,4.126855],[-64.154297,4.100146],[-64.121729,4.066992],[-64.073389,3.974414],[-64.021484,3.929102],[-63.914648,3.930664],[-63.746973,3.932568],[-63.65293,3.94082],[-63.596631,3.915039],[-63.526807,3.893701],[-63.379785,3.942871],[-63.338672,3.943896],[-63.294727,3.922266],[-63.13623,3.756445],[-63.045312,3.686475],[-62.968652,3.593945],[-62.856982,3.593457],[-62.7646,3.672949],[-62.739941,3.940332],[-62.712109,4.01792],[-62.665332,4.039648],[-62.609766,4.042285],[-62.543945,4.084326],[-62.472559,4.138525],[-62.410645,4.156738],[-62.153125,4.098389],[-62.081592,4.126318],[-61.82085,4.197021],[-61.554248,4.287793],[-61.479395,4.402246],[-61.367529,4.433008],[-61.280078,4.516895],[-61.209424,4.508057],[-61.102441,4.504687],[-61.036279,4.519336],[-61.002832,4.535254],[-60.966406,4.574707],[-60.90625,4.686816],[-60.833398,4.729199],[-60.741748,4.774121],[-60.67915,4.8271],[-60.627588,4.892529],[-60.603857,4.949365],[-60.604492,4.99458],[-60.63501,5.081982],[-60.671973,5.164355],[-60.711963,5.191553],[-60.742139,5.202051],[-60.651367,5.221143],[-60.576416,5.19248],[-60.459521,5.188086],[-60.408789,5.210156],[-60.335205,5.199316],[-60.24165,5.257959],[-60.181738,5.238818],[-60.142041,5.238818],[-60.105957,5.194238],[-60.078076,5.143994],[-59.990674,5.082861],[-59.999365,4.989844],[-60.015479,4.90752],[-60.026758,4.812695],[-60.031787,4.740527],[-60.068945,4.66665],[-60.124561,4.597656],[-60.140918,4.569629],[-60.148633,4.533252],[-60.111133,4.511182],[-60.04502,4.50459],[-59.962354,4.501709],[-59.906104,4.480322],[-59.83335,4.475928],[-59.745801,4.41665],[-59.703271,4.381104],[-59.699707,4.353516],[-59.72749,4.287646],[-59.738574,4.226758],[-59.716895,4.188184],[-59.691211,4.1604],[-59.620215,4.023145],[-59.586426,3.975391],[-59.557764,3.96001],[-59.551123,3.933545],[-59.575391,3.883447],[-59.604443,3.819678],[-59.670215,3.752734],[-59.679004,3.699805],[-59.731641,3.666553],[-59.854395,3.5875],[-59.833057,3.462158],[-59.828809,3.398584],[-59.831152,3.349219],[-59.873047,3.283105],[-59.945654,3.087842],[-59.972314,2.990479],[-59.995898,2.76543],[-59.994336,2.68999],[-59.960791,2.588379],[-59.889648,2.362939],[-59.849121,2.327051],[-59.755225,2.274121],[-59.743506,2.121631],[-59.751758,1.962402],[-59.756201,1.900635],[-59.740723,1.87417],[-59.698535,1.861475],[-59.668506,1.842334],[-59.66377,1.795215],[-59.666602,1.746289],[-59.596631,1.718018],[-59.535693,1.7],[-59.479443,1.632422],[-59.377686,1.527344],[-59.337256,1.508203],[-59.316992,1.4646],[-59.231201,1.376025],[-59.100391,1.343652],[-58.968506,1.30459],[-58.916602,1.248877],[-58.8625,1.203613],[-58.821777,1.201221],[-58.787207,1.208496],[-58.730322,1.24751],[-58.684619,1.281055],[-58.605078,1.27915],[-58.511865,1.284668],[-58.495703,1.312256],[-58.486865,1.347754],[-58.506055,1.438672],[-58.472949,1.46626],[-58.395801,1.481738],[-58.380371,1.530225],[-58.362695,1.556689],[-58.340674,1.587549],[-58.314209,1.591943],[-58.281152,1.574316],[-58.23042,1.563281],[-58.173096,1.547852],[-58.142236,1.516992],[-58.091309,1.514355],[-58.034668,1.520264],[-58.011768,1.539941],[-57.995117,1.574316],[-57.982812,1.648438],[-57.946338,1.650586],[-57.873437,1.667285],[-57.795654,1.7],[-57.691748,1.704785],[-57.594434,1.704102],[-57.545752,1.726074],[-57.500439,1.773828],[-57.412695,1.908936],[-57.366797,1.940137],[-57.31748,1.963477],[-57.275586,1.959229],[-57.1896,1.981592],[-57.118896,2.013965],[-57.092676,2.005811],[-57.037598,1.936475],[-57.010059,1.92124],[-56.969531,1.916406],[-56.836719,1.88125],[-56.76626,1.892187],[-56.689844,1.914307],[-56.616455,1.922656],[-56.563574,1.907227],[-56.525488,1.927246],[-56.482812,1.942139],[-56.452832,1.932324],[-56.38584,1.923877],[-56.227148,1.885352],[-56.019922,1.842236],[-55.96333,1.85708],[-55.929639,1.8875],[-55.921631,1.97666],[-55.915332,2.039551],[-55.961963,2.095117],[-56.020068,2.158154],[-56.073633,2.236768],[-56.137695,2.259033],[-56.129395,2.299512],[-56.087793,2.341309],[-56.045117,2.364404],[-56.020361,2.392773],[-55.993506,2.49751],[-55.975586,2.515967],[-55.957471,2.520459],[-55.935937,2.516602],[-55.89375,2.489502],[-55.730566,2.406152],[-55.658936,2.41875],[-55.385352,2.440625],[-55.343994,2.48877],[-55.286035,2.499658],[-55.187695,2.54751],[-55.148828,2.550781],[-55.114111,2.539209],[-55.070312,2.54834],[-55.005811,2.592969],[-54.978662,2.597656],[-54.968408,2.54834],[-54.926562,2.497363],[-54.876074,2.450391],[-54.85166,2.439551],[-54.766846,2.454736],[-54.722217,2.44165],[-54.70293,2.397949],[-54.697412,2.359814],[-54.661865,2.327539],[-54.61626,2.326758],[-54.591943,2.31377],[-54.550488,2.293066],[-54.515088,2.245459],[-54.433105,2.20752],[-54.293066,2.154248],[-54.227979,2.15332],[-54.167383,2.137061],[-54.130078,2.121045],[-54.089746,2.150488],[-53.946436,2.232568],[-53.876611,2.278271],[-53.829541,2.312939],[-53.794238,2.345996],[-53.767773,2.354834],[-53.750146,2.33501],[-53.734717,2.308545],[-53.683691,2.29292],[-53.563965,2.261914],[-53.508984,2.253125],[-53.431836,2.279443],[-53.366016,2.324219],[-53.334424,2.339746],[-53.285498,2.295215],[-53.252197,2.232275],[-53.229785,2.204883],[-53.180078,2.211328],[-53.082275,2.201709],[-53.009717,2.181738],[-52.964844,2.183545],[-52.903467,2.211523],[-52.87041,2.26665],[-52.783398,2.317187],[-52.700635,2.363672],[-52.653174,2.425732],[-52.583008,2.528906],[-52.559473,2.573145],[-52.554688,2.647656],[-52.455859,2.86416],[-52.418408,2.903857],[-52.396387,2.972217],[-52.356641,3.051562],[-52.356641,3.117725],[-52.327881,3.181738],[-52.27124,3.237109],[-52.229443,3.27168],[-52.162598,3.364697],[-52.116113,3.452295],[-51.999512,3.646875],[-51.990625,3.702002],[-51.944336,3.735107],[-51.928906,3.776953],[-51.879492,3.828564],[-51.82749,3.86958],[-51.805273,3.929932],[-51.76709,3.992676],[-51.683447,4.039697],[-51.652539,4.061279],[-51.557812,4.233789],[-51.54707,4.310889],[-51.461523,4.31377],[-51.3271,4.224756],[-51.219922,4.093604],[-51.07627,3.67168],[-51.052393,3.281836],[-50.994141,3.077539],[-50.827197,2.651855],[-50.816504,2.573047],[-50.789697,2.477783],[-50.736963,2.376758],[-50.67876,2.210352],[-50.676562,2.179443],[-50.714404,2.134033],[-50.658936,2.130957],[-50.608691,2.104102],[-50.575879,1.998584],[-50.534424,1.927246],[-50.458887,1.82959],[-50.304297,1.797656],[-50.187598,1.785986],[-50.054688,1.730713],[-49.957129,1.659863],[-49.881592,1.419922],[-49.90625,1.269043],[-49.898877,1.162988],[-49.937939,1.121436],[-50.047217,1.051953],[-50.070996,1.015088],[-50.294434,0.835742],[-50.343262,0.751025],[-50.462988,0.637305],[-50.581543,0.420508],[-50.755078,0.222559],[-50.816357,0.172559],[-50.910156,0.160986],[-50.96709,0.130273],[-51.101953,-0.03125],[-51.28291,-0.085205],[-51.299561,-0.178809],[-51.40415,-0.392676],[-51.496289,-0.509473],[-51.555029,-0.549121],[-51.702637,-0.762305],[-51.721533,-0.855469],[-51.720605,-1.018457],[-51.819141,-1.117773],[-51.921631,-1.180859],[-51.934473,-1.320312],[-51.980811,-1.367969],[-52.020459,-1.399023],[-52.229248,-1.3625],[-52.553418,-1.514063],[-52.66416,-1.551758],[-52.310303,-1.55957],[-52.19668,-1.640137],[-51.947559,-1.586719],[-51.646289,-1.394336],[-51.531201,-1.354102],[-51.297363,-1.223535],[-51.202344,-1.136523],[-51.028955,-1.032129],[-50.992041,-0.986328],[-50.894922,-0.937598],[-50.842285,-0.999609],[-50.838184,-1.038867],[-50.917871,-1.115234],[-50.897168,-1.164453],[-50.84458,-1.22627],[-50.825537,-1.311426],[-50.818652,-1.37627],[-50.786133,-1.489941],[-50.678955,-1.643848],[-50.675293,-1.694727],[-50.690039,-1.761719],[-50.63877,-1.81709],[-50.585596,-1.849902],[-50.403223,-2.015527],[-50.260449,-1.922949],[-50.172705,-1.896191],[-50.116602,-1.85752],[-49.999219,-1.831836],[-49.902979,-1.870605],[-49.719531,-1.926367],[-49.585352,-1.867188],[-49.313672,-1.731738],[-49.398633,-1.971582],[-49.460156,-2.191504],[-49.506982,-2.280273],[-49.553369,-2.519922],[-49.599316,-2.583887],[-49.636523,-2.656934],[-49.575879,-2.631445],[-49.523926,-2.596875],[-49.45752,-2.50459],[-49.407666,-2.344336],[-49.211035,-1.916504],[-49.154785,-1.878516],[-48.991309,-1.829785],[-48.71001,-1.487695],[-48.6,-1.48877],[-48.52959,-1.56748],[-48.462939,-1.613965],[-48.44585,-1.52041],[-48.349805,-1.482129],[-48.451465,-1.43584],[-48.468066,-1.393848],[-48.477734,-1.323828],[-48.408594,-1.229199],[-48.449805,-1.145508],[-48.306494,-1.039844],[-48.317578,-0.960547],[-48.266455,-0.895117],[-48.201758,-0.82793],[-48.128467,-0.795215],[-48.115088,-0.7375],[-48.068848,-0.713672],[-48.032568,-0.705078],[-47.960938,-0.769629],[-47.883398,-0.693359],[-47.807666,-0.663477],[-47.77373,-0.676758],[-47.731494,-0.710449],[-47.687109,-0.724805],[-47.651074,-0.71875],[-47.557324,-0.669922],[-47.470703,-0.748535],[-47.418652,-0.765918],[-47.43291,-0.721875],[-47.460352,-0.680957],[-47.439063,-0.647656],[-47.398096,-0.62666],[-47.268604,-0.64541],[-47.200537,-0.680469],[-47.126904,-0.74541],[-47.024609,-0.750195],[-46.944336,-0.743359],[-46.893652,-0.779883],[-46.81123,-0.779688],[-46.769922,-0.836523],[-46.644434,-0.916406],[-46.617236,-0.970605],[-46.516309,-0.996875],[-46.421729,-1.030078],[-46.32085,-1.03916],[-46.219141,-1.03125],[-46.21499,-1.099805],[-46.140381,-1.118359],[-46.044629,-1.103027],[-45.972266,-1.187402],[-45.778809,-1.250781],[-45.644775,-1.347852],[-45.556934,-1.330664],[-45.458594,-1.35625],[-45.353027,-1.567383],[-45.32915,-1.717285],[-45.282129,-1.696582],[-45.238574,-1.629492],[-45.18208,-1.507031],[-45.076367,-1.466406],[-45.025781,-1.513477],[-44.919775,-1.588867],[-44.828369,-1.67168],[-44.789844,-1.724805],[-44.721143,-1.733496],[-44.778516,-1.798828],[-44.720947,-1.792285],[-44.65127,-1.745801],[-44.59165,-1.841797],[-44.546777,-1.946289],[-44.537793,-2.052734],[-44.580029,-2.113867],[-44.617285,-2.152148],[-44.658643,-2.227539],[-44.70752,-2.241113],[-44.756348,-2.265527],[-44.700635,-2.32041],[-44.662402,-2.373242],[-44.579004,-2.230469],[-44.520361,-2.190332],[-44.435449,-2.168066],[-44.391309,-2.269629],[-44.381836,-2.365527],[-44.520117,-2.405469],[-44.520654,-2.48125],[-44.562012,-2.524219],[-44.589014,-2.573438],[-44.610791,-2.676855],[-44.638965,-2.7625],[-44.721387,-3.142285],[-44.723047,-3.204785],[-44.622656,-3.137891],[-44.437549,-2.944434],[-44.381152,-2.738379],[-44.308154,-2.535156],[-44.228613,-2.471289],[-44.179395,-2.471191],[-44.105566,-2.493457],[-44.101367,-2.560059],[-44.112646,-2.598535],[-44.191602,-2.699609],[-44.225195,-2.75498],[-44.192676,-2.80957],[-44.013232,-2.642188],[-43.93291,-2.583496],[-43.864453,-2.59541],[-43.728613,-2.518164],[-43.455127,-2.502051],[-43.434619,-2.413672],[-43.380078,-2.376074],[-43.229687,-2.386035],[-42.936719,-2.465039],[-42.832275,-2.52959],[-42.675879,-2.589648],[-42.593555,-2.661035],[-42.249609,-2.791992],[-41.999854,-2.806055],[-41.876172,-2.746582],[-41.721875,-2.808887],[-41.640137,-2.878613],[-41.479932,-2.916504],[-41.318213,-2.93623],[-41.194531,-2.886133],[-40.875586,-2.869629],[-40.474561,-2.795605],[-40.235352,-2.813184],[-39.964697,-2.861523],[-39.771826,-2.98584],[-39.609424,-3.05625],[-39.511182,-3.125586],[-39.352686,-3.197363],[-39.014355,-3.390234],[-38.895996,-3.501758],[-38.68623,-3.653711],[-38.475781,-3.71748],[-38.361914,-3.876465],[-38.271875,-3.948047],[-38.048828,-4.216406],[-37.795654,-4.404297],[-37.626318,-4.59209],[-37.301465,-4.713086],[-37.174658,-4.912402],[-36.954883,-4.936719],[-36.861133,-4.966602],[-36.747363,-5.050684],[-36.590723,-5.097559],[-36.386719,-5.084277],[-36.161768,-5.09375],[-35.979883,-5.054395],[-35.549414,-5.129395],[-35.481689,-5.166016],[-35.392578,-5.250879],[-35.235449,-5.566699],[-35.141748,-5.917188],[-35.095459,-6.185352],[-34.988184,-6.39375],[-34.92959,-6.785059],[-34.879883,-6.908203],[-34.875977,-7.00293],[-34.833887,-7.024414],[-34.805469,-7.288379],[-34.816602,-7.394824],[-34.857764,-7.533301],[-34.86084,-7.59502],[-34.854785,-7.634277],[-34.872998,-7.69209],[-34.878613,-7.747461],[-34.836914,-7.871777],[-34.834668,-7.971484],[-34.890527,-8.092188],[-34.96665,-8.407617],[-35.157764,-8.930566],[-35.340869,-9.230664],[-35.59707,-9.540625],[-35.763965,-9.702539],[-35.830127,-9.719043],[-35.89082,-9.687012],[-35.847754,-9.772461],[-35.885449,-9.847656],[-36.05498,-10.075781],[-36.223535,-10.225098],[-36.39834,-10.484082],[-36.411621,-10.489941],[-36.635742,-10.589941],[-36.768311,-10.67168],[-36.937793,-10.82041],[-37.093359,-11.054785],[-37.125488,-11.084961],[-37.182812,-11.068457],[-37.181201,-11.1875],[-37.315137,-11.375977],[-37.356006,-11.403906],[-37.354883,-11.350488],[-37.331641,-11.309863],[-37.320801,-11.266602],[-37.321777,-11.215137],[-37.359229,-11.252539],[-37.438477,-11.39375],[-37.411816,-11.497266],[-37.469336,-11.653613],[-37.688721,-12.1],[-37.957324,-12.475488],[-38.019238,-12.591309],[-38.239746,-12.844238],[-38.401758,-12.966211],[-38.447314,-12.96709],[-38.498926,-12.956641],[-38.524902,-12.762305],[-38.654004,-12.644629],[-38.690967,-12.623926],[-38.743896,-12.748535],[-38.787988,-12.782715],[-38.851758,-12.790137],[-38.783594,-12.844434],[-38.763721,-12.907227],[-38.833154,-13.03291],[-38.835303,-13.147168],[-38.95918,-13.273047],[-39.030908,-13.365137],[-39.067383,-13.480469],[-39.089355,-13.588184],[-39.034912,-13.558789],[-39.009082,-13.581445],[-38.988623,-13.615039],[-39.001221,-13.664551],[-39.041113,-13.758105],[-39.034912,-13.991016],[-39.048145,-14.043945],[-39.008496,-14.101172],[-38.966504,-14.003418],[-38.942334,-14.030664],[-39.05957,-14.654785],[-39.013379,-14.935645],[-38.996191,-15.253809],[-38.943213,-15.564355],[-38.885254,-15.841992],[-38.880615,-15.864258],[-38.960791,-16.186523],[-39.063232,-16.504395],[-39.125049,-16.763574],[-39.163965,-17.043555],[-39.202881,-17.178125],[-39.215234,-17.31582],[-39.170605,-17.64209],[-39.154004,-17.703906],[-39.278369,-17.849414],[-39.412598,-17.92002],[-39.486768,-17.990137],[-39.650781,-18.252344],[-39.739795,-18.639844],[-39.741943,-18.845996],[-39.699854,-19.277832],[-39.731445,-19.453906],[-39.783301,-19.571777],[-39.844727,-19.649121],[-40.001367,-19.741992],[-40.141699,-19.968262],[-40.202734,-20.206055],[-40.298877,-20.292676],[-40.318555,-20.425781],[-40.395947,-20.569434],[-40.596582,-20.783789],[-40.727051,-20.846191],[-40.789258,-20.906055],[-40.82876,-21.031348],[-40.954541,-21.237891],[-41.047266,-21.505664],[-41.023145,-21.596875],[-41.021582,-21.61084],[-40.987842,-21.920313],[-41.000293,-21.999023],[-41.12251,-22.084375],[-41.58291,-22.243652],[-41.705518,-22.309668],[-41.98042,-22.580664],[-41.997559,-22.644629],[-41.986133,-22.73584],[-41.940918,-22.788281],[-41.9875,-22.845117],[-42.042383,-22.94707],[-42.122461,-22.94082],[-42.581055,-22.941016],[-42.829297,-22.97334],[-42.958301,-22.96709],[-43.016211,-22.942578],[-43.081152,-22.902539],[-43.100684,-22.850098],[-43.06543,-22.770703],[-43.086279,-22.72334],[-43.154297,-22.725195],[-43.229004,-22.747656],[-43.241943,-22.795117],[-43.236621,-22.828809],[-43.208838,-22.878125],[-43.193604,-22.938574],[-43.22417,-22.991211],[-43.369482,-22.998047],[-43.532813,-23.046387],[-43.736523,-23.066602],[-43.898828,-23.101465],[-43.973828,-23.057324],[-43.898828,-23.035254],[-43.791406,-23.045996],[-43.675977,-23.009473],[-43.70293,-22.966309],[-43.866162,-22.910547],[-44.047461,-22.944727],[-44.147998,-23.011035],[-44.36792,-23.00498],[-44.637256,-23.055469],[-44.681152,-23.106934],[-44.673828,-23.206641],[-44.621094,-23.228516],[-44.569678,-23.274023],[-44.619092,-23.316406],[-44.667187,-23.335156],[-44.95166,-23.381445],[-45.21543,-23.575586],[-45.325391,-23.599707],[-45.423291,-23.685352],[-45.433398,-23.758496],[-45.464307,-23.802539],[-45.5271,-23.804785],[-45.664648,-23.764844],[-45.843164,-23.763672],[-45.97207,-23.795508],[-46.630762,-24.110352],[-46.867285,-24.236328],[-47.137207,-24.493164],[-47.592187,-24.781055],[-47.831152,-24.95293],[-47.876563,-24.997461],[-47.914307,-24.999902],[-47.98916,-25.035742],[-47.959375,-25.06543],[-47.90835,-25.068164],[-47.929395,-25.168262],[-48.024365,-25.236719],[-48.202734,-25.416504],[-48.242432,-25.40332],[-48.185937,-25.309863],[-48.273486,-25.306348],[-48.40249,-25.27207],[-48.458496,-25.310742],[-48.427637,-25.40332],[-48.476123,-25.442969],[-48.56416,-25.447461],[-48.643994,-25.436523],[-48.731738,-25.36875],[-48.692187,-25.491504],[-48.507031,-25.521289],[-48.429883,-25.550195],[-48.401172,-25.597363],[-48.545166,-25.815918],[-48.665771,-25.844336],[-48.679004,-25.875195],[-48.612842,-25.875],[-48.576318,-25.935449],[-48.619434,-26.179395],[-48.679004,-26.225781],[-48.71377,-26.226953],[-48.748291,-26.268652],[-48.700684,-26.34834],[-48.651611,-26.406445],[-48.658154,-26.519141],[-48.676514,-26.612402],[-48.677734,-26.70293],[-48.615674,-26.878125],[-48.593408,-27.058008],[-48.568359,-27.123438],[-48.55415,-27.195996],[-48.595508,-27.263867],[-48.571973,-27.372754],[-48.642578,-27.55791],[-48.605664,-27.825195],[-48.620801,-28.075586],[-48.648438,-28.207227],[-48.693213,-28.310156],[-48.797266,-28.442676],[-48.799658,-28.575293],[-49.023584,-28.698633],[-49.271289,-28.871191],[-49.499902,-29.075391],[-49.745996,-29.363184],[-50.03335,-29.800977],[-50.299512,-30.425781],[-50.619971,-30.897656],[-50.748145,-31.068066],[-50.921387,-31.258398],[-51.151758,-31.480371],[-51.4604,-31.702441],[-51.798145,-31.900293],[-51.920215,-31.989551],[-52.039209,-32.114844],[-52.068945,-32.063086],[-52.043164,-31.977539],[-52.05957,-31.913477],[-52.063232,-31.830371],[-51.995117,-31.815039],[-51.893164,-31.867773],[-51.841211,-31.832031],[-51.803418,-31.79668],[-51.680664,-31.774609],[-51.446191,-31.557324],[-51.272168,-31.476953],[-51.174316,-31.339746],[-51.15752,-31.266797],[-51.161426,-31.118848],[-51.105957,-31.081348],[-50.980078,-31.094238],[-50.954395,-31.052148],[-50.965332,-31.005469],[-50.94082,-30.903711],[-50.770166,-30.813379],[-50.689307,-30.704199],[-50.716309,-30.425977],[-50.685059,-30.413477],[-50.614844,-30.456836],[-50.581934,-30.438867],[-50.546533,-30.316895],[-50.563525,-30.253613],[-50.646191,-30.236816],[-50.931885,-30.374316],[-51.024951,-30.368652],[-51.040381,-30.260645],[-51.179297,-30.211035],[-51.233594,-30.121387],[-51.249854,-30.059961],[-51.298047,-30.034863],[-51.29502,-30.141016],[-51.281787,-30.244141],[-51.157275,-30.364258],[-51.187549,-30.411914],[-51.246582,-30.467578],[-51.287695,-30.591211],[-51.283057,-30.751563],[-51.316406,-30.702734],[-51.359082,-30.674512],[-51.376465,-30.846875],[-51.459131,-30.912793],[-51.485254,-30.977539],[-51.463672,-31.052637],[-51.506299,-31.104492],[-51.716895,-31.24375],[-51.926807,-31.338867],[-51.972461,-31.383789],[-51.994873,-31.489941],[-52.026953,-31.599023],[-52.119824,-31.694922],[-52.193555,-31.885547],[-52.191553,-31.967578],[-52.16709,-32.088477],[-52.127393,-32.167773],[-52.190186,-32.220801],[-52.274609,-32.32373],[-52.34165,-32.439746],[-52.508496,-32.875293],[-52.652246,-33.137793],[-52.762891,-33.266406],[-52.92085,-33.401953],[-53.370605,-33.742188],[-53.397559,-33.737305],[-53.463574,-33.709863],[-53.518848,-33.677246],[-53.531348,-33.655469],[-53.537646,-33.622852],[-53.530371,-33.500293],[-53.531348,-33.170898],[-53.511865,-33.108691],[-53.482861,-33.068555],[-53.395215,-33.010352],[-53.310107,-32.927051],[-53.214062,-32.821094],[-53.125586,-32.736719],[-53.157275,-32.680078],[-53.23125,-32.625391],[-53.362744,-32.581152],[-53.489404,-32.503223],[-53.601709,-32.403027],[-53.653613,-32.29873],[-53.701123,-32.186328],[-53.746582,-32.097461],[-53.761719,-32.056836],[-53.806104,-32.039941],[-53.876514,-31.994531],[-53.920605,-31.952344],[-53.985156,-31.928125],[-54.100439,-31.901563],[-54.220557,-31.855176],[-54.369922,-31.74502],[-54.477686,-31.622754],[-54.530908,-31.541992],[-54.587646,-31.485156],[-54.895996,-31.391211],[-55.036035,-31.279004],[-55.091162,-31.313965],[-55.173535,-31.27959],[-55.254639,-31.225586],[-55.278955,-31.18418],[-55.313281,-31.141699],[-55.345508,-31.092969],[-55.366064,-31.046191],[-55.449561,-30.964453],[-55.557324,-30.875977],[-55.603027,-30.850781],[-55.627148,-30.858105],[-55.650488,-30.89209],[-55.665234,-30.924902],[-55.705957,-30.946582],[-55.756348,-30.987109],[-55.807764,-31.036719],[-55.873682,-31.069629],[-55.952002,-31.080859],[-56.004687,-31.079199],[-56.015527,-31.059668],[-56.018457,-30.991895],[-55.998975,-30.837207],[-56.044824,-30.777637],[-56.105859,-30.71377],[-56.176172,-30.628418],[-56.407227,-30.447461],[-56.72168,-30.186914],[-56.832715,-30.107227],[-56.937256,-30.101074],[-57.032715,-30.109961],[-57.120508,-30.144434],[-57.186914,-30.264844],[-57.214453,-30.283398],[-57.383838,-30.280664],[-57.552295,-30.26123],[-57.608887,-30.187793],[-57.563867,-30.139941],[-57.405225,-30.033887],[-57.31748,-29.939453],[-57.300684,-29.856543],[-57.224658,-29.782129],[-57.089355,-29.716211],[-56.938623,-29.594824],[-56.772461,-29.417871],[-56.671533,-29.287305],[-56.63584,-29.203027],[-56.570703,-29.138086],[-56.475977,-29.09248],[-56.393262,-28.997266],[-56.322363,-28.852441],[-56.225537,-28.737207],[-56.102881,-28.651758],[-56.034229,-28.580859],[-56.019629,-28.524609],[-55.984912,-28.488574],[-55.930176,-28.472852],[-55.903662,-28.443262],[-55.90542,-28.399609],[-55.890527,-28.37002],[-55.858887,-28.354199],[-55.806055,-28.359766],[-55.731982,-28.386621],[-55.687256,-28.381641],[-55.671973,-28.344922],[-55.691504,-28.302832],[-55.745996,-28.255469],[-55.725488,-28.204102],[-55.582373,-28.120996],[-55.47666,-28.089355],[-55.409814,-28.037793],[-55.346484,-27.955957],[-55.24375,-27.898828],[-55.101514,-27.866797],[-55.063867,-27.835938],[-55.068994,-27.796289],[-55.039941,-27.767773],[-54.955908,-27.747168],[-54.910205,-27.708594],[-54.902783,-27.651953],[-54.875732,-27.599219],[-54.829102,-27.550586],[-54.7771,-27.53252],[-54.719727,-27.544922],[-54.665869,-27.526563],[-54.61543,-27.477148],[-54.554932,-27.454102],[-54.484326,-27.457324],[-54.448145,-27.446484],[-54.327002,-27.423535],[-54.260156,-27.382031],[-54.205225,-27.289648],[-54.156445,-27.253809],[-54.113818,-27.274707],[-54.040137,-27.24375],[-53.935352,-27.161133],[-53.915625,-27.15957],[-53.838184,-27.121094],[-53.758496,-26.97832],[-53.717285,-26.882812],[-53.727148,-26.804688],[-53.75332,-26.748633],[-53.74458,-26.666504],[-53.718164,-26.443164],[-53.710938,-26.351855],[-53.668555,-26.288184],[-53.671289,-26.225098],[-53.746924,-26.083691],[-53.823242,-25.95957],[-53.864209,-25.748828],[-53.891162,-25.668848],[-53.954785,-25.647656],[-54.012305,-25.57793],[-54.08501,-25.571875],[-54.119238,-25.545215],[-54.15459,-25.523047],[-54.206152,-25.52959],[-54.250098,-25.57041],[-54.331885,-25.571875],[-54.38335,-25.588672],[-54.443945,-25.625],[-54.501514,-25.608301],[-54.537842,-25.576465],[-54.615869,-25.576074],[-54.610547,-25.432715],[-54.473145,-25.220215],[-54.43623,-25.121289],[-54.454102,-25.065234],[-54.412988,-24.86748],[-54.312939,-24.528125],[-54.281006,-24.306055],[-54.317285,-24.20127],[-54.318262,-24.128125],[-54.266895,-24.06582],[-54.241797,-24.047266],[-54.370801,-23.971191],[-54.440234,-23.901758],[-54.52959,-23.852148],[-54.625488,-23.8125],[-54.671777,-23.829004],[-54.721387,-23.852148],[-54.817285,-23.888477],[-54.926465,-23.951367],[-54.982666,-23.974512],[-55.081885,-23.997656],[-55.194336,-24.01748],[-55.286914,-24.004297],[-55.366309,-23.991016],[-55.415918,-23.951367],[-55.442383,-23.865332],[-55.442383,-23.792578],[-55.458887,-23.686719],[-55.518457,-23.627246],[-55.538281,-23.580957],[-55.541602,-23.524707],[-55.534961,-23.461914],[-55.518457,-23.415625],[-55.528369,-23.359375],[-55.554834,-23.319629],[-55.548193,-23.250195],[-55.561426,-23.154297],[-55.601123,-23.094727],[-55.620996,-23.025293],[-55.620996,-22.955859],[-55.650732,-22.886426],[-55.654053,-22.810352],[-55.627588,-22.740918],[-55.617676,-22.671484],[-55.647412,-22.621875],[-55.703662,-22.59209],[-55.746631,-22.512695],[-55.753271,-22.410156],[-55.799561,-22.353906],[-55.84917,-22.307617],[-55.905371,-22.307617],[-55.991406,-22.281152],[-56.06748,-22.284473],[-56.189844,-22.281152],[-56.246045,-22.264648],[-56.275781,-22.228223],[-56.351855,-22.178613],[-56.394873,-22.092676],[-56.447803,-22.076172],[-56.523828,-22.102539],[-56.550293,-22.135645],[-56.580078,-22.181934],[-56.633008,-22.234863],[-56.702441,-22.231543],[-56.775195,-22.261328],[-56.844678,-22.264648],[-56.937256,-22.271289],[-57.029883,-22.244824],[-57.142334,-22.215039],[-57.238232,-22.195215],[-57.330859,-22.215039],[-57.393652,-22.198438],[-57.476367,-22.188574],[-57.568945,-22.181934],[-57.641699,-22.129004],[-57.721094,-22.099219],[-57.764062,-22.10918],[-57.820312,-22.142285],[-57.879834,-22.135645],[-57.955908,-22.10918],[-57.985693,-22.046387],[-57.979053,-22.006641],[-57.9625,-21.966992],[-57.932764,-21.910742],[-57.949316,-21.851172],[-57.942676,-21.79834],[-57.929443,-21.751953],[-57.916211,-21.699121],[-57.926172,-21.649512],[-57.929443,-21.596582],[-57.936084,-21.546973],[-57.945996,-21.494043],[-57.906299,-21.417969],[-57.873242,-21.355078],[-57.893066,-21.302246],[-57.886475,-21.26582],[-57.86001,-21.20625],[-57.826953,-21.133594],[-57.830225,-20.997949],[-57.86001,-20.918555],[-57.892236,-20.89707],[-57.900488,-20.873047],[-57.884814,-20.841699],[-57.901904,-20.809375],[-57.908496,-20.776367],[-57.891406,-20.747461],[-57.915137,-20.690332],[-57.9625,-20.673828],[-57.979053,-20.657324],[-57.995605,-20.594434],[-58.008838,-20.52168],[-58.002246,-20.46543],[-58.025391,-20.41582],[-58.058447,-20.386133],[-58.091504,-20.333203],[-58.124609,-20.293457],[-58.137793,-20.237305],[-58.159766,-20.164648],[-58.09375,-20.151074],[-58.067627,-20.110352],[-58.021143,-20.055176],[-57.960156,-20.040723],[-57.887598,-20.02041],[-57.860742,-19.97959],[-58.029932,-19.832715],[-58.131494,-19.744531],[-58.072021,-19.625293],[-57.97168,-19.424219],[-57.874512,-19.229492],[-57.800391,-19.080957],[-57.781445,-19.053516],[-57.716797,-19.044043],[-57.728613,-18.967383],[-57.730859,-18.917188],[-57.783105,-18.914258],[-57.725,-18.733203],[-57.63916,-18.475],[-57.574023,-18.279297],[-57.553125,-18.246484],[-57.506152,-18.237305],[-57.495654,-18.214648],[-57.552051,-18.183105],[-57.586475,-18.122266],[-57.66167,-17.947363],[-57.780176,-17.671777],[-57.788867,-17.573047],[-57.832471,-17.512109],[-57.905029,-17.532324],[-57.990918,-17.512891],[-58.205566,-17.363086],[-58.347754,-17.282129],[-58.395996,-17.234277],[-58.417383,-17.080566],[-58.459814,-16.910742],[-58.478125,-16.700684],[-58.470605,-16.650195],[-58.350391,-16.49082],[-58.350781,-16.410254],[-58.340576,-16.339941],[-58.345605,-16.284375],[-58.375391,-16.283594],[-58.423682,-16.30791],[-58.496582,-16.32666],[-58.537939,-16.328223],[-58.957275,-16.313184],[-59.434277,-16.295996],[-59.831152,-16.281738],[-60.175586,-16.269336],[-60.187207,-16.132129],[-60.206641,-15.901953],[-60.22041,-15.738672],[-60.242334,-15.47959],[-60.380469,-15.318262],[-60.530469,-15.143164],[-60.583203,-15.09834],[-60.402002,-15.092773],[-60.27334,-15.08877],[-60.298877,-14.618555],[-60.338037,-14.570508],[-60.372705,-14.41875],[-60.39624,-14.332813],[-60.460156,-14.263086],[-60.474658,-14.184766],[-60.462988,-14.132422],[-60.428076,-14.1],[-60.40498,-14.019238],[-60.422363,-13.937988],[-60.460156,-13.862402],[-60.506592,-13.789844],[-60.595312,-13.745313],[-60.722363,-13.664355],[-60.914502,-13.561426],[-61.077002,-13.489746],[-61.12915,-13.498535],[-61.416064,-13.526563],[-61.511572,-13.541211],[-61.575684,-13.524805],[-61.789941,-13.525586],[-61.874121,-13.47041],[-61.944727,-13.40625],[-62.094775,-13.241992],[-62.118018,-13.159766],[-62.176074,-13.133691],[-62.263916,-13.143652],[-62.352832,-13.132422],[-62.525537,-13.064258],[-62.687061,-12.994336],[-62.765479,-12.997266],[-62.835156,-12.953711],[-62.95791,-12.84707],[-63.015186,-12.805566],[-63.041357,-12.750391],[-63.06748,-12.669141],[-63.116797,-12.65166],[-63.180664,-12.666211],[-63.249756,-12.70791],[-63.34668,-12.680078],[-63.465234,-12.605176],[-63.541895,-12.54668],[-63.585645,-12.518945],[-63.688574,-12.478027],[-63.788086,-12.469434],[-63.938574,-12.529688],[-64.061621,-12.505078],[-64.255029,-12.483301],[-64.420508,-12.439746],[-64.480762,-12.326172],[-64.513428,-12.250977],[-64.61167,-12.203906],[-64.690039,-12.146484],[-64.783447,-12.059375],[-64.829883,-12.030273],[-64.914355,-12.005957],[-64.992529,-11.975195],[-65.001221,-11.92002],[-65.030273,-11.847363],[-65.037109,-11.829395],[-65.090283,-11.741211],[-65.115137,-11.735059],[-65.142676,-11.752344],[-65.163379,-11.765137],[-65.185742,-11.749512],[-65.189746,-11.710059],[-65.175391,-11.646875],[-65.206201,-11.580566],[-65.282275,-11.511035],[-65.322021,-11.43916],[-65.325488,-11.364746],[-65.342383,-11.315039],[-65.372852,-11.289941],[-65.389893,-11.246289],[-65.393604,-11.184277],[-65.371582,-11.110352],[-65.323779,-11.024805],[-65.334033,-10.892773],[-65.402295,-10.714746],[-65.43999,-10.58623],[-65.447119,-10.507422],[-65.436914,-10.449023],[-65.395459,-10.392285],[-65.313086,-10.253027],[-65.298584,-10.146777],[-65.324561,-10.026953],[-65.328125,-9.935547],[-65.309326,-9.872656],[-65.337891,-9.790234],[-65.396143,-9.712402],[-65.436768,-9.710449],[-65.491992,-9.731738],[-65.558691,-9.797461],[-65.637109,-9.809082],[-65.706787,-9.768457],[-65.924707,-9.785449],[-66.263574,-9.826074],[-66.399219,-9.868164],[-66.478906,-9.886133],[-66.575342,-9.899902],[-66.72998,-9.975488],[-67.111523,-10.268945],[-67.190479,-10.311426],[-67.280469,-10.317285],[-67.332715,-10.35791],[-67.416943,-10.389844],[-67.582422,-10.505957],[-67.66665,-10.598926],[-67.721777,-10.683105],[-67.785693,-10.686035],[-67.83501,-10.662793],[-67.991699,-10.674414],[-68.07168,-10.703125],[-68.158643,-10.785059],[-68.266602,-10.933105],[-68.311133,-10.975195],[-68.397998,-11.01875],[-68.49834,-11.054785],[-68.622656,-11.10918],[-68.678369,-11.112793],[-68.72749,-11.122461],[-68.769922,-11.097656],[-68.784082,-11.044629],[-68.84834,-11.011133],[-69.00166,-10.994336],[-69.228516,-10.955664],[-69.462549,-10.948145],[-69.578613,-10.951758],[-69.674023,-10.954102],[-69.839795,-10.933398],[-69.960352,-10.929883],[-70.066309,-10.982422],[-70.220068,-11.047656],[-70.290381,-11.064258],[-70.341992,-11.066699],[-70.392285,-11.058594],[-70.450879,-11.024805],[-70.533252,-10.946875],[-70.596533,-10.976855],[-70.642334,-11.010254],[-70.641553,-10.84082],[-70.640332,-10.586035],[-70.639355,-10.361328],[-70.638525,-10.181543],[-70.637598,-9.971777],[-70.636914,-9.82373],[-70.593799,-9.76748],[-70.567236,-9.70459],[-70.59917,-9.620508],[-70.592236,-9.543457],[-70.570166,-9.489844],[-70.541113,-9.4375],[-70.60791,-9.463672],[-70.636914,-9.478223],[-70.672461,-9.517969],[-70.758496,-9.57168],[-70.81626,-9.625293],[-70.884521,-9.669043],[-70.970752,-9.765723],[-71.041748,-9.81875],[-71.115283,-9.852441],[-71.237939,-9.966016],[-71.339404,-9.988574],[-71.608008,-10.006055],[-71.887451,-10.005566],[-72.142969,-10.005176],[-72.181592,-10.003711],[-72.179102,-9.910156],[-72.172852,-9.844043],[-72.259961,-9.774316],[-72.26582,-9.688477],[-72.289014,-9.629199],[-72.318066,-9.556641],[-72.379053,-9.510156],[-72.464746,-9.492188],[-72.605469,-9.452051],[-72.814258,-9.410352],[-73.01377,-9.407422],[-73.209424,-9.411426],[-73.089844,-9.265723],[-72.970361,-9.120117],[-72.974023,-8.993164],[-73.070508,-8.882812],[-73.122559,-8.814063],[-73.203125,-8.719336],[-73.302441,-8.654004],[-73.356738,-8.566992],[-73.351709,-8.51416],[-73.3604,-8.479297],[-73.398145,-8.458984],[-73.435889,-8.427051],[-73.488135,-8.392188],[-73.549121,-8.345801],[-73.549121,-8.299316],[-73.572363,-8.249902],[-73.610107,-8.191895],[-73.610107,-8.14541],[-73.644922,-8.072852],[-73.682666,-8.020605],[-73.72041,-7.985742],[-73.775586,-7.936426],[-73.772705,-7.895703],[-73.732031,-7.875391],[-73.7146,-7.829004],[-73.72041,-7.78252],[-73.766895,-7.753516],[-73.82207,-7.738965],[-73.894629,-7.654785],[-73.946875,-7.61123],[-73.981738,-7.585059],[-74.002051,-7.556055],[-73.981738,-7.535742],[-73.958496,-7.506641],[-73.952686,-7.460254],[-73.964307,-7.416699],[-73.964307,-7.378906],[-73.929443,-7.367285],[-73.891748,-7.373145],[-73.854004,-7.349902],[-73.804639,-7.341211],[-73.749463,-7.335352],[-73.72041,-7.309277],[-73.72334,-7.262793],[-73.758203,-7.172754],[-73.793018,-7.135059],[-73.804639,-7.079883],[-73.77627,-6.973535],[-73.758105,-6.905762],[-73.694531,-6.833789],[-73.499902,-6.679492],[-73.325488,-6.574707],[-73.240332,-6.564063],[-73.177441,-6.525195],[-73.137354,-6.46582],[-73.126318,-6.400879],[-73.135352,-6.344336],[-73.167725,-6.260645],[-73.206494,-6.156445],[-73.235547,-6.098438],[-73.209375,-6.028711],[-73.162891,-5.933398],[-73.068066,-5.789551],[-72.979883,-5.634863],[-72.970215,-5.589648],[-72.958936,-5.495215],[-72.918262,-5.302539],[-72.895801,-5.198242],[-72.907471,-5.157715],[-72.887061,-5.122754],[-72.831934,-5.09375],[-72.69873,-5.067188],[-72.60835,-5.00957],[-72.468994,-4.90127],[-72.352832,-4.786035],[-72.256787,-4.748926],[-72.08252,-4.642285],[-71.982422,-4.574609],[-71.943164,-4.55332],[-71.844727,-4.504395],[-71.668359,-4.487305],[-71.521338,-4.469727],[-71.438281,-4.437598],[-71.316797,-4.424316],[-71.23501,-4.388184],[-71.144238,-4.387207],[-70.973682,-4.350488],[-70.915625,-4.295313],[-70.866016,-4.22959],[-70.799512,-4.17334],[-70.721582,-4.158887],[-70.63457,-4.168652],[-70.530664,-4.167578],[-70.404639,-4.150098],[-70.343652,-4.193652],[-70.316895,-4.246973],[-70.23916,-4.301172],[-70.183984,-4.298145],[-70.128809,-4.286621],[-70.05332,-4.333105],[-70.003955,-4.327246],[-69.972021,-4.301172],[-69.965918,-4.235938],[-69.948193,-4.200586],[-69.911035,-3.996582],[-69.849756,-3.659863],[-69.794141,-3.35459],[-69.732617,-3.016699],[-69.669043,-2.667676],[-69.604687,-2.314258],[-69.551855,-2.024219],[-69.506445,-1.774902],[-69.478613,-1.621973],[-69.434912,-1.42168],[-69.417871,-1.245703],[-69.400244,-1.194922],[-69.411426,-1.152246],[-69.449121,-1.091602],[-69.44873,-1.064941],[-69.444336,-1.02959],[-69.44873,-0.99873],[-69.488428,-0.965723],[-69.519287,-0.945801],[-69.543555,-0.917188],[-69.55459,-0.877441],[-69.574414,-0.837793],[-69.583252,-0.795898],[-69.611914,-0.762793],[-69.620703,-0.720898],[-69.600879,-0.68125],[-69.592041,-0.639355],[-69.600879,-0.599609],[-69.611914,-0.55332],[-69.633984,-0.509277],[-69.66748,-0.482422],[-69.747461,-0.452539],[-69.82793,-0.381348],[-69.922754,-0.31748],[-70.044043,-0.196191],[-70.070508,-0.138867],[-70.070947,0.018555],[-70.065723,0.189355],[-70.05791,0.447363],[-70.053906,0.578613],[-69.985449,0.58584],[-69.925098,0.589404],[-69.862061,0.598486],[-69.807129,0.607471],[-69.756738,0.626367],[-69.718896,0.649805],[-69.673828,0.665088],[-69.638721,0.659668],[-69.603613,0.680371],[-69.564844,0.700195],[-69.527051,0.716406],[-69.472119,0.729932],[-69.420801,0.698389],[-69.391992,0.666895],[-69.358643,0.651562],[-69.327148,0.655176],[-69.305518,0.652441],[-69.283008,0.627246],[-69.254199,0.625439],[-69.212793,0.629932],[-69.174072,0.635352],[-69.156055,0.642529],[-69.15332,0.658789],[-69.163232,0.68667],[-69.176758,0.712842],[-69.165967,0.75332],[-69.165039,0.801953],[-69.163232,0.864062],[-69.193848,0.898291],[-69.224463,0.963135],[-69.258691,1.015381],[-69.311816,1.050488],[-69.361377,1.064014],[-69.402783,1.042383],[-69.441504,1.038818],[-69.470312,1.058594],[-69.517139,1.059473],[-69.567578,1.065771],[-69.620898,1.073242],[-69.716992,1.059082],[-69.751318,1.076611],[-69.798145,1.078418],[-69.852148,1.059521],[-69.850781,1.308789],[-69.849463,1.543896],[-69.848584,1.70874],[-69.799951,1.705176],[-69.7396,1.734863],[-69.650049,1.739453],[-69.58125,1.770752],[-69.54292,1.773242],[-69.470166,1.75791],[-69.394336,1.725781],[-69.319727,1.72124],[-69.124268,1.721289],[-68.913184,1.721387],[-68.678467,1.721484],[-68.443457,1.721582],[-68.239551,1.72168],[-68.176562,1.719824],[-68.213281,1.774561],[-68.255957,1.845508],[-68.239453,1.901367],[-68.218359,1.957617],[-68.193799,1.987012],[-68.130273,1.955762],[-68.077051,1.860107],[-68.032861,1.788037],[-67.989746,1.752539],[-67.93623,1.748486],[-67.875537,1.760596],[-67.815088,1.790088],[-67.711865,1.922119],[-67.609229,2.035059],[-67.556055,2.072998],[-67.499658,2.10791],[-67.457764,2.121143],[-67.400439,2.116699],[-67.351953,2.08584],[-67.320605,2.03208],[-67.205811,1.844824],[-67.119238,1.703613],[-67.090137,1.615576],[-67.088281,1.400586],[-67.093652,1.21001],[-67.082275,1.1854],[-67.065234,1.178369],[-66.876025,1.223047]]],[[[-49.628662,-0.229199],[-49.535205,-0.233594],[-49.402881,-0.214648],[-49.314258,-0.167871],[-49.215088,-0.158691],[-49.116992,-0.163574],[-48.786572,-0.215527],[-48.588037,-0.231641],[-48.51543,-0.248242],[-48.444482,-0.271875],[-48.392676,-0.297363],[-48.379687,-0.352832],[-48.428027,-0.441504],[-48.463965,-0.534766],[-48.497461,-0.664941],[-48.52334,-0.691406],[-48.56665,-0.684473],[-48.539697,-0.800977],[-48.549512,-0.847559],[-48.570947,-0.892871],[-48.624072,-0.986914],[-48.70459,-1.106641],[-48.728516,-1.131738],[-48.789844,-1.17334],[-48.839697,-1.226562],[-48.829004,-1.276563],[-48.804053,-1.326953],[-48.833594,-1.390039],[-48.928906,-1.482324],[-48.985938,-1.504688],[-49.038477,-1.514063],[-49.086865,-1.505078],[-49.172705,-1.412598],[-49.181689,-1.484961],[-49.204785,-1.558984],[-49.233984,-1.599512],[-49.344824,-1.595215],[-49.406592,-1.555566],[-49.506641,-1.511621],[-49.525684,-1.630469],[-49.587891,-1.712402],[-49.650586,-1.738086],[-49.748779,-1.755371],[-49.805127,-1.790234],[-49.911328,-1.762988],[-50.009961,-1.708496],[-50.065723,-1.703809],[-50.109277,-1.747852],[-50.338428,-1.755957],[-50.443457,-1.800684],[-50.507617,-1.787988],[-50.602051,-1.697754],[-50.617188,-1.637695],[-50.673389,-1.516016],[-50.723828,-1.371484],[-50.759766,-1.240234],[-50.729492,-1.126758],[-50.668311,-1.130566],[-50.595898,-1.147461],[-50.580518,-1.139453],[-50.576953,-1.103125],[-50.59292,-1.072949],[-50.709619,-1.077734],[-50.783301,-1.010352],[-50.796094,-0.90625],[-50.780957,-0.689844],[-50.771387,-0.64541],[-50.719922,-0.583398],[-50.703076,-0.528516],[-50.71582,-0.470215],[-50.693701,-0.364453],[-50.645508,-0.272852],[-50.461572,-0.157422],[-50.248242,-0.116406],[-49.628662,-0.229199]]],[[[-44.129297,-23.141895],[-44.098047,-23.169336],[-44.155762,-23.166602],[-44.220508,-23.19082],[-44.320068,-23.212305],[-44.360156,-23.17207],[-44.274121,-23.116211],[-44.242871,-23.074121],[-44.22041,-23.08291],[-44.191602,-23.113281],[-44.129297,-23.141895]]],[[[-48.584424,-26.401563],[-48.603076,-26.41377],[-48.665771,-26.289648],[-48.539746,-26.170313],[-48.497607,-26.21875],[-48.531104,-26.313184],[-48.568066,-26.379688],[-48.584424,-26.401563]]],[[[-45.260254,-23.88916],[-45.260889,-23.941309],[-45.302539,-23.914746],[-45.412842,-23.934961],[-45.451416,-23.895605],[-45.302344,-23.727539],[-45.272266,-23.751953],[-45.249072,-23.782617],[-45.233105,-23.825391],[-45.250293,-23.853027],[-45.260254,-23.88916]]],[[[-44.499316,-2.939648],[-44.597754,-3.037598],[-44.565332,-2.923926],[-44.581885,-2.845605],[-44.569092,-2.784961],[-44.501953,-2.72627],[-44.481445,-2.717578],[-44.487305,-2.789746],[-44.482568,-2.811914],[-44.499316,-2.939648]]],[[[-38.743848,-13.09707],[-38.783008,-13.118652],[-38.786963,-13.055078],[-38.684863,-12.974902],[-38.668115,-12.880176],[-38.614551,-12.924023],[-38.600293,-12.972461],[-38.601172,-12.992578],[-38.743848,-13.09707]]],[[[-38.903564,-13.473438],[-38.937891,-13.532324],[-38.977588,-13.523535],[-38.993213,-13.484082],[-39.022168,-13.445605],[-39.006592,-13.415527],[-38.980127,-13.398438],[-38.907129,-13.401074],[-38.903564,-13.473438]]],[[[-44.883105,-1.317871],[-44.947119,-1.366016],[-44.967871,-1.39082],[-45.02085,-1.372363],[-45.01123,-1.344727],[-44.995605,-1.347559],[-44.978662,-1.267285],[-44.888281,-1.276855],[-44.883105,-1.317871]]],[[[-49.738232,0.268164],[-49.697266,0.215967],[-49.838965,0.006885],[-49.91709,-0.023193],[-50.00249,-0.029297],[-50.113135,0.033008],[-50.285596,0.028564],[-50.339453,0.043359],[-50.345117,0.134473],[-50.272656,0.231738],[-50.127979,0.226514],[-49.879004,0.304541],[-49.738232,0.268164]]],[[[-50.298975,1.938525],[-50.398779,1.892871],[-50.456104,1.910498],[-50.508984,2.029541],[-50.491016,2.128613],[-50.41875,2.161475],[-50.362646,2.154443],[-50.341992,2.141748],[-50.29209,1.97959],[-50.298975,1.938525]]],[[[-50.652881,-0.131641],[-50.926367,-0.327344],[-51.018994,-0.263086],[-51.038086,-0.225879],[-51.022363,-0.188379],[-51.025732,-0.172363],[-50.995068,-0.105273],[-50.842187,-0.050195],[-50.765283,-0.040869],[-50.666992,-0.058008],[-50.650586,-0.105859],[-50.652881,-0.131641]]],[[[-49.443896,-0.112402],[-49.708838,-0.14375],[-49.830078,-0.093896],[-49.802686,-0.051855],[-49.712305,0.015137],[-49.602197,0.062695],[-49.503467,0.083691],[-49.400488,0.057227],[-49.372314,0.001074],[-49.380859,-0.055469],[-49.443896,-0.112402]]],[[[-50.426123,0.139258],[-50.443945,-0.007666],[-50.623926,0.054395],[-50.610449,0.204785],[-50.526221,0.246924],[-50.451562,0.326904],[-50.426074,0.424951],[-50.424561,0.558252],[-50.396875,0.581396],[-50.372754,0.590869],[-50.350977,0.581738],[-50.342529,0.381592],[-50.332275,0.259033],[-50.426123,0.139258]]],[[[-50.15293,0.393018],[-50.261328,0.35918],[-50.281543,0.39082],[-50.281689,0.516504],[-50.251172,0.585449],[-50.112793,0.604736],[-50.098633,0.625],[-50.058838,0.638037],[-50.036816,0.594824],[-50.040039,0.522803],[-50.15293,0.393018]]],[[[-51.83252,-1.433789],[-51.938379,-1.452637],[-51.802051,-1.202539],[-51.680029,-1.086133],[-51.678271,-0.855078],[-51.546045,-0.649609],[-51.424463,-0.565918],[-51.254004,-0.541406],[-51.160742,-0.666699],[-51.276318,-1.021777],[-51.310107,-1.023828],[-51.465137,-1.211133],[-51.637695,-1.341895],[-51.83252,-1.433789]]],[[[-48.485889,-27.766992],[-48.55459,-27.812207],[-48.542187,-27.574805],[-48.505176,-27.495508],[-48.464746,-27.436328],[-48.414893,-27.399609],[-48.37793,-27.451465],[-48.40957,-27.566309],[-48.496777,-27.707031],[-48.485889,-27.766992]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Botswana","SOV_A3":"BWA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Botswana","ADM0_A3":"BWA","GEOU_DIF":0,"GEOUNIT":"Botswana","GU_A3":"BWA","SU_DIF":0,"SUBUNIT":"Botswana","SU_A3":"BWA","BRK_DIFF":0,"NAME":"Botswana","NAME_LONG":"Botswana","BRK_A3":"BWA","BRK_NAME":"Botswana","BRK_GROUP":null,"ABBREV":"Bwa.","POSTAL":"BW","FORMAL_EN":"Republic of Botswana","FORMAL_FR":null,"NAME_CIAWF":"Botswana","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Botswana","NAME_ALT":null,"MAPCOLOR7":6,"MAPCOLOR8":5,"MAPCOLOR9":7,"MAPCOLOR13":3,"POP_EST":2303697,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":18340,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"BC","ISO_A2":"BW","ISO_A2_EH":"BW","ISO_A3":"BWA","ISO_A3_EH":"BWA","ISO_N3":"072","ISO_N3_EH":"072","UN_A3":"072","WB_A2":"BW","WB_A3":"BWA","WOE_ID":23424755,"WOE_ID_EH":23424755,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BWA","ADM0_DIFF":null,"ADM0_TLC":"BWA","ADM0_A3_US":"BWA","ADM0_A3_FR":"BWA","ADM0_A3_RU":"BWA","ADM0_A3_ES":"BWA","ADM0_A3_CN":"BWA","ADM0_A3_TW":"BWA","ADM0_A3_IN":"BWA","ADM0_A3_NP":"BWA","ADM0_A3_PK":"BWA","ADM0_A3_DE":"BWA","ADM0_A3_GB":"BWA","ADM0_A3_BR":"BWA","ADM0_A3_IL":"BWA","ADM0_A3_PS":"BWA","ADM0_A3_SA":"BWA","ADM0_A3_EG":"BWA","ADM0_A3_MA":"BWA","ADM0_A3_PT":"BWA","ADM0_A3_AR":"BWA","ADM0_A3_JP":"BWA","ADM0_A3_KO":"BWA","ADM0_A3_VN":"BWA","ADM0_A3_TR":"BWA","ADM0_A3_ID":"BWA","ADM0_A3_PL":"BWA","ADM0_A3_GR":"BWA","ADM0_A3_IT":"BWA","ADM0_A3_NL":"BWA","ADM0_A3_SE":"BWA","ADM0_A3_BD":"BWA","ADM0_A3_UA":"BWA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Southern Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":24.179216,"LABEL_Y":-22.102634,"NE_ID":1159320461,"WIKIDATAID":"Q963","NAME_AR":"بوتسوانا","NAME_BN":"বতসোয়ানা","NAME_DE":"Botswana","NAME_EN":"Botswana","NAME_ES":"Botsuana","NAME_FA":"بوتسوانا","NAME_FR":"Botswana","NAME_EL":"Μποτσουάνα","NAME_HE":"בוטסואנה","NAME_HI":"बोत्सवाना","NAME_HU":"Botswana","NAME_ID":"Botswana","NAME_IT":"Botswana","NAME_JA":"ボツワナ","NAME_KO":"보츠와나","NAME_NL":"Botswana","NAME_PL":"Botswana","NAME_PT":"Botsuana","NAME_RU":"Ботсвана","NAME_SV":"Botswana","NAME_TR":"Botsvana","NAME_UK":"Ботсвана","NAME_UR":"بوٹسوانا","NAME_VI":"Botswana","NAME_ZH":"博茨瓦纳","NAME_ZHT":"波札那","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[19.977344,-26.854199,29.364844,-17.787598],"geometry":{"type":"Polygon","coordinates":[[[25.258789,-17.793555],[25.239063,-17.843066],[25.224023,-17.915234],[25.242285,-17.969043],[25.282422,-18.041211],[25.340234,-18.104492],[25.384375,-18.141992],[25.436719,-18.234961],[25.489258,-18.35127],[25.558301,-18.441797],[25.76123,-18.649219],[25.783691,-18.723535],[25.811914,-18.79707],[25.939355,-18.938672],[25.95918,-18.985645],[25.950684,-19.081738],[26.081934,-19.369922],[26.168066,-19.538281],[26.241016,-19.569336],[26.474609,-19.748633],[26.678223,-19.892773],[26.916699,-19.990137],[27.091797,-20.054199],[27.178223,-20.100977],[27.221484,-20.145801],[27.256738,-20.232031],[27.274609,-20.381836],[27.280762,-20.478711],[27.468945,-20.474805],[27.624609,-20.483594],[27.679297,-20.503027],[27.699609,-20.530664],[27.694824,-20.594531],[27.696973,-20.689746],[27.704297,-20.766406],[27.688086,-20.84834],[27.676953,-20.944824],[27.669434,-21.064258],[27.693457,-21.111035],[27.844141,-21.261523],[27.907422,-21.359082],[27.974609,-21.506738],[28.014063,-21.554199],[28.045605,-21.573047],[28.181641,-21.589355],[28.532031,-21.65127],[28.747754,-21.707617],[28.919336,-21.766016],[28.990723,-21.781445],[29.025586,-21.796875],[29.037305,-21.811328],[29.01582,-21.939941],[29.02334,-21.98125],[29.042383,-22.018359],[29.071484,-22.047461],[29.106836,-22.065723],[29.237207,-22.079492],[29.315234,-22.157715],[29.364844,-22.193945],[29.129883,-22.213281],[29.013477,-22.278418],[28.945801,-22.395117],[28.839844,-22.480859],[28.695508,-22.535449],[28.542871,-22.572949],[28.381738,-22.593359],[28.210156,-22.693652],[28.02793,-22.87373],[27.935059,-22.987012],[27.931348,-23.033594],[27.890527,-23.073926],[27.812598,-23.108008],[27.768555,-23.148926],[27.758301,-23.196777],[27.716797,-23.219629],[27.643848,-23.217676],[27.592676,-23.252637],[27.563184,-23.324609],[27.49873,-23.368359],[27.399219,-23.383594],[27.313379,-23.424219],[27.241211,-23.490039],[27.185547,-23.523438],[27.146387,-23.524414],[27.085547,-23.57793],[26.987012,-23.70459],[26.970605,-23.763477],[26.835059,-24.24082],[26.761133,-24.297168],[26.617773,-24.395508],[26.501563,-24.513281],[26.451758,-24.582715],[26.397168,-24.613574],[26.130859,-24.671484],[26.031836,-24.702441],[25.912109,-24.747461],[25.881836,-24.787988],[25.852441,-24.935254],[25.769922,-25.146484],[25.702637,-25.302344],[25.65918,-25.437891],[25.583789,-25.60625],[25.518164,-25.662793],[25.443652,-25.714453],[25.346191,-25.739941],[25.213379,-25.75625],[25.09248,-25.751465],[24.998926,-25.754004],[24.869238,-25.813477],[24.748145,-25.817383],[24.555859,-25.783105],[24.400195,-25.749805],[24.330566,-25.742871],[24.192969,-25.63291],[24.104492,-25.634863],[23.969531,-25.626074],[23.89375,-25.600879],[23.823438,-25.544629],[23.670703,-25.433984],[23.521484,-25.344434],[23.389258,-25.291406],[23.266016,-25.266602],[23.14873,-25.288672],[23.05752,-25.312305],[23.02207,-25.324121],[22.95127,-25.370313],[22.878809,-25.45791],[22.818945,-25.595117],[22.796094,-25.679102],[22.729004,-25.857324],[22.640234,-26.071191],[22.597656,-26.132715],[22.548633,-26.178418],[22.470898,-26.219043],[22.217578,-26.388867],[22.090918,-26.580176],[22.010938,-26.63584],[21.914551,-26.661914],[21.833203,-26.67832],[21.788281,-26.710059],[21.738086,-26.806836],[21.694727,-26.840918],[21.646289,-26.854199],[21.501367,-26.842676],[21.45498,-26.832813],[21.070996,-26.851758],[20.953906,-26.821094],[20.870898,-26.808789],[20.739844,-26.848828],[20.685059,-26.822461],[20.641406,-26.742188],[20.619922,-26.580859],[20.626758,-26.443848],[20.697852,-26.340137],[20.757031,-26.26416],[20.815039,-26.164941],[20.822656,-26.120605],[20.811035,-26.080566],[20.799414,-25.999023],[20.793164,-25.915625],[20.710742,-25.733203],[20.609277,-25.491211],[20.473145,-25.221289],[20.430664,-25.14707],[20.345215,-25.029883],[20.028613,-24.807031],[19.980469,-24.776758],[19.980469,-24.751953],[19.980176,-24.535742],[19.979883,-24.249023],[19.97959,-23.962402],[19.979297,-23.675781],[19.978906,-23.38916],[19.978516,-23.102539],[19.978223,-22.815918],[19.97793,-22.529297],[19.977637,-22.242578],[19.977344,-22.000195],[20.205371,-22.000195],[20.4875,-22.000195],[20.822754,-22.000195],[20.970996,-22.000195],[20.979492,-21.961914],[20.979297,-21.784082],[20.978711,-21.376074],[20.978125,-20.968164],[20.977441,-20.560254],[20.976855,-20.152344],[20.976172,-19.744336],[20.975586,-19.336426],[20.975,-18.928516],[20.974316,-18.520508],[20.974121,-18.318848],[21.23252,-18.306836],[21.529688,-18.265625],[22.011426,-18.198633],[22.460059,-18.115723],[22.752734,-18.067188],[23.099902,-18.00957],[23.219336,-17.999707],[23.251563,-18.00752],[23.298633,-18.027344],[23.459766,-18.231055],[23.560156,-18.386426],[23.580566,-18.45293],[23.599707,-18.459961],[23.647168,-18.449414],[23.700488,-18.424316],[23.864258,-18.269531],[23.89834,-18.229199],[24.002637,-18.154102],[24.129297,-18.077539],[24.243945,-18.023438],[24.358984,-17.978223],[24.412207,-17.989453],[24.474902,-18.028516],[24.530566,-18.052734],[24.792188,-17.864648],[24.909082,-17.821387],[25.216016,-17.787598],[25.258789,-17.793555]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Bosnia and Herzegovina","SOV_A3":"BIH","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Bosnia and Herzegovina","ADM0_A3":"BIH","GEOU_DIF":0,"GEOUNIT":"Bosnia and Herzegovina","GU_A3":"BIH","SU_DIF":0,"SUBUNIT":"Bosnia and Herzegovina","SU_A3":"BIH","BRK_DIFF":0,"NAME":"Bosnia and Herz.","NAME_LONG":"Bosnia and Herzegovina","BRK_A3":"BIH","BRK_NAME":"Bosnia and Herz.","BRK_GROUP":null,"ABBREV":"B.H.","POSTAL":"BiH","FORMAL_EN":"Bosnia and Herzegovina","FORMAL_FR":null,"NAME_CIAWF":"Bosnia and Herzegovina","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Bosnia and Herzegovina","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":1,"MAPCOLOR13":2,"POP_EST":3301000,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":20164,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"BK","ISO_A2":"BA","ISO_A2_EH":"BA","ISO_A3":"BIH","ISO_A3_EH":"BIH","ISO_N3":"070","ISO_N3_EH":"070","UN_A3":"070","WB_A2":"BA","WB_A3":"BIH","WOE_ID":23424761,"WOE_ID_EH":23424761,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BIH","ADM0_DIFF":null,"ADM0_TLC":"BIH","ADM0_A3_US":"BIH","ADM0_A3_FR":"BIH","ADM0_A3_RU":"BIH","ADM0_A3_ES":"BIH","ADM0_A3_CN":"BIH","ADM0_A3_TW":"BIH","ADM0_A3_IN":"BIH","ADM0_A3_NP":"BIH","ADM0_A3_PK":"BIH","ADM0_A3_DE":"BIH","ADM0_A3_GB":"BIH","ADM0_A3_BR":"BIH","ADM0_A3_IL":"BIH","ADM0_A3_PS":"BIH","ADM0_A3_SA":"BIH","ADM0_A3_EG":"BIH","ADM0_A3_MA":"BIH","ADM0_A3_PT":"BIH","ADM0_A3_AR":"BIH","ADM0_A3_JP":"BIH","ADM0_A3_KO":"BIH","ADM0_A3_VN":"BIH","ADM0_A3_TR":"BIH","ADM0_A3_ID":"BIH","ADM0_A3_PL":"BIH","ADM0_A3_GR":"BIH","ADM0_A3_IT":"BIH","ADM0_A3_NL":"BIH","ADM0_A3_SE":"BIH","ADM0_A3_BD":"BIH","ADM0_A3_UA":"BIH","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":16,"LONG_LEN":22,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":6.8,"LABEL_X":18.06841,"LABEL_Y":44.091051,"NE_ID":1159320417,"WIKIDATAID":"Q225","NAME_AR":"البوسنة والهرسك","NAME_BN":"বসনিয়া ও হার্জেগোভিনা","NAME_DE":"Bosnien und Herzegowina","NAME_EN":"Bosnia and Herzegovina","NAME_ES":"Bosnia y Herzegovina","NAME_FA":"بوسنی و هرزگوین","NAME_FR":"Bosnie-Herzégovine","NAME_EL":"Βοσνία και Ερζεγοβίνη","NAME_HE":"בוסניה והרצגובינה","NAME_HI":"बॉस्निया और हर्ज़ेगोविना","NAME_HU":"Bosznia-Hercegovina","NAME_ID":"Bosnia dan Herzegovina","NAME_IT":"Bosnia ed Erzegovina","NAME_JA":"ボスニア・ヘルツェゴビナ","NAME_KO":"보스니아 헤르체고비나","NAME_NL":"Bosnië en Herzegovina","NAME_PL":"Bośnia i Hercegowina","NAME_PT":"Bósnia e Herzegovina","NAME_RU":"Босния и Герцеговина","NAME_SV":"Bosnien och Hercegovina","NAME_TR":"Bosna-Hersek","NAME_UK":"Боснія і Герцеговина","NAME_UR":"بوسنیا و ہرزیگووینا","NAME_VI":"Bosna và Hercegovina","NAME_ZH":"波斯尼亚和黑塞哥维那","NAME_ZHT":"波士尼亞與赫塞哥維納","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[15.736621,42.559717,19.583789,45.276562],"geometry":{"type":"Polygon","coordinates":[[[19.348633,44.880908],[19.356836,44.858545],[19.334473,44.780664],[19.291895,44.696777],[19.223145,44.60957],[19.151367,44.527344],[19.132422,44.483789],[19.127344,44.414551],[19.118457,44.359961],[19.12832,44.330273],[19.151855,44.302539],[19.231543,44.280566],[19.338867,44.22583],[19.430176,44.154492],[19.547168,44.073486],[19.583789,44.043457],[19.583691,44.011084],[19.549512,43.987109],[19.449414,43.978027],[19.345215,43.985107],[19.305273,43.993359],[19.268066,43.983447],[19.24502,43.965039],[19.257227,43.943311],[19.364063,43.844775],[19.488184,43.703564],[19.495117,43.642871],[19.47998,43.595166],[19.45127,43.562061],[19.399609,43.567578],[19.360352,43.593457],[19.300781,43.591797],[19.254492,43.584375],[19.194336,43.533301],[19.164355,43.535449],[19.112793,43.527734],[19.080078,43.517725],[19.02832,43.53252],[18.974219,43.542334],[18.950684,43.52666],[18.940234,43.496729],[18.973828,43.442383],[19.036719,43.357324],[19.02666,43.292432],[18.978711,43.2854],[18.934668,43.339453],[18.895605,43.348193],[18.851074,43.346338],[18.749219,43.283545],[18.674219,43.230811],[18.656836,43.193945],[18.62998,43.153662],[18.621875,43.124609],[18.623633,43.027686],[18.488477,43.012158],[18.460156,42.9979],[18.443848,42.968457],[18.455078,42.844092],[18.466016,42.777246],[18.543262,42.67417],[18.545898,42.641602],[18.534961,42.620117],[18.480078,42.579199],[18.453906,42.564502],[18.436328,42.559717],[18.346582,42.58667],[18.304004,42.599414],[18.123926,42.690576],[18.044531,42.74126],[17.918848,42.807422],[17.841309,42.845068],[17.801953,42.902246],[17.740234,42.915479],[17.667578,42.897119],[17.585156,42.938379],[17.643457,42.959766],[17.657813,42.980078],[17.650488,43.006592],[17.624805,43.042773],[17.402246,43.198926],[17.293066,43.305615],[17.275293,43.343848],[17.273828,43.445752],[17.248047,43.470215],[17.08457,43.516553],[16.901855,43.649023],[16.713477,43.778809],[16.687695,43.815039],[16.590527,43.913184],[16.47207,44.002588],[16.377539,44.059619],[16.300098,44.124512],[16.214258,44.215137],[16.169824,44.352002],[16.130273,44.47373],[16.103418,44.520996],[16.049023,44.537598],[15.880078,44.681934],[15.736621,44.76582],[15.737988,44.856396],[15.761523,45.00752],[15.788086,45.178955],[15.822852,45.202783],[15.888281,45.215723],[15.963184,45.210791],[16.02832,45.1896],[16.157324,45.072217],[16.231055,45.026611],[16.293359,45.008838],[16.365039,45.05835],[16.453516,45.162012],[16.530664,45.216699],[16.79082,45.196875],[16.918652,45.276562],[17.125391,45.171777],[17.210645,45.156055],[17.258691,45.170557],[17.324121,45.163965],[17.469141,45.133301],[17.502637,45.120361],[17.546289,45.122559],[17.653516,45.163477],[17.690137,45.158398],[17.812793,45.078125],[17.874414,45.077246],[17.948633,45.111865],[17.996289,45.141797],[18.137207,45.119385],[18.217969,45.13291],[18.284961,45.134277],[18.357617,45.120557],[18.423926,45.102002],[18.488281,45.08584],[18.662598,45.077441],[18.746094,45.026514],[18.779395,44.977246],[18.780176,44.947217],[18.788379,44.914893],[18.836426,44.883252],[18.941309,44.865186],[19.007129,44.869189],[19.04209,44.871338],[19.131543,44.899609],[19.236816,44.914258],[19.312695,44.897461],[19.348633,44.880908]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Bolivia","SOV_A3":"BOL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Bolivia","ADM0_A3":"BOL","GEOU_DIF":0,"GEOUNIT":"Bolivia","GU_A3":"BOL","SU_DIF":0,"SUBUNIT":"Bolivia","SU_A3":"BOL","BRK_DIFF":0,"NAME":"Bolivia","NAME_LONG":"Bolivia","BRK_A3":"BOL","BRK_NAME":"Bolivia","BRK_GROUP":null,"ABBREV":"Bolivia","POSTAL":"BO","FORMAL_EN":"Plurinational State of Bolivia","FORMAL_FR":null,"NAME_CIAWF":"Bolivia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Bolivia","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":5,"MAPCOLOR9":2,"MAPCOLOR13":3,"POP_EST":11513100,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":40895,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"4. Lower middle income","FIPS_10":"BL","ISO_A2":"BO","ISO_A2_EH":"BO","ISO_A3":"BOL","ISO_A3_EH":"BOL","ISO_N3":"068","ISO_N3_EH":"068","UN_A3":"068","WB_A2":"BO","WB_A3":"BOL","WOE_ID":23424762,"WOE_ID_EH":23424762,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BOL","ADM0_DIFF":null,"ADM0_TLC":"BOL","ADM0_A3_US":"BOL","ADM0_A3_FR":"BOL","ADM0_A3_RU":"BOL","ADM0_A3_ES":"BOL","ADM0_A3_CN":"BOL","ADM0_A3_TW":"BOL","ADM0_A3_IN":"BOL","ADM0_A3_NP":"BOL","ADM0_A3_PK":"BOL","ADM0_A3_DE":"BOL","ADM0_A3_GB":"BOL","ADM0_A3_BR":"BOL","ADM0_A3_IL":"BOL","ADM0_A3_PS":"BOL","ADM0_A3_SA":"BOL","ADM0_A3_EG":"BOL","ADM0_A3_MA":"BOL","ADM0_A3_PT":"BOL","ADM0_A3_AR":"BOL","ADM0_A3_JP":"BOL","ADM0_A3_KO":"BOL","ADM0_A3_VN":"BOL","ADM0_A3_TR":"BOL","ADM0_A3_ID":"BOL","ADM0_A3_PL":"BOL","ADM0_A3_GR":"BOL","ADM0_A3_IT":"BOL","ADM0_A3_NL":"BOL","ADM0_A3_SE":"BOL","ADM0_A3_BD":"BOL","ADM0_A3_UA":"BOL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7.5,"LABEL_X":-64.593433,"LABEL_Y":-16.666015,"NE_ID":1159320439,"WIKIDATAID":"Q750","NAME_AR":"بوليفيا","NAME_BN":"বলিভিয়া","NAME_DE":"Bolivien","NAME_EN":"Bolivia","NAME_ES":"Bolivia","NAME_FA":"بولیوی","NAME_FR":"Bolivie","NAME_EL":"Βολιβία","NAME_HE":"בוליביה","NAME_HI":"बोलिविया","NAME_HU":"Bolívia","NAME_ID":"Bolivia","NAME_IT":"Bolivia","NAME_JA":"ボリビア","NAME_KO":"볼리비아","NAME_NL":"Bolivia","NAME_PL":"Boliwia","NAME_PT":"Bolívia","NAME_RU":"Боливия","NAME_SV":"Bolivia","NAME_TR":"Bolivya","NAME_UK":"Болівія","NAME_UR":"بولیویا","NAME_VI":"Bolivia","NAME_ZH":"玻利维亚","NAME_ZHT":"玻利維亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-69.645703,-22.891699,-57.495654,-9.710449],"geometry":{"type":"Polygon","coordinates":[[[-69.510937,-17.506055],[-69.511084,-17.504883],[-69.510986,-17.460352],[-69.521924,-17.388965],[-69.563818,-17.33291],[-69.625879,-17.294434],[-69.645703,-17.248535],[-69.624854,-17.200195],[-69.50332,-17.104785],[-69.43833,-17.088379],[-69.421094,-17.040039],[-69.381543,-17.001367],[-69.267236,-16.860938],[-69.199805,-16.768457],[-69.13252,-16.713086],[-69.054541,-16.674316],[-69.020703,-16.642188],[-69.038379,-16.542676],[-69.03291,-16.475977],[-69.00625,-16.433691],[-68.928027,-16.389063],[-68.857812,-16.354785],[-68.842773,-16.337891],[-68.848828,-16.312793],[-68.913477,-16.261914],[-69.04624,-16.217676],[-69.13418,-16.221973],[-69.187988,-16.182813],[-69.217578,-16.149121],[-69.391895,-15.736914],[-69.420898,-15.640625],[-69.418506,-15.603418],[-69.301904,-15.399414],[-69.254297,-15.33291],[-69.172461,-15.236621],[-69.187109,-15.19873],[-69.330713,-15.038965],[-69.374707,-14.962988],[-69.37373,-14.8875],[-69.359473,-14.795313],[-69.276025,-14.745898],[-69.252344,-14.671094],[-69.234912,-14.59707],[-69.199268,-14.572559],[-69.162695,-14.530957],[-69.119727,-14.470313],[-69.052783,-14.417578],[-69.013135,-14.377246],[-69.004492,-14.265039],[-68.971777,-14.234375],[-68.880322,-14.198828],[-68.870898,-14.169727],[-68.891699,-14.094336],[-68.937451,-14.014648],[-68.974268,-13.975977],[-69.023047,-13.780273],[-69.074121,-13.682813],[-69.052832,-13.643945],[-69.017529,-13.594434],[-68.983447,-13.496387],[-68.972266,-13.382324],[-68.980518,-12.962598],[-68.978613,-12.880078],[-68.93374,-12.82207],[-68.867676,-12.755176],[-68.811816,-12.72959],[-68.759082,-12.687207],[-68.762891,-12.607715],[-68.728125,-12.560742],[-68.685254,-12.501953],[-68.818701,-12.27041],[-68.936035,-12.066797],[-69.046191,-11.875684],[-69.17373,-11.654297],[-69.257715,-11.508594],[-69.362012,-11.327539],[-69.453613,-11.16875],[-69.578613,-10.951758],[-69.462549,-10.948145],[-69.228516,-10.955664],[-69.00166,-10.994336],[-68.84834,-11.011133],[-68.784082,-11.044629],[-68.769922,-11.097656],[-68.72749,-11.122461],[-68.678369,-11.112793],[-68.622656,-11.10918],[-68.49834,-11.054785],[-68.397998,-11.01875],[-68.311133,-10.975195],[-68.266602,-10.933105],[-68.158643,-10.785059],[-68.07168,-10.703125],[-67.991699,-10.674414],[-67.83501,-10.662793],[-67.785693,-10.686035],[-67.721777,-10.683105],[-67.66665,-10.598926],[-67.582422,-10.505957],[-67.416943,-10.389844],[-67.332715,-10.35791],[-67.280469,-10.317285],[-67.190479,-10.311426],[-67.111523,-10.268945],[-66.72998,-9.975488],[-66.575342,-9.899902],[-66.478906,-9.886133],[-66.399219,-9.868164],[-66.263574,-9.826074],[-65.924707,-9.785449],[-65.706787,-9.768457],[-65.637109,-9.809082],[-65.558691,-9.797461],[-65.491992,-9.731738],[-65.436768,-9.710449],[-65.396143,-9.712402],[-65.337891,-9.790234],[-65.309326,-9.872656],[-65.328125,-9.935547],[-65.324561,-10.026953],[-65.298584,-10.146777],[-65.313086,-10.253027],[-65.395459,-10.392285],[-65.436914,-10.449023],[-65.447119,-10.507422],[-65.43999,-10.58623],[-65.402295,-10.714746],[-65.334033,-10.892773],[-65.323779,-11.024805],[-65.371582,-11.110352],[-65.393604,-11.184277],[-65.389893,-11.246289],[-65.372852,-11.289941],[-65.342383,-11.315039],[-65.325488,-11.364746],[-65.322021,-11.43916],[-65.282275,-11.511035],[-65.206201,-11.580566],[-65.175391,-11.646875],[-65.189746,-11.710059],[-65.185742,-11.749512],[-65.163379,-11.765137],[-65.142676,-11.752344],[-65.115137,-11.735059],[-65.090283,-11.741211],[-65.037109,-11.829395],[-65.030273,-11.847363],[-65.001221,-11.92002],[-64.992529,-11.975195],[-64.914355,-12.005957],[-64.829883,-12.030273],[-64.783447,-12.059375],[-64.690039,-12.146484],[-64.61167,-12.203906],[-64.513428,-12.250977],[-64.480762,-12.326172],[-64.420508,-12.439746],[-64.255029,-12.483301],[-64.061621,-12.505078],[-63.938574,-12.529688],[-63.788086,-12.469434],[-63.688574,-12.478027],[-63.585645,-12.518945],[-63.541895,-12.54668],[-63.465234,-12.605176],[-63.34668,-12.680078],[-63.249756,-12.70791],[-63.180664,-12.666211],[-63.116797,-12.65166],[-63.06748,-12.669141],[-63.041357,-12.750391],[-63.015186,-12.805566],[-62.95791,-12.84707],[-62.835156,-12.953711],[-62.765479,-12.997266],[-62.687061,-12.994336],[-62.525537,-13.064258],[-62.352832,-13.132422],[-62.263916,-13.143652],[-62.176074,-13.133691],[-62.118018,-13.159766],[-62.094775,-13.241992],[-61.944727,-13.40625],[-61.874121,-13.47041],[-61.789941,-13.525586],[-61.575684,-13.524805],[-61.511572,-13.541211],[-61.416064,-13.526563],[-61.12915,-13.498535],[-61.077002,-13.489746],[-60.914502,-13.561426],[-60.722363,-13.664355],[-60.595312,-13.745313],[-60.506592,-13.789844],[-60.460156,-13.862402],[-60.422363,-13.937988],[-60.40498,-14.019238],[-60.428076,-14.1],[-60.462988,-14.132422],[-60.474658,-14.184766],[-60.460156,-14.263086],[-60.39624,-14.332813],[-60.372705,-14.41875],[-60.338037,-14.570508],[-60.298877,-14.618555],[-60.27334,-15.08877],[-60.402002,-15.092773],[-60.583203,-15.09834],[-60.530469,-15.143164],[-60.380469,-15.318262],[-60.242334,-15.47959],[-60.22041,-15.738672],[-60.206641,-15.901953],[-60.187207,-16.132129],[-60.175586,-16.269336],[-59.831152,-16.281738],[-59.434277,-16.295996],[-58.957275,-16.313184],[-58.537939,-16.328223],[-58.496582,-16.32666],[-58.423682,-16.30791],[-58.375391,-16.283594],[-58.345605,-16.284375],[-58.340576,-16.339941],[-58.350781,-16.410254],[-58.350391,-16.49082],[-58.470605,-16.650195],[-58.478125,-16.700684],[-58.459814,-16.910742],[-58.417383,-17.080566],[-58.395996,-17.234277],[-58.347754,-17.282129],[-58.205566,-17.363086],[-57.990918,-17.512891],[-57.905029,-17.532324],[-57.832471,-17.512109],[-57.788867,-17.573047],[-57.780176,-17.671777],[-57.66167,-17.947363],[-57.586475,-18.122266],[-57.552051,-18.183105],[-57.495654,-18.214648],[-57.506152,-18.237305],[-57.553125,-18.246484],[-57.574023,-18.279297],[-57.63916,-18.475],[-57.725,-18.733203],[-57.783105,-18.914258],[-57.730859,-18.917188],[-57.728613,-18.967383],[-57.716797,-19.044043],[-57.781445,-19.053516],[-57.800391,-19.080957],[-57.874512,-19.229492],[-57.97168,-19.424219],[-58.072021,-19.625293],[-58.131494,-19.744531],[-58.029932,-19.832715],[-57.860742,-19.97959],[-57.887598,-20.02041],[-57.960156,-20.040723],[-58.021143,-20.055176],[-58.067627,-20.110352],[-58.09375,-20.151074],[-58.159766,-20.164648],[-58.139941,-19.998828],[-58.160059,-19.854883],[-58.180176,-19.817871],[-58.474219,-19.646094],[-58.741113,-19.490234],[-59.090527,-19.28623],[-59.540869,-19.291797],[-60.007373,-19.297559],[-60.451611,-19.38877],[-60.88877,-19.478516],[-61.095996,-19.520996],[-61.511816,-19.606445],[-61.756836,-19.645313],[-61.820898,-19.809473],[-61.916943,-20.055371],[-62.011816,-20.199023],[-62.121631,-20.349902],[-62.276318,-20.5625],[-62.276514,-20.820801],[-62.27666,-21.066016],[-62.385449,-21.411719],[-62.477832,-21.705273],[-62.566943,-21.988672],[-62.628516,-22.183984],[-62.650977,-22.233691],[-62.665283,-22.217969],[-62.74458,-22.159863],[-62.815088,-22.049609],[-62.834277,-21.999121],[-62.843359,-21.997266],[-63.267187,-22.000586],[-63.675342,-22.004297],[-63.716943,-22.027539],[-63.775586,-22.027246],[-63.818652,-22.005469],[-63.861035,-22.007227],[-63.92168,-22.028613],[-63.976123,-22.072559],[-64.131836,-22.36582],[-64.209082,-22.491309],[-64.266406,-22.60332],[-64.30791,-22.795313],[-64.325293,-22.827637],[-64.373975,-22.761035],[-64.445508,-22.585352],[-64.477734,-22.485352],[-64.523633,-22.371582],[-64.605518,-22.228809],[-64.700098,-22.185547],[-64.758643,-22.171289],[-64.843066,-22.143945],[-64.992627,-22.109668],[-65.057812,-22.102734],[-65.484863,-22.098145],[-65.518799,-22.094531],[-65.686182,-22.110254],[-65.771045,-22.099609],[-65.860156,-22.019727],[-66.058594,-21.879492],[-66.098584,-21.835059],[-66.174658,-21.805664],[-66.220166,-21.802539],[-66.247607,-21.830469],[-66.282129,-21.947461],[-66.322461,-22.053125],[-66.365186,-22.11377],[-66.506982,-22.158398],[-66.639014,-22.205371],[-66.711719,-22.216309],[-66.750635,-22.269336],[-66.76748,-22.343066],[-66.800293,-22.409668],[-66.991113,-22.509863],[-67.033545,-22.552246],[-67.05542,-22.650879],[-67.161914,-22.773828],[-67.194873,-22.82168],[-67.362256,-22.855176],[-67.579932,-22.891699],[-67.707324,-22.88916],[-67.794434,-22.879492],[-67.820508,-22.857715],[-67.879443,-22.822949],[-67.88916,-22.78418],[-67.88999,-22.729199],[-67.87373,-22.630566],[-67.881738,-22.493359],[-67.950391,-22.333691],[-67.944922,-22.282227],[-67.953906,-22.204004],[-67.988379,-22.057129],[-68.076758,-21.982813],[-68.101807,-21.860645],[-68.112158,-21.753027],[-68.186426,-21.618555],[-68.198535,-21.447266],[-68.197021,-21.300293],[-68.313867,-21.129688],[-68.435498,-20.948242],[-68.533838,-20.923633],[-68.558252,-20.901953],[-68.568945,-20.849805],[-68.571045,-20.769141],[-68.563184,-20.720117],[-68.487402,-20.640723],[-68.484326,-20.628418],[-68.499854,-20.612012],[-68.695801,-20.492969],[-68.745166,-20.458594],[-68.760547,-20.416211],[-68.759229,-20.378027],[-68.712305,-20.338965],[-68.688574,-20.310059],[-68.73457,-20.225195],[-68.730029,-20.148438],[-68.759326,-20.115527],[-68.755811,-20.09082],[-68.72749,-20.069629],[-68.600195,-20.044922],[-68.560693,-19.96709],[-68.559375,-19.902344],[-68.578271,-19.856543],[-68.696191,-19.740723],[-68.698291,-19.721094],[-68.575293,-19.560156],[-68.487012,-19.454395],[-68.462891,-19.432813],[-68.470166,-19.409961],[-68.491992,-19.381934],[-68.547852,-19.341113],[-68.620557,-19.29668],[-68.680664,-19.242383],[-68.759082,-19.162207],[-68.857959,-19.093359],[-68.931006,-19.025195],[-68.968311,-18.967969],[-68.969092,-18.909668],[-68.978857,-18.812988],[-69.026807,-18.65625],[-69.039404,-18.550098],[-69.060156,-18.433008],[-69.080957,-18.356641],[-69.092285,-18.282422],[-69.126367,-18.202441],[-69.145459,-18.144043],[-69.118066,-18.102734],[-69.09043,-18.070703],[-69.093945,-18.050488],[-69.282324,-17.964844],[-69.313379,-17.943164],[-69.358008,-17.77168],[-69.49502,-17.619531],[-69.510937,-17.506055]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Bhutan","SOV_A3":"BTN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Bhutan","ADM0_A3":"BTN","GEOU_DIF":0,"GEOUNIT":"Bhutan","GU_A3":"BTN","SU_DIF":0,"SUBUNIT":"Bhutan","SU_A3":"BTN","BRK_DIFF":0,"NAME":"Bhutan","NAME_LONG":"Bhutan","BRK_A3":"BTN","BRK_NAME":"Bhutan","BRK_GROUP":null,"ABBREV":"Bhutan","POSTAL":"BT","FORMAL_EN":"Kingdom of Bhutan","FORMAL_FR":null,"NAME_CIAWF":"Bhutan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Bhutan","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":6,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":763092,"POP_RANK":11,"POP_YEAR":2019,"GDP_MD":2530,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"4. Lower middle income","FIPS_10":"BT","ISO_A2":"BT","ISO_A2_EH":"BT","ISO_A3":"BTN","ISO_A3_EH":"BTN","ISO_N3":"064","ISO_N3_EH":"064","UN_A3":"064","WB_A2":"BT","WB_A3":"BTN","WOE_ID":23424770,"WOE_ID_EH":23424770,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BTN","ADM0_DIFF":null,"ADM0_TLC":"BTN","ADM0_A3_US":"BTN","ADM0_A3_FR":"BTN","ADM0_A3_RU":"BTN","ADM0_A3_ES":"BTN","ADM0_A3_CN":"BTN","ADM0_A3_TW":"BTN","ADM0_A3_IN":"BTN","ADM0_A3_NP":"BTN","ADM0_A3_PK":"BTN","ADM0_A3_DE":"BTN","ADM0_A3_GB":"BTN","ADM0_A3_BR":"BTN","ADM0_A3_IL":"BTN","ADM0_A3_PS":"BTN","ADM0_A3_SA":"BTN","ADM0_A3_EG":"BTN","ADM0_A3_MA":"BTN","ADM0_A3_PT":"BTN","ADM0_A3_AR":"BTN","ADM0_A3_JP":"BTN","ADM0_A3_KO":"BTN","ADM0_A3_VN":"BTN","ADM0_A3_TR":"BTN","ADM0_A3_ID":"BTN","ADM0_A3_PL":"BTN","ADM0_A3_GR":"BTN","ADM0_A3_IT":"BTN","ADM0_A3_NL":"BTN","ADM0_A3_SE":"BTN","ADM0_A3_BD":"BTN","ADM0_A3_UA":"BTN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":90.040294,"LABEL_Y":27.536685,"NE_ID":1159320453,"WIKIDATAID":"Q917","NAME_AR":"بوتان","NAME_BN":"ভুটান","NAME_DE":"Bhutan","NAME_EN":"Bhutan","NAME_ES":"Bután","NAME_FA":"بوتان","NAME_FR":"Bhoutan","NAME_EL":"Μπουτάν","NAME_HE":"בהוטן","NAME_HI":"भूटान","NAME_HU":"Bhután","NAME_ID":"Bhutan","NAME_IT":"Bhutan","NAME_JA":"ブータン","NAME_KO":"부탄","NAME_NL":"Bhutan","NAME_PL":"Bhutan","NAME_PT":"Butão","NAME_RU":"Бутан","NAME_SV":"Bhutan","NAME_TR":"Bhutan","NAME_UK":"Бутан","NAME_UR":"بھوٹان","NAME_VI":"Bhutan","NAME_ZH":"不丹","NAME_ZHT":"不丹","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[88.73877,26.701563,92.083398,28.311182],"geometry":{"type":"Polygon","coordinates":[[[91.631934,27.759961],[91.625879,27.737305],[91.597656,27.677002],[91.579297,27.611426],[91.594727,27.557666],[91.658105,27.493604],[91.743066,27.442529],[91.85127,27.438623],[91.950977,27.458301],[91.99082,27.450195],[92.044922,27.364697],[92.083398,27.290625],[92.031152,27.214307],[92.002539,27.147363],[91.992285,27.099902],[91.998633,27.079297],[92.030859,27.04082],[92.068164,26.975195],[92.073438,26.914844],[92.049707,26.874854],[91.99834,26.85498],[91.94375,26.86084],[91.898633,26.860059],[91.84209,26.852979],[91.753711,26.830762],[91.671582,26.802002],[91.517578,26.807324],[91.455859,26.866895],[91.426758,26.86709],[91.286523,26.789941],[91.133887,26.803418],[90.855762,26.777734],[90.739648,26.77168],[90.620313,26.780225],[90.559863,26.796582],[90.447656,26.850781],[90.345898,26.890332],[90.242383,26.85415],[90.206055,26.84751],[90.122949,26.75459],[89.943164,26.723926],[89.763867,26.701563],[89.710938,26.713916],[89.609961,26.719434],[89.606152,26.741113],[89.60918,26.762207],[89.586133,26.778955],[89.545117,26.79624],[89.474609,26.803418],[89.38418,26.826562],[89.332129,26.848633],[89.148242,26.816162],[89.040918,26.865039],[88.919141,26.932227],[88.857617,26.961475],[88.835156,27.065576],[88.813574,27.099023],[88.765625,27.134229],[88.73877,27.175586],[88.760352,27.218115],[88.881641,27.297461],[88.891406,27.316064],[88.947559,27.464014],[89.025488,27.517871],[89.102344,27.592578],[89.160449,27.711279],[89.272656,27.833154],[89.395898,27.958154],[89.480664,28.059961],[89.536914,28.107422],[89.652734,28.158301],[89.749805,28.188184],[89.816895,28.256299],[89.897852,28.294141],[89.981055,28.311182],[90.104492,28.302051],[90.220801,28.277734],[90.348242,28.243945],[90.362988,28.216504],[90.352148,28.168164],[90.333789,28.119141],[90.333105,28.093994],[90.352734,28.080225],[90.477344,28.07085],[90.630078,28.078564],[90.715723,28.071729],[90.906641,28.026514],[90.9625,27.99458],[91.020801,27.970068],[91.077734,27.974463],[91.149902,28.026758],[91.225879,28.07124],[91.273047,28.078369],[91.306836,28.064014],[91.367578,28.021631],[91.493359,27.981787],[91.605566,27.951709],[91.641895,27.923242],[91.629395,27.800879],[91.631934,27.759961]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Benin","SOV_A3":"BEN","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Benin","ADM0_A3":"BEN","GEOU_DIF":0,"GEOUNIT":"Benin","GU_A3":"BEN","SU_DIF":0,"SUBUNIT":"Benin","SU_A3":"BEN","BRK_DIFF":0,"NAME":"Benin","NAME_LONG":"Benin","BRK_A3":"BEN","BRK_NAME":"Benin","BRK_GROUP":null,"ABBREV":"Benin","POSTAL":"BJ","FORMAL_EN":"Republic of Benin","FORMAL_FR":null,"NAME_CIAWF":"Benin","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Benin","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":12,"POP_EST":11801151,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":14390,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"BN","ISO_A2":"BJ","ISO_A2_EH":"BJ","ISO_A3":"BEN","ISO_A3_EH":"BEN","ISO_N3":"204","ISO_N3_EH":"204","UN_A3":"204","WB_A2":"BJ","WB_A3":"BEN","WOE_ID":23424764,"WOE_ID_EH":23424764,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BEN","ADM0_DIFF":null,"ADM0_TLC":"BEN","ADM0_A3_US":"BEN","ADM0_A3_FR":"BEN","ADM0_A3_RU":"BEN","ADM0_A3_ES":"BEN","ADM0_A3_CN":"BEN","ADM0_A3_TW":"BEN","ADM0_A3_IN":"BEN","ADM0_A3_NP":"BEN","ADM0_A3_PK":"BEN","ADM0_A3_DE":"BEN","ADM0_A3_GB":"BEN","ADM0_A3_BR":"BEN","ADM0_A3_IL":"BEN","ADM0_A3_PS":"BEN","ADM0_A3_SA":"BEN","ADM0_A3_EG":"BEN","ADM0_A3_MA":"BEN","ADM0_A3_PT":"BEN","ADM0_A3_AR":"BEN","ADM0_A3_JP":"BEN","ADM0_A3_KO":"BEN","ADM0_A3_VN":"BEN","ADM0_A3_TR":"BEN","ADM0_A3_ID":"BEN","ADM0_A3_PL":"BEN","ADM0_A3_GR":"BEN","ADM0_A3_IT":"BEN","ADM0_A3_NL":"BEN","ADM0_A3_SE":"BEN","ADM0_A3_BD":"BEN","ADM0_A3_UA":"BEN","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Western Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":5,"LONG_LEN":5,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":2.352018,"LABEL_Y":10.324775,"NE_ID":1159320399,"WIKIDATAID":"Q962","NAME_AR":"بنين","NAME_BN":"বেনিন","NAME_DE":"Benin","NAME_EN":"Benin","NAME_ES":"Benín","NAME_FA":"بنین","NAME_FR":"Bénin","NAME_EL":"Μπενίν","NAME_HE":"בנין","NAME_HI":"बेनिन","NAME_HU":"Benin","NAME_ID":"Benin","NAME_IT":"Benin","NAME_JA":"ベナン","NAME_KO":"베냉","NAME_NL":"Benin","NAME_PL":"Benin","NAME_PT":"Benim","NAME_RU":"Бенин","NAME_SV":"Benin","NAME_TR":"Benin","NAME_UK":"Бенін","NAME_UR":"بینن","NAME_VI":"Bénin","NAME_ZH":"贝宁","NAME_ZHT":"貝南","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[0.763379,6.216797,3.834473,12.383838],"geometry":{"type":"Polygon","coordinates":[[[1.622656,6.216797],[1.610938,6.25083],[1.77793,6.294629],[1.743164,6.42627],[1.639258,6.581543],[1.598535,6.610205],[1.577539,6.687402],[1.60293,6.738086],[1.59082,6.772266],[1.582031,6.877002],[1.530957,6.992432],[1.624707,6.997314],[1.624707,7.369189],[1.624609,7.725879],[1.624609,8.030225],[1.624609,8.270996],[1.606641,8.559277],[1.603809,8.770996],[1.600195,9.050049],[1.566309,9.137256],[1.424316,9.28501],[1.385742,9.36167],[1.378906,9.462988],[1.34707,9.567529],[1.345117,9.750195],[1.342871,9.962939],[1.330078,9.996973],[1.176172,10.098389],[0.958301,10.242041],[0.792188,10.351562],[0.77998,10.35957],[0.763379,10.38667],[0.7875,10.710254],[0.821875,10.752588],[0.874805,10.885742],[0.900488,10.993262],[0.924609,10.992822],[0.958008,11.027783],[0.985059,11.079004],[1.013867,11.068115],[1.062305,11.058203],[1.08457,11.076367],[1.081543,11.116016],[1.097559,11.156348],[1.135547,11.174365],[1.145508,11.2104],[1.145801,11.251904],[1.178711,11.262744],[1.234668,11.261035],[1.280469,11.273975],[1.317383,11.295264],[1.364844,11.378906],[1.391504,11.408008],[1.399707,11.428711],[1.426758,11.447119],[1.501367,11.455566],[1.561426,11.449121],[1.6,11.400635],[1.857617,11.443359],[1.980371,11.418408],[2.230859,11.62915],[2.287207,11.69126],[2.363281,11.840088],[2.38916,11.89707],[2.412695,11.999316],[2.363281,12.188428],[2.366016,12.221924],[2.469336,12.262793],[2.598438,12.294336],[2.648438,12.296777],[2.681348,12.312793],[2.728516,12.353613],[2.805273,12.383838],[2.850195,12.373682],[2.878125,12.367725],[3.149609,12.118066],[3.267383,11.991895],[3.299121,11.927148],[3.359961,11.880469],[3.449805,11.851953],[3.531738,11.787451],[3.59541,11.696289],[3.553906,11.631885],[3.490527,11.499219],[3.487793,11.39541],[3.638867,11.176855],[3.65625,11.15459],[3.695312,11.120312],[3.716406,11.07959],[3.73418,10.971924],[3.744922,10.850439],[3.756836,10.76875],[3.829688,10.65376],[3.834473,10.607422],[3.783789,10.435889],[3.771777,10.417627],[3.758496,10.412695],[3.680273,10.427783],[3.646582,10.408984],[3.604102,10.350684],[3.57793,10.29248],[3.576563,10.268359],[3.645898,10.160156],[3.602051,10.004541],[3.557227,9.907324],[3.476758,9.851904],[3.404785,9.838623],[3.354492,9.812793],[3.325195,9.778467],[3.329492,9.667041],[3.223438,9.565625],[3.164648,9.494678],[3.136133,9.451611],[3.148047,9.320605],[3.110449,9.188281],[3.044922,9.083838],[2.898047,9.061377],[2.774805,9.048535],[2.73291,8.78252],[2.734668,8.614014],[2.723633,8.441895],[2.703125,8.371826],[2.711523,8.272998],[2.702344,8.049805],[2.686035,7.87373],[2.707715,7.826611],[2.72041,7.723096],[2.719336,7.61626],[2.750977,7.541895],[2.785156,7.476855],[2.783984,7.443408],[2.76582,7.42251],[2.750488,7.395068],[2.750586,7.143213],[2.756738,7.06792],[2.747754,7.019824],[2.721387,6.980273],[2.731738,6.852832],[2.75293,6.771631],[2.774609,6.711719],[2.753711,6.661768],[2.735645,6.595703],[2.708008,6.427686],[2.706445,6.369238],[2.286914,6.328076],[1.818164,6.260645],[1.622656,6.216797]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Belize","SOV_A3":"BLZ","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Belize","ADM0_A3":"BLZ","GEOU_DIF":0,"GEOUNIT":"Belize","GU_A3":"BLZ","SU_DIF":0,"SUBUNIT":"Belize","SU_A3":"BLZ","BRK_DIFF":0,"NAME":"Belize","NAME_LONG":"Belize","BRK_A3":"BLZ","BRK_NAME":"Belize","BRK_GROUP":null,"ABBREV":"Belize","POSTAL":"BZ","FORMAL_EN":"Belize","FORMAL_FR":null,"NAME_CIAWF":"Belize","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Belize","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":5,"MAPCOLOR13":7,"POP_EST":390353,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":1879,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"BH","ISO_A2":"BZ","ISO_A2_EH":"BZ","ISO_A3":"BLZ","ISO_A3_EH":"BLZ","ISO_N3":"084","ISO_N3_EH":"084","UN_A3":"084","WB_A2":"BZ","WB_A3":"BLZ","WOE_ID":23424760,"WOE_ID_EH":23424760,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BLZ","ADM0_DIFF":null,"ADM0_TLC":"BLZ","ADM0_A3_US":"BLZ","ADM0_A3_FR":"BLZ","ADM0_A3_RU":"BLZ","ADM0_A3_ES":"BLZ","ADM0_A3_CN":"BLZ","ADM0_A3_TW":"BLZ","ADM0_A3_IN":"BLZ","ADM0_A3_NP":"BLZ","ADM0_A3_PK":"BLZ","ADM0_A3_DE":"BLZ","ADM0_A3_GB":"BLZ","ADM0_A3_BR":"BLZ","ADM0_A3_IL":"BLZ","ADM0_A3_PS":"BLZ","ADM0_A3_SA":"BLZ","ADM0_A3_EG":"BLZ","ADM0_A3_MA":"BLZ","ADM0_A3_PT":"BLZ","ADM0_A3_AR":"BLZ","ADM0_A3_JP":"BLZ","ADM0_A3_KO":"BLZ","ADM0_A3_VN":"BLZ","ADM0_A3_TR":"BLZ","ADM0_A3_ID":"BLZ","ADM0_A3_PL":"BLZ","ADM0_A3_GR":"BLZ","ADM0_A3_IT":"BLZ","ADM0_A3_NL":"BLZ","ADM0_A3_SE":"BLZ","ADM0_A3_BD":"BLZ","ADM0_A3_UA":"BLZ","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Central America","REGION_WB":"Latin America & Caribbean","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":6,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-88.712962,"LABEL_Y":17.202068,"NE_ID":1159320431,"WIKIDATAID":"Q242","NAME_AR":"بليز","NAME_BN":"বেলিজ","NAME_DE":"Belize","NAME_EN":"Belize","NAME_ES":"Belice","NAME_FA":"بلیز","NAME_FR":"Belize","NAME_EL":"Μπελίζ","NAME_HE":"בליז","NAME_HI":"बेलीज़","NAME_HU":"Belize","NAME_ID":"Belize","NAME_IT":"Belize","NAME_JA":"ベリーズ","NAME_KO":"벨리즈","NAME_NL":"Belize","NAME_PL":"Belize","NAME_PT":"Belize","NAME_RU":"Белиз","NAME_SV":"Belize","NAME_TR":"Belize","NAME_UK":"Беліз","NAME_UR":"بیلیز","NAME_VI":"Belize","NAME_ZH":"伯利兹","NAME_ZHT":"貝里斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-89.2375,15.888672,-87.788623,18.482324],"geometry":{"type":"MultiPolygon","coordinates":[[[[-89.161475,17.814844],[-89.162354,17.901953],[-89.133545,17.970801],[-89.050439,17.999707],[-88.942627,17.939648],[-88.897803,17.914551],[-88.857373,17.928809],[-88.806348,17.965527],[-88.743604,18.071631],[-88.586182,18.290527],[-88.522998,18.445898],[-88.461279,18.476758],[-88.372412,18.482324],[-88.295654,18.472412],[-88.349268,18.358838],[-88.295654,18.344092],[-88.247266,18.354687],[-88.130273,18.350732],[-88.085254,18.226123],[-88.097217,18.121631],[-88.207471,17.846094],[-88.221436,17.751367],[-88.271729,17.609863],[-88.203467,17.516602],[-88.267187,17.392578],[-88.288818,17.312695],[-88.293994,17.192139],[-88.261816,16.963037],[-88.313428,16.632764],[-88.404541,16.488623],[-88.461133,16.433789],[-88.562305,16.29043],[-88.695166,16.247656],[-88.879102,16.01665],[-88.911719,15.956006],[-88.894043,15.890625],[-88.937158,15.889844],[-89.113574,15.900684],[-89.232812,15.888672],[-89.2375,15.894434],[-89.227637,16.142822],[-89.212451,16.527148],[-89.20127,16.808984],[-89.190381,17.084668],[-89.182178,17.291211],[-89.171094,17.572266],[-89.161475,17.814844]]],[[[-87.950586,17.924951],[-87.998096,17.906348],[-87.959033,17.964014],[-87.95332,18.001074],[-87.89834,18.154932],[-87.858936,18.154053],[-87.848535,18.140381],[-87.950586,17.924951]]],[[[-87.85293,17.422852],[-87.92998,17.283008],[-87.934863,17.322949],[-87.902832,17.426465],[-87.859424,17.462793],[-87.83252,17.501074],[-87.826416,17.546289],[-87.788623,17.524219],[-87.798145,17.47959],[-87.85293,17.422852]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Belgium","SOV_A3":"BEL","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Belgium","ADM0_A3":"BEL","GEOU_DIF":0,"GEOUNIT":"Belgium","GU_A3":"BEL","SU_DIF":0,"SUBUNIT":"Belgium","SU_A3":"BEL","BRK_DIFF":0,"NAME":"Belgium","NAME_LONG":"Belgium","BRK_A3":"BEL","BRK_NAME":"Belgium","BRK_GROUP":null,"ABBREV":"Belg.","POSTAL":"B","FORMAL_EN":"Kingdom of Belgium","FORMAL_FR":null,"NAME_CIAWF":"Belgium","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Belgium","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":11484055,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":533097,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"BE","ISO_A2":"BE","ISO_A2_EH":"BE","ISO_A3":"BEL","ISO_A3_EH":"BEL","ISO_N3":"056","ISO_N3_EH":"056","UN_A3":"056","WB_A2":"BE","WB_A3":"BEL","WOE_ID":23424757,"WOE_ID_EH":23424757,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BEL","ADM0_DIFF":null,"ADM0_TLC":"BEL","ADM0_A3_US":"BEL","ADM0_A3_FR":"BEL","ADM0_A3_RU":"BEL","ADM0_A3_ES":"BEL","ADM0_A3_CN":"BEL","ADM0_A3_TW":"BEL","ADM0_A3_IN":"BEL","ADM0_A3_NP":"BEL","ADM0_A3_PK":"BEL","ADM0_A3_DE":"BEL","ADM0_A3_GB":"BEL","ADM0_A3_BR":"BEL","ADM0_A3_IL":"BEL","ADM0_A3_PS":"BEL","ADM0_A3_SA":"BEL","ADM0_A3_EG":"BEL","ADM0_A3_MA":"BEL","ADM0_A3_PT":"BEL","ADM0_A3_AR":"BEL","ADM0_A3_JP":"BEL","ADM0_A3_KO":"BEL","ADM0_A3_VN":"BEL","ADM0_A3_TR":"BEL","ADM0_A3_ID":"BEL","ADM0_A3_PL":"BEL","ADM0_A3_GR":"BEL","ADM0_A3_IT":"BEL","ADM0_A3_NL":"BEL","ADM0_A3_SE":"BEL","ADM0_A3_BD":"BEL","ADM0_A3_UA":"BEL","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":4.800448,"LABEL_Y":50.785392,"NE_ID":1159320389,"WIKIDATAID":"Q31","NAME_AR":"بلجيكا","NAME_BN":"বেলজিয়াম","NAME_DE":"Belgien","NAME_EN":"Belgium","NAME_ES":"Bélgica","NAME_FA":"بلژیک","NAME_FR":"Belgique","NAME_EL":"Βέλγιο","NAME_HE":"בלגיה","NAME_HI":"बेल्जियम","NAME_HU":"Belgium","NAME_ID":"Belgia","NAME_IT":"Belgio","NAME_JA":"ベルギー","NAME_KO":"벨기에","NAME_NL":"België","NAME_PL":"Belgia","NAME_PT":"Bélgica","NAME_RU":"Бельгия","NAME_SV":"Belgien","NAME_TR":"Belçika","NAME_UK":"Бельгія","NAME_UR":"بلجئیم","NAME_VI":"Bỉ","NAME_ZH":"比利时","NAME_ZHT":"比利時","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[2.524902,49.510889,6.364453,51.491113],"geometry":{"type":"Polygon","coordinates":[[[4.226172,51.386475],[4.304492,51.361523],[4.37373,51.356006],[4.404004,51.36709],[4.384766,51.427588],[4.440918,51.459814],[4.503418,51.474707],[4.531641,51.448584],[4.58877,51.421924],[4.633984,51.421729],[4.755664,51.491113],[4.78418,51.477393],[4.810547,51.452734],[4.816016,51.432812],[4.820703,51.412061],[4.848047,51.403271],[4.943945,51.407764],[4.992578,51.445361],[5.030957,51.469092],[5.059473,51.453125],[5.073438,51.406836],[5.099902,51.346484],[5.21416,51.278955],[5.31084,51.259717],[5.429785,51.272998],[5.476855,51.285059],[5.508789,51.275],[5.54043,51.239307],[5.608789,51.198437],[5.752344,51.169482],[5.796484,51.153076],[5.827148,51.125635],[5.818262,51.086426],[5.749805,50.98877],[5.74082,50.959912],[5.75,50.950244],[5.736621,50.932129],[5.647559,50.86665],[5.639453,50.843604],[5.669141,50.805957],[5.693555,50.774756],[5.693652,50.774658],[5.74707,50.75957],[5.797363,50.754541],[5.892461,50.752557],[5.993945,50.750439],[6.005957,50.732227],[6.119434,50.679248],[6.154492,50.637256],[6.235938,50.59668],[6.168457,50.545361],[6.178711,50.52251],[6.203027,50.499121],[6.294922,50.485498],[6.340918,50.451758],[6.343652,50.400244],[6.364453,50.316162],[6.175098,50.232666],[6.121289,50.139355],[6.116504,50.120996],[6.110059,50.123779],[6.089063,50.15459],[6.054785,50.154297],[5.97627,50.167187],[5.866895,50.082812],[5.817383,50.012695],[5.788086,49.96123],[5.744043,49.919629],[5.735254,49.875635],[5.74082,49.857178],[5.725781,49.83335],[5.725,49.808301],[5.787988,49.758887],[5.803711,49.732178],[5.880371,49.644775],[5.856543,49.612842],[5.837598,49.57832],[5.81543,49.553809],[5.789746,49.538281],[5.710449,49.539209],[5.610059,49.528223],[5.542383,49.511035],[5.507324,49.510889],[5.434668,49.554492],[5.353516,49.619824],[5.301953,49.650977],[5.278809,49.67793],[5.215039,49.689258],[5.124121,49.721484],[5.061035,49.756543],[5.006934,49.778369],[4.930566,49.789258],[4.867578,49.788135],[4.849121,49.847119],[4.841504,49.914502],[4.790039,49.95957],[4.860547,50.135889],[4.818652,50.153174],[4.772852,50.139062],[4.706641,50.09707],[4.675098,50.046875],[4.656152,50.002441],[4.54502,49.960254],[4.36875,49.944971],[4.176074,49.960254],[4.149316,49.971582],[4.137012,49.984473],[4.136816,50],[4.150293,50.023877],[4.183887,50.052832],[4.192188,50.094141],[4.157715,50.129883],[4.135254,50.143799],[4.144141,50.178418],[4.169629,50.221777],[4.174609,50.246484],[4.044141,50.321338],[3.949707,50.335938],[3.858105,50.338574],[3.788574,50.346973],[3.748047,50.343506],[3.718848,50.32168],[3.689355,50.306055],[3.667285,50.324805],[3.626758,50.457324],[3.59541,50.477344],[3.476953,50.499463],[3.316211,50.507373],[3.27334,50.531543],[3.249805,50.591162],[3.234961,50.662939],[3.182031,50.731689],[3.154883,50.748926],[3.106836,50.779443],[3.022852,50.766895],[2.921973,50.727051],[2.862402,50.716016],[2.839746,50.711768],[2.759375,50.750635],[2.669141,50.811426],[2.596777,50.875928],[2.579297,50.911768],[2.601465,50.955273],[2.574805,50.988574],[2.536035,51.049512],[2.524902,51.097119],[2.960156,51.26543],[3.225195,51.351611],[3.350098,51.377686],[3.380078,51.291113],[3.402832,51.263623],[3.43252,51.245752],[3.471973,51.242236],[3.51709,51.263623],[3.580273,51.286182],[3.681836,51.275684],[3.755664,51.254834],[3.781934,51.233203],[3.830762,51.212598],[3.902051,51.207666],[4.040039,51.24707],[4.172559,51.30708],[4.211426,51.34873],[4.226172,51.386475]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Belarus","SOV_A3":"BLR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Belarus","ADM0_A3":"BLR","GEOU_DIF":0,"GEOUNIT":"Belarus","GU_A3":"BLR","SU_DIF":0,"SUBUNIT":"Belarus","SU_A3":"BLR","BRK_DIFF":0,"NAME":"Belarus","NAME_LONG":"Belarus","BRK_A3":"BLR","BRK_NAME":"Belarus","BRK_GROUP":null,"ABBREV":"Bela.","POSTAL":"BY","FORMAL_EN":"Republic of Belarus","FORMAL_FR":null,"NAME_CIAWF":"Belarus","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Belarus","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":5,"MAPCOLOR13":11,"POP_EST":9466856,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":63080,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"BO","ISO_A2":"BY","ISO_A2_EH":"BY","ISO_A3":"BLR","ISO_A3_EH":"BLR","ISO_N3":"112","ISO_N3_EH":"112","UN_A3":"112","WB_A2":"BY","WB_A3":"BLR","WOE_ID":23424765,"WOE_ID_EH":23424765,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BLR","ADM0_DIFF":null,"ADM0_TLC":"BLR","ADM0_A3_US":"BLR","ADM0_A3_FR":"BLR","ADM0_A3_RU":"BLR","ADM0_A3_ES":"BLR","ADM0_A3_CN":"BLR","ADM0_A3_TW":"BLR","ADM0_A3_IN":"BLR","ADM0_A3_NP":"BLR","ADM0_A3_PK":"BLR","ADM0_A3_DE":"BLR","ADM0_A3_GB":"BLR","ADM0_A3_BR":"BLR","ADM0_A3_IL":"BLR","ADM0_A3_PS":"BLR","ADM0_A3_SA":"BLR","ADM0_A3_EG":"BLR","ADM0_A3_MA":"BLR","ADM0_A3_PT":"BLR","ADM0_A3_AR":"BLR","ADM0_A3_JP":"BLR","ADM0_A3_KO":"BLR","ADM0_A3_VN":"BLR","ADM0_A3_TR":"BLR","ADM0_A3_ID":"BLR","ADM0_A3_PL":"BLR","ADM0_A3_GR":"BLR","ADM0_A3_IT":"BLR","ADM0_A3_NL":"BLR","ADM0_A3_SE":"BLR","ADM0_A3_BD":"BLR","ADM0_A3_UA":"BLR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Eastern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":28.417701,"LABEL_Y":53.821888,"NE_ID":1159320427,"WIKIDATAID":"Q184","NAME_AR":"بيلاروسيا","NAME_BN":"বেলারুশ","NAME_DE":"Belarus","NAME_EN":"Belarus","NAME_ES":"Bielorrusia","NAME_FA":"بلاروس","NAME_FR":"Biélorussie","NAME_EL":"Λευκορωσία","NAME_HE":"בלארוס","NAME_HI":"बेलारूस","NAME_HU":"Fehéroroszország","NAME_ID":"Belarus","NAME_IT":"Bielorussia","NAME_JA":"ベラルーシ","NAME_KO":"벨라루스","NAME_NL":"Wit-Rusland","NAME_PL":"Białoruś","NAME_PT":"Bielorrússia","NAME_RU":"Белоруссия","NAME_SV":"Belarus","NAME_TR":"Beyaz Rusya","NAME_UK":"Білорусь","NAME_UR":"بیلاروس","NAME_VI":"Belarus","NAME_ZH":"白俄罗斯","NAME_ZHT":"白俄羅斯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[23.175098,51.265039,32.710254,56.145801],"geometry":{"type":"Polygon","coordinates":[[[31.763379,52.101074],[31.57373,52.108105],[31.345996,52.105371],[31.217969,52.050244],[31.168457,52.062939],[31.079297,52.076953],[30.980664,52.046191],[30.845703,51.953076],[30.755273,51.895166],[30.667285,51.814111],[30.639453,51.770068],[30.583887,51.688965],[30.533008,51.596338],[30.560742,51.531494],[30.602344,51.47124],[30.611719,51.406348],[30.63252,51.35542],[30.576953,51.318359],[30.544531,51.265039],[30.449512,51.274316],[30.333398,51.325537],[30.308984,51.399609],[30.219531,51.451221],[30.160742,51.477881],[30.06377,51.482031],[29.908789,51.458008],[29.706055,51.439551],[29.553125,51.43457],[29.469629,51.40835],[29.346484,51.382568],[29.298828,51.413037],[29.230469,51.497021],[29.174219,51.580615],[29.135645,51.617285],[29.102051,51.627539],[29.060742,51.625439],[29.013086,51.598926],[28.977734,51.571777],[28.927539,51.562158],[28.849512,51.540186],[28.793262,51.510352],[28.73125,51.433398],[28.690234,51.438867],[28.647754,51.456543],[28.599023,51.542627],[28.532031,51.562451],[28.424609,51.563623],[28.291602,51.581836],[28.183789,51.607861],[28.144434,51.60166],[28.080273,51.565039],[28.010742,51.559766],[27.858594,51.592383],[27.828809,51.577441],[27.788867,51.52915],[27.741309,51.482568],[27.7,51.477979],[27.676758,51.489941],[27.689746,51.572412],[27.601367,51.601611],[27.452344,51.606104],[27.347656,51.594141],[27.296289,51.597412],[27.270117,51.613574],[27.141992,51.752051],[27.074121,51.76084],[26.952832,51.754004],[26.773438,51.770703],[26.566895,51.801904],[26.453418,51.813428],[26.394336,51.844434],[26.26709,51.855029],[25.925293,51.913525],[25.785742,51.923828],[25.580273,51.924756],[25.267188,51.937744],[25.066699,51.930518],[24.973828,51.911133],[24.866406,51.899121],[24.685156,51.888281],[24.611328,51.889502],[24.495215,51.883057],[24.361914,51.867529],[24.32373,51.838428],[24.280078,51.774707],[24.126855,51.664648],[23.97832,51.591309],[23.951172,51.585059],[23.864258,51.623975],[23.791699,51.637109],[23.706836,51.641309],[23.64668,51.628857],[23.608594,51.610498],[23.61377,51.525391],[23.605273,51.51792],[23.539648,51.618896],[23.544824,51.710254],[23.581348,51.762402],[23.625684,51.809326],[23.607422,51.879785],[23.651074,51.972998],[23.652441,52.040381],[23.633301,52.06958],[23.597949,52.103076],[23.501172,52.140381],[23.458398,52.169531],[23.327148,52.208447],[23.196973,52.256934],[23.175098,52.286621],[23.18125,52.306982],[23.204102,52.337891],[23.30332,52.428369],[23.410938,52.516211],[23.47959,52.551562],[23.844727,52.664209],[23.90127,52.703613],[23.91543,52.770264],[23.916309,52.81875],[23.909375,52.904883],[23.887109,53.027539],[23.85918,53.112109],[23.789258,53.270947],[23.598926,53.599219],[23.484668,53.939795],[23.559082,53.919824],[23.733691,53.912256],[23.872559,53.935693],[23.944434,53.938965],[24.008496,53.931641],[24.103906,53.94502],[24.191309,53.950439],[24.236621,53.919971],[24.317969,53.892969],[24.478516,53.931836],[24.620703,53.979834],[24.768164,53.974658],[24.789258,53.998242],[24.825684,54.118994],[24.869531,54.145166],[25.046094,54.133057],[25.111426,54.154932],[25.179492,54.214258],[25.283691,54.25127],[25.370605,54.251221],[25.461133,54.292773],[25.505664,54.264941],[25.527344,54.215137],[25.497363,54.175244],[25.510352,54.159619],[25.573047,54.139893],[25.680566,54.140479],[25.749219,54.156982],[25.765234,54.179785],[25.765039,54.221191],[25.748145,54.259668],[25.702539,54.292969],[25.616895,54.310107],[25.55752,54.310693],[25.547363,54.331836],[25.567578,54.377051],[25.620313,54.4604],[25.685156,54.535791],[25.724805,54.564258],[25.731641,54.590381],[25.723926,54.636035],[25.722461,54.717871],[25.780859,54.833252],[25.859277,54.919287],[25.964453,54.947168],[26.092969,54.962305],[26.175195,55.003271],[26.21582,55.050391],[26.23125,55.090137],[26.250781,55.124512],[26.291797,55.1396],[26.601172,55.130176],[26.648438,55.204199],[26.675,55.224902],[26.734375,55.246777],[26.775684,55.273096],[26.760156,55.293359],[26.68125,55.306445],[26.495313,55.318018],[26.457617,55.34248],[26.469531,55.371924],[26.519238,55.448145],[26.566602,55.546484],[26.59082,55.622656],[26.593555,55.667529],[26.620215,55.679639],[26.771875,55.693994],[26.822461,55.709229],[26.953027,55.812939],[27.052539,55.830566],[27.30918,55.803906],[27.427148,55.805957],[27.45918,55.803516],[27.576758,55.798779],[27.589453,55.80918],[27.642285,55.911719],[27.694238,55.941553],[27.896289,56.076172],[28.032031,56.133301],[28.117871,56.145801],[28.147949,56.14292],[28.284277,56.055908],[28.316309,56.052539],[28.39209,56.086719],[28.407031,56.089014],[28.563965,56.091992],[28.636914,56.061768],[28.69082,56.002637],[28.74082,55.955371],[28.794727,55.942578],[28.947461,56.0021],[29.031738,56.021777],[29.087402,56.021143],[29.283008,55.967871],[29.375,55.938721],[29.396094,55.912207],[29.397949,55.881055],[29.373145,55.834717],[29.353418,55.784375],[29.412988,55.724854],[29.482227,55.68457],[29.630078,55.751172],[29.68457,55.769727],[29.744141,55.77041],[29.823926,55.795117],[29.881641,55.832324],[29.937012,55.845264],[30.042676,55.836426],[30.233594,55.845215],[30.45625,55.786816],[30.475391,55.768799],[30.586719,55.700293],[30.625586,55.66626],[30.662305,55.655469],[30.72168,55.622119],[30.800781,55.601123],[30.855957,55.60752],[30.882227,55.596387],[30.906836,55.57002],[30.908789,55.525342],[30.900586,55.397412],[30.861816,55.3604],[30.820996,55.330273],[30.810547,55.306982],[30.814453,55.278711],[30.877441,55.223437],[30.958887,55.137598],[30.977734,55.087793],[30.977734,55.050488],[30.866797,54.940723],[30.829883,54.91499],[30.804492,54.860937],[30.791016,54.806006],[30.798828,54.783252],[30.98418,54.695898],[31.121289,54.648486],[31.152148,54.625342],[31.154883,54.610937],[31.081934,54.51709],[31.074805,54.491797],[31.184766,54.452979],[31.245508,54.39165],[31.299121,54.291699],[31.403613,54.195947],[31.628418,54.111182],[31.791992,54.055908],[31.825977,54.030713],[31.837793,54.000781],[31.825293,53.93501],[31.783008,53.85498],[31.754199,53.810449],[31.820801,53.791943],[31.992188,53.796875],[32.200391,53.78125],[32.450195,53.69292],[32.450977,53.65332],[32.425195,53.617285],[32.442383,53.579248],[32.469629,53.546973],[32.685742,53.448145],[32.706445,53.419434],[32.710254,53.371436],[32.704297,53.336328],[32.644434,53.328906],[32.578027,53.312402],[32.469336,53.270312],[32.42627,53.210596],[32.250684,53.128369],[32.141992,53.091162],[32.055469,53.089453],[31.849707,53.106201],[31.777441,53.146875],[31.747461,53.18418],[31.668262,53.200928],[31.562988,53.20249],[31.417871,53.196045],[31.388379,53.184814],[31.364551,53.138965],[31.30293,53.060889],[31.258789,53.016699],[31.295117,52.989795],[31.353027,52.933447],[31.442773,52.861816],[31.535156,52.798242],[31.564844,52.759229],[31.563477,52.731445],[31.519434,52.69873],[31.526172,52.633008],[31.615918,52.546191],[31.585547,52.532471],[31.576563,52.426025],[31.577344,52.312305],[31.601562,52.284814],[31.649902,52.262207],[31.690625,52.220654],[31.758594,52.12583],[31.763379,52.101074]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Barbados","SOV_A3":"BRB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Barbados","ADM0_A3":"BRB","GEOU_DIF":0,"GEOUNIT":"Barbados","GU_A3":"BRB","SU_DIF":0,"SUBUNIT":"Barbados","SU_A3":"BRB","BRK_DIFF":0,"NAME":"Barbados","NAME_LONG":"Barbados","BRK_A3":"BRB","BRK_NAME":"Barbados","BRK_GROUP":null,"ABBREV":"Barb.","POSTAL":"BB","FORMAL_EN":"Barbados","FORMAL_FR":null,"NAME_CIAWF":"Barbados","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Barbados","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":1,"MAPCOLOR9":5,"MAPCOLOR13":3,"POP_EST":287025,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":5209,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"BB","ISO_A2":"BB","ISO_A2_EH":"BB","ISO_A3":"BRB","ISO_A3_EH":"BRB","ISO_N3":"052","ISO_N3_EH":"052","UN_A3":"052","WB_A2":"BB","WB_A3":"BRB","WOE_ID":23424754,"WOE_ID_EH":23424754,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BRB","ADM0_DIFF":null,"ADM0_TLC":"BRB","ADM0_A3_US":"BRB","ADM0_A3_FR":"BRB","ADM0_A3_RU":"BRB","ADM0_A3_ES":"BRB","ADM0_A3_CN":"BRB","ADM0_A3_TW":"BRB","ADM0_A3_IN":"BRB","ADM0_A3_NP":"BRB","ADM0_A3_PK":"BRB","ADM0_A3_DE":"BRB","ADM0_A3_GB":"BRB","ADM0_A3_BR":"BRB","ADM0_A3_IL":"BRB","ADM0_A3_PS":"BRB","ADM0_A3_SA":"BRB","ADM0_A3_EG":"BRB","ADM0_A3_MA":"BRB","ADM0_A3_PT":"BRB","ADM0_A3_AR":"URY","ADM0_A3_JP":"BRB","ADM0_A3_KO":"BRB","ADM0_A3_VN":"BRB","ADM0_A3_TR":"BRB","ADM0_A3_ID":"BRB","ADM0_A3_PL":"BRB","ADM0_A3_GR":"BRB","ADM0_A3_IT":"BRB","ADM0_A3_NL":"BRB","ADM0_A3_SE":"BRB","ADM0_A3_BD":"BRB","ADM0_A3_UA":"BRB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":8,"LONG_LEN":8,"ABBREV_LEN":5,"TINY":3,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":-59.568966,"LABEL_Y":13.163709,"NE_ID":1159320449,"WIKIDATAID":"Q244","NAME_AR":"باربادوس","NAME_BN":"বার্বাডোস","NAME_DE":"Barbados","NAME_EN":"Barbados","NAME_ES":"Barbados","NAME_FA":"باربادوس","NAME_FR":"Barbade","NAME_EL":"Μπαρμπάντος","NAME_HE":"ברבדוס","NAME_HI":"बारबाडोस","NAME_HU":"Barbados","NAME_ID":"Barbados","NAME_IT":"Barbados","NAME_JA":"バルバドス","NAME_KO":"바베이도스","NAME_NL":"Barbados","NAME_PL":"Barbados","NAME_PT":"Barbados","NAME_RU":"Барбадос","NAME_SV":"Barbados","NAME_TR":"Barbados","NAME_UK":"Барбадос","NAME_UR":"بارباڈوس","NAME_VI":"Barbados","NAME_ZH":"巴巴多斯","NAME_ZHT":"巴貝多","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-59.64668,13.062207,-59.427637,13.317676],"geometry":{"type":"Polygon","coordinates":[[[-59.493311,13.081982],[-59.521875,13.062207],[-59.611328,13.1021],[-59.642773,13.150293],[-59.64668,13.303125],[-59.591602,13.317676],[-59.487891,13.196826],[-59.427637,13.152783],[-59.493311,13.081982]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Bangladesh","SOV_A3":"BGD","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Bangladesh","ADM0_A3":"BGD","GEOU_DIF":0,"GEOUNIT":"Bangladesh","GU_A3":"BGD","SU_DIF":0,"SUBUNIT":"Bangladesh","SU_A3":"BGD","BRK_DIFF":0,"NAME":"Bangladesh","NAME_LONG":"Bangladesh","BRK_A3":"BGD","BRK_NAME":"Bangladesh","BRK_GROUP":null,"ABBREV":"Bang.","POSTAL":"BD","FORMAL_EN":"People's Republic of Bangladesh","FORMAL_FR":null,"NAME_CIAWF":"Bangladesh","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Bangladesh","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":4,"MAPCOLOR9":7,"MAPCOLOR13":7,"POP_EST":163046161,"POP_RANK":17,"POP_YEAR":2019,"GDP_MD":302571,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"BG","ISO_A2":"BD","ISO_A2_EH":"BD","ISO_A3":"BGD","ISO_A3_EH":"BGD","ISO_N3":"050","ISO_N3_EH":"050","UN_A3":"050","WB_A2":"BD","WB_A3":"BGD","WOE_ID":23424759,"WOE_ID_EH":23424759,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BGD","ADM0_DIFF":null,"ADM0_TLC":"BGD","ADM0_A3_US":"BGD","ADM0_A3_FR":"BGD","ADM0_A3_RU":"BGD","ADM0_A3_ES":"BGD","ADM0_A3_CN":"BGD","ADM0_A3_TW":"BGD","ADM0_A3_IN":"BGD","ADM0_A3_NP":"BGD","ADM0_A3_PK":"BGD","ADM0_A3_DE":"BGD","ADM0_A3_GB":"BGD","ADM0_A3_BR":"BGD","ADM0_A3_IL":"BGD","ADM0_A3_PS":"BGD","ADM0_A3_SA":"BGD","ADM0_A3_EG":"BGD","ADM0_A3_MA":"BGD","ADM0_A3_PT":"BGD","ADM0_A3_AR":"BGD","ADM0_A3_JP":"BGD","ADM0_A3_KO":"BGD","ADM0_A3_VN":"BGD","ADM0_A3_TR":"BGD","ADM0_A3_ID":"BGD","ADM0_A3_PL":"BGD","ADM0_A3_GR":"BGD","ADM0_A3_IT":"BGD","ADM0_A3_NL":"BGD","ADM0_A3_SE":"BGD","ADM0_A3_BD":"BGD","ADM0_A3_UA":"BGD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":89.684963,"LABEL_Y":24.214956,"NE_ID":1159320407,"WIKIDATAID":"Q902","NAME_AR":"بنغلاديش","NAME_BN":"বাংলাদেশ","NAME_DE":"Bangladesch","NAME_EN":"Bangladesh","NAME_ES":"Bangladés","NAME_FA":"بنگلادش","NAME_FR":"Bangladesh","NAME_EL":"Μπανγκλαντές","NAME_HE":"בנגלדש","NAME_HI":"बांग्लादेश","NAME_HU":"Banglades","NAME_ID":"Bangladesh","NAME_IT":"Bangladesh","NAME_JA":"バングラデシュ","NAME_KO":"방글라데시","NAME_NL":"Bangladesh","NAME_PL":"Bangladesz","NAME_PT":"Bangladesh","NAME_RU":"Бангладеш","NAME_SV":"Bangladesh","NAME_TR":"Bangladeş","NAME_UK":"Бангладеш","NAME_UR":"بنگلہ دیش","NAME_VI":"Bangladesh","NAME_ZH":"孟加拉国","NAME_ZHT":"孟加拉","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[88.023438,20.79043,92.631641,26.571533],"geometry":{"type":"MultiPolygon","coordinates":[[[[89.051465,22.093164],[89.055859,22.18623],[89.05,22.274609],[88.971484,22.510937],[88.920703,22.632031],[88.926953,22.671143],[88.923438,22.687549],[88.899707,22.843506],[88.866992,22.938867],[88.850586,23.040527],[88.928125,23.186621],[88.89707,23.2104],[88.807617,23.229687],[88.724414,23.25498],[88.704004,23.292822],[88.74082,23.436621],[88.697656,23.493018],[88.635742,23.55],[88.616406,23.572754],[88.595996,23.602197],[88.567383,23.674414],[88.622559,23.826367],[88.699805,24.002539],[88.71377,24.069629],[88.726562,24.18623],[88.733594,24.230908],[88.723535,24.274902],[88.642285,24.325977],[88.498535,24.346631],[88.396973,24.389258],[88.3375,24.453857],[88.287109,24.479736],[88.225,24.460645],[88.145508,24.485791],[88.079102,24.549902],[88.023438,24.627832],[88.030273,24.664453],[88.045117,24.713037],[88.149805,24.914648],[88.188867,24.920605],[88.279492,24.881934],[88.313379,24.881836],[88.372949,24.961523],[88.45625,25.188428],[88.573828,25.187891],[88.677539,25.180469],[88.747559,25.168945],[88.817285,25.176221],[88.890137,25.194385],[88.929785,25.222998],[88.95166,25.259277],[88.944141,25.290771],[88.854785,25.333545],[88.820312,25.365527],[88.79541,25.45625],[88.769141,25.490479],[88.593457,25.495312],[88.502441,25.537012],[88.452344,25.574414],[88.363086,25.698193],[88.25293,25.789795],[88.147461,25.811426],[88.106641,25.841113],[88.08457,25.888232],[88.097363,25.956348],[88.129004,26.018213],[88.150781,26.087158],[88.235156,26.178076],[88.333984,26.25752],[88.378027,26.312012],[88.44043,26.369482],[88.447852,26.401025],[88.436719,26.437109],[88.38623,26.471533],[88.351465,26.482568],[88.345898,26.504785],[88.369922,26.564111],[88.418164,26.571533],[88.518262,26.517773],[88.620117,26.430664],[88.680664,26.352979],[88.682813,26.291699],[88.722168,26.281836],[88.761914,26.279395],[88.828027,26.252197],[88.896484,26.260498],[88.940723,26.245361],[88.97041,26.250879],[88.981543,26.286133],[88.948242,26.337988],[88.924121,26.375098],[88.951953,26.412109],[88.983398,26.419531],[89.018652,26.410254],[89.066797,26.376904],[89.101953,26.30835],[89.108301,26.202246],[89.186426,26.105957],[89.289258,26.037598],[89.369727,26.006104],[89.466895,25.983545],[89.549902,26.005273],[89.591406,26.072412],[89.572754,26.132324],[89.585742,26.186035],[89.619043,26.215674],[89.670898,26.213818],[89.709863,26.17124],[89.822949,25.941406],[89.799609,25.8396],[89.824902,25.560156],[89.796289,25.37583],[89.800879,25.336133],[89.814063,25.305371],[89.833301,25.292773],[89.866309,25.293164],[90.003809,25.25835],[90.119629,25.219971],[90.250391,25.184961],[90.439355,25.157715],[90.555273,25.166602],[90.613086,25.167725],[90.730176,25.159473],[91.038281,25.174072],[91.293164,25.177979],[91.39668,25.151611],[91.479688,25.142139],[91.763477,25.160645],[92.049707,25.169482],[92.204688,25.110937],[92.373438,25.015137],[92.468359,24.944141],[92.485449,24.90332],[92.475,24.868506],[92.443164,24.849414],[92.384961,24.848779],[92.25127,24.895068],[92.22832,24.881348],[92.230566,24.78623],[92.22666,24.770996],[92.198047,24.685742],[92.11748,24.493945],[92.101953,24.408057],[92.085059,24.386182],[92.06416,24.374365],[92.001074,24.370898],[91.95166,24.356738],[91.931055,24.325537],[91.899023,24.260693],[91.876953,24.195312],[91.846191,24.175293],[91.772461,24.210645],[91.726562,24.205078],[91.66875,24.190088],[91.611133,24.152832],[91.571387,24.106592],[91.526367,24.090771],[91.392676,24.100098],[91.36709,24.093506],[91.350195,24.060498],[91.336426,24.018799],[91.232031,23.920459],[91.19248,23.762891],[91.160449,23.660645],[91.165527,23.581055],[91.253809,23.373633],[91.315234,23.104395],[91.338867,23.077002],[91.359375,23.068359],[91.368652,23.074561],[91.366797,23.130469],[91.370605,23.197998],[91.399414,23.213867],[91.43623,23.199902],[91.471387,23.14126],[91.51123,23.033691],[91.553516,22.991553],[91.619531,22.979688],[91.694922,23.004834],[91.750977,23.053516],[91.773828,23.106104],[91.75791,23.209814],[91.754199,23.287305],[91.790039,23.361035],[91.919141,23.471045],[91.937891,23.504688],[91.929492,23.598242],[91.92959,23.685986],[91.978516,23.691992],[92.044043,23.677783],[92.127051,23.720996],[92.152344,23.721875],[92.187109,23.675537],[92.246094,23.683594],[92.289355,23.49248],[92.33418,23.323828],[92.333789,23.242383],[92.341211,23.069824],[92.361621,22.929004],[92.393164,22.897021],[92.430469,22.821826],[92.464453,22.734424],[92.491406,22.6854],[92.50957,22.525684],[92.531836,22.410303],[92.56123,22.048047],[92.574902,21.978076],[92.582812,21.940332],[92.584277,21.609033],[92.593457,21.467334],[92.625293,21.350732],[92.631641,21.306201],[92.599805,21.270166],[92.568555,21.26333],[92.53916,21.319824],[92.471875,21.362988],[92.372656,21.409033],[92.330566,21.439795],[92.279688,21.427588],[92.208203,21.357861],[92.17959,21.293115],[92.191992,21.202246],[92.214746,21.112695],[92.264453,21.061475],[92.268457,21.004688],[92.28623,20.931592],[92.311914,20.864453],[92.324121,20.791846],[92.307813,20.79043],[92.248145,20.883594],[92.194629,20.984277],[92.056055,21.174805],[92.010938,21.51626],[92.008008,21.684766],[91.913184,21.883057],[91.85,22.157373],[91.824805,22.228662],[91.857813,22.317334],[91.863379,22.350488],[91.84541,22.343115],[91.79707,22.297461],[91.734082,22.406689],[91.692969,22.504785],[91.529688,22.707666],[91.482129,22.797412],[91.480078,22.884814],[91.40957,22.797021],[91.31377,22.735156],[91.216211,22.642236],[91.151367,22.614063],[90.945605,22.597021],[90.826758,22.721387],[90.65625,23.025488],[90.633594,23.094238],[90.656055,23.273047],[90.615625,23.442334],[90.616113,23.531641],[90.604004,23.591357],[90.573438,23.578125],[90.561621,23.537109],[90.568066,23.474268],[90.555664,23.421533],[90.408008,23.431885],[90.269141,23.455859],[90.391504,23.366943],[90.522754,23.346143],[90.590918,23.266406],[90.599219,23.20415],[90.595117,23.133936],[90.527734,23.084961],[90.466016,23.053906],[90.477539,22.986768],[90.552246,22.904883],[90.461621,22.881787],[90.436914,22.828174],[90.435059,22.751904],[90.480664,22.684668],[90.498438,22.634814],[90.487402,22.588721],[90.531738,22.539307],[90.595508,22.43584],[90.616113,22.362158],[90.589453,22.258447],[90.552832,22.218164],[90.494141,22.178906],[90.355762,22.048242],[90.288184,21.899414],[90.230566,21.829785],[90.158789,21.816846],[90.130762,21.847412],[90.071191,21.887256],[90.07002,21.959912],[90.087891,22.01748],[90.20957,22.156592],[90.143457,22.137891],[90.068555,22.098193],[89.954199,22.022852],[89.918066,22.116162],[89.894043,22.202588],[89.893848,22.308398],[89.985156,22.466406],[89.881836,22.387598],[89.853223,22.288965],[89.86582,22.173047],[89.852539,22.090918],[89.811914,21.983496],[89.756836,21.919043],[89.667773,21.877686],[89.628125,21.81416],[89.568555,21.767432],[89.566602,21.860596],[89.547461,21.983691],[89.483203,22.275537],[89.469336,22.212939],[89.502539,22.031885],[89.500586,21.914355],[89.451953,21.821094],[89.353711,21.721094],[89.278613,21.706982],[89.234277,21.722363],[89.16709,21.784277],[89.093945,21.872754],[89.081641,22.014941],[89.051465,22.093164]]],[[[91.150781,22.175195],[91.044727,22.105176],[91.079492,22.519727],[91.158301,22.36543],[91.178223,22.283008],[91.150781,22.175195]]],[[[91.556738,22.382227],[91.510449,22.352783],[91.466895,22.378418],[91.411328,22.475684],[91.438867,22.598828],[91.456055,22.616504],[91.483984,22.576562],[91.523047,22.490723],[91.54834,22.425391],[91.556738,22.382227]]],[[[90.777637,22.089307],[90.603613,22.054199],[90.515039,22.065137],[90.680469,22.32749],[90.674902,22.444971],[90.649219,22.540674],[90.564941,22.617627],[90.560352,22.672559],[90.522559,22.74751],[90.50293,22.835352],[90.596484,22.863525],[90.672266,22.813184],[90.683008,22.785303],[90.699219,22.713525],[90.736914,22.638721],[90.868164,22.484863],[90.86582,22.390576],[90.829883,22.159961],[90.777637,22.089307]]],[[[91.873828,21.832129],[91.837598,21.750244],[91.819727,21.809814],[91.835156,21.885352],[91.850684,21.927051],[91.861328,21.92666],[91.88252,21.883643],[91.873828,21.832129]]],[[[91.949219,21.508057],[91.888867,21.50332],[91.859473,21.532959],[91.873242,21.574414],[91.857031,21.708789],[91.907715,21.722949],[91.933984,21.722168],[91.948633,21.682568],[91.961914,21.609766],[91.949219,21.508057]]],[[[90.641797,22.962988],[90.65957,22.92002],[90.603906,22.945557],[90.562305,22.975439],[90.536328,23.014893],[90.579883,23.035449],[90.641797,22.962988]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Bahrain","SOV_A3":"BHR","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Bahrain","ADM0_A3":"BHR","GEOU_DIF":0,"GEOUNIT":"Bahrain","GU_A3":"BHR","SU_DIF":0,"SUBUNIT":"Bahrain","SU_A3":"BHR","BRK_DIFF":0,"NAME":"Bahrain","NAME_LONG":"Bahrain","BRK_A3":"BHR","BRK_NAME":"Bahrain","BRK_GROUP":null,"ABBREV":"Bahr.","POSTAL":"BH","FORMAL_EN":"Kingdom of Bahrain","FORMAL_FR":null,"NAME_CIAWF":"Bahrain","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Bahrain","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":1,"MAPCOLOR13":9,"POP_EST":1641172,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":38574,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"BA","ISO_A2":"BH","ISO_A2_EH":"BH","ISO_A3":"BHR","ISO_A3_EH":"BHR","ISO_N3":"048","ISO_N3_EH":"048","UN_A3":"048","WB_A2":"BH","WB_A3":"BHR","WOE_ID":23424753,"WOE_ID_EH":23424753,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BHR","ADM0_DIFF":null,"ADM0_TLC":"BHR","ADM0_A3_US":"BHR","ADM0_A3_FR":"BHR","ADM0_A3_RU":"BHR","ADM0_A3_ES":"BHR","ADM0_A3_CN":"BHR","ADM0_A3_TW":"BHR","ADM0_A3_IN":"BHR","ADM0_A3_NP":"BHR","ADM0_A3_PK":"BHR","ADM0_A3_DE":"BHR","ADM0_A3_GB":"BHR","ADM0_A3_BR":"BHR","ADM0_A3_IL":"BHR","ADM0_A3_PS":"BHR","ADM0_A3_SA":"BHR","ADM0_A3_EG":"BHR","ADM0_A3_MA":"BHR","ADM0_A3_PT":"BHR","ADM0_A3_AR":"BHR","ADM0_A3_JP":"BHR","ADM0_A3_KO":"BHR","ADM0_A3_VN":"BHR","ADM0_A3_TR":"BHR","ADM0_A3_ID":"BHR","ADM0_A3_PL":"BHR","ADM0_A3_GR":"BHR","ADM0_A3_IT":"BHR","ADM0_A3_NL":"BHR","ADM0_A3_SE":"BHR","ADM0_A3_BD":"BHR","ADM0_A3_UA":"BHR","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Middle East & North Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":2,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":50.554816,"LABEL_Y":26.055972,"NE_ID":1159320413,"WIKIDATAID":"Q398","NAME_AR":"البحرين","NAME_BN":"বাহরাইন","NAME_DE":"Bahrain","NAME_EN":"Bahrain","NAME_ES":"Baréin","NAME_FA":"بحرین","NAME_FR":"Bahreïn","NAME_EL":"Μπαχρέιν","NAME_HE":"בחריין","NAME_HI":"बहरीन","NAME_HU":"Bahrein","NAME_ID":"Bahrain","NAME_IT":"Bahrein","NAME_JA":"バーレーン","NAME_KO":"바레인","NAME_NL":"Bahrein","NAME_PL":"Bahrajn","NAME_PT":"Bahrein","NAME_RU":"Бахрейн","NAME_SV":"Bahrain","NAME_TR":"Bahreyn","NAME_UK":"Бахрейн","NAME_UR":"بحرین","NAME_VI":"Bahrain","NAME_ZH":"巴林","NAME_ZHT":"巴林","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[50.452441,25.806787,50.61748,26.246436],"geometry":{"type":"Polygon","coordinates":[[[50.607227,25.883105],[50.574902,25.806787],[50.544043,25.833496],[50.465918,25.965527],[50.489453,26.058447],[50.452441,26.19082],[50.469922,26.228955],[50.564063,26.246436],[50.585938,26.240723],[50.557813,26.198291],[50.609766,26.124463],[50.61748,26.002344],[50.607227,25.883105]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"The Bahamas","SOV_A3":"BHS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"The Bahamas","ADM0_A3":"BHS","GEOU_DIF":0,"GEOUNIT":"The Bahamas","GU_A3":"BHS","SU_DIF":0,"SUBUNIT":"The Bahamas","SU_A3":"BHS","BRK_DIFF":0,"NAME":"Bahamas","NAME_LONG":"Bahamas","BRK_A3":"BHS","BRK_NAME":"Bahamas","BRK_GROUP":null,"ABBREV":"Bhs.","POSTAL":"BS","FORMAL_EN":"Commonwealth of the Bahamas","FORMAL_FR":null,"NAME_CIAWF":"Bahamas, The","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Bahamas, The","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":1,"MAPCOLOR9":2,"MAPCOLOR13":5,"POP_EST":389482,"POP_RANK":10,"POP_YEAR":2019,"GDP_MD":13578,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"BF","ISO_A2":"BS","ISO_A2_EH":"BS","ISO_A3":"BHS","ISO_A3_EH":"BHS","ISO_N3":"044","ISO_N3_EH":"044","UN_A3":"044","WB_A2":"BS","WB_A3":"BHS","WOE_ID":23424758,"WOE_ID_EH":23424758,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"BHS","ADM0_DIFF":null,"ADM0_TLC":"BHS","ADM0_A3_US":"BHS","ADM0_A3_FR":"BHS","ADM0_A3_RU":"BHS","ADM0_A3_ES":"BHS","ADM0_A3_CN":"BHS","ADM0_A3_TW":"BHS","ADM0_A3_IN":"BHS","ADM0_A3_NP":"BHS","ADM0_A3_PK":"BHS","ADM0_A3_DE":"BHS","ADM0_A3_GB":"BHS","ADM0_A3_BR":"BHS","ADM0_A3_IL":"BHS","ADM0_A3_PS":"BHS","ADM0_A3_SA":"BHS","ADM0_A3_EG":"BHS","ADM0_A3_MA":"BHS","ADM0_A3_PT":"BHS","ADM0_A3_AR":"BHS","ADM0_A3_JP":"BHS","ADM0_A3_KO":"BHS","ADM0_A3_VN":"BHS","ADM0_A3_TR":"BHS","ADM0_A3_ID":"BHS","ADM0_A3_PL":"BHS","ADM0_A3_GR":"BHS","ADM0_A3_IT":"BHS","ADM0_A3_NL":"BHS","ADM0_A3_SE":"BHS","ADM0_A3_BD":"BHS","ADM0_A3_UA":"BHS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":-77.146688,"LABEL_Y":26.401789,"NE_ID":1159320415,"WIKIDATAID":"Q778","NAME_AR":"باهاماس","NAME_BN":"বাহামা দ্বীপপুঞ্জ","NAME_DE":"Bahamas","NAME_EN":"The Bahamas","NAME_ES":"Bahamas","NAME_FA":"باهاما","NAME_FR":"Bahamas","NAME_EL":"Μπαχάμες","NAME_HE":"איי בהאמה","NAME_HI":"बहामास","NAME_HU":"Bahama-szigetek","NAME_ID":"Bahama","NAME_IT":"Bahamas","NAME_JA":"バハマ","NAME_KO":"바하마","NAME_NL":"Bahama's","NAME_PL":"Bahamy","NAME_PT":"Bahamas","NAME_RU":"Багамские Острова","NAME_SV":"Bahamas","NAME_TR":"Bahamalar","NAME_UK":"Багамські Острови","NAME_UR":"بہاماس","NAME_VI":"Bahamas","NAME_ZH":"巴哈马","NAME_ZHT":"巴哈馬","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-78.985645,20.937402,-72.747266,26.940088],"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.657715,24.249463],[-77.656152,24.226562],[-77.755273,24.163477],[-77.683252,24.118457],[-77.615381,24.216357],[-77.561523,24.136816],[-77.532031,23.987646],[-77.536816,23.96167],[-77.531885,23.939404],[-77.521338,23.91084],[-77.51875,23.869434],[-77.57373,23.73916],[-77.771289,23.752539],[-77.775781,23.862354],[-77.806299,23.883545],[-77.852246,24.040381],[-77.914062,24.090918],[-77.999902,24.219824],[-77.950049,24.253076],[-77.883594,24.241992],[-77.849561,24.25752],[-77.757422,24.269922],[-77.701465,24.287549],[-77.657715,24.249463]]],[[[-77.225635,25.904199],[-77.246436,25.895459],[-77.333252,25.995605],[-77.403174,26.024707],[-77.293945,26.095508],[-77.246777,26.156348],[-77.247754,26.289062],[-77.221094,26.361768],[-77.230127,26.424707],[-77.206055,26.488965],[-77.238623,26.561133],[-77.329932,26.618359],[-77.510596,26.845996],[-77.795996,26.90127],[-77.94375,26.903564],[-77.862549,26.940088],[-77.787549,26.935645],[-77.672119,26.913916],[-77.533887,26.903418],[-77.449414,26.836426],[-77.36875,26.747607],[-77.295898,26.71167],[-77.265918,26.688818],[-77.269287,26.663037],[-77.257178,26.638818],[-77.162109,26.597266],[-77.066357,26.530176],[-77.038281,26.333447],[-77.167285,26.240332],[-77.191016,25.955469],[-77.225635,25.904199]]],[[[-73.026855,21.192383],[-73.05874,21.119043],[-73.164551,20.97915],[-73.400781,20.943896],[-73.661035,20.937402],[-73.681152,20.975586],[-73.686816,21.009131],[-73.667822,21.061572],[-73.66958,21.082227],[-73.680371,21.10332],[-73.585059,21.125928],[-73.523096,21.19082],[-73.424512,21.201758],[-73.301562,21.156152],[-73.235352,21.154492],[-73.137305,21.204785],[-73.058496,21.313379],[-73.01167,21.299512],[-73.026855,21.192383]]],[[[-77.743848,24.707422],[-77.746045,24.586328],[-77.735107,24.495752],[-77.745215,24.463477],[-77.853418,24.40293],[-77.881201,24.369092],[-77.983203,24.334961],[-78.044922,24.287451],[-78.07583,24.364648],[-78.135742,24.412354],[-78.145801,24.493457],[-78.191602,24.466064],[-78.257617,24.482764],[-78.366504,24.544189],[-78.435303,24.627588],[-78.338916,24.642041],[-78.318994,24.590234],[-78.242725,24.653809],[-78.260059,24.687305],[-78.273828,24.691602],[-78.298828,24.753906],[-78.184082,24.91709],[-78.159326,25.022363],[-78.211377,25.19126],[-78.162793,25.202344],[-78.033301,25.143115],[-77.975293,25.084814],[-77.973389,25.004785],[-77.918945,24.942822],[-77.840137,24.794385],[-77.743848,24.707422]]],[[[-78.492871,26.729053],[-78.371729,26.697949],[-78.306836,26.702197],[-78.26792,26.722656],[-78.088672,26.714307],[-77.943945,26.744238],[-77.922461,26.691113],[-77.926123,26.663379],[-78.233887,26.637354],[-78.516211,26.559375],[-78.670947,26.506543],[-78.743652,26.500684],[-78.799219,26.528467],[-78.985645,26.689502],[-78.935791,26.673437],[-78.798047,26.582422],[-78.7125,26.599023],[-78.633252,26.65918],[-78.621143,26.704639],[-78.632959,26.726172],[-78.597119,26.797949],[-78.492871,26.729053]]],[[[-77.347559,25.013867],[-77.460498,24.993115],[-77.541211,25.013574],[-77.561914,25.030029],[-77.527344,25.057666],[-77.45127,25.080713],[-77.329102,25.083008],[-77.275586,25.055762],[-77.269141,25.043848],[-77.347559,25.013867]]],[[[-74.05752,22.723486],[-74.034766,22.705566],[-74.098584,22.66543],[-74.242236,22.715088],[-74.274609,22.71167],[-74.303125,22.764453],[-74.313965,22.803564],[-74.307031,22.8396],[-74.221484,22.811572],[-74.175391,22.759912],[-74.05752,22.723486]]],[[[-74.429443,24.068066],[-74.508691,23.959717],[-74.550928,23.968945],[-74.526904,24.105078],[-74.472021,24.12666],[-74.450488,24.125488],[-74.429443,24.068066]]],[[[-74.206738,22.21377],[-74.276904,22.183691],[-74.261328,22.235547],[-74.126758,22.323389],[-74.052344,22.400635],[-74.010059,22.427979],[-73.994971,22.449219],[-73.935986,22.477734],[-73.906396,22.527441],[-73.914551,22.568018],[-73.976367,22.635059],[-73.975488,22.682275],[-73.954199,22.715527],[-73.849951,22.731055],[-73.87749,22.680762],[-73.836523,22.538428],[-73.974609,22.361182],[-74.09292,22.30625],[-74.206738,22.21377]]],[[[-76.648828,25.487402],[-76.484229,25.374609],[-76.343799,25.332031],[-76.191992,25.19082],[-76.126611,25.140527],[-76.114941,25.094727],[-76.140527,24.885645],[-76.174658,24.759766],[-76.169531,24.649414],[-76.205176,24.68208],[-76.241211,24.754346],[-76.300293,24.795898],[-76.319971,24.817676],[-76.21377,24.822461],[-76.204346,24.93623],[-76.152539,25.025977],[-76.1604,25.119336],[-76.284326,25.222119],[-76.369287,25.312598],[-76.499902,25.341553],[-76.620703,25.431641],[-76.692773,25.442725],[-76.780664,25.426855],[-76.748926,25.480566],[-76.726953,25.551611],[-76.71084,25.564893],[-76.648828,25.487402]]],[[[-75.664551,23.450146],[-75.706348,23.444238],[-75.781006,23.470654],[-75.955957,23.592285],[-76.037109,23.602783],[-76.010449,23.671387],[-75.948633,23.647412],[-75.80752,23.542529],[-75.754248,23.48999],[-75.664551,23.450146]]],[[[-74.840479,22.894336],[-74.846875,22.868701],[-74.97334,23.068555],[-75.132129,23.11709],[-75.22334,23.165332],[-75.204395,23.192725],[-75.141113,23.204639],[-75.130566,23.26792],[-75.157568,23.336377],[-75.24126,23.474609],[-75.288232,23.568262],[-75.309814,23.589844],[-75.315967,23.668359],[-75.216602,23.546777],[-75.175293,23.438672],[-75.108789,23.332813],[-75.064209,23.150195],[-74.937109,23.088135],[-74.845605,22.999902],[-74.840479,22.894336]]],[[[-75.308398,24.2],[-75.301758,24.14917],[-75.36875,24.159473],[-75.467627,24.1396],[-75.503223,24.139062],[-75.481055,24.173877],[-75.412402,24.220947],[-75.408936,24.265771],[-75.493896,24.33042],[-75.592773,24.49126],[-75.639062,24.529395],[-75.661035,24.589844],[-75.743994,24.654687],[-75.72666,24.689355],[-75.709619,24.69751],[-75.653516,24.680859],[-75.526465,24.449512],[-75.518164,24.427344],[-75.308398,24.2]]],[[[-73.041016,22.429053],[-72.978955,22.4146],[-72.945215,22.415625],[-72.830762,22.385596],[-72.762598,22.344385],[-72.747266,22.327393],[-72.783887,22.290625],[-72.88916,22.360254],[-72.981055,22.369238],[-73.110205,22.367578],[-73.161914,22.380713],[-73.127393,22.455322],[-73.041016,22.429053]]],[[[-72.916113,21.506689],[-73.049316,21.457617],[-73.062695,21.515332],[-72.994775,21.561621],[-72.916113,21.506689]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Azerbaijan","SOV_A3":"AZE","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Azerbaijan","ADM0_A3":"AZE","GEOU_DIF":0,"GEOUNIT":"Azerbaijan","GU_A3":"AZE","SU_DIF":0,"SUBUNIT":"Azerbaijan","SU_A3":"AZE","BRK_DIFF":0,"NAME":"Azerbaijan","NAME_LONG":"Azerbaijan","BRK_A3":"AZE","BRK_NAME":"Azerbaijan","BRK_GROUP":null,"ABBREV":"Aze.","POSTAL":"AZ","FORMAL_EN":"Republic of Azerbaijan","FORMAL_FR":null,"NAME_CIAWF":"Azerbaijan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Azerbaijan","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":6,"MAPCOLOR9":5,"MAPCOLOR13":8,"POP_EST":10023318,"POP_RANK":14,"POP_YEAR":2019,"GDP_MD":48047,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"AJ","ISO_A2":"AZ","ISO_A2_EH":"AZ","ISO_A3":"AZE","ISO_A3_EH":"AZE","ISO_N3":"031","ISO_N3_EH":"031","UN_A3":"031","WB_A2":"AZ","WB_A3":"AZE","WOE_ID":23424741,"WOE_ID_EH":23424741,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"AZE","ADM0_DIFF":null,"ADM0_TLC":"AZE","ADM0_A3_US":"AZE","ADM0_A3_FR":"AZE","ADM0_A3_RU":"AZE","ADM0_A3_ES":"AZE","ADM0_A3_CN":"AZE","ADM0_A3_TW":"AZE","ADM0_A3_IN":"AZE","ADM0_A3_NP":"AZE","ADM0_A3_PK":"AZE","ADM0_A3_DE":"AZE","ADM0_A3_GB":"AZE","ADM0_A3_BR":"AZE","ADM0_A3_IL":"AZE","ADM0_A3_PS":"AZE","ADM0_A3_SA":"AZE","ADM0_A3_EG":"AZE","ADM0_A3_MA":"AZE","ADM0_A3_PT":"AZE","ADM0_A3_AR":"AZE","ADM0_A3_JP":"AZE","ADM0_A3_KO":"AZE","ADM0_A3_VN":"AZE","ADM0_A3_TR":"AZE","ADM0_A3_ID":"AZE","ADM0_A3_PL":"AZE","ADM0_A3_GR":"AZE","ADM0_A3_IT":"AZE","ADM0_A3_NL":"AZE","ADM0_A3_SE":"AZE","ADM0_A3_BD":"AZE","ADM0_A3_UA":"AZE","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":47.210994,"LABEL_Y":40.402387,"NE_ID":1159320381,"WIKIDATAID":"Q227","NAME_AR":"أذربيجان","NAME_BN":"আজারবাইজান","NAME_DE":"Aserbaidschan","NAME_EN":"Azerbaijan","NAME_ES":"Azerbaiyán","NAME_FA":"جمهوری آذربایجان","NAME_FR":"Azerbaïdjan","NAME_EL":"Αζερμπαϊτζάν","NAME_HE":"אזרבייג'ן","NAME_HI":"अज़रबैजान","NAME_HU":"Azerbajdzsán","NAME_ID":"Azerbaijan","NAME_IT":"Azerbaigian","NAME_JA":"アゼルバイジャン","NAME_KO":"아제르바이잔","NAME_NL":"Azerbeidzjan","NAME_PL":"Azerbejdżan","NAME_PT":"Azerbaijão","NAME_RU":"Азербайджан","NAME_SV":"Azerbajdzjan","NAME_TR":"Azerbaycan","NAME_UK":"Азербайджан","NAME_UR":"آذربائیجان","NAME_VI":"Azerbaijan","NAME_ZH":"阿塞拜疆","NAME_ZHT":"亞塞拜然","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[44.768262,38.39873,50.365918,41.890967],"geometry":{"type":"MultiPolygon","coordinates":[[[[44.817188,39.650439],[44.783398,39.684668],[44.768262,39.703516],[44.867188,39.719141],[45.031641,39.765137],[45.076465,39.742822],[45.124609,39.696338],[45.148633,39.656592],[45.152832,39.582666],[45.172559,39.570605],[45.252539,39.595459],[45.288281,39.565576],[45.349902,39.529883],[45.456836,39.494482],[45.610742,39.549805],[45.687402,39.564062],[45.750488,39.562939],[45.784473,39.545605],[45.796484,39.488135],[45.78418,39.417236],[45.766309,39.378467],[45.798633,39.350195],[45.925,39.281934],[45.977441,39.243896],[45.951855,39.178125],[46.045898,39.017529],[46.077441,38.954883],[46.114453,38.877783],[45.921875,38.90791],[45.575,38.972803],[45.479688,39.00625],[45.389258,39.095898],[45.335547,39.13916],[45.255957,39.194678],[45.190625,39.215625],[45.141211,39.254297],[45.113086,39.311572],[45.07168,39.362891],[45.000195,39.423535],[44.838184,39.629102],[44.817188,39.650439]]],[[[48.86875,38.435498],[48.840332,38.437256],[48.635547,38.39873],[48.592676,38.411084],[48.417383,38.58623],[48.38125,38.605615],[48.305566,38.613477],[48.261328,38.642285],[48.225195,38.689209],[48.204688,38.724121],[48.023242,38.819043],[47.996484,38.85376],[47.992676,38.884277],[48.019336,38.911816],[48.050098,38.93501],[48.138574,38.958643],[48.241992,38.978955],[48.275098,38.993604],[48.29209,39.018848],[48.291016,39.059277],[48.274121,39.099121],[48.125488,39.171631],[48.10918,39.202832],[48.104395,39.241113],[48.112891,39.281104],[48.136035,39.312354],[48.257227,39.35498],[48.322168,39.399072],[48.281738,39.44834],[48.151074,39.560547],[47.995898,39.683936],[47.892285,39.685059],[47.772852,39.648584],[47.581836,39.543359],[47.476172,39.49834],[47.338477,39.423877],[47.188379,39.340967],[47.06543,39.252881],[46.988867,39.180176],[46.852539,39.148438],[46.783203,39.087402],[46.554785,38.904395],[46.490625,38.906689],[46.486719,38.997461],[46.489844,39.069434],[46.475391,39.110889],[46.401465,39.167676],[46.400293,39.192187],[46.420313,39.207373],[46.477148,39.198193],[46.55,39.201416],[46.584766,39.223682],[46.506641,39.298535],[46.437305,39.348535],[46.378418,39.382275],[46.365234,39.40249],[46.365137,39.416797],[46.377637,39.433887],[46.478125,39.475098],[46.488086,39.512842],[46.481445,39.555176],[46.32168,39.617432],[46.202051,39.594482],[46.094824,39.664453],[46.025879,39.718555],[45.939941,39.776562],[45.863184,39.80835],[45.789648,39.881104],[45.661816,39.956201],[45.579785,39.977539],[45.580957,39.989014],[45.595996,40.002832],[45.630176,40.014209],[45.858105,40.011279],[45.885938,40.024854],[45.900098,40.05708],[45.93125,40.104687],[45.967578,40.174805],[45.964648,40.233789],[45.735742,40.329102],[45.569531,40.416846],[45.454395,40.532373],[45.376172,40.638086],[45.378906,40.673584],[45.401367,40.707129],[45.579395,40.804492],[45.591406,40.829736],[45.5875,40.846924],[45.524023,40.896729],[45.444238,40.947998],[45.419141,40.985693],[45.368945,41.004883],[45.273438,41.00625],[45.106055,41.069336],[45.070508,41.075586],[45.062598,41.088135],[45.070703,41.10083],[45.190234,41.126367],[45.188574,41.147412],[45.152344,41.175146],[45.084766,41.195459],[45.022949,41.245703],[45.001367,41.290967],[45.217188,41.423193],[45.280957,41.449561],[45.422266,41.425293],[45.715625,41.337646],[45.695703,41.289014],[45.725488,41.261621],[45.792773,41.224414],[45.921973,41.186719],[46.03125,41.167285],[46.086523,41.183838],[46.170703,41.197852],[46.27998,41.154443],[46.380762,41.099316],[46.430957,41.077051],[46.45791,41.070215],[46.534375,41.088574],[46.626367,41.159668],[46.662402,41.245508],[46.672559,41.286816],[46.618945,41.34375],[46.508789,41.405566],[46.384961,41.459863],[46.305469,41.507715],[46.254688,41.602148],[46.203516,41.612598],[46.190527,41.624854],[46.182129,41.65708],[46.184277,41.702148],[46.201855,41.736865],[46.251855,41.751758],[46.302539,41.75708],[46.348242,41.790186],[46.405469,41.855078],[46.429883,41.890967],[46.537695,41.87041],[46.552148,41.812305],[46.571289,41.800098],[46.616016,41.806934],[46.690332,41.831348],[46.749316,41.812598],[46.825586,41.743408],[46.930859,41.67041],[46.987793,41.621387],[47.010156,41.5875],[47.063965,41.554688],[47.142578,41.516064],[47.205273,41.455615],[47.261133,41.315088],[47.317676,41.282422],[47.520605,41.229053],[47.591797,41.218115],[47.791016,41.199268],[47.861133,41.212744],[47.963672,41.333984],[48.056055,41.458691],[48.142285,41.484766],[48.298145,41.54502],[48.391406,41.601904],[48.430664,41.66333],[48.518652,41.779346],[48.572852,41.844482],[48.664648,41.786621],[48.823926,41.62959],[49.050879,41.373975],[49.106641,41.301709],[49.143262,41.217773],[49.174707,41.116113],[49.226465,41.026221],[49.456738,40.799854],[49.556152,40.716309],[49.718359,40.608105],[49.775977,40.583984],[49.851758,40.577197],[49.990625,40.576807],[50.119141,40.534521],[50.18252,40.504785],[50.248047,40.461768],[50.306836,40.412207],[50.365918,40.279492],[50.143164,40.323242],[49.918848,40.316406],[49.791992,40.287891],[49.669043,40.249023],[49.551172,40.194141],[49.477344,40.087256],[49.415137,39.839844],[49.324414,39.60835],[49.327539,39.501221],[49.367383,39.398389],[49.362793,39.349561],[49.321191,39.328906],[49.269336,39.285156],[49.199805,39.072656],[49.165332,39.030273],[49.120996,39.003906],[49.108691,39.029053],[49.111328,39.084717],[49.013477,39.133984],[48.961719,39.07876],[48.926172,38.961768],[48.854492,38.838818],[48.850879,38.815332],[48.86875,38.435498]],[[45.552344,40.616064],[45.562305,40.64917],[45.53418,40.664014],[45.504492,40.664844],[45.478809,40.64834],[45.478809,40.606982],[45.514355,40.599561],[45.552344,40.616064]]],[[[45.023633,41.027246],[45.002051,41.01582],[44.969043,41.027246],[44.958887,41.052637],[44.961426,41.079248],[44.994336,41.085596],[45.021094,41.077979],[45.028711,41.053857],[45.023633,41.027246]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":4,"SOVEREIGNT":"Austria","SOV_A3":"AUT","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Austria","ADM0_A3":"AUT","GEOU_DIF":0,"GEOUNIT":"Austria","GU_A3":"AUT","SU_DIF":0,"SUBUNIT":"Austria","SU_A3":"AUT","BRK_DIFF":0,"NAME":"Austria","NAME_LONG":"Austria","BRK_A3":"AUT","BRK_NAME":"Austria","BRK_GROUP":null,"ABBREV":"Aust.","POSTAL":"A","FORMAL_EN":"Republic of Austria","FORMAL_FR":null,"NAME_CIAWF":"Austria","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Austria","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":4,"POP_EST":8877067,"POP_RANK":13,"POP_YEAR":2019,"GDP_MD":445075,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"AU","ISO_A2":"AT","ISO_A2_EH":"AT","ISO_A3":"AUT","ISO_A3_EH":"AUT","ISO_N3":"040","ISO_N3_EH":"040","UN_A3":"040","WB_A2":"AT","WB_A3":"AUT","WOE_ID":23424750,"WOE_ID_EH":23424750,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"AUT","ADM0_DIFF":null,"ADM0_TLC":"AUT","ADM0_A3_US":"AUT","ADM0_A3_FR":"AUT","ADM0_A3_RU":"AUT","ADM0_A3_ES":"AUT","ADM0_A3_CN":"AUT","ADM0_A3_TW":"AUT","ADM0_A3_IN":"AUT","ADM0_A3_NP":"AUT","ADM0_A3_PK":"AUT","ADM0_A3_DE":"AUT","ADM0_A3_GB":"AUT","ADM0_A3_BR":"AUT","ADM0_A3_IL":"AUT","ADM0_A3_PS":"AUT","ADM0_A3_SA":"AUT","ADM0_A3_EG":"AUT","ADM0_A3_MA":"AUT","ADM0_A3_PT":"AUT","ADM0_A3_AR":"AUT","ADM0_A3_JP":"AUT","ADM0_A3_KO":"AUT","ADM0_A3_VN":"AUT","ADM0_A3_TR":"AUT","ADM0_A3_ID":"AUT","ADM0_A3_PL":"AUT","ADM0_A3_GR":"AUT","ADM0_A3_IT":"AUT","ADM0_A3_NL":"AUT","ADM0_A3_SE":"AUT","ADM0_A3_BD":"AUT","ADM0_A3_UA":"AUT","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Western Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":5,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":8,"LABEL_X":14.130515,"LABEL_Y":47.518859,"NE_ID":1159320379,"WIKIDATAID":"Q40","NAME_AR":"النمسا","NAME_BN":"অস্ট্রিয়া","NAME_DE":"Österreich","NAME_EN":"Austria","NAME_ES":"Austria","NAME_FA":"اتریش","NAME_FR":"Autriche","NAME_EL":"Αυστρία","NAME_HE":"אוסטריה","NAME_HI":"ऑस्ट्रिया","NAME_HU":"Ausztria","NAME_ID":"Austria","NAME_IT":"Austria","NAME_JA":"オーストリア","NAME_KO":"오스트리아","NAME_NL":"Oostenrijk","NAME_PL":"Austria","NAME_PT":"Áustria","NAME_RU":"Австрия","NAME_SV":"Österrike","NAME_TR":"Avusturya","NAME_UK":"Австрія","NAME_UR":"آسٹریا","NAME_VI":"Áo","NAME_ZH":"奥地利","NAME_ZHT":"奧地利","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[9.524023,46.399707,17.147363,49.001123],"geometry":{"type":"Polygon","coordinates":[[[9.527539,47.270752],[9.609082,47.391797],[9.625879,47.467041],[9.554395,47.511133],[9.524023,47.524219],[9.548926,47.534033],[9.650586,47.525879],[9.715137,47.550781],[9.748926,47.575537],[9.83916,47.552295],[9.971582,47.505322],[10.034082,47.473584],[10.059863,47.449072],[10.074219,47.428516],[10.066309,47.393359],[10.096484,47.37959],[10.158789,47.374268],[10.200293,47.363428],[10.185742,47.317187],[10.183008,47.278809],[10.240625,47.284131],[10.312793,47.313428],[10.369141,47.366064],[10.403906,47.416992],[10.430371,47.541064],[10.439453,47.551562],[10.482813,47.541797],[10.658691,47.547217],[10.741602,47.524121],[10.873047,47.520215],[10.870605,47.500781],[10.893945,47.470459],[10.952148,47.426709],[10.980859,47.398145],[11.041992,47.393115],[11.136035,47.408887],[11.191211,47.425195],[11.211914,47.413623],[11.297949,47.424902],[11.374121,47.460254],[11.392969,47.487158],[11.469922,47.506104],[11.573926,47.549756],[11.716797,47.583496],[12.185645,47.619531],[12.203809,47.646729],[12.196875,47.709082],[12.209277,47.718262],[12.268359,47.702734],[12.363184,47.688184],[12.435742,47.666113],[12.48291,47.637305],[12.526563,47.636133],[12.594238,47.656299],[12.68584,47.669336],[12.771387,47.639404],[12.796191,47.607031],[12.781152,47.59043],[12.782813,47.56416],[12.809375,47.542187],[12.878906,47.506445],[12.968066,47.475684],[13.014355,47.478076],[13.031543,47.508008],[13.047949,47.57915],[13.054102,47.655127],[13.033594,47.69873],[12.985547,47.709424],[12.928125,47.712842],[12.897656,47.721875],[12.908301,47.745801],[12.954199,47.807764],[12.953516,47.890625],[12.849902,47.984814],[12.760059,48.075977],[12.760352,48.106982],[12.814258,48.16084],[12.897461,48.203711],[13.082129,48.275098],[13.14043,48.289941],[13.215234,48.301904],[13.322852,48.33125],[13.374609,48.361377],[13.409375,48.394141],[13.459863,48.564551],[13.47168,48.571826],[13.486621,48.581836],[13.675195,48.523047],[13.692188,48.532764],[13.723926,48.542383],[13.785352,48.587451],[13.798828,48.62168],[13.797461,48.686426],[13.80293,48.74751],[13.814746,48.766943],[13.843164,48.759863],[13.924316,48.728027],[13.98877,48.692432],[14.049121,48.60249],[14.189844,48.578564],[14.367578,48.576221],[14.431055,48.61626],[14.488672,48.625537],[14.553906,48.61333],[14.691309,48.599219],[14.706641,48.671924],[14.785938,48.747363],[14.821875,48.774023],[14.922559,48.771387],[14.947363,48.827734],[14.972168,48.983936],[14.993457,49.001123],[15.066797,48.997852],[15.139746,48.969336],[15.161719,48.946289],[15.199609,48.948145],[15.252734,48.963867],[15.310938,48.974023],[15.40293,48.957373],[15.599414,48.886377],[15.700781,48.860449],[15.765039,48.86543],[15.825195,48.864453],[16.057227,48.754785],[16.219336,48.739404],[16.367285,48.738965],[16.414844,48.77207],[16.47793,48.800098],[16.543555,48.79624],[16.600977,48.781885],[16.712695,48.734229],[16.764453,48.722021],[16.833203,48.714307],[16.883691,48.703711],[16.92832,48.620898],[16.953125,48.598828],[16.948828,48.588574],[16.943359,48.550928],[16.904492,48.503516],[16.862695,48.441406],[16.86543,48.386914],[16.972656,48.198096],[17.067871,48.083252],[17.085938,48.039551],[17.147363,48.005957],[17.089063,47.963623],[17.077734,47.900879],[17.039941,47.872949],[17.030078,47.837109],[17.045898,47.804541],[17.045605,47.76377],[17.066602,47.707568],[16.973438,47.695312],[16.862695,47.697266],[16.823047,47.693994],[16.785938,47.678662],[16.747559,47.686279],[16.647461,47.739014],[16.590918,47.750537],[16.550977,47.747363],[16.521094,47.724463],[16.469629,47.695068],[16.421289,47.674463],[16.432129,47.656299],[16.639746,47.608887],[16.676563,47.536035],[16.636621,47.476611],[16.623047,47.447559],[16.574414,47.424658],[16.514746,47.404541],[16.442871,47.399512],[16.434375,47.367432],[16.462598,47.273145],[16.439746,47.252734],[16.416895,47.223437],[16.438379,47.145898],[16.482813,47.140381],[16.492676,47.122656],[16.484766,47.09126],[16.476953,47.057861],[16.46123,47.022461],[16.453418,47.006787],[16.423926,46.996973],[16.331836,47.002197],[16.252539,46.971924],[16.093066,46.863281],[16.037207,46.844824],[15.976855,46.801367],[15.980469,46.705859],[15.972266,46.697217],[15.957617,46.677637],[15.766895,46.711279],[15.760254,46.710742],[15.632617,46.698437],[15.545313,46.654639],[15.439258,46.629639],[15.216992,46.642969],[15.000684,46.625977],[14.949414,46.613232],[14.893262,46.605908],[14.840625,46.580469],[14.810547,46.54458],[14.756738,46.499121],[14.680176,46.463428],[14.596973,46.436084],[14.577148,46.412939],[14.549805,46.399707],[14.503516,46.417041],[14.465918,46.416113],[14.419922,46.42793],[14.267285,46.440723],[14.099512,46.461914],[14.019629,46.482178],[13.928809,46.498193],[13.831348,46.51123],[13.743945,46.514307],[13.7,46.520264],[13.490039,46.555566],[13.351562,46.55791],[13.16875,46.572656],[12.805566,46.625879],[12.699805,46.647461],[12.598633,46.654102],[12.479199,46.67251],[12.388281,46.702637],[12.330078,46.759814],[12.267969,46.835889],[12.154102,46.935254],[12.130762,46.984766],[12.165527,47.028174],[12.20127,47.060889],[12.197168,47.075],[12.169434,47.082129],[11.969531,47.039697],[11.775684,46.986084],[11.699414,46.984668],[11.625488,46.996582],[11.527539,46.997412],[11.433203,46.983057],[11.244434,46.975684],[11.133887,46.936182],[11.063477,46.859131],[11.025098,46.796973],[10.993262,46.777002],[10.927344,46.769482],[10.828906,46.775244],[10.759766,46.793311],[10.689258,46.846387],[10.579785,46.853711],[10.479395,46.855127],[10.452832,46.864941],[10.45459,46.899414],[10.414941,46.964404],[10.349414,46.984766],[10.179785,46.862354],[10.133496,46.851514],[9.996875,46.885352],[9.877734,46.937695],[9.864648,46.975977],[9.845313,47.007373],[9.74502,47.037109],[9.619922,47.057471],[9.580273,47.057373],[9.595703,47.07583],[9.610547,47.107129],[9.601172,47.13208],[9.571875,47.15791],[9.555762,47.185498],[9.551074,47.212256],[9.542188,47.234131],[9.536816,47.254639],[9.527539,47.270752]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Australia","SOV_A3":"AU1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Australia","ADM0_A3":"AUS","GEOU_DIF":0,"GEOUNIT":"Australia","GU_A3":"AUS","SU_DIF":0,"SUBUNIT":"Australia","SU_A3":"AUS","BRK_DIFF":0,"NAME":"Australia","NAME_LONG":"Australia","BRK_A3":"AUS","BRK_NAME":"Australia","BRK_GROUP":null,"ABBREV":"Auz.","POSTAL":"AU","FORMAL_EN":"Commonwealth of Australia","FORMAL_FR":null,"NAME_CIAWF":"Australia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Australia","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":7,"POP_EST":25364307,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":1396567,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"1. High income: OECD","FIPS_10":"AS","ISO_A2":"AU","ISO_A2_EH":"AU","ISO_A3":"AUS","ISO_A3_EH":"AUS","ISO_N3":"036","ISO_N3_EH":"036","UN_A3":"036","WB_A2":"AU","WB_A3":"AUS","WOE_ID":-90,"WOE_ID_EH":23424748,"WOE_NOTE":"Includes Ashmore and Cartier Islands (23424749) and Coral Sea Islands (23424790).","ADM0_ISO":"AUS","ADM0_DIFF":null,"ADM0_TLC":"AUS","ADM0_A3_US":"AUS","ADM0_A3_FR":"AUS","ADM0_A3_RU":"AUS","ADM0_A3_ES":"AUS","ADM0_A3_CN":"AUS","ADM0_A3_TW":"AUS","ADM0_A3_IN":"AUS","ADM0_A3_NP":"AUS","ADM0_A3_PK":"AUS","ADM0_A3_DE":"AUS","ADM0_A3_GB":"AUS","ADM0_A3_BR":"AUS","ADM0_A3_IL":"AUS","ADM0_A3_PS":"AUS","ADM0_A3_SA":"AUS","ADM0_A3_EG":"AUS","ADM0_A3_MA":"AUS","ADM0_A3_PT":"AUS","ADM0_A3_AR":"AUS","ADM0_A3_JP":"AUS","ADM0_A3_KO":"AUS","ADM0_A3_VN":"AUS","ADM0_A3_TR":"AUS","ADM0_A3_ID":"AUS","ADM0_A3_PL":"AUS","ADM0_A3_GR":"AUS","ADM0_A3_IT":"AUS","ADM0_A3_NL":"AUS","ADM0_A3_SE":"AUS","ADM0_A3_BD":"AUS","ADM0_A3_UA":"AUS","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Australia and New Zealand","REGION_WB":"East Asia & Pacific","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":1.7,"MAX_LABEL":5.7,"LABEL_X":134.04972,"LABEL_Y":-24.129522,"NE_ID":1159320355,"WIKIDATAID":"Q408","NAME_AR":"أستراليا","NAME_BN":"অস্ট্রেলিয়া","NAME_DE":"Australien","NAME_EN":"Australia","NAME_ES":"Australia","NAME_FA":"استرالیا","NAME_FR":"Australie","NAME_EL":"Αυστραλία","NAME_HE":"אוסטרליה","NAME_HI":"ऑस्ट्रेलिया","NAME_HU":"Ausztrália","NAME_ID":"Australia","NAME_IT":"Australia","NAME_JA":"オーストラリア","NAME_KO":"오스트레일리아","NAME_NL":"Australië","NAME_PL":"Australia","NAME_PT":"Austrália","NAME_RU":"Австралия","NAME_SV":"Australien","NAME_TR":"Avustralya","NAME_UK":"Австралія","NAME_UR":"آسٹریلیا","NAME_VI":"Úc","NAME_ZH":"澳大利亚","NAME_ZHT":"澳大利亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[112.908203,-54.749219,158.958887,-10.051758],"geometry":{"type":"MultiPolygon","coordinates":[[[[143.178906,-11.954492],[143.15293,-12.075879],[143.104688,-12.169629],[143.099023,-12.225977],[143.110254,-12.303516],[143.190625,-12.36123],[143.254102,-12.397656],[143.289648,-12.498828],[143.401563,-12.639941],[143.397559,-12.736133],[143.457715,-12.855762],[143.512012,-13.094531],[143.529492,-13.303809],[143.586621,-13.443652],[143.548438,-13.741016],[143.589258,-13.862793],[143.643359,-13.963672],[143.707227,-14.164551],[143.756348,-14.348828],[143.822363,-14.401074],[143.961816,-14.462891],[144.105859,-14.394531],[144.209863,-14.301953],[144.32168,-14.279395],[144.473047,-14.231836],[144.586426,-14.354688],[144.648047,-14.49248],[144.915723,-14.674316],[145.064453,-14.791016],[145.17998,-14.856934],[145.287695,-14.943164],[145.276953,-15.029395],[145.25166,-15.097461],[145.276172,-15.203906],[145.293066,-15.327246],[145.271582,-15.47666],[145.349512,-15.701563],[145.375391,-15.881055],[145.458008,-16.056445],[145.451855,-16.236914],[145.436426,-16.30498],[145.426074,-16.406152],[145.49043,-16.532129],[145.549902,-16.625098],[145.638281,-16.726074],[145.754785,-16.879492],[145.837891,-16.910352],[145.912109,-16.9125],[145.901953,-17.070215],[146.049805,-17.381055],[146.125879,-17.635254],[146.074023,-17.977344],[146.022852,-18.175781],[146.032227,-18.272852],[146.223047,-18.509863],[146.333203,-18.553711],[146.311719,-18.666699],[146.296875,-18.841211],[146.383398,-18.977051],[146.481152,-19.078711],[146.587305,-19.139453],[146.691992,-19.187402],[146.829004,-19.235742],[147.002637,-19.256055],[147.092773,-19.332617],[147.13877,-19.393164],[147.278125,-19.41416],[147.341504,-19.40293],[147.418555,-19.378125],[147.470898,-19.419336],[147.509766,-19.474121],[147.586035,-19.622754],[147.742383,-19.770117],[147.853223,-19.794727],[147.915625,-19.869238],[148.004492,-19.889551],[148.081055,-19.898633],[148.189648,-19.955859],[148.366895,-20.0875],[148.526758,-20.108887],[148.600488,-20.145215],[148.759375,-20.289551],[148.820996,-20.366406],[148.884766,-20.480859],[148.805078,-20.491699],[148.72998,-20.467773],[148.683691,-20.580176],[148.789453,-20.735645],[148.912402,-20.845215],[149.060547,-20.961133],[149.204883,-21.125098],[149.241406,-21.250195],[149.280273,-21.299512],[149.329297,-21.476074],[149.454102,-21.578711],[149.460059,-21.76543],[149.524023,-22.023633],[149.595703,-22.257617],[149.645313,-22.32832],[149.703906,-22.440527],[149.771582,-22.42627],[149.822461,-22.389844],[149.920313,-22.501367],[149.974414,-22.550684],[150.005566,-22.521582],[149.941895,-22.308105],[149.98125,-22.184277],[150.020605,-22.168359],[150.076172,-22.164453],[150.142969,-22.26543],[150.234863,-22.372949],[150.405078,-22.468945],[150.541309,-22.559082],[150.57959,-22.555762],[150.564355,-22.486133],[150.568555,-22.383984],[150.622852,-22.367285],[150.672461,-22.418164],[150.763867,-22.576172],[150.782813,-22.90293],[150.783008,-23.176563],[150.843164,-23.458008],[150.931055,-23.531934],[150.98877,-23.601758],[151.087695,-23.696094],[151.153809,-23.784082],[151.236328,-23.825],[151.500781,-24.012402],[151.575391,-24.033594],[151.690918,-24.038379],[151.831641,-24.122949],[151.902734,-24.200977],[152.055371,-24.494434],[152.129883,-24.597559],[152.282031,-24.699316],[152.353125,-24.73252],[152.456348,-24.802441],[152.493164,-24.904004],[152.502051,-24.963965],[152.563281,-25.07207],[152.654297,-25.201953],[152.78916,-25.274121],[152.913477,-25.432129],[152.920508,-25.688574],[152.984961,-25.816211],[153.028223,-25.870313],[153.125488,-25.922656],[153.164941,-25.96416],[153.08418,-26.303809],[153.162109,-26.982715],[153.116797,-27.194434],[153.197949,-27.404688],[153.385742,-27.768555],[153.428418,-27.897656],[153.454883,-28.04834],[153.575684,-28.240527],[153.569141,-28.533398],[153.616895,-28.673047],[153.60459,-28.854492],[153.462207,-29.050195],[153.348047,-29.29043],[153.346973,-29.496582],[153.272363,-29.89248],[153.223828,-29.998633],[153.188184,-30.163867],[153.030566,-30.563379],[153.02373,-30.720117],[153.047852,-30.907129],[153.021582,-31.086621],[152.982227,-31.208789],[152.943945,-31.434863],[152.78584,-31.786328],[152.559277,-32.045703],[152.545313,-32.243066],[152.516602,-32.330176],[152.47041,-32.439063],[152.33125,-32.55752],[152.247461,-32.608691],[152.215723,-32.678125],[152.136523,-32.678125],[152.13457,-32.699902],[152.188086,-32.72168],[152.164258,-32.757422],[151.954297,-32.820312],[151.812891,-32.901074],[151.668359,-33.098633],[151.607715,-33.201855],[151.530078,-33.300977],[151.483789,-33.347461],[151.463379,-33.397363],[151.432031,-33.521582],[151.35752,-33.543945],[151.29209,-33.580957],[151.322754,-33.699316],[151.288379,-33.834863],[151.280273,-33.92666],[151.244629,-33.985059],[151.20166,-33.964063],[151.167871,-33.973438],[151.124805,-34.005273],[151.191211,-34.015234],[151.231543,-34.029688],[151.089941,-34.1625],[150.960352,-34.29707],[150.927441,-34.386621],[150.871289,-34.499121],[150.821875,-34.749219],[150.781055,-34.892188],[150.80918,-34.993848],[150.80459,-35.012891],[150.774609,-35.02041],[150.756055,-35.007129],[150.697363,-35.041895],[150.680957,-35.07666],[150.705664,-35.119727],[150.722168,-35.13457],[150.714648,-35.155176],[150.690332,-35.177734],[150.634473,-35.177637],[150.56748,-35.214258],[150.374121,-35.58418],[150.292188,-35.682324],[150.195312,-35.833594],[150.158496,-35.970605],[150.128906,-36.12041],[150.095313,-36.372656],[150.062793,-36.550391],[149.988184,-36.722754],[149.960254,-36.845508],[149.950586,-37.080273],[149.986328,-37.258398],[149.962891,-37.353027],[149.962305,-37.443848],[149.932715,-37.528516],[149.809375,-37.547852],[149.708984,-37.616992],[149.56543,-37.72998],[149.480859,-37.771191],[149.298438,-37.802148],[148.943945,-37.788477],[148.2625,-37.830664],[148.130664,-37.856055],[147.876758,-37.93418],[147.631445,-38.055664],[147.395605,-38.219141],[146.856836,-38.663477],[146.435742,-38.711816],[146.35625,-38.711816],[146.292578,-38.699805],[146.21748,-38.727441],[146.216211,-38.782715],[146.285547,-38.840234],[146.336621,-38.894238],[146.426953,-38.819629],[146.466602,-38.840332],[146.481641,-38.97793],[146.483789,-39.065039],[146.456641,-39.112305],[146.4,-39.145508],[146.340039,-39.123828],[146.332031,-39.07666],[146.254297,-38.964453],[146.158398,-38.865723],[146.069922,-38.834082],[146.018164,-38.86709],[145.935352,-38.901758],[145.865527,-38.775977],[145.79082,-38.666992],[145.691895,-38.655664],[145.606348,-38.656836],[145.535352,-38.609668],[145.397266,-38.535352],[145.424219,-38.477344],[145.462793,-38.416309],[145.542188,-38.393848],[145.518359,-38.311426],[145.475781,-38.24375],[145.366406,-38.225684],[145.292773,-38.237598],[145.248926,-38.291211],[145.191211,-38.383594],[144.95957,-38.500781],[144.847266,-38.436328],[144.717773,-38.340332],[144.780273,-38.347363],[144.911426,-38.344043],[145.020117,-38.258398],[145.066992,-38.204883],[145.119922,-38.091309],[145.049609,-38.010938],[144.984863,-37.952246],[144.891309,-37.899805],[144.538477,-38.077148],[144.465332,-38.102539],[144.395508,-38.136914],[144.517773,-38.166406],[144.589453,-38.157617],[144.665234,-38.209961],[144.543652,-38.284082],[144.447852,-38.303711],[144.328711,-38.348242],[144.101562,-38.462305],[143.811719,-38.698828],[143.686719,-38.766895],[143.538965,-38.820898],[143.338477,-38.757812],[143.226465,-38.743164],[143.082617,-38.645898],[142.840234,-38.580859],[142.612109,-38.45166],[142.455859,-38.386328],[142.344531,-38.372168],[142.187695,-38.399414],[141.924707,-38.283789],[141.725,-38.271387],[141.593945,-38.387793],[141.491797,-38.379785],[141.424219,-38.363477],[141.213867,-38.171973],[141.010938,-38.076953],[140.627246,-38.028418],[140.39043,-37.89668],[140.212109,-37.642188],[139.874805,-37.352051],[139.784277,-37.245801],[139.742285,-37.141699],[139.738477,-37.05957],[139.783887,-36.902637],[139.846582,-36.748047],[139.857324,-36.662109],[139.729004,-36.371387],[139.54873,-36.09668],[139.465918,-36.010352],[139.244922,-35.827344],[139.037695,-35.689258],[138.985059,-35.617578],[138.968945,-35.580762],[139.066895,-35.598438],[139.1125,-35.542285],[139.178027,-35.523047],[139.230566,-35.597656],[139.289453,-35.611328],[139.29209,-35.485938],[139.325098,-35.42666],[139.302539,-35.399414],[139.28252,-35.375391],[139.192773,-35.347266],[139.09375,-35.389551],[139.017676,-35.443262],[138.915234,-35.488867],[138.875293,-35.536816],[138.770996,-35.538379],[138.729688,-35.550781],[138.521875,-35.642383],[138.389258,-35.644727],[138.184375,-35.612695],[138.252148,-35.486523],[138.33291,-35.411719],[138.399805,-35.325781],[138.511133,-35.024414],[138.489941,-34.763574],[138.43623,-34.65625],[138.264355,-34.440332],[138.18623,-34.307227],[138.089258,-34.169824],[138.041309,-34.249805],[138.012305,-34.334082],[137.919238,-34.456055],[137.874121,-34.727441],[137.691699,-35.142969],[137.566406,-35.148047],[137.45957,-35.131348],[137.272363,-35.178711],[137.144434,-35.236426],[137.029883,-35.236523],[136.966602,-35.254883],[136.883594,-35.239746],[137.014258,-34.91582],[137.128418,-34.924707],[137.252051,-34.911523],[137.308398,-34.916992],[137.391016,-34.913281],[137.454297,-34.764453],[137.492969,-34.597754],[137.468555,-34.490234],[137.458984,-34.378906],[137.483594,-34.252148],[137.493848,-34.161133],[137.650391,-33.859082],[137.780859,-33.703125],[137.931836,-33.579102],[137.913965,-33.461328],[137.866016,-33.314063],[137.852344,-33.200781],[137.924316,-33.165137],[137.992578,-33.094238],[137.913184,-32.770703],[137.863086,-32.67373],[137.783203,-32.578125],[137.781836,-32.701953],[137.790918,-32.823242],[137.680176,-32.978027],[137.53623,-33.08916],[137.442285,-33.193555],[137.354199,-33.430176],[137.237305,-33.629492],[137.130273,-33.703027],[137.034473,-33.719531],[136.936523,-33.750195],[136.783496,-33.829688],[136.635547,-33.896582],[136.525879,-33.98418],[136.430664,-34.02998],[136.121094,-34.428711],[135.979688,-34.561914],[135.950586,-34.615723],[135.891016,-34.660938],[135.902637,-34.723828],[135.950586,-34.766797],[135.998535,-34.94375],[135.969727,-34.981836],[135.919141,-34.961914],[135.792383,-34.863281],[135.7125,-34.899219],[135.647559,-34.939648],[135.480859,-34.758203],[135.411719,-34.715527],[135.324219,-34.642676],[135.230664,-34.579785],[135.19082,-34.572656],[135.123047,-34.585742],[135.12959,-34.536523],[135.175977,-34.496582],[135.216797,-34.487305],[135.29248,-34.545605],[135.378711,-34.597656],[135.427344,-34.601953],[135.45,-34.581055],[135.367969,-34.375586],[135.312012,-34.195508],[135.286328,-34.142285],[135.218945,-33.959766],[135.185449,-33.906738],[135.04209,-33.777734],[134.88877,-33.626367],[134.84668,-33.444629],[134.791016,-33.32832],[134.719043,-33.255176],[134.607715,-33.190137],[134.30127,-33.165039],[134.173535,-32.979102],[134.100391,-32.748633],[134.158398,-32.733398],[134.227148,-32.730566],[134.249219,-32.658691],[134.23418,-32.548535],[133.930176,-32.411719],[133.786719,-32.268848],[133.665332,-32.207227],[133.551367,-32.18291],[133.400586,-32.188477],[133.212109,-32.183789],[132.757422,-31.95625],[132.648633,-31.949316],[132.323633,-32.02002],[132.214648,-32.007129],[131.721191,-31.696289],[131.393164,-31.548535],[131.284961,-31.520996],[131.143652,-31.495703],[131.029297,-31.531836],[130.948145,-31.56582],[130.783008,-31.604004],[130.129785,-31.579102],[129.568848,-31.627246],[129.187695,-31.659961],[128.946191,-31.702637],[128.546094,-31.887695],[128.067676,-32.066504],[127.678027,-32.15127],[127.319824,-32.264063],[127.084082,-32.296875],[126.779297,-32.310938],[126.136523,-32.256836],[125.917188,-32.296973],[125.56748,-32.505859],[125.463672,-32.556543],[125.266602,-32.614453],[124.758789,-32.882715],[124.524609,-32.940137],[124.373242,-32.958398],[124.24375,-33.015234],[124.126074,-33.129395],[123.967188,-33.446289],[123.868359,-33.596387],[123.650391,-33.836328],[123.506836,-33.916211],[123.36543,-33.905371],[123.207617,-33.988281],[123.067578,-33.900586],[122.955664,-33.883789],[122.777539,-33.89082],[122.150977,-33.991797],[122.061133,-33.874414],[121.946387,-33.856738],[121.729688,-33.8625],[121.405078,-33.826758],[120.814551,-33.871289],[120.530566,-33.919727],[120.418359,-33.963086],[120.209375,-33.935449],[119.854102,-33.974707],[119.729102,-34.041504],[119.635156,-34.101172],[119.450586,-34.368262],[119.247656,-34.456445],[119.081348,-34.459375],[118.895312,-34.479883],[118.520117,-34.737109],[118.135547,-34.986621],[118.006445,-35.013281],[117.863086,-35.05498],[117.675391,-35.074902],[117.581934,-35.097754],[117.143945,-35.033691],[116.86543,-35.026563],[116.517188,-34.987891],[116.21709,-34.86582],[115.986719,-34.79502],[115.72627,-34.526074],[115.565039,-34.425781],[115.277637,-34.303906],[115.194824,-34.308496],[115.12793,-34.341797],[115.008789,-34.255859],[115.005664,-34.145117],[114.973437,-34.051172],[114.975684,-33.804199],[114.993848,-33.515332],[115.098926,-33.580273],[115.181641,-33.643457],[115.358789,-33.639941],[115.515332,-33.531348],[115.604492,-33.372266],[115.683008,-33.192871],[115.670898,-33.002148],[115.618555,-32.666992],[115.654297,-32.596582],[115.70791,-32.567969],[115.725391,-32.401074],[115.738086,-31.887891],[115.698438,-31.694531],[115.45459,-31.302539],[115.294336,-30.961816],[115.176855,-30.808008],[115.07793,-30.560449],[114.994531,-30.216211],[114.968848,-30.042285],[114.94209,-29.721582],[114.971387,-29.539746],[114.958984,-29.433594],[114.856836,-29.142969],[114.628418,-28.871777],[114.590625,-28.77168],[114.591797,-28.666211],[114.537402,-28.542871],[114.353516,-28.294922],[114.165137,-28.080664],[114.133496,-27.976465],[114.098437,-27.544238],[114.028125,-27.347266],[113.709375,-26.847754],[113.333008,-26.417383],[113.231055,-26.241406],[113.184766,-26.182227],[113.210742,-26.174219],[113.253125,-26.197266],[113.300098,-26.240234],[113.323242,-26.243848],[113.345313,-26.208301],[113.342871,-26.126074],[113.356055,-26.080469],[113.388965,-26.105566],[113.427441,-26.198047],[113.546582,-26.436719],[113.581641,-26.558105],[113.733691,-26.595117],[113.780371,-26.563281],[113.836426,-26.500586],[113.852832,-26.332129],[113.775781,-26.255957],[113.706445,-26.223633],[113.589063,-26.098633],[113.513379,-25.89834],[113.395312,-25.713281],[113.397363,-25.647168],[113.451367,-25.599121],[113.539453,-25.625195],[113.621191,-25.731641],[113.713086,-25.830762],[113.697852,-26.004199],[113.683594,-26.05166],[113.691699,-26.091699],[113.72373,-26.129785],[113.76582,-26.159766],[113.811816,-26.11582],[113.853906,-26.014453],[113.879883,-26.027637],[113.942383,-26.258691],[113.991992,-26.321484],[114.090332,-26.393652],[114.175977,-26.3375],[114.215723,-26.289453],[114.20332,-26.126367],[114.228516,-25.96875],[114.214258,-25.851562],[113.992773,-25.544824],[113.792383,-25.165723],[113.670801,-24.977051],[113.569238,-24.692969],[113.503516,-24.594629],[113.417676,-24.435645],[113.412988,-24.254004],[113.421289,-24.132324],[113.489844,-23.869629],[113.55293,-23.732813],[113.757031,-23.418164],[113.766992,-23.28252],[113.764844,-23.180469],[113.794922,-23.023633],[113.795117,-22.914551],[113.767871,-22.812891],[113.682813,-22.637793],[113.79502,-22.332129],[113.958398,-21.93916],[114.022852,-21.881445],[114.123926,-21.828613],[114.142578,-21.909766],[114.092773,-22.181348],[114.163867,-22.32334],[114.141602,-22.483105],[114.205176,-22.455859],[114.303516,-22.425391],[114.377734,-22.341504],[114.416992,-22.261035],[114.602832,-21.942188],[114.709277,-21.823438],[114.859082,-21.735938],[115.161719,-21.630566],[115.456152,-21.491699],[115.596094,-21.358105],[115.771484,-21.242285],[115.893555,-21.116699],[116.010938,-21.030371],[116.605859,-20.713379],[116.706738,-20.653809],[116.836328,-20.64707],[116.995313,-20.657617],[117.139063,-20.640918],[117.292773,-20.713086],[117.40625,-20.721191],[117.683887,-20.642773],[117.832324,-20.572559],[118.087305,-20.419043],[118.199219,-20.375195],[118.458301,-20.32666],[118.751465,-20.261914],[119.104492,-19.995313],[119.358789,-20.012305],[119.585938,-20.038281],[119.767773,-19.958398],[120.196289,-19.909473],[120.433691,-19.841992],[120.878418,-19.665039],[120.997949,-19.604395],[121.179785,-19.47793],[121.337695,-19.319922],[121.493555,-19.106445],[121.589453,-18.915137],[121.630664,-18.816602],[121.721973,-18.659961],[121.784863,-18.535938],[121.833789,-18.477051],[122.00625,-18.393652],[122.262109,-18.159082],[122.34541,-18.111914],[122.360938,-18.036914],[122.305762,-17.994922],[122.237402,-17.968555],[122.191309,-17.720313],[122.147461,-17.549023],[122.143164,-17.428418],[122.160254,-17.313672],[122.260938,-17.135742],[122.332715,-17.059375],[122.432031,-16.97041],[122.522559,-16.942871],[122.597949,-16.864941],[122.72041,-16.787695],[122.77207,-16.710156],[122.848047,-16.552441],[122.916797,-16.432617],[122.970703,-16.436816],[123.074414,-16.715332],[123.14209,-16.863086],[123.265918,-17.036816],[123.383203,-17.292773],[123.478809,-17.409961],[123.525195,-17.485742],[123.563086,-17.520898],[123.571484,-17.472266],[123.561816,-17.41543],[123.60791,-17.219922],[123.586328,-17.082715],[123.593555,-17.030371],[123.617676,-17.008301],[123.664062,-17.023242],[123.753809,-17.099805],[123.799023,-17.127148],[123.831055,-17.120801],[123.829492,-16.996875],[123.874414,-16.918652],[123.856348,-16.864746],[123.778125,-16.867773],[123.74502,-16.800977],[123.680469,-16.723633],[123.607129,-16.668066],[123.517969,-16.540723],[123.49043,-16.490723],[123.525098,-16.467578],[123.581348,-16.470898],[123.625977,-16.416309],[123.646484,-16.343066],[123.607031,-16.224023],[123.647461,-16.179883],[123.728906,-16.19248],[123.85918,-16.382324],[123.915234,-16.363574],[123.961328,-16.286914],[124.044434,-16.264941],[124.129785,-16.278809],[124.186035,-16.333594],[124.300391,-16.388281],[124.452734,-16.382031],[124.52998,-16.395215],[124.692383,-16.386133],[124.771973,-16.402637],[124.757031,-16.37334],[124.669238,-16.33877],[124.570312,-16.331836],[124.454492,-16.335254],[124.404883,-16.298926],[124.388281,-16.203027],[124.416406,-16.133496],[124.43457,-16.103809],[124.509961,-16.116309],[124.576855,-16.113672],[124.585059,-16.020117],[124.608594,-15.9375],[124.648535,-15.870215],[124.64834,-15.805469],[124.606641,-15.822656],[124.504297,-15.972461],[124.455273,-15.850586],[124.381641,-15.758203],[124.396582,-15.625879],[124.439551,-15.493555],[124.505664,-15.475391],[124.561621,-15.496289],[124.644336,-15.418848],[124.690918,-15.359668],[124.680176,-15.311035],[124.692578,-15.273633],[124.750488,-15.285254],[124.97207,-15.404297],[125.016406,-15.466504],[125.062988,-15.442285],[125.07793,-15.374512],[125.072949,-15.306738],[125.024023,-15.316992],[124.90918,-15.310059],[124.882715,-15.271973],[124.892676,-15.240527],[124.839063,-15.160742],[124.91416,-15.109961],[124.978711,-15.106641],[125.02334,-15.071875],[125.024023,-15.024414],[125.038184,-15.004102],[125.072949,-15.032324],[125.188672,-15.04541],[125.302344,-15.106836],[125.355664,-15.119824],[125.375586,-15.086816],[125.383789,-15.015625],[125.243262,-14.944531],[125.239453,-14.874609],[125.180371,-14.794043],[125.178711,-14.714746],[125.266504,-14.648438],[125.28457,-14.584082],[125.335449,-14.55791],[125.435938,-14.556836],[125.503711,-14.502246],[125.579785,-14.483203],[125.59834,-14.361621],[125.59707,-14.278125],[125.627734,-14.256641],[125.70459,-14.291406],[125.68125,-14.387988],[125.680957,-14.480176],[125.661621,-14.529492],[125.690527,-14.525391],[125.708398,-14.504883],[125.738477,-14.444336],[125.819531,-14.469141],[125.839551,-14.533887],[125.850098,-14.597266],[125.890625,-14.617969],[125.946094,-14.52041],[126.020703,-14.494531],[126.016602,-14.371289],[126.044824,-14.283008],[126.053613,-14.216699],[126.100879,-14.184375],[126.111328,-14.114063],[126.073438,-14.065527],[126.053906,-13.977246],[126.119043,-13.957715],[126.184277,-14.002051],[126.228223,-14.113379],[126.258496,-14.163574],[126.298828,-14.13623],[126.323047,-14.062109],[126.403125,-14.018945],[126.482422,-14.078906],[126.569727,-14.160938],[126.679102,-14.089355],[126.780664,-13.955176],[126.764453,-13.873047],[126.775586,-13.788477],[126.903223,-13.744141],[127.006055,-13.776758],[127.099219,-13.867383],[127.293066,-13.934766],[127.457617,-14.031445],[127.531055,-14.094629],[127.672852,-14.195117],[127.763477,-14.299414],[127.887598,-14.485156],[128.180469,-14.711621],[128.199414,-14.751758],[128.159863,-14.827344],[128.124414,-14.924121],[128.080469,-15.087988],[128.069434,-15.329297],[128.111719,-15.312012],[128.155469,-15.225586],[128.201758,-15.243359],[128.254688,-15.298535],[128.258984,-15.245605],[128.227246,-15.213574],[128.172949,-15.102246],[128.175,-15.043164],[128.218359,-14.995703],[128.285156,-14.938867],[128.358203,-14.90166],[128.403223,-14.869141],[128.409863,-14.828906],[128.477441,-14.787988],[128.575781,-14.774512],[128.635547,-14.780957],[129.058203,-14.884375],[129.165137,-14.987598],[129.175195,-15.115039],[129.21582,-15.160254],[129.237891,-15.080176],[129.233594,-14.906055],[129.267578,-14.871484],[129.38125,-14.898438],[129.458984,-14.933203],[129.56709,-15.047363],[129.587695,-15.10332],[129.634766,-15.139746],[129.650293,-15.086816],[129.628223,-15.011816],[129.612695,-14.925879],[129.637109,-14.850977],[129.763477,-14.84502],[129.84873,-14.828906],[129.808398,-14.799707],[129.753516,-14.789551],[129.662988,-14.720898],[129.604688,-14.64707],[129.698633,-14.575293],[129.697949,-14.557422],[129.60791,-14.559668],[129.483887,-14.489746],[129.378711,-14.39248],[129.45918,-14.213477],[129.619629,-14.038379],[129.709863,-13.97998],[129.718359,-13.920898],[129.761719,-13.811914],[129.789258,-13.719922],[129.797168,-13.648438],[129.838867,-13.572949],[129.937891,-13.50166],[130.072656,-13.476172],[130.135938,-13.44834],[130.199316,-13.382617],[130.259766,-13.302246],[130.134961,-13.145508],[130.145313,-13.05918],[130.168164,-12.957422],[130.317969,-12.88291],[130.399902,-12.687891],[130.454199,-12.658594],[130.571875,-12.664355],[130.61748,-12.646875],[130.60957,-12.491309],[130.622656,-12.431055],[130.672363,-12.406934],[130.736133,-12.427734],[130.776563,-12.495313],[130.867383,-12.557813],[130.898242,-12.523633],[130.88291,-12.455078],[130.873828,-12.367188],[130.956641,-12.348242],[131.023438,-12.342871],[131.030078,-12.271094],[131.019531,-12.213867],[131.045703,-12.189648],[131.219922,-12.17793],[131.26543,-12.119043],[131.291602,-12.067871],[131.31377,-12.095898],[131.34209,-12.210059],[131.438281,-12.276953],[131.72627,-12.278125],[131.887988,-12.231934],[131.956738,-12.259277],[132.064063,-12.280762],[132.182324,-12.226953],[132.253223,-12.186035],[132.37207,-12.23916],[132.411035,-12.295117],[132.441602,-12.176367],[132.510547,-12.134863],[132.583789,-12.110254],[132.676367,-12.130078],[132.712793,-12.123438],[132.630469,-12.035156],[132.635254,-11.954688],[132.629883,-11.83584],[132.644727,-11.727148],[132.674219,-11.649023],[132.475195,-11.491504],[132.27793,-11.467676],[132.133594,-11.500684],[132.072852,-11.474707],[131.944629,-11.348535],[131.822461,-11.302441],[131.811816,-11.271387],[131.961523,-11.180859],[132.018555,-11.196387],[132.105762,-11.281152],[132.155469,-11.311133],[132.197754,-11.30498],[132.225,-11.23877],[132.262695,-11.204004],[132.333984,-11.223535],[132.557324,-11.366895],[132.682813,-11.505566],[132.74707,-11.468945],[132.857129,-11.391113],[132.961035,-11.407324],[133.024902,-11.452832],[133.114355,-11.621777],[133.185254,-11.705664],[133.356152,-11.728223],[133.443164,-11.760352],[133.533203,-11.816211],[133.654492,-11.811328],[133.904199,-11.832031],[134.139453,-11.940137],[134.237109,-12.007715],[134.351074,-12.025781],[134.417383,-12.052734],[134.538086,-12.06084],[134.730273,-11.984375],[134.816406,-12.054688],[134.854688,-12.102539],[135.029688,-12.19375],[135.217969,-12.22168],[135.352344,-12.129199],[135.54873,-12.060645],[135.685547,-11.956152],[135.788477,-11.907031],[135.885254,-11.82168],[135.922461,-11.825781],[135.843555,-11.905469],[135.833984,-11.950684],[135.895801,-11.969531],[135.889453,-11.992773],[135.804297,-12.054785],[135.702539,-12.151563],[135.704395,-12.209863],[135.743945,-12.241699],[135.79082,-12.227539],[135.857422,-12.178516],[135.937793,-12.152148],[136.008496,-12.191406],[136.031445,-12.330859],[136.081836,-12.422461],[136.192676,-12.435156],[136.260645,-12.433789],[136.328516,-12.305566],[136.291895,-12.196387],[136.249902,-12.173047],[136.270117,-12.131641],[136.443359,-11.951465],[136.540234,-11.957617],[136.609766,-12.133594],[136.719434,-12.226465],[136.836426,-12.219141],[136.897461,-12.243555],[136.947461,-12.349902],[136.537012,-12.784277],[136.517773,-12.832813],[136.573047,-12.911621],[136.594336,-13.003809],[136.461035,-13.225195],[136.411914,-13.236133],[136.364551,-13.176367],[136.294141,-13.137988],[136.232324,-13.164941],[136.166113,-13.181055],[135.927344,-13.304297],[135.929199,-13.621582],[135.989551,-13.810156],[135.954492,-13.934863],[135.883398,-14.153125],[135.806348,-14.23418],[135.744531,-14.286621],[135.538867,-14.584961],[135.473242,-14.656641],[135.405176,-14.758203],[135.428027,-14.855664],[135.45332,-14.923145],[135.530762,-15.000391],[135.832617,-15.160156],[135.969531,-15.270215],[136.205371,-15.403418],[136.259277,-15.495215],[136.291406,-15.570117],[136.461914,-15.655273],[136.583594,-15.706543],[136.61875,-15.693359],[136.644141,-15.675586],[136.674609,-15.675391],[136.704883,-15.685254],[136.700098,-15.751953],[136.686719,-15.788477],[136.698145,-15.834961],[136.784668,-15.894238],[136.922656,-15.892383],[137.002148,-15.87832],[137.089844,-15.941309],[137.168945,-15.982129],[137.299316,-16.066309],[137.526367,-16.16709],[137.703711,-16.233008],[137.912891,-16.476562],[138.071582,-16.616992],[138.24502,-16.718359],[138.505664,-16.789551],[138.625684,-16.777832],[138.820312,-16.860645],[139.009863,-16.899316],[139.110352,-17.014063],[139.144531,-17.101074],[139.154102,-17.167773],[139.248438,-17.328613],[139.440527,-17.380566],[139.689648,-17.540723],[139.894531,-17.611328],[139.945996,-17.653613],[140.03584,-17.702637],[140.209668,-17.704395],[140.511133,-17.624512],[140.648438,-17.54375],[140.830469,-17.414453],[140.91582,-17.192578],[140.966016,-17.014551],[141.219141,-16.646191],[141.291406,-16.463477],[141.355664,-16.221094],[141.411914,-16.069531],[141.393164,-15.904688],[141.451563,-15.605273],[141.581445,-15.19541],[141.625488,-15.056641],[141.603516,-14.852734],[141.522949,-14.470117],[141.558984,-14.337891],[141.594336,-14.152832],[141.535449,-14.018652],[141.480664,-13.926758],[141.472559,-13.797559],[141.53418,-13.553809],[141.58877,-13.425098],[141.64541,-13.259082],[141.613574,-12.943457],[141.73457,-12.833496],[141.782227,-12.778711],[141.875781,-12.778223],[141.920313,-12.80293],[141.929785,-12.739844],[141.892871,-12.681348],[141.87832,-12.613281],[141.852148,-12.578711],[141.794531,-12.566602],[141.74668,-12.529395],[141.677734,-12.491406],[141.688574,-12.351074],[141.805762,-12.080078],[141.870508,-11.975586],[141.912988,-12.019238],[141.961133,-12.054297],[141.967773,-11.97627],[141.951563,-11.896191],[142.040527,-11.631738],[142.138965,-11.273242],[142.168359,-10.946582],[142.326465,-10.88418],[142.406836,-10.802246],[142.456445,-10.707324],[142.544824,-10.707324],[142.605078,-10.748242],[142.56543,-10.819434],[142.552734,-10.874414],[142.723047,-11.010449],[142.779688,-11.115332],[142.80332,-11.213965],[142.836816,-11.306934],[142.85293,-11.432227],[142.850586,-11.632324],[142.872559,-11.821387],[142.933984,-11.880762],[142.988477,-11.919043],[143.066406,-11.924121],[143.178906,-11.954492]]],[[[153.077441,-25.750781],[153.051953,-25.77832],[153.006934,-25.728906],[152.97666,-25.551367],[152.999023,-25.448438],[153.051563,-25.354297],[153.060742,-25.302246],[153.038086,-25.193164],[153.189258,-25.070508],[153.227539,-25.005762],[153.241992,-24.922559],[153.186328,-24.832617],[153.14375,-24.814844],[153.180957,-24.764844],[153.223145,-24.739551],[153.256934,-24.728906],[153.282129,-24.738281],[153.297949,-24.915234],[153.359277,-24.977734],[153.350195,-25.063086],[153.141406,-25.512793],[153.083789,-25.68252],[153.077441,-25.750781]]],[[[139.507812,-16.573047],[139.430566,-16.661035],[139.391504,-16.648633],[139.354297,-16.696582],[139.283008,-16.719434],[139.239063,-16.718652],[139.15957,-16.741699],[139.147656,-16.713867],[139.162695,-16.625879],[139.228711,-16.527539],[139.292969,-16.467285],[139.458887,-16.438477],[139.587891,-16.395215],[139.604492,-16.403223],[139.697754,-16.514941],[139.559668,-16.529492],[139.507812,-16.573047]]],[[[136.714648,-13.803906],[136.758008,-13.84541],[136.804492,-13.84248],[136.845313,-13.750977],[136.870703,-13.763672],[136.89082,-13.786621],[136.905566,-13.826953],[136.842969,-13.896582],[136.814941,-13.907324],[136.788184,-13.945801],[136.745313,-14.072656],[136.749902,-14.115234],[136.787012,-14.157813],[136.885449,-14.197266],[136.933887,-14.179004],[136.950781,-14.184277],[136.931348,-14.245996],[136.894336,-14.293066],[136.763184,-14.273438],[136.649707,-14.280469],[136.460547,-14.23457],[136.363281,-14.228906],[136.335449,-14.211816],[136.392188,-14.175488],[136.427734,-14.126465],[136.411133,-14.011133],[136.424707,-13.864844],[136.533789,-13.79375],[136.582813,-13.721094],[136.655664,-13.675879],[136.701953,-13.681641],[136.695996,-13.726172],[136.714648,-13.803906]]],[[[130.459277,-11.679297],[130.541797,-11.703125],[130.579883,-11.737109],[130.602734,-11.773242],[130.60625,-11.816602],[130.502539,-11.835645],[130.31748,-11.771777],[130.13125,-11.824512],[130.076563,-11.825488],[130.043262,-11.787305],[130.07207,-11.680762],[130.139063,-11.69707],[130.197559,-11.658203],[130.187109,-11.541211],[130.152832,-11.477539],[130.251172,-11.360547],[130.294922,-11.336816],[130.339258,-11.337012],[130.376758,-11.420117],[130.385645,-11.509863],[130.432813,-11.592188],[130.459277,-11.679297]]],[[[130.618848,-11.376074],[130.752246,-11.384375],[130.912793,-11.309277],[130.987402,-11.339844],[131.023047,-11.334375],[131.140625,-11.263086],[131.217188,-11.242578],[131.268262,-11.189844],[131.320508,-11.246875],[131.436914,-11.313184],[131.47334,-11.38252],[131.522266,-11.415234],[131.538574,-11.436914],[131.467871,-11.50957],[131.458594,-11.587891],[131.382812,-11.58252],[131.29209,-11.710938],[130.950977,-11.926465],[130.644922,-11.742383],[130.511914,-11.617871],[130.422754,-11.445801],[130.404785,-11.30498],[130.368555,-11.214941],[130.38457,-11.192188],[130.40293,-11.180469],[130.42666,-11.183105],[130.519141,-11.279492],[130.559766,-11.305957],[130.618848,-11.376074]]],[[[113.183008,-26.053125],[113.156445,-26.094531],[112.964258,-25.783105],[112.908203,-25.569824],[112.94707,-25.531543],[112.982422,-25.520215],[113.096289,-25.815039],[113.131543,-25.882617],[113.131836,-25.951953],[113.14834,-25.973828],[113.183008,-26.053125]]],[[[137.596484,-35.738672],[137.835938,-35.762109],[137.928906,-35.726074],[138.046582,-35.755176],[138.123438,-35.852344],[138.066504,-35.900586],[138.011914,-35.907617],[137.835547,-35.867773],[137.670898,-35.897949],[137.622266,-35.938086],[137.590234,-36.027148],[137.448438,-36.074805],[137.382227,-36.020898],[137.20957,-35.982422],[137.147754,-36.039062],[137.025879,-36.023926],[136.912695,-36.04668],[136.755078,-36.033105],[136.589258,-35.935352],[136.540625,-35.890137],[136.579102,-35.808691],[136.638672,-35.748828],[137.091797,-35.663867],[137.334082,-35.59248],[137.530469,-35.605078],[137.584961,-35.620215],[137.635449,-35.656445],[137.598145,-35.722266],[137.596484,-35.738672]]],[[[145.486523,-38.354883],[145.33584,-38.420996],[145.280273,-38.390625],[145.28584,-38.341016],[145.295313,-38.318945],[145.426563,-38.31416],[145.486523,-38.354883]]],[[[145.314453,-38.49082],[145.349219,-38.538184],[145.355078,-38.557031],[145.270898,-38.519727],[145.128418,-38.527637],[145.217773,-38.458594],[145.287891,-38.472168],[145.314453,-38.49082]]],[[[149.04375,-20.291504],[149.019922,-20.302539],[148.987402,-20.301758],[148.938867,-20.283691],[148.981055,-20.153516],[149.004395,-20.221484],[149.045313,-20.277539],[149.04375,-20.291504]]],[[[148.935547,-20.149902],[148.913477,-20.154297],[148.886914,-20.143555],[148.906445,-20.101953],[148.931641,-20.068945],[148.967871,-20.044336],[148.95625,-20.134668],[148.935547,-20.149902]]],[[[151.146582,-23.49082],[151.180762,-23.516211],[151.212012,-23.513086],[151.240137,-23.529688],[151.228809,-23.594922],[151.274316,-23.668457],[151.295801,-23.720313],[151.261523,-23.762305],[151.238281,-23.775781],[151.18418,-23.740723],[151.033301,-23.530176],[151.059961,-23.460547],[151.146582,-23.49082]]],[[[150.516699,-22.322559],[150.488477,-22.324707],[150.462402,-22.307715],[150.484668,-22.267871],[150.488477,-22.210742],[150.521484,-22.22832],[150.548828,-22.306934],[150.516699,-22.322559]]],[[[149.92832,-22.193066],[149.893652,-22.223242],[149.869531,-22.150391],[149.875391,-22.074023],[149.912305,-22.04873],[149.92793,-22.149316],[149.92832,-22.193066]]],[[[153.53877,-27.436426],[153.452734,-27.711719],[153.426563,-27.706445],[153.395801,-27.665039],[153.400879,-27.505664],[153.435449,-27.405371],[153.521875,-27.422461],[153.53877,-27.436426]]],[[[153.44248,-27.316016],[153.420898,-27.330957],[153.376563,-27.235352],[153.365039,-27.138867],[153.379883,-27.049414],[153.432324,-27.029883],[153.466797,-27.038086],[153.426367,-27.201465],[153.44248,-27.316016]]],[[[142.274805,-10.704785],[142.191406,-10.762012],[142.137207,-10.731934],[142.125488,-10.668457],[142.131055,-10.640625],[142.197949,-10.591992],[142.274805,-10.704785]]],[[[142.338965,-10.192188],[142.279395,-10.254199],[142.216211,-10.235645],[142.195117,-10.199316],[142.21875,-10.149414],[142.29873,-10.14043],[142.338965,-10.192188]]],[[[142.167578,-10.154102],[142.141992,-10.18125],[142.097656,-10.121777],[142.148828,-10.051758],[142.191992,-10.085254],[142.167578,-10.154102]]],[[[146.27832,-18.23125],[146.298828,-18.326074],[146.341992,-18.400098],[146.327051,-18.448633],[146.298828,-18.484766],[146.235645,-18.450781],[146.191309,-18.362891],[146.116211,-18.292383],[146.098828,-18.251758],[146.186719,-18.255176],[146.230859,-18.241406],[146.249121,-18.225879],[146.27832,-18.23125]]],[[[136.598535,-11.378906],[136.526563,-11.438867],[136.52168,-11.393848],[136.559766,-11.35791],[136.649023,-11.211621],[136.687988,-11.177637],[136.710547,-11.158398],[136.727344,-11.104785],[136.731738,-11.024609],[136.780273,-11.0125],[136.741406,-11.194629],[136.598535,-11.378906]]],[[[136.338672,-11.602344],[136.180273,-11.676758],[136.267383,-11.576465],[136.449219,-11.487109],[136.479297,-11.465918],[136.470508,-11.509277],[136.379395,-11.583203],[136.338672,-11.602344]]],[[[137.093652,-15.778125],[137.050879,-15.824414],[136.996484,-15.775781],[136.985059,-15.725977],[136.942676,-15.711719],[136.963379,-15.665723],[136.985742,-15.652441],[137.00957,-15.594824],[137.064551,-15.662891],[137.071094,-15.738086],[137.093652,-15.778125]]],[[[136.862695,-15.619922],[136.846777,-15.627344],[136.845605,-15.544043],[136.876855,-15.502539],[136.890234,-15.588867],[136.862695,-15.619922]]],[[[136.591016,-15.628223],[136.531152,-15.632422],[136.514258,-15.627344],[136.502734,-15.583105],[136.522559,-15.543164],[136.586035,-15.533691],[136.612305,-15.544141],[136.591016,-15.628223]]],[[[139.45918,-17.114551],[139.42168,-17.131641],[139.408203,-17.090625],[139.45918,-17.049121],[139.492773,-16.99043],[139.560059,-17.041992],[139.570898,-17.094434],[139.45918,-17.114551]]],[[[136.237402,-13.824512],[136.213672,-13.835938],[136.122656,-13.816602],[136.122266,-13.780566],[136.134375,-13.753125],[136.15957,-13.736719],[136.21543,-13.664746],[136.257422,-13.706641],[136.275391,-13.791113],[136.237402,-13.824512]]],[[[132.593359,-11.302832],[132.573633,-11.318359],[132.49375,-11.163672],[132.516309,-11.116016],[132.483789,-11.037305],[132.537793,-11.028418],[132.578809,-10.968848],[132.593262,-10.997656],[132.596875,-11.106445],[132.629102,-11.169141],[132.593359,-11.302832]]],[[[125.198828,-14.579492],[125.134766,-14.641699],[125.091211,-14.591699],[125.117383,-14.491992],[125.159961,-14.456055],[125.198145,-14.474805],[125.193555,-14.552637],[125.198828,-14.579492]]],[[[124.597266,-15.401953],[124.55957,-15.430176],[124.524219,-15.421484],[124.52373,-15.382422],[124.482813,-15.340332],[124.504102,-15.29248],[124.519336,-15.26748],[124.550879,-15.270313],[124.564551,-15.31084],[124.605078,-15.356543],[124.597266,-15.401953]]],[[[115.446191,-20.787793],[115.388086,-20.866016],[115.318066,-20.850586],[115.308594,-20.811133],[115.354297,-20.746289],[115.43457,-20.667969],[115.457617,-20.716309],[115.446191,-20.787793]]],[[[145.042969,-40.786719],[145.158691,-40.790625],[145.224316,-40.765137],[145.283008,-40.769922],[145.349414,-40.826367],[145.429395,-40.858203],[145.485156,-40.852344],[145.533496,-40.863965],[145.576465,-40.904102],[145.686035,-40.939063],[145.733789,-40.962012],[145.775391,-40.997168],[145.821484,-41.024609],[146.111133,-41.118066],[146.31748,-41.163477],[146.574414,-41.142383],[146.650586,-41.116211],[146.723438,-41.078027],[146.786035,-41.113672],[146.848145,-41.168066],[146.836035,-41.109375],[146.856641,-41.058301],[146.919434,-41.017773],[146.989844,-40.992383],[147.105762,-40.994238],[147.218848,-40.983398],[147.268945,-40.959766],[147.320508,-40.956445],[147.387695,-40.985547],[147.454785,-41.00166],[147.500781,-40.96416],[147.579297,-40.875586],[147.62168,-40.844727],[147.817676,-40.87168],[147.872949,-40.872559],[147.96875,-40.77959],[148.032813,-40.780957],[148.215234,-40.854883],[148.292871,-40.94707],[148.285449,-41.115332],[148.291602,-41.174609],[148.30625,-41.233105],[148.312207,-41.349707],[148.289844,-41.465039],[148.286914,-41.55498],[148.296582,-41.646191],[148.287598,-41.815723],[148.315723,-41.927734],[148.30166,-42.004199],[148.301465,-42.039941],[148.328027,-42.07373],[148.34082,-42.111133],[148.331055,-42.15918],[148.342578,-42.215332],[148.33125,-42.261621],[148.290332,-42.25498],[148.276953,-42.219434],[148.28457,-42.173438],[148.277148,-42.136426],[148.255762,-42.102637],[148.183105,-42.064746],[148.204395,-42.041992],[148.241602,-42.021875],[148.213672,-41.97002],[148.167188,-42.012305],[148.141211,-42.069824],[148.15625,-42.088281],[148.127539,-42.103711],[148.066602,-42.170312],[148.022754,-42.259473],[148.004883,-42.345117],[148.009375,-42.435937],[147.973535,-42.505859],[147.924414,-42.572461],[147.912109,-42.658496],[147.915039,-42.816406],[147.957715,-42.960449],[147.980859,-43.157031],[147.94541,-43.181836],[147.838574,-43.195117],[147.78584,-43.22002],[147.698926,-43.122559],[147.647949,-43.020605],[147.687305,-42.979883],[147.773926,-43.003418],[147.800391,-42.980273],[147.807422,-42.954102],[147.8,-42.928125],[147.693457,-42.871973],[147.573828,-42.845703],[147.53584,-42.878027],[147.549023,-42.974512],[147.536719,-42.996484],[147.452344,-43.033398],[147.408008,-42.893848],[147.297949,-42.790918],[147.301953,-42.840527],[147.347656,-42.926563],[147.342676,-42.964453],[147.325,-43.013477],[147.280762,-43.031738],[147.259766,-43.071094],[147.259766,-43.126465],[147.24502,-43.215918],[147.172852,-43.255859],[146.996973,-43.156348],[146.984863,-43.189844],[146.9875,-43.21875],[147.077344,-43.275879],[147.035938,-43.319043],[147.004688,-43.369629],[146.954688,-43.502441],[146.873926,-43.6125],[146.834277,-43.619336],[146.699219,-43.601953],[146.548535,-43.508887],[146.413184,-43.519531],[146.186719,-43.512793],[146.043164,-43.547168],[146.013086,-43.444824],[145.981738,-43.408398],[145.994434,-43.376074],[146.108789,-43.354395],[146.226367,-43.355273],[146.208008,-43.316211],[146.176465,-43.301758],[146.125098,-43.31123],[145.975293,-43.277148],[145.873242,-43.292383],[145.802734,-43.244043],[145.681543,-43.075977],[145.609961,-42.998242],[145.567383,-42.967969],[145.517578,-42.951367],[145.487598,-42.92666],[145.268164,-42.544336],[145.237109,-42.455566],[145.198828,-42.230859],[145.372949,-42.338477],[145.434863,-42.406543],[145.468262,-42.492871],[145.527246,-42.388184],[145.516602,-42.354492],[145.360352,-42.227539],[145.339648,-42.190723],[145.331055,-42.14707],[145.294434,-42.191016],[145.234863,-42.196973],[145.258984,-42.107324],[145.238184,-42.019629],[145.055371,-41.826758],[144.915527,-41.644043],[144.77793,-41.418848],[144.766113,-41.390039],[144.764355,-41.341504],[144.697754,-41.190723],[144.662402,-41.078906],[144.646094,-40.980859],[144.709668,-40.78291],[144.718555,-40.672266],[144.818555,-40.72168],[145.042969,-40.786719]]],[[[143.92793,-40.116113],[143.89873,-40.120215],[143.875781,-40.063965],[143.887598,-39.983594],[143.838574,-39.904102],[143.865234,-39.824219],[143.861816,-39.737988],[143.879395,-39.7],[143.939355,-39.658105],[143.948828,-39.583691],[144.000781,-39.580176],[144.091309,-39.638086],[144.120898,-39.785254],[144.106055,-39.874023],[144.141016,-39.953809],[144.111914,-40.02207],[144.035059,-40.078223],[143.92793,-40.116113]]],[[[148.000391,-39.757617],[148.17793,-39.938477],[148.27002,-39.966699],[148.297363,-39.985742],[148.289844,-40.06543],[148.250781,-40.099512],[148.323242,-40.144434],[148.313574,-40.173535],[148.299414,-40.172461],[148.210352,-40.233691],[148.105664,-40.262109],[148.073633,-40.24082],[148.046875,-40.212793],[148.024805,-40.171973],[147.890527,-40.014551],[147.905957,-39.971387],[147.87627,-39.905469],[147.812305,-39.910449],[147.767188,-39.870313],[147.83916,-39.831543],[147.933008,-39.725977],[148.000391,-39.757617]]],[[[147.356055,-43.396973],[147.308887,-43.500781],[147.231445,-43.483105],[147.153809,-43.500195],[147.10498,-43.431152],[147.104688,-43.412891],[147.163086,-43.430273],[147.184668,-43.407813],[147.198438,-43.379199],[147.219727,-43.371387],[147.233984,-43.330469],[147.283887,-43.278906],[147.3125,-43.280273],[147.34248,-43.346289],[147.356055,-43.396973]]],[[[148.104297,-42.710449],[148.048145,-42.719238],[148.029688,-42.714844],[148.030859,-42.663379],[148.022754,-42.64043],[148.072559,-42.593164],[148.142773,-42.615918],[148.169531,-42.651758],[148.100586,-42.680566],[148.104297,-42.710449]]],[[[147.43457,-43.240723],[147.371875,-43.24082],[147.348828,-43.232422],[147.337598,-43.183301],[147.296094,-43.161719],[147.319141,-43.145313],[147.327344,-43.114648],[147.352539,-43.080273],[147.397266,-43.118262],[147.43457,-43.240723]]],[[[144.784375,-40.506738],[144.748047,-40.589453],[144.710156,-40.485254],[144.751172,-40.470215],[144.783398,-40.434863],[144.79082,-40.440332],[144.784375,-40.506738]]],[[[148.32627,-40.306934],[148.420703,-40.367188],[148.474219,-40.432422],[148.404004,-40.486523],[148.352734,-40.497266],[148.319434,-40.43457],[148.214063,-40.45752],[148.102539,-40.45166],[148.020117,-40.404199],[148.010449,-40.380566],[148.058789,-40.356836],[148.198145,-40.35791],[148.32627,-40.306934]]],[[[148.236914,-40.515137],[148.187793,-40.592578],[148.126953,-40.543945],[148.117285,-40.521484],[148.193164,-40.503125],[148.218359,-40.505078],[148.236914,-40.515137]]],[[[158.878809,-54.709766],[158.845215,-54.749219],[158.835938,-54.704004],[158.896973,-54.506055],[158.958887,-54.472363],[158.945605,-54.575],[158.878809,-54.709766]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":5,"SOVEREIGNT":"Australia","SOV_A3":"AU1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Indian Ocean Territories","ADM0_A3":"IOA","GEOU_DIF":0,"GEOUNIT":"Indian Ocean Territories","GU_A3":"IOA","SU_DIF":0,"SUBUNIT":"Indian Ocean Territories","SU_A3":"IOA","BRK_DIFF":0,"NAME":"Indian Ocean Ter.","NAME_LONG":"Indian Ocean Territories","BRK_A3":"IOA","BRK_NAME":"Indian Ocean Ter.","BRK_GROUP":null,"ABBREV":"Ind. Oc. Ter.","POSTAL":"IOT","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"Auz.","NOTE_BRK":null,"NAME_SORT":"Indian Ocean Territories","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":7,"POP_EST":2387,"POP_RANK":4,"POP_YEAR":2016,"GDP_MD":35,"GDP_YEAR":2016,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"-99","ISO_A2":"-99","ISO_A2_EH":"AU","ISO_A3":"-99","ISO_A3_EH":"AUS","ISO_N3":"-99","ISO_N3_EH":"036","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":-90,"WOE_ID_EH":23424869,"WOE_NOTE":"Grouping of Christmas Island (23424869) and Cocos or Keeling Islands (23424784)","ADM0_ISO":"AUS","ADM0_DIFF":"1","ADM0_TLC":"IOA","ADM0_A3_US":"IOA","ADM0_A3_FR":"IOA","ADM0_A3_RU":"IOA","ADM0_A3_ES":"IOA","ADM0_A3_CN":"IOA","ADM0_A3_TW":"IOA","ADM0_A3_IN":"IOA","ADM0_A3_NP":"IOA","ADM0_A3_PK":"IOA","ADM0_A3_DE":"IOA","ADM0_A3_GB":"IOA","ADM0_A3_BR":"IOA","ADM0_A3_IL":"IOA","ADM0_A3_PS":"IOA","ADM0_A3_SA":"IOA","ADM0_A3_EG":"IOA","ADM0_A3_MA":"IOA","ADM0_A3_PT":"IOA","ADM0_A3_AR":"IOA","ADM0_A3_JP":"IOA","ADM0_A3_KO":"IOA","ADM0_A3_VN":"IOA","ADM0_A3_TR":"IOA","ADM0_A3_ID":"IOA","ADM0_A3_PL":"IOA","ADM0_A3_GR":"IOA","ADM0_A3_IT":"IOA","ADM0_A3_NL":"IOA","ADM0_A3_SE":"IOA","ADM0_A3_BD":"IOA","ADM0_A3_UA":"IOA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Africa","SUBREGION":"Seven seas (open ocean)","REGION_WB":"East Asia & Pacific","NAME_LEN":17,"LONG_LEN":24,"ABBREV_LEN":13,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9.5,"LABEL_X":105.67259,"LABEL_Y":-10.490789,"NE_ID":1159320363,"WIKIDATAID":"Q4824275","NAME_AR":"أقاليم المحيط الهندي الأسترالية","NAME_BN":"অস্ট্রেলীয় ভারত মহাসাগর অঞ্চল","NAME_DE":"Australische Territorien im Indischen Ozean","NAME_EN":"Australian Indian Ocean Territories","NAME_ES":"Territorios Australianos del Océano Índico","NAME_FA":"سرزمینهای اقیانوس هند استرالیا","NAME_FR":"Territoires extérieurs australiens de l'Océan Indien","NAME_EL":"Αυστραλέζικο Έδαφος Ινδικού Ωκεανού","NAME_HE":"טריטוריה של האוקיינוס ההודי","NAME_HI":"हिंद महासागर के ऑस्ट्रेलियाई क्षेत्र","NAME_HU":"Ausztrál Indiai-óceáni Terület","NAME_ID":"Wilayah Samudra Hindia Australia","NAME_IT":"Australian Indian Ocean Territories","NAME_JA":"オーストラリア領インド洋地域","NAME_KO":"호주령 인도양 지역","NAME_NL":"Australische territoria van de Indische Oceaan","NAME_PL":"Australijskie Terytorium Oceanu Indyjskiego","NAME_PT":"Territórios australianos do Oceano Índico","NAME_RU":"Австралийские территории в Индийском океане","NAME_SV":"Australienska indiska oceanens havsområde","NAME_TR":"Australian Indian Ocean Territories","NAME_UK":"Австралійські території в Індійському океані","NAME_UR":"آسْٹْریلِیَن انڈین اوشین تیریتورییس","NAME_VI":"Vùng lãnh thổ Ấn Độ Dương thuộc Úc","NAME_ZH":"澳屬印度洋領地","NAME_ZHT":"澳屬印度洋領地","FCLASS_ISO":"Unrecognized","TLC_DIFF":"1","FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[96.825879,-12.199805,105.725391,-10.430664],"geometry":{"type":"MultiPolygon","coordinates":[[[[105.725391,-10.492969],[105.696875,-10.56416],[105.644336,-10.525],[105.584082,-10.5125],[105.595703,-10.459668],[105.645508,-10.452246],[105.669824,-10.449414],[105.705469,-10.430664],[105.725391,-10.492969]]],[[[96.84043,-12.181836],[96.851953,-12.186816],[96.867383,-12.181445],[96.873633,-12.187695],[96.849512,-12.197363],[96.834863,-12.179688],[96.827734,-12.150684],[96.825879,-12.126172],[96.832617,-12.126172],[96.832617,-12.136035],[96.83418,-12.144141],[96.839453,-12.160254],[96.835645,-12.171289],[96.84043,-12.181836]]],[[[96.918262,-12.194141],[96.906543,-12.199805],[96.896777,-12.195508],[96.893945,-12.192578],[96.892969,-12.187207],[96.904395,-12.186523],[96.913379,-12.181836],[96.918945,-12.17334],[96.920508,-12.161523],[96.925293,-12.173242],[96.924316,-12.184668],[96.918262,-12.194141]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":5,"SOVEREIGNT":"Australia","SOV_A3":"AU1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Heard Island and McDonald Islands","ADM0_A3":"HMD","GEOU_DIF":0,"GEOUNIT":"Heard Island and McDonald Islands","GU_A3":"HMD","SU_DIF":0,"SUBUNIT":"Heard Island and McDonald Islands","SU_A3":"HMD","BRK_DIFF":0,"NAME":"Heard I. and McDonald Is.","NAME_LONG":"Heard I. and McDonald Islands","BRK_A3":"HMD","BRK_NAME":"Heard I. and McDonald Is.","BRK_GROUP":null,"ABBREV":"H.M.Is.","POSTAL":"HM","FORMAL_EN":"Territory of Heard Island and McDonald Islands","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"Auz.","NOTE_BRK":null,"NAME_SORT":"Heard Island and McDonald Islands","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":7,"POP_EST":0,"POP_RANK":1,"POP_YEAR":2019,"GDP_MD":0,"GDP_YEAR":2016,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"HM","ISO_A2":"HM","ISO_A2_EH":"HM","ISO_A3":"HMD","ISO_A3_EH":"HMD","ISO_N3":"334","ISO_N3_EH":"334","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":28289411,"WOE_ID_EH":28289411,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"HMD","ADM0_DIFF":null,"ADM0_TLC":"HMD","ADM0_A3_US":"HMD","ADM0_A3_FR":"HMD","ADM0_A3_RU":"HMD","ADM0_A3_ES":"HMD","ADM0_A3_CN":"HMD","ADM0_A3_TW":"HMD","ADM0_A3_IN":"HMD","ADM0_A3_NP":"HMD","ADM0_A3_PK":"HMD","ADM0_A3_DE":"HMD","ADM0_A3_GB":"HMD","ADM0_A3_BR":"HMD","ADM0_A3_IL":"HMD","ADM0_A3_PS":"HMD","ADM0_A3_SA":"HMD","ADM0_A3_EG":"HMD","ADM0_A3_MA":"HMD","ADM0_A3_PT":"HMD","ADM0_A3_AR":"HMD","ADM0_A3_JP":"HMD","ADM0_A3_KO":"HMD","ADM0_A3_VN":"HMD","ADM0_A3_TR":"HMD","ADM0_A3_ID":"HMD","ADM0_A3_PL":"HMD","ADM0_A3_GR":"HMD","ADM0_A3_IT":"HMD","ADM0_A3_NL":"HMD","ADM0_A3_SE":"HMD","ADM0_A3_BD":"HMD","ADM0_A3_UA":"HMD","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Seven seas (open ocean)","REGION_UN":"Africa","SUBREGION":"Seven seas (open ocean)","REGION_WB":"Sub-Saharan Africa","NAME_LEN":25,"LONG_LEN":29,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":73.50521,"LABEL_Y":-53.103462,"NE_ID":1159320361,"WIKIDATAID":"Q131198","NAME_AR":"جزيرة هيرد وجزر ماكدونالد","NAME_BN":"হার্ড দ্বীপ এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জ","NAME_DE":"Heard und McDonaldinseln","NAME_EN":"Heard Island and McDonald Islands","NAME_ES":"Islas Heard y McDonald","NAME_FA":"جزیره هرد و جزایر مکدونالد","NAME_FR":"îles Heard-et-MacDonald","NAME_EL":"Νήσοι Χερντ και Μακντόναλντ","NAME_HE":"האי הרד ואיי מקדונלד","NAME_HI":"हर्ड द्वीप और मैकडोनाल्ड द्वीप","NAME_HU":"Heard-sziget és McDonald-szigetek","NAME_ID":"Pulau Heard dan Kepulauan McDonald","NAME_IT":"Isole Heard e McDonald","NAME_JA":"ハード島とマクドナルド諸島","NAME_KO":"허드 맥도널드 제도","NAME_NL":"Heard en McDonaldeilanden","NAME_PL":"Wyspy Heard i McDonalda","NAME_PT":"Ilha Heard e Ilhas McDonald","NAME_RU":"Остров Херд и острова Макдональд","NAME_SV":"Heard- och McDonaldöarna","NAME_TR":"Heard Adası ve McDonald Adaları","NAME_UK":"Острів Герд і острови Макдональд","NAME_UR":"جزیرہ ہرڈ و جزائر مکڈونلڈ","NAME_VI":"Đảo Heard và quần đảo McDonald","NAME_ZH":"赫德岛和麦克唐纳群岛","NAME_ZHT":"赫德島和麥克唐納群島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[73.251172,-53.18457,73.837793,-52.966309],"geometry":{"type":"Polygon","coordinates":[[[73.707422,-53.137109],[73.587988,-53.18457],[73.465137,-53.18418],[73.413281,-53.146777],[73.336328,-53.029883],[73.285449,-53.021484],[73.253906,-52.989355],[73.251172,-52.975781],[73.305273,-52.966309],[73.388086,-52.999902],[73.585742,-53.027148],[73.73125,-53.091211],[73.837793,-53.112793],[73.795117,-53.129883],[73.707422,-53.137109]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":5,"SOVEREIGNT":"Australia","SOV_A3":"AU1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Norfolk Island","ADM0_A3":"NFK","GEOU_DIF":0,"GEOUNIT":"Norfolk Island","GU_A3":"NFK","SU_DIF":0,"SUBUNIT":"Norfolk Island","SU_A3":"NFK","BRK_DIFF":0,"NAME":"Norfolk Island","NAME_LONG":"Norfolk Island","BRK_A3":"NFK","BRK_NAME":"Norfolk Island","BRK_GROUP":null,"ABBREV":"Nfk. I.","POSTAL":"NF","FORMAL_EN":"Territory of Norfolk Island","FORMAL_FR":null,"NAME_CIAWF":"Norfolk Island","NOTE_ADM0":"Auz.","NOTE_BRK":null,"NAME_SORT":"Norfolk Island","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":7,"POP_EST":2169,"POP_RANK":4,"POP_YEAR":2011,"GDP_MD":32,"GDP_YEAR":2016,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"NF","ISO_A2":"NF","ISO_A2_EH":"NF","ISO_A3":"NFK","ISO_A3_EH":"NFK","ISO_N3":"574","ISO_N3_EH":"574","UN_A3":"574","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424905,"WOE_ID_EH":23424905,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"NFK","ADM0_DIFF":null,"ADM0_TLC":"NFK","ADM0_A3_US":"NFK","ADM0_A3_FR":"NFK","ADM0_A3_RU":"NFK","ADM0_A3_ES":"NFK","ADM0_A3_CN":"NFK","ADM0_A3_TW":"NFK","ADM0_A3_IN":"NFK","ADM0_A3_NP":"NFK","ADM0_A3_PK":"NFK","ADM0_A3_DE":"NFK","ADM0_A3_GB":"NFK","ADM0_A3_BR":"NFK","ADM0_A3_IL":"NFK","ADM0_A3_PS":"NFK","ADM0_A3_SA":"NFK","ADM0_A3_EG":"NFK","ADM0_A3_MA":"NFK","ADM0_A3_PT":"NFK","ADM0_A3_AR":"NFK","ADM0_A3_JP":"NFK","ADM0_A3_KO":"NFK","ADM0_A3_VN":"NFK","ADM0_A3_TR":"NFK","ADM0_A3_ID":"NFK","ADM0_A3_PL":"NFK","ADM0_A3_GR":"NFK","ADM0_A3_IT":"NFK","ADM0_A3_NL":"NFK","ADM0_A3_SE":"NFK","ADM0_A3_BD":"NFK","ADM0_A3_UA":"NFK","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Australia and New Zealand","REGION_WB":"East Asia & Pacific","NAME_LEN":14,"LONG_LEN":14,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":167.954531,"LABEL_Y":-29.033042,"NE_ID":1159320365,"WIKIDATAID":"Q31057","NAME_AR":"جزيرة نورفولك","NAME_BN":"নরফোক দ্বীপ","NAME_DE":"Norfolkinsel","NAME_EN":"Norfolk Island","NAME_ES":"Isla Norfolk","NAME_FA":"جزیره نورفک","NAME_FR":"Île Norfolk","NAME_EL":"Νόρφολκ","NAME_HE":"נורפוק","NAME_HI":"नॉर्फ़ोक द्वीप","NAME_HU":"Norfolk-sziget","NAME_ID":"Pulau Norfolk","NAME_IT":"Isola Norfolk","NAME_JA":"ノーフォーク島","NAME_KO":"노퍽섬","NAME_NL":"Norfolk","NAME_PL":"Norfolk","NAME_PT":"Ilha Norfolk","NAME_RU":"Норфолк","NAME_SV":"Norfolkön","NAME_TR":"Norfolk Adası","NAME_UK":"острів Норфолк","NAME_UR":"جزیرہ نارفولک","NAME_VI":"Đảo Norfolk","NAME_ZH":"诺福克岛","NAME_ZHT":"諾福克島","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[167.906152,-29.096289,167.99043,-29.013965],"geometry":{"type":"Polygon","coordinates":[[[167.939453,-29.017676],[167.959766,-29.02832],[167.978125,-29.034277],[167.99043,-29.04209],[167.988672,-29.058984],[167.979004,-29.075684],[167.967676,-29.082813],[167.96416,-29.085352],[167.961914,-29.088477],[167.960645,-29.092188],[167.960742,-29.096289],[167.954688,-29.082129],[167.944434,-29.072949],[167.933789,-29.072168],[167.926563,-29.082813],[167.92041,-29.082813],[167.918262,-29.071875],[167.914258,-29.061914],[167.912402,-29.052832],[167.916406,-29.045117],[167.924023,-29.03584],[167.924609,-29.028516],[167.918555,-29.025098],[167.906152,-29.028125],[167.920605,-29.013965],[167.939453,-29.017676]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":5,"SOVEREIGNT":"Australia","SOV_A3":"AU1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Dependency","TLC":"1","ADMIN":"Ashmore and Cartier Islands","ADM0_A3":"ATC","GEOU_DIF":0,"GEOUNIT":"Ashmore and Cartier Islands","GU_A3":"ATC","SU_DIF":0,"SUBUNIT":"Ashmore and Cartier Islands","SU_A3":"ATC","BRK_DIFF":0,"NAME":"Ashmore and Cartier Is.","NAME_LONG":"Ashmore and Cartier Islands","BRK_A3":"ATC","BRK_NAME":"Ashmore and Cartier Is.","BRK_GROUP":null,"ABBREV":"A.C.Is.","POSTAL":"AU","FORMAL_EN":"Territory of Ashmore and Cartier Islands","FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"Auz.","NOTE_BRK":null,"NAME_SORT":"Ashmore and Cartier Islands","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":7,"POP_EST":0,"POP_RANK":1,"POP_YEAR":2019,"GDP_MD":0,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"AT","ISO_A2":"-99","ISO_A2_EH":"AU","ISO_A3":"-99","ISO_A3_EH":"AUS","ISO_N3":"036","ISO_N3_EH":"036","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424749,"WOE_ID_EH":23424749,"WOE_NOTE":"WOE Admin-1 states provinces match.","ADM0_ISO":"AUS","ADM0_DIFF":"1","ADM0_TLC":"ATC","ADM0_A3_US":"ATC","ADM0_A3_FR":"ATC","ADM0_A3_RU":"ATC","ADM0_A3_ES":"ATC","ADM0_A3_CN":"ATC","ADM0_A3_TW":"ATC","ADM0_A3_IN":"ATC","ADM0_A3_NP":"ATC","ADM0_A3_PK":"ATC","ADM0_A3_DE":"ATC","ADM0_A3_GB":"ATC","ADM0_A3_BR":"ATC","ADM0_A3_IL":"ATC","ADM0_A3_PS":"ATC","ADM0_A3_SA":"ATC","ADM0_A3_EG":"ATC","ADM0_A3_MA":"ATC","ADM0_A3_PT":"ATC","ADM0_A3_AR":"ATC","ADM0_A3_JP":"ATC","ADM0_A3_KO":"ATC","ADM0_A3_VN":"ATC","ADM0_A3_TR":"ATC","ADM0_A3_ID":"ATC","ADM0_A3_PL":"ATC","ADM0_A3_GR":"ATC","ADM0_A3_IT":"ATC","ADM0_A3_NL":"ATC","ADM0_A3_SE":"ATC","ADM0_A3_BD":"ATC","ADM0_A3_UA":"ATC","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Australia and New Zealand","REGION_WB":"East Asia & Pacific","NAME_LEN":23,"LONG_LEN":27,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":4.5,"MAX_LABEL":9.5,"LABEL_X":123.586368,"LABEL_Y":-12.432571,"NE_ID":1159320353,"WIKIDATAID":"Q133888","NAME_AR":"جزر أشمور وكارتيير","NAME_BN":"আসমর এবং কার্টিয়ে দ্বীপপুঞ্জ","NAME_DE":"Ashmore- und Cartierinseln","NAME_EN":"Ashmore and Cartier Islands","NAME_ES":"Islas Ashmore y Cartier","NAME_FA":"جزیرههای آشمور و کارتیر","NAME_FR":"Îles Ashmore-et-Cartier","NAME_EL":"Άσμορ και Καρτιέ Νησιά","NAME_HE":"איי אשמור וקרטייה","NAME_HI":"एशमोर और कार्टियर द्वीप समूह","NAME_HU":"Ashmore- és Cartier-szigetek","NAME_ID":"Kepulauan Ashmore dan Cartier","NAME_IT":"Isole Ashmore e Cartier","NAME_JA":"アシュモア・カルティエ諸島","NAME_KO":"애시모어 카르티에 제도","NAME_NL":"Ashmore- en Cartiereilanden","NAME_PL":"Wyspy Ashmore i Cartiera","NAME_PT":"Ilhas Ashmore e Cartier","NAME_RU":"Острова Ашмор и Картье","NAME_SV":"Ashmore- och Cartieröarna","NAME_TR":"Ashmore ve Cartier Adaları","NAME_UK":"Острови Ашмор і Картьє","NAME_UR":"جزائر ایشمور و کارٹیر","NAME_VI":"Quần đảo Ashmore và Cartier","NAME_ZH":"阿什莫尔和卡捷群岛","NAME_ZHT":"亞什摩及卡地爾群島","FCLASS_ISO":"Unrecognized","TLC_DIFF":"1","FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[123.572461,-12.435938,123.595215,-12.423926],"geometry":{"type":"Polygon","coordinates":[[[123.594531,-12.425684],[123.595215,-12.435938],[123.573145,-12.43418],[123.572461,-12.423926],[123.594531,-12.425684]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Armenia","SOV_A3":"ARM","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Armenia","ADM0_A3":"ARM","GEOU_DIF":0,"GEOUNIT":"Armenia","GU_A3":"ARM","SU_DIF":0,"SUBUNIT":"Armenia","SU_A3":"ARM","BRK_DIFF":0,"NAME":"Armenia","NAME_LONG":"Armenia","BRK_A3":"ARM","BRK_NAME":"Armenia","BRK_GROUP":null,"ABBREV":"Arm.","POSTAL":"ARM","FORMAL_EN":"Republic of Armenia","FORMAL_FR":null,"NAME_CIAWF":"Armenia","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Armenia","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":1,"MAPCOLOR9":2,"MAPCOLOR13":10,"POP_EST":2957731,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":13672,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"AM","ISO_A2":"AM","ISO_A2_EH":"AM","ISO_A3":"ARM","ISO_A3_EH":"ARM","ISO_N3":"051","ISO_N3_EH":"051","UN_A3":"051","WB_A2":"AM","WB_A3":"ARM","WOE_ID":23424743,"WOE_ID_EH":23424743,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ARM","ADM0_DIFF":null,"ADM0_TLC":"ARM","ADM0_A3_US":"ARM","ADM0_A3_FR":"ARM","ADM0_A3_RU":"ARM","ADM0_A3_ES":"ARM","ADM0_A3_CN":"ARM","ADM0_A3_TW":"ARM","ADM0_A3_IN":"ARM","ADM0_A3_NP":"ARM","ADM0_A3_PK":"ARM","ADM0_A3_DE":"ARM","ADM0_A3_GB":"ARM","ADM0_A3_BR":"ARM","ADM0_A3_IL":"ARM","ADM0_A3_PS":"ARM","ADM0_A3_SA":"ARM","ADM0_A3_EG":"ARM","ADM0_A3_MA":"ARM","ADM0_A3_PT":"ARM","ADM0_A3_AR":"ARM","ADM0_A3_JP":"ARM","ADM0_A3_KO":"ARM","ADM0_A3_VN":"ARM","ADM0_A3_TR":"ARM","ADM0_A3_ID":"ARM","ADM0_A3_PL":"ARM","ADM0_A3_GR":"ARM","ADM0_A3_IT":"ARM","ADM0_A3_NL":"ARM","ADM0_A3_SE":"ARM","ADM0_A3_BD":"ARM","ADM0_A3_UA":"ARM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Western Asia","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":44.800564,"LABEL_Y":40.459077,"NE_ID":1159320333,"WIKIDATAID":"Q399","NAME_AR":"أرمينيا","NAME_BN":"আর্মেনিয়া","NAME_DE":"Armenien","NAME_EN":"Armenia","NAME_ES":"Armenia","NAME_FA":"ارمنستان","NAME_FR":"Arménie","NAME_EL":"Αρμενία","NAME_HE":"ארמניה","NAME_HI":"आर्मीनिया","NAME_HU":"Örményország","NAME_ID":"Armenia","NAME_IT":"Armenia","NAME_JA":"アルメニア","NAME_KO":"아르메니아","NAME_NL":"Armenië","NAME_PL":"Armenia","NAME_PT":"Arménia","NAME_RU":"Армения","NAME_SV":"Armenien","NAME_TR":"Ermenistan","NAME_UK":"Вірменія","NAME_UR":"آرمینیا","NAME_VI":"Armenia","NAME_ZH":"亚美尼亚","NAME_ZHT":"亞美尼亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[43.439453,38.869043,46.584766,41.290967],"geometry":{"type":"MultiPolygon","coordinates":[[[[44.768262,39.703516],[44.733789,39.746484],[44.560449,39.887598],[44.399609,39.995752],[44.289258,40.040381],[44.178027,40.035742],[44.005371,40.014111],[43.941992,40.023145],[43.791699,40.070264],[43.666211,40.126367],[43.683301,40.149658],[43.709863,40.166504],[43.678125,40.239307],[43.608398,40.356592],[43.61582,40.393311],[43.59375,40.444043],[43.569336,40.482373],[43.667871,40.574072],[43.712891,40.647754],[43.722656,40.719531],[43.696484,40.794141],[43.631641,40.929004],[43.591699,40.968213],[43.51748,41.004834],[43.455273,41.064697],[43.439453,41.107129],[43.491992,41.115527],[43.64502,41.11665],[43.793164,41.131104],[43.90918,41.158984],[44.077246,41.18252],[44.146484,41.203369],[44.227344,41.21333],[44.473047,41.191016],[44.564844,41.208203],[44.841406,41.211377],[44.848535,41.220166],[44.810938,41.248584],[44.811328,41.259375],[44.975879,41.27749],[45.001367,41.290967],[45.022949,41.245703],[45.084766,41.195459],[45.152344,41.175146],[45.188574,41.147412],[45.190234,41.126367],[45.070703,41.10083],[45.062598,41.088135],[45.070508,41.075586],[45.106055,41.069336],[45.273438,41.00625],[45.368945,41.004883],[45.419141,40.985693],[45.444238,40.947998],[45.524023,40.896729],[45.5875,40.846924],[45.591406,40.829736],[45.579395,40.804492],[45.401367,40.707129],[45.378906,40.673584],[45.376172,40.638086],[45.454395,40.532373],[45.569531,40.416846],[45.735742,40.329102],[45.964648,40.233789],[45.967578,40.174805],[45.93125,40.104687],[45.900098,40.05708],[45.885938,40.024854],[45.858105,40.011279],[45.630176,40.014209],[45.595996,40.002832],[45.580957,39.989014],[45.579785,39.977539],[45.661816,39.956201],[45.789648,39.881104],[45.863184,39.80835],[45.939941,39.776562],[46.025879,39.718555],[46.094824,39.664453],[46.202051,39.594482],[46.32168,39.617432],[46.481445,39.555176],[46.488086,39.512842],[46.478125,39.475098],[46.377637,39.433887],[46.365137,39.416797],[46.365234,39.40249],[46.378418,39.382275],[46.437305,39.348535],[46.506641,39.298535],[46.584766,39.223682],[46.55,39.201416],[46.477148,39.198193],[46.420313,39.207373],[46.400293,39.192187],[46.401465,39.167676],[46.475391,39.110889],[46.489844,39.069434],[46.486719,38.997461],[46.490625,38.906689],[46.317773,38.912646],[46.170117,38.869043],[46.114453,38.877783],[46.077441,38.954883],[46.045898,39.017529],[45.951855,39.178125],[45.977441,39.243896],[45.925,39.281934],[45.798633,39.350195],[45.766309,39.378467],[45.78418,39.417236],[45.796484,39.488135],[45.784473,39.545605],[45.750488,39.562939],[45.687402,39.564062],[45.610742,39.549805],[45.456836,39.494482],[45.349902,39.529883],[45.288281,39.565576],[45.252539,39.595459],[45.172559,39.570605],[45.152832,39.582666],[45.148633,39.656592],[45.124609,39.696338],[45.076465,39.742822],[45.031641,39.765137],[44.867188,39.719141],[44.768262,39.703516]],[[45.023633,41.027246],[45.028711,41.053857],[45.021094,41.077979],[44.994336,41.085596],[44.961426,41.079248],[44.958887,41.052637],[44.969043,41.027246],[45.002051,41.01582],[45.023633,41.027246]]],[[[45.552344,40.616064],[45.514355,40.599561],[45.478809,40.606982],[45.478809,40.64834],[45.504492,40.664844],[45.53418,40.664014],[45.562305,40.64917],[45.552344,40.616064]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":2,"SOVEREIGNT":"Argentina","SOV_A3":"ARG","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Argentina","ADM0_A3":"ARG","GEOU_DIF":0,"GEOUNIT":"Argentina","GU_A3":"ARG","SU_DIF":0,"SUBUNIT":"Argentina","SU_A3":"ARG","BRK_DIFF":0,"NAME":"Argentina","NAME_LONG":"Argentina","BRK_A3":"ARG","BRK_NAME":"Argentina","BRK_GROUP":null,"ABBREV":"Arg.","POSTAL":"AR","FORMAL_EN":"Argentine Republic","FORMAL_FR":null,"NAME_CIAWF":"Argentina","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Argentina","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":1,"MAPCOLOR9":3,"MAPCOLOR13":13,"POP_EST":44938712,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":445445,"GDP_YEAR":2019,"ECONOMY":"5. Emerging region: G20","INCOME_GRP":"3. Upper middle income","FIPS_10":"AR","ISO_A2":"AR","ISO_A2_EH":"AR","ISO_A3":"ARG","ISO_A3_EH":"ARG","ISO_N3":"032","ISO_N3_EH":"032","UN_A3":"032","WB_A2":"AR","WB_A3":"ARG","WOE_ID":23424747,"WOE_ID_EH":23424747,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ARG","ADM0_DIFF":null,"ADM0_TLC":"ARG","ADM0_A3_US":"ARG","ADM0_A3_FR":"ARG","ADM0_A3_RU":"ARG","ADM0_A3_ES":"ARG","ADM0_A3_CN":"ARG","ADM0_A3_TW":"ARG","ADM0_A3_IN":"ARG","ADM0_A3_NP":"ARG","ADM0_A3_PK":"ARG","ADM0_A3_DE":"ARG","ADM0_A3_GB":"ARG","ADM0_A3_BR":"ARG","ADM0_A3_IL":"ARG","ADM0_A3_PS":"ARG","ADM0_A3_SA":"ARG","ADM0_A3_EG":"ARG","ADM0_A3_MA":"ARG","ADM0_A3_PT":"ARG","ADM0_A3_AR":"ARG","ADM0_A3_JP":"ARG","ADM0_A3_KO":"ARG","ADM0_A3_VN":"ARG","ADM0_A3_TR":"ARG","ADM0_A3_ID":"ARG","ADM0_A3_PL":"ARG","ADM0_A3_GR":"ARG","ADM0_A3_IT":"ARG","ADM0_A3_NL":"ARG","ADM0_A3_SE":"ARG","ADM0_A3_BD":"ARG","ADM0_A3_UA":"ARG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"South America","REGION_UN":"Americas","SUBREGION":"South America","REGION_WB":"Latin America & Caribbean","NAME_LEN":9,"LONG_LEN":9,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2,"MAX_LABEL":7,"LABEL_X":-64.173331,"LABEL_Y":-33.501159,"NE_ID":1159320331,"WIKIDATAID":"Q414","NAME_AR":"الأرجنتين","NAME_BN":"আর্জেন্টিনা","NAME_DE":"Argentinien","NAME_EN":"Argentina","NAME_ES":"Argentina","NAME_FA":"آرژانتین","NAME_FR":"Argentine","NAME_EL":"Αργεντινή","NAME_HE":"ארגנטינה","NAME_HI":"अर्जेण्टीना","NAME_HU":"Argentína","NAME_ID":"Argentina","NAME_IT":"Argentina","NAME_JA":"アルゼンチン","NAME_KO":"아르헨티나","NAME_NL":"Argentinië","NAME_PL":"Argentyna","NAME_PT":"Argentina","NAME_RU":"Аргентина","NAME_SV":"Argentina","NAME_TR":"Arjantin","NAME_UK":"Аргентина","NAME_UR":"ارجنٹائن","NAME_VI":"Argentina","NAME_ZH":"阿根廷","NAME_ZHT":"阿根廷","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-73.57627,-55.032129,-53.668555,-21.802539],"geometry":{"type":"MultiPolygon","coordinates":[[[[-57.608887,-30.187793],[-57.645752,-30.226953],[-57.650879,-30.29502],[-57.712695,-30.384473],[-57.831201,-30.495215],[-57.87251,-30.591016],[-57.818555,-30.712012],[-57.810596,-30.858594],[-57.834082,-30.91748],[-57.886328,-30.937402],[-57.898291,-30.975195],[-57.870068,-31.031055],[-57.868408,-31.104395],[-57.893359,-31.195312],[-57.94834,-31.299414],[-58.033398,-31.416602],[-58.053857,-31.494922],[-58.009668,-31.534375],[-57.987988,-31.576172],[-57.988867,-31.620605],[-58.006982,-31.684961],[-58.042334,-31.769238],[-58.09585,-31.831836],[-58.16748,-31.872656],[-58.189014,-31.924219],[-58.1604,-31.986523],[-58.156348,-32.051563],[-58.177002,-32.119043],[-58.164795,-32.184863],[-58.119727,-32.248926],[-58.123047,-32.321875],[-58.201172,-32.47168],[-58.219971,-32.563965],[-58.170996,-32.959277],[-58.200781,-33.014648],[-58.250391,-33.07832],[-58.308887,-33.08291],[-58.375977,-33.071875],[-58.424463,-33.111523],[-58.454834,-33.285938],[-58.547217,-33.663477],[-58.530566,-33.753027],[-58.456592,-33.89834],[-58.429492,-33.990918],[-58.409033,-34.060742],[-58.39248,-34.192969],[-58.435498,-34.252539],[-58.475244,-34.262988],[-58.525488,-34.296191],[-58.466211,-34.457422],[-58.418945,-34.531641],[-58.28335,-34.683496],[-57.763574,-34.894531],[-57.547852,-35.018945],[-57.303662,-35.188477],[-57.170654,-35.3625],[-57.158887,-35.505957],[-57.353906,-35.720313],[-57.375488,-35.900293],[-57.335449,-36.026758],[-57.26499,-36.144141],[-57.076172,-36.296777],[-56.937158,-36.352539],[-56.749463,-36.346484],[-56.717383,-36.389063],[-56.698096,-36.426465],[-56.668262,-36.735254],[-56.672021,-36.85127],[-56.727148,-36.957715],[-57.087695,-37.446387],[-57.395752,-37.744629],[-57.507275,-37.909277],[-57.546973,-38.085645],[-57.645605,-38.169629],[-58.179199,-38.43584],[-59.007227,-38.67334],[-59.67627,-38.79668],[-59.82832,-38.838184],[-60.903955,-38.973926],[-61.112207,-38.992969],[-61.382861,-38.980859],[-61.602539,-38.998828],[-61.8479,-38.961816],[-62.066895,-38.919141],[-62.189258,-38.813281],[-62.334766,-38.800098],[-62.374463,-38.85293],[-62.303613,-38.988086],[-62.338086,-39.150586],[-62.295068,-39.243262],[-62.209082,-39.261816],[-62.126465,-39.309766],[-62.053662,-39.373828],[-62.179346,-39.380469],[-62.130566,-39.431543],[-62.076807,-39.461523],[-62.082764,-39.568359],[-62.131543,-39.825391],[-62.253955,-39.880469],[-62.286914,-39.895313],[-62.323975,-39.950684],[-62.401855,-40.196582],[-62.427002,-40.355957],[-62.393604,-40.458789],[-62.246338,-40.674609],[-62.301855,-40.814648],[-62.39502,-40.89082],[-62.797998,-41.047168],[-62.959033,-41.109668],[-63.212842,-41.152441],[-63.621777,-41.159766],[-63.772998,-41.15],[-64.123193,-41.007812],[-64.383447,-40.922461],[-64.621484,-40.854492],[-64.852979,-40.81377],[-64.819873,-40.793262],[-64.804395,-40.756543],[-64.869482,-40.73584],[-64.916895,-40.731348],[-65.069434,-40.805273],[-65.133398,-40.880664],[-65.151855,-40.946973],[-65.15498,-41.105664],[-65.127881,-41.23877],[-65.018262,-41.566895],[-65.007031,-41.745117],[-65.059082,-41.969922],[-64.986377,-42.102051],[-64.898047,-42.161816],[-64.699512,-42.220801],[-64.622461,-42.261035],[-64.537744,-42.25459],[-64.511719,-42.270215],[-64.524219,-42.299219],[-64.574121,-42.355957],[-64.570996,-42.416016],[-64.42041,-42.433789],[-64.2646,-42.42168],[-64.100879,-42.395117],[-64.062207,-42.353418],[-64.061182,-42.266113],[-64.25293,-42.250781],[-64.228516,-42.218262],[-64.083252,-42.182813],[-63.892871,-42.124609],[-63.795557,-42.113867],[-63.729492,-42.15293],[-63.684766,-42.188672],[-63.629883,-42.282715],[-63.595898,-42.406543],[-63.594434,-42.555566],[-63.617334,-42.695801],[-63.644482,-42.745703],[-63.69248,-42.805273],[-64.034766,-42.88125],[-64.130664,-42.861426],[-64.219922,-42.755566],[-64.247949,-42.646094],[-64.324268,-42.572266],[-64.487842,-42.513477],[-64.650488,-42.531445],[-64.811963,-42.633203],[-64.970703,-42.666309],[-65.026904,-42.758887],[-64.629199,-42.908984],[-64.441553,-42.950684],[-64.380371,-42.949219],[-64.319141,-42.968945],[-64.375684,-43.024609],[-64.432227,-43.05918],[-64.715234,-43.135547],[-64.839941,-43.188867],[-64.985547,-43.293555],[-65.189746,-43.52207],[-65.252344,-43.571875],[-65.283594,-43.62998],[-65.304688,-43.7875],[-65.238574,-44.04873],[-65.308398,-44.158203],[-65.265527,-44.279687],[-65.289844,-44.360742],[-65.361279,-44.477344],[-65.647607,-44.661426],[-65.69834,-44.796191],[-65.599121,-44.875586],[-65.605713,-44.94502],[-65.63877,-45.007812],[-65.757715,-45.007129],[-66.190137,-44.964746],[-66.347754,-45.033594],[-66.493604,-45.117578],[-66.533447,-45.157813],[-66.585059,-45.18291],[-66.882471,-45.227637],[-66.941406,-45.257324],[-67.257617,-45.577246],[-67.393018,-45.775586],[-67.556641,-45.970117],[-67.599561,-46.052539],[-67.608887,-46.166797],[-67.586084,-46.269531],[-67.563379,-46.34541],[-67.506445,-46.442773],[-67.386621,-46.553809],[-66.776855,-47.005859],[-66.650391,-47.045312],[-65.998535,-47.09375],[-65.853662,-47.156738],[-65.769092,-47.256738],[-65.738086,-47.344922],[-65.775391,-47.568359],[-65.814307,-47.638184],[-65.886328,-47.701562],[-66.040625,-47.783301],[-66.225244,-47.826758],[-66.172363,-47.857617],[-66.097363,-47.853223],[-65.934229,-47.826758],[-65.863672,-47.853223],[-65.810059,-47.941113],[-65.912158,-47.976758],[-65.943408,-48.019336],[-66.017187,-48.084277],[-66.393359,-48.342383],[-66.596289,-48.419531],[-66.782812,-48.522949],[-67.033105,-48.627734],[-67.130957,-48.687891],[-67.26333,-48.814258],[-67.466309,-48.951758],[-67.684863,-49.24668],[-67.693701,-49.304004],[-67.661963,-49.342187],[-67.783496,-49.858887],[-67.825977,-49.919629],[-67.913965,-49.984473],[-68.145654,-50.091406],[-68.257227,-50.10459],[-68.404639,-50.042676],[-68.487891,-49.97793],[-68.569287,-49.866992],[-68.667578,-49.752539],[-68.672656,-49.793457],[-68.638477,-49.862988],[-68.661621,-49.935742],[-68.912988,-49.96875],[-68.97959,-50.003027],[-68.752686,-49.987695],[-68.597949,-50.009473],[-68.532568,-50.036133],[-68.47373,-50.091406],[-68.421875,-50.15791],[-68.46543,-50.194727],[-68.589355,-50.225195],[-68.749854,-50.281152],[-68.939453,-50.382324],[-69.044775,-50.499121],[-69.090186,-50.583105],[-69.141406,-50.752539],[-69.15498,-50.864453],[-69.235156,-50.950586],[-69.358594,-51.028125],[-69.351758,-51.045801],[-69.267969,-51.006152],[-69.201025,-50.993652],[-69.143506,-51.096973],[-69.065723,-51.303516],[-69.02959,-51.446484],[-69.035303,-51.488965],[-69.058301,-51.547168],[-69.218066,-51.56123],[-69.360547,-51.559473],[-69.46543,-51.584473],[-69.409082,-51.610254],[-69.313037,-51.601074],[-69.180127,-51.662305],[-69.03252,-51.63623],[-68.965332,-51.677148],[-68.916797,-51.714648],[-68.69082,-52.013086],[-68.493506,-52.197559],[-68.39375,-52.307031],[-68.443359,-52.356641],[-68.460986,-52.29043],[-68.589795,-52.27334],[-68.715186,-52.255469],[-68.924561,-52.208105],[-69.206201,-52.136133],[-69.488428,-52.136133],[-69.712598,-52.075391],[-69.960254,-52.008203],[-70.482861,-52.002246],[-70.943164,-51.998145],[-71.414746,-51.993945],[-71.716602,-51.991309],[-71.918652,-51.989551],[-71.971094,-51.96416],[-71.953467,-51.880371],[-72.028418,-51.818652],[-72.136963,-51.744043],[-72.268994,-51.691113],[-72.334521,-51.620313],[-72.407666,-51.54082],[-72.366406,-51.470313],[-72.303223,-51.298926],[-72.301855,-51.22334],[-72.35918,-51.17041],[-72.376807,-51.09541],[-72.35918,-51.060156],[-72.307373,-51.033398],[-72.276318,-50.910254],[-72.300635,-50.789551],[-72.340234,-50.681836],[-72.392578,-50.634277],[-72.460156,-50.611719],[-72.509814,-50.60752],[-72.62041,-50.647656],[-72.803613,-50.637695],[-72.865918,-50.653125],[-72.955566,-50.696484],[-73.082373,-50.760352],[-73.15293,-50.738281],[-73.174512,-50.67002],[-73.221631,-50.610742],[-73.251611,-50.558496],[-73.27417,-50.472559],[-73.311719,-50.361914],[-73.386621,-50.231152],[-73.50127,-50.125293],[-73.507715,-50.030273],[-73.528906,-49.910938],[-73.47041,-49.794531],[-73.504541,-49.698047],[-73.57627,-49.58291],[-73.554199,-49.463867],[-73.483643,-49.397656],[-73.461572,-49.313867],[-73.135254,-49.300684],[-73.148877,-49.187988],[-73.09458,-49.096875],[-73.033643,-49.014355],[-72.981738,-48.976758],[-72.86543,-48.943945],[-72.728467,-48.896289],[-72.65127,-48.841602],[-72.614404,-48.792871],[-72.591748,-48.729688],[-72.585938,-48.6625],[-72.608398,-48.519336],[-72.582861,-48.475391],[-72.498145,-48.417383],[-72.354736,-48.36582],[-72.293018,-48.229102],[-72.32832,-48.110059],[-72.40791,-48.015918],[-72.509082,-47.97334],[-72.51792,-47.876367],[-72.472217,-47.78418],[-72.412598,-47.685547],[-72.341504,-47.57207],[-72.345947,-47.492676],[-72.28291,-47.446289],[-72.103418,-47.342773],[-72.041699,-47.241406],[-71.978516,-47.213867],[-71.90498,-47.20166],[-71.900537,-47.144336],[-71.954248,-47.0875],[-71.962988,-47.016016],[-71.956641,-46.936816],[-71.940234,-46.83125],[-71.856445,-46.791602],[-71.732715,-46.705859],[-71.699658,-46.651367],[-71.695215,-46.578418],[-71.731299,-46.427832],[-71.762109,-46.319824],[-71.777637,-46.27998],[-71.834131,-46.206738],[-71.875684,-46.160547],[-71.809277,-46.102734],[-71.684473,-46.041895],[-71.631543,-45.953711],[-71.680078,-45.878711],[-71.750635,-45.839063],[-71.772656,-45.724414],[-71.746191,-45.578906],[-71.693311,-45.534766],[-71.508105,-45.512695],[-71.49043,-45.437695],[-71.349316,-45.331934],[-71.35376,-45.230469],[-71.443457,-45.168262],[-71.531299,-45.067871],[-71.596289,-44.979199],[-71.812354,-44.930664],[-72.041699,-44.904199],[-72.07251,-44.82041],[-72.063721,-44.771875],[-71.957031,-44.791504],[-71.782812,-44.774414],[-71.65166,-44.77041],[-71.5604,-44.762012],[-71.455176,-44.749805],[-71.358154,-44.785156],[-71.261133,-44.763086],[-71.221484,-44.630762],[-71.159717,-44.560254],[-71.150879,-44.494043],[-71.212598,-44.441211],[-71.325732,-44.424902],[-71.82002,-44.383105],[-71.835059,-44.330176],[-71.830762,-44.241406],[-71.812109,-44.150781],[-71.812354,-44.106055],[-71.767187,-44.066699],[-71.716162,-43.984473],[-71.680078,-43.92959],[-71.715967,-43.858398],[-71.794727,-43.753223],[-71.737402,-43.704688],[-71.732764,-43.646777],[-71.750635,-43.590137],[-71.832422,-43.527148],[-71.90498,-43.440137],[-71.90498,-43.347559],[-71.820215,-43.322949],[-71.763867,-43.294629],[-71.750635,-43.237305],[-71.781494,-43.166797],[-71.898584,-43.145313],[-72.054688,-43.101953],[-72.102393,-43.065625],[-72.146436,-42.990039],[-72.113623,-42.776758],[-72.130029,-42.648242],[-72.143701,-42.577148],[-72.10542,-42.522461],[-72.053467,-42.473242],[-72.078125,-42.358496],[-72.124609,-42.29834],[-72.108203,-42.251855],[-72.064404,-42.205371],[-72.026123,-42.147949],[-71.993311,-42.134277],[-71.944092,-42.16709],[-71.860791,-42.147852],[-71.760937,-42.101465],[-71.75,-42.046777],[-71.77002,-41.968555],[-71.844482,-41.771973],[-71.911279,-41.650391],[-71.897607,-41.606641],[-71.871143,-41.560547],[-71.892187,-41.393359],[-71.885596,-41.292383],[-71.880713,-40.994629],[-71.873047,-40.892969],[-71.941357,-40.78916],[-71.932129,-40.691699],[-71.883789,-40.620605],[-71.838525,-40.524414],[-71.804639,-40.43916],[-71.769141,-40.400879],[-71.708984,-40.381738],[-71.695312,-40.335254],[-71.722656,-40.299707],[-71.800586,-40.244336],[-71.818311,-40.17666],[-71.801953,-40.124707],[-71.763672,-40.094629],[-71.704395,-40.094922],[-71.659766,-40.020801],[-71.647119,-39.929199],[-71.637891,-39.886816],[-71.67207,-39.833301],[-71.696826,-39.707031],[-71.719922,-39.635254],[-71.692578,-39.605176],[-71.654297,-39.594238],[-71.587012,-39.611133],[-71.539453,-39.602441],[-71.53125,-39.56416],[-71.525781,-39.523145],[-71.507764,-39.495215],[-71.465381,-39.402344],[-71.42002,-39.287207],[-71.409375,-39.205957],[-71.425586,-38.985645],[-71.401562,-38.935059],[-71.353174,-38.888867],[-71.285742,-38.84541],[-71.197266,-38.809375],[-71.087109,-38.75752],[-70.951611,-38.738477],[-70.896924,-38.681055],[-70.858643,-38.604492],[-70.847656,-38.541602],[-70.899658,-38.497852],[-70.967969,-38.445898],[-71.000488,-38.314844],[-71.018164,-38.193945],[-71.028174,-38.041211],[-71.096191,-37.909961],[-71.167578,-37.762305],[-71.186719,-37.631055],[-71.162842,-37.55918],[-71.134814,-37.445117],[-71.164893,-37.393262],[-71.200391,-37.300293],[-71.163477,-37.227441],[-71.118408,-37.114355],[-71.123828,-37.056934],[-71.159375,-36.920215],[-71.192187,-36.843652],[-71.159375,-36.761621],[-71.107422,-36.685059],[-71.066406,-36.644043],[-71.073242,-36.578027],[-71.055518,-36.52373],[-70.97793,-36.487305],[-70.905127,-36.419922],[-70.853174,-36.411719],[-70.790283,-36.411719],[-70.749268,-36.392578],[-70.732861,-36.340625],[-70.721924,-36.283203],[-70.621875,-36.211914],[-70.563379,-36.146387],[-70.456738,-36.132715],[-70.404785,-36.061719],[-70.403662,-35.970508],[-70.415723,-35.878516],[-70.380176,-35.771875],[-70.419727,-35.60918],[-70.415723,-35.523047],[-70.456738,-35.451953],[-70.448535,-35.375391],[-70.47041,-35.326172],[-70.532324,-35.30791],[-70.555176,-35.246875],[-70.525098,-35.216797],[-70.466602,-35.193652],[-70.393164,-35.146875],[-70.338135,-34.921777],[-70.312109,-34.85498],[-70.286768,-34.774512],[-70.289941,-34.732813],[-70.254687,-34.672656],[-70.210693,-34.58125],[-70.14126,-34.492871],[-70.101465,-34.432031],[-70.062988,-34.35],[-70.052051,-34.300781],[-70.002832,-34.27627],[-69.946338,-34.269922],[-69.879785,-34.254395],[-69.852441,-34.224316],[-69.857373,-34.180469],[-69.861523,-34.083594],[-69.881494,-33.929785],[-69.894336,-33.731348],[-69.882568,-33.600977],[-69.83877,-33.469727],[-69.797754,-33.398633],[-69.808691,-33.343945],[-69.819629,-33.283789],[-69.896191,-33.250977],[-69.969043,-33.279395],[-70.019824,-33.271484],[-70.084863,-33.201758],[-70.104004,-33.12793],[-70.093066,-33.026758],[-70.042139,-32.963672],[-70.021973,-32.88457],[-70.052051,-32.859961],[-70.116162,-32.807422],[-70.176953,-32.626074],[-70.169629,-32.47168],[-70.229785,-32.430664],[-70.257812,-32.309961],[-70.32002,-32.266699],[-70.344629,-32.176465],[-70.36377,-32.083496],[-70.355566,-32.042383],[-70.290918,-32.031055],[-70.254395,-31.957715],[-70.281738,-31.916602],[-70.330957,-31.881055],[-70.393848,-31.883789],[-70.450146,-31.841895],[-70.525635,-31.666406],[-70.585205,-31.569434],[-70.566406,-31.42793],[-70.554688,-31.317383],[-70.529053,-31.222852],[-70.51958,-31.148438],[-70.473096,-31.112793],[-70.429395,-31.129297],[-70.388379,-31.121094],[-70.350586,-31.060449],[-70.309082,-31.022656],[-70.311816,-30.992578],[-70.336426,-30.959766],[-70.348145,-30.902344],[-70.319238,-30.833984],[-70.269385,-30.677246],[-70.193945,-30.504688],[-70.161426,-30.440234],[-70.169629,-30.385547],[-70.153223,-30.360938],[-70.102002,-30.388281],[-69.956348,-30.358203],[-69.907129,-30.281641],[-69.888037,-30.213281],[-69.844287,-30.175],[-69.863379,-30.120313],[-69.923535,-30.103906],[-69.959961,-30.07832],[-69.945459,-30.016406],[-69.924121,-29.874023],[-69.927637,-29.769141],[-69.982617,-29.54541],[-70.026807,-29.324023],[-69.995605,-29.25],[-69.900342,-29.148828],[-69.827881,-29.103223],[-69.814844,-29.045508],[-69.743164,-28.783887],[-69.734912,-28.641113],[-69.687891,-28.562012],[-69.656934,-28.413574],[-69.527148,-28.285645],[-69.488867,-28.200879],[-69.436914,-28.192676],[-69.40957,-28.165332],[-69.340723,-28.070801],[-69.251221,-27.973633],[-69.174414,-27.924707],[-69.155273,-27.848145],[-69.118506,-27.743555],[-69.042187,-27.57002],[-68.999414,-27.449023],[-68.941992,-27.405176],[-68.875098,-27.24668],[-68.846338,-27.153711],[-68.769775,-27.11543],[-68.709619,-27.104492],[-68.652197,-27.14834],[-68.59209,-27.140039],[-68.537354,-27.085352],[-68.405371,-27.048145],[-68.345996,-27.02793],[-68.318652,-26.973242],[-68.318652,-26.877539],[-68.37334,-26.806445],[-68.485107,-26.670313],[-68.581152,-26.518359],[-68.591602,-26.47041],[-68.592187,-26.418066],[-68.575781,-26.351953],[-68.529834,-26.276953],[-68.414502,-26.153711],[-68.426758,-26.06543],[-68.51084,-25.741016],[-68.541895,-25.651563],[-68.600293,-25.485645],[-68.59209,-25.42002],[-68.54082,-25.236719],[-68.496338,-25.162988],[-68.430713,-25.149316],[-68.395215,-25.124707],[-68.384229,-25.091895],[-68.428027,-25.050977],[-68.447119,-24.998926],[-68.466309,-24.925195],[-68.527051,-24.899219],[-68.562012,-24.837695],[-68.562012,-24.747363],[-68.507275,-24.629785],[-68.447119,-24.596973],[-68.422559,-24.545117],[-68.358105,-24.497266],[-68.299512,-24.460352],[-68.250293,-24.391992],[-68.047363,-24.308301],[-67.88623,-24.243359],[-67.571777,-24.118945],[-67.356201,-24.033789],[-67.335596,-23.974805],[-67.319141,-23.934668],[-67.219141,-23.633984],[-67.089746,-23.245117],[-67.008789,-23.001367],[-67.194873,-22.82168],[-67.161914,-22.773828],[-67.05542,-22.650879],[-67.033545,-22.552246],[-66.991113,-22.509863],[-66.800293,-22.409668],[-66.76748,-22.343066],[-66.750635,-22.269336],[-66.711719,-22.216309],[-66.639014,-22.205371],[-66.506982,-22.158398],[-66.365186,-22.11377],[-66.322461,-22.053125],[-66.282129,-21.947461],[-66.247607,-21.830469],[-66.220166,-21.802539],[-66.174658,-21.805664],[-66.098584,-21.835059],[-66.058594,-21.879492],[-65.860156,-22.019727],[-65.771045,-22.099609],[-65.686182,-22.110254],[-65.518799,-22.094531],[-65.484863,-22.098145],[-65.057812,-22.102734],[-64.992627,-22.109668],[-64.843066,-22.143945],[-64.758643,-22.171289],[-64.700098,-22.185547],[-64.605518,-22.228809],[-64.523633,-22.371582],[-64.477734,-22.485352],[-64.445508,-22.585352],[-64.373975,-22.761035],[-64.325293,-22.827637],[-64.30791,-22.795313],[-64.266406,-22.60332],[-64.209082,-22.491309],[-64.131836,-22.36582],[-63.976123,-22.072559],[-63.92168,-22.028613],[-63.861035,-22.007227],[-63.818652,-22.005469],[-63.775586,-22.027246],[-63.716943,-22.027539],[-63.675342,-22.004297],[-63.267187,-22.000586],[-62.843359,-21.997266],[-62.834277,-21.999121],[-62.815088,-22.049609],[-62.74458,-22.159863],[-62.665283,-22.217969],[-62.650977,-22.233691],[-62.625684,-22.261523],[-62.625977,-22.29043],[-62.541553,-22.349609],[-62.37251,-22.43916],[-62.21416,-22.612402],[-62.066602,-22.869434],[-61.928027,-23.059277],[-61.798535,-23.182031],[-61.679492,-23.26875],[-61.570996,-23.319434],[-61.513037,-23.360449],[-61.505518,-23.391992],[-61.403955,-23.45752],[-61.208398,-23.557031],[-61.084717,-23.656445],[-61.03291,-23.755664],[-60.839844,-23.858105],[-60.505371,-23.963574],[-60.262207,-24.013965],[-60.110303,-24.00918],[-59.89248,-24.093555],[-59.608594,-24.266797],[-59.4354,-24.387012],[-59.372949,-24.453906],[-59.187256,-24.562305],[-58.724023,-24.786621],[-58.519629,-24.842871],[-58.422803,-24.894141],[-58.365381,-24.959277],[-58.308691,-24.979102],[-58.252783,-24.953809],[-58.136475,-24.977148],[-57.959814,-25.049219],[-57.82168,-25.136426],[-57.643896,-25.328418],[-57.587158,-25.405078],[-57.563135,-25.47373],[-57.57168,-25.53418],[-57.62583,-25.59873],[-57.725488,-25.667188],[-57.754785,-25.69707],[-57.75708,-25.725977],[-57.782471,-25.783691],[-57.865234,-25.906934],[-57.88623,-25.964258],[-57.890625,-26.006543],[-57.943115,-26.05293],[-58.082422,-26.138574],[-58.111133,-26.180176],[-58.118066,-26.224902],[-58.135645,-26.251465],[-58.154687,-26.262598],[-58.181494,-26.307422],[-58.203027,-26.381445],[-58.205176,-26.476562],[-58.187939,-26.592578],[-58.191309,-26.62998],[-58.22207,-26.65],[-58.239355,-26.676855],[-58.245557,-26.731055],[-58.27168,-26.770703],[-58.317676,-26.795898],[-58.334668,-26.824902],[-58.322559,-26.857617],[-58.356445,-26.890039],[-58.436328,-26.921973],[-58.485254,-26.968457],[-58.503223,-27.029492],[-58.547705,-27.083984],[-58.618604,-27.132129],[-58.641748,-27.196094],[-58.604834,-27.314355],[-58.168262,-27.273438],[-57.812207,-27.316602],[-57.39126,-27.430469],[-57.111816,-27.470117],[-56.973975,-27.435742],[-56.871729,-27.440625],[-56.805176,-27.484668],[-56.715723,-27.49375],[-56.603369,-27.467871],[-56.510547,-27.487891],[-56.437158,-27.553809],[-56.370508,-27.537402],[-56.310547,-27.43877],[-56.241699,-27.366797],[-56.164062,-27.321484],[-56.067334,-27.307715],[-55.951465,-27.325684],[-55.859033,-27.361914],[-55.78999,-27.416406],[-55.714648,-27.414844],[-55.63291,-27.357129],[-55.593799,-27.288086],[-55.597266,-27.207617],[-55.564893,-27.15],[-55.496729,-27.115332],[-55.450635,-27.068359],[-55.42666,-27.009277],[-55.345801,-26.973145],[-55.208008,-26.960156],[-55.135937,-26.931152],[-55.129639,-26.886035],[-55.088867,-26.844531],[-55.013623,-26.806641],[-54.962158,-26.759375],[-54.934473,-26.702539],[-54.888916,-26.666797],[-54.825488,-26.652246],[-54.755078,-26.53291],[-54.677734,-26.308789],[-54.631934,-26.005762],[-54.615869,-25.576074],[-54.537842,-25.576465],[-54.501514,-25.608301],[-54.443945,-25.625],[-54.38335,-25.588672],[-54.331885,-25.571875],[-54.250098,-25.57041],[-54.206152,-25.52959],[-54.15459,-25.523047],[-54.119238,-25.545215],[-54.08501,-25.571875],[-54.012305,-25.57793],[-53.954785,-25.647656],[-53.891162,-25.668848],[-53.864209,-25.748828],[-53.823242,-25.95957],[-53.746924,-26.083691],[-53.671289,-26.225098],[-53.668555,-26.288184],[-53.710938,-26.351855],[-53.718164,-26.443164],[-53.74458,-26.666504],[-53.75332,-26.748633],[-53.727148,-26.804688],[-53.717285,-26.882812],[-53.758496,-26.97832],[-53.838184,-27.121094],[-53.915625,-27.15957],[-53.935352,-27.161133],[-54.040137,-27.24375],[-54.113818,-27.274707],[-54.156445,-27.253809],[-54.205225,-27.289648],[-54.260156,-27.382031],[-54.327002,-27.423535],[-54.448145,-27.446484],[-54.484326,-27.457324],[-54.554932,-27.454102],[-54.61543,-27.477148],[-54.665869,-27.526563],[-54.719727,-27.544922],[-54.7771,-27.53252],[-54.829102,-27.550586],[-54.875732,-27.599219],[-54.902783,-27.651953],[-54.910205,-27.708594],[-54.955908,-27.747168],[-55.039941,-27.767773],[-55.068994,-27.796289],[-55.063867,-27.835938],[-55.101514,-27.866797],[-55.24375,-27.898828],[-55.346484,-27.955957],[-55.409814,-28.037793],[-55.47666,-28.089355],[-55.582373,-28.120996],[-55.725488,-28.204102],[-55.745996,-28.255469],[-55.691504,-28.302832],[-55.671973,-28.344922],[-55.687256,-28.381641],[-55.731982,-28.386621],[-55.806055,-28.359766],[-55.858887,-28.354199],[-55.890527,-28.37002],[-55.90542,-28.399609],[-55.903662,-28.443262],[-55.930176,-28.472852],[-55.984912,-28.488574],[-56.019629,-28.524609],[-56.034229,-28.580859],[-56.102881,-28.651758],[-56.225537,-28.737207],[-56.322363,-28.852441],[-56.393262,-28.997266],[-56.475977,-29.09248],[-56.570703,-29.138086],[-56.63584,-29.203027],[-56.671533,-29.287305],[-56.772461,-29.417871],[-56.938623,-29.594824],[-57.089355,-29.716211],[-57.224658,-29.782129],[-57.300684,-29.856543],[-57.31748,-29.939453],[-57.405225,-30.033887],[-57.563867,-30.139941],[-57.608887,-30.187793]]],[[[-68.653223,-54.853613],[-68.64751,-54.627832],[-68.639795,-54.324023],[-68.638232,-54.05293],[-68.63667,-53.788867],[-68.635059,-53.51543],[-68.633447,-53.241895],[-68.631689,-52.949512],[-68.629932,-52.652637],[-68.571191,-52.694922],[-68.33877,-52.900098],[-68.278223,-52.983984],[-68.240137,-53.081836],[-68.333008,-53.019629],[-68.431152,-53.055273],[-68.479492,-53.11377],[-68.520801,-53.177246],[-68.520508,-53.221875],[-68.488525,-53.260938],[-68.393115,-53.294922],[-68.161133,-53.306445],[-68.144092,-53.319043],[-68.008496,-53.564063],[-67.940283,-53.61875],[-67.861084,-53.662207],[-67.678125,-53.787109],[-67.502588,-53.921973],[-67.294238,-54.049805],[-67.069482,-54.148047],[-66.865137,-54.222559],[-66.670068,-54.313574],[-66.462012,-54.441016],[-66.235645,-54.533496],[-65.992578,-54.598926],[-65.74707,-54.653418],[-65.369287,-54.632129],[-65.251953,-54.638086],[-65.179004,-54.678125],[-65.252344,-54.788867],[-65.345996,-54.87793],[-65.471143,-54.914648],[-65.60332,-54.928125],[-65.722754,-54.926367],[-65.841992,-54.909961],[-65.95376,-54.919336],[-66.060645,-54.956738],[-66.172021,-54.975293],[-66.286768,-54.977734],[-66.398682,-55.009375],[-66.511133,-55.032129],[-66.627686,-55.013281],[-66.930469,-54.924902],[-67.1271,-54.903809],[-67.793262,-54.868652],[-68.007129,-54.848438],[-68.220117,-54.817578],[-68.331689,-54.816309],[-68.491016,-54.83623],[-68.618652,-54.833789],[-68.653223,-54.853613]]],[[[-64.54917,-54.716211],[-64.438818,-54.739355],[-64.220508,-54.721973],[-64.105322,-54.72168],[-64.054932,-54.729883],[-64.032422,-54.742383],[-63.881934,-54.722949],[-63.81543,-54.725098],[-63.832568,-54.767969],[-63.97124,-54.810645],[-64.02832,-54.792578],[-64.3229,-54.796484],[-64.453271,-54.840332],[-64.508691,-54.839941],[-64.637354,-54.902539],[-64.731445,-54.862988],[-64.757324,-54.826562],[-64.689209,-54.774707],[-64.625098,-54.773633],[-64.581348,-54.752734],[-64.54917,-54.716211]]],[[[-61.875781,-39.171875],[-61.865967,-39.234863],[-61.918018,-39.227441],[-62.041602,-39.166895],[-62.083301,-39.110156],[-62.093018,-39.08623],[-61.96665,-39.112207],[-61.907129,-39.135645],[-61.875781,-39.171875]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Antigua and Barbuda","SOV_A3":"ATG","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Antigua and Barbuda","ADM0_A3":"ATG","GEOU_DIF":0,"GEOUNIT":"Antigua and Barbuda","GU_A3":"ATG","SU_DIF":0,"SUBUNIT":"Antigua and Barbuda","SU_A3":"ATG","BRK_DIFF":0,"NAME":"Antigua and Barb.","NAME_LONG":"Antigua and Barbuda","BRK_A3":"ATG","BRK_NAME":"Antigua and Barb.","BRK_GROUP":null,"ABBREV":"Ant.B.","POSTAL":"AG","FORMAL_EN":"Antigua and Barbuda","FORMAL_FR":null,"NAME_CIAWF":"Antigua and Barbuda","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Antigua and Barbuda","NAME_ALT":null,"MAPCOLOR7":2,"MAPCOLOR8":2,"MAPCOLOR9":5,"MAPCOLOR13":5,"POP_EST":97118,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":1661,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"AC","ISO_A2":"AG","ISO_A2_EH":"AG","ISO_A3":"ATG","ISO_A3_EH":"ATG","ISO_N3":"028","ISO_N3_EH":"028","UN_A3":"028","WB_A2":"AG","WB_A3":"ATG","WOE_ID":23424737,"WOE_ID_EH":23424737,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ATG","ADM0_DIFF":null,"ADM0_TLC":"ATG","ADM0_A3_US":"ATG","ADM0_A3_FR":"ATG","ADM0_A3_RU":"ATG","ADM0_A3_ES":"ATG","ADM0_A3_CN":"ATG","ADM0_A3_TW":"ATG","ADM0_A3_IN":"ATG","ADM0_A3_NP":"ATG","ADM0_A3_PK":"ATG","ADM0_A3_DE":"ATG","ADM0_A3_GB":"ATG","ADM0_A3_BR":"ATG","ADM0_A3_IL":"ATG","ADM0_A3_PS":"ATG","ADM0_A3_SA":"ATG","ADM0_A3_EG":"ATG","ADM0_A3_MA":"ATG","ADM0_A3_PT":"ATG","ADM0_A3_AR":"ATG","ADM0_A3_JP":"ATG","ADM0_A3_KO":"ATG","ADM0_A3_VN":"ATG","ADM0_A3_TR":"ATG","ADM0_A3_ID":"ATG","ADM0_A3_PL":"ATG","ADM0_A3_GR":"ATG","ADM0_A3_IT":"ATG","ADM0_A3_NL":"ATG","ADM0_A3_SE":"ATG","ADM0_A3_BD":"ATG","ADM0_A3_UA":"ATG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":17,"LONG_LEN":19,"ABBREV_LEN":6,"TINY":4,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":9.5,"LABEL_X":-61.790612,"LABEL_Y":17.352249,"NE_ID":1159320345,"WIKIDATAID":"Q781","NAME_AR":"أنتيغوا وباربودا","NAME_BN":"অ্যান্টিগুয়া ও বার্বুডা","NAME_DE":"Antigua und Barbuda","NAME_EN":"Antigua and Barbuda","NAME_ES":"Antigua y Barbuda","NAME_FA":"آنتیگوا و باربودا","NAME_FR":"Antigua-et-Barbuda","NAME_EL":"Αντίγκουα και Μπαρμπούντα","NAME_HE":"אנטיגואה וברבודה","NAME_HI":"अण्टीगुआ और बारबूडा","NAME_HU":"Antigua és Barbuda","NAME_ID":"Antigua dan Barbuda","NAME_IT":"Antigua e Barbuda","NAME_JA":"アンティグア・バーブーダ","NAME_KO":"앤티가 바부다","NAME_NL":"Antigua en Barbuda","NAME_PL":"Antigua i Barbuda","NAME_PT":"Antígua e Barbuda","NAME_RU":"Антигуа и Барбуда","NAME_SV":"Antigua och Barbuda","NAME_TR":"Antigua ve Barbuda","NAME_UK":"Антигуа і Барбуда","NAME_UR":"اینٹیگوا و باربوڈا","NAME_VI":"Antigua và Barbuda","NAME_ZH":"安提瓜和巴布达","NAME_ZHT":"安地卡及巴布達","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-61.887109,16.997168,-61.686035,17.714062],"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.716064,17.037012],[-61.748145,16.997168],[-61.859668,17.01333],[-61.882031,17.063135],[-61.887109,17.098145],[-61.817285,17.168945],[-61.738574,17.138477],[-61.708203,17.105078],[-61.686035,17.098438],[-61.686475,17.069824],[-61.694971,17.048926],[-61.716064,17.037012]]],[[[-61.747119,17.574951],[-61.762012,17.548682],[-61.843799,17.596143],[-61.86875,17.685449],[-61.866162,17.704297],[-61.852441,17.714062],[-61.819922,17.696875],[-61.776758,17.690479],[-61.749609,17.661328],[-61.747119,17.574951]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Angola","SOV_A3":"AGO","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Angola","ADM0_A3":"AGO","GEOU_DIF":0,"GEOUNIT":"Angola","GU_A3":"AGO","SU_DIF":0,"SUBUNIT":"Angola","SU_A3":"AGO","BRK_DIFF":0,"NAME":"Angola","NAME_LONG":"Angola","BRK_A3":"AGO","BRK_NAME":"Angola","BRK_GROUP":null,"ABBREV":"Ang.","POSTAL":"AO","FORMAL_EN":"People's Republic of Angola","FORMAL_FR":null,"NAME_CIAWF":"Angola","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Angola","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":2,"MAPCOLOR9":6,"MAPCOLOR13":1,"POP_EST":31825295,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":88815,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"3. Upper middle income","FIPS_10":"AO","ISO_A2":"AO","ISO_A2_EH":"AO","ISO_A3":"AGO","ISO_A3_EH":"AGO","ISO_N3":"024","ISO_N3_EH":"024","UN_A3":"024","WB_A2":"AO","WB_A3":"AGO","WOE_ID":23424745,"WOE_ID_EH":23424745,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"AGO","ADM0_DIFF":null,"ADM0_TLC":"AGO","ADM0_A3_US":"AGO","ADM0_A3_FR":"AGO","ADM0_A3_RU":"AGO","ADM0_A3_ES":"AGO","ADM0_A3_CN":"AGO","ADM0_A3_TW":"AGO","ADM0_A3_IN":"AGO","ADM0_A3_NP":"AGO","ADM0_A3_PK":"AGO","ADM0_A3_DE":"AGO","ADM0_A3_GB":"AGO","ADM0_A3_BR":"AGO","ADM0_A3_IL":"AGO","ADM0_A3_PS":"AGO","ADM0_A3_SA":"AGO","ADM0_A3_EG":"AGO","ADM0_A3_MA":"AGO","ADM0_A3_PT":"AGO","ADM0_A3_AR":"AGO","ADM0_A3_JP":"AGO","ADM0_A3_KO":"AGO","ADM0_A3_VN":"AGO","ADM0_A3_TR":"AGO","ADM0_A3_ID":"AGO","ADM0_A3_PL":"AGO","ADM0_A3_GR":"AGO","ADM0_A3_IT":"AGO","ADM0_A3_NL":"AGO","ADM0_A3_SE":"AGO","ADM0_A3_BD":"AGO","ADM0_A3_UA":"AGO","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Middle Africa","REGION_WB":"Sub-Saharan Africa","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7,"LABEL_X":17.984249,"LABEL_Y":-12.182762,"NE_ID":1159320323,"WIKIDATAID":"Q916","NAME_AR":"أنغولا","NAME_BN":"অ্যাঙ্গোলা","NAME_DE":"Angola","NAME_EN":"Angola","NAME_ES":"Angola","NAME_FA":"آنگولا","NAME_FR":"Angola","NAME_EL":"Ανγκόλα","NAME_HE":"אנגולה","NAME_HI":"अंगोला","NAME_HU":"Angola","NAME_ID":"Angola","NAME_IT":"Angola","NAME_JA":"アンゴラ","NAME_KO":"앙골라","NAME_NL":"Angola","NAME_PL":"Angola","NAME_PT":"Angola","NAME_RU":"Ангола","NAME_SV":"Angola","NAME_TR":"Angola","NAME_UK":"Ангола","NAME_UR":"انگولا","NAME_VI":"Angola","NAME_ZH":"安哥拉","NAME_ZHT":"安哥拉","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[11.743066,-18.019727,24.04668,-4.428906],"geometry":{"type":"MultiPolygon","coordinates":[[[[13.072754,-4.634766],[13.057324,-4.651074],[12.947461,-4.695312],[12.829688,-4.736621],[12.674805,-4.905371],[12.596191,-4.978418],[12.573535,-4.996582],[12.502734,-5.036914],[12.451465,-5.071484],[12.453223,-5.090625],[12.487402,-5.112695],[12.522363,-5.148926],[12.518945,-5.424609],[12.503711,-5.695801],[12.48457,-5.71875],[12.386035,-5.727734],[12.255273,-5.746484],[12.213672,-5.758691],[12.199023,-5.731934],[12.155469,-5.632715],[12.180078,-5.538672],[12.206543,-5.468262],[12.177148,-5.324805],[12.110547,-5.197168],[12.039941,-5.035156],[12.018359,-5.004297],[12.077539,-4.952148],[12.16709,-4.837695],[12.204297,-4.778613],[12.30791,-4.765527],[12.34668,-4.724121],[12.374023,-4.657715],[12.38457,-4.619141],[12.501465,-4.5875],[12.641699,-4.531152],[12.719434,-4.469727],[12.798242,-4.430566],[12.848145,-4.428906],[12.881055,-4.445117],[12.971387,-4.551758],[13.048047,-4.619238],[13.072754,-4.634766]]],[[[23.966504,-10.871777],[23.988281,-11.002832],[24.010059,-11.184766],[24.025586,-11.315625],[24.041406,-11.374121],[24.04668,-11.405371],[24.029297,-11.43916],[24.014648,-11.517676],[23.986816,-11.587207],[23.970996,-11.63584],[23.983887,-11.725],[23.973438,-11.85293],[23.962305,-11.987891],[23.958887,-12.117773],[23.996484,-12.350684],[23.991309,-12.422168],[23.944727,-12.54375],[23.909375,-12.636133],[23.886523,-12.743262],[23.882422,-12.799023],[23.968066,-12.956934],[23.962988,-12.988477],[23.897461,-12.998242],[23.843164,-13.000977],[23.63584,-13.000977],[23.338672,-13.000977],[23.041504,-13.000977],[22.744336,-13.000977],[22.470996,-13.000977],[22.20957,-13.000977],[21.978906,-13.000977],[21.979004,-13.156836],[21.979102,-13.477734],[21.979102,-13.79873],[21.979297,-14.119629],[21.979395,-14.440527],[21.979492,-14.761426],[21.97959,-15.082324],[21.979688,-15.403223],[21.979785,-15.724121],[21.979785,-15.955566],[22.040234,-16.262793],[22.150684,-16.597168],[22.193945,-16.628125],[22.305078,-16.689551],[22.459473,-16.815137],[22.545996,-16.910254],[22.721973,-17.075293],[22.955859,-17.285742],[23.181641,-17.474414],[23.380664,-17.640625],[23.068262,-17.698828],[22.624023,-17.781641],[22.324219,-17.8375],[21.96084,-17.905176],[21.718457,-17.947754],[21.416895,-18.000684],[21.36875,-17.999512],[21.287891,-17.962988],[21.113477,-17.955762],[20.908301,-18.006055],[20.745508,-18.019727],[20.625098,-17.99668],[20.507617,-17.952539],[20.392969,-17.887402],[20.194336,-17.863672],[19.911816,-17.881348],[19.639355,-17.868652],[19.377148,-17.825488],[19.189453,-17.808496],[19.076465,-17.817676],[18.955273,-17.803516],[18.825977,-17.766309],[18.718066,-17.703223],[18.588184,-17.57002],[18.486621,-17.442773],[18.460352,-17.424609],[18.428223,-17.405176],[18.396387,-17.399414],[18.108789,-17.395996],[17.835352,-17.392773],[17.678809,-17.392578],[17.296289,-17.391992],[16.913672,-17.391406],[16.531055,-17.39082],[16.148438,-17.390234],[15.76582,-17.389648],[15.383203,-17.38916],[15.000586,-17.388574],[14.617969,-17.387988],[14.414746,-17.387695],[14.225879,-17.397754],[14.01748,-17.408887],[13.987402,-17.404199],[13.937988,-17.38877],[13.904199,-17.360742],[13.791992,-17.288379],[13.694336,-17.233496],[13.561719,-17.141211],[13.475977,-17.040039],[13.403711,-17.007812],[13.275684,-16.989551],[13.179492,-16.97168],[13.101172,-16.967676],[12.963184,-17.01543],[12.859277,-17.062598],[12.785156,-17.108203],[12.656543,-17.160547],[12.548145,-17.212695],[12.359277,-17.205859],[12.318457,-17.213379],[12.213379,-17.209961],[12.114355,-17.164551],[12.013965,-17.168555],[11.902539,-17.226562],[11.743066,-17.249219],[11.780078,-16.871289],[11.818945,-16.704102],[11.819922,-16.504297],[11.796973,-15.986426],[11.769434,-15.915332],[11.750879,-15.831934],[11.849707,-15.768359],[11.899902,-15.719824],[11.967871,-15.633984],[12.016113,-15.513672],[12.073242,-15.248242],[12.280469,-14.6375],[12.378906,-14.039062],[12.503711,-13.755469],[12.550488,-13.437793],[12.897656,-13.027734],[12.983203,-12.775684],[13.162695,-12.652148],[13.416992,-12.52041],[13.597949,-12.286133],[13.685547,-12.123828],[13.785352,-11.812793],[13.784277,-11.487988],[13.847461,-11.054395],[13.833594,-10.929688],[13.738965,-10.757129],[13.721387,-10.633594],[13.633496,-10.512305],[13.539453,-10.420703],[13.49541,-10.257129],[13.332227,-9.998926],[13.2875,-9.826758],[13.209375,-9.703223],[13.196875,-9.550684],[13.155664,-9.389648],[13.075977,-9.230371],[12.998535,-9.048047],[12.998535,-8.991016],[13.046777,-8.922266],[13.092773,-8.899707],[13.077246,-8.934277],[13.046582,-8.975195],[13.053809,-9.006836],[13.358984,-8.687207],[13.37832,-8.624707],[13.368066,-8.554785],[13.366406,-8.469238],[13.378516,-8.369727],[13.09082,-7.780176],[12.862305,-7.231836],[12.823438,-6.954785],[12.521289,-6.590332],[12.402148,-6.353418],[12.334277,-6.187305],[12.283301,-6.124316],[12.302539,-6.092578],[12.380371,-6.084277],[12.553516,-6.045898],[12.790625,-6.003906],[13.009766,-5.907617],[13.068164,-5.864844],[13.184375,-5.85625],[13.302637,-5.881836],[13.346484,-5.863379],[13.371484,-5.861816],[13.649023,-5.861719],[13.764551,-5.855176],[13.978516,-5.857227],[14.11377,-5.865137],[14.19082,-5.875977],[14.398633,-5.892676],[14.65791,-5.888867],[14.749414,-5.880078],[15.089355,-5.874512],[15.425,-5.868848],[15.726953,-5.863867],[16.060156,-5.864941],[16.315234,-5.865625],[16.431445,-5.900195],[16.537109,-5.96582],[16.585156,-6.025293],[16.608008,-6.051563],[16.639551,-6.114551],[16.697266,-6.164258],[16.717773,-6.241406],[16.700977,-6.345996],[16.709375,-6.47168],[16.742969,-6.618457],[16.813086,-6.772559],[16.919434,-6.933984],[16.96582,-7.062109],[16.952051,-7.157031],[16.984766,-7.257422],[17.06377,-7.363086],[17.121582,-7.419043],[17.155078,-7.461328],[17.24502,-7.62334],[17.411328,-7.881934],[17.536035,-8.075879],[17.57959,-8.099023],[17.643359,-8.090723],[17.778809,-8.071387],[17.913086,-8.067676],[18.008789,-8.107617],[18.047168,-8.100781],[18.191504,-8.023828],[18.334863,-8.000293],[18.484668,-7.968555],[18.562695,-7.935938],[18.653418,-7.936035],[18.89834,-7.998145],[18.944434,-8.001465],[19.142676,-8.001465],[19.34082,-7.966602],[19.369922,-7.706543],[19.37168,-7.655078],[19.419336,-7.557324],[19.479883,-7.472168],[19.487402,-7.390723],[19.483789,-7.279492],[19.527637,-7.144434],[19.660352,-7.037109],[19.875195,-6.986328],[19.997461,-6.976465],[20.190039,-6.946289],[20.482227,-6.91582],[20.590039,-6.919922],[20.59873,-6.935156],[20.536914,-7.121777],[20.53584,-7.182813],[20.558398,-7.244434],[20.607813,-7.277734],[20.910938,-7.281445],[21.190332,-7.284961],[21.51084,-7.29668],[21.751074,-7.305469],[21.781641,-7.314648],[21.806055,-7.328613],[21.841602,-7.420996],[21.833594,-7.60166],[21.780078,-7.86543],[21.800879,-8.111914],[21.895898,-8.341113],[21.905371,-8.693359],[21.871875,-8.903516],[21.829492,-9.168457],[21.813184,-9.46875],[21.856641,-9.594238],[21.948633,-9.725586],[22.08916,-9.862793],[22.197754,-10.040625],[22.274512,-10.259082],[22.302441,-10.39668],[22.281641,-10.45332],[22.283203,-10.551563],[22.307031,-10.691309],[22.280469,-10.783984],[22.203516,-10.829492],[22.17793,-10.892285],[22.216699,-11.012695],[22.226172,-11.121973],[22.256641,-11.163672],[22.278809,-11.194141],[22.314941,-11.198633],[22.392969,-11.159473],[22.486133,-11.086719],[22.561035,-11.055859],[22.666504,-11.059766],[22.814746,-11.080273],[23.07627,-11.087891],[23.156738,-11.074805],[23.400195,-10.976465],[23.463965,-10.969336],[23.559961,-10.978613],[23.696387,-11.007617],[23.833887,-11.013672],[23.901172,-10.983203],[23.907324,-10.943457],[23.928711,-10.891504],[23.966504,-10.871777]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Andorra","SOV_A3":"AND","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Andorra","ADM0_A3":"AND","GEOU_DIF":0,"GEOUNIT":"Andorra","GU_A3":"AND","SU_DIF":0,"SUBUNIT":"Andorra","SU_A3":"AND","BRK_DIFF":0,"NAME":"Andorra","NAME_LONG":"Andorra","BRK_A3":"AND","BRK_NAME":"Andorra","BRK_GROUP":null,"ABBREV":"And.","POSTAL":"AND","FORMAL_EN":"Principality of Andorra","FORMAL_FR":null,"NAME_CIAWF":"Andorra","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Andorra","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":8,"POP_EST":77142,"POP_RANK":8,"POP_YEAR":2019,"GDP_MD":3154,"GDP_YEAR":2019,"ECONOMY":"2. Developed region: nonG7","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"AN","ISO_A2":"AD","ISO_A2_EH":"AD","ISO_A3":"AND","ISO_A3_EH":"AND","ISO_N3":"020","ISO_N3_EH":"020","UN_A3":"020","WB_A2":"AD","WB_A3":"ADO","WOE_ID":23424744,"WOE_ID_EH":23424744,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"AND","ADM0_DIFF":null,"ADM0_TLC":"AND","ADM0_A3_US":"AND","ADM0_A3_FR":"AND","ADM0_A3_RU":"AND","ADM0_A3_ES":"AND","ADM0_A3_CN":"AND","ADM0_A3_TW":"AND","ADM0_A3_IN":"AND","ADM0_A3_NP":"AND","ADM0_A3_PK":"AND","ADM0_A3_DE":"AND","ADM0_A3_GB":"AND","ADM0_A3_BR":"AND","ADM0_A3_IL":"AND","ADM0_A3_PS":"AND","ADM0_A3_SA":"AND","ADM0_A3_EG":"AND","ADM0_A3_MA":"AND","ADM0_A3_PT":"AND","ADM0_A3_AR":"AND","ADM0_A3_JP":"AND","ADM0_A3_KO":"AND","ADM0_A3_VN":"AND","ADM0_A3_TR":"AND","ADM0_A3_ID":"AND","ADM0_A3_PL":"AND","ADM0_A3_GR":"AND","ADM0_A3_IT":"AND","ADM0_A3_NL":"AND","ADM0_A3_SE":"AND","ADM0_A3_BD":"AND","ADM0_A3_UA":"AND","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":5,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":1.539409,"LABEL_Y":42.547643,"NE_ID":1159320327,"WIKIDATAID":"Q228","NAME_AR":"أندورا","NAME_BN":"অ্যান্ডোরা","NAME_DE":"Andorra","NAME_EN":"Andorra","NAME_ES":"Andorra","NAME_FA":"آندورا","NAME_FR":"Andorre","NAME_EL":"Ανδόρρα","NAME_HE":"אנדורה","NAME_HI":"अण्डोरा","NAME_HU":"Andorra","NAME_ID":"Andorra","NAME_IT":"Andorra","NAME_JA":"アンドラ","NAME_KO":"안도라","NAME_NL":"Andorra","NAME_PL":"Andora","NAME_PT":"Andorra","NAME_RU":"Андорра","NAME_SV":"Andorra","NAME_TR":"Andorra","NAME_UK":"Андорра","NAME_UR":"انڈورا","NAME_VI":"Andorra","NAME_ZH":"安道尔","NAME_ZHT":"安道爾","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[1.414844,42.434473,1.740234,42.642725],"geometry":{"type":"Polygon","coordinates":[[[1.706055,42.50332],[1.678516,42.49668],[1.586426,42.455957],[1.534082,42.441699],[1.48623,42.434473],[1.448828,42.437451],[1.428125,42.461328],[1.430273,42.497852],[1.421973,42.530811],[1.414844,42.548389],[1.42832,42.595898],[1.458887,42.62168],[1.501367,42.642725],[1.568164,42.63501],[1.709863,42.604443],[1.739453,42.575928],[1.740234,42.556738],[1.713965,42.525635],[1.706055,42.50332]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Algeria","SOV_A3":"DZA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Algeria","ADM0_A3":"DZA","GEOU_DIF":0,"GEOUNIT":"Algeria","GU_A3":"DZA","SU_DIF":0,"SUBUNIT":"Algeria","SU_A3":"DZA","BRK_DIFF":0,"NAME":"Algeria","NAME_LONG":"Algeria","BRK_A3":"DZA","BRK_NAME":"Algeria","BRK_GROUP":null,"ABBREV":"Alg.","POSTAL":"DZ","FORMAL_EN":"People's Democratic Republic of Algeria","FORMAL_FR":null,"NAME_CIAWF":"Algeria","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Algeria","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":1,"MAPCOLOR9":6,"MAPCOLOR13":3,"POP_EST":43053054,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":171091,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"3. Upper middle income","FIPS_10":"AG","ISO_A2":"DZ","ISO_A2_EH":"DZ","ISO_A3":"DZA","ISO_A3_EH":"DZA","ISO_N3":"012","ISO_N3_EH":"012","UN_A3":"012","WB_A2":"DZ","WB_A3":"DZA","WOE_ID":23424740,"WOE_ID_EH":23424740,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"DZA","ADM0_DIFF":null,"ADM0_TLC":"DZA","ADM0_A3_US":"DZA","ADM0_A3_FR":"DZA","ADM0_A3_RU":"DZA","ADM0_A3_ES":"DZA","ADM0_A3_CN":"DZA","ADM0_A3_TW":"DZA","ADM0_A3_IN":"DZA","ADM0_A3_NP":"DZA","ADM0_A3_PK":"DZA","ADM0_A3_DE":"DZA","ADM0_A3_GB":"DZA","ADM0_A3_BR":"DZA","ADM0_A3_IL":"DZA","ADM0_A3_PS":"DZA","ADM0_A3_SA":"DZA","ADM0_A3_EG":"DZA","ADM0_A3_MA":"DZA","ADM0_A3_PT":"DZA","ADM0_A3_AR":"DZA","ADM0_A3_JP":"DZA","ADM0_A3_KO":"DZA","ADM0_A3_VN":"DZA","ADM0_A3_TR":"DZA","ADM0_A3_ID":"DZA","ADM0_A3_PL":"DZA","ADM0_A3_GR":"DZA","ADM0_A3_IT":"DZA","ADM0_A3_NL":"DZA","ADM0_A3_SE":"DZA","ADM0_A3_BD":"DZA","ADM0_A3_UA":"DZA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Africa","REGION_UN":"Africa","SUBREGION":"Northern Africa","REGION_WB":"Middle East & North Africa","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":2.5,"MAX_LABEL":7,"LABEL_X":2.808241,"LABEL_Y":27.397406,"NE_ID":1159320565,"WIKIDATAID":"Q262","NAME_AR":"الجزائر","NAME_BN":"আলজেরিয়া","NAME_DE":"Algerien","NAME_EN":"Algeria","NAME_ES":"Argelia","NAME_FA":"الجزایر","NAME_FR":"Algérie","NAME_EL":"Αλγερία","NAME_HE":"אלג'יריה","NAME_HI":"अल्जीरिया","NAME_HU":"Algéria","NAME_ID":"Aljazair","NAME_IT":"Algeria","NAME_JA":"アルジェリア","NAME_KO":"알제리","NAME_NL":"Algerije","NAME_PL":"Algieria","NAME_PT":"Argélia","NAME_RU":"Алжир","NAME_SV":"Algeriet","NAME_TR":"Cezayir","NAME_UK":"Алжир","NAME_UR":"الجزائر","NAME_VI":"Algérie","NAME_ZH":"阿尔及利亚","NAME_ZHT":"阿爾及利亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-8.68335,18.986621,11.967871,37.092383],"geometry":{"type":"Polygon","coordinates":[[[8.576563,36.937207],[8.597656,36.883887],[8.60127,36.833936],[8.506738,36.7875],[8.444238,36.760742],[8.369629,36.63252],[8.230762,36.545264],[8.207617,36.518945],[8.208789,36.495117],[8.302734,36.455615],[8.333984,36.418164],[8.34873,36.367969],[8.306738,36.18877],[8.280273,36.050977],[8.245703,35.870557],[8.24707,35.801807],[8.28291,35.719287],[8.318066,35.654932],[8.329004,35.582227],[8.316406,35.403125],[8.359863,35.299609],[8.394238,35.203857],[8.312109,35.084619],[8.276855,34.979492],[8.254688,34.828955],[8.245605,34.734082],[8.192773,34.646289],[8.123438,34.563916],[8.045605,34.512695],[7.949414,34.468701],[7.838281,34.410303],[7.748535,34.254492],[7.554492,34.125],[7.513867,34.080518],[7.495605,33.976514],[7.500195,33.832471],[7.534375,33.71792],[7.627539,33.548633],[7.70918,33.362305],[7.731348,33.268506],[7.762695,33.233105],[7.877246,33.172119],[8.075586,33.089062],[8.1125,33.055322],[8.210938,32.926709],[8.304199,32.696289],[8.333398,32.543604],[8.515137,32.422314],[8.68291,32.310449],[8.844043,32.212109],[9.018945,32.105371],[9.044043,32.072363],[9.102344,31.846143],[9.160254,31.621338],[9.224023,31.373682],[9.287891,31.125342],[9.363281,30.83291],[9.406055,30.666797],[9.458008,30.465381],[9.51875,30.229395],[9.420996,30.179297],[9.310254,30.115234],[9.391016,29.993652],[9.546191,29.795947],[9.640137,29.636426],[9.672656,29.566992],[9.745898,29.368945],[9.805273,29.176953],[9.820703,29.114795],[9.842578,28.966992],[9.815625,28.560205],[9.858203,28.043311],[9.916016,27.785693],[9.825293,27.552979],[9.747559,27.330859],[9.752539,27.219336],[9.79541,27.044775],[9.837109,26.91582],[9.894434,26.847949],[9.883203,26.630811],[9.859375,26.551953],[9.684961,26.438232],[9.491406,26.33374],[9.437891,26.245508],[9.422363,26.14707],[9.448242,26.067139],[9.58125,25.890137],[9.781055,25.624268],[10.000684,25.33208],[10.019043,25.258545],[10.028125,25.051025],[10.119531,24.790234],[10.218652,24.676221],[10.255859,24.591016],[10.325781,24.530225],[10.395898,24.485596],[10.438965,24.480225],[10.686133,24.551367],[11.108203,24.434033],[11.507617,24.314355],[11.536914,24.29082],[11.624219,24.139697],[11.766992,23.892578],[11.873047,23.694824],[11.967871,23.517871],[11.45,23.212598],[10.932227,22.907275],[10.414355,22.602002],[9.896484,22.296729],[9.378711,21.991406],[8.860938,21.686133],[8.343066,21.380859],[7.825195,21.075586],[7.481738,20.873096],[7.263379,20.694482],[6.989355,20.470508],[6.730664,20.248047],[6.527051,20.072949],[6.263379,19.846143],[6.130664,19.731982],[5.836621,19.47915],[5.74834,19.434229],[5.358691,19.359521],[5.001367,19.291064],[4.671289,19.227783],[4.445703,19.184521],[4.227637,19.142773],[3.910156,19.08374],[3.683496,19.041602],[3.43877,18.996143],[3.400879,18.988428],[3.356445,18.986621],[3.323438,18.988379],[3.255957,19.013281],[3.174219,19.0729],[3.119727,19.103174],[3.106055,19.150098],[3.137891,19.212158],[3.177246,19.268164],[3.192383,19.312061],[3.219629,19.34541],[3.254395,19.372607],[3.255859,19.410938],[3.227051,19.473584],[3.20166,19.5604],[3.202734,19.718311],[3.203418,19.770752],[3.203711,19.789697],[3.130273,19.850195],[2.99248,19.916602],[2.865723,19.955957],[2.80791,19.969434],[2.667773,19.99292],[2.474219,20.03501],[2.406152,20.063867],[2.280859,20.210303],[2.219336,20.247803],[1.928809,20.272705],[1.832422,20.296875],[1.753223,20.331592],[1.685449,20.378369],[1.647363,20.458838],[1.636035,20.524365],[1.610645,20.555566],[1.290234,20.713574],[1.208887,20.767285],[1.165723,20.817432],[1.164062,20.891309],[1.172754,20.981982],[1.15918,21.0625],[1.145508,21.102246],[0.999414,21.197754],[0.671875,21.411865],[0.344434,21.625977],[0.016992,21.840137],[-0.310547,22.054199],[-0.637988,22.268311],[-0.965479,22.482471],[-1.292969,22.696533],[-1.62041,22.910645],[-1.9479,23.124805],[-2.275391,23.338867],[-2.60293,23.553027],[-2.930371,23.767139],[-3.257861,23.98125],[-3.585352,24.195361],[-3.912793,24.409473],[-4.240332,24.623535],[-4.516992,24.804492],[-4.822607,24.995605],[-5.049512,25.135449],[-5.275,25.274512],[-5.516943,25.423779],[-5.674512,25.516406],[-5.862549,25.627002],[-6.050586,25.737598],[-6.238672,25.848193],[-6.426709,25.958789],[-6.614746,26.069434],[-6.802832,26.17998],[-6.990869,26.290576],[-7.178906,26.401172],[-7.366992,26.511768],[-7.555078,26.622363],[-7.743115,26.732959],[-7.931152,26.843555],[-8.119238,26.95415],[-8.307275,27.064746],[-8.495312,27.175342],[-8.68335,27.285937],[-8.68335,27.490234],[-8.68335,27.656445],[-8.68335,27.900391],[-8.68335,28.112012],[-8.68335,28.323682],[-8.68335,28.469238],[-8.68335,28.620752],[-8.678418,28.689404],[-8.659912,28.718604],[-8.55835,28.767871],[-8.399316,28.880176],[-8.340479,28.930176],[-8.265186,28.980518],[-7.998926,29.132422],[-7.943848,29.174756],[-7.685156,29.349512],[-7.624609,29.375195],[-7.485742,29.392236],[-7.427686,29.425],[-7.349756,29.494727],[-7.234912,29.574902],[-7.160205,29.612646],[-7.142432,29.61958],[-7.094922,29.625195],[-6.855566,29.601611],[-6.755127,29.583838],[-6.635352,29.568799],[-6.597754,29.578955],[-6.565674,29.603857],[-6.520557,29.659863],[-6.510693,29.726025],[-6.50791,29.783789],[-6.500879,29.809131],[-6.479736,29.820361],[-6.427637,29.816113],[-6.357617,29.808301],[-6.214795,29.810693],[-6.166504,29.818945],[-6.004297,29.83125],[-5.775,29.869043],[-5.593311,29.917969],[-5.448779,29.956934],[-5.293652,30.058643],[-5.180127,30.166162],[-5.061914,30.326416],[-4.968262,30.465381],[-4.778516,30.552393],[-4.619629,30.604785],[-4.52915,30.625537],[-4.322852,30.698877],[-4.148779,30.80957],[-3.985352,30.913525],[-3.860059,30.927246],[-3.702002,30.944482],[-3.666797,30.964014],[-3.626904,31.000928],[-3.624512,31.065771],[-3.67251,31.111377],[-3.730176,31.1354],[-3.770996,31.161816],[-3.811816,31.166602],[-3.833398,31.197803],[-3.821387,31.255469],[-3.815137,31.308838],[-3.78916,31.361816],[-3.796436,31.437109],[-3.837109,31.512354],[-3.849561,31.566406],[-3.84668,31.619873],[-3.826758,31.661914],[-3.768164,31.689551],[-3.700244,31.700098],[-3.60459,31.686768],[-3.439795,31.704541],[-3.017383,31.834277],[-2.988232,31.874219],[-2.961133,31.963965],[-2.930859,32.042529],[-2.887207,32.068848],[-2.863428,32.074707],[-2.722607,32.095752],[-2.523242,32.125684],[-2.448389,32.12998],[-2.23125,32.121338],[-2.072803,32.115039],[-1.816992,32.104785],[-1.635156,32.099561],[-1.477051,32.094873],[-1.275342,32.089014],[-1.225928,32.107227],[-1.225928,32.164551],[-1.262109,32.271143],[-1.240332,32.337598],[-1.162598,32.39917],[-1.065527,32.468311],[-1.111035,32.552295],[-1.188232,32.608496],[-1.296387,32.675684],[-1.352148,32.703369],[-1.45,32.784814],[-1.51001,32.877637],[-1.550732,33.073584],[-1.625098,33.18335],[-1.679199,33.318652],[-1.63125,33.566748],[-1.702979,33.716846],[-1.714111,33.781836],[-1.714697,33.858203],[-1.692676,33.990283],[-1.706934,34.176074],[-1.791797,34.36792],[-1.751855,34.433252],[-1.733301,34.467041],[-1.739453,34.496094],[-1.816602,34.55708],[-1.849658,34.607324],[-1.832422,34.654639],[-1.792187,34.723193],[-1.795605,34.751904],[-1.920898,34.835547],[-2.131787,34.97085],[-2.190771,35.029785],[-2.219629,35.104199],[-2.017773,35.085059],[-1.913281,35.094238],[-1.673633,35.183105],[-1.48374,35.303076],[-1.33584,35.364258],[-1.205371,35.495752],[-1.087695,35.578857],[-0.91748,35.668408],[-0.426123,35.861523],[-0.350781,35.863184],[-0.18916,35.819092],[-0.048242,35.832812],[0.047949,35.900537],[0.15166,36.063135],[0.312207,36.162354],[0.514941,36.261816],[0.79082,36.356543],[0.97168,36.443945],[1.257227,36.51958],[1.974512,36.567578],[2.342871,36.610303],[2.593359,36.600684],[2.846484,36.738867],[2.972852,36.784473],[3.520508,36.795117],[3.779004,36.896191],[4.758105,36.896338],[4.877832,36.862402],[4.99541,36.808057],[5.195605,36.676807],[5.29541,36.648242],[5.424609,36.675439],[5.725488,36.799609],[6.064746,36.864258],[6.249121,36.93833],[6.327832,37.046045],[6.486523,37.085742],[6.575879,37.003027],[6.927539,36.919434],[7.143457,36.943359],[7.238477,36.968506],[7.204297,37.092383],[7.432422,37.059277],[7.607715,36.999756],[7.791602,36.880273],[7.910449,36.856348],[8.127148,36.910352],[8.576563,36.937207]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":6,"SOVEREIGNT":"Albania","SOV_A3":"ALB","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Albania","ADM0_A3":"ALB","GEOU_DIF":0,"GEOUNIT":"Albania","GU_A3":"ALB","SU_DIF":0,"SUBUNIT":"Albania","SU_A3":"ALB","BRK_DIFF":0,"NAME":"Albania","NAME_LONG":"Albania","BRK_A3":"ALB","BRK_NAME":"Albania","BRK_GROUP":null,"ABBREV":"Alb.","POSTAL":"AL","FORMAL_EN":"Republic of Albania","FORMAL_FR":null,"NAME_CIAWF":"Albania","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Albania","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":4,"MAPCOLOR9":1,"MAPCOLOR13":6,"POP_EST":2854191,"POP_RANK":12,"POP_YEAR":2019,"GDP_MD":15279,"GDP_YEAR":2019,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"AL","ISO_A2":"AL","ISO_A2_EH":"AL","ISO_A3":"ALB","ISO_A3_EH":"ALB","ISO_N3":"008","ISO_N3_EH":"008","UN_A3":"008","WB_A2":"AL","WB_A3":"ALB","WOE_ID":23424742,"WOE_ID_EH":23424742,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ALB","ADM0_DIFF":null,"ADM0_TLC":"ALB","ADM0_A3_US":"ALB","ADM0_A3_FR":"ALB","ADM0_A3_RU":"ALB","ADM0_A3_ES":"ALB","ADM0_A3_CN":"ALB","ADM0_A3_TW":"ALB","ADM0_A3_IN":"ALB","ADM0_A3_NP":"ALB","ADM0_A3_PK":"ALB","ADM0_A3_DE":"ALB","ADM0_A3_GB":"ALB","ADM0_A3_BR":"ALB","ADM0_A3_IL":"ALB","ADM0_A3_PS":"ALB","ADM0_A3_SA":"ALB","ADM0_A3_EG":"ALB","ADM0_A3_MA":"ALB","ADM0_A3_PT":"ALB","ADM0_A3_AR":"ALB","ADM0_A3_JP":"ALB","ADM0_A3_KO":"ALB","ADM0_A3_VN":"ALB","ADM0_A3_TR":"ALB","ADM0_A3_ID":"ALB","ADM0_A3_PL":"ALB","ADM0_A3_GR":"ALB","ADM0_A3_IT":"ALB","ADM0_A3_NL":"ALB","ADM0_A3_SE":"ALB","ADM0_A3_BD":"ALB","ADM0_A3_UA":"ALB","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Europe","REGION_UN":"Europe","SUBREGION":"Southern Europe","REGION_WB":"Europe & Central Asia","NAME_LEN":7,"LONG_LEN":7,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":20.11384,"LABEL_Y":40.654855,"NE_ID":1159320325,"WIKIDATAID":"Q222","NAME_AR":"ألبانيا","NAME_BN":"আলবেনিয়া","NAME_DE":"Albanien","NAME_EN":"Albania","NAME_ES":"Albania","NAME_FA":"آلبانی","NAME_FR":"Albanie","NAME_EL":"Αλβανία","NAME_HE":"אלבניה","NAME_HI":"अल्बानिया","NAME_HU":"Albánia","NAME_ID":"Albania","NAME_IT":"Albania","NAME_JA":"アルバニア","NAME_KO":"알바니아","NAME_NL":"Albanië","NAME_PL":"Albania","NAME_PT":"Albânia","NAME_RU":"Албания","NAME_SV":"Albanien","NAME_TR":"Arnavutluk","NAME_UK":"Албанія","NAME_UR":"البانیا","NAME_VI":"Albania","NAME_ZH":"阿尔巴尼亚","NAME_ZHT":"阿爾巴尼亞","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[19.280664,39.653516,21.031055,42.647949],"geometry":{"type":"Polygon","coordinates":[[[19.342383,41.869092],[19.345508,41.918848],[19.361133,41.997754],[19.352148,42.024023],[19.361426,42.069092],[19.330859,42.129297],[19.280664,42.172559],[19.329004,42.249268],[19.399609,42.341895],[19.465137,42.415381],[19.544531,42.491943],[19.597461,42.56543],[19.654492,42.628564],[19.703418,42.647949],[19.727832,42.634521],[19.740723,42.606934],[19.737793,42.525146],[19.754492,42.496924],[19.788281,42.476172],[19.859766,42.486328],[19.939063,42.506689],[20.045703,42.549902],[20.063965,42.547266],[20.103516,42.524658],[20.185742,42.425879],[20.240527,42.338965],[20.348242,42.308789],[20.408301,42.274951],[20.485449,42.223389],[20.522852,42.171484],[20.575391,42.013086],[20.581445,41.917432],[20.566211,41.873682],[20.553125,41.862354],[20.505176,41.706494],[20.516602,41.627051],[20.516211,41.574756],[20.475586,41.554102],[20.448633,41.521289],[20.492383,41.391406],[20.487012,41.336084],[20.488965,41.272607],[20.567871,41.127832],[20.614453,41.083057],[20.656055,41.06167],[20.709277,40.928369],[20.74082,40.905273],[20.870215,40.91792],[20.933496,40.903125],[20.958594,40.871533],[20.964258,40.849902],[20.955762,40.775293],[20.987891,40.717773],[21.031055,40.658643],[21.030859,40.622461],[21.001953,40.563379],[20.950195,40.494385],[20.881641,40.46792],[20.806055,40.445459],[20.77002,40.391895],[20.75166,40.334912],[20.717871,40.292676],[20.696973,40.246387],[20.664941,40.151758],[20.657422,40.117383],[20.60625,40.082666],[20.527051,40.068506],[20.456055,40.065576],[20.408008,40.049463],[20.383691,40.017187],[20.338477,39.991064],[20.311133,39.979443],[20.311328,39.950781],[20.344238,39.890625],[20.381641,39.841797],[20.382422,39.802637],[20.364063,39.791748],[20.306152,39.79668],[20.293848,39.782227],[20.287598,39.738574],[20.27207,39.701172],[20.248242,39.678369],[20.206836,39.653516],[20.131055,39.661621],[20.059766,39.699121],[20.022559,39.710693],[20.00127,39.709424],[19.995605,39.801025],[19.964844,39.872266],[19.851855,40.043555],[19.48457,40.209961],[19.398145,40.284863],[19.360156,40.347705],[19.322266,40.40708],[19.358594,40.40874],[19.394531,40.393701],[19.440527,40.375684],[19.45918,40.405371],[19.439258,40.470264],[19.344629,40.62207],[19.3375,40.663818],[19.383887,40.790723],[19.46123,40.933301],[19.456055,41.106055],[19.480078,41.236377],[19.453418,41.320996],[19.440625,41.424756],[19.497363,41.562695],[19.545801,41.596826],[19.575684,41.64043],[19.577539,41.7875],[19.468262,41.856152],[19.342383,41.869092]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":3,"SOVEREIGNT":"Afghanistan","SOV_A3":"AFG","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Afghanistan","ADM0_A3":"AFG","GEOU_DIF":0,"GEOUNIT":"Afghanistan","GU_A3":"AFG","SU_DIF":0,"SUBUNIT":"Afghanistan","SU_A3":"AFG","BRK_DIFF":0,"NAME":"Afghanistan","NAME_LONG":"Afghanistan","BRK_A3":"AFG","BRK_NAME":"Afghanistan","BRK_GROUP":null,"ABBREV":"Afg.","POSTAL":"AF","FORMAL_EN":"Islamic State of Afghanistan","FORMAL_FR":null,"NAME_CIAWF":"Afghanistan","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Afghanistan","NAME_ALT":null,"MAPCOLOR7":5,"MAPCOLOR8":6,"MAPCOLOR9":8,"MAPCOLOR13":7,"POP_EST":38041754,"POP_RANK":15,"POP_YEAR":2019,"GDP_MD":19291,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"5. Low income","FIPS_10":"AF","ISO_A2":"AF","ISO_A2_EH":"AF","ISO_A3":"AFG","ISO_A3_EH":"AFG","ISO_N3":"004","ISO_N3_EH":"004","UN_A3":"004","WB_A2":"AF","WB_A3":"AFG","WOE_ID":23424739,"WOE_ID_EH":23424739,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"AFG","ADM0_DIFF":null,"ADM0_TLC":"AFG","ADM0_A3_US":"AFG","ADM0_A3_FR":"AFG","ADM0_A3_RU":"AFG","ADM0_A3_ES":"AFG","ADM0_A3_CN":"AFG","ADM0_A3_TW":"AFG","ADM0_A3_IN":"AFG","ADM0_A3_NP":"AFG","ADM0_A3_PK":"AFG","ADM0_A3_DE":"AFG","ADM0_A3_GB":"AFG","ADM0_A3_BR":"AFG","ADM0_A3_IL":"AFG","ADM0_A3_PS":"AFG","ADM0_A3_SA":"AFG","ADM0_A3_EG":"AFG","ADM0_A3_MA":"AFG","ADM0_A3_PT":"AFG","ADM0_A3_AR":"AFG","ADM0_A3_JP":"AFG","ADM0_A3_KO":"AFG","ADM0_A3_VN":"AFG","ADM0_A3_TR":"AFG","ADM0_A3_ID":"AFG","ADM0_A3_PL":"AFG","ADM0_A3_GR":"AFG","ADM0_A3_IT":"AFG","ADM0_A3_NL":"AFG","ADM0_A3_SE":"AFG","ADM0_A3_BD":"AFG","ADM0_A3_UA":"AFG","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":11,"LONG_LEN":11,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":3,"MAX_LABEL":7,"LABEL_X":66.496586,"LABEL_Y":34.164262,"NE_ID":1159320319,"WIKIDATAID":"Q889","NAME_AR":"أفغانستان","NAME_BN":"আফগানিস্তান","NAME_DE":"Afghanistan","NAME_EN":"Afghanistan","NAME_ES":"Afganistán","NAME_FA":"افغانستان","NAME_FR":"Afghanistan","NAME_EL":"Αφγανιστάν","NAME_HE":"אפגניסטן","NAME_HI":"अफ़्गानिस्तान","NAME_HU":"Afganisztán","NAME_ID":"Afganistan","NAME_IT":"Afghanistan","NAME_JA":"アフガニスタン","NAME_KO":"아프가니스탄","NAME_NL":"Afghanistan","NAME_PL":"Afganistan","NAME_PT":"Afeganistão","NAME_RU":"Афганистан","NAME_SV":"Afghanistan","NAME_TR":"Afganistan","NAME_UK":"Афганістан","NAME_UR":"افغانستان","NAME_VI":"Afghanistan","NAME_ZH":"阿富汗","NAME_ZHT":"阿富汗","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[60.485742,29.391943,74.891309,38.456396],"geometry":{"type":"Polygon","coordinates":[[[66.522266,37.348486],[66.827734,37.371289],[67.068848,37.334814],[67.195508,37.235205],[67.319727,37.20957],[67.441699,37.258008],[67.517285,37.26665],[67.546484,37.235645],[67.607422,37.22251],[67.7,37.227246],[67.75293,37.199805],[67.758984,37.172217],[67.766016,37.140137],[67.834473,37.064209],[67.958008,36.972021],[68.067773,36.949805],[68.212109,37.021533],[68.260938,37.013086],[68.284766,37.036328],[68.299512,37.088428],[68.386914,37.1375],[68.546484,37.183447],[68.637012,37.224463],[68.669141,37.258398],[68.723242,37.268018],[68.782031,37.258008],[68.82373,37.270703],[68.838477,37.302832],[68.855371,37.316846],[68.885254,37.328076],[68.911816,37.333936],[68.960449,37.325049],[69.05,37.266504],[69.180176,37.158301],[69.264844,37.108398],[69.303906,37.116943],[69.353809,37.150049],[69.414453,37.207764],[69.429688,37.290869],[69.399219,37.399316],[69.420117,37.486719],[69.49209,37.553076],[69.625781,37.594043],[69.820898,37.60957],[69.940625,37.600293],[69.984961,37.566162],[70.044727,37.547217],[70.119824,37.543506],[70.188672,37.582471],[70.251465,37.66416],[70.25498,37.765381],[70.199414,37.886035],[70.214648,37.924414],[70.23877,37.941211],[70.313281,37.984814],[70.417773,38.075439],[70.518555,38.191992],[70.61582,38.334424],[70.735938,38.422559],[70.878906,38.456396],[71.052148,38.417871],[71.255859,38.306982],[71.332715,38.170264],[71.282813,38.00791],[71.278516,37.918408],[71.319922,37.901855],[71.389648,37.906299],[71.487793,37.931885],[71.551953,37.933154],[71.582227,37.910107],[71.580371,37.864258],[71.546191,37.795654],[71.505078,37.60293],[71.479688,37.436035],[71.454785,37.271826],[71.43291,37.127539],[71.471875,37.015088],[71.530859,36.845117],[71.597461,36.73291],[71.665625,36.696924],[71.733789,36.684033],[71.802051,36.694287],[71.941992,36.766455],[72.153516,36.900537],[72.358789,36.98291],[72.657422,37.029053],[72.757031,37.172705],[72.895508,37.267529],[73.211133,37.408496],[73.38291,37.462256],[73.481348,37.47168],[73.604688,37.446045],[73.632617,37.437207],[73.657129,37.430469],[73.720605,37.41875],[73.733789,37.375781],[73.717285,37.329443],[73.648828,37.291211],[73.627539,37.261572],[73.653516,37.239355],[73.749609,37.231787],[73.948828,37.283154],[74.077734,37.316211],[74.16709,37.329443],[74.203516,37.372461],[74.259668,37.41543],[74.349023,37.41875],[74.444922,37.395605],[74.524219,37.382373],[74.659375,37.394482],[74.730566,37.357031],[74.830469,37.285937],[74.875391,37.241992],[74.891309,37.231641],[74.840234,37.225049],[74.767383,37.24917],[74.738965,37.285645],[74.72666,37.290723],[74.668945,37.266699],[74.558984,37.236621],[74.372168,37.157715],[74.376172,37.137354],[74.497949,37.057227],[74.526465,37.030664],[74.541406,37.022168],[74.431055,36.983691],[74.194727,36.896875],[74.038867,36.825732],[74.001855,36.823096],[73.907813,36.85293],[73.769141,36.888477],[73.731836,36.887793],[73.411133,36.881689],[73.116797,36.868555],[72.99375,36.851611],[72.766211,36.83501],[72.622852,36.82959],[72.531348,36.802002],[72.431152,36.76582],[72.326953,36.742383],[72.249805,36.734717],[72.156738,36.700879],[72.095605,36.63374],[71.920703,36.53418],[71.822266,36.486084],[71.772656,36.431836],[71.716406,36.426562],[71.620508,36.436475],[71.545898,36.377686],[71.463281,36.293262],[71.312598,36.171191],[71.23291,36.121777],[71.185059,36.04209],[71.220215,36.000684],[71.342871,35.938525],[71.397559,35.880176],[71.427539,35.83374],[71.483594,35.7146],[71.519043,35.59751],[71.571973,35.546826],[71.587402,35.46084],[71.600586,35.40791],[71.571973,35.37041],[71.545508,35.328516],[71.545508,35.288867],[71.577246,35.247998],[71.605273,35.211768],[71.620508,35.183008],[71.60166,35.150684],[71.545508,35.101416],[71.51709,35.051123],[71.455078,34.966943],[71.358105,34.909619],[71.294141,34.867725],[71.225781,34.779541],[71.113281,34.681592],[71.065625,34.599609],[71.016309,34.554639],[70.965625,34.530371],[70.978906,34.486279],[71.022949,34.431152],[71.095703,34.369434],[71.092383,34.273242],[71.089063,34.204053],[71.091309,34.120264],[71.051563,34.049707],[70.848438,33.981885],[70.654004,33.952295],[70.415723,33.950439],[70.325684,33.961133],[70.253613,33.975977],[69.994727,34.051807],[69.889648,34.007275],[69.868066,33.897656],[70.056641,33.719873],[70.13418,33.620752],[70.219727,33.454687],[70.28418,33.369043],[70.261133,33.289014],[70.090234,33.198096],[69.920117,33.1125],[69.703711,33.094727],[69.567773,33.06416],[69.501563,33.020068],[69.453125,32.832812],[69.40459,32.764258],[69.405371,32.682715],[69.359473,32.590332],[69.289941,32.530566],[69.241406,32.433545],[69.256543,32.249463],[69.279297,31.936816],[69.186914,31.838086],[69.083105,31.738477],[68.973438,31.667383],[68.868945,31.634229],[68.782324,31.646436],[68.713672,31.708057],[68.673242,31.759717],[68.597656,31.802979],[68.520703,31.794141],[68.443262,31.754492],[68.319824,31.767676],[68.213965,31.807373],[68.161035,31.802979],[68.130176,31.763281],[68.017188,31.677979],[67.739844,31.548193],[67.626758,31.53877],[67.578223,31.506494],[67.597559,31.45332],[67.64707,31.409961],[67.733496,31.379248],[67.737891,31.343945],[67.661523,31.312988],[67.596387,31.277686],[67.452832,31.234619],[67.287305,31.217822],[67.115918,31.24292],[67.027734,31.300244],[66.924316,31.305615],[66.829297,31.263672],[66.731348,31.194531],[66.624219,31.046045],[66.595801,31.019971],[66.566797,30.996582],[66.497363,30.964551],[66.397168,30.912207],[66.346875,30.802783],[66.286914,30.60791],[66.300977,30.502979],[66.305469,30.321143],[66.281836,30.193457],[66.238477,30.109619],[66.247168,30.043506],[66.313379,29.968555],[66.286914,29.92002],[66.23125,29.865723],[66.177051,29.835596],[65.961621,29.778906],[65.666211,29.701318],[65.470996,29.651562],[65.180469,29.577637],[65.095508,29.559473],[64.918945,29.552783],[64.827344,29.56416],[64.703516,29.567139],[64.521094,29.564502],[64.39375,29.544336],[64.266113,29.506934],[64.172168,29.460352],[64.117969,29.414258],[64.09873,29.391943],[63.970996,29.430078],[63.567578,29.497998],[62.476562,29.40835],[62.373438,29.425391],[62.000977,29.53042],[61.521484,29.665674],[61.224414,29.749414],[60.843359,29.858691],[61.104102,30.128418],[61.331641,30.363721],[61.559473,30.599365],[61.78418,30.831934],[61.81084,30.913281],[61.814258,31.072559],[61.755078,31.285303],[61.660156,31.382422],[61.346484,31.421631],[61.110742,31.451123],[60.854102,31.483252],[60.820703,31.495166],[60.791602,31.660596],[60.804297,31.734473],[60.7875,31.877197],[60.789941,31.987109],[60.827246,32.167969],[60.829297,32.249414],[60.710449,32.6],[60.644531,32.794385],[60.576563,32.994873],[60.561914,33.058789],[60.560547,33.137842],[60.718066,33.323535],[60.766895,33.363818],[60.859277,33.45625],[60.916992,33.505225],[60.906934,33.538965],[60.806445,33.558691],[60.65459,33.5604],[60.573828,33.58833],[60.51084,33.638916],[60.485938,33.711914],[60.527051,33.841992],[60.485742,34.094775],[60.570215,34.219629],[60.642676,34.307178],[60.889453,34.319434],[60.803906,34.418018],[60.762598,34.475244],[60.736133,34.491797],[60.72627,34.518262],[60.739453,34.544727],[60.802344,34.554639],[60.845313,34.587695],[60.914746,34.633984],[60.951172,34.653857],[60.957813,34.710059],[60.99082,34.749756],[61.04043,34.799365],[61.080078,34.855615],[61.070215,34.921729],[61.106641,35.001123],[61.123145,35.050732],[61.149609,35.09375],[61.126465,35.156543],[61.106641,35.209473],[61.1,35.272314],[61.139648,35.288867],[61.189258,35.312012],[61.199219,35.361621],[61.225684,35.424463],[61.245508,35.474072],[61.278516,35.51377],[61.281836,35.553418],[61.262012,35.61958],[61.344727,35.629492],[61.377734,35.593115],[61.421777,35.545801],[61.542773,35.457861],[61.620996,35.432324],[61.719727,35.419434],[61.841016,35.431494],[61.938086,35.4479],[61.983887,35.443701],[62.089648,35.379687],[62.213086,35.289941],[62.252832,35.250244],[62.271191,35.189111],[62.307813,35.170801],[62.386621,35.23125],[62.462891,35.251367],[62.533105,35.239893],[62.610547,35.233154],[62.688086,35.255322],[62.722656,35.271338],[62.858008,35.349658],[62.980273,35.40918],[63.056641,35.445801],[63.08418,35.568066],[63.119336,35.637549],[63.169727,35.678125],[63.150781,35.728271],[63.12998,35.766748],[63.108594,35.818701],[63.12998,35.846191],[63.178906,35.858447],[63.30166,35.858398],[63.516992,35.913135],[63.696582,35.967822],[63.8625,36.012354],[63.938086,36.019727],[64.009668,36.012109],[64.042383,36.025098],[64.051367,36.067627],[64.092188,36.112695],[64.184375,36.148926],[64.358008,36.226074],[64.511035,36.340674],[64.56582,36.427588],[64.602539,36.554541],[64.674316,36.750195],[64.753125,36.964795],[64.782422,37.059277],[64.816309,37.13208],[64.951563,37.193555],[65.089648,37.237939],[65.303613,37.246777],[65.55498,37.251172],[65.608008,37.368408],[65.641211,37.467822],[65.683008,37.519141],[65.743848,37.56084],[65.765039,37.569141],[65.900684,37.508105],[66.108398,37.414746],[66.350293,37.368164],[66.471875,37.344727],[66.522266,37.348486]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":1,"LABELRANK":5,"SOVEREIGNT":"Kashmir","SOV_A3":"KAS","ADM0_DIF":0,"LEVEL":2,"TYPE":"Indeterminate","TLC":null,"ADMIN":"Siachen Glacier","ADM0_A3":"KAS","GEOU_DIF":0,"GEOUNIT":"Siachen Glacier","GU_A3":"KAS","SU_DIF":0,"SUBUNIT":"Siachen Glacier","SU_A3":"KAS","BRK_DIFF":1,"NAME":"Siachen Glacier","NAME_LONG":"Siachen Glacier","BRK_A3":"B45","BRK_NAME":"Siachen Glacier","BRK_GROUP":"Jammu and Kashmir","ABBREV":"Siachen","POSTAL":"SG","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":null,"NOTE_BRK":"Claimed by Pakistan and India","NAME_SORT":"Kashmir","NAME_ALT":null,"MAPCOLOR7":3,"MAPCOLOR8":7,"MAPCOLOR9":6,"MAPCOLOR13":-99,"POP_EST":6000,"POP_RANK":5,"POP_YEAR":2013,"GDP_MD":15,"GDP_YEAR":2013,"ECONOMY":"6. Developing region","INCOME_GRP":"4. Lower middle income","FIPS_10":"-99","ISO_A2":"-99","ISO_A2_EH":"-99","ISO_A3":"-99","ISO_A3_EH":"-99","ISO_N3":"-99","ISO_N3_EH":"-99","UN_A3":"-099","WB_A2":"-99","WB_A3":"-99","WOE_ID":23424928,"WOE_ID_EH":23424928,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"-99","ADM0_DIFF":null,"ADM0_TLC":"-99","ADM0_A3_US":"B45","ADM0_A3_FR":"IND","ADM0_A3_RU":"IND","ADM0_A3_ES":"IND","ADM0_A3_CN":"IND","ADM0_A3_TW":"IND","ADM0_A3_IN":"IND","ADM0_A3_NP":"IND","ADM0_A3_PK":"PAK","ADM0_A3_DE":"IND","ADM0_A3_GB":"IND","ADM0_A3_BR":"IND","ADM0_A3_IL":"IND","ADM0_A3_PS":"IND","ADM0_A3_SA":"IND","ADM0_A3_EG":"IND","ADM0_A3_MA":"IND","ADM0_A3_PT":"IND","ADM0_A3_AR":"IND","ADM0_A3_JP":"IND","ADM0_A3_KO":"IND","ADM0_A3_VN":"IND","ADM0_A3_TR":"PAK","ADM0_A3_ID":"IND","ADM0_A3_PL":"IND","ADM0_A3_GR":"IND","ADM0_A3_IT":"IND","ADM0_A3_NL":"IND","ADM0_A3_SE":"IND","ADM0_A3_BD":"IND","ADM0_A3_UA":"IND","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Asia","REGION_UN":"Asia","SUBREGION":"Southern Asia","REGION_WB":"South Asia","NAME_LEN":15,"LONG_LEN":15,"ABBREV_LEN":7,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":5,"MIN_LABEL":6.5,"MAX_LABEL":9.5,"LABEL_X":77.129553,"LABEL_Y":35.340606,"NE_ID":1159320963,"WIKIDATAID":"Q333946","NAME_AR":"نهر سياتشن الجليدي","NAME_BN":"সিয়াচেন হিমবাহ","NAME_DE":"Siachen-Gletscher","NAME_EN":"Siachen Glacier","NAME_ES":"Glaciar de Siachen","NAME_FA":"یخچال سیاچن","NAME_FR":"glacier de Siachen","NAME_EL":"Παγετώνας Σιατσέν","NAME_HE":"קרחון סיאצ'ן","NAME_HI":"सियाचीन","NAME_HU":"Siachen-gleccser","NAME_ID":"Siachen Glacier","NAME_IT":"ghiacciaio Siachen","NAME_JA":"シアチェン氷河","NAME_KO":"시아첸 빙하","NAME_NL":"Siachengletsjer","NAME_PL":"Lodowiec Siachen","NAME_PT":"Glaciar de Siachen","NAME_RU":"Сиачен","NAME_SV":"Siachen Glaciären","NAME_TR":"Siachen Buzulu","NAME_UK":"Сіачен","NAME_UR":"سیاچن گلیشیر","NAME_VI":"Sông băng Siachen","NAME_ZH":"锡亚琴冰川","NAME_ZHT":"錫亞琴冰川","FCLASS_ISO":"Unrecognized","TLC_DIFF":null,"FCLASS_TLC":"Unrecognized","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":"Unrecognized","FCLASS_ES":"Unrecognized","FCLASS_CN":null,"FCLASS_TW":"Unrecognized","FCLASS_IN":"Unrecognized","FCLASS_NP":"Unrecognized","FCLASS_PK":"Unrecognized","FCLASS_DE":"Unrecognized","FCLASS_GB":"Unrecognized","FCLASS_BR":"Unrecognized","FCLASS_IL":"Unrecognized","FCLASS_PS":"Unrecognized","FCLASS_SA":"Unrecognized","FCLASS_EG":"Unrecognized","FCLASS_MA":"Unrecognized","FCLASS_PT":"Unrecognized","FCLASS_AR":"Unrecognized","FCLASS_JP":"Unrecognized","FCLASS_KO":"Unrecognized","FCLASS_VN":"Unrecognized","FCLASS_TR":"Unrecognized","FCLASS_ID":"Unrecognized","FCLASS_PL":"Unrecognized","FCLASS_GR":"Unrecognized","FCLASS_IT":"Unrecognized","FCLASS_NL":"Unrecognized","FCLASS_SE":"Unrecognized","FCLASS_BD":"Unrecognized","FCLASS_UA":"Unrecognized"},"bbox":[76.766895,35.109912,77.799414,35.661719],"geometry":{"type":"Polygon","coordinates":[[[77.048633,35.109912],[77.004492,35.196338],[76.978906,35.246436],[76.927734,35.346631],[76.882227,35.435742],[76.812793,35.571826],[76.766895,35.661719],[76.878906,35.613281],[77.090039,35.552051],[77.294824,35.508154],[77.446484,35.475586],[77.52002,35.473437],[77.572559,35.471826],[77.724023,35.480566],[77.799414,35.495898],[77.696973,35.443262],[77.571582,35.37876],[77.423437,35.302588],[77.292969,35.235547],[77.168555,35.171533],[77.048633,35.109912]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":4,"SOVEREIGNT":"Antarctica","SOV_A3":"ATA","ADM0_DIF":0,"LEVEL":2,"TYPE":"Indeterminate","TLC":"1","ADMIN":"Antarctica","ADM0_A3":"ATA","GEOU_DIF":0,"GEOUNIT":"Antarctica","GU_A3":"ATA","SU_DIF":0,"SUBUNIT":"Antarctica","SU_A3":"ATA","BRK_DIFF":0,"NAME":"Antarctica","NAME_LONG":"Antarctica","BRK_A3":"ATA","BRK_NAME":"Antarctica","BRK_GROUP":null,"ABBREV":"Ant.","POSTAL":"AQ","FORMAL_EN":null,"FORMAL_FR":null,"NAME_CIAWF":null,"NOTE_ADM0":"By treaty","NOTE_BRK":"Multiple claims held in abeyance by treaty","NAME_SORT":"Antarctica","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":5,"MAPCOLOR9":1,"MAPCOLOR13":-99,"POP_EST":4490,"POP_RANK":4,"POP_YEAR":2019,"GDP_MD":898,"GDP_YEAR":2013,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"AY","ISO_A2":"AQ","ISO_A2_EH":"AQ","ISO_A3":"ATA","ISO_A3_EH":"ATA","ISO_N3":"010","ISO_N3_EH":"010","UN_A3":"010","WB_A2":"-99","WB_A3":"-99","WOE_ID":28289409,"WOE_ID_EH":28289409,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"ATA","ADM0_DIFF":null,"ADM0_TLC":"ATA","ADM0_A3_US":"ATA","ADM0_A3_FR":"ATA","ADM0_A3_RU":"ATA","ADM0_A3_ES":"ATA","ADM0_A3_CN":"ATA","ADM0_A3_TW":"ATA","ADM0_A3_IN":"ATA","ADM0_A3_NP":"ATA","ADM0_A3_PK":"ATA","ADM0_A3_DE":"ATA","ADM0_A3_GB":"ATA","ADM0_A3_BR":"ATA","ADM0_A3_IL":"ATA","ADM0_A3_PS":"ATA","ADM0_A3_SA":"ATA","ADM0_A3_EG":"ATA","ADM0_A3_MA":"ATA","ADM0_A3_PT":"ATA","ADM0_A3_AR":"ATA","ADM0_A3_JP":"ATA","ADM0_A3_KO":"ATA","ADM0_A3_VN":"ATA","ADM0_A3_TR":"ATA","ADM0_A3_ID":"ATA","ADM0_A3_PL":"ATA","ADM0_A3_GR":"ATA","ADM0_A3_IT":"ATA","ADM0_A3_NL":"ATA","ADM0_A3_SE":"ATA","ADM0_A3_BD":"ATA","ADM0_A3_UA":"ATA","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Antarctica","REGION_UN":"Antarctica","SUBREGION":"Antarctica","REGION_WB":"Antarctica","NAME_LEN":10,"LONG_LEN":10,"ABBREV_LEN":4,"TINY":-99,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":4,"MAX_LABEL":9,"LABEL_X":35.885455,"LABEL_Y":-79.843222,"NE_ID":1159320335,"WIKIDATAID":"Q51","NAME_AR":"القارة القطبية الجنوبية","NAME_BN":"অ্যান্টার্কটিকা","NAME_DE":"Antarktika","NAME_EN":"Antarctica","NAME_ES":"Antártida","NAME_FA":"جنوبگان","NAME_FR":"Antarctique","NAME_EL":"Ανταρκτική","NAME_HE":"אנטארקטיקה","NAME_HI":"अंटार्कटिका","NAME_HU":"Antarktika","NAME_ID":"Antartika","NAME_IT":"Antartide","NAME_JA":"南極大陸","NAME_KO":"남극","NAME_NL":"Antarctica","NAME_PL":"Antarktyda","NAME_PT":"Antártida","NAME_RU":"Антарктида","NAME_SV":"Antarktis","NAME_TR":"Antarktika","NAME_UK":"Антарктида","NAME_UR":"انٹارکٹکا","NAME_VI":"Châu Nam Cực","NAME_ZH":"南极洲","NAME_ZHT":"南極洲","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-180,-89.998926,180,-60.520898],"geometry":{"type":"MultiPolygon","coordinates":[[[[-45.717773,-60.520898],[-45.499707,-60.546484],[-45.386279,-60.582715],[-45.357422,-60.623828],[-45.228125,-60.639746],[-45.210986,-60.648145],[-45.186377,-60.671875],[-45.172852,-60.69873],[-45.173682,-60.733008],[-45.398047,-60.649707],[-45.70918,-60.64541],[-45.780029,-60.586035],[-45.937305,-60.619922],[-45.954785,-60.597461],[-45.956299,-60.568359],[-45.934814,-60.526563],[-45.83418,-60.543457],[-45.717773,-60.520898]]],[[[-90.536182,-68.797754],[-90.547168,-68.79834],[-90.56665,-68.798145],[-90.580859,-68.798633],[-90.595215,-68.800195],[-90.609131,-68.801855],[-90.617383,-68.803223],[-90.620361,-68.803223],[-90.623633,-68.801367],[-90.628369,-68.796973],[-90.638379,-68.788281],[-90.64707,-68.779688],[-90.652051,-68.770898],[-90.648047,-68.75957],[-90.637207,-68.754492],[-90.636719,-68.747266],[-90.636719,-68.737891],[-90.631445,-68.729785],[-90.628369,-68.721387],[-90.62915,-68.716406],[-90.625684,-68.713867],[-90.616748,-68.712109],[-90.600098,-68.712305],[-90.589648,-68.712988],[-90.570605,-68.713965],[-90.56167,-68.715039],[-90.548486,-68.718359],[-90.535449,-68.728418],[-90.525146,-68.738477],[-90.525146,-68.742969],[-90.5229,-68.748828],[-90.521191,-68.755859],[-90.519189,-68.764258],[-90.514697,-68.771289],[-90.518164,-68.783203],[-90.525928,-68.794922],[-90.532959,-68.797266],[-90.536182,-68.797754]]],[[[-57.020654,-63.372852],[-56.927344,-63.505566],[-56.781836,-63.57168],[-56.834766,-63.63125],[-56.973682,-63.624609],[-57.119189,-63.637793],[-57.152246,-63.57168],[-57.097705,-63.523535],[-57.152246,-63.479102],[-57.283887,-63.490625],[-57.460645,-63.513574],[-57.581494,-63.546582],[-57.736914,-63.616602],[-57.856738,-63.656836],[-58.262988,-63.763379],[-58.531885,-63.91543],[-58.722852,-64.077441],[-58.838965,-64.186816],[-59.005322,-64.194922],[-59.047314,-64.234473],[-58.977246,-64.265918],[-58.922998,-64.279297],[-58.799316,-64.292676],[-58.819141,-64.338965],[-58.905127,-64.352148],[-58.895459,-64.388867],[-58.805908,-64.444824],[-58.786084,-64.524219],[-58.891895,-64.537402],[-59.050684,-64.451367],[-59.229395,-64.443555],[-59.369678,-64.403516],[-59.460742,-64.345605],[-59.546777,-64.358789],[-59.612158,-64.440137],[-59.573193,-64.530762],[-59.645996,-64.583691],[-59.734375,-64.558887],[-59.765039,-64.451367],[-59.850195,-64.433594],[-59.963086,-64.431348],[-60.24248,-64.546875],[-60.340527,-64.550586],[-60.393652,-64.609375],[-60.555957,-64.676563],[-60.659961,-64.729199],[-60.915381,-64.906836],[-61.059863,-64.98125],[-61.331836,-65.023828],[-61.439453,-65.017676],[-61.503027,-64.999707],[-61.603223,-64.987793],[-61.703125,-64.987207],[-61.736182,-65.033496],[-61.577441,-65.185645],[-61.663428,-65.238574],[-61.855615,-65.235352],[-61.947852,-65.192285],[-62.024512,-65.23252],[-62.084668,-65.273242],[-62.145312,-65.331738],[-62.053662,-65.456836],[-61.903369,-65.513477],[-61.795703,-65.522949],[-61.756006,-65.569238],[-61.991406,-65.58916],[-62.150586,-65.698828],[-62.222412,-65.775],[-62.305029,-65.84043],[-62.293262,-65.916406],[-62.169141,-66.031348],[-62.005029,-66.112891],[-61.839062,-66.119531],[-61.624805,-66.094727],[-61.574707,-66.071484],[-61.359131,-66.058789],[-61.266113,-65.97998],[-61.198145,-65.974512],[-61.137598,-65.988672],[-61.039258,-65.991992],[-60.988135,-65.940234],[-60.912793,-65.920898],[-60.812988,-65.934082],[-60.618311,-65.933105],[-60.565381,-65.979395],[-60.624902,-66.032324],[-60.743994,-66.105078],[-60.856445,-66.065332],[-60.955664,-66.071973],[-61.009277,-66.110547],[-60.902734,-66.191016],[-60.942432,-66.26377],[-61.028418,-66.336523],[-61.134277,-66.290234],[-61.149756,-66.211719],[-61.292969,-66.164551],[-61.431934,-66.144727],[-61.526123,-66.225684],[-61.675635,-66.249512],[-61.696484,-66.343164],[-61.756006,-66.429199],[-61.841992,-66.402734],[-61.875439,-66.296094],[-62.116504,-66.208984],[-62.24126,-66.19707],[-62.494141,-66.219336],[-62.582812,-66.21748],[-62.682031,-66.237305],[-62.754834,-66.310156],[-62.650293,-66.363672],[-62.615381,-66.435742],[-62.61792,-66.489648],[-62.637549,-66.511133],[-62.655078,-66.556055],[-62.543164,-66.620996],[-62.536523,-66.707031],[-62.628906,-66.706152],[-62.704785,-66.680078],[-62.996729,-66.452832],[-63.179541,-66.352539],[-63.25752,-66.26377],[-63.448535,-66.24375],[-63.586621,-66.241699],[-63.752539,-66.277734],[-63.687549,-66.319824],[-63.654395,-66.38291],[-63.755664,-66.408984],[-63.88042,-66.505957],[-63.964355,-66.58877],[-64.015039,-66.606641],[-64.077734,-66.654102],[-63.808789,-66.760938],[-63.769043,-66.803223],[-63.754736,-66.872949],[-63.8396,-66.912012],[-64.042578,-66.927246],[-64.400977,-66.85332],[-64.554004,-66.851758],[-64.606934,-66.799609],[-64.686279,-66.80625],[-64.735449,-66.894141],[-64.793359,-66.971973],[-64.878125,-67.024512],[-64.854102,-67.104785],[-64.785498,-67.12373],[-64.838721,-67.156055],[-64.950879,-67.183203],[-65.026904,-67.214063],[-64.858252,-67.242773],[-64.826465,-67.269141],[-64.819287,-67.307324],[-65.07959,-67.335352],[-65.248535,-67.341992],[-65.350098,-67.310938],[-65.443115,-67.326172],[-65.503125,-67.377246],[-65.523438,-67.444629],[-65.503906,-67.528223],[-65.470801,-67.587891],[-65.446777,-67.610156],[-65.418066,-67.65957],[-65.574023,-67.788379],[-65.589258,-67.816309],[-65.600049,-67.875684],[-65.527832,-67.92998],[-65.469434,-68.009473],[-65.551172,-68.04834],[-65.639502,-68.130566],[-65.54624,-68.14668],[-65.3875,-68.150391],[-65.218018,-68.140039],[-64.958838,-68.067578],[-64.884717,-68.056348],[-64.853467,-68.083105],[-64.829492,-68.127441],[-64.895947,-68.168359],[-65.365186,-68.2875],[-65.452002,-68.336719],[-65.331396,-68.36416],[-65.089746,-68.370215],[-64.996484,-68.407813],[-65.054541,-68.449316],[-65.140088,-68.489258],[-65.241602,-68.583203],[-65.15835,-68.617969],[-64.898291,-68.67334],[-64.428906,-68.746094],[-64.078467,-68.771191],[-64.156836,-68.686914],[-64.169238,-68.58252],[-63.924463,-68.497656],[-63.796484,-68.469727],[-63.216602,-68.418848],[-63.056543,-68.420703],[-62.933301,-68.442578],[-62.979687,-68.486328],[-63.114746,-68.470605],[-63.34751,-68.499414],[-63.707324,-68.592188],[-63.773438,-68.631836],[-63.747021,-68.70459],[-63.442725,-68.76416],[-63.343506,-68.810449],[-63.478223,-68.951172],[-63.455957,-69.041895],[-63.301465,-69.141016],[-63.094385,-69.253027],[-62.994092,-69.328906],[-62.839746,-69.371875],[-62.586816,-69.477246],[-62.450537,-69.584375],[-62.407129,-69.827246],[-62.202441,-70.02793],[-61.961084,-70.120117],[-61.934619,-70.199512],[-62.013965,-70.278906],[-62.217871,-70.233203],[-62.331494,-70.278906],[-62.377783,-70.364844],[-62.232275,-70.424414],[-62.000781,-70.497168],[-61.504687,-70.490527],[-61.491406,-70.569922],[-61.605322,-70.616699],[-61.696484,-70.675781],[-61.808936,-70.708789],[-61.994141,-70.728613],[-62.04043,-70.801367],[-61.961084,-70.900586],[-61.702148,-70.856738],[-61.513379,-70.851172],[-61.312842,-70.867578],[-61.25166,-71.002246],[-61.017236,-71.166895],[-60.962256,-71.244629],[-61.003076,-71.319336],[-61.148438,-71.341895],[-61.237305,-71.400586],[-61.369287,-71.452344],[-61.515918,-71.479102],[-61.789551,-71.616016],[-61.90957,-71.630859],[-61.958789,-71.657813],[-61.725439,-71.672559],[-61.562793,-71.675293],[-61.213574,-71.564063],[-61.081348,-71.588574],[-60.995312,-71.661328],[-60.949023,-71.747266],[-61.035059,-71.82002],[-61.644531,-71.862891],[-61.938916,-71.903613],[-62.256641,-72.017578],[-61.894043,-72.070996],[-61.628027,-72.052734],[-61.492676,-72.072656],[-61.310254,-72.112695],[-61.107471,-72.091504],[-60.951758,-72.050195],[-60.833203,-72.051563],[-60.719434,-72.072656],[-60.704297,-72.144141],[-60.691064,-72.269824],[-60.6646,-72.3625],[-60.730322,-72.425977],[-61.04751,-72.470508],[-61.279785,-72.468262],[-61.286133,-72.600781],[-60.93916,-72.699707],[-60.724121,-72.646875],[-60.532324,-72.67334],[-60.532324,-72.832129],[-60.384668,-73.007324],[-60.254492,-73.017285],[-60.148682,-72.937891],[-60.009766,-72.937891],[-59.956836,-73.030566],[-60.016406,-73.189258],[-60.122217,-73.275293],[-60.40376,-73.240234],[-60.560693,-73.211426],[-60.686621,-73.270996],[-60.89585,-73.32041],[-61.081348,-73.328223],[-61.24209,-73.250293],[-61.428418,-73.191406],[-61.726416,-73.160742],[-62.008301,-73.147656],[-61.914746,-73.215723],[-61.787598,-73.254883],[-61.737695,-73.375488],[-61.636963,-73.500195],[-61.405469,-73.46709],[-61.079785,-73.538672],[-60.878857,-73.612012],[-60.790283,-73.711816],[-60.902734,-73.870605],[-61.088281,-73.929492],[-61.203418,-73.956641],[-61.404053,-73.895996],[-61.54541,-73.895996],[-61.691699,-73.923828],[-61.741602,-73.996191],[-61.838232,-74.032031],[-61.319434,-74.035938],[-61.160693,-74.055762],[-61.04165,-74.121973],[-61.226855,-74.20791],[-61.570801,-74.194727],[-61.718262,-74.228125],[-61.842773,-74.289648],[-61.331787,-74.328613],[-61.120605,-74.306934],[-60.783691,-74.241016],[-60.704297,-74.307129],[-60.838477,-74.372949],[-61.010791,-74.47832],[-61.370166,-74.511816],[-61.63999,-74.513574],[-61.994531,-74.475781],[-62.088867,-74.452832],[-62.235303,-74.441309],[-62.225684,-74.505566],[-62.132715,-74.55],[-61.894434,-74.713086],[-61.855225,-74.776758],[-61.928027,-74.862793],[-62.137793,-74.926367],[-62.372461,-74.952148],[-62.566797,-74.895801],[-62.708496,-74.737109],[-62.887109,-74.69082],[-63.072314,-74.677539],[-63.178125,-74.68418],[-63.16792,-74.764551],[-63.125244,-74.849512],[-63.197998,-74.909082],[-63.357031,-74.87832],[-63.558789,-74.905664],[-63.750879,-74.952344],[-63.924707,-75.004492],[-63.570996,-75.030273],[-63.336914,-75.034766],[-63.173193,-75.114746],[-63.231055,-75.153809],[-63.551416,-75.171484],[-63.85752,-75.206152],[-64.279541,-75.292871],[-63.972461,-75.329395],[-63.678418,-75.32793],[-63.474854,-75.336328],[-63.303809,-75.352246],[-63.25752,-75.398535],[-63.363379,-75.451465],[-64.052637,-75.57959],[-64.778271,-75.738184],[-65.044385,-75.7875],[-65.321729,-75.815137],[-65.965674,-75.95166],[-66.37041,-76.013379],[-67.518213,-76.109766],[-69.304395,-76.350781],[-69.915283,-76.521973],[-70.095508,-76.654492],[-70.210156,-76.674121],[-70.550781,-76.718066],[-70.89502,-76.739355],[-71.798682,-76.752734],[-72.722314,-76.689063],[-73.471777,-76.675488],[-73.879785,-76.696777],[-75.268359,-76.581445],[-75.443506,-76.586719],[-75.659277,-76.608203],[-75.831348,-76.608203],[-75.962842,-76.59209],[-76.244189,-76.585352],[-77.190039,-76.629785],[-77.287061,-76.70166],[-77.167969,-76.833887],[-76.823584,-76.993457],[-76.248584,-77.274902],[-75.937256,-77.334473],[-75.748145,-77.398438],[-75.386914,-77.474219],[-74.580615,-77.478027],[-73.478223,-77.535547],[-72.851953,-77.590234],[-72.875146,-77.693848],[-73.251562,-77.894238],[-73.48501,-77.970801],[-74.042139,-78.109375],[-74.812061,-78.177832],[-75.398438,-78.157813],[-76.437842,-78.044141],[-77.742139,-77.940332],[-79.679004,-77.842578],[-80.104102,-77.796582],[-80.601562,-77.751953],[-80.888525,-77.797656],[-81.103125,-77.841797],[-81.580957,-77.846094],[-81.441016,-77.885645],[-79.509668,-78.154297],[-77.858105,-78.350977],[-77.664795,-78.401465],[-77.432568,-78.434668],[-77.452441,-78.560352],[-77.54502,-78.65957],[-77.869141,-78.745508],[-78.711621,-78.752051],[-79.766553,-78.820703],[-80.292285,-78.822754],[-80.816309,-78.754297],[-81.929297,-78.559082],[-82.608447,-78.412402],[-83.08252,-78.24668],[-83.412061,-78.114648],[-83.779004,-77.983594],[-83.7521,-78.066309],[-83.687744,-78.148047],[-83.508252,-78.248047],[-83.245898,-78.357031],[-83.226953,-78.401563],[-83.35498,-78.407617],[-83.544434,-78.355273],[-83.705908,-78.404102],[-83.762744,-78.461133],[-83.696631,-78.537305],[-83.595166,-78.611035],[-83.26001,-78.774219],[-82.970752,-78.816699],[-82.589209,-78.916309],[-81.660889,-79.099805],[-81.50293,-79.162891],[-81.222168,-79.297852],[-81.163184,-79.400391],[-80.891992,-79.501855],[-80.704785,-79.517188],[-80.534814,-79.512793],[-80.47876,-79.426172],[-80.488525,-79.320996],[-80.415771,-79.294531],[-80.151172,-79.268066],[-79.455664,-79.304395],[-76.499121,-79.325684],[-76.217676,-79.387207],[-76.105127,-79.465137],[-76.031592,-79.627051],[-76.343945,-79.820898],[-76.557861,-79.903516],[-76.904004,-79.955273],[-77.222266,-79.994141],[-77.701855,-80.00957],[-78.692236,-79.99541],[-79.6604,-79.996875],[-78.907129,-80.089648],[-78.176074,-80.166797],[-77.160449,-80.15293],[-76.757129,-80.13125],[-76.407324,-80.094922],[-76.259619,-80.160059],[-75.985645,-80.29502],[-75.822412,-80.338184],[-75.709033,-80.382715],[-75.555029,-80.530859],[-75.494531,-80.61748],[-75.34458,-80.718945],[-75.236523,-80.802637],[-75.075586,-80.860059],[-74.806592,-80.886523],[-74.511133,-80.837988],[-73.937842,-80.815918],[-73.38335,-80.893652],[-73.029492,-80.917285],[-72.553223,-80.853125],[-72.173584,-80.763867],[-71.380029,-80.682227],[-71.230664,-80.646777],[-71.017676,-80.619043],[-70.687891,-80.62627],[-70.560059,-80.646582],[-70.392432,-80.735449],[-70.239111,-80.856641],[-70.012451,-80.917773],[-69.772266,-80.961523],[-69.633984,-80.96582],[-69.181592,-81.004883],[-68.589844,-80.967969],[-68.326562,-81.004102],[-68.284619,-81.073828],[-68.14375,-81.130371],[-67.96543,-81.148242],[-65.573682,-81.460547],[-64.750146,-81.52168],[-63.477734,-81.553223],[-62.490234,-81.556738],[-62.353711,-81.57666],[-62.165381,-81.636133],[-62.541846,-81.67832],[-62.945898,-81.683984],[-63.553955,-81.667188],[-63.768652,-81.676074],[-64.232666,-81.659766],[-64.475684,-81.67168],[-64.696094,-81.652344],[-65.021582,-81.696484],[-65.619727,-81.729297],[-65.486621,-81.775],[-65.26377,-81.785645],[-64.810547,-81.802734],[-64.190186,-81.794824],[-64.137109,-81.869336],[-64.706152,-81.8875],[-65.916211,-81.902246],[-66.042285,-81.913867],[-66.133838,-81.953418],[-65.953027,-81.970996],[-65.843848,-81.993262],[-65.786621,-82.045508],[-65.913184,-82.183203],[-65.713965,-82.279199],[-65.571924,-82.294336],[-65.424414,-82.280371],[-65.170117,-82.318262],[-64.91958,-82.370508],[-64.396582,-82.374414],[-63.772852,-82.304297],[-63.466309,-82.306836],[-62.645312,-82.263086],[-61.90166,-82.271094],[-60.859082,-82.186719],[-60.687109,-82.188574],[-60.527734,-82.199902],[-60.817187,-82.275781],[-62.094531,-82.466602],[-62.553027,-82.50332],[-62.735645,-82.527344],[-62.630908,-82.620703],[-62.465576,-82.718164],[-62.128613,-82.822363],[-61.916992,-82.97666],[-61.708936,-83.009961],[-61.312842,-82.93916],[-61.218408,-82.991797],[-61.200391,-83.097949],[-61.303223,-83.18418],[-61.436328,-83.232422],[-61.530566,-83.279395],[-61.589844,-83.341211],[-61.425293,-83.395605],[-60.983203,-83.427539],[-60.397021,-83.440723],[-59.853809,-83.442383],[-59.516016,-83.458398],[-58.289941,-83.120703],[-57.797754,-82.958594],[-57.557129,-82.890234],[-57.353613,-82.840234],[-56.317871,-82.633398],[-56.075049,-82.570215],[-55.800684,-82.478418],[-55.294678,-82.464844],[-54.601123,-82.316211],[-53.986084,-82.200586],[-53.7396,-82.178418],[-53.557568,-82.169434],[-53.339062,-82.144531],[-52.798877,-82.153613],[-52.414941,-82.134863],[-51.730664,-82.061523],[-51.209668,-82.015234],[-50.653027,-81.975488],[-50.029248,-81.967676],[-48.360791,-81.892285],[-47.886816,-81.925195],[-47.360254,-82.004004],[-47.019873,-82.003223],[-46.566699,-81.979199],[-46.258057,-81.946973],[-46.119141,-82.039551],[-46.046387,-82.158691],[-46.198535,-82.271094],[-46.44834,-82.339844],[-46.516748,-82.45459],[-46.175293,-82.511621],[-45.788574,-82.494922],[-45.04375,-82.437988],[-44.454883,-82.365918],[-44.291797,-82.317773],[-44.064209,-82.331445],[-43.669336,-82.270117],[-43.180371,-82.017188],[-42.564551,-81.761621],[-42.046289,-81.597852],[-41.711572,-81.407715],[-41.433838,-81.297754],[-41.125879,-81.214844],[-40.914551,-81.172363],[-40.44082,-81.165137],[-39.762305,-81.032031],[-38.771729,-80.882324],[-38.010937,-80.954297],[-37.209277,-81.063867],[-36.812402,-80.974707],[-36.499512,-80.95957],[-36.233984,-80.920508],[-35.965771,-80.890918],[-35.775879,-80.812695],[-35.520557,-80.745703],[-35.327002,-80.650684],[-34.349951,-80.603418],[-33.328711,-80.54043],[-33.191309,-80.518652],[-33.057227,-80.531641],[-32.706201,-80.513867],[-32.255713,-80.460742],[-31.634229,-80.444629],[-31.312109,-80.450098],[-31.01543,-80.308105],[-30.425293,-80.279688],[-29.797363,-80.22334],[-29.531494,-80.181836],[-29.329102,-80.17207],[-24.240283,-80.061914],[-24.019824,-80.008984],[-23.574463,-79.964844],[-23.406836,-79.858984],[-24.088281,-79.814844],[-24.299854,-79.770801],[-24.533887,-79.75791],[-24.67041,-79.774609],[-25.258643,-79.7625],[-29.949316,-79.599023],[-30.049072,-79.585352],[-30.21123,-79.485254],[-30.17793,-79.304297],[-30.315918,-79.163086],[-30.645264,-79.124121],[-30.985156,-79.12793],[-31.412793,-79.145215],[-32.541846,-79.222168],[-32.994238,-79.228809],[-34.197363,-79.110254],[-34.994922,-78.977539],[-35.515967,-78.933008],[-35.890088,-78.843555],[-36.23916,-78.774219],[-36.265625,-78.615527],[-36.180859,-78.468359],[-35.509277,-78.041211],[-35.087598,-77.837109],[-34.80835,-77.820605],[-34.551465,-77.728516],[-34.290186,-77.521875],[-34.075781,-77.425391],[-33.591162,-77.31123],[-33.376758,-77.281641],[-32.614062,-77.14082],[-32.405273,-77.13623],[-32.063379,-77.159863],[-31.675781,-77.033105],[-30.489209,-76.762305],[-30.221973,-76.660352],[-29.891553,-76.597949],[-28.933643,-76.370313],[-28.079395,-76.257812],[-27.653076,-76.226367],[-27.134521,-76.157324],[-26.560059,-76.054688],[-26.059326,-75.957227],[-24.26958,-75.766992],[-23.197266,-75.717676],[-22.465479,-75.661035],[-21.948096,-75.694141],[-21.433789,-75.683105],[-20.989014,-75.634375],[-20.783301,-75.593945],[-20.4875,-75.491992],[-19.493018,-75.539941],[-18.850928,-75.470215],[-18.585156,-75.462598],[-18.30459,-75.431348],[-18.415137,-75.396484],[-18.516943,-75.389941],[-18.617285,-75.342383],[-18.749219,-75.24209],[-18.617285,-75.115332],[-18.516943,-75.051953],[-18.221191,-74.974512],[-18.068262,-74.862988],[-17.922754,-74.699219],[-17.43584,-74.379102],[-17.299023,-74.333887],[-16.989258,-74.319824],[-16.7271,-74.327637],[-16.429541,-74.323926],[-15.67251,-74.407324],[-15.53125,-74.375586],[-15.289746,-74.280859],[-15.08916,-74.163281],[-14.658936,-73.988867],[-14.573828,-73.9375],[-14.611426,-73.851758],[-15.259619,-73.888867],[-15.748828,-73.945605],[-16.220117,-73.915723],[-16.281885,-73.866992],[-16.180859,-73.830273],[-16.003125,-73.815918],[-15.935645,-73.757617],[-16.097461,-73.709082],[-16.387744,-73.681348],[-16.518848,-73.644043],[-16.507031,-73.555957],[-16.435205,-73.425684],[-16.279102,-73.388477],[-16.149023,-73.334473],[-15.802832,-73.152148],[-15.595996,-73.096777],[-15.007031,-73.047461],[-14.320996,-73.123047],[-14.164697,-73.102441],[-14.000098,-73.000586],[-14.168311,-72.843262],[-14.298242,-72.78457],[-14.297754,-72.733008],[-13.938965,-72.75625],[-13.602832,-72.79209],[-13.208594,-72.785059],[-12.746924,-72.628906],[-12.094727,-72.498145],[-11.777344,-72.444043],[-11.496973,-72.412891],[-11.346484,-72.281641],[-11.121387,-72.031543],[-10.958105,-71.901953],[-10.961035,-71.822363],[-11.009229,-71.75791],[-11.179346,-71.776855],[-11.333057,-71.785547],[-11.696875,-71.719336],[-12.148193,-71.613672],[-12.284521,-71.495117],[-12.351318,-71.389746],[-12.207812,-71.332227],[-12.073682,-71.296875],[-11.926123,-71.288672],[-11.663037,-71.33125],[-11.328076,-71.439746],[-11.160156,-71.481152],[-10.969824,-71.560059],[-10.825439,-71.55332],[-10.659473,-71.442676],[-10.520068,-71.295508],[-10.406641,-71.250293],[-10.230566,-71.200977],[-10.033496,-71.130664],[-10.122314,-71.060938],[-10.331006,-71.024023],[-10.359961,-70.982422],[-10.270605,-70.935742],[-10.09873,-70.926367],[-9.887988,-71.027344],[-9.599365,-71.095313],[-9.402344,-71.117578],[-9.230664,-71.174023],[-8.965918,-71.361328],[-8.646484,-71.672754],[-8.497705,-71.674805],[-8.216455,-71.64707],[-7.91582,-71.635352],[-7.713721,-71.546484],[-7.668994,-71.324316],[-7.590137,-71.22373],[-7.617969,-71.121484],[-7.756885,-71.017188],[-7.873486,-70.940332],[-7.854932,-70.88457],[-7.752734,-70.842773],[-7.619775,-70.829004],[-7.388135,-70.786914],[-7.031592,-70.835156],[-6.838184,-70.844531],[-6.54751,-70.816895],[-6.245215,-70.755762],[-5.936328,-70.712695],[-5.694727,-70.745313],[-5.587891,-70.856738],[-5.708691,-70.968262],[-5.903809,-71.051855],[-6.080273,-71.154102],[-6.126758,-71.265625],[-6.11748,-71.325977],[-5.950049,-71.341602],[-4.450146,-71.327734],[-4.253223,-71.338477],[-3.994824,-71.338867],[-3.713184,-71.374609],[-3.239648,-71.360449],[-2.812012,-71.320996],[-2.610254,-71.320801],[-2.261328,-71.357129],[-2.0146,-71.433398],[-1.500635,-71.412305],[-1.354248,-71.386816],[-1.216357,-71.28418],[-1.067773,-71.265625],[-0.89585,-71.349219],[-0.840088,-71.539746],[-0.759863,-71.630273],[-0.543164,-71.712695],[-0.326953,-71.641895],[-0.18457,-71.558887],[0.154199,-71.397949],[0.538477,-71.274219],[0.834961,-71.202344],[1.552246,-71.080273],[1.908691,-71.003613],[2.609473,-70.900098],[3.506934,-70.844434],[5.113086,-70.655664],[5.643945,-70.636328],[6.508008,-70.586426],[6.950977,-70.535254],[7.401172,-70.494434],[7.676758,-70.356348],[8.306738,-70.461621],[8.523047,-70.473828],[8.81748,-70.39082],[9.141602,-70.183691],[9.613477,-70.269043],[9.885547,-70.40293],[10.217676,-70.50791],[10.968848,-70.687695],[11.203516,-70.728711],[11.70127,-70.766602],[11.833594,-70.736523],[12.067969,-70.616504],[12.308789,-70.443262],[12.461621,-70.370117],[12.681934,-70.308691],[12.929395,-70.213379],[12.864551,-70.162305],[12.723438,-70.143652],[12.595117,-70.117383],[12.62627,-70.065625],[13.065625,-70.053613],[13.297949,-70.22959],[13.532617,-70.2875],[13.822656,-70.343164],[14.491797,-70.299609],[15.063867,-70.294727],[15.562891,-70.330762],[15.806934,-70.324023],[16.025195,-70.193457],[16.381055,-70.145117],[16.584863,-70.203809],[16.70918,-70.397266],[17.166699,-70.450879],[18.124609,-70.540332],[18.232031,-70.518262],[18.351367,-70.415527],[18.432617,-70.289941],[18.627344,-70.269434],[18.877246,-70.201367],[19.009375,-70.212109],[19.196387,-70.293164],[19.132324,-70.491895],[19.026563,-70.674023],[19.15293,-70.820898],[19.265137,-70.902344],[19.409277,-70.916992],[19.651855,-70.920605],[19.944238,-70.910156],[20.128125,-70.917578],[21.070801,-70.843457],[21.186035,-70.680566],[21.337305,-70.495117],[21.70498,-70.258496],[21.848926,-70.276758],[21.962305,-70.300391],[22.21582,-70.417285],[22.366016,-70.475098],[22.396484,-70.561328],[22.233691,-70.642676],[22.277832,-70.695605],[22.44541,-70.739746],[22.979004,-70.810352],[23.149902,-70.796289],[23.406836,-70.723242],[23.664844,-70.575],[23.803613,-70.40459],[24.024121,-70.413379],[24.235742,-70.448633],[24.385742,-70.536914],[24.385742,-70.704395],[24.588379,-70.82041],[24.756738,-70.89209],[25.187402,-70.970996],[25.650195,-70.990625],[25.974121,-71.037402],[26.498828,-71.019531],[26.754395,-70.967285],[26.917969,-70.953711],[27.206836,-70.910938],[27.508594,-70.813281],[27.697754,-70.772461],[28.386426,-70.682031],[28.911523,-70.583105],[29.463867,-70.40625],[30.00332,-70.3],[30.834082,-70.246289],[31.062891,-70.224707],[31.378809,-70.225781],[32.15957,-70.099805],[32.456543,-70.025977],[32.621289,-70.000586],[32.809766,-69.909375],[32.911523,-69.733691],[32.989355,-69.624219],[32.975977,-69.516992],[32.903125,-69.378711],[32.737988,-69.254883],[32.567578,-69.074219],[32.641602,-68.868945],[32.776172,-68.783105],[33.121484,-68.68916],[33.465625,-68.670703],[33.853516,-68.683008],[34.192871,-68.702441],[34.219336,-68.790625],[34.074219,-68.885352],[33.884863,-68.979297],[33.77207,-69.02002],[33.813672,-69.099316],[34.058594,-69.110547],[34.595898,-69.094531],[34.749512,-69.167676],[35.131348,-69.486914],[35.224805,-69.637305],[35.357031,-69.681348],[35.567676,-69.660059],[36.017773,-69.661816],[36.331152,-69.639355],[36.585938,-69.637891],[36.71875,-69.652246],[36.855762,-69.725586],[37.114844,-69.810449],[37.374512,-69.747852],[37.559766,-69.718359],[37.787109,-69.725684],[38.144336,-69.824219],[38.499414,-70.056152],[38.885547,-70.171875],[38.911719,-70.097852],[38.859277,-70.006055],[39.01875,-69.924219],[39.211328,-69.785938],[39.487012,-69.608008],[39.705078,-69.425586],[39.762305,-69.17334],[39.863867,-68.966992],[40.041699,-68.867773],[40.215625,-68.804883],[40.483887,-68.738867],[40.81709,-68.723633],[41.132715,-68.575098],[41.356348,-68.514941],[41.824609,-68.432617],[42.408789,-68.351855],[42.819531,-68.123242],[42.960938,-68.095313],[43.170898,-68.059766],[43.554102,-68.045605],[44.177539,-67.972461],[44.372852,-67.961328],[44.699805,-67.904297],[44.989551,-67.769238],[45.196973,-67.731152],[45.569336,-67.736426],[45.887695,-67.659766],[46.153906,-67.657031],[46.399023,-67.617578],[46.436523,-67.533398],[46.319727,-67.476562],[46.317285,-67.401953],[46.454102,-67.303613],[46.559668,-67.268164],[46.883887,-67.274805],[47.154395,-67.357227],[47.351562,-67.361914],[47.40293,-67.40918],[47.231348,-67.468262],[47.117188,-67.572656],[47.31416,-67.664941],[47.489844,-67.72793],[47.703516,-67.716211],[47.958594,-67.660059],[48.209961,-67.699316],[48.32168,-67.785254],[48.32168,-67.91748],[48.374512,-67.988086],[48.550977,-67.926367],[48.648047,-67.794043],[48.62002,-67.625195],[48.630371,-67.520605],[49.05293,-67.352441],[49.219336,-67.226855],[48.923047,-67.199707],[48.713672,-67.216895],[48.598438,-67.171289],[48.465234,-67.043457],[48.830273,-66.938281],[49.24707,-66.941602],[49.488672,-67.030957],[50.006152,-67.175195],[50.292969,-67.172168],[50.553027,-67.194336],[50.605957,-67.150195],[50.508887,-66.938574],[50.520898,-66.82002],[50.306055,-66.75332],[50.244336,-66.603418],[50.332422,-66.444629],[50.588281,-66.356445],[50.936914,-66.31543],[51.6875,-66.072168],[51.88457,-66.02002],[52.378223,-65.969141],[52.955273,-65.945508],[53.671777,-65.858691],[54.947852,-65.916309],[55.29043,-65.954199],[55.504492,-66.002637],[55.710352,-66.07998],[55.974023,-66.209375],[56.361523,-66.372754],[56.859375,-66.423438],[57.000293,-66.474805],[57.185449,-66.613281],[56.986523,-66.704395],[56.823633,-66.712695],[56.510059,-66.659277],[56.294531,-66.603418],[56.145898,-66.626074],[56.291895,-66.721094],[56.453223,-66.779785],[56.479688,-66.85918],[56.391406,-66.973828],[55.802734,-67.199316],[56.154883,-67.264551],[56.365918,-67.2125],[56.562109,-67.115918],[56.760059,-67.07334],[56.891602,-67.05625],[57.361133,-67.052637],[57.627441,-67.014063],[57.828125,-67.041309],[58.026758,-67.103418],[58.31748,-67.163086],[58.737402,-67.22959],[59.250781,-67.484961],[59.650195,-67.458594],[59.867578,-67.403125],[60.482031,-67.385156],[61.012109,-67.499512],[61.309082,-67.540234],[62.173926,-67.575488],[62.687891,-67.647559],[63.017676,-67.561816],[63.237598,-67.526855],[63.699023,-67.508301],[63.93125,-67.526074],[64.573633,-67.62041],[65.70752,-67.716406],[66.488379,-67.765527],[67.174805,-67.767969],[67.502441,-67.810156],[68.098535,-67.854102],[68.32793,-67.889551],[68.899512,-67.862109],[69.167188,-67.824805],[69.416406,-67.742969],[69.55918,-67.763184],[69.655957,-67.864551],[69.603027,-68.041016],[69.704492,-68.16084],[69.788672,-68.279492],[69.907422,-68.379492],[69.982227,-68.464258],[69.92793,-68.535352],[69.761914,-68.598535],[69.53418,-68.736914],[69.546875,-68.856641],[69.645605,-68.932227],[69.530762,-69.024023],[69.614648,-69.153711],[69.629492,-69.231641],[69.549414,-69.29375],[69.371875,-69.331445],[69.064941,-69.337402],[68.90625,-69.372754],[68.879785,-69.469727],[68.95918,-69.540234],[69.135547,-69.57793],[69.188477,-69.654883],[69.162012,-69.769629],[69.082617,-69.866602],[68.920508,-69.911816],[68.74375,-69.921387],[68.415234,-69.902148],[68.178125,-69.837305],[68.027148,-69.894434],[67.916992,-69.952734],[67.575391,-70.087891],[67.416602,-70.177148],[67.267969,-70.273145],[67.658984,-70.325977],[67.94082,-70.422852],[68.559375,-70.4125],[68.757422,-70.369922],[69.020898,-70.325195],[69.162012,-70.333984],[69.250195,-70.431055],[69.19668,-70.585254],[69.188379,-70.70459],[68.872754,-71.035156],[68.767969,-71.090723],[68.62373,-71.181445],[68.447559,-71.251563],[68.310547,-71.286523],[68.037402,-71.391016],[67.87334,-71.579785],[67.693555,-71.736719],[67.432227,-72.00293],[67.281055,-72.290625],[67.214844,-72.461426],[67.113379,-72.641113],[66.89209,-72.948633],[66.746484,-72.999805],[66.497656,-73.125488],[66.569141,-73.20918],[66.764746,-73.216895],[67.003125,-73.236426],[67.32207,-73.300293],[67.748633,-73.168164],[67.971387,-73.085645],[68.015527,-72.918164],[67.971387,-72.750586],[68.106836,-72.650684],[68.419824,-72.515039],[69.157031,-72.418652],[69.309473,-72.408789],[69.554688,-72.374512],[69.769727,-72.253613],[69.962109,-72.13291],[70.294336,-72.055371],[70.572852,-71.930957],[70.616211,-71.84209],[70.731641,-71.822266],[71.078809,-71.736719],[71.167871,-71.671582],[71.276758,-71.623926],[71.349219,-71.513867],[71.378809,-71.30918],[71.464844,-71.15459],[71.633887,-70.949219],[71.771387,-70.80127],[71.904883,-70.706641],[72.262598,-70.656738],[72.417969,-70.598633],[72.622363,-70.47207],[72.760352,-70.395703],[72.744336,-70.23916],[72.82207,-70.095898],[73.041406,-70.009668],[73.324805,-69.848926],[73.676074,-69.825781],[73.942188,-69.743164],[74.226758,-69.800391],[74.571094,-69.87959],[75.147852,-69.855469],[75.423828,-69.893066],[75.635547,-69.848926],[75.820703,-69.725488],[75.891211,-69.575586],[76.111719,-69.487402],[76.359766,-69.490234],[76.770117,-69.339648],[77.191992,-69.205957],[77.540918,-69.174414],[77.81748,-69.068945],[78.015137,-68.891895],[78.228516,-68.756152],[78.488965,-68.625781],[78.563477,-68.39375],[78.72627,-68.277832],[79.035156,-68.175391],[79.287793,-68.119336],[80.363086,-67.946875],[81.187402,-67.83125],[82.016992,-67.690039],[82.273242,-67.691699],[82.607031,-67.613086],[83.157813,-67.610547],[83.304297,-67.603027],[83.493652,-67.441211],[83.903711,-67.291992],[84.160742,-67.244141],[84.485156,-67.114453],[84.74834,-67.102246],[85.116797,-67.125586],[85.429004,-67.160938],[85.710742,-67.161328],[86.118359,-67.05498],[86.750195,-67.037109],[86.946582,-66.985547],[87.084863,-66.940137],[87.980273,-66.788477],[88.31416,-66.81748],[88.789453,-66.791992],[89.076563,-66.799414],[89.351758,-66.818164],[89.698438,-66.823047],[90.292969,-66.769629],[90.547266,-66.734277],[91.02168,-66.602832],[91.546094,-66.57207],[91.777051,-66.5375],[92.073438,-66.50791],[92.312305,-66.558594],[92.48584,-66.604297],[92.591992,-66.614453],[92.730566,-66.624414],[93.074902,-66.571094],[93.358008,-66.585449],[93.72168,-66.642969],[93.964258,-66.689648],[94.08877,-66.688867],[94.313477,-66.647168],[94.586816,-66.543555],[94.839844,-66.501367],[95.083984,-66.527441],[95.247949,-66.571191],[95.541016,-66.630957],[95.991406,-66.621191],[96.42373,-66.599609],[96.788867,-66.550586],[97.100586,-66.499414],[97.388477,-66.578613],[97.719824,-66.607324],[98.257617,-66.46748],[98.461719,-66.498535],[98.603125,-66.534766],[98.720117,-66.553125],[98.858887,-66.670801],[99.370117,-66.648242],[99.824316,-66.548633],[100.211719,-66.473926],[100.591211,-66.425195],[100.889063,-66.358008],[101.327148,-66.100488],[101.320898,-66.020898],[101.381348,-65.973047],[101.474414,-65.951172],[102.174121,-65.954199],[102.392188,-65.932617],[102.674219,-65.865137],[103.166602,-65.916895],[103.63877,-65.998926],[103.763477,-65.989746],[103.951172,-65.988086],[104.289062,-66.03916],[104.666992,-66.136816],[105.000391,-66.164062],[106.386914,-66.410645],[107.170898,-66.47041],[107.565527,-66.552344],[107.667285,-66.580371],[107.785059,-66.664062],[107.991699,-66.67207],[108.15791,-66.639063],[108.376172,-66.76582],[108.910059,-66.861914],[109.462793,-66.908691],[109.82373,-66.833691],[110.437012,-66.621094],[110.622266,-66.524023],[110.587012,-66.312305],[110.906738,-66.07666],[111.453125,-65.960938],[112.130273,-65.900098],[112.547852,-65.847949],[113.099414,-65.799902],[113.367969,-65.84873],[113.502148,-65.886328],[113.709766,-65.92959],[113.954492,-66.060449],[114.336914,-66.360156],[114.618555,-66.467969],[114.869531,-66.476953],[115.082422,-66.492969],[115.310352,-66.56084],[115.635352,-66.771191],[115.441895,-66.958008],[115.27373,-67.02793],[114.570605,-67.108496],[114.259766,-67.172266],[113.991211,-67.211914],[113.9125,-67.367676],[114.026563,-67.441211],[114.319043,-67.405664],[114.65791,-67.387891],[114.925781,-67.356543],[115.171875,-67.307813],[115.38418,-67.238086],[115.885254,-67.201953],[116.214648,-67.142773],[116.509082,-67.10791],[116.713477,-67.047168],[116.923633,-67.055469],[117.131934,-67.114355],[117.297852,-67.109277],[117.744727,-67.128516],[117.951953,-67.085352],[118.138672,-67.082422],[118.325781,-67.115039],[118.518945,-67.160938],[118.713867,-67.17168],[118.964648,-67.144824],[119.318262,-67.070801],[119.767969,-66.991504],[120.187305,-66.966211],[120.289258,-66.966602],[120.374805,-66.983789],[119.953711,-67.075879],[119.280664,-67.199219],[118.92168,-67.319727],[119.133008,-67.370703],[120.400391,-67.236035],[120.978711,-67.135742],[121.487598,-67.090723],[121.613184,-67.057031],[122.033105,-66.901758],[122.182813,-66.859473],[122.633008,-66.804883],[123.22168,-66.745117],[123.666602,-66.676855],[123.969336,-66.608105],[124.196191,-66.600781],[124.370508,-66.652246],[124.597852,-66.708203],[124.821582,-66.694531],[125.095117,-66.641113],[125.286328,-66.51582],[125.397949,-66.424414],[125.603027,-66.393359],[125.865625,-66.364453],[126.077148,-66.395508],[126.42373,-66.462402],[126.664746,-66.497559],[126.873633,-66.759375],[127.36543,-66.989648],[127.541211,-67.051074],[127.968066,-67.02793],[128.430566,-67.119141],[128.627832,-67.107129],[128.816406,-67.080371],[128.982422,-67.098242],[129.236914,-67.041602],[129.5,-66.75293],[129.741211,-66.468555],[129.975781,-66.344824],[130.120508,-66.291504],[130.300586,-66.268457],[130.578516,-66.208594],[130.951758,-66.191406],[131.232031,-66.215527],[131.830859,-66.23584],[132.320312,-66.16543],[132.874316,-66.178027],[133.148242,-66.094824],[133.444531,-66.081445],[133.842773,-66.153613],[133.95752,-66.204297],[134.178906,-66.277051],[134.231836,-66.347656],[134.289453,-66.476758],[134.398145,-66.479883],[134.769727,-66.35332],[134.971484,-66.330176],[135.351953,-66.127148],[135.554785,-66.180078],[136.009375,-66.266797],[136.193945,-66.292188],[136.55332,-66.438965],[136.739648,-66.407715],[136.88916,-66.339648],[137.33623,-66.346484],[137.753809,-66.406445],[137.925781,-66.456934],[138.139941,-66.543945],[138.270996,-66.564453],[138.376465,-66.54043],[139.241602,-66.574023],[139.613184,-66.637598],[139.900098,-66.715137],[140.901563,-66.751953],[141.285938,-66.831836],[141.517188,-66.794043],[141.972852,-66.806738],[142.158984,-66.873633],[142.32666,-66.94834],[142.6875,-67.012793],[142.888379,-67.000098],[143.168945,-66.948633],[143.448242,-66.876758],[143.730371,-66.876758],[143.862695,-66.938574],[143.911133,-67.090723],[144.117676,-67.087695],[144.347852,-67.017969],[144.550586,-67.035547],[144.621191,-67.141406],[144.515332,-67.28252],[144.259668,-67.478711],[144.153711,-67.644141],[143.941992,-67.794043],[143.977344,-67.864551],[144.189063,-67.899805],[144.404297,-67.794238],[144.879102,-67.720898],[145.12793,-67.625977],[145.556445,-67.590918],[145.975195,-67.624219],[146.276367,-67.750879],[146.827832,-67.964648],[146.852441,-68.041016],[146.896582,-68.120313],[146.878223,-68.191211],[146.797656,-68.273633],[147.093652,-68.368652],[147.353809,-68.384277],[147.568555,-68.375098],[148.45625,-68.466992],[148.880566,-68.431152],[149.262695,-68.431348],[149.716895,-68.417773],[150.065527,-68.419922],[150.342188,-68.435742],[150.671973,-68.40293],[150.935938,-68.358496],[151.068262,-68.384961],[151.121094,-68.623047],[151.138867,-68.76416],[151.28877,-68.81709],[151.447559,-68.76416],[151.562109,-68.693652],[152.265234,-68.725586],[152.545508,-68.72959],[152.81416,-68.767676],[153.081836,-68.856836],[153.339941,-68.817969],[153.495703,-68.764355],[153.705273,-68.728906],[153.766992,-68.640625],[153.792383,-68.493359],[153.784668,-68.349609],[153.908008,-68.323145],[154.031543,-68.349609],[154.199707,-68.417871],[154.576367,-68.634277],[154.866016,-68.774316],[154.9875,-68.841309],[155.163965,-68.894629],[155.520313,-69.024414],[156.010938,-69.077832],[156.488672,-69.183008],[157.046387,-69.17627],[157.481348,-69.308691],[157.775781,-69.204688],[157.93252,-69.180762],[158.157813,-69.208887],[158.432617,-69.299414],[158.647168,-69.320117],[159.386328,-69.468359],[159.783984,-69.521875],[159.930957,-69.630566],[160.125781,-69.734277],[160.125781,-69.840137],[160.209668,-69.974902],[160.651855,-70.080566],[160.826758,-70.182031],[161.037012,-70.317188],[161.424512,-70.826758],[161.625098,-70.916113],[161.916113,-70.907324],[162.189453,-71.039551],[162.277734,-71.021875],[162.286523,-70.969043],[162.039648,-70.625],[162.021973,-70.439844],[162.216016,-70.333984],[162.674805,-70.30459],[163.026465,-70.501367],[163.34873,-70.620898],[163.566504,-70.642285],[163.998438,-70.636523],[164.403223,-70.510449],[164.716016,-70.556543],[165.209375,-70.570801],[165.853906,-70.645313],[166.132031,-70.632812],[166.626953,-70.664258],[167.228809,-70.771289],[167.569434,-70.810254],[167.640039,-70.854395],[167.798828,-70.924902],[167.878125,-71.013086],[167.966309,-71.09248],[168.172656,-71.183203],[168.382812,-71.197363],[168.797852,-71.274805],[169.66377,-71.511328],[169.976953,-71.580664],[170.162305,-71.630469],[170.250488,-71.56875],[170.276855,-71.443945],[170.435742,-71.41875],[170.60332,-71.604004],[170.779688,-71.745117],[170.859082,-71.868555],[170.675391,-71.968555],[170.409277,-71.947949],[170.224023,-71.947949],[170.030078,-72.115527],[169.953516,-72.402832],[170.127148,-72.397754],[170.259375,-72.371289],[170.28584,-72.477148],[170.206445,-72.565332],[170.047754,-72.600586],[169.774902,-72.533789],[169.440332,-72.486816],[169.072363,-72.46875],[168.718848,-72.384473],[168.576172,-72.379102],[168.428418,-72.383398],[168.62168,-72.472656],[168.82002,-72.552441],[169.269531,-72.621289],[169.828613,-72.728809],[169.844824,-72.794629],[169.712109,-72.876953],[169.54502,-73.050391],[169.033398,-73.200391],[168.735938,-73.091211],[168.381348,-73.065918],[168.204492,-73.129785],[167.853027,-73.122461],[167.155664,-73.147266],[166.882812,-73.01123],[166.452832,-72.936035],[166.466992,-72.997461],[166.833984,-73.224316],[167.225586,-73.275781],[167.61582,-73.336816],[167.709082,-73.394238],[167.53418,-73.447266],[167.296484,-73.440039],[166.996094,-73.544336],[166.428809,-73.526953],[166.159375,-73.533789],[166.001074,-73.57666],[165.860156,-73.592676],[165.970605,-73.630762],[166.106055,-73.735156],[165.913281,-73.822852],[165.733691,-73.866699],[165.548926,-73.846094],[165.346973,-73.879395],[165.249902,-73.782422],[165.244531,-73.571191],[165.129492,-73.382617],[165.004883,-73.374512],[164.812988,-73.396777],[164.749609,-73.558789],[164.887695,-73.837695],[164.979883,-73.925879],[164.905957,-74.00293],[164.775684,-74.028516],[165.037207,-74.263477],[165.263086,-74.426172],[165.399805,-74.479199],[165.408594,-74.558594],[165.302832,-74.59375],[165.001172,-74.562695],[164.853027,-74.57832],[164.688965,-74.568359],[164.410742,-74.533398],[164.174023,-74.523242],[163.93584,-74.567383],[163.735254,-74.56377],[163.556543,-74.417383],[163.397852,-74.382129],[163.265527,-74.42627],[163.167383,-74.601953],[162.96123,-74.656055],[162.752051,-74.736133],[162.604102,-74.823145],[162.533594,-75.16709],[162.410059,-75.237598],[162.225586,-75.23457],[162.087793,-75.261621],[161.910352,-75.233887],[161.67959,-75.217773],[160.910742,-75.334668],[161.03291,-75.395898],[161.227344,-75.386133],[161.903516,-75.404199],[162.189648,-75.466895],[162.239063,-75.62168],[162.351953,-75.686523],[162.577637,-75.758008],[162.754004,-75.793262],[162.815723,-75.846191],[162.745117,-75.951953],[162.648242,-76.049023],[162.436523,-76.154883],[162.498242,-76.207715],[162.727539,-76.225391],[162.824609,-76.463574],[162.674609,-76.569336],[162.745215,-76.65752],[162.762793,-76.745703],[162.60957,-76.828711],[162.489453,-76.869238],[162.450293,-76.955664],[162.679102,-77.006738],[162.850195,-77.023535],[163.086914,-77.032324],[163.249902,-77.126465],[163.458496,-77.269336],[163.607617,-77.387793],[163.619141,-77.582324],[163.766211,-77.699902],[164.045215,-77.774609],[164.036426,-77.853027],[164.232031,-77.877051],[164.420898,-77.883496],[164.491504,-77.954004],[164.429688,-78.042188],[164.107813,-78.146777],[163.977637,-78.223828],[164.297363,-78.23623],[164.628125,-78.315625],[165.050586,-78.226074],[165.274023,-78.128613],[165.417578,-78.042188],[165.524023,-78.063574],[165.53418,-78.153809],[165.662988,-78.305664],[166.208594,-78.45166],[166.510352,-78.497363],[166.801172,-78.521582],[167.058008,-78.518457],[167.130273,-78.606152],[167.049023,-78.686035],[166.85,-78.679883],[166.524609,-78.694922],[166.286523,-78.627832],[166.116797,-78.571094],[164.634766,-78.603223],[164.300586,-78.630078],[163.901758,-78.71709],[163.503125,-78.758594],[162.895117,-78.844824],[162.639453,-78.897754],[161.974512,-78.694238],[161.757422,-78.544922],[161.669238,-78.536133],[161.510449,-78.571387],[161.501758,-78.677246],[161.813379,-78.907422],[161.951465,-78.968262],[161.951465,-79.02998],[161.864258,-79.060938],[161.737305,-79.059961],[161.546094,-79.015039],[161.190527,-78.978711],[160.873535,-79.049707],[160.482715,-79.201465],[160.567383,-79.302344],[160.670215,-79.358887],[160.646094,-79.426855],[160.20918,-79.554395],[160.067969,-79.56123],[159.975879,-79.585645],[160.083594,-79.63252],[160.322754,-79.635547],[160.346289,-79.691504],[160.264844,-79.736621],[159.871875,-79.789844],[159.896484,-79.858984],[160.111426,-79.89248],[160.387305,-79.879492],[160.558008,-79.92959],[160.558789,-80.010547],[160.381738,-80.054492],[160.179395,-80.088086],[158.76748,-80.293359],[158.560352,-80.348926],[158.573633,-80.423438],[159.065137,-80.442578],[160.542188,-80.425],[160.637305,-80.449902],[160.60332,-80.507617],[160.521289,-80.583398],[160.601367,-80.636523],[160.823242,-80.674023],[160.830273,-80.729883],[160.72002,-80.753125],[160.502539,-80.779297],[160.260156,-80.786719],[160.275781,-80.846777],[160.607227,-80.901172],[160.716797,-80.907422],[160.72793,-81.112891],[160.716699,-81.199609],[160.540039,-81.241699],[160.478613,-81.270117],[160.469824,-81.340625],[160.907813,-81.390234],[161.582129,-81.609766],[161.730176,-81.610449],[161.996094,-81.653027],[162.425293,-81.764941],[162.57666,-81.832031],[162.821191,-81.866211],[162.854395,-81.920703],[163.004297,-81.968945],[163.602344,-82.120605],[163.680078,-82.187305],[162.426563,-82.314453],[161.166504,-82.407813],[161.283203,-82.489941],[162.64375,-82.481543],[163.011816,-82.534961],[163.174707,-82.518945],[163.268555,-82.463281],[164.001367,-82.396777],[164.747168,-82.354395],[164.980078,-82.384961],[165.981641,-82.629688],[166.445898,-82.722168],[166.742188,-82.757031],[166.956738,-82.764648],[167.116309,-82.80127],[167.271289,-82.879395],[167.232617,-82.952344],[167.297461,-82.98584],[167.404492,-82.998828],[167.601953,-83.047461],[167.827539,-83.030762],[168.091797,-82.974707],[168.275977,-82.987207],[168.607324,-83.065332],[168.481641,-83.126758],[168.408398,-83.155078],[168.32002,-83.210742],[168.240234,-83.229883],[167.973047,-83.243164],[167.825391,-83.242969],[167.674414,-83.231445],[167.657617,-83.272168],[167.842773,-83.316211],[168.110059,-83.362012],[169.837891,-83.399023],[170.332031,-83.478809],[170.81748,-83.435742],[171.035742,-83.448438],[171.220703,-83.475],[171.289258,-83.555469],[171.537109,-83.581348],[171.917188,-83.644043],[172.450098,-83.675391],[172.873926,-83.673145],[173.397266,-83.758789],[173.661816,-83.760938],[173.822363,-83.810156],[175.011035,-83.839063],[175.187402,-83.877441],[175.322852,-83.940039],[175.605762,-83.967578],[175.91123,-83.973145],[177.581055,-84.074902],[178.208594,-84.129883],[178.352637,-84.12666],[178.495996,-84.135742],[178.944434,-84.181445],[179.403027,-84.206152],[179.620313,-84.268359],[180,-84.351562],[180,-89.998926],[178.59375,-89.998926],[177.1875,-89.998926],[175.78125,-89.998926],[174.375,-89.998926],[172.96875,-89.998926],[171.5625,-89.998926],[170.15625,-89.998926],[168.75,-89.998926],[167.34375,-89.998926],[165.9375,-89.998926],[164.531152,-89.998926],[163.125,-89.998926],[161.71875,-89.998926],[160.3125,-89.998926],[158.90625,-89.998926],[157.5,-89.998926],[156.09375,-89.998926],[154.6875,-89.998926],[153.28125,-89.998926],[151.875,-89.998926],[150.46875,-89.998926],[149.0625,-89.998926],[147.65625,-89.998926],[146.25,-89.998926],[144.84375,-89.998926],[143.4375,-89.998926],[142.03125,-89.998926],[140.625,-89.998926],[139.21875,-89.998926],[137.8125,-89.998926],[136.40625,-89.998926],[135,-89.998926],[133.59375,-89.998926],[132.1875,-89.998926],[130.78125,-89.998926],[129.375,-89.998926],[127.96875,-89.998926],[126.562402,-89.998926],[125.15625,-89.998926],[123.75,-89.998926],[122.34375,-89.998926],[120.9375,-89.998926],[119.53125,-89.998926],[118.125,-89.998926],[116.71875,-89.998926],[115.3125,-89.998926],[113.90625,-89.998926],[112.5,-89.998926],[111.093848,-89.998926],[109.6875,-89.998926],[108.28125,-89.998926],[106.875,-89.998926],[105.46875,-89.998926],[104.0625,-89.998926],[102.65625,-89.998926],[101.25,-89.998926],[99.84375,-89.998926],[98.4375,-89.998926],[97.03125,-89.998926],[95.625,-89.998926],[94.21875,-89.998926],[92.8125,-89.998926],[91.40625,-89.998926],[90,-89.998926],[88.59375,-89.998926],[87.1875,-89.998926],[85.78125,-89.998926],[84.375,-89.998926],[82.96875,-89.998926],[81.5625,-89.998926],[80.15625,-89.998926],[78.75,-89.998926],[77.34375,-89.998926],[75.9375,-89.998926],[74.53125,-89.998926],[73.125,-89.998926],[71.71875,-89.998926],[70.3125,-89.998926],[68.90625,-89.998926],[67.5,-89.998926],[66.09375,-89.998926],[64.6875,-89.998926],[63.28125,-89.998926],[61.875,-89.998926],[60.46875,-89.998926],[59.0625,-89.998926],[57.65625,-89.998926],[56.25,-89.998926],[54.84375,-89.998926],[53.4375,-89.998926],[52.03125,-89.998926],[50.625,-89.998926],[49.21875,-89.998926],[47.8125,-89.998926],[46.40625,-89.998926],[45,-89.998926],[43.59375,-89.998926],[42.1875,-89.998926],[40.78125,-89.998926],[39.375,-89.998926],[37.96875,-89.998926],[36.5625,-89.998926],[35.15625,-89.998926],[33.75,-89.998926],[32.34375,-89.998926],[30.9375,-89.998926],[29.53125,-89.998926],[28.124902,-89.998926],[26.71875,-89.998926],[25.3125,-89.998926],[23.906152,-89.998926],[22.5,-89.998926],[21.09375,-89.998926],[19.6875,-89.998926],[18.281152,-89.998926],[16.875,-89.998926],[15.46875,-89.998926],[14.0625,-89.998926],[12.65625,-89.998926],[11.25,-89.998926],[9.84375,-89.998926],[8.4375,-89.998926],[7.03125,-89.998926],[5.625,-89.998926],[4.21875,-89.998926],[2.8125,-89.998926],[1.40625,-89.998926],[0,-89.998926],[-1.40625,-89.998926],[-2.8125,-89.998926],[-4.218799,-89.998926],[-5.625049,-89.998926],[-7.03125,-89.998926],[-8.437549,-89.998926],[-9.843799,-89.998926],[-11.250049,-89.998926],[-12.65625,-89.998926],[-14.0625,-89.998926],[-15.46875,-89.998926],[-16.875,-89.998926],[-18.28125,-89.998926],[-19.6875,-89.998926],[-21.09375,-89.998926],[-22.5,-89.998926],[-23.90625,-89.998926],[-25.312549,-89.998926],[-26.71875,-89.998926],[-28.125,-89.998926],[-29.53125,-89.998926],[-30.9375,-89.998926],[-32.34375,-89.998926],[-33.75,-89.998926],[-35.15625,-89.998926],[-36.5625,-89.998926],[-37.96875,-89.998926],[-39.375,-89.998926],[-40.78125,-89.998926],[-42.1875,-89.998926],[-43.593799,-89.998926],[-45,-89.998926],[-46.40625,-89.998926],[-47.8125,-89.998926],[-49.21875,-89.998926],[-50.625,-89.998926],[-52.03125,-89.998926],[-53.437549,-89.998926],[-54.84375,-89.998926],[-56.25,-89.998926],[-57.65625,-89.998926],[-59.0625,-89.998926],[-60.46875,-89.998926],[-61.875,-89.998926],[-63.28125,-89.998926],[-64.6875,-89.998926],[-66.09375,-89.998926],[-67.5,-89.998926],[-68.90625,-89.998926],[-70.3125,-89.998926],[-71.71875,-89.998926],[-73.125,-89.998926],[-74.53125,-89.998926],[-75.9375,-89.998926],[-77.34375,-89.998926],[-78.75,-89.998926],[-80.15625,-89.998926],[-81.5625,-89.998926],[-82.96875,-89.998926],[-84.375,-89.998926],[-85.78125,-89.998926],[-87.1875,-89.998926],[-88.59375,-89.998926],[-90,-89.998926],[-91.40625,-89.998926],[-92.8125,-89.998926],[-94.21875,-89.998926],[-95.625,-89.998926],[-97.03125,-89.998926],[-98.4375,-89.998926],[-99.84375,-89.998926],[-101.25,-89.998926],[-102.65625,-89.998926],[-104.0625,-89.998926],[-105.46875,-89.998926],[-106.875,-89.998926],[-108.28125,-89.998926],[-109.6875,-89.998926],[-111.09375,-89.998926],[-112.5,-89.998926],[-113.90625,-89.998926],[-115.3125,-89.998926],[-116.71875,-89.998926],[-118.125,-89.998926],[-119.53125,-89.998926],[-120.9375,-89.998926],[-122.34375,-89.998926],[-123.75,-89.998926],[-125.15625,-89.998926],[-126.5625,-89.998926],[-127.96875,-89.998926],[-129.375,-89.998926],[-130.78125,-89.998926],[-132.1875,-89.998926],[-133.59375,-89.998926],[-135,-89.998926],[-136.40625,-89.998926],[-137.8125,-89.998926],[-139.21875,-89.998926],[-140.625,-89.998926],[-142.03125,-89.998926],[-143.4375,-89.998926],[-144.84375,-89.998926],[-146.25,-89.998926],[-147.65625,-89.998926],[-149.0625,-89.998926],[-150.46875,-89.998926],[-151.875,-89.998926],[-153.28125,-89.998926],[-154.687549,-89.998926],[-156.09375,-89.998926],[-157.5,-89.998926],[-158.90625,-89.998926],[-160.3125,-89.998926],[-161.718799,-89.998926],[-163.125,-89.998926],[-164.53125,-89.998926],[-165.937549,-89.998926],[-167.343799,-89.998926],[-168.750049,-89.998926],[-170.156299,-89.998926],[-171.5625,-89.998926],[-172.96875,-89.998926],[-174.375,-89.998926],[-175.78125,-89.998926],[-177.1875,-89.998926],[-178.59375,-89.998926],[-180,-89.998926],[-180,-89.58291],[-180,-89.292969],[-180,-88.587012],[-180,-87.881055],[-180,-87.175195],[-180,-86.469336],[-180,-85.763379],[-180,-85.05752],[-180,-84.351562],[-178.389502,-84.3375],[-178.069043,-84.352344],[-177.73042,-84.395215],[-176.985547,-84.399316],[-176.289014,-84.418359],[-176.107373,-84.475293],[-175.874609,-84.510352],[-175.381006,-84.479785],[-174.986719,-84.46543],[-174.663184,-84.462695],[-171.703662,-84.542383],[-168.667773,-84.683594],[-168.048584,-84.728613],[-167.492188,-84.833691],[-166.911084,-84.819238],[-163.463721,-84.900879],[-162.933398,-84.901172],[-160.820898,-84.986621],[-157.12749,-85.185645],[-156.810303,-85.192188],[-156.459131,-85.186035],[-156.642773,-85.079395],[-156.988281,-84.982227],[-157.453906,-84.912402],[-157.149609,-84.891309],[-156.489648,-84.889258],[-156.620996,-84.839648],[-156.986328,-84.811133],[-158.303418,-84.778027],[-163.568506,-84.528711],[-163.685449,-84.513086],[-163.758984,-84.492773],[-163.897021,-84.47041],[-164.11416,-84.44541],[-164.916846,-84.431348],[-165.135352,-84.409863],[-165.24043,-84.38125],[-165.184814,-84.369531],[-165.125146,-84.374609],[-163.89917,-84.352637],[-163.765186,-84.324219],[-163.757617,-84.305469],[-163.821387,-84.290527],[-164.032129,-84.274023],[-164.52832,-84.191016],[-164.685059,-84.15459],[-164.602832,-84.09668],[-164.502539,-84.071582],[-164.123926,-84.053516],[-164.011328,-84.015625],[-164.08291,-83.946094],[-164.950879,-83.805859],[-165.536328,-83.756641],[-165.921777,-83.790234],[-166.649463,-83.791992],[-167.552881,-83.81084],[-167.801221,-83.79082],[-168.052734,-83.735449],[-168.347363,-83.636816],[-168.497266,-83.611328],[-168.78501,-83.529297],[-169.167676,-83.449805],[-171.187842,-83.256445],[-171.539404,-83.203711],[-174.065967,-82.900098],[-174.172021,-82.847754],[-174.235938,-82.793457],[-173.071143,-82.91582],[-172.851514,-82.916797],[-172.59292,-82.88418],[-172.392041,-82.893066],[-172.124365,-82.862402],[-171.821289,-82.847461],[-171.031299,-82.942969],[-169.440771,-83.095996],[-169.016064,-83.150293],[-168.790137,-83.187891],[-168.60376,-83.201563],[-168.417676,-83.228809],[-168.191016,-83.213281],[-168.054736,-83.226562],[-167.724268,-83.217383],[-166.216895,-83.200781],[-165.619189,-83.215527],[-164.915625,-83.290039],[-164.644336,-83.4125],[-164.445557,-83.467676],[-164.058398,-83.424707],[-163.733398,-83.373047],[-163.111084,-83.329102],[-162.912061,-83.34707],[-162.57417,-83.410645],[-162.197266,-83.518945],[-160.594727,-83.489551],[-159.923535,-83.494727],[-159.444385,-83.543164],[-157.699268,-83.38125],[-157.428467,-83.346387],[-157.027783,-83.234375],[-157.355811,-83.198438],[-157.589209,-83.187402],[-157.679492,-83.129492],[-157.521875,-83.106641],[-157.018262,-83.075195],[-156.037012,-83.026855],[-155.459424,-82.980762],[-155.150244,-82.858398],[-153.822266,-82.669336],[-153.398633,-82.58623],[-153.009863,-82.449609],[-153.882617,-82.176563],[-154.717432,-81.940723],[-154.451465,-81.867578],[-154.188477,-81.810547],[-154.061377,-81.76543],[-153.956641,-81.700195],[-154.23208,-81.623242],[-154.485156,-81.566211],[-154.907813,-81.510352],[-156.492578,-81.376953],[-157.03252,-81.319141],[-156.815088,-81.230957],[-156.528223,-81.162305],[-155.921143,-81.133398],[-152.034766,-81.029004],[-148.122754,-80.900781],[-148.023438,-80.835742],[-148.542969,-80.760059],[-148.98418,-80.741504],[-149.147168,-80.718652],[-149.207422,-80.67041],[-149.214063,-80.604199],[-149.264404,-80.593066],[-149.428613,-80.58623],[-150.132764,-80.510449],[-150.281689,-80.480469],[-150.516113,-80.409473],[-150.575391,-80.353711],[-150.435449,-80.211035],[-150.220703,-80.15],[-149.845361,-80.117676],[-149.577637,-80.105957],[-148.766064,-80.108105],[-148.447998,-80.090527],[-148.317139,-80.070996],[-148.339795,-80.002734],[-148.430273,-79.971289],[-148.433496,-79.929492],[-148.296436,-79.906543],[-148.129297,-79.907715],[-148.082959,-79.856738],[-148.176514,-79.775879],[-148.41748,-79.731445],[-149.051416,-79.656934],[-150.490625,-79.545605],[-151.048438,-79.459668],[-151.368262,-79.393359],[-151.636133,-79.317676],[-151.903564,-79.280566],[-152.091406,-79.241602],[-152.053418,-79.192773],[-152.137695,-79.115918],[-152.243506,-79.102734],[-152.701367,-79.134863],[-153.517578,-79.117285],[-154.517725,-79.046582],[-155.209912,-78.964844],[-156.114551,-78.744629],[-156.469336,-78.635352],[-156.20791,-78.558691],[-155.919775,-78.510352],[-154.716406,-78.398145],[-154.537646,-78.358887],[-154.293018,-78.259082],[-154.695068,-78.216992],[-155.036621,-78.220801],[-155.341504,-78.191992],[-156.569238,-78.186133],[-157.266797,-78.199805],[-157.848047,-78.073926],[-158.285889,-77.950781],[-158.406934,-77.887793],[-158.500391,-77.77832],[-158.351416,-77.614844],[-158.22998,-77.497656],[-158.246484,-77.354297],[-158.213574,-77.157129],[-158.003076,-77.091211],[-157.842041,-77.079199],[-157.465381,-77.23125],[-157.139307,-77.24209],[-156.667676,-77.212988],[-156.368213,-77.134766],[-156.21123,-77.105664],[-155.91958,-77.098047],[-155.358838,-77.133301],[-155.101758,-77.119531],[-154.814941,-77.126953],[-153.909961,-77.226953],[-153.712598,-77.274219],[-153.606104,-77.310156],[-153.573047,-77.363086],[-153.460596,-77.416016],[-153.076953,-77.44248],[-151.998389,-77.412598],[-151.718994,-77.425879],[-150.956396,-77.573535],[-150.305566,-77.731445],[-150.084326,-77.770996],[-149.717725,-77.797461],[-149.588477,-77.774219],[-149.474023,-77.714844],[-149.125977,-77.642676],[-148.339941,-77.551172],[-148.155713,-77.462305],[-148.259814,-77.412598],[-148.559277,-77.361328],[-148.744385,-77.343262],[-148.843604,-77.283691],[-148.839014,-77.202344],[-148.77749,-77.125],[-148.572412,-77.105078],[-148.196338,-77.211328],[-147.730225,-77.309766],[-147.566406,-77.325293],[-147.442285,-77.320703],[-147.207227,-77.28584],[-146.927588,-77.259863],[-146.390625,-77.472461],[-146.073633,-77.486719],[-145.677148,-77.488086],[-145.600635,-77.455273],[-145.649658,-77.39834],[-145.713818,-77.338379],[-145.794287,-77.32998],[-145.807959,-77.273242],[-145.63457,-77.221289],[-145.515723,-77.199219],[-145.563184,-77.161719],[-145.753125,-77.10332],[-145.864307,-77.094141],[-145.966992,-77.06875],[-145.933936,-77.029004],[-145.806348,-77.012109],[-145.629248,-76.953711],[-145.685693,-76.884473],[-145.675684,-76.79668],[-145.750488,-76.749023],[-146.166455,-76.657617],[-146.77666,-76.507031],[-147.34043,-76.438379],[-148.601074,-76.493262],[-149.04585,-76.458008],[-149.339648,-76.418945],[-149.654248,-76.365332],[-149.284961,-76.31123],[-148.894824,-76.271777],[-148.780371,-76.238281],[-148.631787,-76.167969],[-148.458984,-76.117969],[-148.320312,-76.104492],[-147.860205,-76.130859],[-146.817334,-76.318066],[-146.597412,-76.337793],[-145.885742,-76.424316],[-145.686865,-76.428809],[-145.44209,-76.40918],[-145.642334,-76.325684],[-145.8604,-76.266602],[-146.383008,-76.099707],[-146.323486,-76.020313],[-145.987744,-75.88877],[-145.105518,-75.878906],[-144.721289,-75.832129],[-144.220605,-75.731445],[-143.574268,-75.563574],[-143.022168,-75.543457],[-142.329834,-75.490918],[-142.094189,-75.529785],[-141.505713,-75.69043],[-141.134619,-75.745996],[-141.008984,-75.750781],[-140.874316,-75.745898],[-141.22334,-75.545898],[-140.99873,-75.52002],[-140.709277,-75.497656],[-140.470996,-75.447266],[-140.293799,-75.405859],[-139.691162,-75.212793],[-139.148828,-75.160156],[-137.618164,-75.075586],[-137.090137,-75.152637],[-136.649854,-75.161719],[-136.549512,-75.139453],[-136.461914,-75.03584],[-136.227832,-74.836035],[-136.030078,-74.765332],[-135.362061,-74.69043],[-134.840381,-74.694141],[-134.465088,-74.776172],[-134.117139,-74.829688],[-133.796338,-74.85459],[-133.474854,-74.851855],[-132.99165,-74.806152],[-132.35127,-74.789355],[-132.049365,-74.765723],[-131.706543,-74.810938],[-130.857471,-74.825977],[-130.195605,-74.890625],[-129.79082,-74.891406],[-129.238281,-74.828906],[-128.940625,-74.820215],[-127.863379,-74.719238],[-127.020215,-74.697852],[-126.383984,-74.742578],[-125.353418,-74.714648],[-124.312451,-74.735742],[-123.889453,-74.773047],[-121.543945,-74.75],[-119.677002,-74.65459],[-119.422217,-74.621582],[-119.022412,-74.517871],[-118.80293,-74.422266],[-118.655762,-74.392773],[-118.342041,-74.381543],[-117.806201,-74.40293],[-117.068311,-74.473242],[-116.433008,-74.44707],[-115.222607,-74.487402],[-115.105176,-74.455078],[-114.991016,-74.275],[-114.791016,-73.988574],[-114.62373,-73.90293],[-114.345947,-73.925],[-113.508496,-74.088867],[-113.489404,-74.158398],[-113.574658,-74.20791],[-113.713574,-74.227734],[-113.753271,-74.366699],[-113.64082,-74.406348],[-113.454248,-74.394238],[-113.332959,-74.454199],[-113.597314,-74.558789],[-113.783105,-74.618164],[-113.903467,-74.644434],[-113.984766,-74.842969],[-114.097217,-74.909082],[-114.110449,-74.981836],[-113.931836,-74.981836],[-113.752539,-74.952148],[-113.593408,-74.943652],[-113.091504,-74.891699],[-112.17002,-74.832227],[-111.868213,-74.801172],[-111.69624,-74.792188],[-111.584424,-74.750879],[-111.738721,-74.653418],[-111.788721,-74.57168],[-111.695898,-74.504102],[-111.722266,-74.386621],[-111.806348,-74.269727],[-111.62998,-74.181445],[-111.466797,-74.200781],[-111.180176,-74.188086],[-111.019824,-74.230469],[-110.77041,-74.268945],[-110.533936,-74.288867],[-110.30708,-74.366699],[-110.229785,-74.536328],[-110.300439,-74.710645],[-110.531934,-74.836328],[-110.967578,-74.95127],[-111.463135,-75.133398],[-111.358789,-75.219922],[-111.104199,-75.19082],[-109.98999,-75.199121],[-109.272168,-75.185059],[-108.822266,-75.206641],[-108.254492,-75.252539],[-107.804736,-75.321582],[-107.266797,-75.334473],[-106.932129,-75.309375],[-106.618848,-75.343945],[-105.399365,-75.197656],[-104.901855,-75.115137],[-104.617822,-75.15625],[-104.159668,-75.120703],[-103.901318,-75.152539],[-103.424902,-75.10127],[-103.121045,-75.095215],[-102.771338,-75.116992],[-101.708105,-75.127344],[-101.627832,-75.221777],[-101.303711,-75.36582],[-101.039355,-75.421875],[-100.706348,-75.398145],[-100.463428,-75.353418],[-100.082812,-75.37041],[-99.531348,-75.308984],[-98.980225,-75.327441],[-98.752344,-75.31709],[-98.645703,-75.277148],[-98.557861,-75.189746],[-98.727246,-75.14082],[-99.208154,-75.078516],[-99.651904,-74.948828],[-99.848584,-74.92168],[-100.164062,-74.937891],[-100.312988,-74.914355],[-100.47334,-74.872363],[-100.264893,-74.822949],[-100.012695,-74.662109],[-100.118604,-74.515039],[-100.238135,-74.48418],[-100.530859,-74.488867],[-100.881836,-74.541113],[-101.023145,-74.50498],[-101.251709,-74.485742],[-101.342773,-74.350098],[-101.586719,-74.096387],[-101.71543,-74.02373],[-102.105127,-73.957715],[-102.44082,-73.925781],[-102.766455,-73.883789],[-102.862744,-73.783594],[-102.799512,-73.645703],[-102.410645,-73.616406],[-102.036621,-73.630566],[-101.828369,-73.655469],[-101.587402,-73.666797],[-101.310742,-73.695215],[-101.130225,-73.734863],[-100.985449,-73.757227],[-100.717773,-73.757812],[-99.781104,-73.720117],[-99.656152,-73.694141],[-99.541016,-73.645117],[-99.343359,-73.63418],[-99.161914,-73.64082],[-98.896143,-73.611133],[-99.200342,-73.570996],[-99.52793,-73.495117],[-100.020801,-73.402539],[-100.436377,-73.353125],[-101.189453,-73.317871],[-101.57373,-73.32959],[-101.815967,-73.31123],[-102.675049,-73.320898],[-102.908789,-73.285156],[-103.076172,-73.18457],[-103.307715,-72.945312],[-103.375,-72.818848],[-103.216602,-72.77207],[-103.110107,-72.721191],[-102.855859,-72.716211],[-102.484766,-72.735645],[-102.362891,-72.760156],[-102.272021,-72.834961],[-102.362939,-72.911426],[-102.482031,-72.951172],[-102.409277,-72.987402],[-102.028857,-72.998145],[-101.841504,-73.020898],[-101.681201,-73.029883],[-101.331836,-72.99541],[-100.820508,-72.981152],[-100.563574,-73.015527],[-100.258789,-73.041309],[-99.810742,-72.999902],[-98.208594,-73.022266],[-98.012402,-73.033203],[-97.818506,-73.101758],[-97.651025,-73.144434],[-97.476465,-73.12627],[-96.955762,-73.206445],[-96.67583,-73.268555],[-96.394238,-73.301172],[-96.152148,-73.309277],[-95.880566,-73.293848],[-95.529248,-73.241406],[-95.236621,-73.220117],[-95.02959,-73.238965],[-94.586475,-73.249512],[-94.246191,-73.312988],[-93.984668,-73.286719],[-93.705957,-73.215039],[-92.828369,-73.164648],[-92.241016,-73.178418],[-91.168652,-73.307031],[-90.920947,-73.319141],[-90.430908,-73.243262],[-90.273779,-73.118652],[-90.29541,-72.97793],[-90.152441,-72.944531],[-90.035205,-72.960156],[-89.817676,-72.862598],[-89.522363,-72.870898],[-89.34126,-72.889551],[-89.229395,-72.825781],[-89.127148,-72.693164],[-88.77998,-72.683008],[-88.526904,-72.702344],[-88.194092,-72.7875],[-88.194531,-72.858594],[-88.331738,-72.934375],[-88.560742,-73.120703],[-88.419385,-73.229004],[-88.20498,-73.219531],[-87.936328,-73.240918],[-87.608447,-73.194531],[-87.401025,-73.191992],[-87.037939,-73.353906],[-86.791016,-73.363672],[-86.602148,-73.353711],[-85.980762,-73.208496],[-85.801416,-73.19209],[-85.582178,-73.258984],[-85.260596,-73.413281],[-84.981201,-73.502051],[-84.571289,-73.556738],[-84.21416,-73.572754],[-83.796289,-73.645117],[-83.564844,-73.705957],[-83.041895,-73.707227],[-82.815234,-73.732324],[-82.183496,-73.856836],[-81.606104,-73.795703],[-81.30874,-73.738281],[-81.163184,-73.632422],[-81.235986,-73.47373],[-81.262402,-73.314941],[-81.176416,-73.248828],[-81.024316,-73.235547],[-80.336377,-73.41416],[-80.379834,-73.308105],[-80.43877,-73.225],[-80.614209,-73.083398],[-80.587744,-72.977637],[-80.442236,-72.944531],[-80.151758,-73.000098],[-79.808008,-73.028125],[-79.521729,-73.089551],[-78.963721,-73.312402],[-78.78623,-73.506738],[-78.407861,-73.555762],[-78.144141,-73.54707],[-77.845605,-73.515039],[-77.444043,-73.487988],[-77.135547,-73.495801],[-76.850488,-73.460449],[-76.764502,-73.566309],[-77.033008,-73.718457],[-77.134912,-73.817676],[-77.048926,-73.844141],[-76.8875,-73.820508],[-76.75498,-73.789453],[-76.291211,-73.805371],[-75.916211,-73.736426],[-75.59502,-73.71123],[-75.293066,-73.63877],[-75.043555,-73.645117],[-74.855469,-73.658008],[-74.594043,-73.715234],[-74.345264,-73.683887],[-74.197314,-73.695508],[-73.996045,-73.699805],[-72.929199,-73.447949],[-72.687402,-73.452344],[-72.380811,-73.438379],[-71.994189,-73.379199],[-71.697559,-73.353027],[-71.452734,-73.354492],[-71.017187,-73.262793],[-70.322656,-73.274023],[-69.968604,-73.226465],[-69.282227,-73.169629],[-68.820947,-73.105469],[-68.000342,-72.935547],[-67.66709,-72.83457],[-67.306738,-72.611133],[-67.079541,-72.387598],[-66.827734,-72.09043],[-66.95166,-71.897266],[-67.084131,-71.812207],[-67.195752,-71.718945],[-67.460352,-71.526758],[-67.529932,-71.28457],[-67.50459,-71.057813],[-67.598389,-70.844629],[-67.692187,-70.686133],[-67.888477,-70.42168],[-68.125684,-70.249902],[-68.40332,-70.019727],[-68.403662,-69.80918],[-68.469824,-69.643848],[-68.637549,-69.526367],[-68.707959,-69.432227],[-68.580029,-69.412695],[-68.461523,-69.383984],[-68.140869,-69.347559],[-67.371777,-69.412305],[-67.304346,-69.317578],[-67.110449,-69.248047],[-66.974902,-69.161035],[-67.02124,-69.028711],[-67.187598,-68.974414],[-67.390527,-68.86123],[-67.299023,-68.770703],[-67.133691,-68.770703],[-67.054297,-68.671484],[-67.116895,-68.574805],[-67.041016,-68.453125],[-66.893506,-68.297656],[-66.793359,-68.24043],[-66.977588,-68.146777],[-67.149854,-68.024609],[-67.106689,-67.930078],[-67.021289,-67.831445],[-66.915381,-67.692578],[-66.769873,-67.593359],[-66.677246,-67.560254],[-66.70498,-67.527148],[-66.923145,-67.491602],[-67.124316,-67.485059],[-67.486914,-67.546973],[-67.544531,-67.534668],[-67.564746,-67.50293],[-67.585791,-67.435156],[-67.550391,-67.269238],[-67.493359,-67.112793],[-67.440479,-67.090723],[-67.299023,-67.070801],[-67.160156,-66.951758],[-67.034473,-66.945117],[-66.955078,-66.984766],[-66.928613,-67.143555],[-66.886133,-67.17998],[-66.902148,-67.255957],[-66.836035,-67.282422],[-66.757324,-67.23252],[-66.61001,-67.208594],[-66.551562,-67.262598],[-66.498682,-67.289062],[-66.472217,-67.242773],[-66.490967,-67.114258],[-66.515137,-67.0625],[-66.533301,-66.979297],[-66.5021,-66.940137],[-66.464697,-66.875195],[-66.526807,-66.740723],[-66.503613,-66.689844],[-66.370898,-66.608887],[-66.306543,-66.591992],[-66.181885,-66.59248],[-65.95376,-66.645605],[-65.847461,-66.649805],[-65.766406,-66.624902],[-65.717969,-66.573242],[-65.678467,-66.402734],[-65.775781,-66.342578],[-65.774512,-66.287988],[-65.71748,-66.254492],[-65.617285,-66.135254],[-65.465088,-66.129297],[-65.316357,-66.139844],[-65.172021,-66.116797],[-65.22207,-66.068457],[-65.26748,-65.994238],[-65.105078,-65.95791],[-64.99873,-65.946289],[-64.72168,-65.992773],[-64.613525,-66.019043],[-64.514307,-65.95957],[-64.547363,-65.9],[-64.653223,-65.866895],[-64.673047,-65.814063],[-64.646582,-65.747852],[-64.474609,-65.780957],[-64.435352,-65.768359],[-64.390039,-65.708496],[-64.416797,-65.679883],[-64.438916,-65.640625],[-64.213477,-65.63291],[-64.17998,-65.617383],[-64.132227,-65.570508],[-64.065918,-65.553711],[-63.862207,-65.555957],[-63.818115,-65.531543],[-63.797949,-65.480371],[-63.908008,-65.467383],[-64.05127,-65.417188],[-64.071094,-65.278223],[-64.038037,-65.179004],[-63.912402,-65.093066],[-63.760254,-65.033496],[-63.482129,-65.084961],[-63.26416,-65.073145],[-63.178125,-65.126074],[-63.059082,-65.139355],[-63.032617,-65.079785],[-63.085693,-65.02793],[-63.119873,-64.94248],[-62.774658,-64.841699],[-62.664502,-64.85752],[-62.527539,-64.833398],[-62.576221,-64.755664],[-62.503467,-64.656445],[-62.404248,-64.643262],[-62.338086,-64.729199],[-62.243311,-64.746875],[-62.139648,-64.726758],[-61.88252,-64.625391],[-61.756396,-64.609863],[-61.631787,-64.604688],[-61.500488,-64.545605],[-61.47002,-64.475586],[-61.395947,-64.427148],[-61.173584,-64.3625],[-61.082129,-64.314746],[-60.886621,-64.149707],[-60.92207,-64.10791],[-60.86416,-64.073438],[-60.277246,-63.923926],[-59.989844,-63.90957],[-59.510156,-63.820703],[-59.217578,-63.713867],[-59.036426,-63.670313],[-58.87207,-63.551855],[-58.673535,-63.534375],[-58.215576,-63.45127],[-57.868066,-63.31875],[-57.389648,-63.22627],[-57.168262,-63.234766],[-57.076709,-63.2625],[-57.020654,-63.372852]]],[[[-45.222656,-78.810742],[-45.091602,-78.814258],[-44.566309,-78.804297],[-44.041162,-78.806641],[-43.72207,-78.818457],[-43.627344,-78.846094],[-43.544336,-78.901953],[-43.450635,-78.989648],[-43.363672,-79.084766],[-43.267236,-79.163086],[-43.210547,-79.3],[-43.118701,-79.35],[-42.965381,-79.477051],[-42.944678,-79.579102],[-42.98999,-79.80127],[-43.065918,-79.891406],[-43.267285,-79.978613],[-43.495801,-79.969336],[-43.600293,-79.973926],[-43.703662,-79.990137],[-43.742188,-80.00293],[-43.758203,-80.020508],[-43.48999,-80.095508],[-43.458838,-80.123047],[-43.45376,-80.155078],[-43.489355,-80.178027],[-43.52793,-80.191406],[-49.1875,-80.642773],[-49.410449,-80.666895],[-49.629687,-80.712305],[-49.701318,-80.753223],[-49.773047,-80.78418],[-54.1625,-80.870117],[-54.2021,-80.863867],[-54.241309,-80.846973],[-54.350781,-80.760352],[-54.371582,-80.623633],[-54.347168,-80.569434],[-54.12959,-80.516504],[-54.044922,-80.4875],[-53.676074,-80.283691],[-53.482324,-80.188965],[-53.393896,-80.108789],[-53.346484,-80.114453],[-53.176416,-80.160938],[-53.053467,-80.175],[-52.807227,-80.155957],[-52.566797,-80.099023],[-52.460986,-80.066602],[-52.357129,-80.077832],[-52.338086,-80.126074],[-52.297168,-80.141211],[-51.711328,-79.989844],[-51.183838,-79.819727],[-50.664355,-79.626758],[-50.401562,-79.511719],[-50.339258,-79.479492],[-50.294922,-79.429688],[-50.331348,-79.381445],[-50.378662,-79.338184],[-50.419531,-79.321289],[-50.463867,-79.313281],[-50.733057,-79.282715],[-50.649023,-79.232813],[-50.573291,-79.172266],[-50.520312,-79.104395],[-50.502393,-79.021777],[-50.513721,-78.979883],[-50.50249,-78.949902],[-50.379785,-78.922852],[-50.297754,-78.882227],[-50.241943,-78.833301],[-50.335449,-78.818262],[-50.377393,-78.780469],[-50.294189,-78.695996],[-50.219629,-78.605273],[-50.14165,-78.556738],[-49.939746,-78.462207],[-49.35415,-78.222461],[-49.143652,-78.093848],[-49.08125,-78.047461],[-47.69209,-77.840137],[-47.463477,-77.819043],[-47.029932,-77.790527],[-46.825684,-77.785254],[-46.257861,-77.804883],[-45.993164,-77.826855],[-45.530273,-77.881445],[-44.851953,-77.988379],[-44.594482,-78.035156],[-44.339844,-78.092871],[-44.093994,-78.167285],[-43.854492,-78.258496],[-43.808594,-78.286523],[-43.78457,-78.336328],[-43.776709,-78.385059],[-43.788281,-78.432617],[-43.852295,-78.529883],[-43.947217,-78.597559],[-45.067822,-78.661426],[-45.213086,-78.687012],[-45.294775,-78.739844],[-45.352344,-78.791211],[-45.222656,-78.810742]]],[[[-59.733936,-80.344141],[-59.77373,-80.558105],[-59.771338,-80.656543],[-59.825488,-80.733301],[-59.926367,-80.774316],[-60.124658,-80.840723],[-60.268213,-80.881348],[-60.582812,-80.948145],[-62.02334,-80.889063],[-62.670508,-80.834277],[-62.940381,-80.76582],[-62.986084,-80.73457],[-63.067529,-80.627441],[-63.143994,-80.594824],[-63.714941,-80.616992],[-64.065039,-80.650391],[-64.126465,-80.667871],[-64.219922,-80.733984],[-64.268262,-80.748535],[-65.202832,-80.607422],[-66.18374,-80.441992],[-66.591406,-80.357617],[-66.733594,-80.318555],[-66.771143,-80.293848],[-66.681104,-80.260449],[-66.588428,-80.238574],[-66.482666,-80.224414],[-66.376953,-80.222266],[-66.295801,-80.234766],[-66.217383,-80.258203],[-66.167627,-80.346191],[-66.115479,-80.36123],[-65.980078,-80.384473],[-62.518799,-80.37334],[-62.231836,-80.368652],[-61.633301,-80.344141],[-61.312842,-80.306543],[-61.193994,-80.256641],[-61.484766,-80.243848],[-61.597461,-80.205859],[-61.694336,-80.134375],[-61.716846,-80.069336],[-61.68418,-80.019727],[-61.302344,-79.995801],[-61.24624,-79.97832],[-61.34624,-79.950586],[-61.343115,-79.886816],[-61.11499,-79.862207],[-61.026318,-79.808887],[-60.578809,-79.741016],[-59.87334,-79.776953],[-59.706348,-79.875293],[-59.752441,-79.937988],[-59.785645,-80.001074],[-59.787793,-80.100977],[-59.498145,-80.115039],[-59.407812,-80.150879],[-59.32168,-80.196191],[-59.426611,-80.197656],[-59.530078,-80.208008],[-59.612402,-80.255469],[-59.683301,-80.315332],[-59.733936,-80.344141]]],[[[-70.051123,-69.189063],[-70.079346,-69.310938],[-69.913281,-69.267285],[-69.85498,-69.276563],[-69.707568,-69.320898],[-69.416943,-69.583203],[-69.352979,-69.666309],[-69.233789,-69.909082],[-69.09126,-70.090332],[-68.730566,-70.408105],[-68.553516,-70.581445],[-68.459473,-70.68291],[-68.450781,-70.817871],[-68.335986,-70.856055],[-68.314014,-70.911719],[-68.27793,-71.09707],[-68.252441,-71.313477],[-68.227832,-71.725195],[-68.241016,-71.822168],[-68.393896,-71.975195],[-68.460742,-72.085352],[-68.542578,-72.157617],[-68.640039,-72.209766],[-69.149268,-72.426563],[-69.209326,-72.53418],[-70.063086,-72.626172],[-70.543457,-72.664453],[-70.731348,-72.622949],[-70.922949,-72.613086],[-71.158594,-72.626953],[-71.846143,-72.639355],[-72.36748,-72.669727],[-72.433301,-72.658301],[-72.479883,-72.617285],[-72.530811,-72.589551],[-72.670215,-72.595898],[-72.780371,-72.580566],[-72.887646,-72.54668],[-73.007031,-72.484082],[-73.057422,-72.447559],[-73.086377,-72.407813],[-72.854834,-72.304199],[-72.7375,-72.280566],[-72.618213,-72.275098],[-72.376074,-72.296289],[-72.134961,-72.331348],[-71.605322,-72.358984],[-70.872607,-72.366406],[-70.671143,-72.356348],[-70.427686,-72.322559],[-70.206006,-72.227734],[-70.314209,-72.191016],[-70.42417,-72.167773],[-70.533203,-72.163379],[-70.641406,-72.169629],[-70.945166,-72.229102],[-71.177734,-72.264063],[-71.412549,-72.284473],[-71.661475,-72.249805],[-71.892187,-72.152832],[-71.897559,-72.120801],[-71.106641,-72.04707],[-71.034375,-72.03457],[-70.891113,-71.987402],[-70.844629,-71.945801],[-70.820996,-71.906543],[-71.35498,-71.836426],[-71.464648,-71.837891],[-71.574414,-71.850586],[-71.816162,-71.821875],[-72.045947,-71.739648],[-72.259082,-71.641211],[-72.336621,-71.632227],[-72.412207,-71.662305],[-72.927637,-71.92168],[-72.97207,-71.923633],[-73.166699,-71.90459],[-73.409961,-71.853125],[-73.63291,-71.834961],[-73.775977,-71.848926],[-73.829883,-71.870215],[-73.690576,-71.929395],[-73.572314,-71.980957],[-73.537109,-72.022363],[-73.899268,-72.152344],[-73.995605,-72.169824],[-74.152979,-72.158789],[-74.208936,-72.142285],[-74.321777,-72.072656],[-74.429297,-72.055566],[-74.663232,-72.069922],[-74.78584,-72.063574],[-74.908252,-72.033301],[-75.024121,-71.988477],[-75.129736,-71.963965],[-75.258887,-71.913965],[-75.353076,-71.878418],[-75.382715,-71.82793],[-75.373242,-71.780273],[-75.330811,-71.752344],[-75.324902,-71.725586],[-75.353125,-71.679688],[-75.335449,-71.645215],[-75.292578,-71.614941],[-75.099658,-71.555371],[-74.863135,-71.543359],[-74.636377,-71.61748],[-74.487451,-71.641504],[-74.418652,-71.643262],[-74.391797,-71.638184],[-74.37334,-71.617969],[-74.380078,-71.579395],[-74.420312,-71.507227],[-74.425391,-71.456934],[-74.375,-71.414941],[-74.30791,-71.399902],[-74.236084,-71.388379],[-74.187207,-71.383008],[-74.040967,-71.410449],[-73.937109,-71.438184],[-73.724268,-71.516992],[-73.545361,-71.573047],[-73.479004,-71.578711],[-73.427148,-71.558887],[-73.380176,-71.52793],[-73.592187,-71.448047],[-73.61709,-71.396582],[-73.604492,-71.350781],[-73.473975,-71.324902],[-73.397412,-71.321191],[-73.019727,-71.368652],[-72.821045,-71.383594],[-72.621582,-71.388379],[-72.21167,-71.335059],[-72.430078,-71.275],[-72.905469,-71.223145],[-72.994531,-71.186523],[-73.0604,-71.126953],[-72.710449,-71.072949],[-72.356348,-71.074805],[-71.718506,-71.145117],[-71.504492,-71.111523],[-71.30752,-71.01084],[-71.194043,-70.984766],[-70.741113,-70.992578],[-70.380664,-70.946387],[-70.3229,-70.951172],[-70.267676,-70.964746],[-69.916455,-71.133789],[-69.869775,-71.125684],[-69.835107,-71.092578],[-69.822852,-71.033691],[-69.82251,-70.973438],[-69.83042,-70.913672],[-69.875781,-70.875977],[-69.933203,-70.880371],[-69.993018,-70.89707],[-70.093994,-70.882617],[-70.19624,-70.850586],[-70.298682,-70.836133],[-70.660645,-70.817871],[-70.916943,-70.78584],[-71.049414,-70.762109],[-71.172656,-70.712988],[-71.190039,-70.65957],[-71.061084,-70.537109],[-70.562109,-70.404102],[-70.328076,-70.36123],[-70.09043,-70.350684],[-69.975293,-70.360156],[-69.702051,-70.414746],[-69.659863,-70.412305],[-69.618359,-70.398047],[-69.883008,-70.305176],[-70.117871,-70.23418],[-70.234082,-70.180469],[-70.327637,-70.159668],[-70.719531,-70.139453],[-70.926221,-70.192383],[-71.02373,-70.201367],[-71.120508,-70.196484],[-71.696094,-70.067773],[-71.728516,-70.053711],[-71.809961,-70.005176],[-71.853613,-69.969336],[-71.879248,-69.908984],[-71.867676,-69.847168],[-71.852002,-69.807031],[-71.766504,-69.649414],[-71.718213,-69.524023],[-71.74292,-69.422754],[-71.833594,-69.366797],[-71.963232,-69.328711],[-72.080664,-69.267188],[-72.114355,-69.225391],[-72.135156,-69.176563],[-72.137891,-69.114551],[-72.108643,-69.060059],[-72.057861,-69.000977],[-71.990137,-68.970801],[-71.868994,-68.941016],[-71.391553,-68.873535],[-70.416992,-68.788965],[-70.311914,-68.832227],[-70.154297,-68.922949],[-70.105469,-68.959375],[-70.052734,-69.139551],[-70.051123,-69.189063]]],[[[-98.091113,-71.9125],[-98.175928,-72.018457],[-98.167969,-72.123047],[-97.923145,-72.116602],[-97.816016,-71.918848],[-97.584766,-71.882617],[-97.473486,-72.000293],[-97.581982,-72.095117],[-97.525635,-72.149219],[-97.460254,-72.188281],[-97.345215,-72.189063],[-97.241992,-72.131836],[-97.195508,-72.091016],[-97.154785,-72.04541],[-97.088721,-71.944043],[-96.869434,-71.850977],[-96.38335,-71.836328],[-96.125,-71.895508],[-96.298193,-72.045117],[-96.714941,-72.131641],[-96.978906,-72.221875],[-96.890137,-72.246973],[-96.79873,-72.259473],[-96.717578,-72.255469],[-96.482324,-72.207617],[-95.906348,-72.121973],[-95.6854,-72.056641],[-95.609375,-72.068457],[-95.609521,-72.175],[-95.531055,-72.24873],[-95.575391,-72.409961],[-95.825684,-72.438965],[-96.078174,-72.453809],[-96.014307,-72.524707],[-96.029883,-72.554297],[-96.051758,-72.577246],[-96.692676,-72.547656],[-96.803906,-72.558008],[-96.914795,-72.57832],[-97.027637,-72.573828],[-97.250293,-72.520898],[-97.365527,-72.521777],[-97.595605,-72.547656],[-97.82832,-72.557031],[-98.163428,-72.556055],[-98.407812,-72.547656],[-98.640674,-72.489746],[-98.881543,-72.473242],[-99.148828,-72.471973],[-99.434326,-72.406641],[-99.672363,-72.379883],[-100.014258,-72.312402],[-100.104053,-72.287012],[-100.195215,-72.272656],[-100.357422,-72.278125],[-101.601953,-72.175684],[-101.784766,-72.177734],[-101.90332,-72.190332],[-102.022119,-72.184961],[-102.264795,-72.135254],[-102.313623,-72.081055],[-102.288281,-72.032129],[-102.236523,-72.009277],[-102.128125,-71.985449],[-100.400928,-71.865723],[-100.218652,-71.83291],[-100.084619,-71.836914],[-99.985156,-71.939453],[-99.833203,-72.046094],[-99.783984,-72.044336],[-99.734912,-72.033008],[-99.563086,-71.944922],[-99.254102,-71.972168],[-99.082129,-71.93252],[-98.964551,-71.854297],[-98.61543,-71.76377],[-98.394287,-71.781543],[-98.18916,-71.82002],[-98.091113,-71.9125]]],[[[-120.55625,-73.756055],[-120.378125,-73.855859],[-120.312305,-73.921973],[-120.272461,-73.98916],[-120.989502,-74.157031],[-121.019043,-74.173438],[-121.054102,-74.259961],[-121.036426,-74.279297],[-121.004687,-74.292871],[-121.002441,-74.326367],[-121.062402,-74.337305],[-122.286621,-74.403125],[-122.859082,-74.342676],[-122.938428,-74.302051],[-122.956055,-74.240332],[-122.890625,-74.227051],[-122.764746,-74.218652],[-122.794189,-74.19043],[-122.875244,-74.141211],[-122.880762,-74.099023],[-122.71001,-73.993652],[-122.624707,-73.965527],[-122.951172,-73.866602],[-122.991553,-73.844141],[-123.034668,-73.837598],[-123.19082,-73.849316],[-123.346191,-73.843066],[-123.291797,-73.803027],[-123.249072,-73.738672],[-123.112158,-73.682227],[-123.0125,-73.672949],[-122.910449,-73.679688],[-122.435693,-73.681641],[-121.966699,-73.711816],[-121.497314,-73.732813],[-120.722217,-73.751953],[-120.55625,-73.756055]]],[[[-126.329883,-73.28623],[-126.065283,-73.314844],[-125.975879,-73.356836],[-125.856641,-73.388281],[-125.735791,-73.405664],[-125.626807,-73.453223],[-125.561328,-73.536426],[-125.503906,-73.5625],[-125.326172,-73.617871],[-125.263965,-73.666406],[-125.276074,-73.690527],[-125.612402,-73.710742],[-125.723193,-73.702734],[-125.828418,-73.718359],[-125.859912,-73.748633],[-125.857031,-73.780176],[-125.798584,-73.801953],[-125.674414,-73.822168],[-125.552393,-73.820117],[-125.326855,-73.795508],[-125.224414,-73.800781],[-125.108789,-73.825977],[-124.993408,-73.829785],[-124.694385,-73.749609],[-124.61748,-73.735254],[-124.53999,-73.739746],[-124.128516,-73.833984],[-124.042041,-73.880371],[-124.100537,-73.906836],[-124.151807,-73.944238],[-124.129346,-73.971094],[-123.932324,-74.008008],[-123.851172,-74.057031],[-123.800439,-74.07627],[-123.811035,-74.117383],[-123.83877,-74.168262],[-123.836719,-74.225684],[-123.937402,-74.256152],[-123.982471,-74.256055],[-124.199414,-74.225586],[-124.872998,-74.208301],[-125.089551,-74.182422],[-125.420801,-74.069922],[-125.549316,-74.062695],[-125.682715,-74.035449],[-125.886865,-73.95459],[-126.244092,-73.890918],[-126.47168,-73.812109],[-126.465576,-73.746289],[-126.496094,-73.700195],[-126.538379,-73.680176],[-126.582666,-73.669922],[-126.710938,-73.653613],[-126.838232,-73.657324],[-126.90166,-73.676758],[-127.006396,-73.725781],[-127.12207,-73.73418],[-127.211621,-73.724414],[-127.231641,-73.713477],[-127.23291,-73.585547],[-127.332031,-73.56748],[-127.414355,-73.516309],[-127.429053,-73.446875],[-127.394336,-73.382227],[-127.267627,-73.304004],[-127.123535,-73.294336],[-126.977832,-73.308008],[-126.82998,-73.29082],[-126.596875,-73.278906],[-126.329883,-73.28623]]],[[[-159.05293,-79.807422],[-160.3021,-79.844531],[-160.806689,-79.812012],[-161.865527,-79.703516],[-163.317236,-79.504785],[-163.712402,-79.441992],[-163.970898,-79.38877],[-164.225781,-79.320801],[-164.281641,-79.245508],[-164.244873,-79.137695],[-164.199512,-79.050781],[-164.125537,-78.995313],[-163.814648,-78.928809],[-163.660254,-78.855762],[-163.345313,-78.779883],[-163.256104,-78.72207],[-163.124121,-78.719141],[-162.872754,-78.725195],[-162.621582,-78.741797],[-162.390039,-78.760156],[-162.160693,-78.793457],[-161.642969,-78.900977],[-161.283447,-79.007031],[-160.764404,-79.131641],[-160.249609,-79.271484],[-159.963525,-79.324316],[-159.684082,-79.402441],[-159.418799,-79.508105],[-159.366406,-79.545215],[-159.256104,-79.591016],[-159.189697,-79.637305],[-159.11875,-79.674512],[-159.051367,-79.694531],[-158.996582,-79.735156],[-159.00957,-79.780469],[-159.05293,-79.807422]]],[[[167.084082,-77.32168],[167.460938,-77.394336],[168.450781,-77.386133],[169.275586,-77.454688],[169.352734,-77.524707],[169.117285,-77.560547],[168.75459,-77.65332],[168.518848,-77.68125],[168.322559,-77.68252],[167.917578,-77.644141],[167.392285,-77.648633],[167.279492,-77.702637],[167.025098,-77.756445],[166.729004,-77.850977],[166.650391,-77.774023],[166.53252,-77.700391],[166.236816,-77.547461],[166.216797,-77.524609],[166.378418,-77.494043],[166.458008,-77.44375],[166.626367,-77.376758],[166.607129,-77.335547],[166.469043,-77.288867],[166.413086,-77.251953],[166.506348,-77.189355],[166.716406,-77.161719],[166.987305,-77.186523],[167.106836,-77.270605],[167.084961,-77.307422],[167.084082,-77.32168]]],[[[-31.118848,-79.798438],[-30.985059,-79.818457],[-30.84082,-79.771289],[-30.861475,-79.725879],[-30.779932,-79.647363],[-30.660156,-79.733105],[-29.870898,-79.823242],[-29.614453,-79.90957],[-29.720752,-79.929883],[-29.800098,-79.925977],[-30.029004,-79.936133],[-30.422119,-80.01084],[-30.844434,-79.938477],[-31.594238,-79.887695],[-31.824121,-79.849512],[-32.000293,-79.732422],[-31.68042,-79.634277],[-31.604883,-79.644727],[-31.118848,-79.798438]]],[[[-33.93418,-79.32041],[-34.049951,-79.357129],[-36.481299,-79.294043],[-36.600781,-79.282715],[-36.565967,-79.208789],[-36.237793,-79.195703],[-36.047998,-79.181152],[-35.790234,-79.148926],[-35.597314,-79.091895],[-35.534668,-79.090039],[-34.391504,-79.222949],[-33.994727,-79.278516],[-33.947168,-79.305371],[-33.93418,-79.32041]]],[[[-70.334082,-79.679883],[-70.552539,-79.683008],[-70.98374,-79.674414],[-71.414014,-79.640234],[-71.525781,-79.623633],[-71.68667,-79.568066],[-71.735205,-79.538574],[-71.777734,-79.500586],[-71.783545,-79.444336],[-71.66748,-79.245703],[-71.454004,-79.128906],[-71.254492,-79.059668],[-70.625879,-78.901563],[-70.543994,-78.883691],[-69.971875,-78.809375],[-69.747656,-78.769141],[-69.398242,-78.686133],[-67.478516,-78.3625],[-67.038135,-78.315723],[-66.840234,-78.349707],[-66.728076,-78.383691],[-66.787012,-78.42168],[-67.046143,-78.51416],[-67.166406,-78.569531],[-67.480957,-78.682422],[-68.157031,-78.870898],[-68.637939,-79.013184],[-69.250879,-79.210352],[-69.394434,-79.279785],[-69.686475,-79.443359],[-69.634473,-79.517578],[-69.731738,-79.618359],[-70.116309,-79.666016],[-70.334082,-79.679883]]],[[[-57.845996,-64.053906],[-57.808545,-64.067578],[-57.773682,-64.061523],[-57.741162,-64.047852],[-57.710059,-64.015137],[-57.59292,-63.96709],[-57.479736,-63.961621],[-57.51709,-64.010645],[-57.249463,-64.09707],[-57.272803,-64.166211],[-57.222266,-64.221387],[-57.327637,-64.237793],[-57.413965,-64.295898],[-57.338379,-64.318262],[-57.294678,-64.366992],[-57.387891,-64.378906],[-57.580762,-64.350391],[-57.683203,-64.357227],[-57.670752,-64.310938],[-57.70332,-64.293262],[-57.822852,-64.302051],[-57.871484,-64.400977],[-57.909766,-64.410059],[-57.952246,-64.394043],[-57.920703,-64.33125],[-57.971094,-64.32041],[-58.021582,-64.321582],[-58.169482,-64.368555],[-58.214062,-64.369727],[-58.304443,-64.314551],[-58.019971,-64.241992],[-58.137695,-64.206152],[-58.162207,-64.160742],[-58.14707,-64.097363],[-58.250439,-64.106836],[-58.352002,-64.130664],[-58.397607,-64.134766],[-58.438086,-64.113477],[-58.424951,-64.067773],[-58.341895,-63.994336],[-58.274805,-63.916211],[-58.145654,-63.877637],[-58.070361,-63.847461],[-57.970703,-63.834668],[-57.925684,-63.806055],[-57.831348,-63.803809],[-57.779492,-63.868262],[-57.780664,-63.906836],[-57.826953,-63.949219],[-57.845996,-64.053906]]],[[[-55.528027,-63.173535],[-55.46626,-63.199609],[-55.215527,-63.198633],[-55.15625,-63.204785],[-55.106445,-63.249316],[-55.075195,-63.324316],[-55.156787,-63.353125],[-55.593652,-63.33584],[-55.750195,-63.29668],[-55.830469,-63.298438],[-56.009131,-63.341504],[-56.083008,-63.382617],[-56.378516,-63.437305],[-56.462842,-63.418066],[-56.499023,-63.357617],[-56.505322,-63.334277],[-56.475342,-63.318262],[-56.460547,-63.301953],[-56.465967,-63.283496],[-56.385107,-63.234082],[-56.042187,-63.157129],[-55.589648,-63.12832],[-55.528711,-63.156836],[-55.528027,-63.173535]]],[[[-57.978418,-61.911914],[-57.849316,-61.939941],[-57.737988,-61.921191],[-57.676562,-61.94209],[-57.636523,-61.998242],[-57.639551,-62.02041],[-57.806689,-62.011914],[-57.962744,-62.077539],[-58.147559,-62.063477],[-58.172217,-62.117773],[-58.133105,-62.145801],[-58.183008,-62.17002],[-58.341455,-62.119434],[-58.46665,-62.137207],[-58.507324,-62.225684],[-58.561963,-62.243945],[-58.594043,-62.247754],[-58.643994,-62.225195],[-58.745703,-62.217871],[-58.755322,-62.206055],[-58.819043,-62.171289],[-59.003711,-62.209766],[-58.955225,-62.164258],[-58.709521,-62.044727],[-58.683594,-62.008203],[-58.399463,-61.938281],[-58.265186,-61.95332],[-57.978418,-61.911914]]],[[[-63.180566,-64.469531],[-63.276953,-64.57334],[-63.130518,-64.572363],[-63.03208,-64.534961],[-62.928223,-64.519336],[-62.836523,-64.571875],[-63.025586,-64.610938],[-63.202588,-64.680273],[-63.275439,-64.717383],[-63.354883,-64.733887],[-63.457812,-64.727344],[-63.558447,-64.73418],[-63.646875,-64.803027],[-63.739502,-64.834277],[-63.769922,-64.808398],[-63.804395,-64.791504],[-64.00708,-64.768555],[-64.09917,-64.732715],[-64.18374,-64.70957],[-64.27207,-64.697559],[-64.226221,-64.635352],[-64.171094,-64.581934],[-63.867139,-64.509766],[-63.896924,-64.487109],[-63.916162,-64.457227],[-63.674414,-64.421387],[-63.668311,-64.383984],[-63.683105,-64.342773],[-63.605566,-64.31416],[-63.53418,-64.272949],[-63.485596,-64.260547],[-63.333594,-64.266211],[-63.229639,-64.323633],[-63.270703,-64.380664],[-63.180566,-64.469531]]],[[[-62.325781,-64.424414],[-62.395898,-64.464648],[-62.455176,-64.47168],[-62.508105,-64.454102],[-62.579687,-64.514258],[-62.727002,-64.495996],[-62.781787,-64.479004],[-62.746826,-64.47168],[-62.720898,-64.444531],[-62.643018,-64.391602],[-62.504004,-64.253418],[-62.479736,-64.210645],[-62.590283,-64.139648],[-62.610742,-64.116309],[-62.585693,-64.075586],[-62.544971,-64.045703],[-62.451416,-64.012402],[-62.32876,-64.013477],[-62.267627,-64.039941],[-62.26875,-64.090039],[-62.058496,-64.138086],[-62.093848,-64.23457],[-62.174268,-64.295996],[-62.185693,-64.368848],[-62.303711,-64.401367],[-62.325781,-64.424414]]],[[[-67.988477,-67.474414],[-68.092529,-67.538672],[-68.175098,-67.558203],[-68.250391,-67.539648],[-68.325098,-67.532422],[-68.381299,-67.555371],[-68.439404,-67.65625],[-68.506738,-67.707129],[-68.58042,-67.732813],[-68.622363,-67.722559],[-68.664062,-67.722852],[-68.733691,-67.745703],[-68.818311,-67.753418],[-68.901367,-67.744238],[-68.982324,-67.67998],[-69.097559,-67.602734],[-69.120361,-67.57793],[-69.138037,-67.515234],[-69.132666,-67.452637],[-69.082422,-67.403125],[-68.819922,-67.233594],[-68.733594,-67.157227],[-68.656348,-67.07041],[-68.574609,-66.992578],[-68.416846,-66.85332],[-68.335938,-66.802051],[-67.937646,-66.656836],[-67.830518,-66.624316],[-67.711133,-66.633008],[-67.681152,-66.708984],[-67.74082,-66.746191],[-67.932373,-66.844531],[-67.969189,-66.982129],[-67.968408,-67.032227],[-67.948926,-67.044824],[-67.876074,-67.062402],[-67.827783,-67.081934],[-67.761182,-67.122949],[-67.687842,-67.147363],[-67.848047,-67.219141],[-67.956348,-67.255371],[-68.030078,-67.3],[-68.175146,-67.344141],[-68.235107,-67.371973],[-68.144434,-67.382422],[-68.006982,-67.417969],[-67.969482,-67.450293],[-67.988477,-67.474414]]],[[[-73.706641,-70.635156],[-73.550342,-70.723438],[-73.694531,-70.794336],[-74.205029,-70.924121],[-74.504736,-70.973438],[-74.805811,-71.012305],[-76.176318,-71.132422],[-76.271289,-71.132812],[-76.363965,-71.116797],[-76.421484,-71.09043],[-76.511523,-70.99082],[-76.500244,-70.941406],[-76.377637,-70.894141],[-76.248877,-70.86377],[-76.03457,-70.835938],[-75.21001,-70.772559],[-75.126953,-70.751758],[-75.059912,-70.705566],[-75.037549,-70.650586],[-75.007471,-70.608887],[-74.953613,-70.590234],[-74.898486,-70.590527],[-74.790479,-70.630957],[-74.589697,-70.791992],[-74.527148,-70.769727],[-74.468652,-70.72666],[-74.456152,-70.586719],[-74.400977,-70.575879],[-74.225,-70.614648],[-74.114551,-70.655371],[-74.112646,-70.576758],[-74.03833,-70.55293],[-73.957812,-70.560938],[-73.879492,-70.578125],[-73.706641,-70.635156]]],[[[-74.987109,-69.727832],[-74.810156,-69.752441],[-74.549707,-69.860938],[-74.46543,-69.916895],[-74.437988,-69.949609],[-74.460059,-69.97168],[-74.578418,-69.998047],[-74.671777,-70.131738],[-74.848828,-70.179297],[-75.268408,-70.149414],[-75.726758,-70.096094],[-75.764453,-70.085059],[-75.80415,-70.038184],[-75.812939,-69.983984],[-75.759521,-69.916113],[-75.681348,-69.881641],[-75.339941,-69.840234],[-75.313916,-69.816797],[-75.264551,-69.749316],[-75.178955,-69.735156],[-75.136377,-69.740625],[-74.987109,-69.727832]]],[[[-74.354443,-73.098438],[-74.498926,-73.229199],[-74.522461,-73.243945],[-74.667676,-73.275293],[-74.615381,-73.311426],[-74.575488,-73.327734],[-74.550635,-73.369141],[-74.467139,-73.427148],[-74.366113,-73.464258],[-74.4521,-73.56543],[-74.574658,-73.611328],[-75.90083,-73.332617],[-76.003223,-73.287988],[-76.053125,-73.254688],[-76.09043,-73.202832],[-76.096387,-73.150488],[-76.062402,-73.108789],[-76.017676,-73.085449],[-75.897656,-73.056348],[-75.774658,-73.054297],[-75.505859,-73.108887],[-75.467578,-73.101074],[-75.417236,-73.051563],[-75.276221,-73.050391],[-75.243848,-73.009375],[-75.439453,-72.994238],[-75.600293,-72.952637],[-75.701758,-72.911035],[-75.731055,-72.879297],[-75.376855,-72.82041],[-74.473877,-72.89375],[-74.335547,-72.918945],[-74.275781,-72.95127],[-74.223877,-72.99707],[-74.354443,-73.098438]]],[[[-91.160693,-73.182227],[-91.344189,-73.207129],[-91.51084,-73.195508],[-91.450391,-72.967871],[-91.356885,-72.909473],[-91.382129,-72.867871],[-91.551465,-72.753613],[-91.67002,-72.62373],[-91.612402,-72.593848],[-91.303516,-72.547363],[-90.947412,-72.556348],[-90.807129,-72.610645],[-90.76333,-72.681055],[-90.780176,-72.731738],[-90.895361,-72.823633],[-90.776221,-72.854004],[-90.750977,-72.916602],[-90.775586,-72.992969],[-90.893066,-73.083984],[-90.998437,-73.136523],[-91.160693,-73.182227]]],[[[167.642773,-78.141406],[167.51748,-78.216016],[167.376953,-78.249023],[166.93623,-78.222461],[166.625977,-78.284277],[166.284863,-78.306445],[166.121875,-78.274609],[166.050586,-78.213379],[166.0125,-78.13125],[166.012891,-78.101953],[166.111133,-78.089648],[166.56709,-78.148047],[166.759863,-78.197949],[166.863672,-78.196387],[167.137891,-78.12998],[167.364063,-78.045801],[167.422363,-78.006445],[167.497852,-77.992383],[167.593848,-78.022266],[167.639844,-78.111719],[167.642773,-78.141406]]],[[[100.981445,-65.677539],[100.546875,-65.70127],[100.512305,-65.675391],[100.350586,-65.672949],[100.292578,-65.65127],[100.270312,-65.60332],[100.324121,-65.520703],[100.409375,-65.465625],[100.545117,-65.408984],[100.606934,-65.396387],[100.883398,-65.378125],[101.078711,-65.402539],[101.220605,-65.472266],[101.258984,-65.527637],[101.238379,-65.564551],[100.981445,-65.677539]]],[[[26.857227,-70.381152],[26.792969,-70.419336],[26.608789,-70.412402],[26.470215,-70.447949],[26.357617,-70.434277],[26.005371,-70.372949],[25.964258,-70.294531],[25.954102,-70.261426],[25.98252,-70.199902],[26.301074,-70.072461],[26.425586,-70.060547],[26.604785,-70.078223],[26.68623,-70.114453],[26.737402,-70.186035],[26.874805,-70.32998],[26.857227,-70.381152]]],[[[-5.894092,-70.552246],[-6.156104,-70.611523],[-6.180859,-70.585547],[-6.266113,-70.550195],[-6.437988,-70.452637],[-6.243652,-70.445703],[-6.068262,-70.404688],[-5.971631,-70.421484],[-5.949512,-70.432227],[-5.894092,-70.552246]]],[[[-3.280225,-70.533789],[-3.441895,-70.535449],[-3.490234,-70.508008],[-3.496826,-70.488379],[-3.287451,-70.344043],[-3.173242,-70.307324],[-2.949902,-70.279688],[-2.805127,-70.288477],[-2.713525,-70.320215],[-2.684375,-70.376172],[-2.682715,-70.462207],[-2.738037,-70.507031],[-3.280225,-70.533789]]],[[[-66.173633,-80.077832],[-66.267187,-80.081445],[-66.319482,-80.075098],[-66.366895,-80.054297],[-66.4104,-79.97334],[-66.904199,-79.908887],[-66.962354,-79.872656],[-66.993652,-79.793359],[-67.077246,-79.761816],[-67.719141,-79.620215],[-67.770752,-79.589453],[-67.80874,-79.545898],[-67.687939,-79.528418],[-67.438232,-79.560352],[-66.978906,-79.568652],[-66.881299,-79.582227],[-66.785205,-79.608008],[-66.273779,-79.612012],[-66.01416,-79.624414],[-65.870312,-79.737695],[-65.579248,-79.770801],[-65.539551,-79.836914],[-65.504443,-79.954297],[-65.899023,-80.040527],[-65.989404,-80.054004],[-66.173633,-80.077832]]],[[[-67.261914,-79.452637],[-67.434326,-79.501172],[-68.161475,-79.478516],[-68.408105,-79.463965],[-68.548926,-79.437402],[-68.422266,-79.333203],[-68.324365,-79.298242],[-68.233008,-79.284961],[-68.032568,-79.227148],[-67.71416,-79.214063],[-67.474512,-79.222949],[-67.068652,-79.268457],[-67.172949,-79.311523],[-67.239502,-79.327637],[-67.304883,-79.394043],[-67.261914,-79.452637]]],[[[-55.16543,-61.22041],[-55.297021,-61.248535],[-55.346924,-61.211621],[-55.369141,-61.146387],[-55.440234,-61.106152],[-55.387012,-61.072656],[-54.670996,-61.116992],[-54.709961,-61.139746],[-55.057617,-61.168652],[-55.16543,-61.22041]]],[[[-55.872559,-63.535645],[-55.956738,-63.57998],[-56.178369,-63.513281],[-56.235205,-63.468848],[-56.209863,-63.436914],[-55.85791,-63.407324],[-55.761816,-63.42207],[-55.719189,-63.49209],[-55.872559,-63.535645]]],[[[-57.240479,-64.566797],[-57.32627,-64.570703],[-57.433398,-64.540234],[-57.4479,-64.488477],[-57.445898,-64.459863],[-57.365625,-64.43877],[-57.314551,-64.435352],[-57.022559,-64.352344],[-56.894727,-64.333008],[-56.951709,-64.381738],[-56.945264,-64.427246],[-56.991016,-64.467969],[-57.240479,-64.566797]]],[[[-56.059961,-63.078516],[-56.258984,-63.173145],[-56.354102,-63.168848],[-56.54585,-63.09834],[-56.600537,-63.061621],[-56.61416,-63.045117],[-56.488574,-62.982227],[-56.140381,-63.005273],[-56.061768,-63.012695],[-56.058447,-63.018555],[-56.051025,-63.054688],[-56.059961,-63.078516]]],[[[-57.37417,-63.807227],[-57.360205,-63.824805],[-57.16084,-63.815723],[-57.104004,-63.841211],[-57.218018,-63.875586],[-57.247754,-63.868359],[-57.34375,-63.878516],[-57.616357,-63.853613],[-57.683252,-63.812695],[-57.439355,-63.791406],[-57.37417,-63.807227]]],[[[-61.997607,-69.721875],[-62.085156,-69.729492],[-62.171924,-69.636621],[-62.216016,-69.494922],[-62.49624,-69.288184],[-62.567676,-69.180469],[-62.515869,-69.15459],[-62.442139,-69.145996],[-62.238965,-69.175781],[-62.11792,-69.214746],[-61.978369,-69.300391],[-61.815967,-69.376172],[-61.783691,-69.441895],[-61.807178,-69.514648],[-61.911328,-69.533398],[-61.907812,-69.587598],[-61.970117,-69.691406],[-61.997607,-69.721875]]],[[[-60.625,-62.560059],[-60.576318,-62.572656],[-60.139893,-62.54873],[-60.002734,-62.618457],[-59.849561,-62.614941],[-60.220947,-62.74541],[-60.321582,-62.70752],[-60.353809,-62.679199],[-60.378027,-62.616504],[-60.619629,-62.633398],[-60.696924,-62.620703],[-60.795898,-62.662305],[-60.995068,-62.679102],[-61.06333,-62.678906],[-61.149805,-62.63418],[-61.152393,-62.589063],[-60.974707,-62.591699],[-60.837744,-62.533691],[-60.799268,-62.475195],[-60.731836,-62.491016],[-60.625,-62.560059]]],[[[-71.985352,-69.698438],[-72.202051,-69.740137],[-72.34458,-69.707031],[-72.776758,-69.64502],[-72.957324,-69.529102],[-72.936768,-69.468848],[-72.857324,-69.433105],[-72.726172,-69.413086],[-72.464307,-69.451855],[-72.331152,-69.491797],[-71.985352,-69.698438]]],[[[-95.027051,-72.665039],[-95.219434,-72.669824],[-95.272949,-72.646875],[-95.215625,-72.599414],[-94.753027,-72.517188],[-94.566113,-72.468066],[-94.538379,-72.475781],[-94.513867,-72.491699],[-94.433936,-72.58916],[-94.426025,-72.612598],[-95.027051,-72.665039]]],[[[-104.537939,-73.166309],[-104.65957,-73.212109],[-104.880957,-73.200586],[-105.05293,-73.125977],[-105.123437,-73.026367],[-105.131787,-72.991504],[-105.08457,-72.965918],[-104.972412,-72.941016],[-104.537939,-73.166309]]],[[[-119.548926,-74.110254],[-119.75835,-74.12207],[-119.820996,-74.119629],[-119.887207,-74.097266],[-119.905127,-74.081543],[-119.79668,-74.029199],[-119.69375,-74.006152],[-119.661572,-73.989355],[-119.802588,-73.814648],[-119.669043,-73.809277],[-119.516357,-73.774902],[-119.216211,-73.777637],[-118.959277,-73.809473],[-118.909814,-73.834277],[-118.877344,-73.878027],[-118.989795,-73.966992],[-119.058594,-73.997656],[-119.448535,-74.076172],[-119.548926,-74.110254]]],[[[-127.36582,-74.622656],[-127.517725,-74.640527],[-127.81709,-74.574609],[-127.915234,-74.542578],[-128.000049,-74.489453],[-128.070459,-74.478223],[-128.09624,-74.466211],[-128.133447,-74.327441],[-128.042871,-74.312207],[-127.852979,-74.331836],[-127.486426,-74.405273],[-127.229736,-74.425195],[-127.145166,-74.480176],[-127.231934,-74.578418],[-127.36582,-74.622656]]],[[[-161.993799,-83.11875],[-162.304932,-83.141797],[-163.046533,-83.096777],[-163.242139,-83.059668],[-163.348389,-83.021582],[-163.5521,-82.987695],[-163.601758,-82.968555],[-163.602197,-82.927344],[-163.634326,-82.902246],[-163.703906,-82.879297],[-163.735303,-82.856836],[-163.795947,-82.842676],[-162.798486,-82.864844],[-162.410596,-82.899219],[-162.339795,-82.922754],[-161.635156,-83.026953],[-161.828223,-83.042578],[-161.993799,-83.11875]]],[[[-160.467139,-81.589453],[-160.570996,-81.597852],[-163.253076,-81.482422],[-163.766064,-81.444824],[-163.890137,-81.423633],[-163.939258,-81.404102],[-163.951221,-81.390918],[-163.930029,-81.352148],[-163.868994,-81.324023],[-163.200635,-81.281445],[-162.456494,-81.313281],[-161.558594,-81.39668],[-160.937891,-81.463477],[-160.616895,-81.52207],[-160.485449,-81.566992],[-160.467139,-81.589453]]],[[[163.975977,-74.832715],[163.844629,-74.832715],[163.763379,-74.802832],[163.737207,-74.733789],[163.741699,-74.711523],[164.002344,-74.628906],[164.208496,-74.607715],[164.098242,-74.731934],[164.05918,-74.752734],[163.975977,-74.832715]]],[[[162.968066,-75.56709],[162.788281,-75.696191],[162.661914,-75.691895],[162.591211,-75.668555],[162.72002,-75.59668],[162.842383,-75.566211],[162.916992,-75.557324],[162.968066,-75.56709]]],[[[169.843652,-73.60498],[169.70918,-73.625293],[169.522363,-73.561523],[169.479492,-73.539453],[169.659375,-73.418066],[169.64541,-73.379102],[169.671875,-73.346094],[169.740039,-73.32041],[169.783203,-73.324219],[169.886523,-73.458691],[169.960352,-73.514355],[169.858789,-73.568066],[169.843652,-73.60498]]],[[[164.833594,-67.54043],[164.746289,-67.568848],[164.69209,-67.560059],[164.638965,-67.500098],[164.696289,-67.407813],[164.675195,-67.288867],[164.683984,-67.259375],[164.825,-67.326074],[164.850098,-67.363672],[164.907227,-67.418555],[164.918652,-67.447461],[164.860449,-67.503906],[164.833594,-67.54043]]],[[[163.301953,-66.821191],[163.283594,-66.881934],[163.23457,-66.867969],[163.163867,-66.819141],[163.089648,-66.700586],[163.156152,-66.688477],[163.237891,-66.708789],[163.271094,-66.767578],[163.299121,-66.798438],[163.301953,-66.821191]]],[[[162.611426,-66.477344],[162.557129,-66.525098],[162.511328,-66.520117],[162.302734,-66.399707],[162.32627,-66.347461],[162.297266,-66.303711],[162.302051,-66.264648],[162.310547,-66.25127],[162.563281,-66.432617],[162.611426,-66.477344]]],[[[96.612695,-66.03584],[96.727344,-66.06084],[96.931641,-66.058398],[97.005566,-66.096777],[97.018848,-66.139453],[97.015625,-66.163965],[96.933984,-66.200781],[96.394531,-66.225],[96.307031,-66.18584],[96.398828,-66.080176],[96.499805,-66.045898],[96.612695,-66.03584]]],[[[100.264746,-66.216602],[100.133203,-66.229492],[100.082031,-66.202734],[100.07627,-66.188086],[100.174414,-66.131055],[100.290527,-66.112402],[100.281543,-66.17998],[100.264746,-66.216602]]],[[[98.846094,-66.469824],[98.751758,-66.481641],[98.655078,-66.45332],[98.605176,-66.399902],[98.596484,-66.382617],[98.748633,-66.369238],[98.949805,-66.420508],[98.846094,-66.469824]]],[[[103.397266,-65.445312],[103.337207,-65.468555],[103.175977,-65.454688],[103.138477,-65.435059],[103.124219,-65.338379],[103.112793,-65.312012],[103.054395,-65.285352],[102.78877,-65.235938],[102.75957,-65.167871],[102.796094,-65.136328],[102.892871,-65.129688],[103.136816,-65.190625],[103.19082,-65.237109],[103.181738,-65.307715],[103.186133,-65.330566],[103.261035,-65.377344],[103.378906,-65.426465],[103.397266,-65.445312]]],[[[92.601367,-65.808301],[92.470508,-65.82168],[92.333008,-65.807227],[92.262793,-65.760059],[92.248145,-65.739941],[92.301465,-65.706738],[92.496387,-65.702148],[92.633789,-65.730664],[92.664551,-65.760449],[92.669629,-65.774805],[92.601367,-65.808301]]],[[[85.822363,-66.95332],[85.650098,-66.979688],[85.622266,-66.965332],[85.617383,-66.950879],[85.358789,-66.854297],[85.314453,-66.775977],[85.340332,-66.72334],[85.552832,-66.728516],[85.80625,-66.774609],[85.937695,-66.894141],[85.822363,-66.95332]]],[[[86.541797,-66.76748],[86.42666,-66.791992],[86.337012,-66.787598],[86.232227,-66.73291],[86.277734,-66.69668],[86.383301,-66.674805],[86.520605,-66.686914],[86.556738,-66.705762],[86.651953,-66.718164],[86.541797,-66.76748]]],[[[85.328516,-66.611914],[85.222461,-66.643457],[85.136133,-66.637109],[85.07959,-66.604297],[85.06875,-66.583789],[85.121094,-66.518555],[85.164746,-66.521582],[85.193945,-66.556055],[85.328516,-66.611914]]],[[[69.918359,-71.917773],[69.791992,-72.04668],[69.743555,-72.044141],[69.692578,-71.968262],[69.737109,-71.921973],[69.796094,-71.893945],[69.895215,-71.907813],[69.918359,-71.917773]]],[[[68.461719,-72.300098],[68.408887,-72.300195],[68.436133,-72.260449],[68.566309,-72.190137],[68.66709,-72.103125],[68.729297,-72.08916],[68.84043,-72.16543],[68.817188,-72.228711],[68.669531,-72.275977],[68.461719,-72.300098]]],[[[72.002246,-70.632617],[71.929004,-70.633008],[71.841211,-70.621973],[71.725781,-70.549121],[71.659375,-70.497461],[71.637109,-70.443555],[71.646582,-70.336328],[71.705078,-70.284375],[71.796582,-70.264258],[71.837988,-70.312207],[71.851172,-70.367676],[71.87998,-70.405566],[72,-70.456836],[72.055664,-70.500977],[72.073438,-70.524512],[72.097363,-70.574609],[72.078125,-70.609082],[72.002246,-70.632617]]],[[[48.545996,-66.78418],[48.37793,-66.807324],[48.304492,-66.797852],[48.295996,-66.773828],[48.293945,-66.750098],[48.300781,-66.724219],[48.357715,-66.703809],[48.637793,-66.700977],[48.751074,-66.719629],[48.782422,-66.731152],[48.785547,-66.767578],[48.774707,-66.77832],[48.545996,-66.78418]]],[[[16.222656,-70.007617],[16.159277,-70.071973],[15.844922,-69.982031],[15.663477,-69.955078],[15.613867,-69.939063],[15.570996,-69.884766],[15.562598,-69.862793],[15.596875,-69.828027],[15.699023,-69.773242],[15.90957,-69.728418],[16.246875,-69.70498],[16.573438,-69.723242],[16.625488,-69.750293],[16.31543,-69.844434],[16.222656,-70.007617]]],[[[3.036914,-70.597363],[2.697754,-70.623535],[2.622754,-70.593359],[2.584668,-70.53457],[2.631445,-70.500391],[3.072168,-70.381641],[3.192773,-70.392676],[3.230566,-70.402637],[3.259863,-70.448828],[3.221289,-70.519141],[3.171094,-70.553906],[3.036914,-70.597363]]],[[[-2.95498,-71.21377],[-3.060596,-71.236621],[-3.201465,-71.230273],[-3.309375,-71.200879],[-3.385645,-71.142969],[-3.403857,-71.119824],[-3.391699,-71.081152],[-3.398975,-71.062109],[-3.263037,-71.051758],[-3.212793,-71.075977],[-3.191357,-71.094824],[-2.95498,-71.21377]]],[[[1.299316,-70.255176],[1.211523,-70.381348],[1.156348,-70.378125],[1.10459,-70.304199],[0.990332,-70.224316],[0.952539,-70.168945],[0.949609,-70.094043],[1.026758,-70.049805],[1.314844,-70.022754],[1.412207,-70.040723],[1.460938,-70.135645],[1.299316,-70.255176]]],[[[-2.532812,-70.767773],[-2.423437,-70.800391],[-2.255566,-70.796094],[-2.092285,-70.820898],[-2.119043,-70.855371],[-2.212695,-70.901563],[-2.293164,-70.997949],[-2.368945,-71.044434],[-2.606738,-71.141113],[-2.783496,-71.16748],[-2.825146,-71.112695],[-2.821875,-71.056738],[-2.805176,-71.014746],[-2.800537,-70.982227],[-2.963135,-70.940332],[-2.975,-70.883301],[-3.006982,-70.851465],[-3.488965,-70.735938],[-3.574658,-70.703125],[-3.537061,-70.683301],[-3.040039,-70.674414],[-2.749805,-70.694141],[-2.532812,-70.767773]]],[[[4.525879,-70.478711],[4.365234,-70.502637],[4.179688,-70.45127],[4.12959,-70.416992],[4.076172,-70.325293],[4.069727,-70.290234],[4.111719,-70.266797],[4.256055,-70.24082],[4.49502,-70.251367],[4.58623,-70.294238],[4.617578,-70.368652],[4.589941,-70.43252],[4.525879,-70.478711]]],[[[-20.607422,-73.886621],[-20.654248,-74.10498],[-20.64126,-74.150586],[-20.600342,-74.196875],[-20.42334,-74.317383],[-20.411426,-74.408496],[-20.41665,-74.443359],[-20.489014,-74.492676],[-20.737012,-74.480957],[-20.817676,-74.454785],[-20.845654,-74.437793],[-20.976758,-74.225098],[-21.051221,-74.176074],[-21.166553,-74.132617],[-21.609863,-74.091797],[-22.035352,-74.106543],[-21.930371,-74.056641],[-21.288281,-73.989355],[-21.126367,-73.939844],[-21.024512,-73.880078],[-20.979199,-73.79043],[-20.867041,-73.67666],[-20.690137,-73.625195],[-20.580225,-73.619238],[-20.520703,-73.711816],[-20.520703,-73.797852],[-20.607422,-73.886621]]],[[[-16.104492,-72.679102],[-16.174805,-72.702832],[-16.317578,-72.702148],[-16.453027,-72.652344],[-16.509766,-72.582227],[-16.516553,-72.530859],[-16.455371,-72.473535],[-16.355859,-72.458594],[-16.302881,-72.478027],[-16.17251,-72.6],[-16.104492,-72.679102]]],[[[-12.508887,-72.17334],[-12.588428,-72.196094],[-12.720166,-72.187695],[-12.888428,-72.137109],[-12.943701,-72.098926],[-12.963281,-72.064453],[-12.914795,-72.014648],[-12.875488,-72.000684],[-12.788867,-72.006543],[-12.636621,-72.071289],[-12.534766,-72.140039],[-12.508887,-72.17334]]],[[[-32.342529,-79.673633],[-32.514893,-79.682813],[-32.583252,-79.658301],[-32.50083,-79.592285],[-32.376611,-79.534668],[-32.15,-79.529883],[-31.933447,-79.567871],[-31.956738,-79.603809],[-32.001172,-79.607031],[-32.342529,-79.673633]]],[[[-54.070703,-61.299121],[-54.11543,-61.308496],[-54.183887,-61.269727],[-54.192236,-61.246582],[-54.121973,-61.201758],[-54.049902,-61.14209],[-54.024316,-61.135254],[-54.041309,-61.255371],[-54.070703,-61.299121]]],[[[-58.837939,-62.302539],[-59.059424,-62.347754],[-59.174561,-62.301758],[-59.202441,-62.283105],[-59.063818,-62.239063],[-58.990625,-62.249219],[-58.962109,-62.263867],[-58.878662,-62.267871],[-58.837939,-62.302539]]],[[[-61.158447,-69.975781],[-61.308643,-69.97793],[-61.378467,-69.949805],[-61.404346,-69.93252],[-61.386475,-69.893262],[-61.327148,-69.856348],[-61.151855,-69.883105],[-61.10791,-69.955273],[-61.158447,-69.975781]]],[[[-60.655908,-68.767578],[-60.693359,-68.79502],[-60.820068,-68.778418],[-60.894043,-68.758887],[-61.014941,-68.709766],[-60.947168,-68.680664],[-60.813574,-68.687695],[-60.704834,-68.72207],[-60.655908,-68.767578]]],[[[-60.740625,-70.710547],[-60.826074,-70.710547],[-60.896484,-70.689648],[-60.958008,-70.629004],[-60.975537,-70.599121],[-60.941797,-70.53252],[-60.883887,-70.517578],[-60.553662,-70.508789],[-60.45249,-70.544238],[-60.448975,-70.60332],[-60.487695,-70.64668],[-60.740625,-70.710547]]],[[[-60.552246,-71.05293],[-60.652148,-71.058691],[-60.789746,-71.041113],[-60.906348,-71.007422],[-60.946484,-70.967383],[-60.889062,-70.934375],[-60.782812,-70.914062],[-60.613135,-70.920117],[-60.533301,-70.9625],[-60.516309,-70.999512],[-60.535937,-71.040918],[-60.552246,-71.05293]]],[[[-59.389014,-62.444336],[-59.525244,-62.451465],[-59.619434,-62.39502],[-59.660693,-62.354297],[-59.478516,-62.352148],[-59.39585,-62.367285],[-59.353369,-62.412891],[-59.389014,-62.444336]]],[[[-60.504883,-62.967383],[-60.554688,-62.977539],[-60.619727,-62.969043],[-60.617725,-62.986621],[-60.563672,-63.008984],[-60.62168,-63.017969],[-60.69292,-62.995703],[-60.74043,-62.948633],[-60.705859,-62.905566],[-60.637402,-62.895215],[-60.504883,-62.967383]]],[[[-60.653125,-63.866602],[-60.777686,-63.902148],[-60.852441,-63.891016],[-60.972168,-63.849023],[-60.810059,-63.836621],[-60.79668,-63.716699],[-60.714844,-63.668848],[-60.562354,-63.695898],[-60.655908,-63.758984],[-60.688867,-63.80791],[-60.65498,-63.850098],[-60.653125,-63.866602]]],[[[-61.952441,-64.077148],[-62.043896,-64.080371],[-62.020752,-64.027344],[-61.936279,-63.990234],[-61.798242,-63.966602],[-61.88623,-64.026953],[-61.911133,-64.054492],[-61.952441,-64.077148]]],[[[-63.316211,-64.861133],[-63.474414,-64.906543],[-63.55835,-64.905957],[-63.459277,-64.796289],[-63.366895,-64.79209],[-63.219385,-64.729785],[-63.177246,-64.73877],[-63.256934,-64.79082],[-63.316211,-64.861133]]],[[[-62.615088,-63.069336],[-62.655273,-63.073828],[-62.638867,-63.031934],[-62.527051,-62.923828],[-62.317432,-62.874121],[-62.344043,-62.917773],[-62.411475,-62.971582],[-62.615088,-63.069336]]],[[[-65.845264,-65.84248],[-66.063916,-65.880859],[-66.175293,-65.866504],[-66.181445,-65.826367],[-66.153467,-65.77373],[-66.049609,-65.744727],[-66.066943,-65.666113],[-65.999707,-65.632812],[-65.968311,-65.570996],[-65.833594,-65.527246],[-65.636914,-65.547754],[-65.667969,-65.626172],[-65.669678,-65.65293],[-65.78374,-65.674316],[-65.813867,-65.686621],[-65.84082,-65.738477],[-65.835742,-65.81377],[-65.845264,-65.84248]]],[[[-66.595312,-66.200684],[-66.818652,-66.312695],[-66.85,-66.305469],[-66.867529,-66.293848],[-66.866992,-66.274805],[-66.791504,-66.233594],[-66.779004,-66.11084],[-66.631348,-66.066797],[-66.575195,-66.082422],[-66.622852,-66.133887],[-66.592627,-66.178613],[-66.595312,-66.200684]]],[[[-67.362402,-66.894531],[-67.409229,-66.901953],[-67.520801,-66.897266],[-67.593262,-66.875586],[-67.499512,-66.803613],[-67.51084,-66.75625],[-67.425977,-66.736914],[-67.331689,-66.753516],[-67.26875,-66.815234],[-67.256982,-66.840918],[-67.362402,-66.894531]]],[[[-67.348926,-67.766211],[-67.544531,-67.785254],[-67.693359,-67.763477],[-67.689697,-67.687695],[-67.730664,-67.679492],[-67.743262,-67.66123],[-67.556738,-67.604492],[-67.417676,-67.590625],[-67.246729,-67.59873],[-67.174902,-67.624512],[-67.149414,-67.650195],[-67.279687,-67.711914],[-67.299707,-67.737207],[-67.348926,-67.766211]]],[[[-71.69502,-70.265137],[-71.647754,-70.29541],[-71.431592,-70.267285],[-71.354883,-70.297852],[-71.340283,-70.31748],[-71.437744,-70.391504],[-71.551221,-70.438867],[-71.684668,-70.442285],[-71.781982,-70.318848],[-71.795264,-70.288379],[-71.69502,-70.265137]]],[[[-73.878418,-73.356836],[-73.974805,-73.376074],[-74.038281,-73.365527],[-74.146631,-73.31543],[-74.134424,-73.27666],[-74.084473,-73.249316],[-74.04873,-73.220215],[-73.832129,-73.113281],[-73.674219,-73.100391],[-73.542432,-73.123828],[-73.682275,-73.225],[-73.721387,-73.296289],[-73.878418,-73.356836]]],[[[-93.795605,-72.919727],[-93.965527,-72.920215],[-94.078125,-72.883887],[-94.113184,-72.860059],[-94.046973,-72.823047],[-94.004248,-72.819727],[-93.799561,-72.882031],[-93.755811,-72.907617],[-93.795605,-72.919727]]],[[[-116.738623,-74.165039],[-117.230322,-74.192773],[-117.362988,-74.160938],[-117.398291,-74.122461],[-117.376465,-74.082813],[-116.381299,-73.865527],[-116.202686,-73.895605],[-116.15498,-73.910449],[-116.451416,-74.017676],[-116.58457,-74.055566],[-116.608643,-74.068555],[-116.53418,-74.083301],[-116.514111,-74.095508],[-116.570898,-74.125684],[-116.738623,-74.165039]]],[[[-132.39126,-74.441895],[-132.546289,-74.498438],[-132.857178,-74.461719],[-132.831689,-74.421582],[-132.55249,-74.386621],[-132.362305,-74.409961],[-132.39126,-74.441895]]],[[[-131.066699,-74.583789],[-131.178906,-74.604785],[-131.597949,-74.553711],[-131.840869,-74.542578],[-131.95249,-74.514355],[-132.025098,-74.488672],[-132.049316,-74.463867],[-132.162646,-74.425781],[-131.937793,-74.349121],[-131.762695,-74.323828],[-131.594092,-74.329688],[-131.559619,-74.367285],[-131.233887,-74.413574],[-130.981104,-74.414062],[-130.956787,-74.45625],[-130.967285,-74.515039],[-131.066699,-74.583789]]],[[[-147.588281,-76.649805],[-147.578857,-76.662793],[-147.729639,-76.653418],[-147.954297,-76.597168],[-148.001074,-76.577148],[-147.899707,-76.558008],[-147.769678,-76.576855],[-147.649121,-76.61084],[-147.588281,-76.649805]]],[[[-145.238086,-75.71123],[-145.348389,-75.716113],[-145.541162,-75.692676],[-146.042773,-75.611914],[-146.15083,-75.573535],[-146.075732,-75.533398],[-145.895508,-75.504785],[-145.760791,-75.513867],[-145.417383,-75.587988],[-145.31543,-75.641406],[-145.252246,-75.682813],[-145.238086,-75.71123]]],[[[-146.606738,-76.961328],[-146.981445,-77.005664],[-147.078906,-76.992773],[-147.044141,-76.929688],[-147.101465,-76.886523],[-147.115625,-76.866211],[-147.08667,-76.837305],[-146.866504,-76.837109],[-146.244385,-76.883105],[-146.163965,-76.948535],[-146.606738,-76.961328]]],[[[-148.59585,-77.006836],[-149.014648,-77.019141],[-149.244824,-76.993066],[-149.302539,-76.91582],[-149.238086,-76.900195],[-148.704102,-76.935645],[-148.508936,-76.95459],[-148.439746,-76.977148],[-148.474316,-76.997754],[-148.59585,-77.006836]]],[[[-149.333252,-76.717383],[-148.92793,-76.730078],[-148.662598,-76.720508],[-148.38418,-76.744434],[-148.320801,-76.77168],[-148.370947,-76.794922],[-148.669531,-76.802051],[-148.8146,-76.840723],[-148.983887,-76.845313],[-149.238477,-76.817773],[-149.468945,-76.757129],[-149.333252,-76.717383]]],[[[-149.218115,-77.336328],[-148.928857,-77.386816],[-149.438672,-77.370605],[-149.662354,-77.300977],[-149.518652,-77.274707],[-149.375439,-77.27998],[-149.249121,-77.315039],[-149.218115,-77.336328]]],[[[-150.23252,-76.776465],[-150.655176,-76.788965],[-150.830469,-76.761523],[-150.873535,-76.736719],[-150.837646,-76.71416],[-150.177393,-76.691309],[-150.103564,-76.718848],[-150.084766,-76.735156],[-150.23252,-76.776465]]],[[[-146.690137,-76.246387],[-146.894482,-76.260938],[-147.150928,-76.197461],[-147.34541,-76.14668],[-147.407764,-76.10459],[-147.420898,-76.090234],[-147.418066,-76.073438],[-147.360645,-76.062793],[-146.949023,-76.098145],[-146.690137,-76.246387]]],[[[-146.790039,-76.633105],[-146.907813,-76.714063],[-147.221338,-76.670898],[-147.355322,-76.618848],[-147.278613,-76.552539],[-147.135303,-76.531543],[-146.947461,-76.55498],[-146.877881,-76.563281],[-146.790039,-76.633105]]],[[[-150.39707,-77.369141],[-150.474854,-77.37373],[-151.344482,-77.296289],[-151.511621,-77.27334],[-151.218018,-77.226465],[-151.021533,-77.22002],[-150.499121,-77.335059],[-150.35625,-77.349023],[-150.39707,-77.369141]]],[[[-153.930469,-80.033301],[-154.114062,-80.036035],[-154.348828,-80.026074],[-154.529443,-80.000488],[-154.94165,-79.966309],[-155.044775,-79.899805],[-155.525342,-79.846484],[-155.751172,-79.82959],[-155.674268,-79.765527],[-155.162207,-79.850684],[-154.535107,-79.935547],[-154.025391,-79.987695],[-153.930469,-80.033301]]],[[[-149.230664,-77.120508],[-149.293457,-77.136621],[-149.728613,-77.128516],[-149.816895,-77.11416],[-149.856348,-77.099414],[-150.461816,-77.075684],[-150.735791,-77.004297],[-150.788525,-76.981641],[-150.680225,-76.948438],[-150.475781,-76.926074],[-150.393311,-76.89873],[-149.870605,-76.875],[-149.789844,-76.889258],[-149.742578,-76.927051],[-149.505762,-77.00166],[-149.441748,-77.049219],[-149.416406,-77.078906],[-149.28833,-77.093164],[-149.230664,-77.120508]]],[[[-157.9875,-82.10498],[-158.076221,-82.112012],[-158.154102,-82.058496],[-158.545312,-81.948828],[-158.773193,-81.875488],[-158.926318,-81.818652],[-158.988721,-81.779297],[-158.913721,-81.779785],[-158.346729,-81.900488],[-158.26084,-81.947266],[-157.83457,-82.030762],[-157.9875,-82.10498]]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":3,"LABELRANK":6,"SOVEREIGNT":"Netherlands","SOV_A3":"NL1","ADM0_DIF":1,"LEVEL":2,"TYPE":"Country","TLC":"1","ADMIN":"Sint Maarten","ADM0_A3":"SXM","GEOU_DIF":0,"GEOUNIT":"Sint Maarten","GU_A3":"SXM","SU_DIF":0,"SUBUNIT":"Sint Maarten","SU_A3":"SXM","BRK_DIFF":0,"NAME":"Sint Maarten","NAME_LONG":"Sint Maarten","BRK_A3":"SXM","BRK_NAME":"Sint Maarten","BRK_GROUP":null,"ABBREV":"St. M.","POSTAL":"SX","FORMAL_EN":"Sint Maarten (Dutch part)","FORMAL_FR":null,"NAME_CIAWF":"Sint Maarten","NOTE_ADM0":"Neth.","NOTE_BRK":null,"NAME_SORT":"St. Maarten (Dutch part)","NAME_ALT":null,"MAPCOLOR7":4,"MAPCOLOR8":2,"MAPCOLOR9":2,"MAPCOLOR13":9,"POP_EST":40733,"POP_RANK":7,"POP_YEAR":2019,"GDP_MD":1185,"GDP_YEAR":2018,"ECONOMY":"6. Developing region","INCOME_GRP":"2. High income: nonOECD","FIPS_10":"NT","ISO_A2":"SX","ISO_A2_EH":"SX","ISO_A3":"SXM","ISO_A3_EH":"SXM","ISO_N3":"534","ISO_N3_EH":"534","UN_A3":"534","WB_A2":"SX","WB_A3":"SXM","WOE_ID":-90,"WOE_ID_EH":23425000,"WOE_NOTE":"Expired subunits of Netherlands Antilles (23424914).","ADM0_ISO":"SXM","ADM0_DIFF":null,"ADM0_TLC":"SXM","ADM0_A3_US":"SXM","ADM0_A3_FR":"SXM","ADM0_A3_RU":"SXM","ADM0_A3_ES":"SXM","ADM0_A3_CN":"SXM","ADM0_A3_TW":"SXM","ADM0_A3_IN":"SXM","ADM0_A3_NP":"SXM","ADM0_A3_PK":"SXM","ADM0_A3_DE":"SXM","ADM0_A3_GB":"SXM","ADM0_A3_BR":"SXM","ADM0_A3_IL":"SXM","ADM0_A3_PS":"SXM","ADM0_A3_SA":"SXM","ADM0_A3_EG":"SXM","ADM0_A3_MA":"SXM","ADM0_A3_PT":"SXM","ADM0_A3_AR":"SXM","ADM0_A3_JP":"SXM","ADM0_A3_KO":"SXM","ADM0_A3_VN":"SXM","ADM0_A3_TR":"SXM","ADM0_A3_ID":"SXM","ADM0_A3_PL":"SXM","ADM0_A3_GR":"SXM","ADM0_A3_IT":"SXM","ADM0_A3_NL":"SXM","ADM0_A3_SE":"SXM","ADM0_A3_BD":"SXM","ADM0_A3_UA":"SXM","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"North America","REGION_UN":"Americas","SUBREGION":"Caribbean","REGION_WB":"Latin America & Caribbean","NAME_LEN":12,"LONG_LEN":12,"ABBREV_LEN":6,"TINY":4,"HOMEPART":-99,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":-63.070133,"LABEL_Y":18.04088,"NE_ID":1159321103,"WIKIDATAID":"Q26273","NAME_AR":"سينت مارتن","NAME_BN":"সিন্ট মার্টেন","NAME_DE":"Sint Maarten","NAME_EN":"Sint Maarten","NAME_ES":"San Martín","NAME_FA":"سینت مارتن","NAME_FR":"Saint-Martin","NAME_EL":"Άγιος Μαρτίνος","NAME_HE":"סנט מארטן","NAME_HI":"सिंट मार्टेन","NAME_HU":"Sint Maarten","NAME_ID":"Sint Maarten","NAME_IT":"Sint Maarten","NAME_JA":"シント・マールテン","NAME_KO":"신트마르턴","NAME_NL":"Sint Maarten","NAME_PL":"Sint Maarten","NAME_PT":"São Martinho","NAME_RU":"Синт-Мартен","NAME_SV":"Sint Maarten","NAME_TR":"Sint Maarten","NAME_UK":"Сінт-Мартен","NAME_UR":"سنٹ مارٹن","NAME_VI":"Sint Maarten","NAME_ZH":"荷属圣马丁","NAME_ZHT":"荷屬聖馬丁","FCLASS_ISO":"Admin-0 dependency","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 dependency","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[-63.124707,18.019189,-63.011182,18.068945],"geometry":{"type":"Polygon","coordinates":[[[-63.123047,18.068945],[-63.011182,18.068945],[-63.012305,18.04541],[-63.023047,18.019189],[-63.09043,18.041406],[-63.124707,18.064307],[-63.123047,18.068945]]]}},{"type":"Feature","properties":{"featurecla":"Admin-0 country","scalerank":5,"LABELRANK":6,"SOVEREIGNT":"Tuvalu","SOV_A3":"TUV","ADM0_DIF":0,"LEVEL":2,"TYPE":"Sovereign country","TLC":"1","ADMIN":"Tuvalu","ADM0_A3":"TUV","GEOU_DIF":0,"GEOUNIT":"Tuvalu","GU_A3":"TUV","SU_DIF":0,"SUBUNIT":"Tuvalu","SU_A3":"TUV","BRK_DIFF":0,"NAME":"Tuvalu","NAME_LONG":"Tuvalu","BRK_A3":"TUV","BRK_NAME":"Tuvalu","BRK_GROUP":null,"ABBREV":"Tuv.","POSTAL":"TV","FORMAL_EN":"Tuvalu","FORMAL_FR":null,"NAME_CIAWF":"Tuvalu","NOTE_ADM0":null,"NOTE_BRK":null,"NAME_SORT":"Tuvalu","NAME_ALT":null,"MAPCOLOR7":1,"MAPCOLOR8":3,"MAPCOLOR9":8,"MAPCOLOR13":5,"POP_EST":11646,"POP_RANK":6,"POP_YEAR":2019,"GDP_MD":47,"GDP_YEAR":2019,"ECONOMY":"7. Least developed region","INCOME_GRP":"3. Upper middle income","FIPS_10":"TV","ISO_A2":"TV","ISO_A2_EH":"TV","ISO_A3":"TUV","ISO_A3_EH":"TUV","ISO_N3":"798","ISO_N3_EH":"798","UN_A3":"798","WB_A2":"TV","WB_A3":"TUV","WOE_ID":23424970,"WOE_ID_EH":23424970,"WOE_NOTE":"Exact WOE match as country","ADM0_ISO":"TUV","ADM0_DIFF":null,"ADM0_TLC":"TUV","ADM0_A3_US":"TUV","ADM0_A3_FR":"TUV","ADM0_A3_RU":"TUV","ADM0_A3_ES":"TUV","ADM0_A3_CN":"TUV","ADM0_A3_TW":"TUV","ADM0_A3_IN":"TUV","ADM0_A3_NP":"TUV","ADM0_A3_PK":"TUV","ADM0_A3_DE":"TUV","ADM0_A3_GB":"TUV","ADM0_A3_BR":"TUV","ADM0_A3_IL":"TUV","ADM0_A3_PS":"TUV","ADM0_A3_SA":"TUV","ADM0_A3_EG":"TUV","ADM0_A3_MA":"TUV","ADM0_A3_PT":"TUV","ADM0_A3_AR":"TUV","ADM0_A3_JP":"TUV","ADM0_A3_KO":"TUV","ADM0_A3_VN":"TUV","ADM0_A3_TR":"TUV","ADM0_A3_ID":"TUV","ADM0_A3_PL":"TUV","ADM0_A3_GR":"TUV","ADM0_A3_IT":"TUV","ADM0_A3_NL":"TUV","ADM0_A3_SE":"TUV","ADM0_A3_BD":"TUV","ADM0_A3_UA":"TUV","ADM0_A3_UN":-99,"ADM0_A3_WB":-99,"CONTINENT":"Oceania","REGION_UN":"Oceania","SUBREGION":"Polynesia","REGION_WB":"East Asia & Pacific","NAME_LEN":6,"LONG_LEN":6,"ABBREV_LEN":4,"TINY":5,"HOMEPART":1,"MIN_ZOOM":0,"MIN_LABEL":5,"MAX_LABEL":10,"LABEL_X":179.209587,"LABEL_Y":-8.513717,"NE_ID":1159321333,"WIKIDATAID":"Q672","NAME_AR":"توفالو","NAME_BN":"টুভালু","NAME_DE":"Tuvalu","NAME_EN":"Tuvalu","NAME_ES":"Tuvalu","NAME_FA":"تووالو","NAME_FR":"Tuvalu","NAME_EL":"Τουβαλού","NAME_HE":"טובאלו","NAME_HI":"तुवालू","NAME_HU":"Tuvalu","NAME_ID":"Tuvalu","NAME_IT":"Tuvalu","NAME_JA":"ツバル","NAME_KO":"투발루","NAME_NL":"Tuvalu","NAME_PL":"Tuvalu","NAME_PT":"Tuvalu","NAME_RU":"Тувалу","NAME_SV":"Tuvalu","NAME_TR":"Tuvalu","NAME_UK":"Тувалу","NAME_UR":"تووالو","NAME_VI":"Tuvalu","NAME_ZH":"图瓦卢","NAME_ZHT":"吐瓦魯","FCLASS_ISO":"Admin-0 country","TLC_DIFF":null,"FCLASS_TLC":"Admin-0 country","FCLASS_US":null,"FCLASS_FR":null,"FCLASS_RU":null,"FCLASS_ES":null,"FCLASS_CN":null,"FCLASS_TW":null,"FCLASS_IN":null,"FCLASS_NP":null,"FCLASS_PK":null,"FCLASS_DE":null,"FCLASS_GB":null,"FCLASS_BR":null,"FCLASS_IL":null,"FCLASS_PS":null,"FCLASS_SA":null,"FCLASS_EG":null,"FCLASS_MA":null,"FCLASS_PT":null,"FCLASS_AR":null,"FCLASS_JP":null,"FCLASS_KO":null,"FCLASS_VN":null,"FCLASS_TR":null,"FCLASS_ID":null,"FCLASS_PL":null,"FCLASS_GR":null,"FCLASS_IT":null,"FCLASS_NL":null,"FCLASS_SE":null,"FCLASS_BD":null,"FCLASS_UA":null},"bbox":[179.195703,-8.534961,179.216602,-8.466309],"geometry":{"type":"Polygon","coordinates":[[[179.213672,-8.524219],[179.200586,-8.534961],[179.195703,-8.534766],[179.200879,-8.512109],[179.197949,-8.488672],[179.198535,-8.47002],[179.203027,-8.466309],[179.211621,-8.488086],[179.216602,-8.514844],[179.213672,-8.524219]]]}}],"bbox":[-180,-89.99892578125,180,83.599609375]} diff --git a/admin/scripts/audit_catalog_ports.py b/admin/scripts/audit_catalog_ports.py new file mode 100644 index 0000000..b72d667 --- /dev/null +++ b/admin/scripts/audit_catalog_ports.py @@ -0,0 +1,195 @@ +#!/usr/bin/env python3 +""" +Supply Depot catalog port audit. + +For every curated (non-dependency) service in the `services` table, launch its image in a +throwaway container using the catalog's image / command / env / volume container-paths, then +detect what TCP port(s) the app actually listens on inside the container (via /proc/net/tcp, +which needs no tools in the image) and compare against the container port the catalog maps. + +A mismatch is the "Meshtastic Web" class of bug: the catalog publishes host->containerPort but +the app listens on a different internal port, so the published port reaches nothing. + +Non-invasive: separate `audit_*` containers, random host ports on 127.0.0.1, temp volumes, +auto-removed. It never touches NOMAD's service records or real containers. + +Run on a NOMAD host (needs the nomad_mysql container + docker): python3 audit_catalog_ports.py +""" +import json +import os +import shlex +import shutil +import subprocess +import tempfile +import time + +HOST_PORT_BASE = 9300 # throwaway host ports, well clear of catalog (8400s) and customs (8600s) +STARTUP_TIMEOUT = 60 # seconds to wait for an app to come up (heavy JVM apps like Stirling are slow) +MEMORY_CAP = "2g" # generous cap; some apps (Stirling) OOM under 1g and falsely look crashed + +# Apps that legitimately can't run in a throwaway probe (need real data or device config), so a +# "CRASHED"/"UNREACHABLE" verdict for them is expected and NOT a catalog port bug. Listed for the +# reader's benefit only — the script still probes them. +KNOWN_NEEDS_SETUP = { + "nomad_kiwix_server": "needs a ZIM library (managed separately by NOMAD)", + "nomad_meshtasticd": "needs a config.yaml with a MAC address", + "nomad_meshcore_web": "serves HTTPS on 443 only with the bind-mounted SSL config (absent in a bare probe)", +} + + +def sh(cmd): + return subprocess.run(cmd, shell=True, capture_output=True, text=True) + + +def mysql(query): + """Run a query in the nomad_mysql container, reading the password from its own env. + + The inner command is single-quoted for the host shell so $MYSQL_PASSWORD is NOT expanded + on the host (where it's unset) — it reaches the container's shell literally and expands there. + Query must contain no double quotes (these catalog queries don't). + """ + inner = 'mysql -N -unomad_user -p"$MYSQL_PASSWORD" nomad -e "%s"' % query + out = sh("docker exec nomad_mysql sh -c " + shlex.quote(inner)) + if out.returncode != 0: + raise SystemExit("mysql query failed: " + out.stderr) + return out.stdout + + +def parse_config(raw): + try: + return json.loads(raw) if raw else {} + except Exception: + return {} + + +def container_port(cfg): + """First container port from PortBindings (preferred) or ExposedPorts, e.g. '8080/tcp' -> 8080.""" + pb = (cfg.get("HostConfig") or {}).get("PortBindings") or {} + keys = list(pb.keys()) or list((cfg.get("ExposedPorts") or {}).keys()) + for k in keys: + try: + return int(k.split("/")[0]) + except ValueError: + continue + return None + + +def listening_ports(name): + """Listening TCP ports inside a container, parsed from /proc/net/tcp{,6} (st 0A = LISTEN).""" + ports = set() + for proc in ("/proc/net/tcp", "/proc/net/tcp6"): + out = sh(f"docker exec {name} cat {proc} 2>/dev/null") + for line in out.stdout.splitlines()[1:]: + f = line.split() + if len(f) > 3 and f[3] == "0A": + try: + ports.add(int(f[1].split(":")[1], 16)) + except (IndexError, ValueError): + pass + return sorted(ports) + + +def image_exposed(image): + out = sh(f"docker image inspect {image} --format '{{{{json .Config.ExposedPorts}}}}'") + try: + d = json.loads(out.stdout.strip() or "null") or {} + return sorted(int(k.split("/")[0]) for k in d) + except Exception: + return [] + + +def main(): + rows = mysql( + "SELECT service_name, container_image, COALESCE(container_command,''), container_config " + "FROM services WHERE category IS NOT NULL AND is_dependency_service=0 " + "AND is_custom=0 ORDER BY service_name" + ) + services = [r.split("\t", 3) for r in rows.splitlines() if r.strip()] + results = [] + + for idx, (name, image, command, raw_cfg) in enumerate(services): + cfg = parse_config(raw_cfg) + cport = container_port(cfg) + env = cfg.get("Env") or [] + binds = (cfg.get("HostConfig") or {}).get("Binds") or [] + host_port = HOST_PORT_BASE + idx + cname = "audit_" + name + tmpdirs = [] + + sh(f"docker rm -f {cname} >/dev/null 2>&1") + + args = ["docker", "run", "-d", "--name", cname, "--memory=" + MEMORY_CAP] + for e in env: + args += ["-e", e] + for b in binds: + cpath = b.split(":")[1] if ":" in b else b + td = tempfile.mkdtemp(prefix="audit_") + os.chmod(td, 0o777) + tmpdirs.append(td) + args += ["-v", f"{td}:{cpath}"] + if cport: + args += ["-p", f"127.0.0.1:{host_port}:{cport}/tcp"] + args.append(image) + if command.strip(): + args += command.split() + + run = subprocess.run(args, capture_output=True, text=True) + if run.returncode != 0: + results.append((name, image, cport, [], None, "START ERROR: " + run.stderr.strip()[:160])) + for td in tmpdirs: + shutil.rmtree(td, ignore_errors=True) + continue + + # Wait for the app to come up: a reachable published port or any internal listener. + reachable_code, listeners = "000", [] + deadline = time.time() + STARTUP_TIMEOUT + while time.time() < deadline: + state = sh(f"docker inspect -f '{{{{.State.Running}}}}' {cname}").stdout.strip() + listeners = listening_ports(cname) + if cport: + reachable_code = sh( + f"curl -s -o /dev/null -m 3 -w '%{{http_code}}' http://127.0.0.1:{host_port}" + ).stdout.strip() + if (cport and cport in listeners) or (reachable_code not in ("000", "")): + break + if state == "false" and listeners == []: + time.sleep(2) + time.sleep(2) + + running = sh(f"docker inspect -f '{{{{.State.Running}}}}' {cname}").stdout.strip() == "true" + if not running: + verdict = "CRASHED (exited)" + elif cport is None: + verdict = "NO PORT in catalog config" + elif cport in listeners: + verdict = f"OK (listens on {cport}, http={reachable_code})" + elif listeners: + verdict = f"PORT MISMATCH: catalog={cport}, app listens on {listeners}" + elif reachable_code not in ("000", ""): + verdict = f"OK (reachable http={reachable_code})" + else: + verdict = f"UNREACHABLE: nothing on catalog port {cport} (no listeners detected)" + + results.append((name, image, cport, listeners, image_exposed(image), verdict)) + + sh(f"docker rm -f {cname} >/dev/null 2>&1") + for td in tmpdirs: + shutil.rmtree(td, ignore_errors=True) + + print("\n===== SUPPLY DEPOT CATALOG PORT AUDIT =====\n") + for name, image, cport, listeners, exposed, verdict in results: + flag = " " if verdict.startswith("OK") else ">>" + print(f"{flag} {name}") + print(f" image: {image}") + print(f" catalog port: {cport} image EXPOSE: {exposed or '-'} listening: {listeners or '-'}") + print(f" verdict: {verdict}") + if name in KNOWN_NEEDS_SETUP and not verdict.startswith("OK"): + print(f" note: expected — {KNOWN_NEEDS_SETUP[name]}; not a port bug") + print() + bad = [r for r in results if not r[5].startswith("OK") and r[0] not in KNOWN_NEEDS_SETUP] + print(f"===== {len([r for r in results if r[5].startswith('OK')])}/{len(results)} OK; " + f"{len(bad)} unexpected issue(s), {len(KNOWN_NEEDS_SETUP)} known-needs-setup =====") + + +if __name__ == "__main__": + main() diff --git a/admin/start/env.ts b/admin/start/env.ts index 8223fa9..408f7b6 100644 --- a/admin/start/env.ts +++ b/admin/start/env.ts @@ -54,6 +54,7 @@ export default await Env.create(new URL('../', import.meta.url), { */ REDIS_HOST: Env.schema.string({ format: 'host' }), REDIS_PORT: Env.schema.number(), + REDIS_DB: Env.schema.number.optional(), /* |---------------------------------------------------------- diff --git a/admin/start/routes.ts b/admin/start/routes.ts index bfc835f..a9278a0 100644 --- a/admin/start/routes.ts +++ b/admin/start/routes.ts @@ -16,6 +16,7 @@ import MapsController from '#controllers/maps_controller' import OllamaController from '#controllers/ollama_controller' import RagController from '#controllers/rag_controller' import SettingsController from '#controllers/settings_controller' +import SupplyDepotController from '#controllers/supply_depot_controller' import SystemController from '#controllers/system_controller' import CollectionUpdatesController from '#controllers/collection_updates_controller' import ZimController from '#controllers/zim_controller' @@ -29,6 +30,7 @@ router.get('/home', [HomeController, 'home']) router.on('/about').renderInertia('about') router.get('/chat', [ChatsController, 'inertia']) router.get('/maps', [MapsController, 'index']) +router.get('/supply-depot', [SupplyDepotController, 'index']) router.on('/knowledge-base').redirectToPath('/chat?knowledge_base=true') // redirect for legacy knowledge-base links router.get('/easy-setup', [EasySetupController, 'index']) @@ -46,7 +48,7 @@ router router .group(() => { router.get('/system', [SettingsController, 'system']) - router.get('/apps', [SettingsController, 'apps']) + router.on('/apps').redirectToPath('/supply-depot') // superseded by Supply Depot router.get('/legal', [SettingsController, 'legal']) router.get('/maps', [SettingsController, 'maps']) router.get('/models', [SettingsController, 'models']) @@ -55,6 +57,7 @@ router router.get('/zim/remote-explorer', [SettingsController, 'zimRemote']) router.get('/benchmark', [SettingsController, 'benchmark']) router.get('/support', [SettingsController, 'support']) + router.get('/advanced', [SettingsController, 'advanced']) }) .prefix('/settings') @@ -80,6 +83,10 @@ router router.post('/download-collection', [MapsController, 'downloadCollection']) router.get('/global-map-info', [MapsController, 'globalMapInfo']) router.post('/download-global-map', [MapsController, 'downloadGlobalMap']) + router.get('/countries', [MapsController, 'listCountries']) + router.get('/country-groups', [MapsController, 'listCountryGroups']) + router.post('/extract-preflight', [MapsController, 'extractPreflight']) + router.post('/extract', [MapsController, 'extractRegion']) router.get('/markers', [MapsController, 'listMarkers']) router.post('/markers', [MapsController, 'createMarker']) router.patch('/markers/:id', [MapsController, 'updateMarker']) @@ -115,6 +122,7 @@ router router.post('/models', [OllamaController, 'dispatchModelDownload']) router.delete('/models', [OllamaController, 'deleteModel']) router.get('/installed-models', [OllamaController, 'installedModels']) + router.post('/unload-chat-models', [OllamaController, 'unloadChatModels']) router.post('/configure-remote', [OllamaController, 'configureRemote']) router.get('/remote-status', [OllamaController, 'remoteStatus']) }) @@ -138,12 +146,22 @@ router .group(() => { router.post('/upload', [RagController, 'upload']) router.get('/files', [RagController, 'getStoredFiles']) + router.get('/file-warnings', [RagController, 'getFileWarnings']) router.delete('/files', [RagController, 'deleteFile']) + router.post('/files/embed', [RagController, 'embedFile']) + router.get('/files/content', [RagController, 'getFileContent']) + router.get('/files/download', [RagController, 'downloadFile']) router.get('/active-jobs', [RagController, 'getActiveJobs']) router.get('/failed-jobs', [RagController, 'getFailedJobs']) router.delete('/failed-jobs', [RagController, 'cleanupFailedJobs']) + router.delete('/jobs', [RagController, 'cancelAllJobs']) router.get('/job-status', [RagController, 'getJobStatus']) router.post('/sync', [RagController, 'scanAndSync']) + router.post('/re-embed-all', [RagController, 'reembedAll']) + router.post('/reset-and-rebuild', [RagController, 'resetAndRebuild']) + router.post('/estimate-batch', [RagController, 'estimateBatch']) + router.get('/policy-prompt-state', [RagController, 'policyPromptState']) + router.get('/health', [RagController, 'health']) }) .prefix('/api/rag') @@ -156,14 +174,30 @@ router router.post('/services/affect', [SystemController, 'affectService']) router.post('/services/install', [SystemController, 'installService']) router.post('/services/force-reinstall', [SystemController, 'forceReinstallService']) + router.post('/services/uninstall', [SystemController, 'uninstallService']) router.post('/services/check-updates', [SystemController, 'checkServiceUpdates']) + router.get('/services/preflight', [SystemController, 'preflightCheck']) + router.get('/services/suggest-port', [SystemController, 'suggestCustomPort']) + router.post('/services/preflight-custom', [SystemController, 'preflightCustomApp']) + router.post('/services/custom', [SystemController, 'createCustomApp']) + router.put('/services/custom', [SystemController, 'updateCustomApp']) + router.post('/services/custom/update', [SystemController, 'updateCustomApp_pullLatest']) + router.delete('/services/custom', [SystemController, 'deleteCustomApp']) + router.get('/services/custom/:name', [SystemController, 'getCustomApp']) + router.put('/services/custom-url', [SystemController, 'setServiceCustomUrl']) + router.get('/services/:name/logs', [SystemController, 'getServiceLogs']) + router.get('/services/:name/stats', [SystemController, 'getServiceStats']) router.get('/services/:name/available-versions', [SystemController, 'getAvailableVersions']) router.post('/services/update', [SystemController, 'updateService']) + router.post('/services/auto-update', [SystemController, 'setServiceAutoUpdate']) + router.get('/apps/auto-update/status', [SystemController, 'getAppAutoUpdateStatus']) + router.get('/content/auto-update/status', [SystemController, 'getContentAutoUpdateStatus']) router.post('/subscribe-release-notes', [SystemController, 'subscribeToReleaseNotes']) router.get('/latest-version', [SystemController, 'checkLatestVersion']) router.post('/update', [SystemController, 'requestSystemUpdate']) router.get('/update/status', [SystemController, 'getSystemUpdateStatus']) router.get('/update/logs', [SystemController, 'getSystemUpdateLogs']) + router.get('/auto-update/status', [SystemController, 'getAutoUpdateStatus']) router.get('/settings', [SettingsController, 'getSetting']) router.patch('/settings', [SettingsController, 'updateSetting']) }) @@ -177,8 +211,17 @@ router router.post('/download-remote', [ZimController, 'downloadRemote']) router.post('/download-category-tier', [ZimController, 'downloadCategoryTier']) + router.post('/upload', [ZimController, 'upload']) router.get('/wikipedia', [ZimController, 'getWikipediaState']) router.post('/wikipedia/select', [ZimController, 'selectWikipedia']) + + router.get('/custom-libraries', [ZimController, 'listCustomLibraries']) + router.post('/custom-libraries', [ZimController, 'addCustomLibrary']) + router.delete('/custom-libraries/:id', [ZimController, 'removeCustomLibrary']) + router.get('/browse-library', [ZimController, 'browseLibrary']) + + router.post('/rescan-library', [ZimController, 'rescanLibrary']) + router.delete('/:filename', [ZimController, 'delete']) }) .prefix('/api/zim') diff --git a/admin/tests/unit/app_auto_update.spec.ts b/admin/tests/unit/app_auto_update.spec.ts new file mode 100644 index 0000000..ed99e8a --- /dev/null +++ b/admin/tests/unit/app_auto_update.spec.ts @@ -0,0 +1,143 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' +import { DateTime } from 'luxon' + +import { AppAutoUpdateService } from '../../app/services/app_auto_update_service.js' +import { ContainerRegistryService } from '../../app/services/container_registry_service.js' +import { isWithinWindow } from '../../app/utils/update_window.js' + +// appEligibility only touches ContainerRegistryService.parseImageReference (pure, +// offline), so the other constructor deps are irrelevant for these tests. +const svc = new AppAutoUpdateService( + null as any, + null as any, + null as any, + new ContainerRegistryService() +) + +const NOW = DateTime.fromISO('2026-06-04T12:00:00Z') +const daysAgo = (d: number) => NOW.minus({ days: d }) +const hoursAgo = (h: number) => NOW.minus({ hours: h }) + +function makeService(overrides: Record = {}) { + return { + service_name: 'nomad_test', + container_image: 'ollama/ollama:0.18.1', + available_update_version: null, + available_update_first_seen_at: null, + auto_update_disabled_reason: null, + auto_update_enabled: true, + installed: true, + ...overrides, + } as any +} + +// ── Per-app eligibility ─────────────────────────────────────────────────────── + +test('no available update → not eligible (up to date)', () => { + const v = svc.appEligibility(makeService(), 72, NOW) + assert.equal(v.eligible, false) +}) + +test('major bump is never auto-eligible (manual update required)', () => { + const v = svc.appEligibility( + makeService({ available_update_version: '1.0.0', available_update_first_seen_at: daysAgo(10) }), + 72, + NOW + ) + assert.equal(v.eligible, false) + assert.match(v.reason, /Major version/) +}) + +test('same-major newer but still inside cool-off → not eligible', () => { + const v = svc.appEligibility( + makeService({ + available_update_version: '0.19.0', + available_update_first_seen_at: hoursAgo(10), + }), + 72, + NOW + ) + assert.equal(v.eligible, false) + assert.match(v.reason, /cool-off/i) +}) + +test('same-major newer and past cool-off → eligible', () => { + const v = svc.appEligibility( + makeService({ available_update_version: '0.19.0', available_update_first_seen_at: daysAgo(5) }), + 72, + NOW + ) + assert.equal(v.eligible, true) +}) + +test('null first-seen → not eligible (cool-off pending)', () => { + const v = svc.appEligibility( + makeService({ available_update_version: '0.19.0', available_update_first_seen_at: null }), + 72, + NOW + ) + assert.equal(v.eligible, false) +}) + +test('self-disabled app → not eligible regardless of cool-off', () => { + const v = svc.appEligibility( + makeService({ + available_update_version: '0.19.0', + available_update_first_seen_at: daysAgo(30), + auto_update_disabled_reason: 'Auto-update disabled after 3 consecutive failures.', + }), + 72, + NOW + ) + assert.equal(v.eligible, false) +}) + +test(':latest-pinned app cannot be version-checked → not eligible', () => { + const v = svc.appEligibility( + makeService({ + container_image: 'foo/bar:latest', + available_update_version: '1.2.3', + available_update_first_seen_at: daysAgo(30), + }), + 72, + NOW + ) + assert.equal(v.eligible, false) +}) + +test('available equal to current (not newer) → not eligible', () => { + const v = svc.appEligibility( + makeService({ + available_update_version: '0.18.1', + available_update_first_seen_at: daysAgo(30), + }), + 72, + NOW + ) + assert.equal(v.eligible, false) +}) + +test('cool-off of 0 applies immediately', () => { + const v = svc.appEligibility( + makeService({ + available_update_version: '0.18.2', + available_update_first_seen_at: hoursAgo(1), + }), + 0, + NOW + ) + assert.equal(v.eligible, true) +}) + +// ── Shared update window (reused from the core auto-update) ──────────────────── + +test('window: normal 20:00-23:00 includes 21:00, excludes 19:00', () => { + assert.equal(isWithinWindow('20:00', '23:00', DateTime.fromISO('2026-06-04T21:00:00')), true) + assert.equal(isWithinWindow('20:00', '23:00', DateTime.fromISO('2026-06-04T19:00:00')), false) +}) + +test('window: midnight-wrapping 22:00-02:00 includes 01:00, excludes 12:00', () => { + assert.equal(isWithinWindow('22:00', '02:00', DateTime.fromISO('2026-06-04T01:00:00')), true) + assert.equal(isWithinWindow('22:00', '02:00', DateTime.fromISO('2026-06-04T12:00:00')), false) +}) diff --git a/admin/tests/unit/cloud_metadata_url.spec.ts b/admin/tests/unit/cloud_metadata_url.spec.ts new file mode 100644 index 0000000..4db7c0a --- /dev/null +++ b/admin/tests/unit/cloud_metadata_url.spec.ts @@ -0,0 +1,57 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { assertNotCloudMetadataUrl } from '../../app/validators/common.js' + +const expectBlocked = (url: string) => { + assert.throws(() => assertNotCloudMetadataUrl(url), /instance metadata|http or https/) +} + +const expectAllowed = (url: string) => { + assert.doesNotThrow(() => assertNotCloudMetadataUrl(url)) +} + +test('blocks plain IPv4 IMDS', () => { + expectBlocked('http://169.254.169.254/latest/meta-data/') +}) + +test('blocks IPv6 EC2 IMDS', () => { + expectBlocked('http://[fd00:ec2::254]/') +}) + +test('blocks fully-expanded IPv6 EC2 IMDS', () => { + expectBlocked('http://[fd00:ec2:0:0:0:0:0:254]/') +}) + +test('blocks IPv4-mapped IPv6 form of IMDS (dotted)', () => { + expectBlocked('http://[::ffff:169.254.169.254]/') +}) + +test('blocks IPv4-mapped IPv6 form of IMDS (hex)', () => { + expectBlocked('http://[::ffff:a9fe:a9fe]/') +}) + +test('blocks fully-expanded IPv4-mapped IPv6 form of IMDS', () => { + expectBlocked('http://[0:0:0:0:0:ffff:a9fe:a9fe]/') +}) + +test('blocks non-http(s) schemes', () => { + expectBlocked('file:///etc/passwd') + expectBlocked('gopher://169.254.169.254/') +}) + +test('allows LAN / loopback / RFC1918 hosts (intentional for remote-ollama use case)', () => { + expectAllowed('http://127.0.0.1:11434/') + expectAllowed('http://192.168.1.10:11434/') + expectAllowed('http://10.0.0.5:11434/') + expectAllowed('http://[::1]:11434/') +}) + +test('allows DNS hostnames', () => { + expectAllowed('http://ollama.lan:11434/') + expectAllowed('https://api.example.com/v1') +}) + +test('allows other link-local IPv4 addresses (not the metadata IP)', () => { + expectAllowed('http://169.254.1.1/') +}) diff --git a/admin/tests/unit/content_auto_update.spec.ts b/admin/tests/unit/content_auto_update.spec.ts new file mode 100644 index 0000000..6b9c216 --- /dev/null +++ b/admin/tests/unit/content_auto_update.spec.ts @@ -0,0 +1,218 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' +import { DateTime } from 'luxon' + +import { + ContentAutoUpdateService, + type ContentCandidate, +} from '../../app/services/content_auto_update_service.js' +import { isWithinWindow } from '../../app/utils/update_window.js' + +// resourceEligibility + selectUnderCap are pure; the I/O constructor deps are +// irrelevant for these tests, so null them out. +const svc = new ContentAutoUpdateService(null as any, null as any, null as any) + +const NOW = DateTime.fromISO('2026-06-04T03:00:00Z') +const daysAgo = (d: number) => NOW.minus({ days: d }) +const hoursAgo = (h: number) => NOW.minus({ hours: h }) + +function makeResource(overrides: Record = {}) { + return { + resource_id: 'wikipedia_en_all_maxi', + resource_type: 'zim', + version: '2024-01', + available_update_version: null, + available_update_size_bytes: null, + available_update_first_seen_at: null, + auto_update_disabled_reason: null, + auto_update_consecutive_failures: 0, + installed_at: daysAgo(100), + ...overrides, + } as any +} + +function makeCandidate(overrides: Partial & { id?: string } = {}): ContentCandidate { + const { id, ...rest } = overrides + return { + resource: makeResource({ resource_id: id ?? 'res' }) as any, + version: '2024-06', + download_url: `https://download.kiwix.org/zim/${id ?? 'res'}_2024-06.zim`, + size_bytes: 1_000, + installed_at: daysAgo(100), + ...rest, + } +} + +// ── Per-resource eligibility ─────────────────────────────────────────────────── + +test('no available update → not eligible (up to date)', () => { + const v = svc.resourceEligibility(makeResource(), 72, NOW) + assert.equal(v.eligible, false) + assert.match(v.reason, /up to date/i) +}) + +test('newer version but still inside cool-off → not eligible', () => { + const v = svc.resourceEligibility( + makeResource({ + available_update_version: '2024-06', + available_update_first_seen_at: hoursAgo(10), + }), + 72, + NOW + ) + assert.equal(v.eligible, false) + assert.match(v.reason, /cool-off/i) +}) + +test('newer version past cool-off → eligible', () => { + const v = svc.resourceEligibility( + makeResource({ + available_update_version: '2024-06', + available_update_first_seen_at: daysAgo(5), + }), + 72, + NOW + ) + assert.equal(v.eligible, true) +}) + +test('null first-seen → not eligible (cool-off pending)', () => { + const v = svc.resourceEligibility( + makeResource({ available_update_version: '2024-06', available_update_first_seen_at: null }), + 72, + NOW + ) + assert.equal(v.eligible, false) + assert.match(v.reason, /cool-off pending/i) +}) + +test('self-disabled resource → not eligible regardless of cool-off', () => { + const v = svc.resourceEligibility( + makeResource({ + available_update_version: '2024-06', + available_update_first_seen_at: daysAgo(30), + auto_update_disabled_reason: 'Auto-update disabled after 3 consecutive failures.', + }), + 72, + NOW + ) + assert.equal(v.eligible, false) +}) + +test('available equal to current (not newer) → not eligible', () => { + const v = svc.resourceEligibility( + makeResource({ + available_update_version: '2024-01', + available_update_first_seen_at: daysAgo(30), + }), + 72, + NOW + ) + assert.equal(v.eligible, false) +}) + +test('cool-off of 0 applies immediately', () => { + const v = svc.resourceEligibility( + makeResource({ + available_update_version: '2024-06', + available_update_first_seen_at: hoursAgo(1), + }), + 0, + NOW + ) + assert.equal(v.eligible, true) +}) + +// ── Cap-bounded selection ────────────────────────────────────────────────────── + +test('under cap selects everything', () => { + const candidates = [ + makeCandidate({ id: 'a', size_bytes: 1_000 }), + makeCandidate({ id: 'b', size_bytes: 2_000 }), + ] + const { selected, skippedOversize, deferred } = svc.selectUnderCap(candidates, 10_000, 0) + assert.equal(selected.length, 2) + assert.equal(skippedOversize.length, 0) + assert.equal(deferred.length, 0) +}) + +test('cap 0 means unlimited', () => { + const candidates = [makeCandidate({ id: 'a', size_bytes: 9_999_999_999 })] + const { selected, skippedOversize } = svc.selectUnderCap(candidates, 0, 0) + assert.equal(selected.length, 1) + assert.equal(skippedOversize.length, 0) +}) + +test('single file larger than the whole cap → skippedOversize, never selected', () => { + const candidates = [makeCandidate({ id: 'huge', size_bytes: 50_000 })] + const { selected, skippedOversize, deferred } = svc.selectUnderCap(candidates, 20_000, 0) + assert.equal(selected.length, 0) + assert.equal(skippedOversize.length, 1) + assert.equal(deferred.length, 0) +}) + +test('fits the cap but not this window’s remaining budget → deferred', () => { + const candidates = [makeCandidate({ id: 'mid', size_bytes: 8_000 })] + // cap 10k, already used 5k → only 5k remaining; 8k fits the cap but not the budget. + const { selected, deferred, skippedOversize } = svc.selectUnderCap(candidates, 10_000, 5_000) + assert.equal(selected.length, 0) + assert.equal(deferred.length, 1) + assert.equal(skippedOversize.length, 0) +}) + +test('greedy oldest-first selection packs until budget exhausted', () => { + const candidates = [ + makeCandidate({ id: 'new', size_bytes: 4_000, installed_at: daysAgo(1) }), + makeCandidate({ id: 'old', size_bytes: 4_000, installed_at: daysAgo(50) }), + makeCandidate({ id: 'mid', size_bytes: 4_000, installed_at: daysAgo(25) }), + ] + const { selected, deferred } = svc.selectUnderCap(candidates, 10_000, 0) + // 10k budget / 4k each → 2 selected (oldest two), 1 deferred. + assert.equal(selected.length, 2) + assert.equal(deferred.length, 1) + assert.deepEqual( + selected.map((c) => c.resource.resource_id), + ['old', 'mid'] + ) +}) + +test('budget already exhausted → everything deferred', () => { + const candidates = [makeCandidate({ id: 'a', size_bytes: 1_000 })] + const { selected, deferred } = svc.selectUnderCap(candidates, 5_000, 5_000) + assert.equal(selected.length, 0) + assert.equal(deferred.length, 1) +}) + +test('unknown size (0) → deferred, never selected', () => { + const candidates = [makeCandidate({ id: 'a', size_bytes: 0 })] + const { selected, deferred, skippedOversize } = svc.selectUnderCap(candidates, 10_000, 0) + assert.equal(selected.length, 0) + assert.equal(deferred.length, 1) + assert.equal(skippedOversize.length, 0) +}) + +// ── Window boundary math (per-window budget reset) ───────────────────────────── + +test('windowStartBoundary: same-day window resolves to today’s start', () => { + const now = DateTime.fromISO('2026-06-04T03:30:00') + const boundary = svc.windowStartBoundary('02:00', now) + assert.equal(boundary.toISO(), DateTime.fromISO('2026-06-04T02:00:00').toISO()) +}) + +test('windowStartBoundary: before today’s start resolves to yesterday (wrap window)', () => { + const now = DateTime.fromISO('2026-06-04T01:00:00') + const boundary = svc.windowStartBoundary('22:00', now) + assert.equal(boundary.toISO(), DateTime.fromISO('2026-06-03T22:00:00').toISO()) +}) + +// ── Shared update window ─────────────────────────────────────────────────────── + +test('window: normal 02:00-05:00 includes 03:00, excludes 06:00', () => { + assert.equal(isWithinWindow('02:00', '05:00', DateTime.fromISO('2026-06-04T03:00:00')), true) + assert.equal(isWithinWindow('02:00', '05:00', DateTime.fromISO('2026-06-04T06:00:00')), false) +}) + +test('window: midnight-wrapping 22:00-02:00 includes 01:00, excludes 12:00', () => { + assert.equal(isWithinWindow('22:00', '02:00', DateTime.fromISO('2026-06-04T01:00:00')), true) + assert.equal(isWithinWindow('22:00', '02:00', DateTime.fromISO('2026-06-04T12:00:00')), false) +}) diff --git a/admin/tests/unit/content_auto_update_backoff.spec.ts b/admin/tests/unit/content_auto_update_backoff.spec.ts new file mode 100644 index 0000000..15fa465 --- /dev/null +++ b/admin/tests/unit/content_auto_update_backoff.spec.ts @@ -0,0 +1,83 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { + MAX_CONSECUTIVE_FAILURES, + recordResourceUpdateFailure, + recordResourceUpdateSuccess, +} from '../../app/utils/content_auto_update_backoff.js' + +// The helpers only read/write two columns and call save(); a plain object with a +// save spy stands in for the Lucid model so the backoff logic is testable without +// a database. +function makeResource(overrides: Record = {}) { + let saved = 0 + return { + resource_id: 'wikipedia_en_all_maxi', + auto_update_consecutive_failures: 0, + auto_update_disabled_reason: null as string | null, + async save() { + saved++ + }, + get saveCount() { + return saved + }, + ...overrides, + } as any +} + +// ── Failure backoff ───────────────────────────────────────────────────────────── + +test('failure increments the consecutive counter', async () => { + const r = makeResource() + await recordResourceUpdateFailure(r, 'network error') + assert.equal(r.auto_update_consecutive_failures, 1) + assert.equal(r.auto_update_disabled_reason, null) +}) + +test('failures below the threshold do not self-disable', async () => { + const r = makeResource({ auto_update_consecutive_failures: 1 }) + await recordResourceUpdateFailure(r, 'network error') + assert.equal(r.auto_update_consecutive_failures, 2) + assert.equal(r.auto_update_disabled_reason, null) +}) + +test('reaching the threshold self-disables with the last error in the reason', async () => { + const r = makeResource({ auto_update_consecutive_failures: MAX_CONSECUTIVE_FAILURES - 1 }) + await recordResourceUpdateFailure(r, 'disk full') + assert.equal(r.auto_update_consecutive_failures, MAX_CONSECUTIVE_FAILURES) + assert.match(r.auto_update_disabled_reason, /disabled after 3 consecutive failures/i) + assert.match(r.auto_update_disabled_reason, /disk full/) +}) + +test('failure always persists', async () => { + const r = makeResource() + await recordResourceUpdateFailure(r, 'boom') + assert.equal(r.saveCount, 1) +}) + +// ── Success reset ─────────────────────────────────────────────────────────────── + +test('success clears the counter and the disabled reason', async () => { + const r = makeResource({ + auto_update_consecutive_failures: 3, + auto_update_disabled_reason: 'Auto-update disabled after 3 consecutive failures.', + }) + await recordResourceUpdateSuccess(r) + assert.equal(r.auto_update_consecutive_failures, 0) + assert.equal(r.auto_update_disabled_reason, null) + assert.equal(r.saveCount, 1) +}) + +test('success is a no-op (no save) when already clean', async () => { + const r = makeResource({ auto_update_consecutive_failures: 0, auto_update_disabled_reason: null }) + await recordResourceUpdateSuccess(r) + assert.equal(r.saveCount, 0) +}) + +test('success still resets when a stray reason lingers at zero failures', async () => { + const r = makeResource({ auto_update_consecutive_failures: 0, auto_update_disabled_reason: 'stale' }) + await recordResourceUpdateSuccess(r) + assert.equal(r.auto_update_disabled_reason, null) + assert.equal(r.saveCount, 1) +}) diff --git a/admin/tests/unit/content_reindex_decision.spec.ts b/admin/tests/unit/content_reindex_decision.spec.ts new file mode 100644 index 0000000..805e19d --- /dev/null +++ b/admin/tests/unit/content_reindex_decision.spec.ts @@ -0,0 +1,64 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { + decideContentReindex, + type ContentReindexInput, +} from '../../app/utils/content_reindex_decision.js' + +// Default to the fully-actionable case; each test overrides one axis so the +// short-circuit ordering is exercised explicitly. +function input(overrides: Partial = {}): ContentReindexInput { + return { + isReplacement: true, + qdrantInstalled: true, + oldFileWasIndexed: true, + qdrantRunning: true, + ...overrides, + } +} + +test('fresh install / same-path re-download → not_a_replacement (defers to normal policy)', () => { + assert.equal(decideContentReindex(input({ isReplacement: false })), 'not_a_replacement') +}) + +test('not_a_replacement short-circuits before any Qdrant consideration', () => { + // Even with everything else "off", a non-replacement is the controlling answer. + assert.equal( + decideContentReindex( + input({ isReplacement: false, qdrantInstalled: false, oldFileWasIndexed: false, qdrantRunning: false }) + ), + 'not_a_replacement' + ) +}) + +test('replacement but Qdrant not installed → qdrant_not_installed (step 2)', () => { + assert.equal(decideContentReindex(input({ qdrantInstalled: false })), 'qdrant_not_installed') +}) + +test('not-installed short-circuits before the old-indexed lookup', () => { + // oldFileWasIndexed should not matter once Qdrant is absent. + assert.equal( + decideContentReindex(input({ qdrantInstalled: false, oldFileWasIndexed: true })), + 'qdrant_not_installed' + ) +}) + +test('replacement, installed, but old file was never indexed → old_not_indexed (step 4)', () => { + assert.equal(decideContentReindex(input({ oldFileWasIndexed: false })), 'old_not_indexed') +}) + +test('old not indexed wins even if Qdrant is running (respects prior un-indexed choice)', () => { + assert.equal( + decideContentReindex(input({ oldFileWasIndexed: false, qdrantRunning: true })), + 'old_not_indexed' + ) +}) + +test('old indexed but Qdrant currently down → qdrant_not_running (step 5, defer entirely)', () => { + assert.equal(decideContentReindex(input({ qdrantRunning: false })), 'qdrant_not_running') +}) + +test('replacement + installed + old indexed + running → reindex (step 3)', () => { + assert.equal(decideContentReindex(input()), 'reindex') +}) diff --git a/admin/tests/unit/custom_app_guard.spec.ts b/admin/tests/unit/custom_app_guard.spec.ts new file mode 100644 index 0000000..9a72ab8 --- /dev/null +++ b/admin/tests/unit/custom_app_guard.spec.ts @@ -0,0 +1,112 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { evaluateBindMounts, evaluateImageReference } from '../../app/services/custom_app_guard.js' + +// ── Bind mounts ────────────────────────────────────────────────────────────── +// These assume the default storage root (/opt/project-nomad/storage), i.e. NOMAD_STORAGE_PATH unset. + +test('evaluateBindMounts hard-blocks the Docker socket', () => { + const { blocked } = evaluateBindMounts([ + { host_path: '/var/run/docker.sock', container_path: '/var/run/docker.sock' }, + ]) + assert.equal(blocked.length, 1) +}) + +test('evaluateBindMounts hard-blocks core system directories', () => { + for (const dir of ['/etc', '/proc/foo', '/sys', '/boot', '/dev/sda']) { + const { blocked } = evaluateBindMounts([{ host_path: dir, container_path: '/data' }]) + assert.equal(blocked.length, 1, `${dir} should be blocked`) + } +}) + +test('evaluateBindMounts hard-blocks mounting at or above the install tree', () => { + for (const dir of ['/', '/opt', '/opt/project-nomad']) { + const { blocked } = evaluateBindMounts([{ host_path: dir, container_path: '/data' }]) + assert.equal(blocked.length, 1, `${dir} should be blocked`) + } +}) + +test('evaluateBindMounts allows paths under the storage root without warning', () => { + const { blocked, warnings } = evaluateBindMounts([ + { host_path: '/opt/project-nomad/storage/myapp', container_path: '/data' }, + ]) + assert.equal(blocked.length, 0) + assert.equal(warnings.length, 0) +}) + +test('evaluateBindMounts warns (but allows) paths outside the storage root', () => { + const { blocked, warnings } = evaluateBindMounts([ + { host_path: '/home/user/data', container_path: '/data' }, + ]) + assert.equal(blocked.length, 0) + assert.equal(warnings.length, 1) +}) + +test('evaluateBindMounts resolves .. before matching (no traversal escape)', () => { + // Normalizes to /etc, which must still be blocked despite the dressing-up. + const { blocked } = evaluateBindMounts([ + { host_path: '/srv/../etc/shadow', container_path: '/data' }, + ]) + assert.equal(blocked.length, 1) +}) + +test('evaluateBindMounts requires absolute container paths', () => { + const { blocked } = evaluateBindMounts([ + { host_path: '/opt/project-nomad/storage/x', container_path: 'relative' }, + ]) + assert.equal(blocked.length, 1) +}) + +test('evaluateBindMounts hard-blocks a colon in the host path', () => { + // Without this, Docker would re-split "/etc:foo" on the colon and mount /etc — bypassing the + // system-directory block, which only matches the string as a whole path. + const { blocked } = evaluateBindMounts([ + { host_path: '/etc:foo', container_path: '/data' }, + ]) + assert.equal(blocked.length, 1) +}) + +test('evaluateBindMounts hard-blocks a colon in the container path', () => { + const { blocked } = evaluateBindMounts([ + { host_path: '/opt/project-nomad/storage/x', container_path: '/data:ro' }, + ]) + assert.equal(blocked.length, 1) +}) + +// ── Image references ───────────────────────────────────────────────────────── + +test('evaluateImageReference warns on the latest tag', () => { + const { blocked, warnings } = evaluateImageReference('nginx:latest') + assert.equal(blocked.length, 0) + assert.ok(warnings.some((w) => w.includes('moving tag'))) +}) + +test('evaluateImageReference warns when no tag is given', () => { + const { warnings } = evaluateImageReference('nginx') + assert.ok(warnings.some((w) => w.includes('moving tag'))) +}) + +test('evaluateImageReference is clean for a pinned image from a trusted registry', () => { + const { blocked, warnings } = evaluateImageReference('ghcr.io/stirling-tools/s-pdf:0.30.1') + assert.equal(blocked.length, 0) + assert.equal(warnings.length, 0) +}) + +test('evaluateImageReference warns on an untrusted registry', () => { + const { warnings } = evaluateImageReference('myregistry.example.com/app:1.0.0') + assert.ok(warnings.some((w) => w.includes('trusted registries'))) +}) + +test('evaluateImageReference blocks a malformed reference', () => { + const { blocked } = evaluateImageReference('not a valid image!!') + assert.equal(blocked.length, 1) +}) + +test('evaluateImageReference accepts a digest-pinned image without a moving-tag warning', () => { + const { blocked, warnings } = evaluateImageReference( + 'ghcr.io/org/app@sha256:' + 'a'.repeat(64) + ) + assert.equal(blocked.length, 0) + assert.equal(warnings.length, 0) +}) diff --git a/admin/tests/unit/global_map_banner.spec.ts b/admin/tests/unit/global_map_banner.spec.ts new file mode 100644 index 0000000..458fb1c --- /dev/null +++ b/admin/tests/unit/global_map_banner.spec.ts @@ -0,0 +1,37 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { hasDownloadedGlobalMap } from '../../inertia/lib/global_map_banner.js' + +test('returns true when the global map key already exists on disk', () => { + assert.equal( + hasDownloadedGlobalMap('20260402.pmtiles', [ + { name: '20260402.pmtiles' }, + { name: 'california.pmtiles' }, + ]), + true + ) +}) + +test('returns false when the global map key is missing', () => { + assert.equal( + hasDownloadedGlobalMap('20260402.pmtiles', [ + { name: 'california.pmtiles' }, + ]), + false + ) +}) + +test('returns true when an older global map build is already on disk', () => { + assert.equal( + hasDownloadedGlobalMap('20260402.pmtiles', [ + { name: '20260315.pmtiles' }, + { name: 'california.pmtiles' }, + ]), + true + ) +}) + +test('returns false when there is no global map info', () => { + assert.equal(hasDownloadedGlobalMap(undefined, [{ name: '20260402.pmtiles' }]), false) +}) diff --git a/admin/tests/unit/kb_file_grouping.spec.ts b/admin/tests/unit/kb_file_grouping.spec.ts new file mode 100644 index 0000000..c8bad45 --- /dev/null +++ b/admin/tests/unit/kb_file_grouping.spec.ts @@ -0,0 +1,193 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { + classifyKbFile, + groupAndSortKbFiles, + sourceToDisplayName, +} from '../../inertia/lib/kb_file_grouping.js' +import type { StoredFileInfo } from '../../types/rag.js' + +/** Wrap source paths into the minimal StoredFileInfo shape that + * `groupAndSortKbFiles` now expects. State + chunk count are irrelevant to + * grouping/sorting behavior; the per-file state-pill rendering is exercised + * separately in the modal's component tests (added in the follow-up PR). + * Metadata fields default to nullish/false — individual tests that exercise + * sort-by-size or sort-by-uploadedAt override as needed. */ +const asInfos = (sources: string[]): StoredFileInfo[] => + sources.map((source) => ({ + source, + state: null, + chunksEmbedded: 0, + fileName: sourceToDisplayName(source), + size: null, + uploadedAt: null, + isUserUpload: classifyKbFile(source) === 'upload', + })) + +test('classifyKbFile distinguishes ZIM, upload, admin_docs, and other', () => { + assert.equal( + classifyKbFile('/app/storage/zim/devdocs_en_python_2026-02.zim'), + 'zim' + ) + assert.equal( + classifyKbFile('/app/storage/kb_uploads/federalist.txt-8cc4ec95aa8f.txt'), + 'upload' + ) + assert.equal(classifyKbFile('/app/docs/release-notes.md'), 'admin_docs') + assert.equal(classifyKbFile('/app/README.md'), 'admin_docs') + assert.equal(classifyKbFile('/unexpected/path/file.txt'), 'other') +}) + +test('classifyKbFile does not match /app/READMEs that are not the bundled one', () => { + assert.equal(classifyKbFile('/app/README.md.bak'), 'other') +}) + +test('sourceToDisplayName returns the basename', () => { + assert.equal( + sourceToDisplayName('/app/storage/zim/devdocs_en_python_2026-02.zim'), + 'devdocs_en_python_2026-02.zim' + ) + assert.equal(sourceToDisplayName('/app/docs/release-notes.md'), 'release-notes.md') +}) + +test('groupAndSortKbFiles collapses all admin docs into a single row', () => { + const groups = groupAndSortKbFiles(asInfos([ + '/app/docs/release-notes.md', + '/app/docs/getting-started.md', + '/app/docs/maps.md', + '/app/README.md', + ])) + + assert.equal(groups.length, 1) + assert.equal(groups[0].bucket, 'admin_docs') + assert.equal(groups[0].count, 4) + assert.equal(groups[0].displayName, 'Project NOMAD documentation · 4 files') + assert.deepEqual(groups[0].members.sort(), [ + '/app/README.md', + '/app/docs/getting-started.md', + '/app/docs/maps.md', + '/app/docs/release-notes.md', + ]) +}) + +test('groupAndSortKbFiles orders buckets ZIM → upload → admin_docs → other', () => { + const groups = groupAndSortKbFiles(asInfos([ + '/app/docs/release-notes.md', + '/unexpected/foo.txt', + '/app/storage/kb_uploads/upload.pdf', + '/app/storage/zim/devdocs.zim', + ])) + + assert.deepEqual( + groups.map((g) => g.bucket), + ['zim', 'upload', 'admin_docs', 'other'] + ) +}) + +test('groupAndSortKbFiles alphabetizes within a bucket', () => { + const groups = groupAndSortKbFiles(asInfos([ + '/app/storage/zim/wikipedia.zim', + '/app/storage/zim/devdocs.zim', + '/app/storage/zim/ifixit.zim', + ])) + + assert.deepEqual( + groups.map((g) => g.displayName), + ['devdocs.zim', 'ifixit.zim', 'wikipedia.zim'] + ) +}) + +test('groupAndSortKbFiles uses singular noun when only one admin doc exists', () => { + const groups = groupAndSortKbFiles(asInfos(['/app/docs/release-notes.md'])) + assert.equal(groups[0].displayName, 'Project NOMAD documentation · 1 file') +}) + +test('groupAndSortKbFiles handles empty input', () => { + assert.deepEqual(groupAndSortKbFiles([]), []) +}) + +test('groupAndSortKbFiles preserves a stable synthetic key for the admin docs group', () => { + const groups = groupAndSortKbFiles(asInfos([ + '/app/docs/release-notes.md', + '/app/docs/maps.md', + ])) + // The admin-docs row uses a synthetic source key (not a real path) so it + // can be used as a React key without colliding with any real file row. + assert.equal(groups[0].source, '__admin_docs_group__') +}) + +/** Sized fixtures for the sort tests. `size` and `uploadedAt` are set so the + * three sort keys (name, size, uploadedAt) produce visibly different orders — + * if a test passed for name it had better fail for size. */ +const sized: StoredFileInfo[] = [ + { source: '/app/storage/kb_uploads/charlie.txt', state: null, chunksEmbedded: 0, fileName: 'charlie.txt', size: 100, uploadedAt: '2026-01-01T00:00:00Z', isUserUpload: true }, + { source: '/app/storage/kb_uploads/alpha.txt', state: null, chunksEmbedded: 0, fileName: 'alpha.txt', size: 300, uploadedAt: '2026-03-01T00:00:00Z', isUserUpload: true }, + { source: '/app/storage/kb_uploads/bravo.txt', state: null, chunksEmbedded: 0, fileName: 'bravo.txt', size: 200, uploadedAt: '2026-02-01T00:00:00Z', isUserUpload: true }, +] + +test('groupAndSortKbFiles sorts by size ascending', () => { + const groups = groupAndSortKbFiles(sized, { key: 'size', direction: 'asc' }) + assert.deepEqual(groups.map((g) => g.displayName), ['charlie.txt', 'bravo.txt', 'alpha.txt']) +}) + +test('groupAndSortKbFiles sorts by size descending', () => { + const groups = groupAndSortKbFiles(sized, { key: 'size', direction: 'desc' }) + assert.deepEqual(groups.map((g) => g.displayName), ['alpha.txt', 'bravo.txt', 'charlie.txt']) +}) + +test('groupAndSortKbFiles sorts by uploadedAt ascending', () => { + const groups = groupAndSortKbFiles(sized, { key: 'uploadedAt', direction: 'asc' }) + assert.deepEqual(groups.map((g) => g.displayName), ['charlie.txt', 'bravo.txt', 'alpha.txt']) +}) + +test('groupAndSortKbFiles sorts by uploadedAt descending', () => { + const groups = groupAndSortKbFiles(sized, { key: 'uploadedAt', direction: 'desc' }) + assert.deepEqual(groups.map((g) => g.displayName), ['alpha.txt', 'bravo.txt', 'charlie.txt']) +}) + +test('groupAndSortKbFiles parks files with null size at the end of size sort', () => { + const withMissing: StoredFileInfo[] = [ + ...sized, + { source: '/app/storage/kb_uploads/zzz_missing.txt', state: null, chunksEmbedded: 0, fileName: 'zzz_missing.txt', size: null, uploadedAt: null, isUserUpload: true }, + ] + // Missing-size files sort last regardless of direction so the "real" data + // owns the top of the view either way. + const asc = groupAndSortKbFiles(withMissing, { key: 'size', direction: 'asc' }) + assert.equal(asc.at(-1)?.displayName, 'zzz_missing.txt') + const desc = groupAndSortKbFiles(withMissing, { key: 'size', direction: 'desc' }) + assert.equal(desc.at(-1)?.displayName, 'zzz_missing.txt') +}) + +test('groupAndSortKbFiles preserves bucket order across all sort modes', () => { + const mixed: StoredFileInfo[] = [ + { source: '/app/storage/zim/big.zim', state: null, chunksEmbedded: 0, fileName: 'big.zim', size: 999, uploadedAt: '2026-01-01T00:00:00Z', isUserUpload: false }, + { source: '/app/storage/kb_uploads/small.txt', state: null, chunksEmbedded: 0, fileName: 'small.txt', size: 1, uploadedAt: '2026-09-01T00:00:00Z', isUserUpload: true }, + { source: '/app/docs/release-notes.md', state: null, chunksEmbedded: 0, fileName: 'release-notes.md', size: 50, uploadedAt: '2026-05-01T00:00:00Z', isUserUpload: false }, + ] + // Even if size-desc would put zim first naturally, sort runs *within* a + // bucket — buckets themselves stay in the canonical zim → upload → admin_docs + // order. This is the invariant that lets the per-bucket grouping stay + // legible while still giving the user a sortable view. + for (const direction of ['asc', 'desc'] as const) { + for (const key of ['name', 'size', 'uploadedAt'] as const) { + const groups = groupAndSortKbFiles(mixed, { key, direction }) + assert.deepEqual( + groups.map((g) => g.bucket), + ['zim', 'upload', 'admin_docs'], + `bucket order changed for ${key}/${direction}` + ) + } + } +}) + +test('groupAndSortKbFiles emits null metadata + isUserUpload=false for the admin_docs group', () => { + const groups = groupAndSortKbFiles(asInfos([ + '/app/docs/release-notes.md', + '/app/README.md', + ])) + assert.equal(groups[0].bucket, 'admin_docs') + assert.equal(groups[0].size, null) + assert.equal(groups[0].uploadedAt, null) + assert.equal(groups[0].isUserUpload, false) +}) diff --git a/admin/tests/unit/kb_guardrail.spec.ts b/admin/tests/unit/kb_guardrail.spec.ts new file mode 100644 index 0000000..b300bd4 --- /dev/null +++ b/admin/tests/unit/kb_guardrail.spec.ts @@ -0,0 +1,106 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { + GUARDRAIL_ABSOLUTE_BYTES, + GUARDRAIL_FREE_DISK_RATIO, + evaluateGuardrail, +} from '../../inertia/lib/kb_guardrail.js' + +const GB = 1024 * 1024 * 1024 + +test('small batch does not trip the guardrail', () => { + const verdict = evaluateGuardrail({ + estimateBytes: 1 * GB, // 1 GB + freeBytes: 500 * GB, + }) + assert.equal(verdict.trips, false) + assert.deepEqual(verdict.reasons, []) +}) + +test('batch at exactly the absolute threshold trips', () => { + const verdict = evaluateGuardrail({ + estimateBytes: GUARDRAIL_ABSOLUTE_BYTES, + freeBytes: 1000 * GB, + }) + assert.equal(verdict.trips, true) + assert.equal(verdict.reasons.length, 1) + assert.equal(verdict.reasons[0].kind, 'over_absolute') +}) + +test('batch over the absolute threshold trips with over_absolute reason', () => { + const verdict = evaluateGuardrail({ + estimateBytes: 60 * GB, + freeBytes: 1000 * GB, + }) + const overAbsolute = verdict.reasons.find((r) => r.kind === 'over_absolute') + assert.ok(overAbsolute, 'should include over_absolute reason') + assert.equal(verdict.trips, true) +}) + +test('batch over 10% of free disk trips with over_free_disk reason', () => { + // 5 GB estimate against 40 GB free disk -> 5 > 4 (10% of 40) + const verdict = evaluateGuardrail({ + estimateBytes: 5 * GB, + freeBytes: 40 * GB, + }) + const overFree = verdict.reasons.find((r) => r.kind === 'over_free_disk') + assert.ok(overFree, 'should include over_free_disk reason') + assert.equal(verdict.trips, true) +}) + +test('batch can trip BOTH thresholds simultaneously', () => { + // 100 GB estimate, 200 GB free + // - over absolute (100 > 50) + // - over 10% of free (100 > 20) + const verdict = evaluateGuardrail({ + estimateBytes: 100 * GB, + freeBytes: 200 * GB, + }) + assert.equal(verdict.trips, true) + assert.equal(verdict.reasons.length, 2) + assert.ok(verdict.reasons.some((r) => r.kind === 'over_absolute')) + assert.ok(verdict.reasons.some((r) => r.kind === 'over_free_disk')) +}) + +test('freeBytes = 0 skips the relative-disk check', () => { + // 100 MB estimate, no free-disk signal: only the absolute check runs, + // and 100 MB is well below the 50 GB absolute threshold + const verdict = evaluateGuardrail({ + estimateBytes: 100 * 1024 * 1024, + freeBytes: 0, + }) + assert.equal(verdict.trips, false) +}) + +test('freeBytes = 0 still trips the absolute check at 50 GB', () => { + const verdict = evaluateGuardrail({ + estimateBytes: 100 * GB, + freeBytes: 0, + }) + assert.equal(verdict.trips, true) + assert.equal(verdict.reasons.length, 1) + assert.equal(verdict.reasons[0].kind, 'over_absolute') +}) + +test('relative-disk threshold computed from GUARDRAIL_FREE_DISK_RATIO constant', () => { + // Estimate exactly equal to 10% of free -> trips (>=) + const free = 100 * GB + const exactlyTenPercent = free * GUARDRAIL_FREE_DISK_RATIO + const verdict = evaluateGuardrail({ + estimateBytes: exactlyTenPercent, + freeBytes: free, + }) + const overFree = verdict.reasons.find((r) => r.kind === 'over_free_disk') + assert.ok(overFree, 'should trip at exactly the threshold') +}) + +test('batch just under both thresholds does not trip', () => { + // 4 GB estimate vs 50 GB free -> 10% of 50 = 5 GB, so 4 < 5 + // Also well below 50 GB absolute + const verdict = evaluateGuardrail({ + estimateBytes: 4 * GB, + freeBytes: 50 * GB, + }) + assert.equal(verdict.trips, false) +}) diff --git a/admin/tests/unit/kb_ingest_decision.spec.ts b/admin/tests/unit/kb_ingest_decision.spec.ts new file mode 100644 index 0000000..531d4b4 --- /dev/null +++ b/admin/tests/unit/kb_ingest_decision.spec.ts @@ -0,0 +1,82 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { decideScanAction } from '../../app/utils/kb_ingest_decision.js' + +// ---------- Always-policy cases (default behavior; preserves pre-policy install) ---------- + +test('Always: no state row, no chunks → dispatch and create row (new file)', () => { + assert.deepEqual(decideScanAction(null, false, 'Always'), { + kind: 'dispatch', + createStateRow: true, + }) +}) + +test('Always: no state row, chunks present → backfill_indexed (pre-RFC install, existing Qdrant volume)', () => { + assert.deepEqual(decideScanAction(null, true, 'Always'), { kind: 'backfill_indexed' }) +}) + +test('Always: indexed + chunks present → skip', () => { + assert.deepEqual(decideScanAction({ state: 'indexed' }, true, 'Always'), { kind: 'skip' }) +}) + +test('Always: indexed + chunks missing → re-dispatch (Qdrant collection rebuilt or chunks deleted)', () => { + assert.deepEqual(decideScanAction({ state: 'indexed' }, false, 'Always'), { + kind: 'dispatch', + createStateRow: false, + }) +}) + +test('Always: pending_decision → dispatch', () => { + assert.deepEqual(decideScanAction({ state: 'pending_decision' }, false, 'Always'), { + kind: 'dispatch', + createStateRow: false, + }) +}) + +test('Always: browse_only → skip (user opted out of indexing)', () => { + assert.deepEqual(decideScanAction({ state: 'browse_only' }, false, 'Always'), { kind: 'skip' }) +}) + +test('Always: failed → skip (manual retry needed, do not auto-redispatch)', () => { + assert.deepEqual(decideScanAction({ state: 'failed' }, false, 'Always'), { kind: 'skip' }) +}) + +test('Always: stalled → skip (manual retry needed)', () => { + assert.deepEqual(decideScanAction({ state: 'stalled' }, false, 'Always'), { kind: 'skip' }) +}) + +// ---------- Manual-policy cases ---------- + +test('Manual: no state row, no chunks → create_pending (do not auto-dispatch new content)', () => { + assert.deepEqual(decideScanAction(null, false, 'Manual'), { kind: 'create_pending' }) +}) + +test('Manual: no state row, chunks present → backfill_indexed (same as Always — Qdrant is authoritative)', () => { + assert.deepEqual(decideScanAction(null, true, 'Manual'), { kind: 'backfill_indexed' }) +}) + +test('Manual: pending_decision → skip (waiting for user to opt in via Index button)', () => { + assert.deepEqual(decideScanAction({ state: 'pending_decision' }, false, 'Manual'), { + kind: 'skip', + }) +}) + +test('Manual: indexed + chunks missing → re-dispatch (user has already opted in for this file)', () => { + // Policy switch from Always→Manual must not break in-flight or partially-deleted indexes + // for files the user previously chose to index. + assert.deepEqual(decideScanAction({ state: 'indexed' }, false, 'Manual'), { + kind: 'dispatch', + createStateRow: false, + }) +}) + +test('Manual: browse_only → skip (same as Always)', () => { + assert.deepEqual(decideScanAction({ state: 'browse_only' }, false, 'Manual'), { kind: 'skip' }) +}) + +// ---------- Policy default ---------- + +test('omitted policy defaults to Always (unset KV preserves legacy behavior)', () => { + assert.deepEqual(decideScanAction(null, false), { kind: 'dispatch', createStateRow: true }) +}) diff --git a/admin/tests/unit/kb_job_health.spec.ts b/admin/tests/unit/kb_job_health.spec.ts new file mode 100644 index 0000000..2b22501 --- /dev/null +++ b/admin/tests/unit/kb_job_health.spec.ts @@ -0,0 +1,100 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { computeJobHealth } from '../../app/utils/kb_job_health.js' + +const MIN = 60 * 1000 +const NOW = 1_700_000_000_000 // arbitrary fixed epoch for deterministic tests + +test('failed status takes precedence over any timing', () => { + assert.equal( + computeJobHealth({ status: 'failed', progress: 42, lastBatchAt: NOW, now: NOW }), + 'failed' + ) +}) + +test('no progress + no activity timestamps → waiting', () => { + assert.equal( + computeJobHealth({ status: 'waiting', progress: 0, now: NOW }), + 'waiting' + ) +}) + +test('progress > 0 but no lastBatchAt yet → healthy (first batch just started)', () => { + assert.equal( + computeJobHealth({ status: 'processing', progress: 5, startedAt: NOW, now: NOW }), + 'healthy' + ) +}) + +test('lastBatchAt 30s ago → healthy', () => { + assert.equal( + computeJobHealth({ + status: 'batch_completed', + progress: 50, + lastBatchAt: NOW - 30 * 1000, + now: NOW, + }), + 'healthy' + ) +}) + +test('lastBatchAt 90s ago → still healthy (under 2 min threshold)', () => { + assert.equal( + computeJobHealth({ + status: 'batch_completed', + progress: 50, + lastBatchAt: NOW - 90 * 1000, + now: NOW, + }), + 'healthy' + ) +}) + +test('lastBatchAt 3 min ago → slow (CPU-paced ingestion lives here)', () => { + assert.equal( + computeJobHealth({ + status: 'batch_completed', + progress: 50, + lastBatchAt: NOW - 3 * MIN, + now: NOW, + }), + 'slow' + ) +}) + +test('lastBatchAt 4:30 ago → still slow (under 5 min stalled threshold)', () => { + assert.equal( + computeJobHealth({ + status: 'batch_completed', + progress: 50, + lastBatchAt: NOW - 4.5 * MIN, + now: NOW, + }), + 'slow' + ) +}) + +test('lastBatchAt 5:01 ago → stalled', () => { + assert.equal( + computeJobHealth({ + status: 'batch_completed', + progress: 50, + lastBatchAt: NOW - (5 * MIN + 1000), + now: NOW, + }), + 'stalled' + ) +}) + +test('lastBatchAt missing but startedAt 10 min ago → stalled (first-batch-never-finished case)', () => { + assert.equal( + computeJobHealth({ + status: 'processing', + progress: 5, + startedAt: NOW - 10 * MIN, + now: NOW, + }), + 'stalled' + ) +}) diff --git a/admin/tests/unit/kb_ratio_lookup.spec.ts b/admin/tests/unit/kb_ratio_lookup.spec.ts new file mode 100644 index 0000000..2c1ae61 --- /dev/null +++ b/admin/tests/unit/kb_ratio_lookup.spec.ts @@ -0,0 +1,139 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { + BYTES_PER_CHUNK_ON_DISK, + estimateBatch, + estimateChunkCount, + findChunksPerMb, +} from '../../app/utils/kb_ratio_lookup.js' + +const SEEDED_ROWS = [ + { pattern: 'devdocs_', chunks_per_mb: 1100 }, + { pattern: 'wikipedia_en_simple_', chunks_per_mb: 270 }, + { pattern: 'wikipedia_en_', chunks_per_mb: 250 }, + { pattern: 'ifixit_', chunks_per_mb: 50 }, + { pattern: 'lrnselfreliance_', chunks_per_mb: 0 }, + { pattern: '', chunks_per_mb: 100 }, +] + +test('exact prefix match', () => { + assert.equal(findChunksPerMb('devdocs_en_python_2026-02.zim', SEEDED_ROWS), 1100) +}) + +test('longest-prefix wins over broader sibling', () => { + // wikipedia_en_simple_* should pick 270, not the 250 from wikipedia_en_ + assert.equal( + findChunksPerMb('wikipedia_en_simple_all_nopic_2026-02.zim', SEEDED_ROWS), + 270 + ) +}) + +test('broader prefix used when no specific match', () => { + // wikipedia_en_medicine_* is not seeded; falls through to wikipedia_en_ at 250 + assert.equal(findChunksPerMb('wikipedia_en_medicine_nopic_2026-04.zim', SEEDED_ROWS), 250) +}) + +test('empty-string fallback catches unmatched filenames', () => { + assert.equal(findChunksPerMb('something_unknown_2026-02.zim', SEEDED_ROWS), 100) +}) + +test('returns null when no row matches and no fallback is registered', () => { + const rowsWithoutFallback = SEEDED_ROWS.filter((r) => r.pattern !== '') + assert.equal(findChunksPerMb('something_unknown_2026-02.zim', rowsWithoutFallback), null) +}) + +test('zero-ratio entry returns 0, not null (video-only ZIMs)', () => { + assert.equal(findChunksPerMb('lrnselfreliance_en_all_2025-12.zim', SEEDED_ROWS), 0) +}) + +test('estimateChunkCount scales by file size in MB', () => { + // 100 MB * 1100 chunks/MB ≈ 110,000 chunks for devdocs + const bytes = 100 * 1024 * 1024 + assert.equal(estimateChunkCount('devdocs_en_python_2026-02.zim', bytes, SEEDED_ROWS), 110000) +}) + +test('estimateChunkCount returns 0 for video-only ZIM regardless of size', () => { + const bytes = 5 * 1024 * 1024 * 1024 // 5 GB + assert.equal(estimateChunkCount('lrnselfreliance_en_all_2025-12.zim', bytes, SEEDED_ROWS), 0) +}) + +test('estimateChunkCount returns null when no match and no fallback', () => { + const rowsWithoutFallback = SEEDED_ROWS.filter((r) => r.pattern !== '') + assert.equal( + estimateChunkCount('something_unknown_2026-02.zim', 50 * 1024 * 1024, rowsWithoutFallback), + null + ) +}) + +test('ignoreCatchAll: returns null for filenames only the empty-pattern fallback would match (#913)', () => { + // military-medicine matches no specific prefix; without ignoreCatchAll it would + // hit the 100 chunks/MB fallback and wildly over-predict, falsely tripping + // the partial_stall warning on a PDF/link-out-heavy ZIM. + assert.equal( + findChunksPerMb('irp.fas.org_en_military-medicine_2026-05.zim', SEEDED_ROWS, { + ignoreCatchAll: true, + }), + null + ) + assert.equal( + estimateChunkCount('irp.fas.org_en_military-medicine_2026-05.zim', 75 * 1024 * 1024, SEEDED_ROWS, { + ignoreCatchAll: true, + }), + null + ) +}) + +test('ignoreCatchAll: still honors a specific (non-empty) pattern match', () => { + // A file that matches a real prefix should be unaffected by ignoreCatchAll. + assert.equal( + findChunksPerMb('wikipedia_en_simple_all_nopic_2026-02.zim', SEEDED_ROWS, { + ignoreCatchAll: true, + }), + 270 + ) +}) + +test('estimateBatch sums chunks and bytes for matched files', () => { + const files = [ + // 100 MB devdocs -> 110,000 chunks + { filename: 'devdocs_en_python_2026-02.zim', sizeBytes: 100 * 1024 * 1024 }, + // 500 MB wikipedia_en_simple -> 135,000 chunks + { filename: 'wikipedia_en_simple_all_nopic_2026-02.zim', sizeBytes: 500 * 1024 * 1024 }, + ] + const out = estimateBatch(files, SEEDED_ROWS) + assert.equal(out.totalChunks, 110_000 + 135_000) + assert.equal(out.totalBytes, (110_000 + 135_000) * BYTES_PER_CHUNK_ON_DISK) + assert.equal(out.hasUnknown, false) +}) + +test('estimateBatch sets hasUnknown when a file has no registry match', () => { + // Drop the empty-string fallback so the unknown file truly has no match + const rows = SEEDED_ROWS.filter((r) => r.pattern !== '') + const files = [ + { filename: 'devdocs_en_python_2026-02.zim', sizeBytes: 100 * 1024 * 1024 }, + { filename: 'something_unknown_2026-02.zim', sizeBytes: 50 * 1024 * 1024 }, + ] + const out = estimateBatch(files, rows) + assert.equal(out.totalChunks, 110_000) // only the matched file + assert.equal(out.hasUnknown, true) +}) + +test('estimateBatch handles video-only ZIMs (0 chunks/MB) without flagging hasUnknown', () => { + // A 5 GB video ZIM matches the registry with 0 chunks/MB; that is a + // *known* value, not an unknown — totals should be 0 and hasUnknown false. + const files = [ + { filename: 'lrnselfreliance_en_all_2025-12.zim', sizeBytes: 5 * 1024 * 1024 * 1024 }, + ] + const out = estimateBatch(files, SEEDED_ROWS) + assert.equal(out.totalChunks, 0) + assert.equal(out.totalBytes, 0) + assert.equal(out.hasUnknown, false) +}) + +test('estimateBatch on empty input returns zeros', () => { + const out = estimateBatch([], SEEDED_ROWS) + assert.equal(out.totalChunks, 0) + assert.equal(out.totalBytes, 0) + assert.equal(out.hasUnknown, false) +}) diff --git a/admin/tests/unit/kb_warning_decision.spec.ts b/admin/tests/unit/kb_warning_decision.spec.ts new file mode 100644 index 0000000..4ca6a00 --- /dev/null +++ b/admin/tests/unit/kb_warning_decision.spec.ts @@ -0,0 +1,125 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { decideWarnings } from '../../app/utils/kb_warning_decision.js' + +const MB = 1024 * 1024 + +test('healthy file: chunks present and on-target → no warnings', () => { + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 100 * MB, + chunksInQdrant: 11_000, + expectedChunks: 11_000, + }), + [] + ) +}) + +test('healthy file: chunks slightly above expectation → no warnings', () => { + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 100 * MB, + chunksInQdrant: 12_000, + expectedChunks: 11_000, + }), + [] + ) +}) + +test('Warning A: large file with 0 chunks (video-only ZIM)', () => { + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 5 * 1024 * MB, + chunksInQdrant: 0, + expectedChunks: 0, + }), + [{ kind: 'zero_chunks', fileSizeBytes: 5 * 1024 * MB }] + ) +}) + +test('Warning A: small empty file is silently ignored (under 100 MB threshold)', () => { + // A user uploads a 5 KB placeholder.txt that produces nothing → not worth a banner + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 5 * 1024, // 5 KB + chunksInQdrant: 0, + expectedChunks: null, + }), + [] + ) +}) + +test('Warning B: partial stall — chunks well below expectation', () => { + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 1000 * MB, + chunksInQdrant: 266, + expectedChunks: 600_000, + }), + [{ kind: 'partial_stall', chunksEmbedded: 266, chunksExpected: 600_000 }] + ) +}) + +test('Warning B: chunks just under 50% of expected → triggers', () => { + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 100 * MB, + chunksInQdrant: 4_999, + expectedChunks: 10_000, + }), + [{ kind: 'partial_stall', chunksEmbedded: 4_999, chunksExpected: 10_000 }] + ) +}) + +test('Warning B: chunks at exactly 50% of expected → does NOT trigger', () => { + // Strict less-than threshold leaves room for the boundary + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 100 * MB, + chunksInQdrant: 5_000, + expectedChunks: 10_000, + }), + [] + ) +}) + +test('Warning B suppressed when expectedChunks is null (registry miss)', () => { + // Better to be silent than show a meaningless "266 of unknown" comparison + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 100 * MB, + chunksInQdrant: 266, + expectedChunks: null, + }), + [] + ) +}) + +test('Warning B suppressed when expectedChunks is 0 (video-only registry entry)', () => { + // A `lrnselfreliance_` row in the registry says "expect 0 chunks". A real + // file matching it correctly producing 0 chunks must not trigger Warning B. + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 500 * MB, + chunksInQdrant: 0, + expectedChunks: 0, + }), + // Note: Warning A triggers here because file > 100 MB and chunks = 0 + [{ kind: 'zero_chunks', fileSizeBytes: 500 * MB }] + ) +}) + +test('Both warnings can fire on the same file in principle', () => { + // Edge case: huge file, 0 chunks, but ratio registry expected 100k. + // Warning A fires (large + zero), Warning B suppressed (chunksInQdrant must be > 0). + // This documents the chunksInQdrant > 0 guard on Warning B. + assert.deepEqual( + decideWarnings({ + fileSizeBytes: 1000 * MB, + chunksInQdrant: 0, + expectedChunks: 100_000, + }), + [{ kind: 'zero_chunks', fileSizeBytes: 1000 * MB }] + ) +}) diff --git a/admin/tests/unit/private_url.spec.ts b/admin/tests/unit/private_url.spec.ts new file mode 100644 index 0000000..43181ed --- /dev/null +++ b/admin/tests/unit/private_url.spec.ts @@ -0,0 +1,53 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { assertNotPrivateUrl } from '../../app/validators/common.js' + +const expectBlocked = (url: string) => { + assert.throws(() => assertNotPrivateUrl(url), /loopback or link-local/) +} + +const expectAllowed = (url: string) => { + assert.doesNotThrow(() => assertNotPrivateUrl(url)) +} + +test('blocks loopback and unspecified IPv4 literals', () => { + expectBlocked('http://127.0.0.1/file.zim') + expectBlocked('http://127.1.2.3/file.zim') + expectBlocked('http://0.0.0.0/file.zim') + // Alternate encodings normalized to 127.0.0.1 / 0.0.0.0 by the WHATWG URL parser + expectBlocked('http://0177.0.0.1/file.zim') + expectBlocked('http://2130706433/file.zim') + expectBlocked('http://0/file.zim') +}) + +test('blocks link-local IPv4 literals including cloud metadata', () => { + expectBlocked('http://169.254.169.254/latest/meta-data/') + expectBlocked('http://169.254.1.1/file.zim') +}) + +test('blocks IPv6 loopback, link-local, unspecified, and IPv4-mapped loopback', () => { + expectBlocked('http://[::1]/file.zim') + expectBlocked('http://[fe80::1]/file.zim') + expectBlocked('http://[::]/file.zim') + expectBlocked('http://[::ffff:127.0.0.1]/file.zim') + expectBlocked('http://[::ffff:7f00:1]/file.zim') +}) + +test('blocks localhost, including mixed-case and trailing-root-dot forms (#911)', () => { + expectBlocked('http://localhost/file.zim') + expectBlocked('http://LOCALHOST/file.zim') + expectBlocked('http://localhost./file.zim') + expectBlocked('http://LocalHost./file.zim') +}) + +test('allows RFC1918 LAN literals, bare LAN hostnames, and public FQDNs', () => { + expectAllowed('http://10.0.0.2/file.zim') + expectAllowed('http://172.16.0.2/file.zim') + expectAllowed('http://192.168.1.10/file.zim') + expectAllowed('http://nomad3/file.zim') + expectAllowed('http://my-nas.local/file.zim') + expectAllowed('https://downloads.example.com/file.zim') + // A mapped *public* IP must not be blocked + expectAllowed('http://[::ffff:8.8.8.8]/file.zim') +}) diff --git a/admin/tests/unit/superseded_resource.spec.ts b/admin/tests/unit/superseded_resource.spec.ts new file mode 100644 index 0000000..46d6d47 --- /dev/null +++ b/admin/tests/unit/superseded_resource.spec.ts @@ -0,0 +1,118 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' +import { join } from 'node:path' + +import { decideSupersededDeletion } from '../../app/utils/superseded_resource.js' + +const STORAGE = join('/app', 'storage', 'zim') +const OLD = join(STORAGE, 'ifixit_en_all_2026-03.zim') +const NEW = join(STORAGE, 'ifixit_en_all_2026-05.zim') + +test('first install (no prior row) deletes nothing', () => { + const d = decideSupersededDeletion({ + existing: null, + newFilePath: NEW, + newVersion: '2026-05', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, false) + assert.equal(d.reason, 'first_install') +}) + +test('superseded prior version is deleted', () => { + const d = decideSupersededDeletion({ + existing: { file_path: OLD, version: '2026-03' }, + newFilePath: NEW, + newVersion: '2026-05', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, true) + assert.equal(d.reason, 'superseded') + assert.equal(d.path, OLD) +}) + +test('same file path is never deleted (re-download)', () => { + const d = decideSupersededDeletion({ + existing: { file_path: NEW, version: '2026-05' }, + newFilePath: NEW, + newVersion: '2026-05', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, false) + assert.equal(d.reason, 'same_file') +}) + +test('old file is NOT deleted until the new file is confirmed on disk', () => { + const d = decideSupersededDeletion({ + existing: { file_path: OLD, version: '2026-03' }, + newFilePath: NEW, + newVersion: '2026-05', + newFileExists: false, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, false) + assert.equal(d.reason, 'new_file_missing') +}) + +test('downgrade / reinstall of an older version does not wipe the newer file', () => { + const d = decideSupersededDeletion({ + existing: { file_path: NEW, version: '2026-05' }, + newFilePath: OLD, + newVersion: '2026-03', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, false) + assert.equal(d.reason, 'not_newer') +}) + +test('equal version is not considered newer', () => { + const d = decideSupersededDeletion({ + existing: { file_path: join(STORAGE, 'ifixit_en_all_2026-05a.zim'), version: '2026-05' }, + newFilePath: NEW, + newVersion: '2026-05', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, false) + assert.equal(d.reason, 'not_newer') +}) + +test('refuses to delete a path outside the storage directory', () => { + const d = decideSupersededDeletion({ + existing: { file_path: '/etc/passwd', version: '2026-03' }, + newFilePath: NEW, + newVersion: '2026-05', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, false) + assert.equal(d.reason, 'outside_storage') +}) + +test('refuses a traversal escape that only looks like it is under storage', () => { + const d = decideSupersededDeletion({ + existing: { file_path: join(STORAGE, '..', 'mysql', 'data.ibd'), version: '2026-03' }, + newFilePath: NEW, + newVersion: '2026-05', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, false) + assert.equal(d.reason, 'outside_storage') +}) + +test('YYYY-MM-DD versions order correctly against YYYY-MM', () => { + const d = decideSupersededDeletion({ + existing: { file_path: OLD, version: '2026-05' }, + newFilePath: NEW, + newVersion: '2026-05-12', + newFileExists: true, + storageBaseDir: STORAGE, + }) + assert.equal(d.delete, true) + assert.equal(d.reason, 'superseded') +}) diff --git a/admin/tests/unit/zim_filename.spec.ts b/admin/tests/unit/zim_filename.spec.ts new file mode 100644 index 0000000..4bc4733 --- /dev/null +++ b/admin/tests/unit/zim_filename.spec.ts @@ -0,0 +1,73 @@ +import * as assert from 'node:assert/strict' +import { test } from 'node:test' + +import { findReplacedWikipediaFiles, zimFilenameStem } from '../../app/utils/zim_filename.js' + +test('zimFilenameStem strips YYYY-MM date suffix', () => { + assert.equal(zimFilenameStem('wikipedia_en_all_nopic_2026-02.zim'), 'wikipedia_en_all_nopic') +}) + +test('zimFilenameStem strips YYYY-MM-DD date suffix', () => { + assert.equal(zimFilenameStem('wikipedia_en_all_nopic_2026-02-15.zim'), 'wikipedia_en_all_nopic') +}) + +test('zimFilenameStem returns input unchanged when no date suffix present', () => { + assert.equal( + zimFilenameStem('wikipedia_en_my_custom_extract.zim'), + 'wikipedia_en_my_custom_extract.zim' + ) +}) + +test('findReplacedWikipediaFiles cleans up older version of same variant', () => { + assert.deepEqual( + findReplacedWikipediaFiles('wikipedia_en_all_nopic_2026-04.zim', [ + 'wikipedia_en_all_nopic_2026-02.zim', + 'wikipedia_en_all_nopic_2026-04.zim', + ]), + ['wikipedia_en_all_nopic_2026-02.zim'] + ) +}) + +test('findReplacedWikipediaFiles preserves co-existing distinct corpora — the #884 regression case', () => { + assert.deepEqual( + findReplacedWikipediaFiles('wikipedia_en_medicine_nopic_2026-04.zim', [ + 'wikipedia_en_simple_all_nopic_2026-02.zim', + 'wikipedia_en_medicine_nopic_2026-04.zim', + ]), + [] + ) +}) + +test('findReplacedWikipediaFiles preserves all unrelated variants when a new variant lands', () => { + assert.deepEqual( + findReplacedWikipediaFiles('wikipedia_en_all_nopic_2026-04.zim', [ + 'wikipedia_en_simple_all_nopic_2026-02.zim', + 'wikipedia_en_medicine_nopic_2026-04.zim', + 'wikipedia_en_wikivoyage_2026-02.zim', + 'wikipedia_en_climate_change_2025-08.zim', + 'wikipedia_en_all_nopic_2026-04.zim', + ]), + [] + ) +}) + +test('findReplacedWikipediaFiles ignores files without wikipedia_en_ prefix', () => { + assert.deepEqual( + findReplacedWikipediaFiles('wikipedia_en_all_nopic_2026-04.zim', [ + 'wiktionary_en_all_2026-02.zim', + 'gutenberg_en_all_2026-01.zim', + 'wikipedia_en_all_nopic_2026-04.zim', + ]), + [] + ) +}) + +test('findReplacedWikipediaFiles preserves manually-named files without a date suffix', () => { + assert.deepEqual( + findReplacedWikipediaFiles('wikipedia_en_all_nopic_2026-04.zim', [ + 'wikipedia_en_my_custom_extract.zim', + 'wikipedia_en_all_nopic_2026-04.zim', + ]), + [] + ) +}) diff --git a/admin/types/collections.ts b/admin/types/collections.ts index 1ec6d5c..b8fbdb4 100644 --- a/admin/types/collections.ts +++ b/admin/types/collections.ts @@ -64,6 +64,11 @@ export type ResourceStatus = 'installed' | 'not_installed' | 'update_available' export type CategoryWithStatus = SpecCategory & { installedTierSlug?: string + // Highest tier whose every resource is either installed OR has an in-flight + // download. Set only when it differs from installedTierSlug — i.e. the user + // picked something larger and downloads are still running. Lets the UI show + // the user's actual intent during the (often long) download window. + downloadingTierSlug?: string } export type CollectionWithStatus = SpecCollection & { @@ -86,6 +91,7 @@ export type ResourceUpdateInfo = { installed_version: string latest_version: string download_url: string + size_bytes?: number } export type ContentUpdateCheckResult = { diff --git a/admin/types/downloads.ts b/admin/types/downloads.ts index 71fca26..0bda197 100644 --- a/admin/types/downloads.ts +++ b/admin/types/downloads.ts @@ -41,6 +41,13 @@ export type RunDownloadJobParams = Omit< resource_id: string version: string collection_ref: string | null + /** + * True only when this download was initiated by the content auto-updater. + * Gates the per-resource auto-update backoff (success reset in + * RunDownloadJob.onComplete, terminal-failure increment in the worker + * `failed` handler) so manual downloads never touch the counter. + */ + auto?: boolean } } diff --git a/admin/types/kb_ingest_state.ts b/admin/types/kb_ingest_state.ts new file mode 100644 index 0000000..c59d006 --- /dev/null +++ b/admin/types/kb_ingest_state.ts @@ -0,0 +1,9 @@ +export const KB_INGEST_STATES = [ + 'pending_decision', + 'indexed', + 'browse_only', + 'failed', + 'stalled', +] as const + +export type KbIngestStateValue = (typeof KB_INGEST_STATES)[number] diff --git a/admin/types/kv_store.ts b/admin/types/kv_store.ts index 8fb2686..1156c3e 100644 --- a/admin/types/kv_store.ts +++ b/admin/types/kv_store.ts @@ -3,15 +3,45 @@ export const KV_STORE_SCHEMA = { 'chat.suggestionsEnabled': 'boolean', 'chat.lastModel': 'string', 'rag.docsEmbedded': 'boolean', + 'rag.defaultIngestPolicy': 'string', 'system.updateAvailable': 'boolean', 'system.latestVersion': 'string', 'system.earlyAccess': 'boolean', + 'system.internetStatusTestUrl': 'string', + 'autoUpdate.enabled': 'boolean', + 'autoUpdate.windowStart': 'string', + 'autoUpdate.windowEnd': 'string', + 'autoUpdate.cooloffHours': 'string', + 'autoUpdate.lastAttemptAt': 'string', + 'autoUpdate.lastError': 'string', + 'autoUpdate.lastResult': 'string', + 'autoUpdate.consecutiveFailures': 'string', + 'autoUpdate.autoDisabledReason': 'string', + 'appAutoUpdate.enabled': 'boolean', + 'appAutoUpdate.lastAttemptAt': 'string', + 'appAutoUpdate.lastResult': 'string', + 'contentAutoUpdate.enabled': 'boolean', + 'contentAutoUpdate.windowStart': 'string', + 'contentAutoUpdate.windowEnd': 'string', + 'contentAutoUpdate.cooloffHours': 'string', + 'contentAutoUpdate.maxBytesPerWindow': 'string', + 'contentAutoUpdate.lastAttemptAt': 'string', + 'contentAutoUpdate.lastResult': 'string', + 'contentAutoUpdate.lastError': 'string', + 'contentAutoUpdate.consecutiveFailures': 'string', + 'contentAutoUpdate.autoDisabledReason': 'string', + 'contentAutoUpdate.windowBytesUsed': 'string', + 'contentAutoUpdate.windowResetAt': 'string', 'ui.hasVisitedEasySetup': 'boolean', 'ui.theme': 'string', 'ai.assistantCustomName': 'string', 'gpu.type': 'string', 'ai.remoteOllamaUrl': 'string', 'ai.ollamaFlashAttention': 'boolean', + 'ai.amdGpuAcceleration': 'boolean', + 'ai.amdHsaOverride': 'string', + 'ai.autoFixGpuPassthrough': 'boolean', + 'gpu.autoRemediatedAt': 'string', } as const type KVTagToType = T extends 'boolean' ? boolean : string diff --git a/admin/types/maps.ts b/admin/types/maps.ts index f907126..60dcb15 100644 --- a/admin/types/maps.ts +++ b/admin/types/maps.ts @@ -21,3 +21,37 @@ export type MapLayer = { 'source-layer'?: string [key: string]: any } + +/** ISO 3166-1 alpha-2 country code (e.g. "DE", "FR", "US"). */ +export type CountryCode = string + +export type Country = { + code: CountryCode + code3: string + name: string + continent: string + subregion: string + population: number +} + +export type CountryGroup = { + id: string + name: string + description: string + countries: CountryCode[] +} + +export type MapExtractRequest = { + countries: CountryCode[] + maxzoom?: number +} + +export type MapExtractPreflight = { + tiles: number + bytes: number + source: { + url: string + date: string + key: string + } +} diff --git a/admin/types/rag.ts b/admin/types/rag.ts index e84f349..465a539 100644 --- a/admin/types/rag.ts +++ b/admin/types/rag.ts @@ -5,6 +5,12 @@ export type EmbedJobWithProgress = { progress: number status: string error?: string + /** ms epoch of last completed batch; multi-batch ZIMs update this each batch. */ + lastBatchAt?: number + /** ms epoch of first batch start; used as a fallback when lastBatchAt unset. */ + startedAt?: number + /** Total chunks embedded across this job's batches so far. */ + chunks?: number } export type ProcessAndEmbedFileResponse = { @@ -34,4 +40,41 @@ export type RAGResult = { export type RerankedRAGResult = Omit & { finalScore: number +} + +export type FileWarning = + | { kind: 'zero_chunks'; fileSizeBytes: number } + | { kind: 'partial_stall'; chunksEmbedded: number; chunksExpected: number } + +/** + * Row returned by `GET /api/rag/files`. `state` is null for sources that exist + * in Qdrant but have no `kb_ingest_state` row (pre-RFC-883 installs where the + * scanner hasn't yet backfilled). `chunksEmbedded` mirrors the state-machine + * field; 0 for state-row-less or zero-chunk files. + */ +export type StoredFileInfo = { + source: string + state: import('./kb_ingest_state.js').KbIngestStateValue | null + chunksEmbedded: number + /** Filename portion of `source` (last path segment). */ + fileName: string + /** File size in bytes from disk; null if the file is missing or unreadable. */ + size: number | null + /** Last-modified timestamp from disk (ISO 8601); null if unavailable. */ + uploadedAt: string | null + /** True when `source` lives under the user-uploads directory. Drives which + * rows offer view/download in the UI. */ + isUserUpload: boolean +} + +/** + * Result of computing per-file warnings. `ok: false` means the computation + * itself failed (Qdrant unreachable, DB outage, FS read error) — distinct from + * `ok: true` with an empty map, which means every scanned file is healthy. + * The frontend should surface a neutral "warnings unavailable" indicator on + * `!ok` rather than implying everything is fine. + */ +export type FileWarningsResult = { + ok: boolean + warnings: Record } \ No newline at end of file diff --git a/admin/types/services.ts b/admin/types/services.ts index cb9f45a..0883c90 100644 --- a/admin/types/services.ts +++ b/admin/types/services.ts @@ -7,6 +7,7 @@ export type ServiceSlim = Pick< | 'installed' | 'installation_status' | 'ui_location' + | 'custom_url' | 'friendly_name' | 'description' | 'icon' @@ -14,4 +15,9 @@ export type ServiceSlim = Pick< | 'display_order' | 'container_image' | 'available_update_version' + | 'auto_update_enabled' + | 'is_custom' + | 'is_user_modified' + | 'is_deprecated' + | 'category' > & { status?: string } diff --git a/admin/types/system.ts b/admin/types/system.ts index 7c4e6d7..fb7dfb8 100644 --- a/admin/types/system.ts +++ b/admin/types/system.ts @@ -3,7 +3,9 @@ import { Systeminformation } from 'systeminformation' export type GpuHealthStatus = { status: 'ok' | 'passthrough_failed' | 'no_gpu' | 'ollama_not_installed' hasNvidiaRuntime: boolean + hasRocmRuntime: boolean ollamaGpuAccessible: boolean + gpuVendor?: 'nvidia' | 'amd' } export type SystemInformationResponse = { @@ -83,4 +85,79 @@ export type CheckLatestVersionResult = { currentVersion: string, latestVersion: string, message?: string +} + +export type AutoUpdateEligibleTarget = { + version: string + tag: string + publishedAt: string +} + +export type AutoUpdateStatus = { + enabled: boolean + windowStart: string + windowEnd: string + cooloffHours: number + currentVersion: string + withinWindow: boolean + eligibleTarget: AutoUpdateEligibleTarget | null + lastAttemptAt: string | null + lastResult: string | null + lastError: string | null + consecutiveFailures: number + autoDisabledReason: string | null +} + +export type AppAutoUpdateAppStatus = { + service_name: string + friendly_name: string | null + auto_update_enabled: boolean + current_version: string + available_update_version: string | null + first_seen_at: string | null + eligible: boolean + reason: string + cooloff_remaining_hours: number | null + consecutive_failures: number + auto_disabled_reason: string | null +} + +export type AppAutoUpdateStatus = { + enabled: boolean + windowStart: string + windowEnd: string + cooloffHours: number + withinWindow: boolean + lastAttemptAt: string | null + lastResult: string | null + apps: AppAutoUpdateAppStatus[] +} + +export type ContentAutoUpdateResourceStatus = { + resource_id: string + resource_type: 'zim' | 'map' + current_version: string + available_update_version: string | null + size_bytes: number | null + eligible: boolean + reason: string + cooloff_remaining_hours: number | null + exceeds_cap: boolean + consecutive_failures: number + auto_disabled_reason: string | null +} + +export type ContentAutoUpdateStatus = { + enabled: boolean + windowStart: string + windowEnd: string + cooloffHours: number + maxBytesPerWindow: number + withinWindow: boolean + windowBytesUsed: number + lastAttemptAt: string | null + lastResult: string | null + lastError: string | null + autoDisabledReason: string | null + resources: ContentAutoUpdateResourceStatus[] } \ No newline at end of file diff --git a/admin/types/zim.ts b/admin/types/zim.ts index cfd040a..96ed081 100644 --- a/admin/types/zim.ts +++ b/admin/types/zim.ts @@ -16,6 +16,7 @@ export type ListRemoteZimFilesResponse = { items: RemoteZimFileEntry[] has_more: boolean total_count: number + next_start: number } export type RawRemoteZimFileEntry = { diff --git a/install/calibre-empty-library/README.md b/install/calibre-empty-library/README.md new file mode 100644 index 0000000..c00b04a --- /dev/null +++ b/install/calibre-empty-library/README.md @@ -0,0 +1,19 @@ +# Empty Calibre library (Calibre-Web seed) + +`metadata.db` is an empty Calibre library database, generated once with +`calibredb --with-library list` (calibre 9.9). + +Calibre-Web cannot create a library from scratch. On a fresh NOMAD it would dead-end +at the "Database Configuration" page asking for an existing Calibre database. To avoid +that, the Calibre-Web pre-install action seeds this file into `storage/books` (only when +no `metadata.db` is already there) and hands ownership to the container's user, so the +user just points Calibre-Web at `/books` once and starts adding books. + +This file is bundled into the admin image via the Dockerfile and copied at install time +by `DockerService._runPreinstallActions__CalibreWeb()`. To regenerate it: + +```sh +docker run --rm -v "$PWD/lib:/books" --entrypoint bash lscr.io/linuxserver/calibre:latest \ + -c "calibredb --with-library /books list" +# then copy lib/metadata.db here +``` diff --git a/install/calibre-empty-library/metadata.db b/install/calibre-empty-library/metadata.db new file mode 100644 index 0000000..65f4d2a Binary files /dev/null and b/install/calibre-empty-library/metadata.db differ diff --git a/install/entrypoint.sh b/install/entrypoint.sh index 4361903..7375e71 100644 --- a/install/entrypoint.sh +++ b/install/entrypoint.sh @@ -7,6 +7,29 @@ echo "Starting entrypoint script..." # Ensure required storage directories exist (volume may be freshly mounted) mkdir -p /app/storage/logs /app/storage/kb_uploads +# Wait for Redis to be reachable before booting anything that opens a BullMQ +# connection. `depends_on: condition: service_healthy` only gates a clean +# `up --recreate`; it is NOT re-checked on `docker compose restart` or a +# `restart: unless-stopped` bounce, so without this the app can race Docker's +# DNS (EAI_AGAIN) or dial a restarted Redis container's stale IP (ECONNREFUSED). +# This isn't load-bearing since legacy installs used a mounted entrypoint script +# that may override this script, but it's a cost-nothing check for newer installs. +# The real check is done by the application itself, but this provides a safety net. +REDIS_HOST="${REDIS_HOST:-redis}" +REDIS_PORT="${REDIS_PORT:-6379}" +echo "Waiting for Redis at ${REDIS_HOST}:${REDIS_PORT}..." +for i in $(seq 1 60); do + if node -e "const net=require('net');const s=net.connect(Number(process.env.REDIS_PORT||6379),process.env.REDIS_HOST||'redis');s.on('connect',()=>{s.end();process.exit(0)});s.on('error',()=>process.exit(1));" 2>/dev/null; then + echo "Redis is up and running!" + break + fi + if [ "$i" -eq 60 ]; then + echo "Timed out waiting for Redis at ${REDIS_HOST}:${REDIS_PORT}" >&2 + exit 1 + fi + sleep 1 +done + # Run AdonisJS migrations echo "Running AdonisJS migrations..." node ace migration:run --force diff --git a/install/install_nomad.sh b/install/install_nomad.sh index 76ca807..70930f7 100644 --- a/install/install_nomad.sh +++ b/install/install_nomad.sh @@ -86,6 +86,21 @@ check_is_debian_based() { echo -e "${GREEN}#${RESET} This script is running on a Debian-based system.\\n" } +check_is_x86_64() { + local arch + arch="$(uname -m)" + if [[ "${arch}" != "x86_64" && "${arch}" != "amd64" ]]; then + echo -e "${YELLOW}#${RESET} WARNING: Detected architecture '${arch}'. NOMAD officially supports x86_64 only.\\n" + echo -e "${YELLOW}#${RESET} ARM64/aarch64 support is tracked in PR #419 and is not yet ready.\\n" + echo -e "${YELLOW}#${RESET} Continuing on an unsupported architecture will likely fail and may leave\\n" + echo -e "${YELLOW}#${RESET} partial Docker images and files behind that you'll need to clean up manually.\\n" + echo -e "${YELLOW}#${RESET} Continuing in 10 seconds... press Ctrl+C now to abort.\\n" + sleep 10 + return + fi + echo -e "${GREEN}#${RESET} Architecture check passed (${arch}).\\n" +} + ensure_dependencies_installed() { local missing_deps=() @@ -249,7 +264,7 @@ setup_nvidia_container_toolkit() { echo -e "${YELLOW}#${RESET} Installing NVIDIA container toolkit...\\n" # Install dependencies per https://docs.ollama.com/docker - wrapped in error handling - if ! curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey 2>/dev/null | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 2>/dev/null; then + if ! curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey 2>/dev/null | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 2>/dev/null; then echo -e "${YELLOW}#${RESET} Warning: Failed to add NVIDIA container toolkit GPG key. Continuing anyway...\\n" return 0 fi @@ -433,19 +448,19 @@ download_helper_scripts() { local update_script_path="${NOMAD_DIR}/update_nomad.sh" echo -e "${YELLOW}#${RESET} Downloading helper scripts...\\n" - if ! curl -fsSL "$START_SCRIPT_URL" -o "$start_script_path"; then + if ! curl -fsSL --retry 5 --retry-delay 3 "$START_SCRIPT_URL" -o "$start_script_path"; then echo -e "${RED}#${RESET} Failed to download the start script. Please check the URL and try again." exit 1 fi chmod +x "$start_script_path" - if ! curl -fsSL "$STOP_SCRIPT_URL" -o "$stop_script_path"; then + if ! curl -fsSL --retry 5 --retry-delay 3 "$STOP_SCRIPT_URL" -o "$stop_script_path"; then echo -e "${RED}#${RESET} Failed to download the stop script. Please check the URL and try again." exit 1 fi chmod +x "$stop_script_path" - if ! curl -fsSL "$UPDATE_SCRIPT_URL" -o "$update_script_path"; then + if ! curl -fsSL --retry 5 --retry-delay 3 "$UPDATE_SCRIPT_URL" -o "$update_script_path"; then echo -e "${RED}#${RESET} Failed to download the update script. Please check the URL and try again." exit 1 fi @@ -502,18 +517,75 @@ verify_gpu_setup() { echo -e "${YELLOW}○${RESET} Docker NVIDIA runtime not detected\\n" fi - # Check for AMD GPU + # Check for AMD GPU — restrict to display controller classes to avoid false positives + # from AMD CPU host bridges, PCI bridges, and chipset devices. + local has_amd_gpu='false' + local amd_gfx_version='' if command -v lspci &> /dev/null; then - if lspci 2>/dev/null | grep -iE "amd|radeon" &> /dev/null; then - echo -e "${YELLOW}○${RESET} AMD GPU detected (ROCm support not currently available)\\n" + if lspci 2>/dev/null | grep -iE "VGA|3D controller|Display" | grep -iE "amd|radeon" &> /dev/null; then + has_amd_gpu='true' + echo -e "${GREEN}✓${RESET} AMD GPU detected — ROCm acceleration will be configured automatically when AI Assistant is installed.\\n" + + # Map AMD codename → gfx version so the admin can pick the right HSA_OVERRIDE_GFX_VERSION. + # gfx1030/1100/1101/1102 are on AMD's official ROCm allowlist and need NO override — + # forcing one (e.g. 11.0.0) breaks GPU discovery on these. Other variants do need it. + local amd_devices + amd_devices=$(lspci -vmm 2>/dev/null | awk -F'\t' '/^Class:.*(VGA|3D|Display)/{c=1} c && /^Device:/{print $2; c=0}') + if echo "${amd_devices}" | grep -iq 'Navi 21'; then + amd_gfx_version='gfx1030' + elif echo "${amd_devices}" | grep -iq 'Navi 22'; then + amd_gfx_version='gfx1031' + elif echo "${amd_devices}" | grep -iq 'Navi 23'; then + amd_gfx_version='gfx1032' + elif echo "${amd_devices}" | grep -iq 'Navi 24'; then + amd_gfx_version='gfx1034' + elif echo "${amd_devices}" | grep -iq 'Rembrandt'; then + amd_gfx_version='gfx1035' + elif echo "${amd_devices}" | grep -iEq 'Phoenix1?|Phoenix2'; then + amd_gfx_version='gfx1103' + elif echo "${amd_devices}" | grep -iEq 'Strix Halo'; then + amd_gfx_version='gfx1151' + elif echo "${amd_devices}" | grep -iEq 'Strix( Point)?'; then + amd_gfx_version='gfx1150' + elif echo "${amd_devices}" | grep -iq 'Navi 31'; then + amd_gfx_version='gfx1100' + elif echo "${amd_devices}" | grep -iq 'Navi 32'; then + amd_gfx_version='gfx1101' + elif echo "${amd_devices}" | grep -iq 'Navi 33'; then + amd_gfx_version='gfx1102' + fi fi fi - + + # Write detected GPU type to a marker file the admin container can read. The admin + # container lacks lspci and AMD GPUs don't register a Docker runtime, so this is the + # only reliable way for the admin to know an AMD GPU is present at install time. + local gpu_marker_path="${NOMAD_DIR}/storage/.nomad-gpu-type" + if command -v nvidia-smi &> /dev/null; then + echo 'nvidia' | sudo tee "${gpu_marker_path}" > /dev/null 2>&1 || true + elif [[ "${has_amd_gpu}" == 'true' ]]; then + echo 'amd' | sudo tee "${gpu_marker_path}" > /dev/null 2>&1 || true + else + sudo rm -f "${gpu_marker_path}" 2>/dev/null || true + fi + + # Companion marker used by the admin to pick the right HSA_OVERRIDE_GFX_VERSION for + # the detected card. Absence of this file means "unknown gfx" — the admin falls back + # to its built-in default. Always rewrite (or remove) on install to keep state fresh. + local amd_gfx_marker_path="${NOMAD_DIR}/storage/.nomad-amd-gfx" + if [[ -n "${amd_gfx_version}" ]]; then + echo "${amd_gfx_version}" | sudo tee "${amd_gfx_marker_path}" > /dev/null 2>&1 || true + else + sudo rm -f "${amd_gfx_marker_path}" 2>/dev/null || true + fi + echo -e "${YELLOW}===========================================${RESET}\\n" - + # Summary if command -v nvidia-smi &> /dev/null && docker info 2>/dev/null | grep -q "nvidia"; then echo -e "${GREEN}#${RESET} GPU acceleration is properly configured! The AI Assistant will use your GPU.\\n" + elif [[ "${has_amd_gpu}" == 'true' ]]; then + echo -e "${GREEN}#${RESET} GPU acceleration will be enabled (AMD/ROCm) when AI Assistant is installed from the dashboard.\\n" else echo -e "${YELLOW}#${RESET} GPU acceleration not detected. The AI Assistant will run in CPU-only mode.\\n" if command -v nvidia-smi &> /dev/null && ! docker info 2>/dev/null | grep -q "nvidia"; then @@ -539,6 +611,7 @@ success_message() { # Pre-flight checks check_is_debian_based +check_is_x86_64 check_is_bash check_has_sudo ensure_dependencies_installed diff --git a/install/management_compose.yaml b/install/management_compose.yaml index f4c7b5f..fba4b0a 100644 --- a/install/management_compose.yaml +++ b/install/management_compose.yaml @@ -18,11 +18,14 @@ services: ports: - "8080:8080" volumes: - - /opt/project-nomad/storage:/app/storage # If you change the default storage path (/opt/project-nomad/storage), make sure to update the disk-collector config as well! + # To store NOMAD's data somewhere other than /opt/project-nomad/storage, change the HOST side (left of the colon) here AND set NOMAD_STORAGE_PATH below to the same host path, then update the disk-collector volume at the bottom to match. The admin auto-detects this mount so child apps (Kiwix, Ollama, etc.) follow it, but setting NOMAD_STORAGE_PATH keeps everything explicit. + - /opt/project-nomad/storage:/app/storage - /var/run/docker.sock:/var/run/docker.sock # Allows the admin service to communicate with the Host's Docker daemon - nomad-update-shared:/app/update-shared # Shared volume for update communication environment: - NODE_ENV=production + # NOMAD_STORAGE_PATH is the HOST path where NOMAD stores all of its data (ZIMs, models, notes, etc.). It MUST match the host side of the /app/storage volume above and the disk-collector volume below. The admin also auto-detects its storage mount, so child apps follow it even if this is left at the default, but keep all three in sync to avoid surprises. + - NOMAD_STORAGE_PATH=/opt/project-nomad/storage # PORT is the port the admin server listens on *inside* the container and should not be changed. If you want to change which port the admin interface is accessible from on the host, you can change the port mapping in the "ports" section (e.g. "9090:8080" to access it on port 9090 from the host) - PORT=8080 - LOG_LEVEL=info diff --git a/install/sidecar-disk-collector/collect-disk-info.sh b/install/sidecar-disk-collector/collect-disk-info.sh index 7705175..2a4a5c6 100755 --- a/install/sidecar-disk-collector/collect-disk-info.sh +++ b/install/sidecar-disk-collector/collect-disk-info.sh @@ -44,7 +44,9 @@ while true; do # These are not real filesystem roots and report misleading sizes [[ -f "/host${mountpoint}" ]] && continue - STATS=$(df -B1 "/host${mountpoint}" 2>/dev/null | awk 'NR==2{print $2,$3,$4,$5}') + # Use -P (POSIX) to force single-line output even when device names + # are long (e.g. NFS mounts), which otherwise wrap across two lines + STATS=$(df -P -B1 "/host${mountpoint}" 2>/dev/null | awk 'NR==2{print $2,$3,$4,$5}') [[ -z "$STATS" ]] && continue read -r size used avail pct <<< "$STATS" @@ -60,7 +62,7 @@ while true; do # The disk-collector container always has /storage bind-mounted from the host, # so df on /storage reflects the actual backing device and its capacity. if [[ "$FIRST" -eq 1 ]] && mountpoint -q /storage 2>/dev/null; then - STATS=$(df -B1 /storage 2>/dev/null | awk 'NR==2{print $1,$2,$3,$4,$5}') + STATS=$(df -P -B1 /storage 2>/dev/null | awk 'NR==2{print $1,$2,$3,$4,$5}') if [[ -n "$STATS" ]]; then read -r dev size used avail pct <<< "$STATS" pct="${pct/\%/}" diff --git a/package-lock.json b/package-lock.json index 1ee61ec..2fdbcef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,13 @@ { "name": "project-nomad", - "version": "1.27.0", + "version": "1.33.0-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "project-nomad", - "version": "1.27.0", - "license": "ISC" + "version": "1.33.0-rc.1", + "license": "Apache-2.0" } } } diff --git a/package.json b/package.json index 2a8ff50..80ab61b 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "project-nomad", - "version": "1.31.0", - "description": "\"", + "version": "1.33.0", + "description": "Project N.O.M.A.D. (Node for Offline Media, Archives, and Data) - an offline-first knowledge and education server.", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Crosstalk Solutions, LLC", - "license": "ISC" + "license": "Apache-2.0" }