UNPKG

59.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"asymmetrik-ngx-leaflet.mjs","sources":["../../../projects/ngx-leaflet/src/lib/core/leaflet.util.ts","../../../projects/ngx-leaflet/src/lib/core/leaflet.directive.ts","../../../projects/ngx-leaflet/src/lib/core/leaflet.directive.wrapper.ts","../../../projects/ngx-leaflet/src/lib/layers/leaflet-layer.directive.ts","../../../projects/ngx-leaflet/src/lib/layers/leaflet-layers.directive.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers-changes.model.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers.wrapper.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers-config.model.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers.directive.ts","../../../projects/ngx-leaflet/src/lib/layers/base/leaflet-baselayers.directive.ts","../../../projects/ngx-leaflet/src/lib/leaflet.module.ts","../../../projects/ngx-leaflet/src/lib/layers/leaflet-tile-layer-definition.model.ts","../../../projects/ngx-leaflet/src/asymmetrik-ngx-leaflet.ts"],"sourcesContent":["import { EventEmitter, NgZone } from '@angular/core';\n\nexport class LeafletUtil {\n\n\tstatic mapToArray<T>(map: { [ key: string ]: T }): T[] {\n\t\tconst toReturn: T[] = [];\n\n\t\tfor (const k in map) {\n\t\t\tif (map.hasOwnProperty(k)) {\n\t\t\t\ttoReturn.push(map[k]);\n\t\t\t}\n\t\t}\n\n\t\treturn toReturn;\n\t}\n\n\tstatic handleEvent<T>(zone: NgZone, eventEmitter: EventEmitter<T>, event: T) {\n\n\t\t// Don't want to emit if there are no observers\n\t\tif (0 < eventEmitter.observers.length) {\n\t\t\tzone.run(() => {\n\t\t\t\teventEmitter.emit(event);\n\t\t\t});\n\t\t}\n\n\t}\n}\n","import {\n\tDirective, ElementRef, EventEmitter, HostListener, Input, NgZone, OnChanges, OnDestroy, OnInit, Output,\n\tSimpleChange\n} from '@angular/core';\n\nimport { latLng, LatLng, LatLngBounds, LeafletEvent, LeafletMouseEvent, map, Map, MapOptions } from 'leaflet';\n\nimport { LeafletUtil } from './leaflet.util';\n\n@Directive({\n\tselector: '[leaflet]'\n})\nexport class LeafletDirective\n\timplements OnChanges, OnDestroy, OnInit {\n\n\treadonly DEFAULT_ZOOM = 1;\n\treadonly DEFAULT_CENTER = latLng(38.907192, -77.036871);\n\treadonly DEFAULT_FPZ_OPTIONS = {};\n\n\tresizeTimer: any;\n\n\t// Reference to the primary map object\n\tmap: Map;\n\n\t@Input('leafletFitBoundsOptions') fitBoundsOptions = this.DEFAULT_FPZ_OPTIONS;\n\t@Input('leafletPanOptions') panOptions = this.DEFAULT_FPZ_OPTIONS;\n\t@Input('leafletZoomOptions') zoomOptions = this.DEFAULT_FPZ_OPTIONS;\n\t@Input('leafletZoomPanOptions') zoomPanOptions = this.DEFAULT_FPZ_OPTIONS;\n\n\n\t// Default configuration\n\t@Input('leafletOptions') options: MapOptions = {};\n\n\t// Configure callback function for the map\n\t@Output('leafletMapReady') mapReady = new EventEmitter<Map>();\n\n\t// Zoom level for the map\n\t@Input('leafletZoom') zoom: number;\n\t@Output('leafletZoomChange') zoomChange = new EventEmitter<number>();\n\n\t// Center of the map\n\t@Input('leafletCenter') center: LatLng;\n\t@Output('leafletCenterChange') centerChange = new EventEmitter<LatLng>();\n\n\t// Set fit bounds for map\n\t@Input('leafletFitBounds') fitBounds: LatLngBounds;\n\n\t// Set the max bounds for the map\n\t@Input('leafletMaxBounds') maxBounds: LatLngBounds;\n\n\t// Set the min zoom for the map\n\t@Input('leafletMinZoom') minZoom: number;\n\n\t// Set the max zoom for the map\n\t@Input('leafletMaxZoom') maxZoom: number;\n\n\n\t// Mouse Map Events\n\t@Output('leafletClick') onClick = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletDoubleClick') onDoubleClick = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseDown') onMouseDown = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseUp') onMouseUp = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseMove') onMouseMove = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseOver') onMouseOver = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseOut') onMouseOut = new EventEmitter<LeafletMouseEvent>();\n\n\t// Map Move Events\n\t@Output('leafletMapMove') onMapMove = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapMoveStart') onMapMoveStart = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapMoveEnd') onMapMoveEnd = new EventEmitter<LeafletEvent>();\n\n\t// Map Zoom Events\n\t@Output('leafletMapZoom') onMapZoom = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapZoomStart') onMapZoomStart = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapZoomEnd') onMapZoomEnd = new EventEmitter<LeafletEvent>();\n\n\tconstructor(private element: ElementRef, private zone: NgZone) {\n\t\t// Nothing here\n\t}\n\n\tngOnInit() {\n\n\t\t// Create the map outside of angular so the various map events don't trigger change detection\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Create the map with some reasonable defaults\n\t\t\tthis.map = map(this.element.nativeElement, this.options);\n\t\t\tthis.addMapEventListeners();\n\n\t\t});\n\n\t\t// Only setView if there is a center/zoom\n\t\tif (null != this.center && null != this.zoom) {\n\t\t\tthis.setView(this.center, this.zoom);\n\t\t}\n\n\t\t// Set up all the initial settings\n\t\tif (null != this.fitBounds) {\n\t\t\tthis.setFitBounds(this.fitBounds);\n\t\t}\n\n\t\tif (null != this.maxBounds) {\n\t\t\tthis.setMaxBounds(this.maxBounds);\n\t\t}\n\n\t\tif (null != this.minZoom) {\n\t\t\tthis.setMinZoom(this.minZoom);\n\t\t}\n\n\t\tif (null != this.maxZoom) {\n\t\t\tthis.setMaxZoom(this.maxZoom);\n\t\t}\n\n\t\tthis.doResize();\n\n\t\t// Fire map ready event\n\t\tthis.mapReady.emit(this.map);\n\n\t}\n\n\tngOnChanges(changes: { [key: string]: SimpleChange }) {\n\n\t\t/*\n\t\t * The following code is to address an issue with our (basic) implementation of\n\t\t * zooming and panning. From our testing, it seems that a pan operation followed\n\t\t * by a zoom operation in the same thread will interfere with eachother. The zoom\n\t\t * operation interrupts/cancels the pan, resulting in a final center point that is\n\t\t * inaccurate. The solution seems to be to either separate them with a timeout or\n\t\t * to collapse them into a setView call.\n\t\t */\n\n\t\t// Zooming and Panning\n\t\tif (changes['zoom'] && changes['center'] && null != this.zoom && null != this.center) {\n\t\t\tthis.setView(changes['center'].currentValue, changes['zoom'].currentValue);\n\t\t}\n\t\t// Set the zoom level\n\t\telse if (changes['zoom']) {\n\t\t\tthis.setZoom(changes['zoom'].currentValue);\n\t\t}\n\t\t// Set the map center\n\t\telse if (changes['center']) {\n\t\t\tthis.setCenter(changes['center'].currentValue);\n\t\t}\n\n\t\t// Other options\n\t\tif (changes['fitBounds']) {\n\t\t\tthis.setFitBounds(changes['fitBounds'].currentValue);\n\t\t}\n\n\t\tif (changes['maxBounds']) {\n\t\t\tthis.setMaxBounds(changes['maxBounds'].currentValue);\n\t\t}\n\n\t\tif (changes['minZoom']) {\n\t\t\tthis.setMinZoom(changes['minZoom'].currentValue);\n\t\t}\n\n\t\tif (changes['maxZoom']) {\n\t\t\tthis.setMaxZoom(changes['maxZoom'].currentValue);\n\t\t}\n\n\t}\n\n\tngOnDestroy() {\n\t\t// If this directive is destroyed, the map is too\n\t\tif (null != this.map) {\n\t\t\tthis.map.remove();\n\t\t}\n\t}\n\n\tpublic getMap() {\n\t\treturn this.map;\n\t}\n\n\n\t@HostListener('window:resize', [])\n\tonResize() {\n\t\tthis.delayResize();\n\t}\n\n\tprivate addMapEventListeners() {\n\n\t\tconst registerEventHandler = (eventName: string, handler: (e: LeafletEvent) => any) => {\n\t\t\tthis.map.on(eventName, handler);\n\t\t};\n\n\n\t\t// Add all the pass-through mouse event handlers\n\t\tregisterEventHandler('click', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onClick, e));\n\t\tregisterEventHandler('dblclick', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onDoubleClick, e));\n\t\tregisterEventHandler('mousedown', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseDown, e));\n\t\tregisterEventHandler('mouseup', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseUp, e));\n\t\tregisterEventHandler('mouseover', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseOver, e));\n\t\tregisterEventHandler('mouseout', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseOut, e));\n\t\tregisterEventHandler('mousemove', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseMove, e));\n\n\t\tregisterEventHandler('zoomstart', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapZoomStart, e));\n\t\tregisterEventHandler('zoom', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapZoom, e));\n\t\tregisterEventHandler('zoomend', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapZoomEnd, e));\n\t\tregisterEventHandler('movestart', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapMoveStart, e));\n\t\tregisterEventHandler('move', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapMove, e));\n\t\tregisterEventHandler('moveend', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapMoveEnd, e));\n\n\n\t\t// Update any things for which we provide output bindings\n\t\tconst outputUpdateHandler = () => {\n\t\t\tconst zoom = this.map.getZoom();\n\t\t\tif (zoom !== this.zoom) {\n\t\t\t\tthis.zoom = zoom;\n\t\t\t\tLeafletUtil.handleEvent(this.zone, this.zoomChange, zoom);\n\t\t\t}\n\n\t\t\tconst center = this.map.getCenter();\n\t\t\tif (null != center || null != this.center) {\n\n\t\t\t\tif (((null == center || null == this.center) && center !== this.center)\n\t\t\t\t\t|| (center.lat !== this.center.lat || center.lng !== this.center.lng)) {\n\n\t\t\t\t\tthis.center = center;\n\t\t\t\t\tLeafletUtil.handleEvent(this.zone, this.centerChange, center);\n\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tregisterEventHandler('moveend', outputUpdateHandler);\n\t\tregisterEventHandler('zoomend', outputUpdateHandler);\n\t}\n\n\t/**\n\t * Resize the map to fit it's parent container\n\t */\n\tprivate doResize() {\n\n\t\t// Run this outside of angular so the map events stay outside of angular\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Invalidate the map size to trigger it to update itself\n\t\t\tif (null != this.map) {\n\t\t\t\tthis.map.invalidateSize({});\n\t\t\t}\n\n\t\t});\n\n\t}\n\n\t/**\n\t * Manage a delayed resize of the component\n\t */\n\tprivate delayResize() {\n\t\tif (null != this.resizeTimer) {\n\t\t\tclearTimeout(this.resizeTimer);\n\t\t}\n\t\tthis.resizeTimer = setTimeout(this.doResize.bind(this), 200);\n\t}\n\n\n\t/**\n\t * Set the view (center/zoom) all at once\n\t * @param center The new center\n\t * @param zoom The new zoom level\n\t */\n\tprivate setView(center: LatLng, zoom: number) {\n\n\t\tif (null != this.map && null != center && null != zoom) {\n\t\t\tthis.map.setView(center, zoom, this.zoomPanOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map zoom level\n\t * @param zoom the new zoom level for the map\n\t */\n\tprivate setZoom(zoom: number) {\n\n\t\tif (null != this.map && null != zoom) {\n\t\t\tthis.map.setZoom(zoom, this.zoomOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the center of the map\n\t * @param center the center point\n\t */\n\tprivate setCenter(center: LatLng) {\n\n\t\tif (null != this.map && null != center) {\n\t\t\tthis.map.panTo(center, this.panOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Fit the map to the bounds\n\t * @param latLngBounds the boundary to set\n\t */\n\tprivate setFitBounds(latLngBounds: LatLngBounds) {\n\n\t\tif (null != this.map && null != latLngBounds) {\n\t\t\tthis.map.fitBounds(latLngBounds, this.fitBoundsOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map's max bounds\n\t * @param latLngBounds the boundary to set\n\t */\n\tprivate setMaxBounds(latLngBounds: LatLngBounds) {\n\n\t\tif (null != this.map && null != latLngBounds) {\n\t\t\tthis.map.setMaxBounds(latLngBounds);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map's min zoom\n\t * @param number the new min zoom\n\t */\n\tprivate setMinZoom(zoom: number) {\n\n\t\tif (null != this.map && null != zoom) {\n\t\t\tthis.map.setMinZoom(zoom);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map's min zoom\n\t * @param number the new min zoom\n\t */\n\tprivate setMaxZoom(zoom: number) {\n\n\t\tif (null != this.map && null != zoom) {\n\t\t\tthis.map.setMaxZoom(zoom);\n\t\t}\n\n\t}\n\n}\n","import { LeafletDirective } from './leaflet.directive';\n\nimport { Map } from 'leaflet';\n\nexport class LeafletDirectiveWrapper {\n\n\t// Reference to the main leaflet directive\n\tprotected leafletDirective: LeafletDirective;\n\n\tconstructor(leafletDirective: LeafletDirective) {\n\t\tthis.leafletDirective = leafletDirective;\n\t}\n\n\tinit() {\n\t\t// Nothing for now\n\t}\n\n\tgetMap(): Map {\n\t\treturn this.leafletDirective.getMap();\n\t}\n\n}\n","import {\n\tDirective, EventEmitter, Input, NgZone, OnChanges, OnDestroy, OnInit, Output,\n\tSimpleChange\n} from '@angular/core';\n\nimport { Layer, LeafletEvent } from 'leaflet';\n\nimport { LeafletDirective } from '../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';\nimport { LeafletUtil } from '../core/leaflet.util';\n\n\n/**\n * Layer directive\n *\n * This directive is used to directly control a single map layer. The purpose of this directive is to\n * be used as part of a child structural directive of the map element.\n *\n */\n@Directive({\n\tselector: '[leafletLayer]'\n})\nexport class LeafletLayerDirective\n\timplements OnChanges, OnDestroy, OnInit {\n\n\t@Input('leafletLayer') layer: Layer;\n\n\t// Layer Events\n\t@Output('leafletLayerAdd') onAdd = new EventEmitter<LeafletEvent>();\n\t@Output('leafletLayerRemove') onRemove = new EventEmitter<LeafletEvent>();\n\n\t// Layer Event handlers\n\tprivate onAddLayerHandler: any;\n\tprivate onRemoveLayerHandler: any;\n\n\t// Wrapper for the leaflet directive (manages the parent directive)\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t}\n\n\tngOnDestroy() {\n\n\t\tif (null != this.layer) {\n\n\t\t\t// Unregister the event handlers\n\t\t\tthis.removeLayerEventListeners(this.layer);\n\n\t\t\t// Remove the layer from the map\n\t\t\tthis.layer.remove();\n\t\t}\n\n\t}\n\n\tngOnChanges(changes: { [key: string]: SimpleChange }) {\n\n\t\tif (changes['layer']) {\n\n\t\t\t// Update the layer\n\t\t\tconst p: Layer = changes['layer'].previousValue;\n\t\t\tconst n = changes['layer'].currentValue;\n\n\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\tif (null != p) {\n\t\t\t\t\tthis.removeLayerEventListeners(p);\n\t\t\t\t\tp.remove();\n\t\t\t\t}\n\t\t\t\tif (null != n) {\n\t\t\t\t\tthis.addLayerEventListeners(n);\n\t\t\t\t\tthis.leafletDirective.getMap().addLayer(n);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\tprivate addLayerEventListeners(l: Layer) {\n\n\t\tthis.onAddLayerHandler = (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onAdd, e);\n\t\tl.on('add', this.onAddLayerHandler);\n\n\t\tthis.onRemoveLayerHandler = (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onRemove, e);\n\t\tl.on('remove', this.onRemoveLayerHandler);\n\n\t}\n\n\tprivate removeLayerEventListeners(l: Layer) {\n\n\t\tl.off('add', this.onAddLayerHandler);\n\t\tl.off('remove', this.onRemoveLayerHandler);\n\n\t}\n\n}\n","import { Directive, DoCheck, Input, IterableDiffer, IterableDiffers, NgZone, OnDestroy, OnInit } from '@angular/core';\n\nimport { Layer} from 'leaflet';\n\nimport { LeafletDirective } from '../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';\n\n\n/**\n * Layers directive\n *\n * This directive is used to directly control map layers. As changes are made to the input array of\n * layers, the map is synched to the array. As layers are added or removed from the input array, they\n * are also added or removed from the map. The input array is treated as immutable. To detect changes,\n * you must change the array instance.\n *\n * Important Note: The input layers array is assumed to be immutable. This means you need to use an\n * immutable array implementation or create a new copy of your array when you make changes, otherwise\n * this directive won't detect the change. This is by design. It's for performance reasons. Change\n * detection of mutable arrays requires diffing the state of the array on every DoCheck cycle, which\n * is extremely expensive from a time complexity perspective.\n *\n */\n@Directive({\n\tselector: '[leafletLayers]'\n})\nexport class LeafletLayersDirective\n\timplements DoCheck, OnDestroy, OnInit {\n\n\t// Array of configured layers\n\tlayersValue: Layer[];\n\n\t// Differ to do change detection on the array\n\tlayersDiffer: IterableDiffer<Layer>;\n\n\t// Set/get the layers\n\t@Input('leafletLayers')\n\tset layers(v: Layer[]) {\n\t\tthis.layersValue = v;\n\n\t\t// Now that we have a differ, do an immediate layer update\n\t\tthis.updateLayers();\n\t}\n\tget layers(): Layer[] {\n\t\treturn this.layersValue;\n\t}\n\n\t// Wrapper for the leaflet directive (manages the parent directive)\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private differs: IterableDiffers, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t\tthis.layersDiffer = this.differs.find([]).create<Layer>();\n\t}\n\n\tngDoCheck() {\n\t\tthis.updateLayers();\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t\t// Update layers once the map is ready\n\t\tthis.updateLayers();\n\n\t}\n\n\tngOnDestroy() {\n\t\tthis.layers = [];\n\t}\n\n\t/**\n\t * Update the state of the layers.\n\t * We use an iterable differ to synchronize the map layers with the state of the bound layers array.\n\t * This is important because it allows us to react to changes to the contents of the array as well\n\t * as changes to the actual array instance.\n\t */\n\tprivate updateLayers() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\n\t\tif (null != map && null != this.layersDiffer) {\n\n\t\t\tconst changes = this.layersDiffer.diff(this.layersValue);\n\t\t\tif (null != changes) {\n\n\t\t\t\t// Run outside angular to ensure layer events don't trigger change detection\n\t\t\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t\t\tchanges.forEachRemovedItem((c) => {\n\t\t\t\t\t\tmap.removeLayer(c.item);\n\t\t\t\t\t});\n\t\t\t\t\tchanges.forEachAddedItem((c) => {\n\t\t\t\t\t\tmap.addLayer(c.item);\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","export class LeafletControlLayersChanges {\n\tlayersRemoved: number = 0;\n\tlayersChanged: number = 0;\n\tlayersAdded: number = 0;\n\n\tchanged(): boolean {\n\t\treturn !(this.layersRemoved === 0 && this.layersChanged === 0 && this.layersAdded === 0);\n\t}\n}\n","import { EventEmitter, KeyValueChanges, NgZone } from '@angular/core';\n\nimport { control, Control, Layer } from 'leaflet';\n\nimport { LeafletControlLayersChanges } from './leaflet-control-layers-changes.model';\n\nexport class LeafletControlLayersWrapper {\n\n\t// The layers control object\n\tprotected layersControl: Control.Layers;\n\n\t// Event Emitter for when the control is ready\n\tprotected layersControlReady: EventEmitter<Control.Layers>;\n\n\tconstructor(private zone: NgZone, layersControlReady: EventEmitter<Control.Layers>) {\n\t\tthis.layersControlReady = layersControlReady;\n\t}\n\n\tgetLayersControl() {\n\t\treturn this.layersControl;\n\t}\n\n\tinit(controlConfig: any, controlOptions: any): Control.Layers {\n\n\t\tconst baseLayers = controlConfig.baseLayers || {};\n\t\tconst overlays = controlConfig.overlays || {};\n\n\t\t// Create the control outside of angular to ensure events don't trigger change detection\n\t\tthis.zone.runOutsideAngular(() => {\n\t\t\tthis.layersControl = control.layers(baseLayers, overlays, controlOptions);\n\t\t});\n\n\n\t\tthis.layersControlReady.emit(this.layersControl);\n\n\t\treturn this.layersControl;\n\t}\n\n\tapplyBaseLayerChanges(changes: KeyValueChanges<string, Layer>): LeafletControlLayersChanges {\n\t\tlet results: LeafletControlLayersChanges = new LeafletControlLayersChanges();\n\n\t\tif (null != this.layersControl) {\n\t\t\tresults = this.applyChanges(changes, this.layersControl.addBaseLayer);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tapplyOverlayChanges(changes: KeyValueChanges<string, Layer>): LeafletControlLayersChanges {\n\t\tlet results: LeafletControlLayersChanges = new LeafletControlLayersChanges();\n\n\t\tif (null != this.layersControl) {\n\t\t\tresults = this.applyChanges(changes, this.layersControl.addOverlay);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tprivate applyChanges(changes: KeyValueChanges<string, Layer>, addFn: (layer: Layer, name: string) => void): LeafletControlLayersChanges {\n\t\tconst results: LeafletControlLayersChanges = new LeafletControlLayersChanges();\n\n\t\tif (null != changes) {\n\n\t\t\t// All layer management is outside angular to avoid layer events from triggering change detection\n\t\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t\tchanges.forEachChangedItem((c) => {\n\t\t\t\t\tthis.layersControl.removeLayer(c.previousValue);\n\t\t\t\t\taddFn.call(this.layersControl, c.currentValue, c.key);\n\t\t\t\t\tresults.layersChanged++;\n\t\t\t\t});\n\t\t\t\tchanges.forEachRemovedItem((c) => {\n\t\t\t\t\tthis.layersControl.removeLayer(c.previousValue);\n\t\t\t\t\tresults.layersRemoved++;\n\t\t\t\t});\n\t\t\t\tchanges.forEachAddedItem((c) => {\n\t\t\t\t\taddFn.call(this.layersControl, c.currentValue, c.key);\n\t\t\t\t\tresults.layersAdded++;\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t}\n\n\t\treturn results;\n\t}\n\n}\n","import { Layer } from 'leaflet';\n\nexport class LeafletControlLayersConfig {\n\tbaseLayers: { [name: string]: Layer } = {};\n\toverlays: { [name: string]: Layer } = {};\n}\n","import {\n\tDirective, DoCheck, EventEmitter, Input, KeyValueDiffer, KeyValueDiffers, NgZone, OnDestroy, OnInit,\n\tOutput\n} from '@angular/core';\n\nimport { Control, Layer } from 'leaflet';\n\nimport { LeafletDirective } from '../../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../../core/leaflet.directive.wrapper';\nimport { LeafletControlLayersWrapper } from './leaflet-control-layers.wrapper';\nimport { LeafletControlLayersConfig } from './leaflet-control-layers-config.model';\n\n\n/**\n * Layers Control\n *\n * This directive is used to configure the layers control. The input accepts an object with two\n * key-value maps of layer name -> layer. Mutable changes are detected. On changes, a differ is\n * used to determine what changed so that layers are appropriately added or removed.\n *\n * To specify which layer to show as the 'active' baselayer, you will want to add it to the map\n * using the layers directive. Otherwise, the last one it sees will be used.\n */\n@Directive({\n\tselector: '[leafletLayersControl]'\n})\nexport class LeafletLayersControlDirective\n\timplements DoCheck, OnDestroy, OnInit {\n\n\t// Control Layers Configuration\n\tlayersControlConfigValue: LeafletControlLayersConfig;\n\n\tbaseLayersDiffer: KeyValueDiffer<string, Layer>;\n\toverlaysDiffer: KeyValueDiffer<string, Layer>;\n\n\t@Input('leafletLayersControl')\n\tset layersControlConfig(v: LeafletControlLayersConfig) {\n\n\t\t// Validation/init stuff\n\t\tif (null == v) { v = new LeafletControlLayersConfig(); }\n\t\tif (null == v.baseLayers) { v.baseLayers = {}; }\n\t\tif (null == v.overlays) { v.overlays = {}; }\n\n\t\t// Store the value\n\t\tthis.layersControlConfigValue = v;\n\n\t\t// Update the map\n\t\tthis.updateLayers();\n\n\t}\n\tget layersControlConfig(): LeafletControlLayersConfig {\n\t\treturn this.layersControlConfigValue;\n\t}\n\n\t@Input('leafletLayersControlOptions') layersControlOptions: any;\n\n\t@Output('leafletLayersControlReady') layersControlReady = new EventEmitter<Control.Layers>();\n\n\tprivate controlLayers: LeafletControlLayersWrapper;\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private differs: KeyValueDiffers, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t\tthis.controlLayers = new LeafletControlLayersWrapper(this.zone, this.layersControlReady);\n\n\t\t// Generate differs\n\t\tthis.baseLayersDiffer = this.differs.find({}).create<string, Layer>();\n\t\tthis.overlaysDiffer = this.differs.find({}).create<string, Layer>();\n\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t\t// Set up control outside of angular to avoid change detection when using the control\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Set up all the initial settings\n\t\t\tthis.controlLayers\n\t\t\t\t.init({}, this.layersControlOptions)\n\t\t\t\t.addTo(this.leafletDirective.getMap());\n\n\t\t});\n\n\t\tthis.updateLayers();\n\n\t}\n\n\tngOnDestroy() {\n\t\tthis.layersControlConfig = { baseLayers: {}, overlays: {} };\n\t\tthis.controlLayers.getLayersControl().remove();\n\t}\n\n\tngDoCheck() {\n\t\tthis.updateLayers();\n\t}\n\n\tprotected updateLayers() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\t\tconst layersControl = this.controlLayers.getLayersControl();\n\n\t\tif (null != map && null != layersControl) {\n\n\t\t\t// Run the baselayers differ\n\t\t\tif (null != this.baseLayersDiffer && null != this.layersControlConfigValue.baseLayers) {\n\t\t\t\tconst changes = this.baseLayersDiffer.diff(this.layersControlConfigValue.baseLayers);\n\t\t\t\tthis.controlLayers.applyBaseLayerChanges(changes);\n\t\t\t}\n\n\t\t\t// Run the overlays differ\n\t\t\tif (null != this.overlaysDiffer && null != this.layersControlConfigValue.overlays) {\n\t\t\t\tconst changes = this.overlaysDiffer.diff(this.layersControlConfigValue.overlays);\n\t\t\t\tthis.controlLayers.applyOverlayChanges(changes);\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","import {\n\tDirective, DoCheck, EventEmitter, Input, KeyValueDiffer, KeyValueDiffers, NgZone, OnDestroy,\n\tOnInit, Output\n} from '@angular/core';\n\nimport { Control, Layer } from 'leaflet';\n\nimport { LeafletUtil } from '../../core/leaflet.util';\nimport { LeafletDirective } from '../../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../../core/leaflet.directive.wrapper';\nimport { LeafletControlLayersWrapper } from '../control/leaflet-control-layers.wrapper';\n\n\n/**\n * Baselayers directive\n *\n * This directive is provided as a convenient way to add baselayers to the map. The input accepts\n * a key-value map of layer name -> layer. Mutable changed are detected. On changes, a differ is\n * used to determine what changed so that layers are appropriately added or removed. This directive\n * will also add the layers control so users can switch between available base layers.\n *\n * To specify which layer to show as the 'active' baselayer, you will want to add it to the map\n * using the layers directive. Otherwise, the plugin will use the last one it sees.\n */\n@Directive({\n\tselector: '[leafletBaseLayers]'\n})\nexport class LeafletBaseLayersDirective\n\timplements DoCheck, OnDestroy, OnInit {\n\n\t// Base Layers\n\tbaseLayersValue: { [name: string]: Layer };\n\n\t// Base Layers Map Differ\n\tbaseLayersDiffer: KeyValueDiffer<string, Layer>;\n\n\t// Set/get baseLayers\n\t@Input('leafletBaseLayers')\n\tset baseLayers(v: { [name: string]: Layer }) {\n\t\tthis.baseLayersValue = v;\n\n\t\tthis.updateBaseLayers();\n\t}\n\tget baseLayers(): { [name: string]: Layer } {\n\t\treturn this.baseLayersValue;\n\t}\n\n\t// Control Options\n\t@Input('leafletLayersControlOptions') layersControlOptions: Control.LayersOptions;\n\n\t// Output for once the layers control is ready\n\t@Output('leafletLayersControlReady') layersControlReady = new EventEmitter<Control.Layers>();\n\n\t// Active Base Layer\n\tprivate baseLayer: Layer;\n\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\tprivate controlLayers: LeafletControlLayersWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private differs: KeyValueDiffers, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t\tthis.controlLayers = new LeafletControlLayersWrapper(this.zone, this.layersControlReady);\n\t\tthis.baseLayersDiffer = this.differs.find({}).create<string, Layer>();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.baseLayers = {};\n\t\tif (null != this.controlLayers.getLayersControl()) {\n\t\t\tthis.controlLayers.getLayersControl().remove();\n\t\t}\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t\t// Create the control outside angular to prevent events from triggering chnage detection\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Initially configure the controlLayers\n\t\t\tthis.controlLayers\n\t\t\t\t.init({}, this.layersControlOptions)\n\t\t\t\t.addTo(this.leafletDirective.getMap());\n\n\t\t});\n\n\t\tthis.updateBaseLayers();\n\n\t}\n\n\tngDoCheck() {\n\t\tthis.updateBaseLayers();\n\t}\n\n\tprotected updateBaseLayers() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\t\tconst layersControl = this.controlLayers.getLayersControl();\n\n\t\tif (null != map && null != layersControl && null != this.baseLayersDiffer) {\n\t\t\tconst changes = this.baseLayersDiffer.diff(this.baseLayersValue);\n\t\t\tconst results = this.controlLayers.applyBaseLayerChanges(changes);\n\n\t\t\tif (results.changed()) {\n\t\t\t\tthis.syncBaseLayer();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Check the current base layer and change it to the new one if necessary\n\t */\n\tprotected syncBaseLayer() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\t\tconst layers = LeafletUtil.mapToArray(this.baseLayers);\n\t\tlet foundLayer: Layer;\n\n\t\t// Search all the layers in the map to see if we can find them in the baselayer array\n\t\tmap.eachLayer((l: Layer) => {\n\t\t\tfoundLayer = layers.find((bl) => (l === bl));\n\t\t});\n\n\t\t// Did we find the layer?\n\t\tif (null != foundLayer) {\n\t\t\t// Yes - set the baselayer to the one we found\n\t\t\tthis.baseLayer = foundLayer;\n\t\t}\n\t\telse {\n\t\t\t// No - set the baselayer to the first in the array and add it to the map\n\t\t\tif (layers.length > 0) {\n\t\t\t\tthis.baseLayer = layers[0];\n\n\t\t\t\t// Add layers outside of angular to prevent events from triggering change detection\n\t\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\t\tthis.baseLayer.addTo(map);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { LeafletDirective } from './core/leaflet.directive';\nimport { LeafletLayerDirective } from './layers/leaflet-layer.directive';\nimport { LeafletLayersDirective } from './layers/leaflet-layers.directive';\nimport { LeafletLayersControlDirective } from './layers/control/leaflet-control-layers.directive';\nimport { LeafletBaseLayersDirective } from './layers/base/leaflet-baselayers.directive';\n\n@NgModule({\n\texports: [\n\t\tLeafletDirective,\n\t\tLeafletLayerDirective,\n\t\tLeafletLayersDirective,\n\t\tLeafletLayersControlDirective,\n\t\tLeafletBaseLayersDirective\n\t],\n\tdeclarations: [\n\t\tLeafletDirective,\n\t\tLeafletLayerDirective,\n\t\tLeafletLayersDirective,\n\t\tLeafletLayersControlDirective,\n\t\tLeafletBaseLayersDirective\n\t]\n})\nexport class LeafletModule {\n\n}\n","import { tileLayer, TileLayer } from 'leaflet';\n\nexport class LeafletTileLayerDefinition {\n\n\tconstructor(\n\t\tpublic type: string,\n\t\tpublic url: string,\n\t\tpublic options: any) { }\n\n\n\t/**\n\t * Creates a TileLayer from the provided definition. This is a convenience function\n\t * to help with generating layers from objects.\n\t *\n\t * @param layerDef The layer to create\n\t * @returns {TileLayer} The TileLayer that has been created\n\t */\n\tstatic createTileLayer(layerDef: LeafletTileLayerDefinition): TileLayer {\n\t\tlet layer: TileLayer;\n\n\t\tswitch (layerDef.type) {\n\t\t\tcase 'xyz':\n\t\t\t\tlayer = tileLayer(layerDef.url, layerDef.options);\n\t\t\t\tbreak;\n\t\t\tcase 'wms':\n\t\t\tdefault:\n\t\t\t\tlayer = tileLayer.wms(layerDef.url, layerDef.options);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn layer;\n\t}\n\n\t/**\n\t * Creates a TileLayer for each key in the incoming map. This is a convenience function\n\t * for generating an associative array of layers from an associative array of objects\n\t *\n\t * @param layerDefs A map of key to tile layer definition\n\t * @returns {{[p: string]: TileLayer}} A new map of key to TileLayer\n\t */\n\tstatic createTileLayers(layerDefs: { [ key: string ]: LeafletTileLayerDefinition }): { [ key: string ]: TileLayer } {\n\t\tconst layers: { [ key: string ]: TileLayer } = {};\n\n\t\tfor (const k in layerDefs) {\n\t\t\tif (layerDefs.hasOwnProperty(k)) {\n\t\t\t\tlayers[k] = (LeafletTileLayerDefinition.createTileLayer(layerDefs[k]));\n\t\t\t}\n\t\t}\n\n\t\treturn layers;\n\t}\n\n\t/**\n\t * Create a Tile Layer from the current state of this object\n\t *\n\t * @returns {TileLayer} A new TileLayer\n\t */\n\tcreateTileLayer(): TileLayer {\n\t\treturn LeafletTileLayerDefinition.createTileLayer(this);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LeafletDirective"],"mappings":";;;;MAEa,WAAW,CAAA;IAEvB,OAAO,UAAU,CAAI,GAA2B,EAAA;QAC/C,MAAM,QAAQ,GAAQ,EAAE,CAAC;AAEzB,QAAA,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACpB,YAAA,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBAC1B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,aAAA;AACD,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KAChB;AAED,IAAA,OAAO,WAAW,CAAI,IAAY,EAAE,YAA6B,EAAE,KAAQ,EAAA;;AAG1E,QAAA,IAAI,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,MAAK;AACb,gBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAC,CAAC,CAAC;AACH,SAAA;KAED;AACD;;MCdY,gBAAgB,CAAA;IAgE5B,WAAoB,CAAA,OAAmB,EAAU,IAAY,EAAA;AAAzC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AA7DpD,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,IAAc,CAAA,cAAA,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;AAOA,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACrC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACpC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC;;AAIjD,QAAA,IAAO,CAAA,OAAA,GAAe,EAAE,CAAC;;AAGvB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO,CAAC;AAIjC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;AAItC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;;AAgBjD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;AACxD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAqB,CAAC;AACtD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAqB,CAAC;AAChD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAqB,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAqB,CAAC;AACrD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;;AAGpD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAgB,CAAC;AACpD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAgB,CAAC;;AAGnD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAgB,CAAC;AACpD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAgB,CAAC;;KAI5E;IAED,QAAQ,GAAA;;AAGP,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;;AAGhC,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE7B,SAAC,CAAC,CAAC;;QAGH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,SAAA;;AAGD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAA;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;;QAGhB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAE7B;AAED,IAAA,WAAW,CAAC,OAAwC,EAAA;AAEnD;;;;;;;AAOG;;QAGH,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrF,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC3E,SAAA;;AAEI,aAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC3C,SAAA;;AAEI,aAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;AAC/C,SAAA;;AAGD,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AACjD,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AACjD,SAAA;KAED;IAED,WAAW,GAAA;;AAEV,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAClB,SAAA;KACD;IAEM,MAAM,GAAA;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC;KAChB;IAID,QAAQ,GAAA;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;KACnB;IAEO,oBAAoB,GAAA;AAE3B,QAAA,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAE,OAAiC,KAAI;YACrF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjC,SAAC,CAAC;;QAIF,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAoB,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7G,oBAAoB,CAAC,UAAU,EAAE,CAAC,CAAoB,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QACtH,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAoB,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACrH,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAoB,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACjH,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAoB,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACrH,oBAAoB,CAAC,UAAU,EAAE,CAAC,CAAoB,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACnH,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAoB,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAErH,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACnH,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACzG,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACnH,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACzG,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;;QAI/G,MAAM,mBAAmB,GAAG,MAAK;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAChC,YAAA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,gBAAA,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1D,aAAA;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AAE1C,gBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM;wBACjE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAEvE,oBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,oBAAA,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAE9D,iBAAA;AACD,aAAA;AACF,SAAC,CAAC;AAEF,QAAA,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACrD,QAAA,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;KACrD;AAED;;AAEG;IACK,QAAQ,GAAA;;AAGf,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;;AAGhC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AACrB,gBAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC5B,aAAA;AAEF,SAAC,CAAC,CAAC;KAEH;AAED;;AAEG;IACK,WAAW,GAAA;AAClB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC7B,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D;AAGD;;;;AAIG;IACK,OAAO,CAAC,MAAc,EAAE,IAAY,EAAA;AAE3C,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;AACvD,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACpD,SAAA;KAED;AAED;;;AAGG;AACK,IAAA,OAAO,CAAC,IAAY,EAAA;QAE3B,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,SAAA;KAED;AAED;;;AAGG;AACK,IAAA,SAAS,CAAC,MAAc,EAAA;QAE/B,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,SAAA;KAED;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,YAA0B,EAAA;QAE9C,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,YAAY,EAAE;YAC7C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxD,SAAA;KAED;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,YAA0B,EAAA;QAE9C,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,YAAY,EAAE;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AACpC,SAAA;KAED;AAED;;;AAGG;AACK,IAAA,UAAU,CAAC,IAAY,EAAA;QAE9B,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;KAED;AAED;;;AAGG;AACK,IAAA,UAAU,CAAC,IAAY,EAAA;QAE9B,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;KAED;;6GAxUW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,WAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,cAAA,EAAA,CAAA,uBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,QAAA,CAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,cAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,WAAW;iBACrB,CAAA;sHAakC,gBAAgB,EAAA,CAAA;sBAAjD,KAAK;uBAAC,yBAAyB,CAAA;gBACJ,UAAU,EAAA,CAAA;sBAArC,KAAK;uBAAC,mBAAmB,CAAA;gBACG,WAAW,EAAA,CAAA;sBAAvC,KAAK;uBAAC,oBAAoB,CAAA;gBACK,cAAc,EAAA,CAAA;sBAA7C,KAAK;uBAAC,uBAAuB,CAAA;gBAIL,OAAO,EAAA,CAAA;sBAA/B,KAAK;uBAAC,gBAAgB,CAAA;gBAGI,QAAQ,EAAA,CAAA;sBAAlC,MAAM;uBAAC,iBAAiB,CAAA;gBAGH,IAAI,EAAA,CAAA;sBAAzB,KAAK;uBAAC,aAAa,CAAA;gBACS,UAAU,EAAA,CAAA;sBAAtC,MAAM;uBAAC,mBAAmB,CAAA;gBAGH,MAAM,EAAA,CAAA;sBAA7B,KAAK;uBAAC,eAAe,CAAA;gBACS,YAAY,EAAA,CAAA;sBAA1C,MAAM;uBAAC,qBAAqB,CAAA;gBAGF,SAAS,EAAA,CAAA;sBAAnC,KAAK;uBAAC,kBAAkB,CAAA;gBAGE,SAAS,EAAA,CAAA;sBAAnC,KAAK;uBAAC,kBAAkB,CAAA;gBAGA,OAAO,EAAA,CAAA;sBAA/B,KAAK;uBAAC,gBAAgB,CAAA;gBAGE,OAAO,EAAA,CAAA;sBAA/B,KAAK;uBAAC,gBAAgB,CAAA;gBAIC,OAAO,EAAA,CAAA;sBAA9B,MAAM;uBAAC,cAAc,CAAA;gBACQ,aAAa,EAAA,CAAA;sBAA1C,MAAM;uBAAC,oBAAoB,CAAA;gBACA,WAAW,EAAA,CAAA;sBAAtC,MAAM;uBAAC,kBAAkB,CAAA;gBACA,SAAS,EAAA,CAAA;sBAAlC,MAAM;uBAAC,gBAAgB,CAAA;gBACI,WAAW,EAAA,CAAA;sBAAtC,MAAM;uBAAC,kBAAkB,CAAA;gBACE,WAAW,EAAA,CAAA;sBAAtC,MAAM;uBAAC,kBAAkB,CAAA;gBACC,UAAU,EAAA,CAAA;sBAApC,MAAM;uBAAC,iBAAiB,CAAA;gBAGC,SAAS,EAAA,CAAA;sBAAlC,MAAM;uBAAC,gBAAgB,CAAA;gBACO,cAAc,EAAA,CAAA;sBAA5C,MAAM;uBAAC,qBAAqB,CAAA;gBACA,YAAY,EAAA,CAAA;sBAAxC,MAAM;uBAAC,mBAAmB,CAAA;gBAGD,SAAS,EAAA,CAAA;sBAAlC,MAAM;uBAAC,gBAAgB,CAAA;gBACO,cAAc,EAAA,CAAA;sBAA5C,MAAM;uBAAC,qBAAqB,CAAA;gBACA,YAAY,EAAA,CAAA;sBAAxC,MAAM;uBAAC,mBAAmB,CAAA;gBAsG3B,QAAQ,EAAA,CAAA;sBADP,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,CAAA;;;MC3KrB,uBAAuB,CAAA;AAKnC,IAAA,WAAA,CAAY,gBAAkC,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KACzC;IAED,IAAI,GAAA;;KAEH;IAED,MAAM,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;KACtC;AAED;;ACTD;;;;;;AAMG;MAIU,qBAAqB,CAAA;IAgBjC,WAAY,CAAA,gBAAkC,EAAU,IAAY,EAAA;AAAZ,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;;AAVzC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAgB,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAgB,CAAC;QAUzE,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;KACtE;IAED,QAAQ,GAAA;;AAGP,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAE7B;IAED,WAAW,GAAA;AAEV,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;;AAGvB,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAG3C,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACpB,SAAA;KAED;AAED,IAAA,WAAW,CAAC,OAAwC,EAAA;AAEnD,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;;YAGrB,MAAM,CAAC,GAAU,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;YAChD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;AAExC,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;gBAChC,IAAI,IAAI,IAAI,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;oBAClC,CAAC,CAAC,MAAM,EAAE,CAAC;AACX,iBAAA;gBACD,IAAI,IAAI,IAAI,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;oBAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3C,iBAAA;AACF,aAAC,CAAC,CAAC;AAEH,SAAA;KAED;AAEO,IAAA,sBAAsB,CAAC,CAAQ,EAAA;QAEtC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAe,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAE1C;AAEO,IAAA,yBAAyB,CAAC,CAAQ,EAAA;QAEzC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAE3C;;kHA9EW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,cAAA,EAAA,OAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;iBAC1B,CAAA;yHAIuB,KAAK,EAAA,CAAA;sBAA3B,KAAK;uBAAC,cAAc,CAAA;gBAGM,KAAK,EAAA,CAAA;sBAA/B,MAAM;uBAAC,iBAAiB,CAAA;gBACK,QAAQ,EAAA,CAAA;sBAArC,MAAM;uBAAC,oBAAoB,CAAA;;;ACrB7B;;;;;;;;;;;;;;AAcG;MAIU,sBAAsB,CAAA;AAwBlC,IAAA,WAAA,CAAY,gBAAkC,EAAU,OAAwB,EAAU,IAAY,EAAA;AAA9C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAAU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACrG,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAS,CAAC;KAC1D;;IAjBD,IACI,MAAM,CAAC,CAAU,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;;QAGrB,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;AACD,IAAA,IAAI,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;KACxB;IAUD,SAAS,GAAA;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAED,QAAQ,GAAA;;AAGP,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;;QAG7B,IAAI,CAAC,YAAY,EAAE,CAAC;KAEpB;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KACjB;AAED;;;;;AAKG;IACK,YAAY,GAAA;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAE3C,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAE7C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,IAAI,IAAI,OAAO,EAAE;;AAGpB,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAEhC,oBAAA,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAI;AAChC,wBAAA,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACzB,qBAAC,CAAC,CAAC;AACH,oBAAA,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAI;AAC9B,wBAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtB,qBAAC,CAAC,CAAC;AAEJ,iBAAC,CAAC,CAAC;AAEH,aAAA;AAED,SAAA;KAED;;mHA9EW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;iBAC3B,CAAA;uJAYI,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,eAAe,CAAA;;;MCpCV,2BAA2B,CAAA;AAAxC,IAAA,WAAA,GAAA;AACC,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;AAC1B,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;KAKxB;IAHA,OAAO,GAAA;QACN,OAAO,EAAE,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC;KACzF;AACD;;MCFY,2BAA2B,CAAA;IAQvC,WAAoB,CAAA,IAAY,EAAE,kBAAgD,EAAA;AAA9D,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;KAC7C;IAED,gBAAgB,GAAA;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;KAC1B;IAED,IAAI,CAAC,aAAkB,EAAE,cAAmB,EAAA;AAE3C,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC;AAClD,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;;AAG9C,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC3E,SAAC,CAAC,CAAC;QAGH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,aAAa,CAAC;KAC1B;AAED,IAAA,qBAAqB,CAAC,OAAuC,EAAA;AAC5D,QAAA,IAAI,OAAO,GAAgC,IAAI,2BAA2B,EAAE,CAAC;AAE7E,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC/B,YAAA,OAAO,GAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACvE,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KACf;AAED,IAAA,mBAAmB,CAAC,OAAuC,EAAA;AAC1D,QAAA,IAAI,OAAO,GAAgC,IAAI,2BAA2B,EAAE,CAAC;AAE7E,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC/B,YAAA,OAAO,GAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KACf;IAEO,YAAY,CAAC,OAAuC,EAAE,KAA2C,EAAA;AACxG,QAAA,MAAM,OAAO,GAAgC,IAAI,2BAA2B,EAAE,CAAC;QAE/E,IAAI,IAAI,IAAI,OAAO,EAAE;;AAGpB,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAEhC,gBAAA,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAI;oBAChC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAChD,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtD,OAAO,CAAC,aAAa,EAAE,CAAC;AACzB,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAI;oBAChC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;oBAChD,OAAO,CAAC,aAAa,EAAE,CAAC;AACzB,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAI;AAC9B,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtD,OAAO,CAAC,WAAW,EAAE,CAAC;AACvB,iBAAC,CAAC,CAAC;AAEJ,aAAC,CAAC,CAAC;AAEH,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KACf;AAED;;MCrFY,0BAA0B,CAAA;AAAvC,IAAA,WAAA,GAAA;AACC,QAAA,IAAU,CAAA,UAAA,GAA8B,EAAE,CAAC;AAC3C,QAAA,IAAQ,CAAA,QAAA,GAA8B,EAAE,CAAC;KACzC;AAAA;;ACQD;;;;;;;;;AASG;MAIU,6BAA6B,CAAA;AAmCzC,IAAA,WAAA,CAAY,gBAAkC,EAAU,OAAwB,EAAU,IAAY,EAAA;AAA9C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAAU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AALjE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAkB,CAAC;QAM5F,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;;AAGzF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAiB,CAAC;AACtE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAiB,CAAC;KAEpE;IAlCD,IACI,mBAAmB,CAAC,CAA6B,EAAA;;QAGpD,IAAI,IAAI,IAAI,CAAC,EAAE;AAAE,YAAA,CAAC,GAAG,IAAI,0BAA0B,EAAE,CAAC;AAAE,SAAA;AACxD,QAAA,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,EAAE;AAAE,YAAA,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;AAAE,SAAA;AAChD,QAAA,IAAI,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;AAAE,YAAA,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;AAAE,SAAA;;AAG5C,QAAA,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;;QAGlC,IAAI,CAAC,YAAY,EAAE,CAAC;KAEpB;AACD,IAAA,IAAI,mBAAmB,GAAA;QACtB,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACrC;IAmBD,QAAQ,GAAA;;AAGP,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;;AAG7B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;;AAGhC,YAAA,IAAI,CAAC,aAAa;AAChB,iBAAA,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC;iBACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AAEzC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;KAEpB;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,CAAC;KAC/C;IAED,SAAS,GAAA;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAES,YAAY,GAAA;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;AAE5D,QAAA,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,aAAa,EAAE;;AAGzC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE;AACtF,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;AACrF,gBAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAClD,aAAA;;AAGD,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE;AAClF,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AACjF,gBAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAChD,aAAA;AAED,SAAA;KAED;;0HA9FW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAA7B,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,CAAA,sBAAA,EAAA,qBAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;iBAClC,CAAA;uJAWI,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,sBAAsB,CAAA;gBAmBS,oBAAoB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,6BAA6B,CAAA;gBAEC,kBAAkB,EAAA,CAAA;sBAAtD,MAAM;uBAAC,2BAA2B,CAAA;;;AC3CpC;;;;;;;;;;AAUG;MAIU,0BAA0B,CAAA;AAgCtC,IAAA,WAAA,CAAY,gBAAkC,EAAU,OAAwB,EAAU,IAAY,EAAA;AAA9C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AAAU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;;AARjE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAkB,CAAC;QAS5F,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAiB,CAAC;KACtE;;IA1BD,IACI,UAAU,CAAC,CAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACxB;AACD,IAAA,IAAI,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;KAC5B;IAoBD,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE;YAClD,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,CAAC;AAC/C,SAAA;KACD;IAED,QAAQ,GAAA;;AAGP,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;;AAG7B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;;AAGhC,YAAA,IAAI,CAAC,aAAa;AAChB,iBAAA,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC;iBACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AAEzC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAExB;IAED,SAAS,GAAA;QACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACxB;IAES,gBAAgB,GAAA;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;AAE5D,QAAA,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC1E,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAElE,YAAA,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;gBACtB,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,aAAA;AACD,SAAA;KAED;AAED;;AAEG;IACO,aAAa,GAAA;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvD,QAAA,IAAI,UAAiB,CAAC;;AAGtB,QAAA,GAAG,CAAC,SAAS,CAAC,CAAC,CAAQ,KAAI;AAC1B,YAAA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;;QAGH,IAAI,IAAI,IAAI,UAAU,EAAE;;AAEvB,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC5B,SAAA;AACI,aAAA;;AAEJ,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;AAG3B,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAChC,oBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,iBAAC,CAAC,CAAC;AACH,aAAA;AACD,SAAA;KAED;;uHAnHW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;iBAC/B,CAAA;uJAYI,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,mBAAmB,CAAA;gBAWY,oBAAoB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,6BAA6B,CAAA;gBAGC,kBAAkB,EAAA,CAAA;sBAAtD,MAAM;uBAAC,2BAA2B,CAAA;;;MC3BvB,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAPxB,gBAAgB;QAChB,qBAAqB;QACrB,sBAAsB;QACtB,6BAA6B;AAC7B,QAAA,0BAA0B,aAX1B,gBAAgB;QAChB,qBAAqB;QACrB,sBAAsB;QACtB,6BAA6B;QAC7B,0BAA0B,CAAA,EAAA,CAAA,CAAA;2GAUf,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAhBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE;wBACR,gBAAgB;wBAChB,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,0BAA0B;AAC1B,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACb,gBAAgB;wBAChB,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,0BAA0B;AAC1B,qBAAA;iBACD,CAAA;;;MCrBY,0BAA0B,CAAA;AAEtC,IAAA,WAAA,CACQ,IAAY,EACZ,GAAW,EACX,OAAY,EAAA;AAFZ,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AACZ,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AACX,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;KAAK;AAGzB;;;;;;AAMG;IACH,OAAO,eAAe,CAAC,QAAoC,EAAA;AAC1D,QAAA,IAAI,KAAgB,CAAC;QAErB,QAAQ,QAAQ,CAAC,IAAI;AACpB,YAAA,KAAK,KAAK;gBACT,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM;AACP,YAAA,KAAK,KAAK,CAAC;AACX,YAAA;AACC,gBAAA,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvD,MAAM;AACP,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACb;AAED;;;;;;AAMG;IACH,OAAO,gBAAgB,CAAC,SAA0D,EAAA;QACjF,MAAM,MAAM,GAAmC,EAAE,CAAC;AAElD,QAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAChC,gBAAA,MAAM,CAAC,CAAC,CAAC,IAAI,0BAA0B,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,aAAA;AACD,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACd;AAED;;;;AAIG;IACH,eAAe,GAAA;AACd,QAAA,OAAO,0BAA0B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KACxD;AACD;;AC5DD;;AAEG;;;;"}
\No newline at end of file