@nextgis/leaflet-map-adapter 4.0.0-alpha.2 → 4.0.0-alpha.4

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/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 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 { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\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 { OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletEvent, LeafletMouseEvent } from 'leaflet';\n\nimport type { GeoJsonAdapter } from '../GeoJsonAdapter';\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 {\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\nimport type { GeoJsonAdapter, LayerDef } from '../GeoJsonAdapter';\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 createFeaturePositionOptions,\n filterGeometries,\n PAINT,\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 LatLng,\n LatLngExpression,\n Layer,\n LeafletMouseEvent,\n Map,\n PopupOptions as LPopupOptions,\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 if (p) {\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\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 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-expect-error Property 'interactive' does not exist on type 'LayerOptions'\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","import { getLayerRequestOptions } from '@nextgis/webmap';\n\nimport type { LayerRequestOptions } from '@nextgis/webmap';\n\nexport function callAjax({\n src,\n headers,\n withCredentials,\n request,\n}: {\n src: string;\n /** @deprecated use request.headers instead. */\n headers?: Record<string, any>;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n request?: LayerRequestOptions;\n}): [Promise<string>, () => void] {\n const layerRequest = getLayerRequestOptions({\n headers,\n request,\n withCredentials,\n });\n const requestHeaders = layerRequest?.headers || {};\n const controller = new AbortController();\n const promise = fetch(src, {\n cache: layerRequest?.cache,\n credentials: layerRequest?.credentials,\n headers: requestHeaders,\n signal: controller.signal,\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return response.blob();\n })\n .then((blob) => {\n const urlCreator = window.URL || window.webkitURL;\n return urlCreator.createObjectURL(blob);\n })\n .catch((er: Error) => {\n if (er.name === 'AbortError') {\n return '';\n }\n throw er;\n });\n const abortFunc = () => {\n controller.abort();\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 { LayerRequestOptions } from '@nextgis/webmap';\nimport type { ImageOverlayOptions, LatLngBoundsExpression } from 'leaflet';\n\ntype IOptions = ImageOverlayOptions & {\n /** @deprecated use request.headers instead. */\n headers?: any;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n};\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, request, withCredentials } = this.options as IOptions;\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({\n src,\n headers,\n request,\n withCredentials,\n });\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, isObject } from '@nextgis/utils';\nimport { Layer, Util } from 'leaflet';\n\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { LayerRequestOptions } from '@nextgis/webmap';\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 /** @deprecated use request.headers instead. */\n headers?: any;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n viewPortBuffer?: number;\n setViewDelay?: number;\n params?: Record<string, unknown>;\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 request: 'GetMap',\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n maxZoom: undefined,\n pane: 'tilePane',\n headers: null,\n withCredentials: false,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n wmsParams: Record<string, string>;\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 const val = options[opt];\n if (opt in this.options) {\n opts[opt] = val;\n }\n }\n\n if (options.params) {\n for (const param in options.params) {\n const val = options.params[param];\n if (\n !isObject(val) &&\n !Array.isArray(val) &&\n typeof val !== 'function'\n ) {\n params[param] = val;\n }\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 request: this.options.request,\n withCredentials: this.options.withCredentials,\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-expect-error override private\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 crs = this.options.crs || map.options.crs;\n\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.bbox = [nw.x, se.y, se.x, nw.y];\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 { getLayerRequestOptions } from '@nextgis/webmap';\nimport { type Map, Util } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { ImageLayer } from './ImageLayer';\nimport imageQueue from './imageQueue';\n\nimport type {\n MainLayerAdapter,\n UpdateLayerAdapterOptions,\n} from '@nextgis/webmap';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n static queue = imageQueue;\n\n layer?: ImageLayer;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n const updateWmsParamsFromOpt = options.updateWmsParams;\n const request = getLayerRequestOptions(options);\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n setViewDelay: options.setViewDelay,\n // TODO: safe remove, use only options.nativeOptions\n ...{\n transparent: true,\n ...options,\n opacity: options.opacity ?? undefined,\n },\n ...options.params,\n ...options.nativeOptions,\n request,\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 updateLayer(options?: UpdateLayerAdapterOptions): void {\n if (this.layer) {\n const params = options?.params || {};\n\n Util.extend(this.layer.wmsParams, params);\n this.layer.update();\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\n return this[key as keyof PropertyDescriptor];\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 this._update = debounce((...a: any[]) => {\n // @ts-expect-error Property '_update' does not exist on type 'GridLayer'.\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 const src = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n const [promise, abortFunc] = callAjax({\n src,\n withCredentials: this.options.withCredentials,\n headers: this.options.headers,\n request: this.options.request,\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 const tiles = this._tiles;\n\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 { LayerRequestOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n /** @deprecated use request.headers instead. */\n headers?: Record<string, any>;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\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 { updateUrlParams } from '@nextgis/utils';\nimport { getLayerRequestOptions } from '@nextgis/webmap';\nimport { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { TileLayer as TL } from './TileLayer';\n\nimport type {\n MainLayerAdapter,\n TileAdapterOptions,\n UpdateLayerAdapterOptions,\n} 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 const request = getLayerRequestOptions(opt);\n if (request) {\n layer = new TL(url, {\n ...tileLayerOptions,\n request,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n\n updateLayer(options?: UpdateLayerAdapterOptions) {\n if (this.layer) {\n // @ts-expect-error the _url is private method\n const currentUrl = this.layer._url;\n if (options?.params) {\n this.layer.setUrl(updateUrlParams(currentUrl, options.params));\n }\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 { LayerRequestOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & {\n /** @deprecated use request.headers instead. */\n headers?: any;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n};\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 { getLayerRequestOptions } from '@nextgis/webmap';\nimport { 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 const request = getLayerRequestOptions(opt);\n if (request) {\n layer = new WMS(url, {\n ...layerOptions,\n request,\n });\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 {\n createButtonControl,\n createControl,\n createToggleControl,\n LeafletControlContainer,\n} from '@nextgis/leaflet-control-container';\nimport { EventEmitter } from 'events';\nimport { Control, latLng, latLngBounds, Map } from 'leaflet';\n\nimport { AttributionControl } from './controls/Attribution';\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 AddControlOptions,\n ButtonControlOptions,\n ControlTargetPosition,\n CreateControlOptions,\n FitOptions,\n LayerAdapter,\n Locate,\n LocateOptions,\n LocationEvents,\n MainMapEvents,\n MapAdapter,\n MapControl,\n MapOptions,\n ToggleControl,\n ToggleControlOptions,\n ViewOptions,\n} from '@nextgis/webmap';\nimport type {\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 _controlContainer?: LeafletControlContainer;\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._controlContainer = new LeafletControlContainer(this.map);\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 if (this._controlContainer) {\n this._controlContainer.detach();\n this._controlContainer = undefined;\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n if (this._controlContainer) {\n return this._controlContainer.getContainer();\n }\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-expect-error `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 createToggleControl(options: ToggleControlOptions): Control & ToggleControl {\n return createToggleControl(options, this);\n }\n\n addControl(\n control: Control,\n position: ControlTargetPosition,\n options?: AddControlOptions,\n ): Control | undefined {\n if (this._controlContainer) {\n return this._controlContainer.addControl(control, position, options);\n }\n }\n\n removeControl(control: Control): void {\n if (this._controlContainer) {\n this._controlContainer.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n if (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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"}
1
+ {"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/controls/Attribution.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 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 { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\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 { OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletEvent, LeafletMouseEvent } from 'leaflet';\n\nimport type { GeoJsonAdapter } from '../GeoJsonAdapter';\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 {\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\nimport type { GeoJsonAdapter, LayerDef } from '../GeoJsonAdapter';\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 createFeaturePositionOptions,\n filterGeometries,\n PAINT,\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 LatLng,\n LatLngExpression,\n Layer,\n LeafletMouseEvent,\n Map,\n PopupOptions as LPopupOptions,\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 if (p) {\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\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 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-expect-error Property 'interactive' does not exist on type 'LayerOptions'\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","import { getLayerRequestOptions } from '@nextgis/webmap';\n\nimport type { LayerRequestOptions } from '@nextgis/webmap';\n\nexport function callAjax({\n src,\n headers,\n withCredentials,\n request,\n}: {\n src: string;\n /** @deprecated use request.headers instead. */\n headers?: Record<string, any>;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n request?: LayerRequestOptions;\n}): [Promise<string>, () => void] {\n const layerRequest = getLayerRequestOptions({\n headers,\n request,\n withCredentials,\n });\n const requestHeaders = layerRequest?.headers || {};\n const controller = new AbortController();\n const promise = fetch(src, {\n cache: layerRequest?.cache,\n credentials: layerRequest?.credentials,\n headers: requestHeaders,\n signal: controller.signal,\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return response.blob();\n })\n .then((blob) => {\n const urlCreator = window.URL || window.webkitURL;\n return urlCreator.createObjectURL(blob);\n })\n .catch((er: Error) => {\n if (er.name === 'AbortError') {\n return '';\n }\n throw er;\n });\n const abortFunc = () => {\n controller.abort();\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 { LayerRequestOptions } from '@nextgis/webmap';\nimport type { ImageOverlayOptions, LatLngBoundsExpression } from 'leaflet';\n\ntype IOptions = ImageOverlayOptions & {\n /** @deprecated use request.headers instead. */\n headers?: any;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n};\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, request, withCredentials } = this.options as IOptions;\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({\n src,\n headers,\n request,\n withCredentials,\n });\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, isObject } from '@nextgis/utils';\nimport { Layer, Util } from 'leaflet';\n\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { LayerRequestOptions } from '@nextgis/webmap';\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 /** @deprecated use request.headers instead. */\n headers?: any;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n viewPortBuffer?: number;\n setViewDelay?: number;\n params?: Record<string, unknown>;\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 request: 'GetMap',\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n maxZoom: undefined,\n pane: 'tilePane',\n headers: null,\n withCredentials: false,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n wmsParams: Record<string, string>;\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 const val = options[opt];\n if (opt in this.options) {\n opts[opt] = val;\n }\n }\n\n if (options.params) {\n for (const param in options.params) {\n const val = options.params[param];\n if (\n !isObject(val) &&\n !Array.isArray(val) &&\n typeof val !== 'function'\n ) {\n params[param] = val;\n }\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 request: this.options.request,\n withCredentials: this.options.withCredentials,\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-expect-error override private\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 crs = this.options.crs || map.options.crs;\n\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.bbox = [nw.x, se.y, se.x, nw.y];\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 { getLayerRequestOptions } from '@nextgis/webmap';\nimport { type Map, Util } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { ImageLayer } from './ImageLayer';\nimport imageQueue from './imageQueue';\n\nimport type {\n MainLayerAdapter,\n UpdateLayerAdapterOptions,\n} from '@nextgis/webmap';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n static queue = imageQueue;\n\n layer?: ImageLayer;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n const updateWmsParamsFromOpt = options.updateWmsParams;\n const request = getLayerRequestOptions(options);\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n setViewDelay: options.setViewDelay,\n // TODO: safe remove, use only options.nativeOptions\n ...{\n transparent: true,\n ...options,\n opacity: options.opacity ?? undefined,\n },\n ...options.params,\n ...options.nativeOptions,\n request,\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 updateLayer(options?: UpdateLayerAdapterOptions): void {\n if (this.layer) {\n const params = options?.params || {};\n\n Util.extend(this.layer.wmsParams, params);\n this.layer.update();\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\n return this[key as keyof PropertyDescriptor];\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 this._update = debounce((...a: any[]) => {\n // @ts-expect-error Property '_update' does not exist on type 'GridLayer'.\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 const src = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n const [promise, abortFunc] = callAjax({\n src,\n withCredentials: this.options.withCredentials,\n headers: this.options.headers,\n request: this.options.request,\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 const tiles = this._tiles;\n\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 { LayerRequestOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n /** @deprecated use request.headers instead. */\n headers?: Record<string, any>;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\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 { updateUrlParams } from '@nextgis/utils';\nimport { getLayerRequestOptions } from '@nextgis/webmap';\nimport { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { TileLayer as TL } from './TileLayer';\n\nimport type {\n MainLayerAdapter,\n TileAdapterOptions,\n UpdateLayerAdapterOptions,\n} 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 const request = getLayerRequestOptions(opt);\n if (request) {\n layer = new TL(url, {\n ...tileLayerOptions,\n request,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n\n updateLayer(options?: UpdateLayerAdapterOptions) {\n if (this.layer) {\n // @ts-expect-error the _url is private method\n const currentUrl = this.layer._url;\n if (options?.params) {\n this.layer.setUrl(updateUrlParams(currentUrl, options.params));\n }\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 { LayerRequestOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & {\n /** @deprecated use request.headers instead. */\n headers?: any;\n request?: LayerRequestOptions;\n /** @deprecated use request.credentials instead. */\n withCredentials?: boolean;\n};\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 { getLayerRequestOptions } from '@nextgis/webmap';\nimport { 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 version: options.version,\n transparent: options.transparent ?? true,\n ...options.params,\n ...options.nativeOptions,\n };\n let layer;\n const request = getLayerRequestOptions(opt);\n if (request) {\n layer = new WMS(url, {\n ...layerOptions,\n request,\n });\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 {\n createButtonControl,\n createControl,\n createToggleControl,\n LeafletControlContainer,\n} from '@nextgis/leaflet-control-container';\nimport { EventEmitter } from 'events';\nimport { Control, latLng, latLngBounds, Map } from 'leaflet';\n\nimport { AttributionControl } from './controls/Attribution';\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 AddControlOptions,\n ButtonControlOptions,\n ControlTargetPosition,\n CreateControlOptions,\n FitOptions,\n LayerAdapter,\n Locate,\n LocateOptions,\n LocationEvents,\n MainMapEvents,\n MapAdapter,\n MapControl,\n MapOptions,\n ToggleControl,\n ToggleControlOptions,\n ViewOptions,\n} from '@nextgis/webmap';\nimport type {\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 _controlContainer?: LeafletControlContainer;\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._controlContainer = new LeafletControlContainer(this.map);\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 if (this._controlContainer) {\n this._controlContainer.detach();\n this._controlContainer = undefined;\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n if (this._controlContainer) {\n return this._controlContainer.getContainer();\n }\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-expect-error `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 createToggleControl(options: ToggleControlOptions): Control & ToggleControl {\n return createToggleControl(options, this);\n }\n\n addControl(\n control: Control,\n position: ControlTargetPosition,\n options?: AddControlOptions,\n ): Control | undefined {\n if (this._controlContainer) {\n return this._controlContainer.addControl(control, position, options);\n }\n }\n\n removeControl(control: Control): void {\n if (this._controlContainer) {\n this._controlContainer.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n if (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":";;;;;;;;;AAKO,MAAM,kBAAA,SAA2B,QAAQ,WAAA,CAAY;AAAA;AAAA,EAE1D,YAAY,OAAA,EAAqD;AAC/D,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,MAAM,iBAAA,GAAoB,WAAW,OAAA,CAAQ,iBAAA;AAC7C,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,IAAI,eAAyB,EAAC;AAC9B,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AACpC,QAAA,YAAA,GAAe,iBAAA;AAAA,MACjB,WAAW,iBAAA,EAAmB;AAC5B,QAAA,YAAA,GAAe,CAAC,iBAAiB,CAAA;AAAA,MACnC;AACA,MAAA,YAAA,CAAa,QAAQ,CAAC,CAAA,KAAM,IAAA,CAAK,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,IACpD;AAAA,EACF;AACF;;ACjBO,SAAS,cAAc,MAAA,EAAyC;AACrE,EAAA,MAAM,EAAA,GAAK,OAAO,YAAA,EAAa;AAC/B,EAAA,MAAM,EAAA,GAAK,OAAO,YAAA,EAAa;AAC/B,EAAA,OAAO,CAAC,GAAG,GAAA,EAAK,EAAA,CAAG,KAAK,EAAA,CAAG,GAAA,EAAK,GAAG,GAAG,CAAA;AACxC;;ACCA,SAAS,yBACP,GAAA,EACsB;AACtB,EAAA,MAAM,SAAkC,EAAC;AACzC,EAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,GAAA,CAAI,QAAQ,GAAA,EAAA,EAAO;AACzC,IAAA,MAAA,CAAO,GAAA,CAAI,GAAG,CAAC,CAAA,GAAI,KAAK,MAAA,CAAO,GAAA,CAAI,GAAG,CAAC,CAAA,IAAK,CAAA,CAAA;AAAA,EAC9C;AACA,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,IAAA,MAAM,QAAA,GAAW,OAAA,GAAU,MAAA,CAAO,OAAO,CAAA,GAAI,CAAA;AAC7C,IAAA,IAAI,MAAA,CAAO,CAAC,CAAA,GAAI,QAAA,EAAU;AACxB,MAAA,OAAA,GAAU,CAAA;AAAA,IACZ;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAEO,SAAS,WAAW,OAAA,EAA8C;AACvE,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,OAAA,CAAQ,SAAS,mBAAA,EAAqB;AACxC,IAAA,MAAM,aAAA,GAAiB,QAA8B,QAAA,CAAS,GAAA;AAAA,MAC5D,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS;AAAA,KACpB;AACA,IAAA,QAAA,GAAW,yBAAyB,aAAa,CAAA;AAAA,EACnD,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,oBAAA,EAAsB;AAChD,IAAA,MAAM,aAAA,GAAiB,QAA+B,UAAA,CAAW,GAAA;AAAA,MAC/D,CAAC,MAAM,CAAA,CAAE;AAAA,KACX;AACA,IAAA,QAAA,GAAW,yBAAyB,aAAa,CAAA;AAAA,EACnD,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,SAAA,EAAW;AACrC,IAAA,QAAA,GAAY,QAAoB,QAAA,CAAS,IAAA;AAAA,EAC3C,CAAA,MAAO;AACL,IAAA,QAAA,GAAW,OAAA,CAAQ,IAAA;AAAA,EACrB;AACA,EAAA,OAAO,QAAA;AACT;;AC5BO,MAAM,SAAA,GAET;AAAA,EACF,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,OAAA;AAAA,EACZ,OAAA,EAAS,SAAA;AAAA,EACT,eAAA,EAAiB,MAAA;AAAA,EACjB,YAAA,EAAc,SAAA;AAAA,EACd,kBAAA,EAAoB;AACtB,CAAA;AAEO,MAAM,KAAA,GAAQ;AAAA,EACnB,MAAA,EAAQ,KAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAEO,MAAM,cAET,EAAC;AAEL,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,EAAA,MAAM,SAAA,GAAY,UAAU,CAAyB,CAAA;AACrD,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,SAAS,CAAA,IAAK,EAAC;AAC7C,EAAA,SAAA,CAAU,KAAK,CAAyB,CAAA;AACxC,EAAA,WAAA,CAAY,SAAS,CAAA,GAAI,SAAA;AAC3B;AAEO,SAAS,cAAA,CACd,UACA,IAAA,EACS;AACT,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,IAAI,CAAA,IAAK,EAAC;AAC9C,EAAA,OAAO,eAAA,CAAgB,OAAA,CAAQ,QAAQ,CAAA,KAAM,EAAA;AAC/C;AAEO,SAAS,gBAAA,CACd,MACA,IAAA,EACuB;AACvB,EAAA,IAAI,IAAA,CAAK,SAAS,mBAAA,EAAqB;AACrC,IAAA,MAAM,KAAA,GAAQ,IAAA;AACd,IAAA,KAAA,CAAM,QAAA,GAAW,MAAM,QAAA,CAAS,MAAA;AAAA,MAAO,CAAC,CAAA,KACtC,cAAA,CAAe,CAAA,CAAE,QAAA,CAAS,MAAM,IAAI;AAAA,KACtC;AAAA,EACF,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,SAAA,EAAW;AAClC,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAgB,IAAA,CAAiB,QAAA,CAAS,MAAM,IAAI,CAAA;AAClE,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,oBAAA,EAAsB;AAC7C,IAAA,MAAM,KAAA,GAAQ,IAAA;AACd,IAAA,KAAA,CAAM,UAAA,GAAa,MAAM,UAAA,CAAW,MAAA;AAAA,MAAO,CAAC,CAAA,KAC1C,cAAA,CAAe,CAAA,CAAE,MAAM,IAAI;AAAA,KAC7B;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,eAAe,QAAA,EAA6C;AACnE,EAAA,MAAM,YAAA,GAAe,IAAI,OAAA,EAAQ;AACjC,EAAA,MAAM,YAAY,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,GAAI,QAAA,GAAW,CAAC,QAAQ,CAAA;AAChE,EAAA,SAAA,CAAU,QAAQ,CAAC,CAAA,KAAM,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAC,CAAA;AAChD,EAAA,OAAO,aAAa,SAAA,EAAU;AAChC;AAEO,SAAS,kBACd,QAAA,EACmB;AACnB,EAAA,OAAO,aAAA,CAAc,cAAA,CAAe,QAAQ,CAAC,CAAA;AAC/C;AAEO,SAAS,kBAAkB,QAAA,EAA4C;AAC5E,EAAA,MAAM,EAAE,GAAA,EAAK,GAAA,KAAQ,cAAA,CAAe,QAAQ,EAAE,SAAA,EAAU;AACxD,EAAA,OAAO,CAAC,KAAK,GAAG,CAAA;AAClB;AAEO,SAAS,6BACd,QAAA,EACiB;AACjB,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,MAAM,iBAAA,CAAkB,QAAQ,CAAA;AAAA,IAC3C,SAAA,EAAW,MAAM,iBAAA,CAAkB,QAAQ;AAAA,GAC7C;AACF;;;;;AChGO,MAAM,WAAA,CAEb;AAAA,EAIE,WAAA,CACS,KACA,OAAA,EACP;AAFO,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AALT,IAAAA,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAU,MAAA,EAAO,SAAA,CAAA;AAMf,IAAA,IAAI,OAAA,CAAQ,UAAU,MAAA,EAAW;AAC/B,MAAA,MAAM,IAAA,GAAO,WAAW,OAAA,CAAQ,KAAA;AAChC,MAAA,IAAI,KAAA,GAAQ,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA;AAC5B,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,KAAA,GAAQ,GAAA,CAAI,WAAW,IAAI,CAAA;AAAA,MAC7B;AACA,MAAA,KAAA,CAAM,KAAA,CAAM,SAAS,MAAA,CAAO,IAAA,CAAK,MAAM,OAAA,CAAQ,KAAA,GAAQ,GAAG,CAAC,CAAA;AAC3D,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEA,SAAS,OAAA,EAAwC;AAC/C,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AACnC,IAAA,OAAO,MAAA;AAAA,EACT;AACF;;ACzBO,SAAS,qBAAqB,GAAA,EAAuC;AAC1E,EAAA,MAAM,QAAQ,GAAA,CAAI,cAAA;AAClB,EAAA,MAAM,SAAS,GAAA,CAAI,MAAA;AACnB,EAAA,MAAM,EAAE,GAAA,EAAK,GAAA,EAAI,GAAI,MAAA;AACrB,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,MAAA,EAAQ,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,IACjB,OAAO,EAAE,IAAA,EAAM,MAAM,CAAA,EAAG,GAAA,EAAK,MAAM,CAAA,EAAE;AAAA,IACrC,MAAA,EAAQ;AAAA,GACV;AACF;;;;;;;;;;;;;;;;;;ACAO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,KAAA;AAAA,EACA;AACF,CAAA,EAAiD;AAC/C,EAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,EAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,EAAA,MAAM,GAAA,GAA2BC,gBAAA,CAAA;AAAA,IAC/B,KAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA,EAAO,qBAAqB,MAAM,CAAA;AAAA,IAClC;AAAA,GAAA,EACG,6BAA6B,OAAO,CAAA,CAAA;AAEzC,EAAA,OAAO,GAAA;AACT;;;;;;;;;;;;;;;;;;;AClBO,MAAM,aAAA,CAAc;AAAA,EAQzB,YAAY,KAAA,EAAuB;AAPnC,IAAAD,eAAA,CAAA,IAAA,EAAQ,OAAA,CAAA;AAER,IAAAA,eAAA,CAAA,IAAA,EAAQ,UAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,aAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,WAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,YAAA,CAAA;AAGN,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA,EAEA,kBAAkB,KAAA,EAAc;AAC9B,IAAA,MAAM,EAAE,SAAS,aAAA,EAAe,YAAA,EAAc,YAAY,WAAA,EAAY,GACpE,KAAK,KAAA,CAAM,OAAA;AAEb,IAAA,MAAM,WAAW,OAAA,IAAW,YAAA;AAE5B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAA,CAAK,QAAA,GAAW,CAAC,CAAA,KAAyB;AACxC,QAAA,MAAM,WAAW,CAAC,CAAC,IAAA,CAAK,KAAA,CAAM,aAAa,KAAK,CAAA;AAChD,QAAA,QAAA,CAASC,gBAAA,CAAA;AAAA,UACP;AAAA,SAAA,EACG,IAAA,CAAK,iBAAA,CAAkB,CAAC,CAAA,CAC5B,CAAA;AAAA,MACH,CAAA;AACA,MAAA,KAAA,CAAM,EAAA,CAAG,OAAA,EAAS,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA;AAAA,IACvC;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,IAAA,CAAK,WAAA,GAAc,CAAC,CAAA,KAAyB;AAC3C,QAAA,QAAA,CAAS,gBAAgB,CAAC,CAAA;AAC1B,QAAA,MAAM,WAAW,CAAC,CAAC,IAAA,CAAK,KAAA,CAAM,aAAa,KAAK,CAAA;AAChD,QAAA,aAAA,CAAcA,gBAAA,CAAA;AAAA,UACZ;AAAA,SAAA,EACG,IAAA,CAAK,iBAAA,CAAkB,CAAC,CAAA,CAC5B,CAAA;AAAA,MACH,CAAA;AACA,MAAA,KAAA,CAAM,EAAA,CAAG,UAAA,EAAY,IAAA,CAAK,WAAA,EAAa,IAAI,CAAA;AAAA,IAC7C;AACA,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,IAAA,CAAK,SAAA,GAAY,CAAC,CAAA,KAAyB;AACzC,QAAA,UAAA,CAAW,IAAA,CAAK,iBAAA,CAAkB,CAAC,CAAC,CAAA;AAAA,MACtC,CAAA;AACA,MAAA,KAAA,CAAM,EAAA,CAAG,UAAA,EAAY,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAAA,IAC3C;AACA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,IAAA,CAAK,UAAA,GAAa,CAAC,CAAA,KAAyB;AAC1C,QAAA,WAAA,CAAY,IAAA,CAAK,iBAAA,CAAkB,CAAC,CAAC,CAAA;AAAA,MACvC,CAAA;AACA,MAAA,KAAA,CAAM,EAAA,CAAG,WAAA,EAAa,IAAA,CAAK,UAAA,EAAY,IAAI,CAAA;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,gBAAgB,KAAA,EAAc;AAC5B,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,KAAA,CAAM,GAAA,CAAI,WAAA,EAAa,IAAA,CAAK,UAAA,EAAY,IAAI,CAAA;AAAA,IAC9C;AACA,IAAA,IAAI,KAAK,SAAA,EAAW;AAClB,MAAA,KAAA,CAAM,GAAA,CAAI,UAAA,EAAY,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AAAA,IAC5C;AACA,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,KAAA,CAAM,GAAA,CAAI,OAAA,EAAS,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA;AAAA,IACxC;AAAA,EACF;AAAA,EAEQ,kBAAkB,MAAA,EAA2C;AACnE,IAAA,OAAO,gBAAA,CAAiB;AAAA,MACtB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ;AAAA,KACD,CAAA;AAAA,EACH;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3DO,MAAM,YAAA,CAAa;AAAA,EAGxB,YAAY,KAAA,EAAuB;AAFnC,IAAAD,eAAA,CAAA,IAAA,EAAQ,OAAA,CAAA;AAGN,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA,EAEA,kBAAkB,KAAA,EAAgC;AAChD,IAAA,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,CAAC,QAAA,KAAa;AACvC,MAAA,IAAA,CAAK,QAAA,CAAS,UAAU,KAAK,CAAA;AAAA,IAC/B,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,QAAA,CAAS,UAAoB,KAAA,EAAgC;AAC3D,IAAA,IAAI,KAAA,GAA6C,MAAA;AACjD,IAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAQ,GAAI,QAAA;AAC3B,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,IAAI,eAAA,CAAgB,KAAK,CAAA,EAAG;AAC1B,QAAA,KAAA,GAAQ,MAAM,OAAO,CAAA;AAAA,MACvB,CAAA,MAAA,IAAW,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,QAAA,KAAA,GAAQ,KAAA;AAAA,MACV;AACA,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,IAAI,KAAK,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,KAAA,CAAM,SAAS,MAAA,EAAQ;AACxD,UAAA,MAAM,MAAA,GAAS,KAAA;AACf,UAAA,MAAM,OAAA,GAAU,IAAA,CAAK,cAAA,CAAe,KAAK,CAAA;AACzC,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,UACxB,GAAG,EAAE,CAAA;AAAA,QACP,CAAA,MAAA,IAAW,cAAc,KAAA,EAAO;AAC9B,UAAC,KAAA,CAAe,QAAA,CAAS,IAAA,CAAK,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aACE,KAAA,EACmC;AACnC,IAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC9B,MAAA,MAAM,YAAA,GAAuD;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;AAAA,OACrB;AACA,MAAA,MAAM,OAAA,GACJ,IAAA,CAAK,KAAA,CAAM,IAAA,KAAS,MAAA,GAChB;AAAA,QACE,CAAC,SAAS,aAAa,CAAA;AAAA,QACvB,CAAC,WAAW,eAAe,CAAA;AAAA,QAC3B,CAAC,UAAU,QAAQ;AAAA,OACrB,GACA,YAAA;AAEN,MAAA,MAAM,aAAa,EAAC;AAEpB,MAAA,IAAI,QAAA,IAAY,KAAA,IAAS,OAAO,KAAA,CAAM,WAAW,QAAA,EAAU;AACzD,QAAA,UAAA,CAAW,SAAS,KAAA,CAAM,MAAA;AAAA,MAC5B;AACA,MAAA,KAAA,MAAW,CAAC,EAAA,EAAI,IAAI,CAAA,IAAK,OAAA,EAAS;AAChC,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,OAAA;AACnC,QAAA,IAAI,SAAA,GAAa,MAAoB,IAAI,CAAA;AACzC,QAAA,IAAI,OAAA,CAAQ,OAAO,CAAA,IAAK,IAAA,CAAK,aAAY,CAAE,OAAA,CAAQ,SAAS,CAAA,KAAM,EAAA,EAAI;AACpE,UAAA,SAAA,GAAY,MAAA,CAAO,SAAS,CAAA,GAAI,OAAA;AAAA,QAClC;AAEA,QAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,UAAA,MAAA,CAAO,cAAA,CAAe,YAAY,EAAA,EAAI;AAAA,YACpC,UAAA,EAAY,IAAA;AAAA,YACZ,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,QACH;AAAA,MACF;AAEA,MAAA,OAAO,UAAA;AAAA,IACT;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,eAAe,IAAA,EAAiB;AAC9B,IAAA,MAAmD,EAAA,GAAA,IAAA,EAA3C,EAAA,IAAA,EAAM,MAAA,EAAQ,SAAA,EAzG1B,GAyGuD,IAAf,UAAA,GAAAE,WAAA,CAAe,EAAA,EAAf,CAA5B,MAAA,EAAM,QAAA,EAAQ,WAAA,CAAA,CAAA;AAEtB,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC5C,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAA,CAAQ,SAAA,GAAY,SAAA;AAAA,IACtB;AACA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAA,CAAQ,KAAA,CAAM,SAAA,GAAY,CAAA,QAAA,EAAW,MAAM,CAAA,IAAA,CAAA;AAAA,IAC7C;AACA,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,OAAA,CAAQ,SAAA,GAAY,IAAA;AAAA,IACtB;AAEA,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQC,eAAA,CAAAF,gBAAA,CAAA;AAAA,MAC1B,SAAA,EAAW;AAAA,KAAA,EACR,UAAA,CAAA,EAFuB;AAAA,MAG1B,IAAA,EAAM;AAAA,KACR,CAAC,CAAA;AACD,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEA,mBAAmB,IAAA,EAAiB;AAClC,IAAA,IAAI,IAAA,IAAQ,KAAK,IAAA,EAAM;AACrB,MAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AACxB,QAAA,MAAM,gBAAgB,IAAA,CAAK,SAAA;AAC3B,QAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAClB,QAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,UAAA,OAAO,CAAC,GAAQ,MAAA,KAA6B;AAC3C,YAAA,MAAM,OAAA,GAAU,IAAA,CAAK,cAAA,CAAe,IAAI,CAAA;AACxC,YAAA,OAAO,IAAI,MAAA,CAAO,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAS,CAAA;AAAA,UAC7C,CAAA;AAAA,QACF;AAAA,MACF,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,KAAA,EAAO;AAC9B,QAAA,OAAO,CAAC,GAAQ,MAAA,KAA6B;AAC3C,UAAA,OAAO,IAAI,OAAO,MAAM,CAAA;AAAA,QAC1B,CAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,CAAC,GAAQ,MAAA,KAA6B;AAC3C,MAAA,MAAM,CAAA,GAAS,KAAA;AACf,MAAA,OAAO,IAAI,aAAa,MAAA,EAAQ,IAAA,CAAK,aAAaA,gBAAA,CAAAA,gBAAA,CAAA,EAAA,EAAK,CAAA,CAAA,EAAM,KAAM,CAAC,CAAA;AAAA,IACtE,CAAA;AAAA,EACF;AAAA,EAEA,mBAAmB,KAAA,EAAgD;AACjE,IAAA,MAAM,iBAAiC,EAAC;AACxC,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AACxC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,cAAA,CAAe,QAAQ,MAAM;AAC3B,QAAA,OAAO,QAAA;AAAA,MACT,CAAA;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,IAAA,KAAS,OAAA,EAAS;AAC/B,MAAC,cAAA,CAAuB,eAAe,IAAA,CAAK,kBAAA;AAAA,QAC1C;AAAA,OACF;AAAA,IACF,CAAA,MAAA,IAAW,IAAA,CAAK,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ;AACrC,MAAA,QAAA,CAAS,MAAA,GAAS,IAAA;AAAA,IACpB;AACA,IAAA,OAAO,cAAA;AAAA,EACT;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7HO,MAAM,uBACH,WAAA,CAEV;AAAA,EAoBE,WAAA,CAAY,KAAU,OAAA,EAAgC;AACpD,IAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AApBpB,IAAAD,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAW,KAAA,CAAA;AAEX,IAAAA,eAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAsB,EAAC,CAAA;AACvB,IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAQ,OAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,eAAA,CAAA;AAER,IAAAA,eAAA,CAAA,IAAA,EAAQ,mBAA8B,EAAC,CAAA;AACvC,IAAAA,eAAA,CAAA,IAAA,EAAQ,mBAA8B,EAAC,CAAA;AACvC,IAAAA,eAAA,CAAA,IAAA,EAAQ,YAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,gBAA4D,EAAC,CAAA;AACrE,IAAAA,eAAA,CAAA,IAAA,EAAQ,QAAA,CAAA;AAER,IAAAA,eAAA,CAAA,IAAA,EAAQ,gBAAA,EAAiBI,WAAS,MAAM;AACtC,MAAA,IAAA,CAAK,aAAA,EAAc;AAAA,IACrB,GAAG,GAAG,CAAA,CAAA;AAqRN,IAAAJ,eAAA,CAAA,IAAA,EAAQ,aAAY,MAAM;AACxB,MAAA,IAAA,CAAK,QAAA,EAAS;AAAA,IAChB,CAAA,CAAA;AAnRE,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,aAAA,CAAc,IAAI,CAAA;AACrC,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,YAAA,CAAa,IAAI,CAAA;AAAA,EACrC;AAAA,EAEA,SAAS,OAAA,EAA+D;AACtE,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AACnC,IAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,KAAA;AACrB,IAAA,IAAA,CAAK,QAAQ,IAAI,YAAA,CAAa,EAAC,EAAGG,eAAA,CAAAF,gBAAA,CAAA,EAAA,EAC7B,QAAQ,aAAA,CAAA,EADqB;AAAA,MAEhC,MAAM,IAAA,CAAK;AAAA,KACb,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,gBAAgB,OAAA,CAAQ,aAAA;AAC7B,IAAA,OAAA,CAAQ,QAAQ,IAAA,CAAK,KAAA;AAErB,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,IAAA,CAAK,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAAA,IAC3B;AAEA,IAAA,IAAA,CAAK,eAAA,EAAgB;AAErB,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAAA,EAEA,YAAA,GAAqB;AACnB,IAAA,IAAA,CAAK,kBAAA,EAAmB;AAAA,EAC1B;AAAA,EAEA,OAAO,cAAA,EAAwC;AAC7C,IAAA,IAAA,CAAK,QAAA,EAAS;AACd,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA;AAC9C,MAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACnB,QAAA,IAAA,CAAK,YAAA,CAAa,GAAG,KAAK,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA,MAAA,IAAW,CAAC,IAAA,CAAK,QAAA,EAAU;AACzB,MAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,MAAA,IAAI,KAAK,aAAA,EAAe;AACtB,QAAA,IAAA,CAAK,MAAA,CAAO,iBAAA;AAAA,UACV,IAAA,CAAK;AAAA,SACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,cAAA,EAAwC;AAC/C,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA;AAClD,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,KAAM;AACrB,QAAA,IAAA,CAAK,eAAe,CAAC,CAAA;AAAA,MACvB,CAAC,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,KAAK,QAAA,EAAU;AACxB,MAAA,KAAA,MAAW,CAAA,IAAK,KAAK,YAAA,EAAc;AACjC,QAAA,IAAA,CAAK,YAAA,CAAa,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,MACxB;AACA,MAAA,IAAI,KAAK,KAAA,EAAO;AACd,QAAA,IAAA,CAAK,MAAA,CAAO,iBAAA,CAAkB,IAAA,CAAK,KAAgC,CAAA;AAAA,MACrE;AACA,MAAA,IAAA,CAAK,gBAAgB,MAAA,GAAS,CAAA;AAC9B,MAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,WAAA,GAAoD;AAClD,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,CAAC,CAAA,KAAM;AACrC,MAAA,OAAOA,gBAAA,CAAA;AAAA,QACL,MAAA,EAAQ,IAAA;AAAA,QACR,SAAS,CAAA,CAAE,OAAA;AAAA,QACX,KAAA,EAAO;AAAA,OAAA,EACJ,4BAAA,CAA6B,EAAE,OAAO,CAAA,CAAA;AAAA,IAE7C,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,WAAA,GAA0B;AACxB,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EACd;AAAA,EAEA,OAAO,GAAA,EAAmC;AAExC,IAAA,IAAA,CAAK,UAAA,GAAa,GAAA;AAClB,IAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AACpB,IAAA,MAAM,GAAA,GAAM,UAAW,MAAA,CAAe,IAAA;AACtC,IAAA,IAAI,UAAU,GAAA,EAAK;AACjB,MAAA,MAAA,CAAO,MAAA,EAAO;AAEd,MAAA,MAAM,iBAA6B,EAAC;AACpC,MAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,CAAC,EAAE,OAAA,EAAS,OAAM,KAAM;AAC3C,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,EAAA,GAAK,MACP,GAAA,CAAIA,gBAAA,CAAA;AAAA,YACF,MAAA,EAAQ,IAAA;AAAA,YACR,OAAA;AAAA,YACA;AAAA,WAAA,EACG,4BAAA,CAA6B,OAAO,CAAA,CACxC,CAAA,GACD,IAAA;AACJ,UAAA,IAAI,EAAA,EAAI;AACN,YAAA,MAAA,CAAO,SAAS,KAAK,CAAA;AACrB,YAAA,cAAA,CAAe,IAAA,CAAKA,gBAAA,CAAA;AAAA,cAClB,MAAA,EAAQ,IAAA;AAAA,cACR,OAAA;AAAA,cACA;AAAA,aAAA,EACG,4BAAA,CAA6B,OAAO,CAAA,CACxC,CAAA;AAAA,UACH,CAAA,MAAO;AACL,YAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AAAA,UAC1B;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,IAAA,CAAK,eAAA,GAAkB,cAAA;AAEvB,MAAA,MAAA,CAAO,MAAM,GAAG,CAAA;AAAA,IAClB;AACA,IAAA,OAAO,IAAA,CAAK,eAAA;AAAA,EACd;AAAA,EAEA,WAAA,GAAoB;AAClB,IAAA,IAAA,CAAK,MAAA,EAAO;AAAA,EACd;AAAA,EAEA,SAAA,GAAwB;AACtB,IAAA,OAAO,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,SAAQ,KAAM;AAC9C,MAAA,MAAM,OAAA,GAAU,KAAA,IAAS,CAAC,CAAE,KAAA,CAAc,IAAA;AAC1C,MAAA,OAAOA,gBAAA,CAAA;AAAA,QACL,OAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA,EAAQ;AAAA,OAAA,EACL,6BAA6B,OAAO,CAAA,CAAA;AAAA,IAE3C,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,WAAW,EAAA,EAA0C;AACnD,IAAA,IAAA,CAAK,QAAA,EAAS;AACd,IAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AACpB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAI,EAAA,EAAI;AACN,QAAA,KAAA,IAAS,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,GAAA,EAAA,IAAS;AAC3C,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC5B,UAAA,IAAI,GAAA,EAAK;AACP,YAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,GAAA;AAC3B,YAAA,IAAI,WAAW,KAAA,EAAO;AACpB,cAAA,MAAM,KAAA,GAAQ,GAAG,OAAO,CAAA;AACxB,cAAA,IAAI,KAAA,EAAO;AACT,gBAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AACxB,gBAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAAA,cAC5B;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,WAAA,EAAY;AACnB,QAAA,IAAA,CAAK,UAAU,EAAC;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAQ,IAAA,EAA2B;AACjC,IAAA,IAAA,CAAK,UAAA,EAAW;AAChB,IAAA,IAAA,CAAK,QAAQ,IAAI,CAAA;AAAA,EACnB;AAAA,EAEA,QAAQ,IAAA,EAAmC;AACzC,IAAA,MAAM,UAAU,IAAA,CAAK,OAAA;AACrB,IAAA,IAAI,cAAA;AACJ,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,IAAI,IAAA;AAEJ,QAAA,IAAI,CAAC,QAAQ,IAAA,EAAM;AACjB,UAAA,MAAM,YAAA,GAAe,WAAW,IAAI,CAAA;AACpC,UAAA,IAAA,GAAO,UAAU,YAAY,CAAA;AAAA,QAC/B,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,OAAA,CAAQ,IAAA;AAAA,QACjB;AACA,QAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,IAAA,EAAM;AACnC,UAAA,OAAA,CAAQ,KAAK,4CAA4C,CAAA;AACzD,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAEZ,QAAA,IAAA,GAAO,gBAAA,CAAiB,MAAM,IAAI,CAAA;AAClC,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,cAAA,GAAiB,IAAA,CAAK,kBAAA,CAAmB,OAAA,EAAS,IAAI,CAAA;AAAA,QACxD;AAAA,MACF;AACA,MAAA,IAAI,OAAA,CAAQ,IAAA,IAAQ,MAAA,EAAW,cAAc,CAAA;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,SAAA,CAAU,gBAAiC,OAAA,EAA8B;AACvE,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA;AAC9C,MAAA,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,KAAM;AACjB,QAAA,IAAA,CAAK,UAAA,CAAW,CAAA,EAAG,OAAA,EAAS,KAAK,CAAA;AAAA,MACnC,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,WAAW,cAAA,EAAwC;AACjD,IAAA,MAAM,YAAA,GAAe,cAAA,GACjB,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,KAAM,cAAA,CAAe,CAAA,CAAE,CAAC,CAAC,CAAC,IACpD,IAAA,CAAK,YAAA;AAET,IAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC1B,MAAA,IAAA,CAAK,YAAA,CAAa,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,IACxB,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,cAAc,QAAA,EAAkC;AAC9C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAA,CAAK,eAAe,QAAQ,CAAA;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,WAAU,CAAE,OAAA;AAAA,QAAQ,CAAC,CAAA,KACxB,IAAA,CAAK,cAAA,CAAe,EAAE,OAAA,EAAS,CAAA,CAAE,OAAA,EAAS,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO;AAAA,OAC5D;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,SAAA,GAA2C;AACzC,IAAA,OAAO,KAAK,SAAA,EAAU;AAAA,EACxB;AAAA,EAEA,SAAA,GAA2C;AACzC,IAAA,IAAI,KAAK,KAAA,EAAO;AACd,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,SAAA,EAAU;AACpC,MAAA,IAAI,MAAA,CAAO,SAAQ,EAAG;AACpB,QAAA,OAAO,cAAc,MAAM,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,KAAA,EAAqB;AAC9B,IAAA,IAAA,CAAK,QAAQ,OAAA,GAAU,KAAA;AACvB,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,KAAK,CAAA;AACxB,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,aAAa,CAAA;AAAA,EAC1C;AAAA,EAEA,SAAS,KAAA,EAA4B;AACnC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,MAAA,KAAA,MAAW,CAAA,IAAK,KAAK,OAAA,EAAS;AAC5B,QAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,KAAgC,CAAA;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB,KAAA,EAA4B;AAC3C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AACrB,MAAA,KAAA,MAAW,CAAA,IAAK,KAAK,eAAA,EAAiB;AACpC,QAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,KAAgC,CAAA;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AAAA,EACA,YAAY,KAAA,EAA6B;AACvC,IAAA,IAAA,CAAK,KAAA,GAAQA,gBAAA,CAAAA,gBAAA,CAAA,EAAA,EAAK,IAAA,CAAK,KAAA,CAAA,EAAU,KAAA,CAAA;AACjC,IAAA,KAAA,MAAW,CAAA,IAAK,KAAK,OAAA,EAAS;AAC5B,MAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,IAAA,CAAK,KAAgC,CAAA;AAAA,IAC/D;AAAA,EACF;AAAA,EACA,oBAAoB,KAAA,EAA6B;AAC/C,IAAA,IAAA,CAAK,aAAA,GAAgBA,gBAAA,CAAAA,gBAAA,CAAA,EAAA,EAAK,IAAA,CAAK,aAAA,CAAA,EAAkB,KAAA,CAAA;AACjD,IAAA,KAAA,MAAW,CAAA,IAAK,KAAK,eAAA,EAAiB;AACpC,MAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,IAAA,CAAK,aAAwC,CAAA;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,aAAa,KAAA,EAA0B;AACrC,IAAA,OAAO,KAAK,eAAA,CAAgB,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,KAAK,CAAA;AAAA,EAC3D;AAAA,EAMQ,eAAe,QAAA,EAA+C;AACpE,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,QAAA;AAC3B,IAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,YAAA,KAAiB,IAAA,CAAK,OAAA;AACjD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,KAAA,CAAM,aAAA,EAAc;AACpB,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI,OAAA,CAAQ,cAAc,UAAA,EAAY;AACpC,QAAA,OAAA,GAAU,OAAA,CAAQ,WAAW,UAAU,CAAA;AAAA,MACzC,WAAW,KAAA,EAAO;AAChB,QAAA,OAAA,GAAU,KAAA,CAAMA,gBAAA,CAAAA,gBAAA,CAAA;AAAA,UACd,MAAA,EAAQ;AAAA,SAAA,EACL,QAAA,CAAA,EACA,4BAAA,CAA6B,OAAO,CAAA,CACxC,CAAA;AAAA,MACH;AACA,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAM,YAAY,CAAC,YAAA;AACnB,QAAA,KAAA,CAAM,WAAA,CAAY,OAAO,OAAO,CAAA,EAAG,EAAE,SAAA,EAAW,MAAA,EAAQ,OAAO,CAAA;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA,EAEc,WACZ,EAAA,EAIA;AAAA,IAAA,OAAA,OAAA,CAAA,IAAA,EAAA,SAAA,EAAA,WAJA,GAAA,EACA,OAAA,GAAwB,EAAC,EACzB,MACA,MAAA,EACA;AAlXJ,MAAA,IAAA,EAAA,EAAA,EAAA;AAmXI,MAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,GAAA;AAC3B,MAAA,MAAM;AAAA,QACJ,QAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAA,EAAa;AAAA,OACf,GAAIA,gBAAA,CAAA;AAAA,QACF,QAAA,EAAU;AAAA,OAAA,EACP,OAAA,CAAA;AAEL,MAAA,MAAM,WAAA,GAAc,YAAA,IAAA,IAAA,GAAA,YAAA,GAAgB,CAAC,IAAA,CAAK,OAAA,CAAQ,aAAA;AAClD,MAAA,IAAI,KAAA;AACJ,MAAA,MAAM,iBAAyC,EAAC;AAChD,MAAA,MAAM,OAAA,GAAU,CAAC,OAAA,KAAkC;AACjD,QAAA,cAAA,CAAe,KAAK,OAAO,CAAA;AAAA,MAC7B,CAAA;AACA,MAAA,MAAM,QAAQ,MAAM;AAClB,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,IAAA,CAAK,aAAa,KAAK,CAAA;AAAA,QACzB;AAAA,MACF,CAAA;AACA,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI,QAAQ,kBAAA,EAAoB;AAC9B,QAAA,OAAA,GAAU,MAAM,QAAQ,kBAAA,CAAmBA,gBAAA,CAAA;AAAA,UACzC,KAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA,EAAQ,IAAA;AAAA,UACR,IAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SAAA,EACG,4BAAA,CAA6B,OAAO,CAAA,CACxC,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,OAAA,GAAU,OAAA,CAAQ,YAAA;AAAA,MACpB;AAEA,MAAA,IAAI,WAAW,KAAA,EAAO;AACpB,QAAA,MAAM,YAAA,GAA8B;AAAA,UAClC,QAAA;AAAA,UACA,OAAA;AAAA;AAAA,UAEA,WAAA;AAAA,UACA,YAAA,EAAc,KAAA;AAAA,UACd,SAAA,EAAW;AAAA,SACb;AACA,QAAA,IAAI,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACrB,UAAA,YAAA,CAAa,QAAA,GAAW,QAAA;AAAA,QAC1B;AACA,QAAA,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,OAAA,EAAS,YAAY,CAAA;AAE7C,QAAA,MAAM,mBACJ,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,CAAQ,YAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2B,oBAA3B,IAAA,GAAA,EAAA,GAA8C,IAAA;AAChD,QAAA,IAAI,eAAA,EAAiB;AACnB,UAAA,MAAM,CAAA,GAAI,MAAM,QAAA,EAAS;AACzB,UAAA,IAAI,CAAA,EAAG;AACL,YAAA,CAAA,CAAE,IAAA;AAAA,cACA,QAAA;AAAA,cACA,MAAM;AACJ,gBAAA,KAAA,EAAM;AAAA,cACR,CAAA;AAAA,cACA;AAAA,aACF;AAAA,UACF;AAAA,QACF;AACA,QAAA,IAAA,CAAK,aAAa,IAAA,CAAK,CAAC,KAAA,EAAO,cAAA,EAAgB,GAAG,CAAC,CAAA;AACnD,QAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AAAA,MACxB;AAAA,IACF,CAAA,CAAA;AAAA,EAAA;AAAA,EAEQ,aAAa,KAAA,EAAc;AAxbrC,IAAA,IAAA,EAAA,EAAA,EAAA;AAybI,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,KAAA,CAAM,UAAA,GAAa,WAAA,EAAY;AAC/B,MAAA,MAAM,KAAA,GAAQ,KAAK,YAAA,CAAa,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,KAAM,KAAK,CAAA;AAC/D,MAAA,IAAI,UAAU,EAAA,EAAI;AAChB,QAAA,MAAM,mBACJ,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,CAAQ,YAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2B,oBAA3B,IAAA,GAAA,EAAA,GAA8C,IAAA;AAChD,QAAA,MAAM,GAAG,aAAA,EAAe,GAAG,CAAA,GAAI,IAAA,CAAK,aAAa,KAAK,CAAA;AACtD,QAAA,KAAA,MAAW,KAAK,aAAA,EAAe;AAC7B,UAAA,CAAA,CAAE,GAAG,CAAA;AAAA,QACP;AACA,QAAA,aAAA,CAAc,MAAA,GAAS,CAAA;AACvB,QAAA,IAAI,eAAA,EAAiB;AACnB,UAAA,IAAA,CAAK,eAAe,GAAG,CAAA;AAAA,QACzB;AACA,QAAA,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,kBAAA,CACN,SACA,IAAA,EACgB;AAChB,IAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA;AACtB,IAAA,IAAI,OAAuB,EAAC;AAE5B,IAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAC/B,MAAA,IAAI,SAAS,OAAA,EAAS;AAEpB,QAAC,IAAA,CAAa,YAAA,GAAe,CAC3B,OAAA,EACA,MAAA,KACG;AACH,UAAA,MAAM,OAAA,GAAU,MAAM,OAAO,CAAA;AAC7B,UAAA,MAAM,YAAA,GAAe,KAAK,MAAA,CAAO,kBAAA;AAAA,YAC/B;AAAA,WACF;AACA,UAAA,OAAO,YAAA,CAAa,SAAS,MAAM,CAAA;AAAA,QACrC,CAAA;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAA,GAAO;AAAA,UACL,KAAA,EAAO,CAAC,OAAA,KAAY;AAClB,YAAA,IAAI,OAAA,EAAS;AACX,cAAA,OAAO,KAAK,MAAA,CAAO,YAAA,CAAaA,sCAAK,KAAA,CAAA,EAAU,KAAA,CAAM,OAAO,CAAA,CAAG,CAAA;AAAA,YACjE,CAAA,MAAO;AACL,cAAA,OAAO,IAAA,CAAK,OAAO,YAAA,CAAaE,eAAA,CAAAF,gBAAA,CAAA,EAAA,EAAK,QAAL,EAAY,IAAA,EAAM,QAAO,CAAC,CAAA;AAAA,YAC5D;AAAA,UACF;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,kBAAA,CAAmB,KAAgC,CAAA;AAAA,IACxE;AAEA,IAAA,IAAA,CAAK,aAAA,GAAgB,CAAC,OAAA,EAAkB,KAAA,KAAU;AAChD,MAAA,IAAA,CAAK,cAAA,CAAe,SAAS,KAAK,CAAA;AAAA,IACpC,CAAA;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,cAAA,CAAe,SAAkB,KAAA,EAAc;AACrD,IAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AACpB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,GAAA,GAAMA,gBAAA,CAAA;AAAA,QACV,MAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA;AAAA,OAAA,EACG,6BAA6B,OAAO,CAAA,CAAA;AAEzC,MAAA,KAAA,CAAM,OAAA,CAAQ,OAAO,IAAA,CAAK,IAAA;AAC1B,MAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,GAAG,CAAA;AACrB,MAAA,IAAI,EAAA,GAAK,IAAA;AACT,MAAA,IAAI,KAAK,UAAA,EAAY;AACnB,QAAA,EAAA,GAAK,IAAA,CAAK,WAAW,GAAG,CAAA;AAAA,MAC1B;AACA,MAAA,IAAI,EAAA,EAAI;AACN,QAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAc,YAAY,WAAA,EAAa,aAAA,KACpD,IAAA,CAAK,OAAA;AAEP,QAAA,KAAA,CAAM,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,WAAW,IAAI,WAAA,GAAc,IAAA;AACjE,QAAA,MAAA,CAAO,SAAS,KAAK,CAAA;AACrB,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,KAAA,CAAM,EAAA,CAAG,aAAa,MAAM;AAC1B,cAAA,IAAA,CAAK,YAAA,CAAa,KAAK,OAAO,CAAA;AAAA,YAChC,CAAC,CAAA;AACD,YAAA,KAAA,CAAM,EAAA,CAAG,YAAY,MAAM;AACzB,cAAA,IAAA,CAAK,eAAe,GAAG,CAAA;AAAA,YACzB,CAAC,CAAA;AAAA,UACH,CAAA,MAAO;AACL,YAAA,KAAA,CAAM,EAAA;AAAA,cACJ,OAAA;AAAA,cACA,CAAC,CAAA,KAAM,IAAA,CAAK,mBAAA,CAAoB,CAAsB,CAAA;AAAA,cACtD;AAAA,aACF;AAAA,UACF;AAAA,QACF;AACA,QAAA,IAAA,CAAK,OAAA,CAAQ,kBAAkB,KAAK,CAAA;AAGpC,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,IAAA,CAAK,UAAA;AAAA,cACHA,gBAAA,CAAA;AAAA,gBACE,MAAA,EAAQ,IAAA;AAAA,gBACR,KAAA;AAAA,gBACA;AAAA,eAAA,EACG,6BAA6B,OAAO,CAAA,CAAA;AAAA,cAEzC,YAAA;AAAA,cACA;AAAA,aACF;AAAA,UACF;AACA,UAAA,IAAA,CAAK,cAAA,CAAe,EAAE,KAAA,EAAO,OAAA,EAAS,CAAA;AAAA,QACxC,CAAC,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,oBAAoB,CAAA,EAAsB;AAChD,IAAA,QAAA,CAAS,gBAAgB,CAAC,CAAA;AAC1B,IAAA,MAAM,QAAQ,CAAA,CAAE,MAAA;AAChB,IAAA,MAAM,UAAW,KAAA,CAAc,OAAA;AAC/B,IAAA,MAAM,GAAA,GAAgBA,gBAAA,CAAA;AAAA,MACpB,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA;AAAA,MACA;AAAA,KAAA,EACG,6BAA6B,OAAO,CAAA,CAAA;AAEzC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,IAAI,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,CAAQ,qBAAA,EAAuB;AACtD,QAAA,IAAA,CAAK,eAAe,UAAU,CAAA;AAAA,MAChC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,OAAA,EAAS,CAAA,CAAE,MAAM,CAAA;AAAA,IAC1C;AAAA,EACF;AAAA,EAEQ,YAAA,CACN,GAAA,EACA,IAAA,EACA,MAAA,EACA;AACA,IAAA,MAAM,EAAE,WAAA,EAAY,GAAI,IAAA,CAAK,OAAA;AAC7B,IAAA,IAAI,CAAC,WAAA,EAAa;AAEhB,MAAC,IAAA,CAAK,GAAA,CAAY,cAAA,CAAe,MAAM;AACrC,QAAA,IAAA,CAAK,eAAe,GAAG,CAAA;AAAA,MACzB,CAAC,CAAA;AACD,MAAA,IAAA,CAAK,gBAAgB,OAAA,CAAQ,CAAC,MAAM,IAAA,CAAK,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,IAC5D;AACA,IAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,GAAG,CAAA;AAC7B,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,IAAA,MAAM,EAAE,aAAA,EAAe,aAAA,EAAe,YAAA,KAAiB,IAAA,CAAK,OAAA;AAE5D,IAAA,IAAI,aAAA,IAAiB,IAAI,KAAA,EAAO;AAC9B,MAAA,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,GAAA,EAAK,aAAwC,CAAA;AAAA,IACpE;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,IAAA,CAAK,UAAA,CAAW,GAAA,EAAK,YAAA,EAAc,IAAA,EAAM,MAAM,CAAA;AAAA,IACjD;AACA,IAAA,IAAI,IAAA,CAAK,QAAQ,QAAA,EAAU;AACzB,MAAA,MAAM,WAAW,GAAA,CAAI,OAAA,GAAU,CAAC,GAAA,CAAI,OAAO,IAAI,EAAC;AAChD,MAAA,IAAA,CAAK,QAAQ,QAAA,CAASA,gBAAA,CAAA;AAAA,QACpB,IAAA;AAAA,QACA,KAAA,EAAO,IAAA;AAAA,QACP;AAAA,OAAA,EACG,4BAAA,CAA6B,QAAQ,CAAA,CACzC,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,eAAe,GAAA,EAAe;AACpC,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,GAAG,CAAA;AAC9C,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,IAAA,CAAK,eAAA,CAAgB,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AACpC,MAAA,IAAI,KAAK,OAAA,EAAS;AAChB,QAAA,IAAI,IAAA,CAAK,QAAQ,KAAA,EAAO;AACtB,UAAA,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,YACV,GAAA;AAAA,YACA,KAAK,OAAA,CAAQ;AAAA,WACf;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,aAAA,IAAiB,GAAA,CAAI,KAAA,EAAO;AAC3C,UAAA,IAAA,CAAK,YAAA,CAAa,IAAI,KAAK,CAAA;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,eAAA,CAAgB,MAAA,GAAS,CAAA;AAAA,EAChD;AAAA,EAEQ,oBAAA,GAAuB;AAC7B,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAM,EAAE,eAAA,EAAgB,GAAI,IAAA,CAAK,OAAA;AACjC,MAAA,MAAM,MAAM,eAAA,IAAA,IAAA,GAAA,eAAA,GAAmB,IAAA;AAC/B,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,GAAA,CAAI,EAAA,CAAG,OAAA,EAAS,IAAA,CAAK,SAAS,CAAA;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,uBAAA,GAA0B;AAChC,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,cAAc,CAAA;AAC3C,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,cAAc,CAAA;AAC3C,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,IAAA,CAAK,SAAS,CAAA;AAAA,EACtC;AAAA,EAEQ,eAAA,GAAkB;AACxB,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,YAAA,KAAiB,IAAA,CAAK,OAAA;AACjD,MAAA,IAAA,CAAK,oBAAA,EAAqB;AAC1B,MAAA,IAAA,CAAK,UAAA,IAAc,KAAA,KAAU,CAAC,YAAA,EAAc;AAC1C,QAAA,GAAA,CAAI,EAAA,CAAG,SAAA,EAAW,IAAA,CAAK,cAAc,CAAA;AACrC,QAAA,GAAA,CAAI,EAAA,CAAG,SAAA,EAAW,IAAA,CAAK,cAAc,CAAA;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,kBAAA,GAAqB;AAC3B,IAAA,IAAA,CAAK,uBAAA,EAAwB;AAC7B,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,cAAc,CAAA;AAC3C,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,IAAA,CAAK,cAAc,CAAA;AAAA,EAC7C;AACF;;AC1pBO,SAAS,QAAA,CAAS;AAAA,EACvB,GAAA;AAAA,EACA,OAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,EAOkC;AAChC,EAAA,MAAM,eAAe,sBAAA,CAAuB;AAAA,IAC1C,OAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,cAAA,GAAA,CAAiB,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,OAAA,KAAW,EAAC;AACjD,EAAA,MAAM,UAAA,GAAa,IAAI,eAAA,EAAgB;AACvC,EAAA,MAAM,OAAA,GAAU,MAAM,GAAA,EAAK;AAAA,IACzB,OAAO,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,KAAA;AAAA,IACrB,aAAa,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,WAAA;AAAA,IAC3B,OAAA,EAAS,cAAA;AAAA,IACT,QAAQ,UAAA,CAAW;AAAA,GACpB,CAAA,CACE,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,QAAA,CAAS,UAAU,CAAA;AAAA,IACrC;AACA,IAAA,OAAO,SAAS,IAAA,EAAK;AAAA,EACvB,CAAC,CAAA,CACA,IAAA,CAAK,CAAC,IAAA,KAAS;AACd,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,GAAA,IAAO,MAAA,CAAO,SAAA;AACxC,IAAA,OAAO,UAAA,CAAW,gBAAgB,IAAI,CAAA;AAAA,EACxC,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,EAAA,KAAc;AACpB,IAAA,IAAI,EAAA,CAAG,SAAS,YAAA,EAAc;AAC5B,MAAA,OAAO,EAAA;AAAA,IACT;AACA,IAAA,MAAM,EAAA;AAAA,EACR,CAAC,CAAA;AACH,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,UAAA,CAAW,KAAA,EAAM;AAAA,EACnB,CAAA;AACA,EAAA,OAAO,CAAC,SAAS,SAAS,CAAA;AAC5B;;AChDA,MAAM,UAAA,GAAa,IAAI,KAAA,CAAM,EAAE,aAAa,CAAA,EAAG,KAAA,EAAO,KAAK,CAAA;;;;;ACepD,MAAM,qBAAqBI,cAAA,CAAc;AAAA,EAG9C,WAAA,CACE,QAAA,EACA,MAAA,EACA,OAAA,EACA;AACA,IAAA,KAAA,CAAM,QAAA,EAAU,QAAQ,OAAO,CAAA;AAPjC,IAAAL,eAAA,CAAA,IAAA,EAAQ,UAAA,CAAA;AAAA,EAQR;AAAA,EAEA,UAAA,GAAmB;AACjB,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,IAAA,CAAK,QAAA,EAAS;AACd,MAAA,IAAA,CAAK,QAAA,GAAW,MAAA;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,UAAA,GAAmB;AAEjB,IAAA,KAAA,CAAM,UAAA,EAAW;AAEjB,IAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,eAAA,KAAoB,IAAA,CAAK,OAAA;AAEnD,IAAA,MAAM,MAAwB,IAAA,CAAK,MAAA;AACnC,IAAA,MAAM,MAAM,GAAA,CAAI,GAAA;AAChB,IAAA,GAAA,CAAI,GAAA,GAAM,EAAA;AAEV,IAAA,UAAA,CAAW,IAAI,MAAM;AACnB,MAAA,MAAM,CAAC,OAAA,EAAS,SAAS,CAAA,GAAI,QAAA,CAAS;AAAA,QACpC,GAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAAW;AACvB,QAAA,GAAA,CAAI,GAAA,GAAM,MAAA;AAAA,MACZ,CAAC,CAAA;AACD,MAAA,IAAA,CAAK,QAAA,GAAW,SAAA;AAChB,MAAA,OAAO,OAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AACF;;;;;AClBO,MAAM,mBAAmB,KAAA,CAAM;AAAA,EA0BpC,WAAA,CAAY,KAAa,OAAA,EAAyB;AAChD,IAAA,KAAA,CAAM,OAAO,CAAA;AA1Bf,IAAAA,eAAA,CAAA,IAAA,EAAA,kBAAA,EAAmB;AAAA,MACjB,OAAA,EAAS;AAAA,KACX,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAA0B;AAAA,MACxB,GAAA,EAAK,IAAA;AAAA,MACL,SAAA,EAAW,KAAA;AAAA,MACX,WAAA,EAAa,EAAA;AAAA,MACb,OAAA,EAAS,CAAA;AAAA,MACT,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,CAAA;AAAA,MACT,OAAA,EAAS,MAAA;AAAA,MACT,IAAA,EAAM,UAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,eAAA,EAAiB,KAAA;AAAA,MACjB,cAAA,EAAgB,CAAA;AAAA,MAChB,YAAA,EAAc;AAAA,KAChB,CAAA;AAEA,IAAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AACA,IAAAA,eAAA,CAAA,IAAA,EAAQ,MAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,aAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,iBAAA,CAAA;AACR,IAAAA,eAAA,CAAA,IAAA,EAAQ,gBAAA,CAAA;AAIN,IAAA,IAAA,CAAK,IAAA,GAAO,GAAA;AAGZ,IAAA,MAAM,SAAc,EAAC;AACrB,IAAA,MAAM,OAAY,EAAC;AACnB,IAAA,IAAI,GAAA;AACJ,IAAA,KAAK,OAAO,OAAA,EAAS;AACnB,MAAA,MAAM,GAAA,GAAM,QAAQ,GAAG,CAAA;AACvB,MAAA,IAAI,GAAA,IAAO,KAAK,OAAA,EAAS;AACvB,QAAA,IAAA,CAAK,GAAG,CAAA,GAAI,GAAA;AAAA,MACd;AAAA,IACF;AAEA,IAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,MAAA,EAAQ;AAClC,QAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AAChC,QAAA,IACE,CAAC,QAAA,CAAS,GAAG,CAAA,IACb,CAAC,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,IAClB,OAAO,GAAA,KAAQ,UAAA,EACf;AACA,UAAA,MAAA,CAAO,KAAK,CAAA,GAAI,GAAA;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAA,CAAK,UAAA,CAAW,MAAM,IAAI,CAAA;AAC1B,IAAA,IAAA,CAAK,YAAY,IAAA,CAAK,MAAA,CAAO,EAAC,EAAG,IAAA,CAAK,kBAAkB,MAAM,CAAA;AAAA,EAChE;AAAA,EAEA,UAAU,MAAA,EAAmC;AAC3C,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,MAAM,CAAA;AAClC,IAAA,IAAA,CAAK,MAAA,EAAO;AAAA,EACd;AAAA,EAEA,cAAA,GAAyB;AACvB,IAAA,OAAO,IAAA,CAAK,QAAQ,WAAA,IAAe,EAAA;AAAA,EACrC;AAAA,EAEA,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,MAAA,EAAO;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,SAAS,GAAA,EAAgB;AACvB,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,gBAAgB,UAAA,EAAW;AAChC,MAAA,GAAA,CAAI,WAAA,CAAY,KAAK,eAAe,CAAA;AACpC,MAAA,OAAO,IAAA,CAAK,eAAA;AAAA,IACd;AACA,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,OAAO,IAAA,CAAK,WAAA;AAAA,IACd;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,SAAA,GAEE;AACA,IAAA,OAAO;AAAA,MACL,SAASI,UAAA,CAAS,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,QAAQ,YAAY;AAAA,KAC1D;AAAA,EACF;AAAA,EAEA,MAAA,GAAe;AACb,IAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AACd,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,eAAA,EAAgB;AACrB,IAAA,MAAM,GAAA,GAAM,KAAK,WAAA,EAAY;AAC7B,IAAA,IAAI,IAAA,CAAK,gBAAgB,GAAA,EAAK;AAC5B,MAAA;AAAA,IACF;AACA,IAAA,IAAA,CAAK,WAAA,GAAc,GAAA;AAEnB,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,OAAA,CAAQ,cAAA,IAAkB,CAAA;AACtD,IAAA,MAAM,SAAS,IAAA,CAAK,IAAA,CAAK,SAAA,EAAU,CAAE,IAAI,cAAc,CAAA;AACvD,IAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,MAAA,IAAA,CAAK,eAAe,UAAA,EAAW;AAC/B,MAAA,IAAA,CAAK,cAAA,CAAe,IAAI,MAAM,CAAA;AAC9B,MAAA,IAAA,CAAK,cAAA,GAAiB,MAAA;AAAA,IACxB;AACA,IAAA,MAAM,OAAA,GAAU,IAAI,YAAA,CAAa,GAAA,EAAK,MAAA,EAAQ;AAAA,MAC5C,OAAA,EAAS,CAAA;AAAA,MACT,IAAA,EAAM,KAAK,OAAA,CAAQ,IAAA;AAAA,MACnB,OAAA,EAAS,KAAK,OAAA,CAAQ,OAAA;AAAA,MACtB,OAAA,EAAS,KAAK,OAAA,CAAQ,OAAA;AAAA,MACtB,eAAA,EAAiB,KAAK,OAAA,CAAQ;AAAA,KAC/B,CAAA;AACD,IAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,IAAI,CAAA;AACvB,IAAA,IAAA,CAAK,cAAA,GAAiB,OAAA;AAItB,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN,MAAA;AAAA,MACA,MAAM;AACJ,QAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AACd,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,IAAA,CAAK,WAAA,EAAa;AACrC,UAAA,IAAA,CAAK,IAAA,CAAK,YAAY,OAAO,CAAA;AAC7B,UAAA;AAAA,QACF,CAAA,MAAA,IAAW,KAAK,eAAA,EAAiB;AAC/B,UAAA,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,eAAe,CAAA;AAAA,QAC5C;AACA,QAAA,IAAA,CAAK,cAAA,GAAiB,MAAA;AACtB,QAAA,IAAA,CAAK,eAAA,GAAkB,OAAA;AACvB,QAAA,OAAA,CAAQ,UAAA;AAAA,UACN,KAAK,OAAA,CAAQ,OAAA,KAAY,MAAA,GAAY,IAAA,CAAK,QAAQ,OAAA,GAAU;AAAA,SAC9D;AACA,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,KAAW,IAAA,EAAM;AAChC,UAAA,OAAA,CAAQ,WAAA,EAAY;AAAA,QACtB;AACA,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,KAAW,KAAA,EAAO;AACjC,UAAA,OAAA,CAAQ,YAAA,EAAa;AAAA,QACvB;AACA,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,KAAW,MAAA,EAAW;AACrC,UAAA,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AAAA,QACvC;AAAA,MACF,CAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAQ,GAAI,IAAA,CAAK,OAAA;AAClC,IAAA,IACG,OAAA,IAAW,IAAA,CAAK,IAAA,CAAK,OAAA,EAAQ,GAAI,OAAA,IACjC,OAAA,IAAW,IAAA,CAAK,IAAA,CAAK,OAAA,EAAQ,GAAI,OAAA,EAClC;AACA,MAAA,IAAA,CAAK,IAAA,CAAK,YAAY,OAAO,CAAA;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,WAAW,OAAA,EAAuB;AAChC,IAAA,IAAA,CAAK,QAAQ,OAAA,GAAU,OAAA;AACvB,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,eAAA,CAAgB,WAAW,OAAO,CAAA;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,WAAA,GAAoB;AAClB,IAAA,IAAA,CAAK,QAAQ,MAAA,GAAS,IAAA;AACtB,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,gBAAgB,WAAA,EAAY;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,YAAA,GAAqB;AACnB,IAAA,IAAA,CAAK,QAAQ,MAAA,GAAS,KAAA;AACtB,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,gBAAgB,YAAA,EAAa;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,UAAU,MAAA,EAAsB;AAC9B,IAAA,IAAA,CAAK,QAAQ,MAAA,GAAS,MAAA;AACtB,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,eAAA,CAAgB,UAAU,MAAM,CAAA;AAAA,IACvC;AAAA,EACF;AAAA;AAAA,EAGA,gBAAgB,GAAA,EAAiB;AAC/B,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,GAAA,GAAM,IAAA,CAAK,IAAA;AAAA,IACb;AAEA,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,OAAA,CAAQ,cAAA,IAAkB,CAAA;AACtD,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,SAAA,EAAU,CAAE,IAAI,cAAc,CAAA;AACjD,IAAA,MAAM,IAAA,GAAO,IAAI,OAAA,EAAQ;AACzB,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,cAAA,KAAmB,CAAA,EAAG;AACrC,MAAA,MAAM,SAAS,cAAA,GAAiB,CAAA;AAChC,MAAA,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,MAAM,CAAA;AAClC,MAAA,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,MAAM,CAAA;AAAA,IACpC;AACA,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,IAAI,OAAA,CAAQ,GAAA;AAE5C,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAM,EAAA,GAAK,GAAA,CAAI,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA;AAC5C,MAAA,MAAM,EAAA,GAAK,GAAA,CAAI,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA;AAG5C,MAAA,MAAM,MAAA,GAAc;AAAA,QAClB,OAAO,IAAA,CAAK,CAAA;AAAA,QACZ,QAAQ,IAAA,CAAK;AAAA,OACf;AACA,MAAA,MAAA,CAAO,IAAA,GAAO,CAAC,EAAA,CAAG,CAAA,EAAG,GAAG,CAAA,EAAG,EAAA,CAAG,CAAA,EAAG,EAAA,CAAG,CAAC,CAAA;AAErC,MAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,MAAM,CAAA;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,WAAA,GAAsB;AACpB,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,SAAA,IAAa,KAAA;AAC5C,IAAA,MAAM,OAAO,IAAA,CAAK,cAAA,CAAe,KAAK,SAAA,EAAW,IAAA,CAAK,MAAM,SAAS,CAAA;AACrE,IAAA,OAAO,KAAK,IAAA,GAAO,IAAA;AAAA,EACrB;AACF;;;;;;;;;;;;;;;;;;;;;;AC5PO,MAAM,qBACH,WAAA,CAEV;AAAA,EAHO,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAML,IAAAJ,eAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA,EAAA;AAAA,EAEA,SAAS,OAAA,EAAmC;AAtB9C,IAAA,IAAA,EAAA;AAuBI,IAAA,MAAM,GAAA,GAAM,WAAW,OAAA,CAAQ,GAAA;AAC/B,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAM,yBAAyB,OAAA,CAAQ,eAAA;AACvC,MAAA,MAAM,OAAA,GAAU,uBAAuB,OAAO,CAAA;AAC9C,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,UAAA,CAAW,GAAA,EAAKG,eAAA,CAAAF,gBAAA,CAAAA,gBAAA,CAAAA,gBAAA,CAAA;AAAA,QAC/B,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,cAAc,OAAA,CAAQ;AAAA,OAAA,EAEnBE,eAAA,CAAAF,gBAAA,CAAA;AAAA,QACD,WAAA,EAAa;AAAA,OAAA,EACV,OAAA,CAAA,EAFF;AAAA,QAGD,OAAA,EAAA,CAAS,EAAA,GAAA,OAAA,CAAQ,OAAA,KAAR,IAAA,GAAA,EAAA,GAAmB;AAAA,OAC9B,CAAA,CAAA,EACG,OAAA,CAAQ,MAAA,CAAA,EACR,OAAA,CAAQ,aAAA,CAAA,EAVoB;AAAA,QAW/B;AAAA,OACF,CAAC,CAAA;AACD,MAAA,IAAI,sBAAA,EAAwB;AAC1B,QAAA,MAAM,eAAA,GAAkB,KAAK,KAAA,CAAM,eAAA;AACnC,QAAA,IAAA,CAAK,KAAA,CAAM,eAAA,GAAkB,SAAU,GAAA,EAAU;AAC/C,UAAA,eAAA,CAAgB,IAAA,CAAK,MAAM,GAAG,CAAA;AAC9B,UAAA,IAAA,CAAK,SAAA,GAAY,sBAAA,CAAuB,IAAA,CAAK,SAAS,CAAA;AAAA,QACxD,CAAA;AAAA,MACF;AACA,MAAA,OAAO,IAAA,CAAK,KAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEA,YAAY,OAAA,EAA2C;AACrD,IAAA,IAAI,KAAK,KAAA,EAAO;AACd,MAAA,MAAM,MAAA,GAAA,CAAS,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,MAAA,KAAU,EAAC;AAEnC,MAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,SAAA,EAAW,MAAM,CAAA;AACxC,MAAA,IAAA,CAAK,MAAM,MAAA,EAAO;AAAA,IACpB;AAAA,EACF;AACF;AAzCED,eAAA,CAJW,cAIJ,OAAA,EAAQ,UAAA,CAAA;;AChBV,SAAS,QAAA,CACd,EAAA,EACA,IAAA,GAAO,EAAA,EACoB;AAC3B,EAAA,IAAI,SAAA;AAEJ,EAAA,SAAS,WAAsB,IAAA,EAAa;AAC1C,IAAA,OAAA,CAAQ,KAAA,EAAM;AAEd,IAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,EAAA,CAAG,KAAA,CAAM,MAAM,IAAI,CAAA;AAAA,IACrB,GAAG,IAAI,CAAA;AAAA,EACT;AAEA,EAAA,OAAA,CAAQ,QAAQ,WAAY;AAC1B,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,YAAA,CAAa,SAAS,CAAA;AACtB,MAAA,SAAA,GAAY,IAAA;AAAA,IACd;AAAA,EACF,CAAA;AAEA,EAAA,OAAO,OAAA;AACT;;ACjBO,SAAS,WAAsC,IAAA,EAAoB;AACxE,EAAA,OAAO,MAAM,wBAAwB,IAAA,CAAK;AAAA,IACxC,eAAe,IAAA,EAAa;AAC1B,MAAA,KAAA,CAAM,GAAG,IAAI,CAAA;AACb,MAAA,IAAI,IAAA,CAAK,QAAQ,YAAA,EAAc;AAC7B,QAAA,IAAA,CAAK,OAAA,GAAU,QAAA,CAAS,CAAA,GAAI,CAAA,KAAa;AAEvC,UAAA,SAAA,CAAU,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,GAAG,CAAC,CAAA;AAAA,QAC7C,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,YAAY,CAAA;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,UAAA,CACE,QACA,IAAA,EACkB;AAClB,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA;AAElC,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AACzC,MAAA,MAAM,CAAC,OAAA,EAAS,SAAS,CAAA,GAAI,QAAA,CAAS;AAAA,QACpC,GAAA;AAAA,QACA,eAAA,EAAiB,KAAK,OAAA,CAAQ,eAAA;AAAA,QAC9B,OAAA,EAAS,KAAK,OAAA,CAAQ,OAAA;AAAA,QACtB,OAAA,EAAS,KAAK,OAAA,CAAQ;AAAA,OACvB,CAAA;AACD,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,QAAA,KAAa;AACzB,QAAA,IAAA,CAAK,GAAA,GAAM,QAAA;AACX,QAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,MACjB,CAAC,CAAA;AACD,MAAC,KAAa,KAAA,GAAQ,SAAA;AAEtB,MAAA,IAAI,KAAK,OAAA,CAAQ,WAAA,IAAe,IAAA,CAAK,OAAA,CAAQ,gBAAgB,EAAA,EAAI;AAC/D,QAAA,IAAA,CAAK,cACH,IAAA,CAAK,OAAA,CAAQ,gBAAgB,IAAA,GAAO,EAAA,GAAK,KAAK,OAAA,CAAQ,WAAA;AAAA,MAC1D;AAEA,MAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,MAAA,IAAA,CAAK,YAAA,CAAa,QAAQ,cAAc,CAAA;AAExC,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,IAEA,aAAA,GAAgB;AACd,MAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AAEnB,MAAA,MAAM,WAAW,IAAA,CAAK,SAAA;AACtB,MAAA,KAAA,MAAW,KAAK,KAAA,EAAO;AACrB,QAAA,IAAI,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,CAAO,MAAM,QAAA,EAAU;AAClC,UAAA,MAAM,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,CAAE,EAAA;AAEtB,UAAA,IAAA,CAAK,SAAS,IAAA,CAAK,OAAA;AACnB,UAAA,IAAA,CAAK,UAAU,IAAA,CAAK,OAAA;AACpB,UAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,YAAA,IAAI,KAAK,KAAA,EAAO;AACd,cAAA,IAAA,CAAK,KAAA,EAAM;AAAA,YACb;AACA,YAAA,IAAA,CAAK,MAAM,IAAA,CAAK,aAAA;AAChB,YAAA,OAAA,CAAQ,OAAO,IAAI,CAAA;AACnB,YAAA,OAAO,MAAM,CAAC,CAAA;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;ACxDA,MAAM,sBAAsBM,WAAA,CAAG;AAAA,EAC7B,WAAA,CAAY,aAAqB,OAAA,EAAoC;AACnE,IAAA,KAAA,CAAM,aAAa,OAAO,CAAA;AAC1B,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AAAA,EACrC;AACF;AAEO,MAAM,SAAA,GAAY,WAAW,aAAa,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACR1C,MAAM,oBACH,WAAA,CAEV;AAAA,EACE,SAAS,OAAA,EAAoD;AAC3D,IAAA,IAAA,CAAK,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,SAAS,OAAO,CAAA;AAClD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,MAAwB,cAAhB,EAAA,GAAA,EAtBd,GAsB8B,EAAA,EAAR,GAAA,GAAAJ,WAAA,CAAQ,IAAR,CAAR,KAAA,CAAA,CAAA;AACR,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,MAAM,gBAAA,GAAqCD,gBAAA,CAAA;AAAA,UACzC,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,aAAa,GAAA,CAAI,WAAA;AAAA,UACjB,SAAS,GAAA,CAAI,OAAA;AAAA,UACb,SAAS,GAAA,CAAI;AAAA,SAAA,EAEV,GAAA,CAAI,aAAA,CAAA;AAET,QAAA,IAAI,IAAI,UAAA,EAAY;AAClB,UAAA,gBAAA,CAAiB,aAAa,GAAA,CAAI,UAAA;AAAA,QACpC;AACA,QAAA,IAAI,KAAA;AACJ,QAAA,MAAM,OAAA,GAAU,uBAAuB,GAAG,CAAA;AAC1C,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,KAAA,GAAQ,IAAIK,SAAA,CAAG,GAAA,EAAKH,eAAA,CAAAF,gBAAA,CAAA,EAAA,EACf,gBAAA,CAAA,EADe;AAAA,YAElB,OAAA;AAAA,YACA,cAAc,GAAA,CAAI;AAAA,WACpB,CAAC,CAAA;AAAA,QACH,CAAA,MAAO;AACL,UAAA,KAAA,GAAQ,IAAIM,WAAA,CAAU,GAAA,EAAK,gBAAgB,CAAA;AAAA,QAC7C;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,YAAY,OAAA,EAAqC;AAC/C,IAAA,IAAI,KAAK,KAAA,EAAO;AAEd,MAAA,MAAM,UAAA,GAAa,KAAK,KAAA,CAAM,IAAA;AAC9B,MAAA,IAAI,mCAAS,MAAA,EAAQ;AACnB,QAAA,IAAA,CAAK,MAAM,MAAA,CAAO,eAAA,CAAgB,UAAA,EAAY,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MAC/D;AACA,MAAA,IAAA,CAAK,MAAM,MAAA,EAAO;AAAA,IACpB;AAAA,EACF;AACF;;;;;;;;;;;;;;;;;;;;;ACxDO,MAAM,mBAAmB,WAAA,CAAwC;AAAA,EACtE,SAAS,OAAA,EAAiE;AACxE,IAAA,MAAM,GAAA,GAAM,oDAAA;AACZ,IAAA,OAAO,MAAM,QAAA,CAASJ,eAAA,CAAAF,gBAAA,CAAA;AAAA,MACpB,IAAA,EAAM,eAAA;AAAA,MACN,WAAA,EACE;AAAA,KAAA,EACC,OAAA,CAAA,EAJiB;AAAA,MAKpB;AAAA,KACF,CAAC,CAAA;AAAA,EACH;AACF;;ACDA,MAAM,YAAA,SAAqBM,YAAU,GAAA,CAAI;AAAA,EACvC,WAAA,CAAY,aAAqB,OAAA,EAAuB;AACtD,IAAA,KAAA,CAAM,aAAa,OAAO,CAAA;AAAA,EAC5B;AACF;AAEO,MAAM,QAAA,GAAW,WAAW,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXxC,MAAM,mBACH,WAAA,CAEV;AAAA,EACE,SAAS,OAAA,EAAuD;AAdlE,IAAA,IAAA,EAAA;AAeI,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AACnC,IAAA,MAAwB,cAAhB,EAAA,GAAA,EAhBZ,GAgB4B,EAAA,EAAR,GAAA,GAAA,SAAA,CAAQ,IAAR,CAAR,KAAA,CAAA,CAAA;AACR,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAM,YAAA,GAA2BN,gBAAA,CAAAA,gBAAA,CAAA;AAAA,QAC/B,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,aAAa,GAAA,CAAI,WAAA;AAAA,QACjB,SAAS,GAAA,CAAI,OAAA;AAAA,QACb,SAAS,GAAA,CAAI,OAAA;AAAA,QACb,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,WAAA,EAAA,CAAa,EAAA,GAAA,OAAA,CAAQ,WAAA,KAAR,IAAA,GAAA,EAAA,GAAuB;AAAA,OAAA,EACjC,OAAA,CAAQ,SACR,OAAA,CAAQ,aAAA,CAAA;AAEb,MAAA,IAAI,KAAA;AACJ,MAAA,MAAM,OAAA,GAAU,uBAAuB,GAAG,CAAA;AAC1C,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,KAAA,GAAQ,IAAIO,QAAA,CAAI,GAAA,EAAK,aAAA,CAAAP,gBAAA,CAAA,EAAA,EAChB,YAAA,CAAA,EADgB;AAAA,UAEnB;AAAA,SACF,CAAC,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,KAAA,GAAQ,IAAIM,WAAA,CAAU,GAAA,CAAI,GAAA,EAAK,YAAY,CAAA;AAAA,MAC7C;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACF;;ACxCO,SAAS,wBACd,MAAA,EACwB;AACxB,EAAA,MAAM,CAAA,GAAI,MAAA;AAEV,EAAA,OAAO;AAAA,IACL,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,IACX,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC;AAAA,GACb;AACF;;;;;;;;;;;;;;;;;;;ACqCO,MAAM,kBAAA,GAAN,MAAM,kBAAA,CAA2D;AAAA,EAAjE,WAAA,GAAA;AAmBL,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,EAA2B,EAAE,QAAQ,KAAA,EAAM,CAAA;AAE3C,IAAA,aAAA,CAAA,IAAA,EAAA,eAAA,EAAgB,kBAAA,CAAkB,aAAA,CAAA;AAClC,IAAA,aAAA,CAAA,IAAA,EAAA,iBAAA,EAAkB,kBAAA,CAAkB,eAAA,CAAA;AACpC,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,EAAU,IAAI,YAAA,EAAa,CAAA;AAC3B,IAAA,aAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAQ,iBAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,mBAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,eAA6B,EAAC,CAAA;AACtC,IAAA,aAAA,CAAA,IAAA,EAAQ,kBAAA,EAA4C;AAAA,MAClD,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAQ,iBAAA,EAA2C;AAAA,MACjD,WAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,EAAA;AAAA,EAEA,OAAO,OAAA,EAAgC;AACrC,IAAA,IAAA,CAAK,UAAU,cAAA,CAAA,EAAA,EAAK,OAAA,CAAA;AACpB,IAAA,IAAI,IAAA,CAAK,QAAQ,MAAA,EAAQ;AACvB,MAAA,MAAM;AAAA,QACJ,IAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,QACX;AAAA,UACE,IAAA,CAAK,OAAA;AAET,MAAA,IAAA,CAAK,GAAA,GACH,KAAK,OAAA,CAAQ,GAAA,IACb,IAAI,GAAA,CAAI,IAAA,CAAK,QAAQ,MAAA,EAAQ,cAAA,CAAA;AAAA,QAC3B,kBAAA,EAAoB,KAAA;AAAA,QACpB,WAAA,EAAa,KAAA;AAAA,QACb,SAAA,EAAW,EAAA,GAAK,uBAAA,CAAwB,EAAE,CAAA,GAAI,MAAA;AAAA,QAC9C,OAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA,EAAQ,UAAU,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,QACvC;AAAA,OAAA,EACG,iBAAA,CACJ,CAAA;AAEH,MAAA,IAAA,CAAK,wBAAwB,OAAO,CAAA;AACpC,MAAA,IAAA,CAAK,+BAAA,EAAgC;AAErC,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA;AAC7C,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,uBAAA,CAAwB,IAAA,CAAK,GAAG,CAAA;AAC7D,MAAC,IAAA,CAAK,GAAA,CAAY,cAAA,GAAiB,CAAC,GAAA,KAAqB;AACvD,QAAA,IAAA,CAAK,eAAe,GAAG,CAAA;AAAA,MACzB,CAAA;AACA,MAAA,OAAA,CAAQ,KAAA,CAAM,MAAA,GAAS,MAAA,CAAO,CAAC,CAAA;AAC/B,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA;AAChC,MAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,OAAA,GAAgB;AACd,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,IAAI,MAAA,EAAO;AAAA,IAClB;AACA,IAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,MAAA,IAAA,CAAK,kBAAkB,MAAA,EAAO;AAC9B,MAAA,IAAA,CAAK,iBAAA,GAAoB,MAAA;AAAA,IAC3B;AACA,IAAA,IAAA,CAAK,mCAAA,EAAoC;AAAA,EAC3C;AAAA,EAEA,YAAA,GAAwC;AACtC,IAAA,OAAO,IAAA,CAAK,GAAA,IAAO,IAAA,CAAK,GAAA,CAAI,YAAA,EAAa;AAAA,EAC3C;AAAA,EAEA,mBAAA,GAAmC;AACjC,IAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,MAAA,OAAO,IAAA,CAAK,kBAAkB,YAAA,EAAa;AAAA,IAC7C;AACA,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,GAAA,IAAQ,IAAA,CAAK,GAAA,CAAY,iBAAA;AACvD,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,OAAO,gBAAA;AAAA,IACT;AACA,IAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,EACtD;AAAA,EAEA,UAAU,MAAA,EAAsB;AAC9B,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,GAAA,CAAI,YAAA,EAAa,CAAE,KAAA,CAAM,MAAA,GAAS,MAAA;AAAA,IACzC;AAAA,EACF;AAAA,EAIA,OAAA,CAAQ,aAAwC,IAAA,EAAqB;AACnE,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,MAAA,MAAM,MAAA,GAAS,WAAA;AACf,MAAA,MAAM,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,MAAA;AACnB,MAAA,IAAI,KAAK,GAAA,EAAK;AACZ,QAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,CAAC,GAAA,EAAK,GAAG,GAAG,IAAA,EAAM,EAAE,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,QACvD,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,SAAA,CAAU,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,EAAE,MAAAE,KAAAA,EAAM,MAAA,EAAQ,WAAW,MAAA,EAAQ,OAAA,EAAS,SAAQ,GAAI,WAAA;AAC9D,MAAA,IAAI,MAAA,IAAUA,UAAS,MAAA,EAAW;AAChC,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAQA,KAAI,CAAA;AAAA,MAC3B,CAAA,MAAO;AACL,QAAA,IAAIA,UAAS,MAAA,EAAW;AACtB,UAAA,IAAA,CAAK,QAAQA,KAAI,CAAA;AAAA,QACnB;AACA,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,IAAA,CAAK,UAAU,MAAM,CAAA;AAAA,QACvB;AAAA,MACF;AACA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,IAAA,CAAK,UAAU,MAAM,CAAA;AAAA,MACvB;AACA,MAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,MAAM,CAAA,GAAI,wBAAwB,SAAS,CAAA;AAC3C,UAAA,GAAA,CAAI,aAAa,CAAC,CAAA;AAClB,UAAA,IAAA,CAAK,uBAAA,EAAwB;AAAA,QAC/B,CAAA,MAAO;AAEL,UAAA,GAAA,CAAI,aAAa,IAAI,CAAA;AACrB,UAAA,IAAA,CAAK,uBAAA,EAAwB;AAAA,QAC/B;AAAA,MACF;AACA,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,GAAA,CAAI,WAAW,OAAO,CAAA;AAAA,MACxB;AACA,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,IAAA,CAAK,wBAAwB,OAAO,CAAA;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,UAAU,MAAA,EAA2B;AACnC,IAAA,MAAM,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,MAAA;AACnB,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,SAAA,GAAqC;AACnC,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAM,MAAA,GAAS,IAAI,SAAA,EAAU;AAC7B,MAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,MAAA,OAAO,CAAC,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,GAAG,CAAA;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,QAAQ,IAAA,EAAoB;AAC1B,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,GAAA,CAAI,QAAQ,IAAI,CAAA;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,OAAA,GAA8B;AA3OhC,IAAA,IAAA,EAAA;AA4OI,IAAA,OAAA,CAAQ,UAAK,GAAA,IAAO,IAAA,CAAK,GAAA,CAAI,OAAA,OAArB,IAAA,GAAA,EAAA,GAAmC,MAAA;AAAA,EAC7C;AAAA,EAEA,SAAA,GAA2C;AACzC,IAAA,IAAI,CAAC,IAAA,CAAK,GAAA,EAAK,OAAO,MAAA;AACtB,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,SAAA,EAAU;AAC7B,IAAA,MAAM,EAAA,GAAK,EAAE,YAAA,EAAa;AAC1B,IAAA,MAAM,EAAA,GAAK,EAAE,YAAA,EAAa;AAC1B,IAAA,OAAO,CAAC,GAAG,GAAA,EAAK,EAAA,CAAG,KAAK,EAAA,CAAG,GAAA,EAAK,GAAG,GAAG,CAAA;AAAA,EACxC;AAAA;AAAA,EAGA,SAAA,CAAU,MAAA,EAA2B,OAAA,GAAsB,EAAC,EAAS;AACnE,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ,GAAI,OAAA;AACrC,MAAA,MAAM,MAAwB,EAAC;AAC/B,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,GAAA,CAAI,OAAA,GAAU,OAAA;AAAA,MAChB;AACA,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,GAAA,CAAI,OAAA,GAAU,CAAC,OAAA,EAAS,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,GAAA,CAAI,OAAA,GAAU,MAAA;AAAA,MAChB;AAEA,MAAA,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,uBAAA,CAAwB,MAAM,GAAG,GAAG,CAAA;AAAA,IACzD;AAAA,EACF;AAAA,EAEA,gBAAgB,IAAA,EAAiD;AAC/D,IAAA,OAAO,kBAAA,CAAkB,cAAc,IAAI,CAAA;AAAA,EAC7C;AAAA,EAEA,aAAA,CAAc,SAAqB,OAAA,EAAwC;AACzE,IAAA,OAAO,aAAA,CAAc,OAAA,EAAS,OAAA,EAAS,IAAI,CAAA;AAAA,EAC7C;AAAA,EAEA,oBAAoB,OAAA,EAAwC;AAC1D,IAAA,OAAO,mBAAA,CAAoB,SAAS,IAAI,CAAA;AAAA,EAC1C;AAAA,EAEA,oBAAoB,OAAA,EAAwD;AAC1E,IAAA,OAAO,mBAAA,CAAoB,SAAS,IAAI,CAAA;AAAA,EAC1C;AAAA,EAEA,UAAA,CACE,OAAA,EACA,QAAA,EACA,OAAA,EACqB;AACrB,IAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,MAAA,OAAO,IAAA,CAAK,iBAAA,CAAkB,UAAA,CAAW,OAAA,EAAS,UAAU,OAAO,CAAA;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,cAAc,OAAA,EAAwB;AACpC,IAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,MAAA,IAAA,CAAK,iBAAA,CAAkB,cAAc,OAAO,CAAA;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,YAAY,KAAA,EAAoB;AAC9B,IAAA,IAAI,KAAA,IAAS,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAO;AAAA,EAC1C;AAAA,EAEA,UAAU,KAAA,EAAoB;AAC5B,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,KAAA,CAAM,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,UAAU,KAAA,EAAoB;AAC5B,IAAA,KAAA,CAAM,MAAA,EAAO;AAAA,EACf;AAAA,EAEA,eAAA,CAAgB,OAA0B,KAAA,EAAqB;AAC7D,IAAA,IAAI,gBAAgB,KAAA,EAAO;AACzB,MAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,aAAA,CACE,KAAA,EACA,KAAA,EACA,MAAA,EACM;AAAA,EAER;AAAA,EAEA,WAAW,GAAA,EAA8B;AACvC,IAAA,MAAM,SAAA,GAAY,qBAAqB,GAAG,CAAA;AAC1C,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,EAAY,SAAS,CAAA;AACvC,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAS,SAAS,CAAA;AAAA,EACtC;AAAA,EAEA,MAAA,CAAO,KAAoB,MAAA,EAAiC;AAC1D,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,GAAA,CAAI,OAAO,GAAG,CAAA;AACd,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,EAAE,aAAA,EAAe,aAAA,EAAc,GAAI,MAAA;AACzC,QAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAoB;AACzC,UAAA,MAAM,KAAA,GAAQ,CAAA;AACd,UAAA,MAAM,SAA2B,CAAC,KAAA,CAAM,OAAO,GAAA,EAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AACpE,UAAA,aAAA,CAAc,EAAE,QAAQ,CAAA;AAAA,QAC1B,CAAA;AACA,QAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,UAAA,GAAA,CAAI,EAAA,CAAG,eAAA,EAAiB,aAAA,EAAe,IAAI,CAAA;AAAA,QAC7C;AACA,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,GAAA,CAAI,EAAA,CAAG,eAAA,EAAiB,aAAA,EAAe,IAAI,CAAA;AAAA,QAC7C;AACA,QAAA,MAAMC,QAAO,MAAM;AACjB,UAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,YAAA,GAAA,CAAI,GAAA,CAAI,iBAAiB,aAAa,CAAA;AAAA,UACxC;AACA,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,GAAA,CAAI,GAAA,CAAI,iBAAiB,aAAa,CAAA;AAAA,UACxC;AAAA,QACF,CAAA;AACA,QAAA,OAAO,EAAE,MAAAA,KAAAA,EAAK;AAAA,MAChB;AAAA,IACF;AACA,IAAA,MAAM,OAAO,MAAM,MAAA;AACnB,IAAA,OAAO,EAAE,IAAA,EAAK;AAAA,EAChB;AAAA,EAEQ,eAAe,EAAA,EAAiB;AACtC,IAAA,KAAA,MAAW,CAAA,IAAK,KAAK,WAAA,EAAa;AAChC,MAAA,CAAA,EAAE;AAAA,IACJ;AACA,IAAA,IAAA,CAAK,YAAY,MAAA,GAAS,CAAA;AAC1B,IAAA,IAAA,CAAK,WAAA,CAAY,KAAK,EAAE,CAAA;AAAA,EAC1B;AAAA,EAEQ,+BAAA,GAAkC;AACxC,IAAA,IAAA,CAAK,mCAAA,EAAoC;AACzC,IAAA,MAAM,SAAA,GAAY,KAAK,YAAA,EAAa;AACpC,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,SAAA,IAAa,GAAA,IAAO,MAAA,CAAO,cAAA,EAAgB;AAC7C,MAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,cAAA,CAAe,MAAM;AAC9C,QAAA,IAAA,CAAK,uBAAA,EAAwB;AAAA,MAC/B,CAAC,CAAA;AACD,MAAA,IAAA,CAAK,eAAA,CAAgB,QAAQ,SAAS,CAAA;AAAA,IACxC;AAAA,EACF;AAAA,EAEQ,mCAAA,GAAsC;AAC5C,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,gBAAgB,UAAA,EAAW;AAChC,MAAA,IAAA,CAAK,eAAA,GAAkB,MAAA;AAAA,IACzB;AAAA,EACF;AAAA,EAEQ,gBAAA,GAAmB;AACzB,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,GAAA,CAAI,EAAA,CAAG,OAAA,EAAS,CAAC,GAAA,KAAQ;AACvB,QAAA,IAAA,CAAK,WAAW,GAAwB,CAAA;AAAA,MAC1C,CAAC,CAAA;AACD,MAAA,KAAA,MAAW,CAAA,IAAK,KAAK,gBAAA,EAAkB;AACrC,QAAA,GAAA,CAAI,EAAA,CAAG,GAAG,MAAM,IAAA,CAAK,QAAQ,IAAA,CAAK,CAAA,EAAG,IAAI,CAAA,EAAG,GAAG,CAAA;AAAA,MACjD;AAEA,MAAA,GAAA,CAAI,EAAA,CAAG,aAAa,MAAM;AACxB,QAAA,YAAA,CAAa,MAAM,KAAA,EAAM;AAAA,MAC3B,CAAC,CAAA;AACD,MAAA,GAAA,CAAI,EAAA,CAAG,aAAa,MAAM;AACxB,QAAA,YAAA,CAAa,MAAM,KAAA,EAAM;AAAA,MAC3B,CAAC,CAAA;AAED,MAAA,KAAA,MAAW,CAAA,IAAK,KAAK,eAAA,EAAiB;AACpC,QAAA,GAAA,CAAI,EAAA;AAAA,UACF,CAAA;AAAA,UACA,CAAC,GAAA,KACC,IAAA,CAAK,OAAA,CAAQ,IAAA;AAAA,YACX,CAAA;AAAA,YACA,qBAAqB,GAAwB;AAAA,WAC/C;AAAA,UACF;AAAA,SACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,wBAAwB,IAAA,EAAe;AAtajD,IAAA,IAAA,EAAA;AAuaI,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,IAAA,GAAO,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,IAAI,UAAA,EAAW;AAC9B,MAAA,MAAM,aAAA,GAAgB,YAAA;AAAA,QACpB,MAAA,CAAO,KAAK,KAAM,CAAA;AAAA,QAClB,MAAA,CAAO,IAAI,IAAK;AAAA,OAClB;AACA,MAAA,MAAM,SAAA,GAAA,CAAY,EAAA,GAAA,GAAA,CAAI,OAAA,CAAQ,SAAA,KAAZ,IAAA,GAAA,EAAA,GAAyB,aAAA;AAC3C,MAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,QAAA,GAAA,CAAI,WAAW,CAAC,CAAA;AAChB,QAAA,MAAM,UAAA,GAAa,GAAA,CAAI,aAAA,CAAc,SAAA,EAAW,IAAI,CAAA;AACpD,QAAA,MAAM,OAAA,GAAU,IAAA,GAAO,UAAA,GAAa,UAAA,GAAa,IAAA;AAEjD,QAAA,GAAA,CAAI,QAAQ,OAAA,GAAU,OAAA;AACtB,QAAA,GAAA,CAAI,WAAW,OAAO,CAAA;AAEtB,QAAA,IAAI,GAAA,CAAI,OAAA,EAAQ,GAAI,OAAA,EAAS;AAC3B,UAAA,GAAA,CAAI,QAAQ,OAAO,CAAA;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAA;AA3YE,aAAA,CADW,oBACJ,eAAA,EAEH;AAAA,EACF,OAAA,EAAS,cAAA;AAAA,EACT,KAAA,EAAO,YAAA;AAAA,EACP,IAAA,EAAM,WAAA;AAAA,EACN,GAAA,EAAK,UAAA;AAAA;AAAA,EAEL,GAAA,EAAK;AACP,CAAA,CAAA;AAEA,aAAA,CAZW,oBAYJ,iBAAA,EAAkB;AAAA,EACvB,MAAM,OAAA,CAAQ,IAAA;AAAA,EACd,WAAA,EAAa;AACf,CAAA,CAAA;AAEA,aAAA,CAjBW,oBAiBJ,KAAA,EAAM,GAAA,CAAA;AAjBR,IAAM,iBAAA,GAAN;;;;"}