├── .devcontainer
└── devcontainer.json
├── .github
└── dependabot.yml
├── .gitignore
├── Dockerfile
├── Makefile
├── README.md
├── data
└── trees.ndjson
├── index.html
├── javascript.svg
├── main.js
├── package-lock.json
├── package.json
├── poetry.lock
├── public
└── vite.svg
├── pyproject.toml
└── style.css
/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the
2 | // README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
3 | {
4 | "name": "Ubuntu",
5 | // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6 | // "image": "mcr.microsoft.com/devcontainers/base:jammy",
7 |
8 | "build": {
9 | // Path is relative to the devcontainer.json file.
10 | "dockerfile": "../Dockerfile"
11 | }
12 |
13 | // Features to add to the dev container. More info: https://containers.dev/features.
14 | // "features": {},
15 |
16 | // Use 'forwardPorts' to make a list of ports inside the container available locally.
17 | // "forwardPorts": [],
18 |
19 | // Use 'postCreateCommand' to run commands after the container is created.
20 | // "postCreateCommand": "uname -a",
21 |
22 | // Configure tool-specific properties.
23 | // "customizations": {},
24 |
25 | // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
26 | // "remoteUser": "root"
27 | }
28 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for more information:
4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 | # https://containers.dev/guide/dependabot
6 |
7 | version: 2
8 | updates:
9 | - package-ecosystem: "devcontainers"
10 | directory: "/"
11 | schedule:
12 | interval: weekly
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
26 | .venv
27 | __pycache__/
28 | *.py[cod]
29 | *$py.class
30 | venv
31 | .eggs
32 | .pytest_cache
33 | *.egg-info
34 | .DS_Store
35 | .vscode
36 | dist
37 | build
38 |
39 | *.db
40 | *.db-wal
41 | *.db-journal
42 | *.db-shm
43 | *.mbtiles
44 | *.pmtiles
45 | *.pbf
46 | *.zip
47 |
48 | public/fonts/
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM mcr.microsoft.com/devcontainers/base:jammy
2 |
3 | RUN apt-get update -y && apt-get install -y build-essential libsqlite3-dev zlib1g-dev wget python3-dev libsqlite3-mod-spatialite
4 |
5 | # tippecanoe
6 | RUN git clone https://github.com/felt/tippecanoe.git && \
7 | cd tippecanoe && \
8 | make -j && \
9 | make install
10 |
11 | # pmtiles
12 | RUN wget https://github.com/protomaps/go-pmtiles/releases/download/v1.17.0/go-pmtiles_1.17.0_Linux_x86_64.tar.gz && \
13 | tar -xvzf go-pmtiles_1.17.0_Linux_x86_64.tar.gz && mv pmtiles /usr/local/bin/
14 |
15 | # nodejs
16 | RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
17 | apt-get install -y nodejs
18 |
19 | # poetry
20 | ENV POETRY_HOME="/usr/local"
21 | RUN curl -sSL https://install.python-poetry.org | python3 -
22 |
23 | WORKDIR /app
24 |
25 | COPY . /app/
26 |
27 | RUN npm ci
28 | RUN poetry install --no-root
29 |
30 | EXPOSE 8001
31 | EXPOSE 5173
32 |
33 | CMD [ "/bin/bash" ]
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | DB = baltimore.db
2 |
3 | SU = poetry run sqlite-utils
4 |
5 | BBOX = -76.861861,39.096181,-76.360388,39.454149
6 |
7 | # https://maps.protomaps.com/builds/
8 | TODAY = $(shell date +%Y%m%d)
9 | PMTILES_BUILD = https://build.protomaps.com/$(TODAY).pmtiles
10 |
11 | install:
12 | poetry install --no-root
13 | npm ci
14 |
15 | build:
16 | docker build . -t self-hosted-maps:latest
17 |
18 | container:
19 | docker run --rm -it self-hosted-maps:latest
20 |
21 | tiles: public/baltimore.pmtiles public/trees.pmtiles
22 |
23 | trees: $(DB) data/trees.ndjson
24 | poetry run geojson-to-sqlite $(DB) $@ data/trees.ndjson --nl --spatialite --pk ID
25 |
26 | fonts:
27 | wget https://github.com/protomaps/basemaps-assets/archive/refs/heads/main.zip
28 | unzip main.zip
29 | mv basemaps-assets-main/fonts public/fonts
30 | rm -r basemaps-assets-main main.zip
31 |
32 | run:
33 | # https://docs.datasette.io/en/stable/settings.html#configuration-directory-mode
34 | npm run dev -- --open & poetry run datasette serve . --load-extension spatialite -h 0.0.0.0
35 |
36 | ds:
37 | poetry run datasette serve . --load-extension spatialite -h 0.0.0.0
38 |
39 | clean:
40 | rm -rf $(DB) $(DB)-shm $(DB)-wal public/*.pmtiles public/*.mbtiles public/fonts
41 |
42 | data/trees.ndjson:
43 | poetry run ./download.py
44 |
45 | $(DB):
46 | $(SU) create-database $@ --enable-wal --init-spatialite
47 |
48 | public/baltimore.pmtiles:
49 | pmtiles extract $(PMTILES_BUILD) $@ --bbox="$(BBOX)"
50 |
51 | public/trees.pmtiles: data/trees.ndjson
52 | tippecanoe -zg -o $@ --drop-densest-as-needed --layer trees $^
53 |
54 | public/trees.mbtiles: data/trees.ndjson
55 | tippecanoe -zg -o $@ --drop-densest-as-needed --layer trees $^
56 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Self-hosted maps in a codespace
2 |
3 | This repo contains a Dockerfile and dev container configuration that will build the tools necessary for self-hosted maps:
4 |
5 | - `pmtiles` CLI
6 | - `tippecanoe`
7 | - NodeJS
8 | - Python
9 |
10 | The `Makefile` includes build steps for an example project mapping trees in Baltimore. You can see the finished project [on Github](https://github.com/eyeseast/baltimore-trees).
11 |
12 | [Read more about self-hosted maps](https://www.muckrock.com/news/archives/2024/feb/13/release-notes-how-to-make-self-hosted-maps-that-work-everywhere-cost-next-to-nothing-and-might-even-work-in-airplane-mode/).
13 |
14 | ## Setup
15 |
16 | This project will work with or without Docker. The easiest setup uses [Github's codespaces](https://docs.github.com/en/codespaces/overview). Locally, it can use a [development container](https://code.visualstudio.com/docs/devcontainers/containers) to create a consistent environment.
17 |
18 | ### Getting started via Github.com
19 |
20 | 1. Navigate to https://github.com/eyeseast/self-hosted-maps-codespace (you might already be here)
21 | 2. Click **Use this template**, then click **Open in a codespace**
22 |
23 | See [Codespaces Quickstart](https://docs.github.com/en/codespaces/getting-started/quickstart) for more information.
24 |
25 | Inside the codebase, you'll need to install Python and NodeJS dependencies to use Datasette or build the map. Running `make install` will get both.
26 |
27 | ### Working locally, using VSCode and docker
28 |
29 | Assuming you've cloned this repository, open it in VS Code, and you should be prompted to reopen it inside a dev container. This will build a docker image with all dependencies installed.
30 |
31 | For more detailed instructions, see [Developing inside a Container](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container).
32 |
33 | This will work on any system that can run Docker and should give you a consistent development environment regardless of your root operating system.
34 |
35 | ### Working locally on MacOS
36 |
37 | I work on a MacBook, and if you don't mind installing things with Homebrew, you can work without a dev container.
38 |
39 | ```sh
40 | brew install pmtiles
41 | brew install tippecanoe
42 | brew install libspatialite
43 | ```
44 |
45 | (It's possible I'm forgetting something here. I don't recreate my laptop environment from scratch that often. Please open an issue if needed.)
46 |
47 | Building the final map requires NodeJS. I recommend either downloading the [current LTS version](https://nodejs.org/en) or using a version manager like [`nodenv`](https://github.com/nodenv/nodenv).
48 |
49 | To explore the included tree data with [datasette](https://datasette.io/), you'll need a working Python environment. You can follow my [recommended Python setup](https://chrisamico.com/blog/2023-01-14/python-setup/). This repo uses Poetry instead of Pipenv, so install that using `pipx install poetry`.
50 |
51 | Once Python and NodeJS are configured, run `make install` to download dependencies for both environments.
52 |
53 | ## Building the map
54 |
55 | tl;dr
56 |
57 | ```sh
58 | make install
59 | make tiles
60 | make fonts
61 | npm run dev
62 | ```
63 |
64 | We have two sets of tiles: the underlying street map, and the point data for trees. Running `make tiles` will get both. Street tiles are extracted from today's [Protomaps build](https://maps.protomaps.com/builds/). We use [tippecanoe](https://github.com/felt/tippecanoe) to turn tree data into tiles.
65 |
66 | NOTE: if you run into an error with `make tiles`, with a 404 error from build.protomaps.com, you may be one day ahead of the available protomap builds from https://maps.protomaps.com/builds/. To remedy, edit the `TODAY` variable in the `Makefile` to be a valid day that will call an available pmtiles set from https://maps.protomaps.com/builds/.
67 |
68 | ## Exploring tree data with Datasette
69 |
70 | If you want to dig into Baltimore's tree inventory, you can build a SpatiaLite database and explore it with Datasette.
71 |
72 | ```sh
73 | make trees # build the database
74 | make ds # run datasette
75 | ```
76 |
77 | Have fun.
78 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 | Baltimore trees
12 |
13 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/javascript.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | import maplibregl from "maplibre-gl";
2 | import * as pmtiles from "pmtiles";
3 | import layers from "protomaps-themes-base";
4 |
5 | const protocol = new pmtiles.Protocol();
6 |
7 | maplibregl.addProtocol("pmtiles", protocol.tile);
8 |
9 | const style = {
10 | version: 8,
11 | glyphs: "./fonts/{fontstack}/{range}.pbf",
12 | sources: {
13 | protomaps: {
14 | type: "vector",
15 | url: "pmtiles://" + "baltimore.pmtiles",
16 | attribution:
17 | 'Protomaps © OpenStreetMap ',
18 | },
19 |
20 | // load our tree data
21 | trees: {
22 | type: "vector",
23 | url: "pmtiles://" + "trees.pmtiles",
24 | },
25 | },
26 |
27 | // this builds a set of layers matching the OpenMapTiles schema, using "protomaps" as a source ID
28 | layers: layers("protomaps", "light"),
29 | };
30 |
31 | const map = new maplibregl.Map({
32 | container: "map",
33 | style,
34 | maxBounds: [-76.861861, 39.096181, -76.360388, 39.454149],
35 | hash: true,
36 | center: [-76.6055754, 39.2835701],
37 | zoom: 13,
38 | });
39 |
40 | map.once("load", (e) => {
41 | const firstSymbolLayer = map
42 | .getStyle()
43 | .layers.find((layer) => layer.type === "symbol");
44 |
45 | // add our tree layer here
46 | map.addLayer(
47 | {
48 | id: "trees",
49 | type: "circle",
50 | source: "trees",
51 | "source-layer": "trees",
52 | paint: {
53 | "circle-color": "green",
54 | "circle-opacity": 0.5,
55 | "circle-radius": 3,
56 | },
57 | },
58 | firstSymbolLayer.id
59 | );
60 | });
61 |
62 | window.map = map;
63 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "self-hosted-maps",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "self-hosted-maps",
9 | "version": "0.0.0",
10 | "devDependencies": {
11 | "maplibre-gl": "^3.6.2",
12 | "pmtiles": "^2.11.0",
13 | "protomaps-themes-base": "^2.0.0-alpha.4",
14 | "vite": "^5.1.0"
15 | }
16 | },
17 | "node_modules/@esbuild/aix-ppc64": {
18 | "version": "0.19.12",
19 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
20 | "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
21 | "cpu": [
22 | "ppc64"
23 | ],
24 | "dev": true,
25 | "optional": true,
26 | "os": [
27 | "aix"
28 | ],
29 | "engines": {
30 | "node": ">=12"
31 | }
32 | },
33 | "node_modules/@esbuild/android-arm": {
34 | "version": "0.19.12",
35 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
36 | "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
37 | "cpu": [
38 | "arm"
39 | ],
40 | "dev": true,
41 | "optional": true,
42 | "os": [
43 | "android"
44 | ],
45 | "engines": {
46 | "node": ">=12"
47 | }
48 | },
49 | "node_modules/@esbuild/android-arm64": {
50 | "version": "0.19.12",
51 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
52 | "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
53 | "cpu": [
54 | "arm64"
55 | ],
56 | "dev": true,
57 | "optional": true,
58 | "os": [
59 | "android"
60 | ],
61 | "engines": {
62 | "node": ">=12"
63 | }
64 | },
65 | "node_modules/@esbuild/android-x64": {
66 | "version": "0.19.12",
67 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
68 | "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
69 | "cpu": [
70 | "x64"
71 | ],
72 | "dev": true,
73 | "optional": true,
74 | "os": [
75 | "android"
76 | ],
77 | "engines": {
78 | "node": ">=12"
79 | }
80 | },
81 | "node_modules/@esbuild/darwin-arm64": {
82 | "version": "0.19.12",
83 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
84 | "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
85 | "cpu": [
86 | "arm64"
87 | ],
88 | "dev": true,
89 | "optional": true,
90 | "os": [
91 | "darwin"
92 | ],
93 | "engines": {
94 | "node": ">=12"
95 | }
96 | },
97 | "node_modules/@esbuild/darwin-x64": {
98 | "version": "0.19.12",
99 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
100 | "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
101 | "cpu": [
102 | "x64"
103 | ],
104 | "dev": true,
105 | "optional": true,
106 | "os": [
107 | "darwin"
108 | ],
109 | "engines": {
110 | "node": ">=12"
111 | }
112 | },
113 | "node_modules/@esbuild/freebsd-arm64": {
114 | "version": "0.19.12",
115 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
116 | "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
117 | "cpu": [
118 | "arm64"
119 | ],
120 | "dev": true,
121 | "optional": true,
122 | "os": [
123 | "freebsd"
124 | ],
125 | "engines": {
126 | "node": ">=12"
127 | }
128 | },
129 | "node_modules/@esbuild/freebsd-x64": {
130 | "version": "0.19.12",
131 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
132 | "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
133 | "cpu": [
134 | "x64"
135 | ],
136 | "dev": true,
137 | "optional": true,
138 | "os": [
139 | "freebsd"
140 | ],
141 | "engines": {
142 | "node": ">=12"
143 | }
144 | },
145 | "node_modules/@esbuild/linux-arm": {
146 | "version": "0.19.12",
147 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
148 | "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
149 | "cpu": [
150 | "arm"
151 | ],
152 | "dev": true,
153 | "optional": true,
154 | "os": [
155 | "linux"
156 | ],
157 | "engines": {
158 | "node": ">=12"
159 | }
160 | },
161 | "node_modules/@esbuild/linux-arm64": {
162 | "version": "0.19.12",
163 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
164 | "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
165 | "cpu": [
166 | "arm64"
167 | ],
168 | "dev": true,
169 | "optional": true,
170 | "os": [
171 | "linux"
172 | ],
173 | "engines": {
174 | "node": ">=12"
175 | }
176 | },
177 | "node_modules/@esbuild/linux-ia32": {
178 | "version": "0.19.12",
179 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
180 | "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
181 | "cpu": [
182 | "ia32"
183 | ],
184 | "dev": true,
185 | "optional": true,
186 | "os": [
187 | "linux"
188 | ],
189 | "engines": {
190 | "node": ">=12"
191 | }
192 | },
193 | "node_modules/@esbuild/linux-loong64": {
194 | "version": "0.19.12",
195 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
196 | "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
197 | "cpu": [
198 | "loong64"
199 | ],
200 | "dev": true,
201 | "optional": true,
202 | "os": [
203 | "linux"
204 | ],
205 | "engines": {
206 | "node": ">=12"
207 | }
208 | },
209 | "node_modules/@esbuild/linux-mips64el": {
210 | "version": "0.19.12",
211 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
212 | "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
213 | "cpu": [
214 | "mips64el"
215 | ],
216 | "dev": true,
217 | "optional": true,
218 | "os": [
219 | "linux"
220 | ],
221 | "engines": {
222 | "node": ">=12"
223 | }
224 | },
225 | "node_modules/@esbuild/linux-ppc64": {
226 | "version": "0.19.12",
227 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
228 | "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
229 | "cpu": [
230 | "ppc64"
231 | ],
232 | "dev": true,
233 | "optional": true,
234 | "os": [
235 | "linux"
236 | ],
237 | "engines": {
238 | "node": ">=12"
239 | }
240 | },
241 | "node_modules/@esbuild/linux-riscv64": {
242 | "version": "0.19.12",
243 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
244 | "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
245 | "cpu": [
246 | "riscv64"
247 | ],
248 | "dev": true,
249 | "optional": true,
250 | "os": [
251 | "linux"
252 | ],
253 | "engines": {
254 | "node": ">=12"
255 | }
256 | },
257 | "node_modules/@esbuild/linux-s390x": {
258 | "version": "0.19.12",
259 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
260 | "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
261 | "cpu": [
262 | "s390x"
263 | ],
264 | "dev": true,
265 | "optional": true,
266 | "os": [
267 | "linux"
268 | ],
269 | "engines": {
270 | "node": ">=12"
271 | }
272 | },
273 | "node_modules/@esbuild/linux-x64": {
274 | "version": "0.19.12",
275 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
276 | "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
277 | "cpu": [
278 | "x64"
279 | ],
280 | "dev": true,
281 | "optional": true,
282 | "os": [
283 | "linux"
284 | ],
285 | "engines": {
286 | "node": ">=12"
287 | }
288 | },
289 | "node_modules/@esbuild/netbsd-x64": {
290 | "version": "0.19.12",
291 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
292 | "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
293 | "cpu": [
294 | "x64"
295 | ],
296 | "dev": true,
297 | "optional": true,
298 | "os": [
299 | "netbsd"
300 | ],
301 | "engines": {
302 | "node": ">=12"
303 | }
304 | },
305 | "node_modules/@esbuild/openbsd-x64": {
306 | "version": "0.19.12",
307 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
308 | "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
309 | "cpu": [
310 | "x64"
311 | ],
312 | "dev": true,
313 | "optional": true,
314 | "os": [
315 | "openbsd"
316 | ],
317 | "engines": {
318 | "node": ">=12"
319 | }
320 | },
321 | "node_modules/@esbuild/sunos-x64": {
322 | "version": "0.19.12",
323 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
324 | "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
325 | "cpu": [
326 | "x64"
327 | ],
328 | "dev": true,
329 | "optional": true,
330 | "os": [
331 | "sunos"
332 | ],
333 | "engines": {
334 | "node": ">=12"
335 | }
336 | },
337 | "node_modules/@esbuild/win32-arm64": {
338 | "version": "0.19.12",
339 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
340 | "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
341 | "cpu": [
342 | "arm64"
343 | ],
344 | "dev": true,
345 | "optional": true,
346 | "os": [
347 | "win32"
348 | ],
349 | "engines": {
350 | "node": ">=12"
351 | }
352 | },
353 | "node_modules/@esbuild/win32-ia32": {
354 | "version": "0.19.12",
355 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
356 | "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
357 | "cpu": [
358 | "ia32"
359 | ],
360 | "dev": true,
361 | "optional": true,
362 | "os": [
363 | "win32"
364 | ],
365 | "engines": {
366 | "node": ">=12"
367 | }
368 | },
369 | "node_modules/@esbuild/win32-x64": {
370 | "version": "0.19.12",
371 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
372 | "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
373 | "cpu": [
374 | "x64"
375 | ],
376 | "dev": true,
377 | "optional": true,
378 | "os": [
379 | "win32"
380 | ],
381 | "engines": {
382 | "node": ">=12"
383 | }
384 | },
385 | "node_modules/@mapbox/geojson-rewind": {
386 | "version": "0.5.2",
387 | "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz",
388 | "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==",
389 | "dev": true,
390 | "dependencies": {
391 | "get-stream": "^6.0.1",
392 | "minimist": "^1.2.6"
393 | },
394 | "bin": {
395 | "geojson-rewind": "geojson-rewind"
396 | }
397 | },
398 | "node_modules/@mapbox/jsonlint-lines-primitives": {
399 | "version": "2.0.2",
400 | "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
401 | "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==",
402 | "dev": true,
403 | "engines": {
404 | "node": ">= 0.6"
405 | }
406 | },
407 | "node_modules/@mapbox/point-geometry": {
408 | "version": "0.1.0",
409 | "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
410 | "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==",
411 | "dev": true
412 | },
413 | "node_modules/@mapbox/tiny-sdf": {
414 | "version": "2.0.6",
415 | "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz",
416 | "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==",
417 | "dev": true
418 | },
419 | "node_modules/@mapbox/unitbezier": {
420 | "version": "0.0.1",
421 | "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz",
422 | "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==",
423 | "dev": true
424 | },
425 | "node_modules/@mapbox/vector-tile": {
426 | "version": "1.3.1",
427 | "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz",
428 | "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==",
429 | "dev": true,
430 | "dependencies": {
431 | "@mapbox/point-geometry": "~0.1.0"
432 | }
433 | },
434 | "node_modules/@mapbox/whoots-js": {
435 | "version": "3.1.0",
436 | "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz",
437 | "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==",
438 | "dev": true,
439 | "engines": {
440 | "node": ">=6.0.0"
441 | }
442 | },
443 | "node_modules/@maplibre/maplibre-gl-style-spec": {
444 | "version": "19.3.3",
445 | "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.3.3.tgz",
446 | "integrity": "sha512-cOZZOVhDSulgK0meTsTkmNXb1ahVvmTmWmfx9gRBwc6hq98wS9JP35ESIoNq3xqEan+UN+gn8187Z6E4NKhLsw==",
447 | "dev": true,
448 | "dependencies": {
449 | "@mapbox/jsonlint-lines-primitives": "~2.0.2",
450 | "@mapbox/unitbezier": "^0.0.1",
451 | "json-stringify-pretty-compact": "^3.0.0",
452 | "minimist": "^1.2.8",
453 | "rw": "^1.3.3",
454 | "sort-object": "^3.0.3"
455 | },
456 | "bin": {
457 | "gl-style-format": "dist/gl-style-format.mjs",
458 | "gl-style-migrate": "dist/gl-style-migrate.mjs",
459 | "gl-style-validate": "dist/gl-style-validate.mjs"
460 | }
461 | },
462 | "node_modules/@rollup/rollup-android-arm-eabi": {
463 | "version": "4.12.0",
464 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz",
465 | "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==",
466 | "cpu": [
467 | "arm"
468 | ],
469 | "dev": true,
470 | "optional": true,
471 | "os": [
472 | "android"
473 | ]
474 | },
475 | "node_modules/@rollup/rollup-android-arm64": {
476 | "version": "4.12.0",
477 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz",
478 | "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==",
479 | "cpu": [
480 | "arm64"
481 | ],
482 | "dev": true,
483 | "optional": true,
484 | "os": [
485 | "android"
486 | ]
487 | },
488 | "node_modules/@rollup/rollup-darwin-arm64": {
489 | "version": "4.12.0",
490 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz",
491 | "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==",
492 | "cpu": [
493 | "arm64"
494 | ],
495 | "dev": true,
496 | "optional": true,
497 | "os": [
498 | "darwin"
499 | ]
500 | },
501 | "node_modules/@rollup/rollup-darwin-x64": {
502 | "version": "4.12.0",
503 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz",
504 | "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==",
505 | "cpu": [
506 | "x64"
507 | ],
508 | "dev": true,
509 | "optional": true,
510 | "os": [
511 | "darwin"
512 | ]
513 | },
514 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
515 | "version": "4.12.0",
516 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz",
517 | "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==",
518 | "cpu": [
519 | "arm"
520 | ],
521 | "dev": true,
522 | "optional": true,
523 | "os": [
524 | "linux"
525 | ]
526 | },
527 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
528 | "version": "4.12.0",
529 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz",
530 | "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==",
531 | "cpu": [
532 | "arm64"
533 | ],
534 | "dev": true,
535 | "optional": true,
536 | "os": [
537 | "linux"
538 | ]
539 | },
540 | "node_modules/@rollup/rollup-linux-arm64-musl": {
541 | "version": "4.12.0",
542 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz",
543 | "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==",
544 | "cpu": [
545 | "arm64"
546 | ],
547 | "dev": true,
548 | "optional": true,
549 | "os": [
550 | "linux"
551 | ]
552 | },
553 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
554 | "version": "4.12.0",
555 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz",
556 | "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==",
557 | "cpu": [
558 | "riscv64"
559 | ],
560 | "dev": true,
561 | "optional": true,
562 | "os": [
563 | "linux"
564 | ]
565 | },
566 | "node_modules/@rollup/rollup-linux-x64-gnu": {
567 | "version": "4.12.0",
568 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz",
569 | "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==",
570 | "cpu": [
571 | "x64"
572 | ],
573 | "dev": true,
574 | "optional": true,
575 | "os": [
576 | "linux"
577 | ]
578 | },
579 | "node_modules/@rollup/rollup-linux-x64-musl": {
580 | "version": "4.12.0",
581 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz",
582 | "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==",
583 | "cpu": [
584 | "x64"
585 | ],
586 | "dev": true,
587 | "optional": true,
588 | "os": [
589 | "linux"
590 | ]
591 | },
592 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
593 | "version": "4.12.0",
594 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz",
595 | "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==",
596 | "cpu": [
597 | "arm64"
598 | ],
599 | "dev": true,
600 | "optional": true,
601 | "os": [
602 | "win32"
603 | ]
604 | },
605 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
606 | "version": "4.12.0",
607 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz",
608 | "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==",
609 | "cpu": [
610 | "ia32"
611 | ],
612 | "dev": true,
613 | "optional": true,
614 | "os": [
615 | "win32"
616 | ]
617 | },
618 | "node_modules/@rollup/rollup-win32-x64-msvc": {
619 | "version": "4.12.0",
620 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz",
621 | "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==",
622 | "cpu": [
623 | "x64"
624 | ],
625 | "dev": true,
626 | "optional": true,
627 | "os": [
628 | "win32"
629 | ]
630 | },
631 | "node_modules/@types/estree": {
632 | "version": "1.0.5",
633 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
634 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
635 | "dev": true
636 | },
637 | "node_modules/@types/geojson": {
638 | "version": "7946.0.14",
639 | "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
640 | "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==",
641 | "dev": true
642 | },
643 | "node_modules/@types/mapbox__point-geometry": {
644 | "version": "0.1.4",
645 | "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz",
646 | "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==",
647 | "dev": true
648 | },
649 | "node_modules/@types/mapbox__vector-tile": {
650 | "version": "1.3.4",
651 | "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz",
652 | "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==",
653 | "dev": true,
654 | "dependencies": {
655 | "@types/geojson": "*",
656 | "@types/mapbox__point-geometry": "*",
657 | "@types/pbf": "*"
658 | }
659 | },
660 | "node_modules/@types/pbf": {
661 | "version": "3.0.5",
662 | "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz",
663 | "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==",
664 | "dev": true
665 | },
666 | "node_modules/@types/supercluster": {
667 | "version": "7.1.3",
668 | "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz",
669 | "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==",
670 | "dev": true,
671 | "dependencies": {
672 | "@types/geojson": "*"
673 | }
674 | },
675 | "node_modules/arr-union": {
676 | "version": "3.1.0",
677 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
678 | "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
679 | "dev": true,
680 | "engines": {
681 | "node": ">=0.10.0"
682 | }
683 | },
684 | "node_modules/assign-symbols": {
685 | "version": "1.0.0",
686 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
687 | "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
688 | "dev": true,
689 | "engines": {
690 | "node": ">=0.10.0"
691 | }
692 | },
693 | "node_modules/bytewise": {
694 | "version": "1.1.0",
695 | "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz",
696 | "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==",
697 | "dev": true,
698 | "dependencies": {
699 | "bytewise-core": "^1.2.2",
700 | "typewise": "^1.0.3"
701 | }
702 | },
703 | "node_modules/bytewise-core": {
704 | "version": "1.2.3",
705 | "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz",
706 | "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==",
707 | "dev": true,
708 | "dependencies": {
709 | "typewise-core": "^1.2"
710 | }
711 | },
712 | "node_modules/earcut": {
713 | "version": "2.2.4",
714 | "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
715 | "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==",
716 | "dev": true
717 | },
718 | "node_modules/esbuild": {
719 | "version": "0.19.12",
720 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
721 | "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
722 | "dev": true,
723 | "hasInstallScript": true,
724 | "bin": {
725 | "esbuild": "bin/esbuild"
726 | },
727 | "engines": {
728 | "node": ">=12"
729 | },
730 | "optionalDependencies": {
731 | "@esbuild/aix-ppc64": "0.19.12",
732 | "@esbuild/android-arm": "0.19.12",
733 | "@esbuild/android-arm64": "0.19.12",
734 | "@esbuild/android-x64": "0.19.12",
735 | "@esbuild/darwin-arm64": "0.19.12",
736 | "@esbuild/darwin-x64": "0.19.12",
737 | "@esbuild/freebsd-arm64": "0.19.12",
738 | "@esbuild/freebsd-x64": "0.19.12",
739 | "@esbuild/linux-arm": "0.19.12",
740 | "@esbuild/linux-arm64": "0.19.12",
741 | "@esbuild/linux-ia32": "0.19.12",
742 | "@esbuild/linux-loong64": "0.19.12",
743 | "@esbuild/linux-mips64el": "0.19.12",
744 | "@esbuild/linux-ppc64": "0.19.12",
745 | "@esbuild/linux-riscv64": "0.19.12",
746 | "@esbuild/linux-s390x": "0.19.12",
747 | "@esbuild/linux-x64": "0.19.12",
748 | "@esbuild/netbsd-x64": "0.19.12",
749 | "@esbuild/openbsd-x64": "0.19.12",
750 | "@esbuild/sunos-x64": "0.19.12",
751 | "@esbuild/win32-arm64": "0.19.12",
752 | "@esbuild/win32-ia32": "0.19.12",
753 | "@esbuild/win32-x64": "0.19.12"
754 | }
755 | },
756 | "node_modules/extend-shallow": {
757 | "version": "2.0.1",
758 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
759 | "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
760 | "dev": true,
761 | "dependencies": {
762 | "is-extendable": "^0.1.0"
763 | },
764 | "engines": {
765 | "node": ">=0.10.0"
766 | }
767 | },
768 | "node_modules/fflate": {
769 | "version": "0.8.2",
770 | "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
771 | "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
772 | "dev": true
773 | },
774 | "node_modules/fsevents": {
775 | "version": "2.3.3",
776 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
777 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
778 | "dev": true,
779 | "hasInstallScript": true,
780 | "optional": true,
781 | "os": [
782 | "darwin"
783 | ],
784 | "engines": {
785 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
786 | }
787 | },
788 | "node_modules/geojson-vt": {
789 | "version": "3.2.1",
790 | "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz",
791 | "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==",
792 | "dev": true
793 | },
794 | "node_modules/get-stream": {
795 | "version": "6.0.1",
796 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
797 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
798 | "dev": true,
799 | "engines": {
800 | "node": ">=10"
801 | },
802 | "funding": {
803 | "url": "https://github.com/sponsors/sindresorhus"
804 | }
805 | },
806 | "node_modules/get-value": {
807 | "version": "2.0.6",
808 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
809 | "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
810 | "dev": true,
811 | "engines": {
812 | "node": ">=0.10.0"
813 | }
814 | },
815 | "node_modules/gl-matrix": {
816 | "version": "3.4.3",
817 | "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz",
818 | "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==",
819 | "dev": true
820 | },
821 | "node_modules/global-prefix": {
822 | "version": "3.0.0",
823 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
824 | "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
825 | "dev": true,
826 | "dependencies": {
827 | "ini": "^1.3.5",
828 | "kind-of": "^6.0.2",
829 | "which": "^1.3.1"
830 | },
831 | "engines": {
832 | "node": ">=6"
833 | }
834 | },
835 | "node_modules/ieee754": {
836 | "version": "1.2.1",
837 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
838 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
839 | "dev": true,
840 | "funding": [
841 | {
842 | "type": "github",
843 | "url": "https://github.com/sponsors/feross"
844 | },
845 | {
846 | "type": "patreon",
847 | "url": "https://www.patreon.com/feross"
848 | },
849 | {
850 | "type": "consulting",
851 | "url": "https://feross.org/support"
852 | }
853 | ]
854 | },
855 | "node_modules/ini": {
856 | "version": "1.3.8",
857 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
858 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
859 | "dev": true
860 | },
861 | "node_modules/is-extendable": {
862 | "version": "0.1.1",
863 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
864 | "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
865 | "dev": true,
866 | "engines": {
867 | "node": ">=0.10.0"
868 | }
869 | },
870 | "node_modules/is-plain-object": {
871 | "version": "2.0.4",
872 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
873 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
874 | "dev": true,
875 | "dependencies": {
876 | "isobject": "^3.0.1"
877 | },
878 | "engines": {
879 | "node": ">=0.10.0"
880 | }
881 | },
882 | "node_modules/isexe": {
883 | "version": "2.0.0",
884 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
885 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
886 | "dev": true
887 | },
888 | "node_modules/isobject": {
889 | "version": "3.0.1",
890 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
891 | "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
892 | "dev": true,
893 | "engines": {
894 | "node": ">=0.10.0"
895 | }
896 | },
897 | "node_modules/json-stringify-pretty-compact": {
898 | "version": "3.0.0",
899 | "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz",
900 | "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==",
901 | "dev": true
902 | },
903 | "node_modules/kdbush": {
904 | "version": "4.0.2",
905 | "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz",
906 | "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==",
907 | "dev": true
908 | },
909 | "node_modules/kind-of": {
910 | "version": "6.0.3",
911 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
912 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
913 | "dev": true,
914 | "engines": {
915 | "node": ">=0.10.0"
916 | }
917 | },
918 | "node_modules/maplibre-gl": {
919 | "version": "3.6.2",
920 | "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-3.6.2.tgz",
921 | "integrity": "sha512-krg2KFIdOpLPngONDhP6ixCoWl5kbdMINP0moMSJFVX7wX1Clm2M9hlNKXS8vBGlVWwR5R3ZfI6IPrYz7c+aCQ==",
922 | "dev": true,
923 | "dependencies": {
924 | "@mapbox/geojson-rewind": "^0.5.2",
925 | "@mapbox/jsonlint-lines-primitives": "^2.0.2",
926 | "@mapbox/point-geometry": "^0.1.0",
927 | "@mapbox/tiny-sdf": "^2.0.6",
928 | "@mapbox/unitbezier": "^0.0.1",
929 | "@mapbox/vector-tile": "^1.3.1",
930 | "@mapbox/whoots-js": "^3.1.0",
931 | "@maplibre/maplibre-gl-style-spec": "^19.3.3",
932 | "@types/geojson": "^7946.0.13",
933 | "@types/mapbox__point-geometry": "^0.1.4",
934 | "@types/mapbox__vector-tile": "^1.3.4",
935 | "@types/pbf": "^3.0.5",
936 | "@types/supercluster": "^7.1.3",
937 | "earcut": "^2.2.4",
938 | "geojson-vt": "^3.2.1",
939 | "gl-matrix": "^3.4.3",
940 | "global-prefix": "^3.0.0",
941 | "kdbush": "^4.0.2",
942 | "murmurhash-js": "^1.0.0",
943 | "pbf": "^3.2.1",
944 | "potpack": "^2.0.0",
945 | "quickselect": "^2.0.0",
946 | "supercluster": "^8.0.1",
947 | "tinyqueue": "^2.0.3",
948 | "vt-pbf": "^3.1.3"
949 | },
950 | "engines": {
951 | "node": ">=16.14.0",
952 | "npm": ">=8.1.0"
953 | },
954 | "funding": {
955 | "url": "https://github.com/maplibre/maplibre-gl-js?sponsor=1"
956 | }
957 | },
958 | "node_modules/minimist": {
959 | "version": "1.2.8",
960 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
961 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
962 | "dev": true,
963 | "funding": {
964 | "url": "https://github.com/sponsors/ljharb"
965 | }
966 | },
967 | "node_modules/murmurhash-js": {
968 | "version": "1.0.0",
969 | "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
970 | "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==",
971 | "dev": true
972 | },
973 | "node_modules/nanoid": {
974 | "version": "3.3.7",
975 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
976 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
977 | "dev": true,
978 | "funding": [
979 | {
980 | "type": "github",
981 | "url": "https://github.com/sponsors/ai"
982 | }
983 | ],
984 | "bin": {
985 | "nanoid": "bin/nanoid.cjs"
986 | },
987 | "engines": {
988 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
989 | }
990 | },
991 | "node_modules/pbf": {
992 | "version": "3.2.1",
993 | "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz",
994 | "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
995 | "dev": true,
996 | "dependencies": {
997 | "ieee754": "^1.1.12",
998 | "resolve-protobuf-schema": "^2.1.0"
999 | },
1000 | "bin": {
1001 | "pbf": "bin/pbf"
1002 | }
1003 | },
1004 | "node_modules/picocolors": {
1005 | "version": "1.0.0",
1006 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1007 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1008 | "dev": true
1009 | },
1010 | "node_modules/pmtiles": {
1011 | "version": "2.11.0",
1012 | "resolved": "https://registry.npmjs.org/pmtiles/-/pmtiles-2.11.0.tgz",
1013 | "integrity": "sha512-dU9SzzaqmCGpdEuTnIba6bDHT6j09ZJFIXxwGpvkiEnce3ZnBB1VKt6+EOmJGueriweaZLAMTUmKVElU2CBe0g==",
1014 | "dev": true,
1015 | "dependencies": {
1016 | "fflate": "^0.8.0"
1017 | }
1018 | },
1019 | "node_modules/postcss": {
1020 | "version": "8.4.35",
1021 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
1022 | "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
1023 | "dev": true,
1024 | "funding": [
1025 | {
1026 | "type": "opencollective",
1027 | "url": "https://opencollective.com/postcss/"
1028 | },
1029 | {
1030 | "type": "tidelift",
1031 | "url": "https://tidelift.com/funding/github/npm/postcss"
1032 | },
1033 | {
1034 | "type": "github",
1035 | "url": "https://github.com/sponsors/ai"
1036 | }
1037 | ],
1038 | "dependencies": {
1039 | "nanoid": "^3.3.7",
1040 | "picocolors": "^1.0.0",
1041 | "source-map-js": "^1.0.2"
1042 | },
1043 | "engines": {
1044 | "node": "^10 || ^12 || >=14"
1045 | }
1046 | },
1047 | "node_modules/potpack": {
1048 | "version": "2.0.0",
1049 | "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz",
1050 | "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==",
1051 | "dev": true
1052 | },
1053 | "node_modules/protocol-buffers-schema": {
1054 | "version": "3.6.0",
1055 | "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
1056 | "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==",
1057 | "dev": true
1058 | },
1059 | "node_modules/protomaps-themes-base": {
1060 | "version": "2.0.0-alpha.5",
1061 | "resolved": "https://registry.npmjs.org/protomaps-themes-base/-/protomaps-themes-base-2.0.0-alpha.5.tgz",
1062 | "integrity": "sha512-IQ63JgClmJY89jyk+5qodvoTlpaAshmy8iJIze1UapPCo4Q+gEuErLrIqgsRWN1aXyL7pNm9CrhkKaNEUmWXBg==",
1063 | "dev": true
1064 | },
1065 | "node_modules/quickselect": {
1066 | "version": "2.0.0",
1067 | "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
1068 | "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==",
1069 | "dev": true
1070 | },
1071 | "node_modules/resolve-protobuf-schema": {
1072 | "version": "2.1.0",
1073 | "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
1074 | "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
1075 | "dev": true,
1076 | "dependencies": {
1077 | "protocol-buffers-schema": "^3.3.1"
1078 | }
1079 | },
1080 | "node_modules/rollup": {
1081 | "version": "4.12.0",
1082 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz",
1083 | "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==",
1084 | "dev": true,
1085 | "dependencies": {
1086 | "@types/estree": "1.0.5"
1087 | },
1088 | "bin": {
1089 | "rollup": "dist/bin/rollup"
1090 | },
1091 | "engines": {
1092 | "node": ">=18.0.0",
1093 | "npm": ">=8.0.0"
1094 | },
1095 | "optionalDependencies": {
1096 | "@rollup/rollup-android-arm-eabi": "4.12.0",
1097 | "@rollup/rollup-android-arm64": "4.12.0",
1098 | "@rollup/rollup-darwin-arm64": "4.12.0",
1099 | "@rollup/rollup-darwin-x64": "4.12.0",
1100 | "@rollup/rollup-linux-arm-gnueabihf": "4.12.0",
1101 | "@rollup/rollup-linux-arm64-gnu": "4.12.0",
1102 | "@rollup/rollup-linux-arm64-musl": "4.12.0",
1103 | "@rollup/rollup-linux-riscv64-gnu": "4.12.0",
1104 | "@rollup/rollup-linux-x64-gnu": "4.12.0",
1105 | "@rollup/rollup-linux-x64-musl": "4.12.0",
1106 | "@rollup/rollup-win32-arm64-msvc": "4.12.0",
1107 | "@rollup/rollup-win32-ia32-msvc": "4.12.0",
1108 | "@rollup/rollup-win32-x64-msvc": "4.12.0",
1109 | "fsevents": "~2.3.2"
1110 | }
1111 | },
1112 | "node_modules/rw": {
1113 | "version": "1.3.3",
1114 | "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
1115 | "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
1116 | "dev": true
1117 | },
1118 | "node_modules/set-value": {
1119 | "version": "2.0.1",
1120 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
1121 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
1122 | "dev": true,
1123 | "dependencies": {
1124 | "extend-shallow": "^2.0.1",
1125 | "is-extendable": "^0.1.1",
1126 | "is-plain-object": "^2.0.3",
1127 | "split-string": "^3.0.1"
1128 | },
1129 | "engines": {
1130 | "node": ">=0.10.0"
1131 | }
1132 | },
1133 | "node_modules/sort-asc": {
1134 | "version": "0.2.0",
1135 | "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz",
1136 | "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==",
1137 | "dev": true,
1138 | "engines": {
1139 | "node": ">=0.10.0"
1140 | }
1141 | },
1142 | "node_modules/sort-desc": {
1143 | "version": "0.2.0",
1144 | "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz",
1145 | "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==",
1146 | "dev": true,
1147 | "engines": {
1148 | "node": ">=0.10.0"
1149 | }
1150 | },
1151 | "node_modules/sort-object": {
1152 | "version": "3.0.3",
1153 | "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz",
1154 | "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==",
1155 | "dev": true,
1156 | "dependencies": {
1157 | "bytewise": "^1.1.0",
1158 | "get-value": "^2.0.2",
1159 | "is-extendable": "^0.1.1",
1160 | "sort-asc": "^0.2.0",
1161 | "sort-desc": "^0.2.0",
1162 | "union-value": "^1.0.1"
1163 | },
1164 | "engines": {
1165 | "node": ">=0.10.0"
1166 | }
1167 | },
1168 | "node_modules/source-map-js": {
1169 | "version": "1.0.2",
1170 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1171 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1172 | "dev": true,
1173 | "engines": {
1174 | "node": ">=0.10.0"
1175 | }
1176 | },
1177 | "node_modules/split-string": {
1178 | "version": "3.1.0",
1179 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
1180 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
1181 | "dev": true,
1182 | "dependencies": {
1183 | "extend-shallow": "^3.0.0"
1184 | },
1185 | "engines": {
1186 | "node": ">=0.10.0"
1187 | }
1188 | },
1189 | "node_modules/split-string/node_modules/extend-shallow": {
1190 | "version": "3.0.2",
1191 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
1192 | "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
1193 | "dev": true,
1194 | "dependencies": {
1195 | "assign-symbols": "^1.0.0",
1196 | "is-extendable": "^1.0.1"
1197 | },
1198 | "engines": {
1199 | "node": ">=0.10.0"
1200 | }
1201 | },
1202 | "node_modules/split-string/node_modules/is-extendable": {
1203 | "version": "1.0.1",
1204 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1205 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1206 | "dev": true,
1207 | "dependencies": {
1208 | "is-plain-object": "^2.0.4"
1209 | },
1210 | "engines": {
1211 | "node": ">=0.10.0"
1212 | }
1213 | },
1214 | "node_modules/supercluster": {
1215 | "version": "8.0.1",
1216 | "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz",
1217 | "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==",
1218 | "dev": true,
1219 | "dependencies": {
1220 | "kdbush": "^4.0.2"
1221 | }
1222 | },
1223 | "node_modules/tinyqueue": {
1224 | "version": "2.0.3",
1225 | "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz",
1226 | "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==",
1227 | "dev": true
1228 | },
1229 | "node_modules/typewise": {
1230 | "version": "1.0.3",
1231 | "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz",
1232 | "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==",
1233 | "dev": true,
1234 | "dependencies": {
1235 | "typewise-core": "^1.2.0"
1236 | }
1237 | },
1238 | "node_modules/typewise-core": {
1239 | "version": "1.2.0",
1240 | "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz",
1241 | "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==",
1242 | "dev": true
1243 | },
1244 | "node_modules/union-value": {
1245 | "version": "1.0.1",
1246 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
1247 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
1248 | "dev": true,
1249 | "dependencies": {
1250 | "arr-union": "^3.1.0",
1251 | "get-value": "^2.0.6",
1252 | "is-extendable": "^0.1.1",
1253 | "set-value": "^2.0.1"
1254 | },
1255 | "engines": {
1256 | "node": ">=0.10.0"
1257 | }
1258 | },
1259 | "node_modules/vite": {
1260 | "version": "5.1.4",
1261 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz",
1262 | "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==",
1263 | "dev": true,
1264 | "dependencies": {
1265 | "esbuild": "^0.19.3",
1266 | "postcss": "^8.4.35",
1267 | "rollup": "^4.2.0"
1268 | },
1269 | "bin": {
1270 | "vite": "bin/vite.js"
1271 | },
1272 | "engines": {
1273 | "node": "^18.0.0 || >=20.0.0"
1274 | },
1275 | "funding": {
1276 | "url": "https://github.com/vitejs/vite?sponsor=1"
1277 | },
1278 | "optionalDependencies": {
1279 | "fsevents": "~2.3.3"
1280 | },
1281 | "peerDependencies": {
1282 | "@types/node": "^18.0.0 || >=20.0.0",
1283 | "less": "*",
1284 | "lightningcss": "^1.21.0",
1285 | "sass": "*",
1286 | "stylus": "*",
1287 | "sugarss": "*",
1288 | "terser": "^5.4.0"
1289 | },
1290 | "peerDependenciesMeta": {
1291 | "@types/node": {
1292 | "optional": true
1293 | },
1294 | "less": {
1295 | "optional": true
1296 | },
1297 | "lightningcss": {
1298 | "optional": true
1299 | },
1300 | "sass": {
1301 | "optional": true
1302 | },
1303 | "stylus": {
1304 | "optional": true
1305 | },
1306 | "sugarss": {
1307 | "optional": true
1308 | },
1309 | "terser": {
1310 | "optional": true
1311 | }
1312 | }
1313 | },
1314 | "node_modules/vt-pbf": {
1315 | "version": "3.1.3",
1316 | "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz",
1317 | "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==",
1318 | "dev": true,
1319 | "dependencies": {
1320 | "@mapbox/point-geometry": "0.1.0",
1321 | "@mapbox/vector-tile": "^1.3.1",
1322 | "pbf": "^3.2.1"
1323 | }
1324 | },
1325 | "node_modules/which": {
1326 | "version": "1.3.1",
1327 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1328 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1329 | "dev": true,
1330 | "dependencies": {
1331 | "isexe": "^2.0.0"
1332 | },
1333 | "bin": {
1334 | "which": "bin/which"
1335 | }
1336 | }
1337 | }
1338 | }
1339 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "self-hosted-maps",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite --host",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "devDependencies": {
12 | "maplibre-gl": "^3.6.2",
13 | "pmtiles": "^2.11.0",
14 | "protomaps-themes-base": "^2.0.0-alpha.4",
15 | "vite": "^5.1.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/poetry.lock:
--------------------------------------------------------------------------------
1 | # This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
2 |
3 | [[package]]
4 | name = "aiofiles"
5 | version = "23.2.1"
6 | description = "File support for asyncio."
7 | optional = false
8 | python-versions = ">=3.7"
9 | files = [
10 | {file = "aiofiles-23.2.1-py3-none-any.whl", hash = "sha256:19297512c647d4b27a2cf7c34caa7e405c0d60b5560618a29a9fe027b18b0107"},
11 | {file = "aiofiles-23.2.1.tar.gz", hash = "sha256:84ec2218d8419404abcb9f0c02df3f34c6e0a68ed41072acfb1cef5cbc29051a"},
12 | ]
13 |
14 | [[package]]
15 | name = "anyio"
16 | version = "4.3.0"
17 | description = "High level compatibility layer for multiple asynchronous event loop implementations"
18 | optional = false
19 | python-versions = ">=3.8"
20 | files = [
21 | {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"},
22 | {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"},
23 | ]
24 |
25 | [package.dependencies]
26 | exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
27 | idna = ">=2.8"
28 | sniffio = ">=1.1"
29 | typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""}
30 |
31 | [package.extras]
32 | doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
33 | test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
34 | trio = ["trio (>=0.23)"]
35 |
36 | [[package]]
37 | name = "asgi-csrf"
38 | version = "0.9"
39 | description = "ASGI middleware for protecting against CSRF attacks"
40 | optional = false
41 | python-versions = "*"
42 | files = [
43 | {file = "asgi-csrf-0.9.tar.gz", hash = "sha256:6e9d3bddaeac1a8fd33b188fe2abc8271f9085ab7be6e1a7f4d3c9df5d7f741a"},
44 | {file = "asgi_csrf-0.9-py3-none-any.whl", hash = "sha256:e974cffb8a4ab84a28a0088acbf7a4ecc5be4a64f08dcbe19c60dea103da01c0"},
45 | ]
46 |
47 | [package.dependencies]
48 | itsdangerous = "*"
49 | python-multipart = "*"
50 |
51 | [package.extras]
52 | test = ["asgi-lifespan", "httpx (>=0.16)", "pytest", "pytest-asyncio", "pytest-cov", "starlette"]
53 |
54 | [[package]]
55 | name = "asgiref"
56 | version = "3.7.2"
57 | description = "ASGI specs, helper code, and adapters"
58 | optional = false
59 | python-versions = ">=3.7"
60 | files = [
61 | {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"},
62 | {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"},
63 | ]
64 |
65 | [package.dependencies]
66 | typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""}
67 |
68 | [package.extras]
69 | tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
70 |
71 | [[package]]
72 | name = "asttokens"
73 | version = "2.4.1"
74 | description = "Annotate AST trees with source code positions"
75 | optional = false
76 | python-versions = "*"
77 | files = [
78 | {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
79 | {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
80 | ]
81 |
82 | [package.dependencies]
83 | six = ">=1.12.0"
84 |
85 | [package.extras]
86 | astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
87 | test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
88 |
89 | [[package]]
90 | name = "certifi"
91 | version = "2024.2.2"
92 | description = "Python package for providing Mozilla's CA Bundle."
93 | optional = false
94 | python-versions = ">=3.6"
95 | files = [
96 | {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
97 | {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
98 | ]
99 |
100 | [[package]]
101 | name = "click"
102 | version = "8.1.7"
103 | description = "Composable command line interface toolkit"
104 | optional = false
105 | python-versions = ">=3.7"
106 | files = [
107 | {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
108 | {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
109 | ]
110 |
111 | [package.dependencies]
112 | colorama = {version = "*", markers = "platform_system == \"Windows\""}
113 |
114 | [[package]]
115 | name = "click-default-group"
116 | version = "1.2.4"
117 | description = "click_default_group"
118 | optional = false
119 | python-versions = ">=2.7"
120 | files = [
121 | {file = "click_default_group-1.2.4-py2.py3-none-any.whl", hash = "sha256:9b60486923720e7fc61731bdb32b617039aba820e22e1c88766b1125592eaa5f"},
122 | {file = "click_default_group-1.2.4.tar.gz", hash = "sha256:eb3f3c99ec0d456ca6cd2a7f08f7d4e91771bef51b01bdd9580cc6450fe1251e"},
123 | ]
124 |
125 | [package.dependencies]
126 | click = "*"
127 |
128 | [package.extras]
129 | test = ["pytest"]
130 |
131 | [[package]]
132 | name = "colorama"
133 | version = "0.4.6"
134 | description = "Cross-platform colored terminal text."
135 | optional = false
136 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
137 | files = [
138 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
139 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
140 | ]
141 |
142 | [[package]]
143 | name = "datasette"
144 | version = "0.64.6"
145 | description = "An open source multi-tool for exploring and publishing data"
146 | optional = false
147 | python-versions = ">=3.7"
148 | files = [
149 | {file = "datasette-0.64.6-py3-none-any.whl", hash = "sha256:158dbdfab1a4c613da7757518444a7664ecd39f54a617304edff4f119dd057df"},
150 | {file = "datasette-0.64.6.tar.gz", hash = "sha256:85ca3aabca64fd9560052042aec27d3b32a1f85303853da3550434866d0fa539"},
151 | ]
152 |
153 | [package.dependencies]
154 | aiofiles = ">=0.4"
155 | asgi-csrf = ">=0.9"
156 | asgiref = ">=3.2.10"
157 | click = ">=7.1.1"
158 | click-default-group = ">=1.2.3"
159 | httpx = ">=0.20"
160 | hupper = ">=1.9"
161 | itsdangerous = ">=1.1"
162 | janus = ">=0.6.2"
163 | Jinja2 = ">=2.10.3"
164 | mergedeep = ">=1.1.1"
165 | pint = ">=0.9"
166 | pip = "*"
167 | pluggy = ">=1.0"
168 | PyYAML = ">=5.3"
169 | setuptools = "*"
170 | uvicorn = ">=0.11"
171 |
172 | [package.extras]
173 | docs = ["blacken-docs", "codespell", "furo (==2022.9.29)", "sphinx-autobuild", "sphinx-copybutton"]
174 | rich = ["rich"]
175 | test = ["beautifulsoup4 (>=4.8.1)", "black (==22.10.0)", "blacken-docs (==1.12.1)", "cogapp (>=3.3.0)", "pytest (>=5.2.2)", "pytest-asyncio (>=0.17)", "pytest-timeout (>=1.4.2)", "pytest-xdist (>=2.2.1)", "trustme (>=0.7)"]
176 |
177 | [[package]]
178 | name = "datasette-geojson"
179 | version = "0.4.0"
180 | description = "Add GeoJSON as an output option"
181 | optional = false
182 | python-versions = ">=3.7"
183 | files = [
184 | {file = "datasette-geojson-0.4.0.tar.gz", hash = "sha256:ecf7ca75b084b57d0a8007cfb9965cdae53fbb29fe8f0a41feffff941a23da8a"},
185 | {file = "datasette_geojson-0.4.0-py3-none-any.whl", hash = "sha256:6de231185b40d1ea07775f0e09d15ac2d9879685b8b683a84442a96371b971f4"},
186 | ]
187 |
188 | [package.dependencies]
189 | datasette = "*"
190 | geojson = "*"
191 |
192 | [package.extras]
193 | test = ["geojson-to-sqlite", "pytest", "pytest-asyncio"]
194 |
195 | [[package]]
196 | name = "datasette-geojson-map"
197 | version = "0.4.0"
198 | description = "Render a map for any query with a geometry column"
199 | optional = false
200 | python-versions = ">=3.6"
201 | files = [
202 | {file = "datasette-geojson-map-0.4.0.tar.gz", hash = "sha256:858701f2bbd60363052b3683d2bbfe73b05ed575c51d3bee3e57690089cb663c"},
203 | {file = "datasette_geojson_map-0.4.0-py3-none-any.whl", hash = "sha256:4035a5ae8e5d8caaad31c2ad68e388bbb14b34e3aa94e556fd34491a599c2c40"},
204 | ]
205 |
206 | [package.dependencies]
207 | datasette = "*"
208 | datasette-geojson = "*"
209 | datasette-leaflet = "*"
210 |
211 | [package.extras]
212 | test = ["geojson-to-sqlite", "pytest", "pytest-asyncio"]
213 |
214 | [[package]]
215 | name = "datasette-leaflet"
216 | version = "0.2.2"
217 | description = "A plugin that bundles Leaflet.js for Datasette"
218 | optional = false
219 | python-versions = ">=3.6"
220 | files = [
221 | {file = "datasette-leaflet-0.2.2.tar.gz", hash = "sha256:8fd4e634304be392ae6f7de770d4f22b95a37caecd676a35faeb6200da9423bc"},
222 | {file = "datasette_leaflet-0.2.2-py3-none-any.whl", hash = "sha256:fd88c25666e7680b25b4c6e5546bd02c9f5836bbc0fee61042dbb6b93d4139f0"},
223 | ]
224 |
225 | [package.dependencies]
226 | datasette = "*"
227 |
228 | [package.extras]
229 | test = ["pytest", "pytest-asyncio"]
230 |
231 | [[package]]
232 | name = "decorator"
233 | version = "5.1.1"
234 | description = "Decorators for Humans"
235 | optional = false
236 | python-versions = ">=3.5"
237 | files = [
238 | {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
239 | {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
240 | ]
241 |
242 | [[package]]
243 | name = "exceptiongroup"
244 | version = "1.2.0"
245 | description = "Backport of PEP 654 (exception groups)"
246 | optional = false
247 | python-versions = ">=3.7"
248 | files = [
249 | {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
250 | {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
251 | ]
252 |
253 | [package.extras]
254 | test = ["pytest (>=6)"]
255 |
256 | [[package]]
257 | name = "executing"
258 | version = "2.0.1"
259 | description = "Get the currently executing AST node of a frame, and other information"
260 | optional = false
261 | python-versions = ">=3.5"
262 | files = [
263 | {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
264 | {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
265 | ]
266 |
267 | [package.extras]
268 | tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
269 |
270 | [[package]]
271 | name = "geojson"
272 | version = "3.1.0"
273 | description = "Python bindings and utilities for GeoJSON"
274 | optional = false
275 | python-versions = ">=3.7"
276 | files = [
277 | {file = "geojson-3.1.0-py3-none-any.whl", hash = "sha256:68a9771827237adb8c0c71f8527509c8f5bef61733aa434cefc9c9d4f0ebe8f3"},
278 | {file = "geojson-3.1.0.tar.gz", hash = "sha256:58a7fa40727ea058efc28b0e9ff0099eadf6d0965e04690830208d3ef571adac"},
279 | ]
280 |
281 | [[package]]
282 | name = "geojson-to-sqlite"
283 | version = "1.1.1"
284 | description = "CLI tool for converting GeoJSON to SQLite (optionally with SpatiaLite)"
285 | optional = false
286 | python-versions = "*"
287 | files = [
288 | {file = "geojson-to-sqlite-1.1.1.tar.gz", hash = "sha256:c35611fe30e7dc01bb1823de7039653846a377b56db98313bc51c1b44089aec5"},
289 | {file = "geojson_to_sqlite-1.1.1-py3-none-any.whl", hash = "sha256:583e25472bb9d6e5bb8eae4e231578bc2a82c0ddc282ac2c9c1d3055345688be"},
290 | ]
291 |
292 | [package.dependencies]
293 | shapely = "*"
294 | sqlite-utils = ">=3.23"
295 |
296 | [package.extras]
297 | test = ["dirty-equals", "pytest"]
298 |
299 | [[package]]
300 | name = "h11"
301 | version = "0.14.0"
302 | description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
303 | optional = false
304 | python-versions = ">=3.7"
305 | files = [
306 | {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
307 | {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
308 | ]
309 |
310 | [[package]]
311 | name = "httpcore"
312 | version = "1.0.4"
313 | description = "A minimal low-level HTTP client."
314 | optional = false
315 | python-versions = ">=3.8"
316 | files = [
317 | {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"},
318 | {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"},
319 | ]
320 |
321 | [package.dependencies]
322 | certifi = "*"
323 | h11 = ">=0.13,<0.15"
324 |
325 | [package.extras]
326 | asyncio = ["anyio (>=4.0,<5.0)"]
327 | http2 = ["h2 (>=3,<5)"]
328 | socks = ["socksio (==1.*)"]
329 | trio = ["trio (>=0.22.0,<0.25.0)"]
330 |
331 | [[package]]
332 | name = "httpx"
333 | version = "0.26.0"
334 | description = "The next generation HTTP client."
335 | optional = false
336 | python-versions = ">=3.8"
337 | files = [
338 | {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
339 | {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
340 | ]
341 |
342 | [package.dependencies]
343 | anyio = "*"
344 | certifi = "*"
345 | httpcore = "==1.*"
346 | idna = "*"
347 | sniffio = "*"
348 |
349 | [package.extras]
350 | brotli = ["brotli", "brotlicffi"]
351 | cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
352 | http2 = ["h2 (>=3,<5)"]
353 | socks = ["socksio (==1.*)"]
354 |
355 | [[package]]
356 | name = "hupper"
357 | version = "1.12.1"
358 | description = "Integrated process monitor for developing and reloading daemons."
359 | optional = false
360 | python-versions = ">=3.7"
361 | files = [
362 | {file = "hupper-1.12.1-py3-none-any.whl", hash = "sha256:e872b959f09d90be5fb615bd2e62de89a0b57efc037bdf9637fb09cdf8552b19"},
363 | {file = "hupper-1.12.1.tar.gz", hash = "sha256:06bf54170ff4ecf4c84ad5f188dee3901173ab449c2608ad05b9bfd6b13e32eb"},
364 | ]
365 |
366 | [package.extras]
367 | docs = ["Sphinx", "pylons-sphinx-themes", "setuptools", "watchdog"]
368 | testing = ["mock", "pytest", "pytest-cov", "watchdog"]
369 |
370 | [[package]]
371 | name = "idna"
372 | version = "3.6"
373 | description = "Internationalized Domain Names in Applications (IDNA)"
374 | optional = false
375 | python-versions = ">=3.5"
376 | files = [
377 | {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
378 | {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
379 | ]
380 |
381 | [[package]]
382 | name = "ipython"
383 | version = "8.22.1"
384 | description = "IPython: Productive Interactive Computing"
385 | optional = false
386 | python-versions = ">=3.10"
387 | files = [
388 | {file = "ipython-8.22.1-py3-none-any.whl", hash = "sha256:869335e8cded62ffb6fac8928e5287a05433d6462e3ebaac25f4216474dd6bc4"},
389 | {file = "ipython-8.22.1.tar.gz", hash = "sha256:39c6f9efc079fb19bfb0f17eee903978fe9a290b1b82d68196c641cecb76ea22"},
390 | ]
391 |
392 | [package.dependencies]
393 | colorama = {version = "*", markers = "sys_platform == \"win32\""}
394 | decorator = "*"
395 | exceptiongroup = {version = "*", markers = "python_version < \"3.11\""}
396 | jedi = ">=0.16"
397 | matplotlib-inline = "*"
398 | pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""}
399 | prompt-toolkit = ">=3.0.41,<3.1.0"
400 | pygments = ">=2.4.0"
401 | stack-data = "*"
402 | traitlets = ">=5.13.0"
403 |
404 | [package.extras]
405 | all = ["ipython[black,doc,kernel,nbconvert,nbformat,notebook,parallel,qtconsole,terminal]", "ipython[test,test-extra]"]
406 | black = ["black"]
407 | doc = ["docrepr", "exceptiongroup", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "stack-data", "typing-extensions"]
408 | kernel = ["ipykernel"]
409 | nbconvert = ["nbconvert"]
410 | nbformat = ["nbformat"]
411 | notebook = ["ipywidgets", "notebook"]
412 | parallel = ["ipyparallel"]
413 | qtconsole = ["qtconsole"]
414 | test = ["pickleshare", "pytest (<8)", "pytest-asyncio (<0.22)", "testpath"]
415 | test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"]
416 |
417 | [[package]]
418 | name = "itsdangerous"
419 | version = "2.1.2"
420 | description = "Safely pass data to untrusted environments and back."
421 | optional = false
422 | python-versions = ">=3.7"
423 | files = [
424 | {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"},
425 | {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"},
426 | ]
427 |
428 | [[package]]
429 | name = "janus"
430 | version = "1.0.0"
431 | description = "Mixed sync-async queue to interoperate between asyncio tasks and classic threads"
432 | optional = false
433 | python-versions = ">=3.7"
434 | files = [
435 | {file = "janus-1.0.0-py3-none-any.whl", hash = "sha256:2596ea5482711c1ee3ef2df6c290aaf370a13c55a007826e8f7c32d696d1d00a"},
436 | {file = "janus-1.0.0.tar.gz", hash = "sha256:df976f2cdcfb034b147a2d51edfc34ff6bfb12d4e2643d3ad0e10de058cb1612"},
437 | ]
438 |
439 | [package.dependencies]
440 | typing-extensions = ">=3.7.4.3"
441 |
442 | [[package]]
443 | name = "jedi"
444 | version = "0.19.1"
445 | description = "An autocompletion tool for Python that can be used for text editors."
446 | optional = false
447 | python-versions = ">=3.6"
448 | files = [
449 | {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
450 | {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
451 | ]
452 |
453 | [package.dependencies]
454 | parso = ">=0.8.3,<0.9.0"
455 |
456 | [package.extras]
457 | docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
458 | qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
459 | testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
460 |
461 | [[package]]
462 | name = "jinja2"
463 | version = "3.1.3"
464 | description = "A very fast and expressive template engine."
465 | optional = false
466 | python-versions = ">=3.7"
467 | files = [
468 | {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
469 | {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
470 | ]
471 |
472 | [package.dependencies]
473 | MarkupSafe = ">=2.0"
474 |
475 | [package.extras]
476 | i18n = ["Babel (>=2.7)"]
477 |
478 | [[package]]
479 | name = "markupsafe"
480 | version = "2.1.5"
481 | description = "Safely add untrusted strings to HTML/XML markup."
482 | optional = false
483 | python-versions = ">=3.7"
484 | files = [
485 | {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
486 | {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
487 | {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
488 | {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
489 | {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
490 | {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
491 | {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
492 | {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
493 | {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
494 | {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
495 | {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
496 | {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
497 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
498 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
499 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
500 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
501 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
502 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
503 | {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
504 | {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
505 | {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
506 | {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
507 | {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
508 | {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
509 | {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
510 | {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
511 | {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
512 | {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
513 | {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
514 | {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
515 | {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
516 | {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
517 | {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
518 | {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
519 | {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
520 | {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
521 | {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
522 | {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
523 | {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
524 | {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
525 | {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
526 | {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
527 | {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
528 | {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
529 | {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
530 | {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
531 | {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
532 | {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
533 | {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
534 | {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
535 | {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
536 | {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
537 | {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
538 | {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
539 | {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
540 | {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
541 | {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
542 | {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
543 | {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
544 | {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
545 | ]
546 |
547 | [[package]]
548 | name = "matplotlib-inline"
549 | version = "0.1.6"
550 | description = "Inline Matplotlib backend for Jupyter"
551 | optional = false
552 | python-versions = ">=3.5"
553 | files = [
554 | {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
555 | {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
556 | ]
557 |
558 | [package.dependencies]
559 | traitlets = "*"
560 |
561 | [[package]]
562 | name = "mergedeep"
563 | version = "1.3.4"
564 | description = "A deep merge function for 🐍."
565 | optional = false
566 | python-versions = ">=3.6"
567 | files = [
568 | {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"},
569 | {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"},
570 | ]
571 |
572 | [[package]]
573 | name = "numpy"
574 | version = "1.26.4"
575 | description = "Fundamental package for array computing in Python"
576 | optional = false
577 | python-versions = ">=3.9"
578 | files = [
579 | {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"},
580 | {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"},
581 | {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"},
582 | {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"},
583 | {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"},
584 | {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"},
585 | {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"},
586 | {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"},
587 | {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"},
588 | {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"},
589 | {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"},
590 | {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"},
591 | {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"},
592 | {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"},
593 | {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"},
594 | {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"},
595 | {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"},
596 | {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"},
597 | {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"},
598 | {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"},
599 | {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"},
600 | {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"},
601 | {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"},
602 | {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"},
603 | {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"},
604 | {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"},
605 | {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"},
606 | {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"},
607 | {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"},
608 | {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"},
609 | {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"},
610 | {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"},
611 | {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"},
612 | {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"},
613 | {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"},
614 | {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"},
615 | ]
616 |
617 | [[package]]
618 | name = "parso"
619 | version = "0.8.3"
620 | description = "A Python Parser"
621 | optional = false
622 | python-versions = ">=3.6"
623 | files = [
624 | {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
625 | {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
626 | ]
627 |
628 | [package.extras]
629 | qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
630 | testing = ["docopt", "pytest (<6.0.0)"]
631 |
632 | [[package]]
633 | name = "pexpect"
634 | version = "4.9.0"
635 | description = "Pexpect allows easy control of interactive console applications."
636 | optional = false
637 | python-versions = "*"
638 | files = [
639 | {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
640 | {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
641 | ]
642 |
643 | [package.dependencies]
644 | ptyprocess = ">=0.5"
645 |
646 | [[package]]
647 | name = "pint"
648 | version = "0.23"
649 | description = "Physical quantities module"
650 | optional = false
651 | python-versions = ">=3.9"
652 | files = [
653 | {file = "Pint-0.23-py3-none-any.whl", hash = "sha256:df79b6b5f1beb7ed0cd55d91a0766fc55f972f757a9364e844958c05e8eb66f9"},
654 | {file = "Pint-0.23.tar.gz", hash = "sha256:e1509b91606dbc52527c600a4ef74ffac12fff70688aff20e9072409346ec9b4"},
655 | ]
656 |
657 | [package.dependencies]
658 | typing-extensions = "*"
659 |
660 | [package.extras]
661 | babel = ["babel (<=2.8)"]
662 | bench = ["pytest", "pytest-codspeed"]
663 | dask = ["dask"]
664 | mip = ["mip (>=1.13)"]
665 | numpy = ["numpy (>=1.19.5)"]
666 | pandas = ["pint-pandas (>=0.3)"]
667 | test = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-mpl", "pytest-subtests"]
668 | testbase = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-subtests"]
669 | uncertainties = ["uncertainties (>=3.1.6)"]
670 | xarray = ["xarray"]
671 |
672 | [[package]]
673 | name = "pip"
674 | version = "24.0"
675 | description = "The PyPA recommended tool for installing Python packages."
676 | optional = false
677 | python-versions = ">=3.7"
678 | files = [
679 | {file = "pip-24.0-py3-none-any.whl", hash = "sha256:ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc"},
680 | {file = "pip-24.0.tar.gz", hash = "sha256:ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2"},
681 | ]
682 |
683 | [[package]]
684 | name = "pluggy"
685 | version = "1.4.0"
686 | description = "plugin and hook calling mechanisms for python"
687 | optional = false
688 | python-versions = ">=3.8"
689 | files = [
690 | {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
691 | {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
692 | ]
693 |
694 | [package.extras]
695 | dev = ["pre-commit", "tox"]
696 | testing = ["pytest", "pytest-benchmark"]
697 |
698 | [[package]]
699 | name = "prompt-toolkit"
700 | version = "3.0.43"
701 | description = "Library for building powerful interactive command lines in Python"
702 | optional = false
703 | python-versions = ">=3.7.0"
704 | files = [
705 | {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
706 | {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
707 | ]
708 |
709 | [package.dependencies]
710 | wcwidth = "*"
711 |
712 | [[package]]
713 | name = "ptyprocess"
714 | version = "0.7.0"
715 | description = "Run a subprocess in a pseudo terminal"
716 | optional = false
717 | python-versions = "*"
718 | files = [
719 | {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
720 | {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
721 | ]
722 |
723 | [[package]]
724 | name = "pure-eval"
725 | version = "0.2.2"
726 | description = "Safely evaluate AST nodes without side effects"
727 | optional = false
728 | python-versions = "*"
729 | files = [
730 | {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
731 | {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
732 | ]
733 |
734 | [package.extras]
735 | tests = ["pytest"]
736 |
737 | [[package]]
738 | name = "pygments"
739 | version = "2.17.2"
740 | description = "Pygments is a syntax highlighting package written in Python."
741 | optional = false
742 | python-versions = ">=3.7"
743 | files = [
744 | {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
745 | {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
746 | ]
747 |
748 | [package.extras]
749 | plugins = ["importlib-metadata"]
750 | windows-terminal = ["colorama (>=0.4.6)"]
751 |
752 | [[package]]
753 | name = "python-dateutil"
754 | version = "2.8.2"
755 | description = "Extensions to the standard Python datetime module"
756 | optional = false
757 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
758 | files = [
759 | {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
760 | {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
761 | ]
762 |
763 | [package.dependencies]
764 | six = ">=1.5"
765 |
766 | [[package]]
767 | name = "python-multipart"
768 | version = "0.0.9"
769 | description = "A streaming multipart parser for Python"
770 | optional = false
771 | python-versions = ">=3.8"
772 | files = [
773 | {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"},
774 | {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"},
775 | ]
776 |
777 | [package.extras]
778 | dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"]
779 |
780 | [[package]]
781 | name = "pyyaml"
782 | version = "6.0.1"
783 | description = "YAML parser and emitter for Python"
784 | optional = false
785 | python-versions = ">=3.6"
786 | files = [
787 | {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"},
788 | {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"},
789 | {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
790 | {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
791 | {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
792 | {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
793 | {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
794 | {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
795 | {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
796 | {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"},
797 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
798 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
799 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
800 | {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
801 | {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
802 | {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
803 | {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
804 | {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
805 | {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
806 | {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
807 | {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
808 | {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
809 | {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
810 | {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
811 | {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
812 | {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"},
813 | {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"},
814 | {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"},
815 | {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"},
816 | {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"},
817 | {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"},
818 | {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"},
819 | {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"},
820 | {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"},
821 | {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"},
822 | {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
823 | {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
824 | {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
825 | {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
826 | {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
827 | {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
828 | {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
829 | {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"},
830 | {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
831 | {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
832 | {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
833 | {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
834 | {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
835 | {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
836 | {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
837 | ]
838 |
839 | [[package]]
840 | name = "setuptools"
841 | version = "69.1.1"
842 | description = "Easily download, build, install, upgrade, and uninstall Python packages"
843 | optional = false
844 | python-versions = ">=3.8"
845 | files = [
846 | {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"},
847 | {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"},
848 | ]
849 |
850 | [package.extras]
851 | docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
852 | testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
853 | testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
854 |
855 | [[package]]
856 | name = "shapely"
857 | version = "2.0.3"
858 | description = "Manipulation and analysis of geometric objects"
859 | optional = false
860 | python-versions = ">=3.7"
861 | files = [
862 | {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:af7e9abe180b189431b0f490638281b43b84a33a960620e6b2e8d3e3458b61a1"},
863 | {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98040462b36ced9671e266b95c326b97f41290d9d17504a1ee4dc313a7667b9c"},
864 | {file = "shapely-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71eb736ef2843f23473c6e37f6180f90f0a35d740ab284321548edf4e55d9a52"},
865 | {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881eb9dbbb4a6419667e91fcb20313bfc1e67f53dbb392c6840ff04793571ed1"},
866 | {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f10d2ccf0554fc0e39fad5886c839e47e207f99fdf09547bc687a2330efda35b"},
867 | {file = "shapely-2.0.3-cp310-cp310-win32.whl", hash = "sha256:6dfdc077a6fcaf74d3eab23a1ace5abc50c8bce56ac7747d25eab582c5a2990e"},
868 | {file = "shapely-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:64c5013dacd2d81b3bb12672098a0b2795c1bf8190cfc2980e380f5ef9d9e4d9"},
869 | {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:56cee3e4e8159d6f2ce32e421445b8e23154fd02a0ac271d6a6c0b266a8e3cce"},
870 | {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:619232c8276fded09527d2a9fd91a7885ff95c0ff9ecd5e3cb1e34fbb676e2ae"},
871 | {file = "shapely-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2a7d256db6f5b4b407dc0c98dd1b2fcf1c9c5814af9416e5498d0a2e4307a4b"},
872 | {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45f0c8cd4583647db3216d965d49363e6548c300c23fd7e57ce17a03f824034"},
873 | {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13cb37d3826972a82748a450328fe02a931dcaed10e69a4d83cc20ba021bc85f"},
874 | {file = "shapely-2.0.3-cp311-cp311-win32.whl", hash = "sha256:9302d7011e3e376d25acd30d2d9e70d315d93f03cc748784af19b00988fc30b1"},
875 | {file = "shapely-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6b464f2666b13902835f201f50e835f2f153f37741db88f68c7f3b932d3505fa"},
876 | {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e86e7cb8e331a4850e0c2a8b2d66dc08d7a7b301b8d1d34a13060e3a5b4b3b55"},
877 | {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c91981c99ade980fc49e41a544629751a0ccd769f39794ae913e53b07b2f78b9"},
878 | {file = "shapely-2.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd45d456983dc60a42c4db437496d3f08a4201fbf662b69779f535eb969660af"},
879 | {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:882fb1ffc7577e88c1194f4f1757e277dc484ba096a3b94844319873d14b0f2d"},
880 | {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9f2d93bff2ea52fa93245798cddb479766a18510ea9b93a4fb9755c79474889"},
881 | {file = "shapely-2.0.3-cp312-cp312-win32.whl", hash = "sha256:99abad1fd1303b35d991703432c9481e3242b7b3a393c186cfb02373bf604004"},
882 | {file = "shapely-2.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:6f555fe3304a1f40398977789bc4fe3c28a11173196df9ece1e15c5bc75a48db"},
883 | {file = "shapely-2.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983cc418c1fa160b7d797cfef0e0c9f8c6d5871e83eae2c5793fce6a837fad9"},
884 | {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18bddb8c327f392189a8d5d6b9a858945722d0bb95ccbd6a077b8e8fc4c7890d"},
885 | {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:442f4dcf1eb58c5a4e3428d88e988ae153f97ab69a9f24e07bf4af8038536325"},
886 | {file = "shapely-2.0.3-cp37-cp37m-win32.whl", hash = "sha256:31a40b6e3ab00a4fd3a1d44efb2482278642572b8e0451abdc8e0634b787173e"},
887 | {file = "shapely-2.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:59b16976c2473fec85ce65cc9239bef97d4205ab3acead4e6cdcc72aee535679"},
888 | {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:705efbce1950a31a55b1daa9c6ae1c34f1296de71ca8427974ec2f27d57554e3"},
889 | {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:601c5c0058a6192df704cb889439f64994708563f57f99574798721e9777a44b"},
890 | {file = "shapely-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f24ecbb90a45c962b3b60d8d9a387272ed50dc010bfe605f1d16dfc94772d8a1"},
891 | {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c2a2989222c6062f7a0656e16276c01bb308bc7e5d999e54bf4e294ce62e76"},
892 | {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42bceb9bceb3710a774ce04908fda0f28b291323da2688f928b3f213373b5aee"},
893 | {file = "shapely-2.0.3-cp38-cp38-win32.whl", hash = "sha256:54d925c9a311e4d109ec25f6a54a8bd92cc03481a34ae1a6a92c1fe6729b7e01"},
894 | {file = "shapely-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:300d203b480a4589adefff4c4af0b13919cd6d760ba3cbb1e56275210f96f654"},
895 | {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:083d026e97b6c1f4a9bd2a9171c7692461092ed5375218170d91705550eecfd5"},
896 | {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27b6e1910094d93e9627f2664121e0e35613262fc037051680a08270f6058daf"},
897 | {file = "shapely-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71b2de56a9e8c0e5920ae5ddb23b923490557ac50cb0b7fa752761bf4851acde"},
898 | {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d279e56bbb68d218d63f3efc80c819cedcceef0e64efbf058a1df89dc57201b"},
899 | {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88566d01a30f0453f7d038db46bc83ce125e38e47c5f6bfd4c9c287010e9bf74"},
900 | {file = "shapely-2.0.3-cp39-cp39-win32.whl", hash = "sha256:58afbba12c42c6ed44c4270bc0e22f3dadff5656d711b0ad335c315e02d04707"},
901 | {file = "shapely-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:5026b30433a70911979d390009261b8c4021ff87c7c3cbd825e62bb2ffa181bc"},
902 | {file = "shapely-2.0.3.tar.gz", hash = "sha256:4d65d0aa7910af71efa72fd6447e02a8e5dd44da81a983de9d736d6e6ccbe674"},
903 | ]
904 |
905 | [package.dependencies]
906 | numpy = ">=1.14,<2"
907 |
908 | [package.extras]
909 | docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"]
910 | test = ["pytest", "pytest-cov"]
911 |
912 | [[package]]
913 | name = "six"
914 | version = "1.16.0"
915 | description = "Python 2 and 3 compatibility utilities"
916 | optional = false
917 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
918 | files = [
919 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
920 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
921 | ]
922 |
923 | [[package]]
924 | name = "sniffio"
925 | version = "1.3.0"
926 | description = "Sniff out which async library your code is running under"
927 | optional = false
928 | python-versions = ">=3.7"
929 | files = [
930 | {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
931 | {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
932 | ]
933 |
934 | [[package]]
935 | name = "sqlite-colorbrewer"
936 | version = "0.2"
937 | description = "A custom function to use ColorBrewer scales in SQLite queries"
938 | optional = false
939 | python-versions = ">=3.6"
940 | files = [
941 | {file = "sqlite-colorbrewer-0.2.tar.gz", hash = "sha256:80049cd65e94a3fd128284218baa3d71f76df70ffe41d38f3daacf0f857548ea"},
942 | {file = "sqlite_colorbrewer-0.2-py3-none-any.whl", hash = "sha256:08b81d4288fcf29b03cd8c1c84b4a4425220a59d5cbd32b71818ab2eac945eaf"},
943 | ]
944 |
945 | [package.extras]
946 | test = ["datasette", "pytest", "pytest-asyncio"]
947 |
948 | [[package]]
949 | name = "sqlite-fts4"
950 | version = "1.0.3"
951 | description = "Python functions for working with SQLite FTS4 search"
952 | optional = false
953 | python-versions = "*"
954 | files = [
955 | {file = "sqlite-fts4-1.0.3.tar.gz", hash = "sha256:78b05eeaf6680e9dbed8986bde011e9c086a06cb0c931b3cf7da94c214e8930c"},
956 | {file = "sqlite_fts4-1.0.3-py3-none-any.whl", hash = "sha256:0359edd8dea6fd73c848989e1e2b1f31a50fe5f9d7272299ff0e8dbaa62d035f"},
957 | ]
958 |
959 | [package.extras]
960 | test = ["pytest"]
961 |
962 | [[package]]
963 | name = "sqlite-utils"
964 | version = "3.36"
965 | description = "CLI tool and Python library for manipulating SQLite databases"
966 | optional = false
967 | python-versions = ">=3.7"
968 | files = [
969 | {file = "sqlite-utils-3.36.tar.gz", hash = "sha256:dcc311394fe86dc16f65037b0075e238efcfd2e12e65d53ed196954502996f3c"},
970 | {file = "sqlite_utils-3.36-py3-none-any.whl", hash = "sha256:b71e829755c2efbdcd6931a31968dee4e8bd71b3c14f0fe648b22377027c5bec"},
971 | ]
972 |
973 | [package.dependencies]
974 | click = "*"
975 | click-default-group = ">=1.2.3"
976 | pluggy = "*"
977 | python-dateutil = "*"
978 | sqlite-fts4 = "*"
979 | tabulate = "*"
980 |
981 | [package.extras]
982 | docs = ["beanbag-docutils (>=2.0)", "codespell", "furo", "pygments-csv-lexer", "sphinx-autobuild", "sphinx-copybutton"]
983 | flake8 = ["flake8"]
984 | mypy = ["data-science-types", "mypy", "types-click", "types-pluggy", "types-python-dateutil", "types-tabulate"]
985 | test = ["black", "cogapp", "hypothesis", "pytest"]
986 | tui = ["trogon"]
987 |
988 | [[package]]
989 | name = "stack-data"
990 | version = "0.6.3"
991 | description = "Extract data from python stack frames and tracebacks for informative displays"
992 | optional = false
993 | python-versions = "*"
994 | files = [
995 | {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
996 | {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
997 | ]
998 |
999 | [package.dependencies]
1000 | asttokens = ">=2.1.0"
1001 | executing = ">=1.2.0"
1002 | pure-eval = "*"
1003 |
1004 | [package.extras]
1005 | tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
1006 |
1007 | [[package]]
1008 | name = "tabulate"
1009 | version = "0.9.0"
1010 | description = "Pretty-print tabular data"
1011 | optional = false
1012 | python-versions = ">=3.7"
1013 | files = [
1014 | {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"},
1015 | {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"},
1016 | ]
1017 |
1018 | [package.extras]
1019 | widechars = ["wcwidth"]
1020 |
1021 | [[package]]
1022 | name = "traitlets"
1023 | version = "5.14.1"
1024 | description = "Traitlets Python configuration system"
1025 | optional = false
1026 | python-versions = ">=3.8"
1027 | files = [
1028 | {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"},
1029 | {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"},
1030 | ]
1031 |
1032 | [package.extras]
1033 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
1034 | test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
1035 |
1036 | [[package]]
1037 | name = "typing-extensions"
1038 | version = "4.9.0"
1039 | description = "Backported and Experimental Type Hints for Python 3.8+"
1040 | optional = false
1041 | python-versions = ">=3.8"
1042 | files = [
1043 | {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
1044 | {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
1045 | ]
1046 |
1047 | [[package]]
1048 | name = "uvicorn"
1049 | version = "0.27.1"
1050 | description = "The lightning-fast ASGI server."
1051 | optional = false
1052 | python-versions = ">=3.8"
1053 | files = [
1054 | {file = "uvicorn-0.27.1-py3-none-any.whl", hash = "sha256:5c89da2f3895767472a35556e539fd59f7edbe9b1e9c0e1c99eebeadc61838e4"},
1055 | {file = "uvicorn-0.27.1.tar.gz", hash = "sha256:3d9a267296243532db80c83a959a3400502165ade2c1338dea4e67915fd4745a"},
1056 | ]
1057 |
1058 | [package.dependencies]
1059 | click = ">=7.0"
1060 | h11 = ">=0.8"
1061 | typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
1062 |
1063 | [package.extras]
1064 | standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
1065 |
1066 | [[package]]
1067 | name = "wcwidth"
1068 | version = "0.2.13"
1069 | description = "Measures the displayed width of unicode strings in a terminal"
1070 | optional = false
1071 | python-versions = "*"
1072 | files = [
1073 | {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"},
1074 | {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
1075 | ]
1076 |
1077 | [metadata]
1078 | lock-version = "2.0"
1079 | python-versions = "^3.10"
1080 | content-hash = "0f0f04852b551682964e19a72877425056fa58e830b8aa2c65651c5c17cb44bf"
1081 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.poetry]
2 | name = "baltimore-trees"
3 | version = "0.1.0"
4 | description = "A demo project for NICAR24 in Baltimore"
5 | authors = ["Chris Amico "]
6 | readme = "README.md"
7 |
8 | [tool.poetry.dependencies]
9 | python = "^3.10"
10 | datasette = "^0.64.6"
11 | sqlite-utils = "^3.36"
12 | geojson-to-sqlite = "^1.1.1"
13 | datasette-geojson-map = "^0.4.0"
14 | sqlite-colorbrewer = "^0.2"
15 | httpx = "^0.26.0"
16 |
17 |
18 | [tool.poetry.group.dev.dependencies]
19 | ipython = "^8.21.0"
20 |
21 | [build-system]
22 | requires = ["poetry-core"]
23 | build-backend = "poetry.core.masonry.api"
24 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
3 | line-height: 1.5;
4 | font-weight: 400;
5 |
6 | color-scheme: light dark;
7 | color: rgba(255, 255, 255, 0.87);
8 | background-color: #242424;
9 |
10 | font-synthesis: none;
11 | text-rendering: optimizeLegibility;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | }
15 |
16 | a {
17 | font-weight: 500;
18 | color: #646cff;
19 | text-decoration: inherit;
20 | }
21 |
22 | a:hover {
23 | color: #535bf2;
24 | }
25 |
26 | body {
27 | margin: 0;
28 | display: flex;
29 | place-items: center;
30 | min-width: 320px;
31 | min-height: 100vh;
32 | }
33 |
34 | h1 {
35 | font-size: 3.2em;
36 | line-height: 1.1;
37 | }
38 |
39 | @media (prefers-color-scheme: light) {
40 | :root {
41 | color: #213547;
42 | background-color: #ffffff;
43 | }
44 | a:hover {
45 | color: #747bff;
46 | }
47 | button {
48 | background-color: #f9f9f9;
49 | }
50 | }
51 |
52 | body,
53 | html {
54 | position: relative;
55 | width: 100%;
56 | }
57 |
58 | #map {
59 | position: absolute;
60 | top: 0;
61 | bottom: 0;
62 | width: 100%;
63 | }
64 |
--------------------------------------------------------------------------------