{"version":3,"sources":["projections/projections.tsx","projections/manager.tsx","projections/detector.tsx","../node_modules/web-ifc sync","engine-viewer.tsx","index.tsx","redux/store.ts","viewer/js/file-system-loader.ts","hooks/use-dialog.tsx","hooks/use-task-queue.ts","hooks/use-viewer.ts","hooks/use-active-tool.ts","hooks/use-project-watcher.ts","hooks/use-popover.tsx","hooks/use-auth.ts","hooks/use-context-menu.ts","hooks/use-global-settings.ts","hooks/use-websockets.ts","hooks/use-bookmarks.ts","redux/assets-slice.ts","hooks/use-table-state.ts","viewer/js/projections.ts","redux/bookmarks-slice.ts","types/project.ts","events.ts","classifications.ts","api/index.ts","api/folders.ts","api/tags.ts","api/bookmarks.ts","utilities/misc.ts","types/controls.ts","redux/custom-links-slice.ts","viewer/js/utilities/change-detection.ts","viewer/js/utilities/unit-converter.ts","viewer/js/utilities/misc-utils.ts","viewer/js/utilities/polygon.ts","viewer/js/utilities/parse.ts","viewer/js/utilities/mesh-utils.ts","viewer/js/utilities/image-utils.ts","viewer/js/worker-pool.ts","types/measurements.ts","theme/colors.ts","theme/index.ts","file-extensions.ts","utilities/dates.ts","redux/settings-slice.ts","viewer/textures/colormaps/classifications.png","hooks/use-branding.ts","components/buttons.tsx","components/dense-icon.tsx","components/dialogs.tsx","components/draggable-list.tsx","components/enhanced-table.tsx","components/menu-items.tsx","components/tooltips.tsx","components/inputs.tsx","components/progress.tsx","components/tabs.tsx","components/toolbar.tsx","components/memos.tsx","electron-menu.ts","components/language-switch/language-popover.tsx","components/language-switch/index.tsx","components/account-button/account-popover.tsx","components/account-button/index.tsx","components/toaster.tsx","components/links.tsx","components/color-picker.tsx","urls.ts","redux/camera-slice.ts","localization/i18n.ts","localization/index.ts","executable.ts","point-profile/point-profile.tsx","move-settings.ts","electron-modules.ts","export/utils/misc.ts","redux/projections-slice.ts","redux/folders-slice.ts","viewer/js/measurements/land-xml-calculation.ts","viewer/textures/tag-icons/basic-pins/index.ts","viewer/textures/tag-icons/basic-pins/basic-pin-large-0.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-1.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-2.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-3.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-4.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-5.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-6.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-7.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-8.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-9.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-10.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-11.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-12.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-13.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-14.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-15.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-0.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-1.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-2.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-3.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-4.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-5.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-6.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-7.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-8.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-9.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-10.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-11.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-12.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-13.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-14.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-15.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-0.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-1.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-2.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-3.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-4.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-5.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-6.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-7.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-8.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-9.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-10.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-11.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-12.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-13.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-14.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-15.png","viewer/textures/tag-icons/traffic-signs/index.ts","viewer/textures/tag-icons/traffic-signs/001-ahead only.png","viewer/textures/tag-icons/traffic-signs/002-crossroads.png","viewer/textures/tag-icons/traffic-signs/003-falling rocks.png","viewer/textures/tag-icons/traffic-signs/004-give way.png","viewer/textures/tag-icons/traffic-signs/005-hump.png","viewer/textures/tag-icons/traffic-signs/006-left turn.png","viewer/textures/tag-icons/traffic-signs/007-parking.png","viewer/textures/tag-icons/traffic-signs/008-level crossing.png","viewer/textures/tag-icons/traffic-signs/009-speed limit.png","viewer/textures/tag-icons/traffic-signs/010-narrow bridge.png","viewer/textures/tag-icons/traffic-signs/011-no bike.png","viewer/textures/tag-icons/traffic-signs/012-no trucks.png","viewer/textures/tag-icons/traffic-signs/013-no alarm.png","viewer/textures/tag-icons/traffic-signs/014-no turn left.png","viewer/textures/tag-icons/traffic-signs/015-no motorcycles.png","viewer/textures/tag-icons/traffic-signs/016-speed limit.png","viewer/textures/tag-icons/traffic-signs/017-no overtaking.png","viewer/textures/tag-icons/traffic-signs/018-pedestrian.png","viewer/textures/tag-icons/traffic-signs/019-no entry.png","viewer/textures/tag-icons/traffic-signs/020-u turn.png","viewer/textures/tag-icons/traffic-signs/021-Two way.png","viewer/textures/tag-icons/traffic-signs/022-pedestrian crossing.png","viewer/textures/tag-icons/traffic-signs/023-right turn.png","viewer/textures/tag-icons/traffic-signs/024-road work.png","viewer/textures/tag-icons/traffic-signs/025-roundabout.png","viewer/textures/tag-icons/traffic-signs/026-pedestrian crossing.png","viewer/textures/tag-icons/traffic-signs/027-Slippery road.png","viewer/textures/tag-icons/traffic-signs/028-traffic lights.png","viewer/textures/tag-icons/traffic-signs/029-turn left.png","viewer/textures/tag-icons/traffic-signs/030-turn right.png","viewer/textures/tag-icons/traffic-signs/031-uneven.png","viewer/textures/tag-icons/traffic-signs/032-maximum.png","viewer/textures/tag-icons/traffic-signs/033-wild animals.png","viewer/textures/tag-icons/uk-road-signs/index.ts","viewer/textures/tag-icons/uk-road-signs/001-narrow.png","viewer/textures/tag-icons/uk-road-signs/002-merge.png","viewer/textures/tag-icons/uk-road-signs/003-curve.png","viewer/textures/tag-icons/uk-road-signs/004-curve.png","viewer/textures/tag-icons/uk-road-signs/005-Junction.png","viewer/textures/tag-icons/uk-road-signs/006-curve.png","viewer/textures/tag-icons/uk-road-signs/007-crossroads.png","viewer/textures/tag-icons/uk-road-signs/008-hump.png","viewer/textures/tag-icons/uk-road-signs/009-uneven.png","viewer/textures/tag-icons/uk-road-signs/010-roundabout.png","viewer/textures/tag-icons/uk-road-signs/011-Two way.png","viewer/textures/tag-icons/uk-road-signs/012-Junction.png","viewer/textures/tag-icons/uk-road-signs/013-Junction.png","viewer/textures/tag-icons/uk-road-signs/014-Two way.png","viewer/textures/tag-icons/uk-road-signs/015-level.png","viewer/textures/tag-icons/uk-road-signs/016-warning.png","viewer/textures/tag-icons/uk-road-signs/017-hump.png","viewer/textures/tag-icons/uk-road-signs/018-dock.png","viewer/textures/tag-icons/uk-road-signs/019-merge.png","viewer/textures/tag-icons/uk-road-signs/020-falling rocks.png","viewer/textures/tag-icons/uk-road-signs/021-speed limit.png","viewer/textures/tag-icons/uk-road-signs/022-speed limit.png","viewer/textures/tag-icons/uk-road-signs/023-speed limit.png","viewer/textures/tag-icons/uk-road-signs/024-speed limit.png","viewer/textures/tag-icons/uk-road-signs/025-speed limit.png","viewer/textures/tag-icons/uk-road-signs/026-speed limit.png","viewer/textures/tag-icons/uk-road-signs/027-speed limit.png","viewer/textures/tag-icons/uk-road-signs/028-priority.png","viewer/textures/tag-icons/uk-road-signs/029-no overtaking.png","viewer/textures/tag-icons/uk-road-signs/030-no turn right.png","viewer/textures/tag-icons/uk-road-signs/031-u turn.png","viewer/textures/tag-icons/uk-road-signs/032-no stopping.png","viewer/textures/tag-icons/uk-road-signs/033-no waiting.png","viewer/textures/tag-icons/uk-road-signs/034-ahead.png","viewer/textures/tag-icons/uk-road-signs/035-turn left.png","viewer/textures/tag-icons/uk-road-signs/036-keep left.png","viewer/textures/tag-icons/uk-road-signs/037-direction.png","viewer/textures/tag-icons/uk-road-signs/038-turn left.png","viewer/textures/tag-icons/uk-road-signs/039-roundabout.png","viewer/textures/tag-icons/uk-road-signs/040-no entry.png","viewer/textures/tag-icons/uk-road-signs/041-parking.png","viewer/textures/tag-icons/uk-road-signs/042-priority.png","viewer/textures/tag-icons/uk-road-signs/043-cul de sac.png","viewer/textures/tag-icons/uk-road-signs/044-countdown.png","viewer/textures/tag-icons/uk-road-signs/045-countdown.png","viewer/textures/tag-icons/uk-road-signs/046-countdown.png","viewer/textures/tag-icons/uk-road-signs/047-hospital.png","viewer/textures/tag-icons/uk-road-signs/048-information.png","viewer/textures/tag-icons/uk-road-signs/049-speed camera.png","viewer/textures/tag-icons/uk-road-signs/050-lane.png","viewer/textures/tag-icons/uk-road-signs/051-end motorway.png","viewer/textures/tag-icons/uk-road-signs/052-motorway.png","viewer/textures/tag-icons/uk-road-signs/053-one way.png","viewer/textures/tag-icons/uk-road-signs/054-direction.png","viewer/textures/tag-icons/uk-road-signs/055-stop.png","viewer/textures/tag-icons/uk-road-signs/056-road.png","viewer/textures/tag-icons/uk-road-signs/057-emergency diversion.png","viewer/textures/tag-icons/uk-road-signs/058-emergency diversion.png","viewer/textures/tag-icons/uk-road-signs/059-emergency diversion.png","viewer/textures/tag-icons/uk-road-signs/060-emergency diversion.png","viewer/textures/tag-icons/package_objects/index.ts","viewer/textures/tag-icons/package_objects/construction--barrier--temporary.png","viewer/textures/tag-icons/package_objects/construction--flat--crosswalk-plain.png","viewer/textures/tag-icons/package_objects/construction--flat--driveway.png","viewer/textures/tag-icons/package_objects/construction--flat--flat-driveway.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--left.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--right.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--split-left-or-straight.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--split-right-or-straight.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--straight.png","viewer/textures/tag-icons/package_objects/marking--discrete--crosswalk-zebra.png","viewer/textures/tag-icons/package_objects/marking--discrete--give-way-row.png","viewer/textures/tag-icons/package_objects/marking--discrete--give-way-single.png","viewer/textures/tag-icons/package_objects/marking--discrete--other-marking.png","viewer/textures/tag-icons/package_objects/marking--discrete--stop-line.png","viewer/textures/tag-icons/package_objects/marking--discrete--symbol--bicycle.png","viewer/textures/tag-icons/package_objects/marking--discrete--text.png","viewer/textures/tag-icons/package_objects/object--banner.png","viewer/textures/tag-icons/package_objects/object--bench.png","viewer/textures/tag-icons/package_objects/object--bike-rack.png","viewer/textures/tag-icons/package_objects/object--catch-basin.png","viewer/textures/tag-icons/package_objects/object--cctv-camera.png","viewer/textures/tag-icons/package_objects/object--fire-hydrant.png","viewer/textures/tag-icons/package_objects/object--junction-box.png","viewer/textures/tag-icons/package_objects/object--mailbox.png","viewer/textures/tag-icons/package_objects/object--manhole.png","viewer/textures/tag-icons/package_objects/object--parking-meter.png","viewer/textures/tag-icons/package_objects/object--phone-booth.png","viewer/textures/tag-icons/package_objects/object--sign--advertisement.png","viewer/textures/tag-icons/package_objects/object--sign--information.png","viewer/textures/tag-icons/package_objects/object--sign--store.png","viewer/textures/tag-icons/package_objects/object--street-light.png","viewer/textures/tag-icons/package_objects/object--support--pole.png","viewer/textures/tag-icons/package_objects/object--support--traffic-sign-frame.png","viewer/textures/tag-icons/package_objects/object--support--utility-pole.png","viewer/textures/tag-icons/package_objects/object--traffic-cone.png","viewer/textures/tag-icons/package_objects/object--traffic-light.png","viewer/textures/tag-icons/package_objects/object--trash-can.png","viewer/textures/tag-icons/package_objects/object--water-valve.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g1.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g2.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g3.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g4.png","viewer/textures/tag-icons/package_signs/complementary--advisory-exit-or-ramp-speed--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles-and-pedestrians-detour--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles-or-pedestrians-detour--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles-turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--bike-route--g1.png","viewer/textures/tag-icons/package_signs/complementary--bike-route--g3.png","viewer/textures/tag-icons/package_signs/complementary--both-directions--g1.png","viewer/textures/tag-icons/package_signs/complementary--both-directions--g2.png","viewer/textures/tag-icons/package_signs/complementary--buses--g1.png","viewer/textures/tag-icons/package_signs/complementary--buses-and-trucks--g1.png","viewer/textures/tag-icons/package_signs/complementary--camera--g1.png","viewer/textures/tag-icons/package_signs/complementary--camera--g2.png","viewer/textures/tag-icons/package_signs/complementary--camera--g3.png","viewer/textures/tag-icons/package_signs/complementary--camera--g4.png","viewer/textures/tag-icons/package_signs/complementary--camera--g5.png","viewer/textures/tag-icons/package_signs/complementary--caravan-trailers--g2.png","viewer/textures/tag-icons/package_signs/complementary--caravan-trailers--g3.png","viewer/textures/tag-icons/package_signs/complementary--caravans--g2.png","viewer/textures/tag-icons/package_signs/complementary--carts--g1.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g2.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g3.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g4.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g5.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g2.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g3.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g4.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g5.png","viewer/textures/tag-icons/package_signs/complementary--dangerous-or-pollutant-good--g1.png","viewer/textures/tag-icons/package_signs/complementary--dead-end--g1.png","viewer/textures/tag-icons/package_signs/complementary--detour--g1.png","viewer/textures/tag-icons/package_signs/complementary--disabled-persons--g1.png","viewer/textures/tag-icons/package_signs/complementary--distance--g1.png","viewer/textures/tag-icons/package_signs/complementary--distance--g2.png","viewer/textures/tag-icons/package_signs/complementary--distance--g3.png","viewer/textures/tag-icons/package_signs/complementary--end-of-road-works--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-bicycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-bicycles--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-buses--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-carts--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-polluting-level-green--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-polluting-level-green-yellow--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-polluting-level-green-yellow-red--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-tractors--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-tractors--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-trailers--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-trains--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-trams--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-trucks--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-vehicles--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-vehicles--g2.png","viewer/textures/tag-icons/package_signs/complementary--go-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--go-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--height-limit--g1.png","viewer/textures/tag-icons/package_signs/complementary--height-limit--g2.png","viewer/textures/tag-icons/package_signs/complementary--including-bicycles-and-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--including-buses-vehicles--g1.png","viewer/textures/tag-icons/package_signs/complementary--keep-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--keep-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--lane-control--g1.png","viewer/textures/tag-icons/package_signs/complementary--lane-control--g2.png","viewer/textures/tag-icons/package_signs/complementary--lane-control--g3.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-55--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-85--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-95--g1.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g2.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g3.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g4.png","viewer/textures/tag-icons/package_signs/complementary--obstacle-delineator--g1.png","viewer/textures/tag-icons/package_signs/complementary--obstacle-delineator--g2.png","viewer/textures/tag-icons/package_signs/complementary--obstacle-delineator--g3.png","viewer/textures/tag-icons/package_signs/complementary--one-direction-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--one-direction-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--pass-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--pass-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--pedestrians-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--pedestrians-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--photo-enforced--g1.png","viewer/textures/tag-icons/package_signs/complementary--playground--g1.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g1.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g2.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g3.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g4.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g5.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g6.png","viewer/textures/tag-icons/package_signs/complementary--railroad--g1.png","viewer/textures/tag-icons/package_signs/complementary--railroad--g2.png","viewer/textures/tag-icons/package_signs/complementary--railroad--g3.png","viewer/textures/tag-icons/package_signs/complementary--restriction-in-both-directions--g1.png","viewer/textures/tag-icons/package_signs/complementary--roundabout-go-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--roundabout-go-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--roundabout-go-straight--g1.png","viewer/textures/tag-icons/package_signs/complementary--slippery-for-caravan-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--snow--g2.png","viewer/textures/tag-icons/package_signs/complementary--snow--g4.png","viewer/textures/tag-icons/package_signs/complementary--snow--g5.png","viewer/textures/tag-icons/package_signs/complementary--snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/complementary--soft-shoulder--g1.png","viewer/textures/tag-icons/package_signs/complementary--soft-shoulder--g2.png","viewer/textures/tag-icons/package_signs/complementary--steep-ascent--g1.png","viewer/textures/tag-icons/package_signs/complementary--steep-descent--g1.png","viewer/textures/tag-icons/package_signs/complementary--time-restrictions--g1.png","viewer/textures/tag-icons/package_signs/complementary--time-restrictions--g3.png","viewer/textures/tag-icons/package_signs/complementary--tow-away-zone--g1.png","viewer/textures/tag-icons/package_signs/complementary--tow-away-zone--g3.png","viewer/textures/tag-icons/package_signs/complementary--tractors--g1.png","viewer/textures/tag-icons/package_signs/complementary--traffic-queues--g1.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g2.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g3.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g4.png","viewer/textures/tag-icons/package_signs/complementary--trains--g1.png","viewer/textures/tag-icons/package_signs/complementary--trams--g1.png","viewer/textures/tag-icons/package_signs/complementary--trees--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks--g2.png","viewer/textures/tag-icons/package_signs/complementary--trucks--g3.png","viewer/textures/tag-icons/package_signs/complementary--trucks-and-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-buses-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-straight--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-turn-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--turn-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--turn-left--g2.png","viewer/textures/tag-icons/package_signs/complementary--turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--turn-right--g2.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g1.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g2.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g3.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g4.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g5.png","viewer/textures/tag-icons/package_signs/complementary--vehicles--g1.png","viewer/textures/tag-icons/package_signs/complementary--vehicles--g2.png","viewer/textures/tag-icons/package_signs/complementary--vehicles-or-buses--g1.png","viewer/textures/tag-icons/package_signs/complementary--weekends-or-holidays--g1.png","viewer/textures/tag-icons/package_signs/complementary--weight-limit--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-foggy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-rainy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-rainy--g2.png","viewer/textures/tag-icons/package_signs/complementary--when-rainy--g3.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy--g2.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy-or-rainy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy-or-rainy--g2.png","viewer/textures/tag-icons/package_signs/complementary--when-wet--g1.png","viewer/textures/tag-icons/package_signs/complementary--width-limit--g1.png","viewer/textures/tag-icons/package_signs/complementary--working-days--g1.png","viewer/textures/tag-icons/package_signs/information--airport--g1.png","viewer/textures/tag-icons/package_signs/information--airport--g2.png","viewer/textures/tag-icons/package_signs/information--bicycle-lane--g1.png","viewer/textures/tag-icons/package_signs/information--bicycles-both-ways--g1.png","viewer/textures/tag-icons/package_signs/information--bicycles-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--bicycles-crossing--g2.png","viewer/textures/tag-icons/package_signs/information--bicycles-crossing--g3.png","viewer/textures/tag-icons/package_signs/information--bike-route--g1.png","viewer/textures/tag-icons/package_signs/information--bike-route--g2.png","viewer/textures/tag-icons/package_signs/information--built-up-area--g1.png","viewer/textures/tag-icons/package_signs/information--built-up-area--g2.png","viewer/textures/tag-icons/package_signs/information--bus-lane-straight--g1.png","viewer/textures/tag-icons/package_signs/information--bus-stop--g1.png","viewer/textures/tag-icons/package_signs/information--bus-stop--g2.png","viewer/textures/tag-icons/package_signs/information--camera--g1.png","viewer/textures/tag-icons/package_signs/information--camera--g2.png","viewer/textures/tag-icons/package_signs/information--camera--g3.png","viewer/textures/tag-icons/package_signs/information--camp--g1.png","viewer/textures/tag-icons/package_signs/information--camp--g2.png","viewer/textures/tag-icons/package_signs/information--car-pool-lane--g1.png","viewer/textures/tag-icons/package_signs/information--caravan-parking--g1.png","viewer/textures/tag-icons/package_signs/information--caravan-trailer-parking--g1.png","viewer/textures/tag-icons/package_signs/information--cargo-loading-zone--g1.png","viewer/textures/tag-icons/package_signs/information--central-lane--g1.png","viewer/textures/tag-icons/package_signs/information--charging-station--g1.png","viewer/textures/tag-icons/package_signs/information--children--g1.png","viewer/textures/tag-icons/package_signs/information--children--g2.png","viewer/textures/tag-icons/package_signs/information--children-crossing--g5.png","viewer/textures/tag-icons/package_signs/information--cycling-two-abreast-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end--g3.png","viewer/textures/tag-icons/package_signs/information--dead-end--g4.png","viewer/textures/tag-icons/package_signs/information--dead-end-except-bicycles--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-except-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-except-bicycles-and-pedestrians--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end-left--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-left--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end-right--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-right--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end-right--g3.png","viewer/textures/tag-icons/package_signs/information--directions--g1.png","viewer/textures/tag-icons/package_signs/information--disabled-persons--g1.png","viewer/textures/tag-icons/package_signs/information--disabled-persons--g2.png","viewer/textures/tag-icons/package_signs/information--disabled-persons--g3.png","viewer/textures/tag-icons/package_signs/information--emergency-facility--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-bicycle-lane--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g2.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g3.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g4.png","viewer/textures/tag-icons/package_signs/information--end-of-car-pool-lane--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-limited-access-road--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-living-street--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-living-street--g2.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-10--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-20--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-25--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-30--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-35--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-40--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-50--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-60--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-70--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-75--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-80--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-90--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-100--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-110--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-120--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-130--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-motorway--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-overtaking-permitted-heavy-good-vehicles--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-road-works--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-tunnel--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-tunnel--g2.png","viewer/textures/tag-icons/package_signs/information--end-of-two-way-traffic--g1.png","viewer/textures/tag-icons/package_signs/information--equestrians-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--exit-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--exit-ahead--g2.png","viewer/textures/tag-icons/package_signs/information--exit-ahead--g3.png","viewer/textures/tag-icons/package_signs/information--flight-port--g1.png","viewer/textures/tag-icons/package_signs/information--food--g1.png","viewer/textures/tag-icons/package_signs/information--food--g2.png","viewer/textures/tag-icons/package_signs/information--gas-station--g1.png","viewer/textures/tag-icons/package_signs/information--gas-station--g2.png","viewer/textures/tag-icons/package_signs/information--gas-station--g3.png","viewer/textures/tag-icons/package_signs/information--general-speed-limit-at-city-border--g1.png","viewer/textures/tag-icons/package_signs/information--go-left--g1.png","viewer/textures/tag-icons/package_signs/information--go-right--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-left--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-right--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/information--hazardous-goods-vehicles-lane--g1.png","viewer/textures/tag-icons/package_signs/information--height-limit--g1.png","viewer/textures/tag-icons/package_signs/information--height-limit--g2.png","viewer/textures/tag-icons/package_signs/information--highway-directions--g1.png","viewer/textures/tag-icons/package_signs/information--highway-exit--g1.png","viewer/textures/tag-icons/package_signs/information--highway-interchange--g1.png","viewer/textures/tag-icons/package_signs/information--highway-interstate-route--g1.png","viewer/textures/tag-icons/package_signs/information--highway-interstate-route--g2.png","viewer/textures/tag-icons/package_signs/information--highway-preferential-lane--g1.png","viewer/textures/tag-icons/package_signs/information--highway-preferential-lane--g2.png","viewer/textures/tag-icons/package_signs/information--highway-reference-location--g1.png","viewer/textures/tag-icons/package_signs/information--highway-reference-location--g2.png","viewer/textures/tag-icons/package_signs/information--hiking--g1.png","viewer/textures/tag-icons/package_signs/information--hospital--g1.png","viewer/textures/tag-icons/package_signs/information--hurricane-evacuation-route--g1.png","viewer/textures/tag-icons/package_signs/information--interstate-route--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-intersections--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-left-turn--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-multiple-lanes--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-multiple-lanes--g2.png","viewer/textures/tag-icons/package_signs/information--lane-control-right-turn--g1.png","viewer/textures/tag-icons/package_signs/information--limited-access-road--g1.png","viewer/textures/tag-icons/package_signs/information--litter-container--g1.png","viewer/textures/tag-icons/package_signs/information--living-street--g1.png","viewer/textures/tag-icons/package_signs/information--living-street--g2.png","viewer/textures/tag-icons/package_signs/information--living-street--g3.png","viewer/textures/tag-icons/package_signs/information--lodging--g1.png","viewer/textures/tag-icons/package_signs/information--lodging--g2.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-10--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-20--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-25--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-30--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-35--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-40--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-50--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-60--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-70--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-75--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-80--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-90--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-100--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-110--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-120--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-130--g1.png","viewer/textures/tag-icons/package_signs/information--motorway--g1.png","viewer/textures/tag-icons/package_signs/information--motorway-exit-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--motorway-exit-ahead--g2.png","viewer/textures/tag-icons/package_signs/information--motorway-exit-ahead--g3.png","viewer/textures/tag-icons/package_signs/information--overtaking-allowed-heavy-good-vehicles--g1.png","viewer/textures/tag-icons/package_signs/information--parallel-parking--g1.png","viewer/textures/tag-icons/package_signs/information--park-and-ride--g1.png","viewer/textures/tag-icons/package_signs/information--park-and-ride--g2.png","viewer/textures/tag-icons/package_signs/information--parking--g1.png","viewer/textures/tag-icons/package_signs/information--parking--g2.png","viewer/textures/tag-icons/package_signs/information--parking--g3.png","viewer/textures/tag-icons/package_signs/information--parking--g4.png","viewer/textures/tag-icons/package_signs/information--parking--g5.png","viewer/textures/tag-icons/package_signs/information--parking--g6.png","viewer/textures/tag-icons/package_signs/information--parking-area--g1.png","viewer/textures/tag-icons/package_signs/information--parking-with-restrictions--g1.png","viewer/textures/tag-icons/package_signs/information--pass-on-either-side--g1.png","viewer/textures/tag-icons/package_signs/information--passenger-loading-zone--g1.png","viewer/textures/tag-icons/package_signs/information--pedestrians-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--pedestrians-crossing--g2.png","viewer/textures/tag-icons/package_signs/information--pedestrians-crossing--g3.png","viewer/textures/tag-icons/package_signs/information--pedestrians-only--g4.png","viewer/textures/tag-icons/package_signs/information--pedestrians-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--perpendicular-parking--g1.png","viewer/textures/tag-icons/package_signs/information--picnic-site--g1.png","viewer/textures/tag-icons/package_signs/information--playground--g1.png","viewer/textures/tag-icons/package_signs/information--recreational-vehicle-sanitary-station--g1.png","viewer/textures/tag-icons/package_signs/information--recycle-collection-center--g1.png","viewer/textures/tag-icons/package_signs/information--rest-area--g1.png","viewer/textures/tag-icons/package_signs/information--road-bump--g1.png","viewer/textures/tag-icons/package_signs/information--road-skating--g1.png","viewer/textures/tag-icons/package_signs/information--safety-zone--g1.png","viewer/textures/tag-icons/package_signs/information--safety-zone--g2.png","viewer/textures/tag-icons/package_signs/information--safety-zone--g3.png","viewer/textures/tag-icons/package_signs/information--shared-path-vehicles-and-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/information--stairs--g1.png","viewer/textures/tag-icons/package_signs/information--stairs--g2.png","viewer/textures/tag-icons/package_signs/information--stairs--g3.png","viewer/textures/tag-icons/package_signs/information--stairs--g4.png","viewer/textures/tag-icons/package_signs/information--stop-line--g1.png","viewer/textures/tag-icons/package_signs/information--stop-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--street-name-one-line--g1.png","viewer/textures/tag-icons/package_signs/information--street-name-three-lines--g1.png","viewer/textures/tag-icons/package_signs/information--street-name-two-lines--g1.png","viewer/textures/tag-icons/package_signs/information--subway--g1.png","viewer/textures/tag-icons/package_signs/information--telephone--g1.png","viewer/textures/tag-icons/package_signs/information--telephone--g2.png","viewer/textures/tag-icons/package_signs/information--telephone-device-for-the-deaf--g1.png","viewer/textures/tag-icons/package_signs/information--toll-station--g1.png","viewer/textures/tag-icons/package_signs/information--tourism-information--g1.png","viewer/textures/tag-icons/package_signs/information--tourist-attraction--g1.png","viewer/textures/tag-icons/package_signs/information--traffic-merges-left--g1.png","viewer/textures/tag-icons/package_signs/information--traffic-merges-right--g1.png","viewer/textures/tag-icons/package_signs/information--trail-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--trail-crossing--g2.png","viewer/textures/tag-icons/package_signs/information--trail-crossing--g3.png","viewer/textures/tag-icons/package_signs/information--trailer-camping--g1.png","viewer/textures/tag-icons/package_signs/information--train-or-light-rail-station--g1.png","viewer/textures/tag-icons/package_signs/information--tram-bus-stop--g1.png","viewer/textures/tag-icons/package_signs/information--tram-bus-stop--g2.png","viewer/textures/tag-icons/package_signs/information--trams-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--truck-lane-left--g1.png","viewer/textures/tag-icons/package_signs/information--truck-parking--g1.png","viewer/textures/tag-icons/package_signs/information--truck-trailer-lane-right--g1.png","viewer/textures/tag-icons/package_signs/information--truck-trailer-lane-straight--g1.png","viewer/textures/tag-icons/package_signs/information--trucks-both-ways--g1.png","viewer/textures/tag-icons/package_signs/information--trucks-only--g1.png","viewer/textures/tag-icons/package_signs/information--tsunami-evacuation_route--g1.png","viewer/textures/tag-icons/package_signs/information--tunnel--g1.png","viewer/textures/tag-icons/package_signs/information--tunnel--g2.png","viewer/textures/tag-icons/package_signs/information--tunnel--g3.png","viewer/textures/tag-icons/package_signs/information--tunnel-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--turn-left--g1.png","viewer/textures/tag-icons/package_signs/information--turn-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--turn-right--g1.png","viewer/textures/tag-icons/package_signs/information--turn-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--urban-area--g1.png","viewer/textures/tag-icons/package_signs/information--vehicles-on-rails--g1.png","viewer/textures/tag-icons/package_signs/information--water-protection-zone--g1.png","viewer/textures/tag-icons/package_signs/information--weight-and-height-limit--g1.png","viewer/textures/tag-icons/package_signs/information--weight-limit--g1.png","viewer/textures/tag-icons/package_signs/information--wireless-internet--g1.png","viewer/textures/tag-icons/package_signs/regulatory--advisory-maximum-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--all-directions-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--all-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--atvs-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--axle-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--axle-limit--g2.png","viewer/textures/tag-icons/package_signs/regulatory--bicycle-lane-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycle-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g3.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g4.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-push-button--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-push-button--g2.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-stop-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-wrong-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-yield-or-use-signal--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bike-route--g1.png","viewer/textures/tag-icons/package_signs/regulatory--building-direction--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bus-priority-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--buses-and-taxi-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--buses-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g1.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g2.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g3.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g4.png","viewer/textures/tag-icons/package_signs/regulatory--cross-only-on-green--g1.png","viewer/textures/tag-icons/package_signs/regulatory--cross-only-on-pedestrian-signal--g1.png","viewer/textures/tag-icons/package_signs/regulatory--crosswalk-stop-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--cycling-restriction--g1.png","viewer/textures/tag-icons/package_signs/regulatory--cyclists-dismount-and-walk--g1.png","viewer/textures/tag-icons/package_signs/regulatory--detour-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--detour-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--divided-highway-crossing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--divided-highway-ends--g1.png","viewer/textures/tag-icons/package_signs/regulatory--divided-highway-starts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--do-not-block-intersection--g1.png","viewer/textures/tag-icons/package_signs/regulatory--do-not-pass--g1.png","viewer/textures/tag-icons/package_signs/regulatory--do-not-stop-on-tracks--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-all-directions-on-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-all-directions-on-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-bicyclists-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-go-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-go-straight-on-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-go-straight-on-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-left-no-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-left-or-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-right-or-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-bicycles-and-pedestrians--g2.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-bicycles-and-pedestrians--g3.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-equestrians-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-and-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-and-equestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-speed-limits--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-speed-limits--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-bicycles-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-bus-and-taxi-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-buses-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-cycling-restriction--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-dual-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-dual-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-equestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-low-beam-headlights--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-10--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-20--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-25--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-30--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-35--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-40--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-50--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-60--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-65--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-70--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-75--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-80--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-90--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-100--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-100--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-110--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-110--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-120--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-120--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-130--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-130--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-mopeds-and-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-horn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g3.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g4.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g5.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking-by-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-parking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-parking-or-stopping--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-one-way-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-parking-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-parking-zone--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g3.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g4.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-priority-road--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-prohibition--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-school-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-shared-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-shared-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-snow-chains--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-snow-chains--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-snowmobiles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-speed-limit-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-speed-limit-zone--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-speed-limit-zone--g3.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-tractors-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trams-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trams-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trucks-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trucks-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trucks-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--equestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--except-railroad-crossing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--fine-for-littering--g1.png","viewer/textures/tag-icons/package_signs/regulatory--give-way-to-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--give-way-to-oncoming-traffic--g1.png","viewer/textures/tag-icons/package_signs/regulatory--give-way-to-oncoming-traffic--g2.png","viewer/textures/tag-icons/package_signs/regulatory--go-left-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-right-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight--g3.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--heavy-goods-vehicles-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--height-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--high-beam-headlights--g1.png","viewer/textures/tag-icons/package_signs/regulatory--horn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--in-street-pedestrian-crossing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g4.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g5.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g6.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g7.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g4.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g5.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g6.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g7.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g8.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g9.png","viewer/textures/tag-icons/package_signs/regulatory--lane-control--g1.png","viewer/textures/tag-icons/package_signs/regulatory--left-turn-yield-on-green--g1.png","viewer/textures/tag-icons/package_signs/regulatory--length-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--length-limit--g2.png","viewer/textures/tag-icons/package_signs/regulatory--light-rail-divided-highway--g1.png","viewer/textures/tag-icons/package_signs/regulatory--light-rail-do-not-pass--g1.png","viewer/textures/tag-icons/package_signs/regulatory--light-rail-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--look--g1.png","viewer/textures/tag-icons/package_signs/regulatory--low-beam-headlights--g1.png","viewer/textures/tag-icons/package_signs/regulatory--low-beam-headlights--g2.png","viewer/textures/tag-icons/package_signs/regulatory--low-beam-headlights--g3.png","viewer/textures/tag-icons/package_signs/regulatory--low-speed-vehicle-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-5--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-5--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-10--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-15--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-20--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-25--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-30--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-35--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-40--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-45--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-50--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-55--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-60--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-65--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-70--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-75--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-80--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-85--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-90--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-100--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-100--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-110--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-110--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-120--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-120--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-130--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-130--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-5--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-5--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-10--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-10--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-15--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-15--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-20--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-20--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-25--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-25--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-30--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-30--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-35--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-35--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-40--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-40--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-45--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-45--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-50--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-50--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-55--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-55--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-60--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-60--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-65--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-65--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-70--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-70--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-75--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-75--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-80--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-80--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-85--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-85--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-90--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-100--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-110--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-120--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-130--g1.png","viewer/textures/tag-icons/package_signs/regulatory--minimum-safe-distance--g1.png","viewer/textures/tag-icons/package_signs/regulatory--minimum-safe-distance--g2.png","viewer/textures/tag-icons/package_signs/regulatory--mopeds-and-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--motorcycles-and-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--motorcycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--motorcycles-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-5--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-55--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-85--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-abnormal-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-atvs--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-carts-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-mopeds-or-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-mopeds-or-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-or-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-tractors-or-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-buses--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-buses--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-caravan-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-caravans--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-caravans-or-caravan-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-cargo-loading--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts-or-tractors--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-construction-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-entry--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-equestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-good-trailers--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-goods-vehicle-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-hand-carts--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-hand-carts-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-hawkers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-or-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-or-tractors--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-or-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-horizontal-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-horn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-horn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-lane-change-to-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-lane-change-to-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-learner-drivers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-or-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-low-speed-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-mopeds-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicle-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-except-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-except-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-except-motorcycles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-or-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-or-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking-atvs--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking-by-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g8.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g9.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-bicycles-or-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-bus-stop--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-passenger-loading--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-or-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-or-bicycles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-rickshaws--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-rickshaws--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-rickshaws--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-skiing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-snowmobiles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-snowmobiles-or-atvs--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping-on-pavement--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-straight-through--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-straight-through--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-studded-snow-chains--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-through-trucks--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tour-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tractors--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tractors-mopeds-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tractors-or-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tricycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tricycles-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-turn-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-turn-on-red--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-turn-on-red--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-turns--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-turns--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-two-stage-right-turn-for-mopeds--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-u-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-u-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-explosives--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-straight--g3.png","viewer/textures/tag-icons/package_signs/regulatory--parking-fee-station--g1.png","viewer/textures/tag-icons/package_signs/regulatory--parking-restrictions--g1.png","viewer/textures/tag-icons/package_signs/regulatory--parking-restrictions--g2.png","viewer/textures/tag-icons/package_signs/regulatory--parking-restrictions--g3.png","viewer/textures/tag-icons/package_signs/regulatory--pass-on-either-side--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pass-on-either-side--g2.png","viewer/textures/tag-icons/package_signs/regulatory--pass-on-either-side--g3.png","viewer/textures/tag-icons/package_signs/regulatory--pass-with-care--g1.png","viewer/textures/tag-icons/package_signs/regulatory--passing-lane-ahead--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-bicycles-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-keep-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-only--g3.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-priority-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-push-button--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-push-button--g2.png","viewer/textures/tag-icons/package_signs/regulatory--priority-over-oncoming-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--priority-over-oncoming-vehicles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--priority-road--g1.png","viewer/textures/tag-icons/package_signs/regulatory--priority-road--g2.png","viewer/textures/tag-icons/package_signs/regulatory--radar-enforced--g1.png","viewer/textures/tag-icons/package_signs/regulatory--reserved-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--reversible-lanes--g1.png","viewer/textures/tag-icons/package_signs/regulatory--reversible-lanes--g2.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed--g1.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed--g2.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed-to-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed-to-vehicles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--roundabout--g1.png","viewer/textures/tag-icons/package_signs/regulatory--roundabout--g2.png","viewer/textures/tag-icons/package_signs/regulatory--roundabout--g3.png","viewer/textures/tag-icons/package_signs/regulatory--shared-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--shared-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--sidewalk-closed--g1.png","viewer/textures/tag-icons/package_signs/regulatory--slanted-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--snow-chains--g1.png","viewer/textures/tag-icons/package_signs/regulatory--snow-chains--g2.png","viewer/textures/tag-icons/package_signs/regulatory--snow-chains--g3.png","viewer/textures/tag-icons/package_signs/regulatory--snowmobiles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--snowmobiles-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--speed-limit-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--speeding-fines-increased--g1.png","viewer/textures/tag-icons/package_signs/regulatory--state-route--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stay-in-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g2.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g3.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g4.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g5.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g6.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g7.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g8.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g9.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g10.png","viewer/textures/tag-icons/package_signs/regulatory--stop-here-on-red-or-flashing-light--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop-here-on-red-or-flashing-light--g2.png","viewer/textures/tag-icons/package_signs/regulatory--stop-signals--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop-signals--g2.png","viewer/textures/tag-icons/package_signs/regulatory--tanks-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--taxi-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--text--g1.png","viewer/textures/tag-icons/package_signs/regulatory--text--g2.png","viewer/textures/tag-icons/package_signs/regulatory--toll-pass-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--tractors-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--traffic-signal-photo-enforced--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trams-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trams-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes-go-straight-center-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes-turn-left-center-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes-turn-right-center-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-route--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-5--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-55--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-85--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trucks-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trucks-on-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trucks-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-ahead--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right-ahead--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turning-vehicles-yield-to-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--two-stage-right-turn-for-mopeds--g1.png","viewer/textures/tag-icons/package_signs/regulatory--two-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--u-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--u-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--use-crosswalk--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-dangerous-goods-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-dangerous-goods-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-explosives-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-hazardous-goods-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--wear-seat-belt--g1.png","viewer/textures/tag-icons/package_signs/regulatory--wear-seat-belt--g2.png","viewer/textures/tag-icons/package_signs/regulatory--wear-seat-belt--g3.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g2.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g3.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g4.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g5.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g6.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g7.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit-per-axle--g1.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit-per-tandem-axle--g1.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit-with-trucks--g1.png","viewer/textures/tag-icons/package_signs/regulatory--width-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--wrong-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--yield--g1.png","viewer/textures/tag-icons/package_signs/regulatory--yield-or-stop-for-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--your-speed--g1.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g1.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g2.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g3.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g4.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g5.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g6.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g7.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g8.png","viewer/textures/tag-icons/package_signs/warning--added-lane-from-entering-roadway--g1.png","viewer/textures/tag-icons/package_signs/warning--added-lane-from-entering-roadway--g2.png","viewer/textures/tag-icons/package_signs/warning--added-lane-left--g1.png","viewer/textures/tag-icons/package_signs/warning--added-lane-right--g1.png","viewer/textures/tag-icons/package_signs/warning--animal-drawn-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--arch-bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--atv-and-snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/warning--atv-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--atv-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--axle-restriction--g1.png","viewer/textures/tag-icons/package_signs/warning--bear-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--bear-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--bicycles-and-others--g1.png","viewer/textures/tag-icons/package_signs/warning--bicycles-caution-on-rail-tracks--g1.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--bollard--g1.png","viewer/textures/tag-icons/package_signs/warning--bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--bridge--g2.png","viewer/textures/tag-icons/package_signs/warning--bus-stop-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--bus-stop-ahead--g2.png","viewer/textures/tag-icons/package_signs/warning--bus-stop-ahead--g3.png","viewer/textures/tag-icons/package_signs/warning--camel-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--camel-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--camera--g1.png","viewer/textures/tag-icons/package_signs/warning--camera--g2.png","viewer/textures/tag-icons/package_signs/warning--carts--g1.png","viewer/textures/tag-icons/package_signs/warning--carts--g2.png","viewer/textures/tag-icons/package_signs/warning--checkpoint--g1.png","viewer/textures/tag-icons/package_signs/warning--children--g1.png","viewer/textures/tag-icons/package_signs/warning--children--g2.png","viewer/textures/tag-icons/package_signs/warning--children--g3.png","viewer/textures/tag-icons/package_signs/warning--children--g4.png","viewer/textures/tag-icons/package_signs/warning--children--g6.png","viewer/textures/tag-icons/package_signs/warning--cliff--g1.png","viewer/textures/tag-icons/package_signs/warning--cliff--g2.png","viewer/textures/tag-icons/package_signs/warning--closed-lane-in-triple-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--closed-lane-in-triple-lanes--g2.png","viewer/textures/tag-icons/package_signs/warning--construction-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g1.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g2.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g3.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g4.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g5.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g6.png","viewer/textures/tag-icons/package_signs/warning--crossroads-with-priority-to-the-right--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-left--g2.png","viewer/textures/tag-icons/package_signs/warning--curve-left--g3.png","viewer/textures/tag-icons/package_signs/warning--curve-left-with-junction--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-out-intersection-left--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-out-intersection-right--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-right--g2.png","viewer/textures/tag-icons/package_signs/warning--curve-right--g3.png","viewer/textures/tag-icons/package_signs/warning--curve-right-with-junction--g1.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-left--g2.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-left--g4.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g2.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g3.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g4.png","viewer/textures/tag-icons/package_signs/warning--dead-end--g1.png","viewer/textures/tag-icons/package_signs/warning--dead-end--g2.png","viewer/textures/tag-icons/package_signs/warning--dead-end--g3.png","viewer/textures/tag-icons/package_signs/warning--dead-end-go-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dead-end-go-right--g1.png","viewer/textures/tag-icons/package_signs/warning--descent-or-climbing-lanes-in-triple-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--detour-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--detour-or-construction-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--dip--g1.png","viewer/textures/tag-icons/package_signs/warning--dip--g2.png","viewer/textures/tag-icons/package_signs/warning--disabled-persons-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--disabled-persons-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g3.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g4.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g5.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g6.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g7.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g8.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g9.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g3.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g4.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-left--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-left--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-right--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-right--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-to-left--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-to-right--g1.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g1.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g2.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g3.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g4.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g5.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g6.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g7.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g8.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-left--g2.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-right--g1.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-right--g2.png","viewer/textures/tag-icons/package_signs/warning--double-descent--g1.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-left--g2.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-right--g2.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-left--g3.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-right--g1.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-right--g3.png","viewer/textures/tag-icons/package_signs/warning--double-turn-first-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-turn-first-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-all-directions-on-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-all-directions-on-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-left-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-left-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-right-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-right-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g2.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g3.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g4.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-path-cyclists-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/warning--electricity--g1.png","viewer/textures/tag-icons/package_signs/warning--electricity--g2.png","viewer/textures/tag-icons/package_signs/warning--elephant-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--emergency-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--emu-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--emu-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--entering-roadway-merge--g1.png","viewer/textures/tag-icons/package_signs/warning--entering-roadway-merge--g2.png","viewer/textures/tag-icons/package_signs/warning--equestrians-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--equestrians-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--expressway--g1.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g1.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g2.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g3.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g4.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g1.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g2.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g3.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g4.png","viewer/textures/tag-icons/package_signs/warning--ferry--g1.png","viewer/textures/tag-icons/package_signs/warning--flaggers-in-road--g1.png","viewer/textures/tag-icons/package_signs/warning--flaggers-in-road--g2.png","viewer/textures/tag-icons/package_signs/warning--foggy-road--g1.png","viewer/textures/tag-icons/package_signs/warning--foggy-road--g2.png","viewer/textures/tag-icons/package_signs/warning--ford--g1.png","viewer/textures/tag-icons/package_signs/warning--forest--g1.png","viewer/textures/tag-icons/package_signs/warning--fresh-oil--g1.png","viewer/textures/tag-icons/package_signs/warning--frog-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--gate--g1.png","viewer/textures/tag-icons/package_signs/warning--gate--g2.png","viewer/textures/tag-icons/package_signs/warning--gate-left--g1.png","viewer/textures/tag-icons/package_signs/warning--gate-right--g1.png","viewer/textures/tag-icons/package_signs/warning--go-left--g1.png","viewer/textures/tag-icons/package_signs/warning--go-right--g1.png","viewer/textures/tag-icons/package_signs/warning--golf-carts-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--gravel-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-left--g2.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-left--g3.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-right--g3.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g2.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g3.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g4.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g5.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-left--g1.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-left--g3.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-right--g1.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-right--g3.png","viewer/textures/tag-icons/package_signs/warning--horse-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--icy-road--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-left--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-left--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-right--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-right--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g3.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g4.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g3.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g4.png","viewer/textures/tag-icons/package_signs/warning--junction-with-merge-from-left--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-merge-from-right--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-side-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--kangaloo-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--keep-distance--g1.png","viewer/textures/tag-icons/package_signs/warning--keep-left--g1.png","viewer/textures/tag-icons/package_signs/warning--keep-right--g1.png","viewer/textures/tag-icons/package_signs/warning--kiwi-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--kiwi-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-left--g1.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-left--g2.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-right--g1.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-right--g2.png","viewer/textures/tag-icons/package_signs/warning--length-restriction--g1.png","viewer/textures/tag-icons/package_signs/warning--length-restriction--g2.png","viewer/textures/tag-icons/package_signs/warning--light-rail-transit-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--limited-lighting-under-trees--g1.png","viewer/textures/tag-icons/package_signs/warning--logging-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--loop-270-degree--g1.png","viewer/textures/tag-icons/package_signs/warning--loop-pretzel--g1.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g2.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g3.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g4.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g1.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g2.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g3.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g4.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g5.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g6.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g7.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g8.png","viewer/textures/tag-icons/package_signs/warning--low-ground-clearance--g1.png","viewer/textures/tag-icons/package_signs/warning--low-ground-clearance--g2.png","viewer/textures/tag-icons/package_signs/warning--low-ground-clearance--g3.png","viewer/textures/tag-icons/package_signs/warning--monkey-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--motorcycles-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--narrow-bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--narrow-bridge--g2.png","viewer/textures/tag-icons/package_signs/warning--narrow-bridge--g3.png","viewer/textures/tag-icons/package_signs/warning--no-passing-zone--g1.png","viewer/textures/tag-icons/package_signs/warning--no-passing-zone--g2.png","viewer/textures/tag-icons/package_signs/warning--occupied-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g2.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g3.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g4.png","viewer/textures/tag-icons/package_signs/warning--opening-or-swing-bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--opening-or-swing-bridge--g2.png","viewer/textures/tag-icons/package_signs/warning--other-danger--g1.png","viewer/textures/tag-icons/package_signs/warning--other-danger--g2.png","viewer/textures/tag-icons/package_signs/warning--other-danger--g3.png","viewer/textures/tag-icons/package_signs/warning--panda-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--pass-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/warning--pass-left-or-right--g2.png","viewer/textures/tag-icons/package_signs/warning--pass-left-or-right--g3.png","viewer/textures/tag-icons/package_signs/warning--pavement-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g1.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g2.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g3.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g4.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g5.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g5.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g6.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g7.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g8.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g9.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g10.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g11.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g12.png","viewer/textures/tag-icons/package_signs/warning--playground--g1.png","viewer/textures/tag-icons/package_signs/warning--playground--g3.png","viewer/textures/tag-icons/package_signs/warning--polar-bear-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g1.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g2.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g3.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g4.png","viewer/textures/tag-icons/package_signs/warning--rabbit-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--raccoon-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g5.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g6.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g7.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g5.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g6.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g5.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g6.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g7.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g8.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g9.png","viewer/textures/tag-icons/package_signs/warning--ramp-closed--g1.png","viewer/textures/tag-icons/package_signs/warning--reduced-maximum-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/warning--reserved-lane--g1.png","viewer/textures/tag-icons/package_signs/warning--restricted-zone--g1.png","viewer/textures/tag-icons/package_signs/warning--reversible-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--reversible-lanes--g2.png","viewer/textures/tag-icons/package_signs/warning--rickshaws-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--road-blocks--g1.png","viewer/textures/tag-icons/package_signs/warning--road-bump--g1.png","viewer/textures/tag-icons/package_signs/warning--road-bump--g2.png","viewer/textures/tag-icons/package_signs/warning--road-bump--g3.png","viewer/textures/tag-icons/package_signs/warning--road-bump-with-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/warning--road-closed--g3.png","viewer/textures/tag-icons/package_signs/warning--road-narrows--g1.png","viewer/textures/tag-icons/index.ts","viewer/textures/tag-icons/package_signs/index.ts","viewer/textures/tag-icons/package_signs/warning--road-narrows--g2.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-left--g1.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-left--g2.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-right--g1.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-right--g2.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--road-toll-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--road-widens--g1.png","viewer/textures/tag-icons/package_signs/warning--road-widens-left--g1.png","viewer/textures/tag-icons/package_signs/warning--road-widens-right--g1.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g1.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g2.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g3.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g5.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g6.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g8.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g9.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g10.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g11.png","viewer/textures/tag-icons/package_signs/warning--roadworks-go-left-or-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--roadworks-go-right-or-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g1.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g2.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g3.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g4.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g5.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g6.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g7.png","viewer/textures/tag-icons/package_signs/warning--ruts--g1.png","viewer/textures/tag-icons/package_signs/warning--sand--g1.png","viewer/textures/tag-icons/package_signs/warning--sand-drift--g1.png","viewer/textures/tag-icons/package_signs/warning--school-zone--g2.png","viewer/textures/tag-icons/package_signs/warning--severe-weather--g1.png","viewer/textures/tag-icons/package_signs/warning--shared-lane-motorcycles-bicycles--g1.png","viewer/textures/tag-icons/package_signs/warning--sharp-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--single-reverse-curve--g1.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-left--g1.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-left--g2.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-left--g3.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-right--g1.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-right--g2.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-right--g3.png","viewer/textures/tag-icons/package_signs/warning--skiers--g1.png","viewer/textures/tag-icons/package_signs/warning--skiers--g2.png","viewer/textures/tag-icons/package_signs/warning--skiers--g3.png","viewer/textures/tag-icons/package_signs/warning--slippery-bicycles--g1.png","viewer/textures/tag-icons/package_signs/warning--slippery-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/warning--slippery-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/warning--slippery-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--slippery-road-surface--g2.png","viewer/textures/tag-icons/package_signs/warning--slow--g1.png","viewer/textures/tag-icons/package_signs/warning--snow-tractors--g1.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles--g2.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles--g3.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles-and-others--g1.png","viewer/textures/tag-icons/package_signs/warning--soft-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--soft-road-surface--g2.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g1.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g2.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g3.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g4.png","viewer/textures/tag-icons/package_signs/warning--speed-camera--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g2.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g3.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g4.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent-and-descent--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g2.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g3.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g4.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g5.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g6.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g3.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g4.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g5.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g6.png","viewer/textures/tag-icons/package_signs/warning--t-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--t-roads--g2.png","viewer/textures/tag-icons/package_signs/warning--tanks-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--tanks-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--texts--g1.png","viewer/textures/tag-icons/package_signs/warning--texts--g2.png","viewer/textures/tag-icons/package_signs/warning--texts--g3.png","viewer/textures/tag-icons/package_signs/warning--towing--g1.png","viewer/textures/tag-icons/package_signs/warning--tractors--g1.png","viewer/textures/tag-icons/package_signs/warning--tractors--g2.png","viewer/textures/tag-icons/package_signs/warning--tractors--g3.png","viewer/textures/tag-icons/package_signs/warning--tractors--g4.png","viewer/textures/tag-icons/package_signs/warning--tractors--g5.png","viewer/textures/tag-icons/package_signs/warning--tractors--g6.png","viewer/textures/tag-icons/package_signs/warning--tractors--g7.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-at-signalized-intersections--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g4.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left-and-right--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left-buses--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right-buses--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g4.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g5.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g4.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g5.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g6.png","viewer/textures/tag-icons/package_signs/warning--traffic-slow--g1.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g5.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g6.png","viewer/textures/tag-icons/package_signs/warning--trams-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--trams-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--triple-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-left-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-left-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-right-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-right-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-with-directions--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-reverse-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-reverse-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--trucks-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--trucks-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g1.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g2.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g3.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g4.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g5.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g1.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g2.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g3.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g4.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g5.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g6.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g7.png","viewer/textures/tag-icons/package_signs/warning--turn-left--g1.png","viewer/textures/tag-icons/package_signs/warning--turn-left--g2.png","viewer/textures/tag-icons/package_signs/warning--turn-left--g3.png","viewer/textures/tag-icons/package_signs/warning--turn-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/warning--turn-right--g1.png","viewer/textures/tag-icons/package_signs/warning--turn-right--g2.png","viewer/textures/tag-icons/package_signs/warning--turn-right--g3.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g1.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g2.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g3.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g4.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g5.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g6.png","viewer/textures/tag-icons/package_signs/warning--u-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--u-turn--g2.png","viewer/textures/tag-icons/package_signs/warning--uneven-road--g1.png","viewer/textures/tag-icons/package_signs/warning--uneven-road--g2.png","viewer/textures/tag-icons/package_signs/warning--uneven-roads-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--vehicles-and-others--g1.png","viewer/textures/tag-icons/package_signs/warning--vehicles-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--village--g1.png","viewer/textures/tag-icons/package_signs/warning--weight-limit--g5.png","viewer/textures/tag-icons/package_signs/warning--weight-limit-per-tandem-axle--g1.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g1.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g2.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g3.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g4.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g1.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g2.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g3.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g4.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g5.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g6.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g7.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g8.png","viewer/textures/tag-icons/package_signs/warning--wind--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-left--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-left--g2.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-left--g3.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g2.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g3.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g4.png","viewer/textures/tag-icons/package_signs/warning--winding-road-to-left--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-to-right--g1.png","viewer/textures/tag-icons/package_signs/warning--wombat-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--y-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--y-roads--g2.png","viewer/textures/tag-icons/package_signs/warning--yield-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--yield-ahead--g3.png","viewer/textures/tag-icons/allterra/index.ts","viewer/textures/tag-icons/allterra/beginn schiessuebungsraum.png","viewer/textures/tag-icons/allterra/beginn schiessuebungsstrecke.png","viewer/textures/tag-icons/allterra/doppelrhombus.png","viewer/textures/tag-icons/allterra/doppelwinkel.png","viewer/textures/tag-icons/allterra/ende schiessuebungsraum.png","viewer/textures/tag-icons/allterra/ende schiessuebungsstrecke.png","viewer/textures/tag-icons/allterra/rhombus.png","viewer/textures/tag-icons/allterra/stellung feuerhalt.png","viewer/textures/tag-icons/allterra/winkel.png","types/tags.ts","utilities/assets.ts","utilities/camera.ts","redux/config-upgrade.ts","utilities/project.ts","functions/definitions/blur_vehicles_people.tsx","functions/definitions/classify_export.tsx","functions/definitions/convert_units.tsx","functions/definitions/las_to_orthomosaic.tsx","functions/definitions/las_to_solv3d_streamable.tsx","functions/definitions/sampling.tsx","functions/definitions/thin_las.tsx","functions/functions.tsx","types/web-sources.ts","folder/asset.tsx","folder/tags.tsx","folder/folder.tsx","folder/web-sources.tsx","folder/folder-list.tsx","folder/models.tsx","bookmarks/bookmark-list.tsx","bookmarks/bookmark.tsx","asset-drawer.tsx","app-bar.tsx","settings/global-settings.tsx","viewer/textures/colormaps/awesome-green.png","viewer/textures/colormaps/black-orange.png","viewer/textures/colormaps/blue-hue.png","viewer/textures/colormaps/blue-orange.png","viewer/textures/colormaps/blue-red.png","viewer/textures/colormaps/grayscale.png","viewer/textures/colormaps/heat-map.png","viewer/textures/colormaps/jet.png","viewer/textures/colormaps/pastel-shades.png","viewer/textures/colormaps/index.ts","settings/settings-drawer.tsx","viewer/js/classifications.ts","viewer/js/shaders/render_basic.frag","viewer/js/shaders/render_common.vert","viewer/js/shaders/index.ts","viewer/js/shaders/pointcloud.vert","viewer/js/shaders/pointcloud.frag","viewer/js/shaders/panoramic.vert","viewer/js/shaders/panoramic.frag","viewer/js/shaders/planar.vert","viewer/js/shaders/planar.frag","viewer/js/shaders/render_edl.frag","viewer/js/shaders/render_output.frag","viewer/js/shaders/markers.vert","viewer/js/shaders/markers.frag","viewer/js/shaders/utilities.vert","viewer/js/shaders/utilities.frag","viewer/js/shaders/picker_basic.vert","viewer/js/shaders/picker_basic.frag","viewer/js/shaders/gpu_picker.vert","viewer/js/shaders/gpu_picker.frag","viewer/js/shaders/texture_pack.vert","viewer/js/shaders/tags.vert","viewer/js/shaders/tags.frag","viewer/js/shaders/sprite.vert","viewer/js/shaders/sprite.frag","viewer/js/rendering/render-materials.ts","viewer/js/rendering/render-targets.ts","viewer/js/rendering/render-utils.ts","viewer/js/pointcloud/point-cloud.ts","viewer/js/binary-heap.ts","viewer/js/pointcloud/point-loader.ts","viewer/js/pointcloud/generic-pointcloud.ts","viewer/js/pointcloud/streamable-pointcloud.ts","viewer/js/pointcloud/encompass-pointcloud.ts","viewer/js/pointcloud/point-attributes.ts","viewer/js/pointcloud/potree-pointcloud.ts","viewer/js/controls/orbit-controls.ts","viewer/js/labelling/categories.ts","viewer/js/cameras/texture-cache.ts","viewer/js/cameras/camera-list.ts","viewer/textures/misc/no-image-panoramic.png","viewer/js/cameras/panoramic.ts","viewer/textures/misc/no-image-planar.png","viewer/js/cameras/planar.ts","viewer/js/cameras/aerial-controller.ts","viewer/textures/misc/arrow-standard.png","viewer/textures/misc/arrow-shadow.png","viewer/js/ray-caster.ts","viewer/js/cameras/scene-controller.ts","context-menu/context-menu.tsx","context-menu/custom-links.tsx","viewer/js/aerial/map.ts","viewer/js/aerial/orthos.ts","viewer/js/labelling/image-label.ts","viewer/js/labelling/ortho-label.ts","viewer/js/labelling/scene-label.ts","viewer/js/markup/clipping-box.ts","viewer/js/markup/point-markup.ts","viewer/js/controls/mobile-controls.ts","viewer/js/point-profile/point-profile.ts","viewer/js/controls/controls.ts","viewer/js/controls/compass.ts","viewer/js/controls/mouse-controls.ts","viewer/js/controls/multi-image.ts","viewer/js/measurements/measurement.ts","viewer/js/measurements/measurement-aerial-view.ts","viewer/js/measurements/measurement-constructor.ts","viewer/js/measurements/measurement-controller.ts","viewer/js/measurements/measurement-formatter.ts","viewer/js/measurements/measurement-group-exporter.ts","viewer/js/measurements/measurement-group.ts","viewer/js/measurements/measurement-scene-view.ts","viewer/js/gpu-picker.ts","stats.module.js","viewer/js/tags/tags-list.ts","viewer/js/tags/scene-controller.ts","viewer/js/tags/aerial-controller.ts","viewer/js/tags/annotations.ts","viewer/textures/sprites/point.png","viewer/js/linework/cad.ts","viewer/js/linework/ifc.ts","viewer/js/linework/shp.ts","viewer/js/linework/dxf.ts","viewer/js/web-sources/loader.ts","viewer/js/web-sources/web-sources.ts","viewer/js/main.ts","viewer/textures/map-preview/index.ts","viewer/textures/map-preview/open-street-maps.png","viewer/textures/map-preview/arcgis-world.png","viewer/textures/map-preview/arcgis-street.png","viewer/layer-switcher.tsx","viewer/viewer.tsx","viewer/js/data-aligner/image-aligner-advanced.ts","viewer/js/data-aligner/image-aligner-basic.ts","viewer/js/data-aligner/observations.ts","viewer/js/data-aligner/local-projection.ts","alignment/observations.tsx","alignment/image-aligner-advanced.tsx","alignment/image-aligner-basic.tsx","alignment/local-projection.tsx","labelling/image-labelling.tsx","navigation/quick-nav.tsx","export/static/utils.ts","export/static/state.ts","export/static/exporter.ts","export/common.tsx","export/static/static-export.tsx","export/cloud/exporter.ts","types/cloud-export.ts","export/cloud/cloud-export.tsx","markup/point-markup.tsx","measurements/measurements.tsx","measurements/multi-image.tsx","viewer/textures/misc/solv3d-logo.png","about.tsx","task-queue.tsx","hooks/use-item-search.ts","cloud-projects.tsx","app.tsx","redux/project-slice.ts","providers/auth-provider.tsx","providers/tools-provider.tsx","providers/viewer-provider.tsx","providers/task-queue-provider.tsx","providers/global-settings-provider.tsx","providers/websocket-provider.tsx","providers/bookmarks-provider.tsx","viewer/textures/misc/mosaic-logo.png","providers/branding-provider.tsx"],"names":["unknownProjectionMeters","type","default","units","name","string","unknownProjectionFeet","defaultProjection","defaultTransform","origin","Array","fill","translation","rotation","scale","uniqueProjectionID","text","replace","userProjections","constructor","data","file","this","load","getByName","find","projection","getByString","proj","filter","transform","withUniqueName","suffix","push","storage","setSync","isStaticSite","getSync","isArray","delete","index","map","x","indexOf","splice","update","save","useStyles","makeStyles","theme","createStyles","title","margin","padding","spacing","content","paddingTop","titleClose","color","marginTop","marginBottom","adornedEnd","paddingRight","utmParent","display","utmZone","flex","utmButton","marginLeft","button","dropdown","minWidth","formControl","width","buttonDiv","textAlign","tabsParent","tabsHeaders","UserProjectionPanel","props","loadProjectionToEdit","setActiveTab","tableState","t","useTranslation","deleteDialog","useDialog","columns","id","label","searchable","rows","option","custom","disabled","LocalScene","isDataProjection","actions","icon","fontSize","onClick","row","handleOpen","deletePrompt","open","Fragment","length","Typography","variant","state","results","maxHeight","onCancel","handleClose","onSubmit","toast","error","onDelete","prompt","EditPanel","customProjection","updateEditableValues","hasTransform","setHasTransform","newProjection","existingName","classes","projString","translate","nameTrim","trim","stringTrim","originXError","originYError","originZError","translateXError","translateYError","translateZError","rotationError","scaleError","canSubmit","updateString","value","updateOrigin","event","parseFloat","target","isNaN","updateTranslation","Grid","container","item","xs","onChange","options","placeholder","multiline","FormControlLabel","className","control","Checkbox","checked","TextField","e","InputLabelProps","shrink","fullWidth","Button","JSON","parse","stringify","nameChanged","duplicateName","isValidProjection","success","SearchPanel","setType","useState","searchTerm","setSearchTerm","hemisphere","setHemisphere","searching","setSearching","searchResults","setSearchResults","handleString","getProjections","searchText","pageNumber","previousResults","maxPageNumber","fetch","then","response","json","parsed","forEach","result","code","proj4","combined","setTimeout","numeric","epsg","parseInt","InputLabel","Select","labelId","MenuItem","InputProps","startAdornment","InputAdornment","position","clsx","select","reset","StyledPanel","PanelProps","style","minHeight","children","ProjectionsManager","uniqueProjectID","useUniqueProjectID","projectionsDialog","userTableState","useTableState","defaultSort","searchTableState","setExistingName","setNewProjection","activeTab","setTabValue","setCustomProjection","clearProjectionValues","projectionData","dataCopy","hasOwnProperty","transformCopy","useEffect","registerEvent","Dialog","scroll","onClose","AppBar","Tabs","newactiveTab","Tab","TabProps","IconButton","aria-label","size","newValues","ProjectionDetector","dialog","useTheme","dispatch","useDispatch","filename","setFilename","setProjection","saveProjection","setSaveProjection","dataProjection","useSelector","selectDataProjection","callback","detail","document","addEventListener","removeEventListener","existingProjection","uniqueProjection","useExisting","createNew","buttonText","resetCameraState","resetAerialState","updateDataProjection","updateViewProjection","flexDirection","gap","sx","pt","setProjectionFromLAS","sendCustomEvent","webpackEmptyContext","req","Error","keys","resolve","module","exports","EngineViewer","useBranding","store","StyledEngineProvider","injectFirst","ThemeProvider","ThemedViewer","ReactDOM","render","getElementById","appReducer","combineReducers","project","projectReducer","camera","cameraReducer","folders","foldersReducer","projections","projectionsReducer","settings","settingsReducer","assets","assetsReducer","bookmarks","bookmarksReducer","custom_links","customLinksReducer","middleware","MiddlewareArray","concat","thunk","configureStore","reducer","action","newProject","loadConfig","configInit","undefined","projectJSON","payload","parameters","setTagQueryString","tag","updateStateFromTag","bookmarkID","bookmark","aerialState","sceneState","asset","visible","visibleAssets","includes","updateStateFromBookmark","getModifiedSceneState","getModifiedAerialState","switched","toBoolean","expanded","updateStateFromParameters","nanoid","isMobile","useAppDispatch","readFileJSON","path","isCloudSite","isValidURL","readJsonFromURL","readJsonElectron","readFileText","readTextFromURL","readTextElectron","readFileBuffer","readBufferFromURL","readBufferElectron","async","headers","status","fse","readFile","byteRange","first","last","arrayBuffer","bytesRequested","byteLength","tmpBuffer","Buffer","alloc","buffer","bytesRead","read","close","setState","useCallback","useTaskQueue","useContext","TaskQueueContext","useViewer","ViewerContext","useActiveTool","ActiveToolContext","selectSessionID","usePopover","anchorRef","useRef","setOpen","handleToggle","prevState","useAuth","AuthContext","useContextMenu","anchorPosition","preventDefault","left","clientX","top","clientY","useGlobalSettings","GlobalSettingsContext","useWebSockets","WebSocketContext","useBookmarks","BookmarksContext","AssetType","pointCloudType","ext","lasFileFormat","LAS","encompassFileFormat","Encompass","e57FileFormat","E57Points","potreeFileFormat","Potree","Unknown","getByID","assetID","getAssetByTagID","tagID","Tag","items","getAssetPayload","date","Date","toISOString","folderID","saved","cloud","assetsSlice","createSlice","initialState","reducers","addAsset","addAssets","updateAsset","updates","key","deleteAsset","toggleFolderVisibility","setVisibleAssets","setVisibleFolder","setSavedState","updateModelLayer","layerID","DXF","SHP","getAssetByModelLayerID","layer","updateWebMapLayer","Webmap","layers","getAssetByWebMapLayerID","createTags","tags","createTagsHelper","api","create","deleteTag","deleteTagHelper","updateTag","annotations","newAssetID","newAsset","wsCreateAsset","wsUpdateAsset","wsDeleteAsset","createAsset","getState","assetData","texture","slice","createCollection","deleteCollection","updateCollection","selectAllAssets","getVisibleAssets","getModelAssets","IFC","getTagAssets","getPointCloudAssets","getCameraFileAssets","Panoramic","Planar","getOrthoAssets","OrthoMosaic","getLandXMLAssets","LandXML","getWebMapAssets","pageSize","query","setQuery","sortDir","setSortDir","sortBy","setSortBy","setPageNumber","rowsPerPage","setRowsPerPage","descendingComparator","a","b","compA","compB","toLowerCase","getComparator","handleSearchChange","debounce","handlePageNumberChange","handleRowsPerPageChange","handleRequestSort","handleSearch","queryParts","split","searchableColumns","column","valid","parts","handleSort","comparator","sort","handlePages","transformCache","unitsToValue","latitudeLongitude","webMercator","workerPool","AsyncWorkerPool","verifyProjection","modified","verifyProjectionString","verifyTransformObject","estimateTransform","estimator","inputValues","outputValues","domain","y","range","console","errors","estimate","nudged","getScale","getRotation","getTranslation","transformed","point","transformMany","i","dX","dY","Math","sqrt","MathUtils","radToDeg","reprojectPoints","points","projectionFrom","projectionTo","Promise","reject","values","positions","postMessage","reprojectPoint","isVector3","toArray","rotateAxis","Vector3","angle","degToRad","sub","applyAxisAngle","divide","add","heightScale","transformKey","projToMeters1","projectionToMeters","getTransform","forward","multiply","closestUtmZone","lonlat","ceil","Coordinate","z","super","clone","copy","SceneCoordinate","toAerial","_sceneToAerial","toLonLat","_sceneToLonLat","toGeocentric","LonLatCoordinate","toDataProjection","_sceneToData","DataProjectionCoordinate","toViewProjection","GeocentricCoordinate","toProjection","viewProjection","ViewProjectionCoordinate","toScene","_dataToScene","pow","ep","p","th","atan2","lon","lat","sin","cos","N","alt","PI","abs","ProjectedCoordinate","distanceTo","isLonLat1","isLonLatProjection","isLonLat2","haversineDistance","vector","SphericalPosition","radius","_theta","_phi","limits","round","precision","divisor","fromVectors","pivot","orbit","offset","theta","dist2d","phi","max","min","fromValues","toVector3","getEulerInverse","euler","quaternion","Quaternion","setFromEuler","invert","Euler","setFromQuaternion","geometryToArray","geometry","polygon","coordinates","flatCoordinates","totalPoints","ecef","calculatePointsPCA","vertices","returnFlat","eigen","mean","vertex","divideScalar","executeWithoutLogging","PCA","getEigenVectors","calculateEigenVectors","matrix","Matrix4","makeBasis","fromArray","transpose","applyMatrix4","pointsFlat","projectionToUnits","Proj","convert","P1","P2","diffLat","diffLng","arc","distance2d","height","distance","origin_east","origin_north","origin_elevation","translation_east","translation_north","translation_elevation","scale_factor_h","Object","assign","toUpperCase","join","_sceneShift","_sceneScale","_dataProjection","_viewProjection","dataToMeters","dataProjectionUnits","viewProjectionUnits","isLonLatProject","initialized","engineStyleProjection","proj4String","scale_factor_v","setDataProjection","resetSceneShift","setViewProjection","checkForOffset","dx","dy","offsetToScene","_dataToLonLat","_dataToAerial","lonLat","multiplyScalar","bookmarksSlice","createBookmark","attributes","updateBookmark","deleteBookmark","wsCreateBookmark","wsUpdateBookmark","wsDeleteBookmark","selectAllBookmarks","ProjectType","AccessType","CustomEvent","dispatchEvent","numberOfClassifications","classifications","alias","from","getClassificationColors","image","Image","onload","canvas","createElement","context","getContext","drawImage","imageData","getImageData","colors","red","green","hexColor","toString","padStart","src","classificationsShader","url","engineCloudURL","cloudProjectID","method","body","withOriginalID","folder","err","annotation","tagCollection","asyncTimeout","ms","isHTML","isHtml","ControlType","ControlModes","0","ORBIT","MOUSE","LEFT","ZOOM","MIDDLE","PAN","RIGHT","1","2","customLinkSlice","createCustomLink","customURL","updateCustomLink","linkID","deleteCustomLink","selectAllCustomLinks","ChangeDetector","viewer","oldZoom","oldFov","oldLookatVector","oldCameraPosition","oldUpVector","oldCameraID","oldHeight","oldWidth","oldOrbitState","orbitChanged","cameraChanged","changed","fov","getAerialZoomLevel","lookatVector","upVector","getCurrentCameraName","orbitState","lookatChanged","angleTo","newLookatVector","upChanged","newUpVector","positionChanged","newCameraPosition","fovChanged","newFov","zoomChanged","newZoom","newCameraID","heightChanged","newHeight","widthChanged","newWidth","newOrbitState","UnitConverter","metresToSurveyFeetRatio","metresToFeetRatio","allowedUnits","Set","fromUnits","toUnits","fixedLength","has","convertedValue","toFixed","test","navigator","userAgent","isUrl","encodeURI","getProjFactor","screenHeight","projFactor","tan","getPointScale","mesh","meshPosition","getWorldPosition","window","innerHeight","toScreenPosition","set","eventToPixel","uv","offsetX","offsetY","layerX","layerY","randomHexColor","random","closestPowerOfTwo","power","log","roundDigit","num","digits","multiplyFactor","Number","EPSILON","logger","windowSafeDateISO","coordinatesToArray","numPoints","newPoints","interpolate1D","start","end","steps","linspace","mergeBoundingBoxes","boundingBoxes","bbox","Box3","allIndexOf","array","indices","withOpacity","opacity","colorWithOpacity","olColor","simplepolygon","require","pointInPolygon","numberOfVertices","insidePolygon","j","verti","vertj","dy1","dy2","cond1","cond2","planeFromVectors","directions","normal","setLength","Plane","checkValidPolygon","shifted","features","parseURLParams","hash","URL","substring","urlParams","URLSearchParams","fromEntries","params","warning","center","zoom","ox","oy","oz","px","py","pz","initialSceneState","lookat","cam","angles","mapBoundsStyle","Style","stroke","Stroke","boundsToMapLayer","boundingBox","polygonPoints","vectorsource","VectorSource","wrapX","Polygon","feature","Feature","addFeature","VectorLayer","zIndex","source","fetchImage","signal","blob","Blob","createImageBitmap","imageOrientation","colorSpaceConversion","resizeImage","resized","resizeWidth","resizeHeight","resizeQuality","warn","fileName","numWorkers","workers","queue","initWorkers","filePath","worker","Worker","message","transfer","processQueue","shift","onmessage","VolumeType","SamplingRate","MeasureType","AerialMeasureType","MeasureExportType","themeSpacing","createTheme","brand","isMosaic","primaryColor","secondaryColor","createMuiTheme","components","MuiPopover","styleOverrides","root","MuiTooltip","defaultProps","disableInteractive","tooltip","backgroundColor","arrow","border","MuiDialogTitle","MuiDialogContent","MuiIconButton","MuiSelect","MuiTextField","MuiTabs","indicatorColor","textColor","MuiSwitch","MuiCheckbox","MuiRadio","palette","primary","main","light","lighten","dark","darken","secondary","mode","mixins","toolbar","LocalizedFileFilter","extensions","getCombinedExtension","filters","pngFilter","pointCloudFileFormats","pointCloudFilter","configFileType","configFilter","customURLFilter","imageOrthoFormat","imageOrthoFilter","imageCSVFilter","projFileFormat","imagePlanarFormat","imagePlanarFilter","csvExportFilter","cameraMatrixFilter","measureDataFormat","measureDataFilter","measureCSVFilter","tagCSVFilter","DXFFileFormat","SHPFileFormat","IFCFileFormat","xmlFileFormat","drawingFilter","DXFModelFilter","SHPModelFilter","ZIPFileFilter","modelFileFilter","labelFilter","modelFilter","xmlFileFilter","lasFileFilter","getDateTimeFormat","memoizeFormatConstructor","Intl","DateTimeFormat","defaultOptions","timeStyle","dateStyle","toLocaleString","language","createdAt","format","ColorType","MarkerNavType","defaultClassifications","classification","available","initialSettingsState","colorMap","colorType","Height","dynamicSize","circularPoints","arrowMarkers","Arrows","cloudMaxPoints","cloudDistance","cloudScale","cloudMinimum","tagDistance","drawerOpen","heightClip","intensityClip","saveSettingsDefaults","cloneDeep","applySavedSettings","settingsSlice","updateSettingsState","applySavedDefaults","defaults","changeDefaultSettings","changeOpacity","changeTagDistance","changeCloudDistance","changeCloudMaxPoints","changeCloudScale","changeCloudMinimum","changeHeightClip","changeIntensityClip","changeColorMap","changeColorType","changeDynamicSize","changeCircularPoints","changeAvailableClassifications","availableClassifications","changeClassificationVisibility","changeAllClassificationVisibility","changeSwitched","changeSelectedTab","changeAssetDrawerState","changeArrowMarkers","selectOpacity","selectTagDistance","selectCloudDistance","selectCloudMaxPoints","selectCloudScale","selectCloudMinimum","selectHeightClip","selectIntensityClip","selectColorMap","selectColorType","selectDynamicSize","selectCircularPoints","selectViewerSwitched","selectSelectedTab","selectAssetDrawerState","selectArrowMarkers","selectClassifications","getAvailableClassifications","getClassificationVisibilities","BrandingContext","olButtonParent","background","borderRadius","olButtonTopLeft","olButtonBottomLeft","bottom","olButton","outline","olButtonRotate","transition","EnhancedIconButton","tooltipText","tooltipTitle","dangerouslySetInnerHTML","__html","ArrowTooltip","OpenLayersIcon","rotate","placement","DenseIcon","centered","other","ListItemIcon","alignItems","draggableTitleClose","grey","marginRight","draggableTitleMinimize","draggableContentStaticHeight","draggableContent","maxWidth","draggableMouseDown","modal","draggableContentParent","overflow","draggableResizeHandler","float","right","draggableTopDiv","draggableBackdropPaper","draggableBackdropRounded","draggableRoundCorner","draggableTitle","userSelect","cursor","draggableTitleDown","progressContent","progressNoTransition","dropdownGrid","justifyContent","dropdownSpacing","simpleDialogMain","simpleDialogHeader","simpleDialogTitle","simpleDialogEdit","simpleDialogClose","PromptDialog","DialogTitle","DialogContent","DialogContentText","DialogActions","AlertDialog","TextDialog","clear","setText","setDisabled","handleSubmit","trimmedText","onKeyDown","autoFocus","DropDownDialog","defaultValue","setValue","SimpleDialog","canClose","DraggableDialog","resize","initialHeight","initialWidth","initialPositionX","initialPositionY","headerHeight","paperPropID","resizeElementID","bounds","setBounds","mouseDown","setMouseDown","dialogSize","setDialogSize","setPosition","interval","setInterval","element","elementWidth","clientWidth","elementHeight","clientHeight","newBounds","innerWidth","getNewBoundary","newPosition","rightOutOfBounds","leftOutOfBounds","bottomOutOfBounds","topOutOfBounds","checkOutOfBounds","currentDialogSize","isEqual","clearInterval","handle","onDrag","fullScreen","onFocus","parentElement","removeAttribute","aria-labelledby","paperFullScreen","scrollPaper","slotProps","backdrop","PaperProps","onMouseDown","onMouseUp","ProgressDialog","percent","animated","LinearProgress","bar","LabelCategoryDialog","getSelectedLabels","selectedLabelIDs","highlightedLabels","getCategoryDropdown","allCategories","getAllCategories","highlightedCategories","labelID","getCategoryByLabelID","choosableCategories","category","dropDownList","labelIDs","transferLabel","draggingListItem","staticListItem","borderBottom","flexGrow","DraggableListItem","setData","inputName","listLength","useStaticListItem","draggableId","provided","snapshot","ListItem","ref","innerRef","draggableProps","dragHandleProps","isDragging","NumberField","step","DraggableList","memo","onDragEnd","droppableId","droppableProps","header","fontWeight","whiteSpace","densePadding","denseFooter","hiddenSort","clip","noSelect","rowDisabled","rowIcon","buttonCell","buttonHeader","tableRow","paddingLeft","EnhancedTableCheckboxHead","numVisible","indeterminate","stopPropagation","EnhancedTableHead","onRequestSort","dense","hasActions","TableHead","TableRow","sortable","TableCell","align","sortDirection","TableSortLabel","active","hideSortIcon","direction","property","EnhancedTableBody","setSelectedRow","handleContextMenu","TableBody","hover","tabIndex","EnhancedTableCell","i18n","isString","condition","cellContent","wordBreak","forceOpacity","pointer","EnhancedTable","contextMenu","search","setSearch","selectedRow","tableRows","numberOfRows","Paper","Input","TableContainer","Table","stickyHeader","TablePagination","rowsPerPageOptions","component","count","labelRowsPerPage","labelDisplayedRows","page","to","getItemAriaLabel","onPageChange","onRowsPerPageChange","DenseMenu","subMenuRoot","subMenuLabel","NestedMenuItem","React","forwardRef","parentMenuOpen","rightIcon","tabIndexProp","ContainerProps","ContainerPropsProp","MenuItemProps","containerRefProp","menuItemRef","useImperativeHandle","current","containerRef","menuContainerRef","isSubMenuOpen","setIsSubMenuOpen","isSubmenuFocused","ownerDocument","activeElement","child","onMouseEnter","onMouseLeave","focus","firstChild","Menu","pointerEvents","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","keepMounted","disableAutoFocus","disableEnforceFocus","NestedMenu","MenuDivider","Divider","onEnter","enteringScreen","transitions","duration","transitionProps","timeout","enter","exit","anchorReference","TransitionComponent","Grow","TransitionProps","Tooltip","CursorTooltip","lines","disableToggle","hidden","setHidden","useMemo","modifiedLines","onHotkey","HTMLInputElement","which","followCursor","converter","flexibleHeight","fileButtonDiv","dropdownWithLabel","paddingBottom","inputParent","inputLabel","inputSwitch","inputFolder","NumberFieldWithUnits","NumberFieldNoUnits","NumberFieldWithLabel","adornment","helperText","endAdornment","inputProps","hasError","floatValue","convertedMin","setConvertedMin","convertedMax","setConvertedMax","convertedData","setConvertedData","convertNearestStep","roundFunc","numSteps","floor","DropdownWithLabel","seperator","menuOptions","optionsToDropdown","hasSeperator","isLastItem","FolderWithLabel","showOpenDialog","properties","canceled","folderPath","slash","filePaths","FileWithLabel","optional","saveFile","handleChange","showSaveDialog","Delete","Save","AttachFile","InputWithLabel","required","touched","setTouched","onInputChange","onBlur","TextWithLabel","renderAsHTML","typography","body1","CheckboxWithLabel","onCheckboxChange","_","Switch","SwitchWithLabel","EditableTextField","permissions","editing","setEditing","newValue","setNewValue","edit","EditButtonGroup","EditableDropdown","currentOption","newOption","LinearProgressWithLabel","Box","mr","TabPanel","BoxProps","role","verticalDivider","icons","iconButton","iconSize","listIcon","DenseDivider","spacingDown","spacingUp","DividerWithText","Chip","IconToolBar","ToolBarDivider","FontAwesomeIcon","errorColor","Icon","colorPrimary","ToolBarButton","SlimScrollbar","scrollHeight","autoHide","autoHeight","autoHeightMin","autoHeightMax","autoHideTimeout","autoHideDuration","DynamicScrollbar","scrollPercent","setScroll","setMaxHeight","listElementID","checkScrollHeight","offsetHeight","percentHeight","getMaxHeight","memoWithOpen","areEqual","prevProps","nextProps","menuStateCache","fileMenu","submenu","click","WorkflowExecutable","run","commands","sendToMainWindow","exitFromApp","helpMenu","isDevMode","accelerator","remote","getCurrentWindow","toggleDevTools","shell","openPath","logDirectoryPath","clearMlResources","openExternal","toolsMenu","enabled","debugMenu","clearTempFolder","reload","webContents","send","PythonExecutable","saveLogs","showMessageBox","noLink","setToolEnabled","toolName","getApplicationMenu","getMenuItemById","setMenuState","running","showStatus","onLine","jsonData","license_check","buildElectronMenu","isStandardProject","template","menu","buildFromTemplate","setApplicationMenu","checkAllowedMenuItems","LanguageOptions","LanguagePopover","selectProjectType","Standard","changeLanguage","updateCompass","setLocalizedURL","clearTimeout","Popover","disableScrollLock","ListItemText","LanguageSwitch","popover","textTransform","divider","buttonParent","AccountPopover","linkAccount","signOut","loggedIn","user","accountType","ViewOnly","Admin","getAccountType","firstName","lastName","email","AccountButton","Toaster","toasts","useToasterStore","remove","toastOptions","backdropFilter","alpha","common","white","boxShadow","shadows","typographyLink","textDecoration","textDecorationColor","TypographyLink","openExternalLink","colorPicker","ColorPicker","setColor","disableUnderline","input","engineCloudURLKey","tagQueryString","setEngineCloudURL","force","isElectronApp","currentEngineCloudURL","localStorage","getItem","setItem","location","redirectToLogin","searchParams","returnTo","href","setAttribute","appendChild","removeChild","initialAerialState","basemap","cameraStateSlice","adjustments","changeCameraTransform","changeCameraState","changeCameraHeight","changeBasicAdjustments","changeSavedAerialState","selectCameraHeight","selectActiveCamera","selectCameraState","selectCameraTransform","selectBasicAdjustments","selectSavedAerialState","resources","en","de","fr","es","ja","ar","supportedLngs","use","initReactI18next","LanguageDetector","init","detection","cookieMinutes","fallbackLng","interpolation","escapeValue","getLocalizedURL","history","pushState","devModeConfig","appPath","app","getAppPath","fs","readFileSync","testing","getDevModeConfig","Executable","exePath","exeName","developerKey","spawnDetached","logText","basePath","executablePath","dirname","statusMessage","pid","parseCommandsList","copyableCommands","onLogs","commandList","cwd","spawn","env","process","PYTHONUNBUFFERED","NODEJS","detached","copyPasteCommands","on","commandIndex","commandName","saveLogFile","stderr","parseLines","stdout","line","messageType","messageData","destroy","execSync","onbeforeunload","write","stdin","manifest","workflowName","logPrefix","dateString","replaceAll","logPath","logs","writeFile","filenames","readdir","oldestFilePath","oldest","stats","stat","birthtime","trackToolUsage","profileContainer","toolbarDropdown","profileChart","PointProfile","samplingType","setSamplingType","displayUnits","setDisplayUnits","savePointProfileImageBrowser","imageBase64","getPointProfileImage","projectName","savePointProfileImageElectron","defaultPath","imageBase64Data","imageBuffer","writeFileSync","encoding","catch","setPointProfileSampling","setPointProfileUnits","resetPointProfile","refreshPointProfile","resetPointProfileView","initProfileContainer","electron","ipcRenderer","pattern","pathname","getCloudProjectID","checkForCloudSite","isPackaged","tempDirectoryPath","getPath","getTemporaryFile","existsSync","numRemoved","eventName","removeAllListeners","mkdirSync","recursive","userSettings","storagePath","engineStoragePath","viewerStoragePath","productName","settingName","oldName","newName","copyFileSync","setDataPath","engineProjectionExist","viewerProjectionExist","dataPath","engineProjections","finalData","projectionsByName","changeDuplicateNames","setStoragePath","isModelFile","isStreamablePointsFile","isRawPointsFile","getModelLayers","originalId","getWebmapLayers","identifier","String","getBaseAsset","getTagsData","comment","roll","pitch","yaw","config","object","projectionsSlice","view","measureUnits","changeMeasureUnits","selectViewProjection","selectMeasureUnits","defaultFolderTitle","generateDefaultFolder","foldersSlice","createFolder","updateFolder","newDefaultFolder","deleteFolder","wsCreateFolder","wsUpdateFolder","wsDeleteFolder","selectDefaultFolder","selectAllFolders","spiralIntersect","spiral","stepDist","sigDigs","spiralParams","spiType","RL","constant","reverseCurve","partial","radiusEnd","radiusStart","cw","rot","delta","L","dirEnd","dirStart","xStart","yStart","xEnd","yEnd","segmentMin","segmentMax","Start","c","End","d","xCorr","yCorr","deltaCorr","ls","le","distMin","endPointError","chosenDelta","deltaTrial","l","xRotated","yRotated","xDiff","yDiff","dist","spiralParamaters","spiralCoord","distAlong","distAcross","xAtLength","yAtLength","lengthLocal","distAcrossNew","sideOfLine","lineDist","textures","tagTextures","basicPins","trafficSigns","UKRoadSigns","packageObjects","icon0","icon1","icon2","icon3","icon4","icon5","icon6","icon7","icon8","icon9","icon10","icon11","icon12","icon13","icon14","icon15","icon16","icon17","icon18","icon19","icon20","icon21","icon22","icon23","icon24","icon25","icon26","icon27","icon28","icon29","icon30","icon31","icon32","icon33","icon34","icon35","icon36","icon37","icon38","icon39","icon40","icon41","icon42","icon43","icon44","icon45","icon46","icon47","icon48","icon49","icon50","icon51","icon52","icon53","icon54","icon55","icon56","icon57","icon58","icon59","icon60","icon61","icon62","icon63","icon64","icon65","icon66","icon67","icon68","icon69","icon70","icon71","icon72","icon73","icon74","icon75","icon76","icon77","icon78","icon79","icon80","icon81","icon82","icon83","icon84","icon85","icon86","icon87","icon88","icon89","icon90","icon91","icon92","icon93","icon94","icon95","icon96","icon97","icon98","icon99","icon100","icon101","icon102","icon103","icon104","icon105","icon106","icon107","icon108","icon109","icon110","icon111","icon112","icon113","icon114","icon115","icon116","icon117","icon118","icon119","icon120","icon121","icon122","icon123","icon124","icon125","icon126","icon127","icon128","icon129","icon130","icon131","icon132","icon133","icon134","icon135","icon136","icon137","icon138","icon139","icon140","icon141","icon142","icon143","icon144","icon145","icon146","icon147","icon148","icon149","icon150","icon151","icon152","icon153","icon154","icon155","icon156","icon157","icon158","icon159","icon160","icon161","icon162","icon163","icon164","icon165","icon166","icon167","icon168","icon169","icon170","icon171","icon172","icon173","icon174","icon175","icon176","icon177","icon178","icon179","icon180","icon181","icon182","icon183","icon184","icon185","icon186","icon187","icon188","icon189","icon190","icon191","icon192","icon193","icon194","icon195","icon196","icon197","icon198","icon199","icon200","icon201","icon202","icon203","icon204","icon205","icon206","icon207","icon208","icon209","icon210","icon211","icon212","icon213","icon214","icon215","icon216","icon217","icon218","icon219","icon220","icon221","icon222","icon223","icon224","icon225","icon226","icon227","icon228","icon229","icon230","icon231","icon232","icon233","icon234","icon235","icon236","icon237","icon238","icon239","icon240","icon241","icon242","icon243","icon244","icon245","icon246","icon247","icon248","icon249","icon250","icon251","icon252","icon253","icon254","icon255","icon256","icon257","icon258","icon259","icon260","icon261","icon262","icon263","icon264","icon265","icon266","icon267","icon268","icon269","icon270","icon271","icon272","icon273","icon274","icon275","icon276","icon277","icon278","icon279","icon280","icon281","icon282","icon283","icon284","icon285","icon286","icon287","icon288","icon289","icon290","icon291","icon292","icon293","icon294","icon295","icon296","icon297","icon298","icon299","icon300","icon301","icon302","icon303","icon304","icon305","icon306","icon307","icon308","icon309","icon310","icon311","icon312","icon313","icon314","icon315","icon316","icon317","icon318","icon319","icon320","icon321","icon322","icon323","icon324","icon325","icon326","icon327","icon328","icon329","icon330","icon331","icon332","icon333","icon334","icon335","icon336","icon337","icon338","icon339","icon340","icon341","icon342","icon343","icon344","icon345","icon346","icon347","icon348","icon349","icon350","icon351","icon352","icon353","icon354","icon355","icon356","icon357","icon358","icon359","icon360","icon361","icon362","icon363","icon364","icon365","icon366","icon367","icon368","icon369","icon370","icon371","icon372","icon373","icon374","icon375","icon376","icon377","icon378","icon379","icon380","icon381","icon382","icon383","icon384","icon385","icon386","icon387","icon388","icon389","icon390","icon391","icon392","icon393","icon394","icon395","icon396","icon397","icon398","icon399","icon400","icon401","icon402","icon403","icon404","icon405","icon406","icon407","icon408","icon409","icon410","icon411","icon412","icon413","icon414","icon415","icon416","icon417","icon418","icon419","icon420","icon421","icon422","icon423","icon424","icon425","icon426","icon427","icon428","icon429","icon430","icon431","icon432","icon433","icon434","icon435","icon436","icon437","icon438","icon439","icon440","icon441","icon442","icon443","icon444","icon445","icon446","icon447","icon448","icon449","icon450","icon451","icon452","icon453","icon454","icon455","icon456","icon457","icon458","icon459","icon460","icon461","icon462","icon463","icon464","icon465","icon466","icon467","icon468","icon469","icon470","icon471","icon472","icon473","icon474","icon475","icon476","icon477","icon478","icon479","icon480","icon481","icon482","icon483","icon484","icon485","icon486","icon487","icon488","icon489","icon490","icon491","icon492","icon493","icon494","icon495","icon496","icon497","icon498","icon499","icon500","icon501","icon502","icon503","icon504","icon505","icon506","icon507","icon508","icon509","icon510","icon511","icon512","icon513","icon514","icon515","icon516","icon517","icon518","icon519","icon520","icon521","icon522","icon523","icon524","icon525","icon526","icon527","icon528","icon529","icon530","icon531","icon532","icon533","icon534","icon535","icon536","icon537","icon538","icon539","icon540","icon541","icon542","icon543","icon544","icon545","icon546","icon547","icon548","icon549","icon550","icon551","icon552","icon553","icon554","icon555","icon556","icon557","icon558","icon559","icon560","icon561","icon562","icon563","icon564","icon565","icon566","icon567","icon568","icon569","icon570","icon571","icon572","icon573","icon574","icon575","icon576","icon577","icon578","icon579","icon580","icon581","icon582","icon583","icon584","icon585","icon586","icon587","icon588","icon589","icon590","icon591","icon592","icon593","icon594","icon595","icon596","icon597","icon598","icon599","icon600","icon601","icon602","icon603","icon604","icon605","icon606","icon607","icon608","icon609","icon610","icon611","icon612","icon613","icon614","icon615","icon616","icon617","icon618","icon619","icon620","icon621","icon622","icon623","icon624","icon625","icon626","icon627","icon628","icon629","icon630","icon631","icon632","icon633","icon634","icon635","icon636","icon637","icon638","icon639","icon640","icon641","icon642","icon643","icon644","icon645","icon646","icon647","icon648","icon649","icon650","icon651","icon652","icon653","icon654","icon655","icon656","icon657","icon658","icon659","icon660","icon661","icon662","icon663","icon664","icon665","icon666","icon667","icon668","icon669","icon670","icon671","icon672","icon673","icon674","icon675","icon676","icon677","icon678","icon679","icon680","icon681","icon682","icon683","icon684","icon685","icon686","icon687","icon688","icon689","icon690","icon691","icon692","icon693","icon694","icon695","icon696","icon697","icon698","icon699","icon700","icon701","icon702","icon703","icon704","icon705","icon706","icon707","icon708","icon709","icon710","icon711","icon712","icon713","icon714","icon715","icon716","icon717","icon718","icon719","icon720","icon721","icon722","icon723","icon724","icon725","icon726","icon727","icon728","icon729","icon730","icon731","icon732","icon733","icon734","icon735","icon736","icon737","icon738","icon739","icon740","icon741","icon742","icon743","icon744","icon745","icon746","icon747","icon748","icon749","icon750","icon751","icon752","icon753","icon754","icon755","icon756","icon757","icon758","icon759","icon760","icon761","icon762","icon763","icon764","icon765","icon766","icon767","icon768","icon769","icon770","icon771","icon772","icon773","icon774","icon775","icon776","icon777","icon778","icon779","icon780","icon781","icon782","icon783","icon784","icon785","icon786","icon787","icon788","icon789","icon790","icon791","icon792","icon793","icon794","icon795","icon796","icon797","icon798","icon799","icon800","icon801","icon802","icon803","icon804","icon805","icon806","icon807","icon808","icon809","icon810","icon811","icon812","icon813","icon814","icon815","icon816","icon817","icon818","icon819","icon820","icon821","icon822","icon823","icon824","icon825","icon826","icon827","icon828","icon829","icon830","icon831","icon832","icon833","icon834","icon835","icon836","icon837","icon838","icon839","icon840","icon841","icon842","icon843","icon844","icon845","icon846","icon847","icon848","icon849","icon850","icon851","icon852","icon853","icon854","icon855","icon856","icon857","icon858","icon859","icon860","icon861","icon862","icon863","icon864","icon865","icon866","icon867","icon868","icon869","icon870","icon871","icon872","icon873","icon874","icon875","icon876","icon877","icon878","icon879","icon880","icon881","icon882","icon883","icon884","icon885","icon886","icon887","icon888","icon889","icon890","icon891","icon892","icon893","icon894","icon895","icon896","icon897","icon898","icon899","icon900","icon901","icon902","icon903","icon904","icon905","icon906","icon907","icon908","icon909","icon910","icon911","icon912","icon913","icon914","icon915","icon916","icon917","icon918","icon919","icon920","icon921","icon922","icon923","icon924","icon925","icon926","icon927","icon928","icon929","icon930","icon931","icon932","icon933","icon934","icon935","icon936","icon937","icon938","icon939","icon940","icon941","icon942","icon943","icon944","icon945","icon946","icon947","icon948","icon949","icon950","icon951","icon952","icon953","icon954","icon955","icon956","icon957","icon958","icon959","icon960","icon961","icon962","icon963","icon964","icon965","icon966","icon967","icon968","icon969","icon970","icon971","icon972","icon973","icon974","icon975","icon976","icon977","icon978","icon979","icon980","icon981","icon982","icon983","icon984","icon985","icon986","icon987","icon988","icon989","icon990","icon991","icon992","icon993","icon994","icon995","icon996","icon997","icon998","icon999","icon1000","icon1001","icon1002","icon1003","icon1004","icon1005","icon1006","icon1007","icon1008","icon1009","icon1010","icon1011","icon1012","icon1013","icon1014","icon1015","icon1016","icon1017","icon1018","icon1019","icon1020","icon1021","icon1022","icon1023","icon1024","icon1025","icon1026","icon1027","icon1028","icon1029","icon1030","icon1031","icon1032","icon1033","icon1034","icon1035","icon1036","icon1037","icon1038","icon1039","icon1040","icon1041","icon1042","icon1043","icon1044","icon1045","icon1046","icon1047","icon1048","icon1049","icon1050","icon1051","icon1052","icon1053","icon1054","icon1055","icon1056","icon1057","icon1058","icon1059","icon1060","icon1061","icon1062","icon1063","icon1064","icon1065","icon1066","icon1067","icon1068","icon1069","icon1070","icon1071","icon1072","icon1073","icon1074","icon1075","icon1076","icon1077","icon1078","icon1079","icon1080","icon1081","icon1082","icon1083","icon1084","icon1085","icon1086","icon1087","icon1088","icon1089","icon1090","icon1091","icon1092","icon1093","icon1094","icon1095","icon1096","icon1097","icon1098","icon1099","icon1100","icon1101","icon1102","icon1103","icon1104","icon1105","icon1106","icon1107","icon1108","icon1109","icon1110","icon1111","icon1112","icon1113","icon1114","icon1115","icon1116","icon1117","icon1118","icon1119","icon1120","icon1121","icon1122","icon1123","icon1124","icon1125","icon1126","icon1127","icon1128","icon1129","icon1130","icon1131","icon1132","icon1133","icon1134","icon1135","icon1136","icon1137","icon1138","icon1139","icon1140","icon1141","icon1142","icon1143","icon1144","icon1145","icon1146","icon1147","icon1148","icon1149","icon1150","icon1151","icon1152","icon1153","icon1154","icon1155","icon1156","icon1157","icon1158","icon1159","icon1160","icon1161","icon1162","icon1163","icon1164","icon1165","icon1166","icon1167","icon1168","icon1169","icon1170","icon1171","icon1172","icon1173","icon1174","icon1175","icon1176","icon1177","icon1178","icon1179","icon1180","icon1181","icon1182","icon1183","icon1184","icon1185","icon1186","icon1187","icon1188","icon1189","icon1190","icon1191","icon1192","icon1193","icon1194","icon1195","icon1196","icon1197","icon1198","icon1199","icon1200","icon1201","icon1202","icon1203","icon1204","icon1205","icon1206","icon1207","icon1208","icon1209","icon1210","icon1211","icon1212","icon1213","icon1214","icon1215","icon1216","icon1217","icon1218","icon1219","icon1220","icon1221","icon1222","icon1223","icon1224","icon1225","icon1226","icon1227","icon1228","icon1229","icon1230","icon1231","icon1232","icon1233","icon1234","icon1235","icon1236","icon1237","icon1238","icon1239","icon1240","icon1241","icon1242","icon1243","icon1244","icon1245","icon1246","icon1247","icon1248","icon1249","icon1250","icon1251","icon1252","icon1253","icon1254","icon1255","icon1256","icon1257","icon1258","icon1259","icon1260","icon1261","icon1262","icon1263","icon1264","icon1265","icon1266","icon1267","icon1268","icon1269","icon1270","icon1271","icon1272","icon1273","icon1274","icon1275","icon1276","icon1277","icon1278","icon1279","icon1280","icon1281","icon1282","icon1283","icon1284","icon1285","icon1286","icon1287","icon1288","icon1289","icon1290","icon1291","icon1292","icon1293","icon1294","icon1295","icon1296","icon1297","icon1298","icon1299","icon1300","icon1301","icon1302","icon1303","icon1304","icon1305","icon1306","icon1307","icon1308","icon1309","icon1310","icon1311","icon1312","icon1313","icon1314","icon1315","icon1316","icon1317","icon1318","icon1319","icon1320","icon1321","icon1322","icon1323","icon1324","icon1325","icon1326","icon1327","icon1328","icon1329","icon1330","icon1331","icon1332","icon1333","icon1334","icon1335","icon1336","icon1337","icon1338","icon1339","icon1340","icon1341","icon1342","defaultTagTexture","getTagTexturePath","TagSize","AnnotationSize","AnnotationDrawType","useAssetTools","orthoQuality","addAssetPaths","assetPaths","totalAssetsAdded","tagPaths","isTagFile","tagPathsAdded","addTagCSVs","toRemove","planarPaths","isPlanarFile","addPlanarFiles","panoramicPaths","isPanoramicFile","addPanoramicFiles","pointCloudPaths","isPointCloudFile","addPointCloudFiles","orthoPaths","isOrthomosaicFile","addOrthoFiles","modelPaths","addModelFiles","xmlPaths","isXmlFile","addXMLFiles","ifcPaths","isIFCFile","shpPaths","isSHPFile","dxfPaths","isDXFFile","modelsAdded","addIFCFiles","addSHPFiles","addDXFFiles","assetsList","pointPath","extension","extname","basename","showBackdrop","numAdded","addOrthoBatch","hideBackdrop","catchErrors","pathsAdded","assetPath","numberOfTags","addTagCSV","numFilesAdded","numMissing","addPanoramicFile","pathError","addPlanarFile","addXMLFile","addFilePaths","configs","isConfigFile","isAssetFile","isProjectionFile","loadProjectFile","projectionPath","addWebSource","downloadFile","fileType","fileFilter","encodeURIComponent","savePath","getPathFromDialog","pathWithExtension","isCSVFile","isTXTFile","isRZMLFile","isODMFile","getDXFLayerNames","getSHPLayerNames","dbf","layerData","dbfPath","exe","geotiff","file_path","corners","base64","base64_split","scale_x","scale_y","width_original","height_original","orthoData","imageBounds","imageDataSplit","imageSize","imageSizeOriginal","imagePath","scaleX","scaleY","cameras","numCameras","cameraData","rowData","parser","Parser","explicitChildren","preserveChildrenOrder","xmlJSON","parseStringPromise","xmlData","info","$","Units","$$","alignments","enu","Alignments","Alignment","alignment","alignObject","staStart","about","desc","CoordGeom","geom","geometryElement","shapeType","dollarSignKeys","featureKeys","key$","aboutValue","fKey","splitCoordValue","tempValue","coordValue","coordValueCorrected","scv","overwriteLength","overwriteStaStart","calcAngle","acos","curveDist","getHeaderIndex","CSV","xIndex","yIndex","nameIndex","annotationIndex","commentIndex","hasHeight","easting","northing","definition","elevation","Medium","openDialogMulti","showErrorBox","openDialogFile","parseDirectory","entries","directoryPath","withFileTypes","files","entry","isFile","directories","isDirectory","directory","saveMatrixFile","cameraTransformPath","copyFile","readTransformFile","errorResponse","arr","cols","col","getMatrixValues","setFromMatrixPosition","setFromRotationMatrix","upgradeVersion322","oldVersion","semver","gt","getConfigVersion","upgradeVersion321","upgradeVersion320","upgradeVersion319","links","upgradeVersion318","mappedCamerasIDs","upgradeVersion317","overrideSettings","fromJSON","upgradeVersion316","upgradeVersion315","uniqueSession","upgradeVersion314","isDefault","upgradeVersion313","upgradeVersion312","upgradeVersion311","cloudSize","upgradeVersion310","newVersion","configVersion","upgradeVersion39","extent","resolution","log2","upgradeVersion38","upgradeVersion37","orthoOpacity","controlType","upgradeVersion36","upgradeVersion35","upgradeVersion34","getLocalizedProjectName","defaultProjectTitle","getLocalizedFolderName","saveProjectAs","changePath","nameWithoutExt","updateProjectName","writeProject","saveProject","allowSaveAs","loadProjectJSON","version","clearWindowHash","lt","minimumConfigVersion","currentConfigVersion","loadProject","buttons","exitWithChanges","Cloud","hasChanged","originalState","modifiedState","defaultId","DetectionType","mixedDataWarning","BlurVehiclesPeople","addRunningTask","outputPath","setOutputPath","detectionType","setDetectionType","VehiclesAndPeople","blurStrength","setBlurStrength","accuracy","setAccuracy","importResult","setImportResult","getCamerasByCSV","getCameraFolders","pathOverlap","tempImagePath","imagesCSVPath","pathsJSON","getCameraRowsCSV","Vehicles","People","multipleSelectWithLabel","OperationTypes","ClassifyExport","operationType","setOperationType","Include","classValues","setClassValues","classList","pointclouds","uniqueClassifications","formatClassValue","classValue","Exclude","multiple","renderValue","selected","renderedClasses","classVal","savedLocation","wordWrap","ConvertUnits","inputUnits","setInputUnits","outputUnits","setOutputUnits","nullUnits","sameUnits","pathNameNoExt","outputName","FormHelperText","ChannelType","ChannelSelector","Empty","Red","Green","Blue","Linearity","Planarity","Scattering","Normal","Intensity","NumReturns","ReturnNumber","Classification","LasToOrthomosaic","channelOne","setChannelOne","channelTwo","setChannelTwo","channelThree","setChannelThree","pixelSize","setPixelSize","emptyChannels","tifPath","LasToSolv3dStreamable","isSingleFile","setSingleFile","binPath","Sampling","defaultSamplingRateOptions","samplingRate","setSamplingRate","validSampling","decimalSamplingRate","ThinTechniques","ThinDimensions","invalidThinningError","ThinLas","defaultThinningOptions","thinTechnique","setThinTechnique","Lowest","thinDimension","setThinDimension","Two","thinning","setThinning","inValidThinningValue","Average","Highest","Three","generateFunctionData","FunctionsMenu","contextOpen","closeContextMenu","blurVehiclesPeopleDialog","lasToOrthomosaicDialog","lasToSolv3dStreamableDialog","thinLasDialog","samplingDialog","classifyExportDialog","convertUnitsDialog","LASFiles","cameraFiles","hasLASFiles","hasCameraFiles","handleBlurVehiclesPeople","handleLasToOrthomosaic","handleLasToSolv3dStreamable","handleThinLas","handleSampling","handleClassifyExport","handleConvertUnits","filtered","localeCompare","getMenuItems","ServerType","initialAssetState","assetPercent","assetError","assetIsLarge","floatRight","itemText","assetMargins","assetWarning","assetInfo","assetCheckbox","checkboxParent","percentLabel","fileInfoHeading","fileInfoText","tagAvatar","remoteAssetIcon","LasFileInfoDialog","hasVLRSData","vlrs_data","vlrsKeys","getLasFileInfo","gutterBottom","x_min","x_max","y_min","y_max","z_min","z_max","record_id","has_time_stamp","has_rgb","has_intensity","AssetItem","setDraggingAsset","fileInfoDialog","detailsDialog","renameDialog","iconUpdateDialog","modelLayersDialog","webmapLayersDialog","landXMLDialog","assetState","setAssetState","isPanoramic","isPlanar","isEncompassCloud","isPotreeCloud","isLASFile","isE57File","isOrtho","isTag","isIFC","isSHP","isDXF","isLandXML","isWebMap","isCamera","isPointCloud","canEditLayers","ArcGISImageServer","TileServer","updateAssetState","newAssetState","getCloudStatus","getModelStatus","submitTagIcon","isLargeCloud","showPercent","assetCount","getAssetCount","tagTexture","tagSize","getTagAttributes","isRemoteAsset","canDeleteAsset","canEditAsset","ListItemButton","draggable","onContextMenu","onDragStart","snapToOrtho","snapToPointCloud","snapToImages","snapToModel","Avatar","secondaryTypographyProps","ListItemSecondaryAction","edge","handleImageCSVExport","getTagsByCSV","getTagRowsCSV","handleTagCSVExport","TagIconDialog","currentTexture","currentSize","WebSourceLayerDialog","ModelLayerDialog","TagItemsDialog","NEW_CSV_ID","NEW_FOLDER_ID","textField","selectDivider","asterisk","avatarParent","tagIconPagination","tagIconSearchParent","tagIconPageParent","tagIconParent","tagIconCheck","tagIconImage","setPage","setTagTexture","setTagSize","selectedPage","tagsPerPage","resetDefaults","searchTerms","matches","iconChanged","sizeChanged","tagIconsPerRow","numPages","texturesForPage","handleIconClick","Pagination","XSmall","Small","Large","XLarge","formatter","getMeasurementFormatter","getViewProjection","getVectorPrecision","tagItems","zoomToTag","jumpToTag","copyPosition","copyTextToClipboard","coordinate","copyURL","deleteRow","tagToDelete","isAerialTag","TagDeleteDialog","toDelete","numTagsToDelete","TagDetailsDialog","setTagID","tagFiles","getTagDetails","AnnotationsToolbar","TagDetailsContent","viewerSwitched","setSize","savedAnnotations","setTagAnnotationType","setTagAnnotationColor","setTagAnnotationSize","toggleTagAnnotations","loadTagAnnotations","setTagSelected","setTagAnnotationDrawing","typeOptions","PolygonFreeHand","LineString","LineStringFreeHand","Rectangle","Circle","Star","Eraser","sizeOptions","showToolbar","getTagAnnotations","TagCreateDialog","setTitle","setComment","collectionID","setCollectionID","collectionName","setCollectionName","setFolderID","hasExistingFolders","hasExistingCSVs","createNewFile","createNewFolder","titleMissing","nameMissing","folderOptions","newTag","tagFolderID","tagCollectionID","tagCSV","Collapse","in","localizedFolderName","assetFolderClass","AssetFolder","draggingAsset","setExpanded","dragDropHover","setDragDropHover","numHidden","onDragOver","onDragLeave","onDrop","dataTransfer","addAssetsToFolder","newVisibility","List","disablePadding","AddAssetList","WebSourceDialog","serverURL","setServerURL","serverName","setServerName","serverType","setServerType","ArcGISMapServer","submitting","setSubmitting","getMapLayers","baseURL","getMapServerLayers","ok","getImageServerLayers","ArcGISFeatureServer","getFeatureServerLayers","OGCWMS","WMSCapabilities","Capability","Layer","Name","Title","getWMSLayers","OGCWFS","XMLParser","FeatureTypeList","FeatureType","getWFSLayers","OGCWMTS","WMTSCapabilities","Contents","Identifier","getWMTSLayers","getTileServerLayers","isSecureURL","protocol","mapType","pop","hasX","hasY","hasZ","ArcGISOnline","warnings","showEsriWarning","webmapData","public","WebSourceLayerCheckbox","onVisibilityChange","visible_sortable","visible_checkbox","getRows","webmapDialog","handleAddWebMap","FolderList","newFolderDialog","defaultFolder","ModelLayerCheckbox","ModelLayerColor","color_picker","addItem","footerDiv","footerCheckbox","getStoredState","BookmarkList","bookmarkDialog","BookmarkItem","getCameraPosition","visibleAssetIDs","updateDialog","loadBookmark","assetDrawerWidth","inside","drawer","drawerPaper","tab","flexBasis","flexShrink","tabGrow","toggleDrawer","CompanyLogo","branding","iconPath","AssetDrawer","assetDrawerState","projectActiveTab","setSelectedTab","labels","addSceneLabel","updateSceneLabels","removeSceneLabel","Drawer","anchor","transitionDuration","paper","menuButton","projectionText","slimButton","matrixValuesParent","matrixValues","matrixButtons","ProjectDetails","projectDialog","warnDialog","setName","setHeight","setProj","matchedProjection","setMatchedProjection","imported","setImported","setProjections","deleteBookmarks","cameraTransform","setCameraTransform","setErrors","correction","selectProjectName","projectHeight","basicAdjustments","unknownTextMeters","unknownTextFeet","onCorrectionRemove","onMatrixChange","localizedProjectName","importedProjection","userProjection","handleImported","sortedProjections","name1","name2","selectedProjection","getNewProjection","toMeters","hasBasicAlignment","localizedProjectionName","getLocalizedProjectionName","getTransformValues","hasUserProjections","FormControl","noWrap","ListSubheader","disableSticky","conflict","resetBasicAlignerCamera","trimmedName","emptyName","emptyHeight","emptyProjection","heightInMeters","projectionName","MainAppHeader","settingsDrawerState","setSettingsDrawerState","customURLDialogOpen","setCustomURLDialogOpen","measurementsDialogOpen","setMeasurementsDialogOpen","activeToolOpen","appBar","Toolbar","MainAppFooter","mouseCoords","setMouseCoords","setCoordinate","setCoordinates","coords","textShadow","sectionTitle","slider","checkBoxWithLabel","GlobalSettings","settingsDialog","globalSettings","openQuickNav","setOpenQuickNav","setOrthoQuality","setOrthoOpacity","setControlType","aerialMeasureType","setAerialMeasureType","volumeType","setVolumeType","volumeSampleRate","setVolumeSampleRate","viewerBackground","setViewerBackground","aerialBackground","setAerialBackground","globalEngineCloudURL","setGlobalEngineCloudURL","Reverse","Autocad","Spherical","MultiPlane","LowestPlane","High","Low","SingleSlider","magnitude","ColorMap","colorMaps","heatMap","awesomeGreen","pastelShades","blueOrange","blackOrange","blueHue","blueRed","jet","grayScale","getColorMap","drawerHeader","list","listItem","switch","colorPreview","img","objectFit","classificationPreview","borderColor","borderStyle","borderWidth","inputText","inputPropParent","inputPropTitle","boldTitleTypography","rightInput","InputSlider","onFinish","labelFunction","isRangeType","labelFormat","openState","sliderValue","setSliderValue","roundToStep","changeCallback","throttle","finishCallback","scaledValue","out","toInput","saveValue","fromInput","Slider","valueLabelDisplay","valueLabelFormat","KeyboardArrowUp","KeyboardArrowDown","RangeInputProp","setValues","SingleInputProp","inputValue","setInputValue","inputError","setInputError","InputField","minValue","setMinValue","maxValue","setMaxValue","minError","setMinError","maxError","setMaxError","RangeSlider","ClassificationList","classificationColors","setClassificationColors","updateColorsList","hasClassifications","SettingsDrawer","savedColorMap","savedColorType","savedDynamicSize","savedCircularPoints","savedArrowMarkers","pickerDebug","setPickerDebug","boundsVisible","setBoundsVisible","renderPaused","setRenderPaused","savedOpacity","savedTagDistance","savedCloudDistance","savedCloudScale","savedCloudMinimum","savedMaxPoints","savedHeightClip","savedIntensityClip","savedAvailableClassifications","savedClassificationVisibilities","newClasses","oldClasses","setPointCloudOpacity","setTagDistance","setPointCloudDistance","setPointCloudScale","setPointCloudMinimum","setPointCloudMaxPoints","setPointCloudHeightClip","setPointCloudIntensityClip","setVisibleClassifications","setPointCloudColorMap","setPointCloudColorType","setPointCloudDynamicSize","setPointCloudCircularPoints","setNavigationType","isIntensity","isHeightmap","colorMapRequired","togglePickerDebug","setPointsShouldUpdate","setPointBoundsVisible","Markers","None","every","classificationTexture","TextureLoader","minFilter","NearestFilter","magFilter","shaders","pointcloud","vert","frag","panoramic","planar","render_edl","commonRenderVertexShader","render_basic","render_transition","markers","utilities","basic_picker","gpu_picker","texture_packer","sprite","packedTextureScale","assignPackedData","valueInt","generateDataTexture","channels","Color","Uint8Array","r","g","RGBFormat","RGBAFormat","DataTexture","needsUpdate","BaseMaterial","ShaderMaterial","updateValues","initProperties","uniforms","defineProperty","get","PointCloudMaterial","gpuPicker","minSize","adaptiveSize","isOctreeCloud","currentCameraTarget","screenwidth","octreeSpacing","octreeSize","octreeCorner","intensityRange","rgbMax","heightRange","classificationVisible","visibleClassTexture","crossSectionWidth","crossSectionStart","crossSectionEnd","clipBoxTexture","areaTriangleTexture","visibleNodesTexture","numClippingBoxes","numAreaTriangles","loader","colorMapTexture","updateVisibleClassifications","Uniform","depth","maxSize","Vector2","heightClamp","intensityClamp","classificationData","visibleNodes","areaTriangleData","clipPolygonData","defines","NUMBER_OF_CLASSIFICATIONS","CLIP_TEXTURE_WIDTH","CLIP_TEXTURE_HEIGHT","AREA_TEXTURE_WIDTH","AREA_TEXTURE_HEIGHT","VISIBLE_NODES_WIDTH","PACKED_TEXTURE_SCALE","fragmentShader","vertexShader","vertexColors","transparent","depthWrite","updateNumClippingBoxes","NUM_CLIP_BOXES","updateNumAreaTriangles","NUM_AREA_TRIANGLES","OutputRenderMaterial","tCurrent","tPrevious","progress","BasicRenderMaterial","tImage","tDepth","EDLRenderMaterial","near","far","pixelRatio","screenWidth","edlStrength","neighbours","Float32Array","neighbourCount","NEIGHBOUR_COUNT","TagMaterial","currentCameraPosition","currentCameraRotation","timeStamp","windowHeight","texturePath","textureData","uniform","imageTexture","side","DoubleSide","PanoramicImageMaterial","PlanarImageMaterial","imageWidth","imageHeight","fx","fy","cx","cy","MarkerMaterial","cameraHeight","currentIndex","orbitMode","CustomSpriteMaterial","BasicPickerMaterial","BasicRenderTarget","WebGLRenderTarget","LinearFilter","stencilBuffer","EDLRenderTarget","isWebGL2","generateMipmaps","depthBuffer","depthTexture","DepthTexture","FloatType","UnsignedIntType","RenderPass","screenScene","screenQuad","PlaneBufferGeometry","material","MeshBasicMaterial","depthTest","Scene","Mesh","Camera","renderer","setRenderTarget","RenderUtils","screenPass","targets","basicMaterial","basicRenderTarget","EDLMaterial","outputMaterial","outputRenderTarget","previousRenderTarget","initTargets","capabilities","maxVaryings","floatFragmentTextures","EDLSupport","renderSize","getSize","addTarget","updateEDLValues","resizeTextures","increaseProgress","renderTarget","setCamera","w","h","dispose","updateMaterial","textureFromImage","Texture","renderScene","scene","renderToTarget","withEDL","renderMaterial","renderToPrevious","renderToScreen","PointCloudNode","parent","pointsScene","pointsPicker","boundingBoxMesh","_bounding_sphere","_bounding_box","nodeCenter","density","loaded","loading","picker","Sphere","subScalar","addScalar","addChildNode","node","clearChildNodes","removeChildNode","removeFromScene","disposeGeometry","setVisibility","boundingBoxVisibility","setGeometry","BufferGeometry","BufferAttribute","intensity","gpu_index","addToScene","Points","materialScene","materialPicker","generateEdgeMesh","addCloudData","PointCloud","rgbArray","maxColor","materials","_tightBoundingBox","boxGeometry","BoxGeometry","edgeGeometry","EdgesGeometry","boxMaterial","LineBasicMaterial","LineSegments","materialDefaults","gpuPickers","updateMinimapExtent","setIdentifier","disposeNodes","getVisibleNodes","updateBoundingBox","updateIntensityRange","intensityMin","intensityMax","updateColorLimits","closestValue","arrMax","midpoint","updateClassificationFromHistogram","histogram","updateClassifications","getClassificationHistogram","BinaryHeap","scoreFunction","bubbleUp","sinkDown","peek","n","score","parentN","elemScore","child2N","child1N","swap","child1","child1Score","child2","PointCloudManager","mapLayer","clouds","visiblePointsTarget","maxUnloadedNodes","numNodesLoading","unloadedNodes","maxUnloadedClouds","maxloadedToGPUPerFrame","loadedToGPUThisFrame","streamableCacheSize","genericCacheSize","maxGenericFilesVisible","exeLaunchTimeout","lastExeLaunched","performance","now","numLoadedPoints","numVisiblePoints","numSceneNodesVisible","minPixelPercent","transparency","rawJsonResponse","shouldUpdate","initScene","cameraHandler","minimap","controls","tightBoundingBox","GenericPointCloud","StreamablePointCloud","reconcile","pointCloudFiles","currentFiles","newFiles","assetsToLoad","filesToDelete","pointCloudsAdded","pointCloudsRemoved","deleteFile","addNewFile","pointCloud","toggleVisibility","AmbientLight","doesCloudExist","addPointCloud","updateMeasureList","cloudDetails","newPointCloud","EncompassPointCloud","PotreePointCloud","removeTempFiles","measurements","refreshMeasurementList","updateClamping","setMaxDistance","removeLayer","combinedBoundingBox","addLayer","updateMaterialValues","getCameraTarget","updateCloudSampling","numToDraw","drawRange","setDrawRange","updateCrossSection","calculatePointsVisible","updateVisibilityTexture","nodes","nodeMap","Map","visibleNodeTextureOffsets","offsetsToChild","Infinity","nodeIndex","parentName","parentOffset","parentOffsetToChild","lodOffset","offsetUint8","updateClipBoxTexture","pointMarkup","clippingBoxes","numClipBoxes","clippingBox","hidePoints","updateClassification","newClassification","ignoredClassification","inverse","updateAreaTriangleTexture","areaGeometry","getAreaGeometry","triangleIndex","volumeStatus","vertex1","vertex2","vertex3","pointsInRadius","getX","getY","getZ","pointsInPolygon","getSampledPoints","highest","keyfunc","samples","dtmPoints","sampled","getCameraFrustum","updateProjectionMatrix","updateMatrixWorld","matrixWorldInverse","matrixWorld","cameraViewProjectionMatrix","multiplyMatrices","projectionMatrix","frustum","Frustum","setFromProjectionMatrix","manageStreamableCache","stack","unusedNodes","streamablePointClouds","numberOfNodes","numberToDelete","reverse","manageGenericCache","genericPointClouds","cameraPosition","insideSphere","cameraFOV","nodeScreenSize","weight","MAX_VALUE","loadGenericPointClouds","loadingClouds","unloadedClouds","loadFromExe","loadStreamablePointClouds","numLoading","loadMetadata","loadUnloadedGeometry","updateGenericPointClouds","hideDescendants","calculateGenericVisibility","updateStreamablePointClouds","calculateStreamableVisibility","waitForCameras","priorityQueue","numFilesLoaded","intersectsBox","isGeometryNode","isTreeNode","maxAllowedPoints","maxNodeDistance","measurePoint","minNodeSize","bounds2d","camera2d","childDistance","updateMaterials","GenericPointCloudNode","_shift","decodeMetadata","num_points","bytes_path","xyzMin","xyz_min","xyzMax","xyz_max","unique_classes","rgb_max","intensity_min","intensity_max","updateRootNode","getGeometry","getBinaryData","GenericPointCloudRootNode","updateSizeInfo","workerExe","cancelled","byteCutoffSize","pointsDataParsed","numSampledPoints","pointChunkSize","isLargeFile","dataPaths","sceneOffset","apply","mins","maxs","file_info","removeSync","updatePercent","onProgress","points_to_process","parseHeaderResponse","parsePointsResponse","checkForProjection","headerFileInfo","checkForLargeFile","number_of_bytes","point_count","zoomToSceneExtent","estimatedBoundingBox","StreamablePointCloudNode","level","getChildOffset","getChildNode","childName","childSize","childLevel","childCenter","NodeConstructor","structure","metadata","metadataPath","EncompassPointCloudNode","hierarchy","nodePath","getDataPath","minCorner","corner","readNodeHierarchy","EncompassPointCloudNodeV0","args","childIndex","EncompassPointCloudNodeV1","EncompassPointCloudNodeV2","folderDepth","hrcPath","updateHierarchy","isFolderRoot","loadHierarchy","dataDir","match","RegExp","hierarchy_step_size","point_offset","box","tight_bounding_box","nodeSize","hasHierarchyV1","checkLegacyHierarchy","hasHierarchyV2","contains_hierarchy","RootNodeConstructor","rootNode","availableNodes","node_structure","PointAttributeTypes","DATA_TYPE_DOUBLE","ordinal","DATA_TYPE_FLOAT","DATA_TYPE_INT8","DATA_TYPE_UINT8","DATA_TYPE_INT16","DATA_TYPE_UINT16","DATA_TYPE_INT32","DATA_TYPE_UINT32","DATA_TYPE_INT64","DATA_TYPE_UINT64","typenameTypeattributeMap","obj","PointAttribute","numElements","byteSize","description","initialRange","POSITION_CARTESIAN","RGBA_PACKED","COLOR_PACKED","RGB_PACKED","NORMAL_FLOATS","INTENSITY","CLASSIFICATION","NORMAL_SPHEREMAPPED","NORMAL_OCT16","NORMAL","RETURN_NUMBER","NUMBER_OF_RETURNS","SOURCE_ID","INDICES","SPACING","GPS_TIME","PointAttributes","pointAttributes","vectors","pointAttributeName","pointAttribute","addVector","hasNormals","DataView64","DataView","getUint64","littleEndian","getBigUint64","getInt64","getBigInt64","PotreePointCloudNode","nodeType","hierarchyByteOffset","hierarchyByteSize","byteOffset","attemptNumber","maxAttempts","hierarchyPath","parseHierarchy","bytesPerNode","numNodes","nodePos","getUint8","childMask","getUint32","ArrayBuffer","octreePath","xyzScale","xyzCenter","xyzOffset","attributeBuffers","hasClassHistogram","jsonAttributes","replacements","jsonAttribute","attribute","parseAttributes","bboxMin","bboxMax","firstChunkSize","CustomOrbitControls","domElement","keyPressed","walkMode","walkVelocity","walkRotation","maxWalkSpeed","walkIncrement","walkPercent","walkPercentMin","walkPercentMax","oldRadiusState","focused","minDistance","maxDistance","minZoom","maxZoom","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","panningMode","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","UP","BOTTOM","SPACE","PLUS","MINUS","NUMPAD_PLUS","NUMPAD_MINUS","WALK_FORWARD","WALK_BACK","WALK_RIGHT","WALK_LEFT","WALK_UP","WALK_DOWN","mouseButtons","target0","position0","zoom0","setControls","getPolarAngle","spherical","getAzimuthalAngle","clearSphericalDelta","sphericalDelta","clearPanOffset","panOffset","saveState","scope","resetWalkValues","incrementWalkSpeed","static","decreaseWalkSpeed","setWalkMode","quat","setFromUnitVectors","up","applyQuaternion","setFromVector3","activePosition","activeTarget","applyWalkOffset","scaleFactor","changeEvent","STATE","NONE","quatInverse","lastPosition","lastQuaternion","lastUpdated","changeDetected","rotateLeft","makeSafe","lookAt","setFromSpherical","distanceToSquared","EPS","dot","moveStopEvent","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onMouseFocus","onMouseMove","onKeyUp","startEvent","endEvent","ROTATE","DOLLY","TOUCH_ROTATE","TOUCH_DOLLY","TOUCH_PAN","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","rotateUp","panLeft","v","objectMatrix","setFromMatrixColumn","panUp","crossVectors","pan","deltaX","deltaY","isPerspectiveCamera","targetDistance","isOrthographicCamera","dollyIn","dollyScale","dollyOut","switchTo","shiftKey","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","subVectors","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","keyCode","handleKeyDown","handleKeyUp","touches","pageX","pageY","handleTouchStartRotate","handleTouchStartDolly","handleTouchStartPan","handleTouchMoveRotate","handleTouchMoveDolly","handleTouchMovePan","prototype","EventDispatcher","parseHex","getClassFromAlias","classNum","getColorFromClassNum","hex","textToColor","rgbColor","textToColorArray","createHash","digest","s","TextureCache","maxCacheSize","isThumbnailCache","cache","maxTextureSize","maxDeviceSize","setMaxTextureSize","textureSize","controller","manage","lastAccess","closeImages","images","ImageBitmap","HTMLCanvasElement","missing","imageInfo","getImageInfo","CanvasTexture","DOMException","ABORT_ERR","toKeep","originalWidth","originalHeight","maxEdgeLength","thumbnailCache","standardCache","ImagePosition","_scene","_aerial","_value","applyEuler","ImageRotation","_euler","setRotation","adjustment","rotationWithTransform","multiplyRotations","rotationWithAdjustment","CameraFeature","opts","CameraImage","cameraFile","missingTexture","setMatrix","setAdjustment","pixelToDirection","pixel","directionToPixel","getFeature","setCameraPosition","setCameraParameters","positionToCameraAngle","thumbnail","AbortController","textureCache","setObjectVisible","activate","initialize","generateObject","loadThumbnail","loadFullImage","grabImageFromPath","applyTempRotation","angleEuler","tempRotation","abort","CameraFile","updated","standardMaterial","standardMesh","pickingMaterial","pickingMesh","mapSource","mapLayerForeground","mapLayerBackground","minCameraRadius","maxCameraRadius","numVertices","uvs","getNewCamera","initSceneView","initAerialView","markerScene","cameraID","getByPickerID","pickerID","arrIndex","cameraIndex","camera_index","arrayLength","markerShape","Int32Array","cameraIndices","cameraShape","PlanarImage","numUvs","uvIndex","WebGLPointsLayer","updateMatrix","updateViews","updateAdjustments","updateSceneView","numCorners","cornerIndex","setXYZ","updateUniforms","updatePicker","updateAerialView","addFeatures","setSelected","meshes","baseIndex","updateVisibility","setVisible","cameraLoading","initialCameraLoading","markersVisible","CameraHandler","cameraScene","sceneViewController","aerialController","aligned","newCameraLoading","cameraLoadedOnce","initScenes","SceneViewCameras","AerialCameras","renderInFront","PanoramicCameraFile","PlanarCameraFile","camerasFiles","currentIDs","newAssetIDs","cameraFilesAdded","cameraFilesRemoved","flat","clearCurrentCamera","getFeatureForEvent","incrementCamera","setWaitForCameras","setNormalCamera","setOrbitValues","setOrbitCamera","setCameraHeight","setCurrentImage","cameraImage","getCameraByName","cameraName","getCameraByID","getCamerasByFolder","getRowsCSV","csvEncompassOut","degrees","centerOnImage","setCurrentCamera","cameraLoaded","updatePreviousImage","clearImages","updateArrowNavigation","clearArrowNavigation","currentCamera","setMeshVisible","increment","nextIndex","nextCamera","loadImage","setCameraAdjustments","newAdjustments","setCameraMatrix","elements","newMatrix","equals","resetCameraMatrix","resetTextureCache","loadSavedCameraState","savedCameraState","savedcameraID","activeCamera","savedLookat","closestCameraID","closestCameraToPosition","cameraLoadOptions","maxViewAngle","bestCameraID","bestDistance","cameraPos","rotationA","rotationB","matrixA","makeRotationFromEuler","matrixB","sphere","missingImagePath","PanoramicFeature","PanoramicImage","aerial","Point","u","imageDirection","directionsToPlanar","planarSize","plane","projectPoint","allX","allY","xMin","xMax","yMin","yMax","interpolatePixels","interpolated","xyz","xyzTemp","xyz1","xyz2","_x","_y","_z","interpTemp","xyzNoDups","previous","mouseControls","PlanarFeature","normalize","getFeaturesAtPixel","layerFilter","RayCaster","raycaster","vectorFromEvent","defaultRaycaster","setPrecision","threshold","intersectPlane","intersect","ray","intersectObject","intersectTriangle","P3","intersectObjects","sortByRay","objects","distanceToRay","raycastDirection","unproject","Raycaster","arrowNavigation","markerNavigation","modifier","navigationType","MarkerNavigation","ArrowNavigation","initEvents","bind","removeEvents","mouseMoved","isLeftClick","updateNavigation","clearNavigation","isOrbitMode","isHidden","isMarkerMode","isArrowMode","setEnabled","sceneViewCameras","getPickerResults","markCameraSelected","sections","numSections","defaultScale","zoomedScale","initTextures","initObject","arrowPathStandard","arrowPathShadow","Object3D","section","sectionToAngle","ArrowMarker","setScale","getIntersect","intersects","sectionID","userData","angleToSection","calculateCameras","tooClose","tooFar","cameraA","cameraB","addMesh","geometryStandard","PlaneGeometry","materialStandard","alphaTest","ContextMenu","newTagDialog","changeCategoryDialog","customLinks","modelProperties","setModelProperties","tagCoordinate","setTagCoordinate","contextData","isAerial","labelData","selectedTags","modelData","sceneCoord","aerialCoord","multipleCategories","clearHighlightedLinework","listItemSeperator","menuEvent","numLabelsSelected","numLabelsHighlighted","profileActive","pointProfileActive","labelSelected","labelPointSelected","pointID","hasLabelCoord","numTagsSelected","hasModelData","enableChangeCategory","hasSceneCoord","hasAerialCoord","noTagSelected","oneTagSelected","pointProfileActions","pointProfileStart","pointProfileEnd","pointProfileCancel","tagActions","isImageOnly","getMultiImageCoordinate","orbitModeActions","toggleOrbitState","resetCamera","modelActions","labelActions","anyLabelSelected","deleteHighlighted","deleteLabelPoint","unHighlightAll","insertLabelPoint","editLabel","moveToLabel","customUserActions","showInAerial","showInScene","urlString","constructCustomURL","hasCustom","clearTooltipText","ModelProperties","showContextMenu","card","cardHeader","cardButtons","alignSelf","headerTitle","cardContent","EditLinkDialog","setUrl","setTarget","setShowInScene","setShowInAerial","addNewLink","CustomLink","editDialog","Card","CardHeader","titleTypographyProps","subheader","subheaderTypographyProps","CardContent","CustomContextURL","newURLDialog","importURLData","BasemapLayer","Tile","TagFeature","ViewTriangle","aerialMap","generateSource","Fill","rotateViewMarker","ring","generateMarkerCoordinates","getTargetElement","coneAngle","axis","coneLength","getView","getResolution","v0","v1","v2","changeDetector","AerialMap","containerElement","orthoList","viewTriangle","maxLayerZoom","maxMapZoomLevel","maxCameraZoomLevel","markerRadius","observer","currentCameraFeature","currentCameraLayer","selectedCameraFeature","selectedCameraLayer","mapSystem","initMap","initResize","addCurrentLayer","addSelectedLayer","OrthoMosaicList","arcGISBase","OSM","XYZ","attributions","scrollWidth","uniqueIDs","basemapLayers","getLayers","getArray","basemapID","getVisible","activeBasemap","getCenter","getZoom","orthoLabels","imageLabels","localAligner","tagsHandler","resetView","setCenter","setZoom","setVisibleBasemap","attribution","Attribution","collapsible","defaultLayers","defaultControls","extend","View","onresize","handleWindowResize","onMapClick","onDoubleClick","updateSavedState","un","CircleStyle","hovering","currentView","maxZoomReached","selectedTagID","showTagDetails","selectedCameraID","getCoordinates","boundingExtent","mapSize","fit","nearest","clearAerialTooltip","initialEvent","getCustomEvent","onMouseUpAerial","isRightClick","openContextMenu","onMouseMoveAerial","dragging","onFeatureHover","selectedCamera","setAerialState","anyToolEnabled","getEventPixel","tagIDs","mapCoordinate","getCoordinateFromPixel","updateSize","setDragState","getInteractions","interaction","DragPan","setActive","jumpToPosition","mapPosition","setMapExtent","disconnect","hasPoints","cameraSelected","extentFromPoints","reproject","xPositions","yPositions","OrthoImageLayer","ImageLayer","orthosList","aerialBounds","splitData","cropBase64","cropCorners","calculateCroppedData","calculateExtent","calculateAerialPolygon","addMapLayer","dataProjectionName","x_scale","y_scale","x_offset","y_offset","x_skew","y_skew","originalSize","zoomToExtent","transformExtent","imagePixelsToAerial","cornerPixels","proj4Projection","index_start","index_end","width_start","width_end","height_start","height_end","extentWidth","extentHeight","subtileCorners","intersectAerialPoints","aerialPoints","turfIntersect","turfPolygon","aerialToPixels","aerialToImagePixels","coordinatesTransformed","coordTransformed","reverseTransform","allLayers","numSubtiles","imageURL","Static","imageExtent","interpolate","imageLoadFunction","imageChunk","orthomosaic","getImage","addImageChunk","LayerGroup","setOpacity","orthos","chunksLoading","chunksToLoad","orthoID","ortho","orthoFiles","loadable","toLoad","projected","ImageLabel","completed","drawable","highlighted","textScore","findText","duplicatePixelDistance","stateChanged","draw","unSelect","complete","setDrawable","setScore","setFindText","setHighlighted","highlight","insertPoint","createCoordData","coordArray","pointToScreen","duplicatePoint","oldPoint","newPoint","screenPosNew","screenPosOld","dU","dV","LabelCategory","listIdx","invalidLabels","sorted","originalOrder","getLabelByID","visibility","addNewLabel","drawLabel","updateColor","idxCoord","minDistanceIdx","endIdx","createSegment","closestPointToPointParameter","deleteLabel","deleteLabels","unHighlight","updateName","completeLabel","hasEnoughPoints","unSelectAll","selectLabel","sortLabels","scoreThreshold","allLabels","order","undoSort","unsortedLabels","moveToLabelInList","ImageLabelTools","sceneLabels","activeLabeler","categories","currentCategory","allowUpdate","setCategoryList","setTrainingArea","AerialLabelTools","SceneLabelTools","setCategories","trainingArea","polygonScene","standardScene","numHighlighted","getIdxInList","validCategory","setUpdateState","categoryID","getCategoryByID","activeLabel","deletePoint","addLabel","setActiveLabelType","deleteAllCategories","activeImagePaths","activeImages","loadedImagePaths","checkIfSelected","checkUniqueName","chosenCategory","getCategoryByName","sortCategory","sortType","categoryToSort","drawAll","addCategory","getNewCategory","addTrainingArea","getNewTrainingArea","deleteCategory","editCategoryName","toggleCategoryVisibility","deleteTrainingArea","addTrainingAreaLabel","unSelectLabels","coord","clearTooltips","newCategoryID","newCategory","oldCategory","newLabel","addPoint","deleteSpecificPoint","zoomToLabel","isTrainingArea","resetTemporaryPoint","simplifyPolygon","tolerance","highQuality","simplePolygon","turfSimplify","mergeTrainingLabels","labelsToMerge","mergedLabels","firstLabel","isPlanarImage","isPanoramicImage","mergeLabel","points1","points2","point1","index1","matchFound","point2","index2","union","polygonPoints1","polygonPoints2","turfUnion","duplicate","remainingLabels","simplifyPanoramicLabels","geometryWithBuffer","bufferSize","geomJSTS","GeoJSONReader","BufferOp","bufferOp","checkForImageOverlap","hasOverlap","visibleOrthos","polygonPointsOnly","importLabel","progressData","addedLabel","image_id","segmentation","minPoints","is_linestring","is_point","skippedLabels","lineGeom","turfLineString","buffer_size","pointGeom","turfPoint","linework_data","file_name","pointsToPixels","setKnownImageSize","labelTotal","labelIndex","mergeID","merge_id","checkLabelOverlap","checkOverlap","checkLabelInvalid","clearViewerTooltip","progressCallback","overwrite","hasTrainingArea","numLabelsTotal","trainingAreaCategory","addCategoryLabels","trainingAreas","mergeList","newLabels","category_id","categoryVisible","labelObject","supercategory","getLabelAnnotations","getTrainingAnnotations","jsonImageObj","sectionsFromIntersection","intersection","removeDuplicate","intersectPoints","annotationFromPolygon","imageID","segment","iscrowd","area","areaFromPolygon","contour","ShapeUtils","shortestDistance","closestPoint","idx","closestPointToPoint","startPoint","endPoint","Line3","LabelPoint","LabelPolygon","OrthoLabel","minCoordinates","styleCache","featuresLayer","getSource","editingLayer","getLayerFromCache","clearStyleCache","setFeatureStyle","setStyle","featureStyle","editingStyle","checkDefaultStyle","defaultStyleParams","styleKey","getLayerStyle","updatePoint","removePoint","removeSpecificPoint","getPixelFromCoordinate","checkDuplicate","newCoord","drawPoints","temporaryPoint","completedSource","editingSource","drawPolygon","validPolygon","sources","hasFeature","removeFeature","OrthoCategory","aerialTools","addMapLayers","darkenedColor","pointColor","categoryColor","TrainingAreaCategory","lineDash","VectorImageLayer","updateWhileInteracting","updateWhileAnimating","imageLabelTools","TrainingAreaLabel","polygonsInsideImage","polygonHover","pointHover","calculatePolygonPixels","pixelPolygon","pixelPoint","trainingLabels","trainingLabel","trainingLabelIndex","moreTooltip","pointCount","getFeaturesInExtent","isValid","markLastPointDraggable","updateDraggablePoint","pointFeatures","lastPoint","setPointHover","cancelLabel","setToolTipText","setPointGrabTooltip","canDrag","setPolygonHover","drawActiveLabel","checkFeatureHover","setPolygonHoverTooltip","drawing","onRightClick","oneHighlighted","noneHighlighted","ctrlKey","highlightLabel","selectedPoint","getFeatureAtPixel","pointFeaturesForExtent","selectedPolygon","polygonFeaturesForExtent","mousePixel","mouseCoord","mouseBuffer","values_","pointExtent","getExtent","intersectsCoordinate","pointRadius","helpMsg","startTooltip","invalidTooltip","setAerialTooltip","dragTooltip","highlightTooltip","imageIndex","orthoName","boundsToCheck","boundsPolygon","labelPolygon","_direction","_position","SceneLabel","_imageWidth","_imageHeight","standardMeshes","polygonMeshes","sphereGeometry","SphereGeometry","sphereMaterial","lineGeometry","lineMaterial","lineDashedMaterial","polygonMaterial","polygonOpacity","minPoleAngle","standardColor","LineDashedMaterial","dashSize","gapSize","setPointScale","computeBoundingSphere","drawLines","setFromPoints","Line","computeLineDistances","drawPolygons","pixels","coordinates3d","oldState","coordinates2d","polygonAtPoles","coordinatesFlat","earcut","deviation","numTriangles","triangle","Triangle","getMidpoint","setIndex","pointsAtPole","minAngle","maxAngle","polyPointRing","booleanContains","getCameraBestFit","averageDirection","fovRequired","getCurrentCamera","SceneCategory","deleteUnfinishedLabel","numberOfLabels","visited","visibleCameras","getClickedDirection","getImagePixel","mouseClick","labelPoints","targetPoly","polygons","setViewerTooltip","calculatePlanarSections","imageBorders","calculatePanoramicSections","horizontalShift","getHorizontalShift","imageBordersLeft","imageBordersRight","polygonLeft","polygonRight","intersectionLeft","intersectionRight","minSpread","widthCutoff","xValues","minX","maxX","shiftedMin","shiftedMax","spread","polygonInImage","getCameraSize","mergeIndex","polygonsInside","mergeable","ScaleHandle","drag","minusPoint","lineStart","lineEnd","camOnLine","setFromNormalAndCoplanarPoint","intersectOnLine","newScale","RotateHandle","ordering","zAxis","xAxis","newAxis","cross","PositionHandle","ClippingBox","Group","operationID","wireframe","positionHandle","scaleHandles","rotateHandles","wireframeMaterialStandard","wireframeMaterialHover","addWireframe","addScaleHandles","addRotateHandles","addPositionHandle","setFromObject","setHover","wireframeMaterial","edgeMesh","xAxisMaterial","xAxisGeometry","yAxisMaterial","yAxisGeometry","yAxis","zAxisMaterial","zAxisGeometry","raycast","parentScale","objectScale","highlightScale","OperationType","ClippingGroup","markupList","Classify","Split","isDelete","isClassify","setNewClassification","setIgnoredClassification","axisOffset","smooth","resetRotation","dz","removeByID","PointMarkupList","mouseEvent","shiftDown","dragObject","clippingGroups","setMarkupGroups","activeGroup","clippingGroup","refreshMarkupList","group","addNewGroup","newGroup","enable","disable","removeClippingGroup","removeClippingBox","addNewBlock","cameraAngle","newBoxScale","setScalar","clearNewBlock","setDragObject","setMovementState","getDragObject","containsPoint","handleOverride","isPosition","isRotation","rotateTooltip","moveTooltip","scaleTooltip","standardTooltip","isFirstTouch","numTouching","pinchStart","pinchEnd","Chart","register","zoomPlugin","line2D","line3D","lineWidth","hoverColor","markerSize","ProfileChart","initSphere","clearScene","hideSphere","selectStart","localPosition","selectEnd","setZ","updatePoints","resetZoom","selectCancel","linePoint","validWidth","distanceAlongLine","validDistance","show","drawSphere","distanceClamped","at","showSphere","updateUnits","updateSampling","getProfileImage","chartImageBase64","toBase64Image","pointProfile","sampleMinimum","sampleMaximum","chart","setPointProfileOpen","scales","ticks","plugins","caretPadding","displayColors","callbacks","dataIndex","raw","legend","wheel","pinch","datasets","pointHoverBackgroundColor","pointHoverBorderColor","onHover","maintainAspectRatio","animation","animationDuration","responsive","responsiveAnimationDuration","updateChart","hide","getSampledData","needsSampling","chartTitle","PanoControls","cameraAlignerAdv","cameraAlignerBasic","hammer","flyControls","Hammer","OrbitController","FlyMoveControls","MouseControls","CameraAlignerAdv","CameraAlignerBasic","LocalAligner","cadHandler","compass","onMouseDoubleClick","touchHandler","touchEvent","changedPointers","MouseEvent","bubbles","cancelable","screenX","screenY","altKey","metaKey","onDoubleTap","down","resetSceneView","updateFarPlane","updatePickers","newOrbit","newPivot","smoothTransition","rotateLength","setPositionValues","updateCamera","getClosestCoordinate","combinedBounds","orbitFromBounds","boxSize","boxMean","boundSize","orbitWithAngle","toggleCamera","scrolling","clearCoordinates","updateCoordinates","onMouseMoveScene","movement","updateRotation","measureGrabFinished","toggle","mouseClicked","onMouseUpScene","onMouseScroll","currentOrbit","getProperties","getCameraDistance","orbitObject","pivotLength","getPrecision","approxDistance","defaultFarPlane","changedTouches","eventType","pinchMove","sign","touchToMouse","move","panoControls","numberOfSteps","getAngleDiff","sphereStart","sphereFinish","dRadius","dPhi","dTheta","currentPivot","dPivot","pivotOffset","getPositionValues","TextMaterial","MeshPhongMaterial","CompassControls","composer","antialias","sizeRatioLarge","sizeRatioSmall","lightPosition","cube","cubeSize","cubeColorStandard","cubeColorHover","cubeEdgeColor","cubeTextColor","cubeMaterials","donutSize","donutColor","donutTextColor","north","west","east","south","initAntiAliasing","addObjects","addLights","compassClassName","WebGLRenderer","setPixelRatio","PerspectiveCamera","cameraDistance","EffectComposer","ssaaRenderPass","SSAARenderPass","unbiased","sampleLevel","addPass","copyPass","ShaderPass","CopyShader","addRotationCube","addCompassRing","addCompassLetters","ambientLight","spotLight","SpotLight","castShadow","cubeGeometry","BoxBufferGeometry","getTextMaterial","donutGeometry","donutMaterial","getCircleMaterial","letters","letter","getDirectionMesh","canvasSize","maxLength","fontScale","cubeColor","fillStyle","fillRect","font","fillText","strokeStyle","strokeText","getLetterMaterial","beginPath","textHeight","geometryUpper","materialUpper","FrontSide","meshUpper","geometryLower","materialLower","BackSide","meshLower","checkMouseHover","getSelectedSide","togglePointer","offsetLeft","offsetTop","mouse","setFromCamera","setCubeMaterials","materialIndex","faceIndex","hoverIndex","rotateLetters","zenith","pointA","pointB","bearing","startLat","destLat","startLng","destLng","brng","updateOffset","ratio","setContainerCursor","calculateRotations","lookatLocal","lookatLonLat","yPosLocal","yPosLonLat","cameraLocal","cameraLatLon","groupYaw","groupPitch","cubeYaw","minimumFOV","maximumFOV","phiDelta","thetaDelta","wheelDelta","wheelTimeout","wheelDelay","endTimeout","endDelay","rotating","zooming","moveInterval","moveStart","moveEnd","moveDelta","moveDistance","lastMovement","maxPixelDistance","minFOV","maxFOV","invertX","invertY","updateCameraMatrix","newEvent","MultiImageWindow","objectScene","backgroundScene","renderUtils","tools","setMultiImageOpen","setMultiImageState","onComplete","onAddPoint","intersectResponse","minCameraDistance","canComplete","canAddMore","disablePreviousImage","disableNextImage","disableAddMore","disableComplete","initRenderer","initMouseEvents","MultipleCameraMeasurement","offsetWidth","updateIntersect","calculate","updateBackground","loadNextImage","loadCamera","loadPreviousImage","resetSecondObservation","resetObservations","autoClear","addSecondObservation","getClickedPoint","resetFirstObservation","getBestCamera","getCurrentCameraIndex","clickedPoint","nextPosition","addFirstObservation","aspect","renderSceneObjects","firstPoint","secondPoint","origin1","origin2","getEndpoint","getSphereMesh","rayA","rayB","sameCamera","getIntersection","setButtonDisabled","defaultResponse","distances","calculated","viewerScene","windowScene","updatePointScale","viewerCamera","windowCamera","Nv","Na","Nb","Da","Db","da","db","ptA","ptB","lineSegment","segmentLength","midPoint","d1n","d2n","a1","a2","Measurement","_header","_title","timeCreated","getTime","setController","setHeader","setTimestamp","isoTime","Measurement3D","maxVertexLength","minVertexRequired","Length","getLineDistance","lastIndex","NaN","atan","rise","distance2D","finished","addedPoint","added","getProjectedVertices","MeasurementArea","ignoreHeight","vertexA","vertexB","StationMeasurement","Station","stationStart","activeAlignment","getAlignmentByID","isBetween","curveIntersect","x1","x2","x3","y1","y2","y3","distEndsSquared","crossProduct","dotProduct","getClosestSegment","segments","minDist","chosenSegment","segmentTest","lineIntersect","checkOnly","intersectCoordinate","clickedCoordinate","startCoordinate","unshift","Center","pointVector","startVector","endVector","pointArc","distStartToArc","angleStart","angleEnd","angleLarge","angleSmall","angleSmallQuadrant","angleLargeQuadrant","angleQuadrant","angleReverse","spiralIntersection","clickPointInData","alignmentInfo","xmlAlignment","loadExistingStation","measurement","along","across","station","MeasurementLine","cancelMessage","MeasurementPoint","surfaceGenerator","Area","SurfaceGenerator","generateSurface","generate","MeasurementVolume","volumeHelper","Volume","calculatingVolume","sampleRate","setSampleRate","renderMeasurement","stopVolumeCalculation","stopCalculation","VolumeHelper","loadExistingVolume","setVolume","destroyWorker","HeightMeasurement","vertex0","SnapMeasurement","snapResult","snap","snapCoordinate","finalHeight","validHeights","pos","heights","SnapDownMeasurement","reduce","acc","curr","SnapUpMeasurement","AerialMeasurement","getAerialLength","loadFromCoordinates","AerialLengthMeasurement","AerialAreaMeasurement","getAerialArea","sigma","numNeighbours","initWebworker","rate","getCalculatedBounds","calculateVolume","zMin","zMax","terminate","drawMesh","triangles","getVolume","volume","tri","p1","p2","p3","signedTetrahedronVolume","generateTriangleArray","v3","final","removeInvalidTriangles","validTriangles","getDelaunayTriangles","reverseWinding","delaunay","Delaunator","denseBounds","getDensePolygon","removeOutliers","calculationFinished","webWorkerFinished","pointsArray","upperPoints","trianglesUpper","lowerPoints","trianglesCombined","changeRequired","renderInScene","removeMeshesFromScene","addMeshesToScene","generateMesh","calculateArea","getArea","optimize","triangleIndices","verticesModified","numIndices","triIndexA","triIndexB","triA","triB","vertSet","allVerts","sharedVerts","uniqueVerts","modTriA","modTriB","t1","t2","oldArea","t3","t4","newArea","triVertices","flatPoints","index0","getLength","densePolygonTemp","vectorLength","directionIncrement","densePolygon","old","MinimapMeasure","styleHover","styleDefault","drawStyle","measurementType","sketch","tempTooltips","addInteraction","mapElement","reloadInteraction","removeInteraction","tooltips","getTooltipsForGeometry","removeOverlay","removeAll","setMeasurementType","validMeasureType","getDistance","getAerialSegments","objectMessage","objectPosition","formatLength","addNewTooltip","innerHTML","getLastCoordinate","hasEnoughSegments","formatArea","getInteriorPoint","clearTempTooltips","cancelMeasurement","editable","listener","Draw","drawingType","originalEvent","unByKey","addAerialMeasurement","alternateColor","Overlay","positioning","addOverlay","MeasurementConstructor","measureType","isFinished","measureAssets","setBuilder","builderType","getEmptyMeasurement","SnapUp","SnapDown","getMeasurement","MeasurementController","measurementSceneView","measurementAerialView","measurementBuilder","measurementGroupExporter","measurementGroup","setMeasurements","MeasurementFormatter","MeasurementSceneView","MeasurementGroupExporter","MeasurementGroup","hoveredPoint","reconcileXMLs","xmlFiles","currentAssets","measurementAssets","newAssets","xml","assetToDelete","updateMeasureAssets","xmlFile","loadMeasureAsset","createNewMeasurementGroup","stopDrawingItems","closeMultiImageWindow","enableTimeout","removeIDs","deletable","setActiveAlignment","alignUnits","linearUnit","loadMeasurementData","loadMeasurements","returnCoordinate","getCoordinate","temporaryMeasurement","activeMeasurement","clickMultiImage","multiImage","multiImageWindow","isSinglePoint","onClickFinish","canFinish","clickStandard","addTemporaryPoint","updateMeasureText","addSceneMeasurement","measuring","resetDragObject","removeTemporaryObjects","measureEndpoints","MeasureEndpoint","measurementID","checkMorePoints","morepoints","setTooltipText","clearViews","export","exportCSV","exportDAT","exportLinework","setUnits","refreshVolume","emptyValue","metersCutoff","squareMetersCutoff","vectorPrecisionLonLat","vectorPrecisionStandard","TypeError","isMetric","finalValue","roundFloat","metresToFeet","isSurveyFeet","feet","metresToMiles","metresToKiloMetres","formatVolume","cubicMetresToCubicYards","squareMetresToSquareMiles","squareMetresToSquareFeet","squareMetresToSquareKilometres","formatAngle","nullValue","formatGrade","isFinite","formatStation","distanceAlong","lengthUnits","alongFinal","stationFinal","imperial","feetToMetres","stationTotal","stationNumber","stationAlong","formatOffset","distanceAcross","sideOfSegment","convertUnits","precisionX","precisionY","precisionZ","isSurveryFeet","metres","squareMetres","cubicMetres","metresToYards","getDataExport","temp3DMPath","pythonName","handleExport3D","handleExport2D","getExportRows2D","getExportRows3D","measurements2D","measurements3D","measurement_coordinates","vertextView","time_created","measureCsvOut","mapProjection","getHeaderValues2D","getHeaderValues3D","distance3D","grade","areaValue","volumeValue","invalidVolumeMessage","areaUnits","volumeUnits","measurementVertices","updateMeasurements","removeFromArray","measure3D","newMeasurement","measure2D","timestamp","getLineCoordinates","names","getPointCoordinates","areaMeasurements","measureGeometry","surfaceVertices","surfaceIndices","alternateLabelColor","measurementVertex","boundingSphere","intersectsSphere","TemporaryEndpoint","sphereBuffer","sphereMaterialStandard","sphereMaterialHover","lineMaterialStandard","lineMaterialHeight","lineMaterialHover","temporaryEndpoints","temporaryLines","temporaryLabels","dragValid","checkEndpointSelected","addActiveEndpoint","updateMeasureEndpoint","vertexIndex","setRestrictedPointTooltip","restrictedTooltip","endTooltipCount","moreTooltipMulti","endTooltipMulti","endTooltip","startTooltipMulti","createTempEndpoint","removeObjects","removeLabels","drawLabels","createEndpoint","createLine","useAlternate","defaultMaterial","pointMaterial","posScene","firstPointHigher","line0","line1","totalLength","fromBufferAttribute","addVectors","isHeight","lastLines","hasEnoughLines","oldMeasurement","removeMeasurement","geometryWithIndex","pickerGeometry","copyGeometryValues","pickerMesh","getBasicPicker","pickerMaterial","GPUPicker","debug","_needsUpdate","LinearEncoding","clearSections","tX","tY","sectionWidth","sectionHeight","sectionX","sectionY","sectionIndex","pixelIndex","timeStart","startX","startY","pixelBuffer","readRenderTargetPixels","time","mouseResult","updateBaseIDs","oldClearColor","newClearColor","oldRenderTarget","getRenderTarget","getClearColor","oldClearAlpha","getClearAlpha","setClearColor","setClearAlpha","currentBaseID","gpuIndex","getSelectedObject","getObjectPosition","minIndex","maxIndex","coordinateFromBuffer","coordinateFromMesh","coordinateFromLine","trianglesToCheck","faces","face","isFirstPoint","Stats","addPanel","panel","dom","showPanel","cssText","beginTime","prevTime","frames","fpsPanel","Panel","msPanel","self","memory","memPanel","REVISION","begin","usedJSHeapSize","jsHeapSizeLimit","setMode","fg","bg","PR","devicePixelRatio","WIDTH","HEIGHT","TEXT_X","TEXT_Y","GRAPH_X","GRAPH_Y","GRAPH_WIDTH","GRAPH_HEIGHT","textBaseline","globalAlpha","TagMesh","TagPosition","TagItem","csv","TagFile","boundingBoxForTags","visibleChanged","textureChanged","newTagIDs","currentTagIDs","tagsChanged","TagsHandler","tagState","updateTagData","SceneViewTags","AerialTags","TagAnnotations","getTooltipText","getTagByID","getTagByQuery","allTags","tagCsvOut","hasComments","hasAnnotations","toggleAnnotations","loadAnnotations","getAnnotations","setAnnotationType","setAnnotationDrawing","setDrawing","setAnnotationColor","setAnnotationSize","timeoutSeconds","pickingMeshes","flashTimeout","sceneViewTags","gpuIndices","cornerNumber","tagIndex","tagMaterial","tagFromPickerIndex","arrayIndex","setHovering","Cluster","getClusterStyle","getFeatures","tagScale","texturePaths","mostFrequent","strokeColor","combinedStyles","anchorXUnits","anchorYUnits","Text","GeoJSON","hitTolerance","isShape","readFeature","getDrawTool","freehand","geometryFunction","createRegularPolygon","createBox","starGeometryFunction","onDrawEnd","annotationID","writeFeatureObject","setLineStringTool","setRectangleTool","dashed","dash","erasing","newCoordinates","fraction","GeomType","validGeomTypes","pointTexture","spritePath","WebGLLayer","generateStyle","symbol","symbolType","createRenderer","WebGLVectorLayerRenderer","LineworkPoints","LineworkLine","LineworkText","LOD","lineThickness","borderThickness","SpriteMaterial","Sprite","addLevel","drawBackground","ctx","moveTo","lineTo","quadraticCurveTo","closePath","generateTexture","numLines","textWidth","measureText","xScale","textScale","flipY","updateTexture","LineworkLayer","getCoordinateArray","segmentInfo","geomType","addTextData","addSceneData","addAerialData","shpMesh","meshColor","reprojected","mapCoordinates","geometries","Polygons","polygonRings","numFaces","MultiPolygon","Lines","startIndex","endIndex","MultiLineString","setFeatureColor","bufferGeometry","getCustomSpritePicker","bufferIndices","getLineIndices","geomIndex","styleColor","LineworkFile","updateProperties","validBounds","CADHandler","ifcFiles","IFCFile","selectedFile","clearHighlightedFiles","removeSubset","modelFiles","ifc","newFile","SHPFile","DXFFile","updateMeshes","getCurrentLevel","loadNextfile","useWebWorkers","highlightMaterial","IFCLoader","ifcManager","manager","ifcAPI","initManager","parseFromBuffer","handler","ifcWorker","handleResponse","modelID","coordinationMatrix","GetCoordinationMatrix","workerPath","wasmPath","setWasmPath","applyWebIfcConfig","COORDINATE_TO_ORIGIN","USE_FAST_BOOLS","setOnProgress","total","ifcMesh","attributesToProperties","expressID","getExpressId","getItemProperties","subsetMesh","createSubset","ids","removePrevious","SHPLayer","addLayers","shp","shpPath","layerNames","layerName","addNewGeometry","newLayer","DXFLayer","parseFromText","WebSourceHandler","webSources","sourcesToLoad","webSource","deleteSource","addNewSource","getNewSource","newSource","WebSource","webmapHandler","clearable","removeOnClear","visibleIdentifier","setLayerVisible","newIdentifiers","clearLayers","generateLayers","identifiers","removeLayers","FeatureVectorSource","tileGrid","createXYZ","tileSize","strategy","getExtents","prevResolution","onResolutionChange","getZForResolution","fromUserResolution","tileRange","getTileRangeForExtentAndZ","fromUserExtent","extents","minY","maxY","tileCoord","getTileCoordExtent","toUserExtent","updateFeatures","newFeatures","featureID","getId","oldFeature","getFeatureById","FeatureWebSource","controllers","cancelRequests","clearLoadedExtents","loadedExtentsRtree_","TileArcGISRest","crossOrigin","LAYERS","featureCount","advancedQueryCapabilities","supportsPagination","supportsQueryWithResultType","supportsQuantization","supportsCoordinatesQuantization","spatialReference","wkid","xmin","ymin","xmax","ymax","esriResponse","getCapabilities","getNumberOfFeatures","vectorSource","getProjection","styleFunction","createStyleFunction","reconstructQuantizedGeometry","geometryType","rings","paths","resultOffset","srid","getCode","projectionToEsriSRID","isComplexLayer","extendBounds","quantizationParameters","originPosition","fetchError","EsriJSON","readFeatures","featureProjection","exceededTransferLimit","newResultOffset","TileWMS","geomExtent","serverResponse","optionsFromCapabilities","matrixSet","TileLayer","WMTS","newLabelStyle","Viewer","viewContainer","mapContainer","defaultNearPlane","updatePreviousTexture","updateMouseCoords","isEmpty","drawPickerScene","initialZoomApplied","initialStateApplied","timingDebug","estimateLocalTransform","getLocalProjection","clearLocalTransformErrors","resetErrorValues","getOrthoLabelPolygons","isAerialLabels","initGpuPickers","StatsPanel","addContainerElements","animate","numberOfFiles","hasCameras","removeContainerElements","setProjectName","clamp","colorMapKey","getDataProjection","setMeasurementUnits","setInitialZoomFlag","setCameraState","setInitialStateFlag","setOrbitState","hasModels","hasTags","setTagState","isBehindCamera","customStyle","div","onclick","toggleLocalAligner","refreshLocalTransform","drawObservations","generateLocalAlignerRows","numRows","addNewObservations","setLocalAlignerActive","setActiveObservation","deleteLocalAlignment","pointMarkupActive","addPointMarkupOperation","updatePointMarkupName","setPointMarkupActive","pointMarkupToggle","clearPointMarkup","pointMarkupZoom","pointMarkupDeleteGroup","pointMarkupDeleteBox","pointMarkupNameExists","setPointMarkupNewClassification","setPointMarkupIgnoredClassification","resetPointMarkupRotation","setPointMarkupHover","initMultiImageContainer","toggleMultiImageWindow","multiImageNextImage","multiImagePreviousImage","multiImageOnComplete","multiImageOnAddPoint","multiImageOnClose","toggleMeasurements","updateVolumeType","updateVolumeSampleRate","updateMeasureHover","deleteMeasurement","renameMeasurement","exportMeasurements","activeImageLabelPaths","loadedImageLabelPaths","loadImageLabelData","labelHotkey","setLabelText","setLabelFindText","currentCategoryName","getIndexInList","checkCategoryUniqueness","categoryName","snapToFolder","assetIDs","tagFile","tagBBOX","toggleCameraAligner","resetCameraAligner","generateAdvancedAlignerRows","setErrorsCameraAligner","clearErrorsCameraAligner","clearErrors","deleteRowCameraAligner","setBasicAlignerState","getBasicAlignerValue","cameraAngles","flashObservations","setCurrentObservation","updateCompassOffset","getAllCameras","folderPaths","previousCSV","setEmptyProject","reconcileAssets","applySavedTagState","applySavedSceneState","allCameras","numberOfCameras","numCamerasChanged","showDetails","redrawImageObsMarkers","resetInitialFlag","applySavedAerialState","resetDefaultAerialCamera","resetDefaultControlState","removeInteractions","logarithmicDepthBuffer","powerPreference","renderPickerScene","updateSceneElements","withTiming","scenePos","showCompassElement","requestAnimationFrame","nodesVisible","pointsVisible","childCount","getElementsByClassName","drawExpandedState","indexToShow","timeElapsed","preview","EmptyBasemapIcon","LayerPreviewIcon","previews","LayerSwitcher","setAnchorEl","Boolean","basemapIDs","currentTarget","containerLarge","offsetLarge","containerSmall","offsetSmall","borderTop","compassElement","ViewSwitcher","SceneViewer","setLocalObservations","setAlignerObservations","viewerRef","aerialRef","setViewer","savedAerialState","viewerTooltipLines","setViewerTooltipLines","aerialTooltipLines","setAerialTooltipLines","cameraState","handleSwitched","addAllAssets","assetList","viewerAssets","numAssets","handleHashUpdate","setWindowHash","onhashchange","modifiedSceneState","modifiedAerialState","tagQuery","handleHashChange","newURL","viewerProps","viewerObj","defs","cancel","viewerClasses","mapClasses","classLarge","classSmall","getClasses","observations","imageObsInterval","pointObsInterval","setObservations","imageSelected","pointSelected","observationType","refreshObservationList","observation","imageMesh","pointMesh","numObservations","imageObs","imageHidden","pointObs","pointHidden","imageIdentifier","pose","pointIdx","imageIdx","cancelAlignment","clickImage","currentRow","imageDir","addImageObservationMesh","clickScene","addPointObservationMesh","selecting","observationToAdd","resetSelectedState","updateAllMeshes","pointObsColor","PointObservation","imageObsColor","ImageObservation","flashObservation","defaultColor","numberOfFlashes","setHex","flashColor","clearFlashIntervals","obs","rotations","meshPos","inputInverted","currentID","updateAlignment","aerialObsColor","LocalObservationTypes","activeObservation","Aerial","filled","latlon","average","output","local","drawPointObservations","drawAerialObservations","isSceneObs","isAerialObs","clearActiveObservation","onSceneClick","sceneTooltip","aerialTooltip","aerialObservationSuccess","imageObservationSuccess","pointObservationSuccess","errorLow","errorMedium","errorHigh","PointObservationIcon","ObservationIcon","AerialObservationIcon","ImageObservationIcon","clicked","buttonColor","ObservationError","lowCutoff","highCutoff","minHeightContent","toggleOptionParent","toggleOptionCheckbox","toggleOptionFlex","userWarning","selectMargin","checkboxPadding","ResidualError","ImageAlignerAdvanced","alignerAdvDialog","removeDialog","setActiveToolOpen","calculating","setCalculating","alignerMatrixPath","setAlignerMatrixPath","closePrompt","setClosePrompt","alignPosition","setAlignPosition","alignRotation","setAlignRotation","newRotation","setNewRotation","newOffset","setNewOffset","parseResiduals","resArray","res","rounded","isTableEmpty","removed","noCameras","imageClicked","pointClicked","img_obs","pc_obs","hasAdvancedAlignment","hasAlignment","requiredRows","camID","tmpObservationPath","tmpEncompassPath","observationsCSV","encompassCSV","observationsCSVContent","encompassCSVContent","isConverted","largeResiduals","camPoseEntry","initialPath","correctionName","correctionPath","residualsTemp","titleTop","AlignerShortcuts","ImageAlignerBasic","alignerBasicDialog","singleAlignment","setSingleAlignment","hasActiveCamera","savedAngle","activeCameraName","isModified","epsilon","checkDataModified","transformInfo","transformValues","AlignmentError","lowCutoffWithUnits","highCutoffWithUnits","localAlignerDialog","setRotate","setUtmZone","savePrompt","setSavePrompt","oldProjection","setOldProjection","updateViewerProjection","deleteViewerProjection","aerialSelected","aerialClicked","aerialObs","map_obs","translateX","translateY","scaling","getEstimator","tempProjection","LabelImportType","geometryLimit","titleInfo","titleMin","listContent","folderList","labelFixedHeight","labelParent","labelTitleWarning","labelTitleError","classificationText","progressToolbar","toolbarLinear","toolbarProgressCenter","downloadMargin","downloadResourceDialog","tableDropdown","mappingMargin","checkBoxParent","captionPadding","paddingBottomAndTop","paddingBottomAndTopMinimal","outputFolder","infoLabel","flexPaper","Label","isScrolling","labelName","isSceneLabel","getInfo","setGetInfo","isTrainingLabel","scoreValidity","scoreClass","GetInfoWindow","CategoryContent","listRef","scrollingDivLength","useScrollingDiv","scrollingDivHeight","scrollToItem","useIsScrolling","itemCount","itemSize","CategoryExpand","TrainingArea","setDeletePrompt","addNewLabelDisabled","addNewlabelTooltip","disableTypography","Category","isValidCategory","labelDisabled","runTextDetection","editPrompt","setEditPrompt","sortPrompt","setSortPrompt","textDetectPrompt","setTextDetectPrompt","setSorted","labelsAdded","handleToggleVisibility","numLabelsTooltip","numLabelsAll","substr","ScoreSortingParameters","runSort","scoreValue","defaultScore","TextDetectionParameters","LabelIntersectDialog","forceInitialProgress","setTrainClassifyExe","setTrainClassifyProgress","resetExecutableValues","checkTrainingData","pointClouds","setProcessType","setMethod","LASfiles","minLasVersion","visibleClouds","cloudsAvailable","maxNumClasses","availableLasClasses","imageSamplingDistance","setImageSamplingDistance","intersectionAngle","setIntersectionAngle","minNumMatches","setMinNumMatches","positionConfidence","setPositionConfidence","maxDistanceFromCamera","setMaxDistanceFromCamera","closeLabelDist","setCloseLabelDist","setMinCameraDistance","maxCameraDistance","setMaxCameraDistance","maxIntersectDistance","setMaxIntersectDistance","clusterDistance","setClusterDistance","numMatchesRequired","setNumMatchesRequired","extractPoints","setExtractPoints","objSize","setObjSize","setOverwrite","collapse1","setCollapse1","collapse2","setCollapse2","categoryClasses","setCategoryClasses","ignoreClasses","setIgnoreClasses","getIgnoreClasses","ignoreTemp","classicationCheck","getNameFromClass","runIntersection","tempCocoPath","csvEncompassPath","useFunctionV1","useFunctionV2","classesToIgnore","ic","categoryClassesNames","categoryClassesNums","lasOutputPath","successEstimate","successLabelInPC","successCombine","successConvert","convertAttempted","successLasWritten","csvOutputPaths","position_estimate_progress","positions_found","csvs_written","labels_found_pointcloud","combine_las","combine_las_complete","las_to_3dp","las_to_3dp_success","writing_las","las_written","resetDefaultValues","categoriesTemp","lasClass","getCategoryClasses","destination","rowsTemp","ignoreClass","updateIgnoreClasses","ImportDialog","importData","setImportData","isOrthoLabel","categoryList","setLabelLoadProgress","importCategory","setImportCategory","importLarge","setImportLarge","importPoints","setImportPoints","importLines","setImportLines","setCheckOverlap","lineBuffer","setLineBuffer","pointBuffer","setPointBuffer","hasLines","hasLargeClasses","categoryNames","filterAnnotationTypes","validBufferSize","minIterations","maxIterations","getMappedCategory","createSelect","getLayerMenuItems","Ignore","numGeometry","Default","importCategories","newCategoryName","anno","ClassifyFromAerial","setProgress","setRows","sortedAlpha","setSortedAlpha","sortByNum","setSortByNum","overwriteFile","setOverwriteFile","preserveGround","setPreserveGround","newLasPath","setNewLasPath","mixedData","checkNamesForClass","classifyPointclouds","applicationOrder","lasClasses","inputPaths","overwriteGround","polygonData","class","tempTextPath","newCloudPaths","label_bounds_error","overwrite_failure","output_paths","sortButtonTitle","reverseSort","sortRowsByClassNum","sortRowsAlphabetically","sortReset","ClassificationParameters","runClassification","modelPath","setModelPath","runOnCPU","setRunOnCPU","TrainingParameters","runTraining","defaultIterations","pretrainedPath","setPretrainedPath","modelName","setModelName","imageTileSize","setImageTileSize","iterations","setIterations","numIterations","orignalText","txtList","newText","updateLabelText","classValid","classHighlight","txt","handleTextChange","spellcheck","setSpellcheck","setSortType","ImageLabelling","imageLabelDialog","labelType","setLabelType","setAddCategory","classifyLasPrompt","setClassifyLasPrompt","labelLoadProgress","classifyAerialProgress","setClassifyAerialProgress","trainClassifyProgress","updateTrainClassifyProgress","trainClassifyExe","processType","classifyImage","setClassifyImage","readingLabelFile","setReadingLabelFile","training","setTraining","trainingURL","setTrainingURL","downloadingResources","setDownloadingResources","downloadResourcesDialog","setDownloadResourcesDialog","trainingPrompt","setTrainingPrompt","classificationPrompt","setClassificationPrompt","labelExportOpen","setLabelExportOpen","textDetection","setTextDetection","numPlanars","canExportCSV","handleCancelProgress","handleCategoryChange","showTrainingWindow","canTrain","exportLabels3DL","exportToLinework","outputKey","importLabelsPTH","downloading_resources","extracting_resources","coco_data","importLabelData","importLabelsLinework","label_data","importLabels3DL","cudaErrorDialog","cudaError","selection","updateDownloadingResources","canRunClassification","imagePaths","canClassify","spellcheckCommand","labelJSON","imageJSON","exportDisabled","trainingLinkDisabled","localizedProcessType","modalName","downloadTooltip","canRunAerialToLas","combinedExtension","CircularProgress","areas","pretrainedModelPath","gpu_memory_error","model_diverge_error","model_file_path","class_number_mismatch","old_classes","new_classes","borderRight","QuickNav","currentPosition","closestCamera","closestPosition","lookatScene","getBestSceneState","folderAssetIds","folderAsset","getFolderAssets","isSelected","folderAssets","numFolderAssets","numAssetsVisible","openNav","mkdirs","moveCameraData","imagesPath","imagesData","imageName","newImagePath","assetsFolder","getAssetIndex","moveAssetData","singleFileOutput","handleExportError","inputPath","moveStreamablePointsData","moveGenericPointCloud","onExportError","copyToFile","shpInput","shpOutput","dbfInput","dbfOutput","moveModelData","exporterOptsDefaults","onError","onUpdate","getStaticExporter","buildPath","getBuildPath","cancelFlag","webOutputPath","rootOutputPath","assetIndex","finalPath","updateStreamablePointsState","updateRawPointsState","updateCameraDataState","updateModelDataState","matrixPath","updateCameraTransformPath","miniViewerPath","getMiniViewerPath","exeOutputPath","globalSettingsPath","globalSettingsOutput","projectJson","projectPath","BulletListItem","NewProjectInfo","landXMLFiles","webmapSources","numGenericPointCloud","numberOfImages","cameraAsset","tagAsset","exportText","contentCenter","cancelProgress","cancelContent","switchLabel","switchElement","StaticExporter","exporterDialog","messageDialog","successDialog","cancelDialog","setSingleFileOutput","exportTopMessage","setExportTopMessage","exportBottomMessage","setExportBottomMessage","exportPercent","updateExportPercent","isExportRunning","setIsExportRunning","startExport","cancelExport","setExportPercent","canExport","onExportFinished","setExportMessage","exportToStatic","exportName","sanitizedName","sanitize","SHP_FILE_TYPES","POTREE_FILES","onStart","getUploadURL","projectID","getCloudExporter","statuses","panoramics","panoAsset","planars","pointCloudAsset","orthomosaics","orthoAsset","landxmls","landXMLAsset","ifcAsset","shpFiles","shpAsset","dxfFiles","dxfAsset","webmapAsset","map_type","link","projectState","appVersion","measurementUnits","request","createProject","version_mismatch","server","minimum_version","uploadList","uploads","uploadId","processPoints","getAssetsToUpload","tempOutputPath","appCode","status_code","StatusCode","LinkedProjectInfo","AssetStatusText","Uploaded","Uploading","Preparing","Errored","Queued","getColor","getText","CloudExporter","selectProjectID","assetStatuses","setAssetStatuses","isExportFinished","setIsExportFinished","projectExists","setProjectExists","projectURL","setProjectURL","getAppCode","handleExportCancel","exportToCloud","exists","originalID","checkProject","uploadMessage","assetStatus","status_text","clippingBoxParent","clippingBoxButtons","operationList","overflowY","boxOrientation","dropdownRoot","dropdownSelect","PointMarkupBox","disableGutters","onMouseOver","PointMarkupGroup","operation","isSplit","newBoxDisabled","operationBoxes","defaultIgnoreValue","classOptions","displayName","DataExportSplit","markupGroups","exportPoints","setExportPoints","exportImages","setExportImages","inputFoldersPoints","inputFolderCameras","operationData","outputPaths","DataExportMarkup","PointMarkup","pointMarkupDialog","toolType","setToolType","exportPromptMarkup","setExportPromptMarkup","exportPromptSplit","setExportPromptSplit","newOperationPrompt","setNewOperationPrompt","newOutputPrompt","setNewOutputPrompt","conversionProgress","setConversionProgress","isPointMarkup","isFolderSplit","dialogTitle","copyClipboard","measurementUnitsParent","flexWrap","measurementUnitsRadio","imageOnlyInfoButton","marginside","expandText","bold","alignmentSelect","cell","tableCell","cellParent","measureTable","calculateButton","recalculate","recalculateButton","ExportDialog","exportType","setExportType","setOrdering","Shapefile","Data","MeasureTypeIcon","setMeasureType","ImportExportMeasureIcon","ClipboardCopy","MeasurementInfo3DLength","MeasurementInfoHeight","MeasurementInfo3DArea","isVolume","getVolumeComponent","MeasurementInfo2DArea","measureTypeText","MeasurementInfo2DLength","MeasurementInfoVolume","volumeMethodText","volumeRateText","MeasurementInfoStation","MeasurementCard","verticesReprojected","generateVertexPositions","is3DArea","is2DArea","is3DLength","is2DLength","isStationMeasurement","Measurements","exportDialog","xmlAssets","activeMeasurePrompt","setActiveMeasurePrompt","alignmentChoice","setAlignmentChoice","setMeasureUnits","loadImportData","encoded","decodeURIComponent","onModalClose","xmlAlignments","updateDefaultDropdown","reversed","iconProps","importDisabled","allowStationMeasurements","RadioGroup","Radio","fileDialog","accept","reader","FileReader","readAsText","buttonParentLeft","buttonParentRight","smallButton","buttonRight","multiImageHeader","fontFamily","WindowButton","MultiImageInfo","clampedColor","midValue","observationStyle1","observationStyle2","observationText1","observationText2","errorStyle","errorValue","errorElement","distanceStyle1","distanceValue1","distanceElement1","distanceStyle2","distanceValue2","distanceElement2","customPromptOpen","setCustomPromptOpen","customPromptState","setCustomPromptState","textLines","dependencies","dialogDiv","dialogContent","lineHeight","dialogPaper","divContent","indent","listItems","logoImage","support","titleParent","AboutDialog","helpDialog","javascriptDependencies","jquery","ol","react","three","typescript","devDependencies","pythonDependencies","numpy","scipy","matplotlib","pykml","lxml","miscDependancies","getDependencies","logoPath","underline","rel","consoleDialogHeader","consoleDialogTitle","consoleDialogClose","consoleHeight","consoleLine","TaskQueue","taskQueue","runningTask","task","TaskStatus","Running","ConsoleWindow","selectedTaskID","lineData","setLineData","stopRunningTask","activeTask","scrollTop","ProjectListRow","websockets","accentColor","stc","cloudProject","joinRoom","borderLeft","CloudProjectList","userProjects","setUserProjects","itemsSearch","handleSortChange","sortByDate","dateA","dateB","nameParts","initialSort","nameA","nameB","sortByName","useItemsSearch","sortOptions","projects","isAdmin","getUserProjects","hasProjects","sortValue","DragDropLoader","closest","ProjectLoader","loadFromCompiledExe","rawArgs","argv","arg","getAllFileArgs","oncontextmenu","configURL","loadFromStaticSite","AppBackdrop","backdropOpen","setBackdropOpen","Backdrop","snackbar","AppWithAuth","appAccess","setAppAccess","accessDialog","access","App","measurementsDialog","customURLDialog","localObservations","alignerObservations","multiImageOpen","pointProfileOpen","multiImageState","handleLinkWithoutTargets","mainWindow","quit","hotToast","projectSlice","updateProjectID","updateSessionID","originalFetch","locked","accessTokenKey","refreshTokenKey","clearTokens","removeItem","checkForKey","tokenKey","token","updateTokens","others","accessToken","refreshToken","initialUserState","apiKey","adminPermissions","emptyPermissions","createContext","AuthProvider","access_code","useAppCode","retryAttempt","newState","getUser","connect","getPermissions","Provider","stSignOut","SuperTokens","appInfo","appName","apiDomain","apiBasePath","recipeList","Session","EmailPassword","customFetch","wait","initCustomFetch","ActiveToolProvider","ViewerProvider","clearTaskQueue","TaskQueueProvider","setTaskQueue","setRunning","updateTaskStatus","taskID","tasks","availableTasks","Waiting","runAvailableTask","Finished","newTask","GlobalSettingsProvider","loadFromStorage","getGlobalSettingsFromStorage","saveToStorage","EventType","ObjectType","roomID","WebSocketProvider","socket","setSocket","currentRoomID","setCurrentRoomID","onCreate","Assets","Folders","Bookmarks","objectID","CreateObject","UpdateObject","DeleteObject","extraHeaders","Authorization","io","addTrailingSlash","connected","emit","LeaveRoom","JoinRoom","BookmarksProvider","bookmarkAssetIDs","getValidAssetIDs","companyName","BrandingProvider","hostname","mosaicLogo"],"mappings":"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,GAAYlvC,GACVxG,KAAKC,KAAKD,KAAKwD,IAAIgD,EAASstC,MAAM,GAAKttC,EAASwtC,IAAI,GAAI,GACnEh0C,KAAKwD,IAAIgD,EAASstC,MAAM,GAAKttC,EAASwtC,IAAI,GAAI,ICnLnC2B,OAnDE,CACf,oBClDa,IAA0B,8CDmDvC,oBEnDa,IAA0B,8CFoDvC,oBGpDa,IAA0B,8CHqDvC,oBIrDa,IAA0B,8CJsDvC,oBKtDa,IAA0B,8CLuDvC,oBMvDa,IAA0B,8CNwDvC,oBOxDa,IAA0B,8CPyDvC,oBQzDa,IAA0B,8CR0DvC,oBS1Da,IAA0B,8CT2DvC,oBU3Da,IAA0B,8CV4DvC,qBW5Da,IAA0B,+CX6DvC,qBY7Da,IAA0B,+CZ8DvC,qBa9Da,IAA0B,+Cb+DvC,qBc/Da,IAA0B,+CdgEvC,qBehEa,IAA0B,+CfiEvC,qBgBjEa,IAA0B,+ChBkEvC,oBiBlEa,IAA0B,8CjBmEvC,oBkBnEa,IAA0B,8ClBoEvC,oBmBpEa,IAA0B,8CnBqEvC,oBoBrEa,IAA0B,8CpBsEvC,oBqBtEa,IAA0B,8CrBuEvC,oBsBvEa,IAA0B,8CtBwEvC,oBuBxEa,IAA0B,8CvByEvC,oBwBzEa,IAA0B,8CxB0EvC,oByB1Ea,IAA0B,8CzB2EvC,oB0B3Ea,IAA0B,8C1B4EvC,qB2B5Ea,IAA0B,+C3B6EvC,qB4B7Ea,IAA0B,+C5B8EvC,qB6B9Ea,IAA0B,+C7B+EvC,qB8B/Ea,IAA0B,+C9BgFvC,qB+BhFa,IAA0B,+C/BiFvC,qBgCjFa,IAA0B,+ChCkFvC,mBiClFa,IAA0B,6CjCmFvC,mBkCnFa,IAA0B,6ClCoFvC,mBmCpFa,IAA0B,6CnCqFvC,mBoCrFa,IAA0B,6CpCsFvC,mBqCtFa,IAA0B,6CrCuFvC,mBsCvFa,IAA0B,6CtCwFvC,mBuCxFa,IAA0B,6CvCyFvC,mBwCzFa,IAA0B,6CxC0FvC,mByC1Fa,IAA0B,6CzC2FvC,mB0C3Fa,IAA0B,6C1C4FvC,oB2C5Fa,IAA0B,8C3C6FvC,oB4C7Fa,IAA0B,8C5C8FvC,oB6C9Fa,IAA0B,8C7C+FvC,oB8C/Fa,IAA0B,8C9CgGvC,oB+ChGa,IAA0B,8C/CiGvC,oBgDjGa,IAA0B,+CCsE1BA,OApCE,CACf,iBCnCa,IAA0B,2CDoCvC,iBEpCa,IAA0B,2CFqCvC,oBGrCa,IAA0B,8CHsCvC,eItCa,IAA0B,yCJuCvC,WKvCa,IAA0B,qCLwCvC,gBMxCa,IAA0B,0CNyCvC,cOzCa,IAA0B,wCP0CvC,qBQ1Ca,IAA0B,+CR2CvC,kBS3Ca,IAA0B,4CT4CvC,oBU5Ca,IAA0B,8CV6CvC,cW7Ca,IAA0B,wCX8CvC,gBY9Ca,IAA0B,0CZ+CvC,ea/Ca,IAA0B,yCbgDvC,mBchDa,IAA0B,6CdiDvC,qBejDa,IAA0B,+CfkDvC,kBgBlDa,IAA0B,4ChBmDvC,oBiBnDa,IAA0B,8CjBoDvC,iBkBpDa,IAA0B,2ClBqDvC,emBrDa,IAA0B,yCnBsDvC,aoBtDa,IAA0B,uCpBuDvC,cqBvDa,IAA0B,wCrBwDvC,0BsBxDa,IAA0B,oDtByDvC,iBuBzDa,IAA0B,2CvB0DvC,gBwB1Da,IAA0B,0CxB2DvC,iByB3Da,IAA0B,2CzB4DvC,0B0B5Da,IAA0B,oD1B6DvC,oB2B7Da,IAA0B,8C3B8DvC,qB4B9Da,IAA0B,+C5B+DvC,gB6B/Da,IAA0B,0C7BgEvC,iB8BhEa,IAA0B,2C9BiEvC,a+BjEa,IAA0B,uC/BkEvC,cgClEa,IAA0B,wChCmEvC,mBiCnEa,IAA0B,8CC4H1BA,OA/DE,CACf,aC9Da,IAA0B,uCD+DvC,YE/Da,IAA0B,sCFgEvC,YGhEa,IAA0B,sCHiEvC,YIjEa,IAA0B,sCJkEvC,eKlEa,IAA0B,yCLmEvC,YMnEa,IAA0B,sCNoEvC,iBOpEa,IAA0B,2CPqEvC,WQrEa,IAA0B,qCRsEvC,aStEa,IAA0B,uCTuEvC,iBUvEa,IAA0B,2CVwEvC,cWxEa,IAA0B,wCXyEvC,eYzEa,IAA0B,yCZ0EvC,ea1Ea,IAA0B,yCb2EvC,cc3Ea,IAA0B,wCd4EvC,Ye5Ea,IAA0B,sCf6EvC,cgB7Ea,IAA0B,wChB8EvC,WiB9Ea,IAA0B,qCjB+EvC,WkB/Ea,IAA0B,qClBgFvC,YmBhFa,IAA0B,sCnBiFvC,oBoBjFa,IAA0B,8CpBkFvC,kBqBlFa,IAA0B,4CrBmFvC,kBsBnFa,IAA0B,4CtBoFvC,kBuBpFa,IAA0B,4CvBqFvC,kBwBrFa,IAA0B,4CxBsFvC,kByBtFa,IAA0B,4CzBuFvC,kB0BvFa,IAA0B,4C1BwFvC,kB2BxFa,IAA0B,4C3ByFvC,e4BzFa,IAA0B,yC5B0FvC,oB6B1Fa,IAA0B,8C7B2FvC,oB8B3Fa,IAA0B,8C9B4FvC,a+B5Fa,IAA0B,uC/B6FvC,kBgC7Fa,IAA0B,4ChC8FvC,iBiC9Fa,IAA0B,2CjC+FvC,YkC/Fa,IAA0B,sClCgGvC,gBmChGa,IAA0B,0CnCiGvC,gBoCjGa,IAA0B,0CpCkGvC,gBqClGa,IAA0B,0CrCmGvC,gBsCnGa,IAA0B,0CtCoGvC,iBuCpGa,IAA0B,2CvCqGvC,ewCrGa,IAA0B,yCxCsGvC,cyCtGa,IAA0B,wCzCuGvC,e0CvGa,IAA0B,yC1CwGvC,iB2CxGa,IAA0B,2C3CyGvC,gB4CzGa,IAA0B,0C5C0GvC,gB6C1Ga,IAA0B,0C7C2GvC,gB8C3Ga,IAA0B,0C9C4GvC,e+C5Ga,IAA0B,yC/C6GvC,kBgD7Ga,IAA0B,4ChD8GvC,mBiD9Ga,IAA0B,6CjD+GvC,WkD/Ga,IAA0B,qClDgHvC,mBmDhHa,IAA0B,6CnDiHvC,eoDjHa,IAA0B,yCpDkHvC,cqDlHa,IAA0B,wCrDmHvC,gBsDnHa,IAA0B,0CtDoHvC,WuDpHa,IAA0B,qCvDqHvC,WwDrHa,IAA0B,qCxDsHvC,0ByDtHa,IAA0B,oDzDuHvC,0B0DvHa,IAA0B,oD1DwHvC,0B2DxHa,IAA0B,oD3DyHvC,0B4DzHa,IAA0B,qDCgF1BA,OAzCE,CACf,mCCxCa,IAA0B,6DDyCvC,sCEzCa,IAA0B,gEF0CvC,+BG1Ca,IAA0B,yDH2CvC,oCI3Ca,IAA0B,8DJ4CvC,iCK5Ca,IAA0B,2DL6CvC,kCM7Ca,IAA0B,4DN8CvC,mDO9Ca,IAA0B,6EP+CvC,oDQ/Ca,IAA0B,8ERgDvC,qCShDa,IAA0B,+DTiDvC,qCUjDa,IAA0B,+DVkDvC,kCWlDa,IAA0B,4DXmDvC,qCYnDa,IAA0B,+DZoDvC,mCapDa,IAA0B,6DbqDvC,+BcrDa,IAA0B,yDdsDvC,qCetDa,IAA0B,+DfuDvC,0BgBvDa,IAA0B,oDhBwDvC,iBiBxDa,IAA0B,2CjByDvC,gBkBzDa,IAA0B,0ClB0DvC,oBmB1Da,IAA0B,8CnB2DvC,sBoB3Da,IAA0B,gDpB4DvC,sBqB5Da,IAA0B,gDrB6DvC,uBsB7Da,IAA0B,iDtB8DvC,uBuB9Da,IAA0B,iDvB+DvC,kBwB/Da,IAA0B,4CxBgEvC,kByBhEa,IAA0B,4CzBiEvC,wB0BjEa,IAA0B,kD1BkEvC,sB2BlEa,IAA0B,gD3BmEvC,8B4BnEa,IAA0B,wD5BoEvC,4B6BpEa,IAA0B,sD7BqEvC,sB8BrEa,IAA0B,gD9BsEvC,uB+BtEa,IAA0B,iD/BuEvC,wBgCvEa,IAA0B,kDhCwEvC,sCiCxEa,IAA0B,gEjCyEvC,gCkCzEa,IAA0B,0DlC0EvC,uBmC1Ea,IAA0B,iDnC2EvC,wBoC3Ea,IAA0B,kDpC4EvC,oBqC5Ea,IAA0B,8CrC6EvC,sBsC7Ea,IAA0B,iDCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,2ECA1B,OAA0B,wDCA1B,OAA0B,+ECA1B,OAA0B,8ECA1B,OAA0B,mECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,qDCA1B,OAA0B,gECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,wDCA1B,OAA0B,qDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,2ECA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,gECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,iECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,4ECA1B,OAA0B,mFCA1B,OAA0B,uFCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,uDCA1B,OAA0B,wDCA1B,OAA0B,wECA1B,OAA0B,yECA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,kFCA1B,OAA0B,wECA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,kECA1B,OAA0B,mECA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,wECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,8DCA1B,OAA0B,0DCA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,8ECA1B,OAA0B,kECA1B,OAA0B,mECA1B,OAA0B,sECA1B,OAA0B,6ECA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,2DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,wDCA1B,OAA0B,8DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,mECA1B,OAA0B,qECA1B,OAA0B,8DCA1B,OAA0B,oECA1B,OAA0B,+DCA1B,OAA0B,qECA1B,OAA0B,kECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,iECA1B,OAA0B,oECA1B,OAA0B,4DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,wDCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,0DCA1B,OAA0B,gECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,+DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,2DCA1B,OAA0B,6DCA1B,OAA0B,qECA1B,OAA0B,gECA1B,OAA0B,0DCA1B,OAA0B,8DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,+DCA1B,OAA0B,2ECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sECA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,gECA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,6DCA1B,OAA0B,6FCA1B,OAA0B,+DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,oECA1B,OAA0B,mECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,gFCA1B,OAA0B,qDCA1B,OAA0B,sDCA1B,OAA0B,yDCA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,2ECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,gECA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,oDCA1B,OAA0B,sDCA1B,OAA0B,wECA1B,OAA0B,8DCA1B,OAA0B,wECA1B,OAA0B,oECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,qECA1B,OAA0B,iECA1B,OAA0B,8DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,sDCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,oFCA1B,OAA0B,8DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,0DCA1B,OAA0B,uECA1B,OAA0B,iECA1B,OAA0B,oECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,8DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,yDCA1B,OAA0B,wDCA1B,OAA0B,mFCA1B,OAA0B,uECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,0DCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,kFCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,uDCA1B,OAA0B,4DCA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,mECA1B,OAA0B,oDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,2ECA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,yECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,2DCA1B,OAA0B,sECA1B,OAA0B,yECA1B,OAA0B,8DCA1B,OAA0B,yDCA1B,OAA0B,sECA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,0DCA1B,OAA0B,uDCA1B,OAA0B,6DCA1B,OAA0B,wDCA1B,OAA0B,8DCA1B,OAA0B,wDCA1B,OAA0B,+DCA1B,OAA0B,mECA1B,OAA0B,qECA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,yECA1B,OAA0B,qECA1B,OAA0B,oDCA1B,OAA0B,2DCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,8DCA1B,OAA0B,4DCA1B,OAA0B,oECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,+DCA1B,OAA0B,yECA1B,OAA0B,uDCA1B,OAA0B,+DCA1B,OAA0B,8DCA1B,OAA0B,gECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,gECA1B,OAA0B,4ECA1B,OAA0B,kECA1B,OAA0B,gECA1B,OAA0B,uECA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,qECA1B,OAA0B,iECA1B,OAA0B,mECA1B,OAA0B,sECA1B,OAA0B,wDCA1B,OAA0B,kECA1B,OAA0B,8ECA1B,OAA0B,+ECA1B,OAA0B,kFCA1B,OAA0B,wECA1B,OAA0B,2ECA1B,OAA0B,4ECA1B,OAA0B,iECA1B,OAA0B,2ECA1B,OAA0B,6ECA1B,OAA0B,8ECA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,kFCA1B,OAA0B,2FCA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,kFCA1B,OAA0B,2FCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,qECA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,uECA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,oECA1B,OAA0B,uECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,uECA1B,OAA0B,4ECA1B,OAA0B,2ECA1B,OAA0B,2DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,yFCA1B,OAA0B,yFCA1B,OAA0B,gFCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,0ECA1B,OAA0B,oECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,iECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,wFCA1B,OAA0B,wFCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,iECA1B,OAA0B,wECA1B,OAA0B,8DCA1B,OAA0B,yECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,6DCA1B,OAA0B,qECA1B,OAA0B,+DCA1B,OAA0B,iECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,6DCA1B,OAA0B,8DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,iECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,2ECA1B,OAA0B,yDCA1B,OAA0B,iECA1B,OAA0B,iDCA1B,OAA0B,0ECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,yDCA1B,OAA0B,qECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,uECA1B,OAA0B,mECA1B,OAA0B,4DCA1B,OAA0B,iDCA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,0ECA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,oDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,4ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,0ECA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,gECA1B,OAA0B,wDCA1B,OAA0B,4ECA1B,OAA0B,6DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,iECA1B,OAA0B,qECA1B,OAA0B,qDCA1B,OAA0B,2DCA1B,OAA0B,wECA1B,OAA0B,yECA1B,OAA0B,6DCA1B,OAA0B,sECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,sECA1B,OAA0B,uDCA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,4FCA1B,OAA0B,4FCA1B,OAA0B,6ECA1B,OAA0B,gFCA1B,OAA0B,gFCA1B,OAA0B,+DCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,+DCA1B,OAA0B,8DCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,sECA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,0ECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,kFCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,+ECA1B,OAA0B,gECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,iECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,0FCA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,sDCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,mECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,oECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,mECA1B,OAA0B,8DCA1B,OAA0B,0DCA1B,OAA0B,wDCA1B,OAA0B,2ECA1B,OAA0B,iECA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,uECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,+ECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,4FCA1B,OAA0B,4FCA1B,OAA0B,4ECA1B,OAA0B,0GCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,2DCA1B,OAA0B,+DCA1B,OAA0B,2ECA1B,OAA0B,kECA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,sECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,4ECA1B,OAA0B,4ECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,2DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,6DCA1B,OAA0B,kECA1B,OAA0B,6DCA1B,OAA0B,qECA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,kDCA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,uDCA1B,OAA0B,sDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,2DCA1B,OAA0B,0DCA1B,OAA0B,0ECA1B,OAA0B,iECA1B,OAA0B,uDCA1B,OAA0B,yDCA1B,OAA0B,iFCA1B,OAA0B,+ECA1B,OAA0B,gFCA1B,OAA0B,wDCA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,gECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,kFCA1B,OAA0B,4ECA1B,OAA0B,oDCA1B,OAA0B,mDCA1B,OAA0B,mDCA1B,OAA0B,mDCA1B,OAA0B,0DCA1B,OAA0B,mFCA1B,OAA0B,wFCA1B,OAA0B,8ECA1B,OAA0B,wFCA1B,OAA0B,0DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,kECA1B,OAA0B,yECA1B,OAA0B,qECA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,kDCA1B,OAA0B,0ECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,qDCA1B,OAA0B,6DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,0DCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,6DCA1B,OAA0B,yECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,iDCA1B,OAA0B,gDCA1B,OAA0B,gDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,gDCA1B,OAA0B,gDCA1B,OAA0B,+CCA1B,OAA0B,+CCA1B,OAA0B,oDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,+CCA1B,OAA0B,+CCA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,4DCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,+ECA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,0DCA1B,OAA0B,2DCA1B,OAA0B,mFCA1B,OAA0B,sDCA1B,OAA0B,sECA1B,OAA0B,6CCA1B,OAA0B,6CCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,wDCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,2ECA1B,OAA0B,4ECA1B,OAA0B,6ECA1B,OAA0B,8ECA1B,OAA0B,8DCA1B,OAA0B,6ECA1B,OAA0B,+DCA1B,OAA0B,8ECA1B,OAA0B,8DCA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,+DCA1B,OAA0B,4ECA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,oDCA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,+CCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,8CCA1B,OAA0B,gDCA1B,OAA0B,mDCA1B,OAA0B,uDCA1B,OAA0B,8CCA1B,OAA0B,8CCA1B,OAA0B,mDCA1B,OAA0B,oDCA1B,OAA0B,iDCA1B,OAA0B,kDCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,wDCA1B,OAA0B,kDCA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,uFCA1B,OAA0B,uFCA1B,OAA0B,uFCA1B,OAA0B,uFCA1B,OAA0B,uECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,2DCA1B,OAA0B,uDCA1B,OAA0B,mDCA1B,OAA0B,oDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,0DCA1B,OAA0B,yDCA1B,OAA0B,sDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,yDCA1B,OAA0B,8DCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,wDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,4ECA1B,OAA0B,4ECA1B,OAA0B,4ECA1B,OAA0B,4ECA1B,OAA0B,4ECA1B,OAA0B,4ECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,qDCA1B,OAA0B,qECA1B,OAA0B,uDCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,4DCA1B,OAA0B,qDCA1B,OAA0B,mDCA1B,OAA0B,mDCA1B,OAA0B,mDCA1B,OAA0B,oECA1B,OAA0B,qDCA1B,OA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1FvC,yBgBv1Fa,IAA0B,mDhBw1FvC,yBiBx1Fa,IAA0B,mDjBy1FvC,yBkBz1Fa,IAA0B,mDlB01FvC,0BmB11Fa,IAA0B,oDnB21FvC,0BoB31Fa,IAA0B,oDpB41FvC,6CqB51Fa,IAA0B,uErB61FvC,8CsB71Fa,IAA0B,wEtB81FvC,0BuB91Fa,IAA0B,oDvB+1FvC,0BwB/1Fa,IAA0B,oDxBg2FvC,0ByBh2Fa,IAA0B,oDzBi2FvC,0B0Bj2Fa,IAA0B,oD1Bk2FvC,0B2Bl2Fa,IAA0B,oD3Bm2FvC,0B4Bn2Fa,IAA0B,oD5Bo2FvC,0B6Bp2Fa,IAA0B,oD7Bq2FvC,oB8Br2Fa,IAA0B,8C9Bs2FvC,oB+Bt2Fa,IAA0B,8C/Bu2FvC,0BgCv2Fa,IAA0B,oDhCw2FvC,2BiCx2Fa,IAA0B,qDjCy2FvC,8BkCz2Fa,IAA0B,wDlC02FvC,gDmC12Fa,IAA0B,0EnC22FvC,0BoC32Fa,IAA0B,oDpC42FvC,oCqC52Fa,IAA0B,8DrC62FvC,mCsC72Fa,IAA0B,6DtC82FvC,mCuC92Fa,IAA0B,6DvC+2FvC,mCwC/2Fa,IAA0B,6DxCg3FvC,oCyCh3Fa,IAA0B,8DzCi3FvC,oC0Cj3Fa,IAA0B,8D1Ck3FvC,oC2Cl3Fa,IAA0B,8D3Cm3FvC,sB4Cn3Fa,IAA0B,gD5Co3FvC,sB6Cp3Fa,IAA0B,gD7Cq3FvC,sB8Cr3Fa,IAA0B,gD9Cs3FvC,iC+Ct3Fa,IAA0B,2D/Cu3FvC,oCgDv3Fa,IAA0B,8DhDw3FvC,oCiDx3Fa,IAA0B,8DjDy3FvC,qCkDz3Fa,IAA0B,+DlD03FvC,qCmD13Fa,IAA0B,+DnD23FvC,oBoD33Fa,IAA0B,8CpD43FvC,6BqD53Fa,IAA0B,uDrD63FvC,2BsD73Fa,IAA0B,qDtD83FvC,2BuD93Fa,IAA0B,qDvD+3FvC,2BwD/3Fa,IAA0B,qDxDg4FvC,sCyDh4Fa,IAA0B,gEzDi4FvC,iC0Dj4Fa,IAA0B,2D1Dk4FvC,iC2Dl4Fa,IAA0B,2D3Dm4FvC,6B4Dn4Fa,IAA0B,uD5Do4FvC,6B6Dp4Fa,IAA0B,uD7Dq4FvC,6B8Dr4Fa,IAA0B,uD9Ds4FvC,6B+Dt4Fa,IAA0B,uD/Du4FvC,4BgEv4Fa,IAA0B,sDhEw4FvC,4BiEx4Fa,IAA0B,sDjEy4FvC,4BkEz4Fa,IAA0B,sDlE04FvC,4BmE14Fa,IAA0B,sDnE24FvC,4BoE34Fa,IAA0B,sDpE44FvC,wCqE54Fa,IAA0B,kErE64FvC,6BsE74Fa,IAA0B,uDtE84FvC,6BuE94Fa,IAA0B,uDvE+4FvC,6BwE/4Fa,IAA0B,uDxEg5FvC,6ByEh5Fa,IAA0B,uDzEi5FvC,6B0Ej5Fa,IAA0B,uD1Ek5FvC,6B2El5Fa,IAA0B,uD3Em5FvC,0B4En5Fa,IAA0B,oD5Eo5FvC,0B6Ep5Fa,IAA0B,oD7Eq5FvC,0B8Er5Fa,IAA0B,oD9Es5FvC,0B+Et5Fa,IAA0B,oD/Eu5FvC,0BgFv5Fa,IAA0B,oDhFw5FvC,uBiFx5Fa,IAA0B,iDjFy5FvC,uBkFz5Fa,IAA0B,iDlF05FvC,8BmF15Fa,IAA0B,wDnF25FvC,8BoF35Fa,IAA0B,wDpF45FvC,qBqF55Fa,IAA0B,+CrF65FvC,qBsF75Fa,IAA0B,+CtF85FvC,qBuF95Fa,IAA0B,+CvF+5FvC,sBwF/5Fa,IAA0B,gDxFg6FvC,wByFh6Fa,IAA0B,kDzFi6FvC,wB0Fj6Fa,IAA0B,kD1Fk6FvC,wB2Fl6Fa,IAA0B,kD3Fm6FvC,wB4Fn6Fa,IAA0B,kD5Fo6FvC,wB6Fp6Fa,IAA0B,kD7Fq6FvC,wB8Fr6Fa,IAA0B,kD9Fs6FvC,wB+Ft6Fa,IAA0B,kD/Fu6FvC,0DgGv6Fa,IAA0B,oFhGw6FvC,mCiGx6Fa,IAA0B,6DjGy6FvC,mCkGz6Fa,IAA0B,6DlG06FvC,mCmG16Fa,IAA0B,6DnG26FvC,mCoG36Fa,IAA0B,6DpG46FvC,6CqG56Fa,IAA0B,uErG66FvC,yCsG76Fa,IAA0B,mEtG86FvC,oCuG96Fa,IAA0B,8DvG+6FvC,oCwG/6Fa,IAA0B,8DxGg7FvC,oCyGh7Fa,IAA0B,8DzGi7FvC,0C0Gj7Fa,IAA0B,oE1Gk7FvC,qC2Gl7Fa,IAA0B,+D3Gm7FvC,qC4Gn7Fa,IAA0B,+D5Go7FvC,qC6Gp7Fa,IAA0B,+D7Gq7FvC,qC8Gr7Fa,IAA0B,+D9Gs7FvC,qC+Gt7Fa,IAA0B,+D/Gu7FvC,+BgHv7Fa,IAA0B,yDhHw7FvC,+BiHx7Fa,IAA0B,yDjHy7FvC,+BkHz7Fa,IAA0B,yDlH07FvC,+BmH17Fa,IAA0B,yDnH27FvC,+BoH37Fa,IAA0B,yDpH47FvC,+BqH57Fa,IAA0B,yDrH67FvC,4BsH77Fa,IAA0B,sDtH87FvC,8BuH97Fa,IAA0B,wDvH+7FvC,8BwH/7Fa,IAA0B,wDxHg8FvC,8ByHh8Fa,IAA0B,wDzHi8FvC,8B0Hj8Fa,IAA0B,wD1Hk8FvC,8B2Hl8Fa,IAA0B,wD3Hm8FvC,8B4Hn8Fa,IAA0B,wD5Ho8FvC,8B6Hp8Fa,IAA0B,wD7Hq8FvC,8B8Hr8Fa,IAA0B,wD9Hs8FvC,iC+Ht8Fa,IAA0B,2D/Hu8FvC,kCgIv8Fa,IAA0B,4DhIw8FvC,sCiIx8Fa,IAA0B,gEjIy8FvC,qDkIz8Fa,IAA0B,+ElI08FvC,uCmI18Fa,IAA0B,iEnI28FvC,sDoI38Fa,IAA0B,gFpI48FvC,4CqI58Fa,IAA0B,sErI68FvC,yCsI78Fa,IAA0B,mEtI88FvC,0CuI98Fa,IAA0B,oEvI+8FvC,+BwI/8Fa,IAA0B,yDxIg9FvC,+ByIh9Fa,IAA0B,yDzIi9FvC,+B0Ij9Fa,IAA0B,yD1Ik9FvC,+B2Il9Fa,IAA0B,yD3Im9FvC,+B4In9Fa,IAA0B,yD5Io9FvC,+B6Ip9Fa,IAA0B,yD7Iq9FvC,+B8Ir9Fa,IAA0B,yD9Is9FvC,sB+It9Fa,IAA0B,gD/Iu9FvC,sBgJv9Fa,IAA0B,gDhJw9FvC,sBiJx9Fa,IAA0B,gDjJy9FvC,sBkJz9Fa,IAA0B,gDlJ09FvC,sBmJ19Fa,IAA0B,gDnJ29FvC,sBoJ39Fa,IAA0B,gDpJ49FvC,sBqJ59Fa,IAA0B,gDrJ69FvC,yBsJ79Fa,IAA0B,mDtJ89FvC,yBuJ99Fa,IAA0B,mDvJ+9FvC,yBwJ/9Fa,IAA0B,mDxJg+FvC,kCyJh+Fa,IAA0B,4DzJi+FvC,0B0Jj+Fa,IAA0B,oD1Jk+FvC,0B2Jl+Fa,IAA0B,oD3Jm+FvC,0B4Jn+Fa,IAA0B,oD5Jo+FvC,+B6Jp+Fa,IAA0B,yD7Jq+FvC,+B8Jr+Fa,IAA0B,yD9Js+FvC,+B+Jt+Fa,IAA0B,yD/Ju+FvC,+BgKv+Fa,IAA0B,yDhKw+FvC,+BiKx+Fa,IAA0B,yDjKy+FvC,+BkKz+Fa,IAA0B,yDlK0+FvC,sBmK1+Fa,IAA0B,gDnK2+FvC,sBoK3+Fa,IAA0B,gDpK4+FvC,2BqK5+Fa,IAA0B,qDrK6+FvC,2BsK7+Fa,IAA0B,qDtK8+FvC,kCuK9+Fa,IAA0B,4DvK++FvC,mCwK/+Fa,IAA0B,6DxKg/FvC,iCyKh/Fa,IAA0B,2DzKi/FvC,uB0Kj/Fa,IAA0B,iD1Kk/FvC,4B2Kl/Fa,IAA0B,sD3Km/FvC,4C4Kn/Fa,IAA0B,sE5Ko/FvC,iC6Kp/Fa,IAA0B,2D7Kq/FvC,iC8Kr/Fa,IAA0B,2D9Ks/FvC,iC+Kt/Fa,IAA0B,2D/Ku/FvC,iCgLv/Fa,IAA0B,2DhLw/FvC,4BiLx/Fa,IAA0B,sDjLy/FvC,4BkLz/Fa,IAA0B,sDlL0/FvC,4BmL1/Fa,IAA0B,sDnL2/FvC,4BoL3/Fa,IAA0B,sDpL4/FvC,4BqL5/Fa,IAA0B,sDrL6/FvC,4BsL7/Fa,IAA0B,sDtL8/FvC,4BuL9/Fa,IAA0B,sDvL+/FvC,4BwL//Fa,IAA0B,sDxLggGvC,oByLhgGa,IAA0B,8CzLigGvC,4B0LjgGa,IAA0B,sD1LkgGvC,uC2LlgGa,IAA0B,iE3LmgGvC,uC4LngGa,IAA0B,iE5LogGvC,uC6LpgGa,IAA0B,iE7LqgGvC,wC8LrgGa,IAA0B,kE9LsgGvC,wC+LtgGa,IAA0B,kE/LugGvC,wCgMvgGa,IAA0B,kEhMwgGvC,wCiMxgGa,IAA0B,kEjMygGvC,oCkMzgGa,IAA0B,8DlM0gGvC,qCmM1gGa,IAA0B,+DnM2gGvC,+BoM3gGa,IAA0B,yDpM4gGvC,uBqM5gGa,IAA0B,iDrM6gGvC,uBsM7gGa,IAA0B,iDtM8gGvC,2BuM9gGa,IAA0B,qDvM+gGvC,2BwM/gGa,IAA0B,yDCUxB,CACf,4BCXa,IAA0B,sDDYvC,+BEZa,IAA0B,yDFavC,cGba,IAA0B,0CHcvC,aIda,IAA0B,yCJevC,0BKfa,IAA0B,oDLgBvC,6BMhBa,IAA0B,uDNiBvC,QOjBa,IAA0B,oCPkBvC,qBQlBa,IAA0B,+CRmBvC,OSnBa,IAA0B,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","file":"static/js/main.9cb5f475.chunk.js","sourcesContent":["import {Projection, Transform} from '../redux/projections-slice';\r\nimport {isStaticSite, storage} from \"../electron-modules\";\r\n\r\nexport const unknownProjectionMeters = {\r\n type: 'proj4',\r\n default: true,\r\n units: \"m\",\r\n name: \"unknown-projection-m\",\r\n string: '+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m',\r\n} as Projection;\r\n\r\nexport const unknownProjectionFeet = {\r\n type: 'proj4',\r\n default: true,\r\n units: \"ft\",\r\n name: \"unknown-projection-ft\",\r\n string: '+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=ft',\r\n};\r\n\r\nexport const defaultProjection = {\r\n type: 'proj4',\r\n name: '',\r\n string: ''\r\n} as Projection;\r\n\r\nexport const defaultTransform = {\r\n origin: Array(3).fill(0),\r\n translation: Array(3).fill(0),\r\n rotation: 0,\r\n scale: 1\r\n} as Transform;\r\n\r\nexport const uniqueProjectionID = (text) : string => {\r\n return text.replace(/\\s/g, '.');\r\n};\r\n\r\nclass UserProjections {\r\n public data: Projection[] = [];\r\n private readonly file: string;\r\n\r\n constructor() {\r\n this.file = 'user-projections';\r\n this.load();\r\n }\r\n\r\n getByName(name: string): Projection {\r\n return this.data\r\n .find(projection => projection.name === name);\r\n }\r\n\r\n getByString(proj: string): Projection {\r\n return this.data\r\n .filter(projection => !projection.transform)\r\n .find(projection => projection.string === proj);\r\n }\r\n\r\n withUniqueName(projection: Projection) {\r\n let suffix = 0;\r\n let name = projection.name;\r\n\r\n while (true) {\r\n if (!userProjections.getByName(name)) break;\r\n suffix += 1;\r\n name = `${name} (${suffix})`;\r\n }\r\n\r\n return {...projection, name};\r\n }\r\n\r\n async save(data: Projection) {\r\n if (this.getByName(data.name)) return false;\r\n\r\n this.data.push(data);\r\n storage.setSync(this.file, this.data);\r\n\r\n this.load();\r\n return true;\r\n }\r\n\r\n load() {\r\n if (isStaticSite) return {};\r\n let data = storage.getSync(this.file);\r\n this.data = Array.isArray(data) ? data : [];\r\n }\r\n\r\n delete(name: string) {\r\n if (!this.getByName(name)) return;\r\n\r\n const rows = this.data.map(x => x.name);\r\n const index = rows.indexOf(name);\r\n this.data.splice(index, 1);\r\n\r\n storage.setSync(this.file, this.data);\r\n this.load();\r\n }\r\n\r\n update(name: string, data: Projection) {\r\n if (!this.getByName(name)) return false;\r\n\r\n this.delete(name);\r\n return this.save(data);\r\n }\r\n}\r\n\r\nexport const userProjections = new UserProjections();\r\n","import React, {useEffect} from 'react';\r\nimport clsx from 'clsx';\r\nimport Button from '@mui/material/Button';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport { Theme } from \"@mui/material/styles\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {\r\n userProjections,\r\n defaultProjection,\r\n defaultTransform,\r\n uniqueProjectionID\r\n} from './projections';\r\nimport {useState} from 'react';\r\nimport {\r\n AppBar,\r\n Checkbox,\r\n FormControlLabel,\r\n Grid,\r\n InputAdornment,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n Tab,\r\n Tabs,\r\n TextField,\r\n Typography\r\n} from '@mui/material';\r\nimport LocalScene, { isValidProjection } from '../viewer/js/projections';\r\nimport {\r\n DropdownWithLabel,\r\n EnhancedTable,\r\n InputWithLabel,\r\n PromptDialog,\r\n TabPanel,\r\n TabProps\r\n} from '../components';\r\nimport { toast } from '../app';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDialog, useUniqueProjectID } from '../hooks';\r\nimport { registerEvent } from '../electron-modules';\r\nimport { useTableState } from '../hooks/use-table-state';\r\nimport { EnhancedTableState } from '../types/enhanced-table';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n title: {\r\n margin: 0,\r\n padding: theme.spacing(1,2,1,2),\r\n },\r\n content: {\r\n padding: theme.spacing(0),\r\n paddingTop: \"0px !important\"\r\n },\r\n titleClose: {\r\n color: \"white\"\r\n },\r\n marginTop: {\r\n marginTop: theme.spacing(2)\r\n },\r\n marginBottom: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n adornedEnd: {\r\n paddingRight: theme.spacing(0)\r\n },\r\n utmParent: {\r\n display: \"flex\"\r\n },\r\n utmZone: {\r\n flex: 2\r\n },\r\n utmButton: {\r\n flex: 1,\r\n marginLeft: theme.spacing(1)\r\n },\r\n button: {\r\n marginTop: theme.spacing(2),\r\n marginLeft: theme.spacing(1)\r\n },\r\n dropdown: {\r\n minWidth: 200,\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n buttonDiv: {\r\n textAlign: \"right\"\r\n },\r\n tabsParent: {\r\n display: \"flex\",\r\n padding: theme.spacing(0, 1)\r\n },\r\n tabsHeaders: {\r\n flex: 1\r\n }\r\n }),\r\n);\r\n\r\ninterface UserProjectionPanelProps {\r\n loadProjectionToEdit: (projectionData, newProjection) => void;\r\n setActiveTab: (value) => void;\r\n tableState: EnhancedTableState;\r\n}\r\n\r\nconst UserProjectionPanel = (props: UserProjectionPanelProps) => {\r\n const {loadProjectionToEdit, setActiveTab, tableState} = props;\r\n const {t} = useTranslation();\r\n\r\n const deleteDialog = useDialog();\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('projections.projection-name'),\r\n searchable: true\r\n },\r\n {\r\n id: 'type',\r\n label: t('projections.projection-type')\r\n },\r\n {\r\n id: 'custom',\r\n label: t('projections.custom-parameters')\r\n },\r\n ];\r\n\r\n // Convert projections to data row\r\n const data = userProjections.data;\r\n\r\n const getRows = () => {\r\n return data.map(option => {\r\n return {\r\n id: uniqueProjectionID(option.name),\r\n name: option.name,\r\n custom: option.transform ? t('general.yes') : t('general.no'),\r\n type: option.type,\r\n disabled: LocalScene.isDataProjection(option.name)\r\n };\r\n });\r\n };\r\n\r\n const onClick = (row) => {\r\n const results = data.filter(x => x.name === row.name);\r\n if (results.length !== 1) {\r\n return;\r\n }\r\n\r\n const projection = results[0];\r\n loadProjectionToEdit(projection, false);\r\n setActiveTab(1);\r\n };\r\n\r\n const onDelete = (row) => {\r\n const results = data.filter(x => x.name === row.name);\r\n if (results.length !== 1) {\r\n return;\r\n }\r\n\r\n // Delete projection + force reload\r\n const projection = results[0];\r\n userProjections.delete(projection.name);\r\n toast.error(t(\"toast.projection-deleted\"));\r\n\r\n // Force projection list refresh\r\n setActiveTab(0);\r\n };\r\n\r\n const rows = getRows();\r\n\r\n const actions = [\r\n {\r\n title: t(\"buttons.delete\"),\r\n icon: ,\r\n onClick: (row) => {\r\n deleteDialog.handleOpen(row);\r\n }\r\n }\r\n ];\r\n\r\n let deletePrompt = \"\";\r\n if (deleteDialog.open) {\r\n deletePrompt = t('projections.do_you_want_to_delete_this_projection_row_name', {\r\n name: deleteDialog.data.name\r\n });\r\n }\r\n\r\n return (\r\n \r\n
\r\n {rows.length === 0 && (\r\n {t('projections.no-user-projections-have-been-added')}\r\n )}\r\n\r\n {(rows.length > 0) && ()}\r\n
\r\n\r\n {/* Delete Dialog */}\r\n {\r\n onDelete(deleteDialog.data);\r\n deleteDialog.handleClose();\r\n }}\r\n title={t(\"enhanced-table.prompt-delete-title\")}\r\n prompt={deletePrompt}\r\n button={t('buttons.delete')}\r\n />\r\n\r\n
\r\n );\r\n};\r\n\r\ninterface EditPanelProps {\r\n setActiveTab: (value) => void;\r\n customProjection: any;\r\n hasTransform: boolean;\r\n newProjection: boolean;\r\n existingName: string;\r\n updateEditableValues: (values) => void\r\n setHasTransform: React.Dispatch;\r\n}\r\n\r\nconst EditPanel = (props: EditPanelProps) => {\r\n const {customProjection, updateEditableValues,\r\n hasTransform, setHasTransform,\r\n newProjection, setActiveTab, existingName} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const name = customProjection.name;\r\n const type = customProjection.type;\r\n const projString = customProjection.string;\r\n\r\n const transform = customProjection.transform;\r\n const origin = transform.origin;\r\n const translate = transform.translation;\r\n const rotation = transform.rotation;\r\n const scale = transform.scale;\r\n\r\n const handleChecked = (event) => {\r\n setHasTransform(event.target.checked);\r\n };\r\n\r\n const saveProjection = () => {\r\n // Create copy of our data\r\n let data = JSON.parse(JSON.stringify(customProjection));\r\n\r\n // Use trimmed versions of name and string\r\n data.name = nameTrim;\r\n data.string = stringTrim;\r\n\r\n if (!hasTransform) {\r\n delete data.transform;\r\n }\r\n\r\n const nameChanged = data.name !== existingName;\r\n const duplicateName = userProjections.getByName(data.name);\r\n\r\n // Check for duplicates if our name has changed\r\n if (nameChanged && duplicateName) {\r\n toast.error(t(\"toast.projection-duplicate\"));\r\n return;\r\n }\r\n\r\n // Check for valid projection string\r\n let validProjection = isValidProjection(projString);\r\n if (!validProjection) {\r\n toast.error(t(\"toast.projection-invalid\"));\r\n return;\r\n }\r\n\r\n const success = newProjection\r\n ? userProjections.save(data)\r\n : userProjections.update(existingName, data);\r\n\r\n if (!success) return;\r\n\r\n if (newProjection) {\r\n toast.success(t(\"toast.projection-added\"));\r\n } else {\r\n toast.success(t(\"toast.projection-updated\"));\r\n }\r\n\r\n setActiveTab(0);\r\n };\r\n\r\n // Remove excess whitespace from name and string\r\n let nameTrim = name.trim();\r\n let stringTrim = projString.trim();\r\n\r\n let originXError = origin[0] === \"\";\r\n let originYError = origin[1] === \"\";\r\n let originZError = origin[2] === \"\";\r\n\r\n let translateXError = translate[0] === \"\";\r\n let translateYError = translate[1] === \"\";\r\n let translateZError = translate[2] === \"\";\r\n\r\n let rotationError = rotation === \"\";\r\n let scaleError = scale === \"\";\r\n\r\n let canSubmit = (nameTrim !== \"\")\r\n && stringTrim !== \"\";\r\n\r\n if (hasTransform) {\r\n canSubmit = canSubmit\r\n && !originXError\r\n && !originYError\r\n && !originZError\r\n && !translateXError\r\n && !translateYError\r\n && !translateZError\r\n && !rotationError\r\n && !scaleError;\r\n }\r\n\r\n const updateType = (value) => {\r\n // Update projection type and clear projection string\r\n updateEditableValues({\r\n 'type': value,\r\n 'string': \"\"\r\n });\r\n };\r\n\r\n const updateName = (value) => {\r\n updateEditableValues({\"name\": value});\r\n };\r\n\r\n const updateString = (value) => {\r\n let string = (customProjection['type'] === \"epsg\")\r\n ? `EPSG:${value}`\r\n : value;\r\n\r\n updateEditableValues({\"string\": string});\r\n };\r\n\r\n const updateOrigin = (event, index) => {\r\n const value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['origin'][index] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n const updateTranslation = (event, index) => {\r\n const value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['translation'][index] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n const updateScale = (event) => {\r\n const value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['scale'] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n const updateRotation = (event) => {\r\n let value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['rotation'] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n return (\r\n
\r\n\r\n \r\n\r\n {/** Projection Type */}\r\n \r\n \r\n \r\n\r\n {/** Projection Name */}\r\n \r\n \r\n \r\n\r\n {/** Projection string (proj4) */}\r\n {type===\"proj4\" && (\r\n \r\n )}\r\n\r\n {/** Projection string (WKT) */}\r\n {type===\"wkt\" && (\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n }\r\n label={t('projections.additional-parameters')}\r\n />\r\n\r\n {hasTransform && (\r\n {/* Origin */}\r\n \r\n \r\n {\r\n updateOrigin(e, 0);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={originXError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateOrigin(e, 1);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={originYError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateOrigin(e, 2);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={originZError}\r\n />\r\n \r\n \r\n\r\n {/* Translation */}\r\n \r\n \r\n {\r\n updateTranslation(e, 0);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={translateXError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateTranslation(e, 1);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={translateYError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateTranslation(e, 2);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={translateZError}\r\n />\r\n \r\n \r\n\r\n {/* Rotation and scaling */}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n
\r\n {!newProjection && ( {\r\n setActiveTab(0);\r\n }}\r\n className={classes.button}\r\n >\r\n {t(\"buttons.cancel\")}\r\n )}\r\n\r\n \r\n {newProjection ? t('projections.add-projection') : t('projections.save-changes')}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface SearchPanelProps {\r\n loadProjectionToEdit: (projectionData, newProjection) => void;\r\n setActiveTab: (value) => void;\r\n tableState: EnhancedTableState;\r\n}\r\n\r\nconst SearchPanel = (props: SearchPanelProps) => {\r\n const {tableState, setActiveTab, loadProjectionToEdit} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [type, setType] = useState(\"text\");\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [hemisphere, setHemisphere] = useState(\"N\");\r\n const [searching, setSearching] = useState(false);\r\n const [searchResults, setSearchResults] = useState([]);\r\n\r\n const handleChange = (event) => {\r\n setType(event.target.value);\r\n };\r\n\r\n const handleHemisphere = (event) => {\r\n setHemisphere(event.target.value);\r\n };\r\n\r\n const handleString = (event) => {\r\n setSearchTerm(event.target.value);\r\n };\r\n\r\n const searchOnline = () => {\r\n if (searchTerm === \"\") {\r\n return;\r\n }\r\n\r\n let value = searchTerm;\r\n if (type === \"utm\") {\r\n value = `utm ${value}${hemisphere}`;\r\n }\r\n\r\n tableState.reset();\r\n getProjections(value);\r\n };\r\n\r\n const getProjections = (searchText, pageNumber = 1, previousResults = [], maxPageNumber = 10) => {\r\n if (pageNumber === 1) {\r\n setSearchResults([]);\r\n setSearching(true);\r\n }\r\n\r\n const text = type !== \"epsg\" ?\r\n `${searchText} kind:PROJCRS` :\r\n searchText;\r\n\r\n const url = \"https://epsg.io/?q=\" + text + \"&format=json&page=\" + pageNumber;\r\n\r\n fetch(url)\r\n .then(response => response.json())\r\n .then(data => {\r\n const results = data.results;\r\n const parsed = [];\r\n\r\n results.forEach(result => {\r\n if (type === \"epsg\") {\r\n if (result.code !== searchText) {\r\n return;\r\n }\r\n }\r\n\r\n if (result.proj4 === \"\") {\r\n return;\r\n }\r\n\r\n parsed.push(result);\r\n });\r\n\r\n const combined = [...previousResults, ...parsed];\r\n setSearchResults(combined);\r\n\r\n if ((results.length > 0) && (pageNumber < maxPageNumber)) {\r\n setTimeout(() =>{\r\n getProjections(searchText, pageNumber + 1, combined);\r\n }, 250);\r\n } else {\r\n setSearching(false);\r\n }\r\n });\r\n };\r\n\r\n const onClick = (row) => {\r\n loadProjectionToEdit({\r\n type: \"proj4\",\r\n name: row.name,\r\n string: row.proj4\r\n }, true);\r\n setActiveTab(1);\r\n };\r\n\r\n const getRows = () => {\r\n return searchResults.map(projection => {\r\n return {\r\n id: uniqueProjectionID(projection.name),\r\n name: projection.name as string,\r\n epsg: parseInt(projection.code),\r\n proj4: projection.proj4 as string,\r\n };\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('projections.name')\r\n },\r\n {\r\n id: 'epsg',\r\n label: t('projections.epsg'),\r\n numeric: true\r\n },\r\n {\r\n id: 'proj4',\r\n label: t('projections.proj4-string')\r\n },\r\n ];\r\n\r\n const rows = getRows();\r\n\r\n return (\r\n
\r\n {/* Search Type */}\r\n
\r\n \r\n {t('projections.search-type')}\r\n \r\n \r\n {t('projections.text')}\r\n {t('projections.utm-zone')}\r\n {t('projections.epsg-code')}\r\n \r\n
\r\n\r\n {/* UTM Zone */}\r\n {type===\"utm\" && (
\r\n \r\n {t('projections.utm-zone')}\r\n \r\n }}\r\n className={clsx(classes.marginTop, classes.utmZone)}\r\n />\r\n\r\n \r\n {t('directions.north')}\r\n {t('directions.south')}\r\n \r\n\r\n
)}\r\n\r\n {/* EPSG Code */}\r\n {type===\"epsg\" && (EPSG:,\r\n }}\r\n className={classes.marginTop}\r\n />)}\r\n\r\n {/* Text Search */}\r\n {type===\"text\" && ()}\r\n\r\n {/* Search button */}\r\n
\r\n \r\n {searching ? t('projections.searching-epsg-io') : t('projections.search-online')}\r\n \r\n
\r\n\r\n {/* Results table */}\r\n {(rows.length > 0) && }\r\n
\r\n );\r\n};\r\n\r\ninterface StyledPanelProps {\r\n value: number;\r\n index: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StyledPanel = (props: StyledPanelProps) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const ProjectionsManager = () => {\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n const uniqueProjectID = useUniqueProjectID();\r\n const projectionsDialog = useDialog();\r\n\r\n // Must be defined here to persist (dialog is not mounted)\r\n const userTableState = useTableState({defaultSort: \"name\"});\r\n const searchTableState = useTableState();\r\n\r\n const [existingName, setExistingName] = useState(\"\");\r\n const [newProjection, setNewProjection] = useState(false);\r\n const [activeTab, setTabValue] = useState(0);\r\n const [customProjection, setCustomProjection] = useState({});\r\n const [hasTransform, setHasTransform] = useState(false);\r\n\r\n const setActiveTab = (value) => {\r\n if (value === 0) {\r\n clearProjectionValues();\r\n }\r\n\r\n setTabValue(value);\r\n };\r\n\r\n const updateEditableValues = (newValues) => {\r\n const combined = {...customProjection, ...newValues};\r\n setCustomProjection(combined);\r\n };\r\n\r\n const clearProjectionValues = () => {\r\n loadProjectionToEdit(defaultProjection, true);\r\n };\r\n\r\n const loadProjectionToEdit = (projectionData, newProjection) => {\r\n const dataCopy = JSON.parse(JSON.stringify(projectionData));\r\n const hasTransform = dataCopy.hasOwnProperty(\"transform\");\r\n if (!hasTransform) {\r\n const transformCopy = JSON.parse(JSON.stringify(defaultTransform));\r\n dataCopy.transform = transformCopy;\r\n }\r\n\r\n setHasTransform(hasTransform);\r\n setCustomProjection({...dataCopy});\r\n setExistingName(dataCopy.name);\r\n setNewProjection(newProjection);\r\n };\r\n\r\n const handleChange = (event, newactiveTab) => {\r\n setActiveTab(newactiveTab);\r\n };\r\n\r\n useEffect(() => {\r\n /** Close dialog when new project is loaded */\r\n projectionsDialog.handleClose();\r\n }, [uniqueProjectID]);\r\n\r\n useEffect(() => {\r\n registerEvent(\"open-projection-manager\", () => {\r\n projectionsDialog.handleOpen();\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n clearProjectionValues();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!projectionsDialog.open) return;\r\n userProjections.load();\r\n }, [projectionsDialog.open]);\r\n\r\n return (\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n {newProjection && ()}\r\n {!newProjection && ()}\r\n \r\n \r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n {/* Existing projections */}\r\n \r\n \r\n \r\n\r\n {/* Custom projections */}\r\n \r\n \r\n \r\n\r\n {/* Online projection search */}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { CheckboxWithLabel, SimpleDialog } from \"../components\";\r\nimport { sendCustomEvent } from \"../events\";\r\nimport { useDialog } from \"../hooks\";\r\nimport {\r\n Projection,\r\n selectDataProjection,\r\n updateDataProjection,\r\n updateViewProjection\r\n} from \"../redux/projections-slice\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, useTheme } from \"@mui/material\";\r\nimport { resetAerialState, resetCameraState } from \"../redux/camera-slice\";\r\nimport { userProjections } from \".\";\r\n\r\nexport const ProjectionDetector = () => {\r\n const dialog = useDialog();\r\n const theme = useTheme();\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n const [filename, setFilename] = useState(null);\r\n const [projection, setProjection] = useState(null);\r\n const [saveProjection, setSaveProjection] = useState(false);\r\n\r\n const dataProjection = useSelector(selectDataProjection);\r\n\r\n /** LAS projection event listener */\r\n useEffect(() => {\r\n const callback = (event) => {\r\n if (!dataProjection.default) return;\r\n\r\n const {filename, projection} = event.detail;\r\n\r\n setFilename(filename);\r\n setProjection(projection);\r\n dialog.handleOpen();\r\n };\r\n\r\n document.addEventListener(\"las-projection\", callback);\r\n\r\n return () => {\r\n document.removeEventListener(\"las-projection\", callback);\r\n };\r\n }, [dataProjection]);\r\n\r\n const onSubmit = () => {\r\n dispatch(resetCameraState(null));\r\n dispatch(resetAerialState(null));\r\n\r\n if (existingProjection) {\r\n dispatch(updateDataProjection(existingProjection));\r\n dispatch(updateViewProjection(existingProjection));\r\n } else {\r\n if (saveProjection) {\r\n userProjections.save(uniqueProjection);\r\n }\r\n\r\n dispatch(updateDataProjection(uniqueProjection));\r\n dispatch(updateViewProjection(uniqueProjection));\r\n }\r\n\r\n dialog.handleClose();\r\n };\r\n\r\n const existingProjection = projection\r\n ? userProjections.getByString(projection.string)\r\n : null;\r\n\r\n const uniqueProjection = projection\r\n ? userProjections.withUniqueName(projection)\r\n : null;\r\n\r\n const useExisting = !!existingProjection;\r\n const createNew = !existingProjection;\r\n\r\n const buttonText = existingProjection\r\n ? t('projections.use_projection')\r\n : t('projections.import_projection');\r\n\r\n return (\r\n \r\n {useExisting && \r\n {t('projections.las_projection_detected_existing')}\r\n }\r\n\r\n {createNew && \r\n {t('projections.las_projection_detected')}\r\n }\r\n\r\n
\r\n \r\n {t('projections.filename')}: {filename}\r\n \r\n\r\n {/** Information of existing projection */}\r\n {useExisting && existingProjection && \r\n \r\n {t('projections.projection-name')}: {existingProjection.name}\r\n \r\n\r\n \r\n {t('projections.projection_string')}: {existingProjection.string}\r\n \r\n }\r\n\r\n {/** Information for new projection (with unique name) */}\r\n {createNew && uniqueProjection && \r\n \r\n {t('projections.projection-name')}: {uniqueProjection.name}\r\n \r\n\r\n \r\n {t('projections.projection_string')}: {uniqueProjection.string}\r\n \r\n\r\n \r\n \r\n \r\n\r\n }\r\n
\r\n\r\n \r\n );\r\n};\r\n\r\nexport const setProjectionFromLAS = (filename: string, projection: Projection) => {\r\n sendCustomEvent(\"las-projection\", {filename, projection});\r\n};\r\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 1006;","import React from \"react\";\r\nimport { ThemeProvider, Theme, StyledEngineProvider } from \"@mui/material\";\r\nimport {AppWithAuth} from \"./app\";\r\nimport {store} from \"./redux/store\";\r\nimport {Provider} from \"react-redux\";\r\nimport './localization';\r\nimport {\r\n TaskQueueProvider,\r\n ViewerProvider,\r\n ActiveToolProvider,\r\n AuthProvider,\r\n BookmarksProvider,\r\n GlobalSettingsProvider,\r\n WebSocketProvider,\r\n BrandingProvider\r\n} from \"./providers\";\r\nimport { useBranding } from \"./hooks/use-branding\";\r\n\r\ndeclare module '@mui/styles/defaultTheme' {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-interface\r\n interface DefaultTheme extends Theme {}\r\n}\r\n\r\nconst ThemedViewer = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst EngineViewer = () => {\r\n const branding = useBranding();\r\n const theme = branding.theme;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ThemedViewer;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport EngineViewer from './engine-viewer';\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);","import {configureStore, combineReducers, nanoid, MiddlewareArray} from '@reduxjs/toolkit';\r\nimport projectReducer from './project-slice';\r\nimport foldersReducer from './folders-slice';\r\nimport assetsReducer from './assets-slice';\r\nimport projectionsReducer from './projections-slice';\r\nimport settingsReducer from './settings-slice';\r\nimport cameraReducer from './camera-slice';\r\nimport bookmarksReducer, { Bookmark } from './bookmarks-slice';\r\nimport customLinksReducer from './custom-links-slice';\r\nimport thunk from 'redux-thunk';\r\nimport {\r\n isMobile,\r\n getModifiedSceneState,\r\n getModifiedAerialState,\r\n toBoolean\r\n} from '../viewer/js/utilities';\r\nimport { useDispatch } from 'react-redux';\r\nimport { setTagQueryString } from '../urls';\r\n\r\nconst appReducer = combineReducers({\r\n project: projectReducer,\r\n camera: cameraReducer,\r\n folders: foldersReducer,\r\n projections: projectionsReducer,\r\n settings: settingsReducer,\r\n assets: assetsReducer,\r\n bookmarks: bookmarksReducer,\r\n custom_links: customLinksReducer\r\n});\r\n\r\nconst updateStateFromParameters = (state, parameters) => {\r\n if (!parameters) return state;\r\n\r\n const {sceneState, aerialState} = state.camera;\r\n\r\n state.camera.sceneState = getModifiedSceneState(\r\n sceneState, parameters);\r\n\r\n state.camera.aerialState = getModifiedAerialState(\r\n aerialState, parameters);\r\n\r\n if (\"expanded\" in parameters) {\r\n const switched = toBoolean(parameters.expanded);\r\n state.settings.switched = switched;\r\n }\r\n\r\n return state;\r\n};\r\n\r\nconst updateStateFromBookmark = (state, parameters) => {\r\n if (!parameters) return state;\r\n\r\n if (\"bookmark\" in parameters) {\r\n const bookmarkID = parameters.bookmark;\r\n const bookmark = state.bookmarks.find(bookmark => {\r\n return bookmark.id === bookmarkID;\r\n }) as Bookmark;\r\n\r\n if (!bookmark) return state;\r\n\r\n state.settings = bookmark.settings;\r\n state.camera.aerialState = bookmark.aerialState;\r\n state.camera.sceneState = bookmark.sceneState;\r\n\r\n state.assets.forEach(asset => {\r\n asset.visible = bookmark.visibleAssets.includes(asset.id);\r\n });\r\n }\r\n\r\n return state;\r\n};\r\n\r\nconst updateStateFromTag = (state, parameters) => {\r\n if (!parameters) return state;\r\n\r\n if (\"tag\" in parameters) {\r\n setTagQueryString(parameters.tag);\r\n }\r\n\r\n return state;\r\n};\r\n\r\nconst rootReducer = (state, action) => {\r\n const newProject = action.type === 'NEW';\r\n const loadConfig = action.type === 'LOAD';\r\n const configInit = state === undefined;\r\n\r\n if (newProject) {\r\n state = undefined;\r\n } else if (loadConfig) {\r\n const {projectJSON} = action.payload;\r\n state = projectJSON;\r\n }\r\n\r\n state = appReducer(state, action);\r\n\r\n if (loadConfig) {\r\n // Modify project state based on URL parameters\r\n const {parameters} = action.payload;\r\n state = updateStateFromParameters(state, parameters);\r\n state = updateStateFromBookmark(state, parameters);\r\n state = updateStateFromTag(state, parameters);\r\n }\r\n\r\n if (configInit || newProject) {\r\n state = appReducer(state, {\r\n type: \"settings/applySavedDefaults\",\r\n payload: null\r\n });\r\n }\r\n\r\n if (newProject) {\r\n /** Create unique project ID */\r\n state = appReducer(state, {\r\n type: \"project/updateProjectID\",\r\n payload: nanoid()\r\n });\r\n }\r\n\r\n if (newProject || loadConfig) {\r\n /** Update unique session ID */\r\n state = appReducer(state, {\r\n type: \"project/updateSessionID\",\r\n payload: nanoid()\r\n });\r\n }\r\n\r\n // Asset drawer will be forced to closed\r\n // for mobile devices on initial load\r\n if (loadConfig && isMobile) {\r\n state = appReducer(state, {\r\n type: \"settings/changeAssetDrawerState\",\r\n payload: false\r\n });\r\n }\r\n\r\n if (loadConfig) {\r\n appReducer(state, {\r\n type: \"settings/changeDefaultSettings\",\r\n payload: null\r\n });\r\n }\r\n\r\n return state;\r\n};\r\n\r\nconst middleware = new MiddlewareArray()\r\n .concat(thunk);\r\n\r\nexport const store = configureStore({\r\n reducer: rootReducer,\r\n middleware\r\n});\r\n\r\nexport type AppDispatch = typeof store.dispatch;\r\n\r\n/** Custom useDispatch with proper typing for our store */\r\nexport const useAppDispatch: () => AppDispatch = useDispatch;","import { fse, isCloudSite, isStaticSite } from '../../electron-modules';\r\nimport { isValidURL } from './utilities';\r\n\r\ninterface ByteRange {\r\n first: number\r\n last: number\r\n}\r\n\r\nexport const readFileJSON = (path: string): Promise => {\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n return readJsonFromURL(path);\r\n } else {\r\n return readJsonElectron(path);\r\n }\r\n};\r\n\r\nexport const readFileText = (path: string): Promise => {\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n return readTextFromURL(path);\r\n } else {\r\n return readTextElectron(path);\r\n }\r\n};\r\n\r\ninterface FileReadOptions {\r\n byteRange?: ByteRange;\r\n}\r\n\r\nexport const readFileBuffer = (path: string, options: FileReadOptions = {}) => {\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n return readBufferFromURL(path, options);\r\n } else {\r\n return readBufferElectron(path, options);\r\n }\r\n};\r\n\r\nconst readJsonFromURL = async (path) => {\r\n let headers = {\r\n 'Content-Type': 'application/json'\r\n };\r\n\r\n const response = await fetch(path, {headers});\r\n\r\n if ((response.status === 404) || (response.status === 403)) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n const data = await response.json();\r\n return data;\r\n};\r\n\r\nconst readJsonElectron = async (path) => {\r\n const data = await fse.readFile(path, 'utf-8');\r\n return JSON.parse(data);\r\n};\r\n\r\nconst readTextFromURL = async (path) => {\r\n let headers = {\r\n 'Content-Type': 'text/html; charset=utf-8'\r\n };\r\n\r\n const response = await fetch(path, {headers});\r\n\r\n if ((response.status === 404) || (response.status === 403)) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n const data = await response.text();\r\n return data;\r\n};\r\n\r\nconst readTextElectron = async (path) => {\r\n return await fse.readFile(path, 'utf-8');\r\n};\r\n\r\nconst readBufferFromURL = async (path, options: FileReadOptions = {}) : Promise => {\r\n const {byteRange = null} = options;\r\n\r\n let headers = {};\r\n\r\n if (byteRange) {\r\n const first = byteRange.first;\r\n const last = byteRange.last - 1;\r\n headers['Content-Type'] = 'multipart/byteranges';\r\n headers['Range'] = `bytes=${first}-${last}`;\r\n }\r\n\r\n const response = await fetch(path, {headers});\r\n\r\n if ((response.status === 404) || (response.status === 403)) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n const data = await response.arrayBuffer();\r\n\r\n if (byteRange) {\r\n const bytesRequested = byteRange.last - byteRange.first;\r\n if (data.byteLength !== bytesRequested) {\r\n throw new Error(\"Invalid number of bytes read\");\r\n }\r\n }\r\n\r\n if (data.byteLength === 0) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n return data;\r\n};\r\n\r\nconst readBufferElectron = async (path, options: FileReadOptions = {}) : Promise => {\r\n const {byteRange = null} = options;\r\n\r\n if (byteRange) {\r\n const byteLength = byteRange.last - byteRange.first;\r\n const tmpBuffer = Buffer.alloc(byteLength);\r\n\r\n const file = await fse.open(path, \"r\");\r\n const {buffer, bytesRead} = await fse.read(\r\n file, tmpBuffer, 0, byteLength, byteRange.first);\r\n fse.close(file);\r\n\r\n if (bytesRead === 0) {\r\n throw new Error(\"No bytes read\");\r\n }\r\n\r\n return buffer.buffer;\r\n } else {\r\n const data = await fse.readFile(path);\r\n return data.buffer;\r\n }\r\n};\r\n","import { useCallback, useState } from 'react';\r\n\r\ninterface DialogController {\r\n open: boolean\r\n data?: any;\r\n handleClose: () => void;\r\n handleOpen: (data?: any) => void;\r\n}\r\n\r\ninterface DialogState {\r\n open: boolean;\r\n data: any;\r\n}\r\n\r\nexport const useDialog = (): DialogController => {\r\n const [state, setState] = useState({\r\n open: false,\r\n data: null\r\n });\r\n\r\n const handleOpen = useCallback((data = null): void => {\r\n setState({\r\n open: true,\r\n data\r\n });\r\n },[]);\r\n\r\n const handleClose = useCallback((): void => {\r\n setState({\r\n open: false,\r\n data: null\r\n });\r\n }, []);\r\n\r\n return {\r\n open: state.open,\r\n data: state.data,\r\n handleClose,\r\n handleOpen\r\n };\r\n};\r\n","import { useContext } from 'react';\r\nimport { TaskQueueContext } from '../providers';\r\n\r\nexport const useTaskQueue = () => useContext(TaskQueueContext);\r\n","import { useContext } from 'react';\r\nimport { ViewerContext } from '../providers';\r\n\r\nexport const useViewer = () => useContext(ViewerContext);\r\n","import { useContext } from 'react';\r\nimport { ActiveToolContext } from '../providers';\r\n\r\nexport const useActiveTool = () => useContext(ActiveToolContext);\r\n","import { useSelector } from \"react-redux\";\r\nimport { selectSessionID } from \"../redux/project-slice\";\r\n\r\n// eslint-disable-next-line react-hooks/rules-of-hooks\r\nexport const useUniqueProjectID = () => useSelector(selectSessionID);\r\n","import type { MutableRefObject } from 'react';\r\nimport { useCallback, useRef, useState } from 'react';\r\n\r\ninterface PopoverController {\r\n anchorRef: MutableRefObject;\r\n handleOpen: () => void;\r\n handleClose: () => void;\r\n handleToggle: () => void;\r\n open: boolean;\r\n}\r\n\r\nexport function usePopover(): PopoverController {\r\n const anchorRef = useRef(null);\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleOpen = useCallback(\r\n (): void => {\r\n setOpen(true);\r\n },\r\n []\r\n );\r\n\r\n const handleClose = useCallback(\r\n (): void => {\r\n setOpen(false);\r\n },\r\n []\r\n );\r\n\r\n const handleToggle = useCallback(\r\n (): void => {\r\n setOpen((prevState) => !prevState);\r\n },\r\n []\r\n );\r\n\r\n return {\r\n anchorRef,\r\n handleClose,\r\n handleOpen,\r\n handleToggle,\r\n open\r\n };\r\n}\r\n","import { useContext } from 'react';\r\nimport { AuthContext } from '../providers';\r\n\r\nexport const useAuth = () => useContext(AuthContext);\r\n","import { useCallback, useState } from 'react';\r\n\r\ninterface ContextStateController {\r\n open: boolean;\r\n data?: any;\r\n anchorPosition: {left: number, top: number};\r\n handleClose(): void;\r\n handleOpen(event, data?): void;\r\n}\r\n\r\ninterface AnchorPosition {\r\n left: number | null;\r\n top: number | null;\r\n}\r\n\r\ninterface ContextState {\r\n open: boolean;\r\n data: any;\r\n anchorPosition: AnchorPosition;\r\n}\r\n\r\nexport const useContextMenu = (): ContextStateController => {\r\n const [state, setState] = useState({\r\n open: false,\r\n data: {},\r\n anchorPosition: undefined\r\n });\r\n\r\n const handleOpen = useCallback((event, data = {}) => {\r\n event.preventDefault();\r\n\r\n const anchorPosition = {\r\n left: event.clientX + 10,\r\n top: event.clientY - 20\r\n };\r\n\r\n setState({\r\n open: true,\r\n data,\r\n anchorPosition\r\n });\r\n },[]);\r\n\r\n const handleClose = useCallback((): void => {\r\n setState({\r\n open: false,\r\n data: {},\r\n anchorPosition: undefined\r\n });\r\n }, []);\r\n\r\n return {\r\n open: state.open,\r\n data: state.data,\r\n anchorPosition: state.anchorPosition,\r\n handleClose,\r\n handleOpen\r\n };\r\n};\r\n","import { useContext } from 'react';\r\nimport { GlobalSettingsContext } from '../providers';\r\n\r\nexport const useGlobalSettings = () => useContext(GlobalSettingsContext);\r\n","import { useContext } from 'react';\r\nimport { WebSocketContext } from '../providers';\r\n\r\nexport const useWebSockets = () => useContext(WebSocketContext);\r\n","import { useContext } from 'react';\r\nimport { BookmarksContext } from '../providers';\r\n\r\nexport const useBookmarks = () => useContext(BookmarksContext);\r\n","import {createSlice, nanoid, PayloadAction} from '@reduxjs/toolkit';\r\nimport api from '../api';\r\nimport {\r\n e57FileFormat,\r\n encompassFileFormat,\r\n potreeFileFormat,\r\n lasFileFormat\r\n} from '../file-extensions';\r\nimport { TagSize } from '../types/tags';\r\nimport { ServerType } from '../types/web-sources';\r\nimport { SceneCameraState } from './camera-slice';\r\n\r\nexport interface PlanarConfig {\r\n width: number;\r\n height: number;\r\n cx: number;\r\n cy: number;\r\n fx: number;\r\n fy: number;\r\n}\r\n\r\nexport interface CameraData {\r\n id: string;\r\n x: number;\r\n y: number;\r\n z: number;\r\n roll: number;\r\n pitch: number;\r\n yaw: number;\r\n path: string;\r\n name: string;\r\n config?: PlanarConfig;\r\n}\r\n\r\nexport interface OrthoData {\r\n imageBounds: [];\r\n imageDataSplit: [];\r\n imageData: string;\r\n imageSize: [number, number];\r\n imageSizeOriginal: [number, number];\r\n imagePath: string;\r\n scaleX: number;\r\n scaleY: number;\r\n}\r\n\r\nexport interface TagItemData {\r\n id: string;\r\n name: string;\r\n comment: string;\r\n date: string;\r\n x: number;\r\n y: number;\r\n z?: number;\r\n sceneState: SceneCameraState;\r\n annotations: TagAnnotation[];\r\n}\r\n\r\nexport interface TagAnnotation {\r\n id: string;\r\n definition: object;\r\n}\r\n\r\nexport interface TagData {\r\n size: TagSize;\r\n texture: string;\r\n items: TagItemData[];\r\n}\r\n\r\nexport interface LineworkLayerData {\r\n id: string;\r\n name: string;\r\n visible: boolean;\r\n color: string;\r\n}\r\n\r\nexport interface WebMapData {\r\n url: string;\r\n type: ServerType;\r\n public: boolean;\r\n layers: WebMapLayerData[];\r\n}\r\n\r\nexport interface WebMapLayerData {\r\n id: string;\r\n name: string;\r\n visible: boolean;\r\n identifier: string;\r\n}\r\n\r\ninterface XMLAlignment {\r\n id: string;\r\n name: string;\r\n length: number;\r\n staStart: number;\r\n about: string;\r\n geometry: object[];\r\n}\r\n\r\nexport interface XMLData {\r\n info: object;\r\n units: object;\r\n alignments: XMLAlignment[];\r\n enu: boolean;\r\n}\r\n\r\ntype assetData = OrthoData | CameraData[] | TagData\r\n | LineworkLayerData[] | XMLData | WebMapData\r\n\r\n\r\nexport interface Asset {\r\n id: string;\r\n name: string;\r\n path: string;\r\n saved: boolean;\r\n cloud: boolean;\r\n date: string;\r\n visible: boolean;\r\n folderID: string;\r\n type: AssetType;\r\n data: assetData;\r\n}\r\n\r\nexport interface WebSourceAsset extends Asset {\r\n type: AssetType.Webmap;\r\n data: WebMapData;\r\n}\r\n\r\nexport interface AssetInfo {\r\n name: string;\r\n path: string;\r\n folderID: string;\r\n type: AssetType;\r\n data?: assetData;\r\n}\r\n\r\nexport enum AssetType {\r\n LAS = 0,\r\n Encompass = 1,\r\n Panoramic = 2,\r\n Unknown = 3,\r\n OrthoMosaic = 4,\r\n Planar = 5,\r\n E57Points = 6,\r\n Tag = 7,\r\n IFC = 8,\r\n Potree = 9,\r\n SHP = 10,\r\n DXF = 11,\r\n LandXML = 12,\r\n Webmap = 13\r\n}\r\n\r\nexport const pointCloudType = (ext: string): AssetType => {\r\n if (ext === lasFileFormat) {\r\n return AssetType.LAS;\r\n } else if (ext === encompassFileFormat) {\r\n return AssetType.Encompass;\r\n } else if (ext === e57FileFormat) {\r\n return AssetType.E57Points;\r\n } else if (ext === potreeFileFormat) {\r\n return AssetType.Potree;\r\n } else {\r\n return AssetType.Unknown;\r\n }\r\n};\r\n\r\nconst getByID = (state, assetID: string) => {\r\n return state.find(asset => asset.id === assetID);\r\n};\r\n\r\nconst getAssetByTagID = (state, tagID: string): Asset => {\r\n for (let asset of state) {\r\n if (asset.type !== AssetType.Tag) continue;\r\n\r\n const tags = (asset.data as TagData).items;\r\n const tagIDs = tags.map(x => x.id);\r\n if (tagIDs.includes(tagID)) return asset;\r\n }\r\n};\r\n\r\nconst getAssetByWebMapLayerID = (state, layerID: string): Asset => {\r\n for (let asset of state) {\r\n if (asset.type !== AssetType.Webmap) continue;\r\n\r\n const layers = (asset.data as WebMapData).layers;\r\n const layerIDs = layers.map(x => x.id);\r\n if (layerIDs.includes(layerID)) return asset;\r\n }\r\n};\r\n\r\nconst getAssetByModelLayerID = (state, layerID: string): Asset => {\r\n for (let asset of state) {\r\n const isModelWithLayers = (asset.type === AssetType.DXF)\r\n || (asset.type === AssetType.SHP);\r\n if (!isModelWithLayers) continue;\r\n\r\n const layers = asset.data as LineworkLayerData[];\r\n const layerIDs = layers.map(x => x.id);\r\n if (layerIDs.includes(layerID)) return asset;\r\n }\r\n};\r\n\r\nconst getAssetPayload = (item: AssetInfo): Asset => {\r\n return {\r\n id: nanoid(),\r\n name: item.name,\r\n path: item.path,\r\n date: new Date().toISOString(),\r\n type: item.type,\r\n folderID: item.folderID,\r\n visible: true,\r\n saved: false,\r\n cloud: false,\r\n data: item.data\r\n } as Asset;\r\n};\r\n\r\nexport const assetsSlice = createSlice({\r\n name: 'assets',\r\n initialState: [] as Asset[],\r\n reducers: {\r\n addAsset: (state, action: PayloadAction) => {\r\n const asset = getAssetPayload(action.payload);\r\n state.push(asset);\r\n },\r\n addAssets: (state, action: PayloadAction) => {\r\n action.payload.forEach(payload => {\r\n const asset = getAssetPayload(payload);\r\n state.push(asset);\r\n });\r\n },\r\n updateAsset: (state, action: PayloadAction<{\r\n assetID: string,\r\n folderID?: string,\r\n visible?: boolean,\r\n name?: string,\r\n size?: TagSize,\r\n texture?: string,\r\n enu?: boolean\r\n }>) => {\r\n const {assetID, ...updates} = action.payload;\r\n\r\n const asset = getByID(state, assetID);\r\n if (!asset) return;\r\n\r\n for (let key in updates) {\r\n // Generic asset values\r\n if (asset.hasOwnProperty(key)) {\r\n asset[key] = updates[key];\r\n };\r\n\r\n // Data specific values\r\n if (asset.data && asset.data.hasOwnProperty(key)) {\r\n asset.data[key] = updates[key];\r\n };\r\n };\r\n },\r\n deleteAsset: (state, action: PayloadAction) => {\r\n return state.filter(asset => asset.id !== action.payload);\r\n },\r\n\r\n toggleFolderVisibility: (state, action) => {\r\n const {folderID, visible} = action.payload;\r\n const assets = state.filter(asset => asset.folderID === folderID);\r\n\r\n assets.forEach(asset => {\r\n asset.visible = visible;\r\n });\r\n },\r\n setVisibleAssets: (state, action) => {\r\n const visibleAssets = action.payload;\r\n state.forEach(asset => {\r\n asset.visible = visibleAssets.includes(asset.id);\r\n });\r\n },\r\n setVisibleFolder: (state, action) => {\r\n const folderID = action.payload;\r\n state.forEach(asset => {\r\n asset.visible = asset.folderID === folderID;\r\n });\r\n },\r\n setSavedState: (state, action) => {\r\n state.forEach(asset => {\r\n asset.saved = true;\r\n });\r\n },\r\n\r\n /** Model files */\r\n updateModelLayer: (state, action: PayloadAction<{\r\n layerID: string,\r\n visible?: boolean,\r\n color?: string\r\n }>) => {\r\n const {layerID, color, visible} = action.payload;\r\n const asset = getAssetByModelLayerID(state, layerID);\r\n if (!asset) return;\r\n\r\n const layers = asset.data as LineworkLayerData[];\r\n const layer = layers.find(x => x.id === layerID);\r\n if (!layer) return;\r\n\r\n if (\"visible\" in action.payload) {\r\n layer.visible = visible;\r\n }\r\n\r\n if (\"color\" in action.payload) {\r\n layer.color = color;\r\n }\r\n },\r\n\r\n /** Web sources */\r\n updateWebMapLayer: (state, action: PayloadAction<{\r\n layerID: string,\r\n visible: boolean\r\n }>) => {\r\n const {layerID, visible} = action.payload;\r\n const asset = getAssetByWebMapLayerID(state, layerID);\r\n if (!asset) return;\r\n\r\n const layers = (asset.data as WebMapData).layers;\r\n const layer = layers.find(x => x.id === layerID);\r\n if (!layer) return;\r\n\r\n layer.visible = visible;\r\n },\r\n\r\n /** Tag Items */\r\n createTags: (state, action: PayloadAction<{\r\n assetID: string;\r\n tags: TagItemData[];\r\n }>) => {\r\n const {assetID, tags} = action.payload;\r\n\r\n const asset = getByID(state, assetID);\r\n if (!asset) return;\r\n\r\n createTagsHelper(asset, tags);\r\n\r\n // Update cloud site\r\n api.tags.create(assetID, tags);\r\n },\r\n deleteTag: (state, action: PayloadAction) => {\r\n const tagID = action.payload;\r\n const asset = getAssetByTagID(state, tagID);\r\n if (!asset) return;\r\n\r\n deleteTagHelper(asset, tagID);\r\n\r\n // Update cloud site\r\n api.tags.delete(tagID);\r\n },\r\n updateTag: (state, action: PayloadAction<{\r\n tagID: string,\r\n name?: string,\r\n comment?: string,\r\n assetID?: string,\r\n annotations?: TagAnnotation[],\r\n sceneState?: SceneCameraState\r\n }>) => {\r\n const {tagID, ...updates} = action.payload;\r\n const asset = getAssetByTagID(state, tagID);\r\n if (!asset) return;\r\n\r\n const items = (asset.data as TagData).items;\r\n const tag = items.find(tag => tag.id === tagID);\r\n if (!tag) return;\r\n\r\n // Tags pulled from online might be missing certain attributes\r\n if (!tag.hasOwnProperty(\"annotations\")) {\r\n tag.annotations = [];\r\n }\r\n\r\n for (let key in updates) {\r\n if (tag.hasOwnProperty(key)) {\r\n tag[key] = updates[key];\r\n };\r\n };\r\n\r\n // Specific case for asset ID, since we store our tags in a strange way\r\n if (\"assetID\" in updates) {\r\n const newAssetID = updates.assetID;\r\n const newAsset = state.find(asset => asset.id === newAssetID);\r\n deleteTagHelper(asset, tagID);\r\n createTagsHelper(newAsset, [tag]);\r\n }\r\n\r\n // Update modified date\r\n tag.date = new Date().toISOString();\r\n\r\n // Update cloud site\r\n api.tags.update(tagID, {...updates, date: tag.date});\r\n },\r\n\r\n /** Websocket specific */\r\n wsCreateAsset: (state, action: PayloadAction) => {\r\n const asset = action.payload;\r\n if (getByID(state, asset.id)) return;\r\n\r\n state.push(asset);\r\n },\r\n wsUpdateAsset: (state, action: PayloadAction) => {\r\n const {id, ...updates} = action.payload;\r\n let asset = getByID(state, id);\r\n if (!asset) return;\r\n\r\n for (let key in updates) {\r\n if (asset.hasOwnProperty(key)) {\r\n asset[key] = updates[key];\r\n };\r\n };\r\n },\r\n wsDeleteAsset: (state, action: PayloadAction) => {\r\n const assetID = action.payload;\r\n return state.filter(asset => asset.id !== assetID);\r\n },\r\n }\r\n});\r\n\r\nconst deleteTagHelper = (asset: Asset, tagID: string) => {\r\n const items = (asset.data as TagData).items\r\n .filter(item => item.id !== tagID);\r\n\r\n asset.data = {\r\n ...asset.data,\r\n items\r\n } as TagData;\r\n};\r\n\r\nconst createTagsHelper = (asset: Asset, tags: TagItemData[]) => {\r\n const items = [...(asset.data as TagData).items, ...tags];\r\n\r\n asset.data = {\r\n ...asset.data,\r\n items\r\n } as TagData;\r\n};\r\n\r\n/** Create new asset */\r\nexport const createAsset = (options: {\r\n name: string;\r\n folderID: string;\r\n path?: string;\r\n type: AssetType;\r\n texture: string;\r\n size: TagSize;\r\n}) => {\r\n const {name, folderID, type, path=null} = options;\r\n\r\n return async (dispatch, getState) => {\r\n\r\n let assetData;\r\n\r\n if (type === AssetType.Tag) {\r\n assetData = {\r\n size: options.size,\r\n texture: options.texture,\r\n items: []\r\n } as TagData;\r\n }\r\n\r\n dispatch(assetsSlice.actions.addAsset({\r\n folderID,\r\n name,\r\n path,\r\n type,\r\n data: assetData\r\n }));\r\n\r\n const assets = getState().assets as Asset[];\r\n const [asset] = assets.slice(-1);\r\n\r\n if (type === AssetType.Tag) {\r\n await api.tags.createCollection(folderID, asset);\r\n }\r\n\r\n return asset;\r\n };\r\n};\r\n\r\n/** Delete asset */\r\nexport const deleteAsset = (assetID: string) => {\r\n return (dispatch, getState) => {\r\n const assets = getState().assets as Asset[];\r\n const asset = assets.find(asset => asset.id === assetID);\r\n if (!asset) return;\r\n\r\n dispatch(assetsSlice.actions.deleteAsset(assetID));\r\n\r\n if (asset.type === AssetType.Tag) {\r\n api.tags.deleteCollection(assetID);\r\n }\r\n };\r\n};\r\n\r\n/** Update asset values */\r\nexport const updateAsset = (options: {\r\n assetID: string,\r\n name?: string,\r\n visible?: boolean,\r\n folderID?: string,\r\n texture?: string,\r\n size?: TagSize,\r\n enu?: boolean\r\n}) => {\r\n const {assetID, ...updates} = options;\r\n\r\n return (dispatch, getState) => {\r\n const assets = getState().assets as Asset[];\r\n const asset = assets.find(asset => asset.id === assetID);\r\n if (!asset) return;\r\n\r\n dispatch(assetsSlice.actions.updateAsset(options));\r\n\r\n if (asset.type === AssetType.Tag) {\r\n api.tags.updateCollection(assetID, updates);\r\n }\r\n };\r\n};\r\n\r\nexport default assetsSlice.reducer;\r\n\r\nexport const {\r\n wsCreateAsset,\r\n wsUpdateAsset,\r\n wsDeleteAsset,\r\n addAsset,\r\n addAssets,\r\n createTags,\r\n setVisibleAssets,\r\n updateWebMapLayer,\r\n updateModelLayer,\r\n toggleFolderVisibility,\r\n updateTag,\r\n setVisibleFolder,\r\n setSavedState,\r\n deleteTag\r\n} = assetsSlice.actions;\r\n\r\nexport const selectAllAssets = state => {\r\n return state.assets as Asset[];\r\n};\r\n\r\nexport const getVisibleAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => asset.visible);\r\n};\r\n\r\nexport const getModelAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return (asset.type === AssetType.IFC)\r\n || (asset.type === AssetType.SHP)\r\n || (asset.type === AssetType.DXF);\r\n });\r\n};\r\n\r\nexport const getTagAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.Tag;\r\n });\r\n};\r\n\r\nexport const getPointCloudAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return (asset.type === AssetType.Encompass)\r\n || (asset.type === AssetType.LAS)\r\n || (asset.type === AssetType.E57Points)\r\n || (asset.type === AssetType.Potree);\r\n });\r\n};\r\n\r\nexport const getCameraFileAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.Panoramic\r\n || asset.type === AssetType.Planar;\r\n });\r\n};\r\n\r\nexport const getOrthoAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.OrthoMosaic;\r\n });\r\n};\r\n\r\nexport const getLandXMLAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.LandXML;\r\n });\r\n};\r\n\r\nexport const getWebMapAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.Webmap;\r\n });\r\n};\r\n\r\n","import { useCallback, useState } from \"react\";\r\nimport {\r\n EnhancedTableColumn,\r\n EnhancedTableRow,\r\n EnhancedTableState,\r\n TableSortDir\r\n} from \"../types/enhanced-table\";\r\nimport { debounce } from 'throttle-debounce';\r\n\r\ninterface TableStateProps {\r\n defaultSort?: string;\r\n pageSize?: number;\r\n}\r\n\r\nexport const useTableState = (props: TableStateProps = {}) : EnhancedTableState => {\r\n const {defaultSort, pageSize = 10} = props;\r\n\r\n const [query, setQuery] = useState(\"\");\r\n const [sortDir, setSortDir] = useState('asc');\r\n const [sortBy, setSortBy] = useState(defaultSort);\r\n const [pageNumber, setPageNumber] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(pageSize);\r\n\r\n const reset = () => {\r\n setQuery(\"\");\r\n setSortDir(\"asc\");\r\n setSortBy(defaultSort);\r\n setPageNumber(0);\r\n setRowsPerPage(pageSize);\r\n };\r\n\r\n const descendingComparator = (a, b, sortBy) => {\r\n let compA = a[sortBy];\r\n let compB = b[sortBy];\r\n\r\n if (typeof compA === \"string\") {\r\n compA = compA.toLowerCase();\r\n }\r\n\r\n if (typeof compB === \"string\") {\r\n compB = compB.toLowerCase();\r\n }\r\n\r\n if (compB < compA) {\r\n return -1;\r\n } else if (compB > compA) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n const getComparator = (sortDir, sortBy) => {\r\n return sortDir === 'desc'\r\n ? (a, b) => descendingComparator(a, b, sortBy)\r\n : (a, b) => -descendingComparator(a, b, sortBy);\r\n };\r\n\r\n const handlePageNumberChange = (event, value) => {\r\n setPageNumber(value);\r\n };\r\n\r\n const handleRowsPerPageChange = (event) => {\r\n const value = parseInt(event.target.value, 10);\r\n setRowsPerPage(value);\r\n setPageNumber(0);\r\n };\r\n\r\n const handleSearchChange = useCallback(debounce(200, (value) => {\r\n setQuery(value);\r\n setPageNumber(0);\r\n }), []);\r\n\r\n const handleRequestSort = (event, value) => {\r\n const ascending = sortBy === value && sortDir === 'asc';\r\n setSortDir(ascending ? 'desc' : 'asc');\r\n setSortBy(value);\r\n };\r\n\r\n const handleSearch = (columns: EnhancedTableColumn[], rows: EnhancedTableRow[]) => {\r\n if (!query) return rows;\r\n\r\n const queryParts = query\r\n .split(\" \")\r\n .map(x => x.toLowerCase());\r\n\r\n const searchableColumns = columns\r\n .filter(column => column.searchable)\r\n .map(column => column.id);\r\n\r\n return rows.filter(row => {\r\n let valid = false;\r\n\r\n searchableColumns.forEach(column => {\r\n if (valid) return;\r\n\r\n const parts = row[column]\r\n .split(\" \")\r\n .map(x => x.toLowerCase());\r\n\r\n valid = valid || queryParts.filter(text => {\r\n return parts.filter(x => x.includes(text)).length > 0;\r\n }).length === queryParts.length;\r\n });\r\n\r\n return valid;\r\n });\r\n };\r\n\r\n const handleSort = (columns: EnhancedTableColumn[], rows: EnhancedTableRow[]) => {\r\n const column = columns.find(column => column.id === sortBy);\r\n if (!column) return rows;\r\n\r\n const comparator = column.sortBy\r\n ? getComparator(sortDir, column.sortBy)\r\n : getComparator(sortDir, sortBy);\r\n\r\n rows.sort(comparator);\r\n return rows;\r\n };\r\n\r\n const handlePages = (rows: EnhancedTableRow[]) => {\r\n return rows.slice(\r\n pageNumber * rowsPerPage,\r\n pageNumber * rowsPerPage + rowsPerPage\r\n );\r\n };\r\n\r\n return {\r\n query,\r\n rowsPerPage,\r\n pageNumber,\r\n sortDir,\r\n sortBy,\r\n handlePageNumberChange,\r\n handleRowsPerPageChange,\r\n handleSearchChange,\r\n handleRequestSort,\r\n handleSearch,\r\n handleSort,\r\n handlePages,\r\n reset\r\n };\r\n};","import proj4 from \"proj4\";\r\nimport nudged from \"nudged\";\r\nimport {transform} from 'ol/proj';\r\nimport {Projection, Transform} from '../../redux/projections-slice';\r\nimport PCA from 'pca-js';\r\nimport { executeWithoutLogging } from \"./utilities\";\r\nimport {\r\n Euler,\r\n MathUtils,\r\n Matrix4,\r\n Quaternion,\r\n Vector3\r\n} from 'three';\r\nimport { AsyncWorkerPool } from \"./worker-pool\";\r\n\r\nconst transformCache = {};\r\n\r\nconst unitsToValue = {\r\n \"m\": 1.0,\r\n \"ft\": 0.3048,\r\n \"us-ft\": 1200.0 / 3937.0\r\n};\r\n\r\nexport const latitudeLongitude = {\r\n type: \"proj4\",\r\n name: \"latlong\",\r\n string: \"+proj=longlat +ellps=WGS84 +datum=NAD83 +no_defs\"\r\n} as Projection;\r\n\r\nexport const webMercator = {\r\n type: \"proj4\",\r\n name: \"web mercator\",\r\n string: \"+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\r\n} as Projection;\r\n\r\nconst workerPool = new AsyncWorkerPool(\"reproject-points.js\");\r\n\r\n/** @private */\r\nconst verifyProjection = (projection: Projection) => {\r\n const modified = {...projection};\r\n\r\n if (modified.type === \"proj4\") {\r\n modified.string = verifyProjectionString(modified);\r\n }\r\n\r\n modified.transform = verifyTransformObject(modified);\r\n\r\n return modified;\r\n};\r\n\r\ninterface TransformFunction {\r\n forward(coords: number[]): number[]\r\n inverse(coords: number[]): number[]\r\n}\r\n\r\n/** @private */\r\nconst getTransform = (projectionFrom: Projection, projectionTo: Projection) => {\r\n const transformKey = `${projectionFrom.string}-${projectionTo.string}`;\r\n\r\n let transform: TransformFunction;\r\n let heightScale: number;\r\n\r\n if (transformKey in transformCache) {\r\n transform = transformCache[transformKey].transform;\r\n heightScale = transformCache[transformKey].heightScale;\r\n } else {\r\n transform = proj4(projectionFrom.string, projectionTo.string);\r\n\r\n const projToMeters1 = projectionToMeters(projectionFrom);\r\n const projToMeters2 = projectionToMeters(projectionTo);\r\n heightScale = projToMeters2 / projToMeters1;\r\n\r\n transformCache[transformKey] = {transform, heightScale};\r\n }\r\n\r\n return {transform, heightScale};\r\n};\r\n\r\n/** Calculate transform paramters given local and transformed points */\r\nexport const estimateTransform = (estimator: string, inputValues, outputValues) => {\r\n const domain = inputValues.map(value => {\r\n return {x: value[0], y: value[1]};\r\n });\r\n\r\n const range = outputValues.map(value => {\r\n return {x: value[0], y: value[1]};\r\n });\r\n\r\n if (!estimator.includes(\"T\")) {\r\n console.error(\"Translation is required for estimator\");\r\n\r\n return {\r\n transform: null,\r\n errors: null\r\n };\r\n }\r\n\r\n const estimate = nudged.estimate({estimator, domain, range});\r\n const scale = nudged.transform.getScale(estimate);\r\n const rotation = nudged.transform.getRotation(estimate);\r\n const translation = nudged.transform.getTranslation(estimate);\r\n const transformed = nudged.point.transformMany(domain, estimate);\r\n\r\n // Calculate per-point difference\r\n const errors = [];\r\n for (let i=0; i => {\r\n return new Promise(async (resolve, reject) => {\r\n const values = {\r\n positions: points,\r\n projectionFrom,\r\n projectionTo\r\n };\r\n\r\n const {success, response} = await workerPool.postMessage(values);\r\n\r\n if (success) {\r\n resolve(response);\r\n } else {\r\n console.error(response);\r\n reject(response);\r\n }\r\n });\r\n};\r\n\r\n/** @private Reproject a single point. Internal use only */\r\nconst reprojectPoint = (position, projectionFrom: Projection, projectionTo: Projection): Vector3 => {\r\n position = position.isVector3\r\n ? position.toArray()\r\n : [...position];\r\n\r\n const rotateAxis = new Vector3(0, 0, 1);\r\n\r\n // Apply initial transformation\r\n if (projectionFrom.transform) {\r\n const {translation, rotation, scale, origin} = projectionFrom.transform;\r\n const angle = MathUtils.degToRad(rotation);\r\n\r\n position = new Vector3(...position)\r\n .sub(new Vector3(...translation))\r\n .applyAxisAngle(rotateAxis, -1 * angle)\r\n .divide(new Vector3(scale, scale, 1.0))\r\n .add(new Vector3(...origin))\r\n .toArray();\r\n }\r\n\r\n // Apply point reprojection\r\n if (projectionFrom.string !== projectionTo.string) {\r\n const {transform, heightScale} = getTransform(projectionFrom, projectionTo);\r\n position = transform.forward(position);\r\n\r\n // Height scaling is not applied by library\r\n position[2] /= heightScale;\r\n }\r\n\r\n // Apply secondary transformation\r\n if (projectionTo.transform) {\r\n const {translation, rotation, scale, origin} = projectionTo.transform;\r\n const angle = MathUtils.degToRad(rotation);\r\n\r\n position = new Vector3(...position)\r\n .sub(new Vector3(...origin))\r\n .multiply(new Vector3(scale, scale, 1.0))\r\n .applyAxisAngle(rotateAxis, angle)\r\n .add(new Vector3(...translation))\r\n .toArray();\r\n }\r\n\r\n return new Vector3(...position);\r\n};\r\n\r\nexport const closestUtmZone = (lonlat: Vector3, units: string) => {\r\n const utmZone = Math.ceil((180 + lonlat.x) / 6);\r\n\r\n const projection = {\r\n type: \"proj4\",\r\n name: `UTM ${utmZone}N (${units})`,\r\n string: `+proj=utm +zone=${utmZone} +ellps=WGS84 +datum=WGS84 +units=${units}`\r\n } as Projection;\r\n\r\n return {projection, utmZone};\r\n};\r\n\r\nclass ScenePointConverter {\r\n protected _sceneShift;\r\n protected _sceneScale;\r\n protected _dataProjection: Projection;\r\n protected _viewProjection: Projection;\r\n public dataToMeters;\r\n public dataProjectionUnits;\r\n public viewProjectionUnits;\r\n private isLonLatProject;\r\n public initialized = false;\r\n\r\n get dataProjection() {\r\n return this._dataProjection;\r\n }\r\n\r\n get viewProjection() {\r\n return this._viewProjection;\r\n }\r\n\r\n get dataProjectionName() {\r\n return this.dataProjection.name;\r\n }\r\n\r\n get viewProjectionName() {\r\n return this.viewProjection.name;\r\n }\r\n\r\n get sceneOffset() {\r\n return this._sceneShift;\r\n }\r\n\r\n get sceneScale() {\r\n return this._sceneScale;\r\n }\r\n\r\n engineStyleProjection(projection: Projection) {\r\n const proj4String = projection.string;\r\n const hasTransform = projection.transform ? true : false;\r\n\r\n let results;\r\n if (hasTransform === false) {\r\n // Standard projection\r\n results = proj4String;\r\n } else {\r\n // Projection with transform (engine style projections are saved differently)\r\n const data = projection.transform;\r\n const origin = data.origin;\r\n const translation = data.translation;\r\n const rotation = data.rotation;\r\n const scale = data.scale;\r\n\r\n const transform = {\r\n origin_east: origin[0],\r\n origin_north: origin[1],\r\n origin_elevation: origin[2],\r\n translation_east: translation[0],\r\n translation_north: translation[1],\r\n translation_elevation: translation[2],\r\n rotation: rotation,\r\n scale_factor_h: scale,\r\n scale_factor_v: 1.0,\r\n };\r\n\r\n results = [proj4String, transform];\r\n }\r\n\r\n const projectionString = JSON.stringify(results);\r\n return projectionString;\r\n }\r\n\r\n isDataProjection(name) {\r\n if (!this._dataProjection) return false;\r\n return (this._dataProjection.name === name) ||\r\n (this._viewProjection.name === name);\r\n }\r\n\r\n setDataProjection(projection: Projection) {\r\n this._dataProjection = verifyProjection(projection);\r\n this.dataToMeters = projectionToMeters(this._dataProjection);\r\n this.dataProjectionUnits = projectionToUnits(this._dataProjection);\r\n this.isLonLatProject = isLonLatProjection(this._dataProjection);\r\n this.resetSceneShift();\r\n }\r\n\r\n setViewProjection(projection: Projection) {\r\n this._viewProjection = verifyProjection(projection);\r\n this.viewProjectionUnits = projectionToUnits(this._viewProjection);\r\n }\r\n\r\n resetSceneShift() {\r\n this.initialized = false;\r\n this._sceneShift = null;\r\n this._sceneScale = new Vector3(1.0, 1.0, 1.0);\r\n }\r\n\r\n checkForOffset(offset: Vector3) {\r\n if (this._sceneShift) return;\r\n\r\n this.initialized = true;\r\n this._sceneShift = offset.clone();\r\n\r\n if (this.isLonLatProject) {\r\n // Create an approximate latlon --> meters mapping based on the\r\n // offset point. Be aware that the accuracy is worse the further\r\n // away from the central point that you go\r\n\r\n let dx = haversineDistance(\r\n new Vector3(offset.x, offset.y, 0),\r\n new Vector3(offset.x + 1, offset.y, 0)\r\n );\r\n\r\n let dy = haversineDistance(\r\n new Vector3(offset.x, offset.y, 0),\r\n new Vector3(offset.x, offset.y + 1, 0)\r\n );\r\n\r\n this._sceneScale = new Vector3(dx, dy, 1.0);\r\n } else {\r\n this._sceneScale = new Vector3(1.0, 1.0, 1.0);\r\n }\r\n }\r\n\r\n offsetToScene(offset: Vector3) {\r\n this.checkForOffset(offset);\r\n let difference = new Vector3()\r\n .add(offset)\r\n .sub(this._sceneShift);\r\n\r\n return difference;\r\n }\r\n\r\n /** @private Convert from data projection to lonlat */\r\n _dataToLonLat(value) {\r\n return new ProjectedCoordinate(value, this._dataProjection).toLonLat();\r\n }\r\n\r\n /** @private Convert from data projection to aerial coordinates */\r\n _dataToAerial(value) {\r\n const lonLat = this._dataToLonLat(value);\r\n const mercator = reprojectPoint(lonLat, latitudeLongitude, webMercator);\r\n return mercator.toArray().slice(0,2);\r\n }\r\n\r\n /** @private Convert from scene coordinates (meters) to data projection */\r\n _sceneToData(value) {\r\n let position = new Vector3().copy(value);\r\n\r\n if (this.isLonLatProject) {\r\n position.divide(this._sceneScale);\r\n }\r\n\r\n position.add(this._sceneShift)\r\n .divideScalar(this.dataToMeters);\r\n\r\n return position;\r\n }\r\n\r\n /** @private Convert from data projection to scene coordinates (meters) */\r\n _dataToScene(value) {\r\n const position = new Vector3().copy(value)\r\n .multiplyScalar(this.dataToMeters);\r\n\r\n this.checkForOffset(position);\r\n position.sub(this._sceneShift);\r\n\r\n if (this.isLonLatProject) {\r\n position.multiply(this._sceneScale);\r\n }\r\n\r\n return new SceneCoordinate(position);\r\n }\r\n\r\n /** @private Convert from scene coordinates (meters) to web mercator */\r\n _sceneToAerial(value) {\r\n let dataProjection = this._sceneToData(value);\r\n return this._dataToAerial(dataProjection);\r\n }\r\n\r\n /** @private Convert from scene coordinates (meters) to lonlat */\r\n _sceneToLonLat(value) {\r\n let dataProjection = this._sceneToData(value);\r\n return this._dataToLonLat(dataProjection);\r\n }\r\n}\r\n\r\n/** Base Coordinate class is Vector3 with a few extras */\r\nclass Coordinate extends Vector3 {\r\n constructor(value = null) {\r\n let x = 0;\r\n let y = 0;\r\n let z = 0;\r\n\r\n if (value !== null) {\r\n if (value.isVector3 || (value instanceof Coordinate)) {\r\n x = value.x;\r\n y = value.y;\r\n z = value.z;\r\n } else {\r\n x = value[0];\r\n y = value[1];\r\n z = (value.length === 3) ? value[2] : 0;\r\n }\r\n }\r\n\r\n super(x,y,z);\r\n }\r\n\r\n get vector() {\r\n return new Vector3(this.x, this.y, this.z);\r\n }\r\n\r\n clone() {\r\n return new Vector3().copy(this);\r\n }\r\n}\r\n\r\n/** Coordinate in scene coordinates */\r\nexport class SceneCoordinate extends Coordinate {\r\n constructor(value = null) {\r\n super(value);\r\n }\r\n\r\n toAerial() {\r\n return LocalScene._sceneToAerial(this);\r\n }\r\n\r\n toLonLat() {\r\n return LocalScene._sceneToLonLat(this);\r\n }\r\n\r\n toGeocentric() {\r\n const lonlat = LocalScene._sceneToLonLat(this);\r\n return new LonLatCoordinate(lonlat).toGeocentric();\r\n }\r\n\r\n toDataProjection() {\r\n const value = LocalScene._sceneToData(this);\r\n return new DataProjectionCoordinate(value);\r\n }\r\n\r\n toViewProjection() {\r\n return this.toDataProjection().toViewProjection();\r\n }\r\n}\r\n\r\n/** Coordinate in geocentric */\r\nexport class GeocentricCoordinate extends Coordinate {\r\n constructor(value = null) {\r\n super(value);\r\n }\r\n\r\n toDataProjection() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return new DataProjectionCoordinate(value);\r\n }\r\n\r\n toViewProjection() {\r\n const value = this.toProjection(LocalScene.viewProjection);\r\n return new ViewProjectionCoordinate(value);\r\n }\r\n\r\n toScene() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return LocalScene._dataToScene(value);\r\n }\r\n\r\n toLonLat() {\r\n let x = this.x * 1.0;\r\n let y = this.y * 1.0;\r\n let z = this.z * 1.0;\r\n\r\n let a = 6378137; // wgs84\r\n let f = 1 / 298.257223563; // wgs84\r\n\r\n let b = a * (1 - f);\r\n let e = Math.sqrt((Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2));\r\n b = Math.sqrt(Math.pow(a, 2) * (1 - Math.pow(e, 2)));\r\n\r\n let ep = Math.sqrt((Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(b, 2));\r\n let p = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n let th = Math.atan2(a * z, b * p);\r\n let lon = Math.atan2(y, x);\r\n let lat = Math.atan2((z + Math.pow(ep, 2) * b * Math.pow(Math.sin(th), 3)),\r\n (p - Math.pow(e, 2) * a * Math.pow(Math.cos(th), 3)));\r\n let N = a / (Math.sqrt(1 - Math.pow(e, 2) * Math.pow(Math.sin(lat), 2)));\r\n let alt = p / Math.cos(lat) - N;\r\n lon = lon % (2 * Math.PI);\r\n\r\n if (Math.abs(x) < 1.0 && Math.abs(y) < 1.0) {\r\n alt = Math.abs(z) - b;\r\n }\r\n\r\n lon = lon * 180.0 / Math.PI;\r\n lat = lat * 180.0 / Math.PI;\r\n\r\n return new Vector3(lon, lat, alt);\r\n }\r\n\r\n toProjection(projection: Projection) {\r\n const lonlat = this.toLonLat();\r\n const value = reprojectPoint(lonlat, latitudeLongitude, projection);\r\n return new ProjectedCoordinate(value, projection);\r\n }\r\n}\r\n\r\n/** Coordinate in generic projection */\r\nexport class ProjectedCoordinate extends Coordinate {\r\n public projection: Projection;\r\n\r\n constructor(value, projection) {\r\n super(value);\r\n this.projection = projection;\r\n }\r\n\r\n toGeocentric() {\r\n const lonlat = this.toLonLat();\r\n return new LonLatCoordinate(lonlat).toGeocentric();\r\n }\r\n\r\n toLonLat() {\r\n return this.toProjection(latitudeLongitude);\r\n }\r\n\r\n toAerial() {\r\n const mercator = this.toProjection(webMercator);\r\n return mercator.toArray().slice(0,2);\r\n }\r\n\r\n toScene() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return LocalScene._dataToScene(value);\r\n }\r\n\r\n toProjection(projection) {\r\n if (this.projection === projection) return this;\r\n\r\n const value = reprojectPoint(this, this.projection, projection);\r\n return new ProjectedCoordinate(value, projection);\r\n }\r\n\r\n toViewProjection() {\r\n const value = this.toProjection(LocalScene.viewProjection);\r\n return new ViewProjectionCoordinate(value);\r\n }\r\n\r\n toDataProjection() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return new DataProjectionCoordinate(value);\r\n }\r\n\r\n distanceTo(value) {\r\n if (value instanceof ProjectedCoordinate) {\r\n let isLonLat1 = isLonLatProjection(this.projection);\r\n let isLonLat2 = isLonLatProjection(value.projection);\r\n if (isLonLat1 && isLonLat2) {\r\n return haversineDistance(this, value);\r\n }\r\n\r\n return this.vector.distanceTo(value.vector);\r\n }\r\n\r\n return this.vector.distanceTo(value);\r\n }\r\n}\r\n\r\n/** Coordinate in web mercator projection */\r\nexport class AerialCoordinate extends ProjectedCoordinate {\r\n constructor(value) {\r\n super(value, webMercator);\r\n }\r\n}\r\n\r\n/** Coordinate in latitude longitude */\r\nexport class LonLatCoordinate extends Coordinate {\r\n constructor(value) {\r\n super(value);\r\n }\r\n\r\n toGeocentric() {\r\n let lon = this.x * Math.PI / 180.0;\r\n let lat = this.y * Math.PI / 180.0;\r\n let alt = this.z;\r\n\r\n let a = 6378137;\r\n let f = 1 / 298.257223563;\r\n\r\n let b = a * (1 - f);\r\n let e = Math.sqrt((Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2));\r\n\r\n let N = a / Math.sqrt(1 - Math.pow(e, 2) * Math.pow(Math.sin(lat), 2));\r\n let x = (N + alt) * Math.cos(lat) * Math.cos(lon);\r\n let y = (N + alt) * Math.cos(lat) * Math.sin(lon);\r\n let z = (N * (Math.pow(b, 2) / Math.pow(a, 2)) + alt) * Math.sin(lat);\r\n\r\n return new GeocentricCoordinate([x, y, z]);\r\n }\r\n\r\n toProjection(projection) {\r\n let ecef = this.toGeocentric();\r\n return ecef.toProjection(projection);\r\n }\r\n\r\n toDataProjection() {\r\n let ecef = this.toGeocentric();\r\n return ecef.toDataProjection();\r\n }\r\n}\r\n\r\n/** Coordinate in project data projection */\r\nexport class DataProjectionCoordinate extends ProjectedCoordinate {\r\n constructor(value = null) {\r\n super(value, LocalScene.dataProjection);\r\n }\r\n}\r\n\r\n/** Coordinate in project view projection */\r\nexport class ViewProjectionCoordinate extends ProjectedCoordinate {\r\n constructor(value = null) {\r\n super(value, LocalScene.viewProjection);\r\n }\r\n}\r\n\r\n/** Spherical position, with theta/phi in degrees */\r\nexport class SphericalPosition {\r\n public radius;\r\n private _theta;\r\n private _phi;\r\n private limits;\r\n\r\n constructor() {\r\n this.radius = 0;\r\n this._theta = 0;\r\n this._phi = 0;\r\n this.limits = [0.01, 179.9];\r\n }\r\n\r\n get theta() {\r\n return (this._theta + 360) % 360;\r\n }\r\n\r\n get phi() {\r\n return (this._phi + 360) % 360;\r\n }\r\n\r\n round(value, precision) {\r\n let divisor = Math.pow(10, precision);\r\n return Math.round(value * divisor) / divisor;\r\n }\r\n\r\n fromVectors(pivot, orbit) {\r\n let offset = new Vector3().add(orbit).sub(pivot);\r\n let radius = offset.length();\r\n\r\n let theta = Math.atan2(offset.y, offset.x);\r\n theta = MathUtils.radToDeg(theta);\r\n\r\n let dist2d = Math.sqrt(Math.pow(offset.x, 2) + Math.pow(offset.y, 2));\r\n let phi = Math.atan2(dist2d, offset.z);\r\n phi = MathUtils.radToDeg(phi);\r\n phi = Math.max(this.limits[0], phi);\r\n phi = Math.min(this.limits[1], phi);\r\n\r\n this._theta = this.round(theta, 3);\r\n this._phi = this.round(phi, 3);\r\n this.radius = this.round(radius, 3);\r\n\r\n return this;\r\n }\r\n\r\n fromValues(radius, theta, phi) {\r\n this.radius = radius;\r\n this._theta = theta;\r\n this._phi = phi;\r\n\r\n return this;\r\n }\r\n\r\n toVector3() {\r\n let theta = MathUtils.degToRad(this.theta);\r\n let phi = MathUtils.degToRad(this.phi);\r\n\r\n let x = this.radius * Math.cos(theta) * Math.sin(phi);\r\n let y = this.radius * Math.sin(theta) * Math.sin(phi);\r\n let z = this.radius * Math.cos(phi);\r\n\r\n return new Vector3(x, y, z);\r\n }\r\n}\r\n\r\n/* Utility functions */\r\nexport const isValidProjection = (value: string) => {\r\n try {\r\n proj4(value);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nexport const getEulerInverse = (euler: Euler) => {\r\n let quaternion = new Quaternion();\r\n quaternion.setFromEuler(euler).invert();\r\n return new Euler().setFromQuaternion(quaternion);\r\n};\r\n\r\nexport const geometryToArray = (geometry, projection = null) => {\r\n let polygon = [];\r\n let coordinates = geometry.flatCoordinates;\r\n let totalPoints = coordinates.length / 2.0;\r\n\r\n for (var i = 0; i < totalPoints; i++) {\r\n let x = coordinates[2 * i + 0];\r\n let y = coordinates[2 * i + 1];\r\n let lonlat = transform([x, y, 0], 'EPSG:3857', 'EPSG:4326');\r\n let ecef = new LonLatCoordinate(lonlat).toGeocentric();\r\n\r\n if (projection) {\r\n let point = ecef.toProjection(projection);\r\n polygon.push(point.toArray());\r\n } else {\r\n polygon.push(ecef.toArray());\r\n }\r\n }\r\n\r\n return polygon;\r\n};\r\n\r\nexport const calculateEigenVectors = (vertices) => {\r\n let mean = new Vector3();\r\n vertices.forEach(vertex => {\r\n mean.add(vertex);\r\n });\r\n mean.divideScalar(vertices.length);\r\n\r\n let points = vertices.map(vertex => {\r\n return new Vector3()\r\n .add(vertex)\r\n .sub(mean)\r\n .toArray();\r\n });\r\n\r\n let eigen = executeWithoutLogging(() => {\r\n return PCA.getEigenVectors(points);\r\n });\r\n\r\n return {eigen, mean, points};\r\n};\r\n\r\nexport const calculatePointsPCA = (vertices, returnFlat) => {\r\n let {eigen, points} = calculateEigenVectors(vertices);\r\n\r\n let matrix = new Matrix4();\r\n matrix.makeBasis(\r\n new Vector3().fromArray(eigen[0].vector),\r\n new Vector3().fromArray(eigen[1].vector),\r\n new Vector3().fromArray(eigen[2].vector)\r\n );\r\n matrix.transpose();\r\n\r\n points = points.map(point => {\r\n return new Vector3()\r\n .fromArray(point).applyMatrix4(matrix);\r\n });\r\n\r\n if (returnFlat) {\r\n let pointsFlat = [];\r\n points.forEach(point => {\r\n pointsFlat = [...pointsFlat, ...point.toArray()];\r\n });\r\n points = pointsFlat;\r\n }\r\n\r\n return points;\r\n};\r\n\r\nexport const projectionToUnits = (projection: Projection) => {\r\n const unitLength = projectionToMeters(projection);\r\n\r\n let units;\r\n switch (unitLength) {\r\n case unitsToValue['m']:\r\n units = \"m\";\r\n break;\r\n case unitsToValue['ft']:\r\n units = \"ft\";\r\n break;\r\n case unitsToValue['us-ft']:\r\n units = \"sft\";\r\n break;\r\n default:\r\n units = \"m\";\r\n break;\r\n }\r\n\r\n return units;\r\n};\r\n\r\nexport const projectionToMeters = (projection: Projection) => {\r\n if (!projection) return 1.0;\r\n\r\n const proj = proj4.Proj(projection.string);\r\n\r\n if (projection.type === \"wkt\") {\r\n return proj['UNIT'].convert;\r\n } else if (\"to_meter\" in proj) {\r\n return proj['to_meter'];\r\n } else if (\"units\" in proj) {\r\n const units = proj['units'] as string;\r\n return unitsToValue[units];\r\n }\r\n\r\n return 1.0;\r\n};\r\n\r\nexport const isLonLatProjection = (projection) => {\r\n const proj = proj4.Proj(projection.string);\r\n return proj['projName'] === \"longlat\";\r\n};\r\n\r\nconst haversineDistance = (P1: Vector3, P2: Vector3) => {\r\n let earthRadius = 6371000;\r\n\r\n let diffLat = (P2.y - P1.y) * Math.PI / 180;\r\n let diffLng = (P2.x - P1.x) * Math.PI / 180;\r\n\r\n let arc = Math.cos(P1.y * Math.PI / 180)\r\n * Math.cos(P2.y * Math.PI / 180)\r\n * Math.sin(diffLng / 2) * Math.sin(diffLng / 2)\r\n + Math.sin(diffLat / 2) * Math.sin(diffLat / 2);\r\n let line = 2 * Math.atan2(Math.sqrt(arc), Math.sqrt(1 - arc));\r\n\r\n let distance2d = earthRadius * line;\r\n let height = P2.z - P1.z;\r\n\r\n let distance = Math.pow(distance2d, 2) + Math.pow(height, 2);\r\n distance = Math.sqrt(distance);\r\n\r\n return distance;\r\n};\r\n\r\nconst verifyTransformObject = (data) => {\r\n let transform = data.transform;\r\n if (!transform) {\r\n return null;\r\n }\r\n\r\n if (transform.hasOwnProperty('translation_north')) {\r\n return {\r\n origin: [\r\n transform.origin_east,\r\n transform.origin_north,\r\n transform.origin_elevation ? transform.origin_elevation : 0\r\n ],\r\n translation: [\r\n transform.translation_east,\r\n transform.translation_north,\r\n transform.translation_elevation\r\n ],\r\n scale: transform.scale_factor_h,\r\n rotation: transform.rotation\r\n } as Transform;\r\n }\r\n\r\n return Object.assign({}, transform);\r\n};\r\n\r\nconst verifyProjectionString = (projection: Projection) => {\r\n let string = projection.string;\r\n\r\n // longlat projection is returned directly\r\n if (isLonLatProjection(projection)) {\r\n return string;\r\n }\r\n\r\n // Return EPSG codes directly\r\n if (string.toUpperCase().indexOf(\"EPSG\") === 0) {\r\n return string;\r\n }\r\n\r\n // Add missing fields\r\n if (string.indexOf(\"y_0\") === -1) {\r\n string = string + \" +y_0=0\";\r\n }\r\n\r\n if (string.indexOf(\"x_0\") === -1) {\r\n string = string + \" +x_0=0\";\r\n }\r\n\r\n if (string.indexOf(\"lon_0\") === -1) {\r\n string = string + \" +lon_0=0\";\r\n }\r\n\r\n if (string.indexOf(\"lat_0\") === -1) {\r\n string = string + \" +lat_0=0\";\r\n }\r\n\r\n string = string.split(\" +\").join(\" \");\r\n string = string.split(\" \").join(\" +\");\r\n if (string[0] !== \"+\") {\r\n string = \"+\" + string;\r\n }\r\n\r\n return string;\r\n};\r\n\r\nconst LocalScene = new ScenePointConverter();\r\nexport default LocalScene;\r\n","import {createSlice, nanoid, PayloadAction} from '@reduxjs/toolkit';\r\nimport api from '../api';\r\nimport { AerialViewState, SceneCameraState } from './camera-slice';\r\nimport { SettingsState } from './settings-slice';\r\n\r\nexport interface Bookmark {\r\n id: string;\r\n name: string;\r\n date: string;\r\n position: number[];\r\n visible: boolean;\r\n visibleAssets: string[],\r\n settings: SettingsState;\r\n aerialState: AerialViewState;\r\n sceneState: SceneCameraState;\r\n}\r\n\r\nconst getByID = (state, bookmarkID: string) => {\r\n return state.find(bookmark => bookmark.id === bookmarkID);\r\n};\r\n\r\nexport const bookmarksSlice = createSlice({\r\n name: 'bookmarks',\r\n initialState: [] as Bookmark[],\r\n reducers: {\r\n createBookmark: (state, action: PayloadAction<{\r\n name: string,\r\n position: number[],\r\n visibleAssets: string[],\r\n settings: SettingsState,\r\n aerialState: AerialViewState,\r\n sceneState: SceneCameraState\r\n }>) => {\r\n const attributes = action.payload;\r\n\r\n const bookmark = {\r\n id: nanoid(),\r\n date: new Date().toISOString(),\r\n visible: true,\r\n ...attributes\r\n };\r\n\r\n state.push(bookmark);\r\n\r\n // Update cloud site\r\n api.bookmarks.create(bookmark);\r\n },\r\n updateBookmark: (state, action: PayloadAction<{\r\n bookmarkID: string,\r\n name?: string,\r\n position?: number[],\r\n visible?: boolean,\r\n visibleAssets?: string[],\r\n settings?: SettingsState,\r\n aerialState?: AerialViewState,\r\n sceneState?: SceneCameraState;\r\n }>) => {\r\n const {bookmarkID, ...updates} = action.payload;\r\n\r\n const bookmark = getByID(state, bookmarkID);\r\n if (!bookmark) return;\r\n\r\n for (let key in updates) {\r\n if (bookmark.hasOwnProperty(key)) {\r\n bookmark[key] = updates[key];\r\n };\r\n };\r\n\r\n // Update modified date\r\n bookmark.date = new Date().toISOString();\r\n\r\n // Update cloud site\r\n api.bookmarks.update(bookmarkID, {...updates, date: bookmark.date});\r\n },\r\n deleteBookmark: (state, action: PayloadAction) => {\r\n const bookmarkID = action.payload;\r\n const modified = state.filter(bookmark => bookmark.id !== bookmarkID);\r\n\r\n // Update cloud site\r\n api.bookmarks.delete(bookmarkID);\r\n\r\n return modified;\r\n },\r\n\r\n /** Websocket specific */\r\n wsCreateBookmark: (state, action: PayloadAction) => {\r\n const bookmark = action.payload;\r\n if (getByID(state, bookmark.id)) return;\r\n\r\n state.push(bookmark);\r\n },\r\n wsUpdateBookmark: (state, action: PayloadAction) => {\r\n const {id, ...updates} = action.payload;\r\n\r\n let bookmark = getByID(state, id);\r\n if (!bookmark) return;\r\n\r\n for (let key in updates) {\r\n if (bookmark.hasOwnProperty(key)) {\r\n bookmark[key] = updates[key];\r\n };\r\n };\r\n },\r\n wsDeleteBookmark: (state, action: PayloadAction) => {\r\n const bookmarkID = action.payload;\r\n return state.filter(bookmark => bookmark.id !== bookmarkID);\r\n },\r\n }\r\n});\r\n\r\nexport default bookmarksSlice.reducer;\r\n\r\nexport const {\r\n wsCreateBookmark,\r\n wsUpdateBookmark,\r\n wsDeleteBookmark,\r\n createBookmark,\r\n deleteBookmark,\r\n updateBookmark,\r\n} = bookmarksSlice.actions;\r\n\r\nexport const selectAllBookmarks = state => state.bookmarks as Bookmark[];\r\n","export enum ProjectType {\r\n Standard = 0,\r\n Static = 1,\r\n Cloud = 2\r\n}\r\n\r\nexport enum AccessType {\r\n ViewOnly = 0,\r\n Standard = 1,\r\n Admin = 2\r\n}\r\n","export const sendCustomEvent = (type, detail) => {\r\n const event = new CustomEvent(type, {detail});\r\n document.dispatchEvent(event);\r\n};","import classificationsShader from \"./viewer/textures/colormaps/classifications.png\";\r\n\r\nexport interface Classification {\r\n id: number;\r\n name: string;\r\n alias: Array<[]>;\r\n}\r\n\r\nconst numberOfDefinedClassifications = 19;\r\nexport const numberOfClassifications = 256;\r\n\r\nexport const classifications = [\r\n {\r\n id: 0,\r\n name: \"Never Classified\",\r\n alias: [\"never classified\", \"unclassified\"]\r\n },\r\n {\r\n id: 1,\r\n name: \"Unassigned\",\r\n alias: [\"unassigned\"]\r\n },\r\n {\r\n id: 2,\r\n name: \"Ground\",\r\n alias: ['ground', 'dtm', 'base', 'earth', 'dirt', 'land', 'd.t.m'],\r\n },\r\n {\r\n id: 3,\r\n name: \"Low Vegetation\",\r\n alias: ['low_vegetation','low vegetation', 'low_veg', 'low veg', 'lo veg','lo_veg'],\r\n\r\n },\r\n {\r\n id: 4,\r\n name: \"Medium Vegetation\",\r\n alias: ['vegetation', 'tree', 'trees', 'bushes', 'lawn', 'forest', 'garden',\r\n 'gardens', 'arbor', 'flora', 'crops', 'crop', 'green', 'greenery',\r\n 'medium_vegetation', 'medium vegetation', 'med_veg', 'med veg', 'medium veg',\r\n 'medium_veg']\r\n },\r\n {\r\n id: 5,\r\n name: \"High Vegetation\",\r\n alias: ['high_vegetation', 'high vegetation', 'high_veg', 'high veg', 'hi veg',\r\n 'hi veg', 'canopy']\r\n },\r\n {\r\n id: 6,\r\n name: \"Building\",\r\n alias: ['building', 'buildings', 'structures', 'built']\r\n },\r\n {\r\n id: 7,\r\n name: \"Noise\",\r\n alias: ['noise', 'errors', 'multipass']\r\n },\r\n {\r\n id: 8,\r\n name: 'Model Key/Reserved',\r\n alias: ['lightpole', 'light pole', 'pole', 'power pole', 'powerpole', 'lightpoles',\r\n 'light poles', 'light_poles', 'power_pole', 'power_poles', 'model key', 'reserved']\r\n },\r\n {\r\n id: 9,\r\n name: \"Water\",\r\n alias: ['water', 'river', 'stream', 'sea', 'ocean', 'lake', 'bay','lagoon','lakes',\r\n 'rivers', 'streams', 'lagoons', 'waterway', 'waterways']\r\n },\r\n {\r\n id: 10,\r\n name: \"Rail\",\r\n alias: ['rail', 'railroad', 'rail road', 'train', 'trains', 'rail-road', 'rail_road',\r\n 'railway', 'railways', 'railroads']\r\n },\r\n {\r\n id: 11,\r\n name: \"Road Surface\",\r\n alias: ['road', 'roads', 'streets', 'highway', 'highways', 'avenues', 'pavement',\r\n 'road surface', 'road_surface', 'road surfaces', 'road_surfaces']\r\n },\r\n {\r\n id: 12,\r\n name: 'Overlap/Reserved',\r\n alias: ['overlap', 'overlap reserved', 'overlap_reserved']\r\n },\r\n {\r\n id: 13,\r\n name: \"Wire - Guard\",\r\n alias: ['wire guard', 'wire-guard', 'wires - guard', 'wire_guard']\r\n },\r\n {\r\n id: 14,\r\n name: \"Wire - Conductor\",\r\n alias: ['wire conductor', 'wire-conductor', 'wires - conductor', 'wire_conductor']\r\n },\r\n {\r\n id: 15,\r\n name: \"Transmission Tower\",\r\n alias: ['transmission tower', 'transmission-tower', 'transmission_tower']\r\n },\r\n {\r\n id: 16,\r\n name: \"Wire - Connector\",\r\n alias: ['powerlines', 'power lines', 'powerline', 'power line', 'power_lines',\r\n 'power_line', 'wire', 'wires', 'connectors', 'wire_connector', 'wire connector',\r\n 'wire_connectors', 'wire connectors']\r\n },\r\n {\r\n id: 17,\r\n name: \"Bridge Deck\",\r\n alias: ['bridge', 'bridge deck', 'bridge-deck', 'bridge_deck', 'bridges', 'overpass',\r\n 'overpasses', 'fly over', 'fly-over', 'fly_over']\r\n },\r\n {\r\n id: 18,\r\n name: \"High Noise\",\r\n alias: ['high noise', 'high_noise', 'high-noise', 'highnoise']\r\n },\r\n ...Array.from(Array(numberOfClassifications - numberOfDefinedClassifications).keys()).map(key => ({id: key + numberOfDefinedClassifications, name: 'Reserved', alias:[]}))\r\n];\r\n\r\nexport const getClassificationColors = (): Promise => {\r\n return new Promise(resolve => {\r\n const image = new Image();\r\n\r\n image.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n\r\n const context = canvas.getContext('2d');\r\n context.drawImage(image, 0, 0);\r\n\r\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\r\n let colors = [];\r\n\r\n for (let i = 0; i < classifications.length; i++) {\r\n let index = i * 4;\r\n\r\n let red = imageData.data[index] << 16;\r\n let green = imageData.data[index + 1] << 8;\r\n let blue = imageData.data[index + 2];\r\n\r\n const hexColor = `#${(red + blue + green).toString(16).padStart(6, '0')}`;\r\n colors.push(hexColor);\r\n }\r\n\r\n resolve(colors);\r\n };\r\n\r\n image.src = classificationsShader;\r\n });\r\n};","import tagsActions from \"./tags\";\r\nimport bookmarkActions from \"./bookmarks\";\r\nimport foldersActions from \"./folders\";\r\n\r\nconst actions = {\r\n folders: foldersActions,\r\n tags: tagsActions,\r\n bookmarks: bookmarkActions\r\n};\r\n\r\nexport default actions;","import { isCloudSite, cloudProjectID } from \"../electron-modules\";\r\nimport { withOriginalID } from \"../export/utils/misc\";\r\nimport { Folder } from \"../redux/folders-slice\";\r\nimport { engineCloudURL } from \"../urls\";\r\n\r\nconst createFolder = async (folder: Folder) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/projects/${cloudProjectID}/folders`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(withOriginalID(folder))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst actions = {\r\n create: createFolder\r\n};\r\n\r\nexport default actions;","import { isCloudSite } from \"../electron-modules\";\r\nimport { withOriginalID } from \"../export/utils/misc\";\r\nimport { Asset, TagAnnotation, TagData, TagItemData } from \"../redux/assets-slice\";\r\nimport { SceneCameraState } from \"../redux/camera-slice\";\r\nimport { TagSize } from \"../types/tags\";\r\nimport { engineCloudURL } from \"../urls\";\r\n\r\n\r\nconst createTagCollection = async (folderID: string, asset: Asset) => {\r\n if (!isCloudSite) return;\r\n\r\n const {texture, size} = asset.data as TagData;\r\n const tagCollection = {...asset, texture, size};\r\n delete tagCollection.data;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/folders/${folderID}/tag-collections`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(withOriginalID(tagCollection))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst deleteTagCollection = async (assetID: string) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tag-collections/${assetID}`;\r\n await fetch(url, {method: \"DELETE\"});\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst updateTagCollection = async (assetID: string, options: {\r\n name?: string,\r\n visible?: boolean,\r\n size?: TagSize,\r\n texture?: string,\r\n}) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tag-collections/${assetID}`;\r\n await fetch(url, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(options)\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst createTags = async (assetID: string, tags: TagItemData[]) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tag-collections/${assetID}/tags`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(tags.map(tag => withOriginalID(tag)))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst updateTag = async (tagID: string, options: {\r\n name?: string,\r\n comment?: string,\r\n sceneState?: SceneCameraState,\r\n annotations?: TagAnnotation[],\r\n assetID?: string,\r\n date?: string\r\n}) => {\r\n if (!isCloudSite) return;\r\n\r\n if (\"assetID\" in options) {\r\n // api expects a different format\r\n options['assetId'] = options.assetID;\r\n delete options.assetID;\r\n }\r\n\r\n if (\"annotations\" in options) {\r\n // the update expects originalId\r\n (options as any)['annotations'] = options['annotations']\r\n .map(annotation => withOriginalID(annotation));\r\n }\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tags/${tagID}`;\r\n await fetch(url, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(options)\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst deleteTag = async (tagID: string) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tags/${tagID}`;\r\n await fetch(url, {method: \"DELETE\"});\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst actions = {\r\n create: createTags,\r\n delete: deleteTag,\r\n update: updateTag,\r\n createCollection: createTagCollection,\r\n deleteCollection: deleteTagCollection,\r\n updateCollection: updateTagCollection\r\n};\r\n\r\nexport default actions;","import { cloudProjectID, isCloudSite } from \"../electron-modules\";\r\nimport { withOriginalID } from \"../export/utils/misc\";\r\nimport { Bookmark } from \"../redux/bookmarks-slice\";\r\nimport { AerialViewState, SceneCameraState } from \"../redux/camera-slice\";\r\nimport { SettingsState } from \"../redux/settings-slice\";\r\nimport { engineCloudURL } from \"../urls\";\r\n\r\nconst createBookmark = async (bookmark: Bookmark) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/projects/${cloudProjectID}/bookmarks`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(withOriginalID(bookmark))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\ninterface UpdateOptions {\r\n name?: string,\r\n date?: string,\r\n position?: number[],\r\n visible?: boolean,\r\n visibleAssets?: string[],\r\n settings?: SettingsState,\r\n aerialState?: AerialViewState,\r\n sceneState?: SceneCameraState;\r\n}\r\n\r\nconst updateBookmark = async (bookmarkID: string, options: UpdateOptions) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/bookmarks/${bookmarkID}`;\r\n await fetch(url, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(options)\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst deleteBookmark = async (bookmarkID: string) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/bookmarks/${bookmarkID}`;\r\n await fetch(url, {method: \"DELETE\"});\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst actions = {\r\n create: createBookmark,\r\n delete: deleteBookmark,\r\n update: updateBookmark,\r\n};\r\n\r\nexport default actions;","import isHtml from 'is-html';\r\n\r\nexport const asyncTimeout = (ms) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\nexport const isHTML = (value: any) => {\r\n return (typeof value === \"string\") ? isHtml(value) : false;\r\n};\r\n","import {MOUSE} from \"three\";\r\n\r\nexport enum ControlType {\r\n Encompass,\r\n Reverse,\r\n Autocad\r\n}\r\n\r\nexport const ControlModes = {\r\n 0: { ORBIT: MOUSE.LEFT, ZOOM: MOUSE.MIDDLE, PAN: MOUSE.RIGHT },\r\n 1: { ORBIT: MOUSE.RIGHT, ZOOM: MOUSE.MIDDLE, PAN: MOUSE.LEFT },\r\n 2: { ORBIT: -1, ZOOM: -1, PAN: MOUSE.MIDDLE }\r\n};\r\n","import {createSlice, nanoid, PayloadAction} from '@reduxjs/toolkit';\r\n\r\nexport interface CustomURL {\r\n id: string;\r\n name: string;\r\n date: string;\r\n url: string;\r\n target: string;\r\n showInScene: boolean;\r\n showInAerial: boolean;\r\n }\r\n\r\nconst getByID = (state, linkID: string) => {\r\n return state.find(url => url.id === linkID);\r\n};\r\n\r\nexport const customLinkSlice = createSlice({\r\n name: 'custom_links',\r\n initialState: [] as CustomURL[],\r\n reducers: {\r\n createCustomLink: (state, action: PayloadAction<{\r\n name: string,\r\n url: string,\r\n target: string,\r\n showInScene: boolean,\r\n showInAerial: boolean\r\n }>) => {\r\n const attributes = action.payload;\r\n\r\n const customURL = {\r\n id: nanoid(),\r\n date: new Date().toISOString(),\r\n ...attributes\r\n };\r\n\r\n state.push(customURL);\r\n },\r\n updateCustomLink: (state, action: PayloadAction<{\r\n linkID: string,\r\n name?: string,\r\n url?: string,\r\n target?: string,\r\n showInScene?: boolean,\r\n showInAerial?: boolean\r\n }>) => {\r\n const {linkID, ...updates} = action.payload;\r\n\r\n const customURL = getByID(state, linkID);\r\n if (!customURL) return;\r\n\r\n for (let key in updates) {\r\n if (customURL.hasOwnProperty(key)) {\r\n customURL[key] = updates[key];\r\n };\r\n };\r\n\r\n // Update modified date\r\n customURL.date = new Date().toISOString();\r\n },\r\n deleteCustomLink: (state, action: PayloadAction) => {\r\n return state.filter(url => url.id !== action.payload);\r\n }\r\n }\r\n});\r\n\r\nexport default customLinkSlice.reducer;\r\n\r\nexport const {\r\n createCustomLink,\r\n updateCustomLink,\r\n deleteCustomLink\r\n} = customLinkSlice.actions;\r\n\r\nexport const selectAllCustomLinks = state => state.custom_links as CustomURL[];\r\n","import { Vector3 } from \"three\";\r\nimport { Viewer } from \"../main\";\r\n\r\nexport class ChangeDetector {\r\n private viewer: Viewer;\r\n\r\n private oldZoom = 0;\r\n private oldFov = 0;\r\n private oldLookatVector = new Vector3();\r\n private oldCameraPosition = new Vector3();\r\n private oldUpVector = new Vector3();\r\n private oldCameraID = null;\r\n private oldHeight = 0;\r\n private oldWidth = 0;\r\n private oldOrbitState = false;\r\n\r\n // Specific changes are exposed to the public\r\n public orbitChanged = false;\r\n public cameraChanged = false;\r\n public changed = false;\r\n\r\n constructor(viewer: Viewer) {\r\n this.viewer = viewer;\r\n }\r\n\r\n get newFov() {\r\n return this.viewer.fov;\r\n }\r\n\r\n get newZoom() {\r\n return this.viewer.getAerialZoomLevel();\r\n }\r\n\r\n get newLookatVector() {\r\n return this.viewer.lookatVector;\r\n }\r\n\r\n get newUpVector() {\r\n return this.viewer.upVector;\r\n }\r\n\r\n get newCameraID() {\r\n return this.viewer.getCurrentCameraName();\r\n }\r\n\r\n get newHeight() {\r\n return this.viewer.height;\r\n }\r\n\r\n get newWidth() {\r\n return this.viewer.width;\r\n }\r\n\r\n get newOrbitState() {\r\n return this.viewer.orbitState;\r\n }\r\n\r\n get newCameraPosition() {\r\n const camera = this.viewer.camera;\r\n return camera.position.clone();\r\n }\r\n\r\n update() {\r\n this.changed = false;\r\n\r\n try {\r\n let lookatChanged = this.oldLookatVector\r\n .angleTo(this.newLookatVector) > 1e-5;\r\n let upChanged = this.oldUpVector\r\n .angleTo(this.newUpVector) > 1e-5;\r\n let positionChanged = this.oldCameraPosition\r\n .distanceTo(this.newCameraPosition) > 1e-5;\r\n let fovChanged = this.oldFov !== this.newFov;\r\n let zoomChanged = this.oldZoom !== this.newZoom;\r\n let cameraChanged = this.oldCameraID !== this.newCameraID;\r\n let heightChanged = this.oldHeight !== this.newHeight;\r\n let widthChanged = this.oldWidth !== this.newWidth;\r\n let orbitChanged = this.oldOrbitState !== this.newOrbitState;\r\n\r\n this.oldZoom = this.newZoom;\r\n this.oldFov = this.newFov;\r\n this.oldLookatVector = this.newLookatVector;\r\n this.oldCameraPosition = this.newCameraPosition;\r\n this.oldUpVector = this.newUpVector;\r\n this.oldCameraID = this.newCameraID;\r\n this.oldHeight = this.newHeight;\r\n this.oldWidth = this.newWidth;\r\n this.oldOrbitState = this.newOrbitState;\r\n\r\n this.cameraChanged = cameraChanged;\r\n this.orbitChanged = orbitChanged;\r\n\r\n this.changed = lookatChanged || upChanged || fovChanged\r\n || zoomChanged || cameraChanged || heightChanged\r\n || widthChanged || orbitChanged || positionChanged;\r\n } catch {\r\n this.changed = false;\r\n }\r\n };\r\n}","export class UnitConverter {\r\n private metresToSurveyFeetRatio = 1200 / 3937;\r\n private metresToFeetRatio = 0.3048;\r\n private allowedUnits = new Set(['ft', 'sft', 'm']);\r\n\r\n public convert(value, fromUnits, toUnits, fixedLength=null) {\r\n if (!this.allowedUnits.has(fromUnits) || !this.allowedUnits.has(toUnits)) {\r\n throw new Error('Units must either be \"m\", \"sft\", or \"ft\"');\r\n }\r\n\r\n if (isNaN(value)) {\r\n throw new Error('Value must be a number');\r\n }\r\n\r\n let convertedValue = value;\r\n\r\n if (fromUnits !== toUnits) {\r\n if (fromUnits === 'ft' || fromUnits === 'sft') {\r\n convertedValue *= (fromUnits === 'ft' ? this.metresToFeetRatio : this.metresToSurveyFeetRatio);\r\n }\r\n\r\n if (toUnits === 'ft' || toUnits === 'sft') {\r\n convertedValue /= (toUnits === 'ft' ? this.metresToFeetRatio : this.metresToSurveyFeetRatio);\r\n }\r\n }\r\n\r\n if (fixedLength !== null) {\r\n convertedValue = parseFloat(convertedValue.toFixed(fixedLength));\r\n }\r\n\r\n return convertedValue;\r\n }\r\n}\r\n","import {\r\n Vector3,\r\n MathUtils,\r\n PerspectiveCamera,\r\n Object3D,\r\n Box3\r\n} from \"three\";\r\nimport linspace from \"exact-linspace\";\r\nimport isUrl from \"is-url\";\r\nimport * as olColor from 'ol/color';\r\n\r\nexport const isMobile = /android|webos|iphone|ipad|ipod|blackberry|playbook|BB10|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase());\r\n\r\nexport const isValidURL = (path: string) => {\r\n return isUrl(encodeURI(path));\r\n};\r\n\r\nexport const getProjFactor = (fov, distance, screenHeight) => {\r\n let projFactor = 1.0 / Math.tan(fov / 2);\r\n projFactor /= distance;\r\n projFactor *= screenHeight / 2;\r\n return projFactor;\r\n};\r\n\r\nexport const getPointScale = (camera: PerspectiveCamera, mesh: Object3D, size=50) => {\r\n const meshPosition = new Vector3();\r\n mesh.getWorldPosition(meshPosition);\r\n\r\n const fov = MathUtils.degToRad(Math.max(60, camera.fov));\r\n const distance = Math.max(1.0, meshPosition.distanceTo(camera.position));\r\n const projFactor = getProjFactor(fov, distance, window.innerHeight);\r\n return size / projFactor;\r\n};\r\n\r\nexport const toScreenPosition = (viewer, position, round) => {\r\n var vector = new Vector3();\r\n vector.set(position.x, position.y, position.z);\r\n vector.project(viewer.camera);\r\n\r\n vector.x = (vector.x + 1) * (viewer.width / 2);\r\n vector.y = (-vector.y + 1) * (viewer.height / 2);\r\n\r\n if (round) {\r\n vector.x = Math.round(vector.x);\r\n vector.y = Math.round(vector.y);\r\n }\r\n\r\n return [vector.x, vector.y];\r\n};\r\n\r\nexport const eventToPixel = (event) => {\r\n let uv = new Vector3();\r\n if (event.offsetX) {\r\n // chrome,ie,safari\r\n uv.x = event.offsetX;\r\n uv.y = event.offsetY;\r\n } else {\r\n // firefox\r\n uv.x = event.layerX;\r\n uv.y = event.layerY;\r\n }\r\n return uv;\r\n};\r\n\r\nexport const randomHexColor = () => {\r\n return \"#000000\".replace(/0/g, function() {\r\n return (~~(Math.random() * 16)).toString(16);\r\n });\r\n};\r\n\r\nexport const closestPowerOfTwo = value => {\r\n if (value === 0) {\r\n return 0;\r\n }\r\n\r\n let power = Math.ceil(Math.log(value) / Math.log(2));\r\n let result = Math.pow(2, power) - 1;\r\n return result;\r\n};\r\n\r\nexport const roundDigit = (num, digits) => {\r\n let multiplyFactor = Math.pow(10, digits);\r\n return Math.round( num * multiplyFactor + Number.EPSILON ) / multiplyFactor;\r\n};\r\n\r\nexport const executeWithoutLogging = callback => {\r\n const logger = console.log;\r\n console.log = function() {};\r\n let response = callback();\r\n console.log = logger;\r\n return response;\r\n};\r\n\r\nexport const windowSafeDateISO = () => {\r\n const date = new Date();\r\n return date.toISOString()\r\n .slice(0, 19)\r\n .replace('T', ' ')\r\n .replace(/:/g, \"-\");\r\n};\r\n\r\nexport const chunkedArray = (array, size) => {\r\n let tmp = [...array];\r\n let results = [];\r\n while (tmp.length) {\r\n results.push(tmp.splice(0, size));\r\n }\r\n return results;\r\n};\r\n\r\nexport const coordinatesToArray = (points) => {\r\n let numPoints = points.length / 2;\r\n let newPoints = [];\r\n for (let i=0;i {\r\n if (start === end) {\r\n return new Array(steps).fill(start);\r\n }\r\n\r\n return linspace(start, end, steps);\r\n};\r\n\r\nexport const toBoolean = (value: string | number) : boolean => {\r\n const integerValue = typeof value === \"number\"\r\n ? value\r\n : parseInt(value);\r\n\r\n return !!integerValue;\r\n};\r\n\r\nexport const mergeBoundingBoxes = (boundingBoxes: Box3[]) => {\r\n let combined: Box3 = null;\r\n\r\n boundingBoxes.forEach(bbox => {\r\n if (!bbox) return;\r\n\r\n if (combined === null) {\r\n combined = new Box3(\r\n bbox.min.clone(),\r\n bbox.max.clone()\r\n );\r\n } else {\r\n combined = new Box3(\r\n new Vector3(\r\n Math.min(combined.min.x, bbox.min.x),\r\n Math.min(combined.min.y, bbox.min.y),\r\n Math.min(combined.min.z, bbox.min.z)\r\n ),\r\n new Vector3(\r\n Math.max(combined.max.x, bbox.max.x),\r\n Math.max(combined.max.y, bbox.max.y),\r\n Math.max(combined.max.z, bbox.max.z)\r\n )\r\n );\r\n }\r\n });\r\n\r\n return combined;\r\n};\r\n\r\nexport const allIndexOf = (array, item) => {\r\n let index = array.indexOf(item);\r\n let indices = [];\r\n\r\n while (index !== -1) {\r\n indices.push(index);\r\n index = array.indexOf(item, ++index);\r\n }\r\n\r\n return indices;\r\n};\r\n\r\nexport const withOpacity = (color: string, opacity: number) => {\r\n let colorWithOpacity = olColor.asArray(color).slice();\r\n colorWithOpacity[3] = opacity;\r\n return colorWithOpacity;\r\n};\r\n","import { Plane, Vector3 } from \"three\";\r\n\r\nconst simplepolygon = require('simplepolygon');\r\n\r\nexport const pointInPolygon = (point, vertices) => {\r\n let numberOfVertices = vertices.length;\r\n let insidePolygon = false;\r\n\r\n let j = numberOfVertices - 1;\r\n for (var i = 0; i < numberOfVertices; i++) {\r\n let verti = vertices[i];\r\n let vertj = vertices[j];\r\n\r\n let dx = vertj.x - verti.x;\r\n let dy1 = point.y - verti.y;\r\n let dy2 = vertj.y - verti.y;\r\n\r\n let cond1 = (verti.y > point.y) !== (vertj.y > point.y);\r\n let cond2 = point.x < (dx * dy1 / dy2 + verti.x);\r\n\r\n // currently checks [boundMin, boundMax)\r\n\r\n if (cond1 && cond2) {\r\n insidePolygon = !insidePolygon;\r\n }\r\n j = i;\r\n }\r\n return insidePolygon;\r\n};\r\n\r\nexport const planeFromVectors = (directions) => {\r\n let normal = new Vector3();\r\n directions.forEach(vertex => {\r\n normal.add(vertex);\r\n });\r\n\r\n normal.divideScalar(directions.length);\r\n normal.setLength(1.0);\r\n\r\n return new Plane(normal);\r\n};\r\n\r\nexport const checkValidPolygon = (coordinates) => {\r\n try {\r\n // Unshifted points give false positives sometimes\r\n let origin = coordinates[0];\r\n let shifted = coordinates.map(x => {\r\n return [x[0]-origin[0], x[1]-origin[1]];\r\n });\r\n\r\n let poly = {\r\n type: \"Feature\",\r\n geometry: {\r\n type: \"Polygon\",\r\n coordinates: [shifted]\r\n }\r\n };\r\n\r\n let result = simplepolygon(poly);\r\n return result.features.length === 1;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n","import { MathUtils } from 'three';\r\nimport { transform } from 'ol/proj';\r\nimport { toast } from '../../../app';\r\nimport {\r\n AerialViewState,\r\n initialSceneState,\r\n SceneCameraState\r\n} from '../../../redux/camera-slice';\r\nimport { t } from '../../../localization';\r\n\r\nexport const parseURLParams = (url: string) => {\r\n const hash = new URL(url).hash.substring(1);\r\n if (hash === \"\") return;\r\n\r\n const urlParams = new URLSearchParams(hash);\r\n const parameters = Object.fromEntries(urlParams);\r\n\r\n return parameters;\r\n};\r\n\r\nexport const getModifiedAerialState = (aerialState: AerialViewState, params) => {\r\n let modified = {...aerialState};\r\n\r\n if ((\"lon\" in params) && (\"lat\" in params)) {\r\n const lat = parseFloat(params.lat);\r\n const lon = parseFloat(params.lon);\r\n\r\n if (isNaN(lat) || isNaN(lon)) {\r\n toast.warning(t(\"toast.parse-error-lat-lon\"));\r\n } else {\r\n modified.center = transform([lon, lat], 'EPSG:4326', 'EPSG:3857');\r\n }\r\n }\r\n\r\n if (\"zoom\" in params) {\r\n const zoom = parseInt(params.zoom);\r\n\r\n if (isNaN(zoom)) {\r\n toast.warning(t(\"toast.parse-error-aerial-zoom\"));\r\n } else {\r\n modified.zoom = zoom;\r\n }\r\n }\r\n\r\n if (\"rotation\" in params) {\r\n const rotation = parseFloat(params.rotation);\r\n\r\n if (isNaN(rotation)) {\r\n toast.warning(t(\"toast.parse-error-aerial-rotate\"));\r\n } else {\r\n modified.rotation = MathUtils.degToRad(rotation);\r\n }\r\n }\r\n\r\n return modified;\r\n};\r\n\r\nexport const getModifiedSceneState = (sceneState: SceneCameraState, params) => {\r\n let modified = {...sceneState};\r\n\r\n if ((\"px\" in params) && (\"py\" in params) && (\"pz\" in params)) {\r\n if ((\"ox\" in params) && (\"oy\" in params) && (\"oz\" in params)) {\r\n const ox = parseFloat(params.ox);\r\n const oy = parseFloat(params.oy);\r\n const oz = parseFloat(params.oz);\r\n\r\n const px = parseFloat(params.px);\r\n const py = parseFloat(params.py);\r\n const pz = parseFloat(params.pz);\r\n\r\n const hasError = isNaN(ox)\r\n || isNaN(oy)\r\n || isNaN(oz)\r\n || isNaN(px)\r\n || isNaN(py)\r\n || isNaN(pz);\r\n\r\n if (hasError) {\r\n toast.warning(t(\"toast.parse-error-3d-mode\"));\r\n } else {\r\n return {\r\n ...initialSceneState,\r\n orbit: [ox, oy, oz],\r\n pivot: [px, py, pz]\r\n };\r\n }\r\n }\r\n }\r\n\r\n if ((\"x\" in params) && (\"y\" in params) && (\"z\" in params)) {\r\n const x = parseFloat(params.x);\r\n const y = parseFloat(params.y);\r\n const z = parseFloat(params.z);\r\n\r\n const hasError = isNaN(x)\r\n || isNaN(y)\r\n || isNaN(z);\r\n\r\n if (hasError) {\r\n toast.warning(t(\"toast.parse-error-xyz\"));\r\n } else {\r\n // Clear all values and update lookat\r\n modified = {\r\n ...initialSceneState,\r\n lookat: [x,y,z]\r\n };\r\n }\r\n }\r\n\r\n if (\"cam\" in params) {\r\n // Set camera and clear orbit values\r\n modified.camera = params.cam;\r\n modified.orbit = null;\r\n modified.pivot = null;\r\n }\r\n\r\n if ((\"theta\" in params) && (\"phi\" in params)) {\r\n const theta = parseFloat(params.theta);\r\n const phi = parseFloat(params.phi);\r\n\r\n if (isNaN(theta) || isNaN(phi)) {\r\n toast.warning(t(\"toast.parse-error-angle\"));\r\n } else {\r\n modified.angles = [\r\n MathUtils.degToRad(theta),\r\n MathUtils.degToRad(phi)\r\n ];\r\n }\r\n }\r\n\r\n if (\"fov\" in params) {\r\n const fov = parseFloat(params.fov);\r\n\r\n if (isNaN(fov)) {\r\n toast.warning(t(\"toast.parse-error-camera-fov\"));\r\n } else {\r\n modified.fov = fov;\r\n }\r\n }\r\n\r\n return modified;\r\n};\r\n","import {Vector as VectorSource} from \"ol/source\";\r\nimport {Vector as VectorLayer} from \"ol/layer\";\r\nimport {Polygon} from \"ol/geom\";\r\nimport {Feature} from \"ol\";\r\nimport { SceneCoordinate } from '../projections';\r\nimport { Stroke, Style } from \"ol/style\";\r\n\r\nconst mapBoundsStyle = new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(0, 0, 0, 0.5)',\r\n width: 2\r\n }),\r\n});\r\n\r\nexport const boundsToMapLayer = (boundingBox) => {\r\n // Generate polygon layer from bounding box, based on scene coordinates\r\n let {min, max} = boundingBox;\r\n\r\n const polygonPoints = [\r\n new SceneCoordinate([min.x, min.y, 0]).toAerial(),\r\n new SceneCoordinate([min.x, max.y, 0]).toAerial(),\r\n new SceneCoordinate([max.x, max.y, 0]).toAerial(),\r\n new SceneCoordinate([max.x, min.y, 0]).toAerial(),\r\n new SceneCoordinate([min.x, min.y, 0]).toAerial()\r\n ];\r\n\r\n // Creating the minimap mesh layer\r\n let vectorsource = new VectorSource({\r\n wrapX: false\r\n });\r\n\r\n let geometry = new Polygon([polygonPoints], \"XY\");\r\n let feature = new Feature(geometry);\r\n vectorsource.addFeature(feature);\r\n\r\n let layer = new VectorLayer({\r\n zIndex: 1,\r\n source: vectorsource,\r\n style: mapBoundsStyle\r\n });\r\n\r\n return layer;\r\n};\r\n","import { fse, isCloudSite, isStaticSite } from \"../../../electron-modules\";\r\nimport { isValidURL } from \"./misc-utils\";\r\n\r\nexport const fetchImage = async (path: string, signal: AbortSignal = null) => {\r\n let blob;\r\n\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n const response = await fetch(path, {signal});\r\n blob = await response.blob();\r\n } else {\r\n const file = await fse.readFile(path);\r\n blob = new Blob([file]);\r\n }\r\n\r\n const image = await createImageBitmap(blob, {\r\n imageOrientation: 'flipY',\r\n colorSpaceConversion: \"none\"\r\n });\r\n\r\n return image;\r\n};\r\n\r\nexport const resizeImage = async (image: ImageBitmap, width: number, height: number) => {\r\n const resized = await createImageBitmap(image, {\r\n resizeWidth: width,\r\n resizeHeight: height,\r\n resizeQuality: \"low\",\r\n colorSpaceConversion: \"none\"\r\n });\r\n\r\n console.warn(`Image has been resized from (${image.width}x${image.height}) to (${width}x${height})`);\r\n\r\n image.close();\r\n\r\n return resized;\r\n};\r\n","export class AsyncWorkerPool {\r\n private fileName: string;\r\n private numWorkers = 1;\r\n private workers = [];\r\n private queue = [];\r\n\r\n constructor(fileName: string, numWorkers=2) {\r\n this.fileName = fileName;\r\n this.numWorkers = numWorkers;\r\n this.initWorkers();\r\n }\r\n\r\n initWorkers() {\r\n const filePath = `${process.env.PUBLIC_URL}/workers/${this.fileName}`;\r\n\r\n for (let i=0; i {\r\n return new Promise(resolve => {\r\n this.queue.push({message, transfer, resolve});\r\n this.processQueue();\r\n });\r\n }\r\n\r\n /** @private */\r\n processQueue() {\r\n if (this.workers.length === 0) return;\r\n if (this.queue.length === 0) return;\r\n\r\n const worker = this.workers.shift();\r\n const {message, transfer, resolve} = this.queue.shift();\r\n\r\n worker.onmessage = event => {\r\n resolve(event.data);\r\n\r\n // Return worker to array\r\n this.workers.push(worker);\r\n\r\n // Process next item in queue\r\n this.processQueue();\r\n };\r\n\r\n worker.postMessage(message, transfer);\r\n }\r\n}","import { Coordinate } from \"ol/coordinate\";\r\n\r\nexport enum VolumeType {\r\n MultiPlane,\r\n LowestPlane\r\n}\r\n\r\nexport enum SamplingRate {\r\n High=0.25,\r\n Medium=0.5,\r\n Low=1.0\r\n}\r\n\r\nexport enum MeasureType {\r\n Length=\"length\",\r\n SnapUp=\"snap-up\",\r\n SnapDown=\"snap-down\",\r\n Height=\"height\",\r\n Point=\"point\",\r\n Area=\"area\",\r\n Volume=\"volume\",\r\n Station=\"station_measurement\"\r\n}\r\n\r\nexport enum AerialMeasureType {\r\n Spherical,\r\n Planar\r\n}\r\n\r\nexport interface AerialSegment {\r\n midpoint: Coordinate;\r\n length: number\r\n}\r\n\r\nexport enum MeasureExportType {\r\n Data=\"dat\",\r\n CSV=\"csv\",\r\n DXF=\"dxf\",\r\n Shapefile=\"shp\"\r\n}","\r\nexport const solv3dPrimary = '#162031';\r\nexport const solv3dSecondary ='#DD0C29';\r\n\r\nexport const mosaicPrimary = '#A31C2E';\r\nexport const mosaicSecondary ='#33281F';","import { darken, lighten, createTheme as createMuiTheme } from \"@mui/material\";\r\nimport {\r\n solv3dPrimary,\r\n solv3dSecondary,\r\n mosaicPrimary,\r\n mosaicSecondary\r\n} from \"./colors\";\r\nimport { Brand } from \"../providers\";\r\n\r\nexport const themeSpacing = 8;\r\n\r\nexport const createTheme = (brand: Brand) => {\r\n const isMosaic = brand === \"mosaic\";\r\n\r\n const primaryColor = isMosaic\r\n ? mosaicPrimary\r\n : solv3dPrimary;\r\n\r\n const secondaryColor = isMosaic\r\n ? mosaicSecondary\r\n : solv3dSecondary;\r\n\r\n return createMuiTheme({\r\n spacing: themeSpacing,\r\n components: {\r\n MuiPopover: {\r\n styleOverrides: {\r\n root: {\r\n \"z-index\": \"1301 !important\"\r\n }\r\n }\r\n },\r\n MuiTooltip: {\r\n defaultProps: {\r\n disableInteractive: true\r\n },\r\n styleOverrides: {\r\n tooltip: {\r\n backgroundColor: \"rgba(0, 0, 0, 0.7)\",\r\n },\r\n arrow: {\r\n \"&::before\": {\r\n backgroundColor: \"rgba(0, 0, 0, 0.7)\",\r\n border: \"0px\"\r\n }\r\n }\r\n }\r\n },\r\n MuiDialogTitle: {\r\n styleOverrides: {\r\n root: {\r\n padding: themeSpacing,\r\n fontSize: \"1.0rem !important\"\r\n },\r\n }\r\n },\r\n MuiDialogContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: 2 * themeSpacing,\r\n }\r\n }\r\n },\r\n MuiIconButton: {\r\n styleOverrides: {\r\n root: {\r\n padding: themeSpacing\r\n }\r\n }\r\n },\r\n MuiSelect: {\r\n defaultProps: {\r\n size: \"small\",\r\n variant: \"standard\"\r\n }\r\n },\r\n MuiTextField: {\r\n defaultProps: {\r\n size: \"small\",\r\n variant: \"standard\"\r\n }\r\n },\r\n MuiTabs: {\r\n defaultProps: {\r\n indicatorColor: \"secondary\",\r\n textColor: \"inherit\"\r\n }\r\n },\r\n MuiSwitch: {\r\n defaultProps: {\r\n size: \"small\",\r\n color: \"secondary\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n defaultProps: {\r\n size: \"small\",\r\n color: \"secondary\"\r\n }\r\n },\r\n MuiRadio: {\r\n defaultProps: {\r\n size: \"small\",\r\n color: \"secondary\"\r\n }\r\n }\r\n },\r\n palette: {\r\n primary: {\r\n main: primaryColor,\r\n light: lighten(primaryColor, 0.25),\r\n dark: darken(primaryColor, 0.25)\r\n },\r\n secondary: {\r\n main: secondaryColor,\r\n light: lighten(secondaryColor, 0.25),\r\n dark: darken(secondaryColor, 0.25)\r\n },\r\n mode: \"light\"\r\n },\r\n mixins: {\r\n toolbar: {\r\n // override default\r\n }\r\n }\r\n });\r\n};\r\n","import { t } from \"./localization\";\r\n\r\nexport const LocalizedFileFilter = (key: string, extensions: string[]) => {\r\n return [{\r\n get name() {\r\n return t(key);\r\n },\r\n extensions\r\n }];\r\n};\r\n\r\nexport const getCombinedExtension = (key, filters) => {\r\n let extensions = [];\r\n filters.forEach(filter => {\r\n if (!filter) return;\r\n filter.forEach(x => {\r\n extensions = [...extensions, ...x.extensions];\r\n });\r\n });\r\n\r\n return [{\r\n get name() {\r\n return t(key);\r\n },\r\n extensions\r\n }];\r\n};\r\n\r\nexport const lasFileFormat = \"las\";\r\nexport const encompassFileFormat = \"idx\";\r\nexport const e57FileFormat = \"e57\";\r\nexport const potreeFileFormat = \"bin\";\r\nexport const pngFileFormat = 'png';\r\n\r\nexport const pngFilter = LocalizedFileFilter(\r\n 'dialog.extension-image-files-png', [pngFileFormat]);\r\n\r\nexport const pointCloudFileFormats = [lasFileFormat,\r\n encompassFileFormat, e57FileFormat, potreeFileFormat];\r\n\r\nexport const pointCloudFilter = LocalizedFileFilter(\r\n \"dialog.extension-pointclouds\", pointCloudFileFormats);\r\n\r\nexport const configFileType = \"json\";\r\nexport const configFilter = LocalizedFileFilter(\r\n \"dialog.extension-project\", [configFileType]);\r\n\r\nexport const customURLFileType = \"json\";\r\nexport const customURLFilter = LocalizedFileFilter(\r\n \"dialog.custom-url\", [customURLFileType]);\r\n\r\nexport const imageOrthoFormat = ['tif', 'tiff'];\r\nexport const imageOrthoFilter = LocalizedFileFilter(\r\n \"dialog.extension-ortho\", imageOrthoFormat);\r\n\r\nexport const imageCSVFormat = ['csv', 'txt', 'rzml'];\r\nexport const imageCSVFilter = LocalizedFileFilter(\r\n \"dialog.extension-images\", imageCSVFormat);\r\n\r\nexport const projFileFormat = ['eprj'];\r\n\r\nexport const imagePlanarFormat = ['plnr'];\r\nexport const imagePlanarFilter = LocalizedFileFilter(\r\n \"dialog.extension-planar\", imagePlanarFormat);\r\n\r\nexport const csvExportFilter = LocalizedFileFilter(\r\n \"dialog.extension-csv\", [\"csv\"]);\r\n\r\nexport const cameraMatrixFilter = LocalizedFileFilter(\r\n \"dialog.extension-4x4\", [\"4x4\"]);\r\n\r\nexport const measureDataFormat = \"3dm\";\r\nexport const measureDataFilter = LocalizedFileFilter(\r\n \"dialog.measure-data\", [measureDataFormat]);\r\n\r\nexport const measureCSVFilter = LocalizedFileFilter(\r\n \"dialog.measure-csv\", ['csv']);\r\n\r\nexport const tagCSVFilter = LocalizedFileFilter(\r\n \"dialog.tag-csv\", ['csv']);\r\n\r\nexport const DXFFileFormat = \"dxf\";\r\nexport const SHPFileFormat = \"shp\";\r\nexport const IFCFileFormat = \"ifc\";\r\nexport const xmlFileFormat = \"xml\";\r\nconst zipExtension = \"zip\";\r\n\r\nconst drawingFormats = [DXFFileFormat, SHPFileFormat, zipExtension];\r\n\r\nexport const drawingFilter = LocalizedFileFilter(\r\n \"dialog.drawing-files\", drawingFormats);\r\n\r\nexport const IFCModelFilter = LocalizedFileFilter(\r\n \"dialog.extension-ifc\", [IFCFileFormat]);\r\n\r\nexport const DXFModelFilter = LocalizedFileFilter(\r\n \"dialog.extension-dxf\", [DXFFileFormat]);\r\n\r\nexport const SHPModelFilter = LocalizedFileFilter(\r\n \"dialog.extension-shp\", [SHPFileFormat]);\r\n\r\nexport const ZIPFileFilter = LocalizedFileFilter(\r\n \"dialog.extension-zip\", [zipExtension]);\r\n\r\nconst modelFormats = [DXFFileFormat, SHPFileFormat, IFCFileFormat];\r\n\r\nexport const modelFileFilter = LocalizedFileFilter(\r\n \"dialog.model-files\", modelFormats);\r\n\r\nconst labelExtension = \"3dl\";\r\nexport const labelFilter = LocalizedFileFilter(\r\n \"dialog.label-file\", [labelExtension]);\r\n\r\nconst modelExtension = \"pth\";\r\nexport const modelFilter = LocalizedFileFilter(\r\n \"dialog.model-file\", [modelExtension]);\r\n\r\nconst xmlExtension = \"xml\";\r\nexport const xmlFileFilter = LocalizedFileFilter(\r\n \"dialog.xml-file\", [xmlExtension]);\r\n\r\nexport const lasFileFilter = LocalizedFileFilter(\r\n \"dialog.extension-las\", [lasFileFormat]\r\n);\r\n","import memoizeFormatConstructor from 'intl-format-cache';\r\n\r\nconst getDateTimeFormat = memoizeFormatConstructor(Intl.DateTimeFormat);\r\n\r\nconst defaultOptions = {\r\n timeStyle: \"short\",\r\n dateStyle: \"short\"\r\n} as Intl.DateTimeFormatOptions;\r\n\r\n/**\r\n * Convert date to locale string using cached formatter.\r\n * This is much faster than Date.toLocaleString\r\n * */\r\nexport const toLocaleString = (text: string, language: string, options = defaultOptions): string => {\r\n const createdAt = new Date(text);\r\n const formatter = getDateTimeFormat(language, options);\r\n return formatter.format(createdAt);\r\n};","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport {Classification, classifications} from \"../classifications\";\r\nimport {isStaticSite, storage} from \"../electron-modules\";\r\nimport {cloneDeep} from 'lodash';\r\nimport { isMobile } from '../viewer/js/utilities';\r\n\r\nexport interface Clamp {\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport type ColorMapKey = 'heat-map' | 'awesome-green' | 'pastel-shades' | 'blue-orange' |\r\n 'black-orange' | 'blue-hue' | 'blue-red' | 'jet' | 'grayscale';\r\n\r\nexport enum ColorType {\r\n Intensity,\r\n RGB,\r\n Height,\r\n Classification\r\n}\r\n\r\nexport enum MarkerNavType {\r\n Arrows,\r\n Markers,\r\n None\r\n}\r\n\r\nexport interface ClassificationSetting extends Classification {\r\n visible: boolean;\r\n available: boolean;\r\n}\r\n\r\nexport interface SettingsState {\r\n colorMap: ColorMapKey;\r\n colorType: ColorType;\r\n dynamicSize: boolean;\r\n circularPoints: boolean;\r\n arrowMarkers: MarkerNavType;\r\n drawerOpen: boolean;\r\n activeTab: number;\r\n opacity: number;\r\n heightClip: Clamp;\r\n intensityClip: Clamp;\r\n cloudScale: number;\r\n cloudMinimum: number;\r\n cloudMaxPoints: number;\r\n cloudDistance: number;\r\n tagDistance: number;\r\n classifications: ClassificationSetting[];\r\n switched: boolean;\r\n}\r\n\r\nconst defaultIntensityClip = {\r\n min: 0,\r\n max: 1\r\n};\r\n\r\nconst defaultHeightClip = {\r\n min: 0,\r\n max: 1\r\n};\r\n\r\nconst defaultClassifications = classifications.map(classification => ({\r\n visible: true,\r\n available: false,\r\n ...classification\r\n}));\r\n\r\nexport const initialSettingsState = {\r\n colorMap: 'jet',\r\n colorType: ColorType.Height,\r\n dynamicSize: true,\r\n circularPoints: true,\r\n arrowMarkers: MarkerNavType.Arrows,\r\n activeTab: 0,\r\n opacity: 0.5,\r\n cloudMaxPoints: 5,\r\n cloudDistance: 1000,\r\n cloudScale: 1.0,\r\n cloudMinimum: 2.0,\r\n tagDistance: 1000,\r\n switched: false,\r\n drawerOpen: !isMobile,\r\n heightClip: defaultHeightClip,\r\n intensityClip: defaultIntensityClip,\r\n classifications: defaultClassifications,\r\n} as SettingsState;\r\n\r\nconst loadSavedDefaults = () => {\r\n if (isStaticSite) return {};\r\n\r\n return storage.getSync(\"default-settings\");\r\n};\r\n\r\nconst saveSettingsDefaults = (state) => {\r\n if (isStaticSite) return;\r\n\r\n const copy = cloneDeep(state);\r\n\r\n // Remove anything that doesn't need defaults\r\n delete copy.classifications;\r\n delete copy.activeTab;\r\n delete copy.opacity;\r\n delete copy.cloudDistance;\r\n delete copy.heightClip;\r\n delete copy.intensityClip;\r\n\r\n storage.setSync(\"default-settings\", copy);\r\n};\r\n\r\nconst applySavedSettings = (state, settings) => {\r\n const keys = Object.keys(settings);\r\n keys.forEach(key => {\r\n if (state.hasOwnProperty(key)) {\r\n state[key] = settings[key];\r\n }\r\n });\r\n};\r\n\r\nexport const settingsSlice = createSlice({\r\n name: 'settings',\r\n initialState: initialSettingsState,\r\n reducers: {\r\n updateSettingsState: (state, action) => {\r\n applySavedSettings(state, action.payload);\r\n },\r\n applySavedDefaults: (state, action) => {\r\n // Apply any forced defaults\r\n state.activeTab = 0;\r\n\r\n // Apply saved defaults\r\n const defaults = loadSavedDefaults();\r\n applySavedSettings(state, defaults);\r\n },\r\n changeDefaultSettings: (state, action) => {\r\n saveSettingsDefaults(state);\r\n },\r\n changeOpacity: (state, action: PayloadAction) => {\r\n state.opacity = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeTagDistance: (state, action: PayloadAction) => {\r\n state.tagDistance = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudDistance: (state, action: PayloadAction) => {\r\n state.cloudDistance = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudMaxPoints: (state, action: PayloadAction) => {\r\n state.cloudMaxPoints = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudScale: (state, action: PayloadAction) => {\r\n state.cloudScale = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudMinimum: (state, action: PayloadAction) => {\r\n state.cloudMinimum = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeHeightClip: (state, action: PayloadAction) => {\r\n state.heightClip = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeIntensityClip: (state, action: PayloadAction) => {\r\n state.intensityClip = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeColorMap: (state, action: PayloadAction) => {\r\n state.colorMap = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeColorType: (state, action: PayloadAction) => {\r\n state.colorType = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeDynamicSize: (state, action: PayloadAction) => {\r\n state.dynamicSize = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCircularPoints: (state, action: PayloadAction) => {\r\n state.circularPoints = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeAvailableClassifications: (state, action: PayloadAction) => {\r\n const availableClassifications = new Set(action.payload);\r\n state.classifications = state.classifications\r\n .map(classification => ({...classification, available: availableClassifications.has(classification.id)}));\r\n },\r\n changeClassificationVisibility: (state, action) => {\r\n const classification = state.classifications.find(classification => classification.id === action.payload);\r\n\r\n if (classification) {\r\n classification.visible = !classification.visible;\r\n }\r\n },\r\n changeAllClassificationVisibility: (state, action) => {\r\n state.classifications = state.classifications.map(classification => ({...classification, visible: action.payload}));\r\n },\r\n changeSwitched: (state, action: PayloadAction) => {\r\n state.switched = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeSelectedTab: (state, action: PayloadAction) => {\r\n state.activeTab = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeAssetDrawerState: (state, action: PayloadAction) => {\r\n state.drawerOpen = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeArrowMarkers: (state, action: PayloadAction) => {\r\n state.arrowMarkers = action.payload;\r\n saveSettingsDefaults(state);\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n changeOpacity,\r\n changeTagDistance,\r\n changeCloudDistance,\r\n changeCloudMaxPoints,\r\n changeCloudScale,\r\n changeCloudMinimum,\r\n changeHeightClip,\r\n changeIntensityClip,\r\n changeColorMap,\r\n changeColorType,\r\n changeDynamicSize,\r\n changeCircularPoints,\r\n changeAvailableClassifications,\r\n changeClassificationVisibility,\r\n changeAllClassificationVisibility,\r\n changeSwitched,\r\n changeSelectedTab,\r\n changeAssetDrawerState,\r\n changeArrowMarkers,\r\n updateSettingsState\r\n} = settingsSlice.actions;\r\n\r\nexport default settingsSlice.reducer;\r\n\r\nexport const selectOpacity = state => state.settings.opacity;\r\nexport const selectTagDistance = state => state.settings.tagDistance;\r\nexport const selectCloudDistance = state => state.settings.cloudDistance;\r\nexport const selectCloudMaxPoints = state => state.settings.cloudMaxPoints;\r\nexport const selectCloudScale = state => state.settings.cloudScale;\r\nexport const selectCloudMinimum = state => state.settings.cloudMinimum;\r\nexport const selectHeightClip = state => state.settings.heightClip;\r\nexport const selectIntensityClip = state => state.settings.intensityClip;\r\nexport const selectColorMap = state => state.settings.colorMap;\r\nexport const selectColorType = state => state.settings.colorType;\r\nexport const selectDynamicSize = state => state.settings.dynamicSize;\r\nexport const selectCircularPoints = state => state.settings.circularPoints;\r\nexport const selectViewerSwitched = state => state.settings.switched;\r\nexport const selectSelectedTab = state => state.settings.activeTab;\r\nexport const selectAssetDrawerState = state => state.settings.drawerOpen;\r\nexport const selectArrowMarkers = state => state.settings.arrowMarkers;\r\n\r\nexport const selectClassifications = state => state.settings.classifications;\r\n\r\nexport const getAvailableClassifications = classifications =>\r\n classifications.filter(classification => classification.available);\r\n\r\nexport const getClassificationVisibilities = classifications =>\r\n classifications.map(classification => ({\r\n visible: classification.visible,\r\n id: classification.id\r\n }));\r\n","export default __webpack_public_path__ + \"static/media/classifications.24975ac9.png\";","import { useContext } from 'react';\r\nimport { BrandingContext } from '../providers';\r\n\r\nexport const useBranding = () => useContext(BrandingContext);\r\n","import React from \"react\";\r\nimport { Button, IconButton, Theme } from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { ArrowTooltip } from \".\";\r\nimport clsx from 'clsx';\r\nimport { isHTML } from \"../utilities/misc\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n olButtonParent: {\r\n background: \"var(--ol-subtle-background-color)\",\r\n position: 'absolute',\r\n\r\n zIndex: 10,\r\n borderRadius: \"4px\"\r\n },\r\n olButtonTopLeft: {\r\n top: \"0.5em\",\r\n left: \"0.5em\",\r\n },\r\n olButtonBottomLeft: {\r\n bottom: \"0.5em\",\r\n left: \"0.5em\",\r\n },\r\n olButton: {\r\n padding: \"0px\",\r\n margin: \"1px\",\r\n borderRadius: \"2px\",\r\n backgroundColor: \"var(--ol-background-color) !important\",\r\n color: \"var(--ol-subtle-foreground-color)\",\r\n minWidth: \"22px\",\r\n \"&:hover\": {\r\n outline: \"1px solid var(--ol-subtle-foreground-color)\",\r\n color: \"var(--ol-foreground-color)\"\r\n },\r\n \"& svg\": {\r\n width: \"22px\",\r\n height: \"22px\"\r\n }\r\n },\r\n olButtonRotate: {\r\n \"-webkit-transition\": \"-webkit-transform .3s ease-in-out\",\r\n transition: \"transform .3s ease-in-out\",\r\n \"&:hover\": {\r\n \"-webkit-transform\": \"rotate(-180deg)\",\r\n transform: \"rotate(-180deg)\"\r\n }\r\n }\r\n }),\r\n);\r\n\r\nexport interface EnhancedIconButtonProps {\r\n title: string\r\n visible?: boolean\r\n onClick?(event?): void,\r\n disabled?: boolean\r\n children?: any\r\n}\r\n\r\nexport const EnhancedIconButton = (props: EnhancedIconButtonProps) => {\r\n const {title, visible=true, onClick, disabled=false, children} = props;\r\n\r\n let tooltipText = disabled\r\n ? `${title} (Disabled)`\r\n : title;\r\n\r\n const renderAsHTML = isHTML(tooltipText);\r\n\r\n let tooltipTitle = renderAsHTML\r\n ? (
)\r\n : tooltipText;\r\n\r\n return (\r\n \r\n {visible && (\r\n {\r\n if (disabled) return;\r\n if (!onClick) return;\r\n onClick(event);\r\n }}\r\n style={{\r\n ...(disabled && {opacity: 0.3}),\r\n }}\r\n >\r\n {children}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface OpenLayersIconProps {\r\n rotate?: boolean;\r\n onClick(event): void;\r\n placement: \"top-left\" | \"bottom-left\";\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const OpenLayersIcon = (props: OpenLayersIconProps) => {\r\n const {rotate=false, placement, onClick} = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n {props.children}\r\n \r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { ListItemIcon, ListItemIconProps, useTheme } from \"@mui/material\";\r\n\r\ninterface DenseIconProps extends ListItemIconProps {\r\n centered?: boolean;\r\n}\r\n\r\nexport const DenseIcon = (props: DenseIconProps) => {\r\n const theme = useTheme();\r\n const {centered=false, children, ...other} = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n IconButton,\r\n LinearProgress,\r\n TextField,\r\n Theme,\r\n useTheme,\r\n} from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport clsx from 'clsx';\r\nimport React, {useEffect, useState} from \"react\";\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\r\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\r\nimport Draggable from \"react-draggable\";\r\nimport {headerHeight} from \"../app\";\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Select from '@mui/material/Select';\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { isEqual } from 'lodash';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useViewer } from \"../hooks\";\r\nimport {themeSpacing} from \"../theme\";\r\n\r\nconst minDialogWidth = 300; // Used for prompt, dropdown, text... etc\r\n\r\ntype DialogWidth = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n draggableTitleClose: {\r\n color: theme.palette.grey[500],\r\n marginRight: theme.spacing(1)\r\n },\r\n draggableTitleMinimize: {\r\n color: theme.palette.grey[500],\r\n },\r\n draggableContentStaticHeight: {\r\n height: `min(75vh, 500px) !important`,\r\n },\r\n draggableContent: {\r\n padding: theme.spacing(0),\r\n paddingTop: \"0px !important\",\r\n height: \"fit-content\",\r\n width: \"fit-content\",\r\n maxWidth: 'none',\r\n maxHeight: 'none'\r\n },\r\n draggableMouseDown: {\r\n \"z-index\": `${theme.zIndex.modal + 1} !important`\r\n },\r\n draggableContentParent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minWidth: \"400px\",\r\n maxWidth: \"75vw\",\r\n minHeight: \"200px\",\r\n maxHeight: \"75vh\",\r\n overflow: \"hidden\",\r\n position: \"relative\",\r\n zIndex: 1 // Fixes slimscroll visual issues\r\n },\r\n draggableResizeHandler: {\r\n float: \"right\",\r\n position: \"absolute\",\r\n bottom: \"0px\",\r\n right: \"0px\"\r\n },\r\n draggableTopDiv: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n draggableBackdropPaper: {\r\n height: \"inherit\"\r\n },\r\n draggableBackdropRounded: {\r\n borderRadius: theme.spacing(0.5),\r\n height: \"inherit\",\r\n },\r\n draggableRoundCorner: {\r\n backgroundColor: \"transparent\"\r\n },\r\n draggableTitle: {\r\n userSelect: \"none\",\r\n cursor: \"grab\",\r\n flex: \"1 !important\"\r\n },\r\n draggableTitleDown: {\r\n cursor: \"grabbing\"\r\n },\r\n progressContent: {\r\n padding: `${theme.spacing(3)} !important`,\r\n },\r\n progressNoTransition: {\r\n transition: \"none\"\r\n },\r\n dropdownGrid: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n dropdownSpacing: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n simpleDialogMain: {\r\n \"z-index\": `${theme.zIndex.modal + 1} !important`\r\n },\r\n simpleDialogHeader: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n simpleDialogTitle: {\r\n userSelect: \"none\",\r\n flex: 1\r\n },\r\n simpleDialogEdit: {\r\n color: theme.palette.grey[500],\r\n },\r\n simpleDialogClose: {\r\n color: theme.palette.grey[500],\r\n marginRight: theme.spacing(1)\r\n }\r\n }),\r\n);\r\n\r\ninterface PromptDialogProps {\r\n open: boolean;\r\n title: string;\r\n prompt: string;\r\n button: string;\r\n onCancel(): void;\r\n onSubmit(): void;\r\n}\r\n\r\nexport const PromptDialog = (props: PromptDialogProps) => {\r\n const {open, title, prompt, button, onCancel, onSubmit} = props;\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n\r\n \r\n \r\n {prompt}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface AlertDialogProps {\r\n open: boolean;\r\n error?: boolean\r\n title: string;\r\n onClose(): void;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const AlertDialog = (props: AlertDialogProps) => {\r\n const {open, onClose, title, error=false} = props;\r\n\r\n const {t} = useTranslation();\r\n const theme = useTheme();\r\n\r\n return (\r\n \r\n
\r\n {error && }\r\n\r\n {!error && }\r\n\r\n \r\n {title}\r\n \r\n
\r\n\r\n \r\n {props.children}\r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface TextDialogProps {\r\n open: boolean;\r\n title: string;\r\n label: string;\r\n prompt: string;\r\n placeholder?: string;\r\n onCancel(): void;\r\n onSubmit(value: string): void;\r\n clear?: boolean;\r\n}\r\n\r\nexport const TextDialog = (props: TextDialogProps) => {\r\n const {open, onSubmit, onCancel, label, prompt,\r\n placeholder=\"\", clear=false} = props;\r\n\r\n const [text, setText] = useState(\"\");\r\n const [disabled, setDisabled] = useState(true);\r\n const {t} = useTranslation();\r\n\r\n const handleTextChange = (event) => {\r\n setText(event.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (text.trim() !== '') {\r\n setDisabled(false);\r\n } else {\r\n setDisabled(true);\r\n }\r\n }, [text]);\r\n\r\n useEffect(() => {\r\n setText(placeholder);\r\n }, [open]);\r\n\r\n const handleCancel = () => {\r\n onCancel();\r\n setText(placeholder);\r\n };\r\n\r\n const handleSubmit = () => {\r\n const trimmedText = text.trim();\r\n\r\n onSubmit(trimmedText);\r\n\r\n if (clear) {\r\n setText('');\r\n } else {\r\n setText(trimmedText);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event) => {\r\n if (event.key === 'Enter') {\r\n if (text === '') {\r\n return;\r\n }\r\n\r\n handleSubmit();\r\n }\r\n };\r\n\r\n return (\r\n \r\n {props.title}\r\n \r\n \r\n {prompt}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface DropdownDialogProps {\r\n open: boolean;\r\n title: string;\r\n prompt: string;\r\n defaultValue: any;\r\n onCancel(): void;\r\n onSubmit(value: any): void;\r\n options: [value: any, text: string][];\r\n}\r\n\r\nexport const DropDownDialog = (props: DropdownDialogProps) => {\r\n const {open, defaultValue, title, prompt, options, onCancel, onSubmit} = props;\r\n\r\n const [value, setValue] = useState(defaultValue);\r\n const {t} = useTranslation();\r\n\r\n const resetDefaults = () => {\r\n setValue(defaultValue);\r\n };\r\n\r\n const handleSubmit = () => {\r\n onSubmit(value);\r\n };\r\n\r\n const handleChange = (event) => {\r\n setValue(event.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n {title}\r\n \r\n \r\n {prompt}\r\n \r\n \r\n {options.map((option, index) => {\r\n const [value, text] = option;\r\n\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface SimpleDialogProps {\r\n open: boolean\r\n title: string\r\n button?: string\r\n onSubmit?(): void\r\n onClose(): void\r\n canSubmit?: boolean\r\n canClose?: boolean\r\n maxWidth?: DialogWidth\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const SimpleDialog = (props: SimpleDialogProps) => {\r\n const {title, button = \"Submit\", open, onSubmit, onClose,\r\n canSubmit=true, canClose=true, children, maxWidth=\"sm\",\r\n ...other} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n
\r\n \r\n {title}\r\n \r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {children}\r\n \r\n\r\n \r\n \r\n {t('buttons.cancel')}\r\n \r\n\r\n {!!onSubmit && (\r\n \r\n {button}\r\n \r\n )}\r\n \r\n\r\n \r\n );\r\n};\r\n\r\ninterface DraggableDialogProps {\r\n open: boolean\r\n title: string\r\n onClose?(): void\r\n initialHeight?: number | string\r\n initialWidth?: number | string\r\n resize?: boolean\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const DraggableDialog = (props: DraggableDialogProps) => {\r\n const {open, title, resize=true, initialHeight, initialWidth, onClose} = props;\r\n\r\n const classes = useStyles();\r\n\r\n const initialPositionX = themeSpacing * 2;\r\n const initialPositionY = headerHeight + (themeSpacing * 2);\r\n\r\n const paperPropID = useState(nanoid())[0];\r\n const resizeElementID = useState(nanoid())[0];\r\n const [bounds, setBounds] = useState(null);\r\n const [mouseDown, setMouseDown] = useState(false);\r\n\r\n const [dialogSize, setDialogSize] = useState({\r\n x: initialWidth ? initialWidth : \"450px\",\r\n y: initialHeight ? initialHeight : \"fit-content\"\r\n });\r\n\r\n const [position, setPosition] = useState({\r\n x: initialPositionX,\r\n y: initialPositionY\r\n });\r\n\r\n const onDragMouseDown = () => {\r\n setMouseDown(true);\r\n };\r\n\r\n const onDragMouseUp = () => {\r\n setMouseDown(false);\r\n };\r\n\r\n const getNewBoundary = (elementWidth) => {\r\n let newBounds = {\r\n right : window.innerWidth - elementWidth,\r\n left : 0,\r\n bottom : window.innerHeight - 40,\r\n top : headerHeight\r\n };\r\n\r\n if (newBounds.right - newBounds.left < elementWidth) {\r\n newBounds.right = window.innerWidth - elementWidth;\r\n newBounds.left = 0;\r\n }\r\n\r\n // Add bounds padding\r\n const boundsPadding = 10;\r\n newBounds.right -= boundsPadding;\r\n newBounds.left += boundsPadding;\r\n newBounds.top += boundsPadding;\r\n\r\n return newBounds;\r\n };\r\n\r\n const checkOutOfBounds = (position, newBounds) => {\r\n let x = position.x;\r\n let y = position.y;\r\n\r\n const rightOutOfBounds = (x > newBounds.right);\r\n const leftOutOfBounds = (x < newBounds.left);\r\n const bottomOutOfBounds = (y > newBounds.bottom);\r\n const topOutOfBounds = (y < newBounds.top);\r\n\r\n if (rightOutOfBounds) {\r\n x = Math.min(x, newBounds.right);\r\n }\r\n\r\n if (leftOutOfBounds) {\r\n x = Math.max(newBounds.left, x);\r\n }\r\n\r\n if (bottomOutOfBounds) {\r\n y = Math.min(y, newBounds.bottom);\r\n }\r\n\r\n if (topOutOfBounds) {\r\n y = Math.max(y, newBounds.top);\r\n }\r\n\r\n return {x, y};\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const interval = setInterval(() => {\r\n let element = document.getElementById(resizeElementID);\r\n if (!element) return;\r\n\r\n const elementWidth = element.clientWidth;\r\n const elementHeight = element.clientHeight;\r\n\r\n // Calculate new boundary values\r\n const newBounds = getNewBoundary(elementWidth);\r\n\r\n // Move dialog if we are out of bounds\r\n const newPosition = checkOutOfBounds(position, newBounds);\r\n\r\n if (resize) {\r\n const currentDialogSize = {\r\n x: `${elementWidth}px`,\r\n y: `${elementHeight}px`\r\n };\r\n\r\n if (!isEqual(dialogSize, currentDialogSize)) {\r\n setDialogSize(currentDialogSize);\r\n }\r\n }\r\n\r\n if (!isEqual(bounds, newBounds)) {\r\n setBounds(newBounds);\r\n }\r\n\r\n if (!isEqual(position, newPosition)) {\r\n setPosition(newPosition);\r\n }\r\n }, 100);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [open, bounds, position, dialogSize]);\r\n\r\n return (\r\n {\r\n const {x,y} = data;\r\n setPosition({x, y});\r\n }}\r\n >\r\n {\r\n /** Remove tabindex from paper to stop drag/drop issues */\r\n let element = document.getElementById(paperPropID);\r\n element?.parentElement.removeAttribute(\"tabindex\");\r\n }}\r\n aria-labelledby=\"draggable-dialog-title\"\r\n className={clsx(classes.draggableContent, {\r\n [classes.draggableMouseDown]: mouseDown\r\n })}\r\n classes={{\r\n paperFullScreen: classes.draggableBackdropRounded,\r\n scrollPaper: classes.draggableBackdropPaper\r\n }}\r\n slotProps={{\r\n backdrop: {\r\n className: classes.draggableRoundCorner\r\n }\r\n }}\r\n PaperProps={{\r\n id: paperPropID\r\n }}\r\n >\r\n \r\n {/* Draggable title */}\r\n \r\n {title}\r\n \r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {props.children}\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\ninterface ProgressDialogProps {\r\n open: boolean;\r\n text: string;\r\n percent: number;\r\n animated?: boolean\r\n}\r\n\r\nexport const ProgressDialog = (props: ProgressDialogProps) => {\r\n const {open, text, percent, animated=false} = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {text} {percent.toFixed(2)}%\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface LabelCategoryDialogProps {\r\n open: boolean;\r\n onClose(): void\r\n id?: string\r\n}\r\n\r\nexport const LabelCategoryDialog = (props) => {\r\n const {open, onClose, id} = props as LabelCategoryDialogProps;\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const getSelectedLabels = () => {\r\n const selectedLabelIDs = viewer?.highlightedLabels().map(label => label.id);\r\n const nonSelected = selectedLabelIDs ? (selectedLabelIDs.length === 0) : true;\r\n const idSelected = (id !== undefined);\r\n return (nonSelected || idSelected) ? [id] : selectedLabelIDs;\r\n };\r\n\r\n const getCategoryDropdown = () => {\r\n let allCategories = viewer?.getAllCategories();\r\n const highlightedCategories = getSelectedLabels().map(labelID => viewer?.getCategoryByLabelID(labelID));\r\n const choosableCategories = allCategories?.filter(category => !highlightedCategories.includes(category));\r\n const dropDownList: [value: any, text: string][] = choosableCategories ? choosableCategories.map(category => {\r\n return [category.id, category.name];}) : [[0, '']];\r\n return dropDownList;\r\n };\r\n\r\n const getDefaultValue = () => {\r\n const dropDownList = getCategoryDropdown();\r\n if (dropDownList.length === 0) {\r\n return null;\r\n } else {\r\n return dropDownList[0][0];\r\n }\r\n };\r\n\r\n const handleChangeCategory = (value: any) => {\r\n const labelIDs = getSelectedLabels();\r\n viewer.transferLabel(labelIDs, value);\r\n onClose();\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n","import React, {memo} from \"react\";\r\nimport { Grid, InputLabel, Theme, Typography } from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { Draggable } from 'react-beautiful-dnd';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport {\r\n DragDropContext,\r\n Droppable,\r\n OnDragEndResponder\r\n} from 'react-beautiful-dnd';\r\nimport { NumberField } from \".\";\r\nimport {t} from \"../localization\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n draggingListItem: {\r\n background: 'rgb(235,235,235)'\r\n },\r\n staticListItem: {\r\n borderBottom: \"2px dashed lightgray\"\r\n },\r\n flexGrow: {\r\n flexGrow: 1\r\n }\r\n })\r\n);\r\n\r\ninterface DraggableItemProps {\r\n id: string;\r\n primary: string;\r\n secondary: number;\r\n error?: boolean;\r\n index: number;\r\n min?: number,\r\n max?: number,\r\n step?: number\r\n}\r\n\r\ninterface DraggableListItemProps {\r\n item: DraggableItemProps;\r\n index: number;\r\n setData: React.Dispatch;\r\n inputName: string;\r\n listLength: number;\r\n}\r\n\r\nconst DraggableListItem = (props: DraggableListItemProps) => {\r\n const {item, index, setData, inputName, listLength} = props;\r\n const classes = useStyles();\r\n const useStaticListItem = (index === listLength-1) ? '' : classes.staticListItem;\r\n\r\n return (\r\n \r\n {(provided, snapshot) => (\r\n \r\n
\r\n \r\n \r\n {t(\"labels.category-name\")}\r\n \r\n \r\n {inputName}\r\n \r\n \r\n \r\n \r\n {item.primary}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\ninterface DraggableListProps {\r\n items: DraggableItemProps[];\r\n onDragEnd: OnDragEndResponder;\r\n setData: any;\r\n inputName: string;\r\n}\r\n\r\nexport const DraggableList = memo((props: DraggableListProps) => {\r\n const {items, onDragEnd, setData, inputName} = props;\r\n\r\n return (\r\n \r\n \r\n {provided => (\r\n
\r\n {items.map((item, index) => (\r\n \r\n ))}\r\n {provided.placeholder}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n});\r\n","import React, {useEffect, useState} from 'react';\r\nimport {\r\n Checkbox,\r\n Input,\r\n MenuItem,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TablePagination,\r\n TableRow,\r\n TableSortLabel,\r\n Theme,\r\n Typography,\r\n useTheme,\r\n} from '@mui/material';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\r\nimport clsx from 'clsx';\r\nimport {ArrowTooltip, DenseIcon, DenseMenu, EnhancedIconButton} from '.';\r\nimport {useTranslation} from 'react-i18next';\r\nimport {\r\n EnhancedTableBodyProps,\r\n EnhancedTableCellProps,\r\n EnhancedTableCheckboxHeadProps,\r\n EnhancedTableHeadProps,\r\n EnhancedTableProps\r\n} from '../types/enhanced-table';\r\nimport {toLocaleString} from '../utilities/dates';\r\nimport {useContextMenu} from '../hooks';\r\nimport { isHTML } from '../utilities/misc';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n fontWeight: \"bold\",\r\n userSelect: \"none\",\r\n whiteSpace: \"nowrap\"\r\n },\r\n densePadding: {\r\n padding: `${theme.spacing(0.5)} ${theme.spacing(1.0)} !important`,\r\n },\r\n denseFooter: {\r\n height: theme.spacing(4),\r\n minHeight: \"0px\",\r\n overflow: \"hidden\"\r\n },\r\n hiddenSort: {\r\n border: 0,\r\n clip: 'rect(0 0 0 0)',\r\n height: 1,\r\n margin: -1,\r\n overflow: 'hidden',\r\n padding: 0,\r\n position: 'absolute',\r\n top: 20,\r\n width: 1,\r\n },\r\n noSelect: {\r\n userSelect: \"none\"\r\n },\r\n rowDisabled: {\r\n \"& th\": {\r\n opacity: 0.3\r\n },\r\n \"& td\": {\r\n opacity: 0.3\r\n }\r\n },\r\n rowIcon: {\r\n fontSize: \"1em\"\r\n },\r\n buttonCell: {\r\n width: \"1%\",\r\n whiteSpace: \"nowrap\",\r\n padding: \"0px !important\"\r\n },\r\n buttonHeader: {\r\n padding: \"0px !important\"\r\n },\r\n tableRow: {\r\n \"& td:last-child\": {\r\n paddingRight: `${theme.spacing(1.5)} !important`\r\n },\r\n \"& td:first-child\": {\r\n paddingLeft: `${theme.spacing(1.5)} !important`\r\n },\r\n \"& th:last-child\": {\r\n paddingRight: `${theme.spacing(1.5)} !important`\r\n },\r\n \"& th:first-child\": {\r\n paddingLeft: `${theme.spacing(1.5)} !important`\r\n }\r\n }\r\n }),\r\n);\r\n\r\n/** Column header with label and checkbox */\r\nexport const EnhancedTableCheckboxHead = (props: EnhancedTableCheckboxHeadProps) => {\r\n const {label, values, onChange} = props;\r\n\r\n const numVisible = values.filter(x => x === true).length;\r\n const checked = numVisible > 0;\r\n const indeterminate = checked && (values.length !== numVisible);\r\n\r\n return (\r\n \r\n {\r\n // Stop click event from triggering sort function\r\n event.stopPropagation();\r\n }}\r\n onChange={(event) => {\r\n onChange(indeterminate || event.target.checked);\r\n }}\r\n />\r\n\r\n {label}\r\n \r\n );\r\n};\r\n\r\nconst EnhancedTableHead = (props: EnhancedTableHeadProps) => {\r\n const {sortDir, sortBy, onRequestSort, columns, actions, dense} = props;\r\n\r\n const classes = useStyles();\r\n\r\n const createSortHandler = (property) => (event) => {\r\n onRequestSort(event, property);\r\n };\r\n\r\n const hasActions = actions.length > 0;\r\n\r\n return (\r\n \r\n \r\n {columns.map(column => {\r\n\r\n const {id, label, center, sortable=true} = column;\r\n\r\n return (\r\n \r\n {/* Non-sortable column header */}\r\n {!sortable && \r\n {label}\r\n }\r\n\r\n {/* Sortable column header */}\r\n {sortable && \r\n {label}\r\n {sortBy === id ? (\r\n \r\n {sortDir === 'desc' ? 'sorted descending' : 'sorted ascending'}\r\n \r\n ) : null}\r\n }\r\n \r\n );\r\n })}\r\n\r\n {/** Custom actions */}\r\n {hasActions && }\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nconst EnhancedTableBody = (props: EnhancedTableBodyProps) => {\r\n const {rows, actions, columns, onClick, dense,\r\n setSelectedRow, handleContextMenu} = props;\r\n\r\n const classes = useStyles();\r\n const hasActions = actions.length > 0;\r\n\r\n return (\r\n \r\n {rows.map(row =>\r\n \r\n {columns.map((column, index) =>\r\n \r\n )}\r\n\r\n {/** Custom actions */}\r\n {hasActions && \r\n {\r\n setSelectedRow(row);\r\n handleContextMenu(event);\r\n }}\r\n >\r\n \r\n \r\n }\r\n\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst EnhancedTableCell = (props: EnhancedTableCellProps) => {\r\n const {row, column, dense, index, onClick} = props;\r\n\r\n const theme = useTheme();\r\n const {i18n} = useTranslation();\r\n\r\n const key = `${row.id}_${column.id}`;\r\n const text = row[column.id] as any;\r\n const isString = typeof(text) === \"string\";\r\n const condition = (column.numeric || text.length <= 100);\r\n\r\n const cellContent = (column, content, condition) => {\r\n if (column.date) {\r\n return toLocaleString(content, i18n.language);\r\n }\r\n\r\n const renderAsHTML = isHTML(content);\r\n\r\n if (renderAsHTML) {\r\n if (column.tooltip) {\r\n return (\r\n \r\n
\r\n \r\n );\r\n } else {\r\n return (\r\n
\r\n );\r\n }\r\n }\r\n\r\n if (isString) {\r\n content = condition ? content : `${content.slice(0,100)}...`;\r\n }\r\n\r\n if (column.tooltip) {\r\n return (\r\n \r\n
\r\n {content}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return content;\r\n };\r\n\r\n const title = isString ? text : \"\";\r\n const content = cellContent(column, text, condition);\r\n\r\n return (\r\n {\r\n if (row.disabled || !onClick) return;\r\n onClick(row, index);\r\n }}\r\n style={{\r\n ...(column.wordBreak && {\r\n wordBreak: \"break-all\"\r\n }),\r\n ...(column.forceOpacity && {\r\n opacity: 1.0\r\n }),\r\n ...(column.pointer && {\r\n cursor: \"pointer\"\r\n }),\r\n ...(column.center && {\r\n textAlign: \"center\"\r\n }),\r\n ...(dense && {\r\n padding: `${theme.spacing(0.5)} ${theme.spacing(1.0)}`\r\n })\r\n }}\r\n title={title}\r\n >\r\n {content}\r\n \r\n );\r\n};\r\n\r\nexport const EnhancedTable = (props: EnhancedTableProps) => {\r\n const {state, columns, rows, actions=[], onClick,\r\n dense = true, maxHeight} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const {t} = useTranslation();\r\n\r\n const contextMenu = useContextMenu();\r\n\r\n const [search, setSearch] = useState(\"\");\r\n const [selectedRow, setSelectedRow] = useState(null);\r\n\r\n const onSearch = (event) => {\r\n const value = event.target.value;\r\n state.handleSearchChange(value);\r\n setSearch(value);\r\n };\r\n\r\n useEffect(() => {\r\n // Restore previously saved search terms\r\n //setSearch(state.query);\r\n\r\n // Reset the search string\r\n setSearch(\"\");\r\n state.handleSearchChange(\"\");\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (state.pageNumber <= maxPageNumber) return;\r\n state.handlePageNumberChange(null, maxPageNumber);\r\n }, [state.pageNumber, rows]);\r\n\r\n let tableRows = state.handleSearch(columns, [...rows]);\r\n\r\n // Number of rows must be calculated after\r\n // search and before pagination\r\n const numberOfRows = tableRows.length;\r\n\r\n tableRows = state.handleSort(columns, tableRows);\r\n tableRows = state.handlePages(tableRows);\r\n\r\n // Make sure our max page is valid\r\n const maxPageNumber = Math.max(\r\n 0, Math.ceil(numberOfRows / state.rowsPerPage) - 1);\r\n const pageNumber = Math.min(state.pageNumber, maxPageNumber);\r\n\r\n const searchable = columns.filter(\r\n column => column.searchable).length > 0;\r\n\r\n return (\r\n \r\n
\r\n \r\n\r\n {/** Search bar */}\r\n {searchable && }\r\n />}\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n `${page.from}–${page.to} ${t(\"enhanced-table.displayed-rows-of\")} ${page.count !== -1 ?\r\n page.count : `${t(\"enhanced-table.displayed-rows-more-than\")} ${page.to}`}`\r\n }\r\n getItemAriaLabel={(type) => {\r\n if (type === \"next\") {\r\n return t(\"enhanced-table.next-page\");\r\n } else if (type === \"previous\") {\r\n return t(\"enhanced-table.prev-page\");\r\n } else {\r\n return \"\";\r\n }\r\n }}\r\n page={pageNumber}\r\n classes={{\r\n toolbar: dense ? classes.denseFooter : \"\"\r\n }}\r\n onPageChange={state.handlePageNumberChange}\r\n onRowsPerPageChange={state.handleRowsPerPageChange}\r\n />\r\n\r\n \r\n
\r\n\r\n {/** Context menu */}\r\n \r\n {actions.map((action, index) =>\r\n {\r\n if (!selectedRow) return;\r\n action.onClick(selectedRow);\r\n contextMenu.handleClose();\r\n }}\r\n >\r\n \r\n {action.icon}\r\n \r\n\r\n \r\n {action.title}\r\n \r\n \r\n )}\r\n \r\n\r\n
\r\n );\r\n};\r\n","import React, { useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DenseIcon } from \"./dense-icon\";\r\nimport { Divider, Grow, Menu, MenuItem, MenuItemProps, Typography, useTheme } from \"@mui/material\";\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport ArrowRight from '@mui/icons-material/ArrowRight';\r\nimport clsx from 'clsx';\r\nimport { DividerProps } from \"@mui/material/Divider/Divider\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n subMenuRoot: (props: {open: boolean}) => ({\r\n justifyContent: \"space-between\",\r\n backgroundColor: props.open\r\n ? theme.palette.action.hover\r\n : 'rgba(0,0,0,0)'\r\n }),\r\n subMenuLabel: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }\r\n}));\r\n\r\ninterface NestedMenuItemProps extends Omit {\r\n parentMenuOpen: boolean\r\n label?: React.ReactNode\r\n rightIcon?: React.ReactNode\r\n dense: boolean,\r\n ContainerProps?: React.HTMLAttributes & React.RefAttributes\r\n button?: true | undefined\r\n}\r\n\r\n/**\r\n * https://github.com/azmenak/material-ui-nested-menu-item\r\n * Modifications have been made to close submenu when open is false.\r\n * This is required because we use keepMounted on all of our menus. Also\r\n * modified the right arrow to be better aligned\r\n**/\r\nconst NestedMenuItem = React.forwardRef((props: NestedMenuItemProps, ref) => {\r\n const {\r\n parentMenuOpen,\r\n label,\r\n rightIcon = ,\r\n dense = false,\r\n children,\r\n className,\r\n tabIndex: tabIndexProp,\r\n ContainerProps: ContainerPropsProp = {},\r\n ...MenuItemProps\r\n } = props;\r\n\r\n const {ref: containerRefProp, ...ContainerProps} = ContainerPropsProp;\r\n\r\n const menuItemRef = useRef(null);\r\n useImperativeHandle(ref, () => menuItemRef.current);\r\n\r\n const containerRef = useRef(null);\r\n useImperativeHandle(containerRefProp, () => containerRef.current);\r\n\r\n const menuContainerRef = useRef(null);\r\n\r\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(false);\r\n\r\n const handleMouseEnter = (event: React.MouseEvent) => {\r\n setIsSubMenuOpen(true);\r\n\r\n if (ContainerProps?.onMouseEnter) {\r\n ContainerProps.onMouseEnter(event);\r\n }\r\n };\r\n\r\n const handleMouseLeave = (event: React.MouseEvent) => {\r\n setIsSubMenuOpen(false);\r\n\r\n if (ContainerProps?.onMouseLeave) {\r\n ContainerProps.onMouseLeave(event);\r\n }\r\n };\r\n\r\n // Check if any immediate children are active\r\n const isSubmenuFocused = () => {\r\n const active = containerRef.current?.ownerDocument?.activeElement;\r\n for (const child of menuContainerRef.current?.children ?? []) {\r\n if (child === active) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n const handleFocus = (event: React.FocusEvent) => {\r\n if (event.target === containerRef.current) {\r\n setIsSubMenuOpen(true);\r\n }\r\n\r\n if (ContainerProps?.onFocus) {\r\n ContainerProps.onFocus(event);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n return;\r\n }\r\n\r\n if (isSubmenuFocused()) {\r\n event.stopPropagation();\r\n }\r\n\r\n const active = containerRef.current?.ownerDocument?.activeElement;\r\n\r\n if (event.key === 'ArrowLeft' && isSubmenuFocused()) {\r\n containerRef.current?.focus();\r\n }\r\n\r\n if (\r\n event.key === 'ArrowRight' &&\r\n event.target === containerRef.current &&\r\n event.target === active\r\n ) {\r\n const firstChild = menuContainerRef.current?.children[0] as\r\n | HTMLElement\r\n | undefined;\r\n firstChild?.focus();\r\n }\r\n };\r\n\r\n /** Custom Code */\r\n useEffect(() => {\r\n setIsSubMenuOpen(false);\r\n }, [parentMenuOpen]);\r\n\r\n const open = isSubMenuOpen && parentMenuOpen;\r\n const classes = useStyles({open});\r\n\r\n // Root element must have a `tabIndex` attribute for keyboard navigation\r\n let tabIndex;\r\n if (!props.disabled) {\r\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\r\n }\r\n\r\n return (\r\n \r\n \r\n {/** Custom Code */}\r\n
{label}
\r\n
{rightIcon}
\r\n \r\n\r\n {\r\n setIsSubMenuOpen(false);\r\n }}\r\n >\r\n
\r\n {children}\r\n
\r\n \r\n
\r\n );\r\n});\r\n\r\ninterface NestedMenuProps {\r\n parentMenuOpen: boolean;\r\n text: string;\r\n ref?: any;\r\n icon: any;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const NestedMenu = React.forwardRef((props: NestedMenuProps, ref) => {\r\n const {parentMenuOpen, text, icon} = props;\r\n\r\n return (\r\n \r\n {icon}\r\n {text}\r\n \r\n }\r\n ref={ref}\r\n parentMenuOpen={parentMenuOpen}\r\n >\r\n {props.children}\r\n \r\n );\r\n});\r\n\r\nexport const MenuDivider = React.forwardRef((props: DividerProps, ref) => {\r\n return (\r\n \r\n );\r\n});\r\n\r\ninterface DenseMenuProps {\r\n open: boolean;\r\n onClose(): void;\r\n onEnter?(): void;\r\n anchorPosition: {left: number, top: number};\r\n keepMounted?: boolean;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const DenseMenu = React.forwardRef((props: DenseMenuProps, ref) => {\r\n const {keepMounted=true, children, onEnter, ...other} = props;\r\n\r\n const theme = useTheme();\r\n\r\n const {enteringScreen} = theme.transitions.duration;\r\n\r\n const transitionProps = {\r\n timeout: {\r\n enter: enteringScreen,\r\n exit: 0\r\n },\r\n ...(onEnter) && {onEnter}\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\n","\r\nimport React, {\r\n memo,\r\n ReactElement,\r\n useCallback,\r\n useMemo,\r\n useState,\r\n useEffect\r\n} from \"react\";\r\nimport {\r\n Grow,\r\n Tooltip,\r\n TooltipProps,\r\n useTheme\r\n} from \"@mui/material\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport { isHTML } from \"../utilities/misc\";\r\n\r\nexport const ArrowTooltip = (props: TooltipProps) => {\r\n return (\r\n \r\n {props.children as any}\r\n \r\n );\r\n};\r\n\r\ninterface CursorTooltipProps {\r\n lines: string[]\r\n children: ReactElement,\r\n disableToggle?: boolean\r\n}\r\n\r\nexport const CursorTooltip = memo((props: CursorTooltipProps) => {\r\n const {lines, children, disableToggle = false} = props;\r\n\r\n const theme = useTheme();\r\n const {t} = useTranslation();\r\n\r\n const [hidden, setHidden] = useState(false);\r\n\r\n const title = useMemo(() => {\r\n if ((lines.length === 0) || hidden) return;\r\n\r\n const modifiedLines = [...lines];\r\n\r\n if ((lines.length > 0) && !disableToggle) {\r\n const text = t('tooltip.toggle-tooltip');\r\n modifiedLines.push(text);\r\n }\r\n\r\n return modifiedLines.map((value, index) => {\r\n const renderAsHTML = isHTML(value);\r\n\r\n const text = renderAsHTML\r\n ? (
)\r\n : value;\r\n\r\n return (\r\n
\r\n {text}\r\n
\r\n );\r\n });\r\n }, [lines, hidden]);\r\n\r\n const onClose = useCallback(() => {\r\n setHidden(false);\r\n }, []);\r\n\r\n const {enteringScreen} = theme.transitions.duration;\r\n\r\n const transitionProps = {\r\n timeout: {\r\n enter: enteringScreen,\r\n exit: 0\r\n }\r\n };\r\n\r\n /** Tooltip toggle hotkey event listener */\r\n useEffect(() => {\r\n if (disableToggle) return;\r\n\r\n if (lines.length === 0) {\r\n setHidden(false);\r\n return;\r\n }\r\n\r\n const onHotkey = (event => {\r\n if (event.target instanceof HTMLInputElement) {\r\n return;\r\n }\r\n\r\n if (event.which === 192) {\r\n setHidden(!hidden);\r\n }\r\n });\r\n\r\n window.addEventListener('keydown', onHotkey, false);\r\n\r\n return () => {\r\n window.removeEventListener('keydown', onHotkey, false);\r\n };\r\n }, [lines, hidden]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from \"react\";\r\nimport {\r\n InputAdornment,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n Switch,\r\n TextField,\r\n Theme,\r\n Typography,\r\n IconButton,\r\n Input,\r\n useTheme,\r\n} from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport clsx from 'clsx';\r\nimport slash from 'slash';\r\nimport { dialog } from \"../electron-modules\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { UnitConverter } from \"../viewer/js/utilities\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport FolderIcon from \"@mui/icons-material/Folder\";\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\nimport {AttachFile, Delete, Save} from \"@mui/icons-material\";\r\nimport { MenuDivider } from \"./menu-items\";\r\nimport { useAuth } from \"../hooks\";\r\nimport { ArrowTooltip } from \"./tooltips\";\r\nimport { isHTML } from \"../utilities/misc\";\r\n\r\nconst converter = new UnitConverter();\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n flexibleHeight: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n filePath: {\r\n wordBreak: \"break-word\"\r\n },\r\n fileButtonDiv: {\r\n paddingTop: theme.spacing(1),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n },\r\n dropdownWithLabel: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n paddingBottom: {\r\n paddingBottom: `${theme.spacing(1)} !important`,\r\n },\r\n inputParent: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n minHeight: theme.spacing(3),\r\n paddingBottom: theme.spacing(0.5)\r\n },\r\n inputLabel: {\r\n height: \"fit-content\"\r\n },\r\n inputSwitch: {\r\n marginTop: \"-0.25rem\"\r\n },\r\n inputFolder: {\r\n padding: theme.spacing(0.5),\r\n marginBottom: theme.spacing(-0.5)\r\n },\r\n error: {\r\n color: theme.palette.error.main\r\n },\r\n warning: {\r\n color: theme.palette.warning.main\r\n },\r\n })\r\n);\r\n\r\ninterface NumberData {\r\n value: number | string;\r\n error: boolean;\r\n index?: number;\r\n}\r\n\r\ninterface NumberFieldProps {\r\n data: NumberData;\r\n setData: React.Dispatch>;\r\n min: number;\r\n max: number;\r\n step?: number;\r\n adornment?: string;\r\n index?: number;\r\n units?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const NumberField = (props: NumberFieldProps) => {\r\n const {units=false, ...other} = props;\r\n\r\n return units\r\n ? \r\n : ;\r\n};\r\n\r\ninterface NumberFieldWithLabelProps extends NumberFieldProps {\r\n title: string;\r\n label?: string;\r\n}\r\n\r\nexport const NumberFieldWithLabel = (props: NumberFieldWithLabelProps) => {\r\n const {title, label, ...other} = props;\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n
\r\n\r\n \r\n {label}\r\n \r\n\r\n \r\n
\r\n );\r\n};\r\n\r\nconst NumberFieldNoUnits = (props: NumberFieldProps) => {\r\n const {data, setData, min, max, adornment, step=1.0, index=0, ...other} = props;\r\n\r\n const {t} = useTranslation();\r\n\r\n // NOTE: Space character is required for even positioning in UI\r\n const helperText = data.error\r\n ? t('dialog.accepted-range-is-min-max', {min, max})\r\n : undefined;\r\n\r\n const endAdornment = adornment\r\n ? {adornment}\r\n : null;\r\n\r\n return (\r\n {\r\n let hasError = false;\r\n\r\n let floatValue = parseFloat(event.target.value);\r\n if (isNaN(floatValue)) {\r\n hasError = true;\r\n }\r\n\r\n if (floatValue > max) {\r\n hasError = true;\r\n } else if (floatValue < min) {\r\n hasError = true;\r\n }\r\n\r\n setData({\r\n value: event.target.value,\r\n error: hasError,\r\n index: index\r\n });\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst NumberFieldWithUnits = (props: NumberFieldProps) => {\r\n const {data, min, max, setData, step=1.0, ...other} = props;\r\n const units = LocalScene.viewProjectionUnits;\r\n\r\n const [convertedMin, setConvertedMin] = useState(0);\r\n const [convertedMax, setConvertedMax] = useState(0);\r\n const [convertedData, setConvertedData] = useState({\r\n value: 0,\r\n error: false\r\n });\r\n\r\n const convertNearestStep = (value, roundFunc) => {\r\n if (units === \"m\") {\r\n return value;\r\n };\r\n\r\n const converted = converter.convert(value, \"m\", units, 2);\r\n let numSteps = roundFunc(converted / step);\r\n return parseFloat((numSteps * step).toFixed(2));\r\n };\r\n\r\n useEffect(() => {\r\n // Initial conversion from meters to new units\r\n setConvertedMin(convertNearestStep(min, Math.floor));\r\n setConvertedMax(convertNearestStep(max, Math.ceil));\r\n setConvertedData({\r\n value: convertNearestStep(data.value, Math.floor),\r\n error: data.error\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Update the original state\r\n setData({...convertedData});\r\n }, [convertedData]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface DropdownWithLabelProps {\r\n title: string;\r\n label?: string;\r\n value: string | number;\r\n onChange: (value) => void;\r\n disabled?: boolean;\r\n seperator?: number[]\r\n options: [value: any, text: string][];\r\n}\r\n\r\nexport const DropdownWithLabel = (props: DropdownWithLabelProps) => {\r\n const {title, label, value, onChange, disabled=false,\r\n seperator, options} = props;\r\n\r\n const classes = useStyles();\r\n\r\n let menuOptions = optionsToDropdown(options, seperator);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n
\r\n\r\n {label && \r\n {label}\r\n }\r\n\r\n {\r\n onChange(event.target.value);\r\n }}\r\n >\r\n {menuOptions}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const optionsToDropdown = (options: [value: any, text: string][], seperator?: number[]) => {\r\n let menuOptions = [];\r\n\r\n options.forEach((data, index) => {\r\n const [value, text] = data;\r\n\r\n menuOptions.push((\r\n \r\n {text}\r\n \r\n ));\r\n\r\n const hasSeperator = seperator && seperator.includes(index);\r\n const isLastItem = index === options.length - 1;\r\n\r\n if (hasSeperator && !isLastItem) {\r\n menuOptions.push((\r\n \r\n ));\r\n }\r\n });\r\n\r\n return menuOptions;\r\n};\r\n\r\ninterface FolderWithLabelProps {\r\n title: string;\r\n label?: string;\r\n value: string | number;\r\n onChange: (value) => void;\r\n}\r\n\r\nexport const FolderWithLabel = (props: FolderWithLabelProps) => {\r\n const {title, label, value, onChange} = props;\r\n const classes = useStyles();\r\n\r\n const handleFolderChange = async () => {\r\n const result = await dialog.showOpenDialog({\r\n properties: ['openDirectory']\r\n });\r\n\r\n if (result.canceled) return;\r\n let folderPath = slash(result.filePaths[0]);\r\n onChange(folderPath);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {value ? value : label}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface FileWithLabelProps {\r\n title: string;\r\n label?: string;\r\n filter: {name: string; extensions: string[]}[]\r\n value: string | number;\r\n onChange: (value) => void;\r\n optional?: boolean;\r\n saveFile?: boolean;\r\n}\r\n\r\nexport const FileWithLabel = (props: FileWithLabelProps) => {\r\n const {title, label, filter, value, onChange,\r\n optional=false, saveFile=false} = props;\r\n\r\n const classes = useStyles();\r\n\r\n const handleFileChange = () => {\r\n dialog.showOpenDialog({\r\n title: title,\r\n properties: ['openFile'],\r\n filters: filter\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n\r\n let folderPath = slash(result.filePaths[0]);\r\n onChange(folderPath);\r\n });\r\n };\r\n\r\n const handleSaveFileChange = () => {\r\n dialog.showSaveDialog({\r\n title: title,\r\n filters: filter\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n onChange(result.filePath);\r\n });\r\n };\r\n\r\n const handleChange = saveFile\r\n ? handleSaveFileChange\r\n : handleFileChange;\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n\r\n
\r\n {value && optional && ( {\r\n onChange(null);\r\n }}\r\n size=\"large\">\r\n \r\n )}\r\n\r\n \r\n {saveFile ? \r\n : }\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n {value ? value : label}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface InputWithLabelProps {\r\n title: string;\r\n label?: string | JSX.Element;\r\n value: string | number;\r\n onChange: (value) => void;\r\n required?: boolean;\r\n disabled?: boolean;\r\n error?: boolean;\r\n multiline?: boolean;\r\n placeholder?: string;\r\n}\r\n\r\nexport const InputWithLabel = (props: InputWithLabelProps) => {\r\n const classes = useStyles();\r\n const {value, title, onChange, label, required=true,\r\n disabled=false, error=false, ...other} = props;\r\n\r\n const [touched, setTouched] = useState(false);\r\n\r\n const onInputChange = useCallback((event) => {\r\n onChange(event.target.value);\r\n }, [onChange]);\r\n\r\n const onBlur = useCallback(() => {\r\n setTouched(true);\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n
\r\n\r\n \r\n\r\n \r\n {label}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface TextWithLabelProps {\r\n title: string\r\n value?: string\r\n label?: string | JSX.Element\r\n}\r\n\r\nexport const TextWithLabel = (props: TextWithLabelProps) => {\r\n const {title, label, value} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n\r\n const renderAsHTML = isHTML(value);\r\n const style = theme.typography.body1 as any;\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n
\r\n\r\n {value && \r\n {renderAsHTML && }\r\n\r\n {!renderAsHTML && \r\n {value}\r\n }\r\n }\r\n\r\n {label && \r\n {label}\r\n }\r\n
\r\n );\r\n};\r\n\r\ninterface CheckboxWithLabelProps {\r\n title: string;\r\n label?: string;\r\n value: boolean;\r\n onChange: (value) => void;\r\n}\r\n\r\nexport const CheckboxWithLabel = (props: CheckboxWithLabelProps) => {\r\n const {title, label, value, onChange} = props;\r\n\r\n const classes = useStyles();\r\n\r\n const onCheckboxChange = useCallback((_, checked) => {\r\n onChange(checked);\r\n }, [onChange]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n\r\n \r\n
\r\n\r\n \r\n {label}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface SwitchWithLabelProps {\r\n label: string;\r\n tooltip?: string;\r\n startAdornment?: React.ReactNode;\r\n checked: boolean;\r\n onChange: (event, checked: boolean) => void;\r\n}\r\n\r\nexport const SwitchWithLabel = (props: SwitchWithLabelProps) => {\r\n const {label, tooltip, startAdornment, checked, onChange} = props;\r\n\r\n const theme = useTheme();\r\n\r\n return (\r\n
\r\n
\r\n {startAdornment}\r\n\r\n \r\n {label}\r\n \r\n
\r\n\r\n {tooltip && (\r\n \r\n \r\n \r\n )}\r\n\r\n {!tooltip && (\r\n \r\n )}\r\n\r\n
\r\n );\r\n};\r\n\r\ninterface EditableTextFieldProps {\r\n title: string;\r\n value: string;\r\n onSubmit(value: string): void;\r\n}\r\n\r\nexport const EditableTextField = (props: EditableTextFieldProps) => {\r\n const {title, value, onSubmit} = props;\r\n\r\n const theme = useTheme();\r\n const {permissions} = useAuth();\r\n\r\n const [editing, setEditing] = useState(false);\r\n const [newValue, setNewValue] = useState(\"\");\r\n\r\n const renderAsHTML = isHTML(value);\r\n const style = theme.typography.body1 as any;\r\n\r\n useEffect(() => {\r\n setEditing(false);\r\n }, [value]);\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n\r\n {permissions.edit && {\r\n onSubmit(newValue);\r\n }}\r\n onClick={() => {\r\n setNewValue(value);\r\n }}\r\n />}\r\n\r\n
\r\n\r\n {editing && {\r\n setNewValue(event.target.value);\r\n }}\r\n />}\r\n\r\n {!editing && \r\n {renderAsHTML && }\r\n\r\n {!renderAsHTML && \r\n {value}\r\n }\r\n }\r\n
\r\n );\r\n};\r\n\r\ninterface EditableDropdownProps {\r\n title: string;\r\n value: string;\r\n onSubmit(value: string): void;\r\n options: [value: any, text: string][];\r\n}\r\n\r\nexport const EditableDropdown = (props: EditableDropdownProps) => {\r\n const {title, value, onSubmit, options} = props;\r\n\r\n const theme = useTheme();\r\n const {permissions} = useAuth();\r\n const {t} = useTranslation();\r\n\r\n const [editing, setEditing] = useState(false);\r\n const [newValue, setNewValue] = useState(null);\r\n\r\n const currentOption = options\r\n .find(option => option[0] === value);\r\n\r\n const newOption = options\r\n .find(option => option[0] === newValue);\r\n\r\n const menuOptions = useMemo(() => {\r\n return options.map((option, index) => {\r\n const [value, text] = option;\r\n\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n });\r\n }, [options]);\r\n\r\n useEffect(() => {\r\n setEditing(false);\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (newOption) return;\r\n setEditing(false);\r\n }, [newOption]);\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n\r\n {permissions.edit && onSubmit(newValue)}\r\n onClick={() => setNewValue(value)}\r\n />}\r\n
\r\n\r\n {editing && {\r\n setNewValue(event.target.value);\r\n }}\r\n >\r\n {menuOptions}\r\n }\r\n\r\n {!editing && \r\n {currentOption ? currentOption[1] : t(\"general.unknown\")}\r\n }\r\n
\r\n );\r\n};\r\n\r\ninterface EditButtonProps {\r\n onClick?: () => void;\r\n onSubmit: () => void;\r\n onCancel?: () => void;\r\n editing: boolean;\r\n setEditing: React.Dispatch;\r\n}\r\n\r\nexport const EditButtonGroup = (props: EditButtonProps) => {\r\n const {onClick, onSubmit, onCancel, editing, setEditing} = props;\r\n\r\n const theme = useTheme();\r\n\r\n return (\r\n
\r\n {/** Edit */}\r\n {!editing && {\r\n setEditing(true);\r\n onClick?.();\r\n }}\r\n size=\"large\">\r\n \r\n }\r\n\r\n {/** Cancel */}\r\n {editing && {\r\n setEditing(false);\r\n onCancel?.();\r\n }}\r\n style={{\r\n color: theme.palette.error.main\r\n }}\r\n size=\"large\">\r\n \r\n }\r\n\r\n {/** Confirm */}\r\n {editing && {\r\n setEditing(false);\r\n onSubmit();\r\n }}\r\n style={{\r\n color: theme.palette.success.main\r\n }}\r\n size=\"large\">\r\n \r\n }\r\n\r\n
\r\n );\r\n};","import React from 'react';\r\nimport {\r\n Box,\r\n LinearProgress,\r\n LinearProgressProps,\r\n Typography\r\n} from '@mui/material';\r\nimport { roundDigit } from '../viewer/js/utilities';\r\n\r\n// TODO: replace other linear progress with label with this (might need extra customization)\r\n\r\nexport const LinearProgressWithLabel = (props: LinearProgressProps & { value: number }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {`${roundDigit(props.value, 2)}%`}\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport {Box} from '@mui/material';\r\n\r\ninterface TabPanelProps {\r\n value: number;\r\n index: number;\r\n PanelProps?: object;\r\n BoxProps?: object;\r\n children: React.ReactNode\r\n}\r\n\r\nexport const TabPanel = (props: TabPanelProps) => {\r\n const {PanelProps={}, BoxProps={}, value, index} = props;\r\n\r\n const visible = value === index;\r\n\r\n return (\r\n \r\n {visible && \r\n \r\n {props.children}\r\n \r\n
}\r\n \r\n );\r\n};\r\n\r\nexport const TabProps = (index) => {\r\n return {\r\n id: `tab-${index}`,\r\n 'aria-controls': `tabpanel-${index}`,\r\n };\r\n};","import { Button, Chip, Divider, Icon, Theme, Typography, useTheme } from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport React, { useEffect, useState } from \"react\";\r\nimport clsx from 'clsx';\r\nimport { ArrowTooltip } from \".\";\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { DividerProps } from \"@mui/material/Divider\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n verticalDivider: {\r\n padding: theme.spacing(0.5, 0.25),\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n icons: {\r\n '& > .fa': {\r\n margin: theme.spacing(2),\r\n },\r\n display: \"flex\",\r\n padding: theme.spacing(0.5),\r\n },\r\n iconButton: {\r\n minWidth: \"0px !important\",\r\n flex: 1\r\n },\r\n iconSize: {\r\n fontSize: \"1.0em\",\r\n width: \"auto\"\r\n },\r\n success: {\r\n color: theme.palette.success.main\r\n },\r\n error: {\r\n color: theme.palette.error.main\r\n },\r\n disabled: {\r\n opacity: 0.3\r\n },\r\n listIcon: {\r\n color: \"rgba(0, 0, 0, 0.54)\",\r\n fontSize: \"20px\"\r\n }\r\n })\r\n);\r\n\r\ninterface DenseDividerProps extends DividerProps {\r\n spacing?: number[] | number;\r\n}\r\n\r\nexport const DenseDivider = (props: DenseDividerProps) => {\r\n const {spacing, ...other} = props;\r\n\r\n let spacingDown;\r\n let spacingUp;\r\n\r\n if (typeof(spacing) == \"number\") {\r\n spacingDown = spacing;\r\n spacingUp = spacing;\r\n } else if (typeof(spacing) == \"object\") {\r\n spacingUp = spacing[0];\r\n spacingDown = spacing[1];\r\n } else {\r\n spacingUp = 20;\r\n spacingDown = 20;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface DividerWithTextProps {\r\n label: string;\r\n paddingTop?: number;\r\n paddingBottom?: number;\r\n}\r\n\r\n/**\r\n * Creates a divider with a chip element in the middle. Something\r\n * similar exists in the new material ui (5.x and up), but not in\r\n * our version (4.x), so we make our own instead.\r\n */\r\nexport const DividerWithText = (props: DividerWithTextProps) => {\r\n const theme = useTheme();\r\n\r\n const {label, paddingTop=32, paddingBottom=0} = props;\r\n\r\n return (\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface IconToolBarProps {\r\n margin?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const IconToolBar = (props: IconToolBarProps) => {\r\n const {children, margin=0} = props;\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport const ToolBarDivider = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n {\"|\"}\r\n );\r\n};\r\n\r\ninterface FontAwesomeIconProps {\r\n icon: string;\r\n success?: boolean;\r\n error?: boolean;\r\n disabled?: boolean;\r\n listIcon?: boolean;\r\n color?: \"inherit\" | \"disabled\" | \"success\" | \"error\" | \"primary\" | \"secondary\" | \"action\" | \"info\" | \"warning\";\r\n}\r\n\r\nexport const FontAwesomeIcon = (props: FontAwesomeIconProps) => {\r\n const {icon, color = \"primary\", success, error, disabled, listIcon} = props;\r\n\r\n const classes = useStyles();\r\n const errorColor = error ? classes.error : \"\";\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface ToolBarButtonProps {\r\n icon: string;\r\n title: string;\r\n onClick: (event?) => void;\r\n visible?: boolean;\r\n success?: boolean;\r\n error?: boolean;\r\n disabled?: boolean;\r\n color?: \"inherit\" | \"disabled\" | \"success\" | \"error\" | \"primary\" | \"secondary\" | \"action\" | \"info\" | \"warning\";\r\n}\r\n\r\nexport const ToolBarButton = (props: ToolBarButtonProps) => {\r\n const {icon, visible=true, title, onClick, color, success,\r\n error, disabled, ...other} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const tooltipText = disabled\r\n ? `${title} (${t('toolbar.button-disabled')})`\r\n : title;\r\n\r\n return (\r\n \r\n {visible && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface SlimScrollbarProps {\r\n scrollHeight?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const SlimScrollbar = (props: SlimScrollbarProps) => {\r\n const {scrollHeight, children} = props;\r\n\r\n return (\r\n \r\n {/** Use scroll height that was passed in */}\r\n {scrollHeight && (\r\n {children}\r\n )}\r\n\r\n {/** No scroll height was provided */}\r\n {!scrollHeight && (\r\n {children}\r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface DynamicScrollbarProps {\r\n scrollHeight: number;\r\n scrollPercent: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const DynamicScrollbar = (props: DynamicScrollbarProps) => {\r\n const {scrollHeight, scrollPercent, children} = props;\r\n\r\n const [scroll, setScroll] = useState(false);\r\n const [maxHeight, setMaxHeight] = useState(0);\r\n const listElementID = useState(nanoid())[0];\r\n\r\n const getMaxHeight = () => {\r\n const percentHeight = (scrollPercent/100) * window.innerHeight;\r\n return Math.min(scrollHeight, percentHeight);\r\n };\r\n\r\n const checkScrollHeight = () => {\r\n let element = document.getElementById(listElementID);\r\n if (!element) return;\r\n\r\n const height = element.offsetHeight;\r\n const maxHeight = getMaxHeight();\r\n\r\n setScroll(height > maxHeight);\r\n setMaxHeight(maxHeight);\r\n };\r\n\r\n useEffect(() => {\r\n checkScrollHeight();\r\n window.addEventListener('resize', checkScrollHeight);\r\n\r\n return () => {\r\n window.removeEventListener('resize', checkScrollHeight);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n checkScrollHeight();\r\n }, [children, window.innerHeight]);\r\n\r\n return (\r\n \r\n {(!scroll) && (\r\n
\r\n {children}\r\n
\r\n )}\r\n\r\n {(scroll) && (\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};","import { memo } from \"react\";\r\n\r\n/** Component that only gets evaluated when the open state is modified */\r\nexport const memoWithOpen = (component) => {\r\n const areEqual = (prevProps, nextProps) => {\r\n return prevProps.open === nextProps.open;\r\n };\r\n\r\n return memo(component, areEqual);\r\n};","import {\r\n dialog,\r\n getCurrentWindow,\r\n Menu,\r\n isDevMode,\r\n remote,\r\n shell,\r\n logDirectoryPath,\r\n exitFromApp,\r\n clearTempFolder\r\n} from './electron-modules';\r\nimport {\r\n WorkflowExecutable,\r\n PythonExecutable\r\n} from \"./executable\";\r\nimport {t} from './localization';\r\n\r\nconst menuStateCache = {} as any;\r\n\r\nconst fileMenu = {\r\n get label() {\r\n return t(\"electron-menu.file.header\");\r\n },\r\n submenu: [\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.open-workflow\");\r\n },\r\n click: async () => {\r\n new WorkflowExecutable().run({\r\n commands: []\r\n });\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.global-settings\");\r\n },\r\n click: async () => {\r\n sendToMainWindow('open-global-settings');\r\n }\r\n },\r\n {\r\n type: 'separator'\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.new-project\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"new-project\");\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.open-project\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"load-project\");\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.open-project-cloud\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-cloud-projects\");\r\n }\r\n },\r\n {\r\n id: \"save-project\",\r\n get label() {\r\n return t(\"electron-menu.file.save-project\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"save-project\");\r\n }\r\n },\r\n {\r\n id: \"save-project-as\",\r\n get label() {\r\n return t(\"electron-menu.file.save-as\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"save-project-as\");\r\n }\r\n },\r\n {\r\n type: 'separator'\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.exit-without-saving\");\r\n },\r\n click: async () => {\r\n exitFromApp();\r\n }\r\n },\r\n ]\r\n};\r\n\r\nconst helpMenu = {\r\n get label() {\r\n return t(\"electron-menu.help.header\");\r\n },\r\n submenu: [\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.about\");\r\n },\r\n click: async () => {\r\n sendToMainWindow('open-about');\r\n },\r\n },\r\n {\r\n visible: isDevMode,\r\n accelerator: 'Shift+F12',\r\n get label() {\r\n return t(\"electron-menu.help.dev-tools\");\r\n },\r\n click: () => {\r\n const mainWindow = remote.getCurrentWindow();\r\n mainWindow.toggleDevTools();\r\n },\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.open-logs\");\r\n },\r\n click: async () => {\r\n shell.openPath(logDirectoryPath);\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.clear-cache\");\r\n },\r\n click: async () => {\r\n clearMlResources();\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.support\");\r\n },\r\n click: async () => {\r\n shell.openExternal('https://solv3d.com/support/');\r\n }\r\n },\r\n ]\r\n};\r\n\r\nconst toolsMenu = {\r\n id: 'tools',\r\n get label() {\r\n return t(\"electron-menu.tools.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'projections',\r\n get label() {\r\n return t(\"electron-menu.tools.projections.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'projection-manager',\r\n get label() {\r\n return t(\"electron-menu.tools.projections.manager\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-projection-manager\");\r\n }\r\n },\r\n {\r\n id: 'local-projections',\r\n get label() {\r\n return t(\"electron-menu.tools.projections.local\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-local-projection\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: \"aligner-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.data-aligner.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'aligner-advanced-menu',\r\n enabled: false,\r\n get label() {\r\n return t(\"electron-menu.tools.data-aligner.advanced\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-image-aligner-adv\");\r\n }\r\n },\r\n {\r\n id: 'aligner-basic-menu',\r\n enabled: false,\r\n get label() {\r\n return t(\"electron-menu.tools.data-aligner.basic\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-image-aligner-basic\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: \"training-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.training.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'label-ortho-menu',\r\n enabled: false,\r\n get label() {\r\n return t(\"electron-menu.tools.training.ortho\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-label-ortho\");\r\n }\r\n },\r\n {\r\n id: 'label-scene-menu',\r\n get label() {\r\n return t(\"electron-menu.tools.training.scene\");\r\n },\r\n enabled: false,\r\n click: async () => {\r\n sendToMainWindow(\"open-label-scene\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: 'point-markup-menu',\r\n get label() {\r\n return t(\"electron-menu.tools.markup.header\");\r\n },\r\n submenu: [\r\n {\r\n id: \"point-markup\",\r\n get label() {\r\n return t(\"electron-menu.tools.markup.modify\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-point-markup\");\r\n }\r\n },\r\n {\r\n id: \"data-splitting\",\r\n get label() {\r\n return t(\"electron-menu.tools.markup.split\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-data-splitting\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: 'exporter-menu',\r\n get label() {\r\n return t(\"electron-menu.tools.export.header\");\r\n },\r\n submenu: [\r\n {\r\n id: \"static-exporter-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.export.local\");\r\n },\r\n enabled: false,\r\n click: async () => {\r\n sendToMainWindow(\"open-static-export\");\r\n }\r\n },\r\n {\r\n id: \"cloud-exporter-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.export.cloud\");\r\n },\r\n enabled: false,\r\n click: async () => {\r\n sendToMainWindow(\"open-cloud-export\");\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst debugMenu = {\r\n get label() {\r\n return t(\"electron-menu.debug.refresh\");\r\n },\r\n click: async () => {\r\n await clearTempFolder();\r\n getCurrentWindow().reload();\r\n }\r\n};\r\n\r\nconst sendToMainWindow = (message, payload=null) => {\r\n const mainWindow = remote.getCurrentWindow();\r\n mainWindow.webContents.send(message, payload);\r\n};\r\n\r\nconst clearMlResources = () => {\r\n let exe = new PythonExecutable();\r\n let commands = [\r\n \"-p\", \"remove_ml_resources\",\r\n \"--remove\", true\r\n ];\r\n\r\n exe.run({\r\n commands,\r\n saveLogs: true,\r\n onClose: () => {\r\n dialog.showMessageBox({\r\n type: 'info',\r\n title: t(\"dialog.clear-cache-title\"),\r\n message: t(\"dialog.clear-cache-message\"),\r\n noLink: true\r\n });\r\n }\r\n });\r\n};\r\n\r\nconst setToolEnabled = (toolName, state) => {\r\n const menu = Menu.getApplicationMenu();\r\n const element = menu.getMenuItemById(toolName);\r\n if (!element) return;\r\n element.enabled = state;\r\n};\r\n\r\nconst setMenuState = async toolName => {\r\n if (isDevMode) {\r\n setToolEnabled(toolName, true);\r\n return;\r\n }\r\n\r\n if (toolName in menuStateCache) {\r\n const {running, state} = menuStateCache[toolName];\r\n if (running) return;\r\n\r\n // Apply saved menu state\r\n setToolEnabled(toolName, state);\r\n return;\r\n }\r\n\r\n // Insert default cache values\r\n menuStateCache[toolName] = {\r\n running: true,\r\n state: null\r\n };\r\n\r\n const exe = new PythonExecutable();\r\n\r\n exe.run({\r\n commands: ['--check-tool', toolName],\r\n showStatus: false,\r\n onLine: jsonData => {\r\n if (!jsonData.license_check) return;\r\n let {valid} = jsonData.license_check;\r\n\r\n // Update cache values\r\n menuStateCache[toolName] = {\r\n running: false,\r\n state: valid\r\n };\r\n\r\n setToolEnabled(toolName, valid);\r\n }\r\n });\r\n};\r\n\r\nconst checkAllowedMenuItems = async (isStandardProject: boolean) => {\r\n if (isStandardProject) {\r\n setMenuState('aligner-advanced-menu');\r\n setMenuState('static-exporter-menu');\r\n setMenuState('label-ortho-menu');\r\n setMenuState('label-scene-menu');\r\n } else {\r\n setToolEnabled('aligner-advanced-menu', false);\r\n setToolEnabled('training-menu', false);\r\n setToolEnabled('point-markup-menu', false);\r\n setToolEnabled('static-exporter-menu', false);\r\n setToolEnabled('save-project', false);\r\n setToolEnabled('save-project-as', false);\r\n }\r\n\r\n setMenuState('aligner-basic-menu');\r\n setMenuState('cloud-exporter-menu');\r\n};\r\n\r\nexport const buildElectronMenu = (isStandardProject: boolean) => {\r\n if (!Menu) return;\r\n\r\n const template = isDevMode\r\n ? [fileMenu, toolsMenu, helpMenu, debugMenu]\r\n : [fileMenu, toolsMenu, helpMenu];\r\n\r\n const menu = Menu.buildFromTemplate(template);\r\n Menu.setApplicationMenu(menu);\r\n checkAllowedMenuItems(isStandardProject);\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport { useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { toast } from '../../app';\r\nimport { setLocalizedURL } from '../../localization';\r\nimport { ListItemText, MenuItem, Popover, Typography } from '@mui/material';\r\nimport { buildElectronMenu } from '../../electron-menu';\r\nimport { useViewer } from '../../hooks';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectProjectType } from '../../redux/project-slice';\r\nimport { ProjectType } from '../../types/project';\r\n\r\nexport type Language = 'en' | 'de' | 'es' | 'fr' | 'ja' | 'ar';\r\n\r\nexport enum LanguageOptions {\r\n en = 'English',\r\n de = 'Deutsch',\r\n fr = 'Français',\r\n es = 'Español',\r\n ja = '日本語<',\r\n ar = 'عَرَبِيّ'\r\n};\r\n\r\ninterface LanguagePopoverProps {\r\n anchorEl: null | Element;\r\n onClose?: () => void;\r\n open?: boolean;\r\n}\r\n\r\nexport const LanguagePopover = (props: LanguagePopoverProps) => {\r\n const { anchorEl, onClose, open = false, ...other } = props;\r\n const { i18n, t } = useTranslation();\r\n const {viewer} = useViewer();\r\n\r\n const projectType = useSelector(selectProjectType);\r\n const isStandardProject = projectType === ProjectType.Standard;\r\n\r\n const handleChange = useCallback(async (language: Language): Promise => {\r\n onClose?.();\r\n await i18n.changeLanguage(language);\r\n const message = t('language-picker.language_changed');\r\n toast.success(message);\r\n }, [onClose, t, i18n]);\r\n\r\n useEffect(() => {\r\n buildElectronMenu(isStandardProject);\r\n viewer?.updateCompass();\r\n\r\n // Update language option in url. A small timeout is required\r\n const timeout = setTimeout(() => {\r\n setLocalizedURL(i18n.language);\r\n }, 500);\r\n\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n }, [i18n.language, isStandardProject]);\r\n\r\n return (\r\n \r\n {(Object.keys(LanguageOptions) as Language[]).map((language) => {\r\n const text = LanguageOptions[language];\r\n\r\n return (\r\n handleChange(language)}\r\n key={language}\r\n >\r\n \r\n {text}\r\n \r\n )}\r\n />\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Button, Typography } from '@mui/material';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { usePopover } from '../../hooks';\r\nimport { Language, LanguageOptions, LanguagePopover } from './language-popover';\r\nimport { ArrowTooltip } from '../tooltips';\r\n\r\nexport const LanguageSwitch = () => {\r\n const { i18n, t } = useTranslation();\r\n const popover = usePopover();\r\n let text = LanguageOptions[i18n.language as Language];\r\n\r\n return (\r\n <>\r\n \r\n \r\n {\r\n text ? text : \"Unknown\"\r\n }\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box, Button, Divider, Popover, Typography } from '@mui/material';\r\nimport { Theme, useTheme } from \"@mui/material/styles\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../../hooks';\r\nimport { isCloudSite } from '../../electron-modules';\r\nimport { AccessType } from '../../types/project';\r\n\r\ninterface AccountPopoverProps {\r\n anchorEl: null | Element;\r\n onClose?: () => void;\r\n open?: boolean;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n divider: {\r\n margin: theme.spacing(0, 1.5)\r\n },\r\n buttonParent: {\r\n display: \"flex\",\r\n padding: theme.spacing(0.5),\r\n justifyContent: \"center\"\r\n }\r\n })\r\n);\r\n\r\nexport const AccountPopover = (props: AccountPopoverProps) => {\r\n const { anchorEl, onClose, open = false } = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const { t } = useTranslation();\r\n\r\n const {linkAccount, signOut, loggedIn, user, permissions} = useAuth();\r\n\r\n const getAccountType = () => {\r\n switch (permissions.type) {\r\n case AccessType.ViewOnly:\r\n return t('user-account.view_only');\r\n case AccessType.Standard:\r\n return t('user-account.standard_user');\r\n case AccessType.Admin:\r\n return t('user-account.administrator');\r\n default:\r\n return t('user-account.unknown_user_type');\r\n }\r\n };\r\n\r\n const accountType = getAccountType();\r\n\r\n return (\r\n \r\n {/** Standard user profile */}\r\n {loggedIn && \r\n \r\n {(user?.firstName || user?.lastName) && \r\n {`${user.firstName} ${user.lastName}`}\r\n }\r\n\r\n {isCloudSite && \r\n {`(${accountType})`}\r\n }\r\n\r\n {user?.email && \r\n {user.email}\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n {t(\"user-account.logout_engine_cloud\")}\r\n \r\n \r\n }\r\n\r\n {/** Anonymous view only */}\r\n {!loggedIn && isCloudSite && \r\n \r\n \r\n {t('user-account.accessing_the_project_as_an_anonymous')}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n {t(\"user-account.login_engine_cloud\")}\r\n \r\n \r\n }\r\n\r\n {/** Unlinked account */}\r\n {!loggedIn && !isCloudSite && \r\n \r\n \r\n {t('user-account.an_linked_engine_cloud_account_is_required')}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n {t(\"user-account.login_engine_cloud\")}\r\n \r\n \r\n }\r\n\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\r\nimport { ArrowTooltip } from '../tooltips';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { usePopover } from '../../hooks';\r\nimport { IconButton } from '@mui/material';\r\nimport { AccountPopover } from './account-popover';\r\n\r\nexport const AccountButton = () => {\r\n const { t } = useTranslation();\r\n const popover = usePopover();\r\n\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n ;\r\n};","import React, { useEffect } from \"react\";\r\nimport { toast, Toaster as HotToaster, useToasterStore } from 'react-hot-toast';\r\nimport { useTheme, alpha } from \"@mui/material\";\r\n\r\nexport const Toaster = () => {\r\n const theme = useTheme();\r\n const { toasts } = useToasterStore();\r\n\r\n const maxNumberToasts = 3;\r\n\r\n useEffect(() => {\r\n toasts\r\n .filter((t) => t.visible)\r\n .filter((_, i) => i >= maxNumberToasts)\r\n .forEach((t) => toast.remove(t.id));\r\n }, [toasts]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useCallback } from \"react\";\r\nimport { Theme } from \"@mui/material\";\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport Typography, { TypographyProps } from \"@mui/material/Typography\";\r\nimport { openExternalLink } from \"../urls\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n typographyLink: {\r\n display: \"inline\",\r\n fontWeight: \"bold\",\r\n color: \"rgb(25, 118, 210)\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n textDecorationColor: \"rgb(25, 118, 210, 0.4)\",\r\n }\r\n }\r\n }),\r\n);\r\n\r\ninterface TypographyLinkProps extends TypographyProps {\r\n text: string\r\n url: string\r\n}\r\n\r\nexport const TypographyLink = (props: TypographyLinkProps) => {\r\n const classes = useStyles();\r\n const {text, url, ...other} = props;\r\n\r\n const onClick = useCallback(() => {\r\n openExternalLink(url);\r\n }, [url]);\r\n\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n","import { Theme, Input } from \"@mui/material\";\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport React from \"react\";\r\nimport { useState, useEffect, useCallback } from \"react\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n colorPicker: {\r\n width: \"3.5em\",\r\n height: \"1.25em\",\r\n padding: \"0px\",\r\n border: \"1px solid darkgray\",\r\n borderRadius: \"2px\",\r\n \"&:hover\": {\r\n border: \"1px solid black\"\r\n }\r\n }\r\n })\r\n);\r\n\r\ninterface ColorPickerProps {\r\n value: string;\r\n onSubmit(value): void;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const ColorPicker = (props: ColorPickerProps) => {\r\n const {value, onSubmit, disabled=false} = props;\r\n\r\n const classes = useStyles();\r\n const [color, setColor] = useState(\"#000000\");\r\n\r\n useEffect(() => {\r\n setColor(value);\r\n }, [value]);\r\n\r\n const onChange = useCallback((event) => {\r\n setColor(event.target.value);\r\n }, []);\r\n\r\n return (\r\n {\r\n onSubmit(color);\r\n }}\r\n disableUnderline={true}\r\n classes={{\r\n input: classes.colorPicker\r\n }}\r\n style={{\r\n opacity: disabled ? 0.38: 1\r\n }}\r\n type=\"color\"\r\n />\r\n );\r\n};","import {isDevMode, isElectronApp} from \"./electron-modules\";\r\n\r\ninterface LinkOptions {\r\n target?: string;\r\n name?: string;\r\n}\r\n\r\nconst engineCloudURLKey = \"engineCloudURL\";\r\n\r\nexport let tagQueryString = null;\r\n\r\nexport const setTagQueryString = (value: string) => {\r\n tagQueryString = value;\r\n};\r\n\r\nexport const setEngineCloudURL = (url: string, force: boolean = false): boolean => {\r\n if (!isElectronApp) {\r\n return false;\r\n }\r\n\r\n const currentEngineCloudURL = localStorage.getItem(engineCloudURLKey);\r\n\r\n if (currentEngineCloudURL && !force) {\r\n return false;\r\n }\r\n\r\n if (currentEngineCloudURL === url) {\r\n return false;\r\n }\r\n\r\n localStorage.setItem(engineCloudURLKey, url);\r\n engineCloudURL = url;\r\n\r\n return true;\r\n};\r\n\r\nexport let engineCloudURL = (() => {\r\n if (!isElectronApp) {\r\n return window.location.origin;\r\n }\r\n\r\n const engineCloudURL = localStorage.getItem(engineCloudURLKey);\r\n\r\n if (!engineCloudURL) {\r\n return isDevMode\r\n ? \"http://127.0.0.1:3001\"\r\n : \"https://engine.solv3d.com\";\r\n }\r\n\r\n return engineCloudURL;\r\n})();\r\n\r\nexport const redirectToLogin = () => {\r\n const searchParams = new URLSearchParams({\r\n returnTo: window.location.href\r\n }).toString();\r\n\r\n window.location.href = `/login?${searchParams}`;\r\n};\r\n\r\nexport const openExternalLink = (href: string, options: LinkOptions = {}) => {\r\n let element = document.createElement('a');\r\n\r\n element.setAttribute(\"href\", href);\r\n\r\n if (options.target) {\r\n element.setAttribute(\"target\", options.target);\r\n } else {\r\n element.setAttribute(\"target\", \"_blank\");\r\n }\r\n\r\n if (options.name) {\r\n element.setAttribute('download', options.name);\r\n }\r\n\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n};","import {createSlice} from '@reduxjs/toolkit';\r\n\r\nexport interface AerialViewState {\r\n center: number[];\r\n zoom: number;\r\n rotation: number;\r\n basemap: string;\r\n}\r\n\r\nexport interface SceneCameraState {\r\n camera: string;\r\n fov: number;\r\n angles: number[];\r\n lookat: number[];\r\n orbit: number[];\r\n pivot: number[];\r\n}\r\n\r\ninterface CameraState {\r\n transform: string;\r\n adjustments: object,\r\n height: number;\r\n aerialState: AerialViewState;\r\n sceneState: SceneCameraState;\r\n}\r\n\r\nexport const initialAerialState = {\r\n center: [0, 0],\r\n zoom: 0,\r\n rotation: 0,\r\n basemap: \"open-street-maps\"\r\n} as AerialViewState;\r\n\r\nexport const initialSceneState = {\r\n camera: null,\r\n fov: null,\r\n angles: null,\r\n lookat: null,\r\n orbit: null,\r\n pivot: null\r\n} as SceneCameraState;\r\n\r\nexport const cameraStateSlice = createSlice({\r\n name: 'camera',\r\n initialState: {\r\n transform: null,\r\n adjustments: {},\r\n height: 3.0,\r\n aerialState: initialAerialState,\r\n sceneState: initialSceneState\r\n } as CameraState,\r\n reducers: {\r\n changeCameraTransform: (state, action) => {\r\n state.transform = action.payload;\r\n },\r\n changeCameraState: (state, action) => {\r\n state.sceneState = action.payload;\r\n },\r\n changeCameraHeight: (state, action) => {\r\n state.height = action.payload;\r\n },\r\n changeBasicAdjustments: (state, action) => {\r\n state.adjustments = action.payload;\r\n },\r\n changeSavedAerialState: (state, action) => {\r\n state.aerialState = action.payload;\r\n },\r\n resetCameraState: (state, action) => {\r\n state.sceneState = {...initialSceneState};\r\n },\r\n resetAerialState: (state, action) => {\r\n state.aerialState = {...initialAerialState};\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n changeCameraState,\r\n changeCameraTransform,\r\n changeCameraHeight,\r\n changeBasicAdjustments,\r\n changeSavedAerialState,\r\n resetCameraState,\r\n resetAerialState\r\n} = cameraStateSlice.actions;\r\n\r\nexport default cameraStateSlice.reducer;\r\n\r\nexport const selectCameraHeight = state => state.camera.height;\r\nexport const selectActiveCamera = state => state.camera.sceneState.camera;\r\nexport const selectCameraState = state => state.camera.sceneState;\r\nexport const selectCameraTransform = state => state.camera.transform;\r\nexport const selectBasicAdjustments = state => state.camera.adjustments;\r\nexport const selectSavedAerialState = state => state.camera.aerialState;","/* eslint-disable import/no-webpack-loader-syntax */\r\nimport i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\n\r\nimport en from \"./translations/en.json\";\r\nimport de from \"./translations/de.json\";\r\nimport fr from \"./translations/fr.json\";\r\nimport es from \"./translations/es.json\";\r\nimport ja from \"./translations/ja.json\";\r\nimport ar from \"./translations/ar.json\";\r\n\r\nconst resources = {\r\n en: {translation: en},\r\n de: {translation: de},\r\n fr: {translation: fr},\r\n es: {translation: es},\r\n ja: {translation: ja},\r\n ar: {translation: ar}\r\n};\r\n\r\n/** Makes sure that unsupported languages are ignored */\r\nconst supportedLngs = Object.keys(resources);\r\n\r\ni18n\r\n .use(initReactI18next)\r\n .use(LanguageDetector)\r\n .init({\r\n resources,\r\n detection: {\r\n cookieMinutes: 365*24*60 // one year\r\n },\r\n supportedLngs,\r\n fallbackLng: \"en\",\r\n interpolation: {\r\n escapeValue: false\r\n }\r\n });\r\n\r\nexport default i18n;\r\nexport const t = i18n.t;","export * from \"./i18n\";\r\n\r\n/** Add the language flag to the specified url */\r\nexport const getLocalizedURL = (url: string, language: string) => {\r\n return url.includes(\"?\")\r\n ? `${url}&lng=${language}`\r\n : `${url}?lng=${language}`;\r\n};\r\n\r\n/** Update the window url to include the language flag */\r\nexport const setLocalizedURL = (language: string) => {\r\n const url = new URL(window.location as any);\r\n url.searchParams.set('lng', language);\r\n window.history.pushState({}, '', url as any);\r\n};\r\n","import {\r\n isDevMode,\r\n app,\r\n fs,\r\n fse,\r\n child,\r\n process,\r\n logDirectoryPath\r\n} from \"./electron-modules\";\r\nimport path from \"path\";\r\nimport manifest from \"../package.json\";\r\nimport slash from \"slash\";\r\n\r\nconst engineMessageTypeJSON = \"NODEJSJSONDATA\";\r\n\r\ninterface ExeRunOptions {\r\n commands: any[];\r\n showStatus?: boolean;\r\n saveLogs?: boolean;\r\n onLine?: (data) => void;\r\n onLogs?: (message: string) => void;\r\n onClose?: (error: boolean) => void;\r\n}\r\n\r\nconst getDevModeConfig = () => {\r\n if (!isDevMode) {\r\n return false;\r\n }\r\n\r\n const appPath = slash(app.getAppPath());\r\n const text = fs.readFileSync(`${appPath}/develop.env`);\r\n const data = JSON.parse(text);\r\n\r\n if (data.testing) {\r\n console.warn(\"Running executable in dev mode\");\r\n }\r\n\r\n return data;\r\n};\r\n\r\nconst devModeConfig = getDevModeConfig();\r\n\r\nclass Executable {\r\n public exePath: string;\r\n public exeName: string;\r\n public running: boolean;\r\n private error = false;\r\n public child;\r\n public developerKey: string;\r\n public spawnDetached: boolean;\r\n public logText = [];\r\n private showStatus = true;\r\n\r\n constructor(exePath, exeName) {\r\n this.exePath = exePath;\r\n this.exeName = exeName;\r\n this.running = false;\r\n this.error = false;\r\n this.child = null;\r\n this.spawnDetached = false;\r\n }\r\n\r\n get path() {\r\n let basePath;\r\n let appPath = slash(app.getAppPath());\r\n let executablePath;\r\n\r\n if (devModeConfig) {\r\n if (devModeConfig.testing && this instanceof PythonExecutable) {\r\n executablePath = devModeConfig['testing-python'];\r\n } else {\r\n executablePath = devModeConfig[this.developerKey];\r\n }\r\n } else {\r\n // Calculate path using root + folder and name\r\n basePath = path.dirname(appPath);\r\n basePath = path.dirname(basePath);\r\n basePath = path.dirname(basePath);\r\n executablePath = path.join(basePath, this.exePath, this.exeName);\r\n }\r\n\r\n return executablePath;\r\n }\r\n\r\n statusMessage(message) {\r\n if (!this.showStatus) return;\r\n console.log(`[pid = ${this.child.pid}]: ${message}`);\r\n }\r\n\r\n parseCommandsList(commands) {\r\n // Convert objects to modified json\r\n for (let i=0;i {\r\n return ((index % 2) === 0)\r\n ? text\r\n : `\"${text}\"`;\r\n }).join(\" \");\r\n }\r\n\r\n run(options: ExeRunOptions) {\r\n if (this.running) {\r\n console.log(\"Cannot launch multiple instances\");\r\n return;\r\n }\r\n\r\n const {\r\n showStatus = true,\r\n saveLogs = false,\r\n commands = [],\r\n onClose,\r\n onLine,\r\n onLogs\r\n } = options;\r\n\r\n this.running = true;\r\n this.error = false;\r\n this.logText = [];\r\n this.showStatus = showStatus;\r\n\r\n let commandList = this.parseCommandsList(commands);\r\n let executablePath = this.path;\r\n\r\n let cwd = path.dirname(executablePath);\r\n this.child = child.spawn(executablePath, commandList, {\r\n cwd: cwd,\r\n env: {\r\n ...process.env,\r\n PYTHONUNBUFFERED: true,\r\n NODEJS: true\r\n },\r\n detached: this.spawnDetached\r\n });\r\n\r\n if (!this.child.pid) {\r\n console.error(`Error launching ${this.exeName} exe`);\r\n if (onClose) {\r\n onClose(true);\r\n }\r\n\r\n return;\r\n }\r\n\r\n let copyPasteCommands = this.copyableCommands(commandList);\r\n this.statusMessage(`${this.path} ${copyPasteCommands}`);\r\n\r\n this.child.on('close', () => {\r\n this.statusMessage(`close`);\r\n\r\n if (saveLogs) {\r\n let commandIndex = commandList.indexOf(\"-p\") + 1;\r\n if (commandIndex > 0) {\r\n let commandName = commandList[commandIndex];\r\n saveLogFile(commandName, this.logText);\r\n }\r\n }\r\n\r\n if (onClose) {\r\n onClose(this.error);\r\n }\r\n\r\n this.error = false;\r\n this.running = false;\r\n this.child = null;\r\n });\r\n\r\n if (onLine || onLogs || saveLogs) {\r\n this.child.stderr.on('data', (data) => {\r\n this.parseLines(data, onLine, onLogs);\r\n });\r\n\r\n this.child.stdout.on('data', (data) => {\r\n this.parseLines(data, onLine, onLogs);\r\n });\r\n }\r\n\r\n return this.child;\r\n }\r\n\r\n /** @private */\r\n parseLines(data, onLine: (data) => void, onLogs: (message: string) => void) {\r\n let dataString = data.toString();\r\n let lines = dataString.split(\"\\n\");\r\n\r\n lines.forEach(line => {\r\n line = line.trim();\r\n if (line === \"\") {\r\n return;\r\n }\r\n\r\n // Parse our response and only keep engine json response\r\n let split = line.split(\":\");\r\n let messageType = split[0].trim();\r\n let messageData = split.slice(1).join(\":\").trim();\r\n\r\n if (messageType === engineMessageTypeJSON) {\r\n try {\r\n let jsonData = JSON.parse(messageData);\r\n if (onLine) {\r\n onLine(jsonData);\r\n }\r\n } catch(err) {\r\n if (onLine) {\r\n onLine({});\r\n }\r\n }\r\n } else {\r\n if (onLogs) {\r\n onLogs(line);\r\n }\r\n this.logText.push(line);\r\n }\r\n });\r\n }\r\n\r\n destroy() {\r\n if (!this.running) {\r\n return;\r\n }\r\n\r\n this.running = false;\r\n this.error = true;\r\n\r\n try {\r\n child.execSync(\r\n `(Get-WmiObject -Class Win32_Process -Filter \"ProcessId = ${this.child.pid} OR ParentProcessId = ${this.child.pid}\").Terminate()`,\r\n {shell: \"powershell.exe\"}\r\n );\r\n } catch {\r\n // Do nothing\r\n }\r\n }\r\n}\r\n\r\nexport class PythonExecutable extends Executable {\r\n constructor() {\r\n super(\"exe-engine\", \"engine.exe\");\r\n this.developerKey = \"exe-python\";\r\n window.onbeforeunload = () => {\r\n this.destroy();\r\n };\r\n }\r\n\r\n write(text) {\r\n if (!this.running) {\r\n return;\r\n }\r\n\r\n this.child.stdin.write(text);\r\n }\r\n}\r\n\r\nexport class WorkflowExecutable extends Executable {\r\n constructor() {\r\n super(\"../\", `${manifest.workflowName}.exe`);\r\n this.developerKey = \"exe-main\";\r\n this.spawnDetached = true;\r\n }\r\n}\r\n\r\nconst saveLogFile = async (logPrefix, logText) => {\r\n const maxLogFiles = 50;\r\n\r\n const dateString = new Date()\r\n .toISOString()\r\n .replaceAll(\":\", \"-\");\r\n\r\n const logPath = path.join(\r\n logDirectoryPath,\r\n `${logPrefix} ${dateString}.txt`\r\n );\r\n\r\n const logs = logText.join(\"\\n\");\r\n await fse.writeFile(logPath, logs);\r\n\r\n const filenames = await fse.readdir(logDirectoryPath);\r\n if (filenames.length <= maxLogFiles) {\r\n return;\r\n }\r\n\r\n let oldest = new Date();\r\n let oldestFilePath;\r\n\r\n for (let filename of filenames) {\r\n const filePath = path.join(logDirectoryPath, filename);\r\n const stats = await fse.stat(filePath);\r\n\r\n if (stats.birthtime < oldest) {\r\n oldest = stats.birthtime;\r\n oldestFilePath = filePath;\r\n }\r\n }\r\n\r\n try {\r\n await fse.remove(oldestFilePath);\r\n } catch {\r\n // Nothing\r\n }\r\n};\r\n\r\nexport const trackToolUsage = (toolName: string) => {\r\n if (isDevMode) return;\r\n\r\n (async () => {\r\n new PythonExecutable().run({\r\n commands: ['--check-tool', toolName]\r\n });\r\n })();\r\n};","import React, {useEffect, useState, memo} from \"react\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {fs, isStaticSite} from '../electron-modules';\r\nimport {DraggableDialog, IconToolBar, ToolBarButton, ToolBarDivider} from \"../components\";\r\nimport {\r\n FormHelperText,\r\n MenuItem,\r\n Select\r\n} from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {dialog} from \"../electron-modules\";\r\nimport {\r\n pngFilter\r\n} from \"../file-extensions\";\r\nimport slash from \"slash\";\r\nimport { useViewer } from \"../hooks\";\r\nimport { openExternalLink } from \"../urls\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n profileContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"100%\"\r\n },\r\n toolbarDropdown: {\r\n flex: 1,\r\n paddingLeft: theme.spacing(1),\r\n paddingRight: theme.spacing(1)\r\n },\r\n profileChart: {\r\n flex: 1,\r\n overflow: \"hidden\",\r\n padding: theme.spacing(2)\r\n }\r\n })\r\n);\r\n\r\ninterface PointProfileProps {\r\n open: boolean;\r\n setOpen: (state: boolean) => void;\r\n}\r\n\r\nexport const PointProfile = memo((props: PointProfileProps) => {\r\n const {open, setOpen} = props;\r\n\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const [samplingType, setSamplingType] = useState('lowest');\r\n const [displayUnits, setDisplayUnits] = useState('m');\r\n\r\n const onRefModified = (container) => {\r\n if (!container) return;\r\n viewer.initProfileContainer(samplingType, displayUnits);\r\n };\r\n\r\n const reloadPointsProfile = () => {\r\n viewer.refreshPointProfile();\r\n };\r\n\r\n const resetPointsProfileView = () => {\r\n viewer.resetPointProfileView();\r\n };\r\n\r\n const savePointProfileImage = () => {\r\n if (isStaticSite) {\r\n savePointProfileImageBrowser();\r\n } else {\r\n savePointProfileImageElectron();\r\n }\r\n };\r\n\r\n const savePointProfileImageBrowser = () => {\r\n const imageBase64 = viewer.getPointProfileImage();\r\n const name = `${viewer.projectName}.png`;\r\n openExternalLink(imageBase64, {name});\r\n };\r\n\r\n const savePointProfileImageElectron = () => {\r\n dialog.showSaveDialog({\r\n defaultPath: viewer.projectName,\r\n filters: [...pngFilter],\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n\r\n if (result.filePath) {\r\n const filePath = slash(result.filePath);\r\n const imageBase64 = viewer.getPointProfileImage();\r\n let imageBase64Data = imageBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n\r\n const imageBuffer = Buffer.from(imageBase64Data, 'base64');\r\n fs.writeFileSync(filePath, imageBuffer, {encoding: \"base64\"});\r\n console.log(`Point Profile Image saved to ${filePath}`);\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n return;\r\n };\r\n\r\n const updateUnits = (event) => {\r\n setDisplayUnits(event.target.value);\r\n };\r\n\r\n const updateSamplingType = (event) => {\r\n setSamplingType(event.target.value);\r\n };\r\n\r\n const onClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n viewer?.setPointProfileSampling(samplingType);\r\n }, [viewer, samplingType]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointProfileUnits(displayUnits);\r\n }, [viewer, displayUnits]);\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n viewer?.resetPointProfile();\r\n }, [viewer, open]);\r\n\r\n return (\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n {t('units.meters')}\r\n {t('units.feet')}\r\n {t('units.survey-feet')}\r\n \r\n {t('profile.profile-units')}\r\n
\r\n\r\n
\r\n \r\n {t('profile.highest')}\r\n {t('profile.lowest')}\r\n {t('profile.all-points')}\r\n \r\n {t('profile.profile-type')}\r\n
\r\n\r\n \r\n\r\n {/* Refresh points base on view */}\r\n \r\n\r\n {/* Reset zoom and position */}\r\n \r\n\r\n {/* Download profile */}\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n );\r\n});","import path from \"path\";\r\nimport {app, storage, fs} from \"./electron-modules\";\r\nimport manifest from \"../package.json\";\r\n\r\nconst changeDuplicateNames = (projections) => {\r\n const projectionsByName = {};\r\n\r\n projections.forEach((projection) => {\r\n if (!projectionsByName[projection.name]) {\r\n projectionsByName[projection.name] = 2;\r\n } else {\r\n const newName = `${projection.name} (${projectionsByName[projection.name]})`;\r\n projectionsByName[projection.name]++;\r\n projection.name = newName;\r\n }\r\n });\r\n};\r\n\r\nexport const setStoragePath = (userSettings, isStaticSite) => {\r\n if (isStaticSite) return;\r\n\r\n const storagePath = path.join(app.getPath('appData'), 'SOLV3D Data');\r\n const engineStoragePath = path.join(app.getPath('appData'), `${manifest.workflowName}/storage`);\r\n const viewerStoragePath = path.join(app.getPath('appData'), `${manifest.productName}/storage`);\r\n\r\n if (!fs.existsSync(storagePath)) {\r\n fs.mkdirSync(storagePath);\r\n }\r\n\r\n for (const settingName of userSettings) {\r\n let oldName = path.join(viewerStoragePath, `${settingName}.json`);\r\n let newName = path.join(storagePath, `${settingName}.json`);\r\n if (fs.existsSync(oldName) && !fs.existsSync(newName)) {\r\n fs.copyFileSync(oldName, newName);\r\n }\r\n }\r\n if (fs.existsSync(path.join(storagePath, 'user-projections.json'))) {\r\n storage.setDataPath(storagePath);\r\n return;\r\n }\r\n\r\n const engineProjectionExist = fs.existsSync(path.join(engineStoragePath, 'user-projections.json'));\r\n const viewerProjectionExist = fs.existsSync(path.join(viewerStoragePath, 'projection.json'));\r\n\r\n let projectionData = [];\r\n if (viewerProjectionExist) {\r\n projectionData = [\r\n ...projectionData,\r\n ...storage.getSync('projection', {dataPath: viewerStoragePath})];\r\n }\r\n if (engineProjectionExist) {\r\n let engineProjections = storage.getSync('user-projections', {dataPath: engineStoragePath});\r\n Object.keys(engineProjections).forEach((key) => {\r\n let data = engineProjections[key];\r\n if ('transform' in data) {\r\n data.transform = {\r\n origin: data.transform.origin,\r\n translation: data.transform.translation,\r\n rotation: data.transform.rotation,\r\n scale: data.transform.scale\r\n };\r\n }\r\n let finalData = {type: 'proj4', name: key, ...data};\r\n projectionData.push(finalData);\r\n });\r\n }\r\n if (viewerProjectionExist && engineProjectionExist) {\r\n changeDuplicateNames(projectionData);\r\n }\r\n storage.setDataPath(storagePath);\r\n storage.setSync('user-projections', projectionData);\r\n};\r\n","import { nanoid } from '@reduxjs/toolkit';\r\nimport path from 'path';\r\nimport {setStoragePath} from \"./move-settings\";\r\n\r\n/** Electron specific modules that will fail for static html site */\r\n\r\nconst getCloudProjectID = () : string => {\r\n const pattern = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;\r\n const url = new URL(window.location.href);\r\n const parts = url.pathname.split(\"/\");\r\n return parts.find(x => pattern.test(x));\r\n};\r\n\r\nconst checkForCloudSite = (cloudProjectID) => {\r\n const url = new URL(window.location.href);\r\n const parts = url.pathname.split(\"/\");\r\n const hasViewer = parts.includes(\"viewer\");\r\n return hasViewer && !!cloudProjectID;\r\n};\r\n\r\nexport const electron = window.require\r\n ? window.require(\"electron\")\r\n : null;\r\n\r\nexport const child = electron\r\n ? window.require(\"child_process\")\r\n : null;\r\n\r\nexport const process = electron\r\n ? window.require(\"process\")\r\n : null;\r\n\r\nexport const remote = electron?.remote;\r\nexport const shell = electron?.shell;\r\nexport const ipcRenderer = electron?.ipcRenderer;\r\nexport const dialog = remote?.dialog;\r\nexport const app = remote?.app;\r\nexport const getCurrentWindow = remote?.getCurrentWindow;\r\nexport const Menu = remote?.Menu;\r\nexport const fs = remote?.require('fs');\r\nexport const fse = remote?.require('fs-extra');\r\nexport const glob = remote?.require('glob');\r\n\r\nexport const cloudProjectID = getCloudProjectID();\r\nexport const isStaticSite = !electron;\r\nexport const isElectronApp = !!electron;\r\nexport const isCloudSite = checkForCloudSite(cloudProjectID);\r\n\r\nexport const storage = electron\r\n ? remote.require('electron-json-storage')\r\n : null;\r\n\r\nexport const isDevMode = remote\r\n ? (app.isPackaged === false)\r\n : false;\r\n\r\nexport const tempDirectoryPath = app\r\n ? path.join(app.getPath('userData'), \"temp\", `temp-${nanoid()}`)\r\n : null;\r\n\r\nexport const logDirectoryPath = app\r\n ? path.join(app.getPath('userData'), \"logs\")\r\n : null;\r\n\r\nexport const getTemporaryFile = (suffix) => {\r\n return path.join(tempDirectoryPath, `${nanoid()}.${suffix}`);\r\n};\r\n\r\nexport const exitFromApp = async () => {\r\n await clearTempFolder();\r\n app.exit();\r\n};\r\n\r\nexport const clearTempFolder = async () => {\r\n if (isStaticSite) return;\r\n\r\n if (!fse.existsSync(tempDirectoryPath)) return;\r\n const filenames = await fse.readdir(tempDirectoryPath);\r\n const numRemoved = filenames.length;\r\n\r\n await fse.remove(tempDirectoryPath);\r\n if (numRemoved === 0) return;\r\n\r\n console.log(`Deleted ${numRemoved} temporary files`);\r\n};\r\n\r\nconst createInitialFolders = () => {\r\n if (isStaticSite) return;\r\n\r\n if (!fs.existsSync(tempDirectoryPath)) {\r\n console.log(\"Creating temporary folder...\");\r\n fs.mkdirSync(tempDirectoryPath, {recursive: true});\r\n }\r\n\r\n if (!fs.existsSync(logDirectoryPath)) {\r\n console.log(\"Creating log output folder...\");\r\n fs.mkdirSync(logDirectoryPath);\r\n }\r\n};\r\n\r\nexport const registerEvent = (eventName, callback) => {\r\n if(!ipcRenderer) return;\r\n ipcRenderer.removeAllListeners(eventName);\r\n ipcRenderer.on(eventName, callback);\r\n};\r\n\r\ncreateInitialFolders();\r\n\r\nconst userSettings = ['default-settings', 'global-settings'];\r\nsetStoragePath(userSettings, isStaticSite);","import { AssetType, WebSourceAsset } from \"../../redux/assets-slice\";\r\n\r\nexport const isModelFile = (asset) => {\r\n return (asset.type === AssetType.IFC)\r\n || (asset.type === AssetType.DXF)\r\n || (asset.type === AssetType.SHP);\r\n};\r\n\r\nexport const isStreamablePointsFile = (asset) => {\r\n return (asset.type === AssetType.Encompass)\r\n || (asset.type === AssetType.Potree);\r\n};\r\n\r\nexport const isRawPointsFile = (asset) => {\r\n return (asset.type === AssetType.LAS)\r\n || (asset.type === AssetType.E57Points);\r\n};\r\n\r\nexport const getModelLayers = (asset) => {\r\n return asset.data.map(layer => ({\r\n name: layer.name,\r\n originalId: layer.id,\r\n visible: layer.visible,\r\n color: layer.color\r\n }));\r\n};\r\n\r\nexport const getWebmapLayers = (asset: WebSourceAsset) => {\r\n return asset.data.layers.map(layer => ({\r\n originalId: layer.id,\r\n visible: layer.visible,\r\n identifier: String(layer.identifier),\r\n name: String(layer.name)\r\n }));\r\n};\r\n\r\nexport const getBaseAsset = (asset) => {\r\n return {\r\n name: asset.name,\r\n visible: asset.visible,\r\n originalId: asset.id,\r\n type: asset.type,\r\n };\r\n};\r\n\r\nexport const getTagsData = (asset) => {\r\n return asset.data.items.map(tag => {\r\n const values = {\r\n originalId: tag.id,\r\n name: tag.name,\r\n comment: tag.comment,\r\n date: tag.date,\r\n x: tag.x,\r\n y: tag.y,\r\n } as any;\r\n\r\n if (\"z\" in tag) {\r\n values.z = tag.z;\r\n }\r\n\r\n if (\"sceneState\" in tag) {\r\n values.sceneState = tag.sceneState;\r\n }\r\n\r\n if (\"annotations\" in tag) {\r\n values.annotations = tag.annotations\r\n .map(annotation => withOriginalID(annotation));\r\n }\r\n\r\n return values;\r\n });\r\n};\r\n\r\nexport const getImageData = (asset) => {\r\n return asset.data.map(image => {\r\n const values = {\r\n originalId: image.id,\r\n filename: image.name, // used for backwards compatability. replace with fileName after all clients are upgraded\r\n x: image.x,\r\n y: image.y,\r\n z: image.z,\r\n roll: image.roll,\r\n pitch: image.pitch,\r\n yaw: image.yaw\r\n };\r\n\r\n /** Planar images have additional information */\r\n if (asset.type === AssetType.Planar) {\r\n return {\r\n ...values,\r\n config: image.config\r\n };\r\n }\r\n\r\n return values;\r\n });\r\n};\r\n\r\ninterface ObjectProps {\r\n id: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport const withOriginalID = (object: ObjectProps) => {\r\n const {id, ...other} = object;\r\n return {originalId: id, ...other};\r\n};","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport {unknownProjectionMeters} from '../projections';\r\n\r\nexport interface Projection {\r\n type: string,\r\n name?: string,\r\n string: string,\r\n default?: boolean,\r\n transform?: Transform\r\n}\r\n\r\nexport interface Transform {\r\n origin: number[];\r\n translation: number[];\r\n rotation: number;\r\n scale: number;\r\n}\r\n\r\ninterface ProjectionData {\r\n data: Projection;\r\n view: Projection;\r\n measureUnits: string\r\n}\r\n\r\nexport const projectionsSlice = createSlice({\r\n name: 'projections',\r\n initialState: {\r\n data: unknownProjectionMeters,\r\n view: unknownProjectionMeters,\r\n measureUnits: \"m\"\r\n } as ProjectionData,\r\n reducers: {\r\n updateDataProjection: (state, action: PayloadAction) => {\r\n state.data = action.payload;\r\n },\r\n updateViewProjection: (state, action: PayloadAction) => {\r\n state.view = action.payload;\r\n },\r\n changeMeasureUnits: (state, action: PayloadAction) => {\r\n state.measureUnits = action.payload;\r\n },\r\n }\r\n});\r\n\r\nexport const {\r\n updateDataProjection,\r\n updateViewProjection,\r\n changeMeasureUnits\r\n} = projectionsSlice.actions;\r\n\r\nexport default projectionsSlice.reducer;\r\n\r\nexport const selectViewProjection = state => state.projections.view;\r\nexport const selectDataProjection = state => state.projections.data;\r\nexport const selectMeasureUnits = state => state.projections.measureUnits;","import {nanoid, createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport api from '../api';\r\n\r\nexport interface Folder {\r\n name: string;\r\n id: string;\r\n date: string;\r\n default?: boolean;\r\n}\r\n\r\nexport const defaultFolderTitle = 'folder.default-folder';\r\n\r\nconst getByID = (state, folderID: string) => {\r\n return state.find(folder => folder.id === folderID);\r\n};\r\n\r\nconst generateDefaultFolder = () => {\r\n return {\r\n id: nanoid(),\r\n name: defaultFolderTitle,\r\n date: new Date().toISOString(),\r\n default: true\r\n } as Folder;\r\n};\r\n\r\nexport const foldersSlice = createSlice({\r\n name: 'folders',\r\n initialState: [\r\n generateDefaultFolder()\r\n ],\r\n reducers: {\r\n createFolder: (state, action: PayloadAction) => {\r\n const name = action.payload;\r\n\r\n const folder = {\r\n id: nanoid(),\r\n name,\r\n date: new Date().toISOString(),\r\n default: false\r\n } as Folder;\r\n\r\n state.push(folder);\r\n },\r\n updateFolder: (state, action: PayloadAction<{\r\n folderID: string,\r\n name?: string\r\n }>) => {\r\n const {folderID, ...updates} = action.payload;\r\n\r\n const folder = getByID(state, folderID);\r\n if (!folder) return;\r\n\r\n for (let key in updates) {\r\n if (folder.hasOwnProperty(key)) {\r\n folder[key] = updates[key];\r\n };\r\n };\r\n\r\n if (!folder.default) return;\r\n\r\n // Add new default folder\r\n const newDefaultFolder = generateDefaultFolder();\r\n state.push(newDefaultFolder);\r\n\r\n // Set the current folder to custom\r\n folder.default = false;\r\n },\r\n deleteFolder: (state, action: PayloadAction) => {\r\n const folderID = action.payload;\r\n\r\n return state.filter(folder => {\r\n return folder.default || (folder.id !== folderID);\r\n });\r\n },\r\n\r\n /** Websocket specific */\r\n wsCreateFolder: (state, action: PayloadAction) => {\r\n const folder = action.payload;\r\n if (getByID(state, folder.id)) return;\r\n\r\n state.push(folder);\r\n },\r\n wsUpdateFolder: (state, action: PayloadAction) => {\r\n const {id, ...updates} = action.payload;\r\n\r\n let folder = getByID(state, id);\r\n if (!folder) return;\r\n\r\n for (let key in updates) {\r\n if (folder.hasOwnProperty(key)) {\r\n folder[key] = updates[key];\r\n };\r\n };\r\n },\r\n wsDeleteFolder: (state, action: PayloadAction) => {\r\n const folderID = action.payload;\r\n\r\n return state.filter(folder => {\r\n return folder.default || (folder.id !== folderID);\r\n });\r\n },\r\n }\r\n});\r\n\r\n/** Create a new folder and return the new folderID */\r\nexport const createFolder = (name = defaultFolderTitle) => {\r\n return async (dispatch, getState) => {\r\n // Create new folder\r\n dispatch(foldersSlice.actions.createFolder(name));\r\n\r\n const folders = getState().folders as Folder[];\r\n const [folder] = folders.slice(-1);\r\n\r\n // Update cloud site\r\n await api.folders.create(folder);\r\n\r\n return folder;\r\n };\r\n};\r\n\r\nexport const {\r\n wsCreateFolder,\r\n wsUpdateFolder,\r\n wsDeleteFolder,\r\n deleteFolder,\r\n updateFolder\r\n} = foldersSlice.actions;\r\n\r\nexport default foldersSlice.reducer;\r\n\r\nexport const selectDefaultFolder = state =>\r\n state.folders.find(folder => folder.default);\r\n\r\nexport const selectAllFolders = state => state.folders;\r\n","\r\nconst spiralParamaters = (spiral, stepDist, sigDigs) => {\r\n\r\n if (spiral.spiType !== \"clothoid\") {\r\n console.error(`Unsupported Spiral Type: ${spiral.spiType}. Only clothoid spirals detected.`);\r\n return false;\r\n }\r\n\r\n const RL = Math.pow(parseFloat(spiral.constant), 2);\r\n let reverseCurve;\r\n let partial = false;\r\n\r\n if (spiral.radiusEnd === 'INF') {\r\n reverseCurve = true;\r\n } else if (spiral.radiusStart === 'INF'){\r\n reverseCurve = false;\r\n } else {\r\n reverseCurve = (spiral.radiusEnd > spiral.radiusStart);\r\n partial = true;\r\n }\r\n\r\n const cw = spiral.rot === \"cw\";\r\n let L = spiral.length;\r\n\r\n let delta;\r\n if (cw) {//cw\r\n if (reverseCurve){ // cw reverse curve\r\n delta = spiral.dirEnd;\r\n } else { // cw forward curve\r\n delta = -spiral.dirStart;\r\n }\r\n } else {// ccw\r\n if (reverseCurve) {// ccw reverse curve\r\n delta = -spiral.dirEnd;\r\n } else {// ccw forward curve\r\n delta = spiral.dirStart;\r\n }\r\n }\r\n\r\n let a = spiral.Start[0];\r\n let b = spiral.Start[1];\r\n let c = spiral.End[0];\r\n let d = spiral.End[1];\r\n\r\n let xStart;\r\n let yStart;\r\n\r\n let xEnd;\r\n let yEnd;\r\n\r\n let xCorr=0.0;\r\n let yCorr=0.0;\r\n let deltaCorr = 0.0;\r\n\r\n let segmentMin;\r\n let segmentMax;\r\n\r\n if (partial && !reverseCurve) { //partial forward curve\r\n let ls = RL / spiral.radiusStart;\r\n L += ls;\r\n segmentMin = parseInt((ls * sigDigs).toString());\r\n segmentMax = parseInt((L * sigDigs).toString());\r\n\r\n xCorr = ls - (Math.pow(ls, 5) / (40.0 * RL * RL)) +\r\n (Math.pow(ls, 9) / (3456.0 * Math.pow(RL, 4))) -\r\n (Math.pow(ls, 13) / (599040.0 * Math.pow(RL, 6)));\r\n yCorr = (Math.pow(ls, 3) / (6 * RL)) -\r\n (Math.pow(ls, 7) / (336.0 * Math.pow(RL, 3))) +\r\n (Math.pow(ls, 11) / (42240.0 * Math.pow(RL, 5))) -\r\n (Math.pow(ls, 15) / (9676800.0 * Math.pow(RL, 7)));\r\n deltaCorr = Math.pow(ls, 2) / (2 * RL);\r\n } else if (partial && reverseCurve){\r\n let le = RL / spiral.radiusEnd;\r\n let ls = RL / spiral.radiusStart;\r\n\r\n deltaCorr = Math.pow(le, 2) / (2 * RL);\r\n xCorr = le - (Math.pow(le, 5) / (40.0 * RL * RL)) +\r\n (Math.pow(le, 9) / (3456.0 * Math.pow(RL, 4))) -\r\n (Math.pow(le, 13) / (599040.0 * Math.pow(RL, 6)));\r\n yCorr = (Math.pow(le, 3) / (6 * RL)) -\r\n (Math.pow(le, 7) / (336.0 * Math.pow(RL, 3))) +\r\n (Math.pow(le, 11) / (42240.0 * Math.pow(RL, 5))) -\r\n (Math.pow(le, 15) / (9676800.0 * Math.pow(RL, 7)));\r\n\r\n segmentMin = parseInt((le * sigDigs).toString());\r\n segmentMax = parseInt((ls * sigDigs).toString());\r\n\r\n } else{\r\n segmentMin = 0;\r\n segmentMax = parseInt((L * sigDigs).toString());\r\n }\r\n\r\n let distMin = 1000000;\r\n let deltas = [\r\n delta, delta+deltaCorr, delta-deltaCorr,\r\n -1*(delta)-deltaCorr, -1*(delta)+deltaCorr, -delta];\r\n\r\n let endPointError = true;\r\n let chosenDelta = delta;\r\n\r\n deltas.forEach(deltaTrial => {\r\n let l = segmentMax / sigDigs;\r\n let x = l - (Math.pow(l, 5) / (40.0*RL*RL)) +\r\n (Math.pow(l,9) / (3456.0 * Math.pow(RL,4))) -\r\n (Math.pow(l,13) / (599040.0*Math.pow(RL,6)));\r\n\r\n let y = (Math.pow(l, 3) / (6*RL)) -\r\n (Math.pow(l,7) / (336.0*Math.pow(RL,3))) +\r\n (Math.pow(l, 11) / (42240.0*Math.pow(RL,5))) -\r\n (Math.pow(l, 15) / (9676800.0*Math.pow(RL, 7)));\r\n\r\n x -= xCorr;\r\n y -= yCorr;\r\n\r\n let xDiff = (x * Math.cos(deltaTrial) - y * Math.sin(deltaTrial));\r\n let yDiff = (x * Math.sin(deltaTrial) + y * Math.cos(deltaTrial));\r\n\r\n // console.log(`diffs x: ${xDiff} | y: ${yDiff}`);\r\n\r\n let xRotated;\r\n let yRotated;\r\n if (!reverseCurve) {//forward curve\r\n xRotated = a + xDiff;\r\n if (!cw) {//ccw forward\r\n yRotated = b - yDiff;\r\n } else {//cw forward\r\n yRotated = b + yDiff;\r\n }\r\n let dist = Math.sqrt(Math.pow(xRotated - c, 2)\r\n + Math.pow(yRotated - d, 2));\r\n if (dist < distMin) {\r\n distMin = dist;\r\n xEnd = xRotated;\r\n yEnd = yRotated;\r\n xStart = a;\r\n yStart = b;\r\n chosenDelta = deltaTrial;\r\n }\r\n if (dist <= Math.sqrt(2)*stepDist) {\r\n endPointError = false;\r\n }\r\n } else {//reverse curve\r\n xRotated = c - xDiff;\r\n if (!cw) {//ccw reverse\r\n yRotated = d - yDiff;\r\n } else {//cw reverse\r\n yRotated = d + yDiff;\r\n }\r\n\r\n let dist = Math.sqrt(Math.pow(xRotated - a, 2)\r\n + Math.pow(yRotated - b, 2));\r\n\r\n if (dist < distMin) {\r\n distMin = dist;\r\n xEnd = c;\r\n yEnd = d;\r\n xStart = xRotated;\r\n yStart = yRotated;\r\n chosenDelta = deltaTrial;\r\n }\r\n if (dist <= Math.sqrt(2)*stepDist) {\r\n endPointError = false;\r\n }\r\n }\r\n });\r\n if (endPointError) {\r\n console.error('Error in endpoint calculation');\r\n console.log(`Datum correct data: xDiff: ${a-c} | yDiff: ${b-d}`);\r\n console.log(`${xStart} | ${yStart} | at length ${segmentMin / sigDigs} | 0`);\r\n console.log(`${xEnd} | ${yEnd} | at length ${segmentMax / sigDigs} | ${spiral.length}`);\r\n console.log(`${xStart - a} | ${yStart - b} | at length ${segmentMin / sigDigs} | ${spiral.length}`);\r\n console.log(`${xEnd - c} | ${yEnd - d} | at length ${segmentMax / sigDigs} | ${spiral.length}`);\r\n }\r\n\r\n return {chosenDelta: chosenDelta, xStart: xStart, xEnd: xEnd, yStart: yStart,\r\n yEnd: yEnd, xCorr: xCorr, yCorr:yCorr, reverseCurve: reverseCurve, partial: partial,\r\n segmentMin: segmentMin, segmentMax:segmentMax, RL:RL, cw:cw, a:a, b:b, c:c, d:d\r\n };\r\n};\r\n\r\nexport const spiralIntersect = (spiral, point) => {\r\n const stepDist = 0.01;\r\n const sigDigs = 1000000;\r\n const spiralParams = spiralParamaters(spiral, stepDist, sigDigs);\r\n if (typeof spiralParams === \"boolean\") {\r\n return false;\r\n }\r\n let segmentMin = spiralParams.segmentMin;\r\n let segmentMax = spiralParams.segmentMax;\r\n\r\n // Now that the correct rotation and position corrections have been calculated\r\n // the entire spiral can be calculated, and the closest point to the clicked point can\r\n // be estimated.\r\n let spiralCoord=null;\r\n let distAlong=null;\r\n let distAcross = null;\r\n\r\n for (;segmentMin<=segmentMax;segmentMin+=stepDist*sigDigs) {\r\n if ((segmentMin+=stepDist*sigDigs) > segmentMax){\r\n segmentMin = segmentMax;\r\n }\r\n let l = segmentMin / sigDigs;\r\n\r\n let x = l - (Math.pow(l, 5) / (40.0*spiralParams.RL*spiralParams.RL)) +\r\n (Math.pow(l,9) / (3456.0 * Math.pow(spiralParams.RL,4))) -\r\n (Math.pow(l,13) / (599040.0*Math.pow(spiralParams.RL,6)));\r\n\r\n let y = (Math.pow(l, 3) / (6*spiralParams.RL)) -\r\n (Math.pow(l,7) / (336.0*Math.pow(spiralParams.RL,3))) +\r\n (Math.pow(l, 11) / (42240.0*Math.pow(spiralParams.RL,5))) -\r\n (Math.pow(l, 15) / (9676800.0*Math.pow(spiralParams.RL, 7)));\r\n\r\n x -= spiralParams.xCorr;\r\n y -= spiralParams.yCorr;\r\n\r\n let xDiff = (x * Math.cos(spiralParams.chosenDelta)\r\n - y * Math.sin(spiralParams.chosenDelta));\r\n let yDiff = (x * Math.sin(spiralParams.chosenDelta)\r\n + y * Math.cos(spiralParams.chosenDelta));\r\n let xAtLength, yAtLength, lengthLocal;\r\n if (spiralParams.partial) {\r\n lengthLocal = l - (segmentMin/sigDigs);\r\n } else {\r\n lengthLocal = l;\r\n }\r\n\r\n if (spiralParams.reverseCurve) {\r\n lengthLocal = spiral.length - lengthLocal;\r\n }\r\n\r\n if (!spiralParams.reverseCurve) {//forward curve\r\n xAtLength = spiralParams.a + xDiff;\r\n if (!spiralParams.cw) {//ccw forward\r\n yAtLength = spiralParams.b - yDiff;\r\n } else {//cw forward\r\n yAtLength = spiralParams.b + yDiff;\r\n }\r\n } else {//reverse curve\r\n xAtLength = spiralParams.c - xDiff;\r\n if (!spiralParams.cw) {//ccw reverse\r\n yAtLength = spiralParams.d - yDiff;\r\n } else {//cw reverse\r\n yAtLength = spiralParams.d + yDiff;\r\n }\r\n }\r\n\r\n const distAcrossNew = Math.sqrt(Math.pow(point[0] - xAtLength, 2)\r\n + Math.pow(point[1] - yAtLength, 2));\r\n // console.log(distAcrossNew)\r\n if (distAcross !== null) {\r\n const update = (distAcrossNew 0 ? 'L':'R';\r\n\r\n // console.log(`across: ${distAcross} | along: ${distAlong} | side: ${sideOfLine}`);\r\n\r\n return {distAcross: distAcross, distAlong: distAlong,\r\n sideOfLine:sideOfLine, coordinates:spiralCoord};\r\n};\r\n\r\nexport const lineDist = (geometry) => {\r\n const dist = Math.sqrt(Math.pow(geometry.Start[0] - geometry.End[0], 2) +\r\n Math.pow(geometry.Start[1] - geometry.End[1], 2));\r\n return dist;\r\n};\r\n\r\nexport const curveDist = (geometry) => {\r\n const dist = lineDist(geometry);\r\n const calcAngle = Math.acos(1 - (dist * dist) /\r\n (2 * geometry.radius * geometry.radius));\r\n return geometry.radius * calcAngle;\r\n};","import icon0 from './basic-pin-large-0.png';\r\nimport icon1 from './basic-pin-large-1.png';\r\nimport icon2 from './basic-pin-large-2.png';\r\nimport icon3 from './basic-pin-large-3.png';\r\nimport icon4 from './basic-pin-large-4.png';\r\nimport icon5 from './basic-pin-large-5.png';\r\nimport icon6 from './basic-pin-large-6.png';\r\nimport icon7 from './basic-pin-large-7.png';\r\nimport icon8 from './basic-pin-large-8.png';\r\nimport icon9 from './basic-pin-large-9.png';\r\nimport icon10 from './basic-pin-large-10.png';\r\nimport icon11 from './basic-pin-large-11.png';\r\nimport icon12 from './basic-pin-large-12.png';\r\nimport icon13 from './basic-pin-large-13.png';\r\nimport icon14 from './basic-pin-large-14.png';\r\nimport icon15 from './basic-pin-large-15.png';\r\nimport icon16 from './basic-pin-small-0.png';\r\nimport icon17 from './basic-pin-small-1.png';\r\nimport icon18 from './basic-pin-small-2.png';\r\nimport icon19 from './basic-pin-small-3.png';\r\nimport icon20 from './basic-pin-small-4.png';\r\nimport icon21 from './basic-pin-small-5.png';\r\nimport icon22 from './basic-pin-small-6.png';\r\nimport icon23 from './basic-pin-small-7.png';\r\nimport icon24 from './basic-pin-small-8.png';\r\nimport icon25 from './basic-pin-small-9.png';\r\nimport icon26 from './basic-pin-small-10.png';\r\nimport icon27 from './basic-pin-small-11.png';\r\nimport icon28 from './basic-pin-small-12.png';\r\nimport icon29 from './basic-pin-small-13.png';\r\nimport icon30 from './basic-pin-small-14.png';\r\nimport icon31 from './basic-pin-small-15.png';\r\nimport icon32 from './basic-push-pin-0.png';\r\nimport icon33 from './basic-push-pin-1.png';\r\nimport icon34 from './basic-push-pin-2.png';\r\nimport icon35 from './basic-push-pin-3.png';\r\nimport icon36 from './basic-push-pin-4.png';\r\nimport icon37 from './basic-push-pin-5.png';\r\nimport icon38 from './basic-push-pin-6.png';\r\nimport icon39 from './basic-push-pin-7.png';\r\nimport icon40 from './basic-push-pin-8.png';\r\nimport icon41 from './basic-push-pin-9.png';\r\nimport icon42 from './basic-push-pin-10.png';\r\nimport icon43 from './basic-push-pin-11.png';\r\nimport icon44 from './basic-push-pin-12.png';\r\nimport icon45 from './basic-push-pin-13.png';\r\nimport icon46 from './basic-push-pin-14.png';\r\nimport icon47 from './basic-push-pin-15.png';\r\n\r\nconst textures = {\r\n 'basic-pin-large-0': icon0,\r\n 'basic-pin-large-1': icon1,\r\n 'basic-pin-large-2': icon2,\r\n 'basic-pin-large-3': icon3,\r\n 'basic-pin-large-4': icon4,\r\n 'basic-pin-large-5': icon5,\r\n 'basic-pin-large-6': icon6,\r\n 'basic-pin-large-7': icon7,\r\n 'basic-pin-large-8': icon8,\r\n 'basic-pin-large-9': icon9,\r\n 'basic-pin-large-10': icon10,\r\n 'basic-pin-large-11': icon11,\r\n 'basic-pin-large-12': icon12,\r\n 'basic-pin-large-13': icon13,\r\n 'basic-pin-large-14': icon14,\r\n 'basic-pin-large-15': icon15,\r\n 'basic-pin-small-0': icon16,\r\n 'basic-pin-small-1': icon17,\r\n 'basic-pin-small-2': icon18,\r\n 'basic-pin-small-3': icon19,\r\n 'basic-pin-small-4': icon20,\r\n 'basic-pin-small-5': icon21,\r\n 'basic-pin-small-6': icon22,\r\n 'basic-pin-small-7': icon23,\r\n 'basic-pin-small-8': icon24,\r\n 'basic-pin-small-9': icon25,\r\n 'basic-pin-small-10': icon26,\r\n 'basic-pin-small-11': icon27,\r\n 'basic-pin-small-12': icon28,\r\n 'basic-pin-small-13': icon29,\r\n 'basic-pin-small-14': icon30,\r\n 'basic-pin-small-15': icon31,\r\n 'basic-push-pin-0': icon32,\r\n 'basic-push-pin-1': icon33,\r\n 'basic-push-pin-2': icon34,\r\n 'basic-push-pin-3': icon35,\r\n 'basic-push-pin-4': icon36,\r\n 'basic-push-pin-5': icon37,\r\n 'basic-push-pin-6': icon38,\r\n 'basic-push-pin-7': icon39,\r\n 'basic-push-pin-8': icon40,\r\n 'basic-push-pin-9': icon41,\r\n 'basic-push-pin-10': icon42,\r\n 'basic-push-pin-11': icon43,\r\n 'basic-push-pin-12': icon44,\r\n 'basic-push-pin-13': icon45,\r\n 'basic-push-pin-14': icon46,\r\n 'basic-push-pin-15': icon47,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/basic-pin-large-0.75ec4490.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-1.de25c04d.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-2.23fb938d.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-3.65851ce1.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-4.9966d8be.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-5.790dd84e.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-6.a68198e2.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-7.4c3698cb.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-8.f7c1d345.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-9.a396cd2e.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-10.99e3c8ff.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-11.b8422548.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-12.d24a3926.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-13.fcd61555.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-14.6f043dcd.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-15.7f4dcc36.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-0.ac50d9dd.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-1.d45746d2.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-2.02ae7f5d.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-3.7751012c.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-4.edcfac5a.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-5.42c12183.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-6.542950ea.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-7.bdbb489b.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-8.dd94c859.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-9.78cbab57.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-10.1798390a.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-11.f6c044f3.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-12.5e716d0a.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-13.dca970d3.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-14.1c33bb37.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-15.96c7fac3.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-0.959c4b2f.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-1.a4c240b1.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-2.61523e37.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-3.53684cd6.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-4.626c530e.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-5.493e3493.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-6.9025f632.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-7.be74b86d.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-8.662983fe.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-9.e8c0afd3.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-10.3c7e3c46.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-11.b0a43ba2.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-12.104ba8ac.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-13.30dbf535.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-14.e8adad8f.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-15.1cd5a458.png\";","import icon0 from './001-ahead only.png';\r\nimport icon1 from './002-crossroads.png';\r\nimport icon2 from './003-falling rocks.png';\r\nimport icon3 from './004-give way.png';\r\nimport icon4 from './005-hump.png';\r\nimport icon5 from './006-left turn.png';\r\nimport icon6 from './007-parking.png';\r\nimport icon7 from './008-level crossing.png';\r\nimport icon8 from './009-speed limit.png';\r\nimport icon9 from './010-narrow bridge.png';\r\nimport icon10 from './011-no bike.png';\r\nimport icon11 from './012-no trucks.png';\r\nimport icon12 from './013-no alarm.png';\r\nimport icon13 from './014-no turn left.png';\r\nimport icon14 from './015-no motorcycles.png';\r\nimport icon15 from './016-speed limit.png';\r\nimport icon16 from './017-no overtaking.png';\r\nimport icon17 from './018-pedestrian.png';\r\nimport icon18 from './019-no entry.png';\r\nimport icon19 from './020-u turn.png';\r\nimport icon20 from './021-Two way.png';\r\nimport icon21 from './022-pedestrian crossing.png';\r\nimport icon22 from './023-right turn.png';\r\nimport icon23 from './024-road work.png';\r\nimport icon24 from './025-roundabout.png';\r\nimport icon25 from './026-pedestrian crossing.png';\r\nimport icon26 from './027-Slippery road.png';\r\nimport icon27 from './028-traffic lights.png';\r\nimport icon28 from './029-turn left.png';\r\nimport icon29 from './030-turn right.png';\r\nimport icon30 from './031-uneven.png';\r\nimport icon31 from './032-maximum.png';\r\nimport icon32 from './033-wild animals.png';\r\n\r\nconst textures = {\r\n '001-ahead only': icon0,\r\n '002-crossroads': icon1,\r\n '003-falling rocks': icon2,\r\n '004-give way': icon3,\r\n '005-hump': icon4,\r\n '006-left turn': icon5,\r\n '007-parking': icon6,\r\n '008-level crossing': icon7,\r\n '009-speed limit': icon8,\r\n '010-narrow bridge': icon9,\r\n '011-no bike': icon10,\r\n '012-no trucks': icon11,\r\n '013-no alarm': icon12,\r\n '014-no turn left': icon13,\r\n '015-no motorcycles': icon14,\r\n '016-speed limit': icon15,\r\n '017-no overtaking': icon16,\r\n '018-pedestrian': icon17,\r\n '019-no entry': icon18,\r\n '020-u turn': icon19,\r\n '021-Two way': icon20,\r\n '022-pedestrian crossing': icon21,\r\n '023-right turn': icon22,\r\n '024-road work': icon23,\r\n '025-roundabout': icon24,\r\n '026-pedestrian crossing': icon25,\r\n '027-Slippery road': icon26,\r\n '028-traffic lights': icon27,\r\n '029-turn left': icon28,\r\n '030-turn right': icon29,\r\n '031-uneven': icon30,\r\n '032-maximum': icon31,\r\n '033-wild animals': icon32,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/001-ahead only.b36dbabc.png\";","export default __webpack_public_path__ + \"static/media/002-crossroads.abff42d3.png\";","export default __webpack_public_path__ + \"static/media/003-falling rocks.daff62e3.png\";","export default __webpack_public_path__ + \"static/media/004-give way.e8421679.png\";","export default __webpack_public_path__ + \"static/media/005-hump.b663a44b.png\";","export default __webpack_public_path__ + \"static/media/006-left turn.e8bd0364.png\";","export default __webpack_public_path__ + \"static/media/007-parking.c84744cd.png\";","export default __webpack_public_path__ + \"static/media/008-level crossing.053e35fb.png\";","export default __webpack_public_path__ + \"static/media/009-speed limit.825c6624.png\";","export default __webpack_public_path__ + \"static/media/010-narrow bridge.f8bce357.png\";","export default __webpack_public_path__ + \"static/media/011-no bike.6c786d64.png\";","export default __webpack_public_path__ + \"static/media/012-no trucks.bf3b4ed9.png\";","export default __webpack_public_path__ + \"static/media/013-no alarm.c6732ce5.png\";","export default __webpack_public_path__ + \"static/media/014-no turn left.7a57b70b.png\";","export default __webpack_public_path__ + \"static/media/015-no motorcycles.e72e07b7.png\";","export default __webpack_public_path__ + \"static/media/016-speed limit.96587810.png\";","export default __webpack_public_path__ + \"static/media/017-no overtaking.e093fefa.png\";","export default __webpack_public_path__ + \"static/media/018-pedestrian.49dc27d1.png\";","export default __webpack_public_path__ + \"static/media/019-no entry.31309892.png\";","export default __webpack_public_path__ + \"static/media/020-u turn.cc1171e5.png\";","export default __webpack_public_path__ + \"static/media/021-Two way.dad656b4.png\";","export default __webpack_public_path__ + \"static/media/022-pedestrian crossing.10e3b5d0.png\";","export default __webpack_public_path__ + \"static/media/023-right turn.01949354.png\";","export default __webpack_public_path__ + \"static/media/024-road work.b9ef5c5c.png\";","export default __webpack_public_path__ + \"static/media/025-roundabout.9ba22352.png\";","export default __webpack_public_path__ + \"static/media/026-pedestrian crossing.21ccb02a.png\";","export default __webpack_public_path__ + \"static/media/027-Slippery road.cb01f1f4.png\";","export default __webpack_public_path__ + \"static/media/028-traffic lights.195911bc.png\";","export default __webpack_public_path__ + \"static/media/029-turn left.ebfb7602.png\";","export default __webpack_public_path__ + \"static/media/030-turn right.c33332ed.png\";","export default __webpack_public_path__ + \"static/media/031-uneven.b33d0f06.png\";","export default __webpack_public_path__ + \"static/media/032-maximum.b544a731.png\";","export default __webpack_public_path__ + \"static/media/033-wild animals.96a2df8b.png\";","import icon0 from './001-narrow.png';\r\nimport icon1 from './002-merge.png';\r\nimport icon2 from './003-curve.png';\r\nimport icon3 from './004-curve.png';\r\nimport icon4 from './005-Junction.png';\r\nimport icon5 from './006-curve.png';\r\nimport icon6 from './007-crossroads.png';\r\nimport icon7 from './008-hump.png';\r\nimport icon8 from './009-uneven.png';\r\nimport icon9 from './010-roundabout.png';\r\nimport icon10 from './011-Two way.png';\r\nimport icon11 from './012-Junction.png';\r\nimport icon12 from './013-Junction.png';\r\nimport icon13 from './014-Two way.png';\r\nimport icon14 from './015-level.png';\r\nimport icon15 from './016-warning.png';\r\nimport icon16 from './017-hump.png';\r\nimport icon17 from './018-dock.png';\r\nimport icon18 from './019-merge.png';\r\nimport icon19 from './020-falling rocks.png';\r\nimport icon20 from './021-speed limit.png';\r\nimport icon21 from './022-speed limit.png';\r\nimport icon22 from './023-speed limit.png';\r\nimport icon23 from './024-speed limit.png';\r\nimport icon24 from './025-speed limit.png';\r\nimport icon25 from './026-speed limit.png';\r\nimport icon26 from './027-speed limit.png';\r\nimport icon27 from './028-priority.png';\r\nimport icon28 from './029-no overtaking.png';\r\nimport icon29 from './030-no turn right.png';\r\nimport icon30 from './031-u turn.png';\r\nimport icon31 from './032-no stopping.png';\r\nimport icon32 from './033-no waiting.png';\r\nimport icon33 from './034-ahead.png';\r\nimport icon34 from './035-turn left.png';\r\nimport icon35 from './036-keep left.png';\r\nimport icon36 from './037-direction.png';\r\nimport icon37 from './038-turn left.png';\r\nimport icon38 from './039-roundabout.png';\r\nimport icon39 from './040-no entry.png';\r\nimport icon40 from './041-parking.png';\r\nimport icon41 from './042-priority.png';\r\nimport icon42 from './043-cul de sac.png';\r\nimport icon43 from './044-countdown.png';\r\nimport icon44 from './045-countdown.png';\r\nimport icon45 from './046-countdown.png';\r\nimport icon46 from './047-hospital.png';\r\nimport icon47 from './048-information.png';\r\nimport icon48 from './049-speed camera.png';\r\nimport icon49 from './050-lane.png';\r\nimport icon50 from './051-end motorway.png';\r\nimport icon51 from './052-motorway.png';\r\nimport icon52 from './053-one way.png';\r\nimport icon53 from './054-direction.png';\r\nimport icon54 from './055-stop.png';\r\nimport icon55 from './056-road.png';\r\nimport icon56 from './057-emergency diversion.png';\r\nimport icon57 from './058-emergency diversion.png';\r\nimport icon58 from './059-emergency diversion.png';\r\nimport icon59 from './060-emergency diversion.png';\r\n\r\nconst textures = {\r\n '001-narrow': icon0,\r\n '002-merge': icon1,\r\n '003-curve': icon2,\r\n '004-curve': icon3,\r\n '005-Junction': icon4,\r\n '006-curve': icon5,\r\n '007-crossroads': icon6,\r\n '008-hump': icon7,\r\n '009-uneven': icon8,\r\n '010-roundabout': icon9,\r\n '011-Two way': icon10,\r\n '012-Junction': icon11,\r\n '013-Junction': icon12,\r\n '014-Two way': icon13,\r\n '015-level': icon14,\r\n '016-warning': icon15,\r\n '017-hump': icon16,\r\n '018-dock': icon17,\r\n '019-merge': icon18,\r\n '020-falling rocks': icon19,\r\n '021-speed limit': icon20,\r\n '022-speed limit': icon21,\r\n '023-speed limit': icon22,\r\n '024-speed limit': icon23,\r\n '025-speed limit': icon24,\r\n '026-speed limit': icon25,\r\n '027-speed limit': icon26,\r\n '028-priority': icon27,\r\n '029-no overtaking': icon28,\r\n '030-no turn right': icon29,\r\n '031-u turn': icon30,\r\n '032-no stopping': icon31,\r\n '033-no waiting': icon32,\r\n '034-ahead': icon33,\r\n '035-turn left': icon34,\r\n '036-keep left': icon35,\r\n '037-direction': icon36,\r\n '038-turn left': icon37,\r\n '039-roundabout': icon38,\r\n '040-no entry': icon39,\r\n '041-parking': icon40,\r\n '042-priority': icon41,\r\n '043-cul de sac': icon42,\r\n '044-countdown': icon43,\r\n '045-countdown': icon44,\r\n '046-countdown': icon45,\r\n '047-hospital': icon46,\r\n '048-information': icon47,\r\n '049-speed camera': icon48,\r\n '050-lane': icon49,\r\n '051-end motorway': icon50,\r\n '052-motorway': icon51,\r\n '053-one way': icon52,\r\n '054-direction': icon53,\r\n '055-stop': icon54,\r\n '056-road': icon55,\r\n '057-emergency diversion': icon56,\r\n '058-emergency diversion': icon57,\r\n '059-emergency diversion': icon58,\r\n '060-emergency diversion': icon59,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/001-narrow.df856ac0.png\";","export default __webpack_public_path__ + \"static/media/002-merge.a4a30488.png\";","export default __webpack_public_path__ + \"static/media/003-curve.05546df5.png\";","export default __webpack_public_path__ + \"static/media/004-curve.8f7cd063.png\";","export default __webpack_public_path__ + \"static/media/005-Junction.4dffa6c5.png\";","export default __webpack_public_path__ + \"static/media/006-curve.e74f68f4.png\";","export default __webpack_public_path__ + \"static/media/007-crossroads.b4aeab6d.png\";","export default __webpack_public_path__ + \"static/media/008-hump.f5b1cab9.png\";","export default __webpack_public_path__ + \"static/media/009-uneven.397db48f.png\";","export default __webpack_public_path__ + \"static/media/010-roundabout.68d0ffbd.png\";","export default __webpack_public_path__ + \"static/media/011-Two way.d51a58d8.png\";","export default __webpack_public_path__ + \"static/media/012-Junction.bd60896e.png\";","export default __webpack_public_path__ + \"static/media/013-Junction.78c13ca2.png\";","export default __webpack_public_path__ + \"static/media/014-Two way.b345b22a.png\";","export default __webpack_public_path__ + \"static/media/015-level.f8296ff7.png\";","export default __webpack_public_path__ + \"static/media/016-warning.0019e601.png\";","export default __webpack_public_path__ + \"static/media/017-hump.30a7ba8f.png\";","export default __webpack_public_path__ + \"static/media/018-dock.fdf0064a.png\";","export default __webpack_public_path__ + \"static/media/019-merge.2190995c.png\";","export default __webpack_public_path__ + \"static/media/020-falling rocks.9f4df857.png\";","export default __webpack_public_path__ + \"static/media/021-speed limit.d6845db0.png\";","export default __webpack_public_path__ + \"static/media/022-speed limit.8064e31b.png\";","export default __webpack_public_path__ + \"static/media/023-speed limit.aed48e6f.png\";","export default __webpack_public_path__ + \"static/media/024-speed limit.1e362fee.png\";","export default __webpack_public_path__ + \"static/media/025-speed limit.347d7255.png\";","export default __webpack_public_path__ + \"static/media/026-speed limit.45d92974.png\";","export default __webpack_public_path__ + \"static/media/027-speed limit.980a6068.png\";","export default __webpack_public_path__ + \"static/media/028-priority.fc44147f.png\";","export default __webpack_public_path__ + \"static/media/029-no overtaking.58426286.png\";","export default __webpack_public_path__ + \"static/media/030-no turn right.acbc461d.png\";","export default __webpack_public_path__ + \"static/media/031-u turn.08809920.png\";","export default __webpack_public_path__ + \"static/media/032-no stopping.d7c7b42a.png\";","export default __webpack_public_path__ + \"static/media/033-no waiting.4e5fe72f.png\";","export default __webpack_public_path__ + \"static/media/034-ahead.58e48a36.png\";","export default __webpack_public_path__ + \"static/media/035-turn left.f545eb0c.png\";","export default __webpack_public_path__ + \"static/media/036-keep left.536a6a5c.png\";","export default __webpack_public_path__ + \"static/media/037-direction.d6d26740.png\";","export default __webpack_public_path__ + \"static/media/038-turn left.3517acec.png\";","export default __webpack_public_path__ + \"static/media/039-roundabout.e35a3904.png\";","export default __webpack_public_path__ + \"static/media/040-no entry.606b7596.png\";","export default __webpack_public_path__ + \"static/media/041-parking.2c36baed.png\";","export default __webpack_public_path__ + \"static/media/042-priority.8f2995ce.png\";","export default __webpack_public_path__ + \"static/media/043-cul de sac.1eda70a7.png\";","export default __webpack_public_path__ + \"static/media/044-countdown.cd86cb1a.png\";","export default __webpack_public_path__ + \"static/media/045-countdown.64bef15d.png\";","export default __webpack_public_path__ + \"static/media/046-countdown.7ede0d8c.png\";","export default __webpack_public_path__ + \"static/media/047-hospital.e4c63624.png\";","export default __webpack_public_path__ + \"static/media/048-information.803f80de.png\";","export default __webpack_public_path__ + \"static/media/049-speed camera.11651251.png\";","export default __webpack_public_path__ + \"static/media/050-lane.e8790c18.png\";","export default __webpack_public_path__ + \"static/media/051-end motorway.06ef8c65.png\";","export default __webpack_public_path__ + \"static/media/052-motorway.84800887.png\";","export default __webpack_public_path__ + \"static/media/053-one way.1028aeeb.png\";","export default __webpack_public_path__ + \"static/media/054-direction.ef3625e0.png\";","export default __webpack_public_path__ + \"static/media/055-stop.c8013090.png\";","export default __webpack_public_path__ + \"static/media/056-road.ae8fd707.png\";","export default __webpack_public_path__ + \"static/media/057-emergency diversion.e4fc4c07.png\";","export default __webpack_public_path__ + \"static/media/058-emergency diversion.cf3519dd.png\";","export default __webpack_public_path__ + \"static/media/059-emergency diversion.286133f6.png\";","export default __webpack_public_path__ + \"static/media/060-emergency diversion.8a4411bc.png\";","import icon0 from './construction--barrier--temporary.png';\r\nimport icon1 from './construction--flat--crosswalk-plain.png';\r\nimport icon2 from './construction--flat--driveway.png';\r\nimport icon3 from './construction--flat--flat-driveway.png';\r\nimport icon4 from './marking--discrete--arrow--left.png';\r\nimport icon5 from './marking--discrete--arrow--right.png';\r\nimport icon6 from './marking--discrete--arrow--split-left-or-straight.png';\r\nimport icon7 from './marking--discrete--arrow--split-right-or-straight.png';\r\nimport icon8 from './marking--discrete--arrow--straight.png';\r\nimport icon9 from './marking--discrete--crosswalk-zebra.png';\r\nimport icon10 from './marking--discrete--give-way-row.png';\r\nimport icon11 from './marking--discrete--give-way-single.png';\r\nimport icon12 from './marking--discrete--other-marking.png';\r\nimport icon13 from './marking--discrete--stop-line.png';\r\nimport icon14 from './marking--discrete--symbol--bicycle.png';\r\nimport icon15 from './marking--discrete--text.png';\r\nimport icon16 from './object--banner.png';\r\nimport icon17 from './object--bench.png';\r\nimport icon18 from './object--bike-rack.png';\r\nimport icon19 from './object--catch-basin.png';\r\nimport icon20 from './object--cctv-camera.png';\r\nimport icon21 from './object--fire-hydrant.png';\r\nimport icon22 from './object--junction-box.png';\r\nimport icon23 from './object--mailbox.png';\r\nimport icon24 from './object--manhole.png';\r\nimport icon25 from './object--parking-meter.png';\r\nimport icon26 from './object--phone-booth.png';\r\nimport icon27 from './object--sign--advertisement.png';\r\nimport icon28 from './object--sign--information.png';\r\nimport icon29 from './object--sign--store.png';\r\nimport icon30 from './object--street-light.png';\r\nimport icon31 from './object--support--pole.png';\r\nimport icon32 from './object--support--traffic-sign-frame.png';\r\nimport icon33 from './object--support--utility-pole.png';\r\nimport icon34 from './object--traffic-cone.png';\r\nimport icon35 from './object--traffic-light.png';\r\nimport icon36 from './object--trash-can.png';\r\nimport icon37 from './object--water-valve.png';\r\n\r\nconst textures = {\r\n 'construction--barrier--temporary': icon0,\r\n 'construction--flat--crosswalk-plain': icon1,\r\n 'construction--flat--driveway': icon2,\r\n 'construction--flat--flat-driveway': icon3,\r\n 'marking--discrete--arrow--left': icon4,\r\n 'marking--discrete--arrow--right': icon5,\r\n 'marking--discrete--arrow--split-left-or-straight': icon6,\r\n 'marking--discrete--arrow--split-right-or-straight': icon7,\r\n 'marking--discrete--arrow--straight': icon8,\r\n 'marking--discrete--crosswalk-zebra': icon9,\r\n 'marking--discrete--give-way-row': icon10,\r\n 'marking--discrete--give-way-single': icon11,\r\n 'marking--discrete--other-marking': icon12,\r\n 'marking--discrete--stop-line': icon13,\r\n 'marking--discrete--symbol--bicycle': icon14,\r\n 'marking--discrete--text': icon15,\r\n 'object--banner': icon16,\r\n 'object--bench': icon17,\r\n 'object--bike-rack': icon18,\r\n 'object--catch-basin': icon19,\r\n 'object--cctv-camera': icon20,\r\n 'object--fire-hydrant': icon21,\r\n 'object--junction-box': icon22,\r\n 'object--mailbox': icon23,\r\n 'object--manhole': icon24,\r\n 'object--parking-meter': icon25,\r\n 'object--phone-booth': icon26,\r\n 'object--sign--advertisement': icon27,\r\n 'object--sign--information': icon28,\r\n 'object--sign--store': icon29,\r\n 'object--street-light': icon30,\r\n 'object--support--pole': icon31,\r\n 'object--support--traffic-sign-frame': icon32,\r\n 'object--support--utility-pole': icon33,\r\n 'object--traffic-cone': icon34,\r\n 'object--traffic-light': icon35,\r\n 'object--trash-can': icon36,\r\n 'object--water-valve': icon37,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/construction--barrier--temporary.c295cec2.png\";","export default __webpack_public_path__ + \"static/media/construction--flat--crosswalk-plain.3d80b1ca.png\";","export default __webpack_public_path__ + \"static/media/construction--flat--driveway.9fd50f90.png\";","export default __webpack_public_path__ + \"static/media/construction--flat--flat-driveway.dbed896e.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--left.5a8ed6fe.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--right.0c25ddcb.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--split-left-or-straight.26ea6315.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--split-right-or-straight.19848277.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--straight.c32e8693.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--crosswalk-zebra.41655dfd.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--give-way-row.d469bc27.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--give-way-single.88347f54.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--other-marking.0b3d3063.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--stop-line.926dabb3.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--symbol--bicycle.b160ff92.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--text.a473cb73.png\";","export default __webpack_public_path__ + \"static/media/object--banner.4261826e.png\";","export default __webpack_public_path__ + \"static/media/object--bench.de45c74e.png\";","export default __webpack_public_path__ + \"static/media/object--bike-rack.2d333cd5.png\";","export default __webpack_public_path__ + \"static/media/object--catch-basin.6c8a4f84.png\";","export default __webpack_public_path__ + \"static/media/object--cctv-camera.2eea74b0.png\";","export default __webpack_public_path__ + \"static/media/object--fire-hydrant.d91d17bd.png\";","export default __webpack_public_path__ + \"static/media/object--junction-box.75aae919.png\";","export default __webpack_public_path__ + \"static/media/object--mailbox.6bae4b92.png\";","export default __webpack_public_path__ + \"static/media/object--manhole.049795d8.png\";","export default __webpack_public_path__ + \"static/media/object--parking-meter.0c26ccb0.png\";","export default __webpack_public_path__ + \"static/media/object--phone-booth.b2671fc0.png\";","export default __webpack_public_path__ + \"static/media/object--sign--advertisement.1d13d128.png\";","export default __webpack_public_path__ + \"static/media/object--sign--information.88add084.png\";","export default __webpack_public_path__ + \"static/media/object--sign--store.6da73474.png\";","export default __webpack_public_path__ + \"static/media/object--street-light.99b39470.png\";","export default __webpack_public_path__ + \"static/media/object--support--pole.36dfcf46.png\";","export default __webpack_public_path__ + \"static/media/object--support--traffic-sign-frame.7bae73cd.png\";","export default __webpack_public_path__ + \"static/media/object--support--utility-pole.71ce4ba5.png\";","export default __webpack_public_path__ + \"static/media/object--traffic-cone.b0f05e52.png\";","export default __webpack_public_path__ + \"static/media/object--traffic-light.6dd482e0.png\";","export default __webpack_public_path__ + \"static/media/object--trash-can.4ba13bc2.png\";","export default __webpack_public_path__ + \"static/media/object--water-valve.848a98d0.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g1.d5411006.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g2.6b892819.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g3.39c5aa2d.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g4.c8960430.png\";","export default __webpack_public_path__ + \"static/media/complementary--advisory-exit-or-ramp-speed--g1.d5aa6bd3.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles--g1.e8a92988.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles-and-pedestrians-detour--g1.dcab8b13.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles-or-pedestrians-detour--g1.e5138d21.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles-turn-right--g1.b50cdd8a.png\";","export default __webpack_public_path__ + \"static/media/complementary--bike-route--g1.ad85731c.png\";","export default __webpack_public_path__ + \"static/media/complementary--bike-route--g3.1a874469.png\";","export default __webpack_public_path__ + \"static/media/complementary--both-directions--g1.1eaa27e4.png\";","export default __webpack_public_path__ + \"static/media/complementary--both-directions--g2.ab7a5976.png\";","export default __webpack_public_path__ + \"static/media/complementary--buses--g1.faffc898.png\";","export default __webpack_public_path__ + \"static/media/complementary--buses-and-trucks--g1.d1b0d33f.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g1.41a87e99.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g2.307561d6.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g3.859735f8.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g4.5bcf9af2.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g5.811530fb.png\";","export default __webpack_public_path__ + \"static/media/complementary--caravan-trailers--g2.a2b733be.png\";","export default __webpack_public_path__ + \"static/media/complementary--caravan-trailers--g3.1ed469ef.png\";","export default __webpack_public_path__ + \"static/media/complementary--caravans--g2.ce71e539.png\";","export default __webpack_public_path__ + \"static/media/complementary--carts--g1.fea12c17.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g1.57ac3093.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g2.6443d98c.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g3.a6c83c95.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g4.77777d15.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g5.2f7987c9.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g1.f22f39f2.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g2.71ba8ac6.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g3.1dd25331.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g4.651efd19.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g5.7734c675.png\";","export default __webpack_public_path__ + \"static/media/complementary--dangerous-or-pollutant-good--g1.3bf88255.png\";","export default __webpack_public_path__ + \"static/media/complementary--dead-end--g1.1e58d714.png\";","export default __webpack_public_path__ + \"static/media/complementary--detour--g1.227caa6a.png\";","export default __webpack_public_path__ + \"static/media/complementary--disabled-persons--g1.359b3b95.png\";","export default __webpack_public_path__ + \"static/media/complementary--distance--g1.108230dd.png\";","export default __webpack_public_path__ + \"static/media/complementary--distance--g2.f24fae54.png\";","export default __webpack_public_path__ + \"static/media/complementary--distance--g3.2d9b5876.png\";","export default __webpack_public_path__ + \"static/media/complementary--end-of-road-works--g1.92d44f56.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-bicycles--g1.a9f8a4b1.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-bicycles--g2.64490d3f.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-buses--g1.1ba43e99.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-carts--g1.68857953.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-motorcycles--g1.1c4d4f08.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-motorcycles--g2.f66bc691.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-polluting-level-green--g1.a4a5c035.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-polluting-level-green-yellow--g1.b02fc562.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-polluting-level-green-yellow-red--g1.36e116eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-tractors--g1.5fffbc13.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-tractors--g2.b5eb0923.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trailers--g1.fb401260.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trailers--g2.915ae4eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trains--g1.969b8921.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trams--g1.68209674.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trucks--g1.e68b7c31.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-vehicles--g1.89da1dbd.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-vehicles--g2.a39aee57.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-left--g1.c3874410.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-right--g1.f0fa8d37.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-straight-or-turn-left--g1.0a66ac06.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-straight-or-turn-right--g1.bf518ff3.png\";","export default __webpack_public_path__ + \"static/media/complementary--height-limit--g1.66143aeb.png\";","export default __webpack_public_path__ + \"static/media/complementary--height-limit--g2.5f8c440f.png\";","export default __webpack_public_path__ + \"static/media/complementary--including-bicycles-and-motorcycles--g1.ee870326.png\";","export default __webpack_public_path__ + \"static/media/complementary--including-buses-vehicles--g1.03851082.png\";","export default __webpack_public_path__ + \"static/media/complementary--keep-left--g1.9f4023c8.png\";","export default __webpack_public_path__ + \"static/media/complementary--keep-right--g1.4194a29d.png\";","export default __webpack_public_path__ + \"static/media/complementary--lane-control--g1.82117f8e.png\";","export default __webpack_public_path__ + \"static/media/complementary--lane-control--g2.c5f7c989.png\";","export default __webpack_public_path__ + \"static/media/complementary--lane-control--g3.ade4dcda.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-10--g1.53abf612.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-15--g1.c67ac701.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-20--g1.d2e11200.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-25--g1.ecdfffb1.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-30--g1.df513571.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-35--g1.bf20adba.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-40--g1.8969e2c1.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-45--g1.cdce0b1d.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-50--g1.6b808783.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-55--g1.be855ff8.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-60--g1.23136090.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-65--g1.058ac585.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-70--g1.361e8a6e.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-75--g1.3fd589fc.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-80--g1.4a213736.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-85--g1.ba8d0d8b.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-90--g1.c363995e.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-95--g1.a5f29207.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g1.511b5604.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g2.593b05ac.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g3.1c3e0e2b.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g4.b3d432a8.png\";","export default __webpack_public_path__ + \"static/media/complementary--obstacle-delineator--g1.2be98597.png\";","export default __webpack_public_path__ + \"static/media/complementary--obstacle-delineator--g2.1e86ca50.png\";","export default __webpack_public_path__ + \"static/media/complementary--obstacle-delineator--g3.2445aeb2.png\";","export default __webpack_public_path__ + \"static/media/complementary--one-direction-left--g1.72b7311e.png\";","export default __webpack_public_path__ + \"static/media/complementary--one-direction-right--g1.ef8aa050.png\";","export default __webpack_public_path__ + \"static/media/complementary--pass-left--g1.e63e20d4.png\";","export default __webpack_public_path__ + \"static/media/complementary--pass-right--g1.8143583a.png\";","export default __webpack_public_path__ + \"static/media/complementary--pedestrians-and-bicycles--g1.46b1b0b1.png\";","export default __webpack_public_path__ + \"static/media/complementary--pedestrians-left--g1.b56a5492.png\";","export default __webpack_public_path__ + \"static/media/complementary--pedestrians-right--g1.01475b36.png\";","export default __webpack_public_path__ + \"static/media/complementary--photo-enforced--g1.7f00dc63.png\";","export default __webpack_public_path__ + \"static/media/complementary--playground--g1.7cc32db1.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g1.339b5f15.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g2.0f1e5df5.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g3.a266b74b.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g4.fc911c8e.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g5.472959d3.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g6.9b72a153.png\";","export default __webpack_public_path__ + \"static/media/complementary--railroad--g1.ac072e7a.png\";","export default __webpack_public_path__ + \"static/media/complementary--railroad--g2.7ae94b03.png\";","export default __webpack_public_path__ + \"static/media/complementary--railroad--g3.3ee9fe34.png\";","export default __webpack_public_path__ + \"static/media/complementary--restriction-in-both-directions--g1.076c822f.png\";","export default __webpack_public_path__ + \"static/media/complementary--roundabout-go-left--g1.4b39fec6.png\";","export default __webpack_public_path__ + \"static/media/complementary--roundabout-go-right--g1.c4bcfb99.png\";","export default __webpack_public_path__ + \"static/media/complementary--roundabout-go-straight--g1.8374e8e8.png\";","export default __webpack_public_path__ + \"static/media/complementary--slippery-for-caravan-trailers--g1.22bf4483.png\";","export default __webpack_public_path__ + \"static/media/complementary--snow--g2.d69deef2.png\";","export default __webpack_public_path__ + \"static/media/complementary--snow--g4.767b8bcc.png\";","export default __webpack_public_path__ + \"static/media/complementary--snow--g5.9cab1800.png\";","export default __webpack_public_path__ + \"static/media/complementary--snowmobiles--g1.040ef047.png\";","export default __webpack_public_path__ + \"static/media/complementary--soft-shoulder--g1.69316d35.png\";","export default __webpack_public_path__ + \"static/media/complementary--soft-shoulder--g2.7ca975f6.png\";","export default __webpack_public_path__ + \"static/media/complementary--steep-ascent--g1.530757ce.png\";","export default __webpack_public_path__ + \"static/media/complementary--steep-descent--g1.8c7f6ee5.png\";","export default __webpack_public_path__ + \"static/media/complementary--time-restrictions--g1.26eaeae5.png\";","export default __webpack_public_path__ + \"static/media/complementary--time-restrictions--g3.4c6120b8.png\";","export default __webpack_public_path__ + \"static/media/complementary--tow-away-zone--g1.8e752887.png\";","export default __webpack_public_path__ + \"static/media/complementary--tow-away-zone--g3.22f7f3eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--tractors--g1.e217db9e.png\";","export default __webpack_public_path__ + \"static/media/complementary--traffic-queues--g1.798af17a.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g1.f2bf02fe.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g2.bbd07d83.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g3.e99a3109.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g4.b351db3d.png\";","export default __webpack_public_path__ + \"static/media/complementary--trains--g1.006bb9eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--trams--g1.3bfc644b.png\";","export default __webpack_public_path__ + \"static/media/complementary--trees--g1.26a10d2b.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks--g1.679a2a43.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks--g2.930ba842.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks--g3.41659ea2.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-and-trailers--g1.67787aa2.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-buses-trailers--g1.af473f66.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-left--g1.2884aa5c.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-left-ahead--g1.abe94d9d.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-right--g1.82ab3332.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-right-ahead--g1.b575da79.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-straight--g1.76cd0c33.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-turn-left--g1.d2ead92b.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-turn-right--g1.f2a4dae6.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-left--g1.6d813807.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-left--g2.6fd51622.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-right--g1.88241ef1.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-right--g2.4b154bb3.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g1.ecba5f2b.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g2.45a6a7c7.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g3.46b191f8.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g4.05df5af7.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g5.23d82cc1.png\";","export default __webpack_public_path__ + \"static/media/complementary--vehicles--g1.3e0f8a88.png\";","export default __webpack_public_path__ + \"static/media/complementary--vehicles--g2.546a3e5a.png\";","export default __webpack_public_path__ + \"static/media/complementary--vehicles-or-buses--g1.28a800fd.png\";","export default __webpack_public_path__ + \"static/media/complementary--weekends-or-holidays--g1.75bb96df.png\";","export default __webpack_public_path__ + \"static/media/complementary--weight-limit--g1.bdc6c055.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-foggy--g1.ce7480ff.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-rainy--g1.3e9a4e29.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-rainy--g2.5743ee89.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-rainy--g3.0b5ed3f3.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy--g1.eb82e32c.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy--g2.b221027b.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy-or-rainy--g1.af3f362e.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy-or-rainy--g2.bf4655ce.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-wet--g1.11ed4478.png\";","export default __webpack_public_path__ + \"static/media/complementary--width-limit--g1.cef661be.png\";","export default __webpack_public_path__ + \"static/media/complementary--working-days--g1.313bbb27.png\";","export default __webpack_public_path__ + \"static/media/information--airport--g1.73af71fe.png\";","export default __webpack_public_path__ + \"static/media/information--airport--g2.81208f16.png\";","export default __webpack_public_path__ + \"static/media/information--bicycle-lane--g1.504421c1.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-both-ways--g1.c95bbe04.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-crossing--g1.f4c114cf.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-crossing--g2.bf76e715.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-crossing--g3.6a7abeba.png\";","export default __webpack_public_path__ + \"static/media/information--bike-route--g1.62a47331.png\";","export default __webpack_public_path__ + \"static/media/information--bike-route--g2.97104997.png\";","export default __webpack_public_path__ + \"static/media/information--built-up-area--g1.ac4f16b0.png\";","export default __webpack_public_path__ + \"static/media/information--built-up-area--g2.11ebb081.png\";","export default __webpack_public_path__ + \"static/media/information--bus-lane-straight--g1.4a1a0ce3.png\";","export default __webpack_public_path__ + \"static/media/information--bus-stop--g1.a7ecbcd5.png\";","export default __webpack_public_path__ + \"static/media/information--bus-stop--g2.81775f9e.png\";","export default __webpack_public_path__ + \"static/media/information--camera--g1.a402e59a.png\";","export default __webpack_public_path__ + \"static/media/information--camera--g2.d5adb6c7.png\";","export default __webpack_public_path__ + \"static/media/information--camera--g3.44300682.png\";","export default __webpack_public_path__ + \"static/media/information--camp--g1.84c6b6d9.png\";","export default __webpack_public_path__ + \"static/media/information--camp--g2.b85f120d.png\";","export default __webpack_public_path__ + \"static/media/information--car-pool-lane--g1.2eade6ef.png\";","export default __webpack_public_path__ + \"static/media/information--caravan-parking--g1.18735370.png\";","export default __webpack_public_path__ + \"static/media/information--caravan-trailer-parking--g1.71f0f60c.png\";","export default __webpack_public_path__ + \"static/media/information--cargo-loading-zone--g1.e90c9dac.png\";","export default __webpack_public_path__ + \"static/media/information--central-lane--g1.fe7e0080.png\";","export default __webpack_public_path__ + \"static/media/information--charging-station--g1.38a12cae.png\";","export default __webpack_public_path__ + \"static/media/information--children--g1.84e33dd2.png\";","export default __webpack_public_path__ + \"static/media/information--children--g2.aede4dee.png\";","export default __webpack_public_path__ + \"static/media/information--children-crossing--g5.829b1301.png\";","export default __webpack_public_path__ + \"static/media/information--cycling-two-abreast-permitted--g1.f7b5c1af.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g1.337632a7.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g2.313e9231.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g3.0f065135.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g4.50b3a50f.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-except-bicycles--g1.00a6125f.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-except-bicycles-and-pedestrians--g1.872ecfb2.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-except-bicycles-and-pedestrians--g2.403f04e3.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-left--g1.81116d41.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-left--g2.369ad9b4.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-right--g1.b3196029.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-right--g2.92903f2b.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-right--g3.00e4000a.png\";","export default __webpack_public_path__ + \"static/media/information--directions--g1.5b231c54.png\";","export default __webpack_public_path__ + \"static/media/information--disabled-persons--g1.4bcf3f61.png\";","export default __webpack_public_path__ + \"static/media/information--disabled-persons--g2.43579fe3.png\";","export default __webpack_public_path__ + \"static/media/information--disabled-persons--g3.312f93f3.png\";","export default __webpack_public_path__ + \"static/media/information--emergency-facility--g1.5f24e4fe.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-20--g1.83f3bca3.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-40--g1.d09cf637.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-60--g1.cbd3a657.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-70--g1.a14754dc.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-80--g1.20280fbf.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-90--g1.84ad37e8.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-bicycle-lane--g1.d2b5baa9.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g1.d3c1e825.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g2.c2932636.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g3.d59cc0fb.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g4.88e9bd6b.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-car-pool-lane--g1.83bbacf0.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-limited-access-road--g1.4d253455.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-living-street--g1.b9ad088e.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-living-street--g2.edcc67c9.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-10--g1.ca614575.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-20--g1.abe33ebd.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-25--g1.43799527.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-30--g1.779efce2.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-35--g1.674a262a.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-40--g1.baa5bd2c.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-50--g1.20353c86.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-60--g1.461328dc.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-70--g1.2e31daaf.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-75--g1.4bc31e63.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-80--g1.e2f688b1.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-90--g1.49bdceb5.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-100--g1.e83e0d13.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-110--g1.719ac78c.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-120--g1.57a848ce.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-130--g1.58da3ff2.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-motorway--g1.645f1476.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-overtaking-permitted-heavy-good-vehicles--g1.b36d111d.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-road-works--g1.5b7f3560.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-tunnel--g1.90fc460c.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-tunnel--g2.7ac93cff.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-two-way-traffic--g1.88eeaba6.png\";","export default __webpack_public_path__ + \"static/media/information--equestrians-permitted--g1.a22f8bf3.png\";","export default __webpack_public_path__ + \"static/media/information--exit-ahead--g1.95953c4c.png\";","export default __webpack_public_path__ + \"static/media/information--exit-ahead--g2.d7e0a668.png\";","export default __webpack_public_path__ + \"static/media/information--exit-ahead--g3.36f7fe6b.png\";","export default __webpack_public_path__ + \"static/media/information--flight-port--g1.6ffedaed.png\";","export default __webpack_public_path__ + \"static/media/information--food--g1.c3a95157.png\";","export default __webpack_public_path__ + \"static/media/information--food--g2.a19e0e4d.png\";","export default __webpack_public_path__ + \"static/media/information--gas-station--g1.835ad032.png\";","export default __webpack_public_path__ + \"static/media/information--gas-station--g2.397a57fc.png\";","export default __webpack_public_path__ + \"static/media/information--gas-station--g3.d417b630.png\";","export default __webpack_public_path__ + \"static/media/information--general-speed-limit-at-city-border--g1.162d9f16.png\";","export default __webpack_public_path__ + \"static/media/information--go-left--g1.b4653a1a.png\";","export default __webpack_public_path__ + \"static/media/information--go-right--g1.fb259e79.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight--g1.2b4c9d90.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-left--g1.61f62586.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-right--g1.74189079.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-turn-left--g1.fe58d18a.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-turn-right--g1.01ba2725.png\";","export default __webpack_public_path__ + \"static/media/information--hazardous-goods-vehicles-lane--g1.5d266d26.png\";","export default __webpack_public_path__ + \"static/media/information--height-limit--g1.55576056.png\";","export default __webpack_public_path__ + \"static/media/information--height-limit--g2.28706fba.png\";","export default __webpack_public_path__ + \"static/media/information--highway-directions--g1.6ab6f919.png\";","export default __webpack_public_path__ + \"static/media/information--highway-exit--g1.8693888b.png\";","export default __webpack_public_path__ + \"static/media/information--highway-interchange--g1.247302e7.png\";","export default __webpack_public_path__ + \"static/media/information--highway-interstate-route--g1.692a691b.png\";","export default __webpack_public_path__ + \"static/media/information--highway-interstate-route--g2.accf6f1f.png\";","export default __webpack_public_path__ + \"static/media/information--highway-preferential-lane--g1.46a6e511.png\";","export default __webpack_public_path__ + \"static/media/information--highway-preferential-lane--g2.00aa828a.png\";","export default __webpack_public_path__ + \"static/media/information--highway-reference-location--g1.fd97a9dc.png\";","export default __webpack_public_path__ + \"static/media/information--highway-reference-location--g2.8a376ffd.png\";","export default __webpack_public_path__ + \"static/media/information--hiking--g1.e7ebd601.png\";","export default __webpack_public_path__ + \"static/media/information--hospital--g1.df445bc6.png\";","export default __webpack_public_path__ + \"static/media/information--hurricane-evacuation-route--g1.51f3af3c.png\";","export default __webpack_public_path__ + \"static/media/information--interstate-route--g1.970c0135.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-intersections--g1.7a491f54.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-left-turn--g1.b9518417.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-multiple-lanes--g1.ea69ae2c.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-multiple-lanes--g2.c56d8bde.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-right-turn--g1.5fa2157c.png\";","export default __webpack_public_path__ + \"static/media/information--limited-access-road--g1.10cc71f3.png\";","export default __webpack_public_path__ + \"static/media/information--litter-container--g1.08c4ff13.png\";","export default __webpack_public_path__ + \"static/media/information--living-street--g1.2147c93f.png\";","export default __webpack_public_path__ + \"static/media/information--living-street--g2.9e441868.png\";","export default __webpack_public_path__ + \"static/media/information--living-street--g3.25c4364f.png\";","export default __webpack_public_path__ + \"static/media/information--lodging--g1.b607f4af.png\";","export default __webpack_public_path__ + \"static/media/information--lodging--g2.22045613.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-10--g1.3b83bdd9.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-20--g1.b0190c7b.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-25--g1.4db75e5c.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-30--g1.23729b05.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-35--g1.6e07ff1c.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-40--g1.3414f977.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-50--g1.76ed27c6.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-60--g1.212570f9.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-70--g1.c8d65d5e.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-75--g1.4939a840.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-80--g1.a7714163.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-90--g1.0b274895.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-100--g1.7102a855.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-110--g1.633ec596.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-120--g1.bce2e4ca.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-130--g1.c5a36eb0.png\";","export default __webpack_public_path__ + \"static/media/information--motorway--g1.a94a8e76.png\";","export default __webpack_public_path__ + \"static/media/information--motorway-exit-ahead--g1.0691dc2f.png\";","export default __webpack_public_path__ + \"static/media/information--motorway-exit-ahead--g2.b8daa7b6.png\";","export default __webpack_public_path__ + \"static/media/information--motorway-exit-ahead--g3.8af9ebcc.png\";","export default __webpack_public_path__ + \"static/media/information--overtaking-allowed-heavy-good-vehicles--g1.39e05fa4.png\";","export default __webpack_public_path__ + \"static/media/information--parallel-parking--g1.c0d4c10a.png\";","export default __webpack_public_path__ + \"static/media/information--park-and-ride--g1.b750a298.png\";","export default __webpack_public_path__ + \"static/media/information--park-and-ride--g2.c953d0be.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g1.df52d553.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g2.87609a48.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g3.7fd2c641.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g4.09eab1e8.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g5.37047c3d.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g6.8b6482a2.png\";","export default __webpack_public_path__ + \"static/media/information--parking-area--g1.a2bc1b0f.png\";","export default __webpack_public_path__ + \"static/media/information--parking-with-restrictions--g1.55284b47.png\";","export default __webpack_public_path__ + \"static/media/information--pass-on-either-side--g1.5bd589b7.png\";","export default __webpack_public_path__ + \"static/media/information--passenger-loading-zone--g1.ab94bd58.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-crossing--g1.c953e4e9.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-crossing--g2.183ef6cc.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-crossing--g3.39fc0c2e.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-only--g4.6947b95d.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-permitted--g1.5f6c67bf.png\";","export default __webpack_public_path__ + \"static/media/information--perpendicular-parking--g1.5c9b6826.png\";","export default __webpack_public_path__ + \"static/media/information--picnic-site--g1.6194592a.png\";","export default __webpack_public_path__ + \"static/media/information--playground--g1.300b5c9c.png\";","export default __webpack_public_path__ + \"static/media/information--recreational-vehicle-sanitary-station--g1.e0780834.png\";","export default __webpack_public_path__ + \"static/media/information--recycle-collection-center--g1.8a0f22c1.png\";","export default __webpack_public_path__ + \"static/media/information--rest-area--g1.23aa47b9.png\";","export default __webpack_public_path__ + \"static/media/information--road-bump--g1.59ac514a.png\";","export default __webpack_public_path__ + \"static/media/information--road-skating--g1.dbd17d5a.png\";","export default __webpack_public_path__ + \"static/media/information--safety-zone--g1.8bc0bf83.png\";","export default __webpack_public_path__ + \"static/media/information--safety-zone--g2.106d3366.png\";","export default __webpack_public_path__ + \"static/media/information--safety-zone--g3.82f31562.png\";","export default __webpack_public_path__ + \"static/media/information--shared-path-vehicles-and-motorcycles--g1.50a9ff18.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g1.71f0a107.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g2.17a18300.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g3.af1160fa.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g4.64156853.png\";","export default __webpack_public_path__ + \"static/media/information--stop-line--g1.e9808c91.png\";","export default __webpack_public_path__ + \"static/media/information--stop-permitted--g1.686135de.png\";","export default __webpack_public_path__ + \"static/media/information--street-name-one-line--g1.94494101.png\";","export default __webpack_public_path__ + \"static/media/information--street-name-three-lines--g1.80615ed6.png\";","export default __webpack_public_path__ + \"static/media/information--street-name-two-lines--g1.9fdf4282.png\";","export default __webpack_public_path__ + \"static/media/information--subway--g1.11a232ac.png\";","export default __webpack_public_path__ + \"static/media/information--telephone--g1.f3e76f2a.png\";","export default __webpack_public_path__ + \"static/media/information--telephone--g2.e30d7202.png\";","export default __webpack_public_path__ + \"static/media/information--telephone-device-for-the-deaf--g1.3dd43d70.png\";","export default __webpack_public_path__ + \"static/media/information--toll-station--g1.b1ef927a.png\";","export default __webpack_public_path__ + \"static/media/information--tourism-information--g1.e4c2c0fd.png\";","export default __webpack_public_path__ + \"static/media/information--tourist-attraction--g1.9aad0dc2.png\";","export default __webpack_public_path__ + \"static/media/information--traffic-merges-left--g1.3bc6a9de.png\";","export default __webpack_public_path__ + \"static/media/information--traffic-merges-right--g1.53636e9b.png\";","export default __webpack_public_path__ + \"static/media/information--trail-crossing--g1.65ee67cc.png\";","export default __webpack_public_path__ + \"static/media/information--trail-crossing--g2.9e0a8068.png\";","export default __webpack_public_path__ + \"static/media/information--trail-crossing--g3.9ee9d069.png\";","export default __webpack_public_path__ + \"static/media/information--trailer-camping--g1.742fd848.png\";","export default __webpack_public_path__ + \"static/media/information--train-or-light-rail-station--g1.1137babb.png\";","export default __webpack_public_path__ + \"static/media/information--tram-bus-stop--g1.840fc7f4.png\";","export default __webpack_public_path__ + \"static/media/information--tram-bus-stop--g2.742fb913.png\";","export default __webpack_public_path__ + \"static/media/information--trams-crossing--g1.a0f36a2d.png\";","export default __webpack_public_path__ + \"static/media/information--truck-lane-left--g1.c1c84eec.png\";","export default __webpack_public_path__ + \"static/media/information--truck-parking--g1.344e6e89.png\";","export default __webpack_public_path__ + \"static/media/information--truck-trailer-lane-right--g1.78d4967c.png\";","export default __webpack_public_path__ + \"static/media/information--truck-trailer-lane-straight--g1.5347b556.png\";","export default __webpack_public_path__ + \"static/media/information--trucks-both-ways--g1.e3ecbd84.png\";","export default __webpack_public_path__ + \"static/media/information--trucks-only--g1.979028f2.png\";","export default __webpack_public_path__ + \"static/media/information--tsunami-evacuation_route--g1.7ae34865.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel--g1.03be4883.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel--g2.7b559e17.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel--g3.d2ceeebb.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel-ahead--g1.546aa975.png\";","export default __webpack_public_path__ + \"static/media/information--turn-left--g1.f8929d0b.png\";","export default __webpack_public_path__ + \"static/media/information--turn-left-ahead--g1.1f03050a.png\";","export default __webpack_public_path__ + \"static/media/information--turn-right--g1.eb673195.png\";","export default __webpack_public_path__ + \"static/media/information--turn-right-ahead--g1.35a96c2a.png\";","export default __webpack_public_path__ + \"static/media/information--urban-area--g1.6b606baf.png\";","export default __webpack_public_path__ + \"static/media/information--vehicles-on-rails--g1.4a371ce8.png\";","export default __webpack_public_path__ + \"static/media/information--water-protection-zone--g1.44b0f53a.png\";","export default __webpack_public_path__ + \"static/media/information--weight-and-height-limit--g1.bc56d483.png\";","export default __webpack_public_path__ + \"static/media/information--weight-limit--g1.20f54728.png\";","export default __webpack_public_path__ + \"static/media/information--wireless-internet--g1.75122a71.png\";","export default __webpack_public_path__ + \"static/media/regulatory--advisory-maximum-speed-limit--g1.86b85613.png\";","export default __webpack_public_path__ + \"static/media/regulatory--all-directions-permitted--g1.e567ddaa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--all-way--g1.1a3b2b2a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--atvs-permitted--g1.d5fe6ec3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--axle-limit--g1.8eb43884.png\";","export default __webpack_public_path__ + \"static/media/regulatory--axle-limit--g2.3974d220.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycle-lane-left--g1.4ca4b400.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycle-parking--g1.16ba1f72.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-and-buses-only--g1.148faf66.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g1.440e2032.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g2.1e88f01e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g3.bcfb72cc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g4.0de1b0cb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-push-button--g1.1364f84e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-push-button--g2.e86fdf7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-stop-on-red--g1.1cda5add.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-wrong-way--g1.135ae71c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-yield-or-use-signal--g1.1f65e157.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bike-route--g1.10d044ee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--building-direction--g1.fc70d3c5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bus-priority-lane--g1.2ae10a51.png\";","export default __webpack_public_path__ + \"static/media/regulatory--buses-and-taxi-only--g1.b3d80414.png\";","export default __webpack_public_path__ + \"static/media/regulatory--buses-only--g1.5305590b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--buses-only--g2.38b5f21e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g1.e8f98101.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g2.364f2ae2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g3.08fdea2e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g4.daf2c245.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cross-only-on-green--g1.1f626d4e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cross-only-on-pedestrian-signal--g1.a36a6a28.png\";","export default __webpack_public_path__ + \"static/media/regulatory--crosswalk-stop-on-red--g1.39942771.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cycling-restriction--g1.1b19c2a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cyclists-dismount-and-walk--g1.85523214.png\";","export default __webpack_public_path__ + \"static/media/regulatory--detour-left--g1.65da6dd7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--detour-right--g1.ad60dd21.png\";","export default __webpack_public_path__ + \"static/media/regulatory--divided-highway-crossing--g1.f45cc71a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--divided-highway-ends--g1.c6006e84.png\";","export default __webpack_public_path__ + \"static/media/regulatory--divided-highway-starts--g1.846d4a16.png\";","export default __webpack_public_path__ + \"static/media/regulatory--do-not-block-intersection--g1.18bccc47.png\";","export default __webpack_public_path__ + \"static/media/regulatory--do-not-pass--g1.7f484967.png\";","export default __webpack_public_path__ + \"static/media/regulatory--do-not-stop-on-tracks--g1.f252110f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-all-directions-on-left--g1.39024df2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-all-directions-on-right--g1.25fcfc3e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-bicyclists-and-pedestrians--g1.b3dad17b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-go-left-or-right--g1.20dace34.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-go-straight-on-left--g1.644f5631.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-go-straight-on-right--g1.a4728fe2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-left--g1.27ff5c95.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-left-no-u-turn--g1.e566a2e4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-left-or-straight--g1.042176f8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-right-or-straight--g1.bb64e50c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-bicycles-and-pedestrians--g1.02ec2d5e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-bicycles-and-pedestrians--g2.5c75e267.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-bicycles-and-pedestrians--g3.4194fc44.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-equestrians-and-pedestrians--g1.5c1b32ad.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1.2c4013b0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-and-bicycles--g1.4dad084e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-and-bicycles--g2.5ffa4776.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-and-equestrians--g1.02f7d7a1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1.44369e6c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-speed-limits--g1.6752afbb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-speed-limits--g2.4ac2d6f3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-bicycles-only--g1.afcf1e7b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-bicycles-only--g2.097b77a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-bus-and-taxi-only--g1.95ed8ca1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-buses-only--g1.0201ae54.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-buses-only--g2.5f50ea96.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-cycling-restriction--g1.7b7df3dd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-dual-path-bicycles-and-pedestrians--g1.26b235af.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-dual-path-pedestrians-and-bicycles--g1.23e796cf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-equestrians-only--g1.0a1542f3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-low-beam-headlights--g1.91c69fc1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-10--g1.5ac21e5b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-10--g2.8db154ac.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-20--g1.7024c379.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-20--g2.ff6c8dc5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-25--g1.75e6cd18.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-25--g2.3fc08b6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-30--g1.eb45f997.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-30--g2.bb4809fd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-35--g1.5f8ce558.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-35--g2.8d261d69.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-40--g1.85c54762.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-40--g2.c378a358.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-50--g1.8a58a37b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-50--g2.32f875a5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-60--g1.2f34a92d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-60--g2.0632d23d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-65--g1.b14098fd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-65--g2.a5254cbb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-70--g1.9fb8a3e9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-70--g2.a93c14f1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-75--g1.9d1b9782.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-75--g2.a0124c7a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-80--g1.8e331512.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-80--g2.e45f6301.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-90--g1.f7dbc484.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-90--g2.8c5d1def.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-100--g1.10cc7dd9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-100--g2.d22c2e70.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-110--g1.7c47334c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-110--g2.3a94b5b1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-120--g1.47e0a468.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-120--g2.ba84c756.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-130--g1.3edebaf2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-130--g2.28b38021.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit--g1.008d8f7c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-mopeds-and-bicycles-only--g1.b669ee49.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-heavy-goods-vehicles--g1.11347c2b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-horn--g1.38488514.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g1.f711db78.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g2.da883c93.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g3.66135c03.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g4.11329ed0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g5.4aa03694.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1.ff79e44a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2.16e2a814.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking-by-motorcycles--g1.a23aae0c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-parking--g1.c771dc80.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-parking--g2.8c4dba58.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-parking-or-stopping--g1.9448279b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-one-way-straight--g1.2ed363d3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-parking-zone--g1.cfb44d95.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-parking-zone--g2.96af1a66.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g1.3091680c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g2.55157960.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g3.afe96de1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g4.74b84e48.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-priority-road--g1.12c706be.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-prohibition--g1.24827b34.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-school-zone--g1.f865537a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-shared-path-bicycles-and-pedestrians--g1.f9807b65.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-shared-path-pedestrians-and-bicycles--g1.04370a0f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-snow-chains--g1.5a7931f2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-snow-chains--g2.7382850a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-snowmobiles-only--g1.d682bc63.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-speed-limit-zone--g1.15e8b883.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-speed-limit-zone--g2.300add15.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-speed-limit-zone--g3.a50f1e4d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-tractors-only--g1.bbb8849f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trams-and-buses-only--g1.25dd9871.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trams-only--g1.85ec27f9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trucks-and-buses-only--g1.8a6ab26d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trucks-only--g1.3dcb28f4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trucks-only--g2.4e55b939.png\";","export default __webpack_public_path__ + \"static/media/regulatory--equestrians-only--g1.d64c6020.png\";","export default __webpack_public_path__ + \"static/media/regulatory--except-railroad-crossing--g1.eacd41fa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--fine-for-littering--g1.dfa21d74.png\";","export default __webpack_public_path__ + \"static/media/regulatory--give-way-to-bicycles--g1.c339dedb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--give-way-to-oncoming-traffic--g1.d53ac85f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--give-way-to-oncoming-traffic--g2.51aed85b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-left-bicycles--g1.912457bf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-right-bicycles--g1.51e745f5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight--g1.ed3c15a6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight--g3.478e2d96.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-bicycles--g1.d41deae5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-left--g1.78963e27.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-left--g2.ad96042c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-left--g3.5536a26a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-right--g1.f11738ef.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-right--g2.75a12caf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-right--g3.dcac6907.png\";","export default __webpack_public_path__ + \"static/media/regulatory--heavy-goods-vehicles-permitted--g1.9cdb128c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--height-limit--g1.98af1a7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--high-beam-headlights--g1.e09c5b20.png\";","export default __webpack_public_path__ + \"static/media/regulatory--horn--g1.77ed51fc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--in-street-pedestrian-crossing--g1.e30c31dd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g1.679b6bd3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g2.c7dbfe8e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g3.8d435d1e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g4.0a18f6ba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g5.83797d4a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g6.7c4481c4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g7.8a94453c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g1.0a5be37f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g2.26ef1c48.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g3.0bf791e6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g4.cac2f808.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g5.f2e202d8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g6.3f2cfd3a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g7.102f84fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g8.2f374fc8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g9.19cca104.png\";","export default __webpack_public_path__ + \"static/media/regulatory--lane-control--g1.ebf113b6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--left-turn-yield-on-green--g1.103fabdc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--length-limit--g1.e26aac53.png\";","export default __webpack_public_path__ + \"static/media/regulatory--length-limit--g2.8ef7d18d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--light-rail-divided-highway--g1.db3927c2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--light-rail-do-not-pass--g1.a6efedce.png\";","export default __webpack_public_path__ + \"static/media/regulatory--light-rail-only--g1.254cad9a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--look--g1.25116d7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-beam-headlights--g1.f0dfd718.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-beam-headlights--g2.d3ac6fa0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-beam-headlights--g3.27cdd23a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-speed-vehicle-permitted--g1.30c92b2d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-5--g1.12cfb1dc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-5--g3.206e7744.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-10--g1.f5f022da.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-10--g3.483cdc98.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-15--g1.c0560e73.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-15--g3.c766b7e0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-20--g1.3fb8b849.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-20--g3.f2750244.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-25--g1.00b372a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-25--g2.3651694f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-30--g1.957a1971.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-30--g3.f035f7be.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-35--g1.176ca1fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-35--g2.bb66847f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-40--g1.44aeea27.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-40--g3.96779eaf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-45--g1.908b0551.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-45--g3.aafdb64d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-50--g1.265cb52e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-50--g3.f7bdf367.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-55--g2.112a3663.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-60--g1.ea23c09b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-60--g3.a3ea0058.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-65--g1.3903f621.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-65--g2.bb77e2c1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-70--g1.1896271e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-70--g3.b28c86fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-75--g2.1b34ed25.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-80--g1.a5644650.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-80--g3.026ebd10.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-85--g2.8c86c640.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-90--g1.bd9729a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-90--g3.0b6fd891.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-100--g1.eeb7acc1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-100--g3.cdf80f0f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-110--g1.09c32e32.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-110--g3.bad7b480.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-120--g1.343b1010.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-120--g3.546873db.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-130--g1.7ffeb59e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-130--g3.bf38e05c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-5--g2.ebce1f01.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-5--g3.3af8efb4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-10--g1.8a5c0115.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-10--g2.ad5f7d90.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-10--g3.a82bcf90.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-15--g2.aca06df6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-15--g3.53994d0a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-20--g1.af9e4293.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-20--g2.9e88edec.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-20--g3.11d7d1c0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-25--g1.cc37b6a2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-25--g2.9a69ae6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-25--g3.f1b81b62.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-30--g1.bba5d38c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-30--g2.24d963f4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-30--g3.62f401a5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-35--g1.45228792.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-35--g2.95331a23.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-35--g3.ad302825.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-40--g1.580d8dba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-40--g2.ef8144ed.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-40--g3.40ecba48.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-45--g2.f41b3db9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-45--g3.62b6fde1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-50--g1.4657ea06.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-50--g2.b09b7508.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-50--g3.0aa73207.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-55--g2.7d194fac.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-55--g3.ed0a2e22.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-60--g1.58e5908a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-60--g2.aed4f160.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-60--g3.ea9c8fdb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-65--g2.54e6c1f0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-65--g3.4792115d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-70--g1.aa082679.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-70--g2.84465687.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-70--g3.ff4bfb81.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-75--g1.96dc879a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-75--g2.62c37706.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-75--g3.77267ab5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-80--g1.49dbc461.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-80--g2.7377246c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-80--g3.b35b5a61.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-85--g2.6c4b570d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-85--g3.d67b71de.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-90--g1.be1d5ec8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-100--g1.208820d6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-110--g1.2a1a5bb0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-120--g1.f5162198.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-130--g1.ab836ce5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--minimum-safe-distance--g1.e2f1a969.png\";","export default __webpack_public_path__ + \"static/media/regulatory--minimum-safe-distance--g2.f81b7cf1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--mopeds-and-bicycles-only--g1.6a32c318.png\";","export default __webpack_public_path__ + \"static/media/regulatory--motorcycles-and-bicycles-only--g1.5be11f05.png\";","export default __webpack_public_path__ + \"static/media/regulatory--motorcycles-only--g1.3599617f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--motorcycles-only--g2.1e5763c9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-5--g1.2d471622.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-10--g1.e49f6633.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-15--g1.74d7f0eb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-20--g1.e923f062.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-25--g1.1eee3953.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-30--g1.de686fba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-35--g1.3a039535.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-40--g1.ed13d478.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-45--g1.13e9c312.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-50--g1.f36e3f30.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-55--g1.eda1a245.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-60--g1.d401082f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-65--g1.b036b665.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-70--g1.5dbee8eb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-75--g1.02809bff.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-80--g1.60f65bd6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-85--g1.bfca22ba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-abnormal-vehicles--g1.9a1ba76a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-atvs--g1.351b1213.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles--g1.fbfdb4d6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles--g2.10ba3fba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles--g3.aef27aee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-carts-or-hand-carts--g1.0980edb5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-mopeds-or-motorcycles--g1.6deac529.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-mopeds-or-motorcycles--g2.47379579.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-or-hand-carts--g1.b307cb32.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-or-motorcycles--g1.115b2e72.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-tractors-or-carts--g1.c9248372.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-buses--g1.67236178.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-buses--g2.579a2458.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-buses--g3.6b590d19.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-caravan-trailers--g1.f42a260f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-caravans--g1.941fa0cc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-caravans-or-caravan-trailers--g1.ee733d20.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-cargo-loading--g1.1b0eeb2b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts--g1.928af1c6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts--g2.b6f19e6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts--g3.74460970.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts-or-tractors--g1.9d3bbf40.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-construction-vehicles--g1.28ffa65d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-entry--g1.c657fa8f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-equestrians--g1.81627a3a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-go-straight-or-turn-left--g1.ba71ea9f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-go-straight-or-turn-right--g1.bf8a6fa3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-good-trailers--g2.bad20402.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-goods-vehicle-trailers--g1.764e3efc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hand-carts--g1.7e3449ab.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hand-carts--g2.19c3e969.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hand-carts-or-bicycles--g1.0279d73d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hawkers--g1.1e14d7e1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g1.8a560f33.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g2.9fff7565.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g3.91da44ae.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g4.216491f1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g5.959f1c6d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1.37078248.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2.2e3a18ee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-or-buses--g1.05787c73.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-or-tractors--g1.a3d74207.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-or-trailers--g1.0e4821b9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-horizontal-turn--g1.ab7eda4b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-horn--g1.2695a31e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-horn--g2.5841efbd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-lane-change-to-left--g1.c3b5e313.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-lane-change-to-right--g1.65211254.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-learner-drivers--g1.3ebd3c5a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-or-u-turn--g1.b309afb9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g1.b330753f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g2.3a06039e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g3.34218609.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g4.f2416352.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g5.c53c6486.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-low-speed-vehicles--g1.4b08326a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-mopeds-or-bicycles--g1.72ce756c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicle-trailers--g1.db1f891e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g1.2bd757f6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g3.b3120ac6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g4.5e81bd00.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g5.d88792f9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g6.44fb91e7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g7.2c8ec64f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-except-motorcycles--g1.5af55863.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-except-motorcycles--g2.7d175930.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-except-motorcycles--g3.a4448c41.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-or-bicycles--g1.317ebe25.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-or-buses--g1.8e58f8bf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-or-carts--g1.39349e1f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motorcycles--g1.f9dc81e3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motorcycles--g2.65414d33.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g1.d876c125.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g2.2b83574c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g4.22b05cd4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g5.6b8e21fc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g6.dc77c0cd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g7.30b8ee6b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking-atvs--g1.6dd58589.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking-by-heavy-goods-vehicles--g1.f97c589c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g1.4ca5a89f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g2.a3c63e81.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g3.ced5e03c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g4.4c779b9c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g5.48af12a8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g6.6db7b740.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g7.da720b8d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g8.8a640aed.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g9.b969233b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-bicycles-or-motorcycles--g1.932ed75c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-bus-stop--g1.d790c322.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g1.32cc0e7c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g2.cbe40936.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g3.f817e11a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g4.8a3143db.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g5.c5a471d8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-passenger-loading--g1.9272ff3b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g1.654534fc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g2.c1cbab61.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g3.db9ef7ad.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g4.7f4a3d27.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g5.02c0c663.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g6.4d3714e7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1.e4fc9208.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-or-bicycles--g1.4a8441a7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-or-bicycles--g2.0366930c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-or-bicycles--g3.426675bf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-rickshaws--g1.fc782f2c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-rickshaws--g2.61c13947.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-rickshaws--g3.ac5bec9d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn--g1.6e467745.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn--g2.97edc91d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn--g3.63dc1b44.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn-on-red--g1.f6ea7f5c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-skiing--g1.655b7641.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-snowmobiles--g1.cfa8001f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-snowmobiles--g2.2e3d9be1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-snowmobiles-or-atvs--g1.1bf91012.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g1.4fd0a542.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g2.22eabfcc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g3.60647b5f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g5.9c7f0f1e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g6.a5c23b68.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g7.349246a0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping-on-pavement--g1.4ad4966b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-straight-through--g1.6fe4bf6d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-straight-through--g2.9e890383.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-studded-snow-chains--g1.788d151e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-through-trucks--g1.bad0c928.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tour-buses--g1.fa7322d5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tractors--g1.a2437580.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tractors-mopeds-or-bicycles--g1.102563a8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tractors-or-carts--g1.3829cc65.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-trailers--g1.309aba75.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tricycles--g1.fa034d03.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tricycles-or-hand-carts--g1.eafc4e68.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turn-on-red--g1.d126fe1a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turn-on-red--g2.b82499bd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turn-on-red--g3.9040df5f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turns--g1.32fc69c3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turns--g2.0414b2fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-two-stage-right-turn-for-mopeds--g1.6b816a0e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-u-turn--g1.18b5ecf1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-u-turn--g2.7911ab30.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-u-turn--g3.d7392ba4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g1.794908c9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g2.b8c733f6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g3.eed2c264.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g4.5511e61f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1.988e8514.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2.93eebcbf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-explosives--g1.0565ddd2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1.7a3c82c6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-left--g1.b090ec6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-left--g2.50ea813a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-left--g3.0113405a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-right--g1.791c0a85.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-right--g2.8585b78c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-right--g3.9cdca710.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-straight--g1.47ea933f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-straight--g3.01f68d4b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-fee-station--g1.70710155.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-restrictions--g1.2b92b8a8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-restrictions--g2.231db037.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-restrictions--g3.4e6ef760.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-on-either-side--g1.ff7956d3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-on-either-side--g2.9dec1fee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-on-either-side--g3.d1ffedcd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-with-care--g1.75f3b466.png\";","export default __webpack_public_path__ + \"static/media/regulatory--passing-lane-ahead--g1.f3e273fd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-bicycles-permitted--g1.3d105bf0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-keep-left--g1.674c2d80.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-only--g1.1fc71024.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-only--g2.4bfe3f3f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-only--g3.76d6977a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-priority-zone--g1.a5b6727e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-push-button--g1.4e8319dc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-push-button--g2.fcfd976d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-over-oncoming-vehicles--g1.db6faf10.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-over-oncoming-vehicles--g2.7de31d11.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-road--g1.a9c3ba8b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-road--g2.922fe884.png\";","export default __webpack_public_path__ + \"static/media/regulatory--radar-enforced--g1.d785a081.png\";","export default __webpack_public_path__ + \"static/media/regulatory--reserved-parking--g1.3ad03559.png\";","export default __webpack_public_path__ + \"static/media/regulatory--reversible-lanes--g1.9fb06219.png\";","export default __webpack_public_path__ + \"static/media/regulatory--reversible-lanes--g2.969c0d44.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed--g1.9e903e6d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed--g2.dda11416.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed-to-vehicles--g1.dca51279.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed-to-vehicles--g3.b3970891.png\";","export default __webpack_public_path__ + \"static/media/regulatory--roundabout--g1.8433aefc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--roundabout--g2.50727331.png\";","export default __webpack_public_path__ + \"static/media/regulatory--roundabout--g3.2d0882dd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--shared-path-bicycles-and-pedestrians--g1.72464b6b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--shared-path-pedestrians-and-bicycles--g1.bf20db10.png\";","export default __webpack_public_path__ + \"static/media/regulatory--sidewalk-closed--g1.e4dd968e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--slanted-parking--g1.2c69ce1c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snow-chains--g1.a656672c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snow-chains--g2.84dc0228.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snow-chains--g3.a156dd58.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snowmobiles-only--g1.1dde78d9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snowmobiles-permitted--g1.27015a7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--speed-limit-zone--g1.981aeede.png\";","export default __webpack_public_path__ + \"static/media/regulatory--speeding-fines-increased--g1.31b9fc1b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--state-route--g1.721042d7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stay-in-lane--g1.56d686b0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g1.7d97baab.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g2.483334d1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g3.4d1e72e1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g4.ee770dce.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g5.2a819d8f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g6.de739f11.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g7.9490caa4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g8.722f4b38.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g9.06825e07.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g10.505ed820.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-here-on-red-or-flashing-light--g1.2e18bf3f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-here-on-red-or-flashing-light--g2.1407c908.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-signals--g1.9b8c0d01.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-signals--g2.7cea9e75.png\";","export default __webpack_public_path__ + \"static/media/regulatory--tanks-only--g1.46e2c223.png\";","export default __webpack_public_path__ + \"static/media/regulatory--taxi-only--g1.77097a52.png\";","export default __webpack_public_path__ + \"static/media/regulatory--text--g1.14bfe577.png\";","export default __webpack_public_path__ + \"static/media/regulatory--text--g2.12b5de42.png\";","export default __webpack_public_path__ + \"static/media/regulatory--toll-pass-only--g1.971da401.png\";","export default __webpack_public_path__ + \"static/media/regulatory--tractors-only--g1.ea2f343e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--traffic-signal-photo-enforced--g1.f6a31551.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trams-and-buses-only--g1.9d082cd5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trams-only--g1.5a5684c6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes--g1.5f11c2cf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes-go-straight-center-lane--g1.e11d6237.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes-turn-left-center-lane--g1.e4a2f108.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes-turn-right-center-lane--g1.d4df745b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-route--g1.630b0b24.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-5--g1.29df11b6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-10--g1.e7d67cd1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-15--g1.f67bb65f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-20--g1.d81afa41.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-25--g1.96be34eb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-30--g1.9df85672.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-35--g1.9a883455.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-40--g1.9800dbf8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-45--g1.69fdca3f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-50--g1.70f43e41.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-55--g1.1656c6f2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-60--g1.d6cf88aa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-65--g1.b46b4bbd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-70--g1.b20a87d2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-75--g1.d658980b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-80--g1.c243996e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-85--g1.6125756c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trucks-and-buses-only--g1.a55e77aa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trucks-on-right--g1.5ad11e57.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trucks-only--g1.2caa4b16.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left--g1.12ef941b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left--g2.01af6a90.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left--g3.7a1a0373.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-ahead--g1.35b3766c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-ahead--g2.fd4eb44f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-right--g1.89ad6968.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-right--g2.6eca1c7b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-right--g3.0bee4d0c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-u-turn--g1.8f5028c9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right--g1.8b3bf63e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right--g2.bfc39dfd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right--g3.1d726512.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right-ahead--g1.76f304e8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right-ahead--g2.7774ded9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turning-vehicles-yield-to-pedestrians--g1.99692a47.png\";","export default __webpack_public_path__ + \"static/media/regulatory--two-stage-right-turn-for-mopeds--g1.8d55bffb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--two-way--g1.b64bf0c5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--u-turn--g1.c3a04a95.png\";","export default __webpack_public_path__ + \"static/media/regulatory--u-turn--g2.4e33c845.png\";","export default __webpack_public_path__ + \"static/media/regulatory--u-turn--g3.9d07cd2e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--use-crosswalk--g1.4941d3c3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-dangerous-goods-only--g1.3a569021.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-dangerous-goods-permitted--g1.41785cc4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-explosives-only--g1.1ecbe4c0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-hazardous-goods-permitted--g1.e45be8b9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-only--g1.de6ad106.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wear-seat-belt--g1.f47a44cf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wear-seat-belt--g2.f386bc69.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wear-seat-belt--g3.4cdb1888.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g1.817038a1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g2.e1500a68.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g3.19d1b90e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g4.0d1fcb42.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g5.71d3ad85.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g6.c9ce9e57.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g7.11b45bd0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit-per-axle--g1.d05b072b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit-per-tandem-axle--g1.e1fb3ce7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit-with-trucks--g1.c0fc507e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--width-limit--g1.e94fb0a5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wrong-way--g1.4c1aec61.png\";","export default __webpack_public_path__ + \"static/media/regulatory--yield--g1.00724e2e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--yield-or-stop-for-pedestrians--g1.bf8555de.png\";","export default __webpack_public_path__ + \"static/media/regulatory--your-speed--g1.354c97cb.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g1.a6065411.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g2.20400c8d.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g3.8f08b131.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g4.e39b418a.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g5.78034bb3.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g6.271d6630.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g7.7f6c0b7f.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g8.a06f3807.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-from-entering-roadway--g1.bbd50002.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-from-entering-roadway--g2.6c2e69cb.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-left--g1.a8c7833e.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-right--g1.d5032345.png\";","export default __webpack_public_path__ + \"static/media/warning--animal-drawn-vehicles--g1.38f47feb.png\";","export default __webpack_public_path__ + \"static/media/warning--arch-bridge--g1.5cc463ff.png\";","export default __webpack_public_path__ + \"static/media/warning--atv-and-snowmobiles--g1.6e6cfa37.png\";","export default __webpack_public_path__ + \"static/media/warning--atv-crossing--g1.627f932d.png\";","export default __webpack_public_path__ + \"static/media/warning--atv-crossing--g2.4048703b.png\";","export default __webpack_public_path__ + \"static/media/warning--axle-restriction--g1.37ac1b3c.png\";","export default __webpack_public_path__ + \"static/media/warning--bear-crossing--g1.5e1d24c8.png\";","export default __webpack_public_path__ + \"static/media/warning--bear-crossing--g2.cddc2568.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-and-others--g1.64fe6c90.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-caution-on-rail-tracks--g1.24127b37.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g1.742a95b5.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g2.aef0fc8a.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g3.6f7cbdff.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g4.bc459af3.png\";","export default __webpack_public_path__ + \"static/media/warning--bollard--g1.92dd9345.png\";","export default __webpack_public_path__ + \"static/media/warning--bridge--g1.5beed47f.png\";","export default __webpack_public_path__ + \"static/media/warning--bridge--g2.be0cc144.png\";","export default __webpack_public_path__ + \"static/media/warning--bus-stop-ahead--g1.d2042d63.png\";","export default __webpack_public_path__ + \"static/media/warning--bus-stop-ahead--g2.7fa78816.png\";","export default __webpack_public_path__ + \"static/media/warning--bus-stop-ahead--g3.0a2abcae.png\";","export default __webpack_public_path__ + \"static/media/warning--camel-crossing--g1.0fc63ebb.png\";","export default __webpack_public_path__ + \"static/media/warning--camel-crossing--g2.fe1abca3.png\";","export default __webpack_public_path__ + \"static/media/warning--camera--g1.97e5cab0.png\";","export default __webpack_public_path__ + \"static/media/warning--camera--g2.bf3bf685.png\";","export default __webpack_public_path__ + \"static/media/warning--carts--g1.2088f796.png\";","export default __webpack_public_path__ + \"static/media/warning--carts--g2.0188153d.png\";","export default __webpack_public_path__ + \"static/media/warning--checkpoint--g1.ee5447d8.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g1.be722cbc.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g2.802736a3.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g3.7d28f751.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g4.1e204dc8.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g6.52ca9670.png\";","export default __webpack_public_path__ + \"static/media/warning--cliff--g1.a5923913.png\";","export default __webpack_public_path__ + \"static/media/warning--cliff--g2.b11bf115.png\";","export default __webpack_public_path__ + \"static/media/warning--closed-lane-in-triple-lanes--g1.5e11cdf9.png\";","export default __webpack_public_path__ + \"static/media/warning--closed-lane-in-triple-lanes--g2.478e5f17.png\";","export default __webpack_public_path__ + \"static/media/warning--construction-ahead--g1.c57e1e5e.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g1.14d61769.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g2.d93cf962.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g3.522ca193.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g4.1280a5a4.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g5.0af73743.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g6.50b62775.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads-with-priority-to-the-right--g1.7597a71a.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left--g1.fc958342.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left--g2.1b916c62.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left--g3.a2b64322.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left-with-junction--g1.0bd6a7a9.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-out-intersection-left--g1.e1afa97c.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-out-intersection-right--g1.b5a17894.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right--g1.e03eb082.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right--g2.b7f5e2a8.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right--g3.9f2c56e1.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right-with-junction--g1.a3d85594.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-left--g1.4728c562.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-left--g2.c8bf2f3a.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-left--g4.69cf0606.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g1.ab4c438d.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g2.040eb808.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g3.74a9268a.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g4.140e8377.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end--g1.822dc654.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end--g2.c8837f3e.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end--g3.b4178c04.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end-go-left--g1.e34e1902.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end-go-right--g1.b71f819e.png\";","export default __webpack_public_path__ + \"static/media/warning--descent-or-climbing-lanes-in-triple-lanes--g1.f42d15ba.png\";","export default __webpack_public_path__ + \"static/media/warning--detour-ahead--g1.62e99e19.png\";","export default __webpack_public_path__ + \"static/media/warning--detour-or-construction-ahead--g1.0dad4882.png\";","export default __webpack_public_path__ + \"static/media/warning--dip--g1.066fd9ff.png\";","export default __webpack_public_path__ + \"static/media/warning--dip--g2.149643b1.png\";","export default __webpack_public_path__ + \"static/media/warning--disabled-persons-crossing--g1.501e3c12.png\";","export default __webpack_public_path__ + \"static/media/warning--disabled-persons-crossing--g2.1097238b.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g1.4e234f74.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g2.c8b40ab4.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g3.3669f7f2.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g4.88ebcd8f.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g5.f5e120c6.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g6.dea45011.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g7.0a7f27b4.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g8.c97f56db.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g9.27d2fae7.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g1.236372f1.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g2.d64d1f97.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g3.6ae2c6c2.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g4.3c3eab12.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-left--g1.b83e1490.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-left--g2.a464ead0.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-right--g1.38f23cbf.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-right--g2.67b00901.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-to-left--g1.789096ef.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-to-right--g1.b48c54ce.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g1.b5ee6b47.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g2.1c50b229.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g3.ff1fdd4d.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g4.b8240120.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g5.59bfd681.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g6.d8382f60.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g7.e8a76726.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g8.3a90a31b.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-left--g1.6eb7ea5d.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-left--g2.f33a8be0.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-right--g1.a3423d11.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-right--g2.0c1c9b73.png\";","export default __webpack_public_path__ + \"static/media/warning--double-descent--g1.4470eef4.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-left--g1.404c39b1.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-left--g2.9913da77.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-right--g1.ce6cc21b.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-right--g2.220ae800.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-left--g1.25faddb2.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-left--g3.90e3a23d.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-right--g1.d5e87954.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-right--g3.f828d2c5.png\";","export default __webpack_public_path__ + \"static/media/warning--double-turn-first-left--g1.be7aa3be.png\";","export default __webpack_public_path__ + \"static/media/warning--double-turn-first-right--g1.98471837.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-all-directions-on-left--g1.c3148502.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-all-directions-on-right--g1.e1524300.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-go-straight-or-turn-left--g1.72412f1e.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-go-straight-or-turn-right--g1.2b80e972.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-left-turn--g1.a0868b18.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-left-turn-or-go-straight--g1.35661ca4.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-right-turn--g1.6eb106ff.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-right-turn-or-go-straight--g1.d9341e1a.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left--g1.bf236e41.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g1.920cce95.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g2.f9d846fa.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g3.bf437251.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g4.15fdd3ad.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-right--g1.24e2dfad.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-path-cyclists-and-pedestrians--g1.c641917c.png\";","export default __webpack_public_path__ + \"static/media/warning--electricity--g1.e43834b5.png\";","export default __webpack_public_path__ + \"static/media/warning--electricity--g2.f309d9d6.png\";","export default __webpack_public_path__ + \"static/media/warning--elephant-crossing--g1.1d0a5289.png\";","export default __webpack_public_path__ + \"static/media/warning--emergency-vehicles--g1.11cfb237.png\";","export default __webpack_public_path__ + \"static/media/warning--emu-crossing--g1.52d9cf04.png\";","export default __webpack_public_path__ + \"static/media/warning--emu-crossing--g2.fee7dc08.png\";","export default __webpack_public_path__ + \"static/media/warning--entering-roadway-merge--g1.332dc1ff.png\";","export default __webpack_public_path__ + \"static/media/warning--entering-roadway-merge--g2.86b6aca3.png\";","export default __webpack_public_path__ + \"static/media/warning--equestrians-crossing--g1.19b9300d.png\";","export default __webpack_public_path__ + \"static/media/warning--equestrians-crossing--g2.d8fe8c9d.png\";","export default __webpack_public_path__ + \"static/media/warning--expressway--g1.5cdf1e31.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g1.ba33de2a.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g2.3de84b6f.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g3.092e6480.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g4.21007872.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g1.e3a61a97.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g2.d134cc6d.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g3.159ce905.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g4.84a6e30d.png\";","export default __webpack_public_path__ + \"static/media/warning--ferry--g1.0879199d.png\";","export default __webpack_public_path__ + \"static/media/warning--flaggers-in-road--g1.46677e39.png\";","export default __webpack_public_path__ + \"static/media/warning--flaggers-in-road--g2.4b786672.png\";","export default __webpack_public_path__ + \"static/media/warning--foggy-road--g1.b2ea0888.png\";","export default __webpack_public_path__ + \"static/media/warning--foggy-road--g2.4e58a69c.png\";","export default __webpack_public_path__ + \"static/media/warning--ford--g1.a4e7c139.png\";","export default __webpack_public_path__ + \"static/media/warning--forest--g1.e558de15.png\";","export default __webpack_public_path__ + \"static/media/warning--fresh-oil--g1.2aa89129.png\";","export default __webpack_public_path__ + \"static/media/warning--frog-crossing--g1.cc552a98.png\";","export default __webpack_public_path__ + \"static/media/warning--gate--g1.ef474cd4.png\";","export default __webpack_public_path__ + \"static/media/warning--gate--g2.7393d775.png\";","export default __webpack_public_path__ + \"static/media/warning--gate-left--g1.060d16fa.png\";","export default __webpack_public_path__ + \"static/media/warning--gate-right--g1.a3c3be2f.png\";","export default __webpack_public_path__ + \"static/media/warning--go-left--g1.f419ee5e.png\";","export default __webpack_public_path__ + \"static/media/warning--go-right--g1.39eb9a50.png\";","export default __webpack_public_path__ + \"static/media/warning--golf-carts-crossing--g1.6d3a5336.png\";","export default __webpack_public_path__ + \"static/media/warning--gravel-road-surface--g1.53217d4e.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-left--g1.edb73aef.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-left--g2.afaea372.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-left--g3.6f0b4e07.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-right--g1.7379cbcd.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-right--g3.193a361e.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g2.338e63be.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g3.71fa9500.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g4.32ae1bcd.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g5.079c301b.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-left--g1.5f4578ae.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-left--g3.fa116178.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-right--g1.e52240f3.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-right--g3.4a7db298.png\";","export default __webpack_public_path__ + \"static/media/warning--horse-crossing--g1.d3216891.png\";","export default __webpack_public_path__ + \"static/media/warning--icy-road--g1.c497dd9c.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-left--g1.701ef67e.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-left--g2.aed0430a.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-right--g1.97f3099c.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-right--g2.868e5834.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g1.9d8f0946.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g2.4142c0b3.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g3.ac6cedd7.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g4.64bbd277.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g1.c806e5b6.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g2.42f22c1e.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g3.928aa62d.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g4.956d6e55.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-merge-from-left--g1.bf9a8c4e.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-merge-from-right--g1.9d27fd5a.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-side-roads--g1.266339ad.png\";","export default __webpack_public_path__ + \"static/media/warning--kangaloo-crossing--g1.f937c5b4.png\";","export default __webpack_public_path__ + \"static/media/warning--keep-distance--g1.18012af6.png\";","export default __webpack_public_path__ + \"static/media/warning--keep-left--g1.b5f34133.png\";","export default __webpack_public_path__ + \"static/media/warning--keep-right--g1.9eb6188b.png\";","export default __webpack_public_path__ + \"static/media/warning--kiwi-crossing--g1.1d1fffc2.png\";","export default __webpack_public_path__ + \"static/media/warning--kiwi-crossing--g2.31b4982f.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g1.c49ced4a.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g2.89b90763.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g3.31ba34fb.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g4.f4a67cc8.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-left--g1.7624de03.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-left--g2.3509b0fc.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-right--g1.2df26f89.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-right--g2.7bbfbdf6.png\";","export default __webpack_public_path__ + \"static/media/warning--length-restriction--g1.883f897f.png\";","export default __webpack_public_path__ + \"static/media/warning--length-restriction--g2.82aa1857.png\";","export default __webpack_public_path__ + \"static/media/warning--light-rail-transit-vehicles--g1.18a56f76.png\";","export default __webpack_public_path__ + \"static/media/warning--limited-lighting-under-trees--g1.12866256.png\";","export default __webpack_public_path__ + \"static/media/warning--logging-vehicles--g1.78031a98.png\";","export default __webpack_public_path__ + \"static/media/warning--loop-270-degree--g1.2e953561.png\";","export default __webpack_public_path__ + \"static/media/warning--loop-pretzel--g1.ec181bb6.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g1.9cae8688.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g2.1f8298ec.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g3.aa246e46.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g4.5d211f2c.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g1.28089b2a.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g2.5cf5bdc9.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g3.dd69f808.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g4.fc3dd88f.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g5.1f6f2725.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g6.7aba7310.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g7.0ae82c4d.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g8.15694dc5.png\";","export default __webpack_public_path__ + \"static/media/warning--low-ground-clearance--g1.ffa6da01.png\";","export default __webpack_public_path__ + \"static/media/warning--low-ground-clearance--g2.3e54bb51.png\";","export default __webpack_public_path__ + \"static/media/warning--low-ground-clearance--g3.ce30c364.png\";","export default __webpack_public_path__ + \"static/media/warning--monkey-crossing--g1.f226862a.png\";","export default __webpack_public_path__ + \"static/media/warning--motorcycles-crossing--g1.afd3f593.png\";","export default __webpack_public_path__ + \"static/media/warning--narrow-bridge--g1.e80d13e1.png\";","export default __webpack_public_path__ + \"static/media/warning--narrow-bridge--g2.eb66e49c.png\";","export default __webpack_public_path__ + \"static/media/warning--narrow-bridge--g3.2ba8e460.png\";","export default __webpack_public_path__ + \"static/media/warning--no-passing-zone--g1.4c1a1d05.png\";","export default __webpack_public_path__ + \"static/media/warning--no-passing-zone--g2.d2c6f7ce.png\";","export default __webpack_public_path__ + \"static/media/warning--occupied-lanes--g1.a3fb4526.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g1.b417a496.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g2.935e20ba.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g3.faa03178.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g4.353ab25e.png\";","export default __webpack_public_path__ + \"static/media/warning--opening-or-swing-bridge--g1.1fb27ae9.png\";","export default __webpack_public_path__ + \"static/media/warning--opening-or-swing-bridge--g2.1a1a0f21.png\";","export default __webpack_public_path__ + \"static/media/warning--other-danger--g1.3188ed01.png\";","export default __webpack_public_path__ + \"static/media/warning--other-danger--g2.7e8cac18.png\";","export default __webpack_public_path__ + \"static/media/warning--other-danger--g3.1ee8a971.png\";","export default __webpack_public_path__ + \"static/media/warning--panda-crossing--g1.e2bdb7b5.png\";","export default __webpack_public_path__ + \"static/media/warning--pass-left-or-right--g1.7d7f601f.png\";","export default __webpack_public_path__ + \"static/media/warning--pass-left-or-right--g2.b55dff44.png\";","export default __webpack_public_path__ + \"static/media/warning--pass-left-or-right--g3.f01eab62.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ahead--g1.7a325168.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g1.150a9eb6.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g2.4aa4c794.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g3.95da7c5c.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g4.2a4100fb.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g5.3aa58447.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g1.3b874634.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g4.5c84a724.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g5.b0b6f57d.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g6.116c592a.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g7.9ef22005.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g8.04317383.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g9.8def020a.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g10.f15c17b4.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g11.d4d8802a.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g12.d6a9a05d.png\";","export default __webpack_public_path__ + \"static/media/warning--playground--g1.d27fa8a1.png\";","export default __webpack_public_path__ + \"static/media/warning--playground--g3.030a0910.png\";","export default __webpack_public_path__ + \"static/media/warning--polar-bear-crossing--g1.83f48f13.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g1.06042e51.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g2.f72ff26e.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g3.115341dd.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g4.ddcd4717.png\";","export default __webpack_public_path__ + \"static/media/warning--rabbit-crossing--g1.078f403a.png\";","export default __webpack_public_path__ + \"static/media/warning--raccoon-crossing--g1.1668b542.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g1.e669ea31.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g2.02fde72b.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g3.8750f7fe.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g4.7ca3c9a3.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g1.10b1d9f7.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g2.1e0850d8.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g3.6e3df1bf.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g4.ee65577f.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g5.489d5280.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g6.692ef82e.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g7.a1fba766.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g1.56e6bc9c.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g2.4806262d.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g3.0a195b24.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g4.2ef1f5ca.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g5.26a5cfe8.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g6.cc1a10b5.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g1.e91d23c6.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g2.4e7c41ae.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g3.025e4551.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g4.7f8bcdfd.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g5.ff21b221.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g6.3e6b2b59.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g7.0191ef0a.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g8.0b49d7a0.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g9.e91cfdd5.png\";","export default __webpack_public_path__ + \"static/media/warning--ramp-closed--g1.b7091862.png\";","export default __webpack_public_path__ + \"static/media/warning--reduced-maximum-speed-limit--g1.e37bae32.png\";","export default __webpack_public_path__ + \"static/media/warning--reserved-lane--g1.8d676894.png\";","export default __webpack_public_path__ + \"static/media/warning--restricted-zone--g1.4c3bdaf7.png\";","export default __webpack_public_path__ + \"static/media/warning--reversible-lanes--g1.1aa1f3d9.png\";","export default __webpack_public_path__ + \"static/media/warning--reversible-lanes--g2.8e1063e0.png\";","export default __webpack_public_path__ + \"static/media/warning--rickshaws-crossing--g1.57f86968.png\";","export default __webpack_public_path__ + \"static/media/warning--road-blocks--g1.b88715e8.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump--g1.33610537.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump--g2.82cf40b3.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump--g3.a44b2601.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump-with-speed-limit--g1.7be1fee6.png\";","export default __webpack_public_path__ + \"static/media/warning--road-closed--g3.c3c7cc6d.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows--g1.77f6e5cb.png\";","import basicPins from './basic-pins';\r\nimport trafficSigns from './traffic-signs';\r\nimport UKRoadSigns from './uk-road-signs';\r\nimport packageObjects from './package_objects';\r\nimport packageSigns from './package_signs';\r\nimport allterra from './allterra';\r\n\r\nconst tagTextures = {\r\n ...basicPins,\r\n ...trafficSigns,\r\n ...UKRoadSigns,\r\n ...packageObjects,\r\n ...packageSigns,\r\n ...allterra\r\n};\r\n\r\nexport const defaultTagTexture = Object.keys(tagTextures)[0];\r\n\r\nexport const getTagTexturePath = (key) => {\r\n return tagTextures[key];\r\n};\r\n\r\nexport default tagTextures;\r\n","import icon0 from './complementary--accident-area--g1.png';\r\nimport icon1 from './complementary--accident-area--g2.png';\r\nimport icon2 from './complementary--accident-area--g3.png';\r\nimport icon3 from './complementary--accident-area--g4.png';\r\nimport icon4 from './complementary--advisory-exit-or-ramp-speed--g1.png';\r\nimport icon5 from './complementary--bicycles--g1.png';\r\nimport icon6 from './complementary--bicycles-and-pedestrians-detour--g1.png';\r\nimport icon7 from './complementary--bicycles-or-pedestrians-detour--g1.png';\r\nimport icon8 from './complementary--bicycles-turn-right--g1.png';\r\nimport icon9 from './complementary--bike-route--g1.png';\r\nimport icon10 from './complementary--bike-route--g3.png';\r\nimport icon11 from './complementary--both-directions--g1.png';\r\nimport icon12 from './complementary--both-directions--g2.png';\r\nimport icon13 from './complementary--buses--g1.png';\r\nimport icon14 from './complementary--buses-and-trucks--g1.png';\r\nimport icon15 from './complementary--camera--g1.png';\r\nimport icon16 from './complementary--camera--g2.png';\r\nimport icon17 from './complementary--camera--g3.png';\r\nimport icon18 from './complementary--camera--g4.png';\r\nimport icon19 from './complementary--camera--g5.png';\r\nimport icon20 from './complementary--caravan-trailers--g2.png';\r\nimport icon21 from './complementary--caravan-trailers--g3.png';\r\nimport icon22 from './complementary--caravans--g2.png';\r\nimport icon23 from './complementary--carts--g1.png';\r\nimport icon24 from './complementary--chevron-left--g1.png';\r\nimport icon25 from './complementary--chevron-left--g2.png';\r\nimport icon26 from './complementary--chevron-left--g3.png';\r\nimport icon27 from './complementary--chevron-left--g4.png';\r\nimport icon28 from './complementary--chevron-left--g5.png';\r\nimport icon29 from './complementary--chevron-right--g1.png';\r\nimport icon30 from './complementary--chevron-right--g2.png';\r\nimport icon31 from './complementary--chevron-right--g3.png';\r\nimport icon32 from './complementary--chevron-right--g4.png';\r\nimport icon33 from './complementary--chevron-right--g5.png';\r\nimport icon34 from './complementary--dangerous-or-pollutant-good--g1.png';\r\nimport icon35 from './complementary--dead-end--g1.png';\r\nimport icon36 from './complementary--detour--g1.png';\r\nimport icon37 from './complementary--disabled-persons--g1.png';\r\nimport icon38 from './complementary--distance--g1.png';\r\nimport icon39 from './complementary--distance--g2.png';\r\nimport icon40 from './complementary--distance--g3.png';\r\nimport icon41 from './complementary--end-of-road-works--g1.png';\r\nimport icon42 from './complementary--except-bicycles--g1.png';\r\nimport icon43 from './complementary--except-bicycles--g2.png';\r\nimport icon44 from './complementary--except-buses--g1.png';\r\nimport icon45 from './complementary--except-carts--g1.png';\r\nimport icon46 from './complementary--except-motorcycles--g1.png';\r\nimport icon47 from './complementary--except-motorcycles--g2.png';\r\nimport icon48 from './complementary--except-polluting-level-green--g1.png';\r\nimport icon49 from './complementary--except-polluting-level-green-yellow--g1.png';\r\nimport icon50 from './complementary--except-polluting-level-green-yellow-red--g1.png';\r\nimport icon51 from './complementary--except-tractors--g1.png';\r\nimport icon52 from './complementary--except-tractors--g2.png';\r\nimport icon53 from './complementary--except-trailers--g1.png';\r\nimport icon54 from './complementary--except-trailers--g2.png';\r\nimport icon55 from './complementary--except-trains--g1.png';\r\nimport icon56 from './complementary--except-trams--g1.png';\r\nimport icon57 from './complementary--except-trucks--g1.png';\r\nimport icon58 from './complementary--except-vehicles--g1.png';\r\nimport icon59 from './complementary--except-vehicles--g2.png';\r\nimport icon60 from './complementary--go-left--g1.png';\r\nimport icon61 from './complementary--go-right--g1.png';\r\nimport icon62 from './complementary--go-straight-or-turn-left--g1.png';\r\nimport icon63 from './complementary--go-straight-or-turn-right--g1.png';\r\nimport icon64 from './complementary--height-limit--g1.png';\r\nimport icon65 from './complementary--height-limit--g2.png';\r\nimport icon66 from './complementary--including-bicycles-and-motorcycles--g1.png';\r\nimport icon67 from './complementary--including-buses-vehicles--g1.png';\r\nimport icon68 from './complementary--keep-left--g1.png';\r\nimport icon69 from './complementary--keep-right--g1.png';\r\nimport icon70 from './complementary--lane-control--g1.png';\r\nimport icon71 from './complementary--lane-control--g2.png';\r\nimport icon72 from './complementary--lane-control--g3.png';\r\nimport icon73 from './complementary--maximum-speed-limit-10--g1.png';\r\nimport icon74 from './complementary--maximum-speed-limit-15--g1.png';\r\nimport icon75 from './complementary--maximum-speed-limit-20--g1.png';\r\nimport icon76 from './complementary--maximum-speed-limit-25--g1.png';\r\nimport icon77 from './complementary--maximum-speed-limit-30--g1.png';\r\nimport icon78 from './complementary--maximum-speed-limit-35--g1.png';\r\nimport icon79 from './complementary--maximum-speed-limit-40--g1.png';\r\nimport icon80 from './complementary--maximum-speed-limit-45--g1.png';\r\nimport icon81 from './complementary--maximum-speed-limit-50--g1.png';\r\nimport icon82 from './complementary--maximum-speed-limit-55--g1.png';\r\nimport icon83 from './complementary--maximum-speed-limit-60--g1.png';\r\nimport icon84 from './complementary--maximum-speed-limit-65--g1.png';\r\nimport icon85 from './complementary--maximum-speed-limit-70--g1.png';\r\nimport icon86 from './complementary--maximum-speed-limit-75--g1.png';\r\nimport icon87 from './complementary--maximum-speed-limit-80--g1.png';\r\nimport icon88 from './complementary--maximum-speed-limit-85--g1.png';\r\nimport icon89 from './complementary--maximum-speed-limit-90--g1.png';\r\nimport icon90 from './complementary--maximum-speed-limit-95--g1.png';\r\nimport icon91 from './complementary--motorcycles--g1.png';\r\nimport icon92 from './complementary--motorcycles--g2.png';\r\nimport icon93 from './complementary--motorcycles--g3.png';\r\nimport icon94 from './complementary--motorcycles--g4.png';\r\nimport icon95 from './complementary--obstacle-delineator--g1.png';\r\nimport icon96 from './complementary--obstacle-delineator--g2.png';\r\nimport icon97 from './complementary--obstacle-delineator--g3.png';\r\nimport icon98 from './complementary--one-direction-left--g1.png';\r\nimport icon99 from './complementary--one-direction-right--g1.png';\r\nimport icon100 from './complementary--pass-left--g1.png';\r\nimport icon101 from './complementary--pass-right--g1.png';\r\nimport icon102 from './complementary--pedestrians-and-bicycles--g1.png';\r\nimport icon103 from './complementary--pedestrians-left--g1.png';\r\nimport icon104 from './complementary--pedestrians-right--g1.png';\r\nimport icon105 from './complementary--photo-enforced--g1.png';\r\nimport icon106 from './complementary--playground--g1.png';\r\nimport icon107 from './complementary--priority-route-at-intersection--g1.png';\r\nimport icon108 from './complementary--priority-route-at-intersection--g2.png';\r\nimport icon109 from './complementary--priority-route-at-intersection--g3.png';\r\nimport icon110 from './complementary--priority-route-at-intersection--g4.png';\r\nimport icon111 from './complementary--priority-route-at-intersection--g5.png';\r\nimport icon112 from './complementary--priority-route-at-intersection--g6.png';\r\nimport icon113 from './complementary--railroad--g1.png';\r\nimport icon114 from './complementary--railroad--g2.png';\r\nimport icon115 from './complementary--railroad--g3.png';\r\nimport icon116 from './complementary--restriction-in-both-directions--g1.png';\r\nimport icon117 from './complementary--roundabout-go-left--g1.png';\r\nimport icon118 from './complementary--roundabout-go-right--g1.png';\r\nimport icon119 from './complementary--roundabout-go-straight--g1.png';\r\nimport icon120 from './complementary--slippery-for-caravan-trailers--g1.png';\r\nimport icon121 from './complementary--snow--g2.png';\r\nimport icon122 from './complementary--snow--g4.png';\r\nimport icon123 from './complementary--snow--g5.png';\r\nimport icon124 from './complementary--snowmobiles--g1.png';\r\nimport icon125 from './complementary--soft-shoulder--g1.png';\r\nimport icon126 from './complementary--soft-shoulder--g2.png';\r\nimport icon127 from './complementary--steep-ascent--g1.png';\r\nimport icon128 from './complementary--steep-descent--g1.png';\r\nimport icon129 from './complementary--time-restrictions--g1.png';\r\nimport icon130 from './complementary--time-restrictions--g3.png';\r\nimport icon131 from './complementary--tow-away-zone--g1.png';\r\nimport icon132 from './complementary--tow-away-zone--g3.png';\r\nimport icon133 from './complementary--tractors--g1.png';\r\nimport icon134 from './complementary--traffic-queues--g1.png';\r\nimport icon135 from './complementary--trailers--g1.png';\r\nimport icon136 from './complementary--trailers--g2.png';\r\nimport icon137 from './complementary--trailers--g3.png';\r\nimport icon138 from './complementary--trailers--g4.png';\r\nimport icon139 from './complementary--trains--g1.png';\r\nimport icon140 from './complementary--trams--g1.png';\r\nimport icon141 from './complementary--trees--g1.png';\r\nimport icon142 from './complementary--trucks--g1.png';\r\nimport icon143 from './complementary--trucks--g2.png';\r\nimport icon144 from './complementary--trucks--g3.png';\r\nimport icon145 from './complementary--trucks-and-trailers--g1.png';\r\nimport icon146 from './complementary--trucks-buses-trailers--g1.png';\r\nimport icon147 from './complementary--trucks-go-left--g1.png';\r\nimport icon148 from './complementary--trucks-go-left-ahead--g1.png';\r\nimport icon149 from './complementary--trucks-go-right--g1.png';\r\nimport icon150 from './complementary--trucks-go-right-ahead--g1.png';\r\nimport icon151 from './complementary--trucks-go-straight--g1.png';\r\nimport icon152 from './complementary--trucks-turn-left--g1.png';\r\nimport icon153 from './complementary--trucks-turn-right--g1.png';\r\nimport icon154 from './complementary--turn-left--g1.png';\r\nimport icon155 from './complementary--turn-left--g2.png';\r\nimport icon156 from './complementary--turn-right--g1.png';\r\nimport icon157 from './complementary--turn-right--g2.png';\r\nimport icon158 from './complementary--two-way-traffic--g1.png';\r\nimport icon159 from './complementary--two-way-traffic--g2.png';\r\nimport icon160 from './complementary--two-way-traffic--g3.png';\r\nimport icon161 from './complementary--two-way-traffic--g4.png';\r\nimport icon162 from './complementary--two-way-traffic--g5.png';\r\nimport icon163 from './complementary--vehicles--g1.png';\r\nimport icon164 from './complementary--vehicles--g2.png';\r\nimport icon165 from './complementary--vehicles-or-buses--g1.png';\r\nimport icon166 from './complementary--weekends-or-holidays--g1.png';\r\nimport icon167 from './complementary--weight-limit--g1.png';\r\nimport icon168 from './complementary--when-foggy--g1.png';\r\nimport icon169 from './complementary--when-rainy--g1.png';\r\nimport icon170 from './complementary--when-rainy--g2.png';\r\nimport icon171 from './complementary--when-rainy--g3.png';\r\nimport icon172 from './complementary--when-snowy--g1.png';\r\nimport icon173 from './complementary--when-snowy--g2.png';\r\nimport icon174 from './complementary--when-snowy-or-rainy--g1.png';\r\nimport icon175 from './complementary--when-snowy-or-rainy--g2.png';\r\nimport icon176 from './complementary--when-wet--g1.png';\r\nimport icon177 from './complementary--width-limit--g1.png';\r\nimport icon178 from './complementary--working-days--g1.png';\r\nimport icon179 from './information--airport--g1.png';\r\nimport icon180 from './information--airport--g2.png';\r\nimport icon181 from './information--bicycle-lane--g1.png';\r\nimport icon182 from './information--bicycles-both-ways--g1.png';\r\nimport icon183 from './information--bicycles-crossing--g1.png';\r\nimport icon184 from './information--bicycles-crossing--g2.png';\r\nimport icon185 from './information--bicycles-crossing--g3.png';\r\nimport icon186 from './information--bike-route--g1.png';\r\nimport icon187 from './information--bike-route--g2.png';\r\nimport icon188 from './information--built-up-area--g1.png';\r\nimport icon189 from './information--built-up-area--g2.png';\r\nimport icon190 from './information--bus-lane-straight--g1.png';\r\nimport icon191 from './information--bus-stop--g1.png';\r\nimport icon192 from './information--bus-stop--g2.png';\r\nimport icon193 from './information--camera--g1.png';\r\nimport icon194 from './information--camera--g2.png';\r\nimport icon195 from './information--camera--g3.png';\r\nimport icon196 from './information--camp--g1.png';\r\nimport icon197 from './information--camp--g2.png';\r\nimport icon198 from './information--car-pool-lane--g1.png';\r\nimport icon199 from './information--caravan-parking--g1.png';\r\nimport icon200 from './information--caravan-trailer-parking--g1.png';\r\nimport icon201 from './information--cargo-loading-zone--g1.png';\r\nimport icon202 from './information--central-lane--g1.png';\r\nimport icon203 from './information--charging-station--g1.png';\r\nimport icon204 from './information--children--g1.png';\r\nimport icon205 from './information--children--g2.png';\r\nimport icon206 from './information--children-crossing--g5.png';\r\nimport icon207 from './information--cycling-two-abreast-permitted--g1.png';\r\nimport icon208 from './information--dead-end--g1.png';\r\nimport icon209 from './information--dead-end--g2.png';\r\nimport icon210 from './information--dead-end--g3.png';\r\nimport icon211 from './information--dead-end--g4.png';\r\nimport icon212 from './information--dead-end-except-bicycles--g1.png';\r\nimport icon213 from './information--dead-end-except-bicycles-and-pedestrians--g1.png';\r\nimport icon214 from './information--dead-end-except-bicycles-and-pedestrians--g2.png';\r\nimport icon215 from './information--dead-end-left--g1.png';\r\nimport icon216 from './information--dead-end-left--g2.png';\r\nimport icon217 from './information--dead-end-right--g1.png';\r\nimport icon218 from './information--dead-end-right--g2.png';\r\nimport icon219 from './information--dead-end-right--g3.png';\r\nimport icon220 from './information--directions--g1.png';\r\nimport icon221 from './information--disabled-persons--g1.png';\r\nimport icon222 from './information--disabled-persons--g2.png';\r\nimport icon223 from './information--disabled-persons--g3.png';\r\nimport icon224 from './information--emergency-facility--g1.png';\r\nimport icon225 from './information--end-of-advisory-maximum-speed-limit-20--g1.png';\r\nimport icon226 from './information--end-of-advisory-maximum-speed-limit-40--g1.png';\r\nimport icon227 from './information--end-of-advisory-maximum-speed-limit-60--g1.png';\r\nimport icon228 from './information--end-of-advisory-maximum-speed-limit-70--g1.png';\r\nimport icon229 from './information--end-of-advisory-maximum-speed-limit-80--g1.png';\r\nimport icon230 from './information--end-of-advisory-maximum-speed-limit-90--g1.png';\r\nimport icon231 from './information--end-of-bicycle-lane--g1.png';\r\nimport icon232 from './information--end-of-built-up-area--g1.png';\r\nimport icon233 from './information--end-of-built-up-area--g2.png';\r\nimport icon234 from './information--end-of-built-up-area--g3.png';\r\nimport icon235 from './information--end-of-built-up-area--g4.png';\r\nimport icon236 from './information--end-of-car-pool-lane--g1.png';\r\nimport icon237 from './information--end-of-limited-access-road--g1.png';\r\nimport icon238 from './information--end-of-living-street--g1.png';\r\nimport icon239 from './information--end-of-living-street--g2.png';\r\nimport icon240 from './information--end-of-minimum-speed-10--g1.png';\r\nimport icon241 from './information--end-of-minimum-speed-20--g1.png';\r\nimport icon242 from './information--end-of-minimum-speed-25--g1.png';\r\nimport icon243 from './information--end-of-minimum-speed-30--g1.png';\r\nimport icon244 from './information--end-of-minimum-speed-35--g1.png';\r\nimport icon245 from './information--end-of-minimum-speed-40--g1.png';\r\nimport icon246 from './information--end-of-minimum-speed-50--g1.png';\r\nimport icon247 from './information--end-of-minimum-speed-60--g1.png';\r\nimport icon248 from './information--end-of-minimum-speed-70--g1.png';\r\nimport icon249 from './information--end-of-minimum-speed-75--g1.png';\r\nimport icon250 from './information--end-of-minimum-speed-80--g1.png';\r\nimport icon251 from './information--end-of-minimum-speed-90--g1.png';\r\nimport icon252 from './information--end-of-minimum-speed-100--g1.png';\r\nimport icon253 from './information--end-of-minimum-speed-110--g1.png';\r\nimport icon254 from './information--end-of-minimum-speed-120--g1.png';\r\nimport icon255 from './information--end-of-minimum-speed-130--g1.png';\r\nimport icon256 from './information--end-of-motorway--g1.png';\r\nimport icon257 from './information--end-of-overtaking-permitted-heavy-good-vehicles--g1.png';\r\nimport icon258 from './information--end-of-road-works--g1.png';\r\nimport icon259 from './information--end-of-tunnel--g1.png';\r\nimport icon260 from './information--end-of-tunnel--g2.png';\r\nimport icon261 from './information--end-of-two-way-traffic--g1.png';\r\nimport icon262 from './information--equestrians-permitted--g1.png';\r\nimport icon263 from './information--exit-ahead--g1.png';\r\nimport icon264 from './information--exit-ahead--g2.png';\r\nimport icon265 from './information--exit-ahead--g3.png';\r\nimport icon266 from './information--flight-port--g1.png';\r\nimport icon267 from './information--food--g1.png';\r\nimport icon268 from './information--food--g2.png';\r\nimport icon269 from './information--gas-station--g1.png';\r\nimport icon270 from './information--gas-station--g2.png';\r\nimport icon271 from './information--gas-station--g3.png';\r\nimport icon272 from './information--general-speed-limit-at-city-border--g1.png';\r\nimport icon273 from './information--go-left--g1.png';\r\nimport icon274 from './information--go-right--g1.png';\r\nimport icon275 from './information--go-straight--g1.png';\r\nimport icon276 from './information--go-straight-or-left--g1.png';\r\nimport icon277 from './information--go-straight-or-right--g1.png';\r\nimport icon278 from './information--go-straight-or-turn-left--g1.png';\r\nimport icon279 from './information--go-straight-or-turn-right--g1.png';\r\nimport icon280 from './information--hazardous-goods-vehicles-lane--g1.png';\r\nimport icon281 from './information--height-limit--g1.png';\r\nimport icon282 from './information--height-limit--g2.png';\r\nimport icon283 from './information--highway-directions--g1.png';\r\nimport icon284 from './information--highway-exit--g1.png';\r\nimport icon285 from './information--highway-interchange--g1.png';\r\nimport icon286 from './information--highway-interstate-route--g1.png';\r\nimport icon287 from './information--highway-interstate-route--g2.png';\r\nimport icon288 from './information--highway-preferential-lane--g1.png';\r\nimport icon289 from './information--highway-preferential-lane--g2.png';\r\nimport icon290 from './information--highway-reference-location--g1.png';\r\nimport icon291 from './information--highway-reference-location--g2.png';\r\nimport icon292 from './information--hiking--g1.png';\r\nimport icon293 from './information--hospital--g1.png';\r\nimport icon294 from './information--hurricane-evacuation-route--g1.png';\r\nimport icon295 from './information--interstate-route--g1.png';\r\nimport icon296 from './information--lane-control-intersections--g1.png';\r\nimport icon297 from './information--lane-control-left-turn--g1.png';\r\nimport icon298 from './information--lane-control-multiple-lanes--g1.png';\r\nimport icon299 from './information--lane-control-multiple-lanes--g2.png';\r\nimport icon300 from './information--lane-control-right-turn--g1.png';\r\nimport icon301 from './information--limited-access-road--g1.png';\r\nimport icon302 from './information--litter-container--g1.png';\r\nimport icon303 from './information--living-street--g1.png';\r\nimport icon304 from './information--living-street--g2.png';\r\nimport icon305 from './information--living-street--g3.png';\r\nimport icon306 from './information--lodging--g1.png';\r\nimport icon307 from './information--lodging--g2.png';\r\nimport icon308 from './information--minimum-speed-10--g1.png';\r\nimport icon309 from './information--minimum-speed-20--g1.png';\r\nimport icon310 from './information--minimum-speed-25--g1.png';\r\nimport icon311 from './information--minimum-speed-30--g1.png';\r\nimport icon312 from './information--minimum-speed-35--g1.png';\r\nimport icon313 from './information--minimum-speed-40--g1.png';\r\nimport icon314 from './information--minimum-speed-50--g1.png';\r\nimport icon315 from './information--minimum-speed-60--g1.png';\r\nimport icon316 from './information--minimum-speed-70--g1.png';\r\nimport icon317 from './information--minimum-speed-75--g1.png';\r\nimport icon318 from './information--minimum-speed-80--g1.png';\r\nimport icon319 from './information--minimum-speed-90--g1.png';\r\nimport icon320 from './information--minimum-speed-100--g1.png';\r\nimport icon321 from './information--minimum-speed-110--g1.png';\r\nimport icon322 from './information--minimum-speed-120--g1.png';\r\nimport icon323 from './information--minimum-speed-130--g1.png';\r\nimport icon324 from './information--motorway--g1.png';\r\nimport icon325 from './information--motorway-exit-ahead--g1.png';\r\nimport icon326 from './information--motorway-exit-ahead--g2.png';\r\nimport icon327 from './information--motorway-exit-ahead--g3.png';\r\nimport icon328 from './information--overtaking-allowed-heavy-good-vehicles--g1.png';\r\nimport icon329 from './information--parallel-parking--g1.png';\r\nimport icon330 from './information--park-and-ride--g1.png';\r\nimport icon331 from './information--park-and-ride--g2.png';\r\nimport icon332 from './information--parking--g1.png';\r\nimport icon333 from './information--parking--g2.png';\r\nimport icon334 from './information--parking--g3.png';\r\nimport icon335 from './information--parking--g4.png';\r\nimport icon336 from './information--parking--g5.png';\r\nimport icon337 from './information--parking--g6.png';\r\nimport icon338 from './information--parking-area--g1.png';\r\nimport icon339 from './information--parking-with-restrictions--g1.png';\r\nimport icon340 from './information--pass-on-either-side--g1.png';\r\nimport icon341 from './information--passenger-loading-zone--g1.png';\r\nimport icon342 from './information--pedestrians-crossing--g1.png';\r\nimport icon343 from './information--pedestrians-crossing--g2.png';\r\nimport icon344 from './information--pedestrians-crossing--g3.png';\r\nimport icon345 from './information--pedestrians-only--g4.png';\r\nimport icon346 from './information--pedestrians-permitted--g1.png';\r\nimport icon347 from './information--perpendicular-parking--g1.png';\r\nimport icon348 from './information--picnic-site--g1.png';\r\nimport icon349 from './information--playground--g1.png';\r\nimport icon350 from './information--recreational-vehicle-sanitary-station--g1.png';\r\nimport icon351 from './information--recycle-collection-center--g1.png';\r\nimport icon352 from './information--rest-area--g1.png';\r\nimport icon353 from './information--road-bump--g1.png';\r\nimport icon354 from './information--road-skating--g1.png';\r\nimport icon355 from './information--safety-zone--g1.png';\r\nimport icon356 from './information--safety-zone--g2.png';\r\nimport icon357 from './information--safety-zone--g3.png';\r\nimport icon358 from './information--shared-path-vehicles-and-motorcycles--g1.png';\r\nimport icon359 from './information--stairs--g1.png';\r\nimport icon360 from './information--stairs--g2.png';\r\nimport icon361 from './information--stairs--g3.png';\r\nimport icon362 from './information--stairs--g4.png';\r\nimport icon363 from './information--stop-line--g1.png';\r\nimport icon364 from './information--stop-permitted--g1.png';\r\nimport icon365 from './information--street-name-one-line--g1.png';\r\nimport icon366 from './information--street-name-three-lines--g1.png';\r\nimport icon367 from './information--street-name-two-lines--g1.png';\r\nimport icon368 from './information--subway--g1.png';\r\nimport icon369 from './information--telephone--g1.png';\r\nimport icon370 from './information--telephone--g2.png';\r\nimport icon371 from './information--telephone-device-for-the-deaf--g1.png';\r\nimport icon372 from './information--toll-station--g1.png';\r\nimport icon373 from './information--tourism-information--g1.png';\r\nimport icon374 from './information--tourist-attraction--g1.png';\r\nimport icon375 from './information--traffic-merges-left--g1.png';\r\nimport icon376 from './information--traffic-merges-right--g1.png';\r\nimport icon377 from './information--trail-crossing--g1.png';\r\nimport icon378 from './information--trail-crossing--g2.png';\r\nimport icon379 from './information--trail-crossing--g3.png';\r\nimport icon380 from './information--trailer-camping--g1.png';\r\nimport icon381 from './information--train-or-light-rail-station--g1.png';\r\nimport icon382 from './information--tram-bus-stop--g1.png';\r\nimport icon383 from './information--tram-bus-stop--g2.png';\r\nimport icon384 from './information--trams-crossing--g1.png';\r\nimport icon385 from './information--truck-lane-left--g1.png';\r\nimport icon386 from './information--truck-parking--g1.png';\r\nimport icon387 from './information--truck-trailer-lane-right--g1.png';\r\nimport icon388 from './information--truck-trailer-lane-straight--g1.png';\r\nimport icon389 from './information--trucks-both-ways--g1.png';\r\nimport icon390 from './information--trucks-only--g1.png';\r\nimport icon391 from './information--tsunami-evacuation_route--g1.png';\r\nimport icon392 from './information--tunnel--g1.png';\r\nimport icon393 from './information--tunnel--g2.png';\r\nimport icon394 from './information--tunnel--g3.png';\r\nimport icon395 from './information--tunnel-ahead--g1.png';\r\nimport icon396 from './information--turn-left--g1.png';\r\nimport icon397 from './information--turn-left-ahead--g1.png';\r\nimport icon398 from './information--turn-right--g1.png';\r\nimport icon399 from './information--turn-right-ahead--g1.png';\r\nimport icon400 from './information--urban-area--g1.png';\r\nimport icon401 from './information--vehicles-on-rails--g1.png';\r\nimport icon402 from './information--water-protection-zone--g1.png';\r\nimport icon403 from './information--weight-and-height-limit--g1.png';\r\nimport icon404 from './information--weight-limit--g1.png';\r\nimport icon405 from './information--wireless-internet--g1.png';\r\nimport icon406 from './regulatory--advisory-maximum-speed-limit--g1.png';\r\nimport icon407 from './regulatory--all-directions-permitted--g1.png';\r\nimport icon408 from './regulatory--all-way--g1.png';\r\nimport icon409 from './regulatory--atvs-permitted--g1.png';\r\nimport icon410 from './regulatory--axle-limit--g1.png';\r\nimport icon411 from './regulatory--axle-limit--g2.png';\r\nimport icon412 from './regulatory--bicycle-lane-left--g1.png';\r\nimport icon413 from './regulatory--bicycle-parking--g1.png';\r\nimport icon414 from './regulatory--bicycles-and-buses-only--g1.png';\r\nimport icon415 from './regulatory--bicycles-only--g1.png';\r\nimport icon416 from './regulatory--bicycles-only--g2.png';\r\nimport icon417 from './regulatory--bicycles-only--g3.png';\r\nimport icon418 from './regulatory--bicycles-only--g4.png';\r\nimport icon419 from './regulatory--bicycles-push-button--g1.png';\r\nimport icon420 from './regulatory--bicycles-push-button--g2.png';\r\nimport icon421 from './regulatory--bicycles-stop-on-red--g1.png';\r\nimport icon422 from './regulatory--bicycles-wrong-way--g1.png';\r\nimport icon423 from './regulatory--bicycles-yield-or-use-signal--g1.png';\r\nimport icon424 from './regulatory--bike-route--g1.png';\r\nimport icon425 from './regulatory--building-direction--g1.png';\r\nimport icon426 from './regulatory--bus-priority-lane--g1.png';\r\nimport icon427 from './regulatory--buses-and-taxi-only--g1.png';\r\nimport icon428 from './regulatory--buses-only--g1.png';\r\nimport icon429 from './regulatory--buses-only--g2.png';\r\nimport icon430 from './regulatory--circular-intersection--g1.png';\r\nimport icon431 from './regulatory--circular-intersection--g2.png';\r\nimport icon432 from './regulatory--circular-intersection--g3.png';\r\nimport icon433 from './regulatory--circular-intersection--g4.png';\r\nimport icon434 from './regulatory--cross-only-on-green--g1.png';\r\nimport icon435 from './regulatory--cross-only-on-pedestrian-signal--g1.png';\r\nimport icon436 from './regulatory--crosswalk-stop-on-red--g1.png';\r\nimport icon437 from './regulatory--cycling-restriction--g1.png';\r\nimport icon438 from './regulatory--cyclists-dismount-and-walk--g1.png';\r\nimport icon439 from './regulatory--detour-left--g1.png';\r\nimport icon440 from './regulatory--detour-right--g1.png';\r\nimport icon441 from './regulatory--divided-highway-crossing--g1.png';\r\nimport icon442 from './regulatory--divided-highway-ends--g1.png';\r\nimport icon443 from './regulatory--divided-highway-starts--g1.png';\r\nimport icon444 from './regulatory--do-not-block-intersection--g1.png';\r\nimport icon445 from './regulatory--do-not-pass--g1.png';\r\nimport icon446 from './regulatory--do-not-stop-on-tracks--g1.png';\r\nimport icon447 from './regulatory--dual-lanes-all-directions-on-left--g1.png';\r\nimport icon448 from './regulatory--dual-lanes-all-directions-on-right--g1.png';\r\nimport icon449 from './regulatory--dual-lanes-bicyclists-and-pedestrians--g1.png';\r\nimport icon450 from './regulatory--dual-lanes-go-left-or-right--g1.png';\r\nimport icon451 from './regulatory--dual-lanes-go-straight-on-left--g1.png';\r\nimport icon452 from './regulatory--dual-lanes-go-straight-on-right--g1.png';\r\nimport icon453 from './regulatory--dual-lanes-turn-left--g1.png';\r\nimport icon454 from './regulatory--dual-lanes-turn-left-no-u-turn--g1.png';\r\nimport icon455 from './regulatory--dual-lanes-turn-left-or-straight--g1.png';\r\nimport icon456 from './regulatory--dual-lanes-turn-right-or-straight--g1.png';\r\nimport icon457 from './regulatory--dual-path-bicycles-and-pedestrians--g1.png';\r\nimport icon458 from './regulatory--dual-path-bicycles-and-pedestrians--g2.png';\r\nimport icon459 from './regulatory--dual-path-bicycles-and-pedestrians--g3.png';\r\nimport icon460 from './regulatory--dual-path-equestrians-and-pedestrians--g1.png';\r\nimport icon461 from './regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1.png';\r\nimport icon462 from './regulatory--dual-path-pedestrians-and-bicycles--g1.png';\r\nimport icon463 from './regulatory--dual-path-pedestrians-and-bicycles--g2.png';\r\nimport icon464 from './regulatory--dual-path-pedestrians-and-equestrians--g1.png';\r\nimport icon465 from './regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1.png';\r\nimport icon466 from './regulatory--dual-speed-limits--g1.png';\r\nimport icon467 from './regulatory--dual-speed-limits--g2.png';\r\nimport icon468 from './regulatory--end-of-bicycles-only--g1.png';\r\nimport icon469 from './regulatory--end-of-bicycles-only--g2.png';\r\nimport icon470 from './regulatory--end-of-bus-and-taxi-only--g1.png';\r\nimport icon471 from './regulatory--end-of-buses-only--g1.png';\r\nimport icon472 from './regulatory--end-of-buses-only--g2.png';\r\nimport icon473 from './regulatory--end-of-cycling-restriction--g1.png';\r\nimport icon474 from './regulatory--end-of-dual-path-bicycles-and-pedestrians--g1.png';\r\nimport icon475 from './regulatory--end-of-dual-path-pedestrians-and-bicycles--g1.png';\r\nimport icon476 from './regulatory--end-of-equestrians-only--g1.png';\r\nimport icon477 from './regulatory--end-of-low-beam-headlights--g1.png';\r\nimport icon478 from './regulatory--end-of-maximum-speed-limit-10--g1.png';\r\nimport icon479 from './regulatory--end-of-maximum-speed-limit-10--g2.png';\r\nimport icon480 from './regulatory--end-of-maximum-speed-limit-20--g1.png';\r\nimport icon481 from './regulatory--end-of-maximum-speed-limit-20--g2.png';\r\nimport icon482 from './regulatory--end-of-maximum-speed-limit-25--g1.png';\r\nimport icon483 from './regulatory--end-of-maximum-speed-limit-25--g2.png';\r\nimport icon484 from './regulatory--end-of-maximum-speed-limit-30--g1.png';\r\nimport icon485 from './regulatory--end-of-maximum-speed-limit-30--g2.png';\r\nimport icon486 from './regulatory--end-of-maximum-speed-limit-35--g1.png';\r\nimport icon487 from './regulatory--end-of-maximum-speed-limit-35--g2.png';\r\nimport icon488 from './regulatory--end-of-maximum-speed-limit-40--g1.png';\r\nimport icon489 from './regulatory--end-of-maximum-speed-limit-40--g2.png';\r\nimport icon490 from './regulatory--end-of-maximum-speed-limit-50--g1.png';\r\nimport icon491 from './regulatory--end-of-maximum-speed-limit-50--g2.png';\r\nimport icon492 from './regulatory--end-of-maximum-speed-limit-60--g1.png';\r\nimport icon493 from './regulatory--end-of-maximum-speed-limit-60--g2.png';\r\nimport icon494 from './regulatory--end-of-maximum-speed-limit-65--g1.png';\r\nimport icon495 from './regulatory--end-of-maximum-speed-limit-65--g2.png';\r\nimport icon496 from './regulatory--end-of-maximum-speed-limit-70--g1.png';\r\nimport icon497 from './regulatory--end-of-maximum-speed-limit-70--g2.png';\r\nimport icon498 from './regulatory--end-of-maximum-speed-limit-75--g1.png';\r\nimport icon499 from './regulatory--end-of-maximum-speed-limit-75--g2.png';\r\nimport icon500 from './regulatory--end-of-maximum-speed-limit-80--g1.png';\r\nimport icon501 from './regulatory--end-of-maximum-speed-limit-80--g2.png';\r\nimport icon502 from './regulatory--end-of-maximum-speed-limit-90--g1.png';\r\nimport icon503 from './regulatory--end-of-maximum-speed-limit-90--g2.png';\r\nimport icon504 from './regulatory--end-of-maximum-speed-limit-100--g1.png';\r\nimport icon505 from './regulatory--end-of-maximum-speed-limit-100--g2.png';\r\nimport icon506 from './regulatory--end-of-maximum-speed-limit-110--g1.png';\r\nimport icon507 from './regulatory--end-of-maximum-speed-limit-110--g2.png';\r\nimport icon508 from './regulatory--end-of-maximum-speed-limit-120--g1.png';\r\nimport icon509 from './regulatory--end-of-maximum-speed-limit-120--g2.png';\r\nimport icon510 from './regulatory--end-of-maximum-speed-limit-130--g1.png';\r\nimport icon511 from './regulatory--end-of-maximum-speed-limit-130--g2.png';\r\nimport icon512 from './regulatory--end-of-maximum-speed-limit--g1.png';\r\nimport icon513 from './regulatory--end-of-mopeds-and-bicycles-only--g1.png';\r\nimport icon514 from './regulatory--end-of-no-heavy-goods-vehicles--g1.png';\r\nimport icon515 from './regulatory--end-of-no-horn--g1.png';\r\nimport icon516 from './regulatory--end-of-no-overtaking--g1.png';\r\nimport icon517 from './regulatory--end-of-no-overtaking--g2.png';\r\nimport icon518 from './regulatory--end-of-no-overtaking--g3.png';\r\nimport icon519 from './regulatory--end-of-no-overtaking--g4.png';\r\nimport icon520 from './regulatory--end-of-no-overtaking--g5.png';\r\nimport icon521 from './regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1.png';\r\nimport icon522 from './regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2.png';\r\nimport icon523 from './regulatory--end-of-no-overtaking-by-motorcycles--g1.png';\r\nimport icon524 from './regulatory--end-of-no-parking--g1.png';\r\nimport icon525 from './regulatory--end-of-no-parking--g2.png';\r\nimport icon526 from './regulatory--end-of-no-parking-or-stopping--g1.png';\r\nimport icon527 from './regulatory--end-of-one-way-straight--g1.png';\r\nimport icon528 from './regulatory--end-of-parking-zone--g1.png';\r\nimport icon529 from './regulatory--end-of-parking-zone--g2.png';\r\nimport icon530 from './regulatory--end-of-pedestrians-only--g1.png';\r\nimport icon531 from './regulatory--end-of-pedestrians-only--g2.png';\r\nimport icon532 from './regulatory--end-of-pedestrians-only--g3.png';\r\nimport icon533 from './regulatory--end-of-pedestrians-only--g4.png';\r\nimport icon534 from './regulatory--end-of-priority-road--g1.png';\r\nimport icon535 from './regulatory--end-of-prohibition--g1.png';\r\nimport icon536 from './regulatory--end-of-school-zone--g1.png';\r\nimport icon537 from './regulatory--end-of-shared-path-bicycles-and-pedestrians--g1.png';\r\nimport icon538 from './regulatory--end-of-shared-path-pedestrians-and-bicycles--g1.png';\r\nimport icon539 from './regulatory--end-of-snow-chains--g1.png';\r\nimport icon540 from './regulatory--end-of-snow-chains--g2.png';\r\nimport icon541 from './regulatory--end-of-snowmobiles-only--g1.png';\r\nimport icon542 from './regulatory--end-of-speed-limit-zone--g1.png';\r\nimport icon543 from './regulatory--end-of-speed-limit-zone--g2.png';\r\nimport icon544 from './regulatory--end-of-speed-limit-zone--g3.png';\r\nimport icon545 from './regulatory--end-of-tractors-only--g1.png';\r\nimport icon546 from './regulatory--end-of-trams-and-buses-only--g1.png';\r\nimport icon547 from './regulatory--end-of-trams-only--g1.png';\r\nimport icon548 from './regulatory--end-of-trucks-and-buses-only--g1.png';\r\nimport icon549 from './regulatory--end-of-trucks-only--g1.png';\r\nimport icon550 from './regulatory--end-of-trucks-only--g2.png';\r\nimport icon551 from './regulatory--equestrians-only--g1.png';\r\nimport icon552 from './regulatory--except-railroad-crossing--g1.png';\r\nimport icon553 from './regulatory--fine-for-littering--g1.png';\r\nimport icon554 from './regulatory--give-way-to-bicycles--g1.png';\r\nimport icon555 from './regulatory--give-way-to-oncoming-traffic--g1.png';\r\nimport icon556 from './regulatory--give-way-to-oncoming-traffic--g2.png';\r\nimport icon557 from './regulatory--go-left-bicycles--g1.png';\r\nimport icon558 from './regulatory--go-right-bicycles--g1.png';\r\nimport icon559 from './regulatory--go-straight--g1.png';\r\nimport icon560 from './regulatory--go-straight--g3.png';\r\nimport icon561 from './regulatory--go-straight-bicycles--g1.png';\r\nimport icon562 from './regulatory--go-straight-or-turn-left--g1.png';\r\nimport icon563 from './regulatory--go-straight-or-turn-left--g2.png';\r\nimport icon564 from './regulatory--go-straight-or-turn-left--g3.png';\r\nimport icon565 from './regulatory--go-straight-or-turn-right--g1.png';\r\nimport icon566 from './regulatory--go-straight-or-turn-right--g2.png';\r\nimport icon567 from './regulatory--go-straight-or-turn-right--g3.png';\r\nimport icon568 from './regulatory--heavy-goods-vehicles-permitted--g1.png';\r\nimport icon569 from './regulatory--height-limit--g1.png';\r\nimport icon570 from './regulatory--high-beam-headlights--g1.png';\r\nimport icon571 from './regulatory--horn--g1.png';\r\nimport icon572 from './regulatory--in-street-pedestrian-crossing--g1.png';\r\nimport icon573 from './regulatory--keep-left--g1.png';\r\nimport icon574 from './regulatory--keep-left--g2.png';\r\nimport icon575 from './regulatory--keep-left--g3.png';\r\nimport icon576 from './regulatory--keep-left--g4.png';\r\nimport icon577 from './regulatory--keep-left--g5.png';\r\nimport icon578 from './regulatory--keep-left--g6.png';\r\nimport icon579 from './regulatory--keep-left--g7.png';\r\nimport icon580 from './regulatory--keep-right--g1.png';\r\nimport icon581 from './regulatory--keep-right--g2.png';\r\nimport icon582 from './regulatory--keep-right--g3.png';\r\nimport icon583 from './regulatory--keep-right--g4.png';\r\nimport icon584 from './regulatory--keep-right--g5.png';\r\nimport icon585 from './regulatory--keep-right--g6.png';\r\nimport icon586 from './regulatory--keep-right--g7.png';\r\nimport icon587 from './regulatory--keep-right--g8.png';\r\nimport icon588 from './regulatory--keep-right--g9.png';\r\nimport icon589 from './regulatory--lane-control--g1.png';\r\nimport icon590 from './regulatory--left-turn-yield-on-green--g1.png';\r\nimport icon591 from './regulatory--length-limit--g1.png';\r\nimport icon592 from './regulatory--length-limit--g2.png';\r\nimport icon593 from './regulatory--light-rail-divided-highway--g1.png';\r\nimport icon594 from './regulatory--light-rail-do-not-pass--g1.png';\r\nimport icon595 from './regulatory--light-rail-only--g1.png';\r\nimport icon596 from './regulatory--look--g1.png';\r\nimport icon597 from './regulatory--low-beam-headlights--g1.png';\r\nimport icon598 from './regulatory--low-beam-headlights--g2.png';\r\nimport icon599 from './regulatory--low-beam-headlights--g3.png';\r\nimport icon600 from './regulatory--low-speed-vehicle-permitted--g1.png';\r\nimport icon601 from './regulatory--maximum-speed-limit-5--g1.png';\r\nimport icon602 from './regulatory--maximum-speed-limit-5--g3.png';\r\nimport icon603 from './regulatory--maximum-speed-limit-10--g1.png';\r\nimport icon604 from './regulatory--maximum-speed-limit-10--g3.png';\r\nimport icon605 from './regulatory--maximum-speed-limit-15--g1.png';\r\nimport icon606 from './regulatory--maximum-speed-limit-15--g3.png';\r\nimport icon607 from './regulatory--maximum-speed-limit-20--g1.png';\r\nimport icon608 from './regulatory--maximum-speed-limit-20--g3.png';\r\nimport icon609 from './regulatory--maximum-speed-limit-25--g1.png';\r\nimport icon610 from './regulatory--maximum-speed-limit-25--g2.png';\r\nimport icon611 from './regulatory--maximum-speed-limit-30--g1.png';\r\nimport icon612 from './regulatory--maximum-speed-limit-30--g3.png';\r\nimport icon613 from './regulatory--maximum-speed-limit-35--g1.png';\r\nimport icon614 from './regulatory--maximum-speed-limit-35--g2.png';\r\nimport icon615 from './regulatory--maximum-speed-limit-40--g1.png';\r\nimport icon616 from './regulatory--maximum-speed-limit-40--g3.png';\r\nimport icon617 from './regulatory--maximum-speed-limit-45--g1.png';\r\nimport icon618 from './regulatory--maximum-speed-limit-45--g3.png';\r\nimport icon619 from './regulatory--maximum-speed-limit-50--g1.png';\r\nimport icon620 from './regulatory--maximum-speed-limit-50--g3.png';\r\nimport icon621 from './regulatory--maximum-speed-limit-55--g2.png';\r\nimport icon622 from './regulatory--maximum-speed-limit-60--g1.png';\r\nimport icon623 from './regulatory--maximum-speed-limit-60--g3.png';\r\nimport icon624 from './regulatory--maximum-speed-limit-65--g1.png';\r\nimport icon625 from './regulatory--maximum-speed-limit-65--g2.png';\r\nimport icon626 from './regulatory--maximum-speed-limit-70--g1.png';\r\nimport icon627 from './regulatory--maximum-speed-limit-70--g3.png';\r\nimport icon628 from './regulatory--maximum-speed-limit-75--g2.png';\r\nimport icon629 from './regulatory--maximum-speed-limit-80--g1.png';\r\nimport icon630 from './regulatory--maximum-speed-limit-80--g3.png';\r\nimport icon631 from './regulatory--maximum-speed-limit-85--g2.png';\r\nimport icon632 from './regulatory--maximum-speed-limit-90--g1.png';\r\nimport icon633 from './regulatory--maximum-speed-limit-90--g3.png';\r\nimport icon634 from './regulatory--maximum-speed-limit-100--g1.png';\r\nimport icon635 from './regulatory--maximum-speed-limit-100--g3.png';\r\nimport icon636 from './regulatory--maximum-speed-limit-110--g1.png';\r\nimport icon637 from './regulatory--maximum-speed-limit-110--g3.png';\r\nimport icon638 from './regulatory--maximum-speed-limit-120--g1.png';\r\nimport icon639 from './regulatory--maximum-speed-limit-120--g3.png';\r\nimport icon640 from './regulatory--maximum-speed-limit-130--g1.png';\r\nimport icon641 from './regulatory--maximum-speed-limit-130--g3.png';\r\nimport icon642 from './regulatory--maximum-speed-limit-led-5--g2.png';\r\nimport icon643 from './regulatory--maximum-speed-limit-led-5--g3.png';\r\nimport icon644 from './regulatory--maximum-speed-limit-led-10--g1.png';\r\nimport icon645 from './regulatory--maximum-speed-limit-led-10--g2.png';\r\nimport icon646 from './regulatory--maximum-speed-limit-led-10--g3.png';\r\nimport icon647 from './regulatory--maximum-speed-limit-led-15--g2.png';\r\nimport icon648 from './regulatory--maximum-speed-limit-led-15--g3.png';\r\nimport icon649 from './regulatory--maximum-speed-limit-led-20--g1.png';\r\nimport icon650 from './regulatory--maximum-speed-limit-led-20--g2.png';\r\nimport icon651 from './regulatory--maximum-speed-limit-led-20--g3.png';\r\nimport icon652 from './regulatory--maximum-speed-limit-led-25--g1.png';\r\nimport icon653 from './regulatory--maximum-speed-limit-led-25--g2.png';\r\nimport icon654 from './regulatory--maximum-speed-limit-led-25--g3.png';\r\nimport icon655 from './regulatory--maximum-speed-limit-led-30--g1.png';\r\nimport icon656 from './regulatory--maximum-speed-limit-led-30--g2.png';\r\nimport icon657 from './regulatory--maximum-speed-limit-led-30--g3.png';\r\nimport icon658 from './regulatory--maximum-speed-limit-led-35--g1.png';\r\nimport icon659 from './regulatory--maximum-speed-limit-led-35--g2.png';\r\nimport icon660 from './regulatory--maximum-speed-limit-led-35--g3.png';\r\nimport icon661 from './regulatory--maximum-speed-limit-led-40--g1.png';\r\nimport icon662 from './regulatory--maximum-speed-limit-led-40--g2.png';\r\nimport icon663 from './regulatory--maximum-speed-limit-led-40--g3.png';\r\nimport icon664 from './regulatory--maximum-speed-limit-led-45--g2.png';\r\nimport icon665 from './regulatory--maximum-speed-limit-led-45--g3.png';\r\nimport icon666 from './regulatory--maximum-speed-limit-led-50--g1.png';\r\nimport icon667 from './regulatory--maximum-speed-limit-led-50--g2.png';\r\nimport icon668 from './regulatory--maximum-speed-limit-led-50--g3.png';\r\nimport icon669 from './regulatory--maximum-speed-limit-led-55--g2.png';\r\nimport icon670 from './regulatory--maximum-speed-limit-led-55--g3.png';\r\nimport icon671 from './regulatory--maximum-speed-limit-led-60--g1.png';\r\nimport icon672 from './regulatory--maximum-speed-limit-led-60--g2.png';\r\nimport icon673 from './regulatory--maximum-speed-limit-led-60--g3.png';\r\nimport icon674 from './regulatory--maximum-speed-limit-led-65--g2.png';\r\nimport icon675 from './regulatory--maximum-speed-limit-led-65--g3.png';\r\nimport icon676 from './regulatory--maximum-speed-limit-led-70--g1.png';\r\nimport icon677 from './regulatory--maximum-speed-limit-led-70--g2.png';\r\nimport icon678 from './regulatory--maximum-speed-limit-led-70--g3.png';\r\nimport icon679 from './regulatory--maximum-speed-limit-led-75--g1.png';\r\nimport icon680 from './regulatory--maximum-speed-limit-led-75--g2.png';\r\nimport icon681 from './regulatory--maximum-speed-limit-led-75--g3.png';\r\nimport icon682 from './regulatory--maximum-speed-limit-led-80--g1.png';\r\nimport icon683 from './regulatory--maximum-speed-limit-led-80--g2.png';\r\nimport icon684 from './regulatory--maximum-speed-limit-led-80--g3.png';\r\nimport icon685 from './regulatory--maximum-speed-limit-led-85--g2.png';\r\nimport icon686 from './regulatory--maximum-speed-limit-led-85--g3.png';\r\nimport icon687 from './regulatory--maximum-speed-limit-led-90--g1.png';\r\nimport icon688 from './regulatory--maximum-speed-limit-led-100--g1.png';\r\nimport icon689 from './regulatory--maximum-speed-limit-led-110--g1.png';\r\nimport icon690 from './regulatory--maximum-speed-limit-led-120--g1.png';\r\nimport icon691 from './regulatory--maximum-speed-limit-led-130--g1.png';\r\nimport icon692 from './regulatory--minimum-safe-distance--g1.png';\r\nimport icon693 from './regulatory--minimum-safe-distance--g2.png';\r\nimport icon694 from './regulatory--mopeds-and-bicycles-only--g1.png';\r\nimport icon695 from './regulatory--motorcycles-and-bicycles-only--g1.png';\r\nimport icon696 from './regulatory--motorcycles-only--g1.png';\r\nimport icon697 from './regulatory--motorcycles-only--g2.png';\r\nimport icon698 from './regulatory--night-speed-limit-5--g1.png';\r\nimport icon699 from './regulatory--night-speed-limit-10--g1.png';\r\nimport icon700 from './regulatory--night-speed-limit-15--g1.png';\r\nimport icon701 from './regulatory--night-speed-limit-20--g1.png';\r\nimport icon702 from './regulatory--night-speed-limit-25--g1.png';\r\nimport icon703 from './regulatory--night-speed-limit-30--g1.png';\r\nimport icon704 from './regulatory--night-speed-limit-35--g1.png';\r\nimport icon705 from './regulatory--night-speed-limit-40--g1.png';\r\nimport icon706 from './regulatory--night-speed-limit-45--g1.png';\r\nimport icon707 from './regulatory--night-speed-limit-50--g1.png';\r\nimport icon708 from './regulatory--night-speed-limit-55--g1.png';\r\nimport icon709 from './regulatory--night-speed-limit-60--g1.png';\r\nimport icon710 from './regulatory--night-speed-limit-65--g1.png';\r\nimport icon711 from './regulatory--night-speed-limit-70--g1.png';\r\nimport icon712 from './regulatory--night-speed-limit-75--g1.png';\r\nimport icon713 from './regulatory--night-speed-limit-80--g1.png';\r\nimport icon714 from './regulatory--night-speed-limit-85--g1.png';\r\nimport icon715 from './regulatory--no-abnormal-vehicles--g1.png';\r\nimport icon716 from './regulatory--no-atvs--g1.png';\r\nimport icon717 from './regulatory--no-bicycles--g1.png';\r\nimport icon718 from './regulatory--no-bicycles--g2.png';\r\nimport icon719 from './regulatory--no-bicycles--g3.png';\r\nimport icon720 from './regulatory--no-bicycles-carts-or-hand-carts--g1.png';\r\nimport icon721 from './regulatory--no-bicycles-mopeds-or-motorcycles--g1.png';\r\nimport icon722 from './regulatory--no-bicycles-mopeds-or-motorcycles--g2.png';\r\nimport icon723 from './regulatory--no-bicycles-or-hand-carts--g1.png';\r\nimport icon724 from './regulatory--no-bicycles-or-motorcycles--g1.png';\r\nimport icon725 from './regulatory--no-bicycles-tractors-or-carts--g1.png';\r\nimport icon726 from './regulatory--no-buses--g1.png';\r\nimport icon727 from './regulatory--no-buses--g2.png';\r\nimport icon728 from './regulatory--no-buses--g3.png';\r\nimport icon729 from './regulatory--no-caravan-trailers--g1.png';\r\nimport icon730 from './regulatory--no-caravans--g1.png';\r\nimport icon731 from './regulatory--no-caravans-or-caravan-trailers--g1.png';\r\nimport icon732 from './regulatory--no-cargo-loading--g1.png';\r\nimport icon733 from './regulatory--no-carts--g1.png';\r\nimport icon734 from './regulatory--no-carts--g2.png';\r\nimport icon735 from './regulatory--no-carts--g3.png';\r\nimport icon736 from './regulatory--no-carts-or-tractors--g1.png';\r\nimport icon737 from './regulatory--no-construction-vehicles--g1.png';\r\nimport icon738 from './regulatory--no-entry--g1.png';\r\nimport icon739 from './regulatory--no-equestrians--g1.png';\r\nimport icon740 from './regulatory--no-go-straight-or-turn-left--g1.png';\r\nimport icon741 from './regulatory--no-go-straight-or-turn-right--g1.png';\r\nimport icon742 from './regulatory--no-good-trailers--g2.png';\r\nimport icon743 from './regulatory--no-goods-vehicle-trailers--g1.png';\r\nimport icon744 from './regulatory--no-hand-carts--g1.png';\r\nimport icon745 from './regulatory--no-hand-carts--g2.png';\r\nimport icon746 from './regulatory--no-hand-carts-or-bicycles--g1.png';\r\nimport icon747 from './regulatory--no-hawkers--g1.png';\r\nimport icon748 from './regulatory--no-heavy-goods-vehicles--g1.png';\r\nimport icon749 from './regulatory--no-heavy-goods-vehicles--g2.png';\r\nimport icon750 from './regulatory--no-heavy-goods-vehicles--g3.png';\r\nimport icon751 from './regulatory--no-heavy-goods-vehicles--g4.png';\r\nimport icon752 from './regulatory--no-heavy-goods-vehicles--g5.png';\r\nimport icon753 from './regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1.png';\r\nimport icon754 from './regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2.png';\r\nimport icon755 from './regulatory--no-heavy-goods-vehicles-or-buses--g1.png';\r\nimport icon756 from './regulatory--no-heavy-goods-vehicles-or-tractors--g1.png';\r\nimport icon757 from './regulatory--no-heavy-goods-vehicles-or-trailers--g1.png';\r\nimport icon758 from './regulatory--no-horizontal-turn--g1.png';\r\nimport icon759 from './regulatory--no-horn--g1.png';\r\nimport icon760 from './regulatory--no-horn--g2.png';\r\nimport icon761 from './regulatory--no-lane-change-to-left--g1.png';\r\nimport icon762 from './regulatory--no-lane-change-to-right--g1.png';\r\nimport icon763 from './regulatory--no-learner-drivers--g1.png';\r\nimport icon764 from './regulatory--no-left-or-u-turn--g1.png';\r\nimport icon765 from './regulatory--no-left-turn--g1.png';\r\nimport icon766 from './regulatory--no-left-turn--g2.png';\r\nimport icon767 from './regulatory--no-left-turn--g3.png';\r\nimport icon768 from './regulatory--no-left-turn--g4.png';\r\nimport icon769 from './regulatory--no-left-turn--g5.png';\r\nimport icon770 from './regulatory--no-low-speed-vehicles--g1.png';\r\nimport icon771 from './regulatory--no-mopeds-or-bicycles--g1.png';\r\nimport icon772 from './regulatory--no-motor-vehicle-trailers--g1.png';\r\nimport icon773 from './regulatory--no-motor-vehicles--g1.png';\r\nimport icon774 from './regulatory--no-motor-vehicles--g3.png';\r\nimport icon775 from './regulatory--no-motor-vehicles--g4.png';\r\nimport icon776 from './regulatory--no-motor-vehicles--g5.png';\r\nimport icon777 from './regulatory--no-motor-vehicles--g6.png';\r\nimport icon778 from './regulatory--no-motor-vehicles--g7.png';\r\nimport icon779 from './regulatory--no-motor-vehicles-except-motorcycles--g1.png';\r\nimport icon780 from './regulatory--no-motor-vehicles-except-motorcycles--g2.png';\r\nimport icon781 from './regulatory--no-motor-vehicles-except-motorcycles--g3.png';\r\nimport icon782 from './regulatory--no-motor-vehicles-or-bicycles--g1.png';\r\nimport icon783 from './regulatory--no-motor-vehicles-or-buses--g1.png';\r\nimport icon784 from './regulatory--no-motor-vehicles-or-carts--g1.png';\r\nimport icon785 from './regulatory--no-motorcycles--g1.png';\r\nimport icon786 from './regulatory--no-motorcycles--g2.png';\r\nimport icon787 from './regulatory--no-overtaking--g1.png';\r\nimport icon788 from './regulatory--no-overtaking--g2.png';\r\nimport icon789 from './regulatory--no-overtaking--g4.png';\r\nimport icon790 from './regulatory--no-overtaking--g5.png';\r\nimport icon791 from './regulatory--no-overtaking--g6.png';\r\nimport icon792 from './regulatory--no-overtaking--g7.png';\r\nimport icon793 from './regulatory--no-overtaking-atvs--g1.png';\r\nimport icon794 from './regulatory--no-overtaking-by-heavy-goods-vehicles--g1.png';\r\nimport icon795 from './regulatory--no-parking--g1.png';\r\nimport icon796 from './regulatory--no-parking--g2.png';\r\nimport icon797 from './regulatory--no-parking--g3.png';\r\nimport icon798 from './regulatory--no-parking--g4.png';\r\nimport icon799 from './regulatory--no-parking--g5.png';\r\nimport icon800 from './regulatory--no-parking--g6.png';\r\nimport icon801 from './regulatory--no-parking--g7.png';\r\nimport icon802 from './regulatory--no-parking--g8.png';\r\nimport icon803 from './regulatory--no-parking--g9.png';\r\nimport icon804 from './regulatory--no-parking-bicycles-or-motorcycles--g1.png';\r\nimport icon805 from './regulatory--no-parking-bus-stop--g1.png';\r\nimport icon806 from './regulatory--no-parking-or-no-stopping--g1.png';\r\nimport icon807 from './regulatory--no-parking-or-no-stopping--g2.png';\r\nimport icon808 from './regulatory--no-parking-or-no-stopping--g3.png';\r\nimport icon809 from './regulatory--no-parking-or-no-stopping--g4.png';\r\nimport icon810 from './regulatory--no-parking-or-no-stopping--g5.png';\r\nimport icon811 from './regulatory--no-passenger-loading--g1.png';\r\nimport icon812 from './regulatory--no-pedestrians--g1.png';\r\nimport icon813 from './regulatory--no-pedestrians--g2.png';\r\nimport icon814 from './regulatory--no-pedestrians--g3.png';\r\nimport icon815 from './regulatory--no-pedestrians--g4.png';\r\nimport icon816 from './regulatory--no-pedestrians--g5.png';\r\nimport icon817 from './regulatory--no-pedestrians--g6.png';\r\nimport icon818 from './regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1.png';\r\nimport icon819 from './regulatory--no-pedestrians-or-bicycles--g1.png';\r\nimport icon820 from './regulatory--no-pedestrians-or-bicycles--g2.png';\r\nimport icon821 from './regulatory--no-pedestrians-or-bicycles--g3.png';\r\nimport icon822 from './regulatory--no-rickshaws--g1.png';\r\nimport icon823 from './regulatory--no-rickshaws--g2.png';\r\nimport icon824 from './regulatory--no-rickshaws--g3.png';\r\nimport icon825 from './regulatory--no-right-turn--g1.png';\r\nimport icon826 from './regulatory--no-right-turn--g2.png';\r\nimport icon827 from './regulatory--no-right-turn--g3.png';\r\nimport icon828 from './regulatory--no-right-turn-on-red--g1.png';\r\nimport icon829 from './regulatory--no-skiing--g1.png';\r\nimport icon830 from './regulatory--no-snowmobiles--g1.png';\r\nimport icon831 from './regulatory--no-snowmobiles--g2.png';\r\nimport icon832 from './regulatory--no-snowmobiles-or-atvs--g1.png';\r\nimport icon833 from './regulatory--no-stopping--g1.png';\r\nimport icon834 from './regulatory--no-stopping--g2.png';\r\nimport icon835 from './regulatory--no-stopping--g3.png';\r\nimport icon836 from './regulatory--no-stopping--g5.png';\r\nimport icon837 from './regulatory--no-stopping--g6.png';\r\nimport icon838 from './regulatory--no-stopping--g7.png';\r\nimport icon839 from './regulatory--no-stopping-on-pavement--g1.png';\r\nimport icon840 from './regulatory--no-straight-through--g1.png';\r\nimport icon841 from './regulatory--no-straight-through--g2.png';\r\nimport icon842 from './regulatory--no-studded-snow-chains--g1.png';\r\nimport icon843 from './regulatory--no-through-trucks--g1.png';\r\nimport icon844 from './regulatory--no-tour-buses--g1.png';\r\nimport icon845 from './regulatory--no-tractors--g1.png';\r\nimport icon846 from './regulatory--no-tractors-mopeds-or-bicycles--g1.png';\r\nimport icon847 from './regulatory--no-tractors-or-carts--g1.png';\r\nimport icon848 from './regulatory--no-trailers--g1.png';\r\nimport icon849 from './regulatory--no-tricycles--g1.png';\r\nimport icon850 from './regulatory--no-tricycles-or-hand-carts--g1.png';\r\nimport icon851 from './regulatory--no-turn-on-red--g1.png';\r\nimport icon852 from './regulatory--no-turn-on-red--g2.png';\r\nimport icon853 from './regulatory--no-turn-on-red--g3.png';\r\nimport icon854 from './regulatory--no-turns--g1.png';\r\nimport icon855 from './regulatory--no-turns--g2.png';\r\nimport icon856 from './regulatory--no-two-stage-right-turn-for-mopeds--g1.png';\r\nimport icon857 from './regulatory--no-u-turn--g1.png';\r\nimport icon858 from './regulatory--no-u-turn--g2.png';\r\nimport icon859 from './regulatory--no-u-turn--g3.png';\r\nimport icon860 from './regulatory--no-vehicles-carrying-dangerous-goods--g1.png';\r\nimport icon861 from './regulatory--no-vehicles-carrying-dangerous-goods--g2.png';\r\nimport icon862 from './regulatory--no-vehicles-carrying-dangerous-goods--g3.png';\r\nimport icon863 from './regulatory--no-vehicles-carrying-dangerous-goods--g4.png';\r\nimport icon864 from './regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1.png';\r\nimport icon865 from './regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2.png';\r\nimport icon866 from './regulatory--no-vehicles-carrying-explosives--g1.png';\r\nimport icon867 from './regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1.png';\r\nimport icon868 from './regulatory--one-way-left--g1.png';\r\nimport icon869 from './regulatory--one-way-left--g2.png';\r\nimport icon870 from './regulatory--one-way-left--g3.png';\r\nimport icon871 from './regulatory--one-way-right--g1.png';\r\nimport icon872 from './regulatory--one-way-right--g2.png';\r\nimport icon873 from './regulatory--one-way-right--g3.png';\r\nimport icon874 from './regulatory--one-way-straight--g1.png';\r\nimport icon875 from './regulatory--one-way-straight--g3.png';\r\nimport icon876 from './regulatory--parking-fee-station--g1.png';\r\nimport icon877 from './regulatory--parking-restrictions--g1.png';\r\nimport icon878 from './regulatory--parking-restrictions--g2.png';\r\nimport icon879 from './regulatory--parking-restrictions--g3.png';\r\nimport icon880 from './regulatory--pass-on-either-side--g1.png';\r\nimport icon881 from './regulatory--pass-on-either-side--g2.png';\r\nimport icon882 from './regulatory--pass-on-either-side--g3.png';\r\nimport icon883 from './regulatory--pass-with-care--g1.png';\r\nimport icon884 from './regulatory--passing-lane-ahead--g1.png';\r\nimport icon885 from './regulatory--pedestrians-bicycles-permitted--g1.png';\r\nimport icon886 from './regulatory--pedestrians-keep-left--g1.png';\r\nimport icon887 from './regulatory--pedestrians-only--g1.png';\r\nimport icon888 from './regulatory--pedestrians-only--g2.png';\r\nimport icon889 from './regulatory--pedestrians-only--g3.png';\r\nimport icon890 from './regulatory--pedestrians-priority-zone--g1.png';\r\nimport icon891 from './regulatory--pedestrians-push-button--g1.png';\r\nimport icon892 from './regulatory--pedestrians-push-button--g2.png';\r\nimport icon893 from './regulatory--priority-over-oncoming-vehicles--g1.png';\r\nimport icon894 from './regulatory--priority-over-oncoming-vehicles--g2.png';\r\nimport icon895 from './regulatory--priority-road--g1.png';\r\nimport icon896 from './regulatory--priority-road--g2.png';\r\nimport icon897 from './regulatory--radar-enforced--g1.png';\r\nimport icon898 from './regulatory--reserved-parking--g1.png';\r\nimport icon899 from './regulatory--reversible-lanes--g1.png';\r\nimport icon900 from './regulatory--reversible-lanes--g2.png';\r\nimport icon901 from './regulatory--road-closed--g1.png';\r\nimport icon902 from './regulatory--road-closed--g2.png';\r\nimport icon903 from './regulatory--road-closed-to-vehicles--g1.png';\r\nimport icon904 from './regulatory--road-closed-to-vehicles--g3.png';\r\nimport icon905 from './regulatory--roundabout--g1.png';\r\nimport icon906 from './regulatory--roundabout--g2.png';\r\nimport icon907 from './regulatory--roundabout--g3.png';\r\nimport icon908 from './regulatory--shared-path-bicycles-and-pedestrians--g1.png';\r\nimport icon909 from './regulatory--shared-path-pedestrians-and-bicycles--g1.png';\r\nimport icon910 from './regulatory--sidewalk-closed--g1.png';\r\nimport icon911 from './regulatory--slanted-parking--g1.png';\r\nimport icon912 from './regulatory--snow-chains--g1.png';\r\nimport icon913 from './regulatory--snow-chains--g2.png';\r\nimport icon914 from './regulatory--snow-chains--g3.png';\r\nimport icon915 from './regulatory--snowmobiles-only--g1.png';\r\nimport icon916 from './regulatory--snowmobiles-permitted--g1.png';\r\nimport icon917 from './regulatory--speed-limit-zone--g1.png';\r\nimport icon918 from './regulatory--speeding-fines-increased--g1.png';\r\nimport icon919 from './regulatory--state-route--g1.png';\r\nimport icon920 from './regulatory--stay-in-lane--g1.png';\r\nimport icon921 from './regulatory--stop--g1.png';\r\nimport icon922 from './regulatory--stop--g2.png';\r\nimport icon923 from './regulatory--stop--g3.png';\r\nimport icon924 from './regulatory--stop--g4.png';\r\nimport icon925 from './regulatory--stop--g5.png';\r\nimport icon926 from './regulatory--stop--g6.png';\r\nimport icon927 from './regulatory--stop--g7.png';\r\nimport icon928 from './regulatory--stop--g8.png';\r\nimport icon929 from './regulatory--stop--g9.png';\r\nimport icon930 from './regulatory--stop--g10.png';\r\nimport icon931 from './regulatory--stop-here-on-red-or-flashing-light--g1.png';\r\nimport icon932 from './regulatory--stop-here-on-red-or-flashing-light--g2.png';\r\nimport icon933 from './regulatory--stop-signals--g1.png';\r\nimport icon934 from './regulatory--stop-signals--g2.png';\r\nimport icon935 from './regulatory--tanks-only--g1.png';\r\nimport icon936 from './regulatory--taxi-only--g1.png';\r\nimport icon937 from './regulatory--text--g1.png';\r\nimport icon938 from './regulatory--text--g2.png';\r\nimport icon939 from './regulatory--toll-pass-only--g1.png';\r\nimport icon940 from './regulatory--tractors-only--g1.png';\r\nimport icon941 from './regulatory--traffic-signal-photo-enforced--g1.png';\r\nimport icon942 from './regulatory--trams-and-buses-only--g1.png';\r\nimport icon943 from './regulatory--trams-only--g1.png';\r\nimport icon944 from './regulatory--triple-lanes--g1.png';\r\nimport icon945 from './regulatory--triple-lanes-go-straight-center-lane--g1.png';\r\nimport icon946 from './regulatory--triple-lanes-turn-left-center-lane--g1.png';\r\nimport icon947 from './regulatory--triple-lanes-turn-right-center-lane--g1.png';\r\nimport icon948 from './regulatory--truck-route--g1.png';\r\nimport icon949 from './regulatory--truck-speed-limit-5--g1.png';\r\nimport icon950 from './regulatory--truck-speed-limit-10--g1.png';\r\nimport icon951 from './regulatory--truck-speed-limit-15--g1.png';\r\nimport icon952 from './regulatory--truck-speed-limit-20--g1.png';\r\nimport icon953 from './regulatory--truck-speed-limit-25--g1.png';\r\nimport icon954 from './regulatory--truck-speed-limit-30--g1.png';\r\nimport icon955 from './regulatory--truck-speed-limit-35--g1.png';\r\nimport icon956 from './regulatory--truck-speed-limit-40--g1.png';\r\nimport icon957 from './regulatory--truck-speed-limit-45--g1.png';\r\nimport icon958 from './regulatory--truck-speed-limit-50--g1.png';\r\nimport icon959 from './regulatory--truck-speed-limit-55--g1.png';\r\nimport icon960 from './regulatory--truck-speed-limit-60--g1.png';\r\nimport icon961 from './regulatory--truck-speed-limit-65--g1.png';\r\nimport icon962 from './regulatory--truck-speed-limit-70--g1.png';\r\nimport icon963 from './regulatory--truck-speed-limit-75--g1.png';\r\nimport icon964 from './regulatory--truck-speed-limit-80--g1.png';\r\nimport icon965 from './regulatory--truck-speed-limit-85--g1.png';\r\nimport icon966 from './regulatory--trucks-and-buses-only--g1.png';\r\nimport icon967 from './regulatory--trucks-on-right--g1.png';\r\nimport icon968 from './regulatory--trucks-only--g1.png';\r\nimport icon969 from './regulatory--turn-left--g1.png';\r\nimport icon970 from './regulatory--turn-left--g2.png';\r\nimport icon971 from './regulatory--turn-left--g3.png';\r\nimport icon972 from './regulatory--turn-left-ahead--g1.png';\r\nimport icon973 from './regulatory--turn-left-ahead--g2.png';\r\nimport icon974 from './regulatory--turn-left-or-right--g1.png';\r\nimport icon975 from './regulatory--turn-left-or-right--g2.png';\r\nimport icon976 from './regulatory--turn-left-or-right--g3.png';\r\nimport icon977 from './regulatory--turn-left-or-u-turn--g1.png';\r\nimport icon978 from './regulatory--turn-right--g1.png';\r\nimport icon979 from './regulatory--turn-right--g2.png';\r\nimport icon980 from './regulatory--turn-right--g3.png';\r\nimport icon981 from './regulatory--turn-right-ahead--g1.png';\r\nimport icon982 from './regulatory--turn-right-ahead--g2.png';\r\nimport icon983 from './regulatory--turning-vehicles-yield-to-pedestrians--g1.png';\r\nimport icon984 from './regulatory--two-stage-right-turn-for-mopeds--g1.png';\r\nimport icon985 from './regulatory--two-way--g1.png';\r\nimport icon986 from './regulatory--u-turn--g1.png';\r\nimport icon987 from './regulatory--u-turn--g2.png';\r\nimport icon988 from './regulatory--u-turn--g3.png';\r\nimport icon989 from './regulatory--use-crosswalk--g1.png';\r\nimport icon990 from './regulatory--vehicles-carrying-dangerous-goods-only--g1.png';\r\nimport icon991 from './regulatory--vehicles-carrying-dangerous-goods-permitted--g1.png';\r\nimport icon992 from './regulatory--vehicles-carrying-explosives-only--g1.png';\r\nimport icon993 from './regulatory--vehicles-carrying-hazardous-goods-permitted--g1.png';\r\nimport icon994 from './regulatory--vehicles-only--g1.png';\r\nimport icon995 from './regulatory--wear-seat-belt--g1.png';\r\nimport icon996 from './regulatory--wear-seat-belt--g2.png';\r\nimport icon997 from './regulatory--wear-seat-belt--g3.png';\r\nimport icon998 from './regulatory--weight-limit--g1.png';\r\nimport icon999 from './regulatory--weight-limit--g2.png';\r\nimport icon1000 from './regulatory--weight-limit--g3.png';\r\nimport icon1001 from './regulatory--weight-limit--g4.png';\r\nimport icon1002 from './regulatory--weight-limit--g5.png';\r\nimport icon1003 from './regulatory--weight-limit--g6.png';\r\nimport icon1004 from './regulatory--weight-limit--g7.png';\r\nimport icon1005 from './regulatory--weight-limit-per-axle--g1.png';\r\nimport icon1006 from './regulatory--weight-limit-per-tandem-axle--g1.png';\r\nimport icon1007 from './regulatory--weight-limit-with-trucks--g1.png';\r\nimport icon1008 from './regulatory--width-limit--g1.png';\r\nimport icon1009 from './regulatory--wrong-way--g1.png';\r\nimport icon1010 from './regulatory--yield--g1.png';\r\nimport icon1011 from './regulatory--yield-or-stop-for-pedestrians--g1.png';\r\nimport icon1012 from './regulatory--your-speed--g1.png';\r\nimport icon1013 from './warning--accident-area--g1.png';\r\nimport icon1014 from './warning--accident-area--g2.png';\r\nimport icon1015 from './warning--accident-area--g3.png';\r\nimport icon1016 from './warning--accident-area--g4.png';\r\nimport icon1017 from './warning--accident-area--g5.png';\r\nimport icon1018 from './warning--accident-area--g6.png';\r\nimport icon1019 from './warning--accident-area--g7.png';\r\nimport icon1020 from './warning--accident-area--g8.png';\r\nimport icon1021 from './warning--added-lane-from-entering-roadway--g1.png';\r\nimport icon1022 from './warning--added-lane-from-entering-roadway--g2.png';\r\nimport icon1023 from './warning--added-lane-left--g1.png';\r\nimport icon1024 from './warning--added-lane-right--g1.png';\r\nimport icon1025 from './warning--animal-drawn-vehicles--g1.png';\r\nimport icon1026 from './warning--arch-bridge--g1.png';\r\nimport icon1027 from './warning--atv-and-snowmobiles--g1.png';\r\nimport icon1028 from './warning--atv-crossing--g1.png';\r\nimport icon1029 from './warning--atv-crossing--g2.png';\r\nimport icon1030 from './warning--axle-restriction--g1.png';\r\nimport icon1031 from './warning--bear-crossing--g1.png';\r\nimport icon1032 from './warning--bear-crossing--g2.png';\r\nimport icon1033 from './warning--bicycles-and-others--g1.png';\r\nimport icon1034 from './warning--bicycles-caution-on-rail-tracks--g1.png';\r\nimport icon1035 from './warning--bicycles-crossing--g1.png';\r\nimport icon1036 from './warning--bicycles-crossing--g2.png';\r\nimport icon1037 from './warning--bicycles-crossing--g3.png';\r\nimport icon1038 from './warning--bicycles-crossing--g4.png';\r\nimport icon1039 from './warning--bollard--g1.png';\r\nimport icon1040 from './warning--bridge--g1.png';\r\nimport icon1041 from './warning--bridge--g2.png';\r\nimport icon1042 from './warning--bus-stop-ahead--g1.png';\r\nimport icon1043 from './warning--bus-stop-ahead--g2.png';\r\nimport icon1044 from './warning--bus-stop-ahead--g3.png';\r\nimport icon1045 from './warning--camel-crossing--g1.png';\r\nimport icon1046 from './warning--camel-crossing--g2.png';\r\nimport icon1047 from './warning--camera--g1.png';\r\nimport icon1048 from './warning--camera--g2.png';\r\nimport icon1049 from './warning--carts--g1.png';\r\nimport icon1050 from './warning--carts--g2.png';\r\nimport icon1051 from './warning--checkpoint--g1.png';\r\nimport icon1052 from './warning--children--g1.png';\r\nimport icon1053 from './warning--children--g2.png';\r\nimport icon1054 from './warning--children--g3.png';\r\nimport icon1055 from './warning--children--g4.png';\r\nimport icon1056 from './warning--children--g6.png';\r\nimport icon1057 from './warning--cliff--g1.png';\r\nimport icon1058 from './warning--cliff--g2.png';\r\nimport icon1059 from './warning--closed-lane-in-triple-lanes--g1.png';\r\nimport icon1060 from './warning--closed-lane-in-triple-lanes--g2.png';\r\nimport icon1061 from './warning--construction-ahead--g1.png';\r\nimport icon1062 from './warning--crossroads--g1.png';\r\nimport icon1063 from './warning--crossroads--g2.png';\r\nimport icon1064 from './warning--crossroads--g3.png';\r\nimport icon1065 from './warning--crossroads--g4.png';\r\nimport icon1066 from './warning--crossroads--g5.png';\r\nimport icon1067 from './warning--crossroads--g6.png';\r\nimport icon1068 from './warning--crossroads-with-priority-to-the-right--g1.png';\r\nimport icon1069 from './warning--curve-left--g1.png';\r\nimport icon1070 from './warning--curve-left--g2.png';\r\nimport icon1071 from './warning--curve-left--g3.png';\r\nimport icon1072 from './warning--curve-left-with-junction--g1.png';\r\nimport icon1073 from './warning--curve-out-intersection-left--g1.png';\r\nimport icon1074 from './warning--curve-out-intersection-right--g1.png';\r\nimport icon1075 from './warning--curve-right--g1.png';\r\nimport icon1076 from './warning--curve-right--g2.png';\r\nimport icon1077 from './warning--curve-right--g3.png';\r\nimport icon1078 from './warning--curve-right-with-junction--g1.png';\r\nimport icon1079 from './warning--dangerous-crosswinds-left--g1.png';\r\nimport icon1080 from './warning--dangerous-crosswinds-left--g2.png';\r\nimport icon1081 from './warning--dangerous-crosswinds-left--g4.png';\r\nimport icon1082 from './warning--dangerous-crosswinds-right--g1.png';\r\nimport icon1083 from './warning--dangerous-crosswinds-right--g2.png';\r\nimport icon1084 from './warning--dangerous-crosswinds-right--g3.png';\r\nimport icon1085 from './warning--dangerous-crosswinds-right--g4.png';\r\nimport icon1086 from './warning--dead-end--g1.png';\r\nimport icon1087 from './warning--dead-end--g2.png';\r\nimport icon1088 from './warning--dead-end--g3.png';\r\nimport icon1089 from './warning--dead-end-go-left--g1.png';\r\nimport icon1090 from './warning--dead-end-go-right--g1.png';\r\nimport icon1091 from './warning--descent-or-climbing-lanes-in-triple-lanes--g1.png';\r\nimport icon1092 from './warning--detour-ahead--g1.png';\r\nimport icon1093 from './warning--detour-or-construction-ahead--g1.png';\r\nimport icon1094 from './warning--dip--g1.png';\r\nimport icon1095 from './warning--dip--g2.png';\r\nimport icon1096 from './warning--disabled-persons-crossing--g1.png';\r\nimport icon1097 from './warning--disabled-persons-crossing--g2.png';\r\nimport icon1098 from './warning--divided-highway--g1.png';\r\nimport icon1099 from './warning--divided-highway--g2.png';\r\nimport icon1100 from './warning--divided-highway--g3.png';\r\nimport icon1101 from './warning--divided-highway--g4.png';\r\nimport icon1102 from './warning--divided-highway--g5.png';\r\nimport icon1103 from './warning--divided-highway--g6.png';\r\nimport icon1104 from './warning--divided-highway--g7.png';\r\nimport icon1105 from './warning--divided-highway--g8.png';\r\nimport icon1106 from './warning--divided-highway--g9.png';\r\nimport icon1107 from './warning--divided-highway-ends--g1.png';\r\nimport icon1108 from './warning--divided-highway-ends--g2.png';\r\nimport icon1109 from './warning--divided-highway-ends--g3.png';\r\nimport icon1110 from './warning--divided-highway-ends--g4.png';\r\nimport icon1111 from './warning--divided-highway-on-left--g1.png';\r\nimport icon1112 from './warning--divided-highway-on-left--g2.png';\r\nimport icon1113 from './warning--divided-highway-on-right--g1.png';\r\nimport icon1114 from './warning--divided-highway-on-right--g2.png';\r\nimport icon1115 from './warning--divided-highway-to-left--g1.png';\r\nimport icon1116 from './warning--divided-highway-to-right--g1.png';\r\nimport icon1117 from './warning--domestic-animals--g1.png';\r\nimport icon1118 from './warning--domestic-animals--g2.png';\r\nimport icon1119 from './warning--domestic-animals--g3.png';\r\nimport icon1120 from './warning--domestic-animals--g4.png';\r\nimport icon1121 from './warning--domestic-animals--g5.png';\r\nimport icon1122 from './warning--domestic-animals--g6.png';\r\nimport icon1123 from './warning--domestic-animals--g7.png';\r\nimport icon1124 from './warning--domestic-animals--g8.png';\r\nimport icon1125 from './warning--double-curve-first-left--g1.png';\r\nimport icon1126 from './warning--double-curve-first-left--g2.png';\r\nimport icon1127 from './warning--double-curve-first-right--g1.png';\r\nimport icon1128 from './warning--double-curve-first-right--g2.png';\r\nimport icon1129 from './warning--double-descent--g1.png';\r\nimport icon1130 from './warning--double-reverse-curve-left--g1.png';\r\nimport icon1131 from './warning--double-reverse-curve-left--g2.png';\r\nimport icon1132 from './warning--double-reverse-curve-right--g1.png';\r\nimport icon1133 from './warning--double-reverse-curve-right--g2.png';\r\nimport icon1134 from './warning--double-side-roads-left--g1.png';\r\nimport icon1135 from './warning--double-side-roads-left--g3.png';\r\nimport icon1136 from './warning--double-side-roads-right--g1.png';\r\nimport icon1137 from './warning--double-side-roads-right--g3.png';\r\nimport icon1138 from './warning--double-turn-first-left--g1.png';\r\nimport icon1139 from './warning--double-turn-first-right--g1.png';\r\nimport icon1140 from './warning--dual-lanes-all-directions-on-left--g1.png';\r\nimport icon1141 from './warning--dual-lanes-all-directions-on-right--g1.png';\r\nimport icon1142 from './warning--dual-lanes-go-straight-or-turn-left--g1.png';\r\nimport icon1143 from './warning--dual-lanes-go-straight-or-turn-right--g1.png';\r\nimport icon1144 from './warning--dual-lanes-left-turn--g1.png';\r\nimport icon1145 from './warning--dual-lanes-left-turn-or-go-straight--g1.png';\r\nimport icon1146 from './warning--dual-lanes-right-turn--g1.png';\r\nimport icon1147 from './warning--dual-lanes-right-turn-or-go-straight--g1.png';\r\nimport icon1148 from './warning--dual-lanes-turn-left--g1.png';\r\nimport icon1149 from './warning--dual-lanes-turn-left-or-right--g1.png';\r\nimport icon1150 from './warning--dual-lanes-turn-left-or-right--g2.png';\r\nimport icon1151 from './warning--dual-lanes-turn-left-or-right--g3.png';\r\nimport icon1152 from './warning--dual-lanes-turn-left-or-right--g4.png';\r\nimport icon1153 from './warning--dual-lanes-turn-right--g1.png';\r\nimport icon1154 from './warning--dual-path-cyclists-and-pedestrians--g1.png';\r\nimport icon1155 from './warning--electricity--g1.png';\r\nimport icon1156 from './warning--electricity--g2.png';\r\nimport icon1157 from './warning--elephant-crossing--g1.png';\r\nimport icon1158 from './warning--emergency-vehicles--g1.png';\r\nimport icon1159 from './warning--emu-crossing--g1.png';\r\nimport icon1160 from './warning--emu-crossing--g2.png';\r\nimport icon1161 from './warning--entering-roadway-merge--g1.png';\r\nimport icon1162 from './warning--entering-roadway-merge--g2.png';\r\nimport icon1163 from './warning--equestrians-crossing--g1.png';\r\nimport icon1164 from './warning--equestrians-crossing--g2.png';\r\nimport icon1165 from './warning--expressway--g1.png';\r\nimport icon1166 from './warning--falling-rocks-or-debris-left--g1.png';\r\nimport icon1167 from './warning--falling-rocks-or-debris-left--g2.png';\r\nimport icon1168 from './warning--falling-rocks-or-debris-left--g3.png';\r\nimport icon1169 from './warning--falling-rocks-or-debris-left--g4.png';\r\nimport icon1170 from './warning--falling-rocks-or-debris-right--g1.png';\r\nimport icon1171 from './warning--falling-rocks-or-debris-right--g2.png';\r\nimport icon1172 from './warning--falling-rocks-or-debris-right--g3.png';\r\nimport icon1173 from './warning--falling-rocks-or-debris-right--g4.png';\r\nimport icon1174 from './warning--ferry--g1.png';\r\nimport icon1175 from './warning--flaggers-in-road--g1.png';\r\nimport icon1176 from './warning--flaggers-in-road--g2.png';\r\nimport icon1177 from './warning--foggy-road--g1.png';\r\nimport icon1178 from './warning--foggy-road--g2.png';\r\nimport icon1179 from './warning--ford--g1.png';\r\nimport icon1180 from './warning--forest--g1.png';\r\nimport icon1181 from './warning--fresh-oil--g1.png';\r\nimport icon1182 from './warning--frog-crossing--g1.png';\r\nimport icon1183 from './warning--gate--g1.png';\r\nimport icon1184 from './warning--gate--g2.png';\r\nimport icon1185 from './warning--gate-left--g1.png';\r\nimport icon1186 from './warning--gate-right--g1.png';\r\nimport icon1187 from './warning--go-left--g1.png';\r\nimport icon1188 from './warning--go-right--g1.png';\r\nimport icon1189 from './warning--golf-carts-crossing--g1.png';\r\nimport icon1190 from './warning--gravel-road-surface--g1.png';\r\nimport icon1191 from './warning--hairpin-curve-left--g1.png';\r\nimport icon1192 from './warning--hairpin-curve-left--g2.png';\r\nimport icon1193 from './warning--hairpin-curve-left--g3.png';\r\nimport icon1194 from './warning--hairpin-curve-right--g1.png';\r\nimport icon1195 from './warning--hairpin-curve-right--g3.png';\r\nimport icon1196 from './warning--height-restriction--g2.png';\r\nimport icon1197 from './warning--height-restriction--g3.png';\r\nimport icon1198 from './warning--height-restriction--g4.png';\r\nimport icon1199 from './warning--height-restriction--g5.png';\r\nimport icon1200 from './warning--horizontal-alignment-left--g1.png';\r\nimport icon1201 from './warning--horizontal-alignment-left--g3.png';\r\nimport icon1202 from './warning--horizontal-alignment-right--g1.png';\r\nimport icon1203 from './warning--horizontal-alignment-right--g3.png';\r\nimport icon1204 from './warning--horse-crossing--g1.png';\r\nimport icon1205 from './warning--icy-road--g1.png';\r\nimport icon1206 from './warning--junction-with-a-side-road-acute-left--g1.png';\r\nimport icon1207 from './warning--junction-with-a-side-road-acute-left--g2.png';\r\nimport icon1208 from './warning--junction-with-a-side-road-acute-right--g1.png';\r\nimport icon1209 from './warning--junction-with-a-side-road-acute-right--g2.png';\r\nimport icon1210 from './warning--junction-with-a-side-road-perpendicular-left--g1.png';\r\nimport icon1211 from './warning--junction-with-a-side-road-perpendicular-left--g2.png';\r\nimport icon1212 from './warning--junction-with-a-side-road-perpendicular-left--g3.png';\r\nimport icon1213 from './warning--junction-with-a-side-road-perpendicular-left--g4.png';\r\nimport icon1214 from './warning--junction-with-a-side-road-perpendicular-right--g1.png';\r\nimport icon1215 from './warning--junction-with-a-side-road-perpendicular-right--g2.png';\r\nimport icon1216 from './warning--junction-with-a-side-road-perpendicular-right--g3.png';\r\nimport icon1217 from './warning--junction-with-a-side-road-perpendicular-right--g4.png';\r\nimport icon1218 from './warning--junction-with-merge-from-left--g1.png';\r\nimport icon1219 from './warning--junction-with-merge-from-right--g1.png';\r\nimport icon1220 from './warning--junction-with-side-roads--g1.png';\r\nimport icon1221 from './warning--kangaloo-crossing--g1.png';\r\nimport icon1222 from './warning--keep-distance--g1.png';\r\nimport icon1223 from './warning--keep-left--g1.png';\r\nimport icon1224 from './warning--keep-right--g1.png';\r\nimport icon1225 from './warning--kiwi-crossing--g1.png';\r\nimport icon1226 from './warning--kiwi-crossing--g2.png';\r\nimport icon1227 from './warning--koala-crossing--g1.png';\r\nimport icon1228 from './warning--koala-crossing--g2.png';\r\nimport icon1229 from './warning--koala-crossing--g3.png';\r\nimport icon1230 from './warning--koala-crossing--g4.png';\r\nimport icon1231 from './warning--lane-closed-in-dual-lanes-left--g1.png';\r\nimport icon1232 from './warning--lane-closed-in-dual-lanes-left--g2.png';\r\nimport icon1233 from './warning--lane-closed-in-dual-lanes-right--g1.png';\r\nimport icon1234 from './warning--lane-closed-in-dual-lanes-right--g2.png';\r\nimport icon1235 from './warning--length-restriction--g1.png';\r\nimport icon1236 from './warning--length-restriction--g2.png';\r\nimport icon1237 from './warning--light-rail-transit-vehicles--g1.png';\r\nimport icon1238 from './warning--limited-lighting-under-trees--g1.png';\r\nimport icon1239 from './warning--logging-vehicles--g1.png';\r\nimport icon1240 from './warning--loop-270-degree--g1.png';\r\nimport icon1241 from './warning--loop-pretzel--g1.png';\r\nimport icon1242 from './warning--loose-road-surface--g1.png';\r\nimport icon1243 from './warning--loose-road-surface--g2.png';\r\nimport icon1244 from './warning--loose-road-surface--g3.png';\r\nimport icon1245 from './warning--loose-road-surface--g4.png';\r\nimport icon1246 from './warning--low-flying-aircraft--g1.png';\r\nimport icon1247 from './warning--low-flying-aircraft--g2.png';\r\nimport icon1248 from './warning--low-flying-aircraft--g3.png';\r\nimport icon1249 from './warning--low-flying-aircraft--g4.png';\r\nimport icon1250 from './warning--low-flying-aircraft--g5.png';\r\nimport icon1251 from './warning--low-flying-aircraft--g6.png';\r\nimport icon1252 from './warning--low-flying-aircraft--g7.png';\r\nimport icon1253 from './warning--low-flying-aircraft--g8.png';\r\nimport icon1254 from './warning--low-ground-clearance--g1.png';\r\nimport icon1255 from './warning--low-ground-clearance--g2.png';\r\nimport icon1256 from './warning--low-ground-clearance--g3.png';\r\nimport icon1257 from './warning--monkey-crossing--g1.png';\r\nimport icon1258 from './warning--motorcycles-crossing--g1.png';\r\nimport icon1259 from './warning--narrow-bridge--g1.png';\r\nimport icon1260 from './warning--narrow-bridge--g2.png';\r\nimport icon1261 from './warning--narrow-bridge--g3.png';\r\nimport icon1262 from './warning--no-passing-zone--g1.png';\r\nimport icon1263 from './warning--no-passing-zone--g2.png';\r\nimport icon1264 from './warning--occupied-lanes--g1.png';\r\nimport icon1265 from './warning--offset-roads--g1.png';\r\nimport icon1266 from './warning--offset-roads--g2.png';\r\nimport icon1267 from './warning--offset-roads--g3.png';\r\nimport icon1268 from './warning--offset-roads--g4.png';\r\nimport icon1269 from './warning--opening-or-swing-bridge--g1.png';\r\nimport icon1270 from './warning--opening-or-swing-bridge--g2.png';\r\nimport icon1271 from './warning--other-danger--g1.png';\r\nimport icon1272 from './warning--other-danger--g2.png';\r\nimport icon1273 from './warning--other-danger--g3.png';\r\nimport icon1274 from './warning--panda-crossing--g1.png';\r\nimport icon1275 from './warning--pass-left-or-right--g1.png';\r\nimport icon1276 from './warning--pass-left-or-right--g2.png';\r\nimport icon1277 from './warning--pass-left-or-right--g3.png';\r\nimport icon1278 from './warning--pavement-ahead--g1.png';\r\nimport icon1279 from './warning--pavement-ends--g1.png';\r\nimport icon1280 from './warning--pavement-ends--g2.png';\r\nimport icon1281 from './warning--pavement-ends--g3.png';\r\nimport icon1282 from './warning--pavement-ends--g4.png';\r\nimport icon1283 from './warning--pavement-ends--g5.png';\r\nimport icon1284 from './warning--pedestrians-crossing--g1.png';\r\nimport icon1285 from './warning--pedestrians-crossing--g4.png';\r\nimport icon1286 from './warning--pedestrians-crossing--g5.png';\r\nimport icon1287 from './warning--pedestrians-crossing--g6.png';\r\nimport icon1288 from './warning--pedestrians-crossing--g7.png';\r\nimport icon1289 from './warning--pedestrians-crossing--g8.png';\r\nimport icon1290 from './warning--pedestrians-crossing--g9.png';\r\nimport icon1291 from './warning--pedestrians-crossing--g10.png';\r\nimport icon1292 from './warning--pedestrians-crossing--g11.png';\r\nimport icon1293 from './warning--pedestrians-crossing--g12.png';\r\nimport icon1294 from './warning--playground--g1.png';\r\nimport icon1295 from './warning--playground--g3.png';\r\nimport icon1296 from './warning--polar-bear-crossing--g1.png';\r\nimport icon1297 from './warning--quay-or-river-bank--g1.png';\r\nimport icon1298 from './warning--quay-or-river-bank--g2.png';\r\nimport icon1299 from './warning--quay-or-river-bank--g3.png';\r\nimport icon1300 from './warning--quay-or-river-bank--g4.png';\r\nimport icon1301 from './warning--rabbit-crossing--g1.png';\r\nimport icon1302 from './warning--raccoon-crossing--g1.png';\r\nimport icon1303 from './warning--railroad-crossing--g1.png';\r\nimport icon1304 from './warning--railroad-crossing--g2.png';\r\nimport icon1305 from './warning--railroad-crossing--g3.png';\r\nimport icon1306 from './warning--railroad-crossing--g4.png';\r\nimport icon1307 from './warning--railroad-crossing-with-barriers--g1.png';\r\nimport icon1308 from './warning--railroad-crossing-with-barriers--g2.png';\r\nimport icon1309 from './warning--railroad-crossing-with-barriers--g3.png';\r\nimport icon1310 from './warning--railroad-crossing-with-barriers--g4.png';\r\nimport icon1311 from './warning--railroad-crossing-with-barriers--g5.png';\r\nimport icon1312 from './warning--railroad-crossing-with-barriers--g6.png';\r\nimport icon1313 from './warning--railroad-crossing-with-barriers--g7.png';\r\nimport icon1314 from './warning--railroad-crossing-without-barriers--g1.png';\r\nimport icon1315 from './warning--railroad-crossing-without-barriers--g2.png';\r\nimport icon1316 from './warning--railroad-crossing-without-barriers--g3.png';\r\nimport icon1317 from './warning--railroad-crossing-without-barriers--g4.png';\r\nimport icon1318 from './warning--railroad-crossing-without-barriers--g5.png';\r\nimport icon1319 from './warning--railroad-crossing-without-barriers--g6.png';\r\nimport icon1320 from './warning--railroad-intersection--g1.png';\r\nimport icon1321 from './warning--railroad-intersection--g2.png';\r\nimport icon1322 from './warning--railroad-intersection--g3.png';\r\nimport icon1323 from './warning--railroad-intersection--g4.png';\r\nimport icon1324 from './warning--railroad-intersection--g5.png';\r\nimport icon1325 from './warning--railroad-intersection--g6.png';\r\nimport icon1326 from './warning--railroad-intersection--g7.png';\r\nimport icon1327 from './warning--railroad-intersection--g8.png';\r\nimport icon1328 from './warning--railroad-intersection--g9.png';\r\nimport icon1329 from './warning--ramp-closed--g1.png';\r\nimport icon1330 from './warning--reduced-maximum-speed-limit--g1.png';\r\nimport icon1331 from './warning--reserved-lane--g1.png';\r\nimport icon1332 from './warning--restricted-zone--g1.png';\r\nimport icon1333 from './warning--reversible-lanes--g1.png';\r\nimport icon1334 from './warning--reversible-lanes--g2.png';\r\nimport icon1335 from './warning--rickshaws-crossing--g1.png';\r\nimport icon1336 from './warning--road-blocks--g1.png';\r\nimport icon1337 from './warning--road-bump--g1.png';\r\nimport icon1338 from './warning--road-bump--g2.png';\r\nimport icon1339 from './warning--road-bump--g3.png';\r\nimport icon1340 from './warning--road-bump-with-speed-limit--g1.png';\r\nimport icon1341 from './warning--road-closed--g3.png';\r\nimport icon1342 from './warning--road-narrows--g1.png';\r\nimport icon1343 from './warning--road-narrows--g2.png';\r\nimport icon1344 from './warning--road-narrows-left--g1.png';\r\nimport icon1345 from './warning--road-narrows-left--g2.png';\r\nimport icon1346 from './warning--road-narrows-left-ahead--g1.png';\r\nimport icon1347 from './warning--road-narrows-right--g1.png';\r\nimport icon1348 from './warning--road-narrows-right--g2.png';\r\nimport icon1349 from './warning--road-narrows-right-ahead--g1.png';\r\nimport icon1350 from './warning--road-toll-ahead--g1.png';\r\nimport icon1351 from './warning--road-widens--g1.png';\r\nimport icon1352 from './warning--road-widens-left--g1.png';\r\nimport icon1353 from './warning--road-widens-right--g1.png';\r\nimport icon1354 from './warning--roadworks--g1.png';\r\nimport icon1355 from './warning--roadworks--g2.png';\r\nimport icon1356 from './warning--roadworks--g3.png';\r\nimport icon1357 from './warning--roadworks--g5.png';\r\nimport icon1358 from './warning--roadworks--g6.png';\r\nimport icon1359 from './warning--roadworks--g8.png';\r\nimport icon1360 from './warning--roadworks--g9.png';\r\nimport icon1361 from './warning--roadworks--g10.png';\r\nimport icon1362 from './warning--roadworks--g11.png';\r\nimport icon1363 from './warning--roadworks-go-left-or-straight--g1.png';\r\nimport icon1364 from './warning--roadworks-go-right-or-straight--g1.png';\r\nimport icon1365 from './warning--roundabout--g1.png';\r\nimport icon1366 from './warning--roundabout--g2.png';\r\nimport icon1367 from './warning--roundabout--g3.png';\r\nimport icon1368 from './warning--roundabout--g4.png';\r\nimport icon1369 from './warning--roundabout--g5.png';\r\nimport icon1370 from './warning--roundabout--g6.png';\r\nimport icon1371 from './warning--roundabout--g7.png';\r\nimport icon1372 from './warning--ruts--g1.png';\r\nimport icon1373 from './warning--sand--g1.png';\r\nimport icon1374 from './warning--sand-drift--g1.png';\r\nimport icon1375 from './warning--school-zone--g2.png';\r\nimport icon1376 from './warning--severe-weather--g1.png';\r\nimport icon1377 from './warning--shared-lane-motorcycles-bicycles--g1.png';\r\nimport icon1378 from './warning--sharp-turn--g1.png';\r\nimport icon1379 from './warning--single-reverse-curve--g1.png';\r\nimport icon1380 from './warning--skewed-t-roads-left--g1.png';\r\nimport icon1381 from './warning--skewed-t-roads-left--g2.png';\r\nimport icon1382 from './warning--skewed-t-roads-left--g3.png';\r\nimport icon1383 from './warning--skewed-t-roads-right--g1.png';\r\nimport icon1384 from './warning--skewed-t-roads-right--g2.png';\r\nimport icon1385 from './warning--skewed-t-roads-right--g3.png';\r\nimport icon1386 from './warning--skiers--g1.png';\r\nimport icon1387 from './warning--skiers--g2.png';\r\nimport icon1388 from './warning--skiers--g3.png';\r\nimport icon1389 from './warning--slippery-bicycles--g1.png';\r\nimport icon1390 from './warning--slippery-motorcycles--g1.png';\r\nimport icon1391 from './warning--slippery-motorcycles--g2.png';\r\nimport icon1392 from './warning--slippery-road-surface--g1.png';\r\nimport icon1393 from './warning--slippery-road-surface--g2.png';\r\nimport icon1394 from './warning--slow--g1.png';\r\nimport icon1395 from './warning--snow-tractors--g1.png';\r\nimport icon1396 from './warning--snowmobiles--g1.png';\r\nimport icon1397 from './warning--snowmobiles--g2.png';\r\nimport icon1398 from './warning--snowmobiles--g3.png';\r\nimport icon1399 from './warning--snowmobiles-and-others--g1.png';\r\nimport icon1400 from './warning--soft-road-surface--g1.png';\r\nimport icon1401 from './warning--soft-road-surface--g2.png';\r\nimport icon1402 from './warning--soft-shoulder--g1.png';\r\nimport icon1403 from './warning--soft-shoulder--g2.png';\r\nimport icon1404 from './warning--soft-shoulder--g3.png';\r\nimport icon1405 from './warning--soft-shoulder--g4.png';\r\nimport icon1406 from './warning--speed-camera--g1.png';\r\nimport icon1407 from './warning--steep-ascent--g1.png';\r\nimport icon1408 from './warning--steep-ascent--g2.png';\r\nimport icon1409 from './warning--steep-ascent--g3.png';\r\nimport icon1410 from './warning--steep-ascent--g4.png';\r\nimport icon1411 from './warning--steep-ascent-and-descent--g1.png';\r\nimport icon1412 from './warning--steep-descent--g1.png';\r\nimport icon1413 from './warning--steep-descent--g2.png';\r\nimport icon1414 from './warning--steep-descent--g3.png';\r\nimport icon1415 from './warning--steep-descent--g4.png';\r\nimport icon1416 from './warning--steep-descent--g5.png';\r\nimport icon1417 from './warning--steep-descent--g6.png';\r\nimport icon1418 from './warning--stop-ahead--g1.png';\r\nimport icon1419 from './warning--stop-ahead--g3.png';\r\nimport icon1420 from './warning--stop-ahead--g4.png';\r\nimport icon1421 from './warning--stop-ahead--g5.png';\r\nimport icon1422 from './warning--stop-ahead--g6.png';\r\nimport icon1423 from './warning--t-roads--g1.png';\r\nimport icon1424 from './warning--t-roads--g2.png';\r\nimport icon1425 from './warning--tanks-crossing--g1.png';\r\nimport icon1426 from './warning--tanks-crossing--g2.png';\r\nimport icon1427 from './warning--texts--g1.png';\r\nimport icon1428 from './warning--texts--g2.png';\r\nimport icon1429 from './warning--texts--g3.png';\r\nimport icon1430 from './warning--towing--g1.png';\r\nimport icon1431 from './warning--tractors--g1.png';\r\nimport icon1432 from './warning--tractors--g2.png';\r\nimport icon1433 from './warning--tractors--g3.png';\r\nimport icon1434 from './warning--tractors--g4.png';\r\nimport icon1435 from './warning--tractors--g5.png';\r\nimport icon1436 from './warning--tractors--g6.png';\r\nimport icon1437 from './warning--tractors--g7.png';\r\nimport icon1438 from './warning--traffic-merges-at-signalized-intersections--g1.png';\r\nimport icon1439 from './warning--traffic-merges-left--g1.png';\r\nimport icon1440 from './warning--traffic-merges-left--g2.png';\r\nimport icon1441 from './warning--traffic-merges-left--g3.png';\r\nimport icon1442 from './warning--traffic-merges-left--g4.png';\r\nimport icon1443 from './warning--traffic-merges-left-and-right--g1.png';\r\nimport icon1444 from './warning--traffic-merges-left-buses--g1.png';\r\nimport icon1445 from './warning--traffic-merges-right--g1.png';\r\nimport icon1446 from './warning--traffic-merges-right--g2.png';\r\nimport icon1447 from './warning--traffic-merges-right--g3.png';\r\nimport icon1448 from './warning--traffic-merges-right-buses--g1.png';\r\nimport icon1449 from './warning--traffic-queues-likely--g1.png';\r\nimport icon1450 from './warning--traffic-queues-likely--g2.png';\r\nimport icon1451 from './warning--traffic-queues-likely--g3.png';\r\nimport icon1452 from './warning--traffic-queues-likely--g4.png';\r\nimport icon1453 from './warning--traffic-queues-likely--g5.png';\r\nimport icon1454 from './warning--traffic-signals--g1.png';\r\nimport icon1455 from './warning--traffic-signals--g2.png';\r\nimport icon1456 from './warning--traffic-signals--g3.png';\r\nimport icon1457 from './warning--traffic-signals--g4.png';\r\nimport icon1458 from './warning--traffic-signals--g5.png';\r\nimport icon1459 from './warning--traffic-signals--g6.png';\r\nimport icon1460 from './warning--traffic-slow--g1.png';\r\nimport icon1461 from './warning--trail-crossing--g1.png';\r\nimport icon1462 from './warning--trail-crossing--g2.png';\r\nimport icon1463 from './warning--trail-crossing--g3.png';\r\nimport icon1464 from './warning--trail-crossing--g4.png';\r\nimport icon1465 from './warning--trail-crossing--g5.png';\r\nimport icon1466 from './warning--trail-crossing--g6.png';\r\nimport icon1467 from './warning--trams-crossing--g1.png';\r\nimport icon1468 from './warning--trams-crossing--g2.png';\r\nimport icon1469 from './warning--triple-curve-left--g1.png';\r\nimport icon1470 from './warning--triple-curve-right--g1.png';\r\nimport icon1471 from './warning--triple-lanes-left-turn--g1.png';\r\nimport icon1472 from './warning--triple-lanes-left-turn-or-go-straight--g1.png';\r\nimport icon1473 from './warning--triple-lanes-right-turn--g1.png';\r\nimport icon1474 from './warning--triple-lanes-right-turn-or-go-straight--g1.png';\r\nimport icon1475 from './warning--triple-lanes-with-directions--g1.png';\r\nimport icon1476 from './warning--triple-reverse-curve-left--g1.png';\r\nimport icon1477 from './warning--triple-reverse-curve-right--g1.png';\r\nimport icon1478 from './warning--trucks-crossing--g1.png';\r\nimport icon1479 from './warning--trucks-crossing--g2.png';\r\nimport icon1480 from './warning--trucks-rollover--g1.png';\r\nimport icon1481 from './warning--trucks-rollover--g2.png';\r\nimport icon1482 from './warning--trucks-rollover--g3.png';\r\nimport icon1483 from './warning--trucks-rollover--g4.png';\r\nimport icon1484 from './warning--trucks-rollover--g5.png';\r\nimport icon1485 from './warning--tunnel--g1.png';\r\nimport icon1486 from './warning--tunnel--g2.png';\r\nimport icon1487 from './warning--tunnel--g3.png';\r\nimport icon1488 from './warning--tunnel--g4.png';\r\nimport icon1489 from './warning--tunnel--g5.png';\r\nimport icon1490 from './warning--tunnel--g6.png';\r\nimport icon1491 from './warning--tunnel--g7.png';\r\nimport icon1492 from './warning--turn-left--g1.png';\r\nimport icon1493 from './warning--turn-left--g2.png';\r\nimport icon1494 from './warning--turn-left--g3.png';\r\nimport icon1495 from './warning--turn-left-or-right--g1.png';\r\nimport icon1496 from './warning--turn-right--g1.png';\r\nimport icon1497 from './warning--turn-right--g2.png';\r\nimport icon1498 from './warning--turn-right--g3.png';\r\nimport icon1499 from './warning--two-way-traffic--g1.png';\r\nimport icon1500 from './warning--two-way-traffic--g2.png';\r\nimport icon1501 from './warning--two-way-traffic--g3.png';\r\nimport icon1502 from './warning--two-way-traffic--g4.png';\r\nimport icon1503 from './warning--two-way-traffic--g5.png';\r\nimport icon1504 from './warning--two-way-traffic--g6.png';\r\nimport icon1505 from './warning--u-turn--g1.png';\r\nimport icon1506 from './warning--u-turn--g2.png';\r\nimport icon1507 from './warning--uneven-road--g1.png';\r\nimport icon1508 from './warning--uneven-road--g2.png';\r\nimport icon1509 from './warning--uneven-roads-ahead--g1.png';\r\nimport icon1510 from './warning--vehicles-and-others--g1.png';\r\nimport icon1511 from './warning--vehicles-crossing--g1.png';\r\nimport icon1512 from './warning--village--g1.png';\r\nimport icon1513 from './warning--weight-limit--g5.png';\r\nimport icon1514 from './warning--weight-limit-per-tandem-axle--g1.png';\r\nimport icon1515 from './warning--width-restriction--g1.png';\r\nimport icon1516 from './warning--width-restriction--g2.png';\r\nimport icon1517 from './warning--width-restriction--g3.png';\r\nimport icon1518 from './warning--width-restriction--g4.png';\r\nimport icon1519 from './warning--wild-animals--g1.png';\r\nimport icon1520 from './warning--wild-animals--g2.png';\r\nimport icon1521 from './warning--wild-animals--g3.png';\r\nimport icon1522 from './warning--wild-animals--g4.png';\r\nimport icon1523 from './warning--wild-animals--g5.png';\r\nimport icon1524 from './warning--wild-animals--g6.png';\r\nimport icon1525 from './warning--wild-animals--g7.png';\r\nimport icon1526 from './warning--wild-animals--g8.png';\r\nimport icon1527 from './warning--wind--g1.png';\r\nimport icon1528 from './warning--winding-road--g1.png';\r\nimport icon1529 from './warning--winding-road-first-left--g1.png';\r\nimport icon1530 from './warning--winding-road-first-left--g2.png';\r\nimport icon1531 from './warning--winding-road-first-left--g3.png';\r\nimport icon1532 from './warning--winding-road-first-right--g1.png';\r\nimport icon1533 from './warning--winding-road-first-right--g2.png';\r\nimport icon1534 from './warning--winding-road-first-right--g3.png';\r\nimport icon1535 from './warning--winding-road-first-right--g4.png';\r\nimport icon1536 from './warning--winding-road-to-left--g1.png';\r\nimport icon1537 from './warning--winding-road-to-right--g1.png';\r\nimport icon1538 from './warning--wombat-crossing--g1.png';\r\nimport icon1539 from './warning--y-roads--g1.png';\r\nimport icon1540 from './warning--y-roads--g2.png';\r\nimport icon1541 from './warning--yield-ahead--g1.png';\r\nimport icon1542 from './warning--yield-ahead--g3.png';\r\n\r\nconst textures = {\r\n 'complementary--accident-area--g1': icon0,\r\n 'complementary--accident-area--g2': icon1,\r\n 'complementary--accident-area--g3': icon2,\r\n 'complementary--accident-area--g4': icon3,\r\n 'complementary--advisory-exit-or-ramp-speed--g1': icon4,\r\n 'complementary--bicycles--g1': icon5,\r\n 'complementary--bicycles-and-pedestrians-detour--g1': icon6,\r\n 'complementary--bicycles-or-pedestrians-detour--g1': icon7,\r\n 'complementary--bicycles-turn-right--g1': icon8,\r\n 'complementary--bike-route--g1': icon9,\r\n 'complementary--bike-route--g3': icon10,\r\n 'complementary--both-directions--g1': icon11,\r\n 'complementary--both-directions--g2': icon12,\r\n 'complementary--buses--g1': icon13,\r\n 'complementary--buses-and-trucks--g1': icon14,\r\n 'complementary--camera--g1': icon15,\r\n 'complementary--camera--g2': icon16,\r\n 'complementary--camera--g3': icon17,\r\n 'complementary--camera--g4': icon18,\r\n 'complementary--camera--g5': icon19,\r\n 'complementary--caravan-trailers--g2': icon20,\r\n 'complementary--caravan-trailers--g3': icon21,\r\n 'complementary--caravans--g2': icon22,\r\n 'complementary--carts--g1': icon23,\r\n 'complementary--chevron-left--g1': icon24,\r\n 'complementary--chevron-left--g2': icon25,\r\n 'complementary--chevron-left--g3': icon26,\r\n 'complementary--chevron-left--g4': icon27,\r\n 'complementary--chevron-left--g5': icon28,\r\n 'complementary--chevron-right--g1': icon29,\r\n 'complementary--chevron-right--g2': icon30,\r\n 'complementary--chevron-right--g3': icon31,\r\n 'complementary--chevron-right--g4': icon32,\r\n 'complementary--chevron-right--g5': icon33,\r\n 'complementary--dangerous-or-pollutant-good--g1': icon34,\r\n 'complementary--dead-end--g1': icon35,\r\n 'complementary--detour--g1': icon36,\r\n 'complementary--disabled-persons--g1': icon37,\r\n 'complementary--distance--g1': icon38,\r\n 'complementary--distance--g2': icon39,\r\n 'complementary--distance--g3': icon40,\r\n 'complementary--end-of-road-works--g1': icon41,\r\n 'complementary--except-bicycles--g1': icon42,\r\n 'complementary--except-bicycles--g2': icon43,\r\n 'complementary--except-buses--g1': icon44,\r\n 'complementary--except-carts--g1': icon45,\r\n 'complementary--except-motorcycles--g1': icon46,\r\n 'complementary--except-motorcycles--g2': icon47,\r\n 'complementary--except-polluting-level-green--g1': icon48,\r\n 'complementary--except-polluting-level-green-yellow--g1': icon49,\r\n 'complementary--except-polluting-level-green-yellow-red--g1': icon50,\r\n 'complementary--except-tractors--g1': icon51,\r\n 'complementary--except-tractors--g2': icon52,\r\n 'complementary--except-trailers--g1': icon53,\r\n 'complementary--except-trailers--g2': icon54,\r\n 'complementary--except-trains--g1': icon55,\r\n 'complementary--except-trams--g1': icon56,\r\n 'complementary--except-trucks--g1': icon57,\r\n 'complementary--except-vehicles--g1': icon58,\r\n 'complementary--except-vehicles--g2': icon59,\r\n 'complementary--go-left--g1': icon60,\r\n 'complementary--go-right--g1': icon61,\r\n 'complementary--go-straight-or-turn-left--g1': icon62,\r\n 'complementary--go-straight-or-turn-right--g1': icon63,\r\n 'complementary--height-limit--g1': icon64,\r\n 'complementary--height-limit--g2': icon65,\r\n 'complementary--including-bicycles-and-motorcycles--g1': icon66,\r\n 'complementary--including-buses-vehicles--g1': icon67,\r\n 'complementary--keep-left--g1': icon68,\r\n 'complementary--keep-right--g1': icon69,\r\n 'complementary--lane-control--g1': icon70,\r\n 'complementary--lane-control--g2': icon71,\r\n 'complementary--lane-control--g3': icon72,\r\n 'complementary--maximum-speed-limit-10--g1': icon73,\r\n 'complementary--maximum-speed-limit-15--g1': icon74,\r\n 'complementary--maximum-speed-limit-20--g1': icon75,\r\n 'complementary--maximum-speed-limit-25--g1': icon76,\r\n 'complementary--maximum-speed-limit-30--g1': icon77,\r\n 'complementary--maximum-speed-limit-35--g1': icon78,\r\n 'complementary--maximum-speed-limit-40--g1': icon79,\r\n 'complementary--maximum-speed-limit-45--g1': icon80,\r\n 'complementary--maximum-speed-limit-50--g1': icon81,\r\n 'complementary--maximum-speed-limit-55--g1': icon82,\r\n 'complementary--maximum-speed-limit-60--g1': icon83,\r\n 'complementary--maximum-speed-limit-65--g1': icon84,\r\n 'complementary--maximum-speed-limit-70--g1': icon85,\r\n 'complementary--maximum-speed-limit-75--g1': icon86,\r\n 'complementary--maximum-speed-limit-80--g1': icon87,\r\n 'complementary--maximum-speed-limit-85--g1': icon88,\r\n 'complementary--maximum-speed-limit-90--g1': icon89,\r\n 'complementary--maximum-speed-limit-95--g1': icon90,\r\n 'complementary--motorcycles--g1': icon91,\r\n 'complementary--motorcycles--g2': icon92,\r\n 'complementary--motorcycles--g3': icon93,\r\n 'complementary--motorcycles--g4': icon94,\r\n 'complementary--obstacle-delineator--g1': icon95,\r\n 'complementary--obstacle-delineator--g2': icon96,\r\n 'complementary--obstacle-delineator--g3': icon97,\r\n 'complementary--one-direction-left--g1': icon98,\r\n 'complementary--one-direction-right--g1': icon99,\r\n 'complementary--pass-left--g1': icon100,\r\n 'complementary--pass-right--g1': icon101,\r\n 'complementary--pedestrians-and-bicycles--g1': icon102,\r\n 'complementary--pedestrians-left--g1': icon103,\r\n 'complementary--pedestrians-right--g1': icon104,\r\n 'complementary--photo-enforced--g1': icon105,\r\n 'complementary--playground--g1': icon106,\r\n 'complementary--priority-route-at-intersection--g1': icon107,\r\n 'complementary--priority-route-at-intersection--g2': icon108,\r\n 'complementary--priority-route-at-intersection--g3': icon109,\r\n 'complementary--priority-route-at-intersection--g4': icon110,\r\n 'complementary--priority-route-at-intersection--g5': icon111,\r\n 'complementary--priority-route-at-intersection--g6': icon112,\r\n 'complementary--railroad--g1': icon113,\r\n 'complementary--railroad--g2': icon114,\r\n 'complementary--railroad--g3': icon115,\r\n 'complementary--restriction-in-both-directions--g1': icon116,\r\n 'complementary--roundabout-go-left--g1': icon117,\r\n 'complementary--roundabout-go-right--g1': icon118,\r\n 'complementary--roundabout-go-straight--g1': icon119,\r\n 'complementary--slippery-for-caravan-trailers--g1': icon120,\r\n 'complementary--snow--g2': icon121,\r\n 'complementary--snow--g4': icon122,\r\n 'complementary--snow--g5': icon123,\r\n 'complementary--snowmobiles--g1': icon124,\r\n 'complementary--soft-shoulder--g1': icon125,\r\n 'complementary--soft-shoulder--g2': icon126,\r\n 'complementary--steep-ascent--g1': icon127,\r\n 'complementary--steep-descent--g1': icon128,\r\n 'complementary--time-restrictions--g1': icon129,\r\n 'complementary--time-restrictions--g3': icon130,\r\n 'complementary--tow-away-zone--g1': icon131,\r\n 'complementary--tow-away-zone--g3': icon132,\r\n 'complementary--tractors--g1': icon133,\r\n 'complementary--traffic-queues--g1': icon134,\r\n 'complementary--trailers--g1': icon135,\r\n 'complementary--trailers--g2': icon136,\r\n 'complementary--trailers--g3': icon137,\r\n 'complementary--trailers--g4': icon138,\r\n 'complementary--trains--g1': icon139,\r\n 'complementary--trams--g1': icon140,\r\n 'complementary--trees--g1': icon141,\r\n 'complementary--trucks--g1': icon142,\r\n 'complementary--trucks--g2': icon143,\r\n 'complementary--trucks--g3': icon144,\r\n 'complementary--trucks-and-trailers--g1': icon145,\r\n 'complementary--trucks-buses-trailers--g1': icon146,\r\n 'complementary--trucks-go-left--g1': icon147,\r\n 'complementary--trucks-go-left-ahead--g1': icon148,\r\n 'complementary--trucks-go-right--g1': icon149,\r\n 'complementary--trucks-go-right-ahead--g1': icon150,\r\n 'complementary--trucks-go-straight--g1': icon151,\r\n 'complementary--trucks-turn-left--g1': icon152,\r\n 'complementary--trucks-turn-right--g1': icon153,\r\n 'complementary--turn-left--g1': icon154,\r\n 'complementary--turn-left--g2': icon155,\r\n 'complementary--turn-right--g1': icon156,\r\n 'complementary--turn-right--g2': icon157,\r\n 'complementary--two-way-traffic--g1': icon158,\r\n 'complementary--two-way-traffic--g2': icon159,\r\n 'complementary--two-way-traffic--g3': icon160,\r\n 'complementary--two-way-traffic--g4': icon161,\r\n 'complementary--two-way-traffic--g5': icon162,\r\n 'complementary--vehicles--g1': icon163,\r\n 'complementary--vehicles--g2': icon164,\r\n 'complementary--vehicles-or-buses--g1': icon165,\r\n 'complementary--weekends-or-holidays--g1': icon166,\r\n 'complementary--weight-limit--g1': icon167,\r\n 'complementary--when-foggy--g1': icon168,\r\n 'complementary--when-rainy--g1': icon169,\r\n 'complementary--when-rainy--g2': icon170,\r\n 'complementary--when-rainy--g3': icon171,\r\n 'complementary--when-snowy--g1': icon172,\r\n 'complementary--when-snowy--g2': icon173,\r\n 'complementary--when-snowy-or-rainy--g1': icon174,\r\n 'complementary--when-snowy-or-rainy--g2': icon175,\r\n 'complementary--when-wet--g1': icon176,\r\n 'complementary--width-limit--g1': icon177,\r\n 'complementary--working-days--g1': icon178,\r\n 'information--airport--g1': icon179,\r\n 'information--airport--g2': icon180,\r\n 'information--bicycle-lane--g1': icon181,\r\n 'information--bicycles-both-ways--g1': icon182,\r\n 'information--bicycles-crossing--g1': icon183,\r\n 'information--bicycles-crossing--g2': icon184,\r\n 'information--bicycles-crossing--g3': icon185,\r\n 'information--bike-route--g1': icon186,\r\n 'information--bike-route--g2': icon187,\r\n 'information--built-up-area--g1': icon188,\r\n 'information--built-up-area--g2': icon189,\r\n 'information--bus-lane-straight--g1': icon190,\r\n 'information--bus-stop--g1': icon191,\r\n 'information--bus-stop--g2': icon192,\r\n 'information--camera--g1': icon193,\r\n 'information--camera--g2': icon194,\r\n 'information--camera--g3': icon195,\r\n 'information--camp--g1': icon196,\r\n 'information--camp--g2': icon197,\r\n 'information--car-pool-lane--g1': icon198,\r\n 'information--caravan-parking--g1': icon199,\r\n 'information--caravan-trailer-parking--g1': icon200,\r\n 'information--cargo-loading-zone--g1': icon201,\r\n 'information--central-lane--g1': icon202,\r\n 'information--charging-station--g1': icon203,\r\n 'information--children--g1': icon204,\r\n 'information--children--g2': icon205,\r\n 'information--children-crossing--g5': icon206,\r\n 'information--cycling-two-abreast-permitted--g1': icon207,\r\n 'information--dead-end--g1': icon208,\r\n 'information--dead-end--g2': icon209,\r\n 'information--dead-end--g3': icon210,\r\n 'information--dead-end--g4': icon211,\r\n 'information--dead-end-except-bicycles--g1': icon212,\r\n 'information--dead-end-except-bicycles-and-pedestrians--g1': icon213,\r\n 'information--dead-end-except-bicycles-and-pedestrians--g2': icon214,\r\n 'information--dead-end-left--g1': icon215,\r\n 'information--dead-end-left--g2': icon216,\r\n 'information--dead-end-right--g1': icon217,\r\n 'information--dead-end-right--g2': icon218,\r\n 'information--dead-end-right--g3': icon219,\r\n 'information--directions--g1': icon220,\r\n 'information--disabled-persons--g1': icon221,\r\n 'information--disabled-persons--g2': icon222,\r\n 'information--disabled-persons--g3': icon223,\r\n 'information--emergency-facility--g1': icon224,\r\n 'information--end-of-advisory-maximum-speed-limit-20--g1': icon225,\r\n 'information--end-of-advisory-maximum-speed-limit-40--g1': icon226,\r\n 'information--end-of-advisory-maximum-speed-limit-60--g1': icon227,\r\n 'information--end-of-advisory-maximum-speed-limit-70--g1': icon228,\r\n 'information--end-of-advisory-maximum-speed-limit-80--g1': icon229,\r\n 'information--end-of-advisory-maximum-speed-limit-90--g1': icon230,\r\n 'information--end-of-bicycle-lane--g1': icon231,\r\n 'information--end-of-built-up-area--g1': icon232,\r\n 'information--end-of-built-up-area--g2': icon233,\r\n 'information--end-of-built-up-area--g3': icon234,\r\n 'information--end-of-built-up-area--g4': icon235,\r\n 'information--end-of-car-pool-lane--g1': icon236,\r\n 'information--end-of-limited-access-road--g1': icon237,\r\n 'information--end-of-living-street--g1': icon238,\r\n 'information--end-of-living-street--g2': icon239,\r\n 'information--end-of-minimum-speed-10--g1': icon240,\r\n 'information--end-of-minimum-speed-20--g1': icon241,\r\n 'information--end-of-minimum-speed-25--g1': icon242,\r\n 'information--end-of-minimum-speed-30--g1': icon243,\r\n 'information--end-of-minimum-speed-35--g1': icon244,\r\n 'information--end-of-minimum-speed-40--g1': icon245,\r\n 'information--end-of-minimum-speed-50--g1': icon246,\r\n 'information--end-of-minimum-speed-60--g1': icon247,\r\n 'information--end-of-minimum-speed-70--g1': icon248,\r\n 'information--end-of-minimum-speed-75--g1': icon249,\r\n 'information--end-of-minimum-speed-80--g1': icon250,\r\n 'information--end-of-minimum-speed-90--g1': icon251,\r\n 'information--end-of-minimum-speed-100--g1': icon252,\r\n 'information--end-of-minimum-speed-110--g1': icon253,\r\n 'information--end-of-minimum-speed-120--g1': icon254,\r\n 'information--end-of-minimum-speed-130--g1': icon255,\r\n 'information--end-of-motorway--g1': icon256,\r\n 'information--end-of-overtaking-permitted-heavy-good-vehicles--g1': icon257,\r\n 'information--end-of-road-works--g1': icon258,\r\n 'information--end-of-tunnel--g1': icon259,\r\n 'information--end-of-tunnel--g2': icon260,\r\n 'information--end-of-two-way-traffic--g1': icon261,\r\n 'information--equestrians-permitted--g1': icon262,\r\n 'information--exit-ahead--g1': icon263,\r\n 'information--exit-ahead--g2': icon264,\r\n 'information--exit-ahead--g3': icon265,\r\n 'information--flight-port--g1': icon266,\r\n 'information--food--g1': icon267,\r\n 'information--food--g2': icon268,\r\n 'information--gas-station--g1': icon269,\r\n 'information--gas-station--g2': icon270,\r\n 'information--gas-station--g3': icon271,\r\n 'information--general-speed-limit-at-city-border--g1': icon272,\r\n 'information--go-left--g1': icon273,\r\n 'information--go-right--g1': icon274,\r\n 'information--go-straight--g1': icon275,\r\n 'information--go-straight-or-left--g1': icon276,\r\n 'information--go-straight-or-right--g1': icon277,\r\n 'information--go-straight-or-turn-left--g1': icon278,\r\n 'information--go-straight-or-turn-right--g1': icon279,\r\n 'information--hazardous-goods-vehicles-lane--g1': icon280,\r\n 'information--height-limit--g1': icon281,\r\n 'information--height-limit--g2': icon282,\r\n 'information--highway-directions--g1': icon283,\r\n 'information--highway-exit--g1': icon284,\r\n 'information--highway-interchange--g1': icon285,\r\n 'information--highway-interstate-route--g1': icon286,\r\n 'information--highway-interstate-route--g2': icon287,\r\n 'information--highway-preferential-lane--g1': icon288,\r\n 'information--highway-preferential-lane--g2': icon289,\r\n 'information--highway-reference-location--g1': icon290,\r\n 'information--highway-reference-location--g2': icon291,\r\n 'information--hiking--g1': icon292,\r\n 'information--hospital--g1': icon293,\r\n 'information--hurricane-evacuation-route--g1': icon294,\r\n 'information--interstate-route--g1': icon295,\r\n 'information--lane-control-intersections--g1': icon296,\r\n 'information--lane-control-left-turn--g1': icon297,\r\n 'information--lane-control-multiple-lanes--g1': icon298,\r\n 'information--lane-control-multiple-lanes--g2': icon299,\r\n 'information--lane-control-right-turn--g1': icon300,\r\n 'information--limited-access-road--g1': icon301,\r\n 'information--litter-container--g1': icon302,\r\n 'information--living-street--g1': icon303,\r\n 'information--living-street--g2': icon304,\r\n 'information--living-street--g3': icon305,\r\n 'information--lodging--g1': icon306,\r\n 'information--lodging--g2': icon307,\r\n 'information--minimum-speed-10--g1': icon308,\r\n 'information--minimum-speed-20--g1': icon309,\r\n 'information--minimum-speed-25--g1': icon310,\r\n 'information--minimum-speed-30--g1': icon311,\r\n 'information--minimum-speed-35--g1': icon312,\r\n 'information--minimum-speed-40--g1': icon313,\r\n 'information--minimum-speed-50--g1': icon314,\r\n 'information--minimum-speed-60--g1': icon315,\r\n 'information--minimum-speed-70--g1': icon316,\r\n 'information--minimum-speed-75--g1': icon317,\r\n 'information--minimum-speed-80--g1': icon318,\r\n 'information--minimum-speed-90--g1': icon319,\r\n 'information--minimum-speed-100--g1': icon320,\r\n 'information--minimum-speed-110--g1': icon321,\r\n 'information--minimum-speed-120--g1': icon322,\r\n 'information--minimum-speed-130--g1': icon323,\r\n 'information--motorway--g1': icon324,\r\n 'information--motorway-exit-ahead--g1': icon325,\r\n 'information--motorway-exit-ahead--g2': icon326,\r\n 'information--motorway-exit-ahead--g3': icon327,\r\n 'information--overtaking-allowed-heavy-good-vehicles--g1': icon328,\r\n 'information--parallel-parking--g1': icon329,\r\n 'information--park-and-ride--g1': icon330,\r\n 'information--park-and-ride--g2': icon331,\r\n 'information--parking--g1': icon332,\r\n 'information--parking--g2': icon333,\r\n 'information--parking--g3': icon334,\r\n 'information--parking--g4': icon335,\r\n 'information--parking--g5': icon336,\r\n 'information--parking--g6': icon337,\r\n 'information--parking-area--g1': icon338,\r\n 'information--parking-with-restrictions--g1': icon339,\r\n 'information--pass-on-either-side--g1': icon340,\r\n 'information--passenger-loading-zone--g1': icon341,\r\n 'information--pedestrians-crossing--g1': icon342,\r\n 'information--pedestrians-crossing--g2': icon343,\r\n 'information--pedestrians-crossing--g3': icon344,\r\n 'information--pedestrians-only--g4': icon345,\r\n 'information--pedestrians-permitted--g1': icon346,\r\n 'information--perpendicular-parking--g1': icon347,\r\n 'information--picnic-site--g1': icon348,\r\n 'information--playground--g1': icon349,\r\n 'information--recreational-vehicle-sanitary-station--g1': icon350,\r\n 'information--recycle-collection-center--g1': icon351,\r\n 'information--rest-area--g1': icon352,\r\n 'information--road-bump--g1': icon353,\r\n 'information--road-skating--g1': icon354,\r\n 'information--safety-zone--g1': icon355,\r\n 'information--safety-zone--g2': icon356,\r\n 'information--safety-zone--g3': icon357,\r\n 'information--shared-path-vehicles-and-motorcycles--g1': icon358,\r\n 'information--stairs--g1': icon359,\r\n 'information--stairs--g2': icon360,\r\n 'information--stairs--g3': icon361,\r\n 'information--stairs--g4': icon362,\r\n 'information--stop-line--g1': icon363,\r\n 'information--stop-permitted--g1': icon364,\r\n 'information--street-name-one-line--g1': icon365,\r\n 'information--street-name-three-lines--g1': icon366,\r\n 'information--street-name-two-lines--g1': icon367,\r\n 'information--subway--g1': icon368,\r\n 'information--telephone--g1': icon369,\r\n 'information--telephone--g2': icon370,\r\n 'information--telephone-device-for-the-deaf--g1': icon371,\r\n 'information--toll-station--g1': icon372,\r\n 'information--tourism-information--g1': icon373,\r\n 'information--tourist-attraction--g1': icon374,\r\n 'information--traffic-merges-left--g1': icon375,\r\n 'information--traffic-merges-right--g1': icon376,\r\n 'information--trail-crossing--g1': icon377,\r\n 'information--trail-crossing--g2': icon378,\r\n 'information--trail-crossing--g3': icon379,\r\n 'information--trailer-camping--g1': icon380,\r\n 'information--train-or-light-rail-station--g1': icon381,\r\n 'information--tram-bus-stop--g1': icon382,\r\n 'information--tram-bus-stop--g2': icon383,\r\n 'information--trams-crossing--g1': icon384,\r\n 'information--truck-lane-left--g1': icon385,\r\n 'information--truck-parking--g1': icon386,\r\n 'information--truck-trailer-lane-right--g1': icon387,\r\n 'information--truck-trailer-lane-straight--g1': icon388,\r\n 'information--trucks-both-ways--g1': icon389,\r\n 'information--trucks-only--g1': icon390,\r\n 'information--tsunami-evacuation_route--g1': icon391,\r\n 'information--tunnel--g1': icon392,\r\n 'information--tunnel--g2': icon393,\r\n 'information--tunnel--g3': icon394,\r\n 'information--tunnel-ahead--g1': icon395,\r\n 'information--turn-left--g1': icon396,\r\n 'information--turn-left-ahead--g1': icon397,\r\n 'information--turn-right--g1': icon398,\r\n 'information--turn-right-ahead--g1': icon399,\r\n 'information--urban-area--g1': icon400,\r\n 'information--vehicles-on-rails--g1': icon401,\r\n 'information--water-protection-zone--g1': icon402,\r\n 'information--weight-and-height-limit--g1': icon403,\r\n 'information--weight-limit--g1': icon404,\r\n 'information--wireless-internet--g1': icon405,\r\n 'regulatory--advisory-maximum-speed-limit--g1': icon406,\r\n 'regulatory--all-directions-permitted--g1': icon407,\r\n 'regulatory--all-way--g1': icon408,\r\n 'regulatory--atvs-permitted--g1': icon409,\r\n 'regulatory--axle-limit--g1': icon410,\r\n 'regulatory--axle-limit--g2': icon411,\r\n 'regulatory--bicycle-lane-left--g1': icon412,\r\n 'regulatory--bicycle-parking--g1': icon413,\r\n 'regulatory--bicycles-and-buses-only--g1': icon414,\r\n 'regulatory--bicycles-only--g1': icon415,\r\n 'regulatory--bicycles-only--g2': icon416,\r\n 'regulatory--bicycles-only--g3': icon417,\r\n 'regulatory--bicycles-only--g4': icon418,\r\n 'regulatory--bicycles-push-button--g1': icon419,\r\n 'regulatory--bicycles-push-button--g2': icon420,\r\n 'regulatory--bicycles-stop-on-red--g1': icon421,\r\n 'regulatory--bicycles-wrong-way--g1': icon422,\r\n 'regulatory--bicycles-yield-or-use-signal--g1': icon423,\r\n 'regulatory--bike-route--g1': icon424,\r\n 'regulatory--building-direction--g1': icon425,\r\n 'regulatory--bus-priority-lane--g1': icon426,\r\n 'regulatory--buses-and-taxi-only--g1': icon427,\r\n 'regulatory--buses-only--g1': icon428,\r\n 'regulatory--buses-only--g2': icon429,\r\n 'regulatory--circular-intersection--g1': icon430,\r\n 'regulatory--circular-intersection--g2': icon431,\r\n 'regulatory--circular-intersection--g3': icon432,\r\n 'regulatory--circular-intersection--g4': icon433,\r\n 'regulatory--cross-only-on-green--g1': icon434,\r\n 'regulatory--cross-only-on-pedestrian-signal--g1': icon435,\r\n 'regulatory--crosswalk-stop-on-red--g1': icon436,\r\n 'regulatory--cycling-restriction--g1': icon437,\r\n 'regulatory--cyclists-dismount-and-walk--g1': icon438,\r\n 'regulatory--detour-left--g1': icon439,\r\n 'regulatory--detour-right--g1': icon440,\r\n 'regulatory--divided-highway-crossing--g1': icon441,\r\n 'regulatory--divided-highway-ends--g1': icon442,\r\n 'regulatory--divided-highway-starts--g1': icon443,\r\n 'regulatory--do-not-block-intersection--g1': icon444,\r\n 'regulatory--do-not-pass--g1': icon445,\r\n 'regulatory--do-not-stop-on-tracks--g1': icon446,\r\n 'regulatory--dual-lanes-all-directions-on-left--g1': icon447,\r\n 'regulatory--dual-lanes-all-directions-on-right--g1': icon448,\r\n 'regulatory--dual-lanes-bicyclists-and-pedestrians--g1': icon449,\r\n 'regulatory--dual-lanes-go-left-or-right--g1': icon450,\r\n 'regulatory--dual-lanes-go-straight-on-left--g1': icon451,\r\n 'regulatory--dual-lanes-go-straight-on-right--g1': icon452,\r\n 'regulatory--dual-lanes-turn-left--g1': icon453,\r\n 'regulatory--dual-lanes-turn-left-no-u-turn--g1': icon454,\r\n 'regulatory--dual-lanes-turn-left-or-straight--g1': icon455,\r\n 'regulatory--dual-lanes-turn-right-or-straight--g1': icon456,\r\n 'regulatory--dual-path-bicycles-and-pedestrians--g1': icon457,\r\n 'regulatory--dual-path-bicycles-and-pedestrians--g2': icon458,\r\n 'regulatory--dual-path-bicycles-and-pedestrians--g3': icon459,\r\n 'regulatory--dual-path-equestrians-and-pedestrians--g1': icon460,\r\n 'regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1': icon461,\r\n 'regulatory--dual-path-pedestrians-and-bicycles--g1': icon462,\r\n 'regulatory--dual-path-pedestrians-and-bicycles--g2': icon463,\r\n 'regulatory--dual-path-pedestrians-and-equestrians--g1': icon464,\r\n 'regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1': icon465,\r\n 'regulatory--dual-speed-limits--g1': icon466,\r\n 'regulatory--dual-speed-limits--g2': icon467,\r\n 'regulatory--end-of-bicycles-only--g1': icon468,\r\n 'regulatory--end-of-bicycles-only--g2': icon469,\r\n 'regulatory--end-of-bus-and-taxi-only--g1': icon470,\r\n 'regulatory--end-of-buses-only--g1': icon471,\r\n 'regulatory--end-of-buses-only--g2': icon472,\r\n 'regulatory--end-of-cycling-restriction--g1': icon473,\r\n 'regulatory--end-of-dual-path-bicycles-and-pedestrians--g1': icon474,\r\n 'regulatory--end-of-dual-path-pedestrians-and-bicycles--g1': icon475,\r\n 'regulatory--end-of-equestrians-only--g1': icon476,\r\n 'regulatory--end-of-low-beam-headlights--g1': icon477,\r\n 'regulatory--end-of-maximum-speed-limit-10--g1': icon478,\r\n 'regulatory--end-of-maximum-speed-limit-10--g2': icon479,\r\n 'regulatory--end-of-maximum-speed-limit-20--g1': icon480,\r\n 'regulatory--end-of-maximum-speed-limit-20--g2': icon481,\r\n 'regulatory--end-of-maximum-speed-limit-25--g1': icon482,\r\n 'regulatory--end-of-maximum-speed-limit-25--g2': icon483,\r\n 'regulatory--end-of-maximum-speed-limit-30--g1': icon484,\r\n 'regulatory--end-of-maximum-speed-limit-30--g2': icon485,\r\n 'regulatory--end-of-maximum-speed-limit-35--g1': icon486,\r\n 'regulatory--end-of-maximum-speed-limit-35--g2': icon487,\r\n 'regulatory--end-of-maximum-speed-limit-40--g1': icon488,\r\n 'regulatory--end-of-maximum-speed-limit-40--g2': icon489,\r\n 'regulatory--end-of-maximum-speed-limit-50--g1': icon490,\r\n 'regulatory--end-of-maximum-speed-limit-50--g2': icon491,\r\n 'regulatory--end-of-maximum-speed-limit-60--g1': icon492,\r\n 'regulatory--end-of-maximum-speed-limit-60--g2': icon493,\r\n 'regulatory--end-of-maximum-speed-limit-65--g1': icon494,\r\n 'regulatory--end-of-maximum-speed-limit-65--g2': icon495,\r\n 'regulatory--end-of-maximum-speed-limit-70--g1': icon496,\r\n 'regulatory--end-of-maximum-speed-limit-70--g2': icon497,\r\n 'regulatory--end-of-maximum-speed-limit-75--g1': icon498,\r\n 'regulatory--end-of-maximum-speed-limit-75--g2': icon499,\r\n 'regulatory--end-of-maximum-speed-limit-80--g1': icon500,\r\n 'regulatory--end-of-maximum-speed-limit-80--g2': icon501,\r\n 'regulatory--end-of-maximum-speed-limit-90--g1': icon502,\r\n 'regulatory--end-of-maximum-speed-limit-90--g2': icon503,\r\n 'regulatory--end-of-maximum-speed-limit-100--g1': icon504,\r\n 'regulatory--end-of-maximum-speed-limit-100--g2': icon505,\r\n 'regulatory--end-of-maximum-speed-limit-110--g1': icon506,\r\n 'regulatory--end-of-maximum-speed-limit-110--g2': icon507,\r\n 'regulatory--end-of-maximum-speed-limit-120--g1': icon508,\r\n 'regulatory--end-of-maximum-speed-limit-120--g2': icon509,\r\n 'regulatory--end-of-maximum-speed-limit-130--g1': icon510,\r\n 'regulatory--end-of-maximum-speed-limit-130--g2': icon511,\r\n 'regulatory--end-of-maximum-speed-limit--g1': icon512,\r\n 'regulatory--end-of-mopeds-and-bicycles-only--g1': icon513,\r\n 'regulatory--end-of-no-heavy-goods-vehicles--g1': icon514,\r\n 'regulatory--end-of-no-horn--g1': icon515,\r\n 'regulatory--end-of-no-overtaking--g1': icon516,\r\n 'regulatory--end-of-no-overtaking--g2': icon517,\r\n 'regulatory--end-of-no-overtaking--g3': icon518,\r\n 'regulatory--end-of-no-overtaking--g4': icon519,\r\n 'regulatory--end-of-no-overtaking--g5': icon520,\r\n 'regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1': icon521,\r\n 'regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2': icon522,\r\n 'regulatory--end-of-no-overtaking-by-motorcycles--g1': icon523,\r\n 'regulatory--end-of-no-parking--g1': icon524,\r\n 'regulatory--end-of-no-parking--g2': icon525,\r\n 'regulatory--end-of-no-parking-or-stopping--g1': icon526,\r\n 'regulatory--end-of-one-way-straight--g1': icon527,\r\n 'regulatory--end-of-parking-zone--g1': icon528,\r\n 'regulatory--end-of-parking-zone--g2': icon529,\r\n 'regulatory--end-of-pedestrians-only--g1': icon530,\r\n 'regulatory--end-of-pedestrians-only--g2': icon531,\r\n 'regulatory--end-of-pedestrians-only--g3': icon532,\r\n 'regulatory--end-of-pedestrians-only--g4': icon533,\r\n 'regulatory--end-of-priority-road--g1': icon534,\r\n 'regulatory--end-of-prohibition--g1': icon535,\r\n 'regulatory--end-of-school-zone--g1': icon536,\r\n 'regulatory--end-of-shared-path-bicycles-and-pedestrians--g1': icon537,\r\n 'regulatory--end-of-shared-path-pedestrians-and-bicycles--g1': icon538,\r\n 'regulatory--end-of-snow-chains--g1': icon539,\r\n 'regulatory--end-of-snow-chains--g2': icon540,\r\n 'regulatory--end-of-snowmobiles-only--g1': icon541,\r\n 'regulatory--end-of-speed-limit-zone--g1': icon542,\r\n 'regulatory--end-of-speed-limit-zone--g2': icon543,\r\n 'regulatory--end-of-speed-limit-zone--g3': icon544,\r\n 'regulatory--end-of-tractors-only--g1': icon545,\r\n 'regulatory--end-of-trams-and-buses-only--g1': icon546,\r\n 'regulatory--end-of-trams-only--g1': icon547,\r\n 'regulatory--end-of-trucks-and-buses-only--g1': icon548,\r\n 'regulatory--end-of-trucks-only--g1': icon549,\r\n 'regulatory--end-of-trucks-only--g2': icon550,\r\n 'regulatory--equestrians-only--g1': icon551,\r\n 'regulatory--except-railroad-crossing--g1': icon552,\r\n 'regulatory--fine-for-littering--g1': icon553,\r\n 'regulatory--give-way-to-bicycles--g1': icon554,\r\n 'regulatory--give-way-to-oncoming-traffic--g1': icon555,\r\n 'regulatory--give-way-to-oncoming-traffic--g2': icon556,\r\n 'regulatory--go-left-bicycles--g1': icon557,\r\n 'regulatory--go-right-bicycles--g1': icon558,\r\n 'regulatory--go-straight--g1': icon559,\r\n 'regulatory--go-straight--g3': icon560,\r\n 'regulatory--go-straight-bicycles--g1': icon561,\r\n 'regulatory--go-straight-or-turn-left--g1': icon562,\r\n 'regulatory--go-straight-or-turn-left--g2': icon563,\r\n 'regulatory--go-straight-or-turn-left--g3': icon564,\r\n 'regulatory--go-straight-or-turn-right--g1': icon565,\r\n 'regulatory--go-straight-or-turn-right--g2': icon566,\r\n 'regulatory--go-straight-or-turn-right--g3': icon567,\r\n 'regulatory--heavy-goods-vehicles-permitted--g1': icon568,\r\n 'regulatory--height-limit--g1': icon569,\r\n 'regulatory--high-beam-headlights--g1': icon570,\r\n 'regulatory--horn--g1': icon571,\r\n 'regulatory--in-street-pedestrian-crossing--g1': icon572,\r\n 'regulatory--keep-left--g1': icon573,\r\n 'regulatory--keep-left--g2': icon574,\r\n 'regulatory--keep-left--g3': icon575,\r\n 'regulatory--keep-left--g4': icon576,\r\n 'regulatory--keep-left--g5': icon577,\r\n 'regulatory--keep-left--g6': icon578,\r\n 'regulatory--keep-left--g7': icon579,\r\n 'regulatory--keep-right--g1': icon580,\r\n 'regulatory--keep-right--g2': icon581,\r\n 'regulatory--keep-right--g3': icon582,\r\n 'regulatory--keep-right--g4': icon583,\r\n 'regulatory--keep-right--g5': icon584,\r\n 'regulatory--keep-right--g6': icon585,\r\n 'regulatory--keep-right--g7': icon586,\r\n 'regulatory--keep-right--g8': icon587,\r\n 'regulatory--keep-right--g9': icon588,\r\n 'regulatory--lane-control--g1': icon589,\r\n 'regulatory--left-turn-yield-on-green--g1': icon590,\r\n 'regulatory--length-limit--g1': icon591,\r\n 'regulatory--length-limit--g2': icon592,\r\n 'regulatory--light-rail-divided-highway--g1': icon593,\r\n 'regulatory--light-rail-do-not-pass--g1': icon594,\r\n 'regulatory--light-rail-only--g1': icon595,\r\n 'regulatory--look--g1': icon596,\r\n 'regulatory--low-beam-headlights--g1': icon597,\r\n 'regulatory--low-beam-headlights--g2': icon598,\r\n 'regulatory--low-beam-headlights--g3': icon599,\r\n 'regulatory--low-speed-vehicle-permitted--g1': icon600,\r\n 'regulatory--maximum-speed-limit-5--g1': icon601,\r\n 'regulatory--maximum-speed-limit-5--g3': icon602,\r\n 'regulatory--maximum-speed-limit-10--g1': icon603,\r\n 'regulatory--maximum-speed-limit-10--g3': icon604,\r\n 'regulatory--maximum-speed-limit-15--g1': icon605,\r\n 'regulatory--maximum-speed-limit-15--g3': icon606,\r\n 'regulatory--maximum-speed-limit-20--g1': icon607,\r\n 'regulatory--maximum-speed-limit-20--g3': icon608,\r\n 'regulatory--maximum-speed-limit-25--g1': icon609,\r\n 'regulatory--maximum-speed-limit-25--g2': icon610,\r\n 'regulatory--maximum-speed-limit-30--g1': icon611,\r\n 'regulatory--maximum-speed-limit-30--g3': icon612,\r\n 'regulatory--maximum-speed-limit-35--g1': icon613,\r\n 'regulatory--maximum-speed-limit-35--g2': icon614,\r\n 'regulatory--maximum-speed-limit-40--g1': icon615,\r\n 'regulatory--maximum-speed-limit-40--g3': icon616,\r\n 'regulatory--maximum-speed-limit-45--g1': icon617,\r\n 'regulatory--maximum-speed-limit-45--g3': icon618,\r\n 'regulatory--maximum-speed-limit-50--g1': icon619,\r\n 'regulatory--maximum-speed-limit-50--g3': icon620,\r\n 'regulatory--maximum-speed-limit-55--g2': icon621,\r\n 'regulatory--maximum-speed-limit-60--g1': icon622,\r\n 'regulatory--maximum-speed-limit-60--g3': icon623,\r\n 'regulatory--maximum-speed-limit-65--g1': icon624,\r\n 'regulatory--maximum-speed-limit-65--g2': icon625,\r\n 'regulatory--maximum-speed-limit-70--g1': icon626,\r\n 'regulatory--maximum-speed-limit-70--g3': icon627,\r\n 'regulatory--maximum-speed-limit-75--g2': icon628,\r\n 'regulatory--maximum-speed-limit-80--g1': icon629,\r\n 'regulatory--maximum-speed-limit-80--g3': icon630,\r\n 'regulatory--maximum-speed-limit-85--g2': icon631,\r\n 'regulatory--maximum-speed-limit-90--g1': icon632,\r\n 'regulatory--maximum-speed-limit-90--g3': icon633,\r\n 'regulatory--maximum-speed-limit-100--g1': icon634,\r\n 'regulatory--maximum-speed-limit-100--g3': icon635,\r\n 'regulatory--maximum-speed-limit-110--g1': icon636,\r\n 'regulatory--maximum-speed-limit-110--g3': icon637,\r\n 'regulatory--maximum-speed-limit-120--g1': icon638,\r\n 'regulatory--maximum-speed-limit-120--g3': icon639,\r\n 'regulatory--maximum-speed-limit-130--g1': icon640,\r\n 'regulatory--maximum-speed-limit-130--g3': icon641,\r\n 'regulatory--maximum-speed-limit-led-5--g2': icon642,\r\n 'regulatory--maximum-speed-limit-led-5--g3': icon643,\r\n 'regulatory--maximum-speed-limit-led-10--g1': icon644,\r\n 'regulatory--maximum-speed-limit-led-10--g2': icon645,\r\n 'regulatory--maximum-speed-limit-led-10--g3': icon646,\r\n 'regulatory--maximum-speed-limit-led-15--g2': icon647,\r\n 'regulatory--maximum-speed-limit-led-15--g3': icon648,\r\n 'regulatory--maximum-speed-limit-led-20--g1': icon649,\r\n 'regulatory--maximum-speed-limit-led-20--g2': icon650,\r\n 'regulatory--maximum-speed-limit-led-20--g3': icon651,\r\n 'regulatory--maximum-speed-limit-led-25--g1': icon652,\r\n 'regulatory--maximum-speed-limit-led-25--g2': icon653,\r\n 'regulatory--maximum-speed-limit-led-25--g3': icon654,\r\n 'regulatory--maximum-speed-limit-led-30--g1': icon655,\r\n 'regulatory--maximum-speed-limit-led-30--g2': icon656,\r\n 'regulatory--maximum-speed-limit-led-30--g3': icon657,\r\n 'regulatory--maximum-speed-limit-led-35--g1': icon658,\r\n 'regulatory--maximum-speed-limit-led-35--g2': icon659,\r\n 'regulatory--maximum-speed-limit-led-35--g3': icon660,\r\n 'regulatory--maximum-speed-limit-led-40--g1': icon661,\r\n 'regulatory--maximum-speed-limit-led-40--g2': icon662,\r\n 'regulatory--maximum-speed-limit-led-40--g3': icon663,\r\n 'regulatory--maximum-speed-limit-led-45--g2': icon664,\r\n 'regulatory--maximum-speed-limit-led-45--g3': icon665,\r\n 'regulatory--maximum-speed-limit-led-50--g1': icon666,\r\n 'regulatory--maximum-speed-limit-led-50--g2': icon667,\r\n 'regulatory--maximum-speed-limit-led-50--g3': icon668,\r\n 'regulatory--maximum-speed-limit-led-55--g2': icon669,\r\n 'regulatory--maximum-speed-limit-led-55--g3': icon670,\r\n 'regulatory--maximum-speed-limit-led-60--g1': icon671,\r\n 'regulatory--maximum-speed-limit-led-60--g2': icon672,\r\n 'regulatory--maximum-speed-limit-led-60--g3': icon673,\r\n 'regulatory--maximum-speed-limit-led-65--g2': icon674,\r\n 'regulatory--maximum-speed-limit-led-65--g3': icon675,\r\n 'regulatory--maximum-speed-limit-led-70--g1': icon676,\r\n 'regulatory--maximum-speed-limit-led-70--g2': icon677,\r\n 'regulatory--maximum-speed-limit-led-70--g3': icon678,\r\n 'regulatory--maximum-speed-limit-led-75--g1': icon679,\r\n 'regulatory--maximum-speed-limit-led-75--g2': icon680,\r\n 'regulatory--maximum-speed-limit-led-75--g3': icon681,\r\n 'regulatory--maximum-speed-limit-led-80--g1': icon682,\r\n 'regulatory--maximum-speed-limit-led-80--g2': icon683,\r\n 'regulatory--maximum-speed-limit-led-80--g3': icon684,\r\n 'regulatory--maximum-speed-limit-led-85--g2': icon685,\r\n 'regulatory--maximum-speed-limit-led-85--g3': icon686,\r\n 'regulatory--maximum-speed-limit-led-90--g1': icon687,\r\n 'regulatory--maximum-speed-limit-led-100--g1': icon688,\r\n 'regulatory--maximum-speed-limit-led-110--g1': icon689,\r\n 'regulatory--maximum-speed-limit-led-120--g1': icon690,\r\n 'regulatory--maximum-speed-limit-led-130--g1': icon691,\r\n 'regulatory--minimum-safe-distance--g1': icon692,\r\n 'regulatory--minimum-safe-distance--g2': icon693,\r\n 'regulatory--mopeds-and-bicycles-only--g1': icon694,\r\n 'regulatory--motorcycles-and-bicycles-only--g1': icon695,\r\n 'regulatory--motorcycles-only--g1': icon696,\r\n 'regulatory--motorcycles-only--g2': icon697,\r\n 'regulatory--night-speed-limit-5--g1': icon698,\r\n 'regulatory--night-speed-limit-10--g1': icon699,\r\n 'regulatory--night-speed-limit-15--g1': icon700,\r\n 'regulatory--night-speed-limit-20--g1': icon701,\r\n 'regulatory--night-speed-limit-25--g1': icon702,\r\n 'regulatory--night-speed-limit-30--g1': icon703,\r\n 'regulatory--night-speed-limit-35--g1': icon704,\r\n 'regulatory--night-speed-limit-40--g1': icon705,\r\n 'regulatory--night-speed-limit-45--g1': icon706,\r\n 'regulatory--night-speed-limit-50--g1': icon707,\r\n 'regulatory--night-speed-limit-55--g1': icon708,\r\n 'regulatory--night-speed-limit-60--g1': icon709,\r\n 'regulatory--night-speed-limit-65--g1': icon710,\r\n 'regulatory--night-speed-limit-70--g1': icon711,\r\n 'regulatory--night-speed-limit-75--g1': icon712,\r\n 'regulatory--night-speed-limit-80--g1': icon713,\r\n 'regulatory--night-speed-limit-85--g1': icon714,\r\n 'regulatory--no-abnormal-vehicles--g1': icon715,\r\n 'regulatory--no-atvs--g1': icon716,\r\n 'regulatory--no-bicycles--g1': icon717,\r\n 'regulatory--no-bicycles--g2': icon718,\r\n 'regulatory--no-bicycles--g3': icon719,\r\n 'regulatory--no-bicycles-carts-or-hand-carts--g1': icon720,\r\n 'regulatory--no-bicycles-mopeds-or-motorcycles--g1': icon721,\r\n 'regulatory--no-bicycles-mopeds-or-motorcycles--g2': icon722,\r\n 'regulatory--no-bicycles-or-hand-carts--g1': icon723,\r\n 'regulatory--no-bicycles-or-motorcycles--g1': icon724,\r\n 'regulatory--no-bicycles-tractors-or-carts--g1': icon725,\r\n 'regulatory--no-buses--g1': icon726,\r\n 'regulatory--no-buses--g2': icon727,\r\n 'regulatory--no-buses--g3': icon728,\r\n 'regulatory--no-caravan-trailers--g1': icon729,\r\n 'regulatory--no-caravans--g1': icon730,\r\n 'regulatory--no-caravans-or-caravan-trailers--g1': icon731,\r\n 'regulatory--no-cargo-loading--g1': icon732,\r\n 'regulatory--no-carts--g1': icon733,\r\n 'regulatory--no-carts--g2': icon734,\r\n 'regulatory--no-carts--g3': icon735,\r\n 'regulatory--no-carts-or-tractors--g1': icon736,\r\n 'regulatory--no-construction-vehicles--g1': icon737,\r\n 'regulatory--no-entry--g1': icon738,\r\n 'regulatory--no-equestrians--g1': icon739,\r\n 'regulatory--no-go-straight-or-turn-left--g1': icon740,\r\n 'regulatory--no-go-straight-or-turn-right--g1': icon741,\r\n 'regulatory--no-good-trailers--g2': icon742,\r\n 'regulatory--no-goods-vehicle-trailers--g1': icon743,\r\n 'regulatory--no-hand-carts--g1': icon744,\r\n 'regulatory--no-hand-carts--g2': icon745,\r\n 'regulatory--no-hand-carts-or-bicycles--g1': icon746,\r\n 'regulatory--no-hawkers--g1': icon747,\r\n 'regulatory--no-heavy-goods-vehicles--g1': icon748,\r\n 'regulatory--no-heavy-goods-vehicles--g2': icon749,\r\n 'regulatory--no-heavy-goods-vehicles--g3': icon750,\r\n 'regulatory--no-heavy-goods-vehicles--g4': icon751,\r\n 'regulatory--no-heavy-goods-vehicles--g5': icon752,\r\n 'regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1': icon753,\r\n 'regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2': icon754,\r\n 'regulatory--no-heavy-goods-vehicles-or-buses--g1': icon755,\r\n 'regulatory--no-heavy-goods-vehicles-or-tractors--g1': icon756,\r\n 'regulatory--no-heavy-goods-vehicles-or-trailers--g1': icon757,\r\n 'regulatory--no-horizontal-turn--g1': icon758,\r\n 'regulatory--no-horn--g1': icon759,\r\n 'regulatory--no-horn--g2': icon760,\r\n 'regulatory--no-lane-change-to-left--g1': icon761,\r\n 'regulatory--no-lane-change-to-right--g1': icon762,\r\n 'regulatory--no-learner-drivers--g1': icon763,\r\n 'regulatory--no-left-or-u-turn--g1': icon764,\r\n 'regulatory--no-left-turn--g1': icon765,\r\n 'regulatory--no-left-turn--g2': icon766,\r\n 'regulatory--no-left-turn--g3': icon767,\r\n 'regulatory--no-left-turn--g4': icon768,\r\n 'regulatory--no-left-turn--g5': icon769,\r\n 'regulatory--no-low-speed-vehicles--g1': icon770,\r\n 'regulatory--no-mopeds-or-bicycles--g1': icon771,\r\n 'regulatory--no-motor-vehicle-trailers--g1': icon772,\r\n 'regulatory--no-motor-vehicles--g1': icon773,\r\n 'regulatory--no-motor-vehicles--g3': icon774,\r\n 'regulatory--no-motor-vehicles--g4': icon775,\r\n 'regulatory--no-motor-vehicles--g5': icon776,\r\n 'regulatory--no-motor-vehicles--g6': icon777,\r\n 'regulatory--no-motor-vehicles--g7': icon778,\r\n 'regulatory--no-motor-vehicles-except-motorcycles--g1': icon779,\r\n 'regulatory--no-motor-vehicles-except-motorcycles--g2': icon780,\r\n 'regulatory--no-motor-vehicles-except-motorcycles--g3': icon781,\r\n 'regulatory--no-motor-vehicles-or-bicycles--g1': icon782,\r\n 'regulatory--no-motor-vehicles-or-buses--g1': icon783,\r\n 'regulatory--no-motor-vehicles-or-carts--g1': icon784,\r\n 'regulatory--no-motorcycles--g1': icon785,\r\n 'regulatory--no-motorcycles--g2': icon786,\r\n 'regulatory--no-overtaking--g1': icon787,\r\n 'regulatory--no-overtaking--g2': icon788,\r\n 'regulatory--no-overtaking--g4': icon789,\r\n 'regulatory--no-overtaking--g5': icon790,\r\n 'regulatory--no-overtaking--g6': icon791,\r\n 'regulatory--no-overtaking--g7': icon792,\r\n 'regulatory--no-overtaking-atvs--g1': icon793,\r\n 'regulatory--no-overtaking-by-heavy-goods-vehicles--g1': icon794,\r\n 'regulatory--no-parking--g1': icon795,\r\n 'regulatory--no-parking--g2': icon796,\r\n 'regulatory--no-parking--g3': icon797,\r\n 'regulatory--no-parking--g4': icon798,\r\n 'regulatory--no-parking--g5': icon799,\r\n 'regulatory--no-parking--g6': icon800,\r\n 'regulatory--no-parking--g7': icon801,\r\n 'regulatory--no-parking--g8': icon802,\r\n 'regulatory--no-parking--g9': icon803,\r\n 'regulatory--no-parking-bicycles-or-motorcycles--g1': icon804,\r\n 'regulatory--no-parking-bus-stop--g1': icon805,\r\n 'regulatory--no-parking-or-no-stopping--g1': icon806,\r\n 'regulatory--no-parking-or-no-stopping--g2': icon807,\r\n 'regulatory--no-parking-or-no-stopping--g3': icon808,\r\n 'regulatory--no-parking-or-no-stopping--g4': icon809,\r\n 'regulatory--no-parking-or-no-stopping--g5': icon810,\r\n 'regulatory--no-passenger-loading--g1': icon811,\r\n 'regulatory--no-pedestrians--g1': icon812,\r\n 'regulatory--no-pedestrians--g2': icon813,\r\n 'regulatory--no-pedestrians--g3': icon814,\r\n 'regulatory--no-pedestrians--g4': icon815,\r\n 'regulatory--no-pedestrians--g5': icon816,\r\n 'regulatory--no-pedestrians--g6': icon817,\r\n 'regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1': icon818,\r\n 'regulatory--no-pedestrians-or-bicycles--g1': icon819,\r\n 'regulatory--no-pedestrians-or-bicycles--g2': icon820,\r\n 'regulatory--no-pedestrians-or-bicycles--g3': icon821,\r\n 'regulatory--no-rickshaws--g1': icon822,\r\n 'regulatory--no-rickshaws--g2': icon823,\r\n 'regulatory--no-rickshaws--g3': icon824,\r\n 'regulatory--no-right-turn--g1': icon825,\r\n 'regulatory--no-right-turn--g2': icon826,\r\n 'regulatory--no-right-turn--g3': icon827,\r\n 'regulatory--no-right-turn-on-red--g1': icon828,\r\n 'regulatory--no-skiing--g1': icon829,\r\n 'regulatory--no-snowmobiles--g1': icon830,\r\n 'regulatory--no-snowmobiles--g2': icon831,\r\n 'regulatory--no-snowmobiles-or-atvs--g1': icon832,\r\n 'regulatory--no-stopping--g1': icon833,\r\n 'regulatory--no-stopping--g2': icon834,\r\n 'regulatory--no-stopping--g3': icon835,\r\n 'regulatory--no-stopping--g5': icon836,\r\n 'regulatory--no-stopping--g6': icon837,\r\n 'regulatory--no-stopping--g7': icon838,\r\n 'regulatory--no-stopping-on-pavement--g1': icon839,\r\n 'regulatory--no-straight-through--g1': icon840,\r\n 'regulatory--no-straight-through--g2': icon841,\r\n 'regulatory--no-studded-snow-chains--g1': icon842,\r\n 'regulatory--no-through-trucks--g1': icon843,\r\n 'regulatory--no-tour-buses--g1': icon844,\r\n 'regulatory--no-tractors--g1': icon845,\r\n 'regulatory--no-tractors-mopeds-or-bicycles--g1': icon846,\r\n 'regulatory--no-tractors-or-carts--g1': icon847,\r\n 'regulatory--no-trailers--g1': icon848,\r\n 'regulatory--no-tricycles--g1': icon849,\r\n 'regulatory--no-tricycles-or-hand-carts--g1': icon850,\r\n 'regulatory--no-turn-on-red--g1': icon851,\r\n 'regulatory--no-turn-on-red--g2': icon852,\r\n 'regulatory--no-turn-on-red--g3': icon853,\r\n 'regulatory--no-turns--g1': icon854,\r\n 'regulatory--no-turns--g2': icon855,\r\n 'regulatory--no-two-stage-right-turn-for-mopeds--g1': icon856,\r\n 'regulatory--no-u-turn--g1': icon857,\r\n 'regulatory--no-u-turn--g2': icon858,\r\n 'regulatory--no-u-turn--g3': icon859,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g1': icon860,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g2': icon861,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g3': icon862,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g4': icon863,\r\n 'regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1': icon864,\r\n 'regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2': icon865,\r\n 'regulatory--no-vehicles-carrying-explosives--g1': icon866,\r\n 'regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1': icon867,\r\n 'regulatory--one-way-left--g1': icon868,\r\n 'regulatory--one-way-left--g2': icon869,\r\n 'regulatory--one-way-left--g3': icon870,\r\n 'regulatory--one-way-right--g1': icon871,\r\n 'regulatory--one-way-right--g2': icon872,\r\n 'regulatory--one-way-right--g3': icon873,\r\n 'regulatory--one-way-straight--g1': icon874,\r\n 'regulatory--one-way-straight--g3': icon875,\r\n 'regulatory--parking-fee-station--g1': icon876,\r\n 'regulatory--parking-restrictions--g1': icon877,\r\n 'regulatory--parking-restrictions--g2': icon878,\r\n 'regulatory--parking-restrictions--g3': icon879,\r\n 'regulatory--pass-on-either-side--g1': icon880,\r\n 'regulatory--pass-on-either-side--g2': icon881,\r\n 'regulatory--pass-on-either-side--g3': icon882,\r\n 'regulatory--pass-with-care--g1': icon883,\r\n 'regulatory--passing-lane-ahead--g1': icon884,\r\n 'regulatory--pedestrians-bicycles-permitted--g1': icon885,\r\n 'regulatory--pedestrians-keep-left--g1': icon886,\r\n 'regulatory--pedestrians-only--g1': icon887,\r\n 'regulatory--pedestrians-only--g2': icon888,\r\n 'regulatory--pedestrians-only--g3': icon889,\r\n 'regulatory--pedestrians-priority-zone--g1': icon890,\r\n 'regulatory--pedestrians-push-button--g1': icon891,\r\n 'regulatory--pedestrians-push-button--g2': icon892,\r\n 'regulatory--priority-over-oncoming-vehicles--g1': icon893,\r\n 'regulatory--priority-over-oncoming-vehicles--g2': icon894,\r\n 'regulatory--priority-road--g1': icon895,\r\n 'regulatory--priority-road--g2': icon896,\r\n 'regulatory--radar-enforced--g1': icon897,\r\n 'regulatory--reserved-parking--g1': icon898,\r\n 'regulatory--reversible-lanes--g1': icon899,\r\n 'regulatory--reversible-lanes--g2': icon900,\r\n 'regulatory--road-closed--g1': icon901,\r\n 'regulatory--road-closed--g2': icon902,\r\n 'regulatory--road-closed-to-vehicles--g1': icon903,\r\n 'regulatory--road-closed-to-vehicles--g3': icon904,\r\n 'regulatory--roundabout--g1': icon905,\r\n 'regulatory--roundabout--g2': icon906,\r\n 'regulatory--roundabout--g3': icon907,\r\n 'regulatory--shared-path-bicycles-and-pedestrians--g1': icon908,\r\n 'regulatory--shared-path-pedestrians-and-bicycles--g1': icon909,\r\n 'regulatory--sidewalk-closed--g1': icon910,\r\n 'regulatory--slanted-parking--g1': icon911,\r\n 'regulatory--snow-chains--g1': icon912,\r\n 'regulatory--snow-chains--g2': icon913,\r\n 'regulatory--snow-chains--g3': icon914,\r\n 'regulatory--snowmobiles-only--g1': icon915,\r\n 'regulatory--snowmobiles-permitted--g1': icon916,\r\n 'regulatory--speed-limit-zone--g1': icon917,\r\n 'regulatory--speeding-fines-increased--g1': icon918,\r\n 'regulatory--state-route--g1': icon919,\r\n 'regulatory--stay-in-lane--g1': icon920,\r\n 'regulatory--stop--g1': icon921,\r\n 'regulatory--stop--g2': icon922,\r\n 'regulatory--stop--g3': icon923,\r\n 'regulatory--stop--g4': icon924,\r\n 'regulatory--stop--g5': icon925,\r\n 'regulatory--stop--g6': icon926,\r\n 'regulatory--stop--g7': icon927,\r\n 'regulatory--stop--g8': icon928,\r\n 'regulatory--stop--g9': icon929,\r\n 'regulatory--stop--g10': icon930,\r\n 'regulatory--stop-here-on-red-or-flashing-light--g1': icon931,\r\n 'regulatory--stop-here-on-red-or-flashing-light--g2': icon932,\r\n 'regulatory--stop-signals--g1': icon933,\r\n 'regulatory--stop-signals--g2': icon934,\r\n 'regulatory--tanks-only--g1': icon935,\r\n 'regulatory--taxi-only--g1': icon936,\r\n 'regulatory--text--g1': icon937,\r\n 'regulatory--text--g2': icon938,\r\n 'regulatory--toll-pass-only--g1': icon939,\r\n 'regulatory--tractors-only--g1': icon940,\r\n 'regulatory--traffic-signal-photo-enforced--g1': icon941,\r\n 'regulatory--trams-and-buses-only--g1': icon942,\r\n 'regulatory--trams-only--g1': icon943,\r\n 'regulatory--triple-lanes--g1': icon944,\r\n 'regulatory--triple-lanes-go-straight-center-lane--g1': icon945,\r\n 'regulatory--triple-lanes-turn-left-center-lane--g1': icon946,\r\n 'regulatory--triple-lanes-turn-right-center-lane--g1': icon947,\r\n 'regulatory--truck-route--g1': icon948,\r\n 'regulatory--truck-speed-limit-5--g1': icon949,\r\n 'regulatory--truck-speed-limit-10--g1': icon950,\r\n 'regulatory--truck-speed-limit-15--g1': icon951,\r\n 'regulatory--truck-speed-limit-20--g1': icon952,\r\n 'regulatory--truck-speed-limit-25--g1': icon953,\r\n 'regulatory--truck-speed-limit-30--g1': icon954,\r\n 'regulatory--truck-speed-limit-35--g1': icon955,\r\n 'regulatory--truck-speed-limit-40--g1': icon956,\r\n 'regulatory--truck-speed-limit-45--g1': icon957,\r\n 'regulatory--truck-speed-limit-50--g1': icon958,\r\n 'regulatory--truck-speed-limit-55--g1': icon959,\r\n 'regulatory--truck-speed-limit-60--g1': icon960,\r\n 'regulatory--truck-speed-limit-65--g1': icon961,\r\n 'regulatory--truck-speed-limit-70--g1': icon962,\r\n 'regulatory--truck-speed-limit-75--g1': icon963,\r\n 'regulatory--truck-speed-limit-80--g1': icon964,\r\n 'regulatory--truck-speed-limit-85--g1': icon965,\r\n 'regulatory--trucks-and-buses-only--g1': icon966,\r\n 'regulatory--trucks-on-right--g1': icon967,\r\n 'regulatory--trucks-only--g1': icon968,\r\n 'regulatory--turn-left--g1': icon969,\r\n 'regulatory--turn-left--g2': icon970,\r\n 'regulatory--turn-left--g3': icon971,\r\n 'regulatory--turn-left-ahead--g1': icon972,\r\n 'regulatory--turn-left-ahead--g2': icon973,\r\n 'regulatory--turn-left-or-right--g1': icon974,\r\n 'regulatory--turn-left-or-right--g2': icon975,\r\n 'regulatory--turn-left-or-right--g3': icon976,\r\n 'regulatory--turn-left-or-u-turn--g1': icon977,\r\n 'regulatory--turn-right--g1': icon978,\r\n 'regulatory--turn-right--g2': icon979,\r\n 'regulatory--turn-right--g3': icon980,\r\n 'regulatory--turn-right-ahead--g1': icon981,\r\n 'regulatory--turn-right-ahead--g2': icon982,\r\n 'regulatory--turning-vehicles-yield-to-pedestrians--g1': icon983,\r\n 'regulatory--two-stage-right-turn-for-mopeds--g1': icon984,\r\n 'regulatory--two-way--g1': icon985,\r\n 'regulatory--u-turn--g1': icon986,\r\n 'regulatory--u-turn--g2': icon987,\r\n 'regulatory--u-turn--g3': icon988,\r\n 'regulatory--use-crosswalk--g1': icon989,\r\n 'regulatory--vehicles-carrying-dangerous-goods-only--g1': icon990,\r\n 'regulatory--vehicles-carrying-dangerous-goods-permitted--g1': icon991,\r\n 'regulatory--vehicles-carrying-explosives-only--g1': icon992,\r\n 'regulatory--vehicles-carrying-hazardous-goods-permitted--g1': icon993,\r\n 'regulatory--vehicles-only--g1': icon994,\r\n 'regulatory--wear-seat-belt--g1': icon995,\r\n 'regulatory--wear-seat-belt--g2': icon996,\r\n 'regulatory--wear-seat-belt--g3': icon997,\r\n 'regulatory--weight-limit--g1': icon998,\r\n 'regulatory--weight-limit--g2': icon999,\r\n 'regulatory--weight-limit--g3': icon1000,\r\n 'regulatory--weight-limit--g4': icon1001,\r\n 'regulatory--weight-limit--g5': icon1002,\r\n 'regulatory--weight-limit--g6': icon1003,\r\n 'regulatory--weight-limit--g7': icon1004,\r\n 'regulatory--weight-limit-per-axle--g1': icon1005,\r\n 'regulatory--weight-limit-per-tandem-axle--g1': icon1006,\r\n 'regulatory--weight-limit-with-trucks--g1': icon1007,\r\n 'regulatory--width-limit--g1': icon1008,\r\n 'regulatory--wrong-way--g1': icon1009,\r\n 'regulatory--yield--g1': icon1010,\r\n 'regulatory--yield-or-stop-for-pedestrians--g1': icon1011,\r\n 'regulatory--your-speed--g1': icon1012,\r\n 'warning--accident-area--g1': icon1013,\r\n 'warning--accident-area--g2': icon1014,\r\n 'warning--accident-area--g3': icon1015,\r\n 'warning--accident-area--g4': icon1016,\r\n 'warning--accident-area--g5': icon1017,\r\n 'warning--accident-area--g6': icon1018,\r\n 'warning--accident-area--g7': icon1019,\r\n 'warning--accident-area--g8': icon1020,\r\n 'warning--added-lane-from-entering-roadway--g1': icon1021,\r\n 'warning--added-lane-from-entering-roadway--g2': icon1022,\r\n 'warning--added-lane-left--g1': icon1023,\r\n 'warning--added-lane-right--g1': icon1024,\r\n 'warning--animal-drawn-vehicles--g1': icon1025,\r\n 'warning--arch-bridge--g1': icon1026,\r\n 'warning--atv-and-snowmobiles--g1': icon1027,\r\n 'warning--atv-crossing--g1': icon1028,\r\n 'warning--atv-crossing--g2': icon1029,\r\n 'warning--axle-restriction--g1': icon1030,\r\n 'warning--bear-crossing--g1': icon1031,\r\n 'warning--bear-crossing--g2': icon1032,\r\n 'warning--bicycles-and-others--g1': icon1033,\r\n 'warning--bicycles-caution-on-rail-tracks--g1': icon1034,\r\n 'warning--bicycles-crossing--g1': icon1035,\r\n 'warning--bicycles-crossing--g2': icon1036,\r\n 'warning--bicycles-crossing--g3': icon1037,\r\n 'warning--bicycles-crossing--g4': icon1038,\r\n 'warning--bollard--g1': icon1039,\r\n 'warning--bridge--g1': icon1040,\r\n 'warning--bridge--g2': icon1041,\r\n 'warning--bus-stop-ahead--g1': icon1042,\r\n 'warning--bus-stop-ahead--g2': icon1043,\r\n 'warning--bus-stop-ahead--g3': icon1044,\r\n 'warning--camel-crossing--g1': icon1045,\r\n 'warning--camel-crossing--g2': icon1046,\r\n 'warning--camera--g1': icon1047,\r\n 'warning--camera--g2': icon1048,\r\n 'warning--carts--g1': icon1049,\r\n 'warning--carts--g2': icon1050,\r\n 'warning--checkpoint--g1': icon1051,\r\n 'warning--children--g1': icon1052,\r\n 'warning--children--g2': icon1053,\r\n 'warning--children--g3': icon1054,\r\n 'warning--children--g4': icon1055,\r\n 'warning--children--g6': icon1056,\r\n 'warning--cliff--g1': icon1057,\r\n 'warning--cliff--g2': icon1058,\r\n 'warning--closed-lane-in-triple-lanes--g1': icon1059,\r\n 'warning--closed-lane-in-triple-lanes--g2': icon1060,\r\n 'warning--construction-ahead--g1': icon1061,\r\n 'warning--crossroads--g1': icon1062,\r\n 'warning--crossroads--g2': icon1063,\r\n 'warning--crossroads--g3': icon1064,\r\n 'warning--crossroads--g4': icon1065,\r\n 'warning--crossroads--g5': icon1066,\r\n 'warning--crossroads--g6': icon1067,\r\n 'warning--crossroads-with-priority-to-the-right--g1': icon1068,\r\n 'warning--curve-left--g1': icon1069,\r\n 'warning--curve-left--g2': icon1070,\r\n 'warning--curve-left--g3': icon1071,\r\n 'warning--curve-left-with-junction--g1': icon1072,\r\n 'warning--curve-out-intersection-left--g1': icon1073,\r\n 'warning--curve-out-intersection-right--g1': icon1074,\r\n 'warning--curve-right--g1': icon1075,\r\n 'warning--curve-right--g2': icon1076,\r\n 'warning--curve-right--g3': icon1077,\r\n 'warning--curve-right-with-junction--g1': icon1078,\r\n 'warning--dangerous-crosswinds-left--g1': icon1079,\r\n 'warning--dangerous-crosswinds-left--g2': icon1080,\r\n 'warning--dangerous-crosswinds-left--g4': icon1081,\r\n 'warning--dangerous-crosswinds-right--g1': icon1082,\r\n 'warning--dangerous-crosswinds-right--g2': icon1083,\r\n 'warning--dangerous-crosswinds-right--g3': icon1084,\r\n 'warning--dangerous-crosswinds-right--g4': icon1085,\r\n 'warning--dead-end--g1': icon1086,\r\n 'warning--dead-end--g2': icon1087,\r\n 'warning--dead-end--g3': icon1088,\r\n 'warning--dead-end-go-left--g1': icon1089,\r\n 'warning--dead-end-go-right--g1': icon1090,\r\n 'warning--descent-or-climbing-lanes-in-triple-lanes--g1': icon1091,\r\n 'warning--detour-ahead--g1': icon1092,\r\n 'warning--detour-or-construction-ahead--g1': icon1093,\r\n 'warning--dip--g1': icon1094,\r\n 'warning--dip--g2': icon1095,\r\n 'warning--disabled-persons-crossing--g1': icon1096,\r\n 'warning--disabled-persons-crossing--g2': icon1097,\r\n 'warning--divided-highway--g1': icon1098,\r\n 'warning--divided-highway--g2': icon1099,\r\n 'warning--divided-highway--g3': icon1100,\r\n 'warning--divided-highway--g4': icon1101,\r\n 'warning--divided-highway--g5': icon1102,\r\n 'warning--divided-highway--g6': icon1103,\r\n 'warning--divided-highway--g7': icon1104,\r\n 'warning--divided-highway--g8': icon1105,\r\n 'warning--divided-highway--g9': icon1106,\r\n 'warning--divided-highway-ends--g1': icon1107,\r\n 'warning--divided-highway-ends--g2': icon1108,\r\n 'warning--divided-highway-ends--g3': icon1109,\r\n 'warning--divided-highway-ends--g4': icon1110,\r\n 'warning--divided-highway-on-left--g1': icon1111,\r\n 'warning--divided-highway-on-left--g2': icon1112,\r\n 'warning--divided-highway-on-right--g1': icon1113,\r\n 'warning--divided-highway-on-right--g2': icon1114,\r\n 'warning--divided-highway-to-left--g1': icon1115,\r\n 'warning--divided-highway-to-right--g1': icon1116,\r\n 'warning--domestic-animals--g1': icon1117,\r\n 'warning--domestic-animals--g2': icon1118,\r\n 'warning--domestic-animals--g3': icon1119,\r\n 'warning--domestic-animals--g4': icon1120,\r\n 'warning--domestic-animals--g5': icon1121,\r\n 'warning--domestic-animals--g6': icon1122,\r\n 'warning--domestic-animals--g7': icon1123,\r\n 'warning--domestic-animals--g8': icon1124,\r\n 'warning--double-curve-first-left--g1': icon1125,\r\n 'warning--double-curve-first-left--g2': icon1126,\r\n 'warning--double-curve-first-right--g1': icon1127,\r\n 'warning--double-curve-first-right--g2': icon1128,\r\n 'warning--double-descent--g1': icon1129,\r\n 'warning--double-reverse-curve-left--g1': icon1130,\r\n 'warning--double-reverse-curve-left--g2': icon1131,\r\n 'warning--double-reverse-curve-right--g1': icon1132,\r\n 'warning--double-reverse-curve-right--g2': icon1133,\r\n 'warning--double-side-roads-left--g1': icon1134,\r\n 'warning--double-side-roads-left--g3': icon1135,\r\n 'warning--double-side-roads-right--g1': icon1136,\r\n 'warning--double-side-roads-right--g3': icon1137,\r\n 'warning--double-turn-first-left--g1': icon1138,\r\n 'warning--double-turn-first-right--g1': icon1139,\r\n 'warning--dual-lanes-all-directions-on-left--g1': icon1140,\r\n 'warning--dual-lanes-all-directions-on-right--g1': icon1141,\r\n 'warning--dual-lanes-go-straight-or-turn-left--g1': icon1142,\r\n 'warning--dual-lanes-go-straight-or-turn-right--g1': icon1143,\r\n 'warning--dual-lanes-left-turn--g1': icon1144,\r\n 'warning--dual-lanes-left-turn-or-go-straight--g1': icon1145,\r\n 'warning--dual-lanes-right-turn--g1': icon1146,\r\n 'warning--dual-lanes-right-turn-or-go-straight--g1': icon1147,\r\n 'warning--dual-lanes-turn-left--g1': icon1148,\r\n 'warning--dual-lanes-turn-left-or-right--g1': icon1149,\r\n 'warning--dual-lanes-turn-left-or-right--g2': icon1150,\r\n 'warning--dual-lanes-turn-left-or-right--g3': icon1151,\r\n 'warning--dual-lanes-turn-left-or-right--g4': icon1152,\r\n 'warning--dual-lanes-turn-right--g1': icon1153,\r\n 'warning--dual-path-cyclists-and-pedestrians--g1': icon1154,\r\n 'warning--electricity--g1': icon1155,\r\n 'warning--electricity--g2': icon1156,\r\n 'warning--elephant-crossing--g1': icon1157,\r\n 'warning--emergency-vehicles--g1': icon1158,\r\n 'warning--emu-crossing--g1': icon1159,\r\n 'warning--emu-crossing--g2': icon1160,\r\n 'warning--entering-roadway-merge--g1': icon1161,\r\n 'warning--entering-roadway-merge--g2': icon1162,\r\n 'warning--equestrians-crossing--g1': icon1163,\r\n 'warning--equestrians-crossing--g2': icon1164,\r\n 'warning--expressway--g1': icon1165,\r\n 'warning--falling-rocks-or-debris-left--g1': icon1166,\r\n 'warning--falling-rocks-or-debris-left--g2': icon1167,\r\n 'warning--falling-rocks-or-debris-left--g3': icon1168,\r\n 'warning--falling-rocks-or-debris-left--g4': icon1169,\r\n 'warning--falling-rocks-or-debris-right--g1': icon1170,\r\n 'warning--falling-rocks-or-debris-right--g2': icon1171,\r\n 'warning--falling-rocks-or-debris-right--g3': icon1172,\r\n 'warning--falling-rocks-or-debris-right--g4': icon1173,\r\n 'warning--ferry--g1': icon1174,\r\n 'warning--flaggers-in-road--g1': icon1175,\r\n 'warning--flaggers-in-road--g2': icon1176,\r\n 'warning--foggy-road--g1': icon1177,\r\n 'warning--foggy-road--g2': icon1178,\r\n 'warning--ford--g1': icon1179,\r\n 'warning--forest--g1': icon1180,\r\n 'warning--fresh-oil--g1': icon1181,\r\n 'warning--frog-crossing--g1': icon1182,\r\n 'warning--gate--g1': icon1183,\r\n 'warning--gate--g2': icon1184,\r\n 'warning--gate-left--g1': icon1185,\r\n 'warning--gate-right--g1': icon1186,\r\n 'warning--go-left--g1': icon1187,\r\n 'warning--go-right--g1': icon1188,\r\n 'warning--golf-carts-crossing--g1': icon1189,\r\n 'warning--gravel-road-surface--g1': icon1190,\r\n 'warning--hairpin-curve-left--g1': icon1191,\r\n 'warning--hairpin-curve-left--g2': icon1192,\r\n 'warning--hairpin-curve-left--g3': icon1193,\r\n 'warning--hairpin-curve-right--g1': icon1194,\r\n 'warning--hairpin-curve-right--g3': icon1195,\r\n 'warning--height-restriction--g2': icon1196,\r\n 'warning--height-restriction--g3': icon1197,\r\n 'warning--height-restriction--g4': icon1198,\r\n 'warning--height-restriction--g5': icon1199,\r\n 'warning--horizontal-alignment-left--g1': icon1200,\r\n 'warning--horizontal-alignment-left--g3': icon1201,\r\n 'warning--horizontal-alignment-right--g1': icon1202,\r\n 'warning--horizontal-alignment-right--g3': icon1203,\r\n 'warning--horse-crossing--g1': icon1204,\r\n 'warning--icy-road--g1': icon1205,\r\n 'warning--junction-with-a-side-road-acute-left--g1': icon1206,\r\n 'warning--junction-with-a-side-road-acute-left--g2': icon1207,\r\n 'warning--junction-with-a-side-road-acute-right--g1': icon1208,\r\n 'warning--junction-with-a-side-road-acute-right--g2': icon1209,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g1': icon1210,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g2': icon1211,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g3': icon1212,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g4': icon1213,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g1': icon1214,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g2': icon1215,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g3': icon1216,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g4': icon1217,\r\n 'warning--junction-with-merge-from-left--g1': icon1218,\r\n 'warning--junction-with-merge-from-right--g1': icon1219,\r\n 'warning--junction-with-side-roads--g1': icon1220,\r\n 'warning--kangaloo-crossing--g1': icon1221,\r\n 'warning--keep-distance--g1': icon1222,\r\n 'warning--keep-left--g1': icon1223,\r\n 'warning--keep-right--g1': icon1224,\r\n 'warning--kiwi-crossing--g1': icon1225,\r\n 'warning--kiwi-crossing--g2': icon1226,\r\n 'warning--koala-crossing--g1': icon1227,\r\n 'warning--koala-crossing--g2': icon1228,\r\n 'warning--koala-crossing--g3': icon1229,\r\n 'warning--koala-crossing--g4': icon1230,\r\n 'warning--lane-closed-in-dual-lanes-left--g1': icon1231,\r\n 'warning--lane-closed-in-dual-lanes-left--g2': icon1232,\r\n 'warning--lane-closed-in-dual-lanes-right--g1': icon1233,\r\n 'warning--lane-closed-in-dual-lanes-right--g2': icon1234,\r\n 'warning--length-restriction--g1': icon1235,\r\n 'warning--length-restriction--g2': icon1236,\r\n 'warning--light-rail-transit-vehicles--g1': icon1237,\r\n 'warning--limited-lighting-under-trees--g1': icon1238,\r\n 'warning--logging-vehicles--g1': icon1239,\r\n 'warning--loop-270-degree--g1': icon1240,\r\n 'warning--loop-pretzel--g1': icon1241,\r\n 'warning--loose-road-surface--g1': icon1242,\r\n 'warning--loose-road-surface--g2': icon1243,\r\n 'warning--loose-road-surface--g3': icon1244,\r\n 'warning--loose-road-surface--g4': icon1245,\r\n 'warning--low-flying-aircraft--g1': icon1246,\r\n 'warning--low-flying-aircraft--g2': icon1247,\r\n 'warning--low-flying-aircraft--g3': icon1248,\r\n 'warning--low-flying-aircraft--g4': icon1249,\r\n 'warning--low-flying-aircraft--g5': icon1250,\r\n 'warning--low-flying-aircraft--g6': icon1251,\r\n 'warning--low-flying-aircraft--g7': icon1252,\r\n 'warning--low-flying-aircraft--g8': icon1253,\r\n 'warning--low-ground-clearance--g1': icon1254,\r\n 'warning--low-ground-clearance--g2': icon1255,\r\n 'warning--low-ground-clearance--g3': icon1256,\r\n 'warning--monkey-crossing--g1': icon1257,\r\n 'warning--motorcycles-crossing--g1': icon1258,\r\n 'warning--narrow-bridge--g1': icon1259,\r\n 'warning--narrow-bridge--g2': icon1260,\r\n 'warning--narrow-bridge--g3': icon1261,\r\n 'warning--no-passing-zone--g1': icon1262,\r\n 'warning--no-passing-zone--g2': icon1263,\r\n 'warning--occupied-lanes--g1': icon1264,\r\n 'warning--offset-roads--g1': icon1265,\r\n 'warning--offset-roads--g2': icon1266,\r\n 'warning--offset-roads--g3': icon1267,\r\n 'warning--offset-roads--g4': icon1268,\r\n 'warning--opening-or-swing-bridge--g1': icon1269,\r\n 'warning--opening-or-swing-bridge--g2': icon1270,\r\n 'warning--other-danger--g1': icon1271,\r\n 'warning--other-danger--g2': icon1272,\r\n 'warning--other-danger--g3': icon1273,\r\n 'warning--panda-crossing--g1': icon1274,\r\n 'warning--pass-left-or-right--g1': icon1275,\r\n 'warning--pass-left-or-right--g2': icon1276,\r\n 'warning--pass-left-or-right--g3': icon1277,\r\n 'warning--pavement-ahead--g1': icon1278,\r\n 'warning--pavement-ends--g1': icon1279,\r\n 'warning--pavement-ends--g2': icon1280,\r\n 'warning--pavement-ends--g3': icon1281,\r\n 'warning--pavement-ends--g4': icon1282,\r\n 'warning--pavement-ends--g5': icon1283,\r\n 'warning--pedestrians-crossing--g1': icon1284,\r\n 'warning--pedestrians-crossing--g4': icon1285,\r\n 'warning--pedestrians-crossing--g5': icon1286,\r\n 'warning--pedestrians-crossing--g6': icon1287,\r\n 'warning--pedestrians-crossing--g7': icon1288,\r\n 'warning--pedestrians-crossing--g8': icon1289,\r\n 'warning--pedestrians-crossing--g9': icon1290,\r\n 'warning--pedestrians-crossing--g10': icon1291,\r\n 'warning--pedestrians-crossing--g11': icon1292,\r\n 'warning--pedestrians-crossing--g12': icon1293,\r\n 'warning--playground--g1': icon1294,\r\n 'warning--playground--g3': icon1295,\r\n 'warning--polar-bear-crossing--g1': icon1296,\r\n 'warning--quay-or-river-bank--g1': icon1297,\r\n 'warning--quay-or-river-bank--g2': icon1298,\r\n 'warning--quay-or-river-bank--g3': icon1299,\r\n 'warning--quay-or-river-bank--g4': icon1300,\r\n 'warning--rabbit-crossing--g1': icon1301,\r\n 'warning--raccoon-crossing--g1': icon1302,\r\n 'warning--railroad-crossing--g1': icon1303,\r\n 'warning--railroad-crossing--g2': icon1304,\r\n 'warning--railroad-crossing--g3': icon1305,\r\n 'warning--railroad-crossing--g4': icon1306,\r\n 'warning--railroad-crossing-with-barriers--g1': icon1307,\r\n 'warning--railroad-crossing-with-barriers--g2': icon1308,\r\n 'warning--railroad-crossing-with-barriers--g3': icon1309,\r\n 'warning--railroad-crossing-with-barriers--g4': icon1310,\r\n 'warning--railroad-crossing-with-barriers--g5': icon1311,\r\n 'warning--railroad-crossing-with-barriers--g6': icon1312,\r\n 'warning--railroad-crossing-with-barriers--g7': icon1313,\r\n 'warning--railroad-crossing-without-barriers--g1': icon1314,\r\n 'warning--railroad-crossing-without-barriers--g2': icon1315,\r\n 'warning--railroad-crossing-without-barriers--g3': icon1316,\r\n 'warning--railroad-crossing-without-barriers--g4': icon1317,\r\n 'warning--railroad-crossing-without-barriers--g5': icon1318,\r\n 'warning--railroad-crossing-without-barriers--g6': icon1319,\r\n 'warning--railroad-intersection--g1': icon1320,\r\n 'warning--railroad-intersection--g2': icon1321,\r\n 'warning--railroad-intersection--g3': icon1322,\r\n 'warning--railroad-intersection--g4': icon1323,\r\n 'warning--railroad-intersection--g5': icon1324,\r\n 'warning--railroad-intersection--g6': icon1325,\r\n 'warning--railroad-intersection--g7': icon1326,\r\n 'warning--railroad-intersection--g8': icon1327,\r\n 'warning--railroad-intersection--g9': icon1328,\r\n 'warning--ramp-closed--g1': icon1329,\r\n 'warning--reduced-maximum-speed-limit--g1': icon1330,\r\n 'warning--reserved-lane--g1': icon1331,\r\n 'warning--restricted-zone--g1': icon1332,\r\n 'warning--reversible-lanes--g1': icon1333,\r\n 'warning--reversible-lanes--g2': icon1334,\r\n 'warning--rickshaws-crossing--g1': icon1335,\r\n 'warning--road-blocks--g1': icon1336,\r\n 'warning--road-bump--g1': icon1337,\r\n 'warning--road-bump--g2': icon1338,\r\n 'warning--road-bump--g3': icon1339,\r\n 'warning--road-bump-with-speed-limit--g1': icon1340,\r\n 'warning--road-closed--g3': icon1341,\r\n 'warning--road-narrows--g1': icon1342,\r\n 'warning--road-narrows--g2': icon1343,\r\n 'warning--road-narrows-left--g1': icon1344,\r\n 'warning--road-narrows-left--g2': icon1345,\r\n 'warning--road-narrows-left-ahead--g1': icon1346,\r\n 'warning--road-narrows-right--g1': icon1347,\r\n 'warning--road-narrows-right--g2': icon1348,\r\n 'warning--road-narrows-right-ahead--g1': icon1349,\r\n 'warning--road-toll-ahead--g1': icon1350,\r\n 'warning--road-widens--g1': icon1351,\r\n 'warning--road-widens-left--g1': icon1352,\r\n 'warning--road-widens-right--g1': icon1353,\r\n 'warning--roadworks--g1': icon1354,\r\n 'warning--roadworks--g2': icon1355,\r\n 'warning--roadworks--g3': icon1356,\r\n 'warning--roadworks--g5': icon1357,\r\n 'warning--roadworks--g6': icon1358,\r\n 'warning--roadworks--g8': icon1359,\r\n 'warning--roadworks--g9': icon1360,\r\n 'warning--roadworks--g10': icon1361,\r\n 'warning--roadworks--g11': icon1362,\r\n 'warning--roadworks-go-left-or-straight--g1': icon1363,\r\n 'warning--roadworks-go-right-or-straight--g1': icon1364,\r\n 'warning--roundabout--g1': icon1365,\r\n 'warning--roundabout--g2': icon1366,\r\n 'warning--roundabout--g3': icon1367,\r\n 'warning--roundabout--g4': icon1368,\r\n 'warning--roundabout--g5': icon1369,\r\n 'warning--roundabout--g6': icon1370,\r\n 'warning--roundabout--g7': icon1371,\r\n 'warning--ruts--g1': icon1372,\r\n 'warning--sand--g1': icon1373,\r\n 'warning--sand-drift--g1': icon1374,\r\n 'warning--school-zone--g2': icon1375,\r\n 'warning--severe-weather--g1': icon1376,\r\n 'warning--shared-lane-motorcycles-bicycles--g1': icon1377,\r\n 'warning--sharp-turn--g1': icon1378,\r\n 'warning--single-reverse-curve--g1': icon1379,\r\n 'warning--skewed-t-roads-left--g1': icon1380,\r\n 'warning--skewed-t-roads-left--g2': icon1381,\r\n 'warning--skewed-t-roads-left--g3': icon1382,\r\n 'warning--skewed-t-roads-right--g1': icon1383,\r\n 'warning--skewed-t-roads-right--g2': icon1384,\r\n 'warning--skewed-t-roads-right--g3': icon1385,\r\n 'warning--skiers--g1': icon1386,\r\n 'warning--skiers--g2': icon1387,\r\n 'warning--skiers--g3': icon1388,\r\n 'warning--slippery-bicycles--g1': icon1389,\r\n 'warning--slippery-motorcycles--g1': icon1390,\r\n 'warning--slippery-motorcycles--g2': icon1391,\r\n 'warning--slippery-road-surface--g1': icon1392,\r\n 'warning--slippery-road-surface--g2': icon1393,\r\n 'warning--slow--g1': icon1394,\r\n 'warning--snow-tractors--g1': icon1395,\r\n 'warning--snowmobiles--g1': icon1396,\r\n 'warning--snowmobiles--g2': icon1397,\r\n 'warning--snowmobiles--g3': icon1398,\r\n 'warning--snowmobiles-and-others--g1': icon1399,\r\n 'warning--soft-road-surface--g1': icon1400,\r\n 'warning--soft-road-surface--g2': icon1401,\r\n 'warning--soft-shoulder--g1': icon1402,\r\n 'warning--soft-shoulder--g2': icon1403,\r\n 'warning--soft-shoulder--g3': icon1404,\r\n 'warning--soft-shoulder--g4': icon1405,\r\n 'warning--speed-camera--g1': icon1406,\r\n 'warning--steep-ascent--g1': icon1407,\r\n 'warning--steep-ascent--g2': icon1408,\r\n 'warning--steep-ascent--g3': icon1409,\r\n 'warning--steep-ascent--g4': icon1410,\r\n 'warning--steep-ascent-and-descent--g1': icon1411,\r\n 'warning--steep-descent--g1': icon1412,\r\n 'warning--steep-descent--g2': icon1413,\r\n 'warning--steep-descent--g3': icon1414,\r\n 'warning--steep-descent--g4': icon1415,\r\n 'warning--steep-descent--g5': icon1416,\r\n 'warning--steep-descent--g6': icon1417,\r\n 'warning--stop-ahead--g1': icon1418,\r\n 'warning--stop-ahead--g3': icon1419,\r\n 'warning--stop-ahead--g4': icon1420,\r\n 'warning--stop-ahead--g5': icon1421,\r\n 'warning--stop-ahead--g6': icon1422,\r\n 'warning--t-roads--g1': icon1423,\r\n 'warning--t-roads--g2': icon1424,\r\n 'warning--tanks-crossing--g1': icon1425,\r\n 'warning--tanks-crossing--g2': icon1426,\r\n 'warning--texts--g1': icon1427,\r\n 'warning--texts--g2': icon1428,\r\n 'warning--texts--g3': icon1429,\r\n 'warning--towing--g1': icon1430,\r\n 'warning--tractors--g1': icon1431,\r\n 'warning--tractors--g2': icon1432,\r\n 'warning--tractors--g3': icon1433,\r\n 'warning--tractors--g4': icon1434,\r\n 'warning--tractors--g5': icon1435,\r\n 'warning--tractors--g6': icon1436,\r\n 'warning--tractors--g7': icon1437,\r\n 'warning--traffic-merges-at-signalized-intersections--g1': icon1438,\r\n 'warning--traffic-merges-left--g1': icon1439,\r\n 'warning--traffic-merges-left--g2': icon1440,\r\n 'warning--traffic-merges-left--g3': icon1441,\r\n 'warning--traffic-merges-left--g4': icon1442,\r\n 'warning--traffic-merges-left-and-right--g1': icon1443,\r\n 'warning--traffic-merges-left-buses--g1': icon1444,\r\n 'warning--traffic-merges-right--g1': icon1445,\r\n 'warning--traffic-merges-right--g2': icon1446,\r\n 'warning--traffic-merges-right--g3': icon1447,\r\n 'warning--traffic-merges-right-buses--g1': icon1448,\r\n 'warning--traffic-queues-likely--g1': icon1449,\r\n 'warning--traffic-queues-likely--g2': icon1450,\r\n 'warning--traffic-queues-likely--g3': icon1451,\r\n 'warning--traffic-queues-likely--g4': icon1452,\r\n 'warning--traffic-queues-likely--g5': icon1453,\r\n 'warning--traffic-signals--g1': icon1454,\r\n 'warning--traffic-signals--g2': icon1455,\r\n 'warning--traffic-signals--g3': icon1456,\r\n 'warning--traffic-signals--g4': icon1457,\r\n 'warning--traffic-signals--g5': icon1458,\r\n 'warning--traffic-signals--g6': icon1459,\r\n 'warning--traffic-slow--g1': icon1460,\r\n 'warning--trail-crossing--g1': icon1461,\r\n 'warning--trail-crossing--g2': icon1462,\r\n 'warning--trail-crossing--g3': icon1463,\r\n 'warning--trail-crossing--g4': icon1464,\r\n 'warning--trail-crossing--g5': icon1465,\r\n 'warning--trail-crossing--g6': icon1466,\r\n 'warning--trams-crossing--g1': icon1467,\r\n 'warning--trams-crossing--g2': icon1468,\r\n 'warning--triple-curve-left--g1': icon1469,\r\n 'warning--triple-curve-right--g1': icon1470,\r\n 'warning--triple-lanes-left-turn--g1': icon1471,\r\n 'warning--triple-lanes-left-turn-or-go-straight--g1': icon1472,\r\n 'warning--triple-lanes-right-turn--g1': icon1473,\r\n 'warning--triple-lanes-right-turn-or-go-straight--g1': icon1474,\r\n 'warning--triple-lanes-with-directions--g1': icon1475,\r\n 'warning--triple-reverse-curve-left--g1': icon1476,\r\n 'warning--triple-reverse-curve-right--g1': icon1477,\r\n 'warning--trucks-crossing--g1': icon1478,\r\n 'warning--trucks-crossing--g2': icon1479,\r\n 'warning--trucks-rollover--g1': icon1480,\r\n 'warning--trucks-rollover--g2': icon1481,\r\n 'warning--trucks-rollover--g3': icon1482,\r\n 'warning--trucks-rollover--g4': icon1483,\r\n 'warning--trucks-rollover--g5': icon1484,\r\n 'warning--tunnel--g1': icon1485,\r\n 'warning--tunnel--g2': icon1486,\r\n 'warning--tunnel--g3': icon1487,\r\n 'warning--tunnel--g4': icon1488,\r\n 'warning--tunnel--g5': icon1489,\r\n 'warning--tunnel--g6': icon1490,\r\n 'warning--tunnel--g7': icon1491,\r\n 'warning--turn-left--g1': icon1492,\r\n 'warning--turn-left--g2': icon1493,\r\n 'warning--turn-left--g3': icon1494,\r\n 'warning--turn-left-or-right--g1': icon1495,\r\n 'warning--turn-right--g1': icon1496,\r\n 'warning--turn-right--g2': icon1497,\r\n 'warning--turn-right--g3': icon1498,\r\n 'warning--two-way-traffic--g1': icon1499,\r\n 'warning--two-way-traffic--g2': icon1500,\r\n 'warning--two-way-traffic--g3': icon1501,\r\n 'warning--two-way-traffic--g4': icon1502,\r\n 'warning--two-way-traffic--g5': icon1503,\r\n 'warning--two-way-traffic--g6': icon1504,\r\n 'warning--u-turn--g1': icon1505,\r\n 'warning--u-turn--g2': icon1506,\r\n 'warning--uneven-road--g1': icon1507,\r\n 'warning--uneven-road--g2': icon1508,\r\n 'warning--uneven-roads-ahead--g1': icon1509,\r\n 'warning--vehicles-and-others--g1': icon1510,\r\n 'warning--vehicles-crossing--g1': icon1511,\r\n 'warning--village--g1': icon1512,\r\n 'warning--weight-limit--g5': icon1513,\r\n 'warning--weight-limit-per-tandem-axle--g1': icon1514,\r\n 'warning--width-restriction--g1': icon1515,\r\n 'warning--width-restriction--g2': icon1516,\r\n 'warning--width-restriction--g3': icon1517,\r\n 'warning--width-restriction--g4': icon1518,\r\n 'warning--wild-animals--g1': icon1519,\r\n 'warning--wild-animals--g2': icon1520,\r\n 'warning--wild-animals--g3': icon1521,\r\n 'warning--wild-animals--g4': icon1522,\r\n 'warning--wild-animals--g5': icon1523,\r\n 'warning--wild-animals--g6': icon1524,\r\n 'warning--wild-animals--g7': icon1525,\r\n 'warning--wild-animals--g8': icon1526,\r\n 'warning--wind--g1': icon1527,\r\n 'warning--winding-road--g1': icon1528,\r\n 'warning--winding-road-first-left--g1': icon1529,\r\n 'warning--winding-road-first-left--g2': icon1530,\r\n 'warning--winding-road-first-left--g3': icon1531,\r\n 'warning--winding-road-first-right--g1': icon1532,\r\n 'warning--winding-road-first-right--g2': icon1533,\r\n 'warning--winding-road-first-right--g3': icon1534,\r\n 'warning--winding-road-first-right--g4': icon1535,\r\n 'warning--winding-road-to-left--g1': icon1536,\r\n 'warning--winding-road-to-right--g1': icon1537,\r\n 'warning--wombat-crossing--g1': icon1538,\r\n 'warning--y-roads--g1': icon1539,\r\n 'warning--y-roads--g2': icon1540,\r\n 'warning--yield-ahead--g1': icon1541,\r\n 'warning--yield-ahead--g3': icon1542,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/warning--road-narrows--g2.401c3994.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-left--g1.95c7edf0.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-left--g2.44b45332.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-left-ahead--g1.fd5aa709.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-right--g1.65ee547e.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-right--g2.87bc2427.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-right-ahead--g1.400397d6.png\";","export default __webpack_public_path__ + \"static/media/warning--road-toll-ahead--g1.6d55961a.png\";","export default __webpack_public_path__ + \"static/media/warning--road-widens--g1.c796ef79.png\";","export default __webpack_public_path__ + \"static/media/warning--road-widens-left--g1.ad78bfd0.png\";","export default __webpack_public_path__ + \"static/media/warning--road-widens-right--g1.0c6d1992.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g1.547c259b.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g2.1be718e9.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g3.2add7320.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g5.e61ab484.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g6.a04ce9d6.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g8.eb9766c2.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g9.f504fc37.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g10.1e4a14ca.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g11.65f561a7.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks-go-left-or-straight--g1.2206c5f2.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks-go-right-or-straight--g1.f4293c9a.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g1.363f83bb.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g2.c8ee3ec5.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g3.596a7a10.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g4.2102530e.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g5.ac2266ff.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g6.73900945.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g7.5c72c830.png\";","export default __webpack_public_path__ + \"static/media/warning--ruts--g1.01bce4e7.png\";","export default __webpack_public_path__ + \"static/media/warning--sand--g1.93715f38.png\";","export default __webpack_public_path__ + \"static/media/warning--sand-drift--g1.aaccd3fd.png\";","export default __webpack_public_path__ + \"static/media/warning--school-zone--g2.3c1c4bdf.png\";","export default __webpack_public_path__ + \"static/media/warning--severe-weather--g1.84f2d524.png\";","export default __webpack_public_path__ + \"static/media/warning--shared-lane-motorcycles-bicycles--g1.969c6687.png\";","export default __webpack_public_path__ + \"static/media/warning--sharp-turn--g1.9911721d.png\";","export default __webpack_public_path__ + \"static/media/warning--single-reverse-curve--g1.8219bd1a.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-left--g1.b3a5ef81.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-left--g2.57907e78.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-left--g3.8810e2d3.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-right--g1.48a80ba7.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-right--g2.733f022e.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-right--g3.544ec832.png\";","export default __webpack_public_path__ + \"static/media/warning--skiers--g1.e4cb5a02.png\";","export default __webpack_public_path__ + \"static/media/warning--skiers--g2.e0e46119.png\";","export default __webpack_public_path__ + \"static/media/warning--skiers--g3.7c53d442.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-bicycles--g1.44fe2519.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-motorcycles--g1.55df543d.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-motorcycles--g2.d5a4c642.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-road-surface--g1.be37c309.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-road-surface--g2.cc75b2dd.png\";","export default __webpack_public_path__ + \"static/media/warning--slow--g1.5f3c1df0.png\";","export default __webpack_public_path__ + \"static/media/warning--snow-tractors--g1.bb82eff0.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles--g1.d6ea0469.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles--g2.0f139051.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles--g3.7abe7cc6.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles-and-others--g1.8d956ed3.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-road-surface--g1.85e53a3f.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-road-surface--g2.31a8fbb4.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g1.048f3f53.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g2.f70869d1.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g3.993109d1.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g4.6b309255.png\";","export default __webpack_public_path__ + \"static/media/warning--speed-camera--g1.c247454b.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g1.69baab13.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g2.f04136e9.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g3.ac4d27d9.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g4.ab1d5bee.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent-and-descent--g1.127e8fa0.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g1.1af3c7de.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g2.84c43533.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g3.dbc8ed30.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g4.fe8bc6de.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g5.53695588.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g6.124238e6.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g1.19311854.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g3.f1875ba8.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g4.5c3b7c40.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g5.9f5a1393.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g6.78751205.png\";","export default __webpack_public_path__ + \"static/media/warning--t-roads--g1.02138011.png\";","export default __webpack_public_path__ + \"static/media/warning--t-roads--g2.056984e6.png\";","export default __webpack_public_path__ + \"static/media/warning--tanks-crossing--g1.ff076d31.png\";","export default __webpack_public_path__ + \"static/media/warning--tanks-crossing--g2.7f43e52c.png\";","export default __webpack_public_path__ + \"static/media/warning--texts--g1.f8515b5d.png\";","export default __webpack_public_path__ + \"static/media/warning--texts--g2.d6d56c78.png\";","export default __webpack_public_path__ + \"static/media/warning--texts--g3.14da2898.png\";","export default __webpack_public_path__ + \"static/media/warning--towing--g1.e4f069b4.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g1.6ebffbec.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g2.12c05fcc.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g3.bc827995.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g4.ca6b9ca8.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g5.c35fe753.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g6.80093d62.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g7.c9d9396b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-at-signalized-intersections--g1.15593cdb.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g1.ad031968.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g2.35d525d5.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g3.aa5ed805.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g4.b2ac0c8b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left-and-right--g1.b5ae91c4.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left-buses--g1.bafa36cd.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right--g1.09a3ead4.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right--g2.3201b3fd.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right--g3.c7ea5315.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right-buses--g1.dd325625.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g1.2c06f6f5.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g2.67e4ca2f.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g3.85ad3584.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g4.341dcd8c.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g5.67bac08b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g1.0847859b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g2.da23a41a.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g3.675ee0a1.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g4.9b34ae82.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g5.3b152c9a.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g6.89426955.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-slow--g1.169e23bf.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g1.e429d378.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g2.8a7ddab9.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g3.67219fd7.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g4.07b92d0e.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g5.10b83374.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g6.5ae959ad.png\";","export default __webpack_public_path__ + \"static/media/warning--trams-crossing--g1.c211e5c2.png\";","export default __webpack_public_path__ + \"static/media/warning--trams-crossing--g2.10027951.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-curve-left--g1.2b1378be.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-curve-right--g1.2d533c31.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-left-turn--g1.8bf1c712.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-left-turn-or-go-straight--g1.f5c35777.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-right-turn--g1.c58a09f1.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-right-turn-or-go-straight--g1.4eea8ba7.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-with-directions--g1.586f9802.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-reverse-curve-left--g1.4cbc4d04.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-reverse-curve-right--g1.0a1464ca.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-crossing--g1.14771128.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-crossing--g2.8ba4f009.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g1.9615c47b.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g2.a08fc624.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g3.c0f762d7.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g4.b6d137b4.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g5.44727700.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g1.e271c799.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g2.1ac74efb.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g3.0d46880c.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g4.55d1ddf2.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g5.598ceb68.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g6.db4d3d0f.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g7.cdca6a34.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left--g1.1d607064.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left--g2.2a658ee0.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left--g3.f55b92bb.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left-or-right--g1.386986eb.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-right--g1.acd9d2dc.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-right--g2.71999a1f.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-right--g3.df561544.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g1.f6b90cf6.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g2.d18e37c9.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g3.04d6746c.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g4.57cdc063.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g5.1d4d5701.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g6.444c4349.png\";","export default __webpack_public_path__ + \"static/media/warning--u-turn--g1.c962ec41.png\";","export default __webpack_public_path__ + \"static/media/warning--u-turn--g2.997231ed.png\";","export default __webpack_public_path__ + \"static/media/warning--uneven-road--g1.7ee9ceaa.png\";","export default __webpack_public_path__ + \"static/media/warning--uneven-road--g2.2107fedc.png\";","export default __webpack_public_path__ + \"static/media/warning--uneven-roads-ahead--g1.4444a9a8.png\";","export default __webpack_public_path__ + \"static/media/warning--vehicles-and-others--g1.5639870f.png\";","export default __webpack_public_path__ + \"static/media/warning--vehicles-crossing--g1.9f54b48e.png\";","export default __webpack_public_path__ + \"static/media/warning--village--g1.186803fe.png\";","export default __webpack_public_path__ + \"static/media/warning--weight-limit--g5.07efdfea.png\";","export default __webpack_public_path__ + \"static/media/warning--weight-limit-per-tandem-axle--g1.bce254f9.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g1.4ce617a5.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g2.3c708099.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g3.8a82e40c.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g4.88608eb2.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g1.c0f70fcd.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g2.76bbe024.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g3.ed95b4b7.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g4.85a2983f.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g5.5e9cdace.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g6.cdc986a1.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g7.e116de1f.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g8.c9822743.png\";","export default __webpack_public_path__ + \"static/media/warning--wind--g1.cbfbcd99.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road--g1.f80521c5.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-left--g1.ece0736d.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-left--g2.3b2df358.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-left--g3.6e45aecc.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g1.39cf401f.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g2.53376994.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g3.2a1fde3f.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g4.0c7093c2.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-to-left--g1.896aa6f8.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-to-right--g1.6a71c0d8.png\";","export default __webpack_public_path__ + \"static/media/warning--wombat-crossing--g1.633523a4.png\";","export default __webpack_public_path__ + \"static/media/warning--y-roads--g1.1dc031ba.png\";","export default __webpack_public_path__ + \"static/media/warning--y-roads--g2.8994d575.png\";","export default __webpack_public_path__ + \"static/media/warning--yield-ahead--g1.798e142c.png\";","export default __webpack_public_path__ + \"static/media/warning--yield-ahead--g3.1cad1ee2.png\";","import icon0 from './beginn schiessuebungsraum.png';\r\nimport icon1 from './beginn schiessuebungsstrecke.png';\r\nimport icon2 from './doppelrhombus.png';\r\nimport icon3 from './doppelwinkel.png';\r\nimport icon4 from './ende schiessuebungsraum.png';\r\nimport icon5 from './ende schiessuebungsstrecke.png';\r\nimport icon6 from './rhombus.png';\r\nimport icon7 from './stellung feuerhalt.png';\r\nimport icon8 from './winkel.png';\r\n\r\nconst textures = {\r\n 'beginn schiessuebungsraum': icon0,\r\n 'beginn schiessuebungsstrecke': icon1,\r\n 'doppelrhombus': icon2,\r\n 'doppelwinkel': icon3,\r\n 'ende schiessuebungsraum': icon4,\r\n 'ende schiessuebungsstrecke': icon5,\r\n 'rhombus': icon6,\r\n 'stellung feuerhalt': icon7,\r\n 'winkel': icon8,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/beginn schiessuebungsraum.461cbd1c.png\";","export default __webpack_public_path__ + \"static/media/beginn schiessuebungsstrecke.b0de6080.png\";","export default __webpack_public_path__ + \"static/media/doppelrhombus.0d62fd3b.png\";","export default __webpack_public_path__ + \"static/media/doppelwinkel.1256e63e.png\";","export default __webpack_public_path__ + \"static/media/ende schiessuebungsraum.1209f377.png\";","export default __webpack_public_path__ + \"static/media/ende schiessuebungsstrecke.27c37067.png\";","export default __webpack_public_path__ + \"static/media/rhombus.05d7f59c.png\";","export default __webpack_public_path__ + \"static/media/stellung feuerhalt.10b48150.png\";","export default __webpack_public_path__ + \"static/media/winkel.943a1586.png\";","export enum TagSize {\r\n XSmall = 0.25,\r\n Small = 0.5,\r\n Medium = 1,\r\n Large = 2,\r\n XLarge = 4,\r\n}\r\n\r\nexport enum AnnotationSize {\r\n Small = 1,\r\n Medium = 2,\r\n Large = 4,\r\n XLarge = 8\r\n}\r\n\r\nexport enum AnnotationDrawType {\r\n Eraser = 0,\r\n Polygon = 1,\r\n PolygonFreeHand = 2,\r\n LineString = 3,\r\n LineStringFreeHand = 4,\r\n Rectangle = 5,\r\n Circle = 6,\r\n Star = 7\r\n}","import {\r\n addAsset,\r\n addAssets,\r\n AssetInfo,\r\n AssetType,\r\n pointCloudType,\r\n CameraData,\r\n OrthoData,\r\n LineworkLayerData,\r\n XMLData,\r\n TagItemData,\r\n WebMapData,\r\n createAsset,\r\n createTags,\r\n TagAnnotation\r\n} from \"../redux/assets-slice\";\r\nimport {Parser} from 'xml2js';\r\nimport {dialog, fse, isStaticSite} from \"../electron-modules\";\r\nimport path from 'path';\r\nimport slash from 'slash';\r\nimport {hideBackdrop, showBackdrop, toast} from \"../app\";\r\nimport {PythonExecutable} from \"../executable\";\r\nimport LocalScene, { isValidProjection } from \"../viewer/js/projections\";\r\nimport { loadProjectFile } from \".\";\r\nimport {\r\n IFCFileFormat,\r\n imageOrthoFormat,\r\n imagePlanarFormat,\r\n pointCloudFileFormats,\r\n configFileType,\r\n SHPFileFormat,\r\n DXFFileFormat,\r\n xmlFileFormat,\r\n projFileFormat\r\n} from \"../file-extensions\";\r\nimport { t } from \"../localization\";\r\nimport { readFileBuffer, readFileText } from \"../viewer/js/file-system-loader\";\r\nimport { Dispatch, nanoid } from \"@reduxjs/toolkit\";\r\nimport {curveDist, lineDist} from \"../viewer/js/measurements/land-xml-calculation\";\r\nimport { defaultTagTexture } from \"../viewer/textures/tag-icons\";\r\nimport { TagSize } from \"../types/tags\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useGlobalSettings } from \"../hooks\";\r\nimport { openExternalLink } from \"../urls\";\r\nimport { updateDataProjection, updateViewProjection} from \"../redux/projections-slice\";\r\nimport * as CSV from 'csv-string';\r\n\r\nconst DEFAULT_LAYER_COLOR = \"#FF0000\";\r\n\r\n/** Remove paths from existing array */\r\nconst removeFromArray = (objects, toRemove) => {\r\n return objects.filter(object => !toRemove.includes(object));\r\n};\r\n\r\nexport const useAssetTools = () => {\r\n const dispatch = useDispatch();\r\n const {orthoQuality} = useGlobalSettings();\r\n\r\n const addAssetPaths = async (assetPaths: string[], folderID: string) => {\r\n let totalAssetsAdded = 0;\r\n\r\n const tagPaths = assetPaths.filter(isTagFile);\r\n const tagPathsAdded = await addTagCSVs(tagPaths, folderID, false);\r\n assetPaths = removeFromArray(assetPaths, tagPathsAdded);\r\n totalAssetsAdded += tagPathsAdded.length;\r\n\r\n const planarPaths = assetPaths.filter(isPlanarFile);\r\n totalAssetsAdded += await addPlanarFiles(planarPaths, folderID);\r\n\r\n const panoramicPaths = assetPaths.filter(isPanoramicFile);\r\n totalAssetsAdded += await addPanoramicFiles(panoramicPaths, folderID, false);\r\n\r\n const pointCloudPaths = assetPaths.filter(isPointCloudFile);\r\n totalAssetsAdded += await addPointCloudFiles(pointCloudPaths, folderID);\r\n\r\n const orthoPaths = assetPaths.filter(isOrthomosaicFile);\r\n totalAssetsAdded += await addOrthoFiles(orthoPaths, folderID);\r\n\r\n const modelPaths = assetPaths.filter(isModelFile);\r\n totalAssetsAdded += await addModelFiles(modelPaths, folderID);\r\n\r\n const xmlPaths = assetPaths.filter(isXmlFile);\r\n totalAssetsAdded += await addXMLFiles(xmlPaths, folderID);\r\n\r\n if (totalAssetsAdded === 0) return;\r\n\r\n toast.success(t(\"toast.added-project-files\", {\r\n count: totalAssetsAdded\r\n }));\r\n };\r\n\r\n const addFilePaths = (filePaths: string[], folderID: string) => {\r\n if (!filePaths || filePaths.length === 0) return;\r\n\r\n const configs = filePaths.filter(isConfigFile);\r\n const assetPaths = filePaths.filter(isAssetFile);\r\n const projections = filePaths.filter(isProjectionFile);\r\n\r\n if (configs.length > 0) {\r\n // Load first config file (ignore other files)\r\n const success = loadProjectFile(configs[0]);\r\n if (success) {\r\n toast.success(t(\"toast.load-config-file\"));\r\n }\r\n return;\r\n }\r\n\r\n if (projections.length > 0) {\r\n // Read projection from solv3d projection file\r\n const projectionPath = projections[0];\r\n const text = fse.readFileSync(projectionPath);\r\n const projection = JSON.parse(text);\r\n\r\n if (isValidProjection(projection.string)) {\r\n dispatch(updateDataProjection(projection));\r\n dispatch(updateViewProjection(projection));\r\n } else {\r\n toast.error(\"Invalid projection file\");\r\n }\r\n }\r\n\r\n if (assetPaths.length > 0) {\r\n // Add new assets\r\n addAssetPaths(assetPaths, folderID);\r\n }\r\n };\r\n\r\n const addWebSource = (name: string, data: WebMapData, folderID: string) => {\r\n dispatch(addAsset({\r\n folderID,\r\n name,\r\n path: null,\r\n type: AssetType.Webmap,\r\n data\r\n }));\r\n };\r\n\r\n const addModelFiles = async (assetPaths: string[], folderID: string) => {\r\n const ifcPaths = assetPaths.filter(isIFCFile);\r\n const shpPaths = assetPaths.filter(isSHPFile);\r\n const dxfPaths = assetPaths.filter(isDXFFile);\r\n\r\n let modelsAdded = 0;\r\n modelsAdded += await addIFCFiles(dispatch, ifcPaths, folderID);\r\n modelsAdded += await addSHPFiles(dispatch, shpPaths, folderID);\r\n modelsAdded += await addDXFFiles(dispatch, dxfPaths, folderID);\r\n\r\n return modelsAdded;\r\n };\r\n\r\n const addPointCloudFiles = async (assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n for (let pointPath of assetPaths) {\r\n const extension = path.extname(pointPath).slice(1);\r\n const type = pointCloudType(extension);\r\n const fileName = path.basename(pointPath);\r\n\r\n if (type === AssetType.Encompass) {\r\n pointPath = path.dirname(pointPath);\r\n if (fileName !== \"r.idx\") {\r\n toast.error(t('assets.error_loading_points_r_idx'));\r\n return;\r\n }\r\n }\r\n\r\n if (type === AssetType.Potree) {\r\n pointPath = path.dirname(pointPath);\r\n if (fileName !== \"octree.bin\") {\r\n toast.error(t('assets.error_loading_points_octree'));\r\n return;\r\n }\r\n }\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: pointPath,\r\n type\r\n });\r\n };\r\n\r\n dispatch(addAssets(assetsList));\r\n\r\n return assetPaths.length;\r\n };\r\n\r\n const addOrthoFiles = async (assetPaths: string[], folderID: string) => {\r\n showBackdrop();\r\n\r\n let numAdded = await addOrthoBatch(dispatch,\r\n assetPaths, folderID, orthoQuality);\r\n\r\n hideBackdrop();\r\n\r\n return numAdded;\r\n };\r\n\r\n const addTagCSVs = async (assetPaths: string[], folderID: string, catchErrors = true): Promise => {\r\n showBackdrop();\r\n\r\n let pathsAdded = [] as string[];\r\n\r\n for (const assetPath of assetPaths) {\r\n try {\r\n const numberOfTags = await addTagCSV(dispatch, assetPath, folderID);\r\n pathsAdded.push(assetPath);\r\n\r\n toast.success(t(\"toast.added-new-tags\", {\r\n count: numberOfTags\r\n }));\r\n } catch {\r\n if (!catchErrors) continue;\r\n const filename = path.basename(assetPath);\r\n\r\n toast.error(t(\"toast.tag-failed-parse\", {\r\n filename\r\n }));\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return pathsAdded;\r\n };\r\n\r\n const addPanoramicFiles = async (assetPaths: string[], folderID: string, catchErrors = true) => {\r\n showBackdrop();\r\n\r\n let numFilesAdded = 0;\r\n\r\n for (const assetPath of assetPaths) {\r\n const fileName = path.basename(assetPath);\r\n\r\n try {\r\n const {numAdded, numMissing} = await addPanoramicFile(\r\n dispatch, assetPath, folderID);\r\n\r\n if (numMissing > 0) {\r\n toast.warning(t('assets.added_panoramic_images_missing', {\r\n numAdded,\r\n numMissing\r\n }));\r\n } else {\r\n toast.success(t('assets.added_panoramic_images', {\r\n numAdded\r\n }));\r\n }\r\n\r\n numFilesAdded += 1;\r\n } catch (event) {\r\n if (!catchErrors) continue;\r\n\r\n if (event.pathError) {\r\n toast.error(t(\"toast.import-csv-path-error\", {\r\n path: fileName\r\n }));\r\n } else {\r\n toast.error(t(\"toast.import-csv-parse-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return numFilesAdded;\r\n };\r\n\r\n const addPlanarFiles = async (assetPaths: string[], folderID: string) => {\r\n showBackdrop();\r\n\r\n let numFilesAdded = 0;\r\n for (const assetPath of assetPaths) {\r\n const fileName = path.basename(assetPath);\r\n\r\n try {\r\n const {numAdded, numMissing} = await addPlanarFile(\r\n dispatch, assetPath, folderID);\r\n\r\n if (numMissing > 0) {\r\n toast.warning(t('assets.added_planar_images_missing', {\r\n numAdded,\r\n numMissing\r\n }));\r\n } else {\r\n toast.success(t('assets.added_planar_images', {\r\n numAdded\r\n }));\r\n }\r\n\r\n numFilesAdded += 1;\r\n } catch {\r\n toast.error(t(\"toast.import-planar-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return numFilesAdded;\r\n };\r\n\r\n const addXMLFiles = async (assetPaths: string[], folderID: string) => {\r\n showBackdrop();\r\n\r\n let numAdded = 0;\r\n\r\n for (const assetPath of assetPaths) {\r\n const added = await addXMLFile(dispatch, assetPath, folderID);\r\n if (added) {\r\n numAdded++;\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return numAdded;\r\n };\r\n\r\n return {\r\n addAssetPaths,\r\n addFilePaths,\r\n addModelFiles,\r\n addPointCloudFiles,\r\n addOrthoFiles,\r\n addTagCSVs,\r\n addPanoramicFiles,\r\n addPlanarFiles,\r\n addXMLFiles,\r\n addWebSource\r\n };\r\n};\r\n\r\n/** Save a file based on name. Works for website and compiled exe */\r\nexport const downloadFile = async (name: string, data, fileType: string, fileFilter) => {\r\n if (isStaticSite) {\r\n const contentType = `data:text/${fileType};charset=utf-8`;\r\n const content = `${contentType},${encodeURIComponent(data)}`;\r\n openExternalLink(content, {name});\r\n } else {\r\n try {\r\n const savePath = await getPathFromDialog(name, fileFilter);\r\n if (!savePath) return false;\r\n\r\n await fse.writeFile(savePath, data);\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst getPathFromDialog = async (name, filter) => {\r\n const result = await dialog.showSaveDialog({\r\n defaultPath: name,\r\n filters: filter,\r\n });\r\n\r\n const {filePath, canceled} = result;\r\n if (canceled || !filePath) return;\r\n\r\n const savePath = slash(filePath);\r\n return savePath;\r\n};\r\n\r\nexport const pathWithExtension = (filename, extension) => {\r\n const basename = filename.replace(/\\.[^.$]+$/, '');\r\n return `${basename}.${extension}`;\r\n};\r\n\r\nexport const isAssetFile = (filename) => {\r\n return isPanoramicFile(filename)\r\n || isTagFile(filename)\r\n || isPlanarFile(filename)\r\n || isPointCloudFile(filename)\r\n || isOrthomosaicFile(filename)\r\n || isModelFile(filename)\r\n || isXmlFile(filename);\r\n};\r\n\r\nexport const isModelFile = (filename) => {\r\n return isIFCFile(filename)\r\n || isSHPFile(filename)\r\n || isDXFFile(filename);\r\n};\r\n\r\nexport const isPanoramicFile = (filename) => {\r\n return isCSVFile(filename)\r\n || isTXTFile(filename)\r\n || isRZMLFile(filename)\r\n || isODMFile(filename);\r\n};\r\n\r\nconst isTagFile = filename => {\r\n return isCSVFile(filename);\r\n};\r\n\r\nexport const isCSVFile = filename => {\r\n return path.extname(filename) === '.csv';\r\n};\r\n\r\nexport const isTXTFile = filename => {\r\n return path.extname(filename) === '.txt';\r\n};\r\n\r\nexport const isRZMLFile = filename => {\r\n return path.extname(filename) === '.rzml';\r\n};\r\n\r\nexport const isODMFile = filename => {\r\n return path.basename(filename) === \"shots.geojson\";\r\n};\r\n\r\nexport const isIFCFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === IFCFileFormat;\r\n};\r\n\r\nexport const isSHPFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === SHPFileFormat;\r\n};\r\n\r\nexport const isDXFFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === DXFFileFormat;\r\n};\r\n\r\nexport const isConfigFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === configFileType;\r\n};\r\n\r\nexport const isProjectionFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return projFileFormat.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isPlanarFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return imagePlanarFormat.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isPointCloudFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return pointCloudFileFormats.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isOrthomosaicFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return imageOrthoFormat.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isXmlFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === xmlFileFormat;\r\n};\r\n\r\nconst getDXFLayerNames = (text): Promise<{name: string, color: string}[]> => {\r\n return new Promise((resolve, reject) => {\r\n const workerURL = \"workers/dxf-reader.js\";\r\n let worker = new Worker(`${process.env.PUBLIC_URL}/${workerURL}`);\r\n\r\n worker.onmessage = event => {\r\n const {success, response} = event.data;\r\n\r\n if (success) {\r\n resolve(response);\r\n } else {\r\n console.error(response);\r\n reject(response);\r\n }\r\n };\r\n\r\n const data = {text, type: \"layers\"};\r\n worker.postMessage(data);\r\n });\r\n};\r\n\r\nconst getSHPLayerNames = (buffer) : Promise => {\r\n return new Promise((resolve, reject) => {\r\n const workerURL = \"workers/shp-reader.js\";\r\n let worker = new Worker(`${process.env.PUBLIC_URL}/${workerURL}`);\r\n\r\n worker.onmessage = event => {\r\n const {success, response} = event.data;\r\n\r\n if (success) {\r\n resolve(response);\r\n } else {\r\n console.error(response);\r\n reject(response);\r\n }\r\n };\r\n\r\n const data = {dbf: buffer, type: \"layers\"};\r\n worker.postMessage(data, [data.dbf]);\r\n });\r\n};\r\n\r\nconst addIFCFiles = async (dispatch: Dispatch, assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n assetPaths.forEach(assetPath => {\r\n assetsList.push({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.IFC\r\n });\r\n });\r\n\r\n dispatch(addAssets(assetsList));\r\n return assetPaths.length;\r\n};\r\n\r\nconst addDXFFiles = async (dispatch: Dispatch, assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n showBackdrop();\r\n\r\n for (let assetPath of assetPaths) {\r\n const fileName = path.basename(assetPath);\r\n\r\n try {\r\n const text = await readFileText(assetPath);\r\n const layers = await getDXFLayerNames(text);\r\n\r\n const layerData = layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n name: layer.name,\r\n visible: true,\r\n color: layer.color\r\n };\r\n }) as LineworkLayerData[];\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: assetPath,\r\n data: layerData,\r\n type: AssetType.DXF\r\n });\r\n } catch(err) {\r\n\r\n toast.error(t(\"toast.import-dxf-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n dispatch(addAssets(assetsList));\r\n return assetsList.length;\r\n};\r\n\r\nconst addSHPFiles = async (dispatch: Dispatch, assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n showBackdrop();\r\n\r\n for (let assetPath of assetPaths) {\r\n const fileName = path.basename(assetPath);\r\n\r\n try {\r\n const dbfPath = pathWithExtension(assetPath, \"dbf\");\r\n const buffer = await readFileBuffer(dbfPath);\r\n const layers = await getSHPLayerNames(buffer);\r\n\r\n const layerData = layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n name: layer,\r\n visible: true,\r\n color: DEFAULT_LAYER_COLOR\r\n };\r\n }) as LineworkLayerData[];\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: assetPath,\r\n data: layerData,\r\n type: AssetType.SHP\r\n });\r\n } catch(err) {\r\n\r\n toast.error(t(\"toast.import-shp-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n dispatch(addAssets(assetsList));\r\n return assetsList.length;\r\n};\r\n\r\nconst addOrthoBatch = async (dispatch: Dispatch, assetPaths: string[], folderID: string, orthoQuality: number): Promise => {\r\n if (assetPaths.length === 0) {\r\n return 0;\r\n }\r\n\r\n return new Promise(async resolve => {\r\n const exe = new PythonExecutable();\r\n\r\n let response;\r\n let commands = [\r\n \"-p\", \"convert_geotiff\",\r\n \"--image_paths\", assetPaths,\r\n \"--output_scale\", orthoQuality\r\n ];\r\n\r\n let numAdded = 0;\r\n\r\n exe.run({\r\n commands,\r\n onLine: jsonData => {\r\n if (jsonData) {\r\n response = jsonData;\r\n }\r\n },\r\n onClose: () => {\r\n if (!response) {\r\n response = [];\r\n }\r\n\r\n let assetsList = [] as AssetInfo[];\r\n\r\n response.forEach(geotiff => {\r\n const assetPath = slash(geotiff.file_path);\r\n const fileName = path.basename(assetPath);\r\n\r\n if (geotiff.error) {\r\n toast.error(t(`toast.${geotiff.error}`, {\r\n path: fileName\r\n }));\r\n return;\r\n }\r\n\r\n const {corners, base64, width, height, base64_split,\r\n scale_x, scale_y, width_original, height_original} = geotiff;\r\n\r\n const orthoData = {\r\n imageBounds: corners,\r\n imageDataSplit: base64_split,\r\n imageData: base64,\r\n imageSize: [width, height],\r\n imageSizeOriginal: [width_original, height_original],\r\n imagePath: assetPath,\r\n scaleX: scale_x,\r\n scaleY: scale_y,\r\n } as OrthoData;\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: assetPath,\r\n type: AssetType.OrthoMosaic,\r\n data: orthoData\r\n });\r\n\r\n numAdded += 1;\r\n });\r\n\r\n dispatch(addAssets(assetsList));\r\n resolve(numAdded);\r\n }\r\n });\r\n });\r\n};\r\n\r\nconst addPlanarFile = (dispatch: Dispatch, assetPath: string, folderID: string):\r\n Promise<{numAdded: number, numMissing: number}> => {\r\n return new Promise((resolve, reject) => {\r\n const exe = new PythonExecutable();\r\n\r\n let cameras;\r\n let commands = [\r\n \"-p\", \"convert_engine_planars\",\r\n \"--input_path\", assetPath\r\n ];\r\n\r\n exe.run({\r\n commands,\r\n onLine: jsonData => {\r\n if (jsonData) {\r\n cameras = jsonData;\r\n }\r\n },\r\n onClose: () => {\r\n if (!cameras) {\r\n reject();\r\n return;\r\n }\r\n\r\n const numCameras = cameras.length;\r\n const numMissing = cameras.filter(camera => !camera.path).length;\r\n const numAdded = numCameras - numMissing;\r\n\r\n if (numCameras === 0) {\r\n reject();\r\n return;\r\n }\r\n\r\n let cameraData: CameraData[] = [];\r\n\r\n for (let camera of cameras) {\r\n let name = camera.path\r\n ? path.basename(camera.path)\r\n : camera.name;\r\n\r\n const rowData = {\r\n id: nanoid(),\r\n path: camera.path,\r\n name: name,\r\n x: camera.x,\r\n y: camera.y,\r\n z: camera.z,\r\n roll: camera.roll,\r\n pitch: camera.pitch,\r\n yaw: camera.yaw,\r\n config: camera.config\r\n } as CameraData;\r\n\r\n cameraData.push(rowData);\r\n }\r\n\r\n dispatch(addAsset({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.Planar,\r\n data: cameraData\r\n }));\r\n\r\n resolve({numAdded, numMissing});\r\n }\r\n });\r\n });\r\n};\r\n\r\nconst addPanoramicFile = (dispatch: Dispatch, assetPath: string, folderID: string):\r\n Promise<{numAdded: number, numMissing: number}> => {\r\n return new Promise((resolve, reject) => {\r\n const exe = new PythonExecutable();\r\n\r\n let cameras;\r\n const inputPath = assetPath;\r\n const projection = LocalScene.engineStyleProjection(LocalScene.dataProjection);\r\n\r\n let commands = [\r\n \"-p\", \"convert_engine_panoramics\",\r\n \"--input_path\", inputPath,\r\n \"--projection\", projection\r\n ];\r\n\r\n exe.run({\r\n commands,\r\n onLine: jsonData => {\r\n cameras = jsonData;\r\n },\r\n onClose: async () => {\r\n if (!cameras) {\r\n reject({pathError: false});\r\n return;\r\n }\r\n\r\n const numCameras = cameras.length;\r\n const numMissing = cameras.filter(camera => !camera.path).length;\r\n const numAdded = numCameras - numMissing;\r\n\r\n if (numCameras === 0) {\r\n reject({pathError: false});\r\n return;\r\n }\r\n\r\n let cameraData = [] as CameraData[];\r\n\r\n for (let camera of cameras) {\r\n let name = camera.path\r\n ? path.basename(camera.path)\r\n : camera.name;\r\n\r\n cameraData.push({\r\n id: nanoid(),\r\n path: camera.path,\r\n name: name,\r\n x: camera.x,\r\n y: camera.y,\r\n z: camera.z,\r\n roll: camera.roll,\r\n pitch: camera.pitch,\r\n yaw: camera.yaw\r\n });\r\n }\r\n\r\n dispatch(addAsset({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.Panoramic,\r\n data: cameraData\r\n }));\r\n\r\n resolve({numAdded, numMissing});\r\n }\r\n });\r\n });\r\n};\r\n\r\nconst addXMLFile = async (dispatch: Dispatch, assetPath: string, folderID: string) => {\r\n const parser = new Parser({\r\n explicitChildren:true,\r\n preserveChildrenOrder: true\r\n });\r\n\r\n let text = await fse.readFile(assetPath, {encoding: 'utf8'});\r\n let textAll = String(text);\r\n let encoding = textAll.split('?>')[0].split('encoding=\"')[1].split('\"')[0];\r\n\r\n if (encoding !== 'utf-8') {\r\n if (encoding === 'iso-8859-1') {\r\n text = await fse.readFile(assetPath, {encoding: 'latin1'});\r\n } else {\r\n toast.error(t(\"dialog.xml-file-encoding-error\"));\r\n return false;\r\n }\r\n }\r\n\r\n try {\r\n let xmlJSON = await parser.parseStringPromise(text);\r\n if (!(\"LandXML\" in xmlJSON)) {\r\n toast.error(t(\"dialog.xml-file-load-error\"));\r\n return false;\r\n }\r\n\r\n xmlJSON = xmlJSON.LandXML;\r\n\r\n let xmlData = {\r\n info: xmlJSON.$,\r\n units: xmlJSON.Units[0].$$[0].$,\r\n alignments: [],\r\n enu: false\r\n } as XMLData;\r\n\r\n xmlJSON.Alignments[0].Alignment.forEach(alignment => {\r\n let alignObject = {\r\n id: nanoid(),\r\n name: alignment.$.name,\r\n length: parseFloat(alignment.$.length),\r\n staStart: parseFloat(alignment.$.staStart),\r\n about: alignment.$.desc,\r\n geometry: []\r\n };\r\n\r\n let geometry = alignment.CoordGeom[0].$$;\r\n\r\n if (Array.isArray(geometry)) {\r\n geometry.forEach(geom => {\r\n let geometryElement = {shapeType: geom['#name']};\r\n let dollarSignKeys = Object.keys(geom.$);\r\n let featureKeys = Object.keys(geom).filter(\r\n key=> ((key !== '$') && (key !== '$$') && (key !== '#name')));\r\n dollarSignKeys.forEach(key$ => {\r\n let aboutValue = geom.$[key$];\r\n aboutValue = !isNaN(parseFloat(aboutValue))\r\n ? parseFloat(aboutValue)\r\n : aboutValue;\r\n\r\n geometryElement[key$] = aboutValue;\r\n });\r\n\r\n featureKeys.forEach(fKey => {\r\n let coordValue = geom[fKey];\r\n let splitCoordValue;\r\n let tempValue;\r\n if (Object.keys(coordValue[0]).includes('$')) {\r\n tempValue = String(coordValue[0]['_']);\r\n } else {\r\n tempValue = String(coordValue[0]);\r\n }\r\n\r\n let newLineSep = tempValue.split('\\n');\r\n let recombine = newLineSep.join(' ');\r\n splitCoordValue = recombine.split(' ');\r\n let coordValueCorrected = [];\r\n splitCoordValue.forEach(scv=> {\r\n if (!isNaN(parseFloat(scv))) {\r\n coordValueCorrected.push(parseFloat(scv));\r\n }\r\n });\r\n if (coordValueCorrected.length > 0) {\r\n geometryElement[fKey] = coordValueCorrected;\r\n }\r\n });\r\n alignObject.geometry.push(geometryElement);\r\n });\r\n }\r\n\r\n xmlData.alignments.push(alignObject);\r\n });\r\n\r\n // Checks to see if length and staStart attributes were correctly added in\r\n // xml file, and if not, manually calculates them.\r\n\r\n let overwriteLength = false;\r\n let overwriteStaStart = false;\r\n\r\n xmlData.alignments.forEach(alignment => {\r\n let staStart = alignment.staStart;\r\n alignment.geometry.forEach(geom => {\r\n let keys = Object.keys(geom);\r\n if (!keys.includes(\"staStart\") || overwriteStaStart) {\r\n geom['staStart'] = staStart;\r\n overwriteStaStart = true;\r\n let length = 0;\r\n if (!keys.includes(\"length\") || overwriteLength) {\r\n overwriteLength = true;\r\n if (geom['shapeType'] === \"Line\") {\r\n length = lineDist(geom);\r\n } else if (geom['shapeType'] === \"Curve\") {\r\n length = curveDist(geom);\r\n }\r\n }\r\n if (overwriteLength) {\r\n geom['length'] = length;\r\n }\r\n if (overwriteStaStart) {\r\n staStart += length;\r\n }\r\n }\r\n geom['checked'] = 1;\r\n });\r\n });\r\n\r\n dispatch(addAsset({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.LandXML,\r\n data: xmlData\r\n }));\r\n\r\n return true;\r\n } catch {\r\n toast.error(t(\"dialog.xml-file-load-error\"));\r\n return false;\r\n }\r\n};\r\n\r\nconst getHeaderIndex = (headers: string[], values: string | string[]) => {\r\n return typeof(values) === 'string'\r\n ? headers.indexOf(values)\r\n : Math.max(...values.map(value => headers.indexOf(value)));\r\n};\r\n\r\nconst addTagCSV = async (dispatch, assetPath: string, folderID: string): Promise => {\r\n const text = await readFileText(assetPath);\r\n const data = CSV.parse(text);\r\n\r\n const headers = data[0].map(x => x.toLowerCase());\r\n const lines = data.slice(1);\r\n\r\n const xIndex = getHeaderIndex(headers, \"easting\");\r\n const yIndex = getHeaderIndex(headers, \"northing\");\r\n const zIndex = getHeaderIndex(headers, \"elevation\");\r\n const nameIndex = getHeaderIndex(headers, \"name\");\r\n const annotationIndex = getHeaderIndex(headers, \"annotations\");\r\n const commentIndex = getHeaderIndex(headers, [\"comment\", \"comments\", \"comment1_value\"]);\r\n\r\n const validHeader = (xIndex !== -1) && (yIndex !== -1);\r\n if (!validHeader) {\r\n throw new Error(\"Invalid headers\");\r\n }\r\n\r\n const hasHeight = zIndex !== -1;\r\n\r\n const tags = lines.map((line, index) => {\r\n let easting = parseFloat(line[xIndex]);\r\n let northing = parseFloat(line[yIndex]);\r\n\r\n let name = (nameIndex !== -1)\r\n ? line[nameIndex]\r\n : `Item ${index}`;\r\n\r\n let comment = (commentIndex !== -1)\r\n ? line[commentIndex]\r\n : \"\";\r\n\r\n let annotations = [];\r\n if (annotationIndex !== -1) {\r\n try {\r\n let text = line[annotationIndex];\r\n let data = JSON.parse(text);\r\n\r\n annotations = data.map(definition => {\r\n let id;\r\n\r\n if (definition.properties.id) {\r\n // Unique id already exists\r\n id = definition.properties.id;\r\n } else {\r\n // Generate a new unique id\r\n id = nanoid();\r\n definition.properties.id = id;\r\n }\r\n\r\n return {\r\n id,\r\n definition\r\n } as TagAnnotation;\r\n });\r\n } catch {\r\n // Nothing\r\n }\r\n }\r\n\r\n const tag = {\r\n id: nanoid(),\r\n name,\r\n comment,\r\n x: easting,\r\n y: northing,\r\n date: new Date().toISOString(),\r\n sceneState: null,\r\n annotations\r\n } as TagItemData;\r\n\r\n if (hasHeight) {\r\n const elevation = parseFloat(line[zIndex]);\r\n if (elevation && (elevation !== -9999)) {\r\n tag.z = elevation;\r\n }\r\n }\r\n\r\n return tag;\r\n });\r\n\r\n // Create new tag collection\r\n const asset = await dispatch(createAsset({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.Tag,\r\n size: TagSize.Medium,\r\n texture: defaultTagTexture\r\n }));\r\n\r\n // Add new tags to collection\r\n await dispatch(createTags({\r\n assetID: asset.id,\r\n tags\r\n }));\r\n\r\n return tags.length;\r\n};\r\n\r\nexport const openDialogMulti = (filter): Promise => {\r\n return dialog.showOpenDialog( {\r\n filters: filter,\r\n properties: ['openFile', 'multiSelections']\r\n }).then(result => {\r\n if (result.canceled) {\r\n return [];\r\n }\r\n\r\n const filePaths = result.filePaths.map(path => slash(path));\r\n return filePaths;\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"), t(\"dialog.file-load-error\"));\r\n return [];\r\n });\r\n};\r\n\r\nexport const openDialogFile = (filter): Promise => {\r\n return dialog.showOpenDialog( {\r\n filters: filter,\r\n properties: ['openFile']\r\n }).then(result => {\r\n if (result.canceled) {\r\n return null;\r\n }\r\n\r\n const filePath = slash(result.filePaths[0]);\r\n return filePath;\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"), t(\"dialog.file-load-error\"));\r\n return null;\r\n });\r\n};\r\n\r\nexport const openDialogFolder = (): Promise<{directoryPath: string, filePaths: string[]}> => {\r\n return new Promise((resolve) => {\r\n\r\n dialog.showOpenDialog({\r\n properties: ['openDirectory']\r\n }).then(async result => {\r\n if (result.canceled) {\r\n resolve({\r\n directoryPath: '',\r\n filePaths: []\r\n });\r\n\r\n return;\r\n }\r\n\r\n const filePath = slash(result.filePaths[0]);\r\n const filePaths = await parseDirectory(filePath);\r\n\r\n resolve({\r\n directoryPath: filePath,\r\n filePaths: filePaths\r\n });\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"), t(\"dialog.file-load-error\"));\r\n return null;\r\n });\r\n });\r\n};\r\n\r\nexport const openDirectory = (): Promise => {\r\n return dialog.showOpenDialog({\r\n properties: [\"openDirectory\"]\r\n }).then(result => {\r\n if (result.canceled) {\r\n return null;\r\n }\r\n if (result.filePaths) {\r\n const outputFolder = slash(result.filePaths[0]);\r\n return outputFolder;\r\n }\r\n\r\n return null;\r\n });\r\n};\r\n\r\nconst parseDirectory = async (directoryPath: string): Promise => {\r\n const entries = await fse.readdir(directoryPath, {withFileTypes: true});\r\n\r\n const files = entries\r\n .filter(entry => entry.isFile())\r\n .map(file => path.join(directoryPath, file.name));\r\n\r\n const directories = entries\r\n .filter(entry => entry.isDirectory())\r\n .map(directory => path.join(directoryPath, directory.name));\r\n\r\n for (let folder of directories) {\r\n files.push(...(await parseDirectory(folder)));\r\n }\r\n\r\n return files;\r\n};\r\n","import {\r\n dialog,\r\n fs,\r\n} from \"../electron-modules\";\r\nimport slash from 'slash';\r\nimport { toast } from \"../app\";\r\nimport { cameraMatrixFilter } from \"../file-extensions\";\r\nimport { t } from \"../localization\";\r\nimport { Euler, Matrix4, Vector3 } from \"three\";\r\nimport { readFileText } from \"../viewer/js/file-system-loader\";\r\n\r\ninterface TransformResponse {\r\n success: Boolean,\r\n content: number[]\r\n}\r\n\r\nexport const saveMatrixFile = (cameraTransformPath) => {\r\n dialog.showSaveDialog({\r\n filters: cameraMatrixFilter,\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n if (result.filePath) {\r\n const savePath = slash(result.filePath);\r\n fs.copyFile(cameraTransformPath, savePath, (err) => {\r\n if (err) {\r\n toast.error(t(\"toast.correction-matrix-failed\"));\r\n } else {\r\n toast.success(t(\"toast.correction-matrix-saved\"));\r\n }\r\n });\r\n }\r\n });\r\n};\r\n\r\nexport const readTransformFile = (path: string): Promise => {\r\n return new Promise(async resolve => {\r\n const errorResponse = {\r\n success: false,\r\n content: null\r\n };\r\n\r\n if (!path) {\r\n resolve(errorResponse);\r\n return;\r\n }\r\n\r\n try {\r\n const data = await readFileText(path);\r\n\r\n let arr = [];\r\n let valid = true;\r\n\r\n const rows = data.split(\"\\n\");\r\n rows.forEach(row => {\r\n row = row.trim();\r\n if (row.length === 0) {\r\n return;\r\n }\r\n\r\n let cols = row.split(\" \");\r\n if (cols.length !== 4) {\r\n valid = false;\r\n }\r\n\r\n cols.forEach((col: any) => {\r\n if (isNaN(col)) {\r\n valid = false;\r\n }\r\n arr.push(parseFloat(col));\r\n });\r\n });\r\n\r\n if (arr.length !== 16) {\r\n valid = false;\r\n }\r\n\r\n if (!valid) {\r\n resolve(errorResponse);\r\n return;\r\n }\r\n\r\n const successResponse = {\r\n success: true,\r\n content: arr\r\n };\r\n\r\n resolve(successResponse);\r\n return;\r\n } catch {\r\n resolve(errorResponse);\r\n return;\r\n }\r\n });\r\n};\r\n\r\nexport const getMatrixValues = async (path: string) => {\r\n const {success, content} = await readTransformFile(path);\r\n\r\n if (!success) {\r\n return {success, rotation: null, offset: null};\r\n }\r\n\r\n const matrix = new Matrix4().fromArray(content);\r\n\r\n const transpose = new Matrix4().copy(matrix).transpose();\r\n const offset = new Vector3().setFromMatrixPosition(transpose);\r\n\r\n matrix.setPosition(0,0,0);\r\n const rotation = new Euler()\r\n .setFromRotationMatrix(matrix)\r\n .toVector3()\r\n .multiplyScalar(180 / Math.PI)\r\n .multiplyScalar(-1);\r\n\r\n return {success, rotation, offset};\r\n};\r\n","import { getConfigVersion } from \"../utilities\";\r\nimport { defaultTagTexture } from \"../viewer/textures/tag-icons\";\r\nimport { AssetType, CameraData } from \"./assets-slice\";\r\nimport { initialAerialState, initialSceneState } from \"./camera-slice\";\r\nimport { currentConfigVersion } from \"./project-slice\";\r\nimport semver from \"semver\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { ProjectType } from \"../types/project\";\r\nimport { TagSize } from \"../types/tags\";\r\n\r\nconst isCameraOrTag = (type) => {\r\n return (type === AssetType.Tag)\r\n || (type === AssetType.Planar)\r\n || (type === AssetType.Panoramic);\r\n};\r\n\r\nexport const upgradeConfig = (config) => {\r\n config = upgradeVersion34(config);\r\n config = upgradeVersion35(config);\r\n config = upgradeVersion36(config);\r\n config = upgradeVersion37(config);\r\n config = upgradeVersion38(config);\r\n config = upgradeVersion39(config);\r\n config = upgradeVersion310(config);\r\n config = upgradeVersion311(config);\r\n config = upgradeVersion312(config);\r\n config = upgradeVersion313(config);\r\n config = upgradeVersion314(config);\r\n config = upgradeVersion315(config);\r\n config = upgradeVersion316(config);\r\n config = upgradeVersion317(config);\r\n config = upgradeVersion318(config);\r\n config = upgradeVersion319(config);\r\n config = upgradeVersion320(config);\r\n config = upgradeVersion321(config);\r\n config = upgradeVersion322(config);\r\n\r\n /** Additional upgrades go here */\r\n\r\n // Project config should now be at the latest version\r\n config.project.configVersion = currentConfigVersion;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion322 = (config) => {\r\n const oldVersion = \"3.22.0\";\r\n const newVersion = \"3.23.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add annotations state and date to each tag item\r\n config.assets = config.assets.map(asset => {\r\n if (asset.type === AssetType.Tag) {\r\n const items = asset.data.items.map(item => {\r\n delete item.camera;\r\n\r\n return {\r\n ...item,\r\n annotations: []\r\n };\r\n });\r\n\r\n asset.data = {\r\n ...asset.data,\r\n items\r\n };\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion321 = (config) => {\r\n const oldVersion = \"3.21.0\";\r\n const newVersion = \"3.22.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add \"#\" to colors in dxf/shp layer data\r\n config.assets = config.assets.map(asset => {\r\n if ((asset.type === AssetType.DXF) || (asset.type === AssetType.SHP)) {\r\n asset.data = asset.data.map(layer => {\r\n if (layer.color[0] !== \"#\") {\r\n layer.color = `#${layer.color}`;\r\n }\r\n\r\n return layer;\r\n });\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion320 = (config) => {\r\n const oldVersion = \"3.20.0\";\r\n const newVersion = \"3.21.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add scene state and date to each tag item\r\n config.assets = config.assets.map(asset => {\r\n if (asset.type === AssetType.Tag) {\r\n const items = asset.data.items.map(item => {\r\n delete item.camera;\r\n\r\n return {\r\n ...item,\r\n date: new Date().toISOString(),\r\n sceneState: null\r\n };\r\n });\r\n\r\n asset.data = {\r\n ...asset.data,\r\n items\r\n };\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion319 = (config) => {\r\n const oldVersion = \"3.19.0\";\r\n const newVersion = \"3.20.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.custom_links = config.links;\r\n delete config.links;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion318 = (config) => {\r\n const oldVersion = \"3.18.0\";\r\n const newVersion = \"3.19.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add tag draw distance\r\n config.settings.tagDistance = 1000;\r\n\r\n // Update old style camera ids\r\n const mappedCamerasIDs = {};\r\n config.assets.forEach(asset => {\r\n if ((asset.type === AssetType.Panoramic) || (asset.type === AssetType.Planar)) {\r\n const cameras = asset.data as CameraData[];\r\n cameras.forEach(camera => {\r\n const oldCameraID = `${asset.id}-${camera.name}`;\r\n mappedCamerasIDs[oldCameraID] = camera.id;\r\n });\r\n }\r\n });\r\n\r\n if (config.camera.sceneState.camera) {\r\n try {\r\n let newCameraID = mappedCamerasIDs[config.camera.sceneState.camera];\r\n if (newCameraID) {\r\n config.camera.sceneState.camera = newCameraID;\r\n }\r\n } catch {\r\n console.log(\"Error updating camera id (camera state)\");\r\n }\r\n }\r\n\r\n config.bookmarks = config.bookmarks.map(bookmark => {\r\n bookmark.settings.tagDistance = 1000;\r\n\r\n if (bookmark.sceneState.camera) {\r\n try {\r\n let newCameraID = mappedCamerasIDs[bookmark.sceneState.camera];\r\n if (newCameraID) {\r\n bookmark.sceneState.camera = newCameraID;\r\n }\r\n } catch {\r\n console.log(\"Error updating camera id (bookmark)\");\r\n }\r\n }\r\n\r\n return bookmark;\r\n });\r\n\r\n // Add size and camera id field for tags\r\n config.assets = config.assets.map(asset => {\r\n if (asset.type === AssetType.Tag) {\r\n const items = asset.data.items.map(item => {\r\n return {\r\n ...item,\r\n camera: null\r\n };\r\n });\r\n\r\n asset.data = {\r\n ...asset.data,\r\n size: TagSize.Medium,\r\n items\r\n };\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion317 = (config) => {\r\n const oldVersion = \"3.17.0\";\r\n const newVersion = \"3.18.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n if (\"overrideSettings\" in config.settings) {\r\n delete config.settings.overrideSettings;\r\n }\r\n\r\n config.assets = config.assets.map(asset => {\r\n asset.saved = asset.fromJSON;\r\n asset.cloud = false;\r\n delete asset.fromJSON;\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion316 = (config) => {\r\n const oldVersion = \"3.16.0\";\r\n const newVersion = \"3.17.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.project.type = ProjectType.Standard;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion315 = (config) => {\r\n const oldVersion = \"3.15.0\";\r\n const newVersion = \"3.16.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n if (\"newProject\" in config.project) {\r\n delete config.project.newProject;\r\n }\r\n\r\n if (\"modified\" in config.project) {\r\n delete config.project.modified;\r\n }\r\n\r\n config.project.uniqueSession = nanoid();\r\n config.project.id = nanoid();\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion314 = (config) => {\r\n const oldVersion = \"3.14.0\";\r\n const newVersion = \"3.15.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Change from folder.isDefault to folder.default\r\n config.folders = config.folders.map(folder => {\r\n if (folder.hasOwnProperty('isDefault')) {\r\n folder.default = folder.isDefault;\r\n delete folder.isDefault;\r\n }\r\n\r\n return folder;\r\n });\r\n\r\n // Move tag texture string from asset.texture to asset.data.texture\r\n config.assets = config.assets.map(asset => {\r\n if (asset.type !== AssetType.Tag) return asset;\r\n\r\n asset.data = {\r\n texture: asset.texture,\r\n items: asset.data\r\n };\r\n\r\n delete asset['texture'];\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion313 = (config) => {\r\n const oldVersion = \"3.13.0\";\r\n const newVersion = \"3.14.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.assets = config.assets.map(asset => {\r\n let filePath = asset.data.path;\r\n\r\n if (filePath) {\r\n asset.path = filePath;\r\n delete asset.data;\r\n } else {\r\n asset.path = null;\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion312 = (config) => {\r\n const oldVersion = \"3.12.0\";\r\n const newVersion = \"3.13.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.settings.overrideSettings = true;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion311 = (config) => {\r\n const oldVersion = \"3.11.0\";\r\n const newVersion = \"3.12.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Convert from cloudSize to cloudScale + cloudMinimum\r\n const cloudSize = config.settings.cloudSize;\r\n config.settings.cloudScale = Math.min(3.0, cloudSize);\r\n config.settings.cloudMinimum = 2.0;\r\n delete config.settings.cloudSize;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion310 = (config) => {\r\n const oldVersion = \"3.10.0\";\r\n const newVersion = \"3.11.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.assets = config.assets.map(asset => {\r\n // Add unique ID to cameras and tags\r\n if (isCameraOrTag(asset.type)) {\r\n asset.data = asset.data.map(tag => {\r\n return {\r\n id: nanoid(),\r\n ...tag\r\n };\r\n });\r\n }\r\n\r\n // Add comments field for tags\r\n if (asset.type === AssetType.Tag) {\r\n asset.data = asset.data.map(tag => {\r\n return {\r\n ...tag,\r\n comment: \"\"\r\n };\r\n });\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion39 = (config) => {\r\n const oldVersion = \"3.9.0\";\r\n const newVersion = \"3.10.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n const extent = config.camera.aerialState.extent;\r\n const resolution = config.camera.aerialState.resolution;\r\n\r\n // Update camera state\r\n config.camera.sceneState = {\r\n ...initialSceneState,\r\n ...config.camera.sceneState\r\n };\r\n\r\n // Update aerial state\r\n config.camera.aerialState = {\r\n ...initialAerialState,\r\n ...config.camera.aerialState\r\n };\r\n\r\n // Convert resolution to zoom\r\n if (resolution) {\r\n const zoom = Math.log2(156543.03390625) - Math.log2(resolution);\r\n config.camera.aerialState.zoom = zoom;\r\n }\r\n\r\n // Convert extent to center\r\n if (extent) {\r\n config.camera.aerialState.center = [\r\n (extent[0] + extent[2]) / 2,\r\n (extent[1] + extent[3]) / 2\r\n ];\r\n }\r\n\r\n delete config.camera.aerialState.resolution;\r\n delete config.camera.aerialState.extent;\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion38 = (config) => {\r\n const oldVersion = \"3.8.0\";\r\n const newVersion = \"3.9.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add default texture for tags\r\n config.assets = config.assets.map(asset => {\r\n asset.texture = (asset.type === AssetType.Tag) ? defaultTagTexture : undefined;\r\n return asset;\r\n });\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion37 = (config) => {\r\n const oldVersion = \"3.7.0\";\r\n const newVersion = \"3.8.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Apply upgrades\r\n delete config.settings.orthoOpacity;\r\n delete config.settings.orthoQuality;\r\n delete config.settings.controlType;\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion36 = (config) => {\r\n const oldVersion = \"3.6.0\";\r\n const newVersion = \"3.7.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // NOTE: Upgrades removed because of refactoring\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion35 = (config) => {\r\n const oldVersion = \"3.5.0\";\r\n const newVersion = \"3.6.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Apply upgrades\r\n config.settings.cloudMaxPoints = config.settings.cloudMaxPoints/1000000;\r\n config.settings.cloudDistance = config.settings.cloudDistance * 10;\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion34 = (config) => {\r\n const oldVersion = \"3.4.0\";\r\n const newVersion = \"3.5.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // NOTE: Upgrades removed because of refactoring\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\n","import {store} from '../redux/store';\r\nimport {\r\n defaultProjectTitle,\r\n updateProjectName,\r\n changePath,\r\n currentConfigVersion,\r\n minimumConfigVersion\r\n} from '../redux/project-slice';\r\nimport {\r\n dialog,\r\n fs,\r\n registerEvent,\r\n isElectronApp,\r\n exitFromApp\r\n} from '../electron-modules';\r\nimport slash from 'slash';\r\nimport path from 'path';\r\nimport {isEqual} from 'lodash';\r\nimport { upgradeConfig } from '../redux/config-upgrade';\r\nimport { configFilter } from '../file-extensions';\r\nimport semver from \"semver\";\r\nimport { t } from '../localization';\r\nimport { Projection } from '../redux/projections-slice';\r\nimport { defaultFolderTitle } from '../redux/folders-slice';\r\nimport { ProjectType } from '../types/project';\r\n\r\n/** Return the localized folder name for default project names,\r\n * and the saved name for everything else */\r\nexport const getLocalizedProjectName = (name: string) => {\r\n return name === defaultProjectTitle ? t(name) : name;\r\n};\r\n\r\n/** Return the localized projection name for default projections,\r\n * and the saved name for everything else */\r\nexport const getLocalizedProjectionName = (projection: Projection, units: string) => {\r\n return projection.default\r\n ? t(`projections.default-projection`, {units})\r\n : projection.name;\r\n};\r\n\r\n/** Return the localized folder name for default folders,\r\n * and the saved name for everything else */\r\nexport const getLocalizedFolderName = (name: string) => {\r\n return name === defaultFolderTitle ? t(name) : name;\r\n};\r\n\r\nexport const saveProjectAs = () => {\r\n const projectName = store.getState().project.name;\r\n const localizedProjectName = getLocalizedProjectName(projectName);\r\n const defaultPath = `${localizedProjectName}.json`;\r\n\r\n return dialog.showSaveDialog({\r\n title: t(\"dialog.save-project\"),\r\n defaultPath,\r\n filters: configFilter,\r\n }).then((result) => {\r\n if (result.canceled) {\r\n return false;\r\n }\r\n\r\n const savePath = slash(result.filePath);\r\n store.dispatch(changePath(savePath));\r\n\r\n // Update the title of the project to be the filename\r\n if (projectName === defaultProjectTitle) {\r\n const fileName = path.basename(savePath);\r\n const extension = path.extname(savePath);\r\n const nameWithoutExt = path.basename(fileName, extension);\r\n store.dispatch(updateProjectName(nameWithoutExt));\r\n }\r\n\r\n writeProject(store);\r\n return true;\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.project-save-title\"),\r\n t(\"dialog.project-save-message\"));\r\n return false;\r\n });\r\n};\r\n\r\nexport const saveProject = (allowSaveAs = true) => {\r\n return new Promise(resolve => {\r\n let state = store.getState();\r\n\r\n if (state.project.path === '') {\r\n if (allowSaveAs) {\r\n saveProjectAs().then(result => {\r\n resolve(result);\r\n });\r\n }\r\n return;\r\n } else {\r\n writeProject(store);\r\n resolve(true);\r\n }\r\n });\r\n};\r\n\r\nexport const loadProjectJSON = (projectJSON, parameters = {}) => {\r\n store.dispatch({\r\n type: 'LOAD',\r\n payload: {projectJSON, parameters}\r\n });\r\n};\r\n\r\nexport const getConfigVersion = (config) => {\r\n let version = config.project.configVersion;\r\n if (typeof version === \"number\") {\r\n version = `${String(version)}.0`;\r\n }\r\n\r\n return version;\r\n};\r\n\r\nexport const setWindowHash = (hash) => {\r\n window.history.pushState({}, '', \"#\" + hash);\r\n};\r\n\r\nexport const clearWindowHash = () => {\r\n window.location.hash = \"\";\r\n};\r\n\r\nexport const loadProjectFile = (filePath) => {\r\n try {\r\n const data = fs.readFileSync(filePath, 'utf8');\r\n\r\n // Update json path based on where the json was loaded from\r\n let projectJSON = JSON.parse(data);\r\n projectJSON.project.path = filePath;\r\n\r\n let configVersion = getConfigVersion(projectJSON);\r\n\r\n // Very old versions can't be upgraded\r\n if (semver.lt(configVersion, minimumConfigVersion)) {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"),\r\n t(\"dialog.legacy-version-error\", {version: configVersion}));\r\n return false;\r\n }\r\n\r\n // Upgrade project configuration to the most recent version\r\n if (semver.lt(configVersion, currentConfigVersion)) {\r\n projectJSON = upgradeConfig(projectJSON);\r\n }\r\n\r\n clearWindowHash();\r\n loadProjectJSON(projectJSON);\r\n return true;\r\n } catch (err) {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"),\r\n t(\"dialog.project-load-message\"));\r\n return false;\r\n }\r\n};\r\n\r\nexport const loadProject = () => {\r\n dialog.showOpenDialog({\r\n properties: ['openFile'],\r\n filters: configFilter\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n\r\n const filePath = slash(result.filePaths[0]);\r\n loadProjectFile(filePath);\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n};\r\n\r\nexport const newProject = () => {\r\n dialog.showMessageBox({\r\n type: 'question',\r\n title: t(\"dialog.new-project-title\"),\r\n message: t(\"dialog.new-project-unsaved\"),\r\n buttons: [\r\n t(\"buttons.cancel\"),\r\n t(\"buttons.new-project\")\r\n ],\r\n noLink: true\r\n })\r\n .then(result => {\r\n if (result.response === 0) return;\r\n store.dispatch({type: 'NEW'});\r\n });\r\n};\r\n\r\nconst writeProject = (store) => {\r\n // Update saved state for all assets\r\n store.dispatch({\r\n type: \"assets/setSavedState\",\r\n payload: null\r\n });\r\n\r\n const state = store.getState();\r\n const name = state.project.path;\r\n const string = JSON.stringify(state, null, 2);\r\n\r\n fs.writeFile(name, string, (err) => {\r\n if (err) {\r\n throw Error('an error occurred while saving the project');\r\n }\r\n });\r\n};\r\n\r\nconst exitWithChanges = async () => {\r\n const state = store.getState();\r\n\r\n // Cloud projects always exit immediately\r\n if (state.project.type === ProjectType.Cloud) {\r\n exitFromApp();\r\n return;\r\n }\r\n\r\n let hasChanged;\r\n if (state.project.path !== \"\") {\r\n // Compare current state to saved json state\r\n const data = fs.readFileSync(state.project.path, \"utf8\");\r\n let projectJSON = JSON.parse(data);\r\n\r\n const originalState = {...projectJSON};\r\n const modifiedState = JSON.parse(JSON.stringify(state));\r\n\r\n // Our session ID changes every time we load the file,\r\n // so it needs to be removed before we can compare states\r\n delete originalState.project.uniqueSession;\r\n delete modifiedState.project.uniqueSession;\r\n\r\n hasChanged = !isEqual(originalState, modifiedState);\r\n } else {\r\n // Dont prompt user unless assets are loaded\r\n hasChanged = state.assets.length !== 0;\r\n }\r\n\r\n if (!hasChanged) {\r\n exitFromApp();\r\n return;\r\n }\r\n\r\n const result = await dialog.showMessageBox({\r\n type: \"question\",\r\n message: t(\"dialog.exit-save-changes\"),\r\n buttons: [\r\n t(\"buttons.save\"),\r\n t(\"buttons.dont-save\")\r\n ],\r\n defaultId: 2,\r\n noLink: true\r\n });\r\n\r\n if (result.response === 1) {\r\n exitFromApp();\r\n } else if (result.response === 0) {\r\n await saveProject();\r\n exitFromApp();\r\n }\r\n};\r\n\r\nif (isElectronApp) {\r\n registerEvent(\"new-project\", newProject);\r\n registerEvent(\"load-project\", loadProject);\r\n registerEvent(\"save-project\", saveProject);\r\n registerEvent(\"save-project-as\", saveProjectAs);\r\n registerEvent(\"exit-with-changes\", exitWithChanges);\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { Theme, Grid, Typography } from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { toast } from \"../../app\";\r\nimport {\r\n CheckboxWithLabel,\r\n DropdownWithLabel,\r\n FolderWithLabel,\r\n SimpleDialog,\r\n memoWithOpen\r\n} from \"../../components\";\r\nimport { fse, getTemporaryFile } from \"../../electron-modules\";\r\nimport { deleteAsset } from \"../../redux/assets-slice\";\r\nimport path from \"path\";\r\nimport { useTaskQueue, useViewer } from \"../../hooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\nimport * as CSV from 'csv-string';\r\n\r\nenum DetectionType {\r\n VehiclesAndPeople=\"vehicles_and_people\",\r\n Vehicles=\"vehicles\",\r\n People=\"people\"\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n mixedDataWarning: {\r\n padding: theme.spacing(1.0),\r\n color: theme.palette.warning.main,\r\n textAlign: \"center\"\r\n }\r\n }),\r\n);\r\n\r\nexport const BlurVehiclesPeople = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [detectionType, setDetectionType] = useState(DetectionType.VehiclesAndPeople);\r\n const [blurStrength, setBlurStrength] = useState(10);\r\n const [accuracy, setAccuracy] = useState(0.5);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const pythonName = \"blur_vehicles_people\";\r\n\r\n const tempImagePath = getTemporaryFile(\"json\");\r\n const imagesCSVPath = path.join(outputPath, \"blurred-images.csv\");\r\n\r\n try {\r\n const cameras = viewer.getCamerasByCSV(asset.id);\r\n const cameraData = cameras.map(x => x.path);\r\n const pathsJSON = JSON.stringify(cameraData, null, 4);\r\n await fse.writeFile(tempImagePath, pathsJSON);\r\n } catch(err) {\r\n console.log(err);\r\n toast.error(t('functions.error_running_function'));\r\n return;\r\n }\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--input_path\", tempImagePath,\r\n \"--output_path\", outputPath,\r\n \"--blur_options\", detectionType,\r\n \"--blur_level\", blurStrength,\r\n \"--detection-accuracy\", accuracy\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n try {\r\n // Generate camera csv in output folder\r\n const cameras = viewer.getCamerasByCSV(asset.id);\r\n const rows = viewer.getCameraRowsCSV(cameras);\r\n const content = CSV.stringify(rows);\r\n await fse.writeFile(imagesCSVPath, content);\r\n } catch {\r\n return;\r\n }\r\n\r\n // Remove old camera csv\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new camera csv\r\n await addAssetPaths([imagesCSVPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const cameras = asset ? viewer.getCamerasByCSV(asset.id) : [];\r\n const folders = asset ? viewer.getCameraFolders(cameras) : [];\r\n const inputFolders = new Set([...folders]);\r\n const pathOverlap = inputFolders.has(outputPath);\r\n const canSubmit = !pathOverlap && (outputPath !== null);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {pathOverlap && (\r\n \r\n {t('point-markup.output-folder-must-be-different')}\r\n \r\n )}\r\n\r\n {/** Detection Type */}\r\n \r\n \r\n \r\n\r\n {/** Detection Accuracy */}\r\n \r\n {\r\n const value = (index+1)/10;\r\n const text = `${(index+1)*10}%`;\r\n return [value, text];\r\n })\r\n }\r\n />\r\n \r\n\r\n {/** Blur Level */}\r\n \r\n {\r\n const value = index+1;\r\n const text = `${index+1}`;\r\n return [value, text];\r\n })\r\n }\r\n />\r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output folder */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n});\r\n","import {\r\n CheckboxWithLabel, DropdownWithLabel,\r\n memoWithOpen,\r\n FileWithLabel,\r\n SimpleDialog\r\n} from \"../../components\";\r\nimport React, {useEffect, useMemo, useState} from \"react\";\r\nimport {useDispatch} from \"react-redux\";\r\nimport {useTaskQueue, useViewer} from \"../../hooks\";\r\nimport {\r\n Checkbox,\r\n Grid,\r\n InputLabel,\r\n ListItemText,\r\n MenuItem,\r\n Select,\r\n Theme,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {lasFileFilter} from \"../../file-extensions\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport clsx from \"clsx\";\r\nimport {classifications} from \"../../classifications\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n flexibleHeight: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n multipleSelectWithLabel: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n paddingBottom: {\r\n paddingBottom: `${theme.spacing(1)} !important`,\r\n },\r\n inputParent: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n minHeight: theme.spacing(3),\r\n paddingBottom: theme.spacing(0.5)\r\n }\r\n })\r\n);\r\n\r\nenum OperationTypes {\r\n Include = \"include\",\r\n Exclude = \"exclude\"\r\n}\r\n\r\nexport const ClassifyExport = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const {viewer} = useViewer();\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [operationType, setOperationType] = useState(OperationTypes.Include);\r\n const [classValues, setClassValues] = useState([]);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const classList = useMemo(() => {\r\n if (!open || !asset) return new Set();\r\n const pointCloud = viewer.pointclouds.getByID(asset.id);\r\n return pointCloud.uniqueClassifications;\r\n }, [open, asset]);\r\n\r\n const canSubmit = (outputPath !== null)\r\n && (operationType !== null)\r\n && (classValues.length > 0);\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"classify_export\";\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--outputlas\", outputPath,\r\n \"--operation\", operationType,\r\n \"--classes\", classValues.toString()\r\n ];\r\n\r\n const afterClose = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new thinned LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n onClose();\r\n addRunningTask(commands, afterClose);\r\n };\r\n\r\n const handleClassChange = (event) => {\r\n setClassValues(event.target.value);\r\n };\r\n\r\n // Function of how the classes vals are rendered and shown in dropdown\r\n const renderClasses = (selected) => {\r\n const renderedClasses = [];\r\n selected.forEach((classVal) => {\r\n renderedClasses.push(formatClassValue(classVal));\r\n });\r\n return renderedClasses.join(\" ,\");\r\n };\r\n\r\n const formatClassValue = (classValue) => {\r\n return classifications[classValue].name + ` (${classValue})`;\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setOperationType(OperationTypes.Include);\r\n setClassValues([]);\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Operation Type */}\r\n \r\n \r\n \r\n\r\n {/** Classes */}\r\n \r\n
\r\n
\r\n \r\n {t('functions.classify_export.classes')}\r\n \r\n
\r\n\r\n \r\n {t('functions.classify_export.classes_description')}\r\n \r\n\r\n \r\n {Array.from(classList.values()).map((classValue) => {\r\n return (\r\n \r\n -1} />\r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n
\r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output LAS */}\r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n );\r\n});\r\n","import {\r\n CheckboxWithLabel, DropdownWithLabel,\r\n memoWithOpen,\r\n SimpleDialog,\r\n TextWithLabel\r\n} from \"../../components\";\r\nimport React, {useEffect, useState} from \"react\";\r\nimport {useDispatch} from \"react-redux\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport { FormHelperText, Grid, Theme } from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n helperText: {\r\n textAlign: \"center\",\r\n paddingTop: theme.spacing(2)\r\n },\r\n savedLocation: {\r\n wordWrap: \"break-word\"\r\n }\r\n }),\r\n);\r\n\r\nexport const ConvertUnits = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n const {addAssetPaths} = useAssetTools();\r\n\r\n const [inputUnits, setInputUnits] = useState('m');\r\n const [outputUnits, setOutputUnits] = useState('ft');\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const nullUnits = inputUnits === '' || outputUnits === '';\r\n const sameUnits = (inputUnits === outputUnits && !nullUnits);\r\n const canSubmit = (!sameUnits && !nullUnits);\r\n\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n // Get name of saved file for display\r\n const basename = asset.name.replace(/\\.[^/.]+$/, \"\");\r\n const pathNameNoExt = asset.path.replace(/\\.[^/.]+$/, \"\");\r\n const outputName = `${basename}_${inputUnits}_to_${outputUnits}.las`;\r\n const outputPath = `${pathNameNoExt}_${inputUnits}_to_${outputUnits}.las`;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"convert_units\";\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--input_units\", inputUnits,\r\n \"--output_units\", outputUnits\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new thinned LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setInputUnits('m');\r\n setOutputUnits('ft');\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Input Units */}\r\n \r\n \r\n \r\n\r\n {/** Output Units */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output Path Display */}\r\n {canSubmit && \r\n \r\n }\r\n\r\n \r\n {sameUnits && \r\n {t('functions.convert_units.same_units_error')}\r\n }\r\n \r\n \r\n );\r\n});\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { FormHelperText, Grid, Theme } from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {\r\n CheckboxWithLabel,\r\n DropdownWithLabel,\r\n FolderWithLabel,\r\n NumberFieldWithLabel,\r\n SimpleDialog,\r\n memoWithOpen,\r\n} from \"../../components\";\r\nimport { pathWithExtension, useAssetTools } from \"../../utilities\";\r\nimport path from \"path\";\r\nimport LocalScene from \"../../viewer/js/projections\";\r\nimport { useTaskQueue } from \"../../hooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nenum ChannelType {\r\n Empty=\"empty\",\r\n Red=\"red\",\r\n Green=\"green\",\r\n Blue=\"blue\",\r\n Linearity=\"linearity\",\r\n Planarity=\"planarity\",\r\n Scattering=\"scattering\",\r\n Normal=\"normal\",\r\n Intensity=\"intensity\",\r\n NumReturns=\"num_returns\",\r\n ReturnNumber=\"return_number\",\r\n Classification=\"classification\"\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n helperText: {\r\n textAlign: \"center\",\r\n paddingTop: theme.spacing(2)\r\n }\r\n }),\r\n);\r\n\r\ninterface ChannelSelectorProps {\r\n title: string;\r\n value: string | number;\r\n onChange: React.Dispatch;\r\n}\r\n\r\nconst ChannelSelector = (props: ChannelSelectorProps) => {\r\n const {title, value, onChange} = props;\r\n\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const LasToOrthomosaic = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const classes = useStyles();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const defaultPixelSize = {value: 0.1, error: false};\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [channelOne, setChannelOne] = useState(ChannelType.Empty);\r\n const [channelTwo, setChannelTwo] = useState(ChannelType.Empty);\r\n const [channelThree, setChannelThree] = useState(ChannelType.Empty);\r\n const [pixelSize, setPixelSize] = useState(defaultPixelSize);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n };\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"las_to_orthomosaic\";\r\n const tifPath = pathWithExtension(\r\n path.join(outputPath, asset.name), \"tif\");\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--input_path\", asset.path,\r\n \"--output_path\", outputPath,\r\n \"--channel_1\", channelOne,\r\n \"--channel_2\", channelTwo,\r\n \"--channel_3\", channelThree,\r\n \"--pixel_size\", pixelSize.value,\r\n \"--units\", LocalScene.dataProjectionUnits\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Add new orthmosaic\r\n await addAssetPaths([tifPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const emptyChannels = (channelOne === ChannelType.Empty)\r\n && (channelTwo === ChannelType.Empty)\r\n && (channelThree === ChannelType.Empty);\r\n\r\n const canSubmit = (outputPath !== null)\r\n && !pixelSize.error\r\n && !emptyChannels;\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Channel 1 color */}\r\n \r\n \r\n \r\n\r\n {/** Channel 2 color */}\r\n \r\n \r\n \r\n\r\n {/** Channel 3 color */}\r\n \r\n \r\n \r\n\r\n {/** Pixel size */}\r\n \r\n \r\n \r\n\r\n {/** Output folder */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n \r\n\r\n {emptyChannels && \r\n {t('functions.las_to_orthomosaic.at_least_one_channel_must_be')}\r\n }\r\n \r\n \r\n );\r\n});\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n Grid\r\n} from \"@mui/material\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n CheckboxWithLabel,\r\n FolderWithLabel,\r\n SimpleDialog,\r\n memoWithOpen,\r\n} from \"../../components\";\r\nimport {pathWithExtension, useAssetTools} from \"../../utilities\";\r\nimport path from \"path\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport LocalScene from \"../../viewer/js/projections\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nexport const LasToSolv3dStreamable = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [isSingleFile, setSingleFile] = useState(true);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const canSubmit = (outputPath !== null);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"process_las\";\r\n const binPath = pathWithExtension(\r\n path.join(outputPath, \"octree\"), \"bin\");\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--input_path\", asset.path,\r\n \"--output_folder\", outputPath,\r\n \"--single_file\", isSingleFile,\r\n \"--units\", LocalScene.dataProjectionUnits\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new streamable point cloud\r\n await addAssetPaths([binPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setImportResult(true);\r\n setSingleFile(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Single File */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output folder */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\n\r\n","import {\r\n CheckboxWithLabel,\r\n FileWithLabel,\r\n memoWithOpen,\r\n NumberFieldWithLabel,\r\n SimpleDialog\r\n} from \"../../components\";\r\nimport React, {useEffect, useState} from \"react\";\r\nimport {useDispatch} from \"react-redux\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport {Grid} from \"@mui/material\";\r\nimport {lasFileFilter} from \"../../file-extensions\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nexport const Sampling = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const defaultSamplingRateOptions = {\r\n value: 40,\r\n error: false\r\n };\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [samplingRate, setSamplingRate] = useState(defaultSamplingRateOptions);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const validSampling = samplingRate.error === false && samplingRate.value !== null;\r\n const canSubmit = (outputPath !== null && validSampling);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"sampling\";\r\n const decimalSamplingRate = samplingRate.value/100;\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--outputlas\", outputPath,\r\n \"--rate\", decimalSamplingRate\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new sampled LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setSamplingRate(defaultSamplingRateOptions);\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Sampling Rate */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output LAS */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n});\r\n","import React, {useEffect, useState} from \"react\";\r\nimport { FormHelperText, Grid, Theme } from \"@mui/material\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n CheckboxWithLabel,\r\n DropdownWithLabel,\r\n FileWithLabel,\r\n NumberFieldWithLabel,\r\n SimpleDialog,\r\n memoWithOpen,\r\n} from \"../../components\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport {lasFileFilter} from \"../../file-extensions\";\r\nimport {tempDirectoryPath} from \"../../electron-modules\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nenum ThinTechniques {\r\n Highest = \"highest\",\r\n Lowest = \"lowest\",\r\n Average = \"average\"\r\n}\r\n\r\nenum ThinDimensions {\r\n Two = 2,\r\n Three = 3,\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n invalidThinningError: {\r\n padding: theme.spacing(1.0),\r\n color: theme.palette.warning.main,\r\n textAlign: \"center\"\r\n }\r\n }),\r\n);\r\n\r\nexport const ThinLas = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const {addAssetPaths} = useAssetTools();\r\n\r\n const defaultThinningOptions = {\r\n value: 0.1,\r\n error: false\r\n };\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [thinTechnique, setThinTechnique] = useState(ThinTechniques.Lowest);\r\n const [thinDimension, setThinDimension] = useState(ThinDimensions.Two);\r\n const [thinning, setThinning] = useState(defaultThinningOptions);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const inValidThinningValue = thinning.value <= 0;\r\n const canSubmit = (outputPath !== null && !thinning.error && thinDimension && thinTechnique && !inValidThinningValue);\r\n\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"thin\";\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--outputlas\", outputPath,\r\n \"--precision\", thinning.value,\r\n \"--keepvalue\", thinTechnique,\r\n \"--temp\", tempDirectoryPath,\r\n \"--dim\", thinDimension\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new thinned LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setThinTechnique(ThinTechniques.Lowest);\r\n setThinDimension(ThinDimensions.Two);\r\n setThinning(defaultThinningOptions);\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Output thinning */}\r\n \r\n \r\n \r\n\r\n {/** Thin Technique */}\r\n \r\n \r\n \r\n\r\n {/** Thin Dimension */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output LAS */}\r\n \r\n \r\n \r\n \r\n\r\n {inValidThinningValue && \r\n {t('functions.thin_las.invalid_thinning_value')}\r\n }\r\n\r\n \r\n \r\n );\r\n});\r\n\r\n\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { MenuItem, Typography } from \"@mui/material\";\r\nimport FunctionsIcon from '@mui/icons-material/Functions';\r\nimport { NestedMenu } from \"../components\";\r\nimport {\r\n BlurVehiclesPeople,\r\n ClassifyExport,\r\n ConvertUnits,\r\n LasToOrthomosaic,\r\n LasToSolv3dStreamable,\r\n Sampling,\r\n ThinLas\r\n} from \"./definitions\";\r\nimport { Asset, AssetType } from \"../redux/assets-slice\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { useDialog } from \"../hooks\";\r\n\r\nconst generateFunctionData = (title, condition, onClick) => {\r\n return {\r\n name: title,\r\n condition: condition,\r\n component: (\r\n \r\n {title}\r\n \r\n )\r\n };\r\n};\r\n\r\ninterface FunctionsMenuProps {\r\n assets: Asset[];\r\n contextOpen: boolean;\r\n closeContextMenu: () => void;\r\n}\r\n\r\nexport const FunctionsMenu = React.forwardRef((props: FunctionsMenuProps, ref) => {\r\n const {assets, contextOpen, closeContextMenu} = props;\r\n\r\n const {t} = useTranslation();\r\n const blurVehiclesPeopleDialog = useDialog();\r\n const lasToOrthomosaicDialog = useDialog();\r\n const lasToSolv3dStreamableDialog = useDialog();\r\n const thinLasDialog = useDialog();\r\n const samplingDialog = useDialog();\r\n const classifyExportDialog = useDialog();\r\n const convertUnitsDialog = useDialog();\r\n\r\n const LASFiles = assets\r\n .filter(x => x.type === AssetType.LAS);\r\n\r\n const cameraFiles = assets\r\n .filter(x => x.type === AssetType.Panoramic);\r\n\r\n const hasLASFiles = LASFiles.length > 0;\r\n const hasCameraFiles = cameraFiles.length > 0;\r\n\r\n const handleBlurVehiclesPeople = () => {\r\n closeContextMenu();\r\n blurVehiclesPeopleDialog.handleOpen();\r\n };\r\n\r\n const handleLasToOrthomosaic = () => {\r\n closeContextMenu();\r\n lasToOrthomosaicDialog.handleOpen();\r\n };\r\n\r\n const handleLasToSolv3dStreamable = () => {\r\n closeContextMenu();\r\n lasToSolv3dStreamableDialog.handleOpen();\r\n };\r\n\r\n const handleThinLas = () => {\r\n closeContextMenu();\r\n thinLasDialog.handleOpen();\r\n };\r\n\r\n const handleSampling = () => {\r\n closeContextMenu();\r\n samplingDialog.handleOpen();\r\n };\r\n\r\n const handleClassifyExport = () => {\r\n closeContextMenu();\r\n classifyExportDialog.handleOpen();\r\n };\r\n\r\n const handleConvertUnits = () => {\r\n closeContextMenu();\r\n convertUnitsDialog.handleOpen();\r\n };\r\n\r\n const getMenuItems = () => {\r\n if (!contextOpen) return [];\r\n\r\n const data = [\r\n generateFunctionData(\r\n t('functions.blur_vehicles_people.title'),\r\n hasCameraFiles,\r\n handleBlurVehiclesPeople\r\n ),\r\n generateFunctionData(\r\n t('functions.las_to_orthomosaic.title'),\r\n hasLASFiles,\r\n handleLasToOrthomosaic\r\n ),\r\n generateFunctionData(\r\n t('functions.las_to_solv3d_streamable.title'),\r\n hasLASFiles,\r\n handleLasToSolv3dStreamable\r\n ),\r\n generateFunctionData(\r\n t('functions.thin_las.title'),\r\n hasLASFiles,\r\n handleThinLas\r\n ),\r\n generateFunctionData(\r\n t('functions.sampling.title'),\r\n hasLASFiles,\r\n handleSampling\r\n ),\r\n generateFunctionData(\r\n t('functions.classify_export.title'),\r\n hasLASFiles,\r\n handleClassifyExport\r\n ),\r\n generateFunctionData(\r\n t('functions.convert_units.title'),\r\n hasLASFiles,\r\n handleConvertUnits\r\n )\r\n ];\r\n\r\n let filtered = data\r\n .filter(x => x.condition)\r\n .sort((a, b) => a.name.localeCompare(b.name))\r\n .map(x => x.component);\r\n\r\n if (filtered.length === 0) {\r\n return (\r\n \r\n \r\n {t('functions.no_functions_available')}\r\n \r\n \r\n );\r\n }\r\n\r\n return filtered;\r\n };\r\n\r\n return (\r\n \r\n }\r\n parentMenuOpen={contextOpen}\r\n >\r\n {getMenuItems()}\r\n \r\n\r\n {hasCameraFiles && \r\n\r\n {/** Blur vehicles and people */}\r\n \r\n\r\n }\r\n\r\n {hasLASFiles && \r\n\r\n {/** LAS to Orthomosaic */}\r\n \r\n\r\n {/** LAS to Solv3D Streamable Point Cloud */}\r\n \r\n\r\n {/** Thin Las */}\r\n \r\n\r\n {/** Sampling */}\r\n \r\n\r\n {/** Sampling */}\r\n \r\n\r\n {/** Convert Units */}\r\n \r\n\r\n }\r\n\r\n \r\n );\r\n});\r\n","export enum ServerType {\r\n ArcGISMapServer = 0,\r\n ArcGISFeatureServer = 1,\r\n ArcGISImageServer = 2,\r\n ArcGISOnline = 3,\r\n OGCWMS = 4,\r\n OGCWMTS = 5,\r\n OGCWFS = 6,\r\n TileServer = 7\r\n}","import React, {useEffect, useState, memo, useCallback, useMemo} from \"react\";\r\nimport {isCloudSite, isElectronApp} from '../electron-modules';\r\nimport CloudIcon from \"@mui/icons-material/Cloud\";\r\nimport InfoIcon from \"@mui/icons-material/Info\";\r\nimport PanoramaIcon from '@mui/icons-material/Panorama';\r\nimport PanoramaOutlinedIcon from '@mui/icons-material/PanoramaOutlined';\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport PublicIcon from '@mui/icons-material/Public';\r\nimport {\r\n Avatar,\r\n Checkbox,\r\n DialogContent,\r\n ListItemButton,\r\n ListItemSecondaryAction,\r\n MenuItem,\r\n Typography\r\n} from \"@mui/material\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport ErrorIcon from '@mui/icons-material/Error';\r\nimport PhotoLibraryIcon from '@mui/icons-material/PhotoLibrary';\r\nimport SwapHorizIcon from '@mui/icons-material/SwapHoriz';\r\nimport WarningIcon from '@mui/icons-material/Warning';\r\nimport ImportExportIcon from '@mui/icons-material/ImportExport';\r\nimport Satellite from '@mui/icons-material/Satellite';\r\nimport {\r\n DenseMenu,\r\n DraggableDialog,\r\n DropDownDialog,\r\n LinearProgressWithLabel,\r\n MenuDivider,\r\n PromptDialog,\r\n TextDialog\r\n} from \"../components\";\r\nimport { Theme, useTheme } from \"@mui/material/styles\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {\r\n AssetType,\r\n updateAsset,\r\n deleteAsset,\r\n Asset,\r\n CameraData,\r\n TagData,\r\n XMLData,\r\n WebMapData\r\n} from \"../redux/assets-slice\";\r\nimport {useDispatch} from 'react-redux';\r\nimport { downloadFile } from '../utilities';\r\nimport {\r\n DenseIcon,\r\n FontAwesomeIcon,\r\n ArrowTooltip\r\n} from '../components';\r\nimport clsx from 'clsx';\r\nimport {toast} from \"../app\";\r\nimport {\r\n TagItemsDialog,\r\n TagIconDialog,\r\n ModelLayerDialog,\r\n WebSourceLayerDialog\r\n} from \".\";\r\nimport { getTagTexturePath } from \"../viewer/textures/tag-icons\";\r\nimport { isEqual } from 'lodash';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FunctionsMenu } from \"../functions\";\r\nimport { useAuth, useContextMenu, useDialog, useViewer } from \"../hooks\";\r\nimport { ServerType } from \"../types/web-sources\";\r\nimport { csvExportFilter } from \"../file-extensions\";\r\nimport * as CSV from 'csv-string';\r\n\r\nconst updateInterval = 200;\r\n\r\ninterface AssetState {\r\n assetPercent: number\r\n assetError: boolean\r\n assetIsLarge: boolean\r\n}\r\n\r\nconst initialAssetState = {\r\n assetPercent: 0,\r\n assetError: false,\r\n assetIsLarge: false,\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n floatRight: {\r\n float: \"right\"\r\n },\r\n itemText: {\r\n wordBreak: \"break-all\",\r\n overflow: \"hidden\"\r\n },\r\n assetMargins: {\r\n margin: '0px 12px 0px 0px'\r\n },\r\n assetError: {\r\n color: theme.palette.error.main,\r\n fontWeight: \"bold\"\r\n },\r\n assetWarning: {\r\n color: theme.palette.warning.main,\r\n fontWeight: \"bold\"\r\n },\r\n assetInfo: {\r\n display: 'flex',\r\n margin: '0px'\r\n },\r\n assetCheckbox: {\r\n position: \"relative\",\r\n transform: \"translateY(0%)\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n right: \"8px\"\r\n },\r\n checkboxParent: {\r\n padding: \"6px\"\r\n },\r\n percentLabel: {\r\n textAlign: \"right\"\r\n },\r\n fileInfoHeading: {\r\n paddingTop: theme.spacing(2.0)\r\n },\r\n fileInfoText: {\r\n display: \"block\"\r\n },\r\n tagAvatar: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n borderRadius: theme.spacing(0)\r\n },\r\n titleClose: {\r\n position: 'absolute',\r\n right: theme.spacing(0),\r\n color: theme.palette.grey[500],\r\n },\r\n remoteAssetIcon: {\r\n fontSize: \"0.8rem\",\r\n marginRight: \"-0.8rem\", // must match font size\r\n position: \"relative\",\r\n left: \"-8px\",\r\n bottom: \"-5px\",\r\n opacity: \"1.0\",\r\n color: \"lightgray\",\r\n filter: \"drop-shadow(2px 2px 1px darkgray)\"\r\n }\r\n }),\r\n);\r\n\r\ninterface LasFileInfoDialogProps {\r\n asset: Asset;\r\n open: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nconst LasFileInfoDialog = (props: LasFileInfoDialogProps) => {\r\n const {open, onClose, asset} = props;\r\n\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const [data, setData] = useState(null);\r\n\r\n const hasVLRSData = data ? data.vlrs_data : false;\r\n\r\n let vlrsKeys = null;\r\n if (hasVLRSData) {\r\n vlrsKeys = Object.keys(data.vlrs_data);\r\n vlrsKeys.sort();\r\n }\r\n\r\n useEffect(() => {\r\n if (!viewer || !open) return;\r\n const info = viewer.getLasFileInfo(asset.id);\r\n\r\n if (info) {\r\n setData(info);\r\n return;\r\n }\r\n\r\n toast.warning(t(\"toast.file-info-missing\"));\r\n onClose();\r\n }, [viewer, open]);\r\n\r\n return (\r\n \r\n {data && \r\n \r\n {t('asset.general-attributes')}\r\n \r\n\r\n \r\n {t('asset.file-name')}: {asset.name}\r\n \r\n\r\n \r\n {t('asset.point-information')}\r\n \r\n \r\n {t('asset.point-count')}: {data.points.count}\r\n \r\n \r\n {t('asset.x-range')}: [{data.points.x_min.toFixed(2)}, {data.points.x_max.toFixed(2)}]\r\n \r\n \r\n {t('asset.y-range')}: [{data.points.y_min.toFixed(2)}, {data.points.y_max.toFixed(2)}]\r\n \r\n \r\n {t('asset.z-range')}: [{data.points.z_min.toFixed(2)}, {data.points.z_max.toFixed(2)}]\r\n \r\n\r\n \r\n {t('asset.data-format')}\r\n \r\n \r\n {t('asset.las-version')}: {data.attributes.version}\r\n \r\n \r\n {t('asset.record-id')}: {data.attributes.record_id}\r\n \r\n \r\n {t('asset.contains-timestamp')}: {data.attributes.has_time_stamp ? t('general.yes') : t('general.no')}\r\n \r\n \r\n {t('asset.contains-rgb')}: {data.attributes.has_rgb ? t('general.yes') : t('general.no')}\r\n \r\n \r\n {t('asset.contains-intensity')}: {data.attributes.has_intensity ? t('general.yes') : t('general.no')}\r\n \r\n\r\n \r\n {t('asset.vlrs-metadata')}\r\n \r\n\r\n {hasVLRSData && (\r\n {vlrsKeys.map((key, index) => {\r\n return (\r\n \r\n {key}: {data.vlrs_data[key]}\r\n \r\n );\r\n })}\r\n )}\r\n\r\n {/* Nothing found in VLRS */}\r\n {!hasVLRSData && (\r\n \r\n {t('asset.no-data-found')}\r\n \r\n )}\r\n\r\n }\r\n \r\n );\r\n};\r\n\r\ninterface AssetItemProps {\r\n asset: Asset;\r\n setDraggingAsset: React.Dispatch;\r\n}\r\n\r\nexport const AssetItem = memo((props: AssetItemProps) => {\r\n const {asset, setDraggingAsset} = props;\r\n\r\n const dispatch = useDispatch();\r\n const theme = useTheme();\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const fileInfoDialog = useDialog();\r\n const detailsDialog = useDialog();\r\n const deleteDialog = useDialog();\r\n const renameDialog = useDialog();\r\n const iconUpdateDialog = useDialog();\r\n const modelLayersDialog = useDialog();\r\n const webmapLayersDialog = useDialog();\r\n const landXMLDialog = useDialog();\r\n const {permissions} = useAuth();\r\n\r\n const [assetState, setAssetState] = useState({\r\n ...initialAssetState\r\n });\r\n\r\n\r\n const isPanoramic = asset.type === AssetType.Panoramic;\r\n const isPlanar = asset.type === AssetType.Planar;\r\n const isEncompassCloud = asset.type === AssetType.Encompass;\r\n const isPotreeCloud = asset.type === AssetType.Potree;\r\n const isLASFile = asset.type === AssetType.LAS;\r\n const isE57File = asset.type === AssetType.E57Points;\r\n const isOrtho = asset.type === AssetType.OrthoMosaic;\r\n const isTag = asset.type === AssetType.Tag;\r\n const isIFC = asset.type === AssetType.IFC;\r\n const isSHP = asset.type === AssetType.SHP;\r\n const isDXF = asset.type === AssetType.DXF;\r\n const isLandXML = asset.type === AssetType.LandXML;\r\n const isWebMap = asset.type === AssetType.Webmap;\r\n\r\n const isModelFile = isIFC || isSHP || isDXF;\r\n const isCamera = isPanoramic || isPlanar;\r\n const isPointCloud = isLASFile || isEncompassCloud || isE57File || isPotreeCloud;\r\n\r\n const canEditLayers = useMemo(() => {\r\n if (isSHP || isDXF) {\r\n return true;\r\n }\r\n\r\n if (isWebMap) {\r\n const type = (asset.data as WebMapData).type;\r\n return (type !== ServerType.ArcGISImageServer)\r\n && (type !== ServerType.TileServer);\r\n }\r\n\r\n return false;\r\n }, [asset.type]);\r\n\r\n /** Handle asset percentage / state changes */\r\n useEffect(() => {\r\n // Create interval to update state\r\n const interval = setInterval(() => {\r\n updateAssetState();\r\n }, updateInterval);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [viewer, assetState]);\r\n\r\n useEffect(() => {\r\n // Update initial state\r\n updateAssetState();\r\n }, []);\r\n\r\n const updateAssetState = () => {\r\n if (!viewer) return;\r\n\r\n let newAssetState = {} as AssetState;\r\n\r\n if (isPointCloud) {\r\n newAssetState = viewer.getCloudStatus(asset.id);\r\n } else if (isModelFile) {\r\n newAssetState = viewer.getModelStatus(asset.id);\r\n }\r\n\r\n if (isEqual(assetState, newAssetState)) return;\r\n setAssetState(newAssetState);\r\n };\r\n\r\n const handleRenameSubmit = (name: string) => {\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n name: name\r\n }));\r\n\r\n renameDialog.handleClose();\r\n };\r\n\r\n const handleRenameClick = () => {\r\n contextMenu.handleClose();\r\n renameDialog.handleOpen();\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n contextMenu.handleClose();\r\n deleteDialog.handleOpen();\r\n };\r\n\r\n const handleIconChangeClick = () => {\r\n contextMenu.handleClose();\r\n iconUpdateDialog.handleOpen();\r\n };\r\n\r\n const handleOrderingClick = () => {\r\n contextMenu.handleClose();\r\n landXMLDialog.handleOpen();\r\n };\r\n\r\n const handleOrderingClose = (state: boolean) => {\r\n contextMenu.handleClose();\r\n landXMLDialog.handleClose();\r\n\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n enu: state\r\n }));\r\n };\r\n\r\n const handleTagCSVExport = (asset) => {\r\n contextMenu.handleClose();\r\n const tags = viewer.getTagsByCSV(asset.id);\r\n const rows = viewer.getTagRowsCSV(tags);\r\n const content = CSV.stringify(rows);\r\n downloadFile(asset.name, content, \"csv\", csvExportFilter);\r\n };\r\n\r\n const handleImageCSVExport = (asset) => {\r\n contextMenu.handleClose();\r\n const cameras = viewer.getCamerasByCSV(asset.id);\r\n const rows = viewer.getCameraRowsCSV(cameras);\r\n const content = CSV.stringify(rows);\r\n downloadFile(asset.name, content, \"csv\", csvExportFilter);\r\n };\r\n\r\n const handleModelLayersClick = () => {\r\n contextMenu.handleClose();\r\n modelLayersDialog.handleOpen();\r\n };\r\n\r\n const handleWebmapLayersClick = () => {\r\n contextMenu.handleClose();\r\n webmapLayersDialog.handleOpen();\r\n };\r\n\r\n const onAssetDelete = () => {\r\n dispatch(deleteAsset(asset.id));\r\n };\r\n\r\n const handleAssetClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n if (isOrtho) {\r\n viewer?.snapToOrtho(asset.id);\r\n } else if (isPointCloud) {\r\n viewer?.snapToPointCloud(asset.id);\r\n } else if (isCamera) {\r\n viewer?.snapToImages(asset.id);\r\n } else if (isTag) {\r\n detailsDialog.handleOpen();\r\n } else if (isModelFile) {\r\n viewer?.snapToModel(asset.id);\r\n }\r\n };\r\n\r\n const handleDragStart = () => {\r\n setDraggingAsset(asset.id);\r\n };\r\n\r\n const handleDragEnd = () => {\r\n setDraggingAsset(null);\r\n };\r\n\r\n const handleVisibilityClick = () => {\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n visible: !asset.visible\r\n }));\r\n };\r\n\r\n const handleFileInfoClick = () => {\r\n contextMenu.handleClose();\r\n fileInfoDialog.handleOpen();\r\n };\r\n\r\n const getAssetCount = () => {\r\n if (isPanoramic) {\r\n const items = asset.data as CameraData[];\r\n return t(\"asset.panoramic-count\", {\r\n count: items.length\r\n });\r\n } else if (isPlanar) {\r\n const items = asset.data as CameraData[];\r\n return t(\"asset.planar-count\", {\r\n count: items.length\r\n });\r\n } else if (isTag) {\r\n const {items} = asset.data as TagData;\r\n return t(\"asset.tags-count\", {\r\n count: items.length\r\n });\r\n }\r\n\r\n return;\r\n };\r\n\r\n const getTagAttributes = () => {\r\n if (!isTag) return {\r\n tagTexture: undefined,\r\n tagSize: undefined\r\n };\r\n\r\n const {texture, size} = (asset.data as TagData);\r\n\r\n return {\r\n tagTexture: texture,\r\n tagSize: size\r\n };\r\n };\r\n\r\n const submitTagIcon = useCallback((texture: string, size: number) => {\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n texture: texture,\r\n size: size\r\n }));\r\n\r\n iconUpdateDialog.handleClose();\r\n }, [asset]);\r\n\r\n const {assetPercent, assetError, assetIsLarge} = assetState;\r\n\r\n const isLargeCloud = isPointCloud\r\n && assetIsLarge\r\n && (assetPercent < 100)\r\n && !assetError;\r\n\r\n const showPercent = (isLASFile || isE57File || isModelFile)\r\n && asset.visible\r\n && (assetPercent < 100);\r\n\r\n const assetCount = getAssetCount();\r\n const {tagTexture, tagSize} = getTagAttributes();\r\n const isRemoteAsset = asset.cloud && !isCloudSite;\r\n\r\n // Right now we only officially support editing/deleting\r\n // tag collections for the cloud site\r\n const canDeleteAsset = isElectronApp || (permissions.delete && isTag);\r\n const canEditAsset = isElectronApp || (permissions.edit && isTag);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n {/* Panoramic File */}\r\n {(isPanoramic) && ()}\r\n\r\n {/* Planar File */}\r\n {(isPlanar) && ()}\r\n\r\n {/* Tag File */}\r\n {isTag && ()}\r\n\r\n {/* Orthomosaic File */}\r\n {(isOrtho) && ()}\r\n\r\n {/* LandXML File */}\r\n {(isLandXML) && }\r\n\r\n {/* Webmap */}\r\n {(isWebMap) && }\r\n\r\n {/* Model File */}\r\n {isModelFile && \r\n {!assetError && (\r\n \r\n )}\r\n\r\n {assetError && (\r\n \r\n \r\n \r\n )}\r\n }\r\n\r\n {/* Pointcloud File */}\r\n {isPointCloud && \r\n {(!assetError && !isLargeCloud) && (\r\n \r\n )}\r\n\r\n {assetError && (\r\n \r\n \r\n \r\n )}\r\n\r\n {(isLargeCloud) && (\r\n \r\n \r\n \r\n )}\r\n }\r\n\r\n {isRemoteAsset && \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n {/* File load percent */}\r\n {showPercent && (
\r\n \r\n
)}\r\n\r\n \r\n\r\n \r\n {/** Functions submenu */}\r\n {isElectronApp && }\r\n\r\n {isElectronApp && }\r\n\r\n {/** Export image csv */}\r\n {isPanoramic && {\r\n handleImageCSVExport(asset);\r\n }}>\r\n \r\n \r\n \r\n \r\n {t('asset.export-corrected-csv')}\r\n \r\n }\r\n\r\n {/** Export tag csv */}\r\n {isTag && {\r\n handleTagCSVExport(asset);\r\n }}>\r\n \r\n \r\n \r\n \r\n {t('asset.export-tag-csv')}\r\n \r\n }\r\n\r\n {/** Get LAS information */}\r\n {isLASFile && (\r\n \r\n \r\n \r\n \r\n {t('asset.file-info')}\r\n \r\n )}\r\n\r\n {/** Update tag icon */}\r\n {isTag && permissions.edit &&\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.update-tag-icon')}\r\n \r\n \r\n }\r\n\r\n {/** Manage webmap layers */}\r\n {isWebMap && canEditLayers && (\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.manage_layers')}\r\n \r\n \r\n )}\r\n\r\n {/** Manage model layers */}\r\n {isModelFile && canEditLayers && (\r\n \r\n \r\n \r\n \r\n \r\n {\"Manage Layers\"}\r\n \r\n \r\n )}\r\n\r\n {/** LandXML ordering */}\r\n {isLandXML && isElectronApp && (\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.landxml-ordering')}\r\n \r\n \r\n )}\r\n\r\n {/** Rename asset */}\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.rename')}\r\n \r\n \r\n\r\n {/** Delete asset */}\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.delete')}\r\n \r\n \r\n \r\n\r\n {isTag && ()}\r\n\r\n {isWebMap && canEditLayers && ()}\r\n\r\n {isModelFile && canEditLayers && ()}\r\n\r\n {/* Discard measurements dialog */}\r\n {\r\n onAssetDelete();\r\n }}\r\n title={t('asset.delete-title')}\r\n prompt={t('asset.delete-prompt', {\r\n name: asset.name\r\n })}\r\n button={t(\"buttons.delete\")}\r\n />\r\n\r\n {/* Rename Dialog */}\r\n \r\n\r\n {/* LAS file info Dialog */}\r\n \r\n\r\n {/* Tag info dialog */}\r\n {isTag && }\r\n\r\n\r\n {isLandXML && }\r\n\r\n
\r\n );\r\n});\r\n","import React, {memo, useCallback, useEffect, useMemo, useState} from \"react\";\r\nimport {useSelector, useDispatch} from 'react-redux';\r\nimport { Theme, useTheme } from \"@mui/material/styles\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport tagTextures, { defaultTagTexture, getTagTexturePath } from \"../viewer/textures/tag-icons\";\r\nimport Pagination from \"@mui/lab/Pagination/Pagination\";\r\nimport LinkIcon from '@mui/icons-material/Link';\r\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\r\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\r\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport {\r\n createTags,\r\n updateTag,\r\n deleteTag,\r\n getTagAssets,\r\n selectAllAssets,\r\n TagData,\r\n TagItemData,\r\n Asset,\r\n createAsset,\r\n AssetType\r\n} from \"../redux/assets-slice\";\r\nimport {createFolder, selectAllFolders} from '../redux/folders-slice';\r\nimport {\r\n DialogContent,\r\n InputLabel,\r\n TextField,\r\n Avatar,\r\n Grid,\r\n Collapse,\r\n Button,\r\n DialogActions,\r\n Select,\r\n FormHelperText\r\n} from \"@mui/material\";\r\nimport clsx from 'clsx';\r\nimport {\r\n DraggableDialog,\r\n PromptDialog,\r\n EnhancedTable,\r\n SimpleDialog,\r\n InputWithLabel,\r\n DropdownWithLabel,\r\n DenseDivider,\r\n DividerWithText,\r\n EditableTextField,\r\n EditableDropdown,\r\n TextWithLabel,\r\n ColorPicker,\r\n optionsToDropdown,\r\n EditButtonGroup\r\n} from \"../components\";\r\nimport { headerHeight, toast } from \"../app\";\r\nimport { getLocalizedFolderName, toLocaleString } from \"../utilities\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { isStaticSite } from \"../electron-modules\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { useAuth, useDialog, useUniqueProjectID, useViewer } from \"../hooks\";\r\nimport { AnnotationDrawType, AnnotationSize, TagSize } from \"../types/tags\";\r\nimport { sendCustomEvent } from \"../events\";\r\nimport { useTableState } from \"../hooks/use-table-state\";\r\nimport { useAppDispatch } from \"../redux/store\";\r\nimport copyTextToClipboard from \"copy-to-clipboard\";\r\nimport { selectViewerSwitched } from \"../redux/settings-slice\";\r\n\r\nexport const tagIconsPerRow = 8;\r\nexport const tagRowsPerPage = 3;\r\n\r\nconst NEW_CSV_ID = \"__new_csv__\";\r\nconst NEW_FOLDER_ID = \"__new_folder__\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n textField: {\r\n marginBottom: theme.spacing(3)\r\n },\r\n selectDivider: {\r\n margin: theme.spacing(0.5),\r\n opacity: 0.2\r\n },\r\n asterisk: {\r\n \"&:after\": {\r\n content:'\"*\"',\r\n color: \"red\",\r\n paddingLeft: theme.spacing(0.5)\r\n }\r\n },\r\n avatarParent: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n paddingTop: theme.spacing(2)\r\n },\r\n tagAvatar: {\r\n width: \"24px\",\r\n height: \"24px\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n width: \"26px\",\r\n height: \"26px\",\r\n margin: \"-1px\"\r\n }\r\n },\r\n tagIconPagination: {\r\n paddingBottom: theme.spacing(2)\r\n },\r\n tagIconSearchParent: {\r\n textAlign: \"right\",\r\n paddingRight: theme.spacing(2),\r\n paddingBottom: theme.spacing(1)\r\n },\r\n tagIconPageParent: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"row-reverse\"\r\n },\r\n tagIconParent: {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n width: `calc(${100/tagIconsPerRow}% - ${theme.spacing(2)})`,\r\n padding: theme.spacing(1)\r\n },\r\n tagIconCheck: {\r\n userSelect: \"none\",\r\n bottom: theme.spacing(1),\r\n right: theme.spacing(1),\r\n position: \"absolute\",\r\n color: \"green\",\r\n backgroundColor: \"white\",\r\n borderRadius: \"50%\"\r\n },\r\n tagIconImage: {\r\n width: `calc(100% - ${theme.spacing(1)})`,\r\n height: `calc(100% - ${theme.spacing(1)})`,\r\n margin: theme.spacing(0.5),\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n width: \"100%\",\r\n height: \"100%\",\r\n margin: \"0px\",\r\n }\r\n },\r\n content: {\r\n padding: theme.spacing(0),\r\n paddingTop: \"0px !important\"\r\n }\r\n }),\r\n);\r\n\r\ninterface TagIconDialogProps {\r\n open: boolean\r\n onSubmit(texture: string, size: number): void\r\n onClose(): void\r\n currentTexture: string\r\n currentSize: number\r\n}\r\n\r\nexport const TagIconDialog = memo((props: TagIconDialogProps) => {\r\n const {open, onSubmit, onClose, currentTexture, currentSize} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [page, setPage] = useState(1);\r\n const [search, setSearch] = useState(\"\");\r\n const [tagTexture, setTagTexture] = useState(\"\");\r\n const [tagSize, setTagSize] = useState(0);\r\n\r\n const handleIconClick = (texture) => {\r\n setTagTexture(texture);\r\n };\r\n\r\n const onSearch = (event) => {\r\n setPage(1);\r\n setSearch(event.target.value as string);\r\n };\r\n\r\n const onPageChange = (event, page: number) => {\r\n setPage(page);\r\n };\r\n\r\n const resetDefaults = () => {\r\n let selectedPage = Math.floor(\r\n textures.indexOf(currentTexture) / tagsPerPage) + 1;\r\n\r\n setSearch(\"\");\r\n setTagTexture(currentTexture);\r\n setTagSize(currentSize);\r\n setPage(selectedPage);\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const textures = useMemo(() => {\r\n const searchText = search.toLowerCase().trim();\r\n const searchTerms = searchText.split(\" \");\r\n\r\n if (searchText === \"\") {\r\n return Object.keys(tagTextures);\r\n }\r\n\r\n return Object.keys(tagTextures)\r\n .map(key => {\r\n const itemText = key.toLowerCase();\r\n const matches = searchTerms.filter(x => itemText.includes(x)).length;\r\n return {key, matches};\r\n })\r\n .filter(x => x.matches >= searchTerms.length)\r\n .map(x => x.key);\r\n }, [search]);\r\n\r\n const iconChanged = (tagTexture !== currentTexture);\r\n const sizeChanged = (tagSize !== currentSize);\r\n\r\n const tagsPerPage = tagIconsPerRow * tagRowsPerPage;\r\n const numPages = Math.ceil(textures.length / tagsPerPage);\r\n\r\n const texturesForPage = textures.slice(\r\n (page-1) * tagsPerPage,\r\n page * tagsPerPage\r\n );\r\n\r\n return (\r\n {\r\n onSubmit(tagTexture, tagSize);\r\n }}\r\n button={t(\"buttons.apply-changes\")}\r\n >\r\n
\r\n \r\n
\r\n\r\n
\r\n {texturesForPage.map(texture => (\r\n
\r\n {\r\n handleIconClick(texture);\r\n }}\r\n />\r\n\r\n {(texture === tagTexture) && ()}\r\n
\r\n ))}\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n\r\n {/** Icon Size */}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n );\r\n});\r\n\r\ninterface TagItemsDialogProps {\r\n asset: Asset\r\n open: boolean;\r\n title: string;\r\n onClose(): void;\r\n}\r\n\r\nexport const TagItemsDialog = (props: TagItemsDialogProps) => {\r\n const {asset, open, title, onClose} = props;\r\n\r\n const {viewer} = useViewer();\r\n const {i18n, t} = useTranslation();\r\n\r\n const deleteDialog = useDialog();\r\n const {permissions} = useAuth();\r\n const tableState = useTableState({defaultSort: \"name\"});\r\n\r\n const formatter = viewer.getMeasurementFormatter();\r\n const projection = viewer.getViewProjection();\r\n const precision = formatter.getVectorPrecision(projection);\r\n\r\n const onRowClick = (row, index) => {\r\n if (index > 2) return;\r\n viewer.jumpToTag(row.tagID, true);\r\n };\r\n\r\n const getRows = (items) => {\r\n return items.map((tag, index) => {\r\n const isAerialTag = !(\"z\" in tag);\r\n const x = tag.x.toFixed(precision.x);\r\n const y = tag.y.toFixed(precision.y);\r\n const z = isAerialTag ? \"N/A\" : tag.z.toFixed(precision.z);\r\n\r\n const coordinate = isAerialTag\r\n ? `(${x}, ${y})`\r\n : `(${x}, ${y}, ${z})`;\r\n\r\n const position = isAerialTag\r\n ? [tag.x, tag.y]\r\n : [tag.x, tag.y, tag.z];\r\n\r\n let rowData = {\r\n id: `TagTableRow_${tag.id}`,\r\n tagID: tag.id,\r\n tag: index + 1,\r\n modified: tag.date,\r\n name: tag.name,\r\n comment: tag.comment,\r\n coordinate,\r\n position\r\n };\r\n\r\n return rowData;\r\n });\r\n };\r\n\r\n const tagItems = (asset.data as TagData).items;\r\n\r\n const actions = useMemo(() => {\r\n const zoomToTag = {\r\n title: t('tags.move_to_tag'),\r\n icon: ,\r\n onClick: (row) => {\r\n viewer.jumpToTag(row.tagID);\r\n }\r\n };\r\n\r\n const copyPosition = {\r\n title: t(\"tags.copy-to-clipboard\"),\r\n icon: ,\r\n onClick: (row) => {\r\n // Copy position to clipboard\r\n copyTextToClipboard(row.coordinate);\r\n toast.success(t(\"toast.copied-to-clipboard\"));\r\n }\r\n };\r\n\r\n const copyURL = {\r\n title: t('tags.copy_tag_url'),\r\n icon: ,\r\n onClick: (row) => {\r\n // Copy url to clipboard\r\n const url = new URL(window.location as any);\r\n url.hash = `tag=${row.tagID}`;\r\n copyTextToClipboard(url.href);\r\n toast.success(t(\"toast.copied-to-clipboard\"));\r\n }\r\n };\r\n\r\n const deleteRow = {\r\n title: t(\"buttons.delete\"),\r\n icon: ,\r\n onClick: (row) => {\r\n const tagToDelete = row.tagID;\r\n deleteDialog.handleOpen([tagToDelete]);\r\n }\r\n };\r\n\r\n let actions = [];\r\n actions.push(zoomToTag);\r\n actions.push(copyPosition);\r\n\r\n if (isStaticSite) {\r\n actions.push(copyURL);\r\n }\r\n\r\n if (permissions.delete) {\r\n actions.push(deleteRow);\r\n }\r\n\r\n return actions;\r\n }, [i18n.language, permissions, isStaticSite]);\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t(\"tags.name\"),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'comment',\r\n label: t(\"tags.comments\"),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'modified',\r\n label: t(\"tags.date\"),\r\n date: true\r\n },\r\n ];\r\n\r\n const rows = useMemo(() => {\r\n return getRows(tagItems);\r\n }, [tagItems]);\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Delete Dialog */}\r\n \r\n \r\n );\r\n};\r\n\r\ninterface TagDeleteDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n onDelete?(): void;\r\n toDelete: string[];\r\n}\r\n\r\nexport const TagDeleteDialog = (props: TagDeleteDialogProps) => {\r\n const {open, onClose, onDelete, toDelete = []} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n const onSubmit = () => {\r\n for (const tagID of toDelete) {\r\n dispatch(deleteTag(tagID));\r\n };\r\n\r\n onClose();\r\n onDelete?.();\r\n\r\n toast.success(t(\"toast.tag-removed\", {\r\n count: numTagsToDelete\r\n }));\r\n };\r\n\r\n const numTagsToDelete = toDelete ? toDelete.length : 0;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getTagDetails = (assets: Asset[], tagID: string) => {\r\n const tagFiles = getTagAssets(assets);\r\n\r\n for (let file of tagFiles) {\r\n const tags = (file.data as TagData).items;\r\n const selected = tags.find(tag => tag.id === tagID);\r\n\r\n if (selected) {\r\n return {\r\n tag: selected,\r\n asset: file\r\n };\r\n };\r\n }\r\n\r\n return {\r\n tag: null,\r\n asset: null\r\n };\r\n};\r\n\r\nexport const TagDetailsDialog = () => {\r\n const assets = useSelector(selectAllAssets);\r\n const uniqueProjectID = useUniqueProjectID();\r\n const detailsDialog = useDialog();\r\n const deleteDialog = useDialog();\r\n const {t} = useTranslation();\r\n const {permissions} = useAuth();\r\n\r\n const [tagID, setTagID] = useState(null);\r\n\r\n const onClose = () => {\r\n setTagID(null);\r\n detailsDialog.handleClose();\r\n };\r\n\r\n const onDelete = () => {\r\n deleteDialog.handleOpen([tagID]);\r\n };\r\n\r\n const {tag, asset} = useMemo(() => {\r\n return getTagDetails(assets, tagID);\r\n }, [assets, tagID]);\r\n\r\n useEffect(() => {\r\n /** Close dialog when new project is loaded */\r\n onClose();\r\n }, [uniqueProjectID]);\r\n\r\n /** Event listener */\r\n useEffect(() => {\r\n const callback = (event) => {\r\n setTagID(event.detail);\r\n detailsDialog.handleOpen();\r\n };\r\n\r\n document.addEventListener(\"tag-details\", callback);\r\n\r\n return () => {\r\n document.removeEventListener(\"tag-details\", callback);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n {permissions.delete && \r\n {t('buttons.delete')}\r\n }\r\n\r\n \r\n {t('buttons.close')}\r\n \r\n \r\n\r\n \r\n\r\n {/* Delete Dialog */}\r\n \r\n \r\n );\r\n};\r\n\r\ninterface AnnotationsToolbarProps {\r\n tag: TagItemData;\r\n}\r\n\r\nconst AnnotationsToolbar = (props: AnnotationsToolbarProps) => {\r\n const {tag} = props;\r\n\r\n const theme = useTheme();\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n const {viewer} = useViewer();\r\n const {permissions} = useAuth();\r\n\r\n const viewerSwitched = useSelector(selectViewerSwitched);\r\n\r\n const [editing, setEditing] = useState(false);\r\n const [size, setSize] = useState(AnnotationSize.Medium);\r\n const [type, setType] = useState(AnnotationDrawType.Polygon);\r\n const [color, setColor] = useState(\"#FF0000\");\r\n\r\n const handleSave = () => {\r\n const annotations = viewer.getTagAnnotations();\r\n toast.success(t(\"toast.tag-details-update\"));\r\n dispatch(updateTag({tagID: tag.id, annotations}));\r\n };\r\n\r\n const savedAnnotations = tag\r\n ? tag.annotations ? [...tag.annotations] : []\r\n : [];\r\n\r\n const handleCancel = () => {\r\n // Discard any changes and load saved annotations\r\n viewer.loadTagAnnotations(savedAnnotations);\r\n };\r\n\r\n useEffect(() => {\r\n if (!viewer) return;\r\n viewer.setTagAnnotationType(type);\r\n }, [viewer, type]);\r\n\r\n useEffect(() => {\r\n if (!viewer) return;\r\n viewer.setTagAnnotationColor(color);\r\n }, [viewer, color]);\r\n\r\n useEffect(() => {\r\n if (!viewer) return;\r\n viewer.setTagAnnotationSize(size);\r\n }, [viewer, size]);\r\n\r\n useEffect(() => {\r\n if (!viewer) return;\r\n\r\n if (tag) {\r\n viewer.toggleTagAnnotations(true);\r\n viewer.loadTagAnnotations(savedAnnotations);\r\n viewer.setTagSelected(tag.id);\r\n } else {\r\n viewer.toggleTagAnnotations(false);\r\n viewer.setTagSelected(null);\r\n setEditing(false);\r\n }\r\n }, [viewer, tag]);\r\n\r\n useEffect(() => {\r\n if (!viewer) return;\r\n viewer.setTagAnnotationDrawing(editing);\r\n }, [viewer, editing]);\r\n\r\n useEffect(() => {\r\n // Disable editing if we minimize the aerial view\r\n if (viewerSwitched) return;\r\n setEditing(false);\r\n }, [viewerSwitched]);\r\n\r\n const typeOptions = optionsToDropdown([\r\n [AnnotationDrawType.Polygon, t('tags.polygon')],\r\n [AnnotationDrawType.PolygonFreeHand, t('tags.polygon_freehand')],\r\n [AnnotationDrawType.LineString, t('tags.linestring')],\r\n [AnnotationDrawType.LineStringFreeHand, t('tags.linestring_freehand')],\r\n [AnnotationDrawType.Rectangle, t('tags.rectangle')],\r\n [AnnotationDrawType.Circle, t('tags.circle')],\r\n [AnnotationDrawType.Star, t('tags.star')],\r\n [AnnotationDrawType.Eraser, t('tags.eraser')],\r\n ]);\r\n\r\n const sizeOptions = optionsToDropdown([\r\n [AnnotationSize.Small, t('sizes.small')],\r\n [AnnotationSize.Medium, t('sizes.medium')],\r\n [AnnotationSize.Large, t('sizes.large')],\r\n [AnnotationSize.XLarge, t('sizes.extra_large')]\r\n ]);\r\n\r\n const showToolbar = tag\r\n && permissions.edit\r\n && viewerSwitched;\r\n\r\n return (\r\n \r\n {showToolbar &&
\r\n
\r\n \r\n {t('tags.tag_annotations_toolbar')}\r\n \r\n\r\n
\r\n {/** Annotation Type */}\r\n {\r\n setType(event.target.value as AnnotationDrawType);\r\n }}\r\n >\r\n {typeOptions}\r\n \r\n\r\n {/** Annotation Size */}\r\n {\r\n setSize(event.target.value as AnnotationSize);\r\n }}\r\n >\r\n {sizeOptions}\r\n \r\n\r\n {/** Annotation Color */}\r\n \r\n\r\n {/** Save/Edit Buttons */}\r\n \r\n
\r\n\r\n
\r\n
}\r\n
\r\n );\r\n};\r\n\r\ninterface TagDetailsContentProps {\r\n tag: TagItemData;\r\n asset: Asset;\r\n}\r\n\r\nconst TagDetailsContent = (props: TagDetailsContentProps) => {\r\n const {tag, asset} = props;\r\n\r\n const dispatch = useDispatch();\r\n const assets = useSelector(selectAllAssets);\r\n const {i18n, t} = useTranslation();\r\n\r\n const onChangeName = (value: string) => {\r\n toast.success(t(\"toast.tag-details-update\"));\r\n dispatch(updateTag({tagID: tag.id, name: value}));\r\n };\r\n\r\n const onChangeComment = (value: string) => {\r\n toast.success(t(\"toast.tag-details-update\"));\r\n dispatch(updateTag({tagID: tag.id, comment: value}));\r\n };\r\n\r\n const onChangeAsset = (value: string) => {\r\n toast.success(t(\"toast.tag-details-update\"));\r\n dispatch(updateTag({tagID: tag.id, assetID: value}));\r\n };\r\n\r\n const options = useMemo(() => {\r\n return getTagAssets(assets).map(file => {\r\n return [file.id, file.name];\r\n }) as [string, string][];\r\n }, [assets]);\r\n\r\n const dateString = tag\r\n ? toLocaleString(tag.date, i18n.language)\r\n : \"\";\r\n\r\n return (\r\n \r\n {tag && \r\n \r\n {/** Title */}\r\n \r\n \r\n \r\n\r\n {/** Comments */}\r\n \r\n \r\n \r\n\r\n {/** Modified date */}\r\n {\r\n \r\n }\r\n\r\n {/** Tag Collection */}\r\n {\r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\ninterface TagCreateDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n coordinate: number[];\r\n}\r\n\r\nexport const TagCreateDialog = memo((props: TagCreateDialogProps) => {\r\n const {open, onClose, coordinate} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const dispatch = useAppDispatch();\r\n const {t} = useTranslation();\r\n const iconUpdateDialog = useDialog();\r\n const {viewer} = useViewer();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n const tagFiles = getTagAssets(assets);\r\n const folders = useSelector(selectAllFolders);\r\n\r\n const [title, setTitle] = useState(\"\");\r\n const [comment, setComment] = useState(\"\");\r\n const [collectionID, setCollectionID] = useState(\"\");\r\n const [collectionName, setCollectionName] = useState(\"\");\r\n const [folderID, setFolderID] = useState(NEW_FOLDER_ID);\r\n const [tagTexture, setTagTexture] = useState(defaultTagTexture);\r\n const [tagSize, setTagSize] = useState(TagSize.Medium);\r\n\r\n const onSubmit = async () => {\r\n onClose();\r\n\r\n const newTag = {\r\n id: nanoid(),\r\n name: title,\r\n comment: comment,\r\n date: new Date().toISOString(),\r\n x: coordinate[0],\r\n y: coordinate[1],\r\n annotations: []\r\n } as TagItemData;\r\n\r\n if (coordinate.length === 3) {\r\n newTag.z = coordinate[2];\r\n newTag.sceneState = viewer.sceneState;\r\n }\r\n\r\n let tagFolderID;\r\n\r\n if (createNewFolder) {\r\n // Create new folder\r\n const folder = await dispatch(createFolder());\r\n tagFolderID = folder.id;\r\n } else {\r\n tagFolderID = folderID;\r\n }\r\n\r\n let tagCollectionID;\r\n\r\n if (createNewFile) {\r\n // Create new tag collection\r\n const asset = await dispatch(createAsset({\r\n folderID: tagFolderID,\r\n name: collectionName,\r\n type: AssetType.Tag,\r\n texture: tagTexture,\r\n size: tagSize\r\n }));\r\n\r\n tagCollectionID = asset.id;\r\n } else {\r\n tagCollectionID = collectionID;\r\n }\r\n\r\n // Add new tag to collection\r\n await dispatch(createTags({\r\n assetID: tagCollectionID,\r\n tags: [newTag]\r\n }));\r\n\r\n toast.success(t(\"toast.tag-added\"));\r\n };\r\n\r\n const resetDefaultValues = () => {\r\n setTitle(\"\");\r\n setComment(\"\");\r\n setCollectionName(\"\");\r\n setTagTexture(defaultTagTexture);\r\n\r\n iconUpdateDialog.handleClose();\r\n\r\n if (hasExistingFolders) {\r\n setFolderID(folders[0].id);\r\n } else {\r\n setFolderID(NEW_FOLDER_ID);\r\n }\r\n\r\n if (hasExistingCSVs) {\r\n setCollectionID(tagFiles[0].id);\r\n } else {\r\n setCollectionID(\"\");\r\n }\r\n };\r\n\r\n const submitTagIcon = useCallback((texture: string, size: number) => {\r\n setTagTexture(texture);\r\n setTagSize(size);\r\n iconUpdateDialog.handleClose();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaultValues();\r\n }, [open]);\r\n\r\n const hasExistingCSVs = tagFiles.length > 0;\r\n const hasExistingFolders = folders.length > 0;\r\n const createNewFile = collectionID === NEW_CSV_ID;\r\n const createNewFolder = folderID === NEW_FOLDER_ID;\r\n\r\n /* Determine valid state for new tag */\r\n let canSubmit = true;\r\n const titleMissing = title.trim() === \"\";\r\n const nameMissing = collectionName.trim() === \"\";\r\n canSubmit = canSubmit && !titleMissing;\r\n canSubmit = canSubmit && !(nameMissing && createNewFile);\r\n\r\n // Folder is used if it is user made or if it contains assets\r\n const folderOptions = folders.filter(folder => {\r\n const items = assets.filter(x => x.folderID === folder.id);\r\n return folder.default ? items.length > 0 : true;\r\n });\r\n\r\n return (\r\n \r\n {/* New tag dialog */}\r\n \r\n \r\n\r\n {/** Title */}\r\n \r\n \r\n \r\n\r\n {/** Comments */}\r\n \r\n \r\n \r\n\r\n \r\n [tagCSV.id, tagCSV.name])\r\n ] as any}\r\n />\r\n \r\n\r\n
\r\n \r\n \r\n\r\n {/** Tag collection name */}\r\n \r\n \r\n \r\n\r\n {/** Tag collection folder */}\r\n \r\n {\r\n const localizedFolderName = getLocalizedFolderName(folder.name);\r\n return [folder.id, localizedFolderName];\r\n })\r\n ]}\r\n />\r\n \r\n\r\n {/** Default Icon */}\r\n \r\n
\r\n \r\n {t('tags.collection_icon')}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n {/* Tag Icon */}\r\n \r\n
\r\n );\r\n});\r\n\r\nexport const showTagDetails = (tagID: string) => {\r\n sendCustomEvent(\"tag-details\", tagID);\r\n};\r\n","import React, {useState, memo} from \"react\";\r\nimport FolderIcon from \"@mui/icons-material/Folder\";\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport {Checkbox, ListItemButton} from \"@mui/material\";\r\nimport {\r\n Asset,\r\n deleteAsset,\r\n toggleFolderVisibility,\r\n updateAsset\r\n} from \"../redux/assets-slice\";\r\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\r\nimport ExpandMore from \"@mui/icons-material/ExpandMore\";\r\nimport List from \"@mui/material/List\";\r\nimport {AddAssetList, AssetItem} from \".\";\r\nimport {useDispatch} from 'react-redux';\r\nimport {\r\n DenseIcon,\r\n DenseMenu,\r\n MenuDivider,\r\n NestedMenu,\r\n PromptDialog,\r\n TextDialog\r\n} from '../components';\r\nimport {MenuItem, Typography} from \"@mui/material\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport {deleteFolder, Folder, updateFolder} from '../redux/folders-slice';\r\nimport { isElectronApp, isStaticSite } from \"../electron-modules\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getLocalizedFolderName, isAssetFile, useAssetTools } from \"../utilities\";\r\nimport slash from \"slash\";\r\nimport { useContextMenu, useDialog } from \"../hooks\";\r\n\r\nexport const assetFolderClass = \"asset-folder\";\r\n\r\ninterface AssetFolderProps {\r\n folder: Folder;\r\n assets: Asset[];\r\n draggingAsset: boolean;\r\n setDraggingAsset: React.Dispatch\r\n}\r\n\r\nexport const AssetFolder = memo((props: AssetFolderProps) => {\r\n const {folder, assets, draggingAsset, setDraggingAsset} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n const {addAssetPaths} = useAssetTools();\r\n const contextMenu = useContextMenu();\r\n const deleteDialog = useDialog();\r\n const renameDialog = useDialog();\r\n\r\n const [expanded, setExpanded] = useState(true);\r\n const [dragDropHover, setDragDropHover] = useState(false);\r\n\r\n const updateAssetFolder = (assetID) => {\r\n dispatch(updateAsset({\r\n assetID,\r\n folderID: folder.id\r\n }));\r\n };\r\n\r\n const addAssetsToFolder = (event) => {\r\n const assetPaths = [...event.dataTransfer.files]\r\n .map(file => slash(file.path))\r\n .filter(isAssetFile);\r\n\r\n addAssetPaths(assetPaths, folder.id);\r\n };\r\n\r\n const handleClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n setExpanded(!expanded);\r\n };\r\n\r\n const handleDragOver = (event) => {\r\n event.preventDefault();\r\n setDragDropHover(true);\r\n };\r\n\r\n const handleDragLeave = (event) => {\r\n setDragDropHover(false);\r\n };\r\n\r\n const handleDrop = (event) => {\r\n if (isStaticSite) return;\r\n\r\n setDragDropHover(false);\r\n\r\n if (draggingAsset) {\r\n updateAssetFolder(draggingAsset);\r\n } else {\r\n addAssetsToFolder(event);\r\n }\r\n };\r\n\r\n const handleRenameSubmit = name => {\r\n renameDialog.handleClose();\r\n dispatch(updateFolder({\r\n folderID: folder.id,\r\n name\r\n }));\r\n };\r\n\r\n const handleDeleteSubmit = () => {\r\n deleteDialog.handleClose();\r\n\r\n for (let asset of assets) {\r\n dispatch(deleteAsset(asset.id));\r\n }\r\n\r\n dispatch(deleteFolder(folder.id));\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n contextMenu.handleClose();\r\n deleteDialog.handleOpen();\r\n };\r\n\r\n const handleRenameClick = () => {\r\n contextMenu.handleClose();\r\n renameDialog.handleOpen();\r\n };\r\n\r\n const toggleCheckboxes = () => {\r\n let newVisibility;\r\n if (numVisible > 0 && numHidden > 0) {\r\n newVisibility = true;\r\n } else if (numVisible > 0) {\r\n newVisibility = false;\r\n } else {\r\n newVisibility = true;\r\n }\r\n\r\n dispatch(toggleFolderVisibility({\r\n folderID: folder.id,\r\n visible: newVisibility\r\n }));\r\n };\r\n\r\n const numVisible = assets.filter(x => x.visible).length;\r\n const numHidden = assets.filter(x => !x.visible).length;\r\n\r\n // Folder is visible if it is user made or if it contains assets\r\n const visible = folder.default ? assets.length > 0 : true;\r\n\r\n const localizedFolderName = getLocalizedFolderName(folder.name);\r\n\r\n return (\r\n \r\n {visible && (\r\n \r\n \r\n \r\n \r\n \r\n\r\n {(assets.length > 0) && (\r\n {/* Show / hide contents */}\r\n {expanded ? : }\r\n\r\n {/* Toggle all folder assets */}\r\n 0}\r\n onChange={toggleCheckboxes}\r\n indeterminate={numVisible > 0 && numHidden > 0}\r\n />\r\n )}\r\n\r\n \r\n )}\r\n\r\n {visible && expanded && (\r\n \r\n {assets.map(asset => )}\r\n \r\n )}\r\n\r\n \r\n {/** New asset submenu */}\r\n }\r\n parentMenuOpen={contextMenu.open}\r\n >\r\n \r\n \r\n\r\n {/** Functions submenu */}\r\n {/*\r\n {}\r\n */}\r\n\r\n {isElectronApp && }\r\n\r\n {/** Rename folder */}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder.rename\")}\r\n \r\n \r\n\r\n {/** Delete folder */}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder.delete\")}\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n \r\n );\r\n});\r\n","import { useTheme, Grid, Typography, DialogContent, Checkbox } from \"@mui/material\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport React, { useState, useMemo, useEffect } from \"react\";\r\nimport toast from \"react-hot-toast\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { SimpleDialog, DropdownWithLabel, InputWithLabel, DraggableDialog, EnhancedTable, EnhancedTableCheckboxHead } from \"../components\";\r\nimport { Asset, updateWebMapLayer, WebMapData, WebMapLayerData } from \"../redux/assets-slice\";\r\nimport { ServerType } from \"../types/web-sources\";\r\nimport { useAssetTools } from \"../utilities\";\r\nimport {Parser as XMLParser} from 'xml2js';\r\nimport WMTSCapabilities from 'ol/format/WMTSCapabilities.js';\r\nimport WMSCapabilities from 'ol/format/WMSCapabilities.js';\r\nimport { useTableState } from \"../hooks/use-table-state\";\r\nimport { useDispatch } from \"react-redux\";\r\n\r\ninterface WebSourceDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n folderID: string;\r\n}\r\n\r\nexport const WebSourceDialog = (props: WebSourceDialogProps) => {\r\n const {open, onClose, folderID} = props;\r\n\r\n const theme = useTheme();\r\n const {t} = useTranslation();\r\n const {addWebSource} = useAssetTools();\r\n\r\n const [serverURL, setServerURL] = useState(\"\");\r\n const [serverName, setServerName] = useState(\"\");\r\n const [serverType, setServerType] = useState(ServerType.ArcGISMapServer);\r\n const [submitting, setSubmitting] = useState(false);\r\n\r\n const onSubmit = async () => {\r\n setSubmitting(true);\r\n\r\n try {\r\n const webmapData = {\r\n url: serverURL,\r\n type: serverType,\r\n public: true,\r\n layers: await getMapLayers(serverURL, serverType)\r\n };\r\n\r\n await addWebSource(serverName, webmapData, folderID);\r\n\r\n setSubmitting(false);\r\n onClose();\r\n } catch {\r\n toast.error(\"Error grabbing layers from URL\");\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n const getMapServerLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('f', \"json\");\r\n url.searchParams.set('pretty', \"true\");\r\n\r\n const response = await fetch(url.href);\r\n const data = await response.json();\r\n const layers = data.layers as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.id,\r\n name: layer.name,\r\n };\r\n });\r\n };\r\n\r\n const getFeatureServerLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('f', \"json\");\r\n url.searchParams.set('pretty', \"true\");\r\n\r\n const response = await fetch(url.href);\r\n const data = await response.json();\r\n const layers = data.layers as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.id,\r\n name: layer.name,\r\n };\r\n });\r\n };\r\n\r\n const getImageServerLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('f', \"json\");\r\n url.searchParams.set('pretty', \"true\");\r\n\r\n const response = await fetch(url.href);\r\n if (!response.ok) {\r\n throw new Error(\"Error verifying image server URL\");\r\n }\r\n\r\n // No layers for this server type\r\n return [];\r\n };\r\n\r\n const getWMSLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('SERVICE', \"WMS\");\r\n url.searchParams.set('REQUEST', \"GetCapabilities\");\r\n\r\n const response = await fetch(url.href);\r\n const text = await response.text();\r\n\r\n const parser = new WMSCapabilities();\r\n const capabilities = parser.read(text);\r\n const layers = capabilities.Capability.Layer.Layer as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.Name,\r\n name: layer.Title\r\n };\r\n });\r\n };\r\n\r\n const getWFSLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('SERVICE', \"WFS\");\r\n url.searchParams.set('REQUEST', \"GetCapabilities\");\r\n\r\n const response = await fetch(url.href);\r\n const text = await response.text();\r\n\r\n const parser = new XMLParser({\r\n explicitChildren:true,\r\n preserveChildrenOrder: true\r\n });\r\n\r\n const xmlJSON = await parser.parseStringPromise(text);\r\n const capabilities = xmlJSON['wfs:WFS_Capabilities'];\r\n const featureTypeList = capabilities.FeatureTypeList[0];\r\n const features = featureTypeList.FeatureType as any[];\r\n\r\n return features.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.Name[0],\r\n name: layer.Title[0]\r\n };\r\n });\r\n };\r\n\r\n const getWMTSLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.pathname = `${url.pathname}/1.0.0/WMTSCapabilities.xml`;\r\n\r\n const response = await fetch(url.href);\r\n const text = await response.text();\r\n\r\n const parser = new WMTSCapabilities();\r\n const capabilities = parser.read(text);\r\n const layers = capabilities.Contents.Layer as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.Identifier,\r\n name: layer.Title\r\n };\r\n });\r\n };\r\n\r\n const getTileServerLayers = async (baseURL: string) => {\r\n // No layers for this server type\r\n return [];\r\n };\r\n\r\n const getMapLayers = (url, type) : Promise => {\r\n switch (type) {\r\n case ServerType.ArcGISMapServer:\r\n return getMapServerLayers(url);\r\n case ServerType.ArcGISImageServer:\r\n return getImageServerLayers(url);\r\n case ServerType.ArcGISFeatureServer:\r\n return getFeatureServerLayers(url);\r\n case ServerType.OGCWMS:\r\n return getWMSLayers(url);\r\n case ServerType.OGCWFS:\r\n return getWFSLayers(url);\r\n case ServerType.OGCWMTS:\r\n return getWMTSLayers(url);\r\n case ServerType.TileServer:\r\n return getTileServerLayers(url);\r\n default:\r\n throw new Error(\"Error grabbing map layers\");\r\n }\r\n };\r\n\r\n const resetDefaults = () => {\r\n setServerURL(\"\");\r\n setServerName(\"\");\r\n setSubmitting(false);\r\n setServerType(ServerType.ArcGISMapServer);\r\n };\r\n\r\n const isSecureURL = useMemo(() => {\r\n try {\r\n const url = new URL(serverURL);\r\n return url.protocol === \"https:\";\r\n } catch {\r\n return false;\r\n }\r\n }, [serverURL]);\r\n\r\n /** Check url to make sure it matches the required syntax */\r\n const isValidURL = useMemo(() => {\r\n const isArcGISServer = (serverType === ServerType.ArcGISMapServer)\r\n || (serverType === ServerType.ArcGISImageServer)\r\n || (serverType === ServerType.ArcGISFeatureServer);\r\n\r\n if (isArcGISServer) {\r\n try {\r\n const testURL = new URL(serverURL);\r\n const mapType = testURL.pathname\r\n .split(\"/\")\r\n .pop()\r\n .toLowerCase();\r\n\r\n if (serverType === ServerType.ArcGISMapServer) {\r\n return mapType === \"mapserver\";\r\n } else if (serverType === ServerType.ArcGISImageServer) {\r\n return mapType === \"imageserver\";\r\n } else if (serverType === ServerType.ArcGISFeatureServer) {\r\n return mapType === \"featureserver\";\r\n }\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n if (serverType === ServerType.TileServer) {\r\n const hasX = serverURL.includes(\"{x}\")\r\n || serverURL.includes(\"{col}\");\r\n\r\n const hasY = serverURL.includes(\"{y}\")\r\n || serverURL.includes(\"{-y}\")\r\n || serverURL.includes(\"{row}\");\r\n\r\n const hasZ = serverURL.includes(\"{z}\")\r\n || serverURL.includes(\"{level}\")\r\n || serverURL.includes(\"{zoom}\");\r\n\r\n return hasX && hasY && hasZ;\r\n }\r\n\r\n return true;\r\n }, [serverURL, serverType]);\r\n\r\n const placeholder = useMemo(() => {\r\n switch (serverType) {\r\n case ServerType.ArcGISMapServer:\r\n return \"https://server.arcgisonline.com/..../MapServer\";\r\n case ServerType.ArcGISFeatureServer:\r\n return \"https://server.arcgisonline.com/..../FeatureServer/\";\r\n case ServerType.ArcGISImageServer:\r\n return \"https://server.arcgisonline.com/..../ImageServer/\";\r\n case ServerType.ArcGISOnline:\r\n return \"https://arcgis.com/home/webmap/viewer.html?webmap=MAPID\";\r\n case ServerType.OGCWMS:\r\n return \"https://example.server.com/wms\";\r\n case ServerType.OGCWMTS:\r\n return \"https://example.server.com/wmts\";\r\n case ServerType.OGCWFS:\r\n return \"https://example.server.com/wfs\";\r\n case ServerType.TileServer:\r\n return \"https://custom.server.com/tiles/{z}/{x}/{y}.png\";\r\n default:\r\n return;\r\n }\r\n }, [serverType]);\r\n\r\n const label = useMemo(() => {\r\n const warnings = [];\r\n\r\n if (!isSecureURL) {\r\n warnings.push(t('websources.only_secure_urls_https_are_supported'));\r\n }\r\n\r\n if (!isValidURL) {\r\n warnings.push(t('websources.invalid_url_for_this_server_type'));\r\n }\r\n\r\n return warnings.join(\" \");\r\n }, [isSecureURL, isValidURL]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const showEsriWarning = (serverType === ServerType.ArcGISFeatureServer)\r\n || (serverType === ServerType.ArcGISImageServer)\r\n || (serverType === ServerType.ArcGISMapServer)\r\n || (serverType === ServerType.ArcGISOnline);\r\n\r\n const error = !isSecureURL\r\n || !isValidURL;\r\n\r\n const canSubmit = isSecureURL\r\n && isValidURL\r\n && !!serverName\r\n && !submitting;\r\n\r\n return (\r\n \r\n \r\n {/** Icon Size */}\r\n \r\n \r\n \r\n\r\n {/** Name */}\r\n \r\n \r\n \r\n\r\n {/** URL */}\r\n \r\n \r\n \r\n\r\n {showEsriWarning && (\r\n {t('websources.all_arcgis_maps_must_be_public')}\r\n )}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\ninterface WebSourceLayerCheckboxProps {\r\n layerID: string;\r\n visible: boolean;\r\n}\r\n\r\nconst WebSourceLayerCheckbox = (props: WebSourceLayerCheckboxProps) => {\r\n const {layerID, visible} = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onVisibilityChange = (visible: boolean) => {\r\n dispatch(updateWebMapLayer({\r\n layerID,\r\n visible\r\n }));\r\n };\r\n\r\n return (\r\n {\r\n const checked = event.target.checked;\r\n onVisibilityChange(checked);\r\n }}\r\n />\r\n );\r\n};\r\n\r\ninterface WebSourceLayerDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n asset: Asset;\r\n}\r\n\r\nexport const WebSourceLayerDialog = (props: WebSourceLayerDialogProps) => {\r\n const {open, onClose, asset} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n const tableState = useTableState({defaultSort: \"name\"});\r\n\r\n const layers = useMemo(() => {\r\n return (asset.data as WebMapData).layers;\r\n }, [asset.data]);\r\n\r\n const getRows = (layers: WebMapLayerData[]) => {\r\n return layers.map(layer => {\r\n return {\r\n id: `WebSourceLayerTableRow_${layer.id}`,\r\n name: layer.name,\r\n visible_sortable: layer.visible ? 1 : 0,\r\n visible_checkbox: \r\n };\r\n });\r\n };\r\n\r\n const rows = useMemo(() => {\r\n return getRows(layers);\r\n }, [layers]);\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('websources.layer_name'),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'visible_checkbox',\r\n label: x.visible)}\r\n onChange={(checked) => {\r\n layers.forEach(layer => {\r\n dispatch(updateWebMapLayer({\r\n layerID: layer.id,\r\n visible: checked\r\n }));\r\n });\r\n }}\r\n />,\r\n sortBy: \"visible_sortable\",\r\n center: true\r\n }\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t('asset.file-name')}: {asset.name}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React, {useState, memo, useCallback} from 'react';\r\nimport List from '@mui/material/List';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport {ListItemButton, MenuItem, Typography} from \"@mui/material\";\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport CreateNewFolderIcon from '@mui/icons-material/CreateNewFolder';\r\nimport PanoramaIcon from '@mui/icons-material/Panorama';\r\nimport PermMediaIcon from '@mui/icons-material/PermMedia';\r\nimport PublicIcon from '@mui/icons-material/Public';\r\nimport {\r\n openDialogFile,\r\n openDialogFolder,\r\n openDialogMulti,\r\n useAssetTools\r\n} from '../utilities';\r\nimport {\r\n modelFileFilter,\r\n imageCSVFilter,\r\n imageOrthoFilter,\r\n imagePlanarFilter,\r\n pointCloudFilter,\r\n tagCSVFilter,\r\n xmlFileFilter\r\n} from '../file-extensions';\r\nimport {AssetFolder} from \"./folder\";\r\nimport {createFolder, selectDefaultFolder, selectAllFolders} from '../redux/folders-slice';\r\nimport {selectAllAssets} from '../redux/assets-slice';\r\nimport {useSelector} from 'react-redux';\r\nimport {\r\n TextDialog,\r\n DenseIcon,\r\n DenseDivider,\r\n SlimScrollbar,\r\n FontAwesomeIcon,\r\n DenseMenu\r\n} from '../components';\r\nimport path from 'path';\r\nimport { isElectronApp } from '../electron-modules';\r\nimport {toast} from '../app';\r\nimport { useTranslation } from 'react-i18next';\r\nimport CloudIcon from \"@mui/icons-material/Cloud\";\r\nimport RoomIcon from \"@mui/icons-material/Room\";\r\nimport PanoramaOutlinedIcon from \"@mui/icons-material/PanoramaOutlined\";\r\nimport SatelliteIcon from \"@mui/icons-material/Satellite\";\r\nimport { useContextMenu, useDialog } from '../hooks';\r\nimport { WebSourceDialog } from './web-sources';\r\nimport { useAppDispatch } from '../redux/store';\r\n\r\n\r\ninterface AddAssetListProps {\r\n folderID: string;\r\n closeContextMenu(): void;\r\n}\r\n\r\nexport const AddAssetList = (props: AddAssetListProps) => {\r\n const {folderID, closeContextMenu} = props;\r\n\r\n const {t} = useTranslation();\r\n\r\n const webmapDialog = useDialog();\r\n\r\n const {\r\n addModelFiles, addPointCloudFiles, addOrthoFiles,\r\n addPanoramicFiles, addPlanarFiles, addXMLFiles,\r\n addTagCSVs\r\n } = useAssetTools();\r\n\r\n const handleAddModels = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(modelFileFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addModelFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddPoints = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(pointCloudFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n await addPointCloudFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddOrtho = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(imageOrthoFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addOrthoFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddPanoramics = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(imageCSVFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addPanoramicFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddTags = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(tagCSVFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addTagCSVs(assetPaths, folderID);\r\n };\r\n\r\n const handleAddPlanars = async () => {\r\n closeContextMenu();\r\n\r\n const assetPath = await openDialogFile(imagePlanarFilter);\r\n if (!assetPath) return;\r\n\r\n addPlanarFiles([assetPath], folderID);\r\n };\r\n\r\n const handleAddXML = async () => {\r\n closeContextMenu();\r\n\r\n const assetPath = await openDialogFile(xmlFileFilter);\r\n if (!assetPath) return;\r\n\r\n try {\r\n await addXMLFiles([assetPath], folderID);\r\n toast.success(t(\"toast.added-new-xml\"));\r\n } catch {\r\n const fileName = path.basename(assetPath);\r\n toast.error(t(\"toast.import-xml-error\", {\r\n path: fileName\r\n }));\r\n }\r\n };\r\n\r\n const handleAddWebMap = useCallback(() => {\r\n closeContextMenu();\r\n webmapDialog.handleOpen();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-point-cloud\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-panoramic-csv\")}\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-tag-csv\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-planar-images\")}\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-orthomosaic\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-model-file\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('folder-list.add-landxml-file')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('folder-list.add-web-source')}\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport const FolderList = memo(() => {\r\n const dispatch = useAppDispatch();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const newFolderDialog = useDialog();\r\n const {addFilePaths} = useAssetTools();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n const defaultFolder = useSelector(selectDefaultFolder);\r\n const folders = useSelector(selectAllFolders);\r\n\r\n const [draggingAsset, setDraggingAsset] = useState(null);\r\n\r\n const handleSubmit = async (name: string) => {\r\n dispatch(createFolder(name));\r\n newFolderDialog.handleClose();\r\n };\r\n\r\n const handleAddFolder = async () => {\r\n contextMenu.handleClose();\r\n\r\n const {directoryPath, filePaths} = await openDialogFolder();\r\n if (filePaths.length === 0) return;\r\n\r\n const name = path.basename(directoryPath);\r\n const folder = await dispatch(createFolder(name));\r\n addFilePaths(filePaths, folder.id);\r\n };\r\n\r\n const handleNewFolder = () => {\r\n contextMenu.handleClose();\r\n newFolderDialog.handleOpen();\r\n };\r\n\r\n return (\r\n \r\n {/* Add item button */}\r\n {isElectronApp && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n )}\r\n\r\n \r\n \r\n {folders.map(folder =>\r\n x.folderID === folder.id)}\r\n draggingAsset={draggingAsset}\r\n setDraggingAsset={setDraggingAsset}\r\n />)}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder-list.create-new-folder\")}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-folder-contents\")}\r\n \r\n \r\n \r\n );\r\n});\r\n","import { Checkbox, DialogContent, Typography } from \"@mui/material\";\r\nimport React, { useMemo } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { ColorPicker, DraggableDialog, EnhancedTable, EnhancedTableCheckboxHead } from \"../components\";\r\nimport { useTableState } from \"../hooks/use-table-state\";\r\nimport { Asset, LineworkLayerData, updateModelLayer } from \"../redux/assets-slice\";\r\n\r\ninterface ModelLayerCheckboxProps {\r\n layerID: string;\r\n visible: boolean;\r\n}\r\n\r\nconst ModelLayerCheckbox = (props: ModelLayerCheckboxProps) => {\r\n const {layerID, visible} = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onVisibilityChange = (visible: boolean) => {\r\n dispatch(updateModelLayer({\r\n layerID,\r\n visible\r\n }));\r\n };\r\n\r\n return (\r\n {\r\n const checked = event.target.checked;\r\n onVisibilityChange(checked);\r\n }}\r\n />\r\n );\r\n};\r\n\r\ninterface ModelLayerColorProps {\r\n layerID: string;\r\n color: string;\r\n}\r\n\r\nconst ModelLayerColor = (props: ModelLayerColorProps) => {\r\n const {layerID, color} = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onColorChange = (color: string) => {\r\n dispatch(updateModelLayer({\r\n layerID,\r\n color\r\n }));\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface ModelLayerDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n asset: Asset;\r\n}\r\n\r\nexport const ModelLayerDialog = (props: ModelLayerDialogProps) => {\r\n const {open, onClose, asset} = props;\r\n\r\n const {t} = useTranslation();\r\n const dispatch = useDispatch();\r\n\r\n const tableState = useTableState({defaultSort: \"name\"});\r\n\r\n const layers = useMemo(() => {\r\n return asset.data as LineworkLayerData[];\r\n }, [asset.data]);\r\n\r\n const getRows = (layers: LineworkLayerData[]) => {\r\n return layers.map(layer => {\r\n return {\r\n id: `WebSourceLayerTableRow_${layer.id}`,\r\n name: layer.name,\r\n visible_sortable: layer.visible ? 1 : 0,\r\n visible_checkbox: ,\r\n color_picker: \r\n };\r\n });\r\n };\r\n\r\n const rows = useMemo(() => {\r\n return getRows(layers);\r\n }, [layers]);\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('models.layer_name'),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'color_picker',\r\n label: t('models.layer_color'),\r\n center: true,\r\n sortable: false\r\n },\r\n {\r\n id: 'visible_checkbox',\r\n label: x.visible)}\r\n onChange={(checked) => {\r\n layers.forEach(layer => {\r\n dispatch(updateModelLayer({\r\n layerID: layer.id,\r\n visible: checked\r\n }));\r\n });\r\n }}\r\n />,\r\n sortBy: \"visible_sortable\",\r\n center: true\r\n }\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t('asset.file-name')}: {asset.name}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n};\r\n","import React, { useMemo, useState } from \"react\";\r\nimport { Theme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {\r\n Checkbox,\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n MenuItem,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport {\r\n DenseDivider,\r\n DenseIcon,\r\n DenseMenu,\r\n PromptDialog,\r\n SlimScrollbar,\r\n TextDialog\r\n} from \"../components\";\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { BookmarkItem } from \".\";\r\nimport BookmarksIcon from '@mui/icons-material/Bookmarks';\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\r\nimport ExpandMore from \"@mui/icons-material/ExpandMore\";\r\nimport {\r\n createBookmark,\r\n updateBookmark,\r\n deleteBookmark\r\n} from \"../redux/bookmarks-slice\";\r\nimport { store } from \"../redux/store\";\r\nimport { toast } from \"../app\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { useAuth, useBookmarks, useContextMenu, useDialog, useViewer } from \"../hooks\";\r\nimport { AerialViewState, SceneCameraState } from \"../redux/camera-slice\";\r\nimport { SettingsState } from \"../redux/settings-slice\";\r\nimport { getVisibleAssets, selectAllAssets } from \"../redux/assets-slice\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n addItem: {\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\"\r\n },\r\n footerDiv: {\r\n width: \"100%\",\r\n boxShadow: \"0px 10px 10px 2px\",\r\n zIndex: 1,\r\n textAlign: \"center\"\r\n },\r\n footerCheckbox: {\r\n padding: theme.spacing(0.5),\r\n marginRight: theme.spacing(0.5)\r\n }\r\n })\r\n);\r\n\r\nexport const getStoredState = () => {\r\n const state = store.getState();\r\n\r\n const settings = {...state.settings} as SettingsState;\r\n const aerialState = state.camera.aerialState as AerialViewState;\r\n const sceneState = state.camera.sceneState as SceneCameraState;\r\n\r\n return {settings, aerialState, sceneState};\r\n};\r\n\r\nexport const BookmarkList = () => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {permissions} = useAuth();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const bookmarkDialog = useDialog();\r\n const deleteDialog = useDialog();\r\n const {bookmarks} = useBookmarks();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n\r\n const visibleAssets = useMemo(() => {\r\n return getVisibleAssets(assets);\r\n }, [assets]);\r\n\r\n const [expanded, setExpanded] = useState(true);\r\n\r\n const handleSubmit = (name: string) => {\r\n bookmarkDialog.handleClose();\r\n\r\n if (!LocalScene.initialized) {\r\n toast.warning(t('bookmarks.invalid_position'));\r\n return;\r\n }\r\n\r\n const position = viewer.getCameraPosition().toArray();\r\n const {settings, aerialState, sceneState} = getStoredState();\r\n const visibleAssetIDs = visibleAssets.map(asset => asset.id);\r\n\r\n dispatch(createBookmark({\r\n name,\r\n position,\r\n settings,\r\n visibleAssets: visibleAssetIDs,\r\n aerialState,\r\n sceneState\r\n }));\r\n };\r\n\r\n const handleClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n setExpanded(!expanded);\r\n };\r\n\r\n const toggleCheckboxes = () => {\r\n let newVisibility;\r\n if (numVisible > 0 && numHidden > 0) {\r\n newVisibility = true;\r\n } else if (numVisible > 0) {\r\n newVisibility = false;\r\n } else {\r\n newVisibility = true;\r\n }\r\n\r\n for (let bookmark of bookmarks) {\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n visible: newVisibility\r\n }));\r\n }\r\n };\r\n\r\n const handleDeleteSubmit = () => {\r\n for (let bookmark of bookmarks) {\r\n dispatch(deleteBookmark(bookmark.id));\r\n }\r\n deleteDialog.handleClose();\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n deleteDialog.handleOpen();\r\n contextMenu.handleClose();\r\n };\r\n\r\n const numVisible = bookmarks.filter(x => x.visible).length;\r\n const numHidden = bookmarks.filter(x => !x.visible).length;\r\n\r\n return (\r\n \r\n\r\n {/* Add item button */}\r\n {permissions.create && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n )}\r\n\r\n {/* Bookmarks list */}\r\n \r\n {(bookmarks.length > 0) && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {(bookmarks.length > 0) && (\r\n {/* Show / hide contents */}\r\n {expanded ? : }\r\n\r\n {/* Toggle all folder assets */}\r\n 0}\r\n onChange={toggleCheckboxes}\r\n indeterminate={numVisible > 0 && numHidden > 0}\r\n />\r\n )}\r\n\r\n \r\n\r\n {expanded && (\r\n \r\n {bookmarks.map(bookmark =>\r\n \r\n )}\r\n \r\n )}\r\n\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {t('buttons.delete')}\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n );\r\n};\r\n","import React, { useMemo } from \"react\";\r\nimport { Theme, useTheme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {\r\n Checkbox,\r\n ListItemButton,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n MenuItem,\r\n Typography\r\n} from \"@mui/material\";\r\nimport {\r\n DenseIcon,\r\n DenseMenu,\r\n PromptDialog,\r\n TextDialog\r\n} from \"../components\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport BookmarkIcon from '@mui/icons-material/Bookmark';\r\nimport SyncIcon from '@mui/icons-material/Sync';\r\nimport LinkIcon from '@mui/icons-material/Link';\r\nimport {\r\n deleteBookmark,\r\n updateBookmark,\r\n Bookmark\r\n} from \"../redux/bookmarks-slice\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { toast } from \"../app\";\r\nimport { getStoredState } from \".\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { useAuth, useBookmarks, useContextMenu, useDialog, useViewer } from \"../hooks\";\r\nimport copyTextToClipboard from \"copy-to-clipboard\";\r\nimport { isStaticSite } from \"../electron-modules\";\r\nimport { getVisibleAssets, selectAllAssets } from \"../redux/assets-slice\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n assetInfo: {\r\n display: 'flex',\r\n margin: '0px'\r\n },\r\n itemText: {\r\n wordBreak: \"break-word\",\r\n overflow: \"hidden\"\r\n },\r\n checkboxParent: {\r\n padding: \"0px\",\r\n height: \"100%\"\r\n },\r\n assetCheckbox: {\r\n position: \"relative\",\r\n transform: \"translateY(0%)\",\r\n }\r\n })\r\n);\r\n\r\ninterface BookmarkItemProps {\r\n bookmark: Bookmark;\r\n}\r\n\r\nexport const BookmarkItem = (props: BookmarkItemProps) => {\r\n const {bookmark} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {permissions} = useAuth();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const renameDialog = useDialog();\r\n const deleteDialog = useDialog();\r\n const updateDialog = useDialog();\r\n const {loadBookmark} = useBookmarks();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n\r\n const visibleAssets = useMemo(() => {\r\n return getVisibleAssets(assets);\r\n }, [assets]);\r\n\r\n const handleBookmarkClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n loadBookmark(bookmark.id);\r\n };\r\n\r\n const handleVisibilityClick = () => {\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n visible: !bookmark.visible\r\n }));\r\n };\r\n\r\n const handleDeleteSubmit = () => {\r\n dispatch(deleteBookmark(bookmark.id));\r\n deleteDialog.handleClose();\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n contextMenu.handleClose();\r\n deleteDialog.handleOpen();\r\n };\r\n\r\n const handleRenameSubmit = name => {\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n name\r\n }));\r\n\r\n renameDialog.handleClose();\r\n };\r\n\r\n const handleRenameClick = () => {\r\n contextMenu.handleClose();\r\n renameDialog.handleOpen();\r\n };\r\n\r\n const handleUpdateSubmit = () => {\r\n updateDialog.handleClose();\r\n\r\n if (!LocalScene.initialized) {\r\n toast.warning(t('bookmarks.invalid_position'));\r\n return;\r\n }\r\n\r\n const position = viewer.getCameraPosition().toArray();\r\n const {settings, aerialState, sceneState} = getStoredState();\r\n const visibleAssetIDs = visibleAssets.map(asset => asset.id);\r\n\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n position,\r\n settings,\r\n visibleAssets: visibleAssetIDs,\r\n aerialState,\r\n sceneState\r\n }));\r\n\r\n toast.success(t('bookmarks.updated_bookmark'));\r\n };\r\n\r\n const handleUpdateClick = () => {\r\n contextMenu.handleClose();\r\n updateDialog.handleOpen();\r\n };\r\n\r\n const handleCopyClick = () => {\r\n contextMenu.handleClose();\r\n\r\n // Copy url to clipboard\r\n const url = new URL(window.location as any);\r\n url.hash = `bookmark=${bookmark.id}`;\r\n copyTextToClipboard(url.href);\r\n toast.success(t(\"toast.copied-to-clipboard\"));\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n {isStaticSite && \r\n \r\n \r\n \r\n {t('bookmarks.copy_bookmark_url')}\r\n }\r\n\r\n \r\n \r\n \r\n \r\n {t('buttons.rename')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('buttons.update')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('buttons.delete')}\r\n \r\n\r\n \r\n\r\n {/* Rename Dialog */}\r\n \r\n\r\n {/* Update Dialog */}\r\n \r\n\r\n {/* Delete Dialog */}\r\n \r\n
\r\n );\r\n};","import IconButton from \"@mui/material/IconButton\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport {FolderList} from \"./folder\";\r\nimport Drawer from \"@mui/material/Drawer\";\r\nimport React, {useEffect, useState, memo} from \"react\";\r\nimport { Theme, useTheme } from \"@mui/material/styles\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { AppBar, Box, Tab } from \"@mui/material\";\r\nimport {\r\n TabPanel,\r\n TabProps,\r\n} from \"./components\";\r\nimport {\r\n changeAssetDrawerState,\r\n changeSelectedTab,\r\n selectAssetDrawerState,\r\n selectSelectedTab,\r\n} from \"./redux/settings-slice\";\r\nimport Tabs from \"@mui/material/Tabs/Tabs\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { BookmarkList } from \"./bookmarks\";\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Bookmark } from \"./redux/bookmarks-slice\";\r\nimport { useBookmarks, useViewer } from \"./hooks\";\r\nimport { useBranding } from \"./hooks/use-branding\";\r\n\r\nexport const assetDrawerWidth = 280;\r\nexport const assetDrawerHeight = 75;\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n backdrop: {\r\n display: \"none\"\r\n },\r\n inside: {\r\n height: `${assetDrawerHeight}%`,\r\n display: \"flex\",\r\n overflow: \"hidden\",\r\n flexDirection: \"column\"\r\n },\r\n drawer: {\r\n width: 0,\r\n },\r\n drawerPaper: {\r\n width: assetDrawerWidth,\r\n },\r\n root: {\r\n \"z-index\": `${theme.zIndex.modal - 1} !important`\r\n },\r\n tab: {\r\n minWidth: \"0px !important\",\r\n flexBasis: \"unset\",\r\n flexShrink: \"unset\"\r\n },\r\n tabGrow: {\r\n \"flex-grow\": 1\r\n },\r\n toggleDrawer: {\r\n color: \"white\"\r\n }\r\n }),\r\n);\r\n\r\ninterface StyledPanelProps {\r\n value: number;\r\n index: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StyledPanel = (props: StyledPanelProps) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nconst CompanyLogo = () => {\r\n const theme = useTheme();\r\n const branding = useBranding();\r\n\r\n return (\r\n \r\n {branding.iconPath &&
\r\n \r\n
}\r\n
\r\n );\r\n};\r\n\r\nexport const AssetDrawer = memo(() => {\r\n const theme = useTheme();\r\n const classes = useStyles(theme);\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n const {bookmarks, loadBookmark} = useBookmarks();\r\n\r\n const assetDrawerState = useSelector(selectAssetDrawerState);\r\n const projectActiveTab = useSelector(selectSelectedTab);\r\n\r\n const [activeTab, setSelectedTab] = useState(0);\r\n\r\n const setActiveTab = (event, value) => {\r\n dispatch(changeSelectedTab(value));\r\n };\r\n\r\n const handleDrawerClose = () => {\r\n dispatch(changeAssetDrawerState(false));\r\n };\r\n\r\n useEffect(() => {\r\n setSelectedTab(projectActiveTab);\r\n }, [projectActiveTab]);\r\n\r\n useEffect(() => {\r\n if (!viewer) return;\r\n\r\n const labels = [];\r\n\r\n bookmarks.forEach((bookmark: Bookmark) => {\r\n if (!bookmark.visible) return;\r\n\r\n const onClick = () => {\r\n loadBookmark(bookmark.id);\r\n };\r\n\r\n const {name, position} = bookmark;\r\n const label = viewer.addSceneLabel(name, position, onClick);\r\n labels.push(label);\r\n });\r\n\r\n viewer.updateSceneLabels();\r\n\r\n return () => {\r\n labels.forEach(label => {\r\n viewer.removeSceneLabel(label);\r\n });\r\n\r\n viewer.updateSceneLabels();\r\n };\r\n }, [viewer, bookmarks, loadBookmark]);\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {theme.direction === 'ltr' ? : }\r\n \r\n \r\n \r\n\r\n {/* Assets */}\r\n \r\n \r\n \r\n\r\n {/* Bookmarks */}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n );\r\n});\r\n","import React, {memo, useEffect, useState} from 'react';\r\nimport { Theme, useTheme } from '@mui/material/styles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport AppBar from '@mui/material/AppBar';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport Typography from '@mui/material/Typography';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport MeasureIcon from '@mui/icons-material/SquareFoot';\r\nimport LinkIcon from '@mui/icons-material/Link';\r\nimport SettingsIcon from '@mui/icons-material/Settings';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport HomeIcon from '@mui/icons-material/Home';\r\nimport {\r\n updateProjectName,\r\n selectProjectName\r\n} from \"./redux/project-slice\";\r\nimport {useSelector, useDispatch} from 'react-redux';\r\nimport {\r\n Projection,\r\n updateDataProjection,\r\n updateViewProjection,\r\n selectDataProjection\r\n} from './redux/projections-slice';\r\nimport {\r\n userProjections,\r\n uniqueProjectionID,\r\n unknownProjectionFeet,\r\n unknownProjectionMeters\r\n} from './projections';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n FormControl,\r\n FormHelperText,\r\n InputLabel,\r\n ListSubheader,\r\n MenuItem,\r\n TextField\r\n} from '@mui/material';\r\nimport {assetDrawerWidth} from './asset-drawer';\r\nimport LocalScene, {\r\n projectionToMeters,\r\n projectionToUnits,\r\n SceneCoordinate\r\n} from './viewer/js/projections';\r\nimport {isCloudSite, isElectronApp} from \"./electron-modules\";\r\nimport {\r\n changeBasicAdjustments,\r\n changeCameraHeight,\r\n changeCameraTransform,\r\n resetAerialState,\r\n resetCameraState,\r\n selectBasicAdjustments,\r\n selectCameraHeight,\r\n selectCameraTransform\r\n} from './redux/camera-slice';\r\nimport {\r\n asyncTimeout,\r\n getLocalizedProjectionName,\r\n getLocalizedProjectName,\r\n getMatrixValues,\r\n openDialogFile,\r\n saveMatrixFile\r\n} from \"./utilities\";\r\nimport {cameraMatrixFilter} from \"./file-extensions\";\r\nimport clsx from 'clsx';\r\nimport { ArrowTooltip, LanguageSwitch, AccountButton } from './components';\r\nimport {headerHeight, toast} from './app';\r\nimport { sendCustomEvent } from './events';\r\nimport { Vector3 } from 'three';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getLocalizedURL } from './localization';\r\nimport { changeAssetDrawerState, changeSelectedTab, selectAssetDrawerState } from './redux/settings-slice';\r\nimport { UnitConverter } from './viewer/js/utilities';\r\nimport {isEqual} from 'lodash';\r\nimport {\r\n useDialog,\r\n useViewer,\r\n useActiveTool,\r\n useAuth,\r\n useBookmarks\r\n} from './hooks';\r\nimport manifest from \"../package.json\";\r\n\r\nconst converter = new UnitConverter();\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n disabled: {\r\n opacity: 0.3\r\n },\r\n warning: {\r\n color: theme.palette.warning.main\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n },\r\n projectName: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: 'flex-start',\r\n flexGrow: 1\r\n },\r\n projectionText: {\r\n paddingTop: theme.spacing(0),\r\n margin: theme.spacing(0),\r\n marginTop: \"-5px\",\r\n color: \"inherit\"\r\n },\r\n marginTop: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(1)\r\n },\r\n buttonDiv: {\r\n textAlign: \"right\"\r\n },\r\n coordinates: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n },\r\n button: {\r\n marginTop: theme.spacing(2),\r\n marginLeft: theme.spacing(1)\r\n },\r\n slimButton: {\r\n marginTop: theme.spacing(1)\r\n },\r\n dropdown: {\r\n minWidth: 200,\r\n },\r\n offset: {\r\n marginLeft: assetDrawerWidth - 60\r\n },\r\n textField: {\r\n paddingBottom: theme.spacing(3)\r\n },\r\n matrixValuesParent: {\r\n display: \"flex\",\r\n paddingTop: theme.spacing(2),\r\n justifyContent: \"space-evenly\"\r\n },\r\n matrixValues: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n textAlign: \"center\"\r\n },\r\n matrixButtons: {\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }\r\n }),\r\n);\r\n\r\nconst ProjectDetails = () => {\r\n const {viewer} = useViewer();\r\n\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n const projectDialog = useDialog();\r\n const warnDialog = useDialog();\r\n\r\n const [name, setName] = useState(\"\");\r\n const [height, setHeight] = useState(0);\r\n const [proj, setProj] = useState(\"\");\r\n const [matchedProjection, setMatchedProjection] = useState(null);\r\n const [imported, setImported] = useState(null);\r\n const [projections, setProjections] = useState([]);\r\n const {deleteBookmarks} = useBookmarks();\r\n\r\n const [cameraTransform, setCameraTransform] = useState({\r\n path: null,\r\n rotation: null,\r\n offset: null\r\n });\r\n\r\n const [errors, setErrors] = useState({\r\n name: false,\r\n height: false,\r\n projection: false,\r\n correction: false\r\n });\r\n\r\n const projectName = useSelector(selectProjectName);\r\n const projectHeight = useSelector(selectCameraHeight);\r\n const cameraTransformPath = useSelector(selectCameraTransform);\r\n const dataProjection = useSelector(selectDataProjection);\r\n const basicAdjustments = useSelector(selectBasicAdjustments);\r\n const assetDrawerState = useSelector(selectAssetDrawerState);\r\n\r\n const unknownTextMeters = unknownProjectionMeters.name;\r\n const unknownTextFeet = unknownProjectionFeet.name;\r\n\r\n const getNewProjection = () => {\r\n let newProjection = null;\r\n\r\n if (proj === unknownTextMeters) {\r\n newProjection = unknownProjectionMeters;\r\n } else if (proj === unknownTextFeet) {\r\n newProjection = unknownProjectionFeet;\r\n } else if (imported && (proj === imported.name)) {\r\n newProjection = imported;\r\n } else {\r\n const results = projections.filter(x => x.name === proj);\r\n if (results.length !== 1) {\r\n return;\r\n }\r\n newProjection = results[0];\r\n }\r\n\r\n return newProjection;\r\n };\r\n\r\n const updateName = (event) => {\r\n const value = event.target.value;\r\n setErrors({...errors, name: false});\r\n setName(value);\r\n };\r\n\r\n const updateHeight = (event) => {\r\n const value = event.target.value;\r\n setErrors({...errors, height: false});\r\n setHeight(value);\r\n };\r\n\r\n const updateProj = (event) => {\r\n const value = event.target.value;\r\n if (!value) {\r\n return;\r\n }\r\n\r\n setErrors({...errors, projection: false});\r\n setProj(value);\r\n };\r\n\r\n const onSubmit = async () => {\r\n const trimmedName = name.trim();\r\n const emptyName = trimmedName === \"\";\r\n const emptyHeight = (height as any) === \"\";\r\n const emptyProjection = proj === \"\";\r\n\r\n setErrors({\r\n name: emptyName,\r\n height: emptyHeight,\r\n projection: emptyProjection,\r\n correction: false\r\n });\r\n\r\n if (emptyName || emptyProjection || emptyHeight) {\r\n return;\r\n }\r\n\r\n const heightInMeters = height * toMeters;\r\n\r\n projectDialog.handleClose();\r\n toast.success(t(\"toast.project-details-updated\"));\r\n\r\n await asyncTimeout(100);\r\n\r\n dispatch(updateProjectName(trimmedName));\r\n dispatch(changeCameraHeight(heightInMeters));\r\n dispatch(changeCameraTransform(cameraTransform.path));\r\n\r\n // Projection change requires a more strict check before dispatch\r\n const projectionName = selectedProjection.name;\r\n const projectionChanged = !LocalScene.isDataProjection(projectionName);\r\n\r\n if (!projectionChanged) return;\r\n\r\n dispatch(changeSelectedTab(0));\r\n\r\n // Clear all bookmarks. TODO: update values instead of clearing(?)\r\n deleteBookmarks();\r\n\r\n dispatch(resetCameraState(null));\r\n dispatch(resetAerialState(null));\r\n dispatch(updateDataProjection(selectedProjection));\r\n dispatch(updateViewProjection(selectedProjection));\r\n };\r\n\r\n const handleImported = () => {\r\n const name = dataProjection.name;\r\n\r\n // Special case for default projections\r\n if ((name === unknownTextFeet) || (name === unknownTextMeters)) {\r\n setImported(null);\r\n return;\r\n }\r\n\r\n // Check to see if this projection existed in the users defined projections\r\n const matchedProjection = userProjections.data\r\n .find(x => x.name === name);\r\n\r\n if (matchedProjection) {\r\n const importedProjection = JSON.parse(JSON.stringify(dataProjection));\r\n const userProjection = JSON.parse(JSON.stringify(matchedProjection));\r\n\r\n if (isEqual(importedProjection, userProjection)) {\r\n // Projections match, so we use the locally defined one\r\n setImported(null);\r\n } else {\r\n // Projections are different, so we warn\r\n // the user and use the imported one\r\n setImported({...dataProjection});\r\n warnDialog.handleOpen();\r\n }\r\n } else {\r\n // Projection is not found in the users defined\r\n // projections so we mark it as imported\r\n setImported({...dataProjection});\r\n }\r\n };\r\n\r\n const onCorrectionSelect = async () => {\r\n const filePath = await openDialogFile(cameraMatrixFilter);\r\n if (!filePath) return;\r\n\r\n const {success, rotation, offset} = await getMatrixValues(filePath);\r\n\r\n if (!success) {\r\n toast.error(t(\"toast.correction-matrix-error\"));\r\n return;\r\n }\r\n\r\n setCameraTransform({path: filePath, rotation, offset});\r\n };\r\n\r\n const onMatrixChange = async (filePath: string) => {\r\n const {success, rotation, offset} = await getMatrixValues(filePath);\r\n\r\n if (success) {\r\n setCameraTransform({path: filePath, rotation, offset});\r\n } else {\r\n onCorrectionRemove();\r\n }\r\n };\r\n\r\n const onCorrectionRemove = () => {\r\n setCameraTransform({\r\n path: null,\r\n rotation: null,\r\n offset: null\r\n });\r\n };\r\n\r\n const updateTitle = (title) => {\r\n document.title = `${manifest.productName}: ${title}`;\r\n };\r\n\r\n const clearBasicAlignment = () => {\r\n dispatch(changeBasicAdjustments({}));\r\n viewer?.resetBasicAlignerCamera();\r\n };\r\n\r\n const getTransformValues = () => {\r\n let rotation = [0,0,0];\r\n let offset = [0,0,0];\r\n\r\n if (cameraTransform.offset) {\r\n offset = [\r\n converter.convert(cameraTransform.offset.x, \"m\", units, 2),\r\n converter.convert(cameraTransform.offset.y, \"m\", units, 2),\r\n converter.convert(cameraTransform.offset.z, \"m\", units, 2)\r\n ];\r\n }\r\n\r\n if (cameraTransform.rotation) {\r\n rotation = [\r\n cameraTransform.rotation.x.toFixed(2),\r\n cameraTransform.rotation.y.toFixed(2),\r\n cameraTransform.rotation.z.toFixed(2)\r\n ];\r\n }\r\n\r\n return {rotation, offset};\r\n };\r\n\r\n const resetDefaults = () => {\r\n const height = projectHeight / projectionToMeters(dataProjection);\r\n setHeight(height);\r\n\r\n const localizedProjectName = getLocalizedProjectName(projectName);\r\n setName(localizedProjectName);\r\n\r\n setProj(dataProjection.name);\r\n };\r\n\r\n useEffect(() => {\r\n onMatrixChange(cameraTransformPath);\r\n }, [cameraTransformPath]);\r\n\r\n useEffect(() => {\r\n if (!projectDialog.open) return;\r\n\r\n resetDefaults();\r\n handleImported();\r\n userProjections.load();\r\n\r\n // Get a sorted list of projections\r\n const sortedProjections = userProjections.data.sort((a, b) => {\r\n const name1 = a.name.toLowerCase();\r\n const name2 = b.name.toLowerCase();\r\n return (name1 < name2) ? -1 : ((name2 > name1) ? 1 : 0);\r\n });\r\n\r\n // Find the current projection\r\n const matchedProjection = sortedProjections.filter(\r\n x => x.name === dataProjection.name)[0];\r\n\r\n setProjections(sortedProjections);\r\n setMatchedProjection(matchedProjection);\r\n }, [projectDialog.open, dataProjection]);\r\n\r\n const selectedProjection = getNewProjection();\r\n const units = projectionToUnits(selectedProjection);\r\n const toMeters = projectionToMeters(selectedProjection);\r\n const hasBasicAlignment = Object.keys(basicAdjustments).length !== 0;\r\n\r\n const localizedProjectionName = getLocalizedProjectionName(dataProjection, units);\r\n const localizedProjectName = getLocalizedProjectName(projectName);\r\n\r\n const {rotation, offset} = getTransformValues();\r\n const hasUserProjections = projections.length > 0;\r\n updateTitle(localizedProjectName);\r\n\r\n return (\r\n
\r\n \r\n\r\n {/** Project Name */}\r\n \r\n {localizedProjectName}\r\n \r\n\r\n {/** Projection */}\r\n \r\n {localizedProjectionName}\r\n \r\n\r\n \r\n\r\n {isElectronApp && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n {t('project-settings.project-information')}\r\n \r\n \r\n\r\n {/* Project display title */}\r\n \r\n {t('project-settings.project-title')}\r\n \r\n\r\n \r\n {t('project-settings.project-title-description')}\r\n \r\n \r\n\r\n {/* Camera height */}\r\n \r\n {t('project-settings.camera-height', {units})}\r\n \r\n \r\n {t('project-settings.camera-height-description')}\r\n \r\n \r\n\r\n {/* Projection dropdown */}\r\n \r\n {t('project-settings.data-projection')}\r\n \r\n \r\n {t('project-settings.data-projection-description')}\r\n \r\n \r\n {imported && (\r\n {t('project-settings.imported-projections')}\r\n )}\r\n\r\n {imported && ({imported.name})}\r\n\r\n \r\n {t('project-settings.generic-projections')}\r\n \r\n\r\n {t(\"projections.default-projection\", {units: \"m\"})}\r\n\r\n {t(\"projections.default-projection\", {units: \"ft\"})}\r\n\r\n {hasUserProjections && \r\n {t('project-settings.user-projections')}\r\n }\r\n\r\n {projections.map(row => {\r\n const conflict = imported\r\n ? imported.name === row.name\r\n : false;\r\n\r\n const suffix = conflict\r\n ? \"__conflict\"\r\n : \"\";\r\n\r\n return ({row.name});\r\n })}\r\n \r\n\r\n {/* Camera Correction Matrix */}\r\n
\r\n \r\n {t('project-settings.camera-correction')}\r\n \r\n\r\n {(!hasBasicAlignment) && (\r\n {t('project-settings.camera-correction-description')}\r\n )}\r\n\r\n {(hasBasicAlignment) && (
\r\n \r\n {t('project-settings.camera-correction-warning')}\r\n \r\n
)}\r\n\r\n
\r\n {cameraTransform.path &&
\r\n \r\n {t('project-settings.matrix_offset_units', {units})}: [{offset[0]}, {offset[1]}, {offset[2]}]\r\n \r\n\r\n \r\n {t('project-settings.matrix_rotation')}: [{rotation[0]}, {rotation[1]}, {rotation[2]}]\r\n \r\n
}\r\n\r\n
\r\n {/* Save matrix file */}\r\n {(cameraTransform.path) && (saveMatrixFile(cameraTransform.path)}\r\n className={clsx(classes.button, classes.slimButton)}\r\n color=\"primary\"\r\n >\r\n {t('buttons.save-file')}\r\n )}\r\n\r\n {/* Remove matrix file */}\r\n {cameraTransform.path && (\r\n {t('buttons.remove-file')}\r\n )}\r\n\r\n {/* Upload matrix file */}\r\n {(!hasBasicAlignment) && (\r\n {t('buttons.upload-file')}\r\n )}\r\n\r\n {/* Cancel basic alignment */}\r\n {(hasBasicAlignment) && (\r\n {t('buttons.clear-file')}\r\n )}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n {t('buttons.cancel')}\r\n \r\n\r\n \r\n {t('buttons.update-project')}\r\n \r\n
\r\n
\r\n \r\n\r\n {/* Warning message for projection mismatch */}\r\n \r\n \r\n {t('project-settings.projection-mismatch')}\r\n \r\n \r\n \r\n {t('project-settings.projection-mismatch-description', {name: dataProjection.name})}\r\n \r\n\r\n \r\n {t('project-settings.imported-projection')}\r\n

\r\n \"{dataProjection.string}\"\r\n
\r\n\r\n \r\n {t('project-settings.existing-projection')}\r\n

\r\n \"{matchedProjection?.string}\"\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\ninterface MainAppHeaderProps {\r\n settingsDrawerState: boolean;\r\n setSettingsDrawerState: React.Dispatch;\r\n customURLDialogOpen: boolean;\r\n setCustomURLDialogOpen: () => void;\r\n measurementsDialogOpen: boolean;\r\n setMeasurementsDialogOpen: () => void;\r\n}\r\n\r\nexport const MainAppHeader = memo((props: MainAppHeaderProps) => {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const dispatch = useDispatch();\r\n const {t, i18n} = useTranslation();\r\n\r\n const {settingsDrawerState, setSettingsDrawerState,\r\n customURLDialogOpen, setCustomURLDialogOpen,\r\n measurementsDialogOpen, setMeasurementsDialogOpen} = props;\r\n\r\n const { activeToolOpen } = useActiveTool();\r\n const { loggedIn } = useAuth();\r\n\r\n const handleDrawerOpen = () => {\r\n dispatch(changeAssetDrawerState(true));\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n {/** Language selector */}\r\n \r\n\r\n {/** Custom Links */}\r\n {isElectronApp && \r\n \r\n \r\n \r\n }\r\n\r\n {/** Measurements */}\r\n \r\n {\r\n if (activeToolOpen) return toast.warning(t('toast.one_tool_only'));\r\n setMeasurementsDialogOpen();\r\n }}\r\n size=\"large\">\r\n \r\n \r\n \r\n\r\n {/** Home Icon */}\r\n {isCloudSite && loggedIn && \r\n \r\n \r\n \r\n }\r\n\r\n {/** User profile */}\r\n {(isCloudSite || isElectronApp) && }\r\n\r\n {/** Project Settings */}\r\n \r\n {\r\n setSettingsDrawerState(true);\r\n }}\r\n size=\"large\">\r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n});\r\n\r\nexport const MainAppFooter = memo(() => {\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const [mouseCoords, setMouseCoords] = useState(null);\r\n const [coordinate, setCoordinate] = useState(null);\r\n const formatter = viewer?.getMeasurementFormatter();\r\n\r\n useEffect(() => {\r\n setCoordinates();\r\n }, [mouseCoords]);\r\n\r\n /** Mouse coordinate event listener */\r\n useEffect(() => {\r\n const callback = (event) => {\r\n const {coords} = event.detail;\r\n setMouseCoords(coords);\r\n };\r\n\r\n document.addEventListener(\"update-mouse-coords\", callback);\r\n\r\n return () => {\r\n document.removeEventListener(\"update-mouse-coords\", callback);\r\n };\r\n }, []);\r\n\r\n const setCoordinates = () => {\r\n if (!mouseCoords || !LocalScene.initialized) {\r\n setCoordinate(null);\r\n return;\r\n }\r\n\r\n const precision = formatter.getVectorPrecision(LocalScene.viewProjection);\r\n const coordinate = new SceneCoordinate(mouseCoords)\r\n .toViewProjection();\r\n\r\n const x = coordinate.x.toFixed(precision.x);\r\n const y = coordinate.y.toFixed(precision.y);\r\n const z = coordinate.z.toFixed(precision.z);\r\n\r\n setCoordinate([x, y, z]);\r\n };\r\n\r\n return (\r\n \r\n
\r\n {coordinate && \r\n {`(${coordinate[0]}, ${coordinate[1]}, ${coordinate[2]})`}\r\n }\r\n\r\n {!coordinate && \r\n {t('footer.powered_by_solv3d')}\r\n }\r\n
\r\n\r\n
\r\n );\r\n});\r\n\r\nexport const updateMouseCoords = (coords: Vector3) => {\r\n sendCustomEvent(\"update-mouse-coords\", {coords});\r\n};","import React, {useEffect, useState} from \"react\";\r\nimport {isElectronApp, registerEvent} from \"../electron-modules\";\r\nimport {\r\n FormControl,\r\n List,\r\n ListItem,\r\n MenuItem,\r\n Select,\r\n Switch, TextField\r\n} from \"@mui/material\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { Theme } from \"@mui/material/styles\";\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport { SingleSlider } from \".\";\r\nimport clsx from 'clsx';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ColorPicker, SimpleDialog } from \"../components\";\r\nimport {useAuth, useDialog, useGlobalSettings} from \"../hooks\";\r\nimport { ControlType } from \"../types/controls\";\r\nimport { AerialMeasureType, SamplingRate, VolumeType } from \"../types/measurements\";\r\nimport {\r\n engineCloudURL as globalEngineCloudURL,\r\n setEngineCloudURL as setGlobalEngineCloudURL\r\n} from \"../urls\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n marginTop: theme.spacing(1)\r\n },\r\n sectionTitle: {\r\n fontWeight: 'bold',\r\n display: \"inline-block\",\r\n fontSize: '0.9em'\r\n },\r\n slider: {\r\n width: \"100%\"\r\n },\r\n dropdown: {\r\n width: \"40%\"\r\n },\r\n checkBoxWithLabel: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n dropdownWithLabel: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }\r\n })\r\n);\r\n\r\nexport const GlobalSettings = () => {\r\n const {signOut} = useAuth();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const settingsDialog = useDialog();\r\n const globalSettings = useGlobalSettings();\r\n\r\n const [openQuickNav, setOpenQuickNav] = useState(false);\r\n const [orthoQuality, setOrthoQuality] = useState(null);\r\n const [orthoOpacity, setOrthoOpacity] = useState(null);\r\n const [controlType, setControlType] = useState(null);\r\n const [aerialMeasureType, setAerialMeasureType] = useState(null);\r\n const [volumeType, setVolumeType] = useState(null);\r\n const [volumeSampleRate, setVolumeSampleRate] = useState(null);\r\n const [viewerBackground, setViewerBackground] = useState(\"#00000\");\r\n const [aerialBackground, setAerialBackground] = useState(\"#00000\");\r\n const [engineCloudURL, setEngineCloudURL] = useState(\"\");\r\n\r\n const onSubmit = () => {\r\n globalSettings.update({\r\n orthoQuality,\r\n orthoOpacity,\r\n controlType,\r\n openQuickNav,\r\n aerialMeasureType,\r\n volumeType,\r\n volumeSampleRate,\r\n viewerBackground,\r\n aerialBackground\r\n });\r\n\r\n if (isElectronApp) {\r\n const modified = setGlobalEngineCloudURL(engineCloudURL, true);\r\n\r\n if (modified) {\r\n signOut();\r\n }\r\n }\r\n\r\n settingsDialog.handleClose();\r\n };\r\n\r\n useEffect(() => {\r\n if (!settingsDialog.open) {\r\n return;\r\n }\r\n\r\n // Load current state from global settings context\r\n setOrthoQuality(globalSettings.orthoQuality);\r\n setOrthoOpacity(globalSettings.orthoOpacity);\r\n setControlType(globalSettings.controlType);\r\n setAerialMeasureType(globalSettings.aerialMeasureType);\r\n setVolumeType(globalSettings.volumeType);\r\n setVolumeSampleRate(globalSettings.volumeSampleRate);\r\n setViewerBackground(globalSettings.viewerBackground);\r\n setAerialBackground(globalSettings.aerialBackground);\r\n setOpenQuickNav(globalSettings.openQuickNav);\r\n\r\n if (isElectronApp) {\r\n setEngineCloudURL(globalEngineCloudURL);\r\n }\r\n }, [settingsDialog.open]);\r\n\r\n useEffect(() => {\r\n registerEvent(\"open-global-settings\", () => {\r\n settingsDialog.handleOpen();\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n {/* Global Settings */}\r\n \r\n\r\n {/** General setting header */}\r\n \r\n \r\n {t('global-settings.general_settings')}\r\n \r\n \r\n\r\n {/* Viewer background */}\r\n \r\n \r\n {t('global-settings.viewer_background')}\r\n \r\n\r\n \r\n \r\n\r\n {/* Aerial background */}\r\n \r\n \r\n {t('global-settings.aerial_background')}\r\n \r\n\r\n \r\n \r\n\r\n {/* Control Type */}\r\n \r\n \r\n {t(\"global-settings.control-type\")}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setControlType(value);\r\n }}\r\n >\r\n \r\n {t(\"control-type.default\")}\r\n \r\n \r\n {t(\"control-type.reverse\")}\r\n \r\n \r\n {t(\"control-type.autocad\")}\r\n \r\n \r\n \r\n \r\n\r\n {/* Quick navigation */}\r\n \r\n \r\n {t('global-settings.allow_quick_navigation_menu')}\r\n \r\n\r\n setOpenQuickNav(!openQuickNav)}\r\n name=\"openQuickNav\"\r\n />\r\n \r\n\r\n {/** Measurement header */}\r\n \r\n \r\n {t('global-settings.measurement_settings')}\r\n \r\n \r\n\r\n {/* Aerial Measurement Type */}\r\n \r\n \r\n {t('global-settings.aerial_measurement_type')}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setAerialMeasureType(value);\r\n }}\r\n >\r\n \r\n {t('global-settings.aerial_spherical')}\r\n \r\n \r\n {t('global-settings.aerial_planar')}\r\n \r\n \r\n \r\n \r\n\r\n {/* Volume Calculation */}\r\n \r\n \r\n {t('global-settings.volume_calculation')}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setVolumeType(value);\r\n }}\r\n >\r\n \r\n {t('measure.volume_multi_plane')}\r\n \r\n \r\n {t('measure.volume_lowest_plane')}\r\n \r\n \r\n \r\n \r\n\r\n {/* Volume Sampling */}\r\n \r\n \r\n {t('global-settings.volume_sample_rate')}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setVolumeSampleRate(value);\r\n }}\r\n >\r\n \r\n {t('general.high')}\r\n \r\n \r\n {t('general.medium')}\r\n \r\n \r\n {t('general.low')}\r\n \r\n \r\n \r\n \r\n\r\n {/** Orthomoaic header */}\r\n \r\n \r\n {t(\"global-settings.orthomosaic-settings\")}\r\n \r\n \r\n\r\n {/* Orthomoaic opacity */}\r\n \r\n
\r\n \r\n {t(\"global-settings.orthomosaic-opacity\")}\r\n \r\n \r\n
\r\n
\r\n\r\n {/* Orthomoaic quality */}\r\n \r\n
\r\n \r\n {t(\"global-settings.orthomosaic-quality\")}\r\n \r\n \r\n
\r\n
\r\n\r\n {/** General setting header */}\r\n \r\n \r\n {t(\"global-settings.engine_cloud_settings\")}\r\n \r\n \r\n\r\n {/* Engine Cloud URL */}\r\n \r\n \r\n {t(\"global-settings.engine_cloud_url\")}\r\n \r\n\r\n \r\n {\r\n setEngineCloudURL(event.target.value);\r\n }}\r\n >\r\n \r\n \r\n \r\n\r\n
\r\n \r\n );\r\n};\r\n","export default __webpack_public_path__ + \"static/media/awesome-green.32dfeafe.png\";","export default __webpack_public_path__ + \"static/media/black-orange.62f427fb.png\";","export default __webpack_public_path__ + \"static/media/blue-hue.15284809.png\";","export default __webpack_public_path__ + \"static/media/blue-orange.19c7779d.png\";","export default __webpack_public_path__ + \"static/media/blue-red.d938a92d.png\";","export default __webpack_public_path__ + \"static/media/grayscale.416ab034.png\";","export default __webpack_public_path__ + \"static/media/heat-map.100d3bd6.png\";","export default __webpack_public_path__ + \"static/media/jet.e5269d83.png\";","export default __webpack_public_path__ + \"static/media/pastel-shades.1cd9b941.png\";","import awesomeGreen from './awesome-green.png';\r\nimport blackOrange from './black-orange.png';\r\nimport blueHue from './blue-hue.png';\r\nimport blueOrange from './blue-orange.png';\r\nimport blueRed from './blue-red.png';\r\nimport grayScale from './grayscale.png';\r\nimport heatMap from './heat-map.png';\r\nimport jet from './jet.png';\r\nimport pastelShades from './pastel-shades.png';\r\nimport {ColorMapKey} from \"../../../redux/settings-slice\";\r\nimport {t} from '../../../localization';\r\n\r\nclass ColorMap {\r\n public id: ColorMapKey;\r\n public image: string;\r\n\r\n constructor(id, image) {\r\n this.id = id;\r\n this.image = image;\r\n }\r\n\r\n get name() {\r\n return t(`color-map.${this.id}`);\r\n }\r\n}\r\n\r\nexport const colorMaps: ColorMap[] = [\r\n new ColorMap(\"heat-map\", heatMap),\r\n new ColorMap(\"awesome-green\", awesomeGreen),\r\n new ColorMap(\"pastel-shades\", pastelShades),\r\n new ColorMap(\"blue-orange\", blueOrange),\r\n new ColorMap(\"black-orange\", blackOrange),\r\n new ColorMap(\"blue-hue\", blueHue),\r\n new ColorMap(\"blue-red\", blueRed),\r\n new ColorMap(\"jet\", jet),\r\n new ColorMap(\"grayscale\", grayScale)\r\n];\r\n\r\nexport const getColorMap = (id) => {\r\n return colorMaps.find(colorMap => colorMap.id === id);\r\n};\r\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\r\nimport { Theme, useTheme } from '@mui/material/styles';\r\nimport createStyles from '@mui/styles/createStyles';\r\nimport makeStyles from '@mui/styles/makeStyles';\r\nimport Drawer from '@mui/material/Drawer';\r\nimport { throttle, debounce } from 'throttle-debounce';\r\nimport {\r\n Avatar,\r\n Box,\r\n FormControl,\r\n InputAdornment,\r\n InputLabel,\r\n List,\r\n ListItem,\r\n MenuItem,\r\n Select,\r\n Switch,\r\n} from \"@mui/material\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Slider from \"@mui/material/Slider\";\r\nimport Input from \"@mui/material/Input\";\r\nimport {useSelector, useDispatch} from 'react-redux';\r\nimport {\r\n ColorMapKey, ColorType,\r\n selectCloudDistance, changeCloudDistance,\r\n selectOpacity, changeOpacity,\r\n selectCloudScale, changeCloudScale,\r\n selectCloudMinimum, changeCloudMinimum,\r\n selectHeightClip, changeHeightClip,\r\n selectIntensityClip, changeIntensityClip,\r\n selectColorMap, changeColorMap,\r\n selectColorType, changeColorType,\r\n selectDynamicSize, changeDynamicSize,\r\n changeClassificationVisibility,\r\n changeAllClassificationVisibility,\r\n changeCircularPoints, selectCircularPoints,\r\n changeArrowMarkers, selectArrowMarkers, MarkerNavType,\r\n selectCloudMaxPoints, changeCloudMaxPoints,\r\n selectClassifications,\r\n getAvailableClassifications,\r\n getClassificationVisibilities,\r\n changeAvailableClassifications,\r\n changeTagDistance,\r\n selectTagDistance,\r\n ClassificationSetting\r\n} from '../redux/settings-slice';\r\nimport {colorMaps, getColorMap} from \"../viewer/textures/colormaps\";\r\nimport { getClassificationColors } from \"../classifications\";\r\nimport { isDevMode } from '../electron-modules';\r\nimport { ArrowTooltip, SlimScrollbar, SwitchWithLabel } from '../components';\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { UnitConverter } from \"../viewer/js/utilities\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\r\nimport {isEqual} from 'lodash';\r\nimport { headerHeight } from '../app';\r\nimport { nanoid } from '@reduxjs/toolkit';\r\nimport clsx from 'clsx';\r\nimport { useViewer } from '../hooks';\r\n\r\nexport const settingsDrawerWidth = 280;\r\n\r\nconst converter = new UnitConverter();\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n backdrop: {\r\n display: \"none\"\r\n },\r\n drawer: {\r\n width: 0,\r\n \"z-index\": `${theme.zIndex.appBar - 1} !important`,\r\n },\r\n drawerPaper: {\r\n width: settingsDrawerWidth,\r\n paddingTop: `${headerHeight}px`,\r\n height: `calc(100% - ${headerHeight}px)`,\r\n },\r\n asterisk: {\r\n \"&:after\": {\r\n content:'\"*\"',\r\n color: \"red\",\r\n paddingLeft: theme.spacing(0.5)\r\n }\r\n },\r\n drawerHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: 'flex-start',\r\n minHeight: `${headerHeight}px`\r\n },\r\n list: {\r\n width: '100%',\r\n maxWidth: 360,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n listItem: {\r\n width: '100%',\r\n marginBottom: theme.spacing(0.5)\r\n },\r\n formControl: {\r\n width: '100%',\r\n marginBottom: theme.spacing(1)\r\n },\r\n switch: {\r\n marginLeft: 0\r\n },\r\n colorPreview: {\r\n height: theme.spacing(3),\r\n width: theme.spacing(3),\r\n marginRight: theme.spacing(1),\r\n },\r\n img: {\r\n objectFit: 'fill',\r\n transform: 'rotate(-90deg)'\r\n },\r\n classificationPreview: {\r\n height: theme.spacing(1.25),\r\n width: theme.spacing(1.25),\r\n backgroundColor: '#bbb',\r\n borderRadius: '50%',\r\n borderColor: '#000000',\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n marginRight: theme.spacing(1),\r\n display: 'inline-block'\r\n },\r\n inputText: {\r\n float: \"right\",\r\n paddingRight: \"10px\"\r\n },\r\n inputPropParent: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: theme.spacing(1),\r\n zoom: \"0.85\",\r\n marginRight: `calc(36px + ${theme.spacing(1.5)})`,\r\n },\r\n inputPropTitle: {\r\n height: \"fit-content\"\r\n },\r\n title: {\r\n flex: 1,\r\n margin: theme.spacing(0)\r\n },\r\n boldTitleTypography: {\r\n fontWeight: 'bold',\r\n fontSize: '1em'\r\n },\r\n sectionTitle: {\r\n display: \"inline-block\",\r\n fontWeight: 'bold',\r\n fontSize: '0.95em'\r\n },\r\n rightInput: {\r\n marginRight: \"4px\"\r\n }\r\n }),\r\n);\r\n\r\nconst updateValueInterval = 50;\r\nconst saveDispatchInterval = 1000;\r\nconst classificationInterval = 200;\r\n\r\ninterface GenericSliderProps {\r\n value: number;\r\n min: number;\r\n max: number;\r\n step: number;\r\n onChange: (value) => void;\r\n onFinish?: (value) => void;\r\n labelFunction?: (value) => string;\r\n magnitude?: number;\r\n units?: string;\r\n endAdornment?: string;\r\n}\r\n\r\ninterface InputSliderProps extends GenericSliderProps {\r\n type: \"single\" | \"range\";\r\n}\r\n\r\nconst InputSlider = (props: InputSliderProps) => {\r\n const {value, type, onChange, onFinish, labelFunction,\r\n magnitude=1.0, units=\"m\", endAdornment=\"\"} = props;\r\n\r\n const min = converter.convert(props.min * magnitude, \"m\", units);\r\n const max = converter.convert(props.max * magnitude, \"m\", units);\r\n const step = props.step * magnitude;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n\r\n const isRangeType = type === \"range\";\r\n const inputProps = {min, max, step};\r\n\r\n const defaultLabel = value => {\r\n return `${+Number(value).toFixed(2)}${endAdornment}`;\r\n };\r\n\r\n const labelFormat = labelFunction\r\n ? labelFunction\r\n : defaultLabel;\r\n\r\n const [openState, setOpen] = useState(false);\r\n const [sliderValue, setSliderValue] = useState(null);\r\n\r\n const roundToStep = (value) => {\r\n return +Number((Math.round(value/step) * step).toFixed(2));\r\n };\r\n\r\n const toInput = (value) => {\r\n if (isRangeType) {\r\n const min = converter.convert(value.min * magnitude, \"m\", units);\r\n const max = converter.convert(value.max * magnitude, \"m\", units);\r\n\r\n return [roundToStep(min), roundToStep(max)];\r\n }\r\n\r\n const out = converter.convert(value * magnitude, \"m\", units);\r\n return roundToStep(out);\r\n };\r\n\r\n const fromInput = (value) => {\r\n if (isRangeType) {\r\n return {\r\n min: converter.convert(value[0], units, \"m\") / magnitude,\r\n max: converter.convert(value[1], units, \"m\") / magnitude\r\n };\r\n }\r\n\r\n return converter.convert(value, units, \"m\") / magnitude;\r\n };\r\n\r\n // Throttle update function\r\n const changeCallback = useCallback(\r\n throttle(updateValueInterval, (value) => {\r\n onChange(value);\r\n }), []);\r\n\r\n // Debounce save function\r\n const finishCallback = useCallback(\r\n debounce(saveDispatchInterval, (value) => {\r\n if (!onFinish) return;\r\n onFinish(value);\r\n }), []);\r\n\r\n useEffect(() => {\r\n let scaledValue = toInput(value);\r\n\r\n /** NOTE: react will never return equal for arrays, so lodash is used */\r\n if (isEqual(sliderValue, scaledValue)) return;\r\n setSliderValue(scaledValue);\r\n }, [value, units]);\r\n\r\n useEffect(() => {\r\n if (sliderValue === null) return;\r\n\r\n // Trigger update and change callbacks\r\n const saveValue = fromInput(sliderValue);\r\n changeCallback(saveValue);\r\n finishCallback(saveValue);\r\n }, [sliderValue]);\r\n\r\n const handleClick = () => {\r\n setOpen(!openState);\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n {labelFormat(min)}\r\n {labelFormat(max)}\r\n \r\n\r\n {\r\n setSliderValue(value);\r\n }}\r\n aria-labelledby=\"input-slider\"\r\n />\r\n
\r\n\r\n {\r\n event.stopPropagation();\r\n handleClick();\r\n }}\r\n >\r\n {openState ? : }\r\n \r\n
\r\n\r\n {openState && (
\r\n {isRangeType && ()}\r\n\r\n {!isRangeType && ()}\r\n
)}\r\n
\r\n );\r\n};\r\n\r\ninterface InputProp {\r\n min: number;\r\n max: number;\r\n step: number;\r\n}\r\n\r\ninterface SingleInputPropProps {\r\n value: number;\r\n setValue: React.Dispatch;\r\n inputProps: InputProp;\r\n adornment: string;\r\n}\r\n\r\nconst SingleInputProp = (props: SingleInputPropProps) => {\r\n const {value, setValue, inputProps, adornment} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [inputValue, setInputValue] = useState(0);\r\n const [inputError, setInputError] = useState(false);\r\n\r\n useEffect(() => {\r\n setInputValue(+Number(value).toFixed(2));\r\n setInputError(false);\r\n }, [value]);\r\n\r\n const hasError = (value) => {\r\n return (value === \"\")\r\n || isNaN(value)\r\n || (parseFloat(value) < inputProps.min)\r\n || (parseFloat(value) > inputProps.max);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {t(\"user-settings.slider-value\")}:\r\n \r\n\r\n {\r\n // Check for general error\r\n let error = hasError(value);\r\n setInputValue(value);\r\n setInputError(error);\r\n if (error) return;\r\n\r\n // Update slider value\r\n value = parseFloat(value);\r\n setValue(value);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\ninterface RangeInputPropProps {\r\n values: number[];\r\n setValues: React.Dispatch;\r\n inputProps: InputProp;\r\n adornment: string;\r\n}\r\n\r\nconst RangeInputProp = (props: RangeInputPropProps) => {\r\n const {values, setValues, inputProps, adornment} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [minValue, setMinValue] = useState(0);\r\n const [maxValue, setMaxValue] = useState(0);\r\n\r\n const [minError, setMinError] = useState(false);\r\n const [maxError, setMaxError] = useState(false);\r\n\r\n useEffect(() => {\r\n setMinValue(+Number(values[0]).toFixed(2));\r\n setMaxValue(+Number(values[1]).toFixed(2));\r\n\r\n setMinError(false);\r\n setMaxError(false);\r\n }, [values]);\r\n\r\n const hasError = (value) => {\r\n return (value === \"\")\r\n || isNaN(value)\r\n || (parseFloat(value) < inputProps.min)\r\n || (parseFloat(value) > inputProps.max);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n {t(\"user-settings.slider-minimum-value\")}:\r\n \r\n\r\n {\r\n // Check for general error\r\n let error = hasError(value);\r\n setMinValue(value);\r\n setMinError(error);\r\n if (error) return;\r\n\r\n value = parseFloat(value);\r\n\r\n // Make sure min is less than max\r\n if (value > maxValue) {\r\n setMinError(true);\r\n return;\r\n }\r\n\r\n // Update slider values\r\n setValues([value, maxValue]);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n \r\n {t(\"user-settings.slider-maximum-value\")}:\r\n \r\n\r\n {\r\n // Check for general error\r\n let error = hasError(value);\r\n setMaxValue(value);\r\n setMaxError(error);\r\n if (error) return;\r\n\r\n value = parseFloat(value);\r\n\r\n // Make sure max is more than min\r\n if (value < minValue) {\r\n setMaxError(true);\r\n return;\r\n }\r\n\r\n // Update slider values\r\n setValues([minValue, value]);\r\n }}\r\n />\r\n\r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface InputFieldProps {\r\n value: number;\r\n inputProps: InputProp;\r\n onChange: (value) => void;\r\n adornment: string;\r\n error: boolean;\r\n}\r\n\r\nconst InputField = (props: InputFieldProps) => {\r\n const {value, inputProps, onChange, adornment, error} = props;\r\n\r\n return (\r\n {adornment}}\r\n onChange={(event) => {\r\n onChange(event.target.value);\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport const SingleSlider = (props: GenericSliderProps) => {\r\n return ;\r\n};\r\n\r\nexport const RangeSlider = (props: GenericSliderProps) => {\r\n return ;\r\n};\r\n\r\ninterface ClassificationListProps {\r\n classifications: ClassificationSetting[];\r\n}\r\n\r\nconst ClassificationList = (props: ClassificationListProps) => {\r\n const {classifications} = props;\r\n\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [classificationColors, setClassificationColors] = useState(\r\n Array(256).fill('#ffffff'));\r\n\r\n useEffect(() => {\r\n const updateColorsList = async () => {\r\n const colors = await getClassificationColors();\r\n setClassificationColors(colors);\r\n };\r\n\r\n updateColorsList();\r\n }, []);\r\n\r\n const hasClassifications = classifications.length > 0;\r\n\r\n return (\r\n \r\n {!hasClassifications && (\r\n
\r\n \r\n \r\n {t(\"user-settings.no-points-loaded\")}\r\n \r\n \r\n
\r\n )}\r\n\r\n {hasClassifications && (\r\n classifications.map(classification => (\r\n \r\n
\r\n \r\n }\r\n checked={classification.visible}\r\n onChange={(_, checked) => {\r\n dispatch(changeClassificationVisibility(classification.id));\r\n }}\r\n />\r\n
\r\n
\r\n ))\r\n )}\r\n\r\n
\r\n );\r\n};\r\n\r\ninterface SettingsDrawerProps {\r\n open: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport const SettingsDrawer = (props: SettingsDrawerProps) => {\r\n const {open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const classifications = useSelector(selectClassifications);\r\n\r\n /** Checkbox selectors (uses redux value directly) */\r\n const savedColorMap = useSelector(selectColorMap);\r\n const savedColorType = useSelector(selectColorType);\r\n const savedDynamicSize = useSelector(selectDynamicSize);\r\n const savedCircularPoints = useSelector(selectCircularPoints);\r\n const savedArrowMarkers = useSelector(selectArrowMarkers);\r\n\r\n /** Developer only toggles */\r\n const [pickerDebug, setPickerDebug] = useState(false);\r\n const [boundsVisible, setBoundsVisible] = useState(false);\r\n const [renderPaused, setRenderPaused] = useState(false);\r\n\r\n /** Slider selectors (uses throttled save callback) */\r\n const savedOpacity = useSelector(selectOpacity);\r\n const savedTagDistance = useSelector(selectTagDistance);\r\n const savedCloudDistance = useSelector(selectCloudDistance);\r\n const savedCloudScale = useSelector(selectCloudScale);\r\n const savedCloudMinimum = useSelector(selectCloudMinimum);\r\n const savedMaxPoints = useSelector(selectCloudMaxPoints);\r\n const savedHeightClip = useSelector(selectHeightClip);\r\n const savedIntensityClip = useSelector(selectIntensityClip);\r\n\r\n const paperPropID = useState(nanoid())[0];\r\n\r\n const savedAvailableClassifications = useMemo(() => {\r\n return getAvailableClassifications(classifications);\r\n }, [classifications]);\r\n\r\n const savedClassificationVisibilities = useMemo(() => {\r\n return getClassificationVisibilities(classifications);\r\n }, [classifications]);\r\n\r\n const units = LocalScene.viewProjectionUnits;\r\n\r\n /** Handle classification updates */\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (!viewer) return;\r\n\r\n const newClasses = viewer.getAvailableClassifications();\r\n const oldClasses = savedAvailableClassifications.map(x => x.id);\r\n\r\n // NOTE: Sorting is important for equality check\r\n newClasses.sort();\r\n oldClasses.sort();\r\n\r\n if (isEqual(newClasses, oldClasses)) return;\r\n\r\n dispatch(changeAvailableClassifications(newClasses));\r\n }, classificationInterval);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [viewer, classifications]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudOpacity(savedOpacity);\r\n }, [viewer, savedOpacity]);\r\n\r\n useEffect(() => {\r\n viewer?.setTagDistance(savedTagDistance);\r\n }, [viewer, savedTagDistance]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudDistance(savedCloudDistance);\r\n }, [viewer, savedCloudDistance]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudScale(savedCloudScale);\r\n }, [viewer, savedCloudScale]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudMinimum(savedCloudMinimum);\r\n }, [viewer, savedCloudMinimum]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudMaxPoints(savedMaxPoints);\r\n }, [viewer, savedMaxPoints]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudHeightClip(savedHeightClip);\r\n }, [viewer, savedHeightClip]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudIntensityClip(savedIntensityClip);\r\n }, [viewer, savedIntensityClip]);\r\n\r\n useEffect(() => {\r\n viewer?.setVisibleClassifications(savedClassificationVisibilities);\r\n }, [viewer, savedClassificationVisibilities]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudColorMap(savedColorMap);\r\n }, [viewer, savedColorMap]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudColorType(savedColorType);\r\n }, [viewer, savedColorType]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudDynamicSize(savedDynamicSize);\r\n }, [viewer, savedDynamicSize]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudCircularPoints(savedCircularPoints);\r\n }, [viewer, savedCircularPoints]);\r\n\r\n useEffect(() => {\r\n viewer?.setNavigationType(savedArrowMarkers);\r\n }, [viewer, savedArrowMarkers]);\r\n\r\n const isIntensity = savedColorType === 0;\r\n const isHeightmap = savedColorType === 2;\r\n const colorMapRequired = isIntensity || isHeightmap;\r\n\r\n return (\r\n {\r\n /** Remove tabindex from paper to stop drag/drop issues */\r\n let element = document.getElementById(paperPropID);\r\n element?.removeAttribute(\"tabindex\");\r\n }}\r\n classes={{\r\n paper: classes.drawerPaper,\r\n }}\r\n slotProps={{\r\n backdrop: {\r\n classes: {\r\n root: classes.backdrop\r\n }\r\n }\r\n }}\r\n PaperProps={{\r\n id: paperPropID\r\n }}\r\n >\r\n \r\n\r\n \r\n \r\n \r\n {t('user-settings.project_settings')}\r\n \r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Developer Controls */}\r\n {isDevMode && (\r\n \r\n \r\n \r\n {t('user-settings.developer-debug')}\r\n \r\n \r\n\r\n {/* Picker Debug */}\r\n \r\n
\r\n {\r\n viewer?.togglePickerDebug(checked);\r\n setPickerDebug(checked);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n {/* Points render toggle */}\r\n \r\n
\r\n {\r\n viewer?.setPointsShouldUpdate(!checked);\r\n setRenderPaused(checked);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n {/* Point Bounds Debug */}\r\n \r\n
\r\n {\r\n viewer?.setPointBoundsVisible(checked);\r\n setBoundsVisible(checked);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n
)}\r\n\r\n {/* Point Cloud Controls */}\r\n \r\n \r\n \r\n {t(\"user-settings.point-cloud-controls\")}\r\n \r\n \r\n\r\n {/* Color type */}\r\n \r\n
\r\n \r\n {t(\"user-settings.color-type\")}\r\n \r\n \r\n {\r\n const value = event.target.value as ColorType;\r\n dispatch(changeColorType(value));\r\n }}\r\n >\r\n \r\n {t(\"color-type.intensity\")}\r\n \r\n \r\n {t(\"color-type.color\")}\r\n \r\n \r\n {t(\"color-type.height\")}\r\n \r\n \r\n {t(\"color-type.classification\")}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Color maps */}\r\n {colorMapRequired && (\r\n \r\n
\r\n \r\n {t(\"user-settings.color-map\")}\r\n \r\n \r\n {\r\n return getColorMap(value).name;\r\n }}\r\n onChange={(event) => {\r\n const value = event.target.value as ColorMapKey;\r\n dispatch(changeColorMap(value));\r\n }}\r\n >\r\n {colorMaps.map((colorMap) => (\r\n \r\n \r\n {colorMap.name}\r\n \r\n ))}\r\n \r\n \r\n
\r\n
\r\n )}\r\n\r\n {/* Arrow Markers */}\r\n \r\n
\r\n \r\n {t(\"user-settings.navigation-type\")}\r\n \r\n \r\n {\r\n let value = event.target.value as MarkerNavType;\r\n dispatch(changeArrowMarkers(value));\r\n }}\r\n >\r\n \r\n {t(\"navigation-type.arrows\")}\r\n \r\n \r\n {t(\"navigation-type.markers\")}\r\n \r\n \r\n {t(\"navigation-type.none\")}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Cloud Opacity */}\r\n \r\n
\r\n \r\n {t(\"user-settings.point-visibility\")}\r\n \r\n {\r\n viewer?.setPointCloudOpacity(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeOpacity(value));\r\n }}\r\n min={0}\r\n max={1}\r\n step={0.01}\r\n magnitude={100}\r\n endAdornment={\"%\"}\r\n />\r\n
\r\n
\r\n\r\n {/* Cloud Max Points */}\r\n \r\n
\r\n \r\n {t(\"user-settings.max-visible-points\")}\r\n \r\n {\r\n viewer?.setPointCloudMaxPoints(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudMaxPoints(value));\r\n }}\r\n min={0}\r\n max={10}\r\n step={0.05}\r\n endAdornment={\"M\"}\r\n />\r\n
\r\n
\r\n\r\n {/* Cloud Distance */}\r\n \r\n
\r\n \r\n {t(\"user-settings.point-distance\")}\r\n \r\n {\r\n viewer?.setPointCloudDistance(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudDistance(value));\r\n }}\r\n min={0}\r\n max={1000}\r\n step={5}\r\n units={units}\r\n endAdornment={units}\r\n labelFunction={(value) => {\r\n const maxValue = converter.convert(999, \"m\", units);\r\n return (value > maxValue) ? \"∞\" : `${value}${units}`;\r\n }}\r\n />\r\n
\r\n
\r\n\r\n {/* Height range */}\r\n {isHeightmap && (\r\n \r\n
\r\n \r\n {t(\"user-settings.height-range\")}\r\n \r\n {\r\n viewer?.setPointCloudHeightClip(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeHeightClip(value));\r\n }}\r\n min={-0.5}\r\n max={1.5}\r\n step={0.01}\r\n magnitude={100}\r\n endAdornment={\"%\"}\r\n />\r\n
\r\n
\r\n )}\r\n\r\n {/* Intensity range */}\r\n {isIntensity && (\r\n \r\n
\r\n \r\n {t(\"user-settings.intensity-range\")}\r\n \r\n {\r\n viewer?.setPointCloudIntensityClip(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeIntensityClip(value));\r\n }}\r\n min={-0.5}\r\n max={1.5}\r\n step={0.01}\r\n magnitude={100}\r\n endAdornment={\"%\"}\r\n />\r\n
\r\n
\r\n )}\r\n\r\n {/* Circular Points */}\r\n \r\n
\r\n {\r\n dispatch(changeCircularPoints(checked));\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n {/* Point Cloud Size */}\r\n \r\n \r\n \r\n {t('user-settings.point-cloud-sizing')}\r\n \r\n \r\n\r\n {/* Point cloud scale */}\r\n \r\n
\r\n \r\n {t(\"user-settings.point-size\")}\r\n \r\n {\r\n viewer?.setPointCloudScale(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudScale(value));\r\n }}\r\n min={0}\r\n max={3}\r\n step={0.1}\r\n />\r\n
\r\n
\r\n\r\n {/* Minimum point size */}\r\n \r\n
\r\n \r\n {t('user-settings.minimum-point-size')}\r\n \r\n {\r\n viewer?.setPointCloudMinimum(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudMinimum(value));\r\n }}\r\n min={0}\r\n max={3}\r\n step={0.1}\r\n />\r\n
\r\n
\r\n\r\n {/* Adaptive point sizing */}\r\n \r\n
\r\n {\r\n dispatch(changeDynamicSize(checked));\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n {/* Asset controls */}\r\n \r\n \r\n \r\n {t('user-settings.tag_controls')}\r\n \r\n \r\n\r\n {/* Tag Distance */}\r\n \r\n
\r\n \r\n {t(\"user-settings.tag-distance\")}\r\n \r\n {\r\n viewer?.setTagDistance(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeTagDistance(value));\r\n }}\r\n min={0}\r\n max={1000}\r\n step={5}\r\n units={units}\r\n endAdornment={units}\r\n labelFunction={(value) => {\r\n const maxValue = converter.convert(999, \"m\", units);\r\n return (value > maxValue) ? \"∞\" : `${value}${units}`;\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n {/* Classifications */}\r\n \r\n \r\n
\r\n \r\n {t(\"user-settings.classifications\")}\r\n \r\n\r\n {savedAvailableClassifications.length > 0 && (\r\n \r\n classification.visible\r\n )}\r\n onChange={(_, checked) => {\r\n dispatch(changeAllClassificationVisibility(checked));\r\n }}\r\n />\r\n \r\n )}\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n );\r\n};","import { NearestFilter, TextureLoader } from 'three';\r\nimport classifications from '../textures/colormaps/classifications.png';\r\n\r\n// Load classification texture\r\nconst loader = new TextureLoader();\r\n\r\nexport const classificationTexture =\r\n loader.load(classifications, texture => {\r\n texture.minFilter = NearestFilter;\r\n texture.magFilter = NearestFilter;\r\n });\r\n","export default \"uniform sampler2D tImage;\\r\\nuniform float opacity;\\r\\nvarying vec2 vUv;\\r\\n\\r\\nvoid main() {\\r\\n vec4 color = texture2D(tImage, vUv);\\r\\n float alpha = color.a * opacity;\\r\\n gl_FragColor = vec4(color.rgb, alpha);\\r\\n}\\r\\n\";","export default \"varying vec2 vUv;\\r\\n\\r\\nvoid main() {\\r\\n\\tvUv = uv;\\r\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\r\\n}\\r\\n\";","/* eslint-disable import/no-webpack-loader-syntax */\r\n\r\nimport basicRenderFragmentShader from \"!!raw-loader!./render_basic.frag\";\r\nimport edlRenderFragmentShader from \"!!raw-loader!./render_edl.frag\";\r\nimport outputRenderFragmentShader from \"!!raw-loader!./render_output.frag\";\r\nimport commonRenderVertexShader from \"!!raw-loader!./render_common.vert\";\r\nimport pointCloudFragmentShader from \"!!raw-loader!./pointcloud.frag\";\r\nimport pointCloudVertexShader from \"!!raw-loader!./pointcloud.vert\";\r\nimport panoramicFragmentShader from \"!!raw-loader!./panoramic.frag\";\r\nimport panoramicVertexShader from \"!!raw-loader!./panoramic.vert\";\r\nimport planarFragmentShader from \"!!raw-loader!./planar.frag\";\r\nimport planarVertexShader from \"!!raw-loader!./planar.vert\";\r\nimport markersFragmentShader from \"!!raw-loader!./markers.frag\";\r\nimport markersVertexShader from \"!!raw-loader!./markers.vert\";\r\nimport utilitiesVertexShader from \"!!raw-loader!./utilities.vert\";\r\nimport utilitiesFragmentShader from \"!!raw-loader!./utilities.frag\";\r\nimport gpuPickerFragmentShader from \"!!raw-loader!./gpu_picker.frag\";\r\nimport gpuPickerVertexShader from \"!!raw-loader!./gpu_picker.vert\";\r\nimport texturePackVertexShader from \"!!raw-loader!./texture_pack.vert\";\r\nimport tagsFragmentShader from \"!!raw-loader!./tags.frag\";\r\nimport tagsVertexShader from \"!!raw-loader!./tags.vert\";\r\nimport basicPickerFragmentShader from \"!!raw-loader!./picker_basic.frag\";\r\nimport basicPickerVertexShader from \"!!raw-loader!./picker_basic.vert\";\r\nimport spriteFragmentShader from \"!!raw-loader!./sprite.frag\";\r\nimport spriteVertexShader from \"!!raw-loader!./sprite.vert\";\r\n\r\nconst shaders = {\r\n pointcloud: {\r\n vert: pointCloudVertexShader,\r\n frag: pointCloudFragmentShader\r\n },\r\n panoramic: {\r\n vert: panoramicVertexShader,\r\n frag: panoramicFragmentShader\r\n },\r\n planar: {\r\n vert: planarVertexShader,\r\n frag: planarFragmentShader\r\n },\r\n render_edl: {\r\n vert: commonRenderVertexShader,\r\n frag: edlRenderFragmentShader\r\n },\r\n render_basic: {\r\n vert: commonRenderVertexShader,\r\n frag: basicRenderFragmentShader\r\n },\r\n render_transition: {\r\n vert: commonRenderVertexShader,\r\n frag: outputRenderFragmentShader\r\n },\r\n markers: {\r\n vert: markersVertexShader,\r\n frag: markersFragmentShader\r\n },\r\n utilities: {\r\n vert: utilitiesVertexShader,\r\n frag: utilitiesFragmentShader\r\n },\r\n basic_picker: {\r\n vert: basicPickerVertexShader,\r\n frag: basicPickerFragmentShader\r\n },\r\n gpu_picker: {\r\n vert: gpuPickerVertexShader,\r\n frag: gpuPickerFragmentShader\r\n },\r\n texture_packer: {\r\n vert: texturePackVertexShader\r\n },\r\n tags: {\r\n vert: tagsVertexShader,\r\n frag: tagsFragmentShader\r\n },\r\n sprite: {\r\n vert: spriteVertexShader,\r\n frag: spriteFragmentShader\r\n }\r\n};\r\n\r\nexport default shaders;","export default \"\\r\\n#define DISTANCE_FROM_PLANE 0.5\\r\\n\\r\\nattribute float intensity;\\r\\nattribute float classification;\\r\\nattribute vec3 rgb;\\r\\n\\r\\nuniform bool gpuPicker;\\r\\nuniform float pratio;\\r\\nuniform float size;\\r\\nuniform float alpha;\\r\\nuniform float distance;\\r\\nuniform vec3 currentCameraTarget;\\r\\nuniform float screenHeight;\\r\\nuniform float fov;\\r\\nuniform float minSize;\\r\\nuniform float maxSize;\\r\\nuniform float octreeSize;\\r\\nuniform vec3 octreeCorner;\\r\\nuniform float octreeSpacing;\\r\\n\\r\\nuniform sampler2D colorMap;\\r\\nuniform float colorType;\\r\\nuniform bool adaptiveSize;\\r\\nuniform bool isOctreeCloud;\\r\\nuniform bool isPotreeCloud;\\r\\nuniform vec2 heightRange;\\r\\nuniform vec2 heightClamp;\\r\\nuniform vec2 intensityRange;\\r\\nuniform vec2 intensityClamp;\\r\\nuniform float rgbMax;\\r\\n\\r\\nuniform float crossSectionWidth;\\r\\nuniform vec3 crossSectionStart;\\r\\nuniform vec3 crossSectionEnd;\\r\\n\\r\\nuniform sampler2D clipPolygonData;\\r\\n\\r\\nuniform sampler2D visibleNodes;\\r\\nuniform sampler2D classificationData;\\r\\nuniform sampler2D classificationVisible;\\r\\nuniform sampler2D areaTriangleData;\\r\\n\\r\\nflat varying vec3 vColor;\\r\\nflat varying float vHidden;\\r\\n\\r\\nvec3 pointOnPlane(vec3 origin, vec3 point, vec3 normal) {\\r\\n return point - dot(point - origin, normal) * normal;\\r\\n}\\r\\n\\r\\nfloat distanceFromPlane(vec3 origin, vec3 point, vec3 normal) {\\r\\n return abs(dot(origin - point, normal));\\r\\n}\\r\\n\\r\\nbool classificationIsHidden(float classification) {\\r\\n float x = (classification + 0.1) / float(NUMBER_OF_CLASSIFICATIONS);\\r\\n vec4 value = texture2D(classificationVisible, vec2(x, 0.5));\\r\\n return value.a < 0.5;\\r\\n}\\r\\n\\r\\nvec3 classificationColor(float classification) {\\r\\n float x = (classification + 0.1) / float(NUMBER_OF_CLASSIFICATIONS);\\r\\n vec4 value = texture2D(classificationData, vec2(x, 0.5));\\r\\n return value.rgb;\\r\\n}\\r\\n\\r\\nfloat clampedValue(float data, vec2 dataRange, vec2 dataClamp) {\\r\\n float scaled = (data - dataRange.x) / (dataRange.y - dataRange.x);\\r\\n float clamped = (scaled - dataClamp.x) / (dataClamp.y - dataClamp.x);\\r\\n return clamped;\\r\\n}\\r\\n\\r\\nvec3 calculateOppositeColor(float colorType, vec3 colorValue){\\r\\n vec3 result;\\r\\n vec3 opp = vec3(1.0, 1.0, 1.0);\\r\\n opp = opp - colorValue;\\r\\n\\r\\n bool isIntensity = compareFloat(colorType, 0.0);\\r\\n bool isRGB = compareFloat(colorType, 1.0);\\r\\n bool isHeight = compareFloat(colorType, 2.0);\\r\\n bool isClassification = compareFloat(colorType, 3.0);\\r\\n\\r\\n if (isHeight) {\\r\\n result = opp;\\r\\n } else if (isIntensity) {\\r\\n result = vec3(1.0, 0.0, 0.0);\\r\\n } else if (isClassification) {\\r\\n result = vec3(1.0, 0.0, 0.0);\\r\\n } else if (isRGB) {\\r\\n result = vec3(1.0, 0.0, 0.0);\\r\\n } else {\\r\\n result = opp;\\r\\n }\\r\\n\\r\\n return result;\\r\\n}\\r\\n\\r\\nvec3 getCloudColor(float colorType, vec3 posWorld) {\\r\\n // Default color for invalid color types\\r\\n vec3 color = vec3(0.0, 0.0, 0.0);\\r\\n\\r\\n bool isIntensity = compareFloat(colorType, 0.0);\\r\\n bool isRGB = compareFloat(colorType, 1.0);\\r\\n bool isHeight = compareFloat(colorType, 2.0);\\r\\n bool isClassification = compareFloat(colorType, 3.0);\\r\\n\\r\\n if (isRGB) {\\r\\n // Color by RGB values\\r\\n color = rgb / rgbMax;\\r\\n } else if (isIntensity) {\\r\\n // Intensity colors with clamping\\r\\n float cloudIntensity = clampedValue(intensity, intensityRange, intensityClamp);\\r\\n color = texture2D(colorMap, vec2(cloudIntensity, 0.5)).rgb;\\r\\n } else if (isHeight) {\\r\\n // Height based coloring with clamping\\r\\n float cloudHeight = clampedValue(posWorld.z, heightRange, heightClamp);\\r\\n color = texture2D(colorMap, vec2(cloudHeight, 0.5)).rgb;\\r\\n } else if (isClassification) {\\r\\n color = classificationColor(classification);\\r\\n }\\r\\n\\r\\n return color;\\r\\n}\\r\\n\\r\\nint roundFloat(float number){\\r\\n\\treturn int(floor(number + 0.5));\\r\\n}\\r\\n\\r\\nbool isBitSet(int number, int index){\\r\\n int powi = roundFloat(pow(2.0, float(index)));\\r\\n\\tint ndp = number / powi;\\r\\n float remainder = mod(float(ndp), 2.0);\\r\\n\\treturn !compareFloat(remainder, 0.0);\\r\\n}\\r\\n\\r\\nint numberOfOnes(int number, int index){\\r\\n\\tint numOnes = 0;\\r\\n\\tint tmp = 128;\\r\\n\\tfor(int i = 7; i >= 0; i--){\\r\\n\\t\\tif(number >= tmp){\\r\\n\\t\\t\\tnumber = number - tmp;\\r\\n\\t\\t\\tif(i <= index){\\r\\n\\t\\t\\t\\tnumOnes++;\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\ttmp = tmp / 2;\\r\\n\\t}\\r\\n\\treturn numOnes;\\r\\n}\\r\\n\\r\\nint getChildIndexPotree(vec3 index3d) {\\r\\n return roundFloat((4.0 * index3d.x) + (2.0 * index3d.y) + index3d.z);\\r\\n}\\r\\n\\r\\nint getChildIndexEncompass(vec3 index3d) {\\r\\n return roundFloat(index3d.x + (2.0 * index3d.y) + (4.0 * index3d.z));\\r\\n}\\r\\n\\r\\nfloat getLocalTreeDepth(vec3 positionOctree){\\r\\n int iOffset = 0;\\r\\n\\tfloat depth = 0.0;\\r\\n vec3 offset = vec3(0.0, 0.0, 0.0);\\r\\n\\r\\n\\tfor(float i = 0.0; i <= 30.0; i++) {\\r\\n\\t\\tfloat nodeSizeAtLevel = octreeSize / pow(2.0, i);\\r\\n\\r\\n vec3 index3d = (positionOctree - offset) / nodeSizeAtLevel;\\r\\n\\t\\tindex3d = floor(index3d + 0.5);\\r\\n int index = isPotreeCloud\\r\\n ? getChildIndexPotree(index3d)\\r\\n : getChildIndexEncompass(index3d);\\r\\n\\r\\n float x = float(iOffset) / float(VISIBLE_NODES_WIDTH);\\r\\n\\t\\tvec4 value = texture2D(visibleNodes, vec2(x, 0.0));\\r\\n int mask = int(round(value.r * 255.0));\\r\\n bool childExists = isBitSet(mask, index);\\r\\n\\r\\n if(childExists){\\r\\n\\t\\t\\t// There are more visible child nodes at this position\\r\\n\\t\\t\\tint advanceG = int(round(value.g * 255.0)) * 256;\\r\\n\\t\\t\\tint advanceB = int(round(value.b * 255.0));\\r\\n\\t\\t\\tint advanceChild = numberOfOnes(mask, index - 1);\\r\\n\\t\\t\\tint advance = advanceG + advanceB + advanceChild;\\r\\n\\t\\t\\tiOffset = iOffset + advance;\\r\\n\\t\\t\\tdepth++;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\t// No more visible child nodes at this position\\r\\n\\t\\t\\tfloat lodOffset = (255.0 * value.a) / 10.0 - 10.0;\\r\\n\\t\\t\\treturn depth + lodOffset;\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\\r\\n\\t}\\r\\n\\r\\n\\treturn depth;\\r\\n}\\r\\n\\r\\nfloat getPointSizeAttenuation(vec3 posWorld) {\\r\\n vec3 positionOctree = posWorld - octreeCorner;\\r\\n\\treturn pow(2.0, getLocalTreeDepth(positionOctree));\\r\\n}\\r\\n\\r\\nfloat getClipBoxData(int xIndex, int yIndex) {\\r\\n return unpackTextureData(\\r\\n clipPolygonData,\\r\\n xIndex,\\r\\n yIndex,\\r\\n CLIP_TEXTURE_WIDTH,\\r\\n CLIP_TEXTURE_HEIGHT\\r\\n );\\r\\n}\\r\\n\\r\\nfloat getAreaTriangleData(int xIndex, int yIndex) {\\r\\n return unpackTextureData(\\r\\n areaTriangleData,\\r\\n xIndex,\\r\\n yIndex,\\r\\n AREA_TEXTURE_WIDTH,\\r\\n AREA_TEXTURE_HEIGHT\\r\\n );\\r\\n}\\r\\n\\r\\n// Point in 2d triangle: https://stackoverflow.com/a/2049593\\r\\nfloat triangleSign(vec3 p1, vec3 p2, vec3 p3) {\\r\\n return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);\\r\\n}\\r\\n\\r\\n// Point in 2d triangle: https://stackoverflow.com/a/2049593\\r\\nbool pointInTriangle(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {\\r\\n float d1 = triangleSign(p4, p1, p2);\\r\\n float d2 = triangleSign(p4, p2, p3);\\r\\n float d3 = triangleSign(p4, p3, p1);\\r\\n\\r\\n bool isNegative = (d1 < 0.0) || (d2 < 0.0) || (d3 < 0.0);\\r\\n bool isPositive = (d1 > 0.0) || (d2 > 0.0) || (d3 > 0.0);\\r\\n bool insideTriangle = !(isNegative && isPositive);\\r\\n\\r\\n return insideTriangle;\\r\\n}\\r\\n\\r\\nvec2 checkPointInArea(vec3 point) {\\r\\n // return vec2(\\r\\n // float insidePolygon,\\r\\n // float volumeEnabled\\r\\n // )\\r\\n\\r\\n #if defined NUM_AREA_TRIANGLES\\r\\n for (int i=0; i 0.5;\\r\\n bool volumeCalculated = compareFloat(volumeStatus, 2.0);\\r\\n\\r\\n // vertex #1\\r\\n vec3 v1 = vec3(\\r\\n getAreaTriangleData(i, 1),\\r\\n getAreaTriangleData(i, 2),\\r\\n getAreaTriangleData(i, 3)\\r\\n );\\r\\n\\r\\n // vertex #2\\r\\n vec3 v2 = vec3(\\r\\n getAreaTriangleData(i, 4),\\r\\n getAreaTriangleData(i, 5),\\r\\n getAreaTriangleData(i, 6)\\r\\n );\\r\\n\\r\\n // vertex #3\\r\\n vec3 v3 = vec3(\\r\\n getAreaTriangleData(i, 7),\\r\\n getAreaTriangleData(i, 8),\\r\\n getAreaTriangleData(i, 9)\\r\\n );\\r\\n\\r\\n vec3 N = cross(v2 - v1, v3 - v1);\\r\\n N = N / length(N);\\r\\n\\r\\n vec3 v1p = v1;\\r\\n vec3 v2p = v2;\\r\\n vec3 v3p = v3;\\r\\n vec3 pointP = point;\\r\\n\\r\\n if (isVolumeType == false) {\\r\\n // Check distance from plane\\r\\n float pointHeight = distanceFromPlane(v1, point, N);\\r\\n if (pointHeight > DISTANCE_FROM_PLANE) {\\r\\n continue;\\r\\n }\\r\\n\\r\\n // Project point to plane\\r\\n v1p = pointOnPlane(v1, v1, N);\\r\\n v2p = pointOnPlane(v1, v2, N);\\r\\n v3p = pointOnPlane(v1, v3, N);\\r\\n pointP = pointOnPlane(v1, point, N);\\r\\n }\\r\\n\\r\\n bool insideTriangle = pointInTriangle(v1p, v2p, v3p, pointP);\\r\\n if (insideTriangle == false) {\\r\\n continue;\\r\\n }\\r\\n\\r\\n if (volumeCalculated) {\\r\\n return vec2(1.0, 1.0);\\r\\n } else {\\r\\n return vec2(1.0, 0.0);\\r\\n }\\r\\n }\\r\\n #endif\\r\\n\\r\\n return vec2(0.0, 0.0);\\r\\n}\\r\\n\\r\\nvec4 checkPointInBox(vec3 point, float classification) {\\r\\n bool insideBox = false;\\r\\n bool newVisibility = true;\\r\\n bool reclassifyPoints = false;\\r\\n float finalClassification = -1.0;\\r\\n\\r\\n #if defined NUM_CLIP_BOXES\\r\\n for (int i=0; i 0.0);\\r\\n}\\r\\n\\r\\nbool pointInCrossSection(vec3 point) {\\r\\n vec3 p1 = crossSectionStart;\\r\\n vec3 p2 = crossSectionEnd;\\r\\n vec3 p3 = point;\\r\\n\\r\\n // force everything to 2d\\r\\n p1.z = 0.0;\\r\\n p2.z = 0.0;\\r\\n p3.z = 0.0;\\r\\n\\r\\n float lineLength = length(p1 - p2);\\r\\n if (compareFloat(lineLength, 0.0)) {\\r\\n return false;\\r\\n }\\r\\n\\r\\n // calculate distance from line\\r\\n float p1p3x = p1.x - p3.x;\\r\\n float p1p3y = p1.y - p3.y;\\r\\n float p2p1x = p2.x - p1.x;\\r\\n float p2p1y = p2.y - p1.y;\\r\\n float dAcrossAxis = abs(p2p1x*p1p3y - p1p3x*p2p1y) / lineLength;\\r\\n\\r\\n // calculate signed distance along line\\r\\n float dHypotenuse = length(p1 - p3);\\r\\n float dAlongAxis = sqrt(dHypotenuse*dHypotenuse - dAcrossAxis*dAcrossAxis);\\r\\n bool infront = isInFront(p1, p2, p3);\\r\\n if (infront == false) {\\r\\n dAlongAxis = -1.0 * dAlongAxis;\\r\\n }\\r\\n\\r\\n return (dAlongAxis >= 0.0)\\r\\n && (dAlongAxis <= lineLength)\\r\\n && (dAcrossAxis < (crossSectionWidth/2.0));\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n // Update colors for GPU picker\\r\\n updateGPUPickerColors();\\r\\n bool isHidden = false;\\r\\n\\r\\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\\r\\n vec3 viewPosition = -mvPosition.xyz;\\r\\n gl_Position = projectionMatrix * mvPosition;\\r\\n\\r\\n // Position in viewer coordinates (including offset)\\r\\n\\tvec3 posWorld = (modelMatrix * vec4( position, 1.0 )).xyz;\\r\\n\\r\\n // Hide based on distance (2D)\\r\\n float distance2D = getDistance2D(posWorld, currentCameraTarget);\\r\\n if (distance2D > distance) {\\r\\n isHidden = true;\\r\\n }\\r\\n\\r\\n // Check if classification is hidden\\r\\n if (classificationIsHidden(classification)) {\\r\\n isHidden = true;\\r\\n }\\r\\n\\r\\n // ---------------------\\r\\n\\t// POINT SIZE\\r\\n\\t// ---------------------\\r\\n float pointSize = 1.0;\\r\\n float projFactor = getProjFactor(fov, screenHeight, viewPosition.z);\\r\\n float r = octreeSpacing * sqrt(3.0);\\r\\n\\r\\n if (isOctreeCloud && adaptiveSize) {\\r\\n // Adaptive point sizing\\r\\n float pointAttenuation = getPointSizeAttenuation(posWorld);\\r\\n float worldSpaceSize = size * (r / pointAttenuation);\\r\\n pointSize = 1.0 * worldSpaceSize * projFactor;\\r\\n } else {\\r\\n // Attenuated point size\\r\\n pointSize = 0.15 * size * projFactor;\\r\\n }\\r\\n\\r\\n pointSize = max(minSize, pointSize);\\r\\n pointSize = min(maxSize, pointSize);\\r\\n\\r\\n // ---------------------\\r\\n\\t// POINT COLOR\\r\\n\\t// ---------------------\\r\\n vColor = getCloudColor(colorType, posWorld);\\r\\n\\r\\n // ---------------------\\r\\n // CROSS SECTION\\r\\n // ---------------------\\r\\n bool inCrossSection = pointInCrossSection(posWorld.xyz);\\r\\n\\r\\n // ---------------------\\r\\n // MEASUREMENT AREA/VOLUME\\r\\n // ---------------------\\r\\n vec2 areaReturnValue = checkPointInArea(posWorld.xyz);\\r\\n bool insidePolygon = floatToBool(areaReturnValue.x);\\r\\n bool volumeEnabled = floatToBool(areaReturnValue.y);\\r\\n\\r\\n // ---------------------\\r\\n // CLIPPING BOXES\\r\\n // ---------------------\\r\\n vec4 clipReturnValue = checkPointInBox(posWorld.xyz, classification);\\r\\n bool insideClip = floatToBool(clipReturnValue.x);\\r\\n bool clipVisible = floatToBool(clipReturnValue.y);\\r\\n bool reclassify = floatToBool(clipReturnValue.z);\\r\\n float newClassification = clipReturnValue.w;\\r\\n\\r\\n if (inCrossSection || insidePolygon || insideClip) {\\r\\n vColor = calculateOppositeColor(colorType, vColor);\\r\\n }\\r\\n\\r\\n // Delete points\\r\\n if (!clipVisible) {\\r\\n isHidden = true;\\r\\n }\\r\\n\\r\\n // Reclassify points\\r\\n if (insideClip && reclassify) {\\r\\n vColor = classificationColor(newClassification);\\r\\n }\\r\\n\\r\\n // Reduce point size if volume is calculated\\r\\n if (volumeEnabled) {\\r\\n pointSize = pointSize * 0.5;\\r\\n }\\r\\n\\r\\n if (gpuPicker) {\\r\\n // gpu picker points are 10% larger than normal\\r\\n pointSize = pointSize * 1.10;\\r\\n }\\r\\n\\r\\n // Set OpenGL parameters\\r\\n vHidden = boolToFloat(isHidden);\\r\\n gl_PointSize = pointSize;\\r\\n}\";","export default \"#define PRECISION 0.0001\\r\\n\\r\\nuniform bool gpuPicker;\\r\\nuniform bool circularPoints;\\r\\n\\r\\nflat varying vec3 vColor;\\r\\nflat varying float vHidden;\\r\\n\\r\\nvoid main(void) {\\r\\n bool hidden = floatToBool(vHidden);\\r\\n if (hidden) {\\r\\n discard;\\r\\n }\\r\\n\\r\\n // Circular points\\r\\n if (circularPoints) {\\r\\n float u = 2.0 * gl_PointCoord.x - 1.0;\\r\\n float v = 2.0 * gl_PointCoord.y - 1.0;\\r\\n float cc = u*u + v*v;\\r\\n if(cc > 1.0){\\r\\n discard;\\r\\n }\\r\\n }\\r\\n\\r\\n vec4 final;\\r\\n if (gpuPicker) {\\r\\n final = vGPUColor;\\r\\n } else {\\r\\n final = vec4(vColor, 1.0);\\r\\n }\\r\\n\\r\\n gl_FragColor = final;\\r\\n}\";","export default \"varying vec3 vPosition;\\r\\n\\r\\nvoid main() {\\r\\n vPosition = position;\\r\\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\r\\n}\\r\\n\";","export default \"#define RECIPROCAL_PI 0.3183098861837907\\r\\n#define RECIPROCAL_PI2 0.15915494309189535\\r\\n\\r\\nuniform sampler2D tImage;\\r\\nvarying vec3 vPosition;\\r\\n\\r\\nvec2 getPixelCoords( in vec3 dir ) {\\r\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\r\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\r\\n\\treturn vec2( u, v );\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n\\tvec3 direction = vec3(vPosition.x, vPosition.z, -vPosition.y);\\r\\n direction = normalize(direction);\\r\\n\\r\\n vec2 sampleUV = getPixelCoords( direction );\\r\\n gl_FragColor = texture2D( tImage, sampleUV );\\r\\n}\\r\\n\";","export default \"varying vec3 vPosition;\\r\\n\\r\\nvoid main() {\\r\\n vPosition = position;\\r\\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\r\\n}\\r\\n\";","export default \"uniform sampler2D tImage;\\r\\nuniform float imageHeight;\\r\\nuniform float imageWidth;\\r\\nuniform float fx;\\r\\nuniform float fy;\\r\\nuniform float cx;\\r\\nuniform float cy;\\r\\n\\r\\nvarying vec3 vPosition;\\r\\n\\r\\nvec2 getPixelCoords( vec3 direction, float dist ) {\\r\\n vec3 vec = direction / dist;\\r\\n float u = ((vec.x * fx) + cx) / imageWidth;\\r\\n float v = ((-vec.y * fy) + cy) / imageHeight;\\r\\n return vec2(u, 1.0 - v);\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n vec3 direction = normalize(vPosition);\\r\\n float dist = -direction.z;\\r\\n\\r\\n // Image is behind us\\r\\n if (dist <= 0.0) {\\r\\n discard;\\r\\n }\\r\\n\\r\\n vec2 sampleUV = getPixelCoords( direction, dist );\\r\\n\\r\\n bool outOfBounds = (sampleUV.x < 0.0)\\r\\n || (sampleUV.x >= 1.0)\\r\\n || (sampleUV.y <= 0.0)\\r\\n || (sampleUV.y > 1.0);\\r\\n\\r\\n if (outOfBounds) {\\r\\n discard;\\r\\n }\\r\\n\\r\\n gl_FragColor = texture2D(tImage, sampleUV);\\r\\n}\\r\\n\";","export default \"#include \\r\\n#define PRECISION 0.0001\\r\\n\\r\\nuniform sampler2D tImage;\\r\\nuniform sampler2D tDepth;\\r\\n\\r\\nuniform float opacity;\\r\\nuniform float screenWidth;\\r\\nuniform float screenHeight;\\r\\nuniform float near;\\r\\nuniform float far;\\r\\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\\r\\nuniform vec3 lightDir;\\r\\nuniform float edlStrength;\\r\\nuniform float radius;\\r\\n\\r\\nvarying vec2 vUv;\\r\\n\\r\\nfloat linearDepth(sampler2D depthSampler, vec2 coord) {\\r\\n float z_b = texture2D(depthSampler, coord).x;\\r\\n float z_n = 2.0 * z_b - 1.0;\\r\\n float z_e = 2.0 * near * far / (far + near - z_n * (far - near));\\r\\n return z_e;\\r\\n}\\r\\n\\r\\nfloat readDepth(sampler2D depthSampler, vec2 coord) {\\r\\n float depth = log2(linearDepth(depthSampler, coord));\\r\\n return (depth == 1.0) ? 0.0 : depth;\\r\\n}\\r\\n\\r\\nfloat response(float depth){\\r\\n\\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\\r\\n\\r\\n\\tfloat sum = 0.0;\\r\\n\\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\\r\\n\\t\\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\\r\\n\\t\\tfloat neighbourDepth = readDepth(tDepth, uvNeighbor);\\r\\n\\r\\n\\t\\tif(neighbourDepth != 0.0){\\r\\n if (depth == 0.0) {\\r\\n sum += 100.0;\\r\\n } else{\\r\\n sum += max(0.0, depth - neighbourDepth);\\r\\n }\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\r\\n\\treturn sum / float(NEIGHBOUR_COUNT);\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n vec4 color = texture2D(tImage, vUv);\\r\\n float alpha = color.a * opacity;\\r\\n\\r\\n float depth = readDepth(tDepth, vUv);\\r\\n float res = response(depth);\\r\\n\\tfloat shade = exp(-res * 10.0 * edlStrength);\\r\\n\\r\\n if (color.a <= PRECISION) {\\r\\n if (res <= PRECISION) discard;\\r\\n alpha = opacity;\\r\\n }\\r\\n\\r\\n gl_FragColor = vec4(color.rgb*shade, alpha);\\r\\n}\\r\\n\";","export default \"uniform sampler2D tCurrent;\\r\\nuniform sampler2D tPrevious;\\r\\nuniform float progress;\\r\\nuniform int transition;\\r\\n\\r\\nvarying vec2 vUv;\\r\\n\\r\\nvec4 getToColor(vec2 uv) {\\r\\n return texture2D(tCurrent, uv);\\r\\n}\\r\\n\\r\\nvec4 getFromColor(vec2 uv) {\\r\\n return texture2D(tPrevious, uv);\\r\\n}\\r\\n\\r\\n/** https://gl-transitions.com/editor/circleopen **/\\r\\nvec4 transitionCircleOpen(vec2 uv) {\\r\\n float smoothness = 0.75;\\r\\n bool opening = true;\\r\\n vec2 center = vec2(0.5, 0.5);\\r\\n float SQRT_2 = 1.414213562373;\\r\\n\\r\\n float x = opening ? progress : 1.-progress;\\r\\n float m = smoothstep(-smoothness, 0.0, SQRT_2*distance(center, uv) - x*(1.+smoothness));\\r\\n return mix(getFromColor(uv), getToColor(uv), opening ? 1.-m : m);\\r\\n}\\r\\n\\r\\n/** https://gl-transitions.com/editor/LinearBlur **/\\r\\nvec4 transitionLinearBlur(vec2 uv) {\\r\\n float intensity = 0.01;\\r\\n int passes = 6;\\r\\n\\r\\n vec4 c1 = vec4(0.0);\\r\\n vec4 c2 = vec4(0.0);\\r\\n\\r\\n float disp = intensity*(0.5-distance(0.5, progress));\\r\\n for (int xi=0; xi