unifi-network-maps 1.4.15__py3-none-any.whl → 1.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- unifi_network_maps/__init__.py +1 -1
- unifi_network_maps/adapters/unifi.py +80 -96
- unifi_network_maps/assets/icons/modern/ap.svg +9 -0
- unifi_network_maps/assets/icons/modern/camera.svg +9 -0
- unifi_network_maps/assets/icons/modern/client.svg +9 -0
- unifi_network_maps/assets/icons/modern/game_console.svg +10 -0
- unifi_network_maps/assets/icons/modern/gateway.svg +17 -0
- unifi_network_maps/assets/icons/modern/iot.svg +9 -0
- unifi_network_maps/assets/icons/modern/nas.svg +9 -0
- unifi_network_maps/assets/icons/modern/other.svg +10 -0
- unifi_network_maps/assets/icons/modern/phone.svg +10 -0
- unifi_network_maps/assets/icons/modern/printer.svg +9 -0
- unifi_network_maps/assets/icons/modern/speaker.svg +10 -0
- unifi_network_maps/assets/icons/modern/switch.svg +10 -0
- unifi_network_maps/assets/icons/modern/tv.svg +10 -0
- unifi_network_maps/assets/icons/modern-flat/ap.svg +5 -0
- unifi_network_maps/assets/icons/modern-flat/camera.svg +5 -0
- unifi_network_maps/assets/icons/modern-flat/client.svg +5 -0
- unifi_network_maps/assets/icons/modern-flat/game_console.svg +6 -0
- unifi_network_maps/assets/icons/modern-flat/gateway.svg +13 -0
- unifi_network_maps/assets/icons/modern-flat/iot.svg +5 -0
- unifi_network_maps/assets/icons/modern-flat/nas.svg +5 -0
- unifi_network_maps/assets/icons/modern-flat/other.svg +6 -0
- unifi_network_maps/assets/icons/modern-flat/phone.svg +6 -0
- unifi_network_maps/assets/icons/modern-flat/printer.svg +5 -0
- unifi_network_maps/assets/icons/modern-flat/speaker.svg +6 -0
- unifi_network_maps/assets/icons/modern-flat/switch.svg +6 -0
- unifi_network_maps/assets/icons/modern-flat/tv.svg +6 -0
- unifi_network_maps/assets/themes/dark.yaml +53 -10
- unifi_network_maps/assets/themes/default.yaml +34 -0
- unifi_network_maps/assets/themes/minimal-dark.yaml +98 -0
- unifi_network_maps/assets/themes/minimal.yaml +92 -0
- unifi_network_maps/assets/themes/unifi-dark.yaml +97 -0
- unifi_network_maps/assets/themes/unifi.yaml +92 -0
- unifi_network_maps/cli/args.py +54 -0
- unifi_network_maps/cli/main.py +18 -7
- unifi_network_maps/cli/render.py +79 -27
- unifi_network_maps/cli/runtime.py +29 -15
- unifi_network_maps/io/debug.py +2 -1
- unifi_network_maps/io/export.py +19 -13
- unifi_network_maps/io/mock_data.py +5 -3
- unifi_network_maps/io/paths.py +5 -3
- unifi_network_maps/model/classify.py +199 -0
- unifi_network_maps/model/clients.py +271 -0
- unifi_network_maps/model/connection.py +37 -0
- unifi_network_maps/model/diff.py +544 -0
- unifi_network_maps/model/edges.py +558 -0
- unifi_network_maps/model/helpers.py +64 -0
- unifi_network_maps/model/lldp.py +20 -25
- unifi_network_maps/model/mock.py +110 -23
- unifi_network_maps/model/snapshot.py +294 -0
- unifi_network_maps/model/topology.py +143 -951
- unifi_network_maps/model/topology_coerce.py +339 -0
- unifi_network_maps/model/vlans.py +32 -46
- unifi_network_maps/model/wan.py +132 -0
- unifi_network_maps/render/device_ports_md.py +39 -97
- unifi_network_maps/render/device_summary.py +53 -0
- unifi_network_maps/render/lldp_md.py +29 -219
- unifi_network_maps/render/markdown_tables.py +8 -0
- unifi_network_maps/render/mermaid.py +11 -2
- unifi_network_maps/render/mkdocs.py +2 -1
- unifi_network_maps/render/svg.py +566 -908
- unifi_network_maps/render/svg_icons.py +231 -0
- unifi_network_maps/render/svg_isometric.py +1196 -0
- unifi_network_maps/render/svg_labels.py +184 -0
- unifi_network_maps/render/svg_theme.py +166 -32
- unifi_network_maps/render/theme.py +86 -1
- {unifi_network_maps-1.4.15.dist-info → unifi_network_maps-1.5.0.dist-info}/METADATA +107 -31
- {unifi_network_maps-1.4.15.dist-info → unifi_network_maps-1.5.0.dist-info}/RECORD +73 -31
- unifi_network_maps/assets/icons/isometric/printer.svg +0 -122
- {unifi_network_maps-1.4.15.dist-info → unifi_network_maps-1.5.0.dist-info}/WHEEL +0 -0
- {unifi_network_maps-1.4.15.dist-info → unifi_network_maps-1.5.0.dist-info}/entry_points.txt +0 -0
- {unifi_network_maps-1.4.15.dist-info → unifi_network_maps-1.5.0.dist-info}/licenses/LICENSE +0 -0
- {unifi_network_maps-1.4.15.dist-info → unifi_network_maps-1.5.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: unifi-network-maps
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: Dynamic UniFi -> network maps in mermaid or svg
|
|
5
5
|
Author: Merlijn
|
|
6
6
|
License-Expression: MIT
|
|
@@ -26,13 +26,17 @@ Requires-Dist: python-dotenv==1.2.1
|
|
|
26
26
|
Requires-Dist: PyYAML==6.0.3
|
|
27
27
|
Requires-Dist: Jinja2==3.1.6
|
|
28
28
|
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: cairosvg==2.8.2; extra == "dev"
|
|
29
30
|
Requires-Dist: Faker==40.1.2; extra == "dev"
|
|
30
31
|
Requires-Dist: behave==1.3.3; extra == "dev"
|
|
32
|
+
Requires-Dist: Pillow==12.1.0; extra == "dev"
|
|
31
33
|
Requires-Dist: pre-commit==4.5.1; extra == "dev"
|
|
32
34
|
Requires-Dist: pytest==9.0.2; extra == "dev"
|
|
33
35
|
Requires-Dist: pytest-cov==7.0.0; extra == "dev"
|
|
34
36
|
Requires-Dist: pyright==1.1.408; extra == "dev"
|
|
35
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: radon==6.0.1; extra == "dev"
|
|
38
|
+
Requires-Dist: ruff==0.15.0; extra == "dev"
|
|
39
|
+
Requires-Dist: xenon==0.9.3; extra == "dev"
|
|
36
40
|
Dynamic: license-file
|
|
37
41
|
|
|
38
42
|
# unifi-network-maps
|
|
@@ -158,6 +162,54 @@ unifi-network-maps --format json --output ./payload.json
|
|
|
158
162
|
The live Home Assistant integration (Config Flow + coordinator + custom card) lives in a separate repo:
|
|
159
163
|
- https://github.com/merlijntishauser/unifi-network-maps-ha
|
|
160
164
|
|
|
165
|
+
## Programmatic API
|
|
166
|
+
|
|
167
|
+
Beyond the CLI, you can use the library programmatically for topology comparison and change detection.
|
|
168
|
+
|
|
169
|
+
### Topology Diff API
|
|
170
|
+
|
|
171
|
+
Compare two topology snapshots to detect network changes:
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
from unifi_network_maps.model.topology import Topology
|
|
175
|
+
|
|
176
|
+
# Create or load topologies
|
|
177
|
+
old_topology = Topology.from_dict(json.load(open("old_snapshot.json")))
|
|
178
|
+
new_topology = Topology(devices=devices, clients=clients, edges=edges)
|
|
179
|
+
|
|
180
|
+
# Compare and get structured change events
|
|
181
|
+
diff = old_topology.diff(new_topology)
|
|
182
|
+
|
|
183
|
+
for event in diff.events:
|
|
184
|
+
print(f"{event.event_type}: {event.description}")
|
|
185
|
+
# Example: "node_added: Device 'switch-2' appeared on network"
|
|
186
|
+
# Example: "node_changed: Client 'laptop' changed VLAN from 10 to 20"
|
|
187
|
+
|
|
188
|
+
# Serialize for persistence or MQTT
|
|
189
|
+
json_str = diff.to_json()
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Event types:
|
|
193
|
+
- `node_added` / `node_removed` / `node_changed` - Device or client changes
|
|
194
|
+
- `edge_added` / `edge_removed` / `edge_changed` - Connection changes
|
|
195
|
+
|
|
196
|
+
Each event includes:
|
|
197
|
+
- `event_type`, `entity_type` (device/client), `identifier` (MAC)
|
|
198
|
+
- `name`, `description` (human-readable)
|
|
199
|
+
- `details` (full snapshot or change dict)
|
|
200
|
+
|
|
201
|
+
Serialize topology snapshots for storage:
|
|
202
|
+
|
|
203
|
+
```python
|
|
204
|
+
# Save snapshot
|
|
205
|
+
snapshot = topology.to_dict()
|
|
206
|
+
json.dump(snapshot, open("topology.json", "w"))
|
|
207
|
+
|
|
208
|
+
# Load snapshot
|
|
209
|
+
data = json.load(open("topology.json"))
|
|
210
|
+
topology = Topology.from_dict(data)
|
|
211
|
+
```
|
|
212
|
+
|
|
161
213
|
## Examples (mock data)
|
|
162
214
|
|
|
163
215
|
These examples are generated from `examples/mock_data.json` (safe, anonymized fixture).
|
|
@@ -178,6 +230,13 @@ unifi-network-maps --mock-data examples/mock_data.json --include-ports --inclu
|
|
|
178
230
|
|
|
179
231
|

|
|
180
232
|
|
|
233
|
+
### Themes & Icon Sets
|
|
234
|
+
|
|
235
|
+
Built-in themes (`--theme`) and icon sets (`--icon-set`) can be combined freely.
|
|
236
|
+
Regenerate this overview with `make theme-matrix`.
|
|
237
|
+
|
|
238
|
+

|
|
239
|
+
|
|
181
240
|
Mermaid example with ports:
|
|
182
241
|
|
|
183
242
|
```mermaid
|
|
@@ -204,9 +263,6 @@ graph TB
|
|
|
204
263
|
See `examples/mkdocs/` for a ready-to-use setup that renders Mermaid diagrams
|
|
205
264
|
with Material for MkDocs, including a sample `unifi-network` page and legend.
|
|
206
265
|
|
|
207
|
-
The built-in themes live at `src/unifi_network_maps/assets/themes/default.yaml` and
|
|
208
|
-
`src/unifi_network_maps/assets/themes/dark.yaml`.
|
|
209
|
-
|
|
210
266
|
|
|
211
267
|
## Options
|
|
212
268
|
|
|
@@ -220,44 +276,63 @@ Source:
|
|
|
220
276
|
Mock:
|
|
221
277
|
- `--generate-mock`: write mock data JSON and exit.
|
|
222
278
|
- `--mock-seed`: seed for deterministic mock generation.
|
|
223
|
-
- `--mock-switches`: number of switches to generate.
|
|
224
|
-
- `--mock-aps`: number of access points to generate.
|
|
225
|
-
- `--mock-wired-clients`: number of wired clients to generate.
|
|
226
|
-
- `--mock-wireless-clients`: number of wireless clients to generate.
|
|
279
|
+
- `--mock-switches`: number of switches to generate (default 1).
|
|
280
|
+
- `--mock-aps`: number of access points to generate (default 2).
|
|
281
|
+
- `--mock-wired-clients`: number of wired clients to generate (default 2).
|
|
282
|
+
- `--mock-wireless-clients`: number of wireless clients to generate (default 2).
|
|
227
283
|
|
|
228
284
|
Functional:
|
|
229
285
|
- `--include-ports`: show port labels (Mermaid shows both ends; SVG shows compact labels).
|
|
230
|
-
- `--include-clients`: add active
|
|
286
|
+
- `--include-clients`: add active clients as leaf nodes.
|
|
231
287
|
- `--client-scope wired|wireless|all`: which client types to include (default wired).
|
|
232
|
-
- `--
|
|
288
|
+
- `--collapse-clients`: group clients by uplink device into cluster nodes with count badges.
|
|
289
|
+
- `--only-unifi`: only include neighbors that are UniFi devices; when clients are included, filters to UniFi-managed clients.
|
|
233
290
|
- `--no-cache`: disable UniFi API cache reads and writes.
|
|
234
291
|
|
|
235
292
|
Mermaid:
|
|
236
|
-
- `--direction LR|TB`: diagram direction
|
|
237
|
-
- `--group-by-type`: group nodes by gateway/switch/AP in
|
|
238
|
-
- `--legend-scale`: scale legend font/link sizes
|
|
293
|
+
- `--direction LR|TB`: diagram direction (default TB).
|
|
294
|
+
- `--group-by-type`: group nodes by gateway/switch/AP in subgraphs.
|
|
295
|
+
- `--legend-scale`: scale legend font/link sizes (default 1.0).
|
|
239
296
|
- `--legend-style auto|compact|diagram`: legend rendering mode (auto uses compact for mkdocs).
|
|
240
|
-
- `--legend-only`: render just the legend as a separate Mermaid graph
|
|
297
|
+
- `--legend-only`: render just the legend as a separate Mermaid graph.
|
|
241
298
|
|
|
242
299
|
SVG:
|
|
243
300
|
- `--svg-width/--svg-height`: override SVG output dimensions.
|
|
244
|
-
- `--theme
|
|
301
|
+
- `--theme`: built-in theme (`unifi`, `unifi-dark`, `minimal`, `classic`, `classic-dark`).
|
|
302
|
+
- `--theme-file`: custom theme YAML (takes priority over `--theme`; see `examples/theme.yaml`).
|
|
303
|
+
- `--icon-set isometric|modern`: icon set to use (default: determined by theme, or `isometric`).
|
|
304
|
+
- `--svg-layout-mode physical|grouped`: layout mode for SVG output (default physical).
|
|
305
|
+
- `--wan-label/--wan-speed`: WAN1 ISP name and provisioned speed.
|
|
306
|
+
- `--wan2-label/--wan2-speed`: WAN2 ISP name and provisioned speed.
|
|
307
|
+
- `--max-vlan-colors`: limit VLAN colors shown on edges (default: no limit).
|
|
308
|
+
- `--include-vlan-legend`: add VLAN color legend to SVG output.
|
|
245
309
|
|
|
246
310
|
Output:
|
|
247
311
|
- `--format mermaid|svg|svg-iso|lldp-md|mkdocs|json`: output format (default mermaid).
|
|
248
312
|
- `--stdout`: write output to stdout.
|
|
249
|
-
- `--
|
|
250
|
-
- `--
|
|
313
|
+
- `--output`: write output to file.
|
|
314
|
+
- `--markdown`: wrap Mermaid output in a code fence for notes tools like Obsidian.
|
|
315
|
+
- `--mkdocs-sidebar-legend`: write sidebar legend assets next to the output file.
|
|
251
316
|
- `--mkdocs-dual-theme`: render light/dark Mermaid blocks for Material theme switching.
|
|
252
|
-
- `--mkdocs-timestamp-zone`: timezone for mkdocs timestamp (`Europe/Amsterdam
|
|
317
|
+
- `--mkdocs-timestamp-zone`: timezone for mkdocs timestamp (default `Europe/Amsterdam`; use `off` to disable).
|
|
253
318
|
|
|
254
319
|
Debug:
|
|
255
320
|
- `--debug-dump`: dump gateway + sample devices to stderr for debugging.
|
|
256
321
|
- `--debug-sample N`: number of non-gateway devices in debug dump (default 2).
|
|
257
322
|
|
|
258
|
-
##
|
|
323
|
+
## Themes
|
|
324
|
+
|
|
325
|
+
Five built-in themes are available via `--theme`:
|
|
259
326
|
|
|
260
|
-
|
|
327
|
+
| Theme | Style | Default icon set |
|
|
328
|
+
|-------|-------|-----------------|
|
|
329
|
+
| `unifi` | Clean light theme based on the [ui.com](https://ui.com) color palette | modern |
|
|
330
|
+
| `unifi-dark` | Dark variant using official Ubiquiti dark surface colors | modern |
|
|
331
|
+
| `minimal` | Neutral grey tones, understated | isometric |
|
|
332
|
+
| `classic` | Warm default palette with distinct device colors | isometric |
|
|
333
|
+
| `classic-dark` | Dark variant of classic | modern |
|
|
334
|
+
|
|
335
|
+
For custom colors, create a theme YAML and pass it with `--theme-file`. Override only the values you need:
|
|
261
336
|
|
|
262
337
|
```yaml
|
|
263
338
|
mermaid:
|
|
@@ -267,28 +342,29 @@ mermaid:
|
|
|
267
342
|
stroke: "#d98300"
|
|
268
343
|
poe_link: "#1e88e5"
|
|
269
344
|
svg:
|
|
345
|
+
icon_set: modern
|
|
346
|
+
grid_color: "#c0c8d0"
|
|
347
|
+
background: "#f9fafa"
|
|
270
348
|
links:
|
|
271
349
|
standard:
|
|
272
|
-
from: "#
|
|
273
|
-
to: "#
|
|
274
|
-
poe:
|
|
275
|
-
from: "#1e88e5"
|
|
276
|
-
to: "#0d47a1"
|
|
350
|
+
from: "#006fff"
|
|
351
|
+
to: "#0560d4"
|
|
277
352
|
nodes:
|
|
278
353
|
switch:
|
|
279
|
-
from: "#
|
|
280
|
-
to: "#
|
|
354
|
+
from: "#4dd88a"
|
|
355
|
+
to: "#38cc65"
|
|
281
356
|
```
|
|
282
357
|
|
|
358
|
+
See `examples/theme.yaml` and `examples/theme-dark.yaml` for full examples.
|
|
359
|
+
|
|
283
360
|
## Notes
|
|
284
361
|
|
|
285
362
|
- Default output is top-to-bottom (TB) and rendered as a hop-based tree from the gateway(s).
|
|
286
363
|
- Nodes are color-coded by type (gateway/switch/AP/client) with a sensible default palette.
|
|
287
|
-
- PoE links are
|
|
364
|
+
- PoE links are annotated with a power icon when detected from `port_table`.
|
|
288
365
|
- Wireless client links render as dashed lines to indicate the last-known upstream.
|
|
289
|
-
- SVG output uses vendored device glyphs from `src/unifi_network_maps/assets/icons`.
|
|
290
|
-
- Isometric SVG output uses MIT-licensed icons from `markmanx/isopacks`.
|
|
291
366
|
- SVG port labels render inside child nodes for readability.
|
|
367
|
+
- Icon licenses and attribution are documented in [LICENSES.md](LICENSES.md).
|
|
292
368
|
|
|
293
369
|
|
|
294
370
|
## AI Disclosure
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
unifi_network_maps/__init__.py,sha256=
|
|
1
|
+
unifi_network_maps/__init__.py,sha256=X9pTeGHIYZtDOmfb9pnn2DEqWZMAyaPlqdFwEhsuSvk,22
|
|
2
2
|
unifi_network_maps/__main__.py,sha256=XsOjaqslAVgyVlOTokjVddZ2iT8apZXpJ_OB-9WEEe4,179
|
|
3
3
|
unifi_network_maps/adapters/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
|
|
4
4
|
unifi_network_maps/adapters/config.py,sha256=gnvgAj9wPmYGGQfhcZSHRkcVGojODUYIINU_ztTcuUc,1671
|
|
5
|
-
unifi_network_maps/adapters/unifi.py,sha256=
|
|
5
|
+
unifi_network_maps/adapters/unifi.py,sha256=R5R-blCqruM-FS5BNXdQvDzNfTtHtnEL8i_aRmvrVDg,19073
|
|
6
6
|
unifi_network_maps/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
unifi_network_maps/assets/icons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
unifi_network_maps/assets/icons/access-point.svg,sha256=RJOgO2s9Ino5lWRrh4V7q8Jdwffros5bQq3UeDuQYF4,742
|
|
@@ -34,7 +34,6 @@ unifi_network_maps/assets/icons/isometric/office.svg,sha256=0Uo-uH931RLW3VXgL8fz
|
|
|
34
34
|
unifi_network_maps/assets/icons/isometric/package-module.svg,sha256=nlC_IX-toVU9d2I6DSJ4mI9nrlvi_-KBkxCVWG0HvWQ,2036
|
|
35
35
|
unifi_network_maps/assets/icons/isometric/paymentcard.svg,sha256=qvzkYH8dEmyWEbHKg8xo-CbwNHSskQuV5FVbYz2Lalk,6026
|
|
36
36
|
unifi_network_maps/assets/icons/isometric/plane.svg,sha256=sZbJKpD22pMV0DBeMbtBDAXEx8J4V9DvXUKOrnif788,13712
|
|
37
|
-
unifi_network_maps/assets/icons/isometric/printer.svg,sha256=qMM-SawojVCp_NLMDuXWOxWHJHuHjl8JjYojU6ZnHoc,10348
|
|
38
37
|
unifi_network_maps/assets/icons/isometric/pyramid.svg,sha256=UeGfxq7XqKGLCxg-h8iS8E-HnDievrI4rngRM2O5KZg,2000
|
|
39
38
|
unifi_network_maps/assets/icons/isometric/queue.svg,sha256=MiFWbzikrEejXu_NDQEyRVa9a37xvykWV0V92NxVk4I,2595
|
|
40
39
|
unifi_network_maps/assets/icons/isometric/router.svg,sha256=Ah_nQpBsL0Me3tFK4yMZIvykC9rmqEuMxMfDTzpHG50,3192
|
|
@@ -48,40 +47,83 @@ unifi_network_maps/assets/icons/isometric/truck-2.svg,sha256=I7MFGbXW2fmr9WdD29N
|
|
|
48
47
|
unifi_network_maps/assets/icons/isometric/truck.svg,sha256=BrpBr9Qf8hplQIrBpfhN2USxUlPvGCKahlV5e-G13r0,7195
|
|
49
48
|
unifi_network_maps/assets/icons/isometric/user.svg,sha256=bYpr0t8rETJ1M7RDTWaNkK-nfF3kq9eMxmxYCthNmE0,23026
|
|
50
49
|
unifi_network_maps/assets/icons/isometric/vm.svg,sha256=in6x9cdS6JgQVJl0KAbA79rap4X140dfIBCuxmgQI7s,3694
|
|
51
|
-
unifi_network_maps/assets/
|
|
52
|
-
unifi_network_maps/assets/
|
|
50
|
+
unifi_network_maps/assets/icons/modern/ap.svg,sha256=DXSioH4DKbESAaXfulVBJ4rCW2F08yISq3ks_QG8T4g,1864
|
|
51
|
+
unifi_network_maps/assets/icons/modern/camera.svg,sha256=2xTOJ9aQZjeTTu35gaqYAGeKcHZa8ucSuY8l3cTZh1E,536
|
|
52
|
+
unifi_network_maps/assets/icons/modern/client.svg,sha256=7gx_ic2RZ1khikABrbFpFyqTgA-wUcmP5Yy5KN1NLkY,1049
|
|
53
|
+
unifi_network_maps/assets/icons/modern/game_console.svg,sha256=RqLZR3i86-EeHxOtoTWHJ0fi8vabQwmgWMYhiGB_UjY,1179
|
|
54
|
+
unifi_network_maps/assets/icons/modern/gateway.svg,sha256=FyMSbEF94sd5QrFc0SEUzmHbPtNvhh3m7BGfBHU-O2g,2549
|
|
55
|
+
unifi_network_maps/assets/icons/modern/iot.svg,sha256=Rk9TPeH2A5MHQNxjtfkhodS3KgNP_WQUQxozVvrc_x0,624
|
|
56
|
+
unifi_network_maps/assets/icons/modern/nas.svg,sha256=Shtk13dex90tvQl9FihOBZw8-kQQr5c8Q_49XqEQ3es,704
|
|
57
|
+
unifi_network_maps/assets/icons/modern/other.svg,sha256=3xN6npx1n-WMWI9aTTEI0aD41uRDz-E_i8dGXBbchfg,1073
|
|
58
|
+
unifi_network_maps/assets/icons/modern/phone.svg,sha256=FY9K8LneCwcIq_48v0Ib-xJBVZsil5wCe9FWTdAu0Ns,844
|
|
59
|
+
unifi_network_maps/assets/icons/modern/printer.svg,sha256=oU9vIcYrkPqFvTeucA17Z9P_DSH5Z06bxwC_79_QAQw,1194
|
|
60
|
+
unifi_network_maps/assets/icons/modern/speaker.svg,sha256=DndlR494zJBLV_IHl4f50uw2PgKll2xHUu-8Km7Z86M,832
|
|
61
|
+
unifi_network_maps/assets/icons/modern/switch.svg,sha256=3xN6npx1n-WMWI9aTTEI0aD41uRDz-E_i8dGXBbchfg,1073
|
|
62
|
+
unifi_network_maps/assets/icons/modern/tv.svg,sha256=sbk65ecMUSZfUjabJ6N2vrmcUBdrSqXbJRyGi1ZSbvM,748
|
|
63
|
+
unifi_network_maps/assets/icons/modern-flat/ap.svg,sha256=AqnJPFfx7ZW2oT1NxXiVYK_8MqMmfPxD0zai1pN6KQs,623
|
|
64
|
+
unifi_network_maps/assets/icons/modern-flat/camera.svg,sha256=MGuvZ69wl2EOWYehiOeYZ3EudfseQsppBSqrgknWs_0,380
|
|
65
|
+
unifi_network_maps/assets/icons/modern-flat/client.svg,sha256=wsqPHONH2zGXGMEMCeGWPRIdfGitvivk11CHccD-xdg,545
|
|
66
|
+
unifi_network_maps/assets/icons/modern-flat/game_console.svg,sha256=um_ttY10CQc8wCqyIiNfMsrF8abxuN_7J8YFsA1uQAM,1037
|
|
67
|
+
unifi_network_maps/assets/icons/modern-flat/gateway.svg,sha256=1HcmNAA1qFoyKovHBPH-C0-wu2bI1JvzuNBbA8wVons,2240
|
|
68
|
+
unifi_network_maps/assets/icons/modern-flat/iot.svg,sha256=LgQ_nvimSjjzi47rsi-QpO9LQi16XUUZO1NykpVoXlM,504
|
|
69
|
+
unifi_network_maps/assets/icons/modern-flat/nas.svg,sha256=hO-h4AuXRzRJuCLErM-WbhnUVWHtXCY9keTBbzCVeVA,547
|
|
70
|
+
unifi_network_maps/assets/icons/modern-flat/other.svg,sha256=6X9QXN20vN9WgdfMFAQO573R06RwVtaaujJc81bOZHM,525
|
|
71
|
+
unifi_network_maps/assets/icons/modern-flat/phone.svg,sha256=jVL-EK98Skf3GnKnHXgMXCsIDLIZ4HRyDABeQeO3GFE,668
|
|
72
|
+
unifi_network_maps/assets/icons/modern-flat/printer.svg,sha256=NN9VrbWZFh2xw6CbVjM_CgvUrmyuFPHG-NAcoB8cakQ,1037
|
|
73
|
+
unifi_network_maps/assets/icons/modern-flat/speaker.svg,sha256=S7ZP52pXkjxWBea9b3trcoSRtUus7wJin4mSv-FrKGA,656
|
|
74
|
+
unifi_network_maps/assets/icons/modern-flat/switch.svg,sha256=qIKxevcxdS1staZZwemnX290mLpv4vjBKx8IXR8oYPk,684
|
|
75
|
+
unifi_network_maps/assets/icons/modern-flat/tv.svg,sha256=IGV1hpHuK6GtnLCJdC0CHFNN6pjZmTxPbNNx5-V-6pA,572
|
|
76
|
+
unifi_network_maps/assets/themes/dark.yaml,sha256=XfVPnDBstNQL-uW8Ev-oRXH3q7Wd_JLzlzCaXwBvVLc,1969
|
|
77
|
+
unifi_network_maps/assets/themes/default.yaml,sha256=_HkWfetPwUVLh_21ZdYgLSy2HogW0sR0gZxppW8sWF4,1688
|
|
78
|
+
unifi_network_maps/assets/themes/minimal-dark.yaml,sha256=k2MXmy_AOmTBASqFfgpBpMDVinCIQpXyouQnQH3BnhU,1905
|
|
79
|
+
unifi_network_maps/assets/themes/minimal.yaml,sha256=3rSdlnpj0uFl7H90lQYbYXo2vRKGPL6SiDbQxChDwVI,1732
|
|
80
|
+
unifi_network_maps/assets/themes/unifi-dark.yaml,sha256=AlbyfQx5b36v2Wtv5fEVWYibmH5imwuZm2qK5ptvkMA,1852
|
|
81
|
+
unifi_network_maps/assets/themes/unifi.yaml,sha256=yZDibrPgG8uadhB888yDr5m1M2axIgJ9yfgTCJnSdnQ,1722
|
|
53
82
|
unifi_network_maps/cli/__init__.py,sha256=cds9GvFNZmYAR22Ab3TSzfriSAW--kf9jvC5U-21AoA,70
|
|
54
83
|
unifi_network_maps/cli/__main__.py,sha256=nK_jh78VW3h3DRvSpjzpcf64zkCqniP2k82xUR9Hw2I,147
|
|
55
|
-
unifi_network_maps/cli/args.py,sha256=
|
|
56
|
-
unifi_network_maps/cli/main.py,sha256=
|
|
57
|
-
unifi_network_maps/cli/render.py,sha256=
|
|
58
|
-
unifi_network_maps/cli/runtime.py,sha256=
|
|
84
|
+
unifi_network_maps/cli/args.py,sha256=vkCQlRDzlsDWKZSQ5F5ucV3J8_hh9mEzAAQ8zZrtx5s,7281
|
|
85
|
+
unifi_network_maps/cli/main.py,sha256=EpWVf_huYnD6wT-w9ckETAKgNzh9Q1nBdRjSzbxyXFQ,7476
|
|
86
|
+
unifi_network_maps/cli/render.py,sha256=PzUqmA6wb2U7guVpH9yKq9hwksC_eUedVhObwOwOYN4,9907
|
|
87
|
+
unifi_network_maps/cli/runtime.py,sha256=N8BREwwoXA_qxOBDCwrIqggSdOZh3b3cP73v0YMPj1A,6029
|
|
59
88
|
unifi_network_maps/io/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
|
|
60
|
-
unifi_network_maps/io/debug.py,sha256=
|
|
61
|
-
unifi_network_maps/io/export.py,sha256=
|
|
89
|
+
unifi_network_maps/io/debug.py,sha256=78Z-RcONvh4VpAoFsN3jG_LfyZiiNKJe1ht1G5Ln3Us,1770
|
|
90
|
+
unifi_network_maps/io/export.py,sha256=tV0epeWLI2YC7Ko0bfMhTDoty5W65lYiXSC7LyZ_9ds,1235
|
|
62
91
|
unifi_network_maps/io/mkdocs_assets.py,sha256=pszCivIql3maaLw7KFcAioQaVcyLltXgg-fPXPBvvEk,716
|
|
63
|
-
unifi_network_maps/io/mock_data.py,sha256=
|
|
92
|
+
unifi_network_maps/io/mock_data.py,sha256=lX-XMjERFqle0tlCPLXcRXzBjm-Bss5Kqz3W4lMNlFY,1570
|
|
64
93
|
unifi_network_maps/io/mock_generate.py,sha256=xiJz_qtNW7iVj7dezLNyVXAHtCHAi8U5CSXK5mrJE4U,233
|
|
65
|
-
unifi_network_maps/io/paths.py,sha256=
|
|
94
|
+
unifi_network_maps/io/paths.py,sha256=Set88rDOscAyG__2B3WZutVBLLNBFfISX9jSbw0ekTg,6033
|
|
66
95
|
unifi_network_maps/model/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
|
|
96
|
+
unifi_network_maps/model/classify.py,sha256=AthkPngSpWr_OliI3-iaTyungc_DdU93_QPc_K4Qvv8,7263
|
|
97
|
+
unifi_network_maps/model/clients.py,sha256=bugJ3ZA-hvAiZA31QYgCiixLOwJGpXyZOh-wIMg_LTY,9024
|
|
98
|
+
unifi_network_maps/model/connection.py,sha256=zeYzvixs-5_hnOeOuCgAD83nfY8e4HuH1XteLExWCck,920
|
|
99
|
+
unifi_network_maps/model/diff.py,sha256=vvRi-XtHbTnrZpWRODi56E4CajUhW3iqODOCu2s7lbY,19158
|
|
100
|
+
unifi_network_maps/model/edges.py,sha256=poXYE8uBsDOVP54b7piHCLWC_6HD0k4BTMQ9TJVOc5s,17423
|
|
101
|
+
unifi_network_maps/model/helpers.py,sha256=QhEq3ONzdOXINDVi9cS-5n85ftvyLd7c0cFuL69PYe8,1839
|
|
67
102
|
unifi_network_maps/model/labels.py,sha256=m_k8mbzWtOSDOjjHhLUqwIw93pg98HAtGtHkiERXmek,1135
|
|
68
|
-
unifi_network_maps/model/lldp.py,sha256=
|
|
69
|
-
unifi_network_maps/model/mock.py,sha256=
|
|
103
|
+
unifi_network_maps/model/lldp.py,sha256=Ib8uZpeWocGBxcXglSdWdcN-jqsjMB0I1D-XRoQjkvY,2990
|
|
104
|
+
unifi_network_maps/model/mock.py,sha256=s8RE88M4OOzi0lgUdxvwdhtKb08rdgI96h66NLMu8lw,12998
|
|
70
105
|
unifi_network_maps/model/ports.py,sha256=o3NBlXcC5VV5iPWJsO4Ll1mRKJZC0f8zTHdlkkE34GU,609
|
|
71
|
-
unifi_network_maps/model/
|
|
72
|
-
unifi_network_maps/model/
|
|
106
|
+
unifi_network_maps/model/snapshot.py,sha256=P3Nb98KpIWoqz6FH3QMMEdR9wdLgbNhBLiMrlgA_TQA,8961
|
|
107
|
+
unifi_network_maps/model/topology.py,sha256=F8W3v488QokXW_6_GMrbQK8jyWwSowJ_EB6lB2X2JbY,5688
|
|
108
|
+
unifi_network_maps/model/topology_coerce.py,sha256=NRB5XpuFjuuzccNVvZtAVJy920LIJa7zhXpOtLuyYao,12020
|
|
109
|
+
unifi_network_maps/model/vlans.py,sha256=SKcEXFWSpoHYVT-5vf-nfEPxXCL-UWOtSGDzK-zYqwA,3734
|
|
110
|
+
unifi_network_maps/model/wan.py,sha256=22xkGXJPuC1fHor_iMEIOlH-ERHpaxeCmK9dIXGEKQI,4112
|
|
73
111
|
unifi_network_maps/render/__init__.py,sha256=nzx1KsiYalL_YuXKE6acW8Dj5flmMg0-i4gyYO0gV54,22
|
|
74
|
-
unifi_network_maps/render/device_ports_md.py,sha256=
|
|
112
|
+
unifi_network_maps/render/device_ports_md.py,sha256=2SvSEqOWVqtsB7Fege9F4ZUtLYUym7haJx1jR2CUi-A,14221
|
|
113
|
+
unifi_network_maps/render/device_summary.py,sha256=InXpsk0Cl87PaFK3Oq_1rqTmt13PcLfDsRtxuvPgO7s,1902
|
|
75
114
|
unifi_network_maps/render/legend.py,sha256=TmZsxgCVOM2CZImI9zgRVyzrcg01HZFDj9F715d4CGo,772
|
|
76
|
-
unifi_network_maps/render/lldp_md.py,sha256=
|
|
77
|
-
unifi_network_maps/render/markdown_tables.py,sha256=
|
|
78
|
-
unifi_network_maps/render/mermaid.py,sha256=
|
|
115
|
+
unifi_network_maps/render/lldp_md.py,sha256=5AnIXyCr6O7kTD-yKtxbVo3mqrZG9yYYpUBFj4ZU0aY,8503
|
|
116
|
+
unifi_network_maps/render/markdown_tables.py,sha256=Tl6PkMLRi2OWvID1ok5HK22APpJHCq_DpgF1oA69gAU,840
|
|
117
|
+
unifi_network_maps/render/mermaid.py,sha256=Qe7drmFAVUB4yH4GTdkOWCSemhfAElyUrb9uFiv_Lbs,8677
|
|
79
118
|
unifi_network_maps/render/mermaid_theme.py,sha256=7nqLlvhaUA4z0YOs0ByEx_yHWcQD_hJJjhDtRcbSpg4,1781
|
|
80
|
-
unifi_network_maps/render/mkdocs.py,sha256=
|
|
81
|
-
unifi_network_maps/render/svg.py,sha256=
|
|
82
|
-
unifi_network_maps/render/
|
|
119
|
+
unifi_network_maps/render/mkdocs.py,sha256=VD0OHD2FHOgHoBiKECFPEw_bimUE9ybu2kzfF-n4j_I,5416
|
|
120
|
+
unifi_network_maps/render/svg.py,sha256=nEQEB7H-vc3FDLZ5exgSlmQCfjCA5WEqKb3NzSx3y_c,31611
|
|
121
|
+
unifi_network_maps/render/svg_icons.py,sha256=14jeLDIXNZTjBmei_Befm6NdHVx9qcvqcToh6C7qsnQ,7693
|
|
122
|
+
unifi_network_maps/render/svg_isometric.py,sha256=2tyFEfQBrWchb9S-BRmv-qtCAtBePVQ-fAjdm8K_ACI,39956
|
|
123
|
+
unifi_network_maps/render/svg_labels.py,sha256=p9iy8D51NMZJ2gwEHuiyLq2JAkf6J_zlUNBKfXuHACQ,6095
|
|
124
|
+
unifi_network_maps/render/svg_theme.py,sha256=YueqxAneLL8FL2JVk00-rGn3Sx8A1kYcSkF0UwTDbUw,7665
|
|
83
125
|
unifi_network_maps/render/templating.py,sha256=VJbXzZFBPjL8LFFPcLf_EU5Eu53GN9_vpten2Mf9A-k,576
|
|
84
|
-
unifi_network_maps/render/theme.py,sha256=
|
|
126
|
+
unifi_network_maps/render/theme.py,sha256=X66FBJaddv39Y5I18qfx8S7Whbzf3Xw72s8yvGEr1ns,8300
|
|
85
127
|
unifi_network_maps/render/templates/device_port_block.md.j2,sha256=ZfyE_lEHz6ZyYRxAYhAhwpxlLczn_U9eTkRLUrwU5Io,50
|
|
86
128
|
unifi_network_maps/render/templates/legend_compact.html.j2,sha256=DaY2m6N6Yd7qNKLuB5Bc395MHfrKOU9myAZvgcJrhpE,738
|
|
87
129
|
unifi_network_maps/render/templates/lldp_device_section.md.j2,sha256=ewX-SBrL5Hn1kuwDKo4fqqetj9tTpR7LQavSn6No_yY,206
|
|
@@ -93,9 +135,9 @@ unifi_network_maps/render/templates/mkdocs_html_block.html.j2,sha256=5l5-BbNujOc
|
|
|
93
135
|
unifi_network_maps/render/templates/mkdocs_legend.css.j2,sha256=tkTI-RagBSgdjUygVenlTsQFenU09ePbXOfDt_Q7YRM,612
|
|
94
136
|
unifi_network_maps/render/templates/mkdocs_legend.js.j2,sha256=qMYyCKsJ84uXf1wGgzbc7Bc49RU4oyuaGK9KrgQDQEI,685
|
|
95
137
|
unifi_network_maps/render/templates/mkdocs_mermaid_block.md.j2,sha256=9IncllWQpoI8BN3A7b2zOQ5cksj97ddsjHJ-aBhpw7o,66
|
|
96
|
-
unifi_network_maps-1.
|
|
97
|
-
unifi_network_maps-1.
|
|
98
|
-
unifi_network_maps-1.
|
|
99
|
-
unifi_network_maps-1.
|
|
100
|
-
unifi_network_maps-1.
|
|
101
|
-
unifi_network_maps-1.
|
|
138
|
+
unifi_network_maps-1.5.0.dist-info/licenses/LICENSE,sha256=mYo1siIIfIwyfdOuK2-Zt0ij2xBTii2hnpeTu79nD80,1074
|
|
139
|
+
unifi_network_maps-1.5.0.dist-info/METADATA,sha256=KKzcN2hTcdVcVorizJbEKdbwN_dfAJrd5MxugPwLbqw,12881
|
|
140
|
+
unifi_network_maps-1.5.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
141
|
+
unifi_network_maps-1.5.0.dist-info/entry_points.txt,sha256=cdJ7jsBgNgHxSflYUOqgz5BbvuM0Nnh-x8_Hbyh_LFg,67
|
|
142
|
+
unifi_network_maps-1.5.0.dist-info/top_level.txt,sha256=G0rUX1PNfVCn1u-KtB6QjFQHopCOVLnPMczvPOoraHg,19
|
|
143
|
+
unifi_network_maps-1.5.0.dist-info/RECORD,,
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
-
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
4
|
-
width="168.39999px" height="154.8px" viewBox="0 0 168.39999 154.8" enable-background="new 0 0 168.39999 154.8"
|
|
5
|
-
xml:space="preserve">
|
|
6
|
-
<g id="Layer_1_1_">
|
|
7
|
-
<g id="Layer_3">
|
|
8
|
-
</g>
|
|
9
|
-
<g id="Layer_6">
|
|
10
|
-
</g>
|
|
11
|
-
<path fill="#D2D3D5" d="M144.5,84c-0.2,2.2-1.39999,4.3-3.5,5.5l-29.2,17.6c-5.8,3.5-13,3.5-18.8,0L27.8,68c-2.3-1.4-3.4-3.6-3.6-6
|
|
12
|
-
v-0.1v34.6c-0.1,2.6,1,5.2,3.6,6.7l65.09999,39.09999c5.8,3.5,13,3.5,18.8,0l29.2-17.6c2.60001-1.5,3.8-4.3,3.5-6.9V84H144.5z"/>
|
|
13
|
-
<path fill="#5D6366" stroke="#000000" stroke-width="2" stroke-miterlimit="10" d="M58.2,37L27.8,55.3c-4.8,2.9-4.8,9.8,0,12.7
|
|
14
|
-
l65.09999,39.1c5.8,3.5,13,3.5,18.8,0l29.2-17.6c4.8-2.9,4.8-9.8,0-12.7L74.6,37C69.6,33.9,63.3,34,58.2,37z"/>
|
|
15
|
-
<path fill="#E9E9EA" stroke="#000000" stroke-width="0.25" stroke-miterlimit="10" d="M83.7,42.5L71.2,50c-4.6,2.8-4.6,9.5,0,12.3
|
|
16
|
-
L101,80.2c5.7,3.4,12.8,3.4,18.5,0L133,72L83.7,42.5z"/>
|
|
17
|
-
<g>
|
|
18
|
-
<rect x="125.3864" y="62.39583" fill="#717677" width="0" height="10.10001"/>
|
|
19
|
-
<path fill="#717677" d="M101,80.2L94.1,76L62.8,89l8.7,5.2l31.5-13C102.3,80.9,101.6,80.5,101,80.2z"/>
|
|
20
|
-
</g>
|
|
21
|
-
<path fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" d="M58.2,37L27.8,55.3c-4.8,2.9-4.8,9.8,0,12.7
|
|
22
|
-
l65.09999,39.1c5.8,3.5,13,3.5,18.8,0l29.2-17.6c4.8-2.9,4.8-9.8,0-12.7L74.6,37C69.6,33.9,63.3,34,58.2,37z"/>
|
|
23
|
-
<path fill="#1E2226" stroke="#000000" stroke-miterlimit="10" d="M36.7,108.7L86,138.3v-17.1c0-3.9-2-7.5-5.4-9.5L41.1,88
|
|
24
|
-
c-1.9-1.2-4.4,0.2-4.4,2.5C36.7,90.5,36.7,108.7,36.7,108.7z"/>
|
|
25
|
-
<path fill="#343A3D" d="M133.10001,72.1l13-26.4c0.5-2.9-0.8-5.7-3.3-7.2l-40.9-24.6c-2.1-1.3-4.9,0-5.3,2.4l-13,26.1
|
|
26
|
-
L133.10001,72.1z"/>
|
|
27
|
-
<g>
|
|
28
|
-
<path fill="#878788" d="M20.9,116.8L20.9,116.8v0.1C20.9,116.9,20.9,116.9,20.9,116.8z"/>
|
|
29
|
-
<path fill="#878788" d="M86,133.10001l-13.4,8.10001c-5.7,3.39999-12.8,3.39999-18.5,0l-29.8-17.9c-2.2-1.3-3.4-3.6-3.5-5.9v5l0,0
|
|
30
|
-
c0,2.4,1.2,4.7,3.5,6.10001l29.8,17.89999c2.8,1.7,6,2.5,9.1,2.60001l0,0l0,0c3.2,0,6.5-0.8,9.4-2.60001L86,138.3l0,0l0,0
|
|
31
|
-
V133.10001z"/>
|
|
32
|
-
</g>
|
|
33
|
-
<path fill="#5F6568" stroke="#000000" stroke-miterlimit="10" d="M80.7,111.7L52,94.5l-15.2,9.1h-0.1l-12.5,7.6
|
|
34
|
-
c-4.6,2.8-4.6,9.5,0,12.3L54,141.39999c5.7,3.39999,12.8,3.39999,18.5,0l9.1-5.5l0,0l4.3-2.5v-12C86,117.3,84,113.7,80.7,111.7z"/>
|
|
35
|
-
<path fill="#E9E9EA" d="M86,121.2c0-3.9-2-7.5-5.4-9.5L58.4,98.4l-31.8,19.1l35.6,21.39999L86,124.6V121.2z"/>
|
|
36
|
-
<g>
|
|
37
|
-
<path fill="#000000" d="M108.6,11l33.9,20.4l-2.60001,5.3l2.89999,1.8c2.5,1.5,3.8,4.4,3.3,7.2l-13,26.4l-3.7-2.2l3.7,2.2l0,0l7.8,4.7
|
|
38
|
-
c2.39999,1.4,3.5,3.8,3.60001,6.2l0,0l0,0l0,0v-0.1v0.1v0.1v4.7c0,0.2,0,0.5,0,0.7v29.2c0.2,2.6-1,5.4-3.5,6.9l-29.2,17.6
|
|
39
|
-
c-2.9,1.7-6.1,2.60001-9.4,2.60001s-6.5-0.89999-9.4-2.60001l-6.9-4.10001v0.10001l0,0l0,0l-13.4,8.10001
|
|
40
|
-
c-2.9,1.7-6.1,2.60001-9.3,2.60001h-0.1l0,0l0,0c-3.2,0-6.3-0.89999-9.1-2.60001l-29.8-17.89999c-2.3-1.4-3.5-3.8-3.5-6.1l0,0v-5
|
|
41
|
-
c0-0.2,0-0.4,0-0.6v-0.1l0,0c0,0,0,0,0,0.1c0,0,0,0,0-0.1l0,0c0.1-2.2,1.3-4.4,3.4-5.7l8.3-5l-4.8-2.9c-2.5-1.5-3.7-4.2-3.6-6.7
|
|
42
|
-
V66.8c0-0.1,0-0.2,0-0.4c0,0,0-3.8,0-4.6v-0.1l0,0c0-2.5,1.2-4.9,3.6-6.4L58.2,37c2.5-1.5,5.4-2.3,8.2-2.3c2.8,0,5.7,0.8,8.2,2.3
|
|
43
|
-
l9,5.4l13-26.1c0.3-1.8,1.9-2.9,3.5-2.9c0.6,0,1.2,0.2,1.8,0.5l4.1,2.4L108.6,11 M25.8,66.1C25.8,66.1,25.7,66.1,25.8,66.1
|
|
44
|
-
C25.7,66.1,25.7,66.1,25.8,66.1C25.7,66.1,25.8,66.1,25.8,66.1 M26.5,67l0.1,0.1C26.6,67,26.6,67,26.5,67
|
|
45
|
-
c-0.1-0.1-0.2-0.1-0.2-0.2l0,0C26.4,66.8,26.5,66.9,26.5,67 M27.8,68c-0.3-0.2-0.6-0.4-0.8-0.6l0,0C27.3,67.6,27.5,67.8,27.8,68
|
|
46
|
-
M144.5,83.3v0.1v0.1c0,0.1,0,0.1,0,0.2v0.5v-0.7C144.5,83.5,144.5,83.4,144.5,83.3 M144.3,84.7L144.3,84.7
|
|
47
|
-
C144.3,84.6,144.3,84.6,144.3,84.7C144.39999,84.6,144.39999,84.6,144.3,84.7C144.3,84.6,144.3,84.7,144.3,84.7 M144.10001,85.5
|
|
48
|
-
L144.10001,85.5c0-0.1,0-0.1,0-0.1l0,0V85.5 M143.8,86.4L143.8,86.4L143.8,86.4c0,0,0-0.1,0.10001-0.1v-0.1l0,0
|
|
49
|
-
C143.8,86.2,143.8,86.3,143.8,86.4 M143.3,87.2L143.3,87.2L143.3,87.2c0-0.1,0.10001-0.1,0.10001-0.2c0,0,0-0.1,0.10001-0.1
|
|
50
|
-
C143.39999,87,143.39999,87.1,143.3,87.2 M142.7,88L142.7,88L142.7,88c0.10001-0.1,0.10001-0.2,0.2-0.2c0,0,0-0.1,0.10001-0.1
|
|
51
|
-
C142.89999,87.7,142.8,87.9,142.7,88 M142,88.7L142,88.7L142,88.7c0.10001-0.1,0.2-0.2,0.39999-0.3c0,0,0,0,0.10001-0.1
|
|
52
|
-
C142.3,88.4,142.10001,88.6,142,88.7 M140.89999,89.5L140.89999,89.5L140.89999,89.5L140.89999,89.5L140.89999,89.5
|
|
53
|
-
c0.3-0.2,0.5-0.3,0.8-0.5l0,0C141.5,89.1,141.2,89.3,140.89999,89.5 M21.1,119.2L21.1,119.2L21.1,119.2 M21.4,120
|
|
54
|
-
C21.4,120,21.4,120.1,21.4,120C21.4,120.1,21.4,120,21.4,120L21.4,120L21.4,120 M21.8,120.8C21.8,120.9,21.8,120.9,21.8,120.8
|
|
55
|
-
C21.8,120.9,21.8,120.9,21.8,120.8L21.8,120.8L21.8,120.8 M22.3,121.6l0.1,0.1C22.4,121.7,22.4,121.7,22.3,121.6l-0.1-0.1
|
|
56
|
-
C22.3,121.5,22.3,121.6,22.3,121.6 M23,122.3c0.1,0.1,0.1,0.1,0.2,0.2C23.1,122.5,23.1,122.4,23,122.3s-0.1-0.1-0.2-0.2
|
|
57
|
-
C22.9,122.2,22.9,122.3,23,122.3 M24.2,123.3l0.1,0.1C24.3,123.3,24.2,123.3,24.2,123.3c-0.2-0.1-0.4-0.3-0.7-0.5
|
|
58
|
-
C23.7,123,23.9,123.1,24.2,123.3 M24.2,61.6v0.1l0,0C24.2,61.8,24.2,61.7,24.2,61.6L24.2,61.6 M107.8,8.2l-1,1.9l-1.7,3.4
|
|
59
|
-
l-2.2-1.3c-0.9-0.5-1.9-0.8-2.8-0.8c-2.6,0-4.8,1.8-5.4,4.2l-11.9,24l-7.1-4.3c-2.8-1.7-6-2.6-9.2-2.6c-3.3,0-6.5,0.9-9.2,2.6
|
|
60
|
-
L26.8,53.6c-2.3,1.4-3.8,3.5-4.3,6h-0.2v2c0,0,0,0,0,0.1v0.1v4.6c0,0.1,0,0.3,0,0.4v29.6c-0.2,3.5,1.6,6.7,4.5,8.5l1.9,1.2
|
|
61
|
-
l-5.5,3.3c-2.4,1.4-3.9,3.7-4.3,6.4l-0.1,0.1v0.9v0.1c0,0.2,0,0.4,0,0.6v4.9c0,3.2,1.7,6.2,4.4,7.8l29.8,18
|
|
62
|
-
c2.9,1.7,6.2,2.7,9.6,2.8l0.5,0.3l0.6-0.3c3.5-0.10001,6.9-1,10-2.89999L86.2,140.5l5.7,3.39999
|
|
63
|
-
c3.1,1.89999,6.7,2.89999,10.4,2.89999s7.3-1,10.4-2.89999l29.2-17.6c3-1.8,4.8-5.2,4.5-8.7V88.7c0-0.2,0-0.5,0-0.7v-4.7v-0.2
|
|
64
|
-
v-0.1l0,0c-0.10001-3.3-1.8-6.2-4.5-7.9l-6.3-3.8l12.2-24.7l0.10001-0.3L148,46c0.7-3.7-1-7.4-4.2-9.3l-1.39999-0.8l1.8-3.6
|
|
65
|
-
l0.8-1.7l-1.60001-1L109.6,9.3L107.8,8.2L107.8,8.2z"/>
|
|
66
|
-
</g>
|
|
67
|
-
<path opacity="0.4" fill="#5D6366" enable-background="new " d="M80.7,111.7L58.4,98.4l-16.2,9.7l35.7,21.4l8.1-4.9v-3.4
|
|
68
|
-
C86,117.3,84,113.7,80.7,111.7z"/>
|
|
69
|
-
<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M86,121.2c0-3.9-2-7.5-5.4-9.5L58.4,98.4l-31.8,19.1l35.6,21.39999
|
|
70
|
-
L86,124.6V121.2z"/>
|
|
71
|
-
<g>
|
|
72
|
-
<path fill="#A8A8A8" d="M142.89999,87.7c0,0,0.10001-0.1,0.10001-0.2C143,87.6,143,87.7,142.89999,87.7z"/>
|
|
73
|
-
<path fill="#A8A8A8" d="M141.7,89c0.10001,0,0.10001-0.1,0.2-0.2C141.8,88.9,141.7,88.9,141.7,89z"/>
|
|
74
|
-
<path fill="#A8A8A8" d="M144.3,84.7C144.3,84.6,144.3,84.6,144.3,84.7C144.3,84.6,144.3,84.6,144.3,84.7z"/>
|
|
75
|
-
<path fill="#A8A8A8" d="M143.39999,87c0,0,0-0.1,0.10001-0.1L143.39999,87z"/>
|
|
76
|
-
<path fill="#A8A8A8" d="M144.10001,85.5C144.10001,85.4,144.10001,85.4,144.10001,85.5
|
|
77
|
-
C144.10001,85.4,144.10001,85.4,144.10001,85.5z"/>
|
|
78
|
-
<path fill="#A8A8A8" d="M143.8,86.3C143.8,86.2,143.8,86.2,143.8,86.3C143.8,86.2,143.8,86.2,143.8,86.3z"/>
|
|
79
|
-
<path fill="#A8A8A8" d="M142.5,88.2c-0.10001,0.1-0.10001,0.1-0.2,0.2C142.39999,88.3,142.5,88.3,142.5,88.2z"/>
|
|
80
|
-
<path fill="#A8A8A8" d="M100.4,109.6c0.5,0.1,1,0.1,1.5,0.1C101.3,109.6,100.9,109.6,100.4,109.6z"/>
|
|
81
|
-
<path fill="#A8A8A8" d="M106.1,109.2c-1.4,0.3-2.9,0.4-4.3,0.4C103.3,109.7,104.7,109.6,106.1,109.2z"/>
|
|
82
|
-
<path fill="#A8A8A8" d="M110.5,107.7c0.4-0.2,0.8-0.4,1.2-0.7C111.3,107.3,110.9,107.5,110.5,107.7z"/>
|
|
83
|
-
<path fill="#A8A8A8" d="M144.5,88.6c0,0.2,0,0.4-0.10001,0.6l0,0l0,0c-0.3,2-1.5,3.9-3.5,5.1l-29.2,17.6
|
|
84
|
-
c-3.5,2.1-7.4,2.9-11.3,2.5v30.39999c3.9,0.39999,7.8-0.39999,11.3-2.5l29.2-17.6c2.60001-1.5,3.8-4.3,3.5-6.9V88.6H144.5z"/>
|
|
85
|
-
<path fill="#A8A8A8" d="M109.2,108.3c0.3-0.1,0.6-0.3,0.9-0.4C109.8,108.1,109.5,108.2,109.2,108.3z"/>
|
|
86
|
-
<path fill="#A8A8A8" d="M107.8,108.8c0.3-0.1,0.6-0.2,1-0.3C108.4,108.6,108.1,108.7,107.8,108.8z"/>
|
|
87
|
-
<path fill="#A8A8A8" d="M106.3,109.2c0.4-0.1,0.8-0.2,1.2-0.3C107.1,109,106.7,109.1,106.3,109.2z"/>
|
|
88
|
-
</g>
|
|
89
|
-
<g>
|
|
90
|
-
<path fill="#868687" d="M144.5,83.1V83V83.1L144.5,83.1z"/>
|
|
91
|
-
<path fill="#868687" d="M144.5,83.5v0.9v-0.5c-0.2,2.2-1.39999,4.4-3.5,5.7l-29.2,17.6c-5.8,3.5-13,3.5-18.8,0L27.8,68
|
|
92
|
-
c-2.4-1.4-3.6-3.9-3.6-6.3l0,0v4.8c0,0.1,0,0.3,0,0.4c0.1,2.4,1.3,4.7,3.6,6L92.89999,112c5.8,3.5,13,3.5,18.8,0l29.2-17.6
|
|
93
|
-
c2-1.2,3.10001-3.1,3.5-5.1l0,0l0,0C144.5,88.9,144.5,88.4,144.5,88v-4.7C144.5,83.3,144.5,83.4,144.5,83.5z"/>
|
|
94
|
-
</g>
|
|
95
|
-
<g>
|
|
96
|
-
<rect x="102.08109" y="38.11023" fill="#717677" width="0" height="30.70004"/>
|
|
97
|
-
<path fill="#717677" d="M71.2,62.3c-2.9-1.8-4-5.1-3.2-8L30.7,69.7l26.4,15.8l31.3-13L71.2,62.3z"/>
|
|
98
|
-
</g>
|
|
99
|
-
<g>
|
|
100
|
-
<path fill="#3B4044" d="M100,114.2v-4.9"/>
|
|
101
|
-
<path fill="#3B4044" d="M111.6,111.8l29.2-17.6c2-1.2,3.10001-3.1,3.5-5.1l0,0l0,0c0.10001-0.4,0.10001-0.9,0.10001-1.3v-4.7
|
|
102
|
-
c0,0.1,0,0.2,0,0.2v0.9v-0.5c-0.2,2.2-1.39999,4.4-3.5,5.7l-29.2,17.6c-3.6,2.1-7.7,3-11.7,2.5v4.9
|
|
103
|
-
C104,114.7,108.1,113.9,111.6,111.8z"/>
|
|
104
|
-
</g>
|
|
105
|
-
<g>
|
|
106
|
-
<path fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" d="M144.5,83.1V83V83.1L144.5,83.1z"/>
|
|
107
|
-
<path fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" d="M144.5,83.5v0.9v-0.5
|
|
108
|
-
c-0.2,2.2-1.39999,4.4-3.5,5.7l-29.2,17.6c-5.8,3.5-13,3.5-18.8,0L27.8,68c-2.4-1.4-3.6-3.9-3.6-6.3l0,0v4.8c0,0.1,0,0.3,0,0.4
|
|
109
|
-
c0.1,2.4,1.3,4.7,3.6,6L92.89999,112c5.8,3.5,13,3.5,18.8,0l29.2-17.6c2-1.2,3.10001-3.1,3.5-5.1l0,0l0,0
|
|
110
|
-
C144.5,88.9,144.5,88.4,144.5,88v-4.7C144.5,83.3,144.5,83.4,144.5,83.5z"/>
|
|
111
|
-
</g>
|
|
112
|
-
<ellipse fill="#C9C9C9" stroke="#000000" stroke-miterlimit="10" cx="54.5" cy="50.7" rx="5.3" ry="3.8"/>
|
|
113
|
-
<ellipse fill="#51AD44" stroke="#000000" stroke-miterlimit="10" cx="45.3" cy="56.5" rx="3.4" ry="2.5"/>
|
|
114
|
-
<ellipse fill="#FC9603" stroke="#000000" stroke-miterlimit="10" cx="37.6" cy="61.4" rx="3.4" ry="2.5"/>
|
|
115
|
-
<path fill="#343A3D" stroke="#000000" stroke-miterlimit="10" d="M83.7,42.5L71.2,50c-4.6,2.8-4.6,9.5,0,12.3L101,80.2
|
|
116
|
-
c5.7,3.4,12.8,3.4,18.5,0L133,72L83.7,42.5z"/>
|
|
117
|
-
<polygon fill="#FFFFFF" stroke="#000000" stroke-miterlimit="10" points="121.1,74.5 142.5,31.4 108.6,11 87.3,54.1 "/>
|
|
118
|
-
<path opacity="0.3" enable-background="new " d="M165.7,115.6l-21.2-13.5v15.8c0.2,2.6-1,5.4-3.5,6.9l-29.2,17.60001
|
|
119
|
-
c-3,1.8-6.4,2.7-9.7,2.60001l-1.5,2.10001l29.3-2.2l36.09999-20.3C169.3,122.5,169.2,117.5,165.7,115.6z"/>
|
|
120
|
-
<polygon opacity="0.4" fill="#5D6366" enable-background="new " points="89.7,49.3 87.3,54.1 121.1,74.5 123.5,69.6 "/>
|
|
121
|
-
</g>
|
|
122
|
-
</svg>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|