@nextgis/leaflet-map-adapter 2.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/controls/Attribution.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/utils/boundsToArray.ts","../src/utils/detectType.ts","../src/utils/geometries.ts","../src/layer-adapters/BaseAdapter.ts","../src/utils/convertMapClickEvent.ts","../src/utils/createMouseEvent.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeoJsonEvents.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeojsonPaint.ts","../src/layer-adapters/GeoJsonAdapter/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/imageQueue.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts"],"sourcesContent":["import { Control } from 'leaflet';\n\nimport type { AttributionControlOptions } from '@nextgis/webmap';\nimport type { ControlOptions } from 'leaflet';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import { Control, DomEvent } from 'leaflet';\n\nimport type {\n CreateControlOptions,\n MapAdapter,\n MapControl,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { DomEvent } from 'leaflet';\n\nimport { createControl } from './createControl';\n\nimport type { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport type { Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n if (options.addClass) {\n link.classList.add(options.addClass);\n }\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBounds } from 'leaflet';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from './boundsToArray';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\nimport type { LatLngBounds } from 'leaflet';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n};\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import type { AdapterOptions, MainLayerAdapter } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(\n public map: Map,\n public options: O,\n ) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import type { MapClickEvent } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import { createMouseEvent } from '../../../utils/createMouseEvent';\n\nimport type { GeoJsonAdapter } from '../GeoJsonAdapter';\nimport type { OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { Layer } from 'leaflet';\nimport type { LeafletEvent, LeafletMouseEvent } from 'leaflet';\n\nexport class GeoJsonEvents {\n private layer: GeoJsonAdapter;\n\n private _onclick?: (e: LeafletMouseEvent) => void;\n private _mouseout?: (e: LeafletMouseEvent) => void;\n private _mouseover?: (e: LeafletMouseEvent) => void;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n handleMouseEvents(layer: Layer) {\n const { onClick, onLayerClick, onMouseOut, onMouseOver } =\n this.layer.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n\n if (onClick_) {\n this._onclick = (e: LeafletMouseEvent) => {\n const selected = !!this.layer._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n };\n layer.on('click', this._onclick, this);\n }\n if (onMouseOut) {\n this._mouseout = (e: LeafletMouseEvent) => {\n onMouseOut(this._createMouseEvent(e));\n };\n layer.on('mouseout', this._mouseout, this);\n }\n if (onMouseOver) {\n this._mouseover = (e: LeafletMouseEvent) => {\n onMouseOver(this._createMouseEvent(e));\n };\n layer.on('mouseover', this._mouseover, this);\n }\n }\n\n stopMouseEvents(layer: Layer) {\n if (this._mouseover) {\n layer.off('mouseover', this._mouseover, this);\n }\n if (this._mouseout) {\n layer.off('mouseout', this._mouseout, this);\n }\n if (this._onclick) {\n layer.off('click', this._onclick, this);\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this.layer,\n source: source as LeafletMouseEvent,\n });\n }\n}\n","import { isPaint, isPaintCallback } from '@nextgis/paint';\nimport { defined } from '@nextgis/utils';\nimport { CircleMarker, DivIcon, Marker } from 'leaflet';\n\nimport { PAINT } from '../../../utils/geometries';\n\nimport type { GeoJsonAdapter, LayerDef } from '../GeoJsonAdapter';\nimport type {\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type {\n CircleMarkerOptions,\n GeoJSONOptions,\n LatLngExpression,\n Path,\n PathOptions,\n} from 'leaflet';\n\nexport class GeoJsonPaint {\n private layer: GeoJsonAdapter;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n setPaintEachLayer(paint: VectorAdapterLayerPaint) {\n this.layer._layers.forEach((layerDef) => {\n this.setPaint(layerDef, paint);\n });\n }\n\n setPaint(layerDef: LayerDef, paint: VectorAdapterLayerPaint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = layerDef;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.layer.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n setTimeout(() => {\n marker.setIcon(divIcon);\n }, 10);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this.preparePaint(style));\n }\n }\n }\n }\n\n preparePaint(paint: VectorAdapterLayerPaint): PathOptions {\n if (paint.type !== 'get-paint') {\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.layer.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint: PathOptions & CircleMarkerOptions = {};\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n const opacity = this.layer.options.opacity;\n let paintProp = (paint as PathPaint)[from];\n if (defined(opacity) && from.toLowerCase().indexOf('opacity') !== -1) {\n paintProp = Number(paintProp) * opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n _createDivIcon(icon: IconPaint) {\n const { html, rotate, className, ...toLIconOpt } = icon;\n\n const element = document.createElement('div');\n if (className) {\n element.className = className;\n }\n if (rotate) {\n element.style.transform = `rotateZ(${rotate}deg)`;\n }\n if (html) {\n element.innerHTML = html;\n }\n\n const divIcon = new DivIcon({\n className: '',\n ...toLIconOpt,\n html: element,\n });\n return divIcon;\n }\n\n createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (_: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (_: any, latlng: LatLngExpression) => {\n return new Marker(latlng);\n };\n }\n }\n return (_: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this.preparePaint({ ...p, ...icon }));\n };\n }\n\n createPaintOptions(paint: VectorAdapterLayerPaint): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const newPaint = this.preparePaint(paint);\n if (paint) {\n geoJsonOptions.style = () => {\n return newPaint;\n };\n }\n if (this.layer.type === 'point') {\n (geoJsonOptions as any).pointToLayer = this.createPaintToLayer(\n paint as IconPaint,\n );\n } else if (this.layer.type === 'line') {\n newPaint.stroke = true;\n }\n return geoJsonOptions;\n }\n}\n","import { debounce, defined } from '@nextgis/utils';\nimport { DomEvent, FeatureGroup, GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from '../../utils/boundsToArray';\nimport { detectType } from '../../utils/detectType';\nimport {\n PAINT,\n createFeaturePositionOptions,\n filterGeometries,\n typeAlias,\n} from '../../utils/geometries';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { GeoJsonEvents } from './utils/GeoJsonEvents';\nimport { GeoJsonPaint } from './utils/GeojsonPaint';\n\nimport type { IconPaint, Paint, VectorAdapterLayerPaint } from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n DataLayerFilter,\n GeoJsonAdapterOptions,\n LayerDefinition,\n OnLayerSelectType,\n PopupOnCloseFunction,\n PopupOptions,\n VectorAdapterLayerType,\n VectorLayerAdapter,\n} from '@nextgis/webmap';\nimport type { Feature, GeoJsonObject, Point } from 'geojson';\nimport type {\n GeoJSONOptions,\n PopupOptions as LPopupOptions,\n LatLng,\n LatLngExpression,\n Layer,\n LeafletMouseEvent,\n Map,\n} from 'leaflet';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n type?: VectorAdapterLayerType;\n _layers: LayerDef[] = [];\n _events: GeoJsonEvents;\n private paint?: Paint;\n private selectedPaint?: Paint;\n\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n private _paint: GeoJsonPaint;\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n this._events = new GeoJsonEvents(this);\n this._paint = new GeoJsonPaint(this);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n this.unselect();\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n for (const x of def) {\n this._selectLayer(x, 'api');\n }\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._paint.setPaintEachLayer(\n this.selectedPaint as VectorAdapterLayerPaint,\n );\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._paint.setPaintEachLayer(this.paint as VectorAdapterLayerPaint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, this.paint as VectorAdapterLayerPaint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, this.selectedPaint as VectorAdapterLayerPaint);\n }\n }\n\n _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n const { label, labelField, labelOnHover } = this.options;\n if (layer) {\n layer.unbindTooltip();\n let message: string | undefined;\n if (feature.properties && labelField) {\n message = feature.properties[labelField];\n } else if (label) {\n message = label({\n target: this,\n ...layerDef,\n ...createFeaturePositionOptions(feature),\n });\n }\n if (message) {\n const permanent = !labelOnHover;\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._paint.createPaintToLayer(\n iconOpt as IconPaint,\n );\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._paint.preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._paint.preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._paint.createPaintOptions(paint as VectorAdapterLayerPaint);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n // @ts-ignore\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._events.handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n const { multiselect } = this.options;\n if (!multiselect) {\n // To unselect layer on another layer click\n (this.map as any)._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._paint.setPaint(def, selectedPaint as VectorAdapterLayerPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._paint.setPaint(\n def,\n this.options.paint as VectorAdapterLayerPaint,\n );\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _addMapClickListener() {\n const map = this.map;\n if (map) {\n const { unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n }\n }\n\n private _removeMapClickListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { label, labelField, labelOnHover } = this.options;\n this._addMapClickListener();\n if ((labelField || label) && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this._removeMapClickListener();\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n }\n}\n","export function callAjax(\n src: string,\n headers: Record<string, any>,\n): [Promise<string>, () => void] {\n let abortFunc = () => {\n // void\n };\n const promise = new Promise<string>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n resolve(imageUrl);\n };\n xhr.onerror = reject;\n xhr.send();\n abortFunc = () => {\n xhr.abort();\n resolve('');\n };\n });\n return [promise, abortFunc];\n}\n","import Queue from '@nextgis/queue';\n\nconst imageQueue = new Queue({ concurrency: 6, delay: 200 });\n\nexport default imageQueue;\n","import { ImageOverlay as LImageOverlay } from 'leaflet';\n\nimport { callAjax } from '../../utils/callAjax';\n\nimport imageQueue from './imageQueue';\n\nimport type { ImageOverlayOptions, LatLngBoundsExpression } from 'leaflet';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _aborter?: () => void;\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._aborter) {\n this._aborter();\n this._aborter = undefined;\n }\n }\n\n _initImage(): void {\n // @ts-expect-error extend private method\n super._initImage();\n\n const headers = (this.options as IOptions).headers;\n // @ts-expect-error _image is a private property\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n // The queue is cleared in LeafletMapAdapter at each movestart and zoomstart event\n imageQueue.add(() => {\n const [promise, abortFunc] = callAjax(src, headers);\n promise.then((imgUrl) => {\n img.src = imgUrl;\n });\n this._aborter = abortFunc;\n return promise;\n });\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { debounce } from '@nextgis/utils';\nimport { CRS, Layer, Util } from 'leaflet';\n\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { Map } from 'leaflet';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n private _loadedOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n if (this._loadedOverlay) {\n this._loadedOverlay.cancelLoad();\n this._loadedOverlay.off('load');\n this._loadedOverlay = undefined;\n }\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n this._loadedOverlay = overlay;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._loadedOverlay = undefined;\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { BaseAdapter } from '../BaseAdapter';\n\nimport { ImageLayer } from './ImageLayer';\nimport imageQueue from './imageQueue';\n\nimport type { MainLayerAdapter } from '@nextgis/webmap';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n static queue = imageQueue;\n\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\n\nimport { debounce } from '../../../utils/src';\n\nimport { callAjax } from './callAjax';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<TBase extends Constructor>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n const [promise, abortFunc] = callAjax(\n url,\n // @ts-ignore\n this.options.headers,\n );\n promise.then((response) => {\n tile.src = response;\n done(null, tile);\n });\n (tile as any).abort = abortFunc;\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { TileLayer as TL } from './TileLayer';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n\n updateLayer(): void {\n if (this.layer) {\n // @ts-ignore read private property\n const currentUrl = this.layer._url;\n const timestamp = new Date().getTime();\n\n const separator = currentUrl.includes('?') ? '&' : '?';\n\n const newUrl =\n currentUrl.replace(/(\\?|&)timestamp=\\d*/g, '') +\n separator +\n `timestamp=${timestamp}`;\n\n this.layer.setUrl(newUrl);\n this.layer.redraw();\n }\n }\n}\n","import { TileAdapter } from './TileAdapter/TileAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayer } from 'leaflet';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import { TileLayer } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { WmsLayer as WMS } from './WmsLayer';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n transparent: true,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBoundsExpression } from 'leaflet';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\n\nimport { Control, Map, latLng, latLngBounds } from 'leaflet';\n\nimport { AttributionControl } from './controls/Attribution';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n ButtonControlOptions,\n CreateControlOptions,\n FitOptions,\n LayerAdapter,\n Locate,\n LocateOptions,\n LocationEvents,\n MainMapEvents,\n MapAdapter,\n MapControl,\n MapOptions,\n ViewOptions,\n} from '@nextgis/webmap';\nimport type {\n ControlPosition,\n FitBoundsOptions,\n GridLayer,\n Layer,\n LeafletEvent,\n LeafletMouseEvent,\n LocationEvent,\n} from 'leaflet';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions<Map> = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'zoomend',\n 'zoomstart',\n 'moveend',\n 'movestart',\n ];\n private _positionEvents: (keyof MainMapEvents)[] = [\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n create(options: MapOptions<Map>): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n\n this.map =\n this.options.map ||\n new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n\n this._updateMinZoomForBounds(minZoom);\n this._watchSizeChangeToUpdateMinZoom();\n // create default pane\n const defPane = this.map.createPane('order-0');\n (this.map as any)._addUnselectCb = (def: UnselectDef) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n this._updateMinZoomForBounds();\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._updateMinZoomForBounds();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._updateMinZoomForBounds(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) ?? undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: LeafletEvent) => {\n const event = e as LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom() {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n this._updateMinZoomForBounds();\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n for (const e of this._universalEvents) {\n map.on(e, () => this.emitter.emit(e, this), map);\n }\n\n map.on('movestart', () => {\n ImageAdapter.queue.abort();\n });\n map.on('zoomstart', () => {\n ImageAdapter.queue.abort();\n });\n\n for (const e of this._positionEvents) {\n map.on(\n e,\n (evt) =>\n this.emitter.emit(\n e,\n convertMapClickEvent(evt as LeafletMouseEvent),\n ),\n map,\n );\n }\n }\n }\n\n private _updateMinZoomForBounds(zoom?: number) {\n const map = this.map;\n if (map) {\n zoom = zoom ?? map.getMinZoom();\n const defaultBounds = latLngBounds(\n latLng(-90, -18000),\n latLng(90, 18000),\n );\n const maxBounds = map.options.maxBounds ?? defaultBounds;\n if (maxBounds !== undefined) {\n map.setMinZoom(0);\n const boundsZoom = map.getBoundsZoom(maxBounds, true);\n const minZoom = zoom < boundsZoom ? boundsZoom : zoom;\n\n map.options.minZoom = minZoom;\n map.setMinZoom(minZoom);\n\n if (map.getZoom() < minZoom) {\n map.setZoom(minZoom);\n }\n }\n }\n }\n}\n"],"names":["__publicField","__spreadValues","__objRest","__spreadProps","debounce","LImageOverlay","imageQueue","TL","TileLayer","WMS","zoom","stop"],"mappings":";;;;;;;AAKa,MAAA,kBAAA,SAA2B,QAAQ,WAAY,CAAA;AAAA;AAAA,EAE1D,YAAY,OAAqD,EAAA;AAC/D,IAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AACb,IAAM,MAAA,iBAAA,GAAoB,WAAW,OAAQ,CAAA,iBAAA,CAAA;AAC7C,IAAA,IAAI,iBAAmB,EAAA;AACrB,MAAA,IAAI,eAAyB,EAAC,CAAA;AAC9B,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,iBAAiB,CAAG,EAAA;AACpC,QAAe,YAAA,GAAA,iBAAA,CAAA;AAAA,iBACN,iBAAmB,EAAA;AAC5B,QAAA,YAAA,GAAe,CAAC,iBAAiB,CAAA,CAAA;AAAA,OACnC;AACA,MAAA,YAAA,CAAa,QAAQ,CAAC,CAAA,KAAM,IAAK,CAAA,cAAA,CAAe,CAAC,CAAC,CAAA,CAAA;AAAA,KACpD;AAAA,GACF;AACF;;ACZO,SAAS,aACd,CAAA,OAAA,EACA,OAAgC,GAAA,IAChC,GACS,EAAA;AACT,EAAM,MAAA,CAAA,GAAI,QAAQ,MAAO,CAAA;AAAA,IACvB,KAAQ,GAAA;AACN,MAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC5C,MAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AACjC,MAAQ,OAAA,CAAA,SAAA,CAAU,IAAI,iBAAiB,CAAA,CAAA;AACvC,MAAA,IAAI,QAAQ,GAAK,EAAA;AACf,QAAQ,OAAA,CAAA,SAAA,CAAU,IAAI,aAAa,CAAA,CAAA;AAAA,OACrC;AACA,MAAA,IAAI,QAAQ,QAAU,EAAA;AACpB,QAAQ,OAAA,CAAA,SAAA,CAAU,GAAI,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAAA,OACxC;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,MAAU,IAAA,CAAC,QAAQ,GAAK,EAAA;AACnC,QAAA,OAAA,CAAQ,MAAM,YAAe,GAAA,KAAA,CAAA;AAC7B,QAAA,OAAA,CAAQ,MAAM,SAAY,GAAA,KAAA,CAAA;AAC1B,QAAA,OAAA,CAAQ,MAAM,UAAa,GAAA,KAAA,CAAA;AAC3B,QAAA,OAAA,CAAQ,MAAM,WAAc,GAAA,KAAA,CAAA;AAAA,OAC9B;AACA,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,OAAA,CAAQ,YAAY,OAAO,CAAA,CAAA;AAAA,OAC7B;AAEA,MAAA,QAAA,CAAS,wBAAwB,OAAO,CAAA,CAAA;AAExC,MAAO,OAAA,OAAA,CAAA;AAAA,KACT;AAAA,IACA,QAAW,GAAA;AACT,MAAA,OAAA,CAAQ,QAAS,EAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AACD,EAAA,OAAO,IAAI,CAAE,EAAA,CAAA;AACf;;ACpCgB,SAAA,mBAAA,CACd,SACA,GACS,EAAA;AACT,EAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AAEvC,EAAM,MAAA,KAAA,GAAQ,QAAQ,KAAS,IAAA,EAAA,CAAA;AAC/B,EAAA,IAAA,CAAK,IAAO,GAAA,GAAA,CAAA;AACZ,EAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AAEb,EAAK,IAAA,CAAA,YAAA,CAAa,QAAQ,QAAQ,CAAA,CAAA;AAClC,EAAK,IAAA,CAAA,YAAA,CAAa,cAAc,KAAK,CAAA,CAAA;AAErC,EAAA,IAAI,QAAQ,QAAU,EAAA;AACpB,IAAK,IAAA,CAAA,SAAA,CAAU,GAAI,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAAA,GACrC;AAEA,EAAA,QAAA,CAAS,wBAAwB,IAAI,CAAA,CAAA;AACrC,EAAA,QAAA,CAAS,EAAG,CAAA,IAAA,EAAM,OAAS,EAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAExC,EAAI,IAAA,OAAA,CAAQ,gBAAgB,WAAa,EAAA;AACvC,IAAK,IAAA,CAAA,WAAA,CAAY,QAAQ,IAAI,CAAA,CAAA;AAAA,GACpB,MAAA,IAAA,OAAO,OAAQ,CAAA,IAAA,KAAS,QAAU,EAAA;AAC3C,IAAA,IAAA,CAAK,YAAY,OAAQ,CAAA,IAAA,CAAA;AAAA,GAC3B;AAEA,EAAM,MAAA,OAAA,GAAU,CAAC,CAAa,KAAA;AAC5B,IAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,IAAA,OAAA,CAAQ,OAAQ,EAAA,CAAA;AAAA,GAClB,CAAA;AAEA,EAAO,OAAA,aAAA;AAAA,IACL;AAAA,MACE,KAAQ,GAAA;AACN,QAAI,IAAA,OAAA,CAAQ,YAAY,KAAW,CAAA,EAAA;AACjC,UAAK,IAAA,CAAA,gBAAA,CAAiB,SAAS,OAAO,CAAA,CAAA;AAAA,SACxC;AACA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,MACA,QAAW,GAAA;AACT,QAAA,MAAM,SAAS,IAAK,CAAA,UAAA,CAAA;AACpB,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,MAAA,CAAO,YAAY,IAAI,CAAA,CAAA;AAAA,SACzB;AACA,QAAI,IAAA,OAAA,CAAQ,YAAY,KAAW,CAAA,EAAA;AACjC,UAAK,IAAA,CAAA,mBAAA,CAAoB,SAAS,OAAO,CAAA,CAAA;AAAA,SAC3C;AAAA,OACF;AAAA,KACF;AAAA,IACA,EAAE,KAAK,IAAK,EAAA;AAAA,IACZ,GAAA;AAAA,GACF,CAAA;AACF;;ACxDO,SAAS,cAAc,MAAyC,EAAA;AACrE,EAAM,MAAA,EAAA,GAAK,OAAO,YAAa,EAAA,CAAA;AAC/B,EAAM,MAAA,EAAA,GAAK,OAAO,YAAa,EAAA,CAAA;AAC/B,EAAO,OAAA,CAAC,GAAG,GAAK,EAAA,EAAA,CAAG,KAAK,EAAG,CAAA,GAAA,EAAK,GAAG,GAAG,CAAA,CAAA;AACxC;;ACCA,SAAS,yBACP,GACsB,EAAA;AACtB,EAAA,MAAM,SAAkC,EAAC,CAAA;AACzC,EAAA,KAAA,IAAS,GAAM,GAAA,CAAA,EAAG,GAAM,GAAA,GAAA,CAAI,QAAQ,GAAO,EAAA,EAAA;AACzC,IAAO,MAAA,CAAA,GAAA,CAAI,GAAG,CAAC,CAAA,GAAI,KAAK,MAAO,CAAA,GAAA,CAAI,GAAG,CAAC,CAAK,IAAA,CAAA,CAAA,CAAA;AAAA,GAC9C;AACA,EAAA,IAAI,OAAU,GAAA,EAAA,CAAA;AACd,EAAA,KAAA,MAAW,KAAK,MAAQ,EAAA;AACtB,IAAA,MAAM,QAAW,GAAA,OAAA,GAAU,MAAO,CAAA,OAAO,CAAI,GAAA,CAAA,CAAA;AAC7C,IAAI,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,QAAU,EAAA;AACxB,MAAU,OAAA,GAAA,CAAA,CAAA;AAAA,KACZ;AAAA,GACF;AACA,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAEO,SAAS,WAAW,OAA8C,EAAA;AACvE,EAAI,IAAA,QAAA,CAAA;AACJ,EAAI,IAAA,OAAA,CAAQ,SAAS,mBAAqB,EAAA;AACxC,IAAM,MAAA,aAAA,GAAiB,QAA8B,QAAS,CAAA,GAAA;AAAA,MAC5D,CAAC,CAAM,KAAA,CAAA,CAAE,QAAS,CAAA,IAAA;AAAA,KACpB,CAAA;AACA,IAAA,QAAA,GAAW,yBAAyB,aAAa,CAAA,CAAA;AAAA,GACnD,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,oBAAsB,EAAA;AAChD,IAAM,MAAA,aAAA,GAAiB,QAA+B,UAAW,CAAA,GAAA;AAAA,MAC/D,CAAC,MAAM,CAAE,CAAA,IAAA;AAAA,KACX,CAAA;AACA,IAAA,QAAA,GAAW,yBAAyB,aAAa,CAAA,CAAA;AAAA,GACnD,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,SAAW,EAAA;AACrC,IAAA,QAAA,GAAY,QAAoB,QAAS,CAAA,IAAA,CAAA;AAAA,GACpC,MAAA;AACL,IAAA,QAAA,GAAW,OAAQ,CAAA,IAAA,CAAA;AAAA,GACrB;AACA,EAAO,OAAA,QAAA,CAAA;AACT;;AC5BO,MAAM,SAET,GAAA;AAAA,EACF,KAAO,EAAA,OAAA;AAAA,EACP,UAAY,EAAA,MAAA;AAAA,EACZ,UAAY,EAAA,OAAA;AAAA,EACZ,OAAS,EAAA,SAAA;AAAA,EACT,eAAiB,EAAA,MAAA;AAAA,EACjB,YAAc,EAAA,SAAA;AAAA,EACd,kBAAoB,EAAA,SAAA;AACtB,CAAA,CAAA;AAEO,MAAM,KAAQ,GAAA;AAAA,EACnB,MAAQ,EAAA,KAAA;AAAA,EACR,OAAS,EAAA,CAAA;AACX,CAAA,CAAA;AAEO,MAAM,cAET,EAAC,CAAA;AAEL,KAAA,MAAW,KAAK,SAAW,EAAA;AACzB,EAAM,MAAA,SAAA,GAAY,UAAU,CAAyB,CAAA,CAAA;AACrD,EAAA,MAAM,SAAY,GAAA,WAAA,CAAY,SAAS,CAAA,IAAK,EAAC,CAAA;AAC7C,EAAA,SAAA,CAAU,KAAK,CAAyB,CAAA,CAAA;AACxC,EAAA,WAAA,CAAY,SAAS,CAAI,GAAA,SAAA,CAAA;AAC3B,CAAA;AAEgB,SAAA,cAAA,CACd,UACA,IACS,EAAA;AACT,EAAA,MAAM,eAAkB,GAAA,WAAA,CAAY,IAAI,CAAA,IAAK,EAAC,CAAA;AAC9C,EAAO,OAAA,eAAA,CAAgB,OAAQ,CAAA,QAAQ,CAAM,KAAA,CAAA,CAAA,CAAA;AAC/C,CAAA;AAEgB,SAAA,gBAAA,CACd,MACA,IACuB,EAAA;AACvB,EAAI,IAAA,IAAA,CAAK,SAAS,mBAAqB,EAAA;AACrC,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAA;AACd,IAAM,KAAA,CAAA,QAAA,GAAW,MAAM,QAAS,CAAA,MAAA;AAAA,MAAO,CAAC,CACtC,KAAA,cAAA,CAAe,CAAE,CAAA,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA,KACtC,CAAA;AAAA,GACF,MAAA,IAAW,IAAK,CAAA,IAAA,KAAS,SAAW,EAAA;AAClC,IAAA,MAAM,KAAQ,GAAA,cAAA,CAAgB,IAAiB,CAAA,QAAA,CAAS,MAAM,IAAI,CAAA,CAAA;AAClE,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF,MAAA,IAAW,IAAK,CAAA,IAAA,KAAS,oBAAsB,EAAA;AAC7C,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAA;AACd,IAAM,KAAA,CAAA,UAAA,GAAa,MAAM,UAAW,CAAA,MAAA;AAAA,MAAO,CAAC,CAAA,KAC1C,cAAe,CAAA,CAAA,CAAE,MAAM,IAAI,CAAA;AAAA,KAC7B,CAAA;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,SAAS,eAAe,QAA6C,EAAA;AACnE,EAAM,MAAA,YAAA,GAAe,IAAI,OAAQ,EAAA,CAAA;AACjC,EAAA,MAAM,YAAY,KAAM,CAAA,OAAA,CAAQ,QAAQ,CAAI,GAAA,QAAA,GAAW,CAAC,QAAQ,CAAA,CAAA;AAChE,EAAA,SAAA,CAAU,QAAQ,CAAC,CAAA,KAAM,YAAa,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAChD,EAAA,OAAO,aAAa,SAAU,EAAA,CAAA;AAChC,CAAA;AAEO,SAAS,kBACd,QACmB,EAAA;AACnB,EAAO,OAAA,aAAA,CAAc,cAAe,CAAA,QAAQ,CAAC,CAAA,CAAA;AAC/C,CAAA;AAEO,SAAS,kBAAkB,QAA4C,EAAA;AAC5E,EAAA,MAAM,EAAE,GAAK,EAAA,GAAA,KAAQ,cAAe,CAAA,QAAQ,EAAE,SAAU,EAAA,CAAA;AACxD,EAAO,OAAA,CAAC,KAAK,GAAG,CAAA,CAAA;AAClB,CAAA;AAEO,SAAS,6BACd,QACiB,EAAA;AACjB,EAAO,OAAA;AAAA,IACL,SAAA,EAAW,MAAM,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC3C,SAAA,EAAW,MAAM,iBAAA,CAAkB,QAAQ,CAAA;AAAA,GAC7C,CAAA;AACF;;;;;;;;AChGO,MAAM,WAEb,CAAA;AAAA,EAIE,WAAA,CACS,KACA,OACP,EAAA;AAFO,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AALT,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAU,MAAO,EAAA,SAAA,CAAA,CAAA;AAMf,IAAI,IAAA,OAAA,CAAQ,UAAU,KAAW,CAAA,EAAA;AAC/B,MAAM,MAAA,IAAA,GAAO,WAAW,OAAQ,CAAA,KAAA,CAAA;AAChC,MAAI,IAAA,KAAA,GAAQ,GAAI,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAC5B,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAQ,KAAA,GAAA,GAAA,CAAI,WAAW,IAAI,CAAA,CAAA;AAAA,OAC7B;AACA,MAAM,KAAA,CAAA,KAAA,CAAM,SAAS,MAAO,CAAA,IAAA,CAAK,MAAM,OAAQ,CAAA,KAAA,GAAQ,GAAG,CAAC,CAAA,CAAA;AAC3D,MAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AAAA,KACd;AAAA,GACF;AAAA,EAEA,SAAS,OAAwC,EAAA;AAC/C,IAAO,MAAA,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AACnC,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACF;;ACzBO,SAAS,qBAAqB,GAAuC,EAAA;AAC1E,EAAA,MAAM,QAAQ,GAAI,CAAA,cAAA,CAAA;AAClB,EAAA,MAAM,SAAS,GAAI,CAAA,MAAA,CAAA;AACnB,EAAM,MAAA,EAAE,GAAK,EAAA,GAAA,EAAQ,GAAA,MAAA,CAAA;AACrB,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,MAAA,EAAQ,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,IACjB,OAAO,EAAE,IAAA,EAAM,MAAM,CAAG,EAAA,GAAA,EAAK,MAAM,CAAE,EAAA;AAAA,IACrC,MAAQ,EAAA,GAAA;AAAA,GACV,CAAA;AACF;;;;;;;;;;;;;;;;;;ACDO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,KAAA;AAAA,EACA,MAAA;AACF,CAAiD,EAAA;AAC/C,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA,CAAA;AACtB,EAAA,MAAM,UAAU,MAAO,CAAA,OAAA,CAAA;AACvB,EAAA,MAAM,GAA2B,GAAAC,gBAAA,CAAA;AAAA,IAC/B,KAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA,EAAO,qBAAqB,MAAM,CAAA;AAAA,IAClC,MAAA;AAAA,GAAA,EACG,6BAA6B,OAAO,CAAA,CAAA,CAAA;AAEzC,EAAO,OAAA,GAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;;;;;ACnBO,MAAM,aAAc,CAAA;AAAA,EAOzB,YAAY,KAAuB,EAAA;AANnC,IAAQD,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAER,IAAQA,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAGN,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AAAA,GACf;AAAA,EAEA,kBAAkB,KAAc,EAAA;AAC9B,IAAA,MAAM,EAAE,OAAS,EAAA,YAAA,EAAc,YAAY,WAAY,EAAA,GACrD,KAAK,KAAM,CAAA,OAAA,CAAA;AAEb,IAAA,MAAM,WAAW,OAAW,IAAA,YAAA,CAAA;AAE5B,IAAA,IAAI,QAAU,EAAA;AACZ,MAAK,IAAA,CAAA,QAAA,GAAW,CAAC,CAAyB,KAAA;AACxC,QAAA,MAAM,WAAW,CAAC,CAAC,IAAK,CAAA,KAAA,CAAM,aAAa,KAAK,CAAA,CAAA;AAChD,QAAS,QAAA,CAAAC,gBAAA,CAAA;AAAA,UACP,QAAA;AAAA,SACG,EAAA,IAAA,CAAK,iBAAkB,CAAA,CAAC,CAC5B,CAAA,CAAA,CAAA;AAAA,OACH,CAAA;AACA,MAAA,KAAA,CAAM,EAAG,CAAA,OAAA,EAAS,IAAK,CAAA,QAAA,EAAU,IAAI,CAAA,CAAA;AAAA,KACvC;AACA,IAAA,IAAI,UAAY,EAAA;AACd,MAAK,IAAA,CAAA,SAAA,GAAY,CAAC,CAAyB,KAAA;AACzC,QAAW,UAAA,CAAA,IAAA,CAAK,iBAAkB,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OACtC,CAAA;AACA,MAAA,KAAA,CAAM,EAAG,CAAA,UAAA,EAAY,IAAK,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AAAA,KAC3C;AACA,IAAA,IAAI,WAAa,EAAA;AACf,MAAK,IAAA,CAAA,UAAA,GAAa,CAAC,CAAyB,KAAA;AAC1C,QAAY,WAAA,CAAA,IAAA,CAAK,iBAAkB,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OACvC,CAAA;AACA,MAAA,KAAA,CAAM,EAAG,CAAA,WAAA,EAAa,IAAK,CAAA,UAAA,EAAY,IAAI,CAAA,CAAA;AAAA,KAC7C;AAAA,GACF;AAAA,EAEA,gBAAgB,KAAc,EAAA;AAC5B,IAAA,IAAI,KAAK,UAAY,EAAA;AACnB,MAAA,KAAA,CAAM,GAAI,CAAA,WAAA,EAAa,IAAK,CAAA,UAAA,EAAY,IAAI,CAAA,CAAA;AAAA,KAC9C;AACA,IAAA,IAAI,KAAK,SAAW,EAAA;AAClB,MAAA,KAAA,CAAM,GAAI,CAAA,UAAA,EAAY,IAAK,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AAAA,KAC5C;AACA,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,KAAA,CAAM,GAAI,CAAA,OAAA,EAAS,IAAK,CAAA,QAAA,EAAU,IAAI,CAAA,CAAA;AAAA,KACxC;AAAA,GACF;AAAA,EAEQ,kBAAkB,MAA2C,EAAA;AACnE,IAAA,OAAO,gBAAiB,CAAA;AAAA,MACtB,OAAO,IAAK,CAAA,KAAA;AAAA,MACZ,MAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CO,MAAM,YAAa,CAAA;AAAA,EAGxB,YAAY,KAAuB,EAAA;AAFnC,IAAQD,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAGN,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AAAA,GACf;AAAA,EAEA,kBAAkB,KAAgC,EAAA;AAChD,IAAA,IAAA,CAAK,KAAM,CAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,QAAa,KAAA;AACvC,MAAK,IAAA,CAAA,QAAA,CAAS,UAAU,KAAK,CAAA,CAAA;AAAA,KAC9B,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,QAAA,CAAS,UAAoB,KAAgC,EAAA;AAC3D,IAAA,IAAI,KAA6C,GAAA,KAAA,CAAA,CAAA;AACjD,IAAM,MAAA,EAAE,KAAO,EAAA,OAAA,EAAY,GAAA,QAAA,CAAA;AAC3B,IAAA,IAAI,SAAS,OAAS,EAAA;AACpB,MAAI,IAAA,eAAA,CAAgB,KAAK,CAAG,EAAA;AAC1B,QAAA,KAAA,GAAQ,MAAM,OAAO,CAAA,CAAA;AAAA,OACvB,MAAA,IAAW,OAAQ,CAAA,KAAK,CAAG,EAAA;AACzB,QAAQ,KAAA,GAAA,KAAA,CAAA;AAAA,OACV;AACA,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,IAAI,KAAK,KAAM,CAAA,IAAA,KAAS,OAAW,IAAA,KAAA,CAAM,SAAS,MAAQ,EAAA;AACxD,UAAA,MAAM,MAAS,GAAA,KAAA,CAAA;AACf,UAAM,MAAA,OAAA,GAAU,IAAK,CAAA,cAAA,CAAe,KAAK,CAAA,CAAA;AACzC,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,MAAA,CAAO,QAAQ,OAAO,CAAA,CAAA;AAAA,aACrB,EAAE,CAAA,CAAA;AAAA,SACP,MAAA,IAAW,cAAc,KAAO,EAAA;AAC9B,UAAC,KAAe,CAAA,QAAA,CAAS,IAAK,CAAA,YAAA,CAAa,KAAK,CAAC,CAAA,CAAA;AAAA,SACnD;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,aAAa,KAA6C,EAAA;AACxD,IAAI,IAAA,KAAA,CAAM,SAAS,WAAa,EAAA;AAC9B,MAAA,MAAM,YAAuD,GAAA;AAAA,QAC3D,CAAC,SAAS,aAAa,CAAA;AAAA,QACvB,CAAC,WAAW,eAAe,CAAA;AAAA,QAC3B,CAAC,UAAU,QAAQ,CAAA;AAAA,QACnB,CAAC,aAAa,WAAW,CAAA;AAAA,QACzB,CAAC,eAAe,aAAa,CAAA;AAAA,QAC7B,CAAC,QAAQ,MAAM,CAAA;AAAA,QACf,CAAC,UAAU,QAAQ,CAAA;AAAA,OACrB,CAAA;AACA,MAAA,MAAM,OACJ,GAAA,IAAA,CAAK,KAAM,CAAA,IAAA,KAAS,MAChB,GAAA;AAAA,QACE,CAAC,SAAS,aAAa,CAAA;AAAA,QACvB,CAAC,WAAW,eAAe,CAAA;AAAA,QAC3B,CAAC,UAAU,QAAQ,CAAA;AAAA,OAErB,GAAA,YAAA,CAAA;AAEN,MAAA,MAAM,aAAgD,EAAC,CAAA;AAEvD,MAAA,IAAI,QAAY,IAAA,KAAA,IAAS,OAAO,KAAA,CAAM,WAAW,QAAU,EAAA;AACzD,QAAA,UAAA,CAAW,SAAS,KAAM,CAAA,MAAA,CAAA;AAAA,OAC5B;AACA,MAAA,KAAA,MAAW,CAAC,EAAA,EAAI,IAAI,CAAA,IAAK,OAAS,EAAA;AAChC,QAAM,MAAA,OAAA,GAAU,IAAK,CAAA,KAAA,CAAM,OAAQ,CAAA,OAAA,CAAA;AACnC,QAAI,IAAA,SAAA,GAAa,MAAoB,IAAI,CAAA,CAAA;AACzC,QAAI,IAAA,OAAA,CAAQ,OAAO,CAAK,IAAA,IAAA,CAAK,aAAc,CAAA,OAAA,CAAQ,SAAS,CAAA,KAAM,CAAI,CAAA,EAAA;AACpE,UAAY,SAAA,GAAA,MAAA,CAAO,SAAS,CAAI,GAAA,OAAA,CAAA;AAAA,SAClC;AAEA,QAAA,IAAI,cAAc,KAAW,CAAA,EAAA;AAC3B,UAAO,MAAA,CAAA,cAAA,CAAe,YAAY,EAAI,EAAA;AAAA,YACpC,UAAY,EAAA,IAAA;AAAA,YACZ,KAAO,EAAA,SAAA;AAAA,WACR,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAEA,MAAO,OAAA,UAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEA,eAAe,IAAiB,EAAA;AAC9B,IAAmD,MAAA,EAAA,GAAA,IAAA,EAA3C,EAAM,IAAA,EAAA,MAAA,EAAQ,SAtG1B,EAAA,GAsGuD,IAAf,UAAe,GAAAE,WAAA,CAAA,EAAA,EAAf,CAA5B,MAAA,EAAM,QAAQ,EAAA,WAAA,CAAA,CAAA,CAAA;AAEtB,IAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC5C,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,OAAA,CAAQ,SAAY,GAAA,SAAA,CAAA;AAAA,KACtB;AACA,IAAA,IAAI,MAAQ,EAAA;AACV,MAAQ,OAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,QAAA,EAAW,MAAM,CAAA,IAAA,CAAA,CAAA;AAAA,KAC7C;AACA,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,OAAA,CAAQ,SAAY,GAAA,IAAA,CAAA;AAAA,KACtB;AAEA,IAAM,MAAA,OAAA,GAAU,IAAI,OAAQ,CAAAC,eAAA,CAAAF,gBAAA,CAAA;AAAA,MAC1B,SAAW,EAAA,EAAA;AAAA,KAAA,EACR,UAFuB,CAAA,EAAA;AAAA,MAG1B,IAAM,EAAA,OAAA;AAAA,KACP,CAAA,CAAA,CAAA;AACD,IAAO,OAAA,OAAA,CAAA;AAAA,GACT;AAAA,EAEA,mBAAmB,IAAiB,EAAA;AAClC,IAAI,IAAA,IAAA,IAAQ,KAAK,IAAM,EAAA;AACrB,MAAI,IAAA,IAAA,CAAK,SAAS,MAAQ,EAAA;AACxB,QAAA,MAAM,gBAAgB,IAAK,CAAA,SAAA,CAAA;AAC3B,QAAA,MAAM,OAAO,IAAK,CAAA,IAAA,CAAA;AAClB,QAAA,IAAI,iBAAiB,IAAM,EAAA;AACzB,UAAO,OAAA,CAAC,GAAQ,MAA6B,KAAA;AAC3C,YAAM,MAAA,OAAA,GAAU,IAAK,CAAA,cAAA,CAAe,IAAI,CAAA,CAAA;AACxC,YAAA,OAAO,IAAI,MAAO,CAAA,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAS,CAAA,CAAA;AAAA,WAC7C,CAAA;AAAA,SACF;AAAA,OACF,MAAA,IAAW,IAAK,CAAA,IAAA,KAAS,KAAO,EAAA;AAC9B,QAAO,OAAA,CAAC,GAAQ,MAA6B,KAAA;AAC3C,UAAO,OAAA,IAAI,OAAO,MAAM,CAAA,CAAA;AAAA,SAC1B,CAAA;AAAA,OACF;AAAA,KACF;AACA,IAAO,OAAA,CAAC,GAAQ,MAA6B,KAAA;AAC3C,MAAA,MAAM,CAAS,GAAA,KAAA,CAAA;AACf,MAAO,OAAA,IAAI,aAAa,MAAQ,EAAA,IAAA,CAAK,aAAaA,gBAAK,CAAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAM,KAAM,CAAC,CAAA,CAAA;AAAA,KACtE,CAAA;AAAA,GACF;AAAA,EAEA,mBAAmB,KAAgD,EAAA;AACjE,IAAA,MAAM,iBAAiC,EAAC,CAAA;AACxC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AACxC,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,cAAA,CAAe,QAAQ,MAAM;AAC3B,QAAO,OAAA,QAAA,CAAA;AAAA,OACT,CAAA;AAAA,KACF;AACA,IAAI,IAAA,IAAA,CAAK,KAAM,CAAA,IAAA,KAAS,OAAS,EAAA;AAC/B,MAAC,cAAA,CAAuB,eAAe,IAAK,CAAA,kBAAA;AAAA,QAC1C,KAAA;AAAA,OACF,CAAA;AAAA,KACS,MAAA,IAAA,IAAA,CAAK,KAAM,CAAA,IAAA,KAAS,MAAQ,EAAA;AACrC,MAAA,QAAA,CAAS,MAAS,GAAA,IAAA,CAAA;AAAA,KACpB;AACA,IAAO,OAAA,cAAA,CAAA;AAAA,GACT;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1HO,MAAM,uBACH,WAEV,CAAA;AAAA,EAoBE,WAAA,CAAY,KAAU,OAAgC,EAAA;AACpD,IAAA,KAAA,CAAM,KAAK,OAAO,CAAA,CAAA;AApBpB,IAAAD,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAWA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAEX,IAAAA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAsB,EAAC,CAAA,CAAA;AACvB,IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AACA,IAAQA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AAER,IAAAA,eAAA,CAAA,IAAA,EAAQ,mBAA8B,EAAC,CAAA,CAAA;AACvC,IAAAA,eAAA,CAAA,IAAA,EAAQ,mBAA8B,EAAC,CAAA,CAAA;AACvC,IAAQA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,gBAA4D,EAAC,CAAA,CAAA;AACrE,IAAQA,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAER,IAAQA,eAAA,CAAA,IAAA,EAAA,gBAAA,EAAiBI,WAAS,MAAM;AACtC,MAAA,IAAA,CAAK,aAAc,EAAA,CAAA;AAAA,OAClB,GAAG,CAAA,CAAA,CAAA;AAqRN,IAAAJ,eAAA,CAAA,IAAA,EAAQ,aAAY,MAAM;AACxB,MAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AAAA,KAChB,CAAA,CAAA;AAnRE,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,aAAA,CAAc,IAAI,CAAA,CAAA;AACrC,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,SAAS,OAA+D,EAAA;AACtE,IAAO,MAAA,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AACnC,IAAA,IAAA,CAAK,QAAQ,OAAQ,CAAA,KAAA,CAAA;AACrB,IAAA,IAAA,CAAK,QAAQ,IAAI,YAAA,CAAa,EAAI,EAAAG,eAAA,CAAAF,gBAAA,CAAA,EAAA,EAC7B,QAAQ,aADqB,CAAA,EAAA;AAAA,MAEhC,MAAM,IAAK,CAAA,IAAA;AAAA,KACZ,CAAA,CAAA,CAAA;AACD,IAAA,IAAA,CAAK,gBAAgB,OAAQ,CAAA,aAAA,CAAA;AAC7B,IAAA,OAAA,CAAQ,QAAQ,IAAK,CAAA,KAAA,CAAA;AAErB,IAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,MAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,KAC3B;AAEA,IAAA,IAAA,CAAK,eAAgB,EAAA,CAAA;AAErB,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,GACd;AAAA,EAEA,YAAqB,GAAA;AACnB,IAAA,IAAA,CAAK,kBAAmB,EAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,OAAO,cAAwC,EAAA;AAC7C,IAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AACd,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAA,MAAM,GAAM,GAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAC9C,MAAA,KAAA,MAAW,KAAK,GAAK,EAAA;AACnB,QAAK,IAAA,CAAA,YAAA,CAAa,GAAG,KAAK,CAAA,CAAA;AAAA,OAC5B;AAAA,KACF,MAAA,IAAW,CAAC,IAAA,CAAK,QAAU,EAAA;AACzB,MAAA,IAAA,CAAK,QAAW,GAAA,IAAA,CAAA;AAChB,MAAA,IAAI,KAAK,aAAe,EAAA;AACtB,QAAA,IAAA,CAAK,MAAO,CAAA,iBAAA;AAAA,UACV,IAAK,CAAA,aAAA;AAAA,SACP,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,SAAS,cAAwC,EAAA;AAC/C,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAA,MAAM,OAAU,GAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAClD,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACrB,QAAA,IAAA,CAAK,eAAe,CAAC,CAAA,CAAA;AAAA,OACtB,CAAA,CAAA;AAAA,KACH,MAAA,IAAW,KAAK,QAAU,EAAA;AACxB,MAAW,KAAA,MAAA,CAAA,IAAK,KAAK,YAAc,EAAA;AACjC,QAAK,IAAA,CAAA,YAAA,CAAa,CAAE,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OACxB;AACA,MAAA,IAAI,KAAK,KAAO,EAAA;AACd,QAAK,IAAA,CAAA,MAAA,CAAO,iBAAkB,CAAA,IAAA,CAAK,KAAgC,CAAA,CAAA;AAAA,OACrE;AACA,MAAA,IAAA,CAAK,gBAAgB,MAAS,GAAA,CAAA,CAAA;AAC9B,MAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAA;AAAA,KAClB;AAAA,GACF;AAAA,EAEA,WAAoD,GAAA;AAClD,IAAA,OAAO,IAAK,CAAA,eAAA,CAAgB,GAAI,CAAA,CAAC,CAAM,KAAA;AACrC,MAAO,OAAAA,gBAAA,CAAA;AAAA,QACL,MAAQ,EAAA,IAAA;AAAA,QACR,SAAS,CAAE,CAAA,OAAA;AAAA,QACX,KAAO,EAAA,CAAA;AAAA,OACJ,EAAA,4BAAA,CAA6B,EAAE,OAAO,CAAA,CAAA,CAAA;AAAA,KAE5C,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,WAA0B,GAAA;AACxB,IAAA,OAAO,IAAK,CAAA,eAAA,CAAA;AAAA,GACd;AAAA,EAEA,OAAO,GAAmC,EAAA;AAExC,IAAA,IAAA,CAAK,UAAa,GAAA,GAAA,CAAA;AAClB,IAAA,MAAM,SAAS,IAAK,CAAA,KAAA,CAAA;AACpB,IAAM,MAAA,GAAA,GAAM,UAAW,MAAe,CAAA,IAAA,CAAA;AACtC,IAAA,IAAI,UAAU,GAAK,EAAA;AACjB,MAAA,MAAA,CAAO,MAAO,EAAA,CAAA;AAEd,MAAA,MAAM,iBAA6B,EAAC,CAAA;AACpC,MAAA,IAAA,CAAK,QAAQ,OAAQ,CAAA,CAAC,EAAE,OAAA,EAAS,OAAY,KAAA;AAC3C,QAAA,IAAI,KAAO,EAAA;AACT,UAAM,MAAA,EAAA,GAAK,MACP,GAAI,CAAAA,gBAAA,CAAA;AAAA,YACF,MAAQ,EAAA,IAAA;AAAA,YACR,OAAA;AAAA,YACA,KAAA;AAAA,WACG,EAAA,4BAAA,CAA6B,OAAO,CAAA,CACxC,CACD,GAAA,IAAA,CAAA;AACJ,UAAA,IAAI,EAAI,EAAA;AACN,YAAA,MAAA,CAAO,SAAS,KAAK,CAAA,CAAA;AACrB,YAAA,cAAA,CAAe,IAAK,CAAAA,gBAAA,CAAA;AAAA,cAClB,MAAQ,EAAA,IAAA;AAAA,cACR,OAAA;AAAA,cACA,KAAA;AAAA,aACG,EAAA,4BAAA,CAA6B,OAAO,CACxC,CAAA,CAAA,CAAA;AAAA,WACI,MAAA;AACL,YAAA,MAAA,CAAO,YAAY,KAAK,CAAA,CAAA;AAAA,WAC1B;AAAA,SACF;AAAA,OACD,CAAA,CAAA;AACD,MAAA,IAAA,CAAK,eAAkB,GAAA,cAAA,CAAA;AAEvB,MAAA,MAAA,CAAO,MAAM,GAAG,CAAA,CAAA;AAAA,KAClB;AACA,IAAA,OAAO,IAAK,CAAA,eAAA,CAAA;AAAA,GACd;AAAA,EAEA,WAAoB,GAAA;AAClB,IAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,SAAwB,GAAA;AACtB,IAAA,OAAO,KAAK,OAAQ,CAAA,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,SAAc,KAAA;AAC9C,MAAA,MAAM,OAAU,GAAA,KAAA,IAAS,CAAC,CAAE,KAAc,CAAA,IAAA,CAAA;AAC1C,MAAO,OAAAA,gBAAA,CAAA;AAAA,QACL,OAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAQ,EAAA,IAAA;AAAA,OAAA,EACL,6BAA6B,OAAO,CAAA,CAAA,CAAA;AAAA,KAE1C,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,WAAW,EAA0C,EAAA;AACnD,IAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AACd,IAAA,MAAM,SAAS,IAAK,CAAA,KAAA,CAAA;AACpB,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,IAAI,EAAI,EAAA;AACN,QAAA,KAAA,IAAS,GAAM,GAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,EAAQ,GAAS,EAAA,IAAA;AAC3C,UAAM,MAAA,GAAA,GAAM,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAC5B,UAAA,IAAI,GAAK,EAAA;AACP,YAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,GAAA,CAAA;AAC3B,YAAA,IAAI,WAAW,KAAO,EAAA;AACpB,cAAM,MAAA,KAAA,GAAQ,GAAG,OAAO,CAAA,CAAA;AACxB,cAAA,IAAI,KAAO,EAAA;AACT,gBAAA,MAAA,CAAO,YAAY,KAAK,CAAA,CAAA;AACxB,gBAAK,IAAA,CAAA,OAAA,CAAQ,MAAO,CAAA,GAAA,EAAK,CAAC,CAAA,CAAA;AAAA,eAC5B;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACK,MAAA;AACL,QAAA,MAAA,CAAO,WAAY,EAAA,CAAA;AACnB,QAAA,IAAA,CAAK,UAAU,EAAC,CAAA;AAAA,OAClB;AAAA,KACF;AAAA,GACF;AAAA,EAEA,QAAQ,IAA2B,EAAA;AACjC,IAAA,IAAA,CAAK,UAAW,EAAA,CAAA;AAChB,IAAA,IAAA,CAAK,QAAQ,IAAI,CAAA,CAAA;AAAA,GACnB;AAAA,EAEA,QAAQ,IAAmC,EAAA;AACzC,IAAA,MAAM,UAAU,IAAK,CAAA,OAAA,CAAA;AACrB,IAAI,IAAA,cAAA,CAAA;AACJ,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,IAAI,IAAM,EAAA;AACR,QAAI,IAAA,IAAA,CAAA;AAEJ,QAAI,IAAA,CAAC,QAAQ,IAAM,EAAA;AACjB,UAAM,MAAA,YAAA,GAAe,WAAW,IAAI,CAAA,CAAA;AACpC,UAAA,IAAA,GAAO,UAAU,YAAY,CAAA,CAAA;AAAA,SACxB,MAAA;AACL,UAAA,IAAA,GAAO,OAAQ,CAAA,IAAA,CAAA;AAAA,SACjB;AACA,QAAA,IAAI,IAAK,CAAA,IAAA,IAAQ,IAAK,CAAA,IAAA,KAAS,IAAM,EAAA;AACnC,UAAA,OAAA,CAAQ,KAAK,4CAA4C,CAAA,CAAA;AACzD,UAAA,OAAA;AAAA,SACF;AACA,QAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA;AAEZ,QAAO,IAAA,GAAA,gBAAA,CAAiB,MAAM,IAAI,CAAA,CAAA;AAClC,QAAA,IAAI,IAAM,EAAA;AACR,UAAiB,cAAA,GAAA,IAAA,CAAK,kBAAmB,CAAA,OAAA,EAAS,IAAI,CAAA,CAAA;AAAA,SACxD;AAAA,OACF;AACA,MAAI,IAAA,OAAA,CAAQ,IAAQ,IAAA,KAAA,CAAA,EAAW,cAAc,CAAA,CAAA;AAAA,KAC/C;AAAA,GACF;AAAA,EAEA,SAAA,CAAU,gBAAiC,OAA8B,EAAA;AACvE,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAA,MAAM,GAAM,GAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAC9C,MAAI,GAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACjB,QAAK,IAAA,CAAA,UAAA,CAAW,CAAG,EAAA,OAAA,EAAS,KAAK,CAAA,CAAA;AAAA,OAClC,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEA,WAAW,cAAwC,EAAA;AACjD,IAAA,MAAM,YAAe,GAAA,cAAA,GACjB,IAAK,CAAA,YAAA,CAAa,MAAO,CAAA,CAAC,CAAM,KAAA,cAAA,CAAe,CAAE,CAAA,CAAC,CAAC,CAAC,IACpD,IAAK,CAAA,YAAA,CAAA;AAET,IAAa,YAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AAC1B,MAAK,IAAA,CAAA,YAAA,CAAa,CAAE,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KACvB,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,cAAc,QAAkC,EAAA;AAC9C,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,IAAA,CAAK,eAAe,QAAQ,CAAA,CAAA;AAAA,KACvB,MAAA;AACL,MAAA,IAAA,CAAK,WAAY,CAAA,OAAA;AAAA,QAAQ,CAAC,CACxB,KAAA,IAAA,CAAK,cAAe,CAAA,EAAE,OAAS,EAAA,CAAA,CAAE,OAAS,EAAA,KAAA,EAAO,CAAE,CAAA,KAAA,EAAO,CAAA;AAAA,OAC5D,CAAA;AAAA,KACF;AAAA,GACF;AAAA;AAAA,EAGA,SAA2C,GAAA;AACzC,IAAA,OAAO,KAAK,SAAU,EAAA,CAAA;AAAA,GACxB;AAAA,EAEA,SAA2C,GAAA;AACzC,IAAA,IAAI,KAAK,KAAO,EAAA;AACd,MAAM,MAAA,MAAA,GAAS,IAAK,CAAA,KAAA,CAAM,SAAU,EAAA,CAAA;AACpC,MAAI,IAAA,MAAA,CAAO,SAAW,EAAA;AACpB,QAAA,OAAO,cAAc,MAAM,CAAA,CAAA;AAAA,OAC7B;AAAA,KACF;AAAA,GACF;AAAA,EAEA,WAAW,KAAqB,EAAA;AAC9B,IAAA,IAAA,CAAK,QAAQ,OAAU,GAAA,KAAA,CAAA;AACvB,IAAK,IAAA,CAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AACxB,IAAK,IAAA,CAAA,gBAAA,CAAiB,KAAK,aAAa,CAAA,CAAA;AAAA,GAC1C;AAAA,EAEA,SAAS,KAA4B,EAAA;AACnC,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,MAAW,KAAA,MAAA,CAAA,IAAK,KAAK,OAAS,EAAA;AAC5B,QAAK,IAAA,CAAA,MAAA,CAAO,QAAS,CAAA,CAAA,EAAG,KAAgC,CAAA,CAAA;AAAA,OAC1D;AAAA,KACF;AAAA,GACF;AAAA,EACA,iBAAiB,KAA4B,EAAA;AAC3C,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,IAAA,CAAK,aAAgB,GAAA,KAAA,CAAA;AACrB,MAAW,KAAA,MAAA,CAAA,IAAK,KAAK,eAAiB,EAAA;AACpC,QAAK,IAAA,CAAA,MAAA,CAAO,QAAS,CAAA,CAAA,EAAG,KAAgC,CAAA,CAAA;AAAA,OAC1D;AAAA,KACF;AAAA,GACF;AAAA,EACA,YAAY,KAA6B,EAAA;AACvC,IAAK,IAAA,CAAA,KAAA,GAAQA,gBAAK,CAAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,CAAK,KAAU,CAAA,EAAA,KAAA,CAAA,CAAA;AACjC,IAAW,KAAA,MAAA,CAAA,IAAK,KAAK,OAAS,EAAA;AAC5B,MAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,CAAG,EAAA,IAAA,CAAK,KAAgC,CAAA,CAAA;AAAA,KAC/D;AAAA,GACF;AAAA,EACA,oBAAoB,KAA6B,EAAA;AAC/C,IAAK,IAAA,CAAA,aAAA,GAAgBA,gBAAK,CAAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,CAAK,aAAkB,CAAA,EAAA,KAAA,CAAA,CAAA;AACjD,IAAW,KAAA,MAAA,CAAA,IAAK,KAAK,eAAiB,EAAA;AACpC,MAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,CAAG,EAAA,IAAA,CAAK,aAAwC,CAAA,CAAA;AAAA,KACvE;AAAA,GACF;AAAA,EAEA,aAAa,KAA0B,EAAA;AACrC,IAAA,OAAO,KAAK,eAAgB,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,UAAU,KAAK,CAAA,CAAA;AAAA,GAC3D;AAAA,EAMQ,eAAe,QAA+C,EAAA;AACpE,IAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,QAAA,CAAA;AAC3B,IAAA,MAAM,EAAE,KAAA,EAAO,UAAY,EAAA,YAAA,KAAiB,IAAK,CAAA,OAAA,CAAA;AACjD,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,KAAA,CAAM,aAAc,EAAA,CAAA;AACpB,MAAI,IAAA,OAAA,CAAA;AACJ,MAAI,IAAA,OAAA,CAAQ,cAAc,UAAY,EAAA;AACpC,QAAU,OAAA,GAAA,OAAA,CAAQ,WAAW,UAAU,CAAA,CAAA;AAAA,iBAC9B,KAAO,EAAA;AAChB,QAAA,OAAA,GAAU,KAAM,CAAAA,gBAAA,CAAAA,gBAAA,CAAA;AAAA,UACd,MAAQ,EAAA,IAAA;AAAA,SACL,EAAA,QAAA,CAAA,EACA,4BAA6B,CAAA,OAAO,CACxC,CAAA,CAAA,CAAA;AAAA,OACH;AACA,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,MAAM,YAAY,CAAC,YAAA,CAAA;AACnB,QAAM,KAAA,CAAA,WAAA,CAAY,OAAO,OAAO,CAAA,EAAG,EAAE,SAAW,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,OACjE;AAAA,KACF;AAAA,GACF;AAAA,EAEc,WACZ,EAIA,EAAA;AAAA,IAAA,OAAA,OAAA,CAAA,IAAA,EAAA,SAAA,EAAA,WAJA,GACA,EAAA,OAAA,GAAwB,EAAC,EACzB,MACA,MACA,EAAA;AAlXJ,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAmXI,MAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,GAAA,CAAA;AAC3B,MAAM,MAAA;AAAA,QACJ,QAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAa,EAAA,YAAA;AAAA,OACX,GAAAA,gBAAA,CAAA;AAAA,QACF,QAAU,EAAA,GAAA;AAAA,OACP,EAAA,OAAA,CAAA,CAAA;AAEL,MAAA,MAAM,WAAc,GAAA,YAAA,IAAA,IAAA,GAAA,YAAA,GAAgB,CAAC,IAAA,CAAK,OAAQ,CAAA,aAAA,CAAA;AAClD,MAAI,IAAA,KAAA,CAAA;AACJ,MAAA,MAAM,iBAAyC,EAAC,CAAA;AAChD,MAAM,MAAA,OAAA,GAAU,CAAC,OAAkC,KAAA;AACjD,QAAA,cAAA,CAAe,KAAK,OAAO,CAAA,CAAA;AAAA,OAC7B,CAAA;AACA,MAAA,MAAM,QAAQ,MAAM;AAClB,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,IAAA,CAAK,aAAa,KAAK,CAAA,CAAA;AAAA,SACzB;AAAA,OACF,CAAA;AACA,MAAI,IAAA,OAAA,CAAA;AACJ,MAAA,IAAI,QAAQ,kBAAoB,EAAA;AAC9B,QAAU,OAAA,GAAA,MAAM,QAAQ,kBAAmB,CAAAA,gBAAA,CAAA;AAAA,UACzC,KAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAQ,EAAA,IAAA;AAAA,UACR,IAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA;AAAA,SACG,EAAA,4BAAA,CAA6B,OAAO,CACxC,CAAA,CAAA,CAAA;AAAA,OACI,MAAA;AACL,QAAA,OAAA,GAAU,OAAQ,CAAA,YAAA,CAAA;AAAA,OACpB;AAEA,MAAA,IAAI,WAAW,KAAO,EAAA;AACpB,QAAA,MAAM,YAA8B,GAAA;AAAA,UAClC,QAAA;AAAA,UACA,OAAA;AAAA;AAAA,UAEA,WAAA;AAAA,UACA,YAAc,EAAA,KAAA;AAAA,UACd,SAAW,EAAA,KAAA;AAAA,SACb,CAAA;AACA,QAAI,IAAA,OAAA,CAAQ,QAAQ,CAAG,EAAA;AACrB,UAAA,YAAA,CAAa,QAAW,GAAA,QAAA,CAAA;AAAA,SAC1B;AACA,QAAQ,KAAA,GAAA,KAAA,CAAM,SAAU,CAAA,OAAA,EAAS,YAAY,CAAA,CAAA;AAE7C,QAAA,MAAM,mBACJ,EAAK,GAAA,CAAA,EAAA,GAAA,IAAA,CAAA,OAAA,CAAQ,YAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA2B,oBAA3B,IAA8C,GAAA,EAAA,GAAA,IAAA,CAAA;AAChD,QAAA,IAAI,eAAiB,EAAA;AACnB,UAAM,MAAA,CAAA,GAAI,MAAM,QAAS,EAAA,CAAA;AACzB,UAAA,CAAA,IACE,CAAE,CAAA,IAAA;AAAA,YACA,QAAA;AAAA,YACA,MAAM;AACJ,cAAM,KAAA,EAAA,CAAA;AAAA,aACR;AAAA,YACA,IAAA;AAAA,WACF,CAAA;AAAA,SACJ;AACA,QAAA,IAAA,CAAK,aAAa,IAAK,CAAA,CAAC,KAAO,EAAA,cAAA,EAAgB,GAAG,CAAC,CAAA,CAAA;AACnD,QAAA,KAAA,CAAM,UAAU,MAAM,CAAA,CAAA;AAAA,OACxB;AAAA,KACF,CAAA,CAAA;AAAA,GAAA;AAAA,EAEQ,aAAa,KAAc,EAAA;AAvbrC,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAwbI,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,GAAK,EAAA;AACP,MAAM,KAAA,CAAA,UAAA,GAAa,WAAY,EAAA,CAAA;AAC/B,MAAM,MAAA,KAAA,GAAQ,KAAK,YAAa,CAAA,SAAA,CAAU,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAA,KAAM,KAAK,CAAA,CAAA;AAC/D,MAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,QAAA,MAAM,mBACJ,EAAK,GAAA,CAAA,EAAA,GAAA,IAAA,CAAA,OAAA,CAAQ,YAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA2B,oBAA3B,IAA8C,GAAA,EAAA,GAAA,IAAA,CAAA;AAChD,QAAA,MAAM,GAAG,aAAA,EAAe,GAAG,CAAI,GAAA,IAAA,CAAK,aAAa,KAAK,CAAA,CAAA;AACtD,QAAA,KAAA,MAAW,KAAK,aAAe,EAAA;AAC7B,UAAA,CAAA,CAAE,GAAG,CAAA,CAAA;AAAA,SACP;AACA,QAAA,aAAA,CAAc,MAAS,GAAA,CAAA,CAAA;AACvB,QAAA,IAAI,eAAiB,EAAA;AACnB,UAAA,IAAA,CAAK,eAAe,GAAG,CAAA,CAAA;AAAA,SACzB;AACA,QAAK,IAAA,CAAA,YAAA,CAAa,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAAA,OACnC;AAAA,KACF;AAAA,GACF;AAAA,EAEQ,kBAAA,CACN,SACA,IACgB,EAAA;AAChB,IAAA,MAAM,QAAQ,OAAQ,CAAA,KAAA,CAAA;AACtB,IAAA,IAAI,OAAuB,EAAC,CAAA;AAE5B,IAAI,IAAA,OAAO,UAAU,UAAY,EAAA;AAC/B,MAAA,IAAI,SAAS,OAAS,EAAA;AAEpB,QAAC,IAAa,CAAA,YAAA,GAAe,CAC3B,OAAA,EACA,MACG,KAAA;AACH,UAAM,MAAA,OAAA,GAAU,MAAM,OAAO,CAAA,CAAA;AAC7B,UAAM,MAAA,YAAA,GAAe,KAAK,MAAO,CAAA,kBAAA;AAAA,YAC/B,OAAA;AAAA,WACF,CAAA;AACA,UAAO,OAAA,YAAA,CAAa,SAAS,MAAM,CAAA,CAAA;AAAA,SACrC,CAAA;AAAA,OACK,MAAA;AACL,QAAO,IAAA,GAAA;AAAA,UACL,KAAA,EAAO,CAAC,OAAY,KAAA;AAClB,YAAA,IAAI,OAAS,EAAA;AACX,cAAA,OAAO,KAAK,MAAO,CAAA,YAAA,CAAaA,sCAAK,KAAU,CAAA,EAAA,KAAA,CAAM,OAAO,CAAG,CAAA,CAAA,CAAA;AAAA,aAC1D,MAAA;AACL,cAAO,OAAA,IAAA,CAAK,OAAO,YAAa,CAAAE,eAAA,CAAAF,gBAAA,CAAA,EAAA,EAAK,QAAL,EAAY,IAAA,EAAM,QAAQ,CAAA,CAAA,CAAA;AAAA,aAC5D;AAAA,WACF;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACK,MAAA;AACL,MAAO,IAAA,GAAA,IAAA,CAAK,MAAO,CAAA,kBAAA,CAAmB,KAAgC,CAAA,CAAA;AAAA,KACxE;AAEA,IAAK,IAAA,CAAA,aAAA,GAAgB,CAAC,OAAA,EAAkB,KAAU,KAAA;AAChD,MAAK,IAAA,CAAA,cAAA,CAAe,SAAS,KAAK,CAAA,CAAA;AAAA,KACpC,CAAA;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEQ,cAAA,CAAe,SAAkB,KAAc,EAAA;AACrD,IAAA,MAAM,SAAS,IAAK,CAAA,KAAA,CAAA;AACpB,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,MAAM,GAAM,GAAAA,gBAAA,CAAA;AAAA,QACV,MAAQ,EAAA,IAAA;AAAA,QACR,OAAA;AAAA,QACA,KAAA;AAAA,OAAA,EACG,6BAA6B,OAAO,CAAA,CAAA,CAAA;AAGzC,MAAM,KAAA,CAAA,OAAA,CAAQ,OAAO,IAAK,CAAA,IAAA,CAAA;AAC1B,MAAK,IAAA,CAAA,OAAA,CAAQ,KAAK,GAAG,CAAA,CAAA;AACrB,MAAA,IAAI,EAAK,GAAA,IAAA,CAAA;AACT,MAAA,IAAI,KAAK,UAAY,EAAA;AACnB,QAAK,EAAA,GAAA,IAAA,CAAK,WAAW,GAAG,CAAA,CAAA;AAAA,OAC1B;AACA,MAAA,IAAI,EAAI,EAAA;AACN,QAAA,MAAM,EAAE,KAAO,EAAA,YAAA,EAAc,YAAY,WAAa,EAAA,aAAA,KACpD,IAAK,CAAA,OAAA,CAAA;AAEP,QAAA,KAAA,CAAM,OAAQ,CAAA,WAAA,GAAc,OAAQ,CAAA,WAAW,IAAI,WAAc,GAAA,IAAA,CAAA;AACjE,QAAA,MAAA,CAAO,SAAS,KAAK,CAAA,CAAA;AACrB,QAAA,IAAI,UAAY,EAAA;AACd,UAAA,IAAI,aAAe,EAAA;AACjB,YAAM,KAAA,CAAA,EAAA,CAAG,aAAa,MAAM;AAC1B,cAAK,IAAA,CAAA,YAAA,CAAa,KAAK,OAAO,CAAA,CAAA;AAAA,aAC/B,CAAA,CAAA;AACD,YAAM,KAAA,CAAA,EAAA,CAAG,YAAY,MAAM;AACzB,cAAA,IAAA,CAAK,eAAe,GAAG,CAAA,CAAA;AAAA,aACxB,CAAA,CAAA;AAAA,WACI,MAAA;AACL,YAAM,KAAA,CAAA,EAAA;AAAA,cACJ,OAAA;AAAA,cACA,CAAC,CAAA,KAAM,IAAK,CAAA,mBAAA,CAAoB,CAAsB,CAAA;AAAA,cACtD,IAAA;AAAA,aACF,CAAA;AAAA,WACF;AAAA,SACF;AACA,QAAK,IAAA,CAAA,OAAA,CAAQ,kBAAkB,KAAK,CAAA,CAAA;AAGpC,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAI,KAAO,EAAA;AACT,YAAK,IAAA,CAAA,UAAA;AAAA,cACHA,gBAAA,CAAA;AAAA,gBACE,MAAQ,EAAA,IAAA;AAAA,gBACR,KAAA;AAAA,gBACA,OAAA;AAAA,eAAA,EACG,6BAA6B,OAAO,CAAA,CAAA;AAAA,cAEzC,YAAA;AAAA,cACA,KAAA;AAAA,aACF,CAAA;AAAA,WACF;AACA,UAAA,IAAA,CAAK,cAAe,CAAA,EAAE,KAAO,EAAA,OAAA,EAAS,CAAA,CAAA;AAAA,SACvC,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACF;AAAA,EAEQ,oBAAoB,CAAsB,EAAA;AAChD,IAAA,QAAA,CAAS,gBAAgB,CAAC,CAAA,CAAA;AAC1B,IAAA,MAAM,QAAQ,CAAE,CAAA,MAAA,CAAA;AAChB,IAAA,MAAM,UAAW,KAAc,CAAA,OAAA,CAAA;AAC/B,IAAA,MAAM,GAAgB,GAAAA,gBAAA,CAAA;AAAA,MACpB,MAAQ,EAAA,IAAA;AAAA,MACR,KAAA;AAAA,MACA,OAAA;AAAA,KAAA,EACG,6BAA6B,OAAO,CAAA,CAAA,CAAA;AAEzC,IAAM,MAAA,UAAA,GAAa,IAAK,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAC1C,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,IAAI,IAAK,CAAA,OAAA,IAAW,IAAK,CAAA,OAAA,CAAQ,qBAAuB,EAAA;AACtD,QAAA,IAAA,CAAK,eAAe,UAAU,CAAA,CAAA;AAAA,OAChC;AAAA,KACK,MAAA;AACL,MAAA,IAAA,CAAK,YAAa,CAAA,GAAA,EAAK,OAAS,EAAA,CAAA,CAAE,MAAM,CAAA,CAAA;AAAA,KAC1C;AAAA,GACF;AAAA,EAEQ,YAAA,CACN,GACA,EAAA,IAAA,EACA,MACA,EAAA;AACA,IAAM,MAAA,EAAE,WAAY,EAAA,GAAI,IAAK,CAAA,OAAA,CAAA;AAC7B,IAAA,IAAI,CAAC,WAAa,EAAA;AAEhB,MAAC,IAAA,CAAK,GAAY,CAAA,cAAA,CAAe,MAAM;AACrC,QAAA,IAAA,CAAK,eAAe,GAAG,CAAA,CAAA;AAAA,OACxB,CAAA,CAAA;AACD,MAAA,IAAA,CAAK,gBAAgB,OAAQ,CAAA,CAAC,MAAM,IAAK,CAAA,cAAA,CAAe,CAAC,CAAC,CAAA,CAAA;AAAA,KAC5D;AACA,IAAK,IAAA,CAAA,eAAA,CAAgB,KAAK,GAAG,CAAA,CAAA;AAC7B,IAAA,IAAA,CAAK,QAAW,GAAA,IAAA,CAAA;AAChB,IAAA,MAAM,EAAE,aAAA,EAAe,aAAe,EAAA,YAAA,KAAiB,IAAK,CAAA,OAAA,CAAA;AAE5D,IAAI,IAAA,aAAA,IAAiB,IAAI,KAAO,EAAA;AAC9B,MAAK,IAAA,CAAA,MAAA,CAAO,QAAS,CAAA,GAAA,EAAK,aAAwC,CAAA,CAAA;AAAA,KACpE;AACA,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,IAAA,CAAK,UAAW,CAAA,GAAA,EAAK,YAAc,EAAA,IAAA,EAAM,MAAM,CAAA,CAAA;AAAA,KACjD;AACA,IAAI,IAAA,IAAA,CAAK,QAAQ,QAAU,EAAA;AACzB,MAAA,MAAM,WAAW,GAAI,CAAA,OAAA,GAAU,CAAC,GAAI,CAAA,OAAO,IAAI,EAAC,CAAA;AAChD,MAAA,IAAA,CAAK,QAAQ,QAAS,CAAAA,gBAAA,CAAA;AAAA,QACpB,IAAA;AAAA,QACA,KAAO,EAAA,IAAA;AAAA,QACP,QAAA;AAAA,OACG,EAAA,4BAAA,CAA6B,QAAQ,CACzC,CAAA,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEQ,eAAe,GAAe,EAAA;AACpC,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,eAAgB,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAC9C,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAK,IAAA,CAAA,eAAA,CAAgB,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AACpC,MAAA,IAAI,KAAK,OAAS,EAAA;AAChB,QAAI,IAAA,IAAA,CAAK,QAAQ,KAAO,EAAA;AACtB,UAAA,IAAA,CAAK,MAAO,CAAA,QAAA;AAAA,YACV,GAAA;AAAA,YACA,KAAK,OAAQ,CAAA,KAAA;AAAA,WACf,CAAA;AAAA,SACF;AAEA,QAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,aAAiB,IAAA,GAAA,CAAI,KAAO,EAAA;AAC3C,UAAK,IAAA,CAAA,YAAA,CAAa,IAAI,KAAK,CAAA,CAAA;AAAA,SAC7B;AAAA,OACF;AAAA,KACF;AACA,IAAK,IAAA,CAAA,QAAA,GAAW,IAAK,CAAA,eAAA,CAAgB,MAAS,GAAA,CAAA,CAAA;AAAA,GAChD;AAAA,EAEQ,oBAAuB,GAAA;AAC7B,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,GAAK,EAAA;AACP,MAAM,MAAA,EAAE,eAAgB,EAAA,GAAI,IAAK,CAAA,OAAA,CAAA;AACjC,MAAA,MAAM,MAAM,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,IAAA,CAAA;AAC/B,MAAA,IAAI,GAAK,EAAA;AACP,QAAI,GAAA,CAAA,EAAA,CAAG,OAAS,EAAA,IAAA,CAAK,SAAS,CAAA,CAAA;AAAA,OAChC;AAAA,KACF;AAAA,GACF;AAAA,EAEQ,uBAA0B,GAAA;AAChC,IAAA,IAAA,CAAK,GAAI,CAAA,GAAA,CAAI,SAAW,EAAA,IAAA,CAAK,cAAc,CAAA,CAAA;AAC3C,IAAA,IAAA,CAAK,GAAI,CAAA,GAAA,CAAI,SAAW,EAAA,IAAA,CAAK,cAAc,CAAA,CAAA;AAC3C,IAAA,IAAA,CAAK,GAAI,CAAA,GAAA,CAAI,OAAS,EAAA,IAAA,CAAK,SAAS,CAAA,CAAA;AAAA,GACtC;AAAA,EAEQ,eAAkB,GAAA;AACxB,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,GAAK,EAAA;AACP,MAAA,MAAM,EAAE,KAAA,EAAO,UAAY,EAAA,YAAA,KAAiB,IAAK,CAAA,OAAA,CAAA;AACjD,MAAA,IAAA,CAAK,oBAAqB,EAAA,CAAA;AAC1B,MAAK,IAAA,CAAA,UAAA,IAAc,KAAU,KAAA,CAAC,YAAc,EAAA;AAC1C,QAAI,GAAA,CAAA,EAAA,CAAG,SAAW,EAAA,IAAA,CAAK,cAAc,CAAA,CAAA;AACrC,QAAI,GAAA,CAAA,EAAA,CAAG,SAAW,EAAA,IAAA,CAAK,cAAc,CAAA,CAAA;AAAA,OACvC;AAAA,KACF;AAAA,GACF;AAAA,EAEQ,kBAAqB,GAAA;AAC3B,IAAA,IAAA,CAAK,uBAAwB,EAAA,CAAA;AAC7B,IAAA,IAAA,CAAK,GAAI,CAAA,GAAA,CAAI,SAAW,EAAA,IAAA,CAAK,cAAc,CAAA,CAAA;AAC3C,IAAA,IAAA,CAAK,GAAI,CAAA,GAAA,CAAI,SAAW,EAAA,IAAA,CAAK,cAAc,CAAA,CAAA;AAAA,GAC7C;AACF;;AC9pBgB,SAAA,QAAA,CACd,KACA,OAC+B,EAAA;AAC/B,EAAA,IAAI,YAAY,MAAM;AAAA,GAEtB,CAAA;AACA,EAAA,MAAM,OAAU,GAAA,IAAI,OAAgB,CAAA,CAAC,SAAS,MAAW,KAAA;AACvD,IAAM,MAAA,GAAA,GAAM,IAAI,cAAe,EAAA,CAAA;AAC/B,IAAI,GAAA,CAAA,IAAA,CAAK,OAAO,GAAG,CAAA,CAAA;AACnB,IAAA,GAAA,CAAI,YAAe,GAAA,aAAA,CAAA;AACnB,IAAA,KAAA,MAAW,KAAK,OAAS,EAAA;AACvB,MAAA,GAAA,CAAI,gBAAiB,CAAA,CAAA,EAAG,OAAQ,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KACpC;AACA,IAAA,GAAA,CAAI,SAAS,WAAY;AACvB,MAAA,MAAM,eAAkB,GAAA,IAAI,UAAW,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AACpD,MAAM,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,CAAC,eAAe,CAAG,EAAA,EAAE,IAAM,EAAA,WAAA,EAAa,CAAA,CAAA;AAC9D,MAAM,MAAA,UAAA,GAAa,MAAO,CAAA,GAAA,IAAO,MAAO,CAAA,SAAA,CAAA;AACxC,MAAM,MAAA,QAAA,GAAW,UAAW,CAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AAChD,MAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAAA,KAClB,CAAA;AACA,IAAA,GAAA,CAAI,OAAU,GAAA,MAAA,CAAA;AACd,IAAA,GAAA,CAAI,IAAK,EAAA,CAAA;AACT,IAAA,SAAA,GAAY,MAAM;AAChB,MAAA,GAAA,CAAI,KAAM,EAAA,CAAA;AACV,MAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,KACZ,CAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA,CAAC,SAAS,SAAS,CAAA,CAAA;AAC5B;;AC3BA,MAAM,UAAA,GAAa,IAAI,KAAM,CAAA,EAAE,aAAa,CAAG,EAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAE3D,mBAAe,UAAA;;;;;;;;ACMR,MAAM,qBAAqBI,cAAc,CAAA;AAAA,EAG9C,WAAA,CACE,QACA,EAAA,MAAA,EACA,OACA,EAAA;AACA,IAAM,KAAA,CAAA,QAAA,EAAU,QAAQ,OAAO,CAAA,CAAA;AAPjC,IAAQL,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAQR;AAAA,EAEA,UAAmB,GAAA;AACjB,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,IAAA,CAAK,QAAS,EAAA,CAAA;AACd,MAAA,IAAA,CAAK,QAAW,GAAA,KAAA,CAAA,CAAA;AAAA,KAClB;AAAA,GACF;AAAA,EAEA,UAAmB,GAAA;AAEjB,IAAA,KAAA,CAAM,UAAW,EAAA,CAAA;AAEjB,IAAM,MAAA,OAAA,GAAW,KAAK,OAAqB,CAAA,OAAA,CAAA;AAE3C,IAAA,MAAM,MAAwB,IAAK,CAAA,MAAA,CAAA;AACnC,IAAA,MAAM,MAAM,GAAI,CAAA,GAAA,CAAA;AAChB,IAAA,GAAA,CAAI,GAAM,GAAA,EAAA,CAAA;AAEV,IAAAM,YAAA,CAAW,IAAI,MAAM;AACnB,MAAA,MAAM,CAAC,OAAS,EAAA,SAAS,CAAI,GAAA,QAAA,CAAS,KAAK,OAAO,CAAA,CAAA;AAClD,MAAQ,OAAA,CAAA,IAAA,CAAK,CAAC,MAAW,KAAA;AACvB,QAAA,GAAA,CAAI,GAAM,GAAA,MAAA,CAAA;AAAA,OACX,CAAA,CAAA;AACD,MAAA,IAAA,CAAK,QAAW,GAAA,SAAA,CAAA;AAChB,MAAO,OAAA,OAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH;AACF;;;;;;;;ACZO,MAAM,mBAAmB,KAAM,CAAA;AAAA,EA8BpC,WAAA,CAAY,KAAa,OAAyB,EAAA;AAChD,IAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AA9Bf,IAAmBN,eAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;AAAA,MACjB,OAAS,EAAA,KAAA;AAAA,MACT,OAAS,EAAA,QAAA;AAAA,MACT,OAAS,EAAA,OAAA;AAAA,MACT,MAAQ,EAAA,EAAA;AAAA,MACR,MAAQ,EAAA,EAAA;AAAA,MACR,MAAQ,EAAA,YAAA;AAAA,MACR,WAAa,EAAA,KAAA;AAAA,KACf,CAAA,CAAA;AAEA,IAA0BA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA;AAAA,MACxB,GAAK,EAAA,IAAA;AAAA,MACL,SAAW,EAAA,KAAA;AAAA,MACX,WAAa,EAAA,EAAA;AAAA,MACb,OAAS,EAAA,CAAA;AAAA,MACT,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA,CAAA;AAAA,MACT,IAAM,EAAA,UAAA;AAAA,MACN,OAAS,EAAA,IAAA;AAAA,MACT,cAAgB,EAAA,CAAA;AAAA,MAChB,YAAc,EAAA,GAAA;AAAA,KAChB,CAAA,CAAA;AAEA,IAAQA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;AACR,IAAQA,eAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;AAIN,IAAA,IAAA,CAAK,IAAO,GAAA,GAAA,CAAA;AAGZ,IAAA,MAAM,SAAc,EAAC,CAAA;AACrB,IAAA,MAAM,OAAY,EAAC,CAAA;AACnB,IAAI,IAAA,GAAA,CAAA;AACJ,IAAA,KAAK,OAAO,OAAS,EAAA;AACnB,MAAI,IAAA,GAAA,IAAO,KAAK,OAAS,EAAA;AACvB,QAAK,IAAA,CAAA,GAAG,CAAI,GAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAAA,OAClB,MAAA;AACL,QAAO,MAAA,CAAA,GAAG,CAAI,GAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AAAA,OAC3B;AAAA,KACF;AACA,IAAK,IAAA,CAAA,UAAA,CAAW,MAAM,IAAI,CAAA,CAAA;AAC1B,IAAA,IAAA,CAAK,YAAY,IAAK,CAAA,MAAA,CAAO,EAAI,EAAA,IAAA,CAAK,kBAAkB,MAAM,CAAA,CAAA;AAAA,GAChE;AAAA,EAEA,UAAU,MAAmC,EAAA;AAC3C,IAAK,IAAA,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAClC,IAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,GACd;AAAA,EAEA,cAAyB,GAAA;AACvB,IAAO,OAAA,IAAA,CAAK,QAAQ,WAAe,IAAA,EAAA,CAAA;AAAA,GACrC;AAAA,EAEA,KAAc,GAAA;AACZ,IAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AACZ,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAAS,GAAgB,EAAA;AACvB,IAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,MAAA,IAAA,CAAK,gBAAgB,UAAW,EAAA,CAAA;AAChC,MAAI,GAAA,CAAA,WAAA,CAAY,KAAK,eAAe,CAAA,CAAA;AACpC,MAAA,OAAO,IAAK,CAAA,eAAA,CAAA;AAAA,KACd;AACA,IAAA,IAAI,KAAK,WAAa,EAAA;AACpB,MAAA,OAAO,IAAK,CAAA,WAAA,CAAA;AAAA,KACd;AACA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,SAEE,GAAA;AACA,IAAO,OAAA;AAAA,MACL,SAASI,UAAS,CAAA,IAAA,CAAK,MAAQ,EAAA,IAAA,CAAK,QAAQ,YAAY,CAAA;AAAA,KAC1D,CAAA;AAAA,GACF;AAAA,EAEA,MAAe,GAAA;AACb,IAAI,IAAA,CAAC,KAAK,IAAM,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAA,CAAK,eAAgB,EAAA,CAAA;AACrB,IAAM,MAAA,GAAA,GAAM,KAAK,WAAY,EAAA,CAAA;AAC7B,IAAI,IAAA,IAAA,CAAK,gBAAgB,GAAK,EAAA;AAC5B,MAAA,OAAA;AAAA,KACF;AACA,IAAA,IAAA,CAAK,WAAc,GAAA,GAAA,CAAA;AAEnB,IAAM,MAAA,cAAA,GAAiB,IAAK,CAAA,OAAA,CAAQ,cAAkB,IAAA,CAAA,CAAA;AACtD,IAAA,MAAM,SAAS,IAAK,CAAA,IAAA,CAAK,SAAU,EAAA,CAAE,IAAI,cAAc,CAAA,CAAA;AACvD,IAAA,IAAI,KAAK,cAAgB,EAAA;AACvB,MAAA,IAAA,CAAK,eAAe,UAAW,EAAA,CAAA;AAC/B,MAAK,IAAA,CAAA,cAAA,CAAe,IAAI,MAAM,CAAA,CAAA;AAC9B,MAAA,IAAA,CAAK,cAAiB,GAAA,KAAA,CAAA,CAAA;AAAA,KACxB;AACA,IAAA,MAAM,OAAU,GAAA,IAAI,YAAa,CAAA,GAAA,EAAK,MAAQ,EAAA;AAAA,MAC5C,OAAS,EAAA,CAAA;AAAA,MACT,IAAA,EAAM,KAAK,OAAQ,CAAA,IAAA;AAAA,MACnB,OAAA,EAAS,KAAK,OAAQ,CAAA,OAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAQ,OAAA,CAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AACvB,IAAA,IAAA,CAAK,cAAiB,GAAA,OAAA,CAAA;AAItB,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN,MAAA;AAAA,MACA,MAAM;AACJ,QAAI,IAAA,CAAC,KAAK,IAAM,EAAA;AACd,UAAA,OAAA;AAAA,SACF;AAEA,QAAI,IAAA,OAAA,CAAQ,IAAS,KAAA,IAAA,CAAK,WAAa,EAAA;AACrC,UAAK,IAAA,CAAA,IAAA,CAAK,YAAY,OAAO,CAAA,CAAA;AAC7B,UAAA,OAAA;AAAA,SACF,MAAA,IAAW,KAAK,eAAiB,EAAA;AAC/B,UAAK,IAAA,CAAA,IAAA,CAAK,WAAY,CAAA,IAAA,CAAK,eAAe,CAAA,CAAA;AAAA,SAC5C;AACA,QAAA,IAAA,CAAK,cAAiB,GAAA,KAAA,CAAA,CAAA;AACtB,QAAA,IAAA,CAAK,eAAkB,GAAA,OAAA,CAAA;AACvB,QAAQ,OAAA,CAAA,UAAA;AAAA,UACN,KAAK,OAAQ,CAAA,OAAA,KAAY,KAAY,CAAA,GAAA,IAAA,CAAK,QAAQ,OAAU,GAAA,CAAA;AAAA,SAC9D,CAAA;AACA,QAAI,IAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,KAAW,IAAM,EAAA;AAChC,UAAA,OAAA,CAAQ,WAAY,EAAA,CAAA;AAAA,SACtB;AACA,QAAI,IAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,KAAW,KAAO,EAAA;AACjC,UAAA,OAAA,CAAQ,YAAa,EAAA,CAAA;AAAA,SACvB;AACA,QAAI,IAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,KAAW,KAAW,CAAA,EAAA;AACrC,UAAQ,OAAA,CAAA,SAAA,CAAU,IAAK,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,SACvC;AAAA,OACF;AAAA,MACA,IAAA;AAAA,KACF,CAAA;AACA,IAAA,MAAM,EAAE,OAAA,EAAS,OAAQ,EAAA,GAAI,IAAK,CAAA,OAAA,CAAA;AAClC,IACG,IAAA,OAAA,IAAW,IAAK,CAAA,IAAA,CAAK,OAAQ,EAAA,GAAI,OACjC,IAAA,OAAA,IAAW,IAAK,CAAA,IAAA,CAAK,OAAQ,EAAA,GAAI,OAClC,EAAA;AACA,MAAK,IAAA,CAAA,IAAA,CAAK,YAAY,OAAO,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF;AAAA,EAEA,WAAW,OAAuB,EAAA;AAChC,IAAA,IAAA,CAAK,QAAQ,OAAU,GAAA,OAAA,CAAA;AACvB,IAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,MAAK,IAAA,CAAA,eAAA,CAAgB,WAAW,OAAO,CAAA,CAAA;AAAA,KACzC;AAAA,GACF;AAAA,EAEA,WAAoB,GAAA;AAClB,IAAA,IAAA,CAAK,QAAQ,MAAS,GAAA,IAAA,CAAA;AACtB,IAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,MAAA,IAAA,CAAK,gBAAgB,WAAY,EAAA,CAAA;AAAA,KACnC;AAAA,GACF;AAAA,EAEA,YAAqB,GAAA;AACnB,IAAA,IAAA,CAAK,QAAQ,MAAS,GAAA,KAAA,CAAA;AACtB,IAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,MAAA,IAAA,CAAK,gBAAgB,YAAa,EAAA,CAAA;AAAA,KACpC;AAAA,GACF;AAAA,EAEA,UAAU,MAAsB,EAAA;AAC9B,IAAA,IAAA,CAAK,QAAQ,MAAS,GAAA,MAAA,CAAA;AACtB,IAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,MAAK,IAAA,CAAA,eAAA,CAAgB,UAAU,MAAM,CAAA,CAAA;AAAA,KACvC;AAAA,GACF;AAAA;AAAA,EAGA,gBAAgB,GAAiB,EAAA;AAC/B,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,GAAA,GAAM,IAAK,CAAA,IAAA,CAAA;AAAA,KACb;AAEA,IAAM,MAAA,cAAA,GAAiB,IAAK,CAAA,OAAA,CAAQ,cAAkB,IAAA,CAAA,CAAA;AACtD,IAAA,MAAM,MAAS,GAAA,GAAA,CAAI,SAAU,EAAA,CAAE,IAAI,cAAc,CAAA,CAAA;AACjD,IAAM,MAAA,IAAA,GAAO,IAAI,OAAQ,EAAA,CAAA;AACzB,IAAI,IAAA,IAAA,CAAK,OAAQ,CAAA,cAAA,KAAmB,CAAG,EAAA;AACrC,MAAA,MAAM,SAAS,cAAiB,GAAA,CAAA,CAAA;AAChC,MAAA,IAAA,CAAK,CAAI,GAAA,IAAA,CAAK,IAAK,CAAA,IAAA,CAAK,IAAI,MAAM,CAAA,CAAA;AAClC,MAAA,IAAA,CAAK,CAAI,GAAA,IAAA,CAAK,IAAK,CAAA,IAAA,CAAK,IAAI,MAAM,CAAA,CAAA;AAAA,KACpC;AACA,IAAA,MAAM,UAAa,GAAA,UAAA,CAAW,IAAK,CAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AACpD,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,IAAO,IAAI,OAAQ,CAAA,GAAA,CAAA;AAC5C,IAAM,MAAA,aAAA,GAAgB,UAAc,IAAA,GAAA,GAAM,KAAQ,GAAA,KAAA,CAAA;AAClD,IAAA,IAAI,GAAK,EAAA;AACP,MAAA,MAAM,EAAK,GAAA,GAAA,CAAI,OAAQ,CAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAC5C,MAAA,MAAM,EAAK,GAAA,GAAA,CAAI,OAAQ,CAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAG5C,MAAA,MAAM,MAAc,GAAA;AAAA,QAClB,OAAO,IAAK,CAAA,CAAA;AAAA,QACZ,QAAQ,IAAK,CAAA,CAAA;AAAA,OACf,CAAA;AACA,MAAO,MAAA,CAAA,aAAa,IAAI,GAAI,CAAA,IAAA,CAAA;AAC5B,MAAO,MAAA,CAAA,IAAA,GAAA,CACL,UAAc,IAAA,GAAA,IAAO,GAAQ,KAAA,GAAA,CAAI,QAC7B,GAAA,CAAC,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAC,CACvB,GAAA,CAAC,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAA,EAAG,EAAG,CAAA,CAAC,CAC3B,EAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAEV,MAAK,IAAA,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,KACpC;AAAA,GACF;AAAA,EAEA,WAAsB,GAAA;AACpB,IAAM,MAAA,SAAA,GAAY,IAAK,CAAA,OAAA,CAAQ,SAAa,IAAA,KAAA,CAAA;AAC5C,IAAA,MAAM,OAAO,IAAK,CAAA,cAAA,CAAe,KAAK,SAAW,EAAA,IAAA,CAAK,MAAM,SAAS,CAAA,CAAA;AACrE,IAAA,OAAO,KAAK,IAAO,GAAA,IAAA,CAAA;AAAA,GACrB;AACF;;;;;;;;;;;;;;;;;;;;;;ACvPO,MAAM,qBACH,WAEV,CAAA;AAAA,EAHO,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAAA;AAML,IAAAJ,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAEA,SAAS,OAAmC,EAAA;AAC1C,IAAM,MAAA,GAAA,GAAM,WAAW,OAAQ,CAAA,GAAA,CAAA;AAC/B,IAAA,IAAI,GAAK,EAAA;AACP,MAAU,OAAA,GAAAC,gBAAA,CAAA,EAAE,aAAa,IAAS,EAAA,EAAA,OAAA,CAAA,CAAA;AAClC,MAAA,MAAM,yBAAyB,OAAQ,CAAA,eAAA,CAAA;AACvC,MAAK,IAAA,CAAA,KAAA,GAAQ,IAAI,UAAA,CAAW,GAAK,EAAAA,gBAAA,CAAAA,gBAAA,CAAAA,gBAAA,CAAA;AAAA,QAC/B,MAAM,IAAK,CAAA,IAAA;AAAA,QACX,SAAS,OAAQ,CAAA,OAAA;AAAA,QACjB,cAAc,OAAQ,CAAA,YAAA;AAAA,OAAA,EAInB,OACA,CAAA,EAAA,OAAA,CAAQ,MACR,CAAA,EAAA,OAAA,CAAQ,aACZ,CAAA,CAAA,CAAA;AACD,MAAA,IAAI,sBAAwB,EAAA;AAC1B,QAAM,MAAA,eAAA,GAAkB,KAAK,KAAM,CAAA,eAAA,CAAA;AACnC,QAAK,IAAA,CAAA,KAAA,CAAM,eAAkB,GAAA,SAAU,GAAU,EAAA;AAC/C,UAAgB,eAAA,CAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAA;AAC9B,UAAK,IAAA,CAAA,SAAA,GAAY,sBAAuB,CAAA,IAAA,CAAK,SAAS,CAAA,CAAA;AAAA,SACxD,CAAA;AAAA,OACF;AACA,MAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,KACd;AAAA,GACF;AACF,CAAA;AA9BED,eAAA,CAJW,cAIJ,OAAQ,EAAAM,YAAA,CAAA;;ACXD,SAAA,QAAA,CACd,EACA,EAAA,IAAA,GAAO,EACoB,EAAA;AAC3B,EAAI,IAAA,SAAA,CAAA;AAEJ,EAAA,SAAS,WAAsB,IAAa,EAAA;AAC1C,IAAA,OAAA,CAAQ,KAAM,EAAA,CAAA;AAEd,IAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,MAAY,SAAA,GAAA,IAAA,CAAA;AACZ,MAAG,EAAA,CAAA,KAAA,CAAM,MAAM,IAAI,CAAA,CAAA;AAAA,OAClB,IAAI,CAAA,CAAA;AAAA,GACT;AAEA,EAAA,OAAA,CAAQ,QAAQ,WAAY;AAC1B,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,YAAA,CAAa,SAAS,CAAA,CAAA;AACtB,MAAY,SAAA,GAAA,IAAA,CAAA;AAAA,KACd;AAAA,GACF,CAAA;AAEA,EAAO,OAAA,OAAA,CAAA;AACT;;ACjBO,SAAS,WAAsC,IAAoB,EAAA;AACxE,EAAO,OAAA,MAAM,wBAAwB,IAAK,CAAA;AAAA,IACxC,eAAe,IAAa,EAAA;AAC1B,MAAA,KAAA,CAAM,GAAG,IAAI,CAAA,CAAA;AACb,MAAI,IAAA,IAAA,CAAK,QAAQ,YAAc,EAAA;AAE7B,QAAK,IAAA,CAAA,OAAA,GAAU,QAAS,CAAA,CAAA,GAAI,CAAa,KAAA;AAEvC,UAAA,SAAA,CAAU,SAAU,CAAA,OAAA,CAAQ,IAAK,CAAA,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA;AAAA,SAC7C,EAAG,IAAK,CAAA,OAAA,CAAQ,YAAY,CAAA,CAAA;AAAA,OAC9B;AAAA,KACF;AAAA,IAEA,UAAA,CACE,QACA,IACkB,EAAA;AAElB,MAAM,MAAA,GAAA,GAAM,IAAK,CAAA,UAAA,CAAW,MAAM,CAAA,CAAA;AAElC,MAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACzC,MAAM,MAAA,CAAC,OAAS,EAAA,SAAS,CAAI,GAAA,QAAA;AAAA,QAC3B,GAAA;AAAA;AAAA,QAEA,KAAK,OAAQ,CAAA,OAAA;AAAA,OACf,CAAA;AACA,MAAQ,OAAA,CAAA,IAAA,CAAK,CAAC,QAAa,KAAA;AACzB,QAAA,IAAA,CAAK,GAAM,GAAA,QAAA,CAAA;AACX,QAAA,IAAA,CAAK,MAAM,IAAI,CAAA,CAAA;AAAA,OAChB,CAAA,CAAA;AACD,MAAC,KAAa,KAAQ,GAAA,SAAA,CAAA;AAEtB,MAAA,IAAI,KAAK,OAAQ,CAAA,WAAA,IAAe,IAAK,CAAA,OAAA,CAAQ,gBAAgB,EAAI,EAAA;AAC/D,QAAA,IAAA,CAAK,cACH,IAAK,CAAA,OAAA,CAAQ,gBAAgB,IAAO,GAAA,EAAA,GAAK,KAAK,OAAQ,CAAA,WAAA,CAAA;AAAA,OAC1D;AAEA,MAAA,IAAA,CAAK,GAAM,GAAA,EAAA,CAAA;AACX,MAAK,IAAA,CAAA,YAAA,CAAa,QAAQ,cAAc,CAAA,CAAA;AAExC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,IAEA,aAAgB,GAAA;AAEd,MAAA,MAAM,QAAQ,IAAK,CAAA,MAAA,CAAA;AAEnB,MAAA,MAAM,WAAW,IAAK,CAAA,SAAA,CAAA;AACtB,MAAA,KAAA,MAAW,KAAK,KAAO,EAAA;AACrB,QAAA,IAAI,KAAM,CAAA,CAAC,CAAE,CAAA,MAAA,CAAO,MAAM,QAAU,EAAA;AAClC,UAAM,MAAA,IAAA,GAAO,KAAM,CAAA,CAAC,CAAE,CAAA,EAAA,CAAA;AAEtB,UAAA,IAAA,CAAK,SAAS,IAAK,CAAA,OAAA,CAAA;AACnB,UAAA,IAAA,CAAK,UAAU,IAAK,CAAA,OAAA,CAAA;AACpB,UAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,YAAA,IAAI,KAAK,KAAO,EAAA;AACd,cAAA,IAAA,CAAK,KAAM,EAAA,CAAA;AAAA,aACb;AACA,YAAA,IAAA,CAAK,MAAM,IAAK,CAAA,aAAA,CAAA;AAChB,YAAA,OAAA,CAAQ,OAAO,IAAI,CAAA,CAAA;AACnB,YAAA,OAAO,MAAM,CAAC,CAAA,CAAA;AAAA,WAChB;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,GACF,CAAA;AACF;;AC/DA,MAAM,sBAAsBC,WAAG,CAAA;AAAA,EAC7B,WAAA,CAAY,aAAqB,OAAoC,EAAA;AACnE,IAAA,KAAA,CAAM,aAAa,OAAO,CAAA,CAAA;AAC1B,IAAO,MAAA,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AAAA,GACrC;AACF,CAAA;AAEa,MAAA,SAAA,GAAY,WAAW,aAAa,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACT1C,MAAM,oBACH,WAEV,CAAA;AAAA,EACE,SAAS,OAAoD,EAAA;AAC3D,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAO,MAAO,CAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AAClD,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,MAAwB,cAAhB,EAhBd,GAAA,EAAA,GAgB8B,EAAR,EAAA,GAAA,GAAAL,WAAA,CAAQ,IAAR,CAAR,KAAA,CAAA,CAAA,CAAA;AACR,MAAA,IAAI,GAAK,EAAA;AACP,QAAA,MAAM,gBAAqC,GAAAD,gBAAA,CAAA;AAAA,UACzC,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,aAAa,GAAI,CAAA,WAAA;AAAA,UACjB,SAAS,GAAI,CAAA,OAAA;AAAA,UACb,SAAS,GAAI,CAAA,OAAA;AAAA,SAAA,EAEV,GAAI,CAAA,aAAA,CAAA,CAAA;AAET,QAAA,IAAI,IAAI,UAAY,EAAA;AAClB,UAAA,gBAAA,CAAiB,aAAa,GAAI,CAAA,UAAA,CAAA;AAAA,SACpC;AACA,QAAI,IAAA,KAAA,CAAA;AACJ,QAAA,IAAI,IAAI,OAAS,EAAA;AACf,UAAA,KAAA,GAAQ,IAAIM,SAAA,CAAG,GAAK,EAAAJ,eAAA,CAAAF,gBAAA,CAAA,EAAA,EACf,gBADe,CAAA,EAAA;AAAA,YAElB,SAAS,GAAI,CAAA,OAAA;AAAA,YACb,cAAc,GAAI,CAAA,YAAA;AAAA,WACnB,CAAA,CAAA,CAAA;AAAA,SACI,MAAA;AACL,UAAQ,KAAA,GAAA,IAAIO,WAAU,CAAA,GAAA,EAAK,gBAAgB,CAAA,CAAA;AAAA,SAC7C;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAAA,EAEA,WAAoB,GAAA;AAClB,IAAA,IAAI,KAAK,KAAO,EAAA;AAEd,MAAM,MAAA,UAAA,GAAa,KAAK,KAAM,CAAA,IAAA,CAAA;AAC9B,MAAA,MAAM,SAAY,GAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,OAAQ,EAAA,CAAA;AAErC,MAAA,MAAM,SAAY,GAAA,UAAA,CAAW,QAAS,CAAA,GAAG,IAAI,GAAM,GAAA,GAAA,CAAA;AAEnD,MAAM,MAAA,MAAA,GACJ,WAAW,OAAQ,CAAA,sBAAA,EAAwB,EAAE,CAC7C,GAAA,SAAA,GACA,aAAa,SAAS,CAAA,CAAA,CAAA;AAExB,MAAK,IAAA,CAAA,KAAA,CAAM,OAAO,MAAM,CAAA,CAAA;AACxB,MAAA,IAAA,CAAK,MAAM,MAAO,EAAA,CAAA;AAAA,KACpB;AAAA,GACF;AACF;;;;;;;;;;;;;;;;;;;;;ACxDO,MAAM,mBAAmB,WAAwC,CAAA;AAAA,EACtE,SAAS,OAAiE,EAAA;AACxE,IAAA,MAAM,GAAM,GAAA,oDAAA,CAAA;AACZ,IAAA,OAAO,MAAM,QAAS,CAAAL,eAAA,CAAAF,gBAAA,CAAA;AAAA,MACpB,IAAM,EAAA,eAAA;AAAA,MACN,WACE,EAAA,yFAAA;AAAA,KAAA,EACC,OAJiB,CAAA,EAAA;AAAA,MAKpB,GAAA;AAAA,KACD,CAAA,CAAA,CAAA;AAAA,GACH;AACF;;ACRA,MAAM,YAAA,SAAqBO,YAAU,GAAI,CAAA;AAAA,EACvC,WAAA,CAAY,aAAqB,OAAuB,EAAA;AACtD,IAAA,KAAA,CAAM,aAAa,OAAO,CAAA,CAAA;AAAA,GAC5B;AACF,CAAA;AAEa,MAAA,QAAA,GAAW,WAAW,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLxC,MAAM,mBACH,WAEV,CAAA;AAAA,EACE,SAAS,OAAuD,EAAA;AAC9D,IAAO,MAAA,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AACnC,IAAA,MAAwB,cAAhB,EAfZ,GAAA,EAAA,GAe4B,EAAR,EAAA,GAAA,GAAA,SAAA,CAAQ,IAAR,CAAR,KAAA,CAAA,CAAA,CAAA;AACR,IAAA,IAAI,GAAK,EAAA;AACP,MAAA,MAAM,YAA2B,GAAAP,gBAAA,CAAA;AAAA,QAC/B,MAAM,IAAK,CAAA,IAAA;AAAA,QACX,aAAa,GAAI,CAAA,WAAA;AAAA,QACjB,SAAS,GAAI,CAAA,OAAA;AAAA,QACb,SAAS,GAAI,CAAA,OAAA;AAAA,QACb,QAAQ,OAAQ,CAAA,MAAA;AAAA,QAChB,QAAQ,OAAQ,CAAA,MAAA;AAAA,QAChB,WAAa,EAAA,IAAA;AAAA,OAAA,EACV,OAAQ,CAAA,aAAA,CAAA,CAAA;AAEb,MAAI,IAAA,KAAA,CAAA;AACJ,MAAA,IAAI,IAAI,OAAS,EAAA;AACf,QAAQ,KAAA,GAAA,IAAIQ,SAAI,GAAK,EAAA,aAAA,CAAAR,gBAAA,CAAA,EAAA,EAAK,eAAL,EAAmB,OAAA,EAAS,GAAI,CAAA,OAAA,EAAS,CAAA,CAAA,CAAA;AAAA,OACzD,MAAA;AACL,QAAA,KAAA,GAAQ,IAAIO,WAAA,CAAU,GAAI,CAAA,GAAA,EAAK,YAAY,CAAA,CAAA;AAAA,OAC7C;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AACF;;ACjCO,SAAS,wBACd,MACwB,EAAA;AACxB,EAAA,MAAM,CAAI,GAAA,MAAA,CAAA;AAEV,EAAO,OAAA;AAAA,IACL,CAAC,CAAE,CAAA,CAAC,CAAG,EAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,IACX,CAAC,CAAE,CAAA,CAAC,CAAG,EAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,GACb,CAAA;AACF;;;;;;;;;;;;;;;;;;;;;;AC+BO,MAAM,kBAAA,GAAN,MAAM,kBAA2D,CAAA;AAAA,EAAjE,WAAA,GAAA;AAmBL,IAA2B,aAAA,CAAA,IAAA,EAAA,SAAA,EAAA,EAAE,QAAQ,KAAM,EAAA,CAAA,CAAA;AAE3C,IAAA,aAAA,CAAA,IAAA,EAAA,eAAA,EAAgB,kBAAkB,CAAA,aAAA,CAAA,CAAA;AAClC,IAAA,aAAA,CAAA,IAAA,EAAA,iBAAA,EAAkB,kBAAkB,CAAA,eAAA,CAAA,CAAA;AACpC,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,EAAU,IAAI,YAAa,EAAA,CAAA,CAAA;AAC3B,IAAA,aAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAEA,IAAQ,aAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,eAA6B,EAAC,CAAA,CAAA;AACtC,IAAA,aAAA,CAAA,IAAA,EAAQ,kBAA4C,EAAA;AAAA,MAClD,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,KACF,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAQ,iBAA2C,EAAA;AAAA,MACjD,WAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAAA;AAAA,EAEA,OAAO,OAAgC,EAAA;AACrC,IAAA,IAAA,CAAK,UAAU,cAAK,CAAA,EAAA,EAAA,OAAA,CAAA,CAAA;AACpB,IAAI,IAAA,IAAA,CAAK,QAAQ,MAAQ,EAAA;AACvB,MAAM,MAAA;AAAA,QACJ,IAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAW,EAAA,EAAA;AAAA,QACX,iBAAA;AAAA,UACE,IAAK,CAAA,OAAA,CAAA;AAET,MAAK,IAAA,CAAA,GAAA,GACH,KAAK,OAAQ,CAAA,GAAA,IACb,IAAI,GAAI,CAAA,IAAA,CAAK,QAAQ,MAAQ,EAAA,cAAA,CAAA;AAAA,QAC3B,kBAAoB,EAAA,KAAA;AAAA,QACpB,WAAa,EAAA,KAAA;AAAA,QACb,SAAW,EAAA,EAAA,GAAK,uBAAwB,CAAA,EAAE,CAAI,GAAA,KAAA,CAAA;AAAA,QAC9C,OAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA,EAAQ,UAAU,CAAC,MAAA,CAAO,CAAC,CAAG,EAAA,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,QACvC,IAAA;AAAA,OAAA,EACG,iBACJ,CAAA,CAAA,CAAA;AAEH,MAAA,IAAA,CAAK,wBAAwB,OAAO,CAAA,CAAA;AACpC,MAAA,IAAA,CAAK,+BAAgC,EAAA,CAAA;AAErC,MAAA,MAAM,OAAU,GAAA,IAAA,CAAK,GAAI,CAAA,UAAA,CAAW,SAAS,CAAA,CAAA;AAC7C,MAAC,IAAK,CAAA,GAAA,CAAY,cAAiB,GAAA,CAAC,GAAqB,KAAA;AACvD,QAAA,IAAA,CAAK,eAAe,GAAG,CAAA,CAAA;AAAA,OACzB,CAAA;AACA,MAAQ,OAAA,CAAA,KAAA,CAAM,MAAS,GAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAC/B,MAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAA,EAAU,IAAI,CAAA,CAAA;AAChC,MAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AAAA,KACxB;AAAA,GACF;AAAA,EAEA,OAAgB,GAAA;AACd,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAA,IAAA,CAAK,IAAI,MAAO,EAAA,CAAA;AAAA,KAClB;AACA,IAAA,IAAA,CAAK,mCAAoC,EAAA,CAAA;AAAA,GAC3C;AAAA,EAEA,YAAwC,GAAA;AACtC,IAAA,OAAO,IAAK,CAAA,GAAA,IAAO,IAAK,CAAA,GAAA,CAAI,YAAa,EAAA,CAAA;AAAA,GAC3C;AAAA,EAEA,mBAAmC,GAAA;AACjC,IAAA,MAAM,gBAAmB,GAAA,IAAA,CAAK,GAAQ,IAAA,IAAA,CAAK,GAAY,CAAA,iBAAA,CAAA;AACvD,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAO,OAAA,gBAAA,CAAA;AAAA,KACT;AACA,IAAM,MAAA,IAAI,MAAM,oCAAoC,CAAA,CAAA;AAAA,GACtD;AAAA,EAEA,UAAU,MAAsB,EAAA;AAC9B,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAA,IAAA,CAAK,GAAI,CAAA,YAAA,EAAe,CAAA,KAAA,CAAM,MAAS,GAAA,MAAA,CAAA;AAAA,KACzC;AAAA,GACF;AAAA,EAIA,OAAA,CAAQ,aAAwC,IAAqB,EAAA;AACnE,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,CAAC,GAAA;AAAK,MAAA,OAAA;AACV,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,WAAW,CAAG,EAAA;AAC9B,MAAA,MAAM,MAAS,GAAA,WAAA,CAAA;AACf,MAAM,MAAA,CAAC,GAAK,EAAA,GAAG,CAAI,GAAA,MAAA,CAAA;AACnB,MAAA,IAAI,KAAK,GAAK,EAAA;AACZ,QAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,UAAK,IAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,CAAC,GAAK,EAAA,GAAG,GAAG,IAAM,EAAA,EAAE,OAAS,EAAA,KAAA,EAAO,CAAA,CAAA;AAAA,SAChD,MAAA;AACL,UAAA,IAAA,CAAK,SAAU,CAAA,CAAC,GAAK,EAAA,GAAG,CAAC,CAAA,CAAA;AAAA,SAC3B;AAAA,OACF;AAAA,KACK,MAAA;AACL,MAAM,MAAA,EAAE,MAAAE,KAAM,EAAA,MAAA,EAAQ,WAAW,MAAQ,EAAA,OAAA,EAAS,SAAY,GAAA,WAAA,CAAA;AAC9D,MAAI,IAAA,MAAA,IAAUA,UAAS,KAAW,CAAA,EAAA;AAChC,QAAK,IAAA,CAAA,OAAA,CAAQ,QAAQA,KAAI,CAAA,CAAA;AAAA,OACpB,MAAA;AACL,QAAA,IAAIA,UAAS,KAAW,CAAA,EAAA;AACtB,UAAA,IAAA,CAAK,QAAQA,KAAI,CAAA,CAAA;AAAA,SACnB;AACA,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,IAAA,CAAK,UAAU,MAAM,CAAA,CAAA;AAAA,SACvB;AAAA,OACF;AACA,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,IAAA,CAAK,UAAU,MAAM,CAAA,CAAA;AAAA,OACvB;AACA,MAAA,IAAI,cAAc,KAAW,CAAA,EAAA;AAC3B,QAAA,IAAI,SAAW,EAAA;AACb,UAAM,MAAA,CAAA,GAAI,wBAAwB,SAAS,CAAA,CAAA;AAC3C,UAAA,GAAA,CAAI,aAAa,CAAC,CAAA,CAAA;AAClB,UAAA,IAAA,CAAK,uBAAwB,EAAA,CAAA;AAAA,SACxB,MAAA;AAEL,UAAA,GAAA,CAAI,aAAa,IAAI,CAAA,CAAA;AACrB,UAAA,IAAA,CAAK,uBAAwB,EAAA,CAAA;AAAA,SAC/B;AAAA,OACF;AACA,MAAA,IAAI,YAAY,KAAW,CAAA,EAAA;AACzB,QAAA,GAAA,CAAI,WAAW,OAAO,CAAA,CAAA;AAAA,OACxB;AACA,MAAA,IAAI,YAAY,KAAW,CAAA,EAAA;AACzB,QAAA,IAAA,CAAK,wBAAwB,OAAO,CAAA,CAAA;AAAA,OACtC;AAAA,KACF;AAAA,GACF;AAAA,EAEA,UAAU,MAA2B,EAAA;AACnC,IAAM,MAAA,CAAC,GAAK,EAAA,GAAG,CAAI,GAAA,MAAA,CAAA;AACnB,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAA,IAAA,CAAK,GAAI,CAAA,KAAA,CAAM,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA,CAAA;AAAA,KAC3B;AAAA,GACF;AAAA,EAEA,SAAqC,GAAA;AACnC,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,GAAK,EAAA;AACP,MAAM,MAAA,MAAA,GAAS,IAAI,SAAU,EAAA,CAAA;AAC7B,MAAM,MAAA,MAAA,GAAS,OAAO,SAAU,EAAA,CAAA;AAChC,MAAA,OAAO,CAAC,MAAA,CAAO,GAAK,EAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA,KAChC;AAAA,GACF;AAAA,EAEA,QAAQ,IAAoB,EAAA;AAC1B,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAK,IAAA,CAAA,GAAA,CAAI,QAAQ,IAAI,CAAA,CAAA;AAAA,KACvB;AAAA,GACF;AAAA,EAEA,OAA8B,GAAA;AA5NhC,IAAA,IAAA,EAAA,CAAA;AA6NI,IAAA,OAAA,CAAQ,UAAK,GAAO,IAAA,IAAA,CAAK,GAAI,CAAA,OAAA,OAArB,IAAmC,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,SAA2C,GAAA;AACzC,IAAA,IAAI,CAAC,IAAK,CAAA,GAAA;AAAK,MAAO,OAAA,KAAA,CAAA,CAAA;AACtB,IAAM,MAAA,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,SAAU,EAAA,CAAA;AAC7B,IAAM,MAAA,EAAA,GAAK,EAAE,YAAa,EAAA,CAAA;AAC1B,IAAM,MAAA,EAAA,GAAK,EAAE,YAAa,EAAA,CAAA;AAC1B,IAAO,OAAA,CAAC,GAAG,GAAK,EAAA,EAAA,CAAG,KAAK,EAAG,CAAA,GAAA,EAAK,GAAG,GAAG,CAAA,CAAA;AAAA,GACxC;AAAA;AAAA,EAGA,SAAU,CAAA,MAAA,EAA2B,OAAsB,GAAA,EAAU,EAAA;AACnE,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAA,MAAM,EAAE,OAAA,EAAS,MAAQ,EAAA,OAAA,EAAY,GAAA,OAAA,CAAA;AACrC,MAAA,MAAM,MAAwB,EAAC,CAAA;AAC/B,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,GAAA,CAAI,OAAU,GAAA,OAAA,CAAA;AAAA,OAChB;AACA,MAAA,IAAI,OAAS,EAAA;AACX,QAAI,GAAA,CAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAO,CAAA,CAAA;AAAA,OACjC;AACA,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,GAAA,CAAI,OAAU,GAAA,MAAA,CAAA;AAAA,OAChB;AAEA,MAAA,IAAA,CAAK,GAAI,CAAA,SAAA,CAAU,uBAAwB,CAAA,MAAM,GAAG,GAAG,CAAA,CAAA;AAAA,KACzD;AAAA,GACF;AAAA,EAEA,gBAAgB,IAAiD,EAAA;AAC/D,IAAO,OAAA,kBAAA,CAAkB,cAAc,IAAI,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,aAAA,CAAc,SAAqB,OAAwC,EAAA;AACzE,IAAO,OAAA,aAAA,CAAc,OAAS,EAAA,OAAA,EAAS,IAAI,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,oBAAoB,OAAwC,EAAA;AAC1D,IAAO,OAAA,mBAAA,CAAoB,SAAS,IAAI,CAAA,CAAA;AAAA,GAC1C;AAAA,EAEA,UAAA,CAAW,SAAkB,QAAuC,EAAA;AAClE,IAAA,OAAA,CAAQ,OAAQ,CAAA,QAAA,GAAW,QAAS,CAAA,OAAA,CAAQ,KAAK,EAAE,CAAA,CAAA;AACnD,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAK,IAAA,CAAA,GAAA,CAAI,WAAW,OAAO,CAAA,CAAA;AAC3B,MAAO,OAAA,OAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EAEA,cAAc,OAAwB,EAAA;AACpC,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAK,IAAA,CAAA,GAAA,CAAI,cAAc,OAAO,CAAA,CAAA;AAAA,KAChC;AAAA,GACF;AAAA,EAEA,YAAY,KAAoB,EAAA;AAC9B,IAAS,KAAA,IAAA,KAAA,CAAM,MAAU,IAAA,KAAA,CAAM,MAAO,EAAA,CAAA;AAAA,GACxC;AAAA,EAEA,UAAU,KAAoB,EAAA;AAC5B,IAAA,IAAI,KAAK,GAAK,EAAA;AACZ,MAAM,KAAA,CAAA,KAAA,CAAM,KAAK,GAAG,CAAA,CAAA;AAAA,KACtB;AAAA,GACF;AAAA,EAEA,UAAU,KAAoB,EAAA;AAC5B,IAAA,KAAA,CAAM,MAAO,EAAA,CAAA;AAAA,GACf;AAAA,EAEA,eAAA,CAAgB,OAA0B,KAAqB,EAAA;AAC7D,IAAA,IAAI,gBAAgB,KAAO,EAAA;AACzB,MAAA,KAAA,CAAM,WAAW,KAAK,CAAA,CAAA;AAAA,KACxB;AAAA,GACF;AAAA,EAEA,aAAA,CACE,KACA,EAAA,KAAA,EACA,MACM,EAAA;AAAA,GAER;AAAA,EAEA,WAAW,GAA8B,EAAA;AACvC,IAAM,MAAA,SAAA,GAAY,qBAAqB,GAAG,CAAA,CAAA;AAC1C,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,UAAA,EAAY,SAAS,CAAA,CAAA;AACvC,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,OAAA,EAAS,SAAS,CAAA,CAAA;AAAA,GACtC;AAAA,EAEA,MAAA,CAAO,KAAoB,MAAiC,EAAA;AAC1D,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,GAAK,EAAA;AACP,MAAA,GAAA,CAAI,OAAO,GAAG,CAAA,CAAA;AACd,MAAA,IAAI,MAAQ,EAAA;AACV,QAAM,MAAA,EAAE,aAAe,EAAA,aAAA,EAAkB,GAAA,MAAA,CAAA;AACzC,QAAM,MAAA,aAAA,GAAgB,CAAC,CAAoB,KAAA;AACzC,UAAA,MAAM,KAAQ,GAAA,CAAA,CAAA;AACd,UAAA,MAAM,SAA2B,CAAC,KAAA,CAAM,OAAO,GAAK,EAAA,KAAA,CAAM,OAAO,GAAG,CAAA,CAAA;AACpE,UAAc,aAAA,CAAA,EAAE,QAAQ,CAAA,CAAA;AAAA,SAC1B,CAAA;AACA,QAAA,IAAI,kBAAkB,KAAW,CAAA,EAAA;AAC/B,UAAI,GAAA,CAAA,EAAA,CAAG,eAAiB,EAAA,aAAA,EAAe,IAAI,CAAA,CAAA;AAAA,SAC7C;AACA,QAAA,IAAI,aAAe,EAAA;AACjB,UAAI,GAAA,CAAA,EAAA,CAAG,eAAiB,EAAA,aAAA,EAAe,IAAI,CAAA,CAAA;AAAA,SAC7C;AACA,QAAA,MAAMC,QAAO,MAAM;AACjB,UAAA,IAAI,kBAAkB,KAAW,CAAA,EAAA;AAC/B,YAAI,GAAA,CAAA,GAAA,CAAI,iBAAiB,aAAa,CAAA,CAAA;AAAA,WACxC;AACA,UAAA,IAAI,aAAe,EAAA;AACjB,YAAI,GAAA,CAAA,GAAA,CAAI,iBAAiB,aAAa,CAAA,CAAA;AAAA,WACxC;AAAA,SACF,CAAA;AACA,QAAO,OAAA,EAAE,MAAAA,KAAK,EAAA,CAAA;AAAA,OAChB;AAAA,KACF;AACA,IAAA,MAAM,OAAO,MAAM,KAAA,CAAA,CAAA;AACnB,IAAA,OAAO,EAAE,IAAK,EAAA,CAAA;AAAA,GAChB;AAAA,EAEQ,eAAe,EAAiB,EAAA;AACtC,IAAW,KAAA,MAAA,CAAA,IAAK,KAAK,WAAa,EAAA;AAChC,MAAE,CAAA,EAAA,CAAA;AAAA,KACJ;AACA,IAAA,IAAA,CAAK,YAAY,MAAS,GAAA,CAAA,CAAA;AAC1B,IAAK,IAAA,CAAA,WAAA,CAAY,KAAK,EAAE,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEQ,+BAAkC,GAAA;AACxC,IAAA,IAAA,CAAK,mCAAoC,EAAA,CAAA;AACzC,IAAM,MAAA,SAAA,GAAY,KAAK,YAAa,EAAA,CAAA;AACpC,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAI,IAAA,SAAA,IAAa,GAAO,IAAA,MAAA,CAAO,cAAgB,EAAA;AAC7C,MAAK,IAAA,CAAA,eAAA,GAAkB,IAAI,cAAA,CAAe,MAAM;AAC9C,QAAA,IAAA,CAAK,uBAAwB,EAAA,CAAA;AAAA,OAC9B,CAAA,CAAA;AACD,MAAK,IAAA,CAAA,eAAA,CAAgB,QAAQ,SAAS,CAAA,CAAA;AAAA,KACxC;AAAA,GACF;AAAA,EAEQ,mCAAsC,GAAA;AAC5C,IAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,MAAA,IAAA,CAAK,gBAAgB,UAAW,EAAA,CAAA;AAChC,MAAA,IAAA,CAAK,eAAkB,GAAA,KAAA,CAAA,CAAA;AAAA,KACzB;AAAA,GACF;AAAA,EAEQ,gBAAmB,GAAA;AACzB,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,GAAK,EAAA;AACP,MAAI,GAAA,CAAA,EAAA,CAAG,OAAS,EAAA,CAAC,GAAQ,KAAA;AACvB,QAAA,IAAA,CAAK,WAAW,GAAwB,CAAA,CAAA;AAAA,OACzC,CAAA,CAAA;AACD,MAAW,KAAA,MAAA,CAAA,IAAK,KAAK,gBAAkB,EAAA;AACrC,QAAI,GAAA,CAAA,EAAA,CAAG,GAAG,MAAM,IAAA,CAAK,QAAQ,IAAK,CAAA,CAAA,EAAG,IAAI,CAAA,EAAG,GAAG,CAAA,CAAA;AAAA,OACjD;AAEA,MAAI,GAAA,CAAA,EAAA,CAAG,aAAa,MAAM;AACxB,QAAA,YAAA,CAAa,MAAM,KAAM,EAAA,CAAA;AAAA,OAC1B,CAAA,CAAA;AACD,MAAI,GAAA,CAAA,EAAA,CAAG,aAAa,MAAM;AACxB,QAAA,YAAA,CAAa,MAAM,KAAM,EAAA,CAAA;AAAA,OAC1B,CAAA,CAAA;AAED,MAAW,KAAA,MAAA,CAAA,IAAK,KAAK,eAAiB,EAAA;AACpC,QAAI,GAAA,CAAA,EAAA;AAAA,UACF,CAAA;AAAA,UACA,CAAC,GACC,KAAA,IAAA,CAAK,OAAQ,CAAA,IAAA;AAAA,YACX,CAAA;AAAA,YACA,qBAAqB,GAAwB,CAAA;AAAA,WAC/C;AAAA,UACF,GAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEQ,wBAAwB,IAAe,EAAA;AAjZjD,IAAA,IAAA,EAAA,CAAA;AAkZI,IAAA,MAAM,MAAM,IAAK,CAAA,GAAA,CAAA;AACjB,IAAA,IAAI,GAAK,EAAA;AACP,MAAO,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,IAAI,UAAW,EAAA,CAAA;AAC9B,MAAA,MAAM,aAAgB,GAAA,YAAA;AAAA,QACpB,MAAA,CAAO,KAAK,CAAM,IAAA,CAAA;AAAA,QAClB,MAAA,CAAO,IAAI,IAAK,CAAA;AAAA,OAClB,CAAA;AACA,MAAA,MAAM,SAAY,GAAA,CAAA,EAAA,GAAA,GAAA,CAAI,OAAQ,CAAA,SAAA,KAAZ,IAAyB,GAAA,EAAA,GAAA,aAAA,CAAA;AAC3C,MAAA,IAAI,cAAc,KAAW,CAAA,EAAA;AAC3B,QAAA,GAAA,CAAI,WAAW,CAAC,CAAA,CAAA;AAChB,QAAA,MAAM,UAAa,GAAA,GAAA,CAAI,aAAc,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AACpD,QAAM,MAAA,OAAA,GAAU,IAAO,GAAA,UAAA,GAAa,UAAa,GAAA,IAAA,CAAA;AAEjD,QAAA,GAAA,CAAI,QAAQ,OAAU,GAAA,OAAA,CAAA;AACtB,QAAA,GAAA,CAAI,WAAW,OAAO,CAAA,CAAA;AAEtB,QAAI,IAAA,GAAA,CAAI,OAAQ,EAAA,GAAI,OAAS,EAAA;AAC3B,UAAA,GAAA,CAAI,QAAQ,OAAO,CAAA,CAAA;AAAA,SACrB;AAAA,OACF;AAAA,KACF;AAAA,GACF;AACF,CAAA,CAAA;AA5XE,aAAA,CADW,oBACJ,eAEH,EAAA;AAAA,EACF,OAAS,EAAA,cAAA;AAAA,EACT,KAAO,EAAA,YAAA;AAAA,EACP,IAAM,EAAA,WAAA;AAAA,EACN,GAAK,EAAA,UAAA;AAAA;AAAA,EAEL,GAAK,EAAA,UAAA;AACP,CAAA,CAAA,CAAA;AAEA,aAAA,CAZW,oBAYJ,iBAAkB,EAAA;AAAA,EACvB,MAAM,OAAQ,CAAA,IAAA;AAAA,EACd,WAAa,EAAA,kBAAA;AACf,CAAA,CAAA,CAAA;AAEA,aAAA,CAjBW,oBAiBJ,KAAM,EAAA,GAAA,CAAA,CAAA;AAjBR,IAAM,iBAAN,GAAA;;;;"}
1
+ {"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/controls/Attribution.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/utils/boundsToArray.ts","../src/utils/detectType.ts","../src/utils/geometries.ts","../src/layer-adapters/BaseAdapter.ts","../src/utils/convertMapClickEvent.ts","../src/utils/createMouseEvent.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeoJsonEvents.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeojsonPaint.ts","../src/layer-adapters/GeoJsonAdapter/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/imageQueue.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts"],"sourcesContent":["import { Control } from 'leaflet';\n\nimport type { AttributionControlOptions } from '@nextgis/webmap';\nimport type { ControlOptions } from 'leaflet';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import { Control, DomEvent } from 'leaflet';\n\nimport type {\n CreateControlOptions,\n MapAdapter,\n MapControl,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { DomEvent } from 'leaflet';\n\nimport { createControl } from './createControl';\n\nimport type { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport type { Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n if (options.addClass) {\n link.classList.add(options.addClass);\n }\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBounds } from 'leaflet';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from './boundsToArray';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\nimport type { CircleMarkerOptions, LatLngBounds, PathOptions } from 'leaflet';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n} as PathOptions & CircleMarkerOptions;\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import type { AdapterOptions, MainLayerAdapter } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(\n public map: Map,\n public options: O,\n ) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import type { MapClickEvent } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import { DomEvent, type Layer } from 'leaflet';\n\nimport { createMouseEvent } from '../../../utils/createMouseEvent';\n\nimport type { GeoJsonAdapter } from '../GeoJsonAdapter';\nimport type { OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletEvent, LeafletMouseEvent } from 'leaflet';\n\nexport class GeoJsonEvents {\n private layer: GeoJsonAdapter;\n\n private _onclick?: (e: LeafletMouseEvent) => void;\n private _ondblclick?: (e: LeafletMouseEvent) => void;\n private _mouseout?: (e: LeafletMouseEvent) => void;\n private _mouseover?: (e: LeafletMouseEvent) => void;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n handleMouseEvents(layer: Layer) {\n const { onClick, onDoubleClick, onLayerClick, onMouseOut, onMouseOver } =\n this.layer.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n\n if (onClick_) {\n this._onclick = (e: LeafletMouseEvent) => {\n const selected = !!this.layer._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n };\n layer.on('click', this._onclick, this);\n }\n if (onDoubleClick) {\n this._ondblclick = (e: LeafletMouseEvent) => {\n DomEvent.stopPropagation(e);\n const selected = !!this.layer._getSelected(layer);\n onDoubleClick({\n selected,\n ...this._createMouseEvent(e),\n });\n };\n layer.on('dblclick', this._ondblclick, this);\n }\n if (onMouseOut) {\n this._mouseout = (e: LeafletMouseEvent) => {\n onMouseOut(this._createMouseEvent(e));\n };\n layer.on('mouseout', this._mouseout, this);\n }\n if (onMouseOver) {\n this._mouseover = (e: LeafletMouseEvent) => {\n onMouseOver(this._createMouseEvent(e));\n };\n layer.on('mouseover', this._mouseover, this);\n }\n }\n\n stopMouseEvents(layer: Layer) {\n if (this._mouseover) {\n layer.off('mouseover', this._mouseover, this);\n }\n if (this._mouseout) {\n layer.off('mouseout', this._mouseout, this);\n }\n if (this._onclick) {\n layer.off('click', this._onclick, this);\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this.layer,\n source: source as LeafletMouseEvent,\n });\n }\n}\n","import { isPaint, isPaintCallback } from '@nextgis/paint';\nimport { defined } from '@nextgis/utils';\nimport { CircleMarker, DivIcon, Marker } from 'leaflet';\n\nimport { PAINT } from '../../../utils/geometries';\n\nimport type { GeoJsonAdapter, LayerDef } from '../GeoJsonAdapter';\nimport type {\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type {\n CircleMarkerOptions,\n GeoJSONOptions,\n LatLngExpression,\n Path,\n PathOptions,\n} from 'leaflet';\n\nexport class GeoJsonPaint {\n private layer: GeoJsonAdapter;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n setPaintEachLayer(paint: VectorAdapterLayerPaint) {\n this.layer._layers.forEach((layerDef) => {\n this.setPaint(layerDef, paint);\n });\n }\n\n setPaint(layerDef: LayerDef, paint: VectorAdapterLayerPaint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = layerDef;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.layer.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n setTimeout(() => {\n marker.setIcon(divIcon);\n }, 10);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this.preparePaint(style));\n }\n }\n }\n }\n\n preparePaint(\n paint: VectorAdapterLayerPaint,\n ): PathOptions & CircleMarkerOptions {\n if (paint.type !== 'get-paint') {\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.layer.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint = {} as PathOptions & CircleMarkerOptions;\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n const opacity = this.layer.options.opacity;\n let paintProp = (paint as PathPaint)[from];\n if (defined(opacity) && from.toLowerCase().indexOf('opacity') !== -1) {\n paintProp = Number(paintProp) * opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n _createDivIcon(icon: IconPaint) {\n const { html, rotate, className, ...toLIconOpt } = icon;\n\n const element = document.createElement('div');\n if (className) {\n element.className = className;\n }\n if (rotate) {\n element.style.transform = `rotateZ(${rotate}deg)`;\n }\n if (html) {\n element.innerHTML = html;\n }\n\n const divIcon = new DivIcon({\n className: '',\n ...toLIconOpt,\n html: element,\n });\n return divIcon;\n }\n\n createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (_: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (_: any, latlng: LatLngExpression) => {\n return new Marker(latlng);\n };\n }\n }\n return (_: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this.preparePaint({ ...p, ...icon }));\n };\n }\n\n createPaintOptions(paint: VectorAdapterLayerPaint): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const newPaint = this.preparePaint(paint);\n if (paint) {\n geoJsonOptions.style = () => {\n return newPaint;\n };\n }\n if (this.layer.type === 'point') {\n (geoJsonOptions as any).pointToLayer = this.createPaintToLayer(\n paint as IconPaint,\n );\n } else if (this.layer.type === 'line') {\n newPaint.stroke = true;\n }\n return geoJsonOptions;\n }\n}\n","import { debounce, defined } from '@nextgis/utils';\nimport { DomEvent, FeatureGroup, GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from '../../utils/boundsToArray';\nimport { detectType } from '../../utils/detectType';\nimport {\n PAINT,\n createFeaturePositionOptions,\n filterGeometries,\n typeAlias,\n} from '../../utils/geometries';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { GeoJsonEvents } from './utils/GeoJsonEvents';\nimport { GeoJsonPaint } from './utils/GeojsonPaint';\n\nimport type { IconPaint, Paint, VectorAdapterLayerPaint } from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n DataLayerFilter,\n GeoJsonAdapterOptions,\n LayerDefinition,\n OnLayerSelectType,\n PopupOnCloseFunction,\n PopupOptions,\n VectorAdapterLayerType,\n VectorLayerAdapter,\n} from '@nextgis/webmap';\nimport type { Feature, GeoJsonObject, Point } from 'geojson';\nimport type {\n GeoJSONOptions,\n PopupOptions as LPopupOptions,\n LatLng,\n LatLngExpression,\n Layer,\n LeafletMouseEvent,\n Map,\n} from 'leaflet';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n type?: VectorAdapterLayerType;\n _layers: LayerDef[] = [];\n _events: GeoJsonEvents;\n private paint?: Paint;\n private selectedPaint?: Paint;\n\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n private _paint: GeoJsonPaint;\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n this._events = new GeoJsonEvents(this);\n this._paint = new GeoJsonPaint(this);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n this.unselect();\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n for (const x of def) {\n this._selectLayer(x, 'api');\n }\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._paint.setPaintEachLayer(\n this.selectedPaint as VectorAdapterLayerPaint,\n );\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._paint.setPaintEachLayer(this.paint as VectorAdapterLayerPaint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, this.paint as VectorAdapterLayerPaint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, this.selectedPaint as VectorAdapterLayerPaint);\n }\n }\n\n _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n const { label, labelField, labelOnHover } = this.options;\n if (layer) {\n layer.unbindTooltip();\n let message: string | undefined;\n if (feature.properties && labelField) {\n message = feature.properties[labelField];\n } else if (label) {\n message = label({\n target: this,\n ...layerDef,\n ...createFeaturePositionOptions(feature),\n });\n }\n if (message) {\n const permanent = !labelOnHover;\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._paint.createPaintToLayer(\n iconOpt as IconPaint,\n );\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._paint.preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._paint.preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._paint.createPaintOptions(paint as VectorAdapterLayerPaint);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n // @ts-ignore\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._events.handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n const { multiselect } = this.options;\n if (!multiselect) {\n // To unselect layer on another layer click\n (this.map as any)._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._paint.setPaint(def, selectedPaint as VectorAdapterLayerPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._paint.setPaint(\n def,\n this.options.paint as VectorAdapterLayerPaint,\n );\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _addMapClickListener() {\n const map = this.map;\n if (map) {\n const { unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n }\n }\n\n private _removeMapClickListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { label, labelField, labelOnHover } = this.options;\n this._addMapClickListener();\n if ((labelField || label) && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this._removeMapClickListener();\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n }\n}\n","export function callAjax(\n src: string,\n headers: Record<string, any>,\n): [Promise<string>, () => void] {\n let abortFunc = () => {\n // void\n };\n const promise = new Promise<string>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n resolve(imageUrl);\n };\n xhr.onerror = reject;\n xhr.send();\n abortFunc = () => {\n xhr.abort();\n resolve('');\n };\n });\n return [promise, abortFunc];\n}\n","import Queue from '@nextgis/queue';\n\nconst imageQueue = new Queue({ concurrency: 6, delay: 200 });\n\nexport default imageQueue;\n","import { ImageOverlay as LImageOverlay } from 'leaflet';\n\nimport { callAjax } from '../../utils/callAjax';\n\nimport imageQueue from './imageQueue';\n\nimport type { ImageOverlayOptions, LatLngBoundsExpression } from 'leaflet';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _aborter?: () => void;\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._aborter) {\n this._aborter();\n this._aborter = undefined;\n }\n }\n\n _initImage(): void {\n // @ts-expect-error extend private method\n super._initImage();\n\n const headers = (this.options as IOptions).headers;\n // @ts-expect-error _image is a private property\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n // The queue is cleared in LeafletMapAdapter at each movestart and zoomstart event\n imageQueue.add(() => {\n const [promise, abortFunc] = callAjax(src, headers);\n promise.then((imgUrl) => {\n img.src = imgUrl;\n });\n this._aborter = abortFunc;\n return promise;\n });\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { debounce } from '@nextgis/utils';\nimport { CRS, Layer, Util } from 'leaflet';\n\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { Map } from 'leaflet';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n private _loadedOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n if (this._loadedOverlay) {\n this._loadedOverlay.cancelLoad();\n this._loadedOverlay.off('load');\n this._loadedOverlay = undefined;\n }\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n this._loadedOverlay = overlay;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._loadedOverlay = undefined;\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { BaseAdapter } from '../BaseAdapter';\n\nimport { ImageLayer } from './ImageLayer';\nimport imageQueue from './imageQueue';\n\nimport type { MainLayerAdapter } from '@nextgis/webmap';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n static queue = imageQueue;\n\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\n\nimport { debounce } from '../../../utils/src';\n\nimport { callAjax } from './callAjax';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<TBase extends Constructor>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n const [promise, abortFunc] = callAjax(\n url,\n // @ts-ignore\n this.options.headers,\n );\n promise.then((response) => {\n tile.src = response;\n done(null, tile);\n });\n (tile as any).abort = abortFunc;\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { TileLayer as TL } from './TileLayer';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n\n updateLayer(): void {\n if (this.layer) {\n // @ts-ignore read private property\n const currentUrl = this.layer._url;\n const timestamp = new Date().getTime();\n\n const separator = currentUrl.includes('?') ? '&' : '?';\n\n const newUrl =\n currentUrl.replace(/(\\?|&)timestamp=\\d*/g, '') +\n separator +\n `timestamp=${timestamp}`;\n\n this.layer.setUrl(newUrl);\n this.layer.redraw();\n }\n }\n}\n","import { TileAdapter } from './TileAdapter/TileAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayer } from 'leaflet';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import { TileLayer } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { WmsLayer as WMS } from './WmsLayer';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n transparent: true,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBoundsExpression } from 'leaflet';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\n\nimport { Control, Map, latLng, latLngBounds } from 'leaflet';\n\nimport { AttributionControl } from './controls/Attribution';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n ButtonControlOptions,\n CreateControlOptions,\n FitOptions,\n LayerAdapter,\n Locate,\n LocateOptions,\n LocationEvents,\n MainMapEvents,\n MapAdapter,\n MapControl,\n MapOptions,\n ViewOptions,\n} from '@nextgis/webmap';\nimport type {\n ControlPosition,\n FitBoundsOptions,\n GridLayer,\n Layer,\n LeafletEvent,\n LeafletMouseEvent,\n LocationEvent,\n} from 'leaflet';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions<Map> = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'zoomend',\n 'zoomstart',\n 'moveend',\n 'movestart',\n ];\n private _positionEvents: (keyof MainMapEvents)[] = [\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n create(options: MapOptions<Map>): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n\n this.map =\n this.options.map ||\n new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n\n this._updateMinZoomForBounds(minZoom);\n this._watchSizeChangeToUpdateMinZoom();\n // create default pane\n const defPane = this.map.createPane('order-0');\n (this.map as any)._addUnselectCb = (def: UnselectDef) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n this._updateMinZoomForBounds();\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._updateMinZoomForBounds();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._updateMinZoomForBounds(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) ?? undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: LeafletEvent) => {\n const event = e as LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom() {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n this._updateMinZoomForBounds();\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n for (const e of this._universalEvents) {\n map.on(e, () => this.emitter.emit(e, this), map);\n }\n\n map.on('movestart', () => {\n ImageAdapter.queue.abort();\n });\n map.on('zoomstart', () => {\n ImageAdapter.queue.abort();\n });\n\n for (const e of this._positionEvents) {\n map.on(\n e,\n (evt) =>\n this.emitter.emit(\n e,\n convertMapClickEvent(evt as LeafletMouseEvent),\n ),\n map,\n );\n }\n }\n }\n\n private _updateMinZoomForBounds(zoom?: number) {\n const map = this.map;\n if (map) {\n zoom = zoom ?? map.getMinZoom();\n const defaultBounds = latLngBounds(\n latLng(-90, -18000),\n latLng(90, 18000),\n );\n const maxBounds = map.options.maxBounds ?? defaultBounds;\n if (maxBounds !== undefined) {\n map.setMinZoom(0);\n const boundsZoom = map.getBoundsZoom(maxBounds, true);\n const minZoom = zoom < boundsZoom ? boundsZoom : zoom;\n\n map.options.minZoom = minZoom;\n map.setMinZoom(minZoom);\n\n if (map.getZoom() < minZoom) {\n map.setZoom(minZoom);\n }\n }\n }\n }\n}\n"],"names":["__publicField","__spreadValues","__objRest","__spreadProps","debounce","LImageOverlay","TL","TileLayer","WMS","zoom","stop"],"mappings":"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"}