@evergis/react 2.0.243 → 2.0.245

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":"react.cjs.development.js","sources":["../src/hooks/usePagination.ts","../src/contexts/EvergisContext.tsx","../src/contexts/MapContext.tsx","../src/contexts/TooltipContext.tsx","../src/contexts/LegendContext.tsx","../src/contexts/EvergisSelectContext.tsx","../src/hooks/useEventPoint.ts","../src/hooks/useMapViewActions.ts","../src/hooks/useZoomToFeature.ts","../src/hooks/useEvergisCard.ts","../src/core/classification/types.ts","../src/core/classification/ClassificationCondition.ts","../src/core/classification/parameter.ts","../src/utils/isObject.ts","../src/core/classification/parameterValue.ts","../src/core/style/types/utils.ts","../src/core/style/types/label.ts","../src/core/style/compositeSymbol.ts","../src/core/style/types/symbol.ts","../src/core/style/types/brush.ts","../src/core/style/types/miters.ts","../src/core/style/types/offset.ts","../src/core/style/types/parameterValue.ts","../src/core/style/types/style.ts","../src/core/style/EvergisStyle.ts","../src/core/classification/getClassifications.ts","../src/core/classification/ClassificationManager.ts","../src/core/classification/unClassify.ts","../src/i18n/index.ts","../src/core/classification/printClass.ts","../src/utils/color.ts","../src/symbols/previewLimits.ts","../src/utils/math.ts","../src/symbols/strokeStyle.ts","../src/symbols/Evergis/SGisBrushFill.ts","../src/symbols/Evergis/SGisImageFill.ts","../src/symbols/Evergis/SGisPolygonSymbol.ts","../src/symbols/LineMiters/LineMiterRender.ts","../src/symbols/LineMiters/ArrowLineMiterRender.ts","../src/symbols/LineMiters/CircleLineMiterRender.ts","../src/symbols/LineMiters/SquareLineMiterRender.ts","../src/symbols/LineMiters/getLineMiterRender.ts","../src/symbols/LineMiters/updateRingsForMiter.ts","../src/symbols/Evergis/SGisPolylineSymbol.ts","../src/symbols/Label/LabelSymbol.tsx","../src/symbols/Label/createLabelSymbol.tsx","../src/symbols/Shadowed/ShadowedPointSymbol.ts","../src/symbols/Shadowed/ShadowedPolySymbol.ts","../src/symbols/Selected/SelectedPointSymbol.ts","../src/symbols/Selected/SelectedPolySymbol.ts","../src/symbols/Selected/selectedSymbols.ts","../src/utils/metersToPixels.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/hooks/useSymbol.ts","../src/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useProperty.ts","../src/hooks/useUpdate.ts","../src/hooks/useLayerOrder.ts","../src/hooks/useLayerVisibility.ts","../src/hooks/useLayerOpacity.ts","../src/hooks/useEvergisDynamicLayer.ts","../src/hooks/useEvergisTileLayer.ts","../src/hooks/useFeatureLayer.ts","../src/hooks/useMapBboxChange.ts","../src/hooks/useMapResize.ts","../src/hooks/useMapPick.ts","../src/hooks/useMapState.ts","../src/hooks/useMapView.ts","../src/hooks/useMapWrapper.ts","../src/hooks/useMaxMinScale.ts","../src/hooks/useScale.ts","../src/hooks/useUpdateMapView.ts","../src/hooks/useTooltip.ts","../src/hooks/useClusterLayer.ts","../src/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/core/crs/index.ts","../src/core/attributes/utils.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createValueTitle.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/types.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/hooks/useEvergisSelect.ts","../src/hooks/useCrs.ts","../src/hooks/useDraggableMarker.ts","../src/hooks/useMetersToPixels.ts","../src/hooks/useDebouncedCallback.ts","../src/hooks/useToggle.ts","../src/hooks/useNode.ts","../src/components/Symbol/Symbol.tsx","../src/components/Symbol/styled.ts","../src/components/Symbol/StyleSymbol.tsx","../src/components/EvergisCard/styled.ts","../src/components/EvergisCard/MailValue.tsx","../src/components/EvergisCard/PhoneValue.tsx","../src/components/EvergisCard/UrlValue.tsx","../src/components/EvergisCard/AttributeValue.tsx","../src/components/EvergisCard/EvergisCardAttribute.tsx","../src/components/EvergisCard/StyledCard.tsx","../src/components/EvergisCard/EvergisCard.tsx","../src/components/Layers/ClusterLayer.tsx","../src/components/Layers/EvergisDynamicLayer.tsx","../src/components/Layers/FeatureLayer.tsx","../src/components/Layers/useSGisFeatures.ts","../src/components/Layers/EvergisSelectLayer.tsx","../src/components/Layers/EvergisTileLayer.tsx","../src/hooks/useTileLayer.ts","../src/components/Layers/TileLayer.tsx","../src/components/EvergisSelect/EvergisSelect.tsx","../src/ui/mixins/placementMixin.ts","../src/components/MapControls/styled.ts","../src/components/MapControls/Measure.tsx","../src/components/MapControls/Search.tsx","../src/components/MapControls/Fullscreen.tsx","../src/utils/isParameterType.ts","../src/components/Legend/styled.ts","../src/components/Legend/constants.ts","../src/components/Legend/types.ts","../src/utils/svg.ts","../src/utils/isNumeric.ts","../src/core/legend/createCondition.ts","../src/core/legend/FilterCondition.ts","../src/utils/legend.ts","../src/components/Legend/hooks/useSvgSymbol.ts","../src/components/Legend/components/SvgSymbol.tsx","../src/components/Legend/components/ClusterSymbolPreview.tsx","../src/components/Legend/components/SymbolByType.tsx","../src/components/Legend/components/LegendSymbolRenderer.tsx","../src/components/Legend/components/LegendHeaderButtons.tsx","../src/components/Legend/utils/getConditionAttribute.ts","../src/components/Legend/utils/isHiddenLegend.ts","../src/components/Legend/utils/getLegendText.tsx","../src/components/Legend/components/LegendChildren.tsx","../src/components/Legend/components/LegendParameterDescription.tsx","../src/components/Legend/components/MinimizedLegend.tsx","../src/components/Legend/components/MaximizedLegend.tsx","../src/components/Legend/components/LegendSection.tsx","../src/components/Legend/Legend.tsx","../src/components/Map/Map.tsx","../src/controls/MeasureToolFormatters.ts","../src/controls/BaseMeasureToolCreator.ts","../src/controls/BaseMeasureToolEditor.ts","../src/components/Measurer/MeasureTool.tsx","../src/components/Measurer/Measurer.tsx","../src/components/ScaleControl/styled.ts","../src/components/ScaleControl/ScaleRuler.tsx","../src/components/ScaleControl/Zoom.tsx","../src/components/ScaleControl/ZoomLevel.tsx","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Noop/index.tsx","../src/components/DraggableMarker/DraggableMarker.tsx","../src/utils/polygonCircleFromPoint.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\ntype Pagination = [\n number,\n { prev: () => void; next: () => void; reset: () => void }\n];\n\nexport const usePagination = (length: number): Pagination => {\n const [current, setCurrent] = useState(0);\n\n const next = useCallback(\n () => setCurrent(value => (value < length - 1 ? value + 1 : value)),\n [length, setCurrent]\n );\n\n const prev = useCallback(\n () => setCurrent(value => (value === 0 ? value : value - 1)),\n [setCurrent]\n );\n\n const reset = useCallback(() => setCurrent(0), [setCurrent]);\n\n return [current, { prev, next, reset }];\n};\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { Api } from '@evergis/api';\n\nconst BASE_URL = '/';\n\nconst defaultApi = new Api({\n url: BASE_URL,\n});\n\nconst evergisContext = createContext<Api>(defaultApi);\n\ntype EvergisProviderProps = {\n api?: Api;\n};\n\nexport const EvergisProvider: React.FC<EvergisProviderProps> = ({\n api,\n children,\n}) => {\n const value = useMemo(() => api || defaultApi, [api]);\n return (\n <evergisContext.Provider value={value}>{children}</evergisContext.Provider>\n );\n};\n\nexport const useEvergisContext = () => useContext(evergisContext);\n","import React, { createContext, FC, PropsWithChildren, useContext, useMemo } from 'react';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype MapContext = {\n map: Map;\n painter: DomPainter;\n};\n\nconst defaultMap = new Map();\nconst defaultPainter = new DomPainter(defaultMap);\n\nconst mapContext = createContext<MapContext>({\n map: defaultMap,\n painter: defaultPainter,\n});\n\ninterface MapProviderProps extends PropsWithChildren<any> {\n map?: Map;\n painter?: DomPainter;\n}\n\nexport const MapProvider: FC<MapProviderProps> = ({\n map,\n painter,\n children,\n}) => {\n const value = useMemo(\n () => ({\n map: map || defaultMap,\n painter: painter || (map ? new DomPainter(map) : defaultPainter),\n }),\n [map, painter]\n );\n return <mapContext.Provider value={value}>{children}</mapContext.Provider>;\n};\n\nexport const useMapContext = () => useContext(mapContext);\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\n\ntype TooltipContext = {\n layer: FeatureLayer;\n popupLayer: FeatureLayer;\n};\n\nconst defaultLayer = new FeatureLayer();\n\nconst defaultPopupLayer = new FeatureLayer();\n\nconst tooltipContext = createContext<TooltipContext>({\n layer: defaultLayer,\n popupLayer: defaultPopupLayer,\n});\n\ntype TooltipProviderProps = {\n layer?: FeatureLayer;\n popupLayer?: FeatureLayer;\n zIndex?: number;\n};\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n layer,\n popupLayer,\n children,\n}) => {\n const value = useMemo(\n () => ({\n layer: layer || defaultLayer,\n popupLayer: popupLayer || defaultPopupLayer,\n }),\n [layer, popupLayer]\n );\n\n return (\n <tooltipContext.Provider value={value}>{children}</tooltipContext.Provider>\n );\n};\n\nexport const useTooltipContext = () => useContext(tooltipContext);\n","import React, { createContext, useContext } from 'react';\nimport { StyleSymbolType } from '../core/style/types/symbol';\n\nconst LegendContext = createContext<StyleSymbolType | null>(null);\n\ntype LegendProviderProps = {\n symbol?: StyleSymbolType;\n};\n\nexport const LegendProvider: React.FC<LegendProviderProps> = ({\n symbol,\n children,\n}) => {\n return (\n <LegendContext.Provider value={symbol || null}>\n {children}\n </LegendContext.Provider>\n );\n};\n\nexport const useLegendContext = () => useContext(LegendContext);\n","import React, { createContext, useContext } from 'react';\nimport { EvergisLayer } from '../core/layer/EvergisLayer';\n\nconst evergisSelectContext = createContext<EvergisLayer[]>([]);\n\ntype EvergisSelectProviderProps = {\n layers: EvergisLayer[];\n};\n\nexport const EvergisSelectProvider: React.FC<EvergisSelectProviderProps> = ({\n layers,\n children,\n}) => (\n <evergisSelectContext.Provider value={layers}>\n {children}\n </evergisSelectContext.Provider>\n);\nexport const useEvergisSelectContext = () => useContext(evergisSelectContext);\n","import { useCallback } from 'react';\nimport { getMouseOffset } from '@evergis/sgis/es/utils/domEvent';\nimport { sGisMouseEvent } from '@evergis/sgis/es/commonEvents';\nimport { IPoint } from '@evergis/sgis/es/Point';\n\nimport { useMapContext } from '../contexts';\n\nexport const useEventPoint = () => {\n const { painter } = useMapContext();\n\n return useCallback(\n (event: sGisMouseEvent | TouchEvent | MouseEvent): IPoint => {\n if ('point' in event) {\n return event.point;\n }\n\n const browserEvent =\n 'browserEvent' in event ? event['browserEvent'] : event;\n\n const wrapper = painter.wrapper;\n const { x, y } = getMouseOffset(\n wrapper,\n 'touches' in browserEvent\n ? {\n pageX: browserEvent.touches[0].pageX,\n pageY: browserEvent.touches[0].pageY,\n }\n : browserEvent\n );\n const originalPoint = painter.getPointFromPxPosition(x, y);\n\n return originalPoint;\n },\n [painter]\n );\n};\n","import { useCallback } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\n\nimport { useEventPoint } from '../hooks/useEventPoint';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapViewActions() {\n const { map, painter } = useMapContext();\n const getEventPoint = useEventPoint();\n\n const zoomTo = useCallback(\n (k: number) => {\n map.zoom(k, map.position);\n },\n [map]\n );\n\n const zoomIn = useCallback(() => zoomTo(1), [zoomTo]);\n const zoomOut = useCallback(() => zoomTo(-1), [zoomTo]);\n\n const animateTo = useCallback(\n ({ position, resolution, extent }: AnimateToParams) => {\n if (position || resolution) {\n const nextPosition = position\n ? (position.slice(0) as Coordinates)\n : map.position;\n map.animateTo(nextPosition, resolution || map.resolution);\n }\n\n if (extent) {\n const { xMax, xMin, yMax, yMin } = extent;\n const bbox = new Bbox([xMin, yMax], [xMax, yMin], map.crs);\n painter && painter.show(bbox, true);\n }\n },\n [map, painter]\n );\n\n const zoomAround = useCallback(\n (event: sGisClickEvent) => {\n map.zoom(1, getEventPoint(event));\n },\n [getEventPoint, map]\n );\n\n const changeZoomLevel = useCallback(\n (level: number) => {\n const { tileScheme } = map;\n let tileLevel = tileScheme.levels.find(({ zIndex }) => zIndex === level);\n const resolution = tileLevel ? tileLevel.resolution : map.resolution;\n\n map.animateSetResolution(resolution, map.position);\n },\n [map]\n );\n\n return {\n zoomTo,\n zoomIn,\n zoomOut,\n zoomAround,\n animateTo,\n changeZoomLevel,\n };\n}\n\ntype AnimateToParams = {\n position?: Coordinates;\n resolution?: number;\n extent?: { xMax: number; yMax: number; xMin: number; yMin: number };\n};\n","import { useCallback } from 'react';\n\nimport { useMapViewActions } from './useMapViewActions';\n\nimport { EvergisFeature } from '../core';\n\nexport const useZoomToFeature = () => {\n const { animateTo } = useMapViewActions();\n\n return useCallback(\n (feature: EvergisFeature) => {\n const extent = feature.extent();\n\n if (extent) {\n animateTo({ extent });\n }\n },\n [animateTo]\n );\n};\n","import { useCallback, useEffect } from 'react';\n\nimport { usePagination } from './usePagination';\nimport { useZoomToFeature } from './useZoomToFeature';\n\nimport { EvergisFeature } from '../core';\n\nexport type UseEvergisCard = {\n feature: EvergisFeature;\n current: number;\n prev: () => void;\n next: () => void;\n zoom: () => void;\n};\n\nexport const useEvergisCard = (features: EvergisFeature[]): UseEvergisCard => {\n const [current, { prev, next, reset }] = usePagination(features.length);\n\n const feature = features[current];\n\n const zoomToFeature = useZoomToFeature();\n\n const zoom = useCallback(() => zoomToFeature(feature), [\n zoomToFeature,\n feature,\n ]);\n\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [features.length]);\n\n return { feature, current, prev, next, zoom };\n};\n","import {\n ClassifyAble,\n ParameterValue,\n ParameterValueWithSymbol,\n} from '../style';\n\nimport { ClassificationAttribute } from '../attributes';\n\nexport type NestedClassificationParameters =\n | 'fill.color'\n | 'fill.hatchColor'\n | 'stroke.width'\n | 'stroke.color'\n | 'background.fillColor'\n | 'background.strokeColor'\n | 'background.strokeWidth'\n | 'figure.fillColor'\n | 'figure.strokeColor'\n | 'figure.strokeWidth';\n\nexport type SimpleClassificationParameters =\n | 'fillColor'\n | 'strokeColor'\n | 'strokeWidth'\n | 'size'\n | 'symbol'\n | 'angle'\n | 'maskedColor';\n\nexport type ClassificationParameter =\n | NestedClassificationParameters\n | SimpleClassificationParameters;\n\nexport type ClassificationParameterExtended =\n | ClassificationParameter\n | 'width'\n | 'height';\n\nexport interface ClassBase {\n title: string | null;\n parameterValue: ParameterValueWithSymbol;\n attribute?: ClassificationAttribute;\n}\n\nexport type UniqueClass = ClassBase & {\n uniqueValue: string;\n};\n\nexport type RangeClass = ClassBase & {\n from: number | string | null;\n to: number | string | null;\n};\n\nexport type ClassificationClass = UniqueClass | RangeClass;\nexport type ClassificationValues = ClassificationClass[];\n\nexport const enum ClassificationType {\n Range,\n Unique,\n}\n\nexport interface Classification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> {\n parameter?: ClassificationParameterExtended;\n attribute?: string;\n type: Type;\n values: Value[];\n}\n\nexport type RangeClassification = Classification<\n ClassificationType.Range,\n RangeClass\n>;\n\nexport type UniqueClassification = Classification<\n ClassificationType.Unique,\n UniqueClass\n>;\n\nexport interface ClassificationExtras {\n defaultTitle: string;\n defaultValue: ParameterValueWithSymbol;\n}\n\nexport type ExtendedClassification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> = Classification<Type, Value> & ClassificationExtras;\n\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\n return Boolean(value && 'from' in value);\n}\n\nexport function isUniqueClass(\n value: ClassificationClass\n): value is UniqueClass {\n return Boolean(value && 'uniqueValue' in value);\n}\n\nexport type ParameterValueModifier = (\n parameterValue: ClassifyAble<ParameterValue>\n) => ClassifyAble<ParameterValue> | void;\n","import {\n ConditionInterpreter,\n Expression,\n TokenType,\n} from '@evergis/condition';\n\nimport { ClassificationType } from './types';\n\nconst NULL_EXPRESSION: Expression = {\n // @ts-ignore TODO\n attribute: null,\n // @ts-ignore TODO\n operation: null,\n value: null,\n};\n\nexport class ClassificationCondition {\n private readonly condition: string;\n private readonly expressions: Expression[] = [];\n\n constructor(condition: string) {\n this.condition = condition;\n const conditionResult = new ConditionInterpreter(condition).value;\n\n this.expressions =\n conditionResult instanceof Error ? [] : conditionResult.expressions;\n }\n\n public get attributeName() {\n return this.leftExpression.attribute;\n }\n\n public get uniqueValue() {\n if (this.isUnique()) {\n const { value } = this.leftExpression;\n\n return typeof value === 'string' ? value : '';\n }\n\n console.warn(`Trying to get unique from range condition ${this.condition}`);\n\n return '';\n }\n\n public get range(): [number, number] {\n if (!this.isRange()) {\n console.warn(\n `Trying to get range from unique condition ${this.condition}`\n );\n\n return [0, 0];\n }\n\n if (this.expressions.length === 2) {\n const { value: from } = this.leftExpression;\n const { value: to } = this.rightExpression;\n\n return [from, to] as [number, number];\n }\n\n if (this.expressions.length === 1) {\n const { operation, value } = this.leftExpression;\n const isFrom = operation === TokenType.ArGr;\n\n return [isFrom ? value : null, isFrom ? null : value] as [number, number];\n }\n\n return [0, 0];\n }\n\n public get type(): ClassificationType {\n return this.isUnique()\n ? ClassificationType.Unique\n : ClassificationType.Range;\n }\n\n public isUnique() {\n return this.leftExpression.operation === TokenType.ArEq;\n }\n\n public isRange() {\n return [\n TokenType.ArGr,\n TokenType.ArGre,\n TokenType.ArLs,\n TokenType.ArLse,\n ].includes(this.leftExpression.operation);\n }\n\n public toString() {\n return this.condition;\n }\n\n private get leftExpression(): Expression {\n return this.expressions.length > 0 ? this.expressions[0] : NULL_EXPRESSION;\n }\n\n private get rightExpression(): Expression {\n return this.expressions.length > 1 ? this.expressions[1] : NULL_EXPRESSION;\n }\n}\n","import { ClassificationParameterExtended } from './types';\n\nexport const PARAMETER_SEPARATOR = '.';\n\nexport const parameterToPaths = (\n parameter: ClassificationParameterExtended\n): ClassificationParameterExtended[] =>\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\n\nexport const pathsToParameter = (\n paths: ClassificationParameterExtended[]\n): ClassificationParameterExtended =>\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { parameterToPaths } from './parameter';\nimport {\n ClassificationParameterExtended,\n ParameterValueModifier,\n} from './types';\n\nimport {\n CalculatedAble,\n CalculatedParameter,\n ClassifyAble,\n ParameterByAttribute,\n ParameterValue,\n ParameterValueWithSymbol,\n StyleSymbolType,\n UnidentifiedParameterValue,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nexport const isParameterByAttribute = (\n value: UnidentifiedParameterValue\n): value is ParameterByAttribute<ParameterValueWithSymbol> =>\n Boolean(\n isObject(value) &&\n (value as ParameterByAttribute<ParameterValueWithSymbol>)?.type ===\n 'byAttribute'\n );\n\nexport const isCalculatedParameter = (\n value: UnidentifiedParameterValue\n): value is CalculatedParameter<ParameterValueWithSymbol> =>\n Boolean(\n isObject(value) &&\n (value as CalculatedParameter<ParameterValueWithSymbol>)?.type ===\n 'calculated'\n );\n\nexport const getParameterValue = <Value extends ParameterValueWithSymbol>(\n value: ClassifyAble<Value> | CalculatedAble<Value>\n): Value => {\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\n return value.defaultValue;\n }\n\n return value;\n};\n\nexport const symbolParameterWalker = (\n valueModifier: ParameterValueModifier\n) => <S extends StyleSymbolType>(\n symbol: S,\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\n): S => {\n const paths = Array.isArray(parameter)\n ? parameter\n : parameterToPaths(parameter);\n const [firstKey, ...restKeys] = paths;\n\n // @ts-ignore\n const symbolPart = symbol[firstKey];\n\n if (restKeys.length) {\n const goDeeper = symbolParameterWalker(valueModifier);\n\n return {\n ...symbol,\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\n };\n }\n\n return {\n ...symbol,\n [firstKey]: valueModifier(symbolPart) || symbolPart,\n };\n};\n\nexport const setDefaultParameterValue = symbolParameterWalker(\n getParameterValue\n);\n\nexport const setParameterValue = <S extends StyleSymbolType>(\n symbol: S,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n): S => symbolParameterWalker(() => value)(symbol, path);\n\nexport function applyParameterValue(\n symbol: StyleSymbolType,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n) {\n if (path === 'symbol') {\n return value as StyleSymbolType;\n }\n\n return setParameterValue(symbol, path, value);\n}\n","import { LineEndingType, ParameterDcColor, ParameterDcDouble } from '@evergis/api';\n\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\nimport { Offset } from './offset';\nimport { LineMiterSize } from './miters';\nimport { StyleSymbolType } from './symbol';\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\n\ntype ToClientSymbolField<\n F,\n IsClassifyable extends boolean\n> = F extends ParameterDcDouble\n ? IsClassifyable extends true\n ? ClassifyAble<number>\n : number\n : F extends ParameterDcColor\n ? IsClassifyable extends true\n ? ClassifyAble<string>\n : string\n : F;\n\ntype ExtraClientSymbolFields = {\n offset: Offset;\n /* TODO: DC has other type */\n fontWeight: number;\n childSymbols: StyleSymbolType[];\n stroke: StrokeBrushType;\n fill: FillBrushType;\n textBackground: TextBackgroundType;\n beginning: null | LineEndingType;\n beginningSize: LineMiterSize;\n ending: null | LineEndingType;\n endingSize: LineMiterSize;\n angle: CalculatedAble<number>;\n};\n\nexport type ClientSymbol<\n SymbolType,\n SymbolDcType,\n NonClassifiedFields extends keyof SymbolDcType = never\n> = {\n [K in keyof SymbolDcType]: K extends 'type'\n ? SymbolType\n : K extends keyof ExtraClientSymbolFields\n ? ExtraClientSymbolFields[K]\n : ToClientSymbolField<\n SymbolDcType[K],\n K extends NonClassifiedFields ? false : true\n >;\n};\n\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\n type: ClientSymbol['type']\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\n symbol && symbol.type === type;\n\nexport type Unclassify<T> = {\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\n ? V\n : T[K] extends CalculatedAble<infer V2>\n ? V2\n : T[K];\n};\n","import {\n PointLabelSymbolDc,\n PolygonLabelSymbolDc,\n PolylineLabelSymbolDc,\n} from '@evergis/api';\n\nimport { UnknownSymbol } from './symbol';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\n\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\n\nexport type PointLabelSymbol = ClientSymbol<\n 'labelPointSymbol',\n PointLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolygonLabelSymbol = ClientSymbol<\n 'polygonLabelSymbol',\n PolygonLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolylineLabelSymbol = ClientSymbol<\n 'polylineLabelSymbol',\n PolylineLabelSymbolDc,\n NonClassifyableLabelFields\n>;\n\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\n 'labelPointSymbol'\n);\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\n 'polygonLabelSymbol'\n);\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\n 'polylineLabelSymbol'\n);\n\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\n Boolean(\n symbol &&\n (isPointLabelSymbol(symbol) ||\n isPolygonLabelSymbol(symbol) ||\n isPolylineLabelSymbol(symbol))\n );\n\nexport type LabelType =\n | PolylineLabelSymbol\n | PolygonLabelSymbol\n | PointLabelSymbol;\n","import { StyleDc } from '@evergis/api';\n\nimport {\n CompositeSymbolType,\n isCompositeSymbol,\n isLabelSymbol,\n isRasterSymbol,\n isSimpleSymbol,\n Style,\n StyleSymbolType,\n UnknownSymbol,\n} from './types';\n\nexport const createCompositeSymbol = (\n childSymbols: StyleSymbolType[]\n): CompositeSymbolType => ({\n type: 'compositeSymbol',\n childSymbols,\n});\n\nexport const getChildSymbols = (symbol?: UnknownSymbol): StyleSymbolType[] => {\n if (!symbol || !isCompositeSymbol(symbol)) return [];\n\n return symbol.childSymbols || [];\n};\n\nexport const extractSymbol = (\n symbol?: UnknownSymbol\n): Pick<Style, 'symbol' | 'label' | 'raster'> => {\n const childSymbols = getChildSymbols(symbol);\n\n return {\n // @ts-ignore\n symbol: childSymbols.find(isSimpleSymbol),\n label: childSymbols.find(isLabelSymbol) || null,\n raster: childSymbols.find(isRasterSymbol) || null,\n };\n};\n\nexport const extractStyle = (style: StyleDc): Style => {\n // @ts-ignore\n if (isCompositeSymbol(style.symbol)) {\n return {\n ...style,\n ...extractSymbol(style.symbol),\n // @ts-ignore\n children: style.children && style.children.map(extractStyle),\n };\n }\n\n // NOTE: for cases when style is exist style object should have same reference for all extractStyle calls\n return (style || {}) as Style;\n};\n\nexport const packStyle = (style: Style): StyleDc => {\n const { ignoreLabel, label, symbol, raster, children, ...styleDc } = style;\n const childSymbols = [!ignoreLabel && label, raster].filter(Boolean);\n\n return {\n ...styleDc,\n symbol: childSymbols.length\n ? // @ts-ignore\n createCompositeSymbol([symbol, ...childSymbols])\n : symbol,\n // @ts-ignore\n children: children\n ? // @ts-ignore\n children.map(childStyle =>\n packStyle({ ...childStyle, ignoreLabel, label })\n )\n : children,\n };\n};\n","import {\n CirclePointSymbolDc,\n ClusterSymbolDc,\n CombinedPolylineSymbolDc,\n CompositeSymbolDc,\n H3GridSymbolDc,\n ImagePointSymbolDc,\n MaskedImagePointSymbolDc,\n PolygonSymbolDc,\n PolylineSymbolDc,\n RasterSymbolDc,\n SimplePolylineSymbolDc,\n SquarePointSymbolDc,\n StyleDc,\n SvgPointSymbolDc,\n} from '@evergis/api';\n\nimport { isLabelSymbol, LabelType } from './label';\nimport { extractSymbol } from \"../compositeSymbol\";\nimport { CalculatedAble } from './parameterValue';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\nimport { FillBrushType, StrokeBrushType } from './brush';\nimport { ClassificationParameterExtended } from \"../../classification\";\n\nexport type PointSymbol = ClientSymbol<\n 'circlePointSymbol',\n CirclePointSymbolDc\n>;\n\nexport type SvgPointSymbol = ClientSymbol<\n 'svgPointSymbol',\n SvgPointSymbolDc\n>;\n\nexport type SquareSymbol = ClientSymbol<\n 'squarePointSymbol',\n SquarePointSymbolDc\n> & {\n angle?: CalculatedAble<number>;\n};\n\nexport type MaskedImageSymbol = ClientSymbol<\n 'maskedImagePointSymbol',\n MaskedImagePointSymbolDc\n>;\n\nexport type StaticImageSymbol = ClientSymbol<\n 'imagePointSymbol',\n ImagePointSymbolDc\n>;\n\nexport type PolygonSymbol<\n Fill = FillBrushType,\n Stroke = StrokeBrushType\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\n fill: Fill;\n stroke: Stroke;\n};\n\nexport type SimplePolylineSymbol = ClientSymbol<\n 'simplePolylineSymbol',\n SimplePolylineSymbolDc\n>;\n\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\n\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\n\nexport type ClusterSymbolType = ClientSymbol<\"cluster\", ClusterSymbolDc>;\n\nexport type CompositeSymbolType = ClientSymbol<\n 'compositeSymbol',\n CompositeSymbolDc\n>;\n\nexport type H3GridSymbol = ClientSymbol<\n 'h3grid',\n H3GridSymbolDc\n>;\n\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\n\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\n\nexport type PointSymbolType = SvgPointSymbol | PointSymbol | SquareSymbol | MaskedImageSymbol | StaticImageSymbol;\n\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\n\nexport type StyleSymbolType =\n | PointSymbolType\n | PolygonSymbol\n | PolylineSymbols\n | LabelType\n | RasterSymbol\n | CompositeSymbolType\n | H3GridSymbolDc\n | ClusterSymbolDc;\n\nexport type StyleSymbolTypes = StyleSymbolType['type'];\n\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\n\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\n\nexport type FillStyledSymbols = PolygonSymbol;\n\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\n\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\n\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\n 'squarePointSymbol'\n);\n\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\n 'maskedImagePointSymbol'\n);\n\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\n 'imagePointSymbol'\n);\n\nexport const isCombinedPolylineSymbol = symbolTypeGuard<CombinedPolylineSymbolDc>(\"combinedPolylineSymbol\");\n\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\n\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\n 'polylineSymbol'\n);\n\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\n 'simplePolylineSymbol'\n);\n\nexport const isPolylineSymbols = (\n symbol: UnknownSymbol\n): symbol is PolylineSymbols =>\n Boolean(\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\n );\n\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\n 'compositeSymbol'\n);\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\n\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\n Boolean(\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\n );\n\nexport const isTwoDimensionalSymbol = (\n symbol: UnknownSymbol\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\n\nexport const isSizableSymbol = (\n symbol: UnknownSymbol\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\n\nexport const isStrokeStyledSymbol = (\n symbol: UnknownSymbol\n): symbol is StrokeStyledSymbols =>\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\n\nexport const isScalablePolylineSymbol = (\n symbol: PolylineSymbol | SimplePolylineSymbol\n) =>\n (symbol.beginning !== null && symbol.ending !== null) ||\n (symbol.stroke && symbol.stroke.type !== 'solid');\n\nexport const isSimpleSymbol = (\n symbol: UnknownSymbol\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\n Boolean(\n symbol &&\n !isLabelSymbol(symbol) &&\n !isCompositeSymbol(symbol) &&\n !isRasterSymbol(symbol)\n );\n\nexport const isH3GridSymbol = symbolTypeGuard<H3GridSymbolDc>(\"h3grid\");\n\nexport const isSvgPointSymbol = symbolTypeGuard<SvgPointSymbol>(\"svgPointSymbol\");\n\nexport const isClusterSymbol = symbolTypeGuard<ClusterSymbolType>(\"cluster\");\n\nexport const isClusterFillColor = (symbol: StyleSymbolType, parameter: ClassificationParameterExtended) => {\n return isClusterSymbol(symbol) && parameter === \"fillColor\";\n};\n\nexport const getExtractedSymbol = (symbol: StyleSymbolType, extractCluster = false): StyleSymbolType => {\n const extracted = isCompositeSymbol(symbol as CompositeSymbolType) ? extractSymbol(symbol)?.symbol : symbol;\n\n return extractCluster && isClusterSymbol(extracted as ClusterSymbolType)\n ? ((extracted as ClusterSymbolType).singleObjectSymbol as StyleSymbolType)\n : extracted;\n};\n","import {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\n","import { LineEndingType } from \"@evergis/api\";\n\nimport { ClassifyAble } from './parameterValue';\n\nexport const enum LineMiterSize {\n Small = 'small',\n Large = 'large',\n}\n\nexport type NoLineMiterType = {\n type: LineEndingType.None;\n};\n\ntype LineMiterBase<T extends LineEndingType> = {\n type: T;\n color?: ClassifyAble<string>;\n};\n\nexport type ArrowLineType = LineMiterBase<LineEndingType.Arrow> & {\n strokeWidth?: number;\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type FilledArrowLineMiterType = LineMiterBase<\n LineEndingType.FilledArrow\n> & {\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type SquareLineMiterType = LineMiterBase<LineEndingType.Square> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledSquareLineMiterType = LineMiterBase<\n LineEndingType.FilledSquare\n> & {\n size?: number;\n};\nexport type CircleLineMiterType = LineMiterBase<LineEndingType.Circle> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledCircleLineMiterType = LineMiterBase<\n LineEndingType.FilledCircle\n> & {\n size?: number;\n};\n\nexport type FilledLineMitters =\n | FilledArrowLineMiterType\n | FilledSquareLineMiterType\n | FilledCircleLineMiterType;\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\nexport type LineMiterType =\n | NoLineMiterType\n | ArrowLineMiters\n | SquareLineMiters\n | CircleLineMiters;\n\nexport const isMiterExist = (\n miter?: undefined | LineMiterType\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\n Boolean(miter && miter.type !== LineEndingType.None);\n\nexport const isFilledLineMitter = (\n miter: LineMiterType\n): miter is FilledLineMitters =>\n miter.type === LineEndingType.FilledCircle ||\n miter.type === LineEndingType.FilledArrow ||\n miter.type === LineEndingType.FilledSquare;\n\nexport const isArrowLineMiter = (\n miter: LineMiterType\n): miter is ArrowLineMiters =>\n miter.type === LineEndingType.Arrow ||\n miter.type === LineEndingType.FilledArrow;\n\nexport const isSquareLineMiter = (\n miter: LineMiterType\n): miter is SquareLineMiters =>\n miter.type === LineEndingType.Square ||\n miter.type === LineEndingType.FilledSquare;\n\nexport const isCircleLineMiter = (\n miter: LineMiterType\n): miter is CircleLineMiters =>\n miter.type === LineEndingType.Circle ||\n miter.type === LineEndingType.FilledCircle;\n","import { PointSymbolType, UnknownSymbol } from './symbol';\nimport { ParameterByAttribute } from './parameterValue';\n\nimport { isParameterByAttribute } from '../../classification/parameterValue';\n\nexport type SimpleOffset = [number, number];\n\nexport type ClassifiedOffset = [\n ParameterByAttribute<number>,\n ParameterByAttribute<number>\n];\n\nexport type Offset = SimpleOffset | ClassifiedOffset;\n\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\n offset &&\n !isParameterByAttribute(offset[0]) &&\n !isParameterByAttribute(offset[1]);\n\nexport const isSymbolWithOffset = (\n symbol: UnknownSymbol\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\n","import { StyleSymbolType } from './symbol';\n\nexport type ParameterByAttributeValue<Value> = {\n condition: string;\n value: Value;\n title: string | null;\n};\n\nexport type ParameterByAttribute<Value> = {\n type: 'byAttribute';\n defaultValue: Value;\n title: string | null;\n values: ParameterByAttributeValue<Value>[];\n};\n\nexport type CalculatedParameter<Value> = {\n type: 'calculated';\n expression: string;\n defaultValue: Value;\n title?: string | null;\n};\n\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\n\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\n\nexport type ParameterValue = string | number | number[] | Date;\n\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\n\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\n ParameterValueWithSymbol\n>[];\n\nexport type ClassifiedParameterValue = ClassifyAble<ParameterValueWithSymbol>;\n\nexport type UnidentifiedParameterValue =\n | ParameterValueWithSymbol\n | Partial<ClassifyAble<ParameterValueWithSymbol>>\n | Partial<CalculatedAble<ParameterValue>>;\n\nexport type CalculatedParameterValue = CalculatedAble<ParameterValue>;\n\nexport const isStringParameterValue = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is string => typeof parameterValue === 'string';\n\nexport const isParameterValueSimple = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is ParameterValue =>\n typeof parameterValue === 'number' || typeof parameterValue === 'string';\n\nexport const isParameterValueSymbol = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is StyleSymbolType => !isParameterValueSimple(parameterValue);\n","import { StyleDc } from '@evergis/api';\n\nimport { LabelType } from './label';\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\n\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\n ignoreLabel?: boolean;\n label: LabelType | null;\n raster: RasterSymbol | null;\n children: Style[] | null;\n};\n\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\n","import { StyleDc } from '@evergis/api';\n\nimport { extractStyle, packStyle } from './compositeSymbol';\nimport { Style } from './types';\n\nimport { ClassificationManager } from '../classification';\n\nexport class EvergisStyle {\n public classificationManager: ClassificationManager;\n private readonly style: Style;\n\n constructor(style: StyleDc) {\n this.style = extractStyle(style);\n this.classificationManager = new ClassificationManager(this.style);\n }\n\n public serialize() {\n return packStyle(this.style);\n }\n\n public hasRasters() {\n return !!(\n this.style.raster ||\n (this.style.children || []).some(style => style.raster)\n );\n }\n\n get symbol() {\n return this.style.symbol;\n }\n\n get raster() {\n return this.style.raster;\n }\n get label() {\n return this.style.label;\n }\n\n get children() {\n return this.style.children;\n }\n\n get title() {\n return this.style.title;\n }\n\n get condition() {\n return this.style.condition;\n }\n\n get ignoreLabel() {\n return this.style.ignoreLabel;\n }\n\n get resolution(): Nullable<[number, number]> {\n const { minResolution, maxResolution } = this.style;\n\n return minResolution === void 0 || maxResolution === void 0\n ? null\n : [minResolution, maxResolution];\n }\n}\n","import {\n ClassificationClass,\n ClassificationExtras,\n ClassificationParameterExtended,\n ExtendedClassification,\n} from './types';\nimport { ClassificationCondition } from './ClassificationCondition';\nimport { pathsToParameter } from './parameter';\nimport { isParameterByAttribute } from './parameterValue';\n\nimport {\n isStyle,\n isTwoDimensionalSymbol,\n ParameterByAttributeValue,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nconst toClassificationClass = (\n parameterValue: ParameterValueWithSymbol,\n title: string,\n condition: ClassificationCondition\n): ClassificationClass => ({\n parameterValue,\n title,\n ...(condition.isUnique()\n ? {\n uniqueValue: condition.uniqueValue,\n }\n : {\n from: condition.range[0],\n to: condition.range[1],\n }),\n});\n\nconst DEFAULT_EXTRAS: ClassificationExtras = {\n defaultTitle: '',\n // @ts-ignore\n defaultValue: null,\n};\n\nexport const toClassification = (\n values: (ParameterByAttributeValue<ParameterValueWithSymbol> | Style)[],\n parameter: ClassificationParameterExtended,\n extras: ClassificationExtras = DEFAULT_EXTRAS\n): ExtendedClassification =>\n // @ts-ignore\n values.reduce(\n // @ts-ignore\n (classification: ExtendedClassification, value) => {\n const classificationCondition = new ClassificationCondition(\n value.condition || ''\n );\n const classificationValue = toClassificationClass(\n isStyle(value) ? value.symbol : value.value,\n // @ts-ignore\n value.title,\n classificationCondition\n );\n\n classification.values.push(classificationValue);\n\n return {\n ...classification,\n type: classification.type || classificationCondition.type,\n attribute:\n classification.attribute || classificationCondition.attributeName,\n };\n },\n {\n ...extras,\n attribute: null,\n parameter,\n type: null,\n values: [],\n }\n );\n\nexport const getClassifications = (\n symbol: StyleSymbolType,\n pathContext: ClassificationParameterExtended[] = []\n): ExtendedClassification[] =>\n Object.entries(symbol).reduce(\n (classifications, [parameter, parameterValue]) => {\n const skipHeight =\n isTwoDimensionalSymbol(symbol) && parameter === 'height';\n const skip = !isObject(parameterValue) || skipHeight;\n\n if (skip) {\n return classifications;\n }\n\n if (!isParameterByAttribute(parameterValue)) {\n return [\n ...classifications,\n // @ts-ignore\n ...getClassifications(symbol[parameter], [\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n ];\n }\n\n const classification = toClassification(\n parameterValue.values,\n pathsToParameter([\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n {\n // @ts-ignore\n defaultTitle: parameterValue.title,\n defaultValue: parameterValue.defaultValue,\n }\n );\n\n return [...classifications, classification];\n },\n [] as ExtendedClassification[]\n );\n","import { getClassifications, toClassification } from './getClassifications';\nimport { ExtendedClassification } from './types';\n\nimport { Style } from '../style/types';\n\nexport class ClassificationManager {\n private classifications: ExtendedClassification[] = [];\n\n constructor(private style: Style) {\n this.collectClassifications();\n }\n\n public get values() {\n return this.classifications;\n }\n\n public find(predicate: (classification: ExtendedClassification) => boolean) {\n for (const classification of this.classifications) {\n if (predicate(classification)) {\n return classification;\n }\n }\n\n return null;\n }\n\n public filter(callback: (classification: ExtendedClassification) => boolean) {\n return this.classifications.filter(callback);\n }\n\n public map<T extends ValueOf<ExtendedClassification>>(\n callback: (classification: ExtendedClassification) => T\n ) {\n return this.classifications.map(callback);\n }\n\n public reduce<T>(\n callback: (classifications: T, classification: ExtendedClassification) => T,\n initial: T\n ) {\n return this.classifications.reduce(callback, initial);\n }\n\n public hasClassifications() {\n return this.classifications.length > 0;\n }\n\n private collectClassifications() {\n if (this.style.children && this.style.children.length) {\n this.classifications.push(\n toClassification(this.style.children, 'symbol')\n );\n }\n\n if (this.style.symbol) {\n this.classifications.push(...getClassifications(this.style.symbol));\n }\n }\n}\n","import { getParameterValue } from './parameterValue';\n\nimport { StyleSymbolType, Unclassify } from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nexport const unClassify = <V extends StyleSymbolType>(\n symbol: V\n): Unclassify<V> =>\n Object.entries(symbol).reduce((flatSymbol, [parameter, parameterValue]) => {\n let result = Array.isArray(parameterValue)\n ? parameterValue.map(getParameterValue)\n : getParameterValue(parameterValue);\n\n if (isObject(result)) {\n return {\n ...flatSymbol,\n [parameter]: unClassify(parameterValue),\n };\n }\n\n return {\n ...flatSymbol,\n [parameter]: result,\n };\n }, {} as Unclassify<V>);\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nexport const DEFAULT_LANGUAGE = \"en\";\n\nexport const resources = {\n en: {},\n ru: {},\n} as const;\n\ni18n\n .use(initReactI18next)\n .init({\n fallbackLng: DEFAULT_LANGUAGE,\n ns: Object.keys(resources[DEFAULT_LANGUAGE]),\n interpolation: {\n escapeValue: false,\n },\n resources,\n supportedLngs: Object.keys(resources),\n });\n\nexport { i18n };\n","import { i18n } from \"../../i18n\";\nimport { RangeClass } from './types';\n\nexport const printRangeClass = (value: RangeClass, index: number): string => {\n const isDouble = Boolean(value.attribute?.type === 'Double');\n const isDate = Boolean(value.attribute?.type === 'DateTime');\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\n\n if (from === null) {\n return `${to} ${isDate ? i18n.t(\"andBefore\", { ns: \"style\" }) : i18n.t(\"andLess\", { ns: \"style\" })}`;\n }\n\n if (to === null) {\n return `${isDate ? i18n.t(\"after\", { ns: \"style\" }) : i18n.t(\"more\", { ns: \"style\" })} ${from}`;\n }\n\n return from === to ? `${from}` : `${from} - ${to}`;\n};\n\nfunction getRangeValues(\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\n isDouble: boolean,\n isDate: boolean,\n index: number\n): Pick<RangeClass, 'from' | 'to'> {\n return {\n from: from !== null && index !== 0 ?\n (isDate ? from : (isDouble ? +from : +from + 1)) : from,\n to,\n };\n}\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","// TODO reduce\nexport const PREVIEW_LIMITS = {\n STROKE_WIDTH_MIN: 0.25,\n STROKE_WIDTH_MAX: 6.5,\n};\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\nimport { unique } from '@evergis/api';\n\nimport { PREVIEW_LIMITS } from './previewLimits';\n\nimport { getParameterValue } from '../core/classification';\n\nimport { ClassifyAble, StrokeBrushType } from '../core/style';\n\nimport { clamp } from '../utils/math';\n\n// TODO refactoring\nexport const enum StrokeStyle {\n Solid,\n Dash,\n Dot,\n DashDot,\n DashDotDot,\n Custom,\n}\n\ninterface StrokeStylePreset {\n style: StrokeStyle;\n type: StrokeBrushType['type'];\n intervals: number[];\n}\nexport const SOLID_INTERVALS: number[] = [];\n\nexport const solidStrokeStylePreset: StrokeStylePreset = {\n style: StrokeStyle.Solid,\n type: 'solid',\n intervals: SOLID_INTERVALS,\n};\nexport const strokeStylePresets: StrokeStylePreset[] = [\n solidStrokeStylePreset,\n {\n style: StrokeStyle.Dot,\n type: 'dashed',\n intervals: [2, 2],\n },\n {\n style: StrokeStyle.Dash,\n type: 'dashed',\n intervals: [3, 3, 3, 3],\n },\n {\n style: StrokeStyle.DashDot,\n type: 'dashed',\n intervals: [5, 2, 1, 2],\n },\n {\n style: StrokeStyle.DashDotDot,\n type: 'dashed',\n intervals: [5, 2, 1, 1, 1, 2],\n },\n {\n style: StrokeStyle.Custom,\n type: 'dashed',\n intervals: [5, 4],\n },\n];\n\nconst walkByNumbersGroup = (\n numbers: number[],\n offset: number,\n walker: (group: [number, number], offset: number) => [number, number]\n): number[] => {\n if (!numbers || !numbers.length) return [];\n\n const newNumbers = [];\n\n for (let i = 0; i < numbers.length; i++) {\n if (i % 2) {\n newNumbers.push(...walker([numbers[i - 1], numbers[i]], offset));\n }\n }\n\n return newNumbers;\n};\n\nexport const toIntervals = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [length * offset, gap * offset]\n );\n\nexport const toLineDash = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [\n Math.round(length / Math.max(1, Math.min(offset, 16) / 4)),\n Math.round(gap + 1 + Math.max(1, Math.min(offset, 16) / 2)),\n ]\n );\n\nexport const getLineDash = (brush: StrokeBrushType): number[] => {\n if (!brush || brush.type === 'solid') return [];\n\n // @ts-ignore\n return toLineDash(brush.intervals, brush.width);\n};\n\nexport const defineStrokeStylePreset = (intervals: number[]) => {\n if (!intervals.length) return solidStrokeStylePreset;\n\n return strokeStylePresets.find(preset => {\n if (preset.intervals.length !== intervals.length) return false;\n\n const uniqueStrokeWidths = preset.intervals\n .map((presetInterval, i) => intervals[i] / presetInterval)\n .filter(unique);\n\n return uniqueStrokeWidths.length === 1;\n });\n};\n\nexport const getDashStylePreset = (\n dashStyle: StrokeStyle\n): StrokeStylePreset | undefined =>\n strokeStylePresets.find(preset => preset.style === dashStyle);\n","import { BrushFill as sBrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { Color } from '@evergis/color';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n FillBrushType,\n HatchBrush,\n isHatchBrush,\n PolygonSymbol,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nconst ALPHA_NORMALIZER = 65025;\n\nconst sum = (numbers: number[]) =>\n numbers.reduce((result, num) => result + num, 0);\n\nconst shouldFillMatrixCell = (\n matrixSize: number,\n hatchAngle: number,\n x: number,\n y: number\n) => {\n const center = Math.round(matrixSize / 2);\n\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\n return true;\n }\n if (hatchAngle === Math.PI / 4 && y === x) {\n return true;\n }\n if (hatchAngle === Math.PI / 2 && y === center) {\n return true;\n }\n\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\n};\n\nconst createEmptyMatrix = (size: number): number[][] =>\n Array(size)\n .fill(null)\n .map(() => Array(size));\n\nconst fillMatrix = (\n matrix: number[][],\n filler: (x: number, y: number, size: number) => number\n) => {\n const matrixSize = matrix.length;\n\n for (let x = 0; x < matrixSize; x++) {\n for (let y = 0; y < matrixSize; y++) {\n matrix[x][y] = filler(x, y, matrixSize);\n }\n }\n};\n\nconst createFillBrushMatrix = (\n hatchAngle: number,\n hatchWidth: number,\n scalingFactor: number[]\n) => {\n const matrixSize = Math.max(\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\n hatchWidth\n );\n const matrix = createEmptyMatrix(matrixSize);\n\n fillMatrix(matrix, (x, y, size) =>\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\n );\n\n return matrix;\n};\n\nconst createSymbolFillBrush = (\n fillBrush: FillBrushType\n): number[][] | undefined => {\n if (fillBrush.type !== 'hatch') return undefined;\n\n return createFillBrushMatrix(\n // @ts-ignore\n getParameterValue(fillBrush.hatchAngle),\n // @ts-ignore\n Math.round(fillBrush.hatchWidth),\n fillBrush.scalingFactor\n );\n};\n\nexport class SGisBrushFill extends sBrushFill {\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n fillBackground: getHexColor(\n // @ts-ignore\n getParameterValue(originalSymbol.fill?.color)\n ),\n fillForeground: isHatchBrush(originalSymbol.fill)\n ? // @ts-ignore\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\n : void 0,\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\n lineCap: 'square',\n });\n }\n\n _updateBrush() {\n // @ts-ignore\n if (!this._initialized) return;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n const brush = this.fillBrush;\n const brushSize = brush.length;\n const foreground = new Color(this.fillForeground);\n const background = new Color(this.fillBackground);\n\n canvas.height = brushSize;\n canvas.width = brushSize;\n for (let i = 0; i < brushSize; i++) {\n // eslint-disable-next-line id-length\n for (let j = 0; j < brush[i].length; j++) {\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\n const dstA = (background.a / 255) * (1 - srcA);\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\n const red = Math.round(\n Math.min(255, background.r * dstA + foreground.r * srcA)\n );\n const green = Math.round(\n Math.min(255, background.g * dstA + foreground.g * srcA)\n );\n const blue = Math.round(\n Math.min(255, background.b * dstA + foreground.b * srcA)\n );\n\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\n ctx.fillRect(j, i, 1, 1);\n }\n }\n this._brush = new Image();\n this._brush.src = canvas.toDataURL();\n }\n\n clone() {\n return new SGisBrushFill(this.originalSymbol);\n }\n}\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisImageFill extends sImageFill {\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisImageFill(this.originalSymbol);\n }\n}\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisPolygonSymbol extends sPolygonSymbol {\n constructor(public originalSymbol: PolygonSymbol) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\n // TODO?: may be it should be defined by user\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisPolygonSymbol(this.originalSymbol);\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { projectRings } from '@evergis/sgis/es/geotools';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\n\nimport { LineMiterSize } from '../../core/style/types';\n\nexport type MiterPosition = 'left' | 'right';\n\nexport interface LineMiterRenderBaseInfo {\n position: MiterPosition;\n color: string;\n strokeWidth: number;\n kind: LineEndingType;\n size: LineMiterSize;\n}\n\nconst adaptMiterRings = (\n rings: Coordinates[][],\n resolution: number,\n fromCrs: Crs,\n toCrs: Crs\n) => {\n const projected = projectRings(rings, fromCrs, toCrs);\n\n return simplifyCoordinates(\n projected.map(ring =>\n // @ts-ignore\n ring.map(([x, y]) => [x / resolution, y / -resolution])\n ),\n 1\n );\n};\n\nconst miterSizeCalcs: Record<LineMiterSize, (strokeWidth: number) => number> = {\n [LineMiterSize.Small]: strokeWidth => (strokeWidth + 1) * 3 + 1,\n [LineMiterSize.Large]: strokeWidth => (strokeWidth + 1) * 5 - 1,\n};\n\nexport abstract class LineMiterRender implements LineMiterRenderBaseInfo {\n // @ts-ignore\n position: MiterPosition;\n // @ts-ignore\n color: string;\n // @ts-ignore\n strokeWidth: number;\n // @ts-ignore\n kind: LineEndingType;\n // @ts-ignore\n size: LineMiterSize;\n\n constructor(baseInfo: LineMiterRenderBaseInfo) {\n Object.assign(this, baseInfo);\n }\n\n getAnchor = (rings: Coordinates[][]): Coordinates => {\n if (this.position === 'right') {\n const lastRing = rings[rings.length - 1];\n\n return (lastRing && lastRing[lastRing.length - 1]) || null;\n }\n\n const firstRing = rings[0];\n\n return (firstRing && firstRing[0]) || null;\n };\n\n getRender(\n anchorRings: Coordinates[][],\n anchorCrs: Crs,\n resolution: number,\n currentCrs: Crs\n ): Render {\n const xMultiplier = this.position === 'right' ? 1 : -1;\n const miterAnchor = this.getAnchor(anchorRings);\n const miterRings = this.createRings(miterAnchor, xMultiplier);\n const projectedMiterRings = adaptMiterRings(\n miterRings,\n resolution,\n anchorCrs,\n currentCrs\n );\n\n return this.createRender(projectedMiterRings);\n }\n\n get miterSize() {\n const calcMiterSize = miterSizeCalcs[this.size];\n\n return calcMiterSize ? calcMiterSize(this.strokeWidth) : 1;\n }\n abstract get usageSize(): number;\n abstract createRings(\n anchor: Coordinates,\n xMultiplier: number\n ): Coordinates[][];\n abstract createRender(rings: Coordinates[][]): Render;\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class ArrowLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y],\n [x, y - this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledArrow;\n\n return new PolyRender(miterRings, {\n enclosed: isFilled,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { polygonCircleFromPoint } from '../../';\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class CircleLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth * 3;\n }\n\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledCircle;\n\n return new PolyRender(\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\n {\n fillColor: isFilled ? this.color : 'transparent',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n enclosed: true,\n }\n );\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class SquareLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledSquare;\n\n return new PolyRender(miterRings, {\n enclosed: true,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\n\nimport { ArrowLineMiterRender } from './ArrowLineMiterRender';\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\n\nexport const getLineMiterRender = (\n options: LineMiterRenderBaseInfo\n): LineMiterRender | null => {\n switch (options.kind) {\n case LineEndingType.Arrow:\n case LineEndingType.FilledArrow:\n return new ArrowLineMiterRender(options);\n case LineEndingType.Square:\n case LineEndingType.FilledSquare:\n return new SquareLineMiterRender(options);\n case LineEndingType.Circle:\n case LineEndingType.FilledCircle:\n return new CircleLineMiterRender(options);\n default:\n return null;\n }\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { MiterPosition } from './LineMiterRender';\n\nconst updateRingForRightMiter = (\n ring: Coordinates[],\n miterSize: number,\n isLastRing: boolean\n): Coordinates[] => {\n const reversedRing = ring.slice().reverse();\n\n for (let i = 0; i < reversedRing.length; i++) {\n const coordinates = reversedRing[i];\n\n if (isLastRing && i === 0) {\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\n }\n\n const nextCoordinates = reversedRing[i - 1];\n\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\n reversedRing[i] = [\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return reversedRing.reverse();\n};\n\nconst updateRingForLeftMiter = (\n ring: Coordinates[],\n miterSize: number,\n isFirstRing: boolean\n): Coordinates[] => {\n const newRing = ring.slice();\n\n for (let i = 0; i < newRing.length; i++) {\n const coordinates = newRing[i];\n\n if (i === 0 && isFirstRing) {\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\n }\n\n const prevCoordinates = newRing[i - 1];\n\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\n newRing[i] = [\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return newRing;\n};\n\nexport const updateRingsForMiter = (\n rings: Coordinates[][],\n position: MiterPosition,\n miterSize: number\n): Coordinates[][] => {\n return rings.map((ring, ringIndex) => {\n switch (position) {\n case 'right':\n return updateRingForRightMiter(\n ring,\n miterSize,\n ringIndex === rings.length - 1\n );\n default:\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\n }\n });\n};\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n isDashedBrush,\n isSimplePolylineSymbol,\n PolylineSymbols,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { clamp } from '../../utils/math';\nimport { PREVIEW_LIMITS } from '../previewLimits';\nimport { getLineDash } from '../strokeStyle';\n\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\n rings.map(ring =>\n ring.map(coordinates => coordinates.slice() as Coordinates)\n );\n\nexport class SGisPolylineSymbol extends sPolylineSymbol {\n constructor(public originalSymbol: PolylineSymbols) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n strokeWidth: clamp(\n // @ts-ignore\n getParameterValue(originalSymbol.stroke?.width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n // @ts-ignore\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\n if (!isSimplePolylineSymbol(this.originalSymbol))\n return super.renderFunction(feature, resolution, crs);\n\n const {\n ending,\n beginning,\n } = this.originalSymbol;\n const renders: Render[] = [];\n\n const featureCopy = feature.clone();\n\n const beginningMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: beginning.type,\n position: 'left',\n // @ts-ignore\n size: beginning.size,\n strokeWidth: this.strokeWidth,\n });\n const endingMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: ending.type,\n position: 'right',\n // @ts-ignore\n size: ending.size,\n strokeWidth: this.strokeWidth,\n });\n\n if (beginningMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'left',\n beginningMiterRender.usageSize\n );\n const render = beginningMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n if (endingMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'right',\n endingMiterRender.usageSize\n );\n const render = endingMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n // NOTE: линия должна быть в начале чтобы быть под митерами\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\n\n return renders;\n }\n\n clone() {\n return new SGisPolylineSymbol(this.originalSymbol);\n }\n}\n","import React, { ComponentType } from 'react';\nimport ReactDOM from 'react-dom';\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nexport type LabelSymbolComponent =\n | ComponentType<{ content: string }>\n | ComponentType;\n\ntype LabelSymbolParams = {\n offset?: Offset;\n component?: LabelSymbolComponent;\n};\n\nexport class LabelSymbol extends DynamicPointSymbol {\n public component?: LabelSymbolComponent;\n\n constructor({ component, offset }: LabelSymbolParams = {}) {\n super({ offset });\n this.component = component;\n }\n\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\n const node = document.createElement('div');\n\n this.renderDom(feature.content, node);\n\n return node;\n }\n\n protected _updateFeatureNode(feature: LabelFeature): void {\n this.renderDom(feature.content, this.getNode(feature));\n }\n\n private renderDom(content: string, node: HTMLElement): void {\n if (!node) {\n return;\n }\n\n const Component = this.component;\n\n if (Component) {\n ReactDOM.render(<Component content={content} />, node);\n } else {\n node.innerText = content;\n }\n }\n}\n","import React from 'react';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nimport { renderLabelSymbolType } from '../../components';\nimport { LabelSymbol } from './LabelSymbol';\n\nexport const defaultOffset: Offset = [8, -16];\n\ntype createLabelSymbolParams = {\n offset?: Offset;\n onClose?: VoidFunction;\n renderLabel: renderLabelSymbolType;\n};\n\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\n const {\n offset = defaultOffset,\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\n onClose = undefined,\n } = props || {};\n\n return new LabelSymbol({\n offset,\n component: ({ content }: { content: string }) =>\n renderLabel({ content, onClose }),\n });\n};\n","import {\n PointSymbol,\n PointSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/point/Point';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Feature } from '@evergis/sgis';\n\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\nexport type EditorPointSymbolParams = {\n shadowColor: string;\n shadowSize: number;\n mapCoordinates?: Coordinates;\n} & PointSymbolConstructorParams;\n\nexport class ShadowedPointSymbol extends PointSymbol {\n shadowColor!: string;\n shadowSize!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPointSymbolParams) {\n super(options);\n }\n\n static getShadowArc(\n position: Coordinates,\n { strokeWidth = 2, shadowColor, shadowSize, size = 6 }: EditorPointSymbolParams,\n mapCoordinates: Coordinates,\n ): Arc {\n return new Arc(position, {\n fillColor: \"transparent\",\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n radius: (size + strokeWidth + shadowSize) / 2,\n mapCoordinates,\n });\n }\n\n static getPointArc(\n position: Coordinates,\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams,\n mapCoordinates: Coordinates,\n ): Arc {\n return new Arc(position, {\n fillColor,\n strokeColor,\n strokeWidth,\n radius: size / 2,\n mapCoordinates,\n });\n }\n\n public renderFunction(\n feature: PointFeature,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof PointFeature)) return [];\n const { position } = feature.projectTo(crs);\n\n const pxPosition: Coordinates = [\n position[0] / resolution + (this.offset[0] || 0),\n -position[1] / resolution + (this.offset[1] || 0),\n ];\n\n const shadowRender = this.getShadow(pxPosition, feature, position);\n const pointArc = this.getPoint(pxPosition, feature, position);\n\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\n }\n\n protected getShadow(\n position: Coordinates,\n _feature: Feature,\n mapCoordinates: Coordinates,\n ): Arc | void {\n return ShadowedPointSymbol.getShadowArc(position, this, mapCoordinates);\n }\n\n protected getPoint(position: Coordinates, _feature: Feature, mapCoordinates: Coordinates): Arc {\n return ShadowedPointSymbol.getPointArc(position, this, mapCoordinates);\n }\n}\n","import {\n PolylineSymbol,\n PolylineSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Feature } from '@evergis/sgis';\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from './ShadowedPointSymbol';\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\nexport const getSimplifiedPolygonCoordinates = (feature: Poly, crs: Crs, tolerance = 1) => {\n const projected = feature.crs.equals(crs) ? feature.rings : feature.projectTo(crs).rings;\n\n return simplifyCoordinates(projected, tolerance);\n};\n\nexport function createShadowRender(\n position: Coordinates,\n { strokeWidth = 1, shadowColor, shadowSize, size = 3, mapCoordinates }: EditorPointSymbolParams,\n) {\n const shadowRadius = (size + strokeWidth + shadowSize) / 2;\n\n return new Arc(position, {\n fillColor: \"transparent\",\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n radius: shadowRadius,\n mapCoordinates,\n });\n}\n\nexport function createPointRender(\n position: Coordinates,\n { strokeColor, strokeWidth, fillColor, size = 3, mapCoordinates }: EditorPointSymbolParams,\n) {\n const radius = size / 2;\n\n return new Arc(position, {\n fillColor,\n strokeColor,\n strokeWidth,\n radius,\n mapCoordinates,\n });\n}\n\nexport type EditorPolySymbolParams = {\n shadowColor: string;\n shadowSize: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n} & PolylineSymbolConstructorParams;\n\nexport class ShadowedPolySymbol extends PolylineSymbol {\n shadowColor!: string;\n shadowSize!: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPolySymbolParams) {\n super(options);\n }\n\n public renderFunction(\n feature: Polygon,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof Poly)) return [];\n\n const coordinates = super.getRenderedCoordinates(\n feature,\n resolution,\n crs\n );\n const simplifiedFeatureCoordinates = getSimplifiedPolygonCoordinates(feature, crs);\n const polyRender = this.getPolyRender(coordinates, feature, simplifiedFeatureCoordinates);\n const shadowRender = this.getShadow(coordinates, feature, simplifiedFeatureCoordinates);\n const vertexRenders = this.getVertexRenders(coordinates, simplifiedFeatureCoordinates);\n let renders: Render[] = [polyRender];\n\n if (shadowRender) {\n renders = [shadowRender, polyRender];\n }\n\n if (vertexRenders) {\n renders = renders.concat(vertexRenders);\n }\n\n return renders;\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n _feature: Feature,\n mapCoordinates: Coordinates[][],\n ): PolyRender | void {\n return new PolyRender(coordinates, {\n fillStyle: FillStyle.None,\n enclosed: this.enclose,\n strokeColor: this.shadowColor,\n strokeWidth: this.shadowSize,\n lineDash: this.lineDash,\n mapCoordinates,\n });\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n _feature: Feature,\n mapCoordinates: Coordinates[][],\n ): PolyRender {\n return new PolyRender(coordinates, {\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\n enclosed: this.enclose,\n fillColor: this.fillColor,\n strokeColor: this.strokeColor,\n strokeWidth: this.strokeWidth,\n lineDash: this.lineDash,\n mapCoordinates,\n });\n }\n\n protected getVertexRenders(\n coordinates: Coordinates[][],\n mapCoordinates: Coordinates[][]\n ): Arc[] | void {\n if (!this.showVertex) return;\n\n const pointRenderers = [];\n const shadowRenderers = [];\n\n for (let i = 0; i < coordinates.length; i++) {\n const ring = coordinates[i];\n\n for (let j = 0; j < ring.length; j++) {\n const point = ring[j];\n const featurePoint = mapCoordinates[i][j];\n\n const shadowRender = createShadowRender(point, {\n size: 6,\n strokeWidth: 2,\n shadowColor: this.shadowColor,\n strokeColor: this.strokeColor,\n shadowSize:\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\n fillColor: 'transparent',\n mapCoordinates: featurePoint,\n });\n const pointRender = createPointRender(point, {\n size: 6,\n strokeWidth: 2,\n shadowColor: this.shadowColor,\n strokeColor: this.strokeColor,\n shadowSize:\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\n fillColor: '#ffffff',\n mapCoordinates: featurePoint,\n });\n\n shadowRenderers.push(shadowRender);\n pointRenderers.push(pointRender);\n }\n }\n\n return [...pointRenderers, ...shadowRenderers];\n }\n}\n\nconst polySymbolParams = {\n strokeWidth: 2,\n strokeColor: '#e33600',\n shadowSize: 8,\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n};\n\nconst measureSymbolParams = {\n strokeColor: '#ff6933',\n shadowSize: 0,\n vertexShadowSize: 0,\n};\n\nexport const measureLengthSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n enclose: false,\n showVertex: true,\n});\n\nexport const measureAreaSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n fillColor: 'rgba(255, 105, 51, 0.25)',\n enclose: true,\n showVertex: true,\n});\n\nconst snapSymbolParams = {\n size: 10,\n strokeWidth: 2,\n strokeColor: '#e33600',\n fillColor: '#ffffff',\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n shadowSize: 3,\n};\n\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\n ...snapSymbolParams,\n strokeColor: '#ff6933',\n shadowSize: 0,\n});\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\ntype SelectedFeature = PointFeature & {\n isSelected: boolean;\n};\n\nexport type SelectedPointSymbolParams = {\n selectedStrokeColor: string;\n selectedFillColor: string;\n} & EditorPointSymbolParams;\n\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\n selectedStrokeColor!: string;\n selectedFillColor!: string;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPointSymbolParams) {\n super(props);\n }\n\n protected getShadow(\n position: [number, number],\n feature: SelectedFeature,\n mapCoordinates: Coordinates,\n ): Arc | void {\n if (feature.isSelected) {\n return super.getShadow(position, feature, mapCoordinates);\n }\n }\n\n protected getPoint(\n position: [number, number],\n feature: SelectedFeature,\n mapCoordinates: Coordinates,\n ): Arc {\n const pointRender = super.getPoint(position, feature, mapCoordinates);\n\n if (feature.isSelected) {\n pointRender.strokeColor = this.selectedStrokeColor;\n pointRender.fillColor = this.selectedFillColor;\n }\n\n return pointRender;\n }\n}\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\n\nimport {\n EditorPolySymbolParams,\n ShadowedPolySymbol,\n} from '../Shadowed';\n\ntype SelectedFeature = Polygon & {\n isSelected: boolean;\n};\n\nexport type SelectedPolySymbolParams = {\n selectedFillColor?: string;\n selectedStrokeColor: string;\n selectedStrokeWidth?: number;\n} & EditorPolySymbolParams;\n\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\n selectedFillColor!: string;\n selectedStrokeColor!: string;\n selectedStrokeWidth!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPolySymbolParams) {\n super(props);\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n feature: SelectedFeature,\n mapCoordinates: Coordinates[][],\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(coordinates, feature, mapCoordinates);\n }\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n feature: SelectedFeature,\n mapCoordinates: Coordinates[][],\n ): PolyRender {\n const polyRender = super.getPolyRender(coordinates, feature, mapCoordinates);\n if (feature.isSelected) {\n polyRender.fillColor = this.selectedFillColor;\n polyRender.strokeColor = this.selectedStrokeColor;\n if (this.selectedStrokeWidth !== void 0) {\n polyRender.strokeWidth = this.selectedStrokeWidth;\n }\n }\n\n return polyRender;\n }\n}\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\nimport {\n MouseEventFlags,\n mouseEvents,\n Handler,\n} from '@evergis/sgis/es/EventHandler';\n\nimport { metersToPixels } from '../../utils/metersToPixels';\n\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\n\nconst defaultPathStyles: SvgPolyPathStyles = {\n strokeWidth: 2,\n strokeColor: 'rgb(0, 163, 245)',\n fillStyle: FillStyle.None,\n};\n\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\n container: HTMLDivElement = document.createElement('div');\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\n pathStyles?: SvgPolyPathStyles;\n circle?: SVGPolyProps['circle'];\n className?: string;\n appendToSvg?: SVGPolyProps['appendToSvg'];\n\n constructor({\n redrawFeatureNode,\n pathStyles,\n circle,\n className,\n appendToSvg,\n }: SVGPolyProps = {}) {\n super();\n this.container.style.position = 'absolute';\n this.redrawFeatureNode = redrawFeatureNode;\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\n this.circle = circle;\n this.className = className;\n this.appendToSvg = appendToSvg;\n }\n\n renderFunction(\n feature: SVGFeaturePoly,\n resolution: number,\n crs: Crs\n ): Render[] {\n const coordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(coordinates);\n svg && this.container.append(svg);\n\n feature.__dynamicSymbolRender = new DynamicRender({\n node: this.container,\n update: (bbox, resolution) =>\n this.update({ bbox, resolution, feature, crs }),\n redraw: () => {\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\n },\n });\n\n this._setEventListeners(feature);\n\n return [feature.__dynamicSymbolRender];\n }\n\n setCirclePxRaius(crs: Crs) {\n if (this.circle && this.pathStyles) {\n this.pathStyles.radius =\n metersToPixels(this.circle.radius, {\n painter: this.circle.painter,\n crs,\n }) + (this.circle?.pxOffset || 0);\n }\n }\n\n update({\n bbox,\n resolution,\n feature,\n crs,\n }: {\n bbox?: Bbox;\n resolution?: number;\n feature: SVGFeaturePoly;\n crs: Crs;\n }) {\n if (!feature) return;\n\n if (!bbox) bbox = feature.__lastBbox;\n if (!resolution) resolution = feature.__lastResolution;\n\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\n\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\n const newCoordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(newCoordinates);\n svg && this.container.append(svg);\n }\n\n const polygon = feature.projectTo(bbox.crs);\n const radiusOffset = this.pathStyles?.radius\n ? this.pathStyles?.radius +\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\n : 0;\n const dx =\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\n const dy =\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\n\n this.container.style.left = `${dx.toString()}px`;\n this.container.style.top = `${dy.toString()}px`;\n\n feature.__lastBbox = bbox;\n feature.__lastResolution = resolution;\n }\n\n setSvg(\n coordinates: [number, number][][] | Coordinates\n ): SVGElement | undefined {\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\n this.pathStyles || {};\n const svgRender = new SvgRender({\n coordinates,\n ...defaultPathStyles,\n appendToSvg: this.appendToSvg,\n ...this.pathStyles,\n });\n\n if (this.circle) {\n svgRender._setArcNode();\n } else {\n svgRender._setPolyNode();\n }\n\n let svgElement;\n svgRender.getNode((_: null, svg: SVGElement) => {\n svgElement = svg;\n this.className && svgElement.classList.add(this.className);\n const path =\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\n\n if (path) {\n path.setAttribute('stroke-linecap', lineCap || 'round');\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\n\n if (this.circle) {\n path.setAttribute(\n 'stroke-dasharray',\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\n );\n }\n }\n });\n\n return svgElement;\n }\n\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\n\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\n this.circle ? 'circle' : 'path'\n );\n\n Object.keys(mouseEvents).forEach(eventName => {\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\n listenDomEvent(\n svgNode,\n mouseEvents[eventName].type,\n (event: Handler) => {\n dynamicFeature.fire(mouseEvents[eventName].type, {\n node: svgNode,\n browserEvent: event,\n });\n }\n );\n }\n });\n }\n}\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\nimport { ClusterSymbolDc } from \"@evergis/api\";\n\nimport {\n SGisImageSymbolType,\n SGisPointSymbolType,\n SGisPolygonSymbolType,\n SGisPolylineSymbolType,\n SGisSymbolType,\n} from './types';\n\nexport function isSGisPointSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPointSymbolType {\n return (\n symbol instanceof PointSymbol ||\n symbol instanceof StaticImageSymbol ||\n symbol instanceof SquareSymbol ||\n symbol instanceof MaskedImage\n );\n}\n\nexport function isSGisImageSymbol(\n symbol: SGisSymbolType\n): symbol is SGisImageSymbolType {\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\n}\n\nexport function isSGisPolygonSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolygonSymbolType {\n return (\n symbol instanceof PolygonSymbol ||\n symbol instanceof BrushFill ||\n symbol instanceof ImageFill\n );\n}\n\nexport function isSGisPolylineSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolylineSymbolType {\n return symbol instanceof PolylineSymbol;\n}\n\nexport function isSGisH3Symbol(\n symbol: SGisSymbolType\n): symbol is H3Symbol {\n return symbol instanceof H3Symbol;\n}\n\nexport function isSGisCombinedPolylineSymbol(\n symbol: SGisSymbolType\n): symbol is CombinedPolylineSymbol {\n return symbol instanceof CombinedPolylineSymbol\n}\n\nexport function isSGisClusterSymbol(\n symbol: SGisSymbolType\n): symbol is ClusterSymbol {\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\n}\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\nimport { plain } from '@evergis/sgis/es/Crs';\nimport { CombinedPolyline } from \"@evergis/sgis/es/features/CombinedPolyline\";\n\n/**\n * Моки фич для отображения превью символа\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\n */\n\nexport const viewBoxSize = 100;\n\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\n\nexport const lineFeature = new Polyline(\n [\n [0, -57],\n [26, -57],\n [40, -35],\n [60, -65],\n [74, -43],\n [100, -43],\n ],\n {\n crs: plain,\n }\n);\nexport const combinedLineFeature = new CombinedPolyline(\n [\n [0, -57],\n [26, -57],\n [40, -35],\n [60, -65],\n [74, -43],\n [100, -43],\n ],\n {\n crs: plain,\n }\n);\nexport const polygonFeature = new Polygon(\n [\n [20, -20],\n [80, -20],\n [80, -80],\n [20, -80],\n ],\n { crs: plain }\n);\nexport const h3gridFeature = new H3Feature(\n [\n [50, -15],\n [80, -33],\n [80, -67],\n [50, -85],\n [20, -67],\n [20, -33],\n [50, -15],\n ],\n { crs: plain }\n);\n\nexport const lineLegendFeature = new Polyline(\n [\n [0, -50],\n [100, -50],\n ],\n {\n crs: plain,\n }\n);\n\nexport const polygonLegendFeature = new Polygon(\n [\n [20, -20],\n [80, -20],\n [80, -80],\n [20, -80],\n ],\n { crs: plain }\n);\n\nexport const polygonMapLegendFeature = new Polygon(\n [\n [50, 0],\n [100, -25],\n [100, -75],\n [50, -100],\n [0, -75],\n [0, -25],\n ],\n { crs: plain }\n);\n\nexport const MAP_LEGEND_FEATURES = {\n polygon: polygonMapLegendFeature,\n};\n\nexport const LEGEND_FEATURES = {\n point: pointFeature,\n polyline: lineLegendFeature,\n combinedPolyline: combinedLineFeature,\n polygon: polygonLegendFeature,\n h3grid: h3gridFeature,\n};\n\nexport const MOCK_FEATURES = {\n point: pointFeature,\n polyline: lineFeature,\n combinedPolyline: combinedLineFeature,\n polygon: polygonFeature,\n h3grid: h3gridFeature,\n} as const;\n","import { plain } from '@evergis/sgis/es/Crs';\n\nimport { isSGisCombinedPolylineSymbol, isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\nimport {\n LEGEND_FEATURES,\n MAP_LEGEND_FEATURES,\n MOCK_FEATURES,\n viewBoxSize,\n} from './mockFeatures';\nimport { SGisSymbolType } from './types';\n\nexport function getSymbolRenders(\n symbol: SGisSymbolType,\n size: number = viewBoxSize,\n features: Partial<typeof MOCK_FEATURES> = {}\n) {\n const resolution = viewBoxSize / size;\n const featuresToRender = { ...MOCK_FEATURES, ...features };\n\n if (isSGisPolygonSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polygon,\n resolution,\n plain\n );\n }\n\n if (isSGisPolylineSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polyline,\n resolution,\n plain\n );\n }\n\n if (isSGisH3Symbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.h3grid,\n resolution,\n plain\n );\n }\n\n if (isSGisCombinedPolylineSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.combinedPolyline,\n resolution,\n plain\n );\n }\n\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\n}\n\nexport const getMapLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => {\n return getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\n}\n\nexport const getLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => {\n return getSymbolRenders(symbol, size, LEGEND_FEATURES);\n}\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\n\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\n renders.forEach(render => {\n canvas.draw(<RenderForCanvas>render);\n });\n}\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { Color } from '@evergis/color';\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\n\nimport { getParameterValue } from '../core/classification';\n\nimport {\n ClassifyAble,\n H3GridSymbol,\n isPolygonHasHatchBrush,\n isPolygonHasPatternBrush,\n MaskedImageSymbol,\n Offset,\n ParameterValue,\n PointSymbol,\n PolygonSymbol,\n PolylineSymbols,\n SimpleOffset,\n SquareSymbol,\n StaticImageSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../core/style';\n\nimport {\n SGisBrushFill,\n SGisImageFill,\n SGisPolygonSymbol,\n SGisPolylineSymbol,\n} from './Evergis';\n\nimport { SGisSymbolType } from './types';\n\n// TODO create classes from unClassified symbols only\nexport function deserializeSymbol(\n symbol: StyleSymbolType\n): SGisSymbolType | null {\n switch (symbol.type) {\n case \"h3grid\":\n return deserializeH3Symbol(symbol as H3Symbol);\n case \"svgPointSymbol\":\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\n case 'circlePointSymbol':\n return deserializePointSymbol(symbol as PointSymbol);\n case 'squarePointSymbol':\n return deserializeSquareSymbol(symbol as SquareSymbol);\n case 'maskedImagePointSymbol':\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\n case 'imagePointSymbol':\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\n case 'polygonSymbol':\n return deserializePolygonSymbol(symbol as PolygonSymbol);\n case 'simplePolylineSymbol':\n case 'polylineSymbol':\n return deserializePolylineSymbol(symbol as PolylineSymbols);\n case \"clusterSymbol\":\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\n default:\n return null;\n }\n}\n\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\n return new H3Symbol({\n ...symbol,\n cellSize: getParameterValue(symbol.cellSize as number),\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\n fillColor: getParameterValue(symbol?.fill?.color as string),\n });\n}\n\nfunction deserializePointSymbol(symbol: PointSymbol) {\n // @ts-ignore\n return new SPointSymbol(deserializePointSymbolParams(symbol));\n}\n\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\n getParameterValue(offset?.[0]),\n getParameterValue(offset?.[1]),\n];\n\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\n return {\n type: getParameterValue(type as ParameterValue),\n data: getParameterValue(data as ParameterValue),\n size: getParameterValue(size as ParameterValue),\n offset: getOffsetParameterValue(offset as Offset),\n angle: getParameterValue(angle as ParameterValue),\n ...(background\n ? {\n background: {\n ...(background as SvgParameterDc),\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\n },\n }\n : {}),\n ...(figure\n ? {\n figure: {\n ...(figure as SvgParameterDc),\n strokeColor: deserializeColor(getParameterValue((figure as SvgParameterDc)?.strokeColor as string)),\n strokeWidth: getParameterValue((figure as SvgParameterDc)?.strokeWidth as ParameterValue),\n fillColor: deserializeColor(\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\n ),\n },\n }\n : {}),\n };\n}\n\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\n}\n\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\n return new SSquareSymbol({\n ...deserializePointSymbolParams(symbol),\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n });\n}\n\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\n return new MaskedImage({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n imageSource: deserializeBase64(symbol.image),\n // @ts-ignore\n maskSource: deserializeBase64(symbol.imageMask),\n // @ts-ignore\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\n });\n}\n\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\n return new SStaticImageSymbol({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n source: deserializeBase64(symbol.image),\n });\n}\n\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\n if (isPolygonHasPatternBrush(symbol)) {\n return new SGisImageFill(symbol);\n }\n\n if (isPolygonHasHatchBrush(symbol)) {\n return new SGisBrushFill(symbol);\n }\n\n return new SGisPolygonSymbol(symbol);\n}\n\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\n return new SGisPolylineSymbol(symbol);\n}\n\nfunction deserializePointSymbolParams({\n size,\n offset,\n strokeColor,\n strokeWidth,\n fillColor,\n}: PointSymbol | SquareSymbol) {\n return {\n size: getParameterValue(size as ClassifyAble<number>),\n offset: deserializeAnchor(offset as Offset),\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\n strokeColor: deserializeColor(\n getParameterValue(strokeColor as ClassifyAble<string>)\n ),\n fillColor: deserializeColor(\n getParameterValue(fillColor as ClassifyAble<string>)\n ),\n };\n}\n\nfunction deserializeBase64(base: string) {\n return `data:image/png;base64,${base}`;\n}\n\nexport function deserializeAnchor(offset: Offset) {\n // @ts-ignore\n return offset.map(getParameterValue);\n}\n\nfunction deserializeColor(color: string): string | null {\n return color ? new Color(color).toString() : null;\n}\n","import { SGisSymbolType } from './types';\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\n\nimport { clamp } from '../utils/math';\n\nexport const clampSymbol = (\n symbol: SGisSymbolType,\n min: number,\n max: number\n): SGisSymbolType => {\n if (isSGisImageSymbol(symbol)) {\n symbol.width = clamp(symbol.width, min, max);\n symbol.height = clamp(symbol.height, min, max);\n } else if (isSGisPointSymbol(symbol)) {\n symbol.size = clamp(symbol.size, min, max);\n }\n\n return symbol;\n};\n\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\n if (isSGisImageSymbol(symbol)) {\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\n } else if (isSGisPointSymbol(symbol)) {\n symbol.offset = [0, 0];\n }\n\n return symbol;\n}\n\nexport const adjustSymbol = (\n symbol: SGisSymbolType,\n { size }: { size: number }\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\n","import { MutableRefObject, useEffect } from 'react';\nimport { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\n\nimport {\n getSymbolRenders,\n renderSymbolToCanvas,\n SGisSymbolType,\n} from '../symbols';\n\nexport interface UseSymbolParams {\n symbol: SGisSymbolType;\n render?: (symbol: SGisSymbolType, size: number) => Promise<Render[]>;\n size?: number;\n maxWidth?: number;\n}\n\nconst DEFAULT_SYMBOL_SIZE = 26;\n\nexport function useSymbol(\n {\n symbol,\n size = DEFAULT_SYMBOL_SIZE,\n render = getSymbolRenders,\n maxWidth,\n }: UseSymbolParams,\n canvasRef: MutableRefObject<Canvas | null>\n) {\n useEffect(() => {\n if (canvasRef.current !== null && symbol !== undefined) {\n const canvas = canvasRef.current;\n setCanvasSize(canvas, size, maxWidth);\n\n render(symbol, size).then(renders => {\n renderSymbolToCanvas(renders, canvas);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [symbol, size, maxWidth]);\n}\n\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\n canvas.node.height = size;\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\n}\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { useCallback, useRef } from 'react';\n\nexport function useCanvas() {\n const canvas = useRef<Canvas | null>(null);\n const ref = useCallback((node: HTMLCanvasElement | null) => {\n if (node !== null) {\n canvas.current = new Canvas(node);\n } else {\n canvas.current = null;\n }\n }, []);\n\n return { canvas, ref };\n}\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { useMemo, useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nexport function useProperty<T, D extends unknown[] | []>(\n { factory, destructor, update }: UsePropertyOptions<T, D>,\n deps: D = [] as D\n): T {\n const propRef = useRef<T>();\n\n useMount({\n onUnmount() {\n if (propRef.current && destructor) {\n destructor(propRef.current);\n }\n },\n });\n\n return useMemo(() => {\n if (propRef.current) {\n if (update) {\n const newProp = update(propRef.current, deps, { factory, destructor });\n if (newProp) propRef.current = newProp;\n } else if (destructor) {\n destructor(propRef.current);\n }\n } else {\n if (!update || !propRef.current) {\n propRef.current = factory(deps);\n }\n }\n\n return propRef.current;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UsePropertyOptions<T, D> = {\n factory: (deps: D) => T;\n destructor?: (prop: T) => void;\n\n /**\n * Allows to update useProperty return value.\n * If that property is not exist then each update of deps call factory\n */\n update?: (\n prop: T,\n deps: D,\n propertyOptions: Omit<UsePropertyOptions<T, D>, 'update'>\n ) => void | T;\n};\n","import { useEffect } from 'react';\n\nexport function useUpdate<Deps extends Array<unknown>>({\n onUpdate,\n shouldUpdate,\n deps,\n}: UseUpdateOptions<Deps>) {\n useEffect(() => {\n if (!shouldUpdate || shouldUpdate()) {\n onUpdate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UseUpdateOptions<Deps> = {\n onUpdate: () => void;\n shouldUpdate?: () => boolean;\n deps?: Deps;\n};\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nimport { useMapContext } from '../contexts';\n\nexport function useLayerOrder(layer: Layer, zIndex: number) {\n const { map } = useMapContext();\n\n useUpdate({\n onUpdate: () => map.insertLayer(layer, zIndex),\n deps: [zIndex, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerVisibility(layer: Layer, isDisplayed: boolean = true) {\n useUpdate({\n shouldUpdate: () => layer.isDisplayed !== isDisplayed,\n onUpdate: () => (layer.isDisplayed = isDisplayed),\n deps: [isDisplayed, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerOpacity(layer: Layer, opacity: number = 1) {\n useUpdate({\n shouldUpdate: () => layer.opacity !== opacity,\n onUpdate: () => (layer.opacity = opacity),\n deps: [opacity, layer],\n });\n}\n","import { EvergisDynamicLayer, EvergisDynamicLayerParams } from '@evergis/api';\nimport { Layer } from \"@evergis/sgis/es/layers/Layer\";\nimport { webMercator } from '@evergis/sgis/es/Crs';\n\nimport { useProperty } from './useProperty';\nimport { useLayerOrder } from './useLayerOrder';\nimport { useLayerVisibility } from './useLayerVisibility';\nimport { useEvergisContext, useMapContext } from '../contexts';\nimport { useLayerOpacity } from './useLayerOpacity';\nimport { LayerProps } from './LayerProps';\n\nexport function useEvergisDynamicLayer({\n name,\n zIndex,\n style,\n crs,\n ts,\n condition,\n isDisplayed,\n opacity,\n dataFilterId,\n onLoadStart,\n onLoadEnd,\n}: EvergisDynamicLayerProps) {\n const api = useEvergisContext();\n const { map } = useMapContext();\n\n const layer = useProperty(\n {\n factory: () => new EvergisDynamicLayer({ name, condition, style, crs, dataFilterId, onLoadStart, onLoadEnd }, api),\n destructor: layer => map.indexOf(layer as unknown as Layer) !== -1 && map.removeLayer(layer as unknown as Layer),\n update: (layer, [name, style, condition, crs = webMercator, dataFilterId]) => {\n layer.name = name;\n layer.style = style;\n layer.condition = condition;\n layer.dataFilterId = dataFilterId;\n layer.crs = crs;\n },\n },\n [name, style, condition, crs, dataFilterId, ts]\n );\n\n useLayerOrder(layer as unknown as Layer, zIndex);\n useLayerVisibility(layer as unknown as Layer, isDisplayed);\n useLayerOpacity(layer as unknown as Layer, opacity);\n\n return layer;\n}\n\nexport type EvergisDynamicLayerProps = EvergisDynamicLayerParams & LayerProps & {\n ts?: any;\n};\n","import { EvergisTileLayer, EvergisTileLayerParams } from '@evergis/api';\nimport { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { LayerProps } from './LayerProps';\nimport { useLayerOrder } from './useLayerOrder';\nimport { useLayerVisibility } from './useLayerVisibility';\n\nimport { useEvergisContext, useMapContext } from '../contexts';\nimport { useEffect, useMemo } from 'react';\n\nexport type EvergisTileLayerProps = EvergisTileLayerParams & LayerProps & {\n sourceUrl?: string;\n};\n\nexport function useEvergisTileLayer({\n name,\n sourceUrl,\n subDomains,\n zIndex,\n isDisplayed,\n crs,\n opacity,\n}: EvergisTileLayerProps) {\n const api = useEvergisContext();\n const { map } = useMapContext();\n const layer = useMemo(\n () => new EvergisTileLayer({ name, sourceUrl, subDomains, crs, opacity }, api),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [name, sourceUrl, subDomains, crs, opacity]\n );\n\n useEffect(\n () => () => {\n map.indexOf((layer as unknown) as Layer) !== -1 &&\n map.removeLayer((layer as unknown) as Layer);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [layer]\n );\n\n useLayerOrder((layer as unknown) as Layer, zIndex);\n useLayerVisibility((layer as unknown) as Layer, isDisplayed);\n\n return layer;\n}\n","import { Feature } from '@evergis/sgis/es/features/Feature';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\n\nimport { useMapContext } from '../contexts';\nimport { useProperty } from './useProperty';\nimport { useLayerOrder } from './useLayerOrder';\nimport { useLayerVisibility } from './useLayerVisibility';\nimport { useLayerOpacity } from \"./useLayerOpacity\";\n\nimport { LayerProps } from './LayerProps';\n\nexport function useFeatureLayer({\n zIndex,\n isDisplayed = true,\n features,\n opacity,\n}: FeatureLayerProps) {\n const { map } = useMapContext();\n\n const layer = useProperty(\n {\n factory: () => new FeatureLayer({ features, opacity }),\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\n update: (layer, [features]) => {\n layer.features = features;\n },\n },\n [features]\n );\n\n useLayerOrder(layer, zIndex);\n useLayerVisibility(layer, isDisplayed);\n useLayerOpacity(layer, opacity);\n\n return layer;\n}\n\nexport type FeatureLayerProps = {\n features: Feature[];\n} & LayerProps;\n","import { useCallback, useEffect } from 'react';\nimport { BboxChangeEndEvent, BboxChangeEvent, Map } from '@evergis/sgis/es/Map';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapBboxChange(\n onBboxChange?: (mapState: MapState) => void,\n force?: boolean\n) {\n const { map } = useMapContext();\n\n const event = force ? BboxChangeEvent : BboxChangeEndEvent;\n\n const handleBboxChange = useCallback(() => {\n onBboxChange && onBboxChange(getMapState(map));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onBboxChange, map, event]);\n\n useEffect(() => {\n map.on(event.type, handleBboxChange);\n\n return () => {\n map.off(event.type, handleBboxChange);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleBboxChange, event]);\n}\n\nexport type MapState = {\n position: Coordinates;\n resolution: number;\n};\n\nexport function getMapState(map: Map): MapState {\n return {\n position: map.position.slice(0) as Coordinates,\n resolution: map.resolution,\n };\n}\n","import { MapResize } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { useCallback, useEffect } from 'react';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapResize(onResize?: (size: number[]) => void) {\n const { painter } = useMapContext();\n\n const handleMapResize = useCallback(() => {\n onResize && onResize([painter.width, painter.height]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onResize, painter]);\n\n useEffect(() => {\n painter.on(MapResize.type, handleMapResize);\n\n return () => {\n painter.off(MapResize.type, handleMapResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleMapResize]);\n}\n","import { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\nimport {\n EvergisDynamicLayer,\n EvergisLayer,\n isEvergisDynamicLayer,\n} from '@evergis/api';\nimport { useCallback, useMemo, useState } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMount } from './useMount';\n\nimport { useMapContext } from '../contexts';\n\ntype BboxCoordinates = [number, number, number, number];\n\nexport type Envelopes = {\n [layerName: string]: BboxCoordinates;\n};\n\nexport type MapPickResult = {\n pointPosition: Coordinates;\n clickPoint: Coordinates;\n envelopes: Envelopes;\n imageRectangle: [number, number, number, number];\n extentSr: number;\n};\n\nexport const useMapPick = (): MapPickResult | undefined => {\n const { map, painter } = useMapContext();\n const [geometryParams, setGeometryParams] = useState<MapPickResult>();\n\n const evergisLayers = useMemo(() => map.layers as unknown as EvergisLayer[], [\n map.layers,\n ]);\n\n const pick = useCallback(\n (event: sGisEvent) => {\n if (!(event instanceof sGisClickEvent)) {\n return;\n }\n\n const imageRectangle = [0, 0, painter.width, painter.height];\n const [x, y] = painter.getPxPosition(event.point.position);\n\n setGeometryParams({\n pointPosition: event.point.position,\n clickPoint: [Math.round(x), Math.round(y)],\n envelopes: collectLayerEnvelopes(evergisLayers),\n imageRectangle,\n extentSr: map.crs.wkid,\n } as MapPickResult);\n },\n\n [painter, evergisLayers, map.crs.wkid]\n );\n\n useMount({\n onMount: () => map.on('click', pick),\n onUnmount: () => map.off('click', pick),\n });\n\n return geometryParams;\n};\n\nfunction getLayerBboxCoors(layer: EvergisDynamicLayer): BboxCoordinates {\n return (\n // @ts-ignore TODO _currentRender prop on DynamicLayer private\n layer._currentRender &&\n // @ts-ignore\n layer._currentRender.bbox &&\n // @ts-ignore\n layer._currentRender.bbox.coordinates\n );\n}\n\nfunction collectLayerEnvelopes(layers: EvergisLayer[]) {\n let envelopes: Envelopes = {};\n\n for (const layer of layers) {\n if (!isEvergisDynamicLayer(layer)) {\n continue;\n }\n\n envelopes[layer.name] = getLayerBboxCoors(layer);\n }\n\n return envelopes;\n}\n","import { useCallback, useReducer } from 'react';\n\nimport { getMapState, MapState, useMapBboxChange } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapState(force?: boolean) {\n const { map } = useMapContext();\n\n const [, dispatch] = useReducer(mapStateReducer, undefined, () =>\n getMapState(map)\n );\n\n const handleBboxChange = useCallback(dispatch, [dispatch]);\n\n useMapBboxChange(handleBboxChange, force);\n\n return getMapState(map);\n}\n\nfunction mapStateReducer(_: MapState, mapState: MapState): MapState {\n return mapState;\n}\n","import { useMemo } from 'react';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\n\nimport { useMapState } from './useMapState';\nimport { MapState } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapView(): MapView {\n const { map, painter } = useMapContext();\n const { position, resolution } = useMapState();\n\n const level = useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const bbox = useMemo(() => painter.bbox, [position, resolution]);\n\n return {\n position,\n resolution,\n level,\n bbox,\n };\n}\n\nexport function useMapLevel() {\n const { map } = useMapContext();\n const { resolution } = useMapState(true);\n\n return useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n}\n\ntype MapView = MapState & {\n level?: number;\n bbox: Bbox;\n};\n","import { useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapWrapper() {\n const { painter } = useMapContext();\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n useMount({\n onMount: () => (painter.wrapper = wrapperRef.current),\n onUnmount: () => (painter.wrapper = null),\n });\n\n return wrapperRef;\n}\n","import { LevelDefinition } from '@evergis/sgis/es/TileScheme';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { useEffect } from 'react';\n\nimport { useMapContext } from '../contexts';\n\nconst byScale = (scale: number) => ({ zIndex }: LevelDefinition) =>\n zIndex === scale;\n\nexport const useMaxMinScale = (\n minScale?: number,\n maxScale?: number,\n currentPosition?: [number, number],\n currentResolution?: number\n) => {\n const { map } = useMapContext();\n\n useEffect(() => {\n const levels = map.tileScheme.levels;\n\n if (maxScale !== undefined) {\n const { resolution } = levels.find(byScale(maxScale)) || {\n resolution: -1,\n };\n map.minResolution = resolution;\n }\n if (minScale !== undefined) {\n const { resolution } = levels.find(byScale(minScale)) || {\n resolution: -1,\n };\n map.maxResolution = resolution;\n }\n\n if (minScale !== undefined || maxScale !== undefined) {\n updateMapResolution(map, currentPosition, currentResolution);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [map, minScale, maxScale]);\n};\n\nexport const updateMapResolution = (\n map: Map,\n currentPosition?: [number, number],\n currentResolution?: number\n) => {\n if (currentPosition && currentResolution) {\n const newResolution = Math.min(\n Math.max(currentResolution, map.minResolution || 0),\n map.maxResolution || Number.MAX_VALUE\n );\n\n map.animateTo(currentPosition, newResolution);\n }\n};\n","import { useMemo } from 'react';\nimport { distance } from '@evergis/sgis/es/geotools';\n\nimport { useMapContext } from '../contexts';\n\nfunction getScale(scale: number): number {\n const pow10 = Math.pow(10, (Math.floor(scale) + '').length - 1);\n const d = scale / pow10;\n\n return pow10 * (d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1);\n}\n\nfunction useCorrectedResolution(resolution: number): number {\n const { painter } = useMapContext();\n const {\n height,\n width,\n bbox: { xMin, xMax, yMin, yMax, crs },\n } = painter;\n\n return useMemo(() => {\n if (width === 0) {\n return resolution;\n }\n const segmentLength = width / 10;\n const a = painter.getPointFromPxPosition(0, height / 2);\n const b = painter.getPointFromPxPosition(segmentLength, height / 2);\n\n return distance(a, b) / segmentLength;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [height, width, xMin, xMax, yMin, yMax, crs.wkid, resolution, painter]);\n}\n\nexport function useScale({\n resolution,\n minLength = 50,\n}: {\n resolution: number;\n minLength?: number;\n}) {\n const correctedResolution = useCorrectedResolution(resolution);\n\n return useMemo(() => {\n const minScale = minLength * correctedResolution;\n const currentScale = getScale(minScale);\n const width = getScale(minScale) / correctedResolution;\n\n return {\n currentScale,\n width,\n };\n }, [correctedResolution, minLength]);\n}\n","import { softEquals } from '@evergis/sgis/es/utils/math';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { useEffect } from 'react';\n\nimport { MapState } from './useMapBboxChange';\nimport { useMapViewActions } from './useMapViewActions';\n\nimport { useMapContext } from '../contexts';\n\nexport function useUpdateMapView(\n { position, resolution }: Partial<MapState>,\n force?: boolean\n) {\n const { map } = useMapContext();\n const { animateTo } = useMapViewActions();\n\n useEffect(() => {\n if (shouldUpdateMapState(map, { position, resolution })) {\n animateTo({\n position,\n resolution,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position, resolution, force]);\n}\n\nfunction shouldUpdatePosition(map: Map, position?: Coordinates) {\n return (\n position &&\n (!softEquals(map.position[0], position[0]) ||\n !softEquals(map.position[1], position[1]))\n );\n}\n\nfunction shouldUpdateResolution(map: Map, resolution?: number) {\n return resolution && !softEquals(map.resolution, resolution);\n}\n\nexport function shouldUpdateMapState(\n map: Map,\n { position, resolution }: Partial<MapState>\n) {\n return (\n shouldUpdatePosition(map, position) ||\n shouldUpdateResolution(map, resolution)\n );\n}\n","import {\n MutableRefObject,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport {\n sGisClickEvent,\n sGisMouseEvent,\n sGisMouseMoveEvent,\n sGisMouseOverEvent,\n} from '@evergis/sgis/es/commonEvents';\nimport { Handler } from '@evergis/sgis/es/EventHandler';\nimport { IPoint } from '@evergis/sgis/es/Point';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Map } from '@evergis/sgis/es/Map';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useEventPoint } from './useEventPoint';\n\nimport { useMapContext, useTooltipContext } from '../contexts';\n\nimport { LabelSymbol, LabelSymbolComponent } from '../symbols';\n\nexport type TooltipParams = {\n position?: Coordinates;\n component?: ReactNode;\n feature?: Feature | Map;\n clickMode?: boolean;\n};\n\ntype TargetEvent = (event: sGisMouseEvent) => void;\n\nexport type FeatureEvents = {\n [key: string]: TargetEvent | null;\n};\n\n// TODO HOW to read that?\nexport const useTooltip = (zIndex = 1) => {\n const { layer, popupLayer } = useTooltipContext();\n const { map } = useMapContext();\n const getEventPoint = useEventPoint();\n\n const targetFeatures: MutableRefObject<Feature[] | Map[]> = useRef([]);\n const labelFeature: MutableRefObject<LabelFeature | null> = useRef(null);\n const events: MutableRefObject<FeatureEvents[]> = useRef([]);\n\n const onClickMap = useCallback(() => popupLayer.remove(popupLayer.features), [\n popupLayer,\n ]);\n\n const reset = useCallback(() => {\n targetFeatures.current.forEach((feature: Feature | Map, index: number) => {\n const currentFeatureEvents = events.current[index];\n\n if (currentFeatureEvents) {\n const {\n onMouseOver,\n onMouseMove,\n onMouseOut,\n onClick,\n } = currentFeatureEvents;\n\n if (feature.hasListener('mouseover', onMouseOver as Handler)) {\n feature.off('mouseover', onMouseOver as Handler);\n }\n\n if (feature.hasListener('mousemove', onMouseMove as Handler)) {\n feature.off('mousemove', onMouseMove as Handler);\n }\n\n if (feature.hasListener('mouseout', onMouseOut as Handler)) {\n feature.off('mouseout', onMouseOut as Handler);\n }\n\n if (feature.hasListener('click', onClick as Handler)) {\n feature.off('click', onClick as Handler);\n }\n }\n });\n\n map.off('click', onClickMap as Handler);\n targetFeatures.current = [];\n labelFeature.current = null;\n layer.remove(layer.features);\n events.current = [];\n\n if (map.indexOf(popupLayer) !== -1) {\n map.removeLayer(popupLayer);\n }\n }, [onClickMap, popupLayer, layer, map]);\n\n useEffect(() => {\n if (map.indexOf(layer) === -1) {\n map.insertLayer(layer, zIndex);\n }\n return reset;\n }, [reset, map, layer, zIndex]);\n\n const onSetLabelFeature = useCallback(\n ({\n point,\n position,\n component,\n clickMode,\n }: {\n point: IPoint;\n } & TooltipParams) => {\n const feature = new LabelFeature(position || point.position, {\n symbol: new LabelSymbol({\n component: component as LabelSymbolComponent,\n }),\n crs: map.crs,\n });\n\n if (clickMode) {\n if (map.indexOf(popupLayer) === -1) {\n map.insertLayer(popupLayer, zIndex);\n }\n\n popupLayer.remove(popupLayer.features);\n popupLayer.add(feature);\n } else {\n labelFeature.current = feature;\n layer.add(feature);\n }\n },\n [popupLayer, layer, map, zIndex]\n );\n\n const onRemoveLabelFeature = useCallback(\n event => {\n if (event.node) {\n event.node.doNotBubbleToMap = true;\n }\n event.stopPropagation();\n labelFeature.current &&\n layer.has(labelFeature.current) &&\n layer.remove(labelFeature.current);\n labelFeature.current = null;\n layer.remove(layer.features);\n },\n [layer]\n );\n\n return useCallback(\n (tooltipParams: TooltipParams) => {\n const { feature, position, component, clickMode } = tooltipParams;\n const target = feature || map;\n targetFeatures.current.push(target as Feature & Map);\n const isMap = target instanceof Map;\n\n const featureEvents: FeatureEvents = {};\n\n featureEvents.onMouseOver = (event: sGisMouseOverEvent) => {\n event.stopPropagation();\n onRemoveLabelFeature(event);\n\n onSetLabelFeature({ point: getEventPoint(event), position, component });\n };\n\n featureEvents.onMouseMove = (\n event: sGisMouseMoveEvent & {\n node?: HTMLImageElement & { doNotBubbleToMap?: boolean };\n }\n ) => {\n if (!isMap) {\n event.stopPropagation();\n }\n\n if (event.node) {\n event.node.doNotBubbleToMap = true;\n }\n\n const point = getEventPoint(event);\n\n if (labelFeature.current) {\n isMap &&\n !layer.has(labelFeature.current) &&\n layer.add(labelFeature.current);\n\n labelFeature.current.position = position || point.position;\n } else {\n onSetLabelFeature({ point: point, position, component });\n }\n };\n\n if (clickMode) {\n featureEvents.onClick = (event: sGisClickEvent) => {\n event.stopPropagation();\n\n onSetLabelFeature({\n point: getEventPoint(event),\n position,\n component,\n clickMode,\n });\n };\n }\n\n featureEvents.onMouseOut = onRemoveLabelFeature;\n\n events.current.push(featureEvents);\n\n const { onMouseOver, onMouseMove, onMouseOut, onClick } = featureEvents;\n\n if (clickMode && !isMap) {\n target.on('mouseover', onMouseOut as Handler);\n target.on('mousemove', onMouseOut as Handler);\n target.on('click', onClick as Handler);\n\n if (!map.hasListener('click', onClickMap as Handler)) {\n map.on('click', onClickMap as Handler);\n }\n } else {\n if (!isMap) {\n target.on('mouseover', onMouseOver as Handler);\n }\n target.on('mousemove', onMouseMove as Handler);\n target.on('mouseout', onMouseOut as Handler);\n }\n },\n [\n onRemoveLabelFeature,\n onClickMap,\n map,\n onSetLabelFeature,\n getEventPoint,\n layer,\n ]\n );\n};\n","import { useRef } from 'react';\nimport { ClusterLayer } from '@evergis/sgis/es/layers/ClusterLayer';\nimport { GridClusterProvider } from '@evergis/sgis/es/layers/clusterProviders/GridClusterProvider';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Symbol } from '@evergis/sgis/es/symbols/Symbol';\n\nimport { useLayerOrder } from './useLayerOrder';\nimport { useLayerVisibility } from './useLayerVisibility';\nimport { useProperty } from './useProperty';\nimport { LayerProps } from './LayerProps';\n\nimport { useMapContext } from '../contexts';\n\nexport type ClusterLayerProps = {\n features: Feature[];\n zIndex?: number;\n size?: number;\n distance?: number;\n onChangeGrid?: (fetures: Feature[], layer: ClusterLayer) => void;\n clusterSymbol?: Symbol<Feature>;\n} & LayerProps;\n\nexport function useClusterLayer({\n zIndex,\n isDisplayed = true,\n features,\n onChangeGrid,\n size,\n distance,\n clusterSymbol,\n}: ClusterLayerProps) {\n const { map } = useMapContext();\n const currentFeatures = useRef(features);\n\n const layer: ClusterLayer = useProperty(\n {\n factory: () => {\n const gridClusterProvider = new GridClusterProvider({\n size,\n distance,\n onChangeGrid: onChangeGrid\n ? features => onChangeGrid(features, layer)\n : void 0,\n });\n\n const clusterLayer = new ClusterLayer({\n gridClusterProvider,\n clusterSymbol,\n });\n currentFeatures.current = features;\n\n clusterLayer.add(features);\n\n return clusterLayer;\n },\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\n update: (clusterLayer, [features]) => {\n clusterLayer.remove(currentFeatures.current);\n clusterLayer.add(features);\n\n currentFeatures.current = features;\n },\n },\n [features]\n );\n\n useLayerOrder(layer, zIndex);\n useLayerVisibility(layer, isDisplayed);\n\n return layer;\n}\n","import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = '—';\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\n\n return !isStringAsInn(value) && value.match(phoneRegexp);\n}\n\nexport function isStringAsInn(value: string) {\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\n\n return innRegexp.test(value);\n}\n\nexport function isStringAsKpp(value: string) {\n const kppRegexp = /^(([0-9]{9}))$/;\n\n return kppRegexp.test(value);\n}\n\nexport function isStringAsOgrn(value: string) {\n const ogrnRegexp = /^([0-9]{13})?$/;\n\n return ogrnRegexp.test((+value).toString());\n}\n\nexport function isStringContainsDate(value: string) {\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\n return dateRegexp.test(value);\n}\n\nexport function isRequisiteNumbers(value: string) {\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\n}\n\nexport function isStringAsPhone(value: string) {\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\n\n return (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phoneRegexp.test(value)\n );\n}\n\nexport function isStringAsMail(value: string) {\n return isStringAsUrl(value) && value.includes('@');\n}\n\nexport function isStringAsUrl(value: string) {\n if (isValidUrl(value)) {\n return true;\n }\n\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\n const urlKind = value.match(urlRegexp);\n\n return urlKind !== null;\n}\n\nexport function isValidUrl(value: string) {\n try {\n new URL(value);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nexport const mailHref = (mail: string) => `mailto:${mail}`;\n\nexport const phoneHref = (mail: string) => `tel:${mail}`;\n\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\n\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\n","import {\n Crs,\n ellipticalMercator,\n geo,\n webMercator,\n wgs84,\n} from '@evergis/sgis/es/Crs';\n\n/** Spatial Reference WKID using for @evergis/sgis */\nexport enum SrId {\n /** 3857 */\n WebMercator = 3857,\n /** 4326 */\n Geo = 4326,\n /** 84 */\n Wgs84 = 84,\n /** 3395 */\n EllipticalMercator = 3395,\n}\n\nexport const CRS_MAP: Record<SrId, Crs> = {\n [SrId.WebMercator]: webMercator,\n [SrId.Geo]: geo,\n [SrId.Wgs84]: wgs84,\n [SrId.EllipticalMercator]: ellipticalMercator,\n};\n\nexport const DEFAULT_SRID = SrId.WebMercator;\n\nexport const DEFAULT_CRS = CRS_MAP[DEFAULT_SRID];\n\nexport const getCrs = (srId: number): Crs => CRS_MAP[srId as SrId];\n","import { AttributeType, LayerDefinitionDc } from '@evergis/api';\n\nimport {\n Attribute,\n ClassificationAttribute,\n FeatureAttribute,\n FeatureAttributeValue,\n LayerAttribute,\n} from './types';\n\nimport { LayerAttributes } from '../layer';\n\nexport const getFeatureAttributeType = (\n attributeValue?: FeatureAttributeValue\n): AttributeType => {\n if (attributeValue instanceof Date) {\n return AttributeType.DateTime;\n }\n\n if (typeof attributeValue === 'string') {\n return AttributeType.String;\n }\n\n if (typeof attributeValue === 'number') {\n return AttributeType.Int64;\n }\n\n return AttributeType.Unknown;\n};\n\nexport const getLayerAttributes = (\n layerDefinition?: LayerDefinitionDc\n): LayerAttribute[] => {\n const attributes = (layerDefinition && layerDefinition.attributes) || {};\n\n return Object.entries(attributes).map(([name, definition]) => ({\n name,\n ...definition,\n })) as LayerAttribute[];\n};\n\nexport const getFeatureAttributes = (\n attributes?: Record<string, FeatureAttributeValue>\n): FeatureAttribute[] => {\n return attributes\n ? Object.entries(attributes).map(([name, value]) => ({\n name,\n value,\n type: getFeatureAttributeType(value),\n }))\n : [];\n};\n\nexport const getClassificationAttribute = (\n attributeName: string,\n attributes: LayerAttributes\n): ClassificationAttribute => {\n const attribute = attributes[attributeName];\n const attrNamePart = {\n name: attributeName,\n type: attribute?.type || AttributeType.Unknown,\n };\n\n return attribute ? { ...attrNamePart, ...attribute } : attrNamePart;\n};\n\nexport const mergeAttributes = (\n attributes1: Attribute[],\n attributes2: Attribute[]\n) => {\n return attributes1.map(attribute => ({\n ...attribute,\n ...(attributes2.find(({ name }) => attribute.name === name) || {}),\n }));\n};\n","import { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { CRS_MAP, SrId } from '../crs';\n\nimport { FeatureAttribute } from '../attributes';\nimport { getFeatureAttributes } from '../attributes/utils';\n\nimport { StyleSymbolType } from '../style';\n\nimport {\n selectedPoint,\n selectedPolygon,\n selectedPolyline,\n} from '../../symbols';\n\nexport type FeatureDCExtened = FeatureDc & {\n layer?: string;\n};\n\nexport class EvergisFeature {\n public id?: string | null = null;\n public displayName?: string | null = null;\n public geometry?: GeometryDc | null = null;\n\n public layerName?: string | null = null;\n public layerAlias?: string | null = null;\n public attributes?: FeatureAttribute[] | null = null;\n public symbol?: StyleSymbolType | null = null;\n\n constructor(feature: FeatureDCExtened) {\n this.id = feature.id;\n this.displayName = feature.id;\n this.geometry = feature.geometry;\n\n this.layerName = feature.layer;\n this.layerAlias = feature.layer;\n this.attributes = getFeatureAttributes(feature.attributes);\n }\n\n public sGisFeature() {\n if (!this.geometry || !this.symbol) {\n return null;\n }\n\n // @ts-ignore\n const { type, coordinates, sr } = this.geometry;\n const crs = CRS_MAP[sr as SrId];\n\n if (!crs) {\n return null;\n }\n\n switch (type) {\n case GeometryType.Point:\n return new PointFeature(coordinates, {\n symbol: selectedPoint,\n crs,\n });\n case GeometryType.Multipoint:\n return new MultiPoint(coordinates, {\n symbol: selectedPoint,\n crs,\n });\n case GeometryType.Polyline:\n return new Polyline(coordinates, {\n symbol: selectedPolyline,\n crs,\n });\n case GeometryType.Polygon:\n return new Polygon(coordinates, {\n symbol: selectedPolygon,\n crs,\n });\n default:\n return null;\n }\n }\n\n public extent() {\n const feature = this.sGisFeature();\n\n return feature && feature.bbox;\n }\n}\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\n\nexport function evaluateCondition(\n condition: string,\n attributes: ConditionAttributes\n) {\n try {\n const evaluator = new ConditionEvaluator(attributes);\n const result = evaluator.evaluate(condition);\n\n if (result instanceof Error) {\n return null;\n }\n\n return result;\n } catch {\n return null;\n }\n}\n","import { evaluateCondition } from './evaluateCondition';\n\nimport { FeatureAttribute, FeatureAttributeValue } from '../attributes';\n\nimport {\n ClassificationCondition,\n isParameterByAttribute,\n} from '../classification';\n\nimport {\n ClassifiedParameterValue,\n EvergisStyle,\n ParameterByAttributeValue,\n ParameterByAttributeValues,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nfunction getAttributeValue(\n attributes: FeatureAttribute[],\n attributeName: string\n) {\n const attributeMeta = attributes.find(({ name }) => name === attributeName);\n\n return attributeMeta ? attributeMeta.value : null;\n}\n\nexport const getAttributeNameFromCondition = (\n condition: string\n): string | null => new ClassificationCondition(condition).attributeName;\n\nexport const getAttributeNameFromClassified = (\n values: ParameterByAttributeValue<ParameterValueWithSymbol>[]\n): string | null =>\n values.length > 0 ? getAttributeNameFromCondition(values[0].condition) : null;\n\nfunction findFeatureValue(\n parameterValues: ParameterByAttributeValues,\n [name, value]: [string, FeatureAttributeValue | undefined]\n) {\n return value !== null\n ? parameterValues.find(\n ({ condition }) =>\n value !== undefined && evaluateCondition(condition, { [name]: value })\n )\n : null;\n}\n\nfunction extractValuesAttribute(\n parameterValues: ParameterByAttributeValues,\n attributes: FeatureAttribute[]\n): [string, FeatureAttributeValue | undefined] {\n const name = getAttributeNameFromClassified(parameterValues) || '';\n const value = name && getAttributeValue(attributes, name);\n\n return [name, value];\n}\n\nfunction evaluateFeatureSymbol(attributes: FeatureAttribute[]) {\n // @ts-ignore\n function calc(\n result: StyleSymbolType,\n [parameterName, parameterValue]: [string, ClassifiedParameterValue]\n ) {\n let newParameterValue;\n\n if (isParameterByAttribute(parameterValue)) {\n const [attributeName, attributeValue] = extractValuesAttribute(\n parameterValue.values,\n attributes\n );\n const featureValue = findFeatureValue(parameterValue.values, [\n attributeName,\n attributeValue,\n ]);\n\n newParameterValue = featureValue\n ? featureValue.value\n : parameterValue.defaultValue;\n } else if (isObject(parameterValue)) {\n // @ts-ignore\n newParameterValue = Object.entries(parameterValue).reduce(\n calc,\n parameterValue\n );\n }\n\n return newParameterValue !== undefined\n ? {\n ...result,\n [parameterName]: newParameterValue,\n }\n : result;\n }\n\n return calc;\n}\n\nexport function findChildFeatureStyle(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n return (\n (childStyles || []).find(({ condition }) => {\n const attributeName =\n condition && getAttributeNameFromCondition(condition);\n const attributeValue =\n attributeName && getAttributeValue(attributes, attributeName);\n\n if (condition && attributeName && attributeValue !== undefined) {\n return evaluateCondition(condition, {\n [attributeName]: attributeValue,\n });\n }\n\n return false;\n }) || null\n );\n}\n\nexport function findChildFeatureSymbol(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n const featureStyle = findChildFeatureStyle(childStyles, attributes);\n\n return featureStyle ? featureStyle.symbol : null;\n}\n\nexport function getFeatureSymbol(\n style: EvergisStyle,\n attributes: FeatureAttribute[]\n): StyleSymbolType | null {\n if (!style || !style.symbol) {\n return null;\n }\n\n if (style.children !== null) {\n return findChildFeatureSymbol(style.children, attributes) || style.symbol;\n }\n\n return Object.entries(style.symbol).reduce(\n evaluateFeatureSymbol(attributes),\n style.symbol\n );\n}\n","import { FeatureLayerServiceInfoDc, ServiceInfoDc } from '@evergis/api';\n\nimport { LayerAttribute, formatAttributeValue } from '../attributes';\nimport { getLayerAttributes, mergeAttributes } from '../attributes/utils';\n\nimport { EvergisFeature, getFeatureSymbol } from '../feature';\n\nimport { EvergisStyle } from '../style';\n\nexport class EvergisLayer {\n public readonly name: string | null = null;\n private readonly titleAttribute: string | null = null;\n private readonly alias: string | null = null;\n private readonly attributes: LayerAttribute[] | null = null;\n private readonly style: EvergisStyle | null = null;\n\n constructor(service: ServiceInfoDc) {\n const evergisService = service as FeatureLayerServiceInfoDc;\n const { name, alias, style, layerDefinition } = evergisService;\n\n this.name = name;\n this.alias = alias || name;\n this.attributes = getLayerAttributes(layerDefinition);\n this.style = (style && new EvergisStyle(style)) || null;\n this.titleAttribute =\n (layerDefinition && layerDefinition.titleAttribute) || null;\n }\n\n public evaluateFeature(feature: EvergisFeature): EvergisFeature {\n feature.attributes = mergeAttributes(\n feature.attributes || [],\n this.attributes || []\n );\n\n feature.symbol =\n this.style && getFeatureSymbol(this.style, feature.attributes);\n\n feature.layerAlias = this.alias;\n\n const titleAttribute = (feature.attributes || []).find(\n ({ name }) => name === this.titleAttribute\n );\n\n const displayName =\n (titleAttribute && formatAttributeValue(titleAttribute)[0].value) ||\n feature.id;\n\n feature.displayName = displayName ? `${displayName}` : feature.id;\n\n return feature;\n }\n}\n\nconst findFeatureLayer = (feature: EvergisFeature) => (layer: EvergisLayer) =>\n layer.name === feature.layerName;\n\nexport const evaluateFeature = (layers: EvergisLayer[]) => (\n feature: EvergisFeature\n) => {\n const featureLayer = layers.find(findFeatureLayer(feature));\n\n return featureLayer ? featureLayer.evaluateFeature(feature) : feature;\n};\n","import {\n ClassificationClass,\n isRangeClass,\n isUniqueClass,\n printRangeClass,\n} from '../classification';\n\nexport function createValueTitle(\n value: ClassificationClass,\n index: number\n): string {\n if (value.title) return value.title;\n\n if (isRangeClass(value)) return printRangeClass(value, index);\n if (isUniqueClass(value)) return value.uniqueValue;\n\n return '';\n}\n","import { ClassificationParameterExtended } from \"../classification\";\n\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\n}\n","import { AttributeType, FeatureLayerServiceInfoDc } from '@evergis/api';\n\nimport { ClassificationAttribute } from '../attributes';\nimport { ClassificationClass, ClassificationParameterExtended } from '../classification';\nimport { LayerAttributes } from '../layer';\nimport {\n CompositeSymbolType,\n ParameterValueWithSymbol,\n StyleSymbolType,\n Unclassify,\n} from '../style';\n\nexport type LegendValueType = {\n title: string;\n parameterValue: ParameterValueWithSymbol;\n hiddenCondition?: string;\n};\n\nexport type LegendItem = {\n attribute?: ClassificationAttribute;\n title: string;\n parameter: ClassificationParameterExtended;\n values: LegendValueType[];\n};\n\nexport type LayerLegend = {\n symbol: Unclassify<Exclude<StyleSymbolType, CompositeSymbolType>>;\n items: LegendItem[];\n};\n\nexport type LegendConfig = {\n attributes?: LayerAttributes;\n skipDefaultValue?: boolean;\n reverse?: boolean;\n searchable?: boolean;\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\n renderTitle?: (value: ClassificationClass, index: number) => string;\n renderCustomLegend?: (layer: FeatureLayerServiceInfoDc) => React.ReactNode;\n searchLayer?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n parameters?: ClassificationParameterExtended[];\n};\n\nexport enum FilterConditionOperation {\n AND = \"&&\",\n OR = \"||\",\n}\n\nexport enum ComparisonOperator {\n /** `==` */\n Equals = \"Equals\",\n /** `!=` */\n NotEquals = \"NotEquals\",\n /** `>` */\n GreaterThan = \"GreaterThan\",\n /** `<` */\n LessThan = \"LessThan\",\n /** `>=` */\n GreaterOrEquals = \"GreaterOrEquals\",\n /** `<=` */\n LessOrEquals = \"LessOrEquals\",\n Filled = \"Filled\",\n Empty = \"Empty\",\n /** `==` */\n Contains = \"Contains\",\n /** `!=` */\n NotContains = \"NotContains\",\n StartsWith = \"StartsWith\",\n NotStartsWith = \"NotStartsWith\",\n EndsWith = \"EndsWith\",\n NotEndsWith = \"NotEndsWith\",\n Between = \"Between\",\n Outside = \"Outside\",\n}\n\nexport interface FilterCondition<Value> {\n id?: string;\n attribute: string | null;\n type?: AttributeType;\n comparisonOperator: ComparisonOperator | null;\n value: Value | string[] | null;\n}\n\nexport type FilterConditionType = FilterCondition<string | number>;\n","import { softEquals } from '@evergis/sgis/es/utils/math';\n\nimport { numberWithSpaces } from '../utils/format';\n\nexport function formatArea(num: number): string {\n let result = num;\n let measure = 'м²';\n\n if (num >= 10000000) {\n result = num / 1000000;\n measure = 'км²';\n } else if (num >= 10000) {\n result = num / 10000;\n measure = 'га';\n }\n\n return `${numberWithSpaces(result)} ${measure}`;\n}\n\nexport function formatLength(num: number): string {\n let result = num;\n let measure = 'м';\n\n if (num > 10000) {\n result = num / 1000;\n measure = 'км';\n }\n\n return `${numberWithSpaces(result)} ${measure}`;\n}\nexport function formatPolygonMeasure(area: number, perimiter: number): string {\n return `S : ${formatArea(area)} P : ${formatLength(perimiter)}`;\n}\n\nexport function isPolylineLikePolygon(\n rings: [number, number][][],\n resolution: number\n): boolean {\n if (rings[0].length <= 3) {\n return false;\n }\n\n const coords = rings[0];\n const firstPoint = coords[0];\n const lastPoint = coords[coords.length - 1];\n const distance = resolution * 2;\n\n return softEquals(firstPoint[0], lastPoint[0], distance) && softEquals(firstPoint[1], lastPoint[1], distance);\n}\n","export function getScale(scale: number): number {\n const scales = [1, 2, 5];\n\n for (let x = 0; x < 21; x++) {\n for (let y = 0; y < scales.length; y++) {\n const result = Math.pow(10, x) * scales[y];\n\n if (result > scale) {\n return result;\n }\n }\n }\n\n return 1;\n}\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { useMapPick } from './useMapPick';\n\nimport { useEvergisSelectContext } from '../contexts';\n\nimport { evaluateFeature, EvergisFeature } from '../core';\n\nimport { EvergisSelectProps } from '../components/EvergisSelect/types';\n\nconst INIT_FEATURES: EvergisFeature[] = [];\n\ntype SelectionResult = [EvergisFeature[], () => void];\n\nexport const useEvergisSelect = ({\n onPick,\n onFeatures,\n}: Pick<EvergisSelectProps, 'onPick' | 'onFeatures'>): SelectionResult => {\n const mapPickResult = useMapPick();\n const layers = useEvergisSelectContext();\n const [features, setFeatures] = useState<EvergisFeature[]>(INIT_FEATURES);\n\n const resetSelection = useCallback(() => setFeatures(INIT_FEATURES), [\n setFeatures,\n ]);\n\n useEffect(() => {\n if (!mapPickResult) {\n return;\n }\n\n onPick(mapPickResult).then(features => {\n setFeatures(features.map(evaluateFeature(layers)));\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mapPickResult]);\n\n return [\n typeof onFeatures === 'function' ? onFeatures(features) : features,\n resetSelection,\n ];\n};\n","import { useMemo } from 'react';\nimport { CRS_MAP, DEFAULT_CRS, DEFAULT_SRID, SrId } from '../core';\n\nexport const useCrs = (srId?: SrId) => {\n return useMemo(() => {\n return CRS_MAP[srId || DEFAULT_SRID] || DEFAULT_CRS;\n }, [srId]);\n};\n","import { useRef, useEffect, useCallback } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\nimport { PointEditor } from '@evergis/sgis/es/controls/PointEditor';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\nimport { useMount } from './useMount';\nimport { useMapContext } from '../contexts';\n\nimport { DraggableMarkerProps } from '../components';\n\nconst setCursor = (painter: DomPainter, cursor: string) =>\n painter.wrapper &&\n typeof painter.wrapper !== 'string' &&\n (painter.wrapper.style.cursor = cursor);\n\nfunction none() {\n return;\n}\n\nexport const useDraggableMarker = ({\n position,\n onChange,\n symbol,\n}: DraggableMarkerProps) => {\n const feature = useRef<Feature | null>(null);\n const { map, painter } = useMapContext();\n const layer = useRef(new FeatureLayer());\n const pointEditor = useRef(\n new PointEditor(map, {\n isActive: false,\n activeLayer: layer.current,\n })\n );\n\n const onMapClick = useCallback(\n (event: sGisEvent) => {\n event.stopPropagation();\n if (!(event instanceof sGisClickEvent)) {\n return;\n }\n\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n onChange(event.point.position);\n },\n [painter, map, onChange]\n );\n\n useMount({\n onMount: () => {\n map.addLayer(layer.current);\n pointEditor.current.on('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n\n if (!position) {\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n },\n onUnmount: () => {\n map.removeLayer(layer.current);\n map.off('click', onMapClick);\n pointEditor.current.off('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n setCursor(painter, 'default');\n },\n });\n\n useEffect(() => {\n if (position) {\n if (!feature.current) {\n const hasMapClick = map.hasListener('click', onMapClick);\n\n const pointFeature = new PointFeature(position, {\n crs: map.crs,\n symbol: symbol || new StaticImageSymbol(),\n });\n\n pointFeature.on('mousemove', none);\n pointFeature.on('mouseover', () => setCursor(painter, 'pointer'));\n pointFeature.on('mouseout', () => setCursor(painter, 'default'));\n\n layer.current.add(pointFeature);\n pointEditor.current.activeFeature = pointFeature;\n pointEditor.current.isActive = true;\n feature.current = pointFeature;\n if (hasMapClick) {\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n }\n } else if (feature.current && pointEditor.current.activeFeature) {\n pointEditor.current.activeFeature.position = position;\n layer.current.redraw();\n }\n } else if (feature.current) {\n layer.current.remove(feature.current as Feature);\n feature.current = null;\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n }, [onMapClick, painter, map, position, symbol]);\n};\n","import { useMemo, useCallback } from 'react';\nimport { Crs } from '@evergis/sgis/es/Crs';\n\nimport { useMapContext } from '../contexts';\nimport { useMapState } from '../hooks';\nimport { metersToPixels } from '../utils/metersToPixels';\n\nexport const useMetersToPixels = (meters: number, crs?: Crs): number => {\n const { painter, map } = useMapContext();\n const { resolution } = useMapState();\n\n return useMemo(\n () =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [painter, meters, crs, map.crs, resolution]\n );\n};\n\nexport const useMetersToPixelsCb = () => {\n const { painter, map } = useMapContext();\n\n return useCallback(\n (meters: number, crs?: Crs) =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n [painter, map.crs]\n );\n};\n","import { useMemo } from 'react';\nimport { debounce } from '@evergis/sgis/es/utils/utils';\n\nexport const useDebouncedCallback = <CallbackFn extends () => void>(\n interval: number\n): ((cb: CallbackFn) => void) => {\n return useMemo(\n () =>\n debounce((cb: CallbackFn) => {\n cb();\n }, interval),\n [interval]\n );\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\n const [state, setState] = useState(initial !== undefined ? initial : false);\n const toggle = useCallback(() => setState(!state), [state]);\n\n return [state, toggle, setState];\n};\n","import { PropsWithRef, useCallback, useState } from 'react';\n\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\n const [node, onSetNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback(onSetNode, [onSetNode]);\n\n return [ref, node];\n}\n","import React from 'react';\n\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\n\ninterface Props extends UseSymbolParams {}\n\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\n const { canvas, ref } = useCanvas();\n useSymbol({ symbol, size, render }, canvas);\n\n return <canvas ref={ref} />;\n};\n","import { GeometryType } from '@evergis/api';\nimport styled from 'styled-components';\n\nexport type CompoundIconProps = {\n geometryType: GeometryType;\n icons: Record<GeometryType, string>;\n};\n\nexport const CompoundIcon = styled.div<CompoundIconProps>`\n background: ${({ geometryType, icons }) =>\n `url(${icons[geometryType]}) center center / ${\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\n } no-repeat`};\n height: 32px;\n width: 32px;\n`;\n\nexport const ClusterSymbol = styled.div<{ color?: string }>`\n position: relative;\n width: 32px;\n height: 32px;\n\n :before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: inherit;\n height: inherit;\n background-color: ${({ color }) => color};\n border-radius: 50%;\n opacity: 0.28;\n }\n \n :after {\n content: \"99\";\n position: absolute;\n top: 4px;\n left: 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n background-color: ${({ color }) => color};\n border-radius: 50%;\n color: white;\n font-size: 0.75rem;\n line-height: 1;\n }\n`;\n","import React, { PropsWithChildren } from 'react';\nimport { SvgPointSymbolDc } from \"@evergis/api\";\n\nimport { Symbol } from './Symbol';\nimport { ClusterSymbol } from \"./styled\";\nimport { getParameterValue, StyleSymbolType } from '../../core';\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\n\ntype StyleSymbolProps = PropsWithChildren<{\n symbol: StyleSymbolType;\n size?: number;\n}>;\n\nconst MAX_SIZE = 32;\n\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\n symbol,\n size = MAX_SIZE,\n children,\n}) => {\n if (children) {\n return <>{children}</>;\n }\n\n let sGisSymbol = null;\n\n try {\n sGisSymbol = deserializeSymbol(symbol);\n } catch (e) {\n // TODO generate Error symbol\n }\n\n if (!sGisSymbol) {\n return null;\n }\n\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\n\n return <ClusterSymbol color={color} />\n }\n\n return (\n <Symbol\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\n size={size}\n />\n );\n};\n","import { Icon } from '@evergis/icons';\nimport styled from 'styled-components';\n\nexport const EvergisCardContainer = styled.div`\n position: absolute;\n top: 2.25rem;\n right: 0.5rem;\n width: 22.5rem;\n margin-bottom: 1rem;\n max-height: 90%;\n min-height: 1rem;\n background: #fff;\n border-radius: 4px;\n z-index: 1;\n\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n overflow: initial;\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\n\n ${Icon} {\n color: rgba(0, 0, 0, 0.65);\n cursor: pointer;\n user-select: none;\n\n &:hover {\n color: #1fb3aa;\n }\n }\n`;\n\nexport const StickyHeader = styled.div`\n display: flex;\n position: sticky;\n top: 0;\n flex-direction: column;\n background: #fff;\n`;\n\nexport const CardHeader = styled.div`\n display: flex;\n padding: 1.5rem 1.5rem 1rem;\n align-items: center;\n`;\n\nexport const CardTitle = styled.div`\n display: flex;\n flex-direction: column;\n margin: 0 0.5rem;\n flex-grow: 1;\n`;\n\nexport const CardControls = styled.div`\n display: flex;\n\n ${Icon} {\n margin: 0 0.5rem;\n }\n`;\n\nexport const FeatureName = styled.div`\n font-size: 1.25rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const LayerName = styled.div`\n color: #30454f;\n font-size: 0.75rem;\n`;\n\nexport const CardPagination = styled.div`\n display: flex;\n height: 2.5rem;\n padding: 0 1.5rem;\n align-items: center;\n font-size: 0.75rem;\n justify-content: space-between;\n background: linear-gradient(\n 0deg,\n rgba(161, 186, 208, 0.12),\n rgba(161, 186, 208, 0.12)\n );\n`;\n\nexport const PaginationDescription = styled.div`\n display: flex;\n`;\n\nexport const CurrentFeatureIndex = styled.div`\n cursor: pointer;\n padding: 0 0.25rem;\n color: #1fb3aa;\n`;\n\nexport const CardAttributes = styled.div`\n padding: 1rem 1.5rem;\n overflow-y: scroll;\n`;\n\nexport const AttributeContainer = styled.div`\n padding-bottom: 0.5rem;\n`;\n\nexport const AttributeTitle = styled.div`\n margin: 0.25rem 0;\n color: #30454f;\n font-size: 0.75rem;\n`;\n\nexport const AttributeValueContainer = styled.div`\n flex-wrap: wrap;\n display: flex;\n`;\n\nexport const SimpleAttribute = styled.div``;\n\nexport const ValueLink = styled.a`\n padding: 0 0.25rem;\n color: #1fb3aa;\n text-decoration: none;\n`;\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { mailHref } from '../../utils/url';\n\ntype MailValueProps = {\n mail: string;\n};\n\nexport const MailValue = ({ mail }: MailValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={mailHref(mail)}>\n {mail}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { phoneHref } from '../../utils/url';\n\ntype PhoneValueProps = {\n phone: string;\n};\n\nexport const PhoneValue = ({ phone }: PhoneValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={phoneHref(phone)}>\n {phone}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { urlHref } from '../../utils/url';\n\ntype UrlValueProps = {\n url: string;\n};\n\nexport const UrlValue = ({ url }: UrlValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={urlHref(url)}>\n {url}\n </ValueLink>\n);\n","import React from 'react';\nimport { AttributeValueContainer, SimpleAttribute } from './styled';\nimport { MailValue } from './MailValue';\nimport { PhoneValue } from './PhoneValue';\nimport { UrlValue } from './UrlValue';\nimport { EvergisCardAttributeProps } from './EvergisCardAttribute';\n\nimport punycode from 'punycode';\n\nimport {\n AttributeValueType,\n formatAttributeValue,\n} from '../../core/attributes';\n\nexport const AttributeValue: React.FC<EvergisCardAttributeProps> = ({\n attribute,\n}) => {\n const attributeValues = formatAttributeValue(attribute);\n\n return (\n <AttributeValueContainer>\n {attributeValues.map((attributeValue, index) => {\n const { value } = attributeValue;\n const key = `${value}-${index}`;\n\n if (attributeValue.type === AttributeValueType.Url) {\n return <UrlValue key={key} url={punycodeDecode(value)} />;\n }\n\n if (attributeValue.type === AttributeValueType.Mail) {\n return <MailValue key={key} mail={value} />;\n }\n\n if (attributeValue.type === AttributeValueType.Phone) {\n return <PhoneValue key={key} phone={value} />;\n }\n\n return <SimpleAttribute key={value}>{value}</SimpleAttribute>;\n })}\n </AttributeValueContainer>\n );\n};\n\nfunction punycodeDecode(domains: string) {\n try {\n return domains\n .split('/')\n .map(punycode.toUnicode)\n .join('/');\n } catch (error) {\n return domains;\n }\n}\n","import React from 'react';\n\nimport { AttributeContainer, AttributeTitle } from './styled';\n\nimport { FeatureAttribute } from '../../core';\nimport { AttributeValue } from './AttributeValue';\n\nexport type EvergisCardAttributeProps = {\n attribute: FeatureAttribute;\n className?: string;\n};\n\nexport const EvergisCardAttribute: React.FC<EvergisCardAttributeProps> = ({\n attribute,\n className,\n}) => (\n <AttributeContainer className={className}>\n <AttributeTitle>{attribute.alias || attribute.name}</AttributeTitle>\n <AttributeValue attribute={attribute} />\n </AttributeContainer>\n);\n","import React, { FC, useEffect } from 'react';\nimport {\n IconButton,\n EverCloudCloseIcon,\n EverCloudStatisticsIcon,\n EverCloudZoomtoIcon,\n EverCloudPlayPrevIcon,\n EverCloudPlayNextIcon,\n} from \"@evergis/icons\";\n\nimport { StyleSymbol } from '../Symbol';\nimport { EvergisCardAttribute } from './EvergisCardAttribute';\n\nimport {\n CardAttributes,\n CardControls,\n CardHeader,\n CardPagination,\n CardTitle,\n CurrentFeatureIndex,\n EvergisCardContainer,\n FeatureName,\n LayerName,\n PaginationDescription,\n StickyHeader,\n} from './styled';\n\nimport { EvergisCardProps } from './EvergisCard';\nimport { UseEvergisCard } from '../../hooks/useEvergisCard';\nimport { FeatureAttribute } from '../../';\n\nexport const StyledCard: FC<EvergisCardProps & UseEvergisCard> = ({\n features = [],\n className,\n reset,\n feature,\n zoom,\n prev,\n current,\n next,\n onAttributes,\n onStatistics,\n onFeatureChange,\n headerExtra,\n hideZoom,\n}) => {\n useEffect(() => {\n onFeatureChange && onFeatureChange(current);\n }, [current, onFeatureChange]);\n\n return (\n <EvergisCardContainer className={className}>\n <StickyHeader>\n <CardHeader>\n <StyleSymbol symbol={feature.symbol || {}} />\n <CardTitle>\n <FeatureName title={feature.displayName || ''}>\n {feature.displayName}\n </FeatureName>\n <LayerName>{feature.layerAlias}</LayerName>\n </CardTitle>\n <CardControls>\n {onStatistics && <IconButton onClick={() => onStatistics(feature)}><EverCloudStatisticsIcon /></IconButton>}\n {!hideZoom && <IconButton onClick={zoom}><EverCloudZoomtoIcon /></IconButton>}\n <IconButton onClick={reset}><EverCloudCloseIcon /></IconButton>\n </CardControls>\n </CardHeader>\n {features.length > 1 ? (\n <CardPagination>\n <IconButton onClick={prev}><EverCloudPlayPrevIcon /></IconButton>\n <PaginationDescription>\n <CurrentFeatureIndex onClick={zoom}>\n {current + 1}\n </CurrentFeatureIndex>\n объект из {features.length}\n </PaginationDescription>\n <IconButton onClick={next}><EverCloudPlayNextIcon /></IconButton>\n </CardPagination>\n ) : null}\n {headerExtra}\n </StickyHeader>\n <CardAttributes>\n {feature.attributes &&\n (typeof onAttributes === 'function'\n ? onAttributes(feature.attributes)\n : feature.attributes\n ).map((attribute: FeatureAttribute) => {\n return (\n attribute.render || (\n <EvergisCardAttribute\n key={attribute.name}\n attribute={attribute}\n />\n )\n );\n })}\n </CardAttributes>\n </EvergisCardContainer>\n );\n};\n","import React, { ReactElement, ReactNode } from 'react';\n\nimport { useEvergisCard, UseEvergisCard } from '../../hooks/useEvergisCard';\n\nimport { StyledCard } from './StyledCard';\nimport { EvergisFeature, FeatureAttribute } from '../../core';\n\nexport type EvergisCardProps = {\n features?: EvergisFeature[];\n reset?: VoidFunction;\n children?: (current: number) => React.ReactNode;\n className?: string;\n renderCard?: (\n cardProps: Omit<EvergisCardProps, 'className' | 'renderCard' | 'children'> &\n UseEvergisCard\n ) => ReactElement;\n onAttributes?: (attributes: FeatureAttribute[]) => FeatureAttribute[];\n onStatistics?: (feature: EvergisFeature) => void;\n onFeatureChange?: (current: number) => void;\n headerExtra?: ReactNode;\n hideZoom?: boolean;\n};\n\nexport const EvergisCard: React.FC<EvergisCardProps> = ({\n renderCard,\n className,\n children,\n ...props\n}) => {\n const { features = [] } = props;\n const hookProps = useEvergisCard(features);\n const { feature, current } = hookProps;\n const cardProps = { ...props, ...hookProps };\n\n return feature ? (\n <>\n {typeof renderCard === 'function' ? (\n renderCard(cardProps)\n ) : (\n <StyledCard className={className} {...cardProps} />\n )}\n {children && children(current)}\n </>\n ) : null;\n};\n","import * as React from 'react';\n\nimport { ClusterLayerProps, useClusterLayer } from '../../hooks';\n\nexport const ClusterLayer: React.FC<ClusterLayerProps> = props => {\n useClusterLayer(props);\n\n return null;\n};\n","import * as React from 'react';\n\nimport { EvergisDynamicLayerProps, useEvergisDynamicLayer } from '../../hooks';\n\nexport const EvergisDynamicLayer: React.FC<EvergisDynamicLayerProps> = props => {\n useEvergisDynamicLayer(props);\n\n return null;\n};\n","import * as React from 'react';\n\nimport { FeatureLayerProps, useFeatureLayer } from '../../hooks';\n\nexport const FeatureLayer: React.FC<FeatureLayerProps> = props => {\n useFeatureLayer(props);\n\n return null;\n};\n","import { useMemo } from 'react';\nimport { Feature } from '@evergis/sgis';\n\nimport { EvergisFeature } from '../../core';\n\nconst truthly = <Value>(value: Value | null | undefined): value is Value =>\n Boolean(value);\n\nconst setSelected = (current: number) => (feature: Feature, index: number) => {\n // @ts-ignore\n feature['isSelected'] = index === current;\n\n return feature;\n};\n\nconst toSgis = (feature: EvergisFeature) => feature.sGisFeature();\n\n// TODO inner hooks???\nexport const useSGisFeatures = (\n features: EvergisFeature[],\n currentIndex: number\n) =>\n useMemo(\n () =>\n features\n .map(toSgis)\n .filter(truthly)\n .map(setSelected(currentIndex)),\n [features, currentIndex]\n );\n","import React from 'react';\n\nimport { FeatureLayer } from './FeatureLayer';\nimport { useSGisFeatures } from './useSGisFeatures';\n\nimport { EvergisFeature } from '../../core';\n\ntype EvergisSelectLayerProps = {\n features: EvergisFeature[];\n current: number;\n zIndex: number;\n};\n\nexport const EvergisSelectLayer: React.FC<EvergisSelectLayerProps> = ({\n features,\n zIndex,\n current,\n}) => {\n const sGisFeatures = useSGisFeatures(features, current);\n\n return <FeatureLayer features={sGisFeatures} zIndex={zIndex} />;\n};\n","import React from 'react';\n\nimport { EvergisTileLayerProps, useEvergisTileLayer } from '../../hooks';\n\nexport const EvergisTileLayer: React.FC<EvergisTileLayerProps> = props => {\n useEvergisTileLayer(props);\n\n return null;\n};\n","import {\n GetTileUrl,\n TileLayer,\n TileLayerConstructorParams,\n} from '@evergis/sgis/es/layers/TileLayer';\n\nimport { useProperty } from './useProperty';\nimport { useLayerOrder } from './useLayerOrder';\nimport { LayerProps } from './LayerProps';\nimport { useLayerVisibility } from './useLayerVisibility';\n\nimport { useMapContext } from '../contexts';\n\nexport function useTileLayer({\n maskUrl,\n zIndex,\n isDisplayed,\n ...tileLayerParams\n}: TileLayerProps) {\n const { map } = useMapContext();\n\n const layer = useProperty(\n {\n factory: () => new TileLayer(maskUrl, tileLayerParams),\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\n },\n [maskUrl]\n );\n\n useLayerOrder(layer, zIndex);\n useLayerVisibility(layer, isDisplayed);\n\n return layer;\n}\n\nexport type TileLayerProps = {\n maskUrl: string | GetTileUrl;\n} & LayerProps &\n TileLayerConstructorParams;\n","import * as React from 'react';\n\nimport { useTileLayer, TileLayerProps } from '../../hooks/useTileLayer';\n\nexport const TileLayer: React.FC<TileLayerProps> = props => {\n useTileLayer(props);\n\n return null;\n};\n","import React from 'react';\n\nimport { EvergisCard } from '../EvergisCard';\nimport { EvergisSelectLayer } from '../Layers';\n\nimport { useEvergisSelect } from '../../hooks';\n\nimport { EvergisSelectProps } from './types';\n\nconst defaultZIndex = 200;\n\nexport const EvergisSelect: React.FC<EvergisSelectProps> = ({\n onPick,\n className,\n renderCard,\n zIndex,\n onFeatures,\n onAttributes,\n onStatistics,\n}) => {\n const [features, resetSelection] = useEvergisSelect({ onPick, onFeatures });\n\n return (\n <EvergisCard\n className={className}\n features={features}\n reset={resetSelection}\n renderCard={renderCard}\n onAttributes={onAttributes}\n onStatistics={onStatistics}\n >\n {current => (\n <EvergisSelectLayer\n features={features}\n current={current}\n zIndex={zIndex || defaultZIndex}\n />\n )}\n </EvergisCard>\n );\n};\n","import { css } from 'styled-components';\n\nexport const CONTROL_PLACEMENTS: Placement[] = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst topLeft = (distance: string) => css`\n top: ${distance};\n left: ${distance};\n`;\n\nconst topRight = (distance: string) => css`\n top: ${distance};\n right: ${distance};\n`;\n\nconst bottomLeft = (distance: string) => css`\n bottom: ${distance};\n left: ${distance};\n`;\n\nconst bottomRight = (distance: string) => css`\n bottom: ${distance};\n right: ${distance};\n`;\n\nexport type Placement =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n\nexport const placementMixin = (\n placement: Placement = 'bottom-left',\n distance: string = '1rem'\n) => css`\n ${placement === 'top-left' && topLeft(distance)}\n ${placement === 'top-right' && topRight(distance)}\n ${placement === 'bottom-left' && bottomLeft(distance)}\n ${placement === 'bottom-right' && bottomRight(distance)}\n`;\n","import styled, { css } from 'styled-components';\nimport { Icon } from \"@evergis/icons\";\n\nimport { Placement, placementMixin } from '../../ui/mixins/placementMixin';\n\nexport type MapControlsProps = {\n placement?: Placement;\n vertical?: boolean;\n};\n\nconst mapControlBtnMixin = css`\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n`;\n\ntype MapControlBtnProps = {\n onClick?: () => void;\n};\n\nexport const ZoomInBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\n// ZoomInBtn.defaultProps = { kind: \"plus\" };\n\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\n// ZoomOutBtn.defaultProps = { kind: \"minus\" };\n\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\n// SearchBtn.defaultProps = { kind: \"search\" };\n\n// TODO not exists in fonts\nexport const FullscreenBtn = styled(Icon)<MapControlBtnProps>`\n ${mapControlBtnMixin}\n`;\n// FullscreenBtn.defaultProps = { kind: \"maximize\" };\n\nexport const MeasureBtn = styled(Icon)<\n MapControlBtnProps\n>`\n ${mapControlBtnMixin}\n`;\n// MeasureBtn.defaultProps = { kind: \"measure_length\" };\n\nexport const MapControl = styled.div`\n border-radius: 0.15rem;\n background: rgba(28, 33, 48, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n font-size: 1.5rem;\n cursor: pointer;\n height: auto;\n width: auto;\n padding: 0.25rem;\n`;\n\nexport const MapControls = styled.div<MapControlsProps>`\n position: absolute;\n display: flex;\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\n\n ${({ placement }) => placementMixin(placement)}\n\n ${MapControl} {\n margin-bottom: ${({ vertical }) => (vertical ? '0.5rem' : '0')};\n margin-right: ${({ vertical }) => (vertical ? '0' : '0.5rem')};\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\n }\n`;\n","import React from 'react';\nimport { MapControl, MeasureBtn } from './styled';\n\n// TODO\nexport const Measure = () => {\n return (\n <MapControl>\n <MeasureBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { MapControl, SearchBtn } from './styled';\n\n// TODO\nexport const Search = () => {\n return (\n <MapControl>\n <SearchBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { FullscreenBtn, MapControl } from './styled';\n\n// TODO\nexport const Fullscreen = () => {\n return (\n <MapControl>\n <FullscreenBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import { ClassificationParameterExtended } from '../core';\n\ntype IsParameterType = 'size' | 'strokeWidth' | 'stroke.width' | 'strokeColor' | 'stroke.color';\n\nexport const isParameterType = (\n types: IsParameterType | Array<IsParameterType>,\n parameter?: ClassificationParameterExtended,\n): boolean => (typeof types === 'string'\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\n","import { MouseEventHandler } from 'react';\nimport styled, { css } from 'styled-components';\nimport { IconButton } from \"@evergis/icons\";\n\nimport { MapControl } from '../MapControls';\nimport { isParameterType } from '../../utils/isParameterType';\nimport { ClassificationParameterExtended } from '../../core';\nimport { MapLegendItemProps } from './types';\n\nexport const MapLegendDescription = styled.div`\n font-size: 0.75rem;\n`;\n\nexport const ItemText = styled.div`\n max-width: calc(100% - 2rem);\n font: ${({ theme: { fonts } }) => fonts.description};\n`;\n\nexport const ItemSeparator = styled.div`\n :after {\n content: '-';\n margin: 0 0.5rem;\n font-size: 0.75rem;\n }\n`;\n\nexport const SymbolContainer = styled('span')`\n display: flex;\n justify-content: center;\n min-width: 1.5rem;\n margin-right: 0.5rem;\n`;\n\nexport const ClassifiedItem = styled.div<{\n isHidden?: boolean;\n isClusterFillColor?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n cursor: ${({ isClusterFillColor }) =>\n isClusterFillColor ? 'default' : 'pointer'};\n pointer-events: ${({ isClusterFillColor }) =>\n isClusterFillColor ? 'none' : 'auto'};\n\n :not(:last-of-type) {\n margin-bottom: 0.25rem;\n }\n\n ${ItemText}, ${SymbolContainer} {\n transition: opacity 150ms;\n }\n\n ${ItemText} {\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 0.65)};\n }\n\n ${SymbolContainer} {\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\n }\n\n :hover {\n ${ItemText}, ${SymbolContainer} {\n opacity: 1;\n }\n }\n\n ${IconButton} {\n margin-left: 0.5rem;\n }\n`;\n\nconst SymbolButtonWithClick = css`\n width: 3.875rem;\n height: 3.875rem;\n cursor: pointer;\n\n &:hover {\n background-color: ${({ theme: { palette } }) => palette.elementDeep};\n }\n`;\n\nexport const SymbolButton = styled.span<{\n onClick?: MouseEventHandler<HTMLSpanElement> | null;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 150ms;\n ${({ onClick }) => !!onClick && SymbolButtonWithClick};\n\n svg {\n max-width: 4rem;\n max-height: 4rem;\n }\n`;\n\nexport const MapLegendControl = styled(MapControl)`\n cursor: default;\n`;\n\nexport const MapLegendContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n padding-bottom: 1rem;\n box-sizing: border-box;\n\n canvas {\n height: 1.625rem;\n width: 1.625rem;\n }\n`;\n\nexport const MapLegendHeader = styled.div`\n max-width: 15rem;\n margin-bottom: 0.25rem;\n font-size: 0.75rem;\n font-weight: bold;\n`;\n\nexport const MapLegendDescriptionContainer = styled.div`\n margin-bottom: 0.5rem;\n font-weight: 400;\n font-size: 0.625rem;\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const MapLegendBadge = styled.span`\n min-width: 0.5rem;\n height: 0.75rem;\n display: inline-block;\n margin-left: 0.25rem;\n padding: 0.125rem 0.25rem;\n border-radius: ${({ theme: { borderRadius } }) => borderRadius.xSmall};\n background-color: ${({ theme: { palette } }) => palette.element};\n color: ${({ theme: { palette } }) => palette.textPrimary};\n text-align: center;\n`;\n\nexport const MaximizedLegendContainer = styled.div<{ isShown?: boolean }>`\n position: ${({ isShown }) => (isShown ? 'relative' : 'absolute')};\n top: 0;\n opacity: ${({ isShown }) => (isShown ? 1 : 0)};\n visibility: ${({ isShown }) => (isShown ? 'visible' : 'hidden')};\n overflow: hidden;\n transition: opacity 0.5s, visibility 0.5s;\n`;\n\nexport const MinimizedLegendContainer = styled(MaximizedLegendContainer)`\n width: calc(100% - 1.5rem);\n padding-right: 1.5rem;\n`;\n\nexport const LegendHeaderButton = styled.span``;\n\nexport const MapLegendSectionContainer = styled.div<{ hasHiddenLegends?: boolean }>`\n width: 100%;\n\n :not(:last-child) {\n margin-bottom: 1rem;\n }\n\n ${LegendHeaderButton} {\n padding-left: 0.75rem;\n visibility: hidden;\n\n :first-child {\n padding-left: 1rem;\n }\n\n :last-child {\n margin-left: 0.75rem;\n border-left: 1px ${({ theme: { palette }}) => palette.elementDeep} solid;\n }\n }\n \n :hover {\n ${LegendHeaderButton} {\n visibility: visible;\n }\n }\n`;\n\nexport const MapLegendSectionItems = styled.div<{\n minHeight?: number;\n maxHeight?: number;\n isExpanded?: boolean;\n}>`\n position: relative;\n height: ${({ minHeight, maxHeight, isExpanded }) =>\n isExpanded ? (maxHeight || 0) + 4 : minHeight}px;\n overflow: ${({ isExpanded }) => (isExpanded ? 'none' : 'hidden')};\n transition: height 0.5s;\n`;\n\nexport const MapLegendValueDescr = styled.div`\n min-height: 1rem;\n margin-bottom: 0.25rem;\n font-size: 0.75rem;\n font-weight: 600;\n line-height: 1rem;\n`;\n\nconst SizeLegendItemMixin = (value = 0) => css`\n position: absolute;\n bottom: 0;\n left: 50%;\n display: flex;\n align-items: flex-end;\n flex: none;\n height: inherit;\n width: inherit;\n margin: 0 auto;\n background: none;\n border: none;\n\n :after {\n content: '';\n display: flex;\n border: 1px rgba(48, 69, 79, 0.28) solid;\n border-radius: 50%;\n margin: 0 0 0 -${value / 2}px;\n width: ${value}px;\n height: ${value}px;\n }\n`;\n\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\n position: relative;\n background: none;\n border: none;\n display: flex;\n align-items: center;\n flex: none;\n width: calc(100% - 2rem);\n height: ${value}px;\n margin: 0 0 0.25rem 0;\n padding-left: 2rem;\n font-size: 0.75rem;\n\n :first-child,\n :last-child {\n height: auto;\n }\n\n :after {\n content: '';\n position: absolute;\n top: 50%;\n left: 0;\n width: 1.5rem;\n height: ${value}px;\n margin-top: -${Math.round(value / 2)}px;\n background: rgb(224, 224, 224);\n }\n`;\n\nconst StrokeColorLegendItemMixin = css`\n margin-right: 0.5rem;\n width: 1.5rem;\n`;\n\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\n flex: 1;\n height: ${({ parameter }) =>\n isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n )\n ? 0.25\n : 1}rem;\n background: ${({ value }) => (typeof value === 'number' ? 'none' : value)};\n border: 1px rgba(48, 69, 79, 0.1) solid;\n margin-right: -1px;\n color: rgba(48, 69, 79, 0.65);\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\n\n ${({ value, parameter }) =>\n isParameterType('size', parameter as ClassificationParameterExtended) &&\n SizeLegendItemMixin(value as number)}\n\n ${({ value, parameter }) =>\n isParameterType(\n ['strokeWidth', 'stroke.width'],\n parameter as ClassificationParameterExtended\n ) && StrokeWidthLegendItemMixin(value as number)}\n`;\n\nexport const MapLegendOther = styled(MapLegendItem)`\n display: flex;\n align-items: center;\n flex: none;\n position: relative;\n width: 1rem;\n margin-left: 0.25rem;\n border-radius: 0.125rem;\n`;\n\nconst SizeLegendItemsMixin = css`\n position: relative;\n width: 2rem;\n height: 2rem;\n margin: 0 auto;\n\n ${MapLegendOther} {\n width: auto;\n margin-left: 0;\n }\n`;\n\nconst StrokeWidthLegendItemsMixin = css`\n position: relative;\n flex-direction: column;\n width: auto;\n\n ${MapLegendOther} {\n width: calc(100% - 2rem);\n margin-left: 0;\n }\n`;\n\nexport const SizeMinimizedLegend = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n margin: 0.5rem 0 0.25rem;\n`;\n\nexport const SizeMinimizedLegendSymbol = styled.div`\n width: 4rem;\n margin-right: 0.75rem;\n`;\n\nexport const SizeMinimizedLegendLabel = styled.div`\n max-width: 9.75rem;\n font-size: 0.75rem;\n`;\n\nexport const SizeMinimizedLegendDown = styled.div`\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)``;\n\nconst SingleSizeLegendItemsMixin = css`\n width: 4rem;\n margin-right: 0.75rem;\n\n ${MapLegendItem}:after {\n margin: 0 auto;\n }\n`;\n\nconst SingleLegendItemsMixin = css<{\n parameter: ClassificationParameterExtended;\n isSize?: boolean;\n}>`\n justify-content: center;\n width: 2rem;\n height: auto;\n margin: 0;\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\n\n ${MapLegendItem} {\n position: relative;\n top: 0;\n left: 0;\n display: flex;\n align-content: center;\n justify-content: center;\n margin: 0;\n height: auto;\n width: auto;\n\n ${({ parameter }) =>\n isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n ) && StrokeColorLegendItemMixin}\n }\n`;\n\nexport const MapLegendItems = styled.div<{\n parameter: ClassificationParameterExtended;\n isSize?: boolean;\n isStrokeWidth?: boolean;\n isStrokeColor?: boolean;\n isSingle?: boolean;\n}>`\n display: flex;\n align-items: center;\n width: 100%;\n border-radius: 0.125rem;\n\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\n`;\n\nexport const MapLegendItemsContainer = styled.div`\n display: flex;\n width: 100%;\n\n ${MapLegendItem} {\n :first-child {\n border-top-left-radius: 0.125rem;\n border-bottom-left-radius: 0.125rem;\n }\n\n :last-child {\n border-top-right-radius: 0.125rem;\n border-bottom-right-radius: 0.125rem;\n }\n }\n`;\n\nexport const MapLegendValues = styled.div`\n display: flex;\n width: 100%;\n margin-top: 0.5rem;\n font-size: 0.75rem;\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const MapLegendValuesRange = styled.div`\n display: flex;\n justify-content: space-between;\n width: calc(100% - 1.25rem);\n\n div {\n flex: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n\n :first-child {\n margin-right: 0.5rem;\n }\n\n :last-child {\n margin-left: 0.5rem;\n text-align: right;\n }\n }\n`;\n\nexport const MapLegendValuesOther = styled(MapLegendOther)`\n justify-content: center;\n border: 0;\n overflow: visible;\n`;\n\nexport const MapLegendExpandButton = styled.div`\n cursor: pointer;\n margin-top: 0.1rem;\n font-size: 0.625rem;\n color: #1fb3aa;\n`;\n\nexport const ClusterLegendContainer = styled.div`\n margin: -0.9rem;\n transform: scale(0.5);\n`;\n","import { GeometryType } from '@evergis/api';\n\nimport { ClassifyParameter, ParameterInfo, Units } from './types';\nimport { ClassificationParameter, ComparisonOperator } from '../../core';\n\nexport const DEFAULT_LEGEND_SYMBOL_SIZE = 26;\n\nexport const EXTRA_BORDER_SIZE = 4;\n\nexport const DEFAULT_SYMBOL_SIZE = 20;\n\nexport const DEFAULT_SYMBOL_WITH_BG_SIZE = 24;\n\nexport const DEFAULT_SYMBOL_FILL_COLOR = 'rgba(0, 163, 245, 1)';\n\nexport const DEFAULT_SYMBOL_STROKE_COLOR = 'rgb(255, 255, 255)';\n\nexport const DEFAULT_SYMBOL_OFFSET = [0, 0];\n\nexport const DEFAULT_CLUSTER_SVG = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 56 56\" width=\"56px\" height=\"56px\">\n <circle cx=\"28\" cy=\"28\" r=\"22\" fill=\"#00AAFF\" stroke=\"#00AAFF\" stroke-opacity=\"0.28\" stroke-width=\"12\" id=\"symbol-bg\" />\n</svg>\n`;\n\nexport const SYMBOL_CLASSIFICATION: Partial<Record<\n GeometryType,\n ClassifyParameter[]\n>> = {\n [GeometryType.Polygon]: ['fill.color', 'stroke.color', 'stroke.width'],\n [GeometryType.Polyline]: ['stroke.color', 'stroke.width'],\n [GeometryType.Point]: [\n 'angle',\n 'size',\n 'fill.color',\n 'fillColor',\n 'background.fillColor',\n 'background.strokeColor',\n 'background.strokeWidth',\n 'figure.fillColor',\n 'figure.strokeColor',\n 'figure.strokeWidth',\n 'singleObjectSymbol.size',\n 'singleObjectSymbol.figure.fillColor',\n 'singleObjectSymbol.figure.strokeColor',\n 'singleObjectSymbol.figure.strokeWidth',\n 'singleObjectSymbol.background.fillColor',\n 'singleObjectSymbol.background.strokeColor',\n 'singleObjectSymbol.background.strokeWidth',\n ],\n};\n\nexport const SYMBOL_LIMITS = {\n SIZE_MIN: 1,\n SIZE_MAX: 64,\n SIZE_STEP: 1,\n GRID_SIZE_MIN: 0.1,\n GRID_SIZE_MAX: 120,\n MIN_OBJECTS_COUNT: 2,\n MAX_OBJECTS_COUNT: 10000,\n MIN_CLUSTER_SIZE: 16,\n MAX_CLUSTER_SIZE: 120,\n STROKE_WIDTH_MIN: 0,\n STROKE_WIDTH_MAX: 32,\n STROKE_WIDTH_STEP: 0.25,\n ANGLE_MIN: -360,\n ANGLE_MAX: 360,\n ANGLE_STEP: 1,\n PREVIEW_SIZE_MAX: 32,\n PREVIEW_SIZE_MAX_WIDTH: 26,\n};\n\nexport const DEFAULT_PARAMETER_INFO: ParameterInfo = {\n classifyAble: true,\n min: SYMBOL_LIMITS.STROKE_WIDTH_MIN,\n max: SYMBOL_LIMITS.STROKE_WIDTH_MAX,\n step: SYMBOL_LIMITS.STROKE_WIDTH_STEP,\n units: Units.Pixels,\n serialize: value => value,\n deserialize: value => value,\n};\n\nexport const PARAMETER_INFOS: Partial<Record<\n ClassificationParameter,\n ParameterInfo\n>> = {\n size: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.SIZE_MIN,\n max: SYMBOL_LIMITS.SIZE_MAX,\n step: SYMBOL_LIMITS.SIZE_STEP,\n units: Units.Pixels,\n },\n /* gridSize: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.GRID_SIZE_MIN,\n max: SYMBOL_LIMITS.GRID_SIZE_MAX,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: null,\n },\n maxObjectCount: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: i18n.t(Units.Count, { ns: \"common\" }),\n },\n selectionObjectsLimit: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: i18n.t(Units.Count, { ns: \"common\" }),\n },\n angle: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.ANGLE_MIN,\n max: SYMBOL_LIMITS.ANGLE_MAX,\n step: SYMBOL_LIMITS.ANGLE_STEP,\n units: Units.Degrees,\n serialize: compose(Math.round, radToDeg),\n deserialize: degToRad,\n },\n endingSize: {\n ...DEFAULT_PARAMETER_INFO,\n classifyAble: false,\n min: 3,\n max: 12,\n step: 1,\n },*/\n};\n\nexport const OPERATOR_CONDITION_REMAP: Record<ComparisonOperator, string> = {\n [ComparisonOperator.Equals]: '==',\n [ComparisonOperator.NotEquals]: '!=',\n [ComparisonOperator.GreaterThan]: '>',\n [ComparisonOperator.GreaterOrEquals]: '>=',\n [ComparisonOperator.LessThan]: '<',\n [ComparisonOperator.LessOrEquals]: '<=',\n [ComparisonOperator.Filled]: '!=',\n [ComparisonOperator.Empty]: '==',\n [ComparisonOperator.Contains]: '==',\n [ComparisonOperator.NotContains]: '!=',\n [ComparisonOperator.StartsWith]: '==',\n [ComparisonOperator.NotStartsWith]: '!=',\n [ComparisonOperator.EndsWith]: '==',\n [ComparisonOperator.NotEndsWith]: '!=',\n [ComparisonOperator.Between]: 'between',\n [ComparisonOperator.Outside]: '!between',\n};\n\nexport const BASE_OPERATORS = [\n ComparisonOperator.Equals,\n ComparisonOperator.NotEquals,\n];\n\nexport const CONTAINS_OPERATORS = [\n ComparisonOperator.Contains,\n ComparisonOperator.NotContains,\n];\n\nexport const FILLED_OPERATORS = [\n ComparisonOperator.Filled,\n ComparisonOperator.Empty,\n];\n\nexport const STARTS_WITH_OPERATORS = [\n ComparisonOperator.StartsWith,\n ComparisonOperator.NotStartsWith,\n];\n\nexport const ENDS_WITH_OPERATORS = [\n ComparisonOperator.EndsWith,\n ComparisonOperator.NotEndsWith,\n];\n\nexport const RANGE_OPERATORS = [\n ComparisonOperator.LessThan,\n ComparisonOperator.LessOrEquals,\n ComparisonOperator.GreaterThan,\n ComparisonOperator.GreaterOrEquals,\n];\n\nexport const BETWEEN_OPERATORS = [\n ComparisonOperator.Between,\n ComparisonOperator.Outside,\n];\n\nexport const numberComparisonOperators = [\n ...BASE_OPERATORS,\n ...RANGE_OPERATORS,\n ...FILLED_OPERATORS,\n ...BETWEEN_OPERATORS,\n];\n\nexport const dateComparisonOperators = [\n ...BASE_OPERATORS,\n ...RANGE_OPERATORS,\n ...FILLED_OPERATORS,\n ...BETWEEN_OPERATORS,\n];\n\nexport const textComparisonOperators = [\n ...BASE_OPERATORS,\n ...CONTAINS_OPERATORS,\n ...STARTS_WITH_OPERATORS,\n ...ENDS_WITH_OPERATORS,\n ...FILLED_OPERATORS,\n];\n","import { ReactNode, RefObject } from 'react';\nimport {\n AttributeType,\n PointLabelSymbolDc,\n SvgPointSymbolDc,\n StyleDc,\n FeatureLayerServiceInfoDc,\n AttributeFormatDc,\n FeatureDc,\n} from '@evergis/api';\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport {\n ClassificationParameterExtended,\n LayerAttribute,\n LegendValueType,\n ParameterByAttribute,\n ParameterValueWithSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../../core';\nimport {\n SGisBrushFill,\n SGisImageFill,\n SGisPolygonSymbol,\n SGisPolylineSymbol,\n} from '../../symbols';\n\nexport type ClassifyParameter =\n | 'fill.color'\n | 'fill.hatchColor'\n | 'fillColor'\n | 'stroke.width'\n | 'stroke.color'\n | 'strokeWidth'\n | 'strokeColor'\n | 'textBackground.fill.color'\n | 'background.fillColor'\n | 'background.strokeColor'\n | 'background.strokeWidth'\n | 'figure.fillColor'\n | 'figure.strokeColor'\n | 'figure.strokeWidth'\n | 'fontColor'\n | 'haloColor'\n | 'size'\n | 'symbol'\n | 'angle'\n | 'maskedColor'\n | 'endingSize'\n | 'beginningSize'\n | 'maxObjectCount'\n | 'gridSize'\n | 'selectionObjectsLimit'\n | 'singleObjectSymbol.size'\n | 'singleObjectSymbol.figure.fillColor'\n | 'singleObjectSymbol.figure.strokeColor'\n | 'singleObjectSymbol.figure.strokeWidth'\n | 'singleObjectSymbol.background.fillColor'\n | 'singleObjectSymbol.background.strokeColor'\n | 'singleObjectSymbol.background.strokeWidth';\n\nexport interface ParameterInfo {\n min: number;\n max: number;\n step: number;\n units: Units | null;\n serialize: (value: number) => number;\n deserialize: (value: number) => number;\n classifyAble: boolean;\n}\n\nexport const enum Units {\n Pixels = 'px',\n Count = 'pcs',\n Degrees = '°',\n}\n\nexport type Positions = Coordinates | Coordinates[] | Coordinates[][];\n\nexport type FeaturedDcExtendedGeometry = Omit<\n FeatureDc['geometry'],\n 'coordinates'\n> & {\n coordinates?: Positions;\n};\n\nexport type LegendProps = {\n layerInfo: FeatureLayerServiceInfoDc;\n formatValue?: (\n type: AttributeType,\n value: string | number | Date | FeaturedDcExtendedGeometry,\n stringFormat?: AttributeFormatDc\n ) => string;\n hiddenLegends?: Record<string, string[]>;\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\n clearHiddenLegends?: (layerName: string) => void;\n goToClassification?: VoidFunction;\n};\n\nexport type LegendChildrenProps = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\n> & {\n layerInfo: FeatureLayerServiceInfoDc;\n};\n\nexport type LegendSectionProps = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\n> & {\n layerName: string;\n symbol: StyleDc['symbol'];\n parameter: ClassificationParameterExtended;\n parameters: ClassificationParameterExtended[];\n classified: ParameterByAttribute<ParameterValueWithSymbol>;\n attribute: LayerAttribute | null;\n index: number;\n count?: number;\n};\n\nexport type LegendSectionItem = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend'\n> & {\n attributeType: AttributeType;\n symbol: StyleSymbolType;\n title: string;\n index: number;\n hiddenCondition?: string;\n};\n\nexport type MaximizedLegendProps = {\n innerRef?: RefObject<HTMLDivElement> | undefined;\n isShown?: boolean;\n layerName: string;\n symbol: StyleDc['symbol'];\n parameter: ClassificationParameterExtended;\n values: LegendSectionItem[];\n attributeType: AttributeType;\n index: number;\n hiddenLegends?: string[];\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\n};\n\nexport type SvgSymbolProps = {\n svg: string;\n symbol: SvgPointSymbol;\n size?: number;\n title?: string;\n text?: string;\n bg?: SvgSymbolBg;\n skipOffset?: boolean;\n isClassified?: boolean;\n fontSettings?: PointLabelSymbolDc;\n onClick?: (svg: string, symbol: SvgPointSymbol) => void;\n};\n\nexport enum SvgSymbolBg {\n Rect = 'rect',\n Circle = 'circle',\n}\n\nexport type SGisSymbol =\n | MaskedImage\n | SvgPointSymbolDc\n | SGisPolylineSymbol\n | SGisPolygonSymbol\n | SGisImageFill\n | SGisBrushFill\n | H3Symbol;\n/* | sPointSymbol\n | sSquareSymbol\n | sStaticImageSymbol\n | SGisMiterSymbol*/\n\nexport type SvgEditorField = Pick<\n SvgPointSymbol,\n 'size' | 'offset' | 'angle'\n> & {\n 'background.fillColor': string;\n 'background.strokeColor': string;\n 'background.strokeWidth': string;\n 'figure.strokeColor': string;\n 'figure.strokeWidth': string;\n 'figure.fillColor': string;\n};\n\nexport type MinimizedLegendProps = {\n innerRef?: RefObject<HTMLDivElement> | undefined;\n isShown?: boolean;\n title?: string | ReactNode;\n values: LegendValueType[];\n parameter: ClassificationParameterExtended;\n hiddenLegends?: string[];\n};\n\nexport type MapLegendItemProps = {\n value?: string | number;\n parameter?: ClassificationParameterExtended;\n isHidden?: boolean;\n};\n","import { Gradient, Svg } from '@svgdotjs/svg.js';\nimport { SvgParameterDc } from '@evergis/api';\n\nimport {\n DEFAULT_SYMBOL_FILL_COLOR,\n DEFAULT_SYMBOL_SIZE,\n DEFAULT_SYMBOL_STROKE_COLOR,\n DEFAULT_SYMBOL_WITH_BG_SIZE,\n} from '../components/Legend/constants';\nimport { SvgSymbolBg } from '../components/Legend/types';\nimport {\n getParameterValue,\n isParameterByAttribute,\n ParameterByAttribute,\n ParameterByAttributeValue,\n ParameterValue,\n SvgPointSymbol,\n} from '../core';\n\nconst DEFAULT_STROKE_OPACITY = 0.28;\n\nexport const convertSvgToBase64 = (svg: string) =>\n `data:image/svg+xml;base64,${window.btoa(svg)}`;\n\nexport const createSvgGradient = (\n svg: Svg,\n values: ParameterByAttributeValue<string>[]\n) =>\n svg\n .gradient('linear', (add: Gradient) => {\n values?.forEach(({ value }, index) => {\n add.stop(index / (values?.length - 1), value);\n });\n })\n .from(0, 0)\n .to(1, 1);\n\n// eslint-disable-next-line max-lines-per-function\nexport const manipulateSvgSymbol = ({\n SVGContainer,\n symbol,\n svg,\n bg,\n isClassified,\n}: {\n SVGContainer: Svg;\n symbol: SvgPointSymbol;\n svg?: string;\n bg?: SvgSymbolBg;\n isClassified?: boolean;\n}): Svg => {\n if (!symbol) return SVGContainer;\n\n const symbolData = getParameterValue(\n svg || (symbol.data as ParameterValue)\n ) as string;\n\n if (!symbolData) return SVGContainer;\n\n SVGContainer.clear();\n\n const { size, angle, background, figure } = symbol;\n\n const isUploadedFile =\n !bg &&\n !symbolData.includes('symbol-bg') &&\n !symbolData.includes('symbol-figure');\n const innerSvg = symbolData.replace(/<\\?xml[^?]*\\?>|<svg[^>]*>|<\\/svg>/g, '');\n\n if (isUploadedFile) {\n SVGContainer.svg(innerSvg);\n\n const uploadedViewBox = /viewBox=\"([^\"]+)\"/g.exec(symbolData)?.[1];\n\n if (uploadedViewBox?.[1]) {\n SVGContainer.viewbox(uploadedViewBox);\n }\n\n SVGContainer.size(size as number);\n } else {\n const hasBg = bg || innerSvg?.includes('symbol-bg');\n let defaultSize = hasBg ? DEFAULT_SYMBOL_WITH_BG_SIZE : DEFAULT_SYMBOL_SIZE;\n const currentSize = size || defaultSize;\n let viewBox = [0, 0, defaultSize, defaultSize];\n const strokeWidth =\n getParameterValue(\n (background as SvgParameterDc)?.strokeWidth as number\n ) ||\n (typeof (background as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\n\n if (strokeWidth) {\n defaultSize += strokeWidth as number;\n viewBox = [-strokeWidth / 2, -strokeWidth / 2, defaultSize, defaultSize];\n }\n\n if (hasBg) {\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\n viewBox.join(' ')\n );\n\n const currentBg = bg || (background as SvgParameterDc)?.type;\n\n if (currentBg) {\n const strokeColor = getParameterValue(\n (background as SvgParameterDc)?.strokeColor as ParameterValue\n );\n const fillColor = getParameterValue(\n (background as SvgParameterDc)?.fillColor as ParameterValue\n );\n\n SVGContainer.svg(\n currentBg === SvgSymbolBg.Circle\n ? `<circle\n id=\"symbol-bg\"\n cx=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n cy=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n r=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\n stroke-width=\"${strokeWidth}\"\n />`\n : `<rect\n id=\"symbol-bg\"\n width=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\n height=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\n rx=\"4\"\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\n stroke-width=\"${strokeWidth}\"\n />`\n );\n SVGContainer.svg(innerSvg);\n SVGContainer.find('#symbol-bg:not(:first-child)').each((item: any) =>\n item.remove()\n );\n SVGContainer.find(':not(#symbol-bg)').each((item: any) =>\n item\n .center(\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2,\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2\n )\n .fill('white')\n );\n\n const symbolBg = SVGContainer.find('#symbol-bg')[0];\n\n if (isClassified) {\n symbolBg?.stroke({ opacity: DEFAULT_STROKE_OPACITY });\n }\n\n // eslint-disable-next-line max-depth\n if (\n isParameterByAttribute(\n (background as SvgParameterDc)?.fillColor as ParameterValue\n )\n ) {\n symbolBg?.fill(createSvgGradient(\n SVGContainer,\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<\n string\n >)?.values\n ));\n }\n\n if (isParameterByAttribute(\n (background as SvgParameterDc)?.strokeColor as ParameterValue\n )) {\n symbolBg?.stroke({\n color: (createSvgGradient(\n SVGContainer,\n ((background as SvgParameterDc)?.strokeColor as ParameterByAttribute<\n string\n >)?.values\n ) as unknown) as string,\n });\n }\n } else {\n SVGContainer.svg(innerSvg);\n }\n } else {\n const strokeColor = getParameterValue(\n (figure as SvgParameterDc)?.strokeColor as string\n );\n const strokeWidth = getParameterValue(\n (figure as SvgParameterDc)?.strokeWidth as number\n ) ||\n (typeof (figure as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\n const fillColor = getParameterValue(\n (figure as SvgParameterDc)?.fillColor as string\n );\n\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\n viewBox.join(' ')\n );\n SVGContainer.svg(innerSvg);\n SVGContainer.find('#symbol-figure').each(item => {\n item\n .center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2)\n .fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR)\n .stroke({ color: strokeColor, width: strokeWidth });\n\n if (\n isParameterByAttribute(\n (figure as SvgParameterDc)?.fillColor as ParameterValue\n )\n ) {\n item?.fill(createSvgGradient(\n SVGContainer,\n ((figure as SvgParameterDc)?.fillColor as ParameterByAttribute<\n string\n >)?.values\n ));\n }\n\n if (\n isParameterByAttribute(\n (figure as SvgParameterDc)?.strokeColor as ParameterValue\n )\n ) {\n item?.stroke({\n color: (createSvgGradient(\n SVGContainer,\n ((figure as SvgParameterDc)?.strokeColor as ParameterByAttribute<\n string\n >)?.values\n ) as unknown) as string,\n });\n }\n });\n }\n }\n\n const rootTransform = /<svg[^>]*transform=\"([^\"]+)\"/g.exec(symbolData)?.[1];\n\n if (rootTransform) {\n const transformParts = rootTransform.slice(0, -1).split('(');\n\n SVGContainer.transform({\n [transformParts[0]]: transformParts[1].split(','),\n });\n }\n\n const rotatedAngle = SVGContainer.transform('rotate');\n\n if (rotatedAngle) {\n SVGContainer.rotate(-rotatedAngle, 0, 0);\n }\n if (angle !== undefined) {\n SVGContainer.rotate((angle as number) * (180 / Math.PI), 0, 0);\n }\n\n return SVGContainer;\n};\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","import { Char, Expression, TokenType } from \"@evergis/condition\";\nimport { AttributeType } from \"@evergis/api\";\nimport { isNil } from \"lodash\";\n\nimport { DateFormat, formatDate } from \"../../utils/date\";\nimport { ComparisonOperator, FilterConditionType } from \"./types\";\nimport {\n BETWEEN_OPERATORS,\n CONTAINS_OPERATORS,\n ENDS_WITH_OPERATORS,\n OPERATOR_CONDITION_REMAP,\n STARTS_WITH_OPERATORS\n} from \"../../components\";\n\nexport const comparisonOperatorMapReversed: Record<string, ComparisonOperator> = {\n [TokenType.ArEq]: ComparisonOperator.Equals,\n [TokenType.ArNotEq]: ComparisonOperator.NotEquals,\n [TokenType.ArGr]: ComparisonOperator.GreaterThan,\n [TokenType.ArLs]: ComparisonOperator.LessThan,\n [TokenType.ArGre]: ComparisonOperator.GreaterOrEquals,\n [TokenType.ArLse]: ComparisonOperator.LessOrEquals,\n [TokenType.Between]: ComparisonOperator.Between,\n [TokenType.Outside]: ComparisonOperator.Outside,\n};\n\nexport const NUMERIC_ATTRIBUTE_TYPES: AttributeType[] = [\n AttributeType.Int32,\n AttributeType.Int64,\n AttributeType.DateTime,\n AttributeType.Double,\n];\n\nconst formatValue = (value: string | number, isDate?: boolean) => {\n return isDate\n ? `#'${formatDate(value, {\n dateFormat: DateFormat.UTC,\n defaultValue: value,\n })}'`\n : value\n ? value.toString()\n : 0;\n};\n\nexport function formatCondition(condition: FilterConditionType) {\n const { comparisonOperator, value, type, attribute } = condition;\n const operator = OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator] || comparisonOperator;\n\n const preparedValue = typeof value === \"string\" && value.includes(\" - \") ? value.split(\" - \") : value;\n const isDate = type === AttributeType.DateTime;\n const isBetweenOutside = BETWEEN_OPERATORS.includes(comparisonOperator as ComparisonOperator);\n const escapeValue = !NUMERIC_ATTRIBUTE_TYPES.includes(type as AttributeType) && preparedValue !== null;\n\n if (isBetweenOutside && Array.isArray(preparedValue) && preparedValue[0] !== undefined) {\n return `${OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator]}(${attribute}, ${formatValue(\n preparedValue[0],\n isDate,\n )}, ${formatValue(preparedValue[1], isDate)})`;\n }\n\n const formattedValue = Array.isArray(preparedValue)\n ? preparedValue.map(val => formatValue(val, isDate))\n : formatValue(preparedValue as string | number, isDate);\n\n const nulledValue = isNil(preparedValue) ? \"{null}\" : formattedValue;\n\n const valueEscaped =\n escapeValue && typeof nulledValue === \"string\"\n ? `'${Char.escapeSpecChars(addOperationToValue(nulledValue, comparisonOperator as ComparisonOperator))}'`\n : nulledValue;\n\n return `${attribute} ${operator} ${valueEscaped}`;\n}\n\nexport function createConditionString(condition: FilterConditionType) {\n if (Array.isArray(condition)) {\n return `( ${formatCondition(condition[0])} ${condition[0].operation} ${formatCondition(condition[1])} )`;\n }\n\n return formatCondition(condition);\n}\n\nexport function createCondition({ attribute, operation, value }: Expression) {\n const comparisonOperator = comparisonOperatorMapReversed[operation];\n const convertedResult = convertOperatorValue(value as string | number | boolean, comparisonOperator);\n\n return {\n attribute,\n ...convertedResult,\n } as FilterConditionType;\n}\n\nfunction convertOperatorValue(value: string | number | boolean, comparisonOperator: ComparisonOperator) {\n if (typeof value === \"string\") {\n const operatorIndex = +(comparisonOperator === ComparisonOperator.NotEquals);\n\n if (value.startsWith(Char.PERCENTAGE) && value.endsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(1, -1),\n comparisonOperator: CONTAINS_OPERATORS[operatorIndex],\n };\n }\n\n if (value.startsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(1),\n comparisonOperator: ENDS_WITH_OPERATORS[operatorIndex],\n };\n }\n\n if (value.endsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(0, -1),\n comparisonOperator: STARTS_WITH_OPERATORS[operatorIndex],\n };\n }\n }\n\n return { value, comparisonOperator };\n}\n\nconst addContains = (value: string | number) => `%${value}%`;\nconst addStartsWith = (value: string | number) => `${value}%`;\nconst addEndsWith = (value: string | number) => `%${value}`;\n\nfunction addOperationToValue(value: string, operator: ComparisonOperator) {\n switch (operator) {\n case ComparisonOperator.Contains:\n case ComparisonOperator.NotContains:\n return addContains(value);\n case ComparisonOperator.StartsWith:\n case ComparisonOperator.NotStartsWith:\n return addStartsWith(value);\n case ComparisonOperator.EndsWith:\n case ComparisonOperator.NotEndsWith:\n return addEndsWith(value);\n case ComparisonOperator.Between:\n return Char.BETWEEN;\n case ComparisonOperator.Outside:\n return Char.OUTSIDE;\n default:\n return value;\n }\n}\n","import { ConditionInterpreter, TokenType } from \"@evergis/condition\";\n\nimport { FilterConditionOperation, FilterConditionType } from \"./index\";\nimport { createCondition, createConditionString } from \"./createCondition\";\n\nexport class FilterCondition {\n private readonly conditionInterpreter: ConditionInterpreter;\n\n constructor(private condition: string | null = null) {\n this.conditionInterpreter = new ConditionInterpreter(condition as string);\n }\n\n static from(conditions: FilterConditionType[], operation: FilterConditionOperation) {\n const condition = conditions?.map(createConditionString).join(` ${operation} `) || null;\n\n return new FilterCondition(condition);\n }\n\n get conditions(): FilterConditionType[] {\n const { value } = this.conditionInterpreter;\n\n if (value instanceof Error) {\n // TODO handle errors in client notifications\n console.warn(value.message);\n }\n\n return value instanceof Error ? [] : value.expressions.map(createCondition);\n }\n\n get conditionOperation() {\n const { value } = this.conditionInterpreter;\n\n if (value instanceof Error) {\n return null;\n }\n\n const isOrCondition = value.boolOperations.includes(TokenType.BoolOr);\n const isAndCondition = value.boolOperations.includes(TokenType.BoolAnd);\n\n if (isOrCondition && isAndCondition) {\n return null;\n }\n\n return isOrCondition ? FilterConditionOperation.OR : isAndCondition ? FilterConditionOperation.AND : null;\n }\n\n public isParsingError() {\n return this.conditionInterpreter.value instanceof Error;\n }\n\n public toString() {\n return this.condition;\n }\n}\n","/* eslint-disable max-lines */\nimport get from 'lodash/get';\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\nimport { ClusterSymbol } from '@evergis/sgis/es/symbols/ClusterSymbol';\nimport {\n AttributesConfigurationDc,\n AttributeType,\n CompositeLayerInfoDc,\n FeatureLayerServiceInfoDc,\n GeometryType,\n LayerDefinitionDc,\n ParameterDcColor,\n PostgresLayerServiceConfigurationDc,\n ServiceInfoDc,\n SimplePolylineSymbolDc,\n StyleDc,\n SvgParameterDc,\n} from '@evergis/api';\n\nimport {\n ClassifyParameter,\n DEFAULT_LEGEND_SYMBOL_SIZE,\n DEFAULT_PARAMETER_INFO,\n EXTRA_BORDER_SIZE,\n LegendProps,\n LegendSectionItem,\n PARAMETER_INFOS,\n ParameterInfo,\n SvgSymbolBg,\n SYMBOL_CLASSIFICATION,\n} from '../components';\nimport { i18n } from \"../i18n\";\nimport { formatDate } from './date';\nimport {\n ClassificationClass,\n ClassificationCondition,\n ClassificationParameter,\n ClassificationParameterExtended,\n ClassifyAble,\n ComparisonOperator,\n FilterConditionOperation,\n getParameterValue,\n ImageSymbol,\n isClusterSymbol,\n isCombinedPolylineSymbol,\n isH3GridSymbol,\n isMaskedImageSymbol,\n isParameterValueSymbol,\n isPolygonSymbol,\n isPolylineSymbols,\n isRangeClass,\n isSizableSymbol,\n isSvgPointSymbol,\n isTwoDimensionalSymbol,\n isUniqueClass,\n LabelType,\n LayerAttribute,\n LegendValueType,\n MaskedImageSymbol,\n ParameterByAttribute,\n ParameterByAttributeValue,\n ParameterValue,\n ParameterValueWithSymbol,\n PointSymbol,\n PointSymbolType,\n PolygonSymbol,\n PolylineSymbol,\n RangeClass,\n SquareSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n symbolParameterWalker,\n UniqueClass,\n} from '../core';\nimport { isNumeric } from './isNumeric';\nimport { isObject } from './isObject';\nimport { createConditionString } from '../core/legend/createCondition';\nimport { FilterCondition } from '../core/legend/FilterCondition';\n\nexport const isLayerService = (\n value?: unknown\n): value is CompositeLayerInfoDc['layer'] => isObject(value) && 'name' in value;\n\nexport const getAttributeFromCondition = (condition: string): string => {\n const parts = condition.split(' ');\n\n return parts[0].startsWith('(') ? parts[0].slice(1) : parts[0];\n};\n\nexport const getExprFromCondition = (\n condition: string,\n partIndex?: number\n): string[] => {\n let expr;\n\n if (partIndex) {\n const parts = condition.split(' && ').map(part => part.slice(1, -1));\n\n expr = parts[partIndex - 1];\n } else {\n expr = condition;\n }\n\n return expr?.split(' ');\n};\n\nexport const getSignFromConditionPart = (\n condition: string,\n partIndex?: number\n): string => {\n return getExprFromCondition(condition, partIndex)?.[1];\n};\n\nexport const getValueFromConditionPart = (\n condition: string,\n partIndex?: number\n): string => {\n return getExprFromCondition(condition, partIndex)?.[2];\n};\n\nexport const isRangeCondition = (condition?: string): boolean =>\n condition?.includes('(') || false;\n\nexport const getSymbolParameterInfo = (\n parameter: ClassificationParameter\n): ParameterInfo => {\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\n};\n\nexport const formatUniqueClassValue = (\n value: UniqueClass,\n formatValue?: LegendProps['formatValue']\n): string => {\n const { attribute, uniqueValue } = value;\n\n return attribute && formatValue\n ? (formatValue(\n attribute.type,\n uniqueValue,\n attribute.stringFormat\n ) as string)\n : uniqueValue;\n};\n\nexport const getRangeValues = (\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\n isDouble: boolean,\n isDate: boolean,\n index: number\n): Pick<RangeClass, 'from' | 'to'> => {\n return {\n from:\n from !== null && index !== 0\n ? isDate\n ? from\n : isDouble\n ? +from\n : +from + 1\n : from,\n to,\n };\n};\n\nexport const formatRangeClassValue = (\n value: RangeClass,\n formatValue: LegendProps['formatValue'],\n index: number\n): string => {\n const isDouble = value.attribute?.type === 'Double';\n const isDate = value.attribute?.type === 'DateTime';\n\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\n\n const formattedFrom = formatValue\n ? formatValue(\n value.attribute?.type as AttributeType,\n from as string | number | Date,\n value.attribute?.stringFormat\n )\n : from;\n const formattedTo = formatValue\n ? formatValue(\n value.attribute?.type as AttributeType,\n to as string | number | Date,\n value.attribute?.stringFormat\n )\n : to;\n\n if (from === null) {\n return `${formattedTo}${!isDate ? ` ${i18n.t(\"andLess\", { ns: \"style\" })}` : ''}`;\n }\n\n if (to === null) {\n return `${!isDate ? `${i18n.t(\"more\", { ns: \"style\" })} ` : ''}${formattedFrom}`;\n }\n\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\n};\n\nexport const checkLayerHasLegend = (\n layerInfo: Pick<FeatureLayerServiceInfoDc, 'geometryType' | 'style'>\n): boolean => {\n return (\n SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\n const paramValue = (get(\n layerInfo.style?.symbol,\n param\n ) as unknown) as ParameterByAttribute<ParameterValue>;\n\n return paramValue?.type === 'byAttribute';\n }) || false\n );\n};\n\nexport const getTitleFromCondition = ({\n condition,\n attribute,\n formatValue,\n}: {\n condition?: string;\n attribute?: LayerAttribute | null;\n formatValue?: LegendProps['formatValue'];\n}): string => {\n const parts = condition?.split(' == ');\n const uniqueValue = parts?.[1] ? (parts[1].startsWith(\"'\") && parts[1].endsWith(\"'\") ? parts[1].slice(1, -1) : parts[1]) : '';\n\n return attribute && formatValue\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat)\n : uniqueValue;\n};\n\nexport function createValueTitleFromCondition(\n paramValue: ParameterByAttributeValue<ParameterValueWithSymbol>,\n attribute: LayerAttribute | null,\n formatValue: LegendProps['formatValue'],\n index: number\n): string {\n if (!attribute) return '';\n\n if (paramValue.title) return paramValue.title;\n\n const value = {\n parameterValue: getParameterValue(paramValue.value),\n attribute,\n } as ClassificationClass;\n\n const sign = getSignFromConditionPart(paramValue.condition, 1);\n const isFirstFrom = sign.includes('>');\n\n (value as RangeClass).from = isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 1)\n : null;\n (value as RangeClass).to =\n paramValue.condition.includes(' && ') && isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 2)\n : !isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 1)\n : null;\n\n if (isRangeClass(value))\n return formatRangeClassValue(value as RangeClass, formatValue, index);\n if (isUniqueClass(value))\n return formatUniqueClassValue(value as UniqueClass, formatValue);\n\n return '';\n}\n\ntype SymbolCreator<T> = (\n baseSymbol: T,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n parameterValue: ParameterValue\n) => T;\n\nexport const enum LegendSymbolTypes {\n Point,\n ImagePoint,\n Line,\n Polygon,\n}\n\ntype LegendSymbolsMap = {\n [LegendSymbolTypes.Point]: PointSymbolType;\n [LegendSymbolTypes.ImagePoint]: MaskedImageSymbol;\n [LegendSymbolTypes.Line]: PolylineSymbol;\n [LegendSymbolTypes.Polygon]: PolygonSymbol;\n};\n\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 ->\n// пункт \"Настраиваемые значения параметров символики в системе\"\n// Для добавления подготовленных значений размеров символов нужно использовать константу PREPARED_SYMBOL_SIZES\nexport const DEFAULT_LEGEND_STYLES: LegendSymbolsMap = {\n [LegendSymbolTypes.Point]: {\n fillColor: '#00000047',\n strokeWidth: 1,\n strokeColor: '#0000001f',\n },\n [LegendSymbolTypes.ImagePoint]: {\n maskedColor: '#00000047',\n },\n [LegendSymbolTypes.Line]: {\n stroke: {\n width: 2,\n color: '#00000047',\n },\n },\n [LegendSymbolTypes.Polygon]: {\n fill: {\n color: '#00000000',\n hatchColor: '#00000000',\n },\n stroke: {\n width: 1,\n color: '#0000001f',\n },\n },\n};\n\nexport const SYMBOL_SIZE_PARAMETERS = ['size', 'width', 'height'];\n\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 -> пункт \"Библиотека символов\"\nexport const DEFAULT_LEGEND_SIZES: Record<string, number> = {\n circlePointSymbol: 8,\n squarePointSymbol: 12,\n imagePointSymbol: 24,\n maskedImagePointSymbol: 24,\n svgPointSymbol: 24,\n};\n\nconst getNonClassifiedParamValue = <S extends StyleSymbolType>(\n baseSymbol: S,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n type: LegendSymbolTypes\n) => {\n if (classificationsParams.includes(parameter)) {\n const defaultParameterValue = getParameterFromSymbol(\n DEFAULT_LEGEND_STYLES[type],\n parameter\n );\n\n if (defaultParameterValue) {\n return defaultParameterValue;\n }\n if (\n SYMBOL_SIZE_PARAMETERS.includes(parameter) &&\n DEFAULT_LEGEND_SIZES[baseSymbol.type as string]\n ) {\n return DEFAULT_LEGEND_SIZES[baseSymbol.type as string];\n }\n }\n\n return getParameterValue(getParameterFromSymbol(baseSymbol, parameter));\n};\n\nexport const updateSymbolParameter = <S extends StyleSymbolType | LabelType>(\n symbol: S,\n path: string,\n value: ClassifyAble<ParameterValue>\n): S =>\n symbolParameterWalker(() => value)(\n symbol,\n path as ClassificationParameterExtended | ClassificationParameterExtended[]\n );\n\nconst createPointSymbol: SymbolCreator<PointSymbol | SquareSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PointSymbol | SquareSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fillColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fillColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n strokeColor: getNonClassifiedParamValue(\n baseSymbol,\n 'strokeColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n strokeWidth: getNonClassifiedParamValue(\n baseSymbol,\n 'strokeWidth',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n size: getNonClassifiedParamValue(\n baseSymbol,\n 'size',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n offset: [0, 0],\n },\n parameter,\n parameterValue\n ) as PointSymbol | SquareSymbol;\n};\n\ntype Dimensions = {\n height: number;\n width: number;\n};\n\nexport function getDimensions(symbol: ImageSymbol, size: number): Dimensions {\n const height = getParameterValue(symbol.height as ParameterValue) as number;\n const width = getParameterValue(symbol.width as ParameterValue) as number;\n\n if (width === height) {\n return {\n width: size,\n height: size,\n };\n }\n\n const ratio = height / width;\n\n if (width < height) {\n return {\n width: size,\n height: height + (size - width) * ratio,\n };\n }\n\n return {\n width: width + (size - height) * ratio,\n height: size,\n };\n}\n\nconst createImagePointSymbol: SymbolCreator<ImageSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): ImageSymbol => {\n let symbol = { ...baseSymbol };\n\n if (isMaskedImageSymbol(symbol)) {\n symbol.maskedColor = getNonClassifiedParamValue(\n baseSymbol,\n 'maskedColor',\n classificationsParams,\n LegendSymbolTypes.ImagePoint\n ) as ClassifyAble<string>;\n }\n\n if (parameter === 'height' || parameter === 'width') {\n const { height, width } = getDimensions(\n baseSymbol,\n parameterValue as number\n );\n\n symbol.height = height;\n symbol.width = width;\n } else {\n symbol.width = getNonClassifiedParamValue(\n baseSymbol,\n 'width',\n classificationsParams,\n LegendSymbolTypes.ImagePoint\n ) as number;\n symbol.height = symbol.width;\n\n symbol = updateSymbolParameter(symbol, parameter, parameterValue);\n }\n\n symbol.offset = [\n (getParameterValue(symbol.height as ClassifyAble<number>) as number) / 2,\n (getParameterValue(symbol.width as ClassifyAble<number>) as number) / 2,\n ];\n\n return symbol;\n};\n\nconst createLineSymbol: SymbolCreator<PolylineSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PolylineSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n type: 'polylineSymbol',\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Line\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Line\n ),\n },\n },\n parameter,\n parameterValue\n ) as PolylineSymbol;\n};\n\nconst createPolygonSymbol: SymbolCreator<PolygonSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PolygonSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fill: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n hatchColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.hatchColor',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n },\n parameter,\n parameterValue\n ) as PolygonSymbol;\n};\n\nconst createH3Symbol: SymbolCreator<H3Symbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): H3Symbol => {\n return (updateSymbolParameter(\n {\n ...baseSymbol,\n fill: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n },\n parameter,\n parameterValue\n ) as unknown) as H3Symbol;\n};\n\nconst createClusterSymbol: SymbolCreator<ClusterSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): ClusterSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fillColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fillColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ) as ParameterDcColor,\n } as StyleSymbolType,\n parameter,\n parameterValue\n ) as ClusterSymbol;\n};\n\nexport const createLegendSymbol = (\n parameterValue: ParameterValueWithSymbol,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n baseSymbol: StyleSymbolType\n): StyleSymbolType | null => {\n if (isParameterValueSymbol(parameterValue)) {\n return parameterValue;\n }\n\n if (isClusterSymbol(baseSymbol)) {\n return createClusterSymbol(\n baseSymbol as ClusterSymbol,\n parameter,\n classificationsParams,\n parameterValue\n );\n }\n\n if (isSizableSymbol(baseSymbol)) {\n return createPointSymbol(\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isTwoDimensionalSymbol(baseSymbol)) {\n return createImagePointSymbol(\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isPolylineSymbols(baseSymbol)) {\n return createLineSymbol(\n baseSymbol as PolylineSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isPolygonSymbol(baseSymbol)) {\n return createPolygonSymbol(\n baseSymbol as PolygonSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isH3GridSymbol(baseSymbol)) {\n return createH3Symbol(\n baseSymbol as H3Symbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n return null;\n};\n\nexport function createHiddenCondition(\n attributeName: string,\n attributeType: AttributeType,\n value: ClassificationClass\n) {\n let newValue;\n let comparisonOperator;\n\n if (isRangeClass(value)) {\n if (value.from && value.to) {\n newValue = [value.from as string, value.to as string];\n comparisonOperator = ComparisonOperator.Outside;\n } else if (value.from) {\n newValue = value.from;\n comparisonOperator = ComparisonOperator.LessThan;\n } else if (value.to) {\n newValue = value.to;\n comparisonOperator = ComparisonOperator.GreaterThan;\n }\n } else {\n newValue = value.uniqueValue || value.title;\n comparisonOperator = ComparisonOperator.NotEquals;\n }\n\n return new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: comparisonOperator as ComparisonOperator,\n value: newValue as string,\n })\n ).toString();\n}\n\nexport const createOtherHiddenCondition = (\n values: ClassificationClass[],\n attributeName: string,\n attributeType: AttributeType\n) => {\n const value = values[values.length - 1];\n let hiddenCondition;\n\n if (isRangeClass(value)) {\n hiddenCondition = new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: ComparisonOperator.LessOrEquals,\n value: (value as RangeClass).to || (value as RangeClass).from,\n })\n ).toString();\n } else {\n const conditions = values.map(val =>\n new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: ComparisonOperator.Equals,\n value: (val as UniqueClass).uniqueValue,\n })\n ).toString()\n );\n\n hiddenCondition = `( ${conditions\n .filter(Boolean)\n .join(` ${FilterConditionOperation.OR} `)} )`;\n }\n\n return hiddenCondition;\n};\n\nexport const getMinimizedLegendValues = (\n attribute: LayerAttribute,\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\n formatValue: LegendProps['formatValue'],\n index: number,\n otherTitle: string\n): LegendValueType[] => {\n const other = {\n title: otherTitle,\n parameterValue: classified.defaultValue,\n hiddenCondition: createOtherHiddenCondition(\n classified.values.map(val =>\n getClassificationValue(\n val.value,\n otherTitle,\n new ClassificationCondition(val.condition)\n )\n ),\n attribute.name as string,\n attribute.type\n ),\n } as LegendValueType;\n\n const items = classified.values.map(paramValue => {\n const parameterValue = getParameterValue(paramValue.value);\n const result = { parameterValue, attribute } as Partial<LegendValueType>;\n\n if (isRangeCondition(paramValue.condition)) {\n const from = getValueFromConditionPart(paramValue.condition, 1);\n const to = getValueFromConditionPart(paramValue.condition, 2);\n\n (result as RangeClass).from = from\n ? isNumeric(from)\n ? +from\n : formatDate(from)\n : null;\n (result as RangeClass).to = to\n ? isNumeric(to)\n ? +to\n : formatDate(to)\n : null;\n\n result.title = createValueTitleFromCondition(\n paramValue,\n attribute,\n formatValue,\n index\n );\n\n return result;\n }\n\n (result as UniqueClass).uniqueValue = formatValue\n ? (formatValue(\n attribute.type,\n paramValue.value,\n attribute.stringFormat\n ) as string)\n : paramValue.value.toString();\n result.title = getTitleFromCondition({ condition: paramValue.condition });\n result.hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.value,\n result.title,\n new ClassificationCondition(paramValue.condition)\n )\n ) as string;\n\n return result;\n }) as LegendValueType[];\n\n return [...items, other] as LegendValueType[];\n};\n\nexport const getMaximizedLegendValues = (\n attribute: LayerAttribute,\n param: ClassificationParameterExtended,\n params: ClassificationParameterExtended[],\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\n symbol: StyleDc['symbol'],\n formatValue: LegendProps['formatValue'],\n sectionIndex: number,\n otherTitle: string\n): LegendSectionItem[] => {\n const other = {\n title: otherTitle,\n symbol: createLegendSymbol(\n classified.defaultValue,\n param,\n params,\n symbol as StyleSymbolType\n ),\n hiddenCondition: createOtherHiddenCondition(\n classified.values.map(val =>\n getClassificationValue(\n val.value,\n otherTitle,\n new ClassificationCondition(val.condition)\n )\n ),\n attribute.name as string,\n attribute.type\n ),\n };\n\n const items = classified.values.map((paramValue, index) => {\n const result = {\n symbol: createLegendSymbol(\n paramValue.value,\n param,\n params,\n symbol as StyleSymbolType\n ),\n } as LegendSectionItem;\n\n result.title = isRangeCondition(paramValue.condition)\n ? createValueTitleFromCondition(\n paramValue,\n attribute,\n formatValue,\n sectionIndex\n )\n : getTitleFromCondition({ condition: paramValue.condition });\n\n result.hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.value,\n result.title,\n new ClassificationCondition(classified.values[index].condition)\n )\n ) as string;\n\n return result;\n });\n\n return [...items, other] as LegendSectionItem[];\n};\n\nexport type ClassifiedListItem = ParameterByAttribute<ParameterValueWithSymbol> & { index?: number };\n\nexport type ClassifiedList = Partial<Record<ClassifyParameter, ClassifiedListItem>>;\n\nexport const classifyParamsReduce = (\n symbol?: StyleSymbolType,\n classifyParams?: ClassifyParameter[],\n index?: number,\n): undefined | ClassifiedList => {\n return classifyParams?.reduce((result, classified) => {\n const param = (get(\n symbol,\n classified\n ) as unknown) as ParameterByAttribute<ParameterValue>;\n\n return param?.type === 'byAttribute' ? { ...result, [classified]: { index, ...param } } : result;\n }, {} as ClassifiedList);\n}\n\nexport const getClassified = (\n layerInfo: FeatureLayerServiceInfoDc\n): ClassifiedList | undefined => {\n if (!layerInfo) return undefined;\n\n if (layerInfo.style?.children?.length) {\n return {\n symbol: {\n type: 'byAttribute',\n defaultValue: layerInfo.style.symbol as StyleSymbolType,\n title: null,\n values: layerInfo.style?.children as ParameterByAttributeValue<\n ParameterValueWithSymbol\n >[],\n },\n };\n }\n\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\n\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\n if (!layerInfo.style.symbol.values?.length) return undefined;\n\n return layerInfo.style.symbol.values.reduce((result: ClassifiedList, polyline: SimplePolylineSymbolDc, index) => {\n return { ...result, ...classifyParamsReduce(polyline, classifyParams, index) };\n }, {} as ClassifiedList);\n }\n\n return classifyParamsReduce(layerInfo.style?.symbol, classifyParams);\n};\n\nexport const getSymbolStrokeWidth = (symbol: PointSymbolType): number => {\n return isSvgPointSymbol(symbol)\n ? ((symbol.background as SvgParameterDc)?.strokeWidth as number)\n : ((symbol as PointSymbol).strokeWidth as number);\n};\n\nexport const getParameterFromSymbol = <R extends ClassifyAble<ParameterValue>>(\n symbol: StyleSymbolType | LabelType,\n parameter: ClassificationParameterExtended\n): R => {\n let parameterFromSymbol = {};\n\n symbolParameterWalker((parameterValue: ClassifyAble<ParameterValue>) => {\n parameterFromSymbol = parameterValue;\n })(symbol, parameter);\n\n return parameterFromSymbol as R;\n};\n\nexport const getLegendSymbolSize = (symbol: StyleSymbolType): number => {\n let size = 0;\n\n if (isSvgPointSymbol(symbol)) {\n size = getParameterValue(symbol.size as ClassifyAble<number>);\n }\n\n if (isH3GridSymbol(symbol)) {\n size = getParameterValue(symbol.cellSize as ClassifyAble<number>);\n }\n\n if (isTwoDimensionalSymbol(symbol)) {\n size = Math.max(\n getParameterValue(symbol.width as ClassifyAble<number>),\n getParameterValue(symbol.height as ClassifyAble<number>)\n );\n }\n\n if (isSizableSymbol(symbol)) {\n const strokeWidth = getSymbolStrokeWidth(symbol);\n\n size =\n getParameterValue(symbol.size as ClassifyAble<number>) +\n (strokeWidth ? getParameterValue(strokeWidth) + EXTRA_BORDER_SIZE : 0);\n }\n\n if (isPolylineSymbols(symbol)) {\n size = getParameterValue(\n getParameterFromSymbol(symbol, 'stroke.width')\n ) as number;\n }\n\n return Math.max(DEFAULT_LEGEND_SYMBOL_SIZE, size);\n};\n\nexport const serializeSvgPointSymbol = (symbol: SvgPointSymbol) => {\n if (!symbol) return null;\n\n const figureFillColor =\n ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\n const bgFillColor =\n ((symbol.background as SvgParameterDc)?.fillColor as string) || null;\n\n return {\n type: 'svgPointSymbol',\n size: symbol.size,\n offset: symbol.offset,\n angle: symbol.angle,\n ...(bgFillColor\n ? {\n background: {\n id: 'symbol-bg',\n fillColor: bgFillColor,\n strokeColor:\n ((symbol.background as SvgParameterDc)?.strokeColor as string) ||\n null,\n strokeWidth:\n (symbol.background as SvgParameterDc)?.strokeWidth || null,\n type:\n (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\n },\n }\n : {}),\n ...(figureFillColor\n ? {\n figure: {\n id: 'symbol-figure',\n fillColor: figureFillColor,\n strokeColor:\n ((symbol.figure as SvgParameterDc)?.strokeColor as string) ||\n null,\n strokeWidth:\n (symbol.figure as SvgParameterDc)?.strokeWidth || null, },\n }\n : {}),\n };\n};\n\nconst SIZE_PARAMETERS = ['size', 'height', 'strokeWidth', 'stroke.width'];\n\nexport const isSizeClassification = (parameter: string): boolean =>\n SIZE_PARAMETERS.includes(parameter);\n\nexport const getServiceConfiguration = (\n layer?: ServiceInfoDc\n): ServiceInfoDc['configuration'] => {\n const emptyServiceConfiguration: ServiceInfoDc['configuration'] = {\n name: '',\n };\n\n if (!isLayerService(layer) || !('configuration' in layer))\n return emptyServiceConfiguration;\n\n return {\n ...emptyServiceConfiguration,\n ...(layer.configuration || {}),\n };\n};\n\n/** default attribute name which use for geometry info */\nexport const GEOMETRY_ATTRIBUTE = 'geometry';\n\n/** default attribute name which contains unique id info */\nexport const DEFAULT_ID_ATTRIBUTE_NAME = 'gid';\n\nexport const getAttributesConfiguration = (\n layer: ServiceInfoDc\n): AttributesConfigurationDc => {\n const serviceConfiguration = getServiceConfiguration(layer);\n const emptyAttributesConfiguration: AttributesConfigurationDc = {\n geometryAttribute: GEOMETRY_ATTRIBUTE,\n idAttribute: DEFAULT_ID_ATTRIBUTE_NAME,\n tableName: '',\n };\n\n if (\n !serviceConfiguration ||\n !('attributesConfiguration' in serviceConfiguration)\n ) {\n return emptyAttributesConfiguration;\n }\n\n return {\n ...emptyAttributesConfiguration,\n ...((serviceConfiguration as PostgresLayerServiceConfigurationDc)\n .attributesConfiguration || {}),\n };\n};\n\nexport const getLayerDefinition = (\n layer?: FeatureLayerServiceInfoDc\n): LayerDefinitionDc => {\n const { geometryAttribute, idAttribute } = getAttributesConfiguration(\n layer as FeatureLayerServiceInfoDc\n );\n\n const emptyLayerDefinition: LayerDefinitionDc = {\n attributes: {},\n geometryAttribute: geometryAttribute as string,\n idAttribute,\n geometryType: GeometryType.Unknown,\n titleAttribute: '',\n };\n\n if (!isLayerService(layer) || !('layerDefinition' in layer)) {\n return emptyLayerDefinition;\n }\n\n return {\n ...emptyLayerDefinition,\n ...(layer.layerDefinition || {}),\n attributes:\n layer.layerDefinition.attributes || emptyLayerDefinition.attributes,\n };\n};\n\nexport function getAttributeType(\n layer: FeatureLayerServiceInfoDc,\n attributeName: string\n): AttributeType {\n const { attributes } = getLayerDefinition(layer);\n const attribute = attributes[attributeName];\n\n return attribute ? attribute.type : AttributeType.Unknown;\n}\n\nexport const getClassificationValue = (\n parameterValue: ParameterValueWithSymbol,\n title: string,\n condition: ClassificationCondition\n): ClassificationClass => ({\n parameterValue,\n title,\n ...(condition.isUnique()\n ? {\n uniqueValue: condition.uniqueValue,\n }\n : {\n from: condition.range[0],\n to: condition.range[1],\n }),\n});\n","import { useCallback, useMemo, useRef } from 'react';\nimport { SVG } from '@svgdotjs/svg.js';\nimport { Color } from '@evergis/color/es/Color';\n\nimport { DEFAULT_SYMBOL_OFFSET } from '../constants';\nimport { manipulateSvgSymbol } from '../../../utils/svg';\nimport { isSizeClassification } from '../../../utils/legend';\nimport { getOffsetParameterValue } from '../../../symbols';\nimport {\n getParameterValue,\n Offset,\n ParameterValue,\n SvgPointSymbol,\n} from '../../../core';\nimport { SvgEditorField, SvgSymbolBg } from '../types';\n\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean, isClassified?: boolean) => {\n const SVGWrapperRefElement = useRef<HTMLElement | null>(null);\n const SVGContainer = useMemo(() => SVG(), []);\n\n const initSvg = useCallback(() => {\n SVGContainer.addTo(SVGWrapperRefElement.current as HTMLElement);\n }, [SVGContainer]);\n\n const getSvgData = useCallback(() => SVGContainer.svg(), [SVGContainer]);\n\n const manipulateSvg = useCallback(\n ({\n svg,\n bg,\n newSymbol,\n isClassified,\n }: {\n svg: string;\n bg?: SvgSymbolBg;\n newSymbol?: SvgPointSymbol;\n isClassified?: boolean;\n }) => {\n manipulateSvgSymbol({\n SVGContainer,\n symbol: newSymbol || symbol,\n svg,\n bg,\n isClassified,\n });\n },\n [SVGContainer, symbol]\n );\n\n const getUpdatedSvgSymbol = useCallback(\n (field: keyof SvgEditorField, value: Color | number | string) => {\n const { data, offset } = symbol;\n const newValue = value instanceof Color ? value.toString('rgba') : value;\n\n const newSymbol = {\n ...JSON.parse(JSON.stringify(symbol)),\n offset: skipOffset\n ? DEFAULT_SYMBOL_OFFSET\n : isSizeClassification(field)\n ? getOffsetParameterValue(offset as Offset)\n : offset,\n };\n\n if (field.indexOf('.') !== -1) {\n const parts = field.split('.');\n\n if (newSymbol[parts[0]]?.[parts[1]]) {\n newSymbol[parts[0]][parts[1]] = newValue;\n } else {\n newSymbol[parts[0]] = {\n ...newSymbol[parts[0]],\n [parts[1]]: newValue,\n ...(parts[0] === 'background'\n ? { type: newSymbol.background.type, id: 'symbol-bg' }\n : parts[0] === 'figure'\n ? { id: 'symbol-figure' }\n : {}),\n };\n }\n } else {\n newSymbol[field] = newValue;\n }\n\n manipulateSvg({\n svg: getParameterValue(data as ParameterValue) as string,\n newSymbol,\n bg: newSymbol.background?.type,\n isClassified,\n });\n\n return { ...newSymbol, data: SVGContainer.svg() };\n },\n [SVGContainer, manipulateSvg, skipOffset, symbol]\n );\n\n return {\n svgRef: SVGWrapperRefElement,\n initSvg,\n getSvgData,\n manipulateSvg,\n getUpdatedSvgSymbol,\n };\n};\n","import React, { FC, memo, useCallback, useEffect, useMemo } from 'react';\nimport styled from 'styled-components';\nimport { SvgParameterDc, PointLabelSymbolDc } from '@evergis/api';\n\nimport { SymbolButton } from '../styled';\nimport { useSvgSymbol } from '../hooks/useSvgSymbol';\nimport { SvgPointSymbol } from '../../../core';\nimport { SvgSymbolProps } from '../types';\n\nconst SvgSymbolContainer = styled.div`\n position: relative;\n`;\n\nconst SvgSymbolLabel = styled.div<{ fontSettings?: PointLabelSymbolDc }>`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n color: #fff;\n ${({ fontSettings }) =>\n !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontSize &&\n `font-size: ${\n typeof fontSettings.fontSize === 'string'\n ? fontSettings.fontSize\n : `${fontSettings.fontSize}px`\n }`};\n ${({ fontSettings }) =>\n !!fontSettings?.haloColor &&\n !!fontSettings?.haloWidth &&\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\n line-height: 0;\n`;\n\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\n ({ svg, bg, symbol, title, text, fontSettings, skipOffset, isClassified, onClick }) => {\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(\n symbol,\n skipOffset,\n isClassified,\n );\n\n const onSelectSymbol = useCallback(() => {\n onClick?.(getSvgData(), {\n ...symbol,\n ...(bg\n ? {\n background: {\n ...(symbol.background as SvgParameterDc),\n type: bg,\n },\n }\n : {}),\n } as SvgPointSymbol);\n }, [bg, getSvgData, onClick, symbol]);\n\n const renderSymbol = useMemo(\n () => (\n <SymbolButton\n ref={svgRef}\n title={title}\n onClick={onClick ? onSelectSymbol : undefined}\n />\n ),\n [svgRef, title, onClick, onSelectSymbol]\n );\n\n useEffect(() => {\n initSvg();\n }, [initSvg]);\n\n useEffect(() => {\n manipulateSvg({ svg, bg, newSymbol: symbol, isClassified });\n }, [svg, symbol, bg, manipulateSvg, isClassified]);\n\n return text ? (\n <SvgSymbolContainer>\n {renderSymbol}\n <SvgSymbolLabel fontSettings={fontSettings}>{text}</SvgSymbolLabel>\n {!!fontSettings?.haloColor && !!fontSettings?.haloWidth && (\n <SvgSymbolLabel\n fontSettings={{\n ...fontSettings,\n haloColor: undefined,\n haloWidth: undefined,\n }}\n >\n {text}\n </SvgSymbolLabel>\n )}\n </SvgSymbolContainer>\n ) : (\n renderSymbol\n );\n }\n);\n","import React, { FC } from 'react';\nimport {\n CalculatedParameterDc,\n ClusterSymbolDc,\n ParameterDcColor,\n} from '@evergis/api';\n\nimport { SvgSymbol } from './SvgSymbol';\nimport { DEFAULT_CLUSTER_SVG } from '../constants';\nimport {\n isParameterByAttribute,\n ParameterByAttribute,\n SvgPointSymbol,\n} from '../../../core';\n\nexport const ClusterSymbolPreview: FC<{\n symbol: ClusterSymbolDc;\n index?: number;\n size?: number;\n fontSize?: string;\n}> = ({ symbol, index, size = 56, fontSize = '1.25rem' }) => {\n const isClassified = isParameterByAttribute(\n symbol.fillColor as ParameterDcColor\n );\n const isClassifiedValue = isClassified && index !== undefined;\n\n const fillColor =\n isClassifiedValue\n ? (symbol.fillColor as ParameterByAttribute<string>).values[index as number]\n ?.value ||\n (symbol.fillColor as ParameterByAttribute<string>).defaultValue\n : symbol.fillColor;\n\n const strokeColor = isClassified ? fillColor : symbol.strokeColor;\n\n const svgSymbol = {\n type: 'svgPointSymbol',\n size,\n offset: [0, 0],\n angle: 0,\n background: {\n id: 'symbol-bg',\n fillColor,\n strokeColor,\n strokeWidth: 6,\n type: 'circle',\n },\n };\n\n return (\n <SvgSymbol\n svg={DEFAULT_CLUSTER_SVG}\n symbol={(svgSymbol as unknown) as SvgPointSymbol}\n isClassified={isClassified}\n text={'99'}\n fontSettings={{\n ...symbol.labelSymbol,\n fontSize:\n (fontSize as CalculatedParameterDc) || symbol.labelSymbol?.fontSize,\n }}\n />\n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { SvgSymbol } from './SvgSymbol';\nimport { Symbol, SGisSymbolType } from '../../../';\nimport { serializeSvgPointSymbol } from '../../../utils/legend';\nimport { SGisSymbol } from '../types';\nimport { SvgPointSymbol } from '../../../core';\n\nexport const SymbolByType: FC<{\n symbol?: SGisSymbol;\n size?: number;\n type?: string;\n svg?: string;\n skipOffset?: boolean;\n}> = ({ type, symbol, size, svg, skipOffset }) => {\n const defaultSymbol = useMemo(() => (\n <Symbol symbol={symbol as SGisSymbolType} size={size} />\n ), [symbol, size]);\n\n switch (type) {\n case 'svgPointSymbol':\n return svg ? (\n <SvgSymbol\n svg={svg}\n size={size}\n skipOffset={skipOffset}\n symbol={serializeSvgPointSymbol(symbol as SvgPointSymbol) as unknown as SvgPointSymbol}\n />\n ) : (\n defaultSymbol\n );\n default:\n return defaultSymbol;\n }\n};\n","import React, { FC, memo } from 'react';\nimport { ClusterSymbolDc } from '@evergis/api';\n\nimport { SymbolByType } from './SymbolByType';\nimport { ClusterSymbolPreview } from './ClusterSymbolPreview';\nimport { ClusterLegendContainer } from '../styled';\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from '../constants';\nimport { getLegendSymbolSize } from '../../../utils/legend';\nimport { deserializeSymbol } from '../../../symbols';\nimport {\n getParameterValue,\n isClusterSymbol,\n ParameterValue,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../../../core';\nimport { SGisSymbol } from '../types';\n\nexport const LegendSymbolRenderer: FC<{\n symbol: StyleSymbolType;\n index?: number;\n}> = memo(({ symbol, index }) => {\n if (isClusterSymbol(symbol)) {\n return (\n <ClusterLegendContainer>\n <ClusterSymbolPreview\n symbol={symbol as ClusterSymbolDc}\n index={index}\n />\n </ClusterLegendContainer>\n );\n }\n\n return (\n <SymbolByType\n symbol={deserializeSymbol(symbol) as SGisSymbol}\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\n type={symbol.type}\n svg={\n getParameterValue(\n (symbol as SvgPointSymbol).data as ParameterValue\n ) as string\n }\n skipOffset\n />\n );\n});\n","import React, { FC } from \"react\";\nimport { EverCloudClassificationIcon, EverCloudRefreshIcon, IconButton } from \"@evergis/icons\";\n\nimport { LegendHeaderButton } from \"../styled\";\nimport { LegendProps } from \"../types\";\n\ntype LegendHeaderButtonsProps = Pick<LegendProps, 'clearHiddenLegends' | 'goToClassification'> & {\n layerName: string;\n hasHiddenLegends?: boolean;\n};\n\nexport const LegendHeaderButtons: FC<LegendHeaderButtonsProps> = ({ layerName, hasHiddenLegends, clearHiddenLegends, goToClassification }) => (\n <>\n {!!goToClassification && (\n <LegendHeaderButton>\n <IconButton onClick={goToClassification}>\n <EverCloudClassificationIcon />\n </IconButton>\n </LegendHeaderButton>\n )}\n {!!clearHiddenLegends && (\n <LegendHeaderButton>\n <IconButton\n disabled={!hasHiddenLegends}\n onClick={() => clearHiddenLegends?.(layerName)}\n >\n <EverCloudRefreshIcon />\n </IconButton>\n </LegendHeaderButton>\n )}\n </>\n);\n","import { AttributeType } from '@evergis/api';\n\nimport { getAttributeNameFromCondition, LayerAttribute } from '../../../core';\n\nexport const getConditionAttribute = (\n attributes: LayerAttribute[],\n condition?: string\n): LayerAttribute | null => {\n if (!condition) return null;\n\n const attributeName = getAttributeNameFromCondition(condition) as string;\n\n let attribute: LayerAttribute = attributes.find(\n ({ name }) => name === attributeName\n ) as LayerAttribute;\n\n if (!attribute) {\n if (attributeName === 'count') {\n attribute = {\n name: 'count',\n alias: 'Количество',\n type: AttributeType.Int32,\n };\n } else {\n return null;\n }\n }\n\n return attribute;\n};\n","export const isHiddenLegend = (\n hiddenCondition: string,\n hiddenLegends?: string[]\n): boolean => !!hiddenLegends?.includes(hiddenCondition);\n","import React, { Fragment } from 'react';\n\nimport { ItemSeparator, ItemText, MapLegendDescription } from '../styled';\nimport { i18n } from \"../../../i18n\";\n\nconst renderColumn = (column: string, index?: number) => {\n const dateTime = column.split(' ');\n\n return (\n <Fragment key={index}>\n <ItemText title={column}>\n {dateTime[0]}\n <MapLegendDescription>{dateTime[1]}</MapLegendDescription>\n </ItemText>\n {index === 0 && <ItemSeparator />}\n </Fragment>\n );\n};\n\nexport const getLegendText = ({\n title,\n index,\n isDate,\n}: {\n title?: string;\n index: number;\n isDate: boolean;\n}) => {\n if (!title) {\n return <ItemText>{i18n.t(\"other\", { ns: \"style\" })}</ItemText>;\n }\n\n const columns = title?.split(' - ');\n const isSingleColumn = columns?.length === 1;\n\n if (!isDate || (index && isSingleColumn)) {\n return <ItemText title={title}>{title}</ItemText>;\n }\n\n if (!index && isSingleColumn) {\n return (\n <>\n <ItemText title=\"∞\">∞</ItemText>\n <ItemSeparator />\n {renderColumn(title)}\n </>\n );\n }\n\n return <>{columns.map(renderColumn)}</>;\n};\n","import React, { FC } from 'react';\n\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\nimport { ClassifiedItem, MapLegendContainer, SymbolContainer } from '../styled';\nimport {\n createHiddenCondition,\n createValueTitleFromCondition,\n getClassificationValue,\n getTitleFromCondition,\n isRangeCondition,\n} from '../../../utils/legend';\nimport { getConditionAttribute } from '../utils/getConditionAttribute';\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\nimport { getLegendText } from '../utils/getLegendText';\nimport { getLayerAttributes } from '../../../core/attributes/utils';\nimport { LegendChildrenProps } from '../types';\nimport {\n ClassificationCondition,\n ParameterByAttributeValue,\n ParameterValueWithSymbol,\n StyleSymbolType,\n} from '../../../core';\n\nexport const LegendChildren: FC<LegendChildrenProps> = ({\n layerInfo,\n hiddenLegends,\n toggleHiddenLegend,\n clearHiddenLegends,\n formatValue,\n}) => {\n if (!layerInfo?.style?.children?.length) return null;\n\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\n\n return (\n <MapLegendContainer>\n {layerInfo.style.children.map((paramValue, index) => {\n const attribute = getConditionAttribute(\n attributes,\n paramValue.condition\n );\n\n if (!attribute) return null;\n\n const hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.symbol as StyleSymbolType,\n paramValue.title as string,\n new ClassificationCondition(paramValue.condition as string)\n )\n ) as string;\n\n const legendText = getLegendText({\n title: isRangeCondition(paramValue.condition)\n ? createValueTitleFromCondition(\n paramValue as ParameterByAttributeValue<\n ParameterValueWithSymbol\n >,\n attribute,\n formatValue,\n index\n )\n : getTitleFromCondition({\n condition: paramValue.condition,\n attribute,\n formatValue,\n }),\n index,\n isDate:\n getConditionAttribute(attributes, paramValue.condition)?.type ===\n 'DateTime',\n });\n\n return (\n <ClassifiedItem\n key={index}\n isHidden={isHiddenLegend(\n hiddenCondition,\n hiddenLegends?.[layerInfo.name]\n )}\n onClick={() =>\n toggleHiddenLegend?.(layerInfo.name, hiddenCondition)\n }\n >\n <SymbolContainer>\n <LegendSymbolRenderer\n symbol={paramValue.symbol as StyleSymbolType}\n />\n </SymbolContainer>\n {legendText}\n <LegendHeaderButtons layerName={layerInfo.name} clearHiddenLegends={clearHiddenLegends} />\n </ClassifiedItem>\n );\n })}\n </MapLegendContainer>\n );\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { MapLegendBadge, MapLegendDescriptionContainer } from \"../styled\";\nimport { isParameterType } from \"../../../utils/isParameterType\";\nimport { ClassificationParameterExtended } from \"../../../core\";\n\nexport const LegendParameterDescription: FC<{\n parameter: ClassificationParameterExtended;\n index?: number;\n}> = ({ parameter, index }) => {\n const { t } = useTranslation(\"style\");\n const isSize = isParameterType(\"size\", parameter);\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\n\n return (\n <MapLegendDescriptionContainer>\n {isStrokeWidth || isStrokeColor\n ? (isStrokeWidth ? t(\"strokeWidth\") : t(\"strokeColor\"))\n : isSize ? t(\"symbolSize\") : t(\"symbolColor\")}\n {!!index && <MapLegendBadge>{index}</MapLegendBadge>}\n </MapLegendDescriptionContainer>\n );\n};\n","import React, { FC, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { isNumeric } from \"../../../utils/isNumeric\";\nimport { isParameterType } from \"../../../utils/isParameterType\";\nimport {\n MapLegendItem,\n MapLegendItems,\n MapLegendItemsContainer,\n MapLegendOther,\n MapLegendValueDescr,\n MapLegendValues,\n MapLegendValuesOther,\n MapLegendValuesRange,\n MinimizedLegendContainer,\n SizeMinimizedLegend,\n SizeMinimizedLegendDown,\n SizeMinimizedLegendLabel,\n SizeMinimizedLegendSymbol,\n SizeMinimizedLegendUp\n} from \"../styled\";\nimport { MinimizedLegendProps } from \"../types\";\n\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\n if (title.includes(\" - \")) {\n const result = title?.split(\" - \");\n\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\n }\n\n if (title.includes(\",\")) {\n const result = title?.split(\",\");\n\n return result.join(\", \");\n }\n\n return title.split(\" \").find(isNumeric) || title || \"\";\n};\n\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\n innerRef,\n isShown,\n values,\n title,\n parameter,\n hiddenLegends,\n}) => {\n const { t } = useTranslation(\"style\");\n const currentValues = [...values];\n const other = currentValues.pop();\n const isSize = isParameterType(\"size\", parameter);\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\n\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\n : false, [hiddenLegends]);\n\n return (\n <MinimizedLegendContainer ref={innerRef} isShown={isShown}>\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\n {isSize ? (\n <>\n <SizeMinimizedLegend>\n <SizeMinimizedLegendSymbol>\n <MapLegendItems parameter={parameter} isSize>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n />\n ))}\n </MapLegendItems>\n </SizeMinimizedLegendSymbol>\n <SizeMinimizedLegendLabel>\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\n </SizeMinimizedLegendLabel>\n </SizeMinimizedLegend>\n <SizeMinimizedLegend>\n <SizeMinimizedLegendSymbol>\n <MapLegendItems parameter={parameter} isSize>\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n />\n </MapLegendItems>\n </SizeMinimizedLegendSymbol>\n <SizeMinimizedLegendLabel>\n <SizeMinimizedLegendUp>{t(\"other\")}</SizeMinimizedLegendUp>\n </SizeMinimizedLegendLabel>\n </SizeMinimizedLegend>\n </>\n ) : isStrokeWidth ? (\n <MapLegendItems parameter={parameter} isStrokeWidth>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n >\n {(!index || index === currentValues.length - 1) && value.title}\n </MapLegendItem>\n ))}\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n >\n {t(\"other\")}\n </MapLegendOther>\n </MapLegendItems>\n ) : (\n <MapLegendItems parameter={parameter}>\n <MapLegendItemsContainer>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n />\n ))}\n </MapLegendItemsContainer>\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n />\n </MapLegendItems>\n )}\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\n <MapLegendValues>\n <MapLegendValuesRange>\n <div>{titleMax}</div>\n <div>{titleMin}</div>\n </MapLegendValuesRange>\n <MapLegendValuesOther>-</MapLegendValuesOther>\n </MapLegendValues>\n )}\n </MinimizedLegendContainer>\n )\n}\n","import React, { FC, useCallback, useMemo } from 'react';\nimport get from 'lodash/get';\n\nimport {\n ClassifiedItem,\n MapLegendItem,\n MapLegendItems,\n MaximizedLegendContainer,\n SymbolContainer,\n} from '../styled';\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\nimport { isParameterType } from '../../../utils/isParameterType';\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\nimport { getLegendText } from '../utils/getLegendText';\nimport {\n ClassificationParameterExtended,\n getExtractedSymbol,\n getParameterValue,\n isClusterFillColor as isClusterFillColorAction,\n ParameterByAttribute,\n ParameterValue,\n StyleSymbolType,\n} from '../../../core';\nimport { MaximizedLegendProps } from '../types';\n\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\n innerRef,\n isShown,\n layerName,\n symbol: sectionSymbol,\n parameter,\n values,\n index: sectionIndex,\n attributeType,\n hiddenLegends,\n toggleHiddenLegend,\n}) => {\n const isDate = attributeType === 'DateTime';\n const isSize = isParameterType(\n 'size',\n parameter as ClassificationParameterExtended\n );\n const isStrokeWidth = isParameterType(\n ['strokeWidth', 'stroke.width'],\n parameter as ClassificationParameterExtended\n );\n const isStrokeColor = isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n );\n\n const parameterValue = useMemo(\n () =>\n (get(sectionSymbol, parameter) as unknown) as ParameterByAttribute<\n ParameterValue\n >,\n [sectionSymbol, parameter]\n );\n\n const renderLegend = useCallback(\n ({ symbol, title, hiddenCondition }, index: number) => {\n if (!symbol) return null;\n\n const isClusterFillColor = isClusterFillColorAction(symbol, parameter);\n const value = (getParameterValue(\n parameterValue?.values[index]?.value) || parameterValue?.defaultValue\n ) as string | number;\n\n return (\n <ClassifiedItem\n key={sectionIndex + title + index}\n isHidden={isHiddenLegend(hiddenCondition, hiddenLegends)}\n isClusterFillColor={isClusterFillColor}\n onClick={() => toggleHiddenLegend?.(layerName, hiddenCondition)}\n >\n {isSize || isStrokeWidth || isStrokeColor ? (\n <MapLegendItems\n parameter={parameter as ClassificationParameterExtended}\n isSize={isSize}\n isStrokeWidth={isStrokeWidth}\n isStrokeColor={isStrokeColor}\n isSingle\n >\n <MapLegendItem\n key={`${title}${index}`}\n title={title}\n value={value}\n parameter={parameter as ClassificationParameterExtended}\n />\n </MapLegendItems>\n ) : (\n <SymbolContainer>\n <LegendSymbolRenderer\n index={index}\n symbol={\n isClusterFillColor ? sectionSymbol as StyleSymbolType : getExtractedSymbol(symbol, true)\n }\n />\n </SymbolContainer>\n )}\n {getLegendText({ title, index, isDate })}\n </ClassifiedItem>\n );\n },\n [\n parameter,\n sectionIndex,\n hiddenLegends,\n isSize,\n isStrokeWidth,\n isStrokeColor,\n parameterValue,\n sectionSymbol,\n isDate,\n toggleHiddenLegend,\n layerName,\n ]\n );\n\n return (\n <MaximizedLegendContainer ref={innerRef} isShown={isShown}>\n {values.map(renderLegend)}\n </MaximizedLegendContainer>\n );\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\nimport { CombinedPolylineSymbolDc, StyleDc } from \"@evergis/api\";\n\nimport { MinimizedLegend } from './MinimizedLegend';\nimport { MaximizedLegend } from './MaximizedLegend';\nimport { LegendParameterDescription } from './LegendParameterDescription';\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\nimport {\n MapLegendExpandButton,\n MapLegendHeader,\n MapLegendSectionContainer,\n MapLegendSectionItems,\n} from '../styled';\nimport {\n getMaximizedLegendValues,\n getMinimizedLegendValues,\n} from '../../../utils/legend';\nimport { isCombinedPolylineSymbol } from \"../../../core\";\nimport { useNode, useToggle } from '../../../hooks';\nimport { LegendSectionProps } from '../types';\n\nexport const LegendSection: FC<LegendSectionProps> = ({\n layerName,\n symbol,\n parameter,\n parameters,\n classified,\n hiddenLegends,\n toggleHiddenLegend,\n clearHiddenLegends,\n goToClassification,\n attribute,\n formatValue,\n index,\n count,\n}) => {\n const { t } = useTranslation(\"style\");\n const [isExpanded, toggleExpanded] = useToggle();\n const [maxRef, maxNode] = useNode();\n const [minRef, minNode] = useNode();\n\n if (!layerName || !attribute) return null;\n\n const currentSymbol = isCombinedPolylineSymbol(symbol as CombinedPolylineSymbolDc)\n ? (symbol as CombinedPolylineSymbol).values[index] as StyleDc['symbol'] : symbol;\n\n return (\n <MapLegendSectionContainer hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}>\n <MapLegendHeader>\n {attribute.alias || attribute.name}\n <LegendHeaderButtons\n layerName={layerName}\n hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}\n clearHiddenLegends={clearHiddenLegends}\n goToClassification={goToClassification}\n />\n </MapLegendHeader>\n <LegendParameterDescription\n parameter={parameter}\n index={count && index !== undefined ? count - index : 0}\n />\n <MapLegendSectionItems\n minHeight={minNode?.offsetHeight}\n maxHeight={maxNode?.offsetHeight}\n isExpanded={isExpanded}\n >\n <MaximizedLegend\n innerRef={maxRef}\n isShown={isExpanded}\n layerName={layerName}\n symbol={currentSymbol}\n hiddenLegends={hiddenLegends?.[layerName]}\n toggleHiddenLegend={toggleHiddenLegend}\n parameter={parameter}\n attributeType={attribute.type}\n index={index}\n values={getMaximizedLegendValues(\n attribute,\n parameter,\n parameters,\n classified,\n currentSymbol,\n formatValue,\n index,\n t(\"other\")\n )}\n />\n <MinimizedLegend\n innerRef={minRef}\n isShown={!isExpanded}\n hiddenLegends={hiddenLegends?.[layerName]}\n parameter={parameter}\n values={getMinimizedLegendValues(\n attribute,\n classified,\n formatValue,\n index,\n t(\"other\")\n )}\n />\n </MapLegendSectionItems>\n <MapLegendExpandButton onClick={toggleExpanded}>\n {isExpanded ? t('hide') : t('show')}\n </MapLegendExpandButton>\n </MapLegendSectionContainer>\n );\n};\n","import React, { FC, memo, useMemo } from 'react';\n\nimport { LegendSection, LegendChildren } from './components';\nimport { MapLegendContainer } from './styled';\nimport { SYMBOL_CLASSIFICATION } from './constants';\nimport { getLayerAttributes } from '../../core/attributes/utils';\nimport { getConditionAttribute } from './utils/getConditionAttribute';\nimport { ClassifiedList, ClassifiedListItem, classifyParamsReduce, getClassified } from '../../utils/legend';\nimport { ClassificationParameterExtended, isCombinedPolylineSymbol } from '../../core';\nimport { ClassifyParameter, LegendProps } from './types';\n\nexport const Legend: FC<LegendProps> = memo(\n ({ layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification, ...rest }) => {\n if (!layerInfo) return null;\n\n if (layerInfo.style?.children?.length) {\n return (\n <LegendChildren\n layerInfo={layerInfo}\n formatValue={formatValue}\n hiddenLegends={hiddenLegends}\n toggleHiddenLegend={toggleHiddenLegend}\n clearHiddenLegends={clearHiddenLegends}\n goToClassification={goToClassification}\n />\n );\n }\n\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\n\n const renderItems = useMemo(() => {\n const parameters = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\n const props = {\n layerName: layerInfo.name,\n symbol: layerInfo.style?.symbol,\n parameters: parameters as ClassificationParameterExtended[],\n formatValue: formatValue,\n hiddenLegends: hiddenLegends,\n toggleHiddenLegend: toggleHiddenLegend,\n clearHiddenLegends: clearHiddenLegends,\n goToClassification: goToClassification,\n };\n\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\n const values = layerInfo.style?.symbol?.values?.reduce((result, symbol, index) => {\n return [classifyParamsReduce(symbol, parameters as ClassifyParameter[], index) as ClassifiedList, ...result];\n }, [] as ClassifiedList[]);\n\n return (\n <>\n {values?.map((value, index) => Object.keys(value).map((param, keyIndex) => {\n const item = value[param as ClassifyParameter] as ClassifiedListItem;\n\n return (\n <LegendSection\n key={[keyIndex, index].join(\"-\")}\n index={item?.index as number}\n count={values?.length}\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\n parameter={param as ClassificationParameterExtended}\n classified={item}\n {...props}\n {...rest}\n />\n );\n }))}\n </>\n );\n }\n\n const classified = getClassified(layerInfo);\n\n if (!classified) return null;\n\n return (\n <>\n {Object.keys(classified).map((param, keyIndex) => {\n const item = classified[param as keyof ClassifiedList] as ClassifiedListItem;\n\n return (\n <LegendSection\n key={[keyIndex, item.index].join(\"-\")}\n index={item.index as number}\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\n parameter={param as ClassificationParameterExtended}\n classified={item}\n {...props}\n {...rest}\n />\n );\n })}\n </>\n );\n }, [layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification]);\n\n return (\n <MapLegendContainer>\n {renderItems}\n </MapLegendContainer>\n );\n }\n);\n","import React, { CSSProperties, PropsWithChildren, useCallback } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMapContext } from '../../contexts';\n\nimport {\n MapState,\n shouldUpdateMapState,\n useMapBboxChange,\n useMapWrapper,\n useMaxMinScale,\n useUpdateMapView,\n} from '../../hooks';\n\nexport type MapProps = PropsWithChildren<{\n className?: string;\n position?: Coordinates;\n resolution?: number;\n minScale?: number;\n maxScale?: number;\n style?: CSSProperties;\n onBboxChange?: (mapState: MapState) => void;\n}>;\n\nexport const Map: React.FC<MapProps> = ({\n className,\n position,\n resolution,\n minScale,\n maxScale,\n children,\n onBboxChange,\n style,\n}) => {\n const wrapperRef = useMapWrapper();\n const { map } = useMapContext();\n\n const handleBboxChange = useCallback(\n (state: MapState) => {\n if (onBboxChange && shouldUpdateMapState(map, { position, resolution })) {\n onBboxChange(state);\n }\n },\n [map, onBboxChange, position, resolution]\n );\n\n useUpdateMapView({ position, resolution });\n useMaxMinScale(minScale, maxScale, position, resolution);\n\n useMapBboxChange(handleBboxChange);\n\n return (\n <div className={className} ref={wrapperRef} style={style}>\n {children}\n </div>\n );\n};\n","import { formatLength, formatPolygonMeasure } from '../core';\n\nexport interface MeasureToolFormatters {\n polygon: typeof formatPolygonMeasure;\n length: typeof formatLength;\n}\n\nexport const DEFAULT_FORMATTERS: MeasureToolFormatters = {\n polygon: formatPolygonMeasure,\n length: formatLength,\n};\n","import { PolylineControl } from '@evergis/sgis/es/controls/PolylineControl';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { PolyControlParams } from '@evergis/sgis/es/controls/PolyControl';\nimport { sGisMouseMoveEvent } from '@evergis/sgis/es/commonEvents';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\nimport { geo } from '@evergis/sgis/es/Crs';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport {\n ChangeEvent,\n DrawingFinishEvent,\n} from '@evergis/sgis/es/controls/Control';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { isPolylineLikePolygon } from '../core';\n\nimport {\n createLabelSymbol,\n measureAreaSymbol,\n ShadowedPolySymbol,\n} from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolCreatorParams extends PolyControlParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n areaSymbol?: ShadowedPolySymbol;\n}\n\nconst COORD_FRACTION = 6;\nconst DEFAULT_LABEL_POSITION: [number, number] = [Infinity, Infinity];\n\nexport class BaseMeasureToolCreator extends PolylineControl {\n private tempLabel?: LabelFeature;\n private coordLabel?: LabelFeature;\n private measureResultLabel?: LabelFeature;\n private tempPolygon?: Poly;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n areaSymbol?: ShadowedPolySymbol;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolCreatorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.areaSymbol = params.areaSymbol;\n this.on('pointAdd', this.handlePointAdd);\n // @ts-ignore\n this.on('change', this.updateDistance);\n }\n\n protected _handleMousemove(event: sGisMouseMoveEvent): void {\n super._handleMousemove(event);\n this.drawPointOnMouseMove(event);\n }\n\n protected _activate(): void {\n super._activate();\n this.addTempLabel();\n this.setCursor('pointer');\n }\n\n protected _deactivate(): void {\n super._deactivate();\n this.removeCoordLabel();\n this.removeTempLabel();\n this.removeMeasureLabel();\n this.removeTempPolygon();\n this.setCursor('default');\n }\n\n private handlePointAdd() {\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs }: Polyline = feature;\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.finishDrawing();\n this.fire(new DrawingFinishEvent(feature, new MouseEvent('mouseup')));\n\n return;\n }\n\n if (rings[0].length === 2) {\n const projection = crs.projectionTo(geo);\n const point = rings[0][0];\n if (!projection) return;\n const [lat, long] = projection(point);\n\n this.removeTempLabel();\n this.addMeasureResultLabel();\n this.addCoordLabel(\n `${lat.toFixed(COORD_FRACTION)}, ${long.toFixed(COORD_FRACTION)}`,\n point\n );\n } else {\n this.removeCoordLabel();\n }\n }\n\n private polygonPreview() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n }\n\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs } = feature;\n const polygonRings = [...rings[0]];\n\n polygonRings.shift();\n this.tempPolygon = new Polygon(polygonRings, { crs });\n this.tempPolygon.symbol = this.areaSymbol || measureAreaSymbol;\n\n this.activeFeature && this.activeFeature.hide();\n this._tempLayer && this._tempLayer.add(this.tempPolygon);\n }\n\n private removeTempPolygon() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n delete this.tempPolygon;\n }\n }\n\n private updateDistance(event: ChangeEvent) {\n const feature = this.activeFeature;\n const { ringIndex, pointIndex } = event;\n\n if (!feature || ringIndex === null || pointIndex === null) return;\n\n const { rings, crs } = feature;\n\n const position = rings[ringIndex][pointIndex];\n const length = calcLength(rings, crs);\n let content = this.formatters.length(length);\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.polygonPreview();\n\n const area = calcArea(rings, crs);\n\n content = this.formatters.polygon(area, length);\n } else if (this.tempPolygon) {\n feature.show();\n this.removeTempPolygon();\n }\n\n if (this.measureResultLabel) {\n this.measureResultLabel.position = position;\n this.measureResultLabel.content = content;\n }\n }\n\n private addTempLabel() {\n this.tempLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n content: 'Нажмите на карту, чтобы начать измерение',\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.tempLabel);\n }\n\n private addCoordLabel(content: string, position: Coordinates) {\n this.coordLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n onClose: this.cancel,\n }),\n });\n this._tempLayer && this.coordLabel && this._tempLayer.add(this.coordLabel);\n }\n\n private addMeasureResultLabel() {\n this.measureResultLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer &&\n this.measureResultLabel &&\n this._tempLayer.add(this.measureResultLabel);\n }\n\n private removeTempLabel() {\n if (this.tempLabel) {\n this._tempLayer && this._tempLayer.remove(this.tempLabel);\n delete this.tempLabel;\n }\n }\n\n private removeCoordLabel() {\n if (this.coordLabel) {\n this._tempLayer && this._tempLayer.remove(this.coordLabel);\n delete this.coordLabel;\n }\n }\n\n private removeMeasureLabel() {\n if (this.measureResultLabel) {\n this._tempLayer && this._tempLayer.remove(this.measureResultLabel);\n delete this.measureResultLabel;\n }\n }\n\n private drawPointOnMouseMove(event: sGisMouseMoveEvent) {\n if (this.tempLabel) {\n this.tempLabel.position = event.point.position;\n }\n }\n\n private setCursor(cursor: 'pointer' | 'default') {\n const { wrapper } = this.painter;\n\n if (wrapper && typeof wrapper !== 'string') {\n wrapper.style.cursor = cursor;\n }\n }\n\n private cancel = () => {\n this.fire('cancel');\n };\n}\n","import { PolyEditor } from '@evergis/sgis/es/controls/PolyEditor';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { ControlWithSymbolParams } from '@evergis/sgis/es/controls/Control';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { createLabelSymbol } from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolEditorParams extends ControlWithSymbolParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n}\n\nexport class BaseMeasureToolEditor extends PolyEditor {\n private measureResultLabel?: LabelFeature;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolEditorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.on('change', this.updateMeasureResult);\n this.on('edit', this.updateMeasureResult);\n }\n\n protected _activate(): void {\n super._activate();\n this.addMeasureResultLabel();\n }\n\n private measureResult = () => {\n const feature = this.activeFeature;\n\n if (!feature) return null;\n\n const { rings, isEnclosed, crs } = feature;\n const pointsCount = rings[0].length;\n const position = rings[0][pointsCount - 1];\n\n const area = calcArea(rings, crs);\n const length = calcLength(rings, crs, isEnclosed);\n const content = isEnclosed\n ? this.formatters.polygon(area, length)\n : this.formatters.length(length);\n\n return {\n content,\n position,\n };\n };\n\n private addMeasureResultLabel() {\n const measureResult = this.measureResult();\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n onClose: this.removeFeature,\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.measureResultLabel);\n }\n\n updateMeasureResult() {\n if (this.measureResultLabel) {\n const measureResult = this.measureResult();\n\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel.content = content;\n this.measureResultLabel.position = position;\n }\n }\n\n private removeFeature = () => {\n this.fire('remove');\n };\n}\n","import React from 'react';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\nimport { DrawingFinishEvent } from '@evergis/sgis/es/controls/Control';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\n\nimport { renderLabelSymbolType, MeasureProps } from './Measurer';\n\nimport { BaseMeasureToolCreator, BaseMeasureToolEditor } from '../../controls';\n\nimport { isPolylineLikePolygon } from '../../core';\n\nimport {\n measureAreaSymbol,\n measureLengthSymbol,\n measurePolygonSnapSymbol,\n} from '../../symbols';\n\ninterface MeasureToolProps extends Omit<MeasureProps, 'isActive'> {\n map: SMap;\n painter: DomPainter;\n}\n\nexport class MeasureTool extends React.Component<MeasureToolProps> {\n layer?: FeatureLayer;\n createControl?: BaseMeasureToolCreator;\n editorControl?: BaseMeasureToolEditor;\n\n componentDidMount(): void {\n const { map, painter, renderLabelSymbol } = this.props;\n\n this.layer = new FeatureLayer();\n this.initCreateMode(map, painter, renderLabelSymbol);\n this.initEditMode(map, painter, renderLabelSymbol);\n\n this.props.map.addLayer(this.layer);\n this.switchMode(true, false);\n }\n\n componentWillUnmount(): void {\n this.layer && this.props.map.removeLayer(this.layer);\n this.switchMode(false, false);\n this.offEvents();\n this.clearProperties();\n }\n\n initCreateMode(\n map: SMap,\n painter: DomPainter,\n renderLabelSymbol: renderLabelSymbolType\n ): void {\n const { lengthSymbol, formatters, areaSymbol } = this.props;\n\n this.createControl = new BaseMeasureToolCreator(map, painter, {\n isActive: false,\n useTempLayer: true,\n symbol: lengthSymbol || measureLengthSymbol,\n areaSymbol,\n dblClickMinTime: 300,\n renderLabelSymbol,\n formatters: formatters,\n });\n // @ts-ignore\n this.createControl.on('drawingFinish', this.createFeature);\n this.createControl.on('cancel', this.cancelFeatureCreation);\n }\n\n initEditMode(\n map: SMap,\n painter: DomPainter,\n renderLabelSymbol: renderLabelSymbolType\n ): void {\n const { lengthSymbol, snapSymbol, formatters } = this.props;\n\n this.editorControl = new BaseMeasureToolEditor(map, painter, {\n isActive: false,\n activeLayer: this.layer,\n snappingSymbol: snapSymbol || measurePolygonSnapSymbol,\n symbol: lengthSymbol || measureLengthSymbol,\n renderLabelSymbol,\n formatters,\n });\n this.editorControl.featureDragAllowed = false;\n this.editorControl.on('remove', this.removeFeature);\n }\n\n componentDidUpdate({ formatters }: MeasureToolProps) {\n const { formatters: currentFormatters } = this.props;\n\n if (currentFormatters !== formatters && currentFormatters)\n if (this.editorControl) {\n this.editorControl.formatters = currentFormatters;\n this.editorControl.updateMeasureResult();\n }\n }\n\n offEvents(): void {\n if (this.createControl) {\n // @ts-ignore\n this.createControl.off('drawingFinish', this.createFeature);\n }\n\n this.editorControl && this.editorControl.off('remove', this.removeFeature);\n this.createControl &&\n this.createControl.off('cancel', this.cancelFeatureCreation);\n }\n\n clearProperties(): void {\n delete this.createControl;\n delete this.editorControl;\n delete this.layer;\n }\n\n switchMode(create: boolean, edit: boolean): void {\n if (this.createControl) {\n this.createControl.isActive = create;\n }\n\n if (this.editorControl) {\n this.editorControl.isActive = edit;\n }\n }\n\n getFeature(rings: [number, number][][]): Feature | Feature[] {\n const { lengthSymbol, areaSymbol, map } = this.props;\n let feature;\n\n if (isPolylineLikePolygon(rings, map.resolution)) {\n rings[0].shift();\n feature = new Polygon(rings, { crs: map.crs });\n feature.symbol = areaSymbol || measureAreaSymbol;\n } else {\n feature = new Polyline(rings, { crs: map.crs });\n feature.symbol = lengthSymbol || measureLengthSymbol;\n }\n\n return feature;\n }\n\n createFeature = (event: DrawingFinishEvent<Polyline>): void => {\n const feature = this.getFeature([...event.feature.rings]);\n\n this.layer && this.layer.add(feature);\n if (this.editorControl) {\n this.editorControl.activeFeature = feature as Poly;\n }\n this.switchMode(false, true);\n };\n\n removeFeature = (): void => {\n if (this.editorControl && this.editorControl.activeFeature) {\n this.layer && this.layer.remove(this.editorControl.activeFeature);\n }\n\n this.switchMode(true, false);\n };\n\n cancelFeatureCreation = (): void => {\n setTimeout(() => {\n this.switchMode(false, false);\n this.switchMode(true, false);\n }, 10);\n };\n\n render(): React.ReactElement {\n return <div style={{ display: 'none' }} />;\n }\n}\n","import React, { ReactElement } from 'react';\n\nimport { useMapContext } from '../../contexts';\nimport { MeasureToolFormatters } from '../../controls/MeasureToolFormatters';\nimport { MeasureTool } from './MeasureTool';\nimport { ShadowedPolySymbol, ShadowedPointSymbol } from '../../symbols';\n\nexport type renderLabelSymbolType = (props: {\n content: string;\n onClose?: VoidFunction;\n}) => ReactElement;\n\nexport type MeasureProps = {\n isActive: boolean;\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n snapSymbol?: ShadowedPointSymbol;\n lengthSymbol?: ShadowedPolySymbol;\n areaSymbol?: ShadowedPolySymbol;\n};\n\nexport const Measurer: React.FC<MeasureProps> = ({ isActive, ...props }) => {\n const { map, painter } = useMapContext();\n\n return isActive ? (\n <MeasureTool map={map} painter={painter} {...props} />\n ) : null;\n};\n","import styled from 'styled-components';\n\nexport const ScaleRulerContainer = styled.div`\n height: 2rem;\n cursor: default;\n display: flex;\n align-items: flex-end;\n padding: 0 0.5rem 0.5rem;\n box-sizing: border-box;\n`;\n\ntype ScaleRulerBlockProps = {\n width: number;\n};\n\nexport const ScaleRulerBlock = styled.div<ScaleRulerBlockProps>`\n display: flex;\n align-items: flex-end;\n justify-content: center;\n width: ${({ width }) => `${width}px`};\n height: 0.25rem;\n border: 0.0625rem solid white;\n border-top: 0;\n`;\n\ntype TextContainerProps = {\n margin?: string;\n width?: string;\n buttonText?: boolean;\n alignEnd?: boolean;\n};\n\nexport const TextContainer = styled.div<TextContainerProps>`\n height: 2rem;\n display: flex;\n justify-content: center;\n align-items: ${({ alignEnd }) => (alignEnd ? 'flex-end' : 'center')};\n width: ${({ width }) => width || 'auto'};\n color: #fff;\n font-size: 1rem;\n cursor: default;\n padding: 0 0.5rem;\n`;\n","import React from 'react';\nimport { ScaleRulerBlock, ScaleRulerContainer, TextContainer } from './styled';\nimport { useMapView, useScale } from '../../hooks';\n\nexport const ScaleRuler: React.FC = () => {\n const { resolution } = useMapView();\n const { currentScale, width } = useScale({ resolution: resolution || 0 });\n\n return (\n <ScaleRulerContainer>\n <ScaleRulerBlock width={width}>\n <TextContainer alignEnd margin={'0'}>\n {currentScale >= 1000\n ? `${currentScale / 1000}km`\n : `${currentScale}m`}\n </TextContainer>\n </ScaleRulerBlock>\n </ScaleRulerContainer>\n );\n};\n","import React, { PropsWithChildren } from 'react';\n\nimport { MapControl, ZoomInBtn, ZoomOutBtn } from '../MapControls/styled';\n\nimport { useMapViewActions } from '../../hooks';\n\ntype ZoomProps = PropsWithChildren<{}>;\n\nexport const Zoom: React.FC<ZoomProps> = ({ children }) => {\n const { zoomIn, zoomOut } = useMapViewActions();\n\n return (\n <MapControl>\n <ZoomInBtn onClick={zoomIn} />\n <ZoomOutBtn onClick={zoomOut} />\n {children}\n </MapControl>\n );\n};\n","import React from 'react';\n\nimport { TextContainer } from './styled';\n\nimport { useMapLevel } from '../../hooks';\n\nexport const ZoomLevel: React.FC = () => {\n const level = useMapLevel();\n\n return (\n <TextContainer buttonText={true} width={'2rem'}>\n {level || 0}\n </TextContainer>\n );\n};\n","import styled, { css } from 'styled-components';\n\nimport { TooltipComponentProps, Placement } from './types';\n\nexport const TOOLTIP_PLACEMENTS: Placement[] = [\n 'top',\n 'right',\n 'left',\n 'bottom',\n];\n\nconst cornerBottom = (cornerSize: string) => css`\n &:before {\n left: 50%;\n transform: translate(-50%, 100%);\n bottom: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-top: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst cornerLeft = (cornerSize: string) => css`\n &:before {\n transform: translate(-100%, -50%);\n left: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerRight = (cornerSize: string) => css`\n &:before {\n transform: translate(100%, -50%);\n right: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-left: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerTop = (cornerSize: string) => css`\n &:before {\n transform: translate(-50%, -100%);\n left: 50%;\n top: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-bottom: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst top = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n bottom: ${distance};\n ${cornerSize && cornerBottom(cornerSize)}\n`;\n\nconst right = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n left: ${distance};\n ${cornerSize && cornerLeft(cornerSize)}\n`;\n\nconst left = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n right: ${distance};\n ${cornerSize && cornerRight(cornerSize)}\n`;\n\nconst bottom = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n top: ${distance};\n ${cornerSize && cornerTop(cornerSize)}\n`;\n\nexport const placementMixin = (\n placement: Placement = 'top',\n distance: string,\n cornerSize: string | null\n) => css`\n ${placement === 'top' && top(distance, cornerSize)}\n ${placement === 'right' && right(distance, cornerSize)}\n ${placement === 'left' && left(distance, cornerSize)}\n ${placement === 'bottom' && bottom(distance, cornerSize)}\n`;\n\nconst corner = css`\n &:before {\n content: '';\n width: 0;\n height: 0;\n position: absolute;\n }\n`;\n\nexport const TooltipComponent = styled.div<TooltipComponentProps>`\n position: absolute;\n z-index: 999;\n display: flex;\n font-size: 0.625rem;\n color: #fff;\n background-color: rgba(28, 33, 48, 0.8);\n padding: 0.4em 0.6em;\n border-radius: 2px;\n user-select: none;\n box-sizing: border-box;\n white-space: pre;\n ${({ placement, distance = '0.5rem', withArrow, cornerSize = '0.25rem' }) =>\n placementMixin(placement, distance, withArrow ? cornerSize : null)}\n ${({ withArrow }) => withArrow && corner}\n`;\n","import React, { createContext, useEffect } from 'react';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Map } from '@evergis/sgis/es/Map';\n\nimport { TooltipComponent } from './styled';\nimport { ITooltip } from './types';\n\nimport { useTooltip } from '../../hooks';\n\n// TODO why???\nconst { Provider, Consumer } = createContext<Feature[]>([]);\n\n// TODO I just cant read that\nexport const Tooltip: React.FC<ITooltip> = ({\n features = [],\n map,\n center,\n component,\n zIndex,\n children,\n content,\n onEachFeature,\n clickMode,\n ...props\n}: ITooltip) => {\n const onTooltip = useTooltip(zIndex);\n\n useEffect(() => {\n (map ? [map] : features).forEach((feature: Feature | Map) => {\n const position =\n center && !(feature instanceof Map) && feature.bbox.center\n ? feature.bbox.center\n : undefined;\n\n onTooltip({\n feature,\n component:\n typeof onEachFeature === 'function'\n ? () => onEachFeature(feature)\n : () => <TooltipComponent {...props}>{content}</TooltipComponent>,\n position,\n clickMode,\n });\n });\n }, [\n content,\n clickMode,\n onEachFeature,\n onTooltip,\n map,\n center,\n features,\n component,\n props,\n ]);\n\n return (\n <Provider value={features}>\n {map ? children : children ? <Consumer>{children}</Consumer> : null}\n </Provider>\n );\n};\n","import React from 'react';\n\n/** No operation element */\nexport const Noop = () => <div style={{ display: 'none' }}></div>;\n","import React, { FC, ReactElement, Fragment } from 'react';\n\nimport { useDraggableMarker } from '../../hooks';\n\nimport { DraggableMarkerProps } from './types';\n\nexport const DraggableMarker: FC<DraggableMarkerProps> = ({\n position,\n onChange,\n symbol,\n}): ReactElement => {\n useDraggableMarker({ position, onChange, symbol });\n\n return <Fragment />;\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n"],"names":["usePagination","length","current","setCurrent","useState","next","useCallback","value","prev","reset","BASE_URL","defaultApi","Api","url","evergisContext","createContext","EvergisProvider","api","children","useMemo","React","Provider","useEvergisContext","useContext","defaultMap","Map","defaultPainter","DomPainter","mapContext","map","painter","MapProvider","useMapContext","defaultLayer","FeatureLayer","defaultPopupLayer","tooltipContext","layer","popupLayer","TooltipProvider","useTooltipContext","LegendContext","LegendProvider","symbol","useLegendContext","evergisSelectContext","EvergisSelectProvider","layers","useEvergisSelectContext","useEventPoint","event","point","browserEvent","wrapper","x","y","getMouseOffset","pageX","touches","pageY","originalPoint","getPointFromPxPosition","useMapViewActions","getEventPoint","zoomTo","k","zoom","position","zoomIn","zoomOut","animateTo","resolution","extent","nextPosition","slice","xMax","xMin","yMax","yMin","bbox","Bbox","crs","show","zoomAround","changeZoomLevel","level","tileScheme","tileLevel","levels","find","zIndex","animateSetResolution","useZoomToFeature","feature","useEvergisCard","features","zoomToFeature","useEffect","isRangeClass","Boolean","isUniqueClass","NULL_EXPRESSION","attribute","operation","ClassificationCondition","condition","conditionResult","ConditionInterpreter","expressions","Error","leftExpression","isUnique","console","warn","isRange","from","to","rightExpression","isFrom","TokenType","ArGr","ArEq","ArGre","ArLs","ArLse","includes","PARAMETER_SEPARATOR","parameterToPaths","parameter","split","pathsToParameter","paths","join","isObject","Array","isArray","isParameterByAttribute","type","isCalculatedParameter","getParameterValue","defaultValue","symbolParameterWalker","valueModifier","firstKey","restKeys","symbolPart","goDeeper","setDefaultParameterValue","setParameterValue","path","applyParameterValue","symbolTypeGuard","isPointLabelSymbol","isPolygonLabelSymbol","isPolylineLabelSymbol","isLabelSymbol","createCompositeSymbol","childSymbols","getChildSymbols","isCompositeSymbol","extractSymbol","isSimpleSymbol","label","raster","isRasterSymbol","extractStyle","style","packStyle","ignoreLabel","styleDc","filter","childStyle","isPointSymbol","isSquareSymbol","isMaskedImageSymbol","isStaticImageSymbol","isCombinedPolylineSymbol","isPolygonSymbol","isPolylineSymbol","isSimplePolylineSymbol","isPolylineSymbols","isImageSymbol","isTwoDimensionalSymbol","isSizableSymbol","isStrokeStyledSymbol","isScalablePolylineSymbol","beginning","ending","stroke","isH3GridSymbol","isSvgPointSymbol","isClusterSymbol","isClusterFillColor","getExtractedSymbol","extractCluster","extracted","singleObjectSymbol","isHatchBrush","isPatternBrush","isDashedBrush","isSolidBrush","isPolygonHasPatternBrush","fill","isPolygonHasHatchBrush","isMiterExist","miter","LineEndingType","None","isFilledLineMitter","FilledCircle","FilledArrow","FilledSquare","isArrowLineMiter","Arrow","isSquareLineMiter","Square","isCircleLineMiter","Circle","isSimpleOffset","offset","isSymbolWithOffset","isStringParameterValue","parameterValue","isParameterValueSimple","isParameterValueSymbol","isStyle","EvergisStyle","classificationManager","ClassificationManager","some","title","minResolution","maxResolution","toClassificationClass","uniqueValue","range","DEFAULT_EXTRAS","defaultTitle","toClassification","values","extras","reduce","classification","classificationCondition","classificationValue","push","attributeName","getClassifications","pathContext","Object","entries","classifications","skipHeight","skip","collectClassifications","predicate","callback","initial","unClassify","flatSymbol","result","DEFAULT_LANGUAGE","resources","en","ru","i18n","use","initReactI18next","init","fallbackLng","ns","keys","interpolation","escapeValue","supportedLngs","printRangeClass","index","isDouble","isDate","getRangeValues","t","getHexColor","colorString","Color","toString","undefined","PREVIEW_LIMITS","STROKE_WIDTH_MIN","STROKE_WIDTH_MAX","clamp","num","min","max","Math","SOLID_INTERVALS","solidStrokeStylePreset","intervals","strokeStylePresets","walkByNumbersGroup","numbers","walker","newNumbers","i","toIntervals","width","gap","toLineDash","round","getLineDash","brush","defineStrokeStylePreset","preset","uniqueStrokeWidths","presetInterval","unique","getDashStylePreset","dashStyle","ALPHA_NORMALIZER","sum","shouldFillMatrixCell","matrixSize","hatchAngle","center","PI","createEmptyMatrix","size","fillMatrix","matrix","filler","createFillBrushMatrix","hatchWidth","scalingFactor","createSymbolFillBrush","fillBrush","SGisBrushFill","originalSymbol","strokeColor","color","strokeWidth","lineDash","fillBackground","fillForeground","hatchColor","lineCap","_initialized","canvas","document","createElement","ctx","getContext","brushSize","foreground","background","height","j","srcA","a","dstA","alpha","toFixed","red","r","green","g","blue","b","fillStyle","fillRect","_brush","Image","src","toDataURL","sBrushFill","SGisImageFill","pattern","sImageFill","SGisPolygonSymbol","fillColor","sPolygonSymbol","adaptMiterRings","rings","fromCrs","toCrs","projected","projectRings","simplifyCoordinates","ring","miterSizeCalcs","LineMiterRender","baseInfo","lastRing","firstRing","assign","anchorRings","anchorCrs","currentCrs","xMultiplier","miterAnchor","getAnchor","miterRings","createRings","projectedMiterRings","createRender","calcMiterSize","ArrowLineMiterRender","miterSize","isFilled","kind","PolyRender","enclosed","FillStyle","lineJoin","CircleLineMiterRender","polygonCircleFromPoint","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","coordinates","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","ringIndex","copyRings","SGisPolylineSymbol","renders","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","render","getRender","unshift","sPolylineSymbol","LabelSymbol","component","node","renderDom","content","getNode","Component","ReactDOM","innerText","DynamicPointSymbol","defaultOffset","createLabelSymbol","props","renderLabel","onClose","ShadowedPointSymbol","PointFeature","projectTo","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","mapCoordinates","getShadowArc","getPointArc","shadowColor","shadowSize","Arc","radius","PointSymbol","getSimplifiedPolygonCoordinates","tolerance","equals","createShadowRender","shadowRadius","createPointRender","ShadowedPolySymbol","Poly","simplifiedFeatureCoordinates","polyRender","getPolyRender","vertexRenders","getVertexRenders","concat","enclose","showVertex","pointRenderers","shadowRenderers","featurePoint","vertexShadowSize","pointRender","PolylineSymbol","polySymbolParams","measureSymbolParams","measureLengthSymbol","measureAreaSymbol","snapSymbolParams","measurePolygonSnapSymbol","SelectedPointSymbol","isSelected","selectedStrokeColor","selectedFillColor","SelectedPolySymbol","selectedStrokeWidth","selectedPoint","selectedPolyline","selectedPolygon","metersToPixels","meters","geo","zeroPoint","maxWidthPoint","widthDistance","distance","pxK","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","svg","setSvg","append","__dynamicSymbolRender","DynamicRender","update","redraw","_setEventListeners","pxOffset","__lastBbox","__lastResolution","canProjectTo","newCoordinates","polygon","radiusOffset","dx","dy","left","top","miterLimit","dashOffset","svgRender","SvgRender","_setArcNode","_setPolyNode","svgElement","_","classList","add","querySelector","setAttribute","dynamicFeature","eventFlags","MouseEventFlags","svgNode","mouseEvents","forEach","eventName","flag","listenDomEvent","fire","Symbol","isSGisPointSymbol","StaticImageSymbol","SquareSymbol","MaskedImage","isSGisImageSymbol","isSGisPolygonSymbol","PolygonSymbol","BrushFill","ImageFill","isSGisPolylineSymbol","isSGisH3Symbol","H3Symbol","isSGisCombinedPolylineSymbol","CombinedPolylineSymbol","isSGisClusterSymbol","viewBoxSize","pointFeature","plain","lineFeature","Polyline","combinedLineFeature","CombinedPolyline","polygonFeature","Polygon","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","polyline","combinedPolyline","h3grid","MOCK_FEATURES","getSymbolRenders","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","renderSymbolToCanvas","draw","deserializeSymbol","deserializeH3Symbol","deserializeSvgPointSymbol","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","cellSize","SPointSymbol","deserializePointSymbolParams","getOffsetParameterValue","deserializeSvgPointSymbolParams","data","angle","figure","deserializeColor","SSquareSymbol","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","maskedColor","SStaticImageSymbol","source","base","clampSymbol","centerAlignSymbol","adjustSymbol","DEFAULT_SYMBOL_SIZE","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useCanvas","useRef","ref","Canvas","useMount","onMount","onUnmount","useProperty","deps","factory","destructor","propRef","newProp","useUpdate","onUpdate","shouldUpdate","useLayerOrder","insertLayer","useLayerVisibility","isDisplayed","useLayerOpacity","opacity","useEvergisDynamicLayer","name","ts","dataFilterId","onLoadStart","onLoadEnd","EvergisDynamicLayer","indexOf","removeLayer","webMercator","useEvergisTileLayer","sourceUrl","subDomains","EvergisTileLayer","useFeatureLayer","useMapBboxChange","onBboxChange","force","BboxChangeEvent","BboxChangeEndEvent","handleBboxChange","getMapState","on","off","useMapResize","onResize","handleMapResize","MapResize","useMapPick","geometryParams","setGeometryParams","evergisLayers","pick","sGisClickEvent","imageRectangle","getPxPosition","pointPosition","clickPoint","envelopes","collectLayerEnvelopes","extentSr","wkid","getLayerBboxCoors","_currentRender","isEvergisDynamicLayer","useMapState","dispatch","useReducer","mapStateReducer","mapState","useMapView","getLevel","useMapLevel","useMapWrapper","wrapperRef","byScale","scale","useMaxMinScale","minScale","maxScale","currentPosition","currentResolution","updateMapResolution","newResolution","Number","MAX_VALUE","getScale","pow10","pow","floor","d","useCorrectedResolution","segmentLength","useScale","minLength","correctedResolution","currentScale","useUpdateMapView","shouldUpdateMapState","shouldUpdatePosition","softEquals","shouldUpdateResolution","useTooltip","targetFeatures","labelFeature","events","onClickMap","remove","currentFeatureEvents","onMouseOver","onMouseMove","onMouseOut","onClick","hasListener","onSetLabelFeature","clickMode","LabelFeature","onRemoveLabelFeature","doNotBubbleToMap","stopPropagation","has","tooltipParams","target","isMap","featureEvents","useClusterLayer","onChangeGrid","clusterSymbol","currentFeatures","gridClusterProvider","GridClusterProvider","clusterLayer","ClusterLayer","NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","dateValue","format","numberWithSpaces","fractionDigits","delim","frac","numWithSpaces","replace","matchPhone","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","isValidUrl","urlRegexp","urlKind","URL","mailHref","mail","phoneHref","urlHref","stringAttribute","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","SrId","CRS_MAP","WebMercator","Geo","Wgs84","wgs84","EllipticalMercator","ellipticalMercator","DEFAULT_SRID","DEFAULT_CRS","getCrs","srId","getFeatureAttributeType","attributeValue","AttributeType","DateTime","String","Int64","Unknown","getLayerAttributes","layerDefinition","attributes","definition","getFeatureAttributes","mergeAttributes","attributes1","attributes2","EvergisFeature","id","displayName","geometry","layerName","layerAlias","sr","GeometryType","Point","Multipoint","MultiPoint","sGisFeature","evaluateCondition","evaluator","ConditionEvaluator","evaluate","getAttributeValue","attributeMeta","getAttributeNameFromCondition","getAttributeNameFromClassified","findFeatureValue","parameterValues","extractValuesAttribute","evaluateFeatureSymbol","calc","parameterName","newParameterValue","featureValue","findChildFeatureStyle","childStyles","findChildFeatureSymbol","featureStyle","getFeatureSymbol","EvergisLayer","service","evergisService","alias","titleAttribute","findFeatureLayer","evaluateFeature","featureLayer","createValueTitle","isValidParameter","FilterConditionOperation","ComparisonOperator","formatArea","measure","formatLength","formatPolygonMeasure","area","perimiter","isPolylineLikePolygon","coords","firstPoint","lastPoint","scales","INIT_FEATURES","useEvergisSelect","onPick","onFeatures","mapPickResult","setFeatures","resetSelection","useCrs","setCursor","cursor","none","useDraggableMarker","onChange","pointEditor","PointEditor","isActive","activeLayer","onMapClick","addLayer","activeFeature","hasMapClick","useMetersToPixels","useMetersToPixelsCb","useDebouncedCallback","interval","debounce","cb","useToggle","state","setState","toggle","useNode","onSetNode","CompoundIcon","styled","div","geometryType","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","sGisSymbol","e","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","IconButton","EverCloudStatisticsIcon","EverCloudZoomtoIcon","EverCloudCloseIcon","EverCloudPlayPrevIcon","EverCloudPlayNextIcon","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","topLeft","css","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","isParameterType","types","toLowerCase","MapLegendDescription","ItemText","theme","fonts","description","ItemSeparator","SymbolContainer","ClassifiedItem","isHidden","SymbolButtonWithClick","palette","elementDeep","SymbolButton","span","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MapLegendBadge","borderRadius","xSmall","element","textPrimary","MaximizedLegendContainer","isShown","MinimizedLegendContainer","LegendHeaderButton","MapLegendSectionContainer","MapLegendSectionItems","minHeight","maxHeight","isExpanded","MapLegendValueDescr","SizeLegendItemMixin","StrokeWidthLegendItemMixin","StrokeColorLegendItemMixin","MapLegendItem","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","ClusterLegendContainer","DEFAULT_LEGEND_SYMBOL_SIZE","EXTRA_BORDER_SIZE","DEFAULT_SYMBOL_WITH_BG_SIZE","DEFAULT_SYMBOL_FILL_COLOR","DEFAULT_SYMBOL_STROKE_COLOR","DEFAULT_SYMBOL_OFFSET","DEFAULT_CLUSTER_SVG","SYMBOL_CLASSIFICATION","SYMBOL_LIMITS","SIZE_MIN","SIZE_MAX","SIZE_STEP","GRID_SIZE_MIN","GRID_SIZE_MAX","MIN_OBJECTS_COUNT","MAX_OBJECTS_COUNT","MIN_CLUSTER_SIZE","MAX_CLUSTER_SIZE","STROKE_WIDTH_STEP","ANGLE_MIN","ANGLE_MAX","ANGLE_STEP","PREVIEW_SIZE_MAX","PREVIEW_SIZE_MAX_WIDTH","DEFAULT_PARAMETER_INFO","classifyAble","step","units","serialize","deserialize","PARAMETER_INFOS","OPERATOR_CONDITION_REMAP","Equals","NotEquals","GreaterThan","GreaterOrEquals","LessThan","LessOrEquals","Filled","Empty","Contains","NotContains","StartsWith","NotStartsWith","EndsWith","NotEndsWith","Between","Outside","BASE_OPERATORS","CONTAINS_OPERATORS","FILLED_OPERATORS","STARTS_WITH_OPERATORS","ENDS_WITH_OPERATORS","RANGE_OPERATORS","BETWEEN_OPERATORS","numberComparisonOperators","dateComparisonOperators","textComparisonOperators","SvgSymbolBg","DEFAULT_STROKE_OPACITY","convertSvgToBase64","window","btoa","createSvgGradient","gradient","stop","manipulateSvgSymbol","SVGContainer","bg","isClassified","symbolData","clear","isUploadedFile","innerSvg","uploadedViewBox","exec","viewbox","hasBg","defaultSize","currentSize","viewBox","currentBg","each","item","symbolBg","rootTransform","transformParts","transform","rotatedAngle","rotate","isNumeric","number","parseFloat","isFinite","comparisonOperatorMapReversed","ArNotEq","NUMERIC_ATTRIBUTE_TYPES","Int32","Double","formatValue","UTC","formatCondition","comparisonOperator","operator","preparedValue","isBetweenOutside","formattedValue","val","nulledValue","isNil","valueEscaped","Char","escapeSpecChars","addOperationToValue","createConditionString","createCondition","convertedResult","convertOperatorValue","operatorIndex","startsWith","PERCENTAGE","endsWith","addContains","addStartsWith","addEndsWith","BETWEEN","OUTSIDE","FilterCondition","conditionInterpreter","message","isOrCondition","boolOperations","BoolOr","isAndCondition","BoolAnd","OR","AND","conditions","isLayerService","getAttributeFromCondition","parts","getExprFromCondition","partIndex","expr","part","getSignFromConditionPart","getValueFromConditionPart","isRangeCondition","getSymbolParameterInfo","formatUniqueClassValue","stringFormat","formatRangeClassValue","formattedFrom","formattedTo","checkLayerHasLegend","layerInfo","param","paramValue","get","getTitleFromCondition","createValueTitleFromCondition","sign","isFirstFrom","DEFAULT_LEGEND_STYLES","SYMBOL_SIZE_PARAMETERS","DEFAULT_LEGEND_SIZES","circlePointSymbol","squarePointSymbol","imagePointSymbol","maskedImagePointSymbol","svgPointSymbol","getNonClassifiedParamValue","baseSymbol","classificationsParams","defaultParameterValue","getParameterFromSymbol","updateSymbolParameter","createPointSymbol","getDimensions","ratio","createImagePointSymbol","createLineSymbol","createPolygonSymbol","createH3Symbol","createClusterSymbol","createLegendSymbol","createHiddenCondition","attributeType","newValue","createOtherHiddenCondition","hiddenCondition","getMinimizedLegendValues","classified","otherTitle","other","getClassificationValue","items","getMaximizedLegendValues","params","sectionIndex","classifyParamsReduce","classifyParams","getClassified","getSymbolStrokeWidth","parameterFromSymbol","getLegendSymbolSize","serializeSvgPointSymbol","figureFillColor","bgFillColor","SIZE_PARAMETERS","isSizeClassification","getServiceConfiguration","emptyServiceConfiguration","configuration","GEOMETRY_ATTRIBUTE","DEFAULT_ID_ATTRIBUTE_NAME","getAttributesConfiguration","serviceConfiguration","emptyAttributesConfiguration","geometryAttribute","idAttribute","tableName","attributesConfiguration","getLayerDefinition","emptyLayerDefinition","getAttributeType","useSvgSymbol","skipOffset","SVGWrapperRefElement","SVG","initSvg","addTo","getSvgData","manipulateSvg","newSymbol","getUpdatedSvgSymbol","field","JSON","parse","stringify","svgRef","SvgSymbolContainer","SvgSymbolLabel","fontSettings","fontFamily","fontWeight","fontStyle","fontColor","fontSize","haloColor","haloWidth","SvgSymbol","memo","text","onSelectSymbol","renderSymbol","ClusterSymbolPreview","isClassifiedValue","svgSymbol","labelSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","LegendHeaderButtons","hasHiddenLegends","clearHiddenLegends","goToClassification","EverCloudClassificationIcon","disabled","EverCloudRefreshIcon","getConditionAttribute","isHiddenLegend","hiddenLegends","renderColumn","column","dateTime","Fragment","getLegendText","columns","isSingleColumn","LegendChildren","toggleHiddenLegend","legendText","LegendParameterDescription","useTranslation","isStrokeColor","getValueFromLegendTitle","minOrMax","MinimizedLegend","innerRef","currentValues","pop","titleMax","titleMin","checkIsHidden","MaximizedLegend","sectionSymbol","renderLegend","isClusterFillColorAction","LegendSection","parameters","count","toggleExpanded","maxRef","maxNode","minRef","minNode","currentSymbol","offsetHeight","Legend","rest","renderItems","keyIndex","DEFAULT_FORMATTERS","COORD_FRACTION","DEFAULT_LABEL_POSITION","Infinity","BaseMeasureToolCreator","renderLabelSymbol","formatters","areaSymbol","handlePointAdd","updateDistance","drawPointOnMouseMove","addTempLabel","removeCoordLabel","removeTempLabel","removeMeasureLabel","removeTempPolygon","finishDrawing","DrawingFinishEvent","MouseEvent","projection","projectionTo","lat","long","addMeasureResultLabel","addCoordLabel","tempPolygon","_tempLayer","polygonRings","shift","hide","pointIndex","calcLength","polygonPreview","calcArea","measureResultLabel","tempLabel","coordLabel","cancel","PolylineControl","BaseMeasureToolEditor","isEnclosed","pointsCount","updateMeasureResult","measureResult","removeFeature","PolyEditor","MeasureTool","getFeature","editorControl","switchMode","setTimeout","initCreateMode","initEditMode","offEvents","clearProperties","lengthSymbol","createControl","useTempLayer","dblClickMinTime","createFeature","cancelFeatureCreation","snapSymbol","snappingSymbol","featureDragAllowed","currentFormatters","create","edit","display","Measurer","ScaleRulerContainer","ScaleRulerBlock","TextContainer","alignEnd","ScaleRuler","margin","Zoom","ZoomLevel","buttonText","cornerBottom","cornerSize","cornerLeft","cornerRight","cornerTop","right","bottom","corner","TooltipComponent","withArrow","Consumer","Tooltip","onEachFeature","onTooltip","Noop","DraggableMarker","diameter","endAngle","start","end","ang","cos","sin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAMA,aAAa,GAAIC,MAAD;AAC3B,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBC,cAAQ,CAAC,CAAD,CAAtC;AAEA,QAAMC,IAAI,GAAGC,iBAAW,CACtB,MAAMH,UAAU,CAACI,KAAK,IAAKA,KAAK,GAAGN,MAAM,GAAG,CAAjB,GAAqBM,KAAK,GAAG,CAA7B,GAAiCA,KAA5C,CADM,EAEtB,CAACN,MAAD,EAASE,UAAT,CAFsB,CAAxB;AAKA,QAAMK,IAAI,GAAGF,iBAAW,CACtB,MAAMH,UAAU,CAACI,KAAK,IAAKA,KAAK,KAAK,CAAV,GAAcA,KAAd,GAAsBA,KAAK,GAAG,CAAzC,CADM,EAEtB,CAACJ,UAAD,CAFsB,CAAxB;AAKA,QAAMM,KAAK,GAAGH,iBAAW,CAAC,MAAMH,UAAU,CAAC,CAAD,CAAjB,EAAsB,CAACA,UAAD,CAAtB,CAAzB;AAEA,SAAO,CAACD,OAAD,EAAU;AAAEM,IAAAA,IAAF;AAAQH,IAAAA,IAAR;AAAcI,IAAAA;AAAd,GAAV,CAAP;AACD,CAhBM;;ACJP,MAAMC,QAAQ,GAAG,GAAjB;AAEA,MAAMC,UAAU,gBAAG,IAAIC,OAAJ,CAAQ;AACzBC,EAAAA,GAAG,EAAEH;AADoB,CAAR,CAAnB;AAIA,MAAMI,cAAc,gBAAGC,mBAAa,CAAMJ,UAAN,CAApC;AAMA,MAAaK,eAAe,GAAmC;MAAC;AAC9DC,IAAAA,GAD8D;AAE9DC,IAAAA;AAF8D;AAI9D,QAAMX,KAAK,GAAGY,aAAO,CAAC,MAAMF,GAAG,IAAIN,UAAd,EAA0B,CAACM,GAAD,CAA1B,CAArB;AACA,SACEG,4BAAA,CAACN,cAAc,CAACO,QAAhB;AAAyBd,IAAAA,KAAK,EAAEA;GAAhC,EAAwCW,QAAxC,CADF;AAGD,CARM;AAUP,MAAaI,iBAAiB,GAAG,MAAMC,gBAAU,CAACT,cAAD,CAA1C;;AChBP,MAAMU,UAAU,gBAAG,IAAIC,QAAJ,EAAnB;AACA,MAAMC,cAAc,gBAAG,IAAIC,qBAAJ,CAAeH,UAAf,CAAvB;AAEA,MAAMI,UAAU,gBAAGb,mBAAa,CAAa;AAC3Cc,EAAAA,GAAG,EAAEL,UADsC;AAE3CM,EAAAA,OAAO,EAAEJ;AAFkC,CAAb,CAAhC;AAUA,MAAaK,WAAW,GAAyB;MAAC;AAChDF,IAAAA,GADgD;AAEhDC,IAAAA,OAFgD;AAGhDZ,IAAAA;AAHgD;AAKhD,QAAMX,KAAK,GAAGY,aAAO,CACnB,OAAO;AACLU,IAAAA,GAAG,EAAEA,GAAG,IAAIL,UADP;AAELM,IAAAA,OAAO,EAAEA,OAAO,KAAKD,GAAG,GAAG,IAAIF,qBAAJ,CAAeE,GAAf,CAAH,GAAyBH,cAAjC;AAFX,GAAP,CADmB,EAKnB,CAACG,GAAD,EAAMC,OAAN,CALmB,CAArB;AAOA,SAAOV,4BAAA,CAACQ,UAAU,CAACP,QAAZ;AAAqBd,IAAAA,KAAK,EAAEA;GAA5B,EAAoCW,QAApC,CAAP;AACD,CAbM;AAeP,MAAac,aAAa,GAAG,MAAMT,gBAAU,CAACK,UAAD,CAAtC;;AC7BP,MAAMK,YAAY,gBAAG,IAAIC,2BAAJ,EAArB;AAEA,MAAMC,iBAAiB,gBAAG,IAAID,2BAAJ,EAA1B;AAEA,MAAME,cAAc,gBAAGrB,mBAAa,CAAiB;AACnDsB,EAAAA,KAAK,EAAEJ,YAD4C;AAEnDK,EAAAA,UAAU,EAAEH;AAFuC,CAAjB,CAApC;AAWA,MAAaI,eAAe,GAAmC;MAAC;AAC9DF,IAAAA,KAD8D;AAE9DC,IAAAA,UAF8D;AAG9DpB,IAAAA;AAH8D;AAK9D,QAAMX,KAAK,GAAGY,aAAO,CACnB,OAAO;AACLkB,IAAAA,KAAK,EAAEA,KAAK,IAAIJ,YADX;AAELK,IAAAA,UAAU,EAAEA,UAAU,IAAIH;AAFrB,GAAP,CADmB,EAKnB,CAACE,KAAD,EAAQC,UAAR,CALmB,CAArB;AAQA,SACElB,4BAAA,CAACgB,cAAc,CAACf,QAAhB;AAAyBd,IAAAA,KAAK,EAAEA;GAAhC,EAAwCW,QAAxC,CADF;AAGD,CAhBM;AAkBP,MAAasB,iBAAiB,GAAG,MAAMjB,gBAAU,CAACa,cAAD,CAA1C;;ACtCP,MAAMK,aAAa,gBAAG1B,mBAAa,CAAyB,IAAzB,CAAnC;AAMA,MAAa2B,cAAc,GAAkC;MAAC;AAC5DC,IAAAA,MAD4D;AAE5DzB,IAAAA;AAF4D;AAI5D,SACEE,4BAAA,CAACqB,aAAa,CAACpB,QAAf;AAAwBd,IAAAA,KAAK,EAAEoC,MAAM,IAAI;GAAzC,EACGzB,QADH,CADF;AAKD,CATM;AAWP,MAAa0B,gBAAgB,GAAG,MAAMrB,gBAAU,CAACkB,aAAD,CAAzC;;ACjBP,MAAMI,oBAAoB,gBAAG9B,mBAAa,CAAiB,EAAjB,CAA1C;AAMA,MAAa+B,qBAAqB,GAAyC;AAAA,MAAC;AAC1EC,IAAAA,MAD0E;AAE1E7B,IAAAA;AAF0E,GAAD;AAAA,SAIzEE,4BAAA,CAACyB,oBAAoB,CAACxB,QAAtB;AAA+Bd,IAAAA,KAAK,EAAEwC;GAAtC,EACG7B,QADH,CAJyE;AAAA,CAApE;AAQP,MAAa8B,uBAAuB,GAAG,MAAMzB,gBAAU,CAACsB,oBAAD,CAAhD;;MCVMI,aAAa,GAAG;AAC3B,QAAM;AAAEnB,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AAEA,SAAO1B,iBAAW,CACf4C,KAAD;AACE,QAAI,WAAWA,KAAf,EAAsB;AACpB,aAAOA,KAAK,CAACC,KAAb;AACD;;AAED,UAAMC,YAAY,GAChB,kBAAkBF,KAAlB,GAA0BA,KAAK,CAAC,cAAD,CAA/B,GAAkDA,KADpD;AAGA,UAAMG,OAAO,GAAGvB,OAAO,CAACuB,OAAxB;AACA,UAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA;AAAL,QAAWC,uBAAc,CAC7BH,OAD6B,EAE7B,aAAaD,YAAb,GACI;AACEK,MAAAA,KAAK,EAAEL,YAAY,CAACM,OAAb,CAAqB,CAArB,EAAwBD,KADjC;AAEEE,MAAAA,KAAK,EAAEP,YAAY,CAACM,OAAb,CAAqB,CAArB,EAAwBC;AAFjC,KADJ,GAKIP,YAPyB,CAA/B;AASA,UAAMQ,aAAa,GAAG9B,OAAO,CAAC+B,sBAAR,CAA+BP,CAA/B,EAAkCC,CAAlC,CAAtB;AAEA,WAAOK,aAAP;AACD,GAtBe,EAuBhB,CAAC9B,OAAD,CAvBgB,CAAlB;AAyBD,CA5BM;;SCESgC;AACd,QAAM;AAAEjC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM+B,aAAa,GAAGd,aAAa,EAAnC;AAEA,QAAMe,MAAM,GAAG1D,iBAAW,CACvB2D,CAAD;AACEpC,IAAAA,GAAG,CAACqC,IAAJ,CAASD,CAAT,EAAYpC,GAAG,CAACsC,QAAhB;AACD,GAHuB,EAIxB,CAACtC,GAAD,CAJwB,CAA1B;AAOA,QAAMuC,MAAM,GAAG9D,iBAAW,CAAC,MAAM0D,MAAM,CAAC,CAAD,CAAb,EAAkB,CAACA,MAAD,CAAlB,CAA1B;AACA,QAAMK,OAAO,GAAG/D,iBAAW,CAAC,MAAM0D,MAAM,CAAC,CAAC,CAAF,CAAb,EAAmB,CAACA,MAAD,CAAnB,CAA3B;AAEA,QAAMM,SAAS,GAAGhE,iBAAW,CAC3B;QAAC;AAAE6D,MAAAA,QAAF;AAAYI,MAAAA,UAAZ;AAAwBC,MAAAA;AAAxB;;AACC,QAAIL,QAAQ,IAAII,UAAhB,EAA4B;AAC1B,YAAME,YAAY,GAAGN,QAAQ,GACxBA,QAAQ,CAACO,KAAT,CAAe,CAAf,CADwB,GAEzB7C,GAAG,CAACsC,QAFR;AAGAtC,MAAAA,GAAG,CAACyC,SAAJ,CAAcG,YAAd,EAA4BF,UAAU,IAAI1C,GAAG,CAAC0C,UAA9C;AACD;;AAED,QAAIC,MAAJ,EAAY;AACV,YAAM;AAAEG,QAAAA,IAAF;AAAQC,QAAAA,IAAR;AAAcC,QAAAA,IAAd;AAAoBC,QAAAA;AAApB,UAA6BN,MAAnC;AACA,YAAMO,IAAI,GAAG,IAAIC,SAAJ,CAAS,CAACJ,IAAD,EAAOC,IAAP,CAAT,EAAuB,CAACF,IAAD,EAAOG,IAAP,CAAvB,EAAqCjD,GAAG,CAACoD,GAAzC,CAAb;AACAnD,MAAAA,OAAO,IAAIA,OAAO,CAACoD,IAAR,CAAaH,IAAb,EAAmB,IAAnB,CAAX;AACD;AACF,GAd0B,EAe3B,CAAClD,GAAD,EAAMC,OAAN,CAf2B,CAA7B;AAkBA,QAAMqD,UAAU,GAAG7E,iBAAW,CAC3B4C,KAAD;AACErB,IAAAA,GAAG,CAACqC,IAAJ,CAAS,CAAT,EAAYH,aAAa,CAACb,KAAD,CAAzB;AACD,GAH2B,EAI5B,CAACa,aAAD,EAAgBlC,GAAhB,CAJ4B,CAA9B;AAOA,QAAMuD,eAAe,GAAG9E,iBAAW,CAChC+E,KAAD;AACE,UAAM;AAAEC,MAAAA;AAAF,QAAiBzD,GAAvB;AACA,QAAI0D,SAAS,GAAGD,UAAU,CAACE,MAAX,CAAkBC,IAAlB,CAAuB;AAAA,UAAC;AAAEC,QAAAA;AAAF,OAAD;AAAA,aAAgBA,MAAM,KAAKL,KAA3B;AAAA,KAAvB,CAAhB;AACA,UAAMd,UAAU,GAAGgB,SAAS,GAAGA,SAAS,CAAChB,UAAb,GAA0B1C,GAAG,CAAC0C,UAA1D;AAEA1C,IAAAA,GAAG,CAAC8D,oBAAJ,CAAyBpB,UAAzB,EAAqC1C,GAAG,CAACsC,QAAzC;AACD,GAPgC,EAQjC,CAACtC,GAAD,CARiC,CAAnC;AAWA,SAAO;AACLmC,IAAAA,MADK;AAELI,IAAAA,MAFK;AAGLC,IAAAA,OAHK;AAILc,IAAAA,UAJK;AAKLb,IAAAA,SALK;AAMLc,IAAAA;AANK,GAAP;AAQD;;AC7DM,MAAMQ,gBAAgB,GAAG;AAC9B,QAAM;AAAEtB,IAAAA;AAAF,MAAgBR,iBAAiB,EAAvC;AAEA,SAAOxD,iBAAW,CACfuF,OAAD;AACE,UAAMrB,MAAM,GAAGqB,OAAO,CAACrB,MAAR,EAAf;;AAEA,QAAIA,MAAJ,EAAY;AACVF,MAAAA,SAAS,CAAC;AAAEE,QAAAA;AAAF,OAAD,CAAT;AACD;AACF,GAPe,EAQhB,CAACF,SAAD,CARgB,CAAlB;AAUD,CAbM;;ACSA,MAAMwB,cAAc,GAAIC,QAAD;AAC5B,QAAM,CAAC7F,OAAD,EAAU;AAAEM,IAAAA,IAAF;AAAQH,IAAAA,IAAR;AAAcI,IAAAA;AAAd,GAAV,IAAmCT,aAAa,CAAC+F,QAAQ,CAAC9F,MAAV,CAAtD;AAEA,QAAM4F,OAAO,GAAGE,QAAQ,CAAC7F,OAAD,CAAxB;AAEA,QAAM8F,aAAa,GAAGJ,gBAAgB,EAAtC;AAEA,QAAM1B,IAAI,GAAG5D,iBAAW,CAAC,MAAM0F,aAAa,CAACH,OAAD,CAApB,EAA+B,CACrDG,aADqD,EAErDH,OAFqD,CAA/B,CAAxB;AAKAI,EAAAA,eAAS,CAAC;AACRxF,IAAAA,KAAK;AAEN,GAHQ,EAGN,CAACsF,QAAQ,CAAC9F,MAAV,CAHM,CAAT;AAKA,SAAO;AAAE4F,IAAAA,OAAF;AAAW3F,IAAAA,OAAX;AAAoBM,IAAAA,IAApB;AAA0BH,IAAAA,IAA1B;AAAgC6D,IAAAA;AAAhC,GAAP;AACD,CAlBM;;SC4ESgC,aAAa3F;AAC3B,SAAO4F,OAAO,CAAC5F,KAAK,IAAI,UAAUA,KAApB,CAAd;AACD;AAED,SAAgB6F,cACd7F;AAEA,SAAO4F,OAAO,CAAC5F,KAAK,IAAI,iBAAiBA,KAA3B,CAAd;AACD;;AC3FD,MAAM8F,eAAe,GAAe;AAClC;AACAC,EAAAA,SAAS,EAAE,IAFuB;AAGlC;AACAC,EAAAA,SAAS,EAAE,IAJuB;AAKlChG,EAAAA,KAAK,EAAE;AAL2B,CAApC;AAQA,IAAaiG,uBAAb;AAIE,mCAAYC,WAAZ;;;AAFiB,oBAAA,GAA4B,EAA5B;AAGf,SAAKA,SAAL,GAAiBA,WAAjB;AACA,UAAMC,eAAe,GAAG,IAAIC,8BAAJ,CAAyBF,WAAzB,EAAoClG,KAA5D;AAEA,SAAKqG,WAAL,GACEF,eAAe,YAAYG,KAA3B,GAAmC,EAAnC,GAAwCH,eAAe,CAACE,WAD1D;AAED;;AAVH;AAAA;AAAA,SAYE;AACE,aAAO,KAAKE,cAAL,CAAoBR,SAA3B;AACD;AAdH;AAAA;AAAA,SAgBE;AACE,UAAI,KAAKS,QAAL,EAAJ,EAAqB;AACnB,cAAM;AAAExG,UAAAA;AAAF,YAAY,KAAKuG,cAAvB;AAEA,eAAO,OAAOvG,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC,EAA3C;AACD;;AAEDyG,MAAAA,OAAO,CAACC,IAAR,gDAA0D,KAAKR,SAA/D;AAEA,aAAO,EAAP;AACD;AA1BH;AAAA;AAAA,SA4BE;AACE,UAAI,CAAC,KAAKS,OAAL,EAAL,EAAqB;AACnBF,QAAAA,OAAO,CAACC,IAAR,gDAC+C,KAAKR,SADpD;AAIA,eAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;;AAED,UAAI,KAAKG,WAAL,CAAiB3G,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAEM,UAAAA,KAAK,EAAE4G;AAAT,YAAkB,KAAKL,cAA7B;AACA,cAAM;AAAEvG,UAAAA,KAAK,EAAE6G;AAAT,YAAgB,KAAKC,eAA3B;AAEA,eAAO,CAACF,IAAD,EAAOC,EAAP,CAAP;AACD;;AAED,UAAI,KAAKR,WAAL,CAAiB3G,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAEsG,UAAAA,SAAF;AAAahG,UAAAA;AAAb,YAAuB,KAAKuG,cAAlC;AACA,cAAMQ,MAAM,GAAGf,SAAS,KAAKgB,mBAAS,CAACC,IAAvC;AAEA,eAAO,CAACF,MAAM,GAAG/G,KAAH,GAAW,IAAlB,EAAwB+G,MAAM,GAAG,IAAH,GAAU/G,KAAxC,CAAP;AACD;;AAED,aAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;AApDH;AAAA;AAAA,SAsDE;AACE,aAAO,KAAKwG,QAAL;;AAAA;;AAAP;AAGD;AA1DH;AAAA;AAAA,WA4DS;AACL,aAAO,KAAKD,cAAL,CAAoBP,SAApB,KAAkCgB,mBAAS,CAACE,IAAnD;AACD;AA9DH;AAAA;AAAA,WAgES;AACL,aAAO,CACLF,mBAAS,CAACC,IADL,EAELD,mBAAS,CAACG,KAFL,EAGLH,mBAAS,CAACI,IAHL,EAILJ,mBAAS,CAACK,KAJL,EAKLC,QALK,CAKI,KAAKf,cAAL,CAAoBP,SALxB,CAAP;AAMD;AAvEH;AAAA;AAAA,WAyES;AACL,aAAO,KAAKE,SAAZ;AACD;AA3EH;AAAA;AAAA,SA6EE;AACE,aAAO,KAAKG,WAAL,CAAiB3G,MAAjB,GAA0B,CAA1B,GAA8B,KAAK2G,WAAL,CAAiB,CAAjB,CAA9B,GAAoDP,eAA3D;AACD;AA/EH;AAAA;AAAA,SAiFE;AACE,aAAO,KAAKO,WAAL,CAAiB3G,MAAjB,GAA0B,CAA1B,GAA8B,KAAK2G,WAAL,CAAiB,CAAjB,CAA9B,GAAoDP,eAA3D;AACD;AAnFH;;AAAA;AAAA;;ACdO,MAAMyB,mBAAmB,GAAG,GAA5B;AAEP,AAAO,MAAMC,gBAAgB,GAC3BC,SAD8B,IAG9BA,SAAS,CAACC,KAAV,CAAgBH,mBAAhB,CAHK;AAKP,AAAO,MAAMI,gBAAgB,GAC3BC,KAD8B,IAG9BA,KAAK,CAACC,IAAN,CAAWN,mBAAX,CAHK;;SCTSO,SAAY9H;AAC1B,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+C,CAAC+H,KAAK,CAACC,OAAN,CAAchI,KAAd,CAAvD;AACD;;MCiBYiI,sBAAsB,GACjCjI,KADoC,IAGpC4F,OAAO,CACLkC,QAAQ,CAAC9H,KAAD,CAAR,IACG,CAAAA,KAAwD,QAAxD,YAAAA,KAAwD,CAAEkI,IAA1D,MACC,aAHC,CAHF;AASP,MAAaC,qBAAqB,GAChCnI,KADmC,IAGnC4F,OAAO,CACLkC,QAAQ,CAAC9H,KAAD,CAAR,IACG,CAAAA,KAAuD,QAAvD,YAAAA,KAAuD,CAAEkI,IAAzD,MACC,YAHC,CAHF;AASP,MAAaE,iBAAiB,GAC5BpI,KAD+B;AAG/B,MAAIiI,sBAAsB,CAACjI,KAAD,CAAtB,IAAiCmI,qBAAqB,CAACnI,KAAD,CAA1D,EAAmE;AACjE,WAAOA,KAAK,CAACqI,YAAb;AACD;;AAED,SAAOrI,KAAP;AACD,CARM;AAUP,MAAasI,qBAAqB,GAChCC,aADmC,IAEhC,CACHnG,MADG,EAEHqF,SAFG;AAIH,QAAMG,KAAK,GAAGG,KAAK,CAACC,OAAN,CAAcP,SAAd,IACVA,SADU,GAEVD,gBAAgB,CAACC,SAAD,CAFpB;AAGA,QAAM,CAACe,QAAD,EAAW,GAAGC,QAAd,IAA0Bb,KAAhC;;AAGA,QAAMc,UAAU,GAAGtG,MAAM,CAACoG,QAAD,CAAzB;;AAEA,MAAIC,QAAQ,CAAC/I,MAAb,EAAqB;AACnB,UAAMiJ,QAAQ,GAAGL,qBAAqB,CAACC,aAAD,CAAtC;AAEA,wBACKnG,MADL;AAEE,OAACoG,QAAD,GAAYG,QAAQ,CAACD,UAAD,EAAaD,QAAb,CAAR,IAAkCC;AAFhD;AAID;;AAED,sBACKtG,MADL;AAEE,KAACoG,QAAD,GAAYD,aAAa,CAACG,UAAD,CAAb,IAA6BA;AAF3C;AAID,CA3BM;AA6BP,MAAaE,wBAAwB,gBAAGN,qBAAqB,CAC3DF,iBAD2D,CAAtD;AAIP,MAAaS,iBAAiB,GAAG,CAC/BzG,MAD+B,EAE/B0G,IAF+B,EAG/B9I,KAH+B,KAIzBsI,qBAAqB,CAAC,MAAMtI,KAAP,CAArB,CAAmCoC,MAAnC,EAA2C0G,IAA3C,CAJD;AAMP,SAAgBC,oBACd3G,QACA0G,MACA9I;AAEA,MAAI8I,IAAI,KAAK,QAAb,EAAuB;AACrB,WAAO9I,KAAP;AACD;;AAED,SAAO6I,iBAAiB,CAACzG,MAAD,EAAS0G,IAAT,EAAe9I,KAAf,CAAxB;AACD;;MC7CYgJ,eAAe,GAC1Bd,IAD6B,IAEzB9F,MAAD,IACHA,MAAM,IAAIA,MAAM,CAAC8F,IAAP,KAAgBA,IAHrB;;MCxBMe,kBAAkB,gBAAGD,eAAe,CAC/C,kBAD+C,CAA1C;AAGP,MAAaE,oBAAoB,gBAAGF,eAAe,CACjD,oBADiD,CAA5C;AAGP,MAAaG,qBAAqB,gBAAGH,eAAe,CAClD,qBADkD,CAA7C;AAIP,MAAaI,aAAa,GAAIhH,MAAD,IAC3BwD,OAAO,CACLxD,MAAM,KACH6G,kBAAkB,CAAC7G,MAAD,CAAlB,IACC8G,oBAAoB,CAAC9G,MAAD,CADrB,IAEC+G,qBAAqB,CAAC/G,MAAD,CAHnB,CADD,CADF;;;ACnCP,MAWaiH,qBAAqB,GAChCC,YADmC,KAEV;AACzBpB,EAAAA,IAAI,EAAE,iBADmB;AAEzBoB,EAAAA;AAFyB,CAFU,CAA9B;AAOP,MAAaC,eAAe,GAAInH,MAAD;AAC7B,MAAI,CAACA,MAAD,IAAW,CAACoH,iBAAiB,CAACpH,MAAD,CAAjC,EAA2C,OAAO,EAAP;AAE3C,SAAOA,MAAM,CAACkH,YAAP,IAAuB,EAA9B;AACD,CAJM;AAMP,MAAaG,aAAa,GACxBrH,MAD2B;AAG3B,QAAMkH,YAAY,GAAGC,eAAe,CAACnH,MAAD,CAApC;AAEA,SAAO;AACL;AACAA,IAAAA,MAAM,EAAEkH,YAAY,CAACpE,IAAb,CAAkBwE,cAAlB,CAFH;AAGLC,IAAAA,KAAK,EAAEL,YAAY,CAACpE,IAAb,CAAkBkE,aAAlB,KAAoC,IAHtC;AAILQ,IAAAA,MAAM,EAAEN,YAAY,CAACpE,IAAb,CAAkB2E,cAAlB,KAAqC;AAJxC,GAAP;AAMD,CAXM;AAaP,MAAaC,YAAY,GAAIC,KAAD;AAC1B;AACA,MAAIP,iBAAiB,CAACO,KAAK,CAAC3H,MAAP,CAArB,EAAqC;AACnC,wBACK2H,KADL,EAEKN,aAAa,CAACM,KAAK,CAAC3H,MAAP,CAFlB;AAGE;AACAzB,MAAAA,QAAQ,EAAEoJ,KAAK,CAACpJ,QAAN,IAAkBoJ,KAAK,CAACpJ,QAAN,CAAeW,GAAf,CAAmBwI,YAAnB;AAJ9B;AAMD;;;AAGD,SAAQC,KAAK,IAAI,EAAjB;AACD,CAbM;AAeP,MAAaC,SAAS,GAAID,KAAD;AACvB,QAAM;AAAEE,IAAAA,WAAF;AAAeN,IAAAA,KAAf;AAAsBvH,IAAAA,MAAtB;AAA8BwH,IAAAA,MAA9B;AAAsCjJ,IAAAA;AAAtC,MAA+DoJ,KAArE;AAAA,QAAyDG,OAAzD,iCAAqEH,KAArE;;AACA,QAAMT,YAAY,GAAG,CAAC,CAACW,WAAD,IAAgBN,KAAjB,EAAwBC,MAAxB,EAAgCO,MAAhC,CAAuCvE,OAAvC,CAArB;AAEA,sBACKsE,OADL;AAEE9H,IAAAA,MAAM,EAAEkH,YAAY,CAAC5J,MAAb;AAEJ2J,IAAAA,qBAAqB,CAAC,CAACjH,MAAD,EAAS,GAAGkH,YAAZ,CAAD,CAFjB,GAGJlH,MALN;AAME;AACAzB,IAAAA,QAAQ,EAAEA,QAAQ;AAEdA,IAAAA,QAAQ,CAACW,GAAT,CAAa8I,UAAU,IACrBJ,SAAS,cAAMI,UAAN;AAAkBH,MAAAA,WAAlB;AAA+BN,MAAAA;AAA/B,OADX,CAFc,GAKdhJ;AAZN;AAcD,CAlBM;;MCsDM0J,aAAa,gBAAGrB,eAAe,CAAc,mBAAd,CAArC;AAEP,MAAasB,cAAc,gBAAGtB,eAAe,CAC3C,mBAD2C,CAAtC;AAIP,MAAauB,mBAAmB,gBAAGvB,eAAe,CAChD,wBADgD,CAA3C;AAIP,MAAawB,mBAAmB,gBAAGxB,eAAe,CAChD,kBADgD,CAA3C;AAIP,MAAayB,wBAAwB,gBAAGzB,eAAe,CAA2B,wBAA3B,CAAhD;AAEP,MAAa0B,eAAe,gBAAG1B,eAAe,CAAgB,eAAhB,CAAvC;AAEP,MAAa2B,gBAAgB,gBAAG3B,eAAe,CAC7C,gBAD6C,CAAxC;AAIP,MAAa4B,sBAAsB,gBAAG5B,eAAe,CACnD,sBADmD,CAA9C;AAIP,MAAa6B,iBAAiB,GAC5BzI,MAD+B,IAG/BwD,OAAO,CACLxD,MAAM,KAAKuI,gBAAgB,CAACvI,MAAD,CAAhB,IAA4BwI,sBAAsB,CAACxI,MAAD,CAAvD,CADD,CAHF;AAOP,MAAaoH,iBAAiB,gBAAGR,eAAe,CAC9C,iBAD8C,CAAzC;AAGP,MAAaa,cAAc,gBAAGb,eAAe,CAAe,cAAf,CAAtC;AAEP,MAAa8B,aAAa,GAAI1I,MAAD,IAC3BwD,OAAO,CACLxD,MAAM,KAAKmI,mBAAmB,CAACnI,MAAD,CAAnB,IAA+BoI,mBAAmB,CAACpI,MAAD,CAAvD,CADD,CADF;AAKP,MAAa2I,sBAAsB,GACjC3I,MADoC,IAEVwD,OAAO,CAACxD,MAAM,IAAI,WAAWA,MAAtB,CAF5B;AAIP,MAAa4I,eAAe,GAC1B5I,MAD6B,IAEGwD,OAAO,CAACxD,MAAM,IAAI,UAAUA,MAArB,CAFlC;AAIP,MAAa6I,oBAAoB,GAC/B7I,MADkC,IAGlCwD,OAAO,CAACxD,MAAM,KAAKsI,eAAe,CAACtI,MAAD,CAAf,IAA2ByI,iBAAiB,CAACzI,MAAD,CAAjD,CAAP,CAHF;AAKP,MAAa8I,wBAAwB,GACnC9I,MADsC,IAGrCA,MAAM,CAAC+I,SAAP,KAAqB,IAArB,IAA6B/I,MAAM,CAACgJ,MAAP,KAAkB,IAAhD,IACChJ,MAAM,CAACiJ,MAAP,IAAiBjJ,MAAM,CAACiJ,MAAP,CAAcnD,IAAd,KAAuB,OAJpC;AAMP,MAAawB,cAAc,GACzBtH,MAD4B,IAG5BwD,OAAO,CACLxD,MAAM,IACJ,CAACgH,aAAa,CAAChH,MAAD,CADhB,IAEE,CAACoH,iBAAiB,CAACpH,MAAD,CAFpB,IAGE,CAACyH,cAAc,CAACzH,MAAD,CAJZ,CAHF;AAUP,MAAakJ,cAAc,gBAAGtC,eAAe,CAAiB,QAAjB,CAAtC;AAEP,MAAauC,gBAAgB,gBAAGvC,eAAe,CAAiB,gBAAjB,CAAxC;AAEP,MAAawC,eAAe,gBAAGxC,eAAe,CAAoB,SAApB,CAAvC;AAEP,MAAayC,kBAAkB,GAAG,CAACrJ,MAAD,EAA0BqF,SAA1B;AAChC,SAAO+D,eAAe,CAACpJ,MAAD,CAAf,IAA2BqF,SAAS,KAAK,WAAhD;AACD,CAFM;AAIP,MAAaiE,kBAAkB,GAAG,SAArBA,kBAAqB,CAACtJ,MAAD,EAA0BuJ,cAA1B;;;MAA0BA;AAAAA,IAAAA,iBAAiB;;;AAC3E,QAAMC,SAAS,GAAGpC,iBAAiB,CAACpH,MAAD,CAAjB,qBAAmDqH,aAAa,CAACrH,MAAD,CAAhE,qBAAmD,eAAuBA,MAA1E,GAAmFA,MAArG;AAEA,SAAOuJ,cAAc,IAAIH,eAAe,CAACI,SAAD,CAAjC,GACDA,SAA+B,CAACC,kBAD/B,GAEHD,SAFJ;AAGD,CANM;;MC5KME,YAAY,gBAAG9C,eAAe,CAAa,OAAb,CAApC;AACP,MAAa+C,cAAc,gBAAG/C,eAAe,CAAe,SAAf,CAAtC;AACP,MAAagD,aAAa,gBAAGhD,eAAe,CAAc,QAAd,CAArC;AACP,MAAaiD,YAAY,gBAAGjD,eAAe,CAAa,OAAb,CAApC;AAEP,MAAakD,wBAAwB,GACnC9J,MADsC,IAGtCwD,OAAO,CAACxD,MAAM,IAAIsI,eAAe,CAACtI,MAAD,CAAzB,IAAqC2J,cAAc,CAAC3J,MAAM,CAAC+J,IAAR,CAApD,CAHF;AAKP,MAAaC,sBAAsB,GACjChK,MADoC,IAGpCwD,OAAO,CAACxD,MAAM,IAAIsI,eAAe,CAACtI,MAAD,CAAzB,IAAqC0J,YAAY,CAAC1J,MAAM,CAAC+J,IAAR,CAAlD,CAHF;;MCiCME,YAAY,GACvBC,KAD0B,IAG1B1G,OAAO,CAAC0G,KAAK,IAAIA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACC,IAAxC,CAHF;AAKP,MAAaC,kBAAkB,GAC7BH,KADgC,IAGhCA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACG,YAA9B,IACAJ,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACI,WAD9B,IAEAL,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACK,YALzB;AAOP,MAAaC,gBAAgB,GAC3BP,KAD8B,IAG9BA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACO,KAA9B,IACAR,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACI,WAJzB;AAMP,MAAaI,iBAAiB,GAC5BT,KAD+B,IAG/BA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACS,MAA9B,IACAV,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACK,YAJzB;AAMP,MAAaK,iBAAiB,GAC5BX,KAD+B,IAG/BA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACW,MAA9B,IACAZ,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACG,YAJzB;;MCvEMS,cAAc,GAAIC,MAAD,IAC5BA,MAAM,IACN,CAACnF,sBAAsB,CAACmF,MAAM,CAAC,CAAD,CAAP,CADvB,IAEA,CAACnF,sBAAsB,CAACmF,MAAM,CAAC,CAAD,CAAP,CAHlB;AAKP,MAAaC,kBAAkB,GAC7BjL,MADgC,IAEFwD,OAAO,CAACxD,MAAM,IAAI,YAAYA,MAAvB,CAFhC;;MCwBMkL,sBAAsB,GACjCC,cADoC,IAEP,OAAOA,cAAP,KAA0B,QAFlD;AAIP,MAAaC,sBAAsB,GACjCD,cADoC,IAGpC,OAAOA,cAAP,KAA0B,QAA1B,IAAsC,OAAOA,cAAP,KAA0B,QAH3D;AAKP,MAAaE,sBAAsB,GACjCF,cADoC,IAEE,CAACC,sBAAsB,CAACD,cAAD,CAFxD;;MCvCMG,OAAO,GAAI1N,KAAD,IAAmC,YAAYA,KAA/D;;ICNM2N,YAAb;AAIE,wBAAY5D,KAAZ;;;AACE,SAAKA,KAAL,GAAaD,YAAY,CAACC,KAAD,CAAzB;AACA,SAAK6D,qBAAL,GAA6B,IAAIC,qBAAJ,CAA0B,KAAK9D,KAA/B,CAA7B;AACD;;AAPH;AAAA;AAAA,WASS;AACL,aAAOC,SAAS,CAAC,KAAKD,KAAN,CAAhB;AACD;AAXH;AAAA;AAAA,WAaS;AACL,aAAO,CAAC,EACN,KAAKA,KAAL,CAAWH,MAAX,IACA,CAAC,KAAKG,KAAL,CAAWpJ,QAAX,IAAuB,EAAxB,EAA4BmN,IAA5B,CAAiC/D,KAAK,IAAIA,KAAK,CAACH,MAAhD,CAFM,CAAR;AAID;AAlBH;AAAA;AAAA,SAoBE;AACE,aAAO,KAAKG,KAAL,CAAW3H,MAAlB;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,aAAO,KAAK2H,KAAL,CAAWH,MAAlB;AACD;AA1BH;AAAA;AAAA,SA2BE;AACE,aAAO,KAAKG,KAAL,CAAWJ,KAAlB;AACD;AA7BH;AAAA;AAAA,SA+BE;AACE,aAAO,KAAKI,KAAL,CAAWpJ,QAAlB;AACD;AAjCH;AAAA;AAAA,SAmCE;AACE,aAAO,KAAKoJ,KAAL,CAAWgE,KAAlB;AACD;AArCH;AAAA;AAAA,SAuCE;AACE,aAAO,KAAKhE,KAAL,CAAW7D,SAAlB;AACD;AAzCH;AAAA;AAAA,SA2CE;AACE,aAAO,KAAK6D,KAAL,CAAWE,WAAlB;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAM;AAAE+D,QAAAA,aAAF;AAAiBC,QAAAA;AAAjB,UAAmC,KAAKlE,KAA9C;AAEA,aAAOiE,aAAa,KAAK,KAAK,CAAvB,IAA4BC,aAAa,KAAK,KAAK,CAAnD,GACH,IADG,GAEH,CAACD,aAAD,EAAgBC,aAAhB,CAFJ;AAGD;AArDH;;AAAA;AAAA;;ACcA,MAAMC,qBAAqB,GAAG,CAC5BX,cAD4B,EAE5BQ,KAF4B,EAG5B7H,SAH4B;AAK5BqH,EAAAA,cAL4B;AAM5BQ,EAAAA;AAN4B,GAOxB7H,SAAS,CAACM,QAAV,KACA;AACE2H,EAAAA,WAAW,EAAEjI,SAAS,CAACiI;AADzB,CADA,GAIA;AACEvH,EAAAA,IAAI,EAAEV,SAAS,CAACkI,KAAV,CAAgB,CAAhB,CADR;AAEEvH,EAAAA,EAAE,EAAEX,SAAS,CAACkI,KAAV,CAAgB,CAAhB;AAFN,CAXwB,CAA9B;;AAiBA,MAAMC,cAAc,GAAyB;AAC3CC,EAAAA,YAAY,EAAE,EAD6B;AAE3C;AACAjG,EAAAA,YAAY,EAAE;AAH6B,CAA7C;AAMA,AAAO,MAAMkG,gBAAgB,GAAG,SAAnBA,gBAAmB,CAC9BC,MAD8B,EAE9B/G,SAF8B,EAG9BgH,MAH8B;AAAA,MAG9BA,MAH8B;AAG9BA,IAAAA,MAH8B,GAGCJ,cAHD;AAAA;;AAAA;AAM9BG,IAAAA,MAAM,CAACE,MAAP;AAEE,KAACC,cAAD,EAAyC3O,KAAzC;AACE,YAAM4O,uBAAuB,GAAG,IAAI3I,uBAAJ,CAC9BjG,KAAK,CAACkG,SAAN,IAAmB,EADW,CAAhC;AAGA,YAAM2I,mBAAmB,GAAGX,qBAAqB,CAC/CR,OAAO,CAAC1N,KAAD,CAAP,GAAiBA,KAAK,CAACoC,MAAvB,GAAgCpC,KAAK,CAACA,KADS;AAG/CA,MAAAA,KAAK,CAAC+N,KAHyC,EAI/Ca,uBAJ+C,CAAjD;AAOAD,MAAAA,cAAc,CAACH,MAAf,CAAsBM,IAAtB,CAA2BD,mBAA3B;AAEA,0BACKF,cADL;AAEEzG,QAAAA,IAAI,EAAEyG,cAAc,CAACzG,IAAf,IAAuB0G,uBAAuB,CAAC1G,IAFvD;AAGEnC,QAAAA,SAAS,EACP4I,cAAc,CAAC5I,SAAf,IAA4B6I,uBAAuB,CAACG;AAJxD;AAMD,KArBH,eAuBON,MAvBP;AAwBI1I,MAAAA,SAAS,EAAE,IAxBf;AAyBI0B,MAAAA,SAzBJ;AA0BIS,MAAAA,IAAI,EAAE,IA1BV;AA2BIsG,MAAAA,MAAM,EAAE;AA3BZ;AAN8B;AAAA,CAAzB;AAqCP,AAAO,MAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CAChC5M,MADgC,EAEhC6M,WAFgC;AAAA,MAEhCA,WAFgC;AAEhCA,IAAAA,WAFgC,GAEiB,EAFjB;AAAA;;AAAA,SAIhCC,MAAM,CAACC,OAAP,CAAe/M,MAAf,EAAuBsM,MAAvB,CACE,CAACU,eAAD;QAAkB,CAAC3H,SAAD,EAAY8F,cAAZ;AAChB,UAAM8B,UAAU,GACdtE,sBAAsB,CAAC3I,MAAD,CAAtB,IAAkCqF,SAAS,KAAK,QADlD;AAEA,UAAM6H,IAAI,GAAG,CAACxH,QAAQ,CAACyF,cAAD,CAAT,IAA6B8B,UAA1C;;AAEA,QAAIC,IAAJ,EAAU;AACR,aAAOF,eAAP;AACD;;AAED,QAAI,CAACnH,sBAAsB,CAACsF,cAAD,CAA3B,EAA6C;AAC3C,aAAO,CACL,GAAG6B,eADE;AAGL,SAAGJ,kBAAkB,CAAC5M,MAAM,CAACqF,SAAD,CAAP,EAAoB,CACvC,GAAGwH,WADoC,EAEvCxH,SAFuC,CAApB,CAHhB,CAAP;AAQD;;AAED,UAAMkH,cAAc,GAAGJ,gBAAgB,CACrChB,cAAc,CAACiB,MADsB,EAErC7G,gBAAgB,CAAC,CACf,GAAGsH,WADY,EAEfxH,SAFe,CAAD,CAFqB,EAMrC;AACE;AACA6G,MAAAA,YAAY,EAAEf,cAAc,CAACQ,KAF/B;AAGE1F,MAAAA,YAAY,EAAEkF,cAAc,CAAClF;AAH/B,KANqC,CAAvC;AAaA,WAAO,CAAC,GAAG+G,eAAJ,EAAqBT,cAArB,CAAP;AACD,GAnCH,EAoCE,EApCF,CAJgC;AAAA,CAA3B;;IC5EMd,qBAAb;AAGE,iCAAoB9D,KAApB;;;AAAoB,cAAA,GAAAA,KAAA;AAFZ,wBAAA,GAA4C,EAA5C;AAGN,SAAKwF,sBAAL;AACD;;AALH;AAAA;AAAA,SAOE;AACE,aAAO,KAAKH,eAAZ;AACD;AATH;AAAA;AAAA,WAWS,cAAKI,SAAL;AACL,WAAK,MAAMb,cAAX,IAA6B,KAAKS,eAAlC,EAAmD;AACjD,YAAII,SAAS,CAACb,cAAD,CAAb,EAA+B;AAC7B,iBAAOA,cAAP;AACD;AACF;;AAED,aAAO,IAAP;AACD;AAnBH;AAAA;AAAA,WAqBS,gBAAOc,QAAP;AACL,aAAO,KAAKL,eAAL,CAAqBjF,MAArB,CAA4BsF,QAA5B,CAAP;AACD;AAvBH;AAAA;AAAA,WAyBS,aACLA,QADK;AAGL,aAAO,KAAKL,eAAL,CAAqB9N,GAArB,CAAyBmO,QAAzB,CAAP;AACD;AA7BH;AAAA;AAAA,WA+BS,gBACLA,QADK,EAELC,OAFK;AAIL,aAAO,KAAKN,eAAL,CAAqBV,MAArB,CAA4Be,QAA5B,EAAsCC,OAAtC,CAAP;AACD;AApCH;AAAA;AAAA,WAsCS;AACL,aAAO,KAAKN,eAAL,CAAqB1P,MAArB,GAA8B,CAArC;AACD;AAxCH;AAAA;AAAA,WA0CU;AACN,UAAI,KAAKqK,KAAL,CAAWpJ,QAAX,IAAuB,KAAKoJ,KAAL,CAAWpJ,QAAX,CAAoBjB,MAA/C,EAAuD;AACrD,aAAK0P,eAAL,CAAqBN,IAArB,CACEP,gBAAgB,CAAC,KAAKxE,KAAL,CAAWpJ,QAAZ,EAAsB,QAAtB,CADlB;AAGD;;AAED,UAAI,KAAKoJ,KAAL,CAAW3H,MAAf,EAAuB;AACrB,aAAKgN,eAAL,CAAqBN,IAArB,CAA0B,GAAGE,kBAAkB,CAAC,KAAKjF,KAAL,CAAW3H,MAAZ,CAA/C;AACD;AACF;AApDH;;AAAA;AAAA;;MCCauN,UAAU,GACrBvN,MADwB,IAGxB8M,MAAM,CAACC,OAAP,CAAe/M,MAAf,EAAuBsM,MAAvB,CAA8B,CAACkB,UAAD;MAAa,CAACnI,SAAD,EAAY8F,cAAZ;AACzC,MAAIsC,MAAM,GAAG9H,KAAK,CAACC,OAAN,CAAcuF,cAAd,IACTA,cAAc,CAACjM,GAAf,CAAmB8G,iBAAnB,CADS,GAETA,iBAAiB,CAACmF,cAAD,CAFrB;;AAIA,MAAIzF,QAAQ,CAAC+H,MAAD,CAAZ,EAAsB;AACpB,wBACKD,UADL;AAEE,OAACnI,SAAD,GAAakI,UAAU,CAACpC,cAAD;AAFzB;AAID;;AAED,sBACKqC,UADL;AAEE,KAACnI,SAAD,GAAaoI;AAFf;AAID,CAhBD,EAgBG,EAhBH,CAHK;;ACHA,MAAMC,gBAAgB,GAAG,IAAzB;AAEP,AAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,EAAE,EAAE,EADmB;AAEvBC,EAAAA,EAAE,EAAE;AAFmB,CAAlB;AAKPC,IAAI,CACDC,GADH,CACOC,6BADP,EAEGC,IAFH,CAEQ;AACJC,EAAAA,WAAW,EAAER,gBADT;AAEJS,EAAAA,EAAE,EAAErB,MAAM,CAACsB,IAAP,CAAYT,SAAS,CAACD,gBAAD,CAArB,CAFA;AAGJW,EAAAA,aAAa,EAAE;AACbC,IAAAA,WAAW,EAAE;AADA,GAHX;AAMJX,EAAAA,SANI;AAOJY,EAAAA,aAAa,EAAEzB,MAAM,CAACsB,IAAP,CAAYT,SAAZ;AAPX,CAFR;;MCPaa,eAAe,GAAG,CAAC5Q,KAAD,EAAoB6Q,KAApB;;;AAC7B,QAAMC,QAAQ,GAAGlL,OAAO,CAAC,qBAAA5F,KAAK,CAAC+F,SAAN,sCAAiBmC,IAAjB,MAA0B,QAA3B,CAAxB;AACA,QAAM6I,MAAM,GAAGnL,OAAO,CAAC,sBAAA5F,KAAK,CAAC+F,SAAN,uCAAiBmC,IAAjB,MAA0B,UAA3B,CAAtB;AACA,QAAM;AAAEtB,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAemK,cAAc,CAAChR,KAAD,EAAQ8Q,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;;AAEA,MAAIjK,IAAI,KAAK,IAAb,EAAmB;AACjB,WAAUC,EAAV,UAAgBkK,MAAM,GAAGb,IAAI,CAACe,CAAL,CAAO,WAAP,EAAoB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAApB,CAAH,GAA0CL,IAAI,CAACe,CAAL,CAAO,SAAP,EAAkB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAlB,CAAhE;AACD;;AAED,MAAI1J,EAAE,KAAK,IAAX,EAAiB;AACf,YAAUkK,MAAM,GAAGb,IAAI,CAACe,CAAL,CAAO,OAAP,EAAgB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAhB,CAAH,GAAsCL,IAAI,CAACe,CAAL,CAAO,MAAP,EAAe;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAf,CAAtD,UAAyF3J,IAAzF;AACD;;AAED,SAAOA,IAAI,KAAKC,EAAT,QAAiBD,IAAjB,GAA6BA,IAA7B,WAAuCC,EAA9C;AACD,CAdM;;AAgBP,SAASmK,cAAT,OAEEF,QAFF,EAGEC,MAHF,EAIEF,KAJF;MACE;AAAEjK,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EAAEA,IAAI,KAAK,IAAT,IAAiBiK,KAAK,KAAK,CAA3B,GACHE,MAAM,GAAGnK,IAAH,GAAWkK,QAAQ,GAAG,CAAClK,IAAJ,GAAW,CAACA,IAAD,GAAQ,CADzC,GAC+CA,IAFhD;AAGLC,IAAAA;AAHK,GAAP;AAKD;;MC5BYqK,WAAW,GAAIC,WAAD,IACzBA,WAAW,GAAG,IAAIC,WAAJ,CAAUD,WAAV,EAAuBE,QAAvB,CAAgC,KAAhC,CAAH,GAA4CC,SADlD;;ACFP;AACA,MAAaC,cAAc,GAAG;AAC5BC,EAAAA,gBAAgB,EAAE,IADU;AAE5BC,EAAAA,gBAAgB,EAAE;AAFU,CAAvB;;SCDSC,MAAMC,KAAaC,KAAaC;AAC9C,SAAOC,IAAI,CAACF,GAAL,CAASE,IAAI,CAACD,GAAL,CAASF,GAAT,EAAcC,GAAd,CAAT,EAA6BC,GAA7B,CAAP;AACD;;ACFD;AACA,MAyBaE,eAAe,GAAa,EAAlC;AAEP,MAAaC,sBAAsB,GAAsB;AACvDjI,EAAAA,KAAK;;AADkD;AAEvD7B,EAAAA,IAAI,EAAE,OAFiD;AAGvD+J,EAAAA,SAAS,EAAEF;AAH4C,CAAlD;AAKP,MAAaG,kBAAkB,GAAwB,CACrDF,sBADqD,EAErD;AACEjI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAFqD,EAOrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAPqD,EAYrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAZqD,EAiBrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB;AAHb,CAjBqD,EAsBrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAtBqD,CAAhD;;AA6BP,MAAME,kBAAkB,GAAG,CACzBC,OADyB,EAEzBhF,MAFyB,EAGzBiF,MAHyB;AAKzB,MAAI,CAACD,OAAD,IAAY,CAACA,OAAO,CAAC1S,MAAzB,EAAiC,OAAO,EAAP;AAEjC,QAAM4S,UAAU,GAAG,EAAnB;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,OAAO,CAAC1S,MAA5B,EAAoC6S,CAAC,EAArC,EAAyC;AACvC,QAAIA,CAAC,GAAG,CAAR,EAAW;AACTD,MAAAA,UAAU,CAACxD,IAAX,CAAgB,GAAGuD,MAAM,CAAC,CAACD,OAAO,CAACG,CAAC,GAAG,CAAL,CAAR,EAAiBH,OAAO,CAACG,CAAD,CAAxB,CAAD,EAA+BnF,MAA/B,CAAzB;AACD;AACF;;AAED,SAAOkF,UAAP;AACD,CAhBD;;AAkBA,MAAaE,WAAW,GAAG,CAACJ,OAAD,EAAoBK,KAApB,KACzBN,kBAAkB,CAChBC,OADgB,EAEhBV,KAAK,CACHtJ,iBAAiB,CAACqK,KAAD,CADd,EAEHlB,cAAc,CAACC,gBAFZ,EAGHD,cAAc,CAACE,gBAHZ,CAFW,EAOhB,OAAgBrE,MAAhB;AAAA,MAAC,CAAC1N,MAAD,EAASgT,GAAT,CAAD;AAAA,SAA2B,CAAChT,MAAM,GAAG0N,MAAV,EAAkBsF,GAAG,GAAGtF,MAAxB,CAA3B;AAAA,CAPgB,CADb;AAWP,MAAauF,UAAU,GAAG,CAACP,OAAD,EAAoBK,KAApB,KACxBN,kBAAkB,CAChBC,OADgB,EAEhBV,KAAK,CACHtJ,iBAAiB,CAACqK,KAAD,CADd,EAEHlB,cAAc,CAACC,gBAFZ,EAGHD,cAAc,CAACE,gBAHZ,CAFW,EAOhB,QAAgBrE,MAAhB;AAAA,MAAC,CAAC1N,MAAD,EAASgT,GAAT,CAAD;AAAA,SAA2B,CACzBZ,IAAI,CAACc,KAAL,CAAWlT,MAAM,GAAGoS,IAAI,CAACD,GAAL,CAAS,CAAT,EAAYC,IAAI,CAACF,GAAL,CAASxE,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAApB,CADyB,EAEzB0E,IAAI,CAACc,KAAL,CAAWF,GAAG,GAAG,CAAN,GAAUZ,IAAI,CAACD,GAAL,CAAS,CAAT,EAAYC,IAAI,CAACF,GAAL,CAASxE,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAArB,CAFyB,CAA3B;AAAA,CAPgB,CADb;AAcP,MAAayF,WAAW,GAAIC,KAAD;AACzB,MAAI,CAACA,KAAD,IAAUA,KAAK,CAAC5K,IAAN,KAAe,OAA7B,EAAsC,OAAO,EAAP;;AAGtC,SAAOyK,UAAU,CAACG,KAAK,CAACb,SAAP,EAAkBa,KAAK,CAACL,KAAxB,CAAjB;AACD,CALM;AAOP,MAAaM,uBAAuB,GAAId,SAAD;AACrC,MAAI,CAACA,SAAS,CAACvS,MAAf,EAAuB,OAAOsS,sBAAP;AAEvB,SAAOE,kBAAkB,CAAChN,IAAnB,CAAwB8N,MAAM;AACnC,QAAIA,MAAM,CAACf,SAAP,CAAiBvS,MAAjB,KAA4BuS,SAAS,CAACvS,MAA1C,EAAkD,OAAO,KAAP;AAElD,UAAMuT,kBAAkB,GAAGD,MAAM,CAACf,SAAP,CACxB3Q,GADwB,CACpB,CAAC4R,cAAD,EAAiBX,CAAjB,KAAuBN,SAAS,CAACM,CAAD,CAAT,GAAeW,cADlB,EAExB/I,MAFwB,CAEjBgJ,UAFiB,CAA3B;AAIA,WAAOF,kBAAkB,CAACvT,MAAnB,KAA8B,CAArC;AACD,GARM,CAAP;AASD,CAZM;AAcP,MAAa0T,kBAAkB,GAC7BC,SADgC,IAGhCnB,kBAAkB,CAAChN,IAAnB,CAAwB8N,MAAM,IAAIA,MAAM,CAACjJ,KAAP,KAAiBsJ,SAAnD,CAHK;;AC/GP,MAAMC,gBAAgB,GAAG,KAAzB;;AAEA,MAAMC,GAAG,GAAInB,OAAD,IACVA,OAAO,CAAC1D,MAAR,CAAe,CAACmB,MAAD,EAAS8B,GAAT,KAAiB9B,MAAM,GAAG8B,GAAzC,EAA8C,CAA9C,CADF;;AAGA,MAAM6B,oBAAoB,GAAG,CAC3BC,UAD2B,EAE3BC,UAF2B,EAG3B3Q,CAH2B,EAI3BC,CAJ2B;AAM3B,QAAM2Q,MAAM,GAAG7B,IAAI,CAACc,KAAL,CAAWa,UAAU,GAAG,CAAxB,CAAf;;AAEA,MAAI,CAACC,UAAU,KAAK,CAAf,IAAoBA,UAAU,KAAK5B,IAAI,CAAC8B,EAAzC,KAAgD7Q,CAAC,KAAK4Q,MAA1D,EAAkE;AAChE,WAAO,IAAP;AACD;;AACD,MAAID,UAAU,KAAK5B,IAAI,CAAC8B,EAAL,GAAU,CAAzB,IAA8B5Q,CAAC,KAAKD,CAAxC,EAA2C;AACzC,WAAO,IAAP;AACD;;AACD,MAAI2Q,UAAU,KAAK5B,IAAI,CAAC8B,EAAL,GAAU,CAAzB,IAA8B5Q,CAAC,KAAK2Q,MAAxC,EAAgD;AAC9C,WAAO,IAAP;AACD;;AAED,SAAOD,UAAU,KAAM,IAAI5B,IAAI,CAAC8B,EAAV,GAAgB,CAA/B,IAAoCH,UAAU,GAAG,CAAb,GAAiBzQ,CAAjB,KAAuBD,CAAlE;AACD,CAnBD;;AAqBA,MAAM8Q,iBAAiB,GAAIC,IAAD,IACxB/L,KAAK,CAAC+L,IAAD,CAAL,CACG3H,IADH,CACQ,IADR,EAEG7K,GAFH,CAEO,MAAMyG,KAAK,CAAC+L,IAAD,CAFlB,CADF;;AAKA,MAAMC,UAAU,GAAG,CACjBC,MADiB,EAEjBC,MAFiB;AAIjB,QAAMR,UAAU,GAAGO,MAAM,CAACtU,MAA1B;;AAEA,OAAK,IAAIqD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,UAApB,EAAgC1Q,CAAC,EAAjC,EAAqC;AACnC,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyQ,UAApB,EAAgCzQ,CAAC,EAAjC,EAAqC;AACnCgR,MAAAA,MAAM,CAACjR,CAAD,CAAN,CAAUC,CAAV,IAAeiR,MAAM,CAAClR,CAAD,EAAIC,CAAJ,EAAOyQ,UAAP,CAArB;AACD;AACF;AACF,CAXD;;AAaA,MAAMS,qBAAqB,GAAG,CAC5BR,UAD4B,EAE5BS,UAF4B,EAG5BC,aAH4B;AAK5B,QAAMX,UAAU,GAAG3B,IAAI,CAACD,GAAL,CACjBC,IAAI,CAACc,KAAL,CAAWW,GAAG,CAAC,CAACzB,IAAI,CAACD,GAAL,CAAS,GAAGuC,aAAZ,CAAD,EAA6BD,UAA7B,CAAD,CAAd,CADiB,EAEjBA,UAFiB,CAAnB;AAIA,QAAMH,MAAM,GAAGH,iBAAiB,CAACJ,UAAD,CAAhC;AAEAM,EAAAA,UAAU,CAACC,MAAD,EAAS,CAACjR,CAAD,EAAIC,CAAJ,EAAO8Q,IAAP,KACjBN,oBAAoB,CAACM,IAAD,EAAOJ,UAAP,EAAmB3Q,CAAnB,EAAsBC,CAAtB,CAApB,GAA+C,GAA/C,GAAqD,CAD7C,CAAV;AAIA,SAAOgR,MAAP;AACD,CAhBD;;AAkBA,MAAMK,qBAAqB,GACzBC,SAD4B;AAG5B,MAAIA,SAAS,CAACpM,IAAV,KAAmB,OAAvB,EAAgC,OAAOoJ,SAAP;AAEhC,SAAO4C,qBAAqB;AAE1B9L,EAAAA,iBAAiB,CAACkM,SAAS,CAACZ,UAAX,CAFS;AAI1B5B,EAAAA,IAAI,CAACc,KAAL,CAAW0B,SAAS,CAACH,UAArB,CAJ0B,EAK1BG,SAAS,CAACF,aALgB,CAA5B;AAOD,CAZD;;AAcA,IAAaG,aAAb;AAAA;;AAAA;;AACE,yBAAmBC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvM,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CALjB;AAMJwJ,MAAAA,cAAc,EAAE3D,WAAW;AAEzB9I,MAAAA,iBAAiB,yBAACoM,cAAc,CAACrI,IAAhB,qBAAC,qBAAqBuI,KAAtB,CAFQ,CANvB;AAUJI,MAAAA,cAAc,EAAEhJ,YAAY,CAAC0I,cAAc,CAACrI,IAAhB,CAAZ;AAEZ+E,MAAAA,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACrI,IAAhB,qBAAC,sBAAqB4I,UAAtB,CAAlB,CAFC,GAGZ,KAAK,CAbL;AAcJT,MAAAA,SAAS,EAAED,qBAAqB,CAACG,cAAc,CAACrI,IAAhB,CAd5B;AAeJ6I,MAAAA,OAAO,EAAE;AAfL,KAAN;AADiB,wBAAA,GAAAR,cAAA;;AAkBlB;;AAnBH;AAAA;AAAA,WAqBE;AACE;AACA,UAAI,CAAC,KAAKS,YAAV,EAAwB;AAExB,YAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,YAAMC,GAAG,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAZ;;AAEA,UAAI,CAACD,GAAL,EAAU;AACR;AACD;;AAED,YAAMvC,KAAK,GAAG,KAAKwB,SAAnB;AACA,YAAMiB,SAAS,GAAGzC,KAAK,CAACpT,MAAxB;AACA,YAAM8V,UAAU,GAAG,IAAIpE,WAAJ,CAAU,KAAK0D,cAAf,CAAnB;AACA,YAAMW,UAAU,GAAG,IAAIrE,WAAJ,CAAU,KAAKyD,cAAf,CAAnB;AAEAK,MAAAA,MAAM,CAACQ,MAAP,GAAgBH,SAAhB;AACAL,MAAAA,MAAM,CAACzC,KAAP,GAAe8C,SAAf;;AACA,WAAK,IAAIhD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgD,SAApB,EAA+BhD,CAAC,EAAhC,EAAoC;AAClC;AACA,aAAK,IAAIoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG7C,KAAK,CAACP,CAAD,CAAL,CAAS7S,MAA7B,EAAqCiW,CAAC,EAAtC,EAA0C;AACxC,gBAAMC,IAAI,GAAI9C,KAAK,CAACP,CAAD,CAAL,CAASoD,CAAT,IAAcH,UAAU,CAACK,CAA1B,GAA+BvC,gBAA5C;AACA,gBAAMwC,IAAI,GAAIL,UAAU,CAACI,CAAX,GAAe,GAAhB,IAAwB,IAAID,IAA5B,CAAb;AACA,gBAAMG,KAAK,GAAG,CAACjE,IAAI,CAACF,GAAL,CAAS,CAAT,EAAYgE,IAAI,GAAGE,IAAnB,EAAyBE,OAAzB,CAAiC,CAAjC,CAAf;AACA,gBAAMC,GAAG,GAAGnE,IAAI,CAACc,KAAL,CACVd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACS,CAAX,GAAeJ,IAAf,GAAsBN,UAAU,CAACU,CAAX,GAAeN,IAAnD,CADU,CAAZ;AAGA,gBAAMO,KAAK,GAAGrE,IAAI,CAACc,KAAL,CACZd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACW,CAAX,GAAeN,IAAf,GAAsBN,UAAU,CAACY,CAAX,GAAeR,IAAnD,CADY,CAAd;AAGA,gBAAMS,IAAI,GAAGvE,IAAI,CAACc,KAAL,CACXd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACa,CAAX,GAAeR,IAAf,GAAsBN,UAAU,CAACc,CAAX,GAAeV,IAAnD,CADW,CAAb;AAIAP,UAAAA,GAAG,CAACkB,SAAJ,aAAwBN,GAAxB,SAA+BE,KAA/B,SAAwCE,IAAxC,SAAgDN,KAAhD;AACAV,UAAAA,GAAG,CAACmB,QAAJ,CAAab,CAAb,EAAgBpD,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB;AACD;AACF;;AACD,WAAKkE,MAAL,GAAc,IAAIC,KAAJ,EAAd;AACA,WAAKD,MAAL,CAAYE,GAAZ,GAAkBzB,MAAM,CAAC0B,SAAP,EAAlB;AACD;AA7DH;AAAA;AAAA,WA+DE;AACE,aAAO,IAAIrC,aAAJ,CAAkB,KAAKC,cAAvB,CAAP;AACD;AAjEH;;AAAA;AAAA,EAAmCqC,mBAAnC;;IClFaC,aAAb;AAAA;;AAAA;;AACE,yBAAmBtC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvM,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CALjB;AAMJsL,MAAAA,GAAG,6BAA2BnC,cAAc,CAACrI,IAAf,CAAoB4K,OAN9C;AAOJ/B,MAAAA,OAAO,EAAEhJ,aAAa,CAACwI,cAAc,CAACnJ,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAPvD,KAAN;AADiB,wBAAA,GAAAmJ,cAAA;;AAUlB;;AAXH;AAAA;AAAA,WAaE;AACE,aAAO,IAAIsC,aAAJ,CAAkB,KAAKtC,cAAvB,CAAP;AACD;AAfH;;AAAA;AAAA,EAAmCwC,mBAAnC;;ICAaC,iBAAb;AAAA;;AAAA;;AACE,6BAAmBzC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvM,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CALjB;AAMJ;AACA6L,MAAAA,SAAS,EAAEhG,WAAW,CAAC9I,iBAAiB,yBAACoM,cAAc,CAACrI,IAAhB,qBAAC,qBAAqBuI,KAAtB,CAAlB,CAPlB;AAQJ;AACAM,MAAAA,OAAO,EAAEhJ,aAAa,CAACwI,cAAc,CAACnJ,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AATvD,KAAN;AADiB,wBAAA,GAAAmJ,cAAA;;AAYlB;;AAbH;AAAA;AAAA,WAeE;AACE,aAAO,IAAIyC,iBAAJ,CAAsB,KAAKzC,cAA3B,CAAP;AACD;AAjBH;;AAAA;AAAA,EAAuC2C,oBAAvC;;ACUA,MAAMC,eAAe,GAAG,CACtBC,KADsB,EAEtBrT,UAFsB,EAGtBsT,OAHsB,EAItBC,KAJsB;AAMtB,QAAMC,SAAS,GAAGC,qBAAY,CAACJ,KAAD,EAAQC,OAAR,EAAiBC,KAAjB,CAA9B;AAEA,SAAOG,wBAAmB,CACxBF,SAAS,CAAClW,GAAV,CAAcqW,IAAI;AAEhBA,EAAAA,IAAI,CAACrW,GAAL,CAAS;AAAA,QAAC,CAACyB,CAAD,EAAIC,CAAJ,CAAD;AAAA,WAAY,CAACD,CAAC,GAAGiB,UAAL,EAAiBhB,CAAC,GAAG,CAACgB,UAAtB,CAAZ;AAAA,GAAT,CAFF,CADwB,EAKxB,CALwB,CAA1B;AAOD,CAfD;;AAiBA,MAAM4T,cAAc,GAA2D;AAC7E;;AAAA,KAAuBjD,WAAW,IAAI,CAACA,WAAW,GAAG,CAAf,IAAoB,CAApB,GAAwB,CADe;AAE7E;;AAAA,KAAuBA,WAAW,IAAI,CAACA,WAAW,GAAG,CAAf,IAAoB,CAApB,GAAwB;AAFe,CAA/E;AAKA,IAAsBkD,eAAtB;AAYE,2BAAYC,QAAZ;;;AAIA,kBAAA,GAAaT,KAAD;AACV,UAAI,KAAKzT,QAAL,KAAkB,OAAtB,EAA+B;AAC7B,cAAMmU,QAAQ,GAAGV,KAAK,CAACA,KAAK,CAAC3X,MAAN,GAAe,CAAhB,CAAtB;AAEA,eAAQqY,QAAQ,IAAIA,QAAQ,CAACA,QAAQ,CAACrY,MAAT,GAAkB,CAAnB,CAArB,IAA+C,IAAtD;AACD;;AAED,YAAMsY,SAAS,GAAGX,KAAK,CAAC,CAAD,CAAvB;AAEA,aAAQW,SAAS,IAAIA,SAAS,CAAC,CAAD,CAAvB,IAA+B,IAAtC;AACD,KAVD;;AAHE9I,IAAAA,MAAM,CAAC+I,MAAP,CAAc,IAAd,EAAoBH,QAApB;AACD;;AAdH;AAAA;AAAA,WA4BE,mBACEI,WADF,EAEEC,SAFF,EAGEnU,UAHF,EAIEoU,UAJF;AAME,YAAMC,WAAW,GAAG,KAAKzU,QAAL,KAAkB,OAAlB,GAA4B,CAA5B,GAAgC,CAAC,CAArD;AACA,YAAM0U,WAAW,GAAG,KAAKC,SAAL,CAAeL,WAAf,CAApB;AACA,YAAMM,UAAU,GAAG,KAAKC,WAAL,CAAiBH,WAAjB,EAA8BD,WAA9B,CAAnB;AACA,YAAMK,mBAAmB,GAAGtB,eAAe,CACzCoB,UADyC,EAEzCxU,UAFyC,EAGzCmU,SAHyC,EAIzCC,UAJyC,CAA3C;AAOA,aAAO,KAAKO,YAAL,CAAkBD,mBAAlB,CAAP;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAME,aAAa,GAAGhB,cAAc,CAAC,KAAK9D,IAAN,CAApC;AAEA,aAAO8E,aAAa,GAAGA,aAAa,CAAC,KAAKjE,WAAN,CAAhB,GAAqC,CAAzD;AACD;AAnDH;;AAAA;AAAA;;ICnCakE,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKC,SAAL,GAAiB,KAAKnE,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC0D,WAAjC;UAAY,CAACtV,CAAD,EAAIC,CAAJ;AACV,aAAO,CACL,CACE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/V,CAAC,GAAG,KAAK+V,SAAL,GAAiBT,WAAtB,EAAmCrV,CAAnC,CAFF,EAGE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CAHF,CADK,CAAP;AAOD;AAZH;AAAA;AAAA,WAcE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAczM,kBAAc,CAACI,WAA9C;AAEA,aAAO,IAAIsM,eAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAEH,QADsB;AAEhC7B,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,KAAK,CAFR;AAGhC6B,QAAAA,SAAS,EAAEwC,QAAQ,GAAGI,cAAS,CAAC/H,KAAb,GAAqB+H,cAAS,CAAC3M,IAHlB;AAIhCwI,QAAAA,OAAO,EAAE,QAJuB;AAKhCoE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3E,QAAAA,WAAW,EAAE,KAAKC,KANc;AAOhCC,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA1BH;;AAAA;AAAA,EAA0CkD,eAA1C;;ICCawB,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKP,SAAL,GAAiB,KAAKnE,WAAL,GAAmB,CAA3C;AACD;AAHH;AAAA;AAAA,WAKE,2BAAiC0D,WAAjC;UAAY,CAACtV,CAAD,EAAIC,CAAJ;AACV,aAAO,CAAC,CAAC,CAACD,CAAC,GAAG,CAAC,KAAK+V,SAAL,GAAiB,CAAjB,GAAqB,KAAKnE,WAA3B,IAA0C0D,WAA/C,EAA4DrV,CAA5D,CAAD,CAAD,CAAP;AACD;AAPH;AAAA;AAAA,WASE,sBAAawV,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAczM,kBAAc,CAACG,YAA9C;AAEA,aAAO,IAAIuM,eAAJ,CACLK,sBAAsB,CAACd,UAAU,CAAC,CAAD,CAAV,CAAc,CAAd,CAAD,EAAmB,KAAKM,SAAxB,CADjB,EAEL;AACE5B,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,aADrC;AAEED,QAAAA,WAAW,EAAE,KAAKC,KAFpB;AAGEC,QAAAA,WAAW,EAAE,KAAKA,WAHpB;AAIEuE,QAAAA,QAAQ,EAAE;AAJZ,OAFK,CAAP;AASD;AArBH;;AAAA;AAAA,EAA2CrB,eAA3C;;ICDa0B,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKT,SAAL,GAAiB,KAAKnE,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC0D,WAAjC;UAAY,CAACtV,CAAD,EAAIC,CAAJ;AACV,aAAO,CACL,CACE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/V,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CAFF,EAGE,CAAC/V,CAAC,GAAG,KAAK+V,SAAL,GAAiBT,WAAtB,EAAmCrV,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAxD,CAHF,EAIE,CAAC/V,CAAC,GAAG,KAAK+V,SAAL,GAAiBT,WAAtB,EAAmCrV,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAxD,CAJF,CADK,CAAP;AAQD;AAbH;AAAA;AAAA,WAeE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAczM,kBAAc,CAACK,YAA9C;AAEA,aAAO,IAAIqM,eAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAE,IADsB;AAEhChC,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,KAAK,CAFR;AAGhC6B,QAAAA,SAAS,EAAEwC,QAAQ,GAAGI,cAAS,CAAC/H,KAAb,GAAqB+H,cAAS,CAAC3M,IAHlB;AAIhCwI,QAAAA,OAAO,EAAE,QAJuB;AAKhCoE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3E,QAAAA,WAAW,EAAE,KAAKC,KANc;AAOhCC,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA3BH;;AAAA;AAAA,EAA2CkD,eAA3C;;ACCO,MAAM2B,kBAAkB,GAC7BC,OADgC;AAGhC,UAAQA,OAAO,CAACT,IAAhB;AACE,SAAKzM,kBAAc,CAACO,KAApB;AACA,SAAKP,kBAAc,CAACI,WAApB;AACE,aAAO,IAAIkM,oBAAJ,CAAyBY,OAAzB,CAAP;;AACF,SAAKlN,kBAAc,CAACS,MAApB;AACA,SAAKT,kBAAc,CAACK,YAApB;AACE,aAAO,IAAI2M,qBAAJ,CAA0BE,OAA1B,CAAP;;AACF,SAAKlN,kBAAc,CAACW,MAApB;AACA,SAAKX,kBAAc,CAACG,YAApB;AACE,aAAO,IAAI2M,qBAAJ,CAA0BI,OAA1B,CAAP;;AACF;AACE,aAAO,IAAP;AAXJ;AAaD,CAhBM;;ACHP,MAAMC,uBAAuB,GAAG,CAC9B/B,IAD8B,EAE9BmB,SAF8B,EAG9Ba,UAH8B;AAK9B,QAAMC,YAAY,GAAGjC,IAAI,CAACxT,KAAL,GAAa0V,OAAb,EAArB;;AAEA,OAAK,IAAItH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqH,YAAY,CAACla,MAAjC,EAAyC6S,CAAC,EAA1C,EAA8C;AAC5C,UAAMuH,WAAW,GAAGF,YAAY,CAACrH,CAAD,CAAhC;;AAEA,QAAIoH,UAAU,IAAIpH,CAAC,KAAK,CAAxB,EAA2B;AACzBqH,MAAAA,YAAY,CAACrH,CAAD,CAAZ,GAAkB,CAACuH,WAAW,CAAC,CAAD,CAAX,GAAiBhB,SAAlB,EAA6BgB,WAAW,CAAC,CAAD,CAAxC,CAAlB;AACD;;AAED,UAAMC,eAAe,GAAGH,YAAY,CAACrH,CAAC,GAAG,CAAL,CAApC;;AAEA,QAAIwH,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqBD,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1DF,MAAAA,YAAY,CAACrH,CAAD,CAAZ,GAAkB,CAChBwH,eAAe,CAAC,CAAD,CAAf,GAAqBjI,IAAI,CAACkI,GAAL,CAASD,eAAe,CAAC,CAAD,CAAf,GAAqBD,WAAW,CAAC,CAAD,CAAzC,CADL,EAEhBA,WAAW,CAAC,CAAD,CAFK,CAAlB;AAID;AACF;;AAED,SAAOF,YAAY,CAACC,OAAb,EAAP;AACD,CAzBD;;AA2BA,MAAMI,sBAAsB,GAAG,CAC7BtC,IAD6B,EAE7BmB,SAF6B,EAG7BoB,WAH6B;AAK7B,QAAMC,OAAO,GAAGxC,IAAI,CAACxT,KAAL,EAAhB;;AAEA,OAAK,IAAIoO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4H,OAAO,CAACza,MAA5B,EAAoC6S,CAAC,EAArC,EAAyC;AACvC,UAAMuH,WAAW,GAAGK,OAAO,CAAC5H,CAAD,CAA3B;;AAEA,QAAIA,CAAC,KAAK,CAAN,IAAW2H,WAAf,EAA4B;AAC1BC,MAAAA,OAAO,CAAC5H,CAAD,CAAP,GAAa,CAACuH,WAAW,CAAC,CAAD,CAAX,GAAiBhB,SAAlB,EAA6BgB,WAAW,CAAC,CAAD,CAAxC,CAAb;AACD;;AAED,UAAMM,eAAe,GAAGD,OAAO,CAAC5H,CAAC,GAAG,CAAL,CAA/B;;AAEA,QAAI6H,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqBN,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1DK,MAAAA,OAAO,CAAC5H,CAAD,CAAP,GAAa,CACX6H,eAAe,CAAC,CAAD,CAAf,GAAqBtI,IAAI,CAACkI,GAAL,CAASF,WAAW,CAAC,CAAD,CAAX,GAAiBM,eAAe,CAAC,CAAD,CAAzC,CADV,EAEXN,WAAW,CAAC,CAAD,CAFA,CAAb;AAID;AACF;;AAED,SAAOK,OAAP;AACD,CAzBD;;AA2BA,AAAO,MAAME,mBAAmB,GAAG,CACjChD,KADiC,EAEjCzT,QAFiC,EAGjCkV,SAHiC;AAKjC,SAAOzB,KAAK,CAAC/V,GAAN,CAAU,CAACqW,IAAD,EAAO2C,SAAP;AACf,YAAQ1W,QAAR;AACE,WAAK,OAAL;AACE,eAAO8V,uBAAuB,CAC5B/B,IAD4B,EAE5BmB,SAF4B,EAG5BwB,SAAS,KAAKjD,KAAK,CAAC3X,MAAN,GAAe,CAHD,CAA9B;;AAKF;AACE,eAAOua,sBAAsB,CAACtC,IAAD,EAAOmB,SAAP,EAAkBwB,SAAS,KAAK,CAAhC,CAA7B;AARJ;AAUD,GAXM,CAAP;AAYD,CAjBM;;MCpCMC,SAAS,GAAIlD,KAAD,IACvBA,KAAK,CAAC/V,GAAN,CAAUqW,IAAI,IACZA,IAAI,CAACrW,GAAL,CAASwY,WAAW,IAAIA,WAAW,CAAC3V,KAAZ,EAAxB,CADF,CADK;AAKP,IAAaqW,kBAAb;AAAA;;AAAA;;AACE,8BAAmBhG,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJC,MAAAA,WAAW,EAAEjD,KAAK;AAEhBtJ,MAAAA,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAFD,EAGhBlB,cAAc,CAACC,gBAHC,EAIhBD,cAAc,CAACE,gBAJC,CAHd;AASJ;AACAmD,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CAVjB;AAWJ;AACA2J,MAAAA,OAAO,EAAEhJ,aAAa,CAACwI,cAAc,CAACnJ,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAZvD,KAAN;AADiB,wBAAA,GAAAmJ,cAAA;;AAelB;;AAhBH;AAAA;AAAA,WAkBE,wBAAelP,OAAf,EAAkCtB,UAAlC,EAAsDU,GAAtD;AACE,UAAI,CAACkG,sBAAsB,CAAC,KAAK4J,cAAN,CAA3B,EACE,8FAA4BlP,OAA5B,EAAqCtB,UAArC,EAAiDU,GAAjD;AAEF,YAAM;AACJ0G,QAAAA,MADI;AAEJD,QAAAA;AAFI,UAGF,KAAKqJ,cAHT;AAIA,YAAMiG,OAAO,GAAa,EAA1B;AAEA,YAAMC,WAAW,GAAGpV,OAAO,CAACqV,KAAR,EAApB;AAEA,YAAMC,oBAAoB,GAAGpB,kBAAkB,CAAC;AAC9C9E,QAAAA,KAAK,EAAE,KAAKD,WADkC;AAE9C;AACAuE,QAAAA,IAAI,EAAE7N,SAAS,CAACjD,IAH8B;AAI9CtE,QAAAA,QAAQ,EAAE,MAJoC;AAK9C;AACAkQ,QAAAA,IAAI,EAAE3I,SAAS,CAAC2I,IAN8B;AAO9Ca,QAAAA,WAAW,EAAE,KAAKA;AAP4B,OAAD,CAA/C;AASA,YAAMkG,iBAAiB,GAAGrB,kBAAkB,CAAC;AAC3C9E,QAAAA,KAAK,EAAE,KAAKD,WAD+B;AAE3C;AACAuE,QAAAA,IAAI,EAAE5N,MAAM,CAAClD,IAH8B;AAI3CtE,QAAAA,QAAQ,EAAE,OAJiC;AAK3C;AACAkQ,QAAAA,IAAI,EAAE1I,MAAM,CAAC0I,IAN8B;AAO3Ca,QAAAA,WAAW,EAAE,KAAKA;AAPyB,OAAD,CAA5C;;AAUA,UAAIiG,oBAAJ,EAA0B;AACxB,cAAME,YAAY,GAAGT,mBAAmB,CACtCK,WAAW,CAACrD,KAD0B,EAEtC,MAFsC,EAGtCuD,oBAAoB,CAACG,SAHiB,CAAxC;AAKA,cAAMC,MAAM,GAAGJ,oBAAoB,CAACK,SAArB,CACbH,YADa,EAEbxV,OAAO,CAACZ,GAFK,EAGbV,UAHa,EAIbU,GAJa,CAAf;AAOAgW,QAAAA,WAAW,CAACrD,KAAZ,GAAoByD,YAApB;AACAL,QAAAA,OAAO,CAAC3L,IAAR,CAAakM,MAAb;AACD;;AAED,UAAIH,iBAAJ,EAAuB;AACrB,cAAMC,YAAY,GAAGT,mBAAmB,CACtCK,WAAW,CAACrD,KAD0B,EAEtC,OAFsC,EAGtCwD,iBAAiB,CAACE,SAHoB,CAAxC;AAKA,cAAMC,MAAM,GAAGH,iBAAiB,CAACI,SAAlB,CACbH,YADa,EAEbxV,OAAO,CAACZ,GAFK,EAGbV,UAHa,EAIbU,GAJa,CAAf;AAOAgW,QAAAA,WAAW,CAACrD,KAAZ,GAAoByD,YAApB;AACAL,QAAAA,OAAO,CAAC3L,IAAR,CAAakM,MAAb;AACD;;;AAGDP,MAAAA,OAAO,CAACS,OAAR,CAAgB,0FAAwBR,WAAxB,EAAqC1W,UAArC,EAAiDU,GAAjD,CAAhB;AAEA,aAAO+V,OAAP;AACD;AAvFH;AAAA;AAAA,WAyFE;AACE,aAAO,IAAID,kBAAJ,CAAuB,KAAKhG,cAA5B,CAAP;AACD;AA3FH;;AAAA;AAAA,EAAwC2G,6BAAxC;;ICZaC,WAAb;AAAA;;AAAA;;AAGE;;;QAAY;AAAEC,MAAAA,SAAF;AAAajO,MAAAA;AAAb,2BAA2C;;;;AACrD,8BAAM;AAAEA,MAAAA;AAAF,KAAN;AACA,UAAKiO,SAAL,GAAiBA,SAAjB;;AACD;;AANH;AAAA;AAAA,WAQY,yBAAgB/V,OAAhB;AACR,YAAMgW,IAAI,GAAGnG,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAb;AAEA,WAAKmG,SAAL,CAAejW,OAAO,CAACkW,OAAvB,EAAgCF,IAAhC;AAEA,aAAOA,IAAP;AACD;AAdH;AAAA;AAAA,WAgBY,4BAAmBhW,OAAnB;AACR,WAAKiW,SAAL,CAAejW,OAAO,CAACkW,OAAvB,EAAgC,KAAKC,OAAL,CAAanW,OAAb,CAAhC;AACD;AAlBH;AAAA;AAAA,WAoBU,mBAAUkW,OAAV,EAA2BF,IAA3B;AACN,UAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,YAAMI,SAAS,GAAG,KAAKL,SAAvB;;AAEA,UAAIK,SAAJ,EAAe;AACbC,QAAAA,QAAQ,CAACX,MAAT,CAAgBna,4BAAA,CAAC6a,SAAD;AAAWF,UAAAA,OAAO,EAAEA;SAApB,CAAhB,EAAiDF,IAAjD;AACD,OAFD,MAEO;AACLA,QAAAA,IAAI,CAACM,SAAL,GAAiBJ,OAAjB;AACD;AACF;AAhCH;;AAAA;AAAA,EAAiCK,0BAAjC;;MCTaC,aAAa,GAAW,CAAC,CAAD,EAAI,CAAC,EAAL,CAA9B;AAQP,MAAaC,iBAAiB,GAAIC,KAAD;AAC/B,QAAM;AACJ5O,IAAAA,MAAM,GAAG0O,aADL;AAEJG,IAAAA,WAAW,GAAG;AAAA,UAAC;AAAET,QAAAA;AAAF,OAAD;AAAA,aAAsC3a,4BAAA,MAAA,MAAA,EAAM2a,OAAN,CAAtC;AAAA,KAFV;AAGJU,IAAAA,OAAO,GAAG5K;AAHN,MAIF0K,KAAK,IAAI,EAJb;AAMA,SAAO,IAAIZ,WAAJ,CAAgB;AACrBhO,IAAAA,MADqB;AAErBiO,IAAAA,SAAS,EAAE;AAAA,UAAC;AAAEG,QAAAA;AAAF,OAAD;AAAA,aACTS,WAAW,CAAC;AAAET,QAAAA,OAAF;AAAWU,QAAAA;AAAX,OAAD,CADF;AAAA;AAFU,GAAhB,CAAP;AAKD,CAZM;;ICIMC,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAY1C,OAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WAqCS,wBACLnU,OADK,EAELtB,UAFK,EAGLU,GAHK;AAKL,UAAI,EAAEY,OAAO,YAAY8W,yBAArB,CAAJ,EAAwC,OAAO,EAAP;AACxC,YAAM;AAAExY,QAAAA;AAAF,UAAe0B,OAAO,CAAC+W,SAAR,CAAkB3X,GAAlB,CAArB;AAEA,YAAM4X,UAAU,GAAgB,CAC9B1Y,QAAQ,CAAC,CAAD,CAAR,GAAcI,UAAd,IAA4B,KAAKoJ,MAAL,CAAY,CAAZ,KAAkB,CAA9C,CAD8B,EAE9B,CAACxJ,QAAQ,CAAC,CAAD,CAAT,GAAeI,UAAf,IAA6B,KAAKoJ,MAAL,CAAY,CAAZ,KAAkB,CAA/C,CAF8B,CAAhC;AAKA,YAAMmP,YAAY,GAAG,KAAKC,SAAL,CAAeF,UAAf,EAA2BhX,OAA3B,EAAoC1B,QAApC,CAArB;AACA,YAAM6Y,QAAQ,GAAG,KAAKC,QAAL,CAAcJ,UAAd,EAA0BhX,OAA1B,EAAmC1B,QAAnC,CAAjB;AAEA,aAAO2Y,YAAY,GAAG,CAACA,YAAD,EAAeE,QAAf,CAAH,GAA8B,CAACA,QAAD,CAAjD;AACD;AAtDH;AAAA;AAAA,WAwDY,mBACR7Y,QADQ,EAER+Y,QAFQ,EAGRC,cAHQ;AAKR,aAAOT,mBAAmB,CAACU,YAApB,CAAiCjZ,QAAjC,EAA2C,IAA3C,EAAiDgZ,cAAjD,CAAP;AACD;AA9DH;AAAA;AAAA,WAgEY,kBAAShZ,QAAT,EAAgC+Y,QAAhC,EAAmDC,cAAnD;AACR,aAAOT,mBAAmB,CAACW,WAApB,CAAgClZ,QAAhC,EAA0C,IAA1C,EAAgDgZ,cAAhD,CAAP;AACD;AAlEH;AAAA;AAAA,WASE,sBACEhZ,QADF,QAGEgZ,cAHF;UAEE;AAAEjI,QAAAA,WAAW,GAAG,CAAhB;AAAmBoI,QAAAA,WAAnB;AAAgCC,QAAAA,UAAhC;AAA4ClJ,QAAAA,IAAI,GAAG;AAAnD;AAGA,aAAO,IAAImJ,OAAJ,CAAQrZ,QAAR,EAAkB;AACvBsT,QAAAA,SAAS,EAAE,aADY;AAEvBzC,QAAAA,WAAW,EAAEsI,WAFU;AAGvBpI,QAAAA,WAAW,EAAEqI,UAHU;AAIvBE,QAAAA,MAAM,EAAE,CAACpJ,IAAI,GAAGa,WAAP,GAAqBqI,UAAtB,IAAoC,CAJrB;AAKvBJ,QAAAA;AALuB,OAAlB,CAAP;AAOD;AArBH;AAAA;AAAA,WAuBE,qBACEhZ,QADF,SAGEgZ,cAHF;UAEE;AAAEjI,QAAAA,WAAF;AAAeuC,QAAAA,SAAf;AAA0BzC,QAAAA,WAA1B;AAAuCX,QAAAA,IAAI,GAAG;AAA9C;AAGA,aAAO,IAAImJ,OAAJ,CAAQrZ,QAAR,EAAkB;AACvBsT,QAAAA,SADuB;AAEvBzC,QAAAA,WAFuB;AAGvBE,QAAAA,WAHuB;AAIvBuI,QAAAA,MAAM,EAAEpJ,IAAI,GAAG,CAJQ;AAKvB8I,QAAAA;AALuB,OAAlB,CAAP;AAOD;AAnCH;;AAAA;AAAA,EAAyCO,iBAAzC;;MCFaC,+BAA+B,GAAG,SAAlCA,+BAAkC,CAAC9X,OAAD,EAAgBZ,GAAhB,EAA0B2Y,SAA1B;MAA0BA;AAAAA,IAAAA,YAAY;;;AACnF,QAAM7F,SAAS,GAAGlS,OAAO,CAACZ,GAAR,CAAY4Y,MAAZ,CAAmB5Y,GAAnB,IAA0BY,OAAO,CAAC+R,KAAlC,GAA0C/R,OAAO,CAAC+W,SAAR,CAAkB3X,GAAlB,EAAuB2S,KAAnF;AAEA,SAAOK,wBAAmB,CAACF,SAAD,EAAY6F,SAAZ,CAA1B;AACD,CAJM;AAMP,SAAgBE,mBACd3Z;MACA;AAAE+Q,IAAAA,WAAW,GAAG,CAAhB;AAAmBoI,IAAAA,WAAnB;AAAgCC,IAAAA,UAAhC;AAA4ClJ,IAAAA,IAAI,GAAG,CAAnD;AAAsD8I,IAAAA;AAAtD;AAEA,QAAMY,YAAY,GAAG,CAAC1J,IAAI,GAAGa,WAAP,GAAqBqI,UAAtB,IAAoC,CAAzD;AAEA,SAAO,IAAIC,OAAJ,CAAQrZ,QAAR,EAAkB;AACvBsT,IAAAA,SAAS,EAAE,aADY;AAEvBzC,IAAAA,WAAW,EAAEsI,WAFU;AAGvBpI,IAAAA,WAAW,EAAEqI,UAHU;AAIvBE,IAAAA,MAAM,EAAEM,YAJe;AAKvBZ,IAAAA;AALuB,GAAlB,CAAP;AAOD;AAED,SAAgBa,kBACd7Z;MACA;AAAE6Q,IAAAA,WAAF;AAAeE,IAAAA,WAAf;AAA4BuC,IAAAA,SAA5B;AAAuCpD,IAAAA,IAAI,GAAG,CAA9C;AAAiD8I,IAAAA;AAAjD;AAEA,QAAMM,MAAM,GAAGpJ,IAAI,GAAG,CAAtB;AAEA,SAAO,IAAImJ,OAAJ,CAAQrZ,QAAR,EAAkB;AACvBsT,IAAAA,SADuB;AAEvBzC,IAAAA,WAFuB;AAGvBE,IAAAA,WAHuB;AAIvBuI,IAAAA,MAJuB;AAKvBN,IAAAA;AALuB,GAAlB,CAAP;AAOD;AAWD,IAAac,kBAAb;AAAA;;AAAA;;AAQE;AACA,8BAAYjE,OAAZ;;;6BACQA;AACP;;AAXH;AAAA;AAAA,WAaS,wBACLnU,OADK,EAELtB,UAFK,EAGLU,GAHK;AAKL,UAAI,EAAEY,OAAO,YAAYqY,WAArB,CAAJ,EAAgC,OAAO,EAAP;;AAEhC,YAAM7D,WAAW,kGACfxU,OADe,EAEftB,UAFe,EAGfU,GAHe,CAAjB;;AAKA,YAAMkZ,4BAA4B,GAAGR,+BAA+B,CAAC9X,OAAD,EAAUZ,GAAV,CAApE;AACA,YAAMmZ,UAAU,GAAG,KAAKC,aAAL,CAAmBhE,WAAnB,EAAgCxU,OAAhC,EAAyCsY,4BAAzC,CAAnB;AACA,YAAMrB,YAAY,GAAG,KAAKC,SAAL,CAAe1C,WAAf,EAA4BxU,OAA5B,EAAqCsY,4BAArC,CAArB;AACA,YAAMG,aAAa,GAAG,KAAKC,gBAAL,CAAsBlE,WAAtB,EAAmC8D,4BAAnC,CAAtB;AACA,UAAInD,OAAO,GAAa,CAACoD,UAAD,CAAxB;;AAEA,UAAItB,YAAJ,EAAkB;AAChB9B,QAAAA,OAAO,GAAG,CAAC8B,YAAD,EAAesB,UAAf,CAAV;AACD;;AAED,UAAIE,aAAJ,EAAmB;AACjBtD,QAAAA,OAAO,GAAGA,OAAO,CAACwD,MAAR,CAAeF,aAAf,CAAV;AACD;;AAED,aAAOtD,OAAP;AACD;AAxCH;AAAA;AAAA,WA0CY,mBACRX,WADQ,EAER6C,QAFQ,EAGRC,cAHQ;AAKR,aAAO,IAAI3D,eAAJ,CAAea,WAAf,EAA4B;AACjCvD,QAAAA,SAAS,EAAE4C,cAAS,CAAC3M,IADY;AAEjC0M,QAAAA,QAAQ,EAAE,KAAKgF,OAFkB;AAGjCzJ,QAAAA,WAAW,EAAE,KAAKsI,WAHe;AAIjCpI,QAAAA,WAAW,EAAE,KAAKqI,UAJe;AAKjCpI,QAAAA,QAAQ,EAAE,KAAKA,QALkB;AAMjCgI,QAAAA;AANiC,OAA5B,CAAP;AAQD;AAvDH;AAAA;AAAA,WAyDY,uBACR9C,WADQ,EAER6C,QAFQ,EAGRC,cAHQ;AAKR,aAAO,IAAI3D,eAAJ,CAAea,WAAf,EAA4B;AACjCvD,QAAAA,SAAS,EAAE,KAAK2H,OAAL,GAAe/E,cAAS,CAAC/H,KAAzB,GAAiC+H,cAAS,CAAC3M,IADrB;AAEjC0M,QAAAA,QAAQ,EAAE,KAAKgF,OAFkB;AAGjChH,QAAAA,SAAS,EAAE,KAAKA,SAHiB;AAIjCzC,QAAAA,WAAW,EAAE,KAAKA,WAJe;AAKjCE,QAAAA,WAAW,EAAE,KAAKA,WALe;AAMjCC,QAAAA,QAAQ,EAAE,KAAKA,QANkB;AAOjCgI,QAAAA;AAPiC,OAA5B,CAAP;AASD;AAvEH;AAAA;AAAA,WAyEY,0BACR9C,WADQ,EAER8C,cAFQ;AAIR,UAAI,CAAC,KAAKuB,UAAV,EAAsB;AAEtB,YAAMC,cAAc,GAAG,EAAvB;AACA,YAAMC,eAAe,GAAG,EAAxB;;AAEA,WAAK,IAAI9L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuH,WAAW,CAACpa,MAAhC,EAAwC6S,CAAC,EAAzC,EAA6C;AAC3C,cAAMoF,IAAI,GAAGmC,WAAW,CAACvH,CAAD,CAAxB;;AAEA,aAAK,IAAIoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgC,IAAI,CAACjY,MAAzB,EAAiCiW,CAAC,EAAlC,EAAsC;AACpC,gBAAM/S,KAAK,GAAG+U,IAAI,CAAChC,CAAD,CAAlB;AACA,gBAAM2I,YAAY,GAAG1B,cAAc,CAACrK,CAAD,CAAd,CAAkBoD,CAAlB,CAArB;AAEA,gBAAM4G,YAAY,GAAGgB,kBAAkB,CAAC3a,KAAD,EAAQ;AAC7CkR,YAAAA,IAAI,EAAE,CADuC;AAE7Ca,YAAAA,WAAW,EAAE,CAFgC;AAG7CoI,YAAAA,WAAW,EAAE,KAAKA,WAH2B;AAI7CtI,YAAAA,WAAW,EAAE,KAAKA,WAJ2B;AAK7CuI,YAAAA,UAAU,EACR,KAAKuB,gBAAL,KAA0BjN,SAA1B,GAAsC,KAAKiN,gBAA3C,GAA8D,CANnB;AAO7CrH,YAAAA,SAAS,EAAE,aAPkC;AAQ7C0F,YAAAA,cAAc,EAAE0B;AAR6B,WAAR,CAAvC;AAUA,gBAAME,WAAW,GAAGf,iBAAiB,CAAC7a,KAAD,EAAQ;AAC3CkR,YAAAA,IAAI,EAAE,CADqC;AAE3Ca,YAAAA,WAAW,EAAE,CAF8B;AAG3CoI,YAAAA,WAAW,EAAE,KAAKA,WAHyB;AAI3CtI,YAAAA,WAAW,EAAE,KAAKA,WAJyB;AAK3CuI,YAAAA,UAAU,EACR,KAAKuB,gBAAL,KAA0BjN,SAA1B,GAAsC,KAAKiN,gBAA3C,GAA8D,CANrB;AAO3CrH,YAAAA,SAAS,EAAE,SAPgC;AAQ3C0F,YAAAA,cAAc,EAAE0B;AAR2B,WAAR,CAArC;AAWAD,UAAAA,eAAe,CAACvP,IAAhB,CAAqByN,YAArB;AACA6B,UAAAA,cAAc,CAACtP,IAAf,CAAoB0P,WAApB;AACD;AACF;;AAED,aAAO,CAAC,GAAGJ,cAAJ,EAAoB,GAAGC,eAAvB,CAAP;AACD;AApHH;;AAAA;AAAA,EAAwCI,6BAAxC;AAuHA,MAAMC,gBAAgB,GAAG;AACvB/J,EAAAA,WAAW,EAAE,CADU;AAEvBF,EAAAA,WAAW,EAAE,SAFU;AAGvBuI,EAAAA,UAAU,EAAE,CAHW;AAIvBD,EAAAA,WAAW,EAAE;AAJU,CAAzB;AAOA,MAAM4B,mBAAmB,GAAG;AAC1BlK,EAAAA,WAAW,EAAE,SADa;AAE1BuI,EAAAA,UAAU,EAAE,CAFc;AAG1BuB,EAAAA,gBAAgB,EAAE;AAHQ,CAA5B;AAMA,MAAaK,mBAAmB,gBAAG,IAAIlB,kBAAJ,4BAC9BgB,gBAD8B,EAE9BC,mBAF8B;AAGjCT,EAAAA,OAAO,EAAE,KAHwB;AAIjCC,EAAAA,UAAU,EAAE;AAJqB,GAA5B;AAOP,MAAaU,iBAAiB,gBAAG,IAAInB,kBAAJ,4BAC5BgB,gBAD4B,EAE5BC,mBAF4B;AAG/BzH,EAAAA,SAAS,EAAE,0BAHoB;AAI/BgH,EAAAA,OAAO,EAAE,IAJsB;AAK/BC,EAAAA,UAAU,EAAE;AALmB,GAA1B;AAQP,MAAMW,gBAAgB,GAAG;AACvBhL,EAAAA,IAAI,EAAE,EADiB;AAEvBa,EAAAA,WAAW,EAAE,CAFU;AAGvBF,EAAAA,WAAW,EAAE,SAHU;AAIvByC,EAAAA,SAAS,EAAE,SAJY;AAKvB6F,EAAAA,WAAW,EAAE,uBALU;AAMvBC,EAAAA,UAAU,EAAE;AANW,CAAzB;AASA,MAAa+B,wBAAwB,gBAAG,IAAI5C,mBAAJ,4BACnC2C,gBADmC;AAEtCrK,EAAAA,WAAW,EAAE,SAFyB;AAGtCuI,EAAAA,UAAU,EAAE;AAH0B,GAAjC;;IC1MMgC,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAYhD,KAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WASY,mBACRpY,QADQ,EAER0B,OAFQ,EAGRsX,cAHQ;AAKR,UAAItX,OAAO,CAAC2Z,UAAZ,EAAwB;AACtB,kGAAuBrb,QAAvB,EAAiC0B,OAAjC,EAA0CsX,cAA1C;AACD;AACF;AAjBH;AAAA;AAAA,WAmBY,kBACRhZ,QADQ,EAER0B,OAFQ,EAGRsX,cAHQ;AAKR,YAAM4B,WAAW,qFAAkB5a,QAAlB,EAA4B0B,OAA5B,EAAqCsX,cAArC,CAAjB;;AAEA,UAAItX,OAAO,CAAC2Z,UAAZ,EAAwB;AACtBT,QAAAA,WAAW,CAAC/J,WAAZ,GAA0B,KAAKyK,mBAA/B;AACAV,QAAAA,WAAW,CAACtH,SAAZ,GAAwB,KAAKiI,iBAA7B;AACD;;AAED,aAAOX,WAAP;AACD;AAhCH;;AAAA;AAAA,EAAyCrC,mBAAzC;;ICIaiD,kBAAb;AAAA;;AAAA;;AAKE;AACA,8BAAYpD,KAAZ;;;6BACQA;AACP;;AARH;AAAA;AAAA,WAUY,mBACRlC,WADQ,EAERxU,OAFQ,EAGRsX,cAHQ;AAKR,UAAItX,OAAO,CAAC2Z,UAAZ,EAAwB;AACtB,iGAAuBnF,WAAvB,EAAoCxU,OAApC,EAA6CsX,cAA7C;AACD;AACF;AAlBH;AAAA;AAAA,WAoBY,uBACR9C,WADQ,EAERxU,OAFQ,EAGRsX,cAHQ;AAKR,YAAMiB,UAAU,yFAAuB/D,WAAvB,EAAoCxU,OAApC,EAA6CsX,cAA7C,CAAhB;;AACA,UAAItX,OAAO,CAAC2Z,UAAZ,EAAwB;AACtBpB,QAAAA,UAAU,CAAC3G,SAAX,GAAuB,KAAKiI,iBAA5B;AACAtB,QAAAA,UAAU,CAACpJ,WAAX,GAAyB,KAAKyK,mBAA9B;;AACA,YAAI,KAAKG,mBAAL,KAA6B,KAAK,CAAtC,EAAyC;AACvCxB,UAAAA,UAAU,CAAClJ,WAAX,GAAyB,KAAK0K,mBAA9B;AACD;AACF;;AAED,aAAOxB,UAAP;AACD;AAnCH;;AAAA;AAAA,EAAwCH,kBAAxC;;MChBa4B,aAAa,gBAAG,IAAIN,mBAAJ,CAAwB;AACnDlL,EAAAA,IAAI,EAAE,CAD6C;AAEnDa,EAAAA,WAAW,EAAE,CAFsC;AAGnDF,EAAAA,WAAW,EAAE,wBAHsC;AAInDyC,EAAAA,SAAS,EAAE,2BAJwC;AAKnD6F,EAAAA,WAAW,EAAE,wBALsC;AAMnDC,EAAAA,UAAU,EAAE,CANuC;AAQnDkC,EAAAA,mBAAmB,EAAE,SAR8B;AASnDC,EAAAA,iBAAiB,EAAE;AATgC,CAAxB,CAAtB;AAYP,MAAaI,gBAAgB,gBAAG,IAAIH,kBAAJ,CAAuB;AACrDzK,EAAAA,WAAW,EAAE,CADwC;AAErDF,EAAAA,WAAW,EAAE,wBAFwC;AAGrDuI,EAAAA,UAAU,EAAE,CAHyC;AAIrDD,EAAAA,WAAW,EAAE,wBAJwC;AAKrDmC,EAAAA,mBAAmB,EAAE,SALgC;AAMrDG,EAAAA,mBAAmB,EAAE;AANgC,CAAvB,CAAzB;AASP,MAAaG,eAAe,gBAAG,IAAIJ,kBAAJ,CAAuB;AACpDzK,EAAAA,WAAW,EAAE,CADuC;AAEpDF,EAAAA,WAAW,EAAE,wBAFuC;AAGpDuI,EAAAA,UAAU,EAAE,CAHwC;AAIpDD,EAAAA,WAAW,EAAE,wBAJuC;AAKpD7F,EAAAA,SAAS,EAAE,2BALyC;AAMpDgH,EAAAA,OAAO,EAAE,IAN2C;AAOpDiB,EAAAA,iBAAiB,EAAE,2BAPiC;AAQpDD,EAAAA,mBAAmB,EAAE;AAR+B,CAAvB,CAAxB;;MCfMO,cAAc,GAAG,CAC5BC,MAD4B;MAE5B;AAAEne,IAAAA,OAAF;AAAWmD,IAAAA,GAAG,GAAGib;AAAjB;AAEA,QAAM;AAAElN,IAAAA;AAAF,MAAYlR,OAAlB;AACA,QAAMqe,SAAS,GAAGre,OAAO,CAAC+B,sBAAR,CAA+B,CAA/B,EAAkC,CAAlC,EAAqC+Y,SAArC,CAA+C3X,GAA/C,CAAlB;AACA,QAAMmb,aAAa,GAAGte,OAAO,CAAC+B,sBAAR,CAA+BmP,KAA/B,EAAsC,CAAtC,EAAyC4J,SAAzC,CAAmD3X,GAAnD,CAAtB;AACA,QAAMob,aAAa,GAAWC,iBAAQ,CAACH,SAAD,EAAYC,aAAZ,CAAtC;AACA,QAAMG,GAAG,GAAGvN,KAAK,IAAIqN,aAAa,IAAI,CAArB,CAAjB;AAEA,SAAOhO,IAAI,CAACc,KAAL,CAAW8M,MAAM,GAAGM,GAApB,CAAP;AACD,CAXM;;ACWP,MAAMC,iBAAiB,GAAsB;AAC3CtL,EAAAA,WAAW,EAAE,CAD8B;AAE3CF,EAAAA,WAAW,EAAE,kBAF8B;AAG3C8B,EAAAA,SAAS,EAAE4C,cAAS,CAAC3M;AAHsB,CAA7C;AAMA,IAAa0T,OAAb;AAAA;;AAAA;;AAQE;;;QAAY;AACVC,MAAAA,iBADU;AAEVC,MAAAA,UAFU;AAGVC,MAAAA,MAHU;AAIVC,MAAAA,SAJU;AAKVC,MAAAA;AALU,2BAMM;;;;AAChB;AAdF,mBAAA,GAA4BpL,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAA5B;AAeE,UAAKoL,SAAL,CAAezW,KAAf,CAAqBnG,QAArB,GAAgC,UAAhC;AACA,UAAKuc,iBAAL,GAAyBA,iBAAzB;AACA,UAAKC,UAAL;AAAoBzM,MAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAA5B;AAAoCuD,MAAAA,SAAS,EAAE;AAA/C,OAA0DkJ,UAA1D;AACA,UAAKC,MAAL,GAAcA,MAAd;AACA,UAAKC,SAAL,GAAiBA,SAAjB;AACA,UAAKC,WAAL,GAAmBA,WAAnB;;AACD;;AAtBH;AAAA;AAAA,WAwBE,wBACEjb,OADF,EAEEtB,UAFF,EAGEU,GAHF;AAKE,YAAMoV,WAAW,GACfxU,OAAO,YAAYqY,WAAnB,GACI,IAAIc,6BAAJ,GAAqBgC,sBAArB,CAA4Cnb,OAA5C,EAAqDtB,UAArD,EAAiEU,GAAjE,CADJ,GAEIY,OAAO,CAACob,QAHd;AAKA,WAAKC,gBAAL,CAAsBjc,GAAtB;AACA,WAAK8b,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,YAAMC,GAAG,GAAG,KAAKC,MAAL,CAAYhH,WAAZ,CAAZ;AACA+G,MAAAA,GAAG,IAAI,KAAKL,SAAL,CAAeO,MAAf,CAAsBF,GAAtB,CAAP;AAEAvb,MAAAA,OAAO,CAAC0b,qBAAR,GAAgC,IAAIC,oBAAJ,CAAkB;AAChD3F,QAAAA,IAAI,EAAE,KAAKkF,SADqC;AAEhDU,QAAAA,MAAM,EAAE,CAAC1c,IAAD,EAAOR,UAAP,KACN,KAAKkd,MAAL,CAAY;AAAE1c,UAAAA,IAAF;AAAQR,UAAAA,UAAR;AAAoBsB,UAAAA,OAApB;AAA6BZ,UAAAA;AAA7B,SAAZ,CAH8C;AAIhDyc,QAAAA,MAAM,EAAE;AACN,eAAKhB,iBAAL,IAA0B,KAAKA,iBAAL,CAAuB7a,OAAvB,CAA1B;AACD;AAN+C,OAAlB,CAAhC;;AASA,WAAK8b,kBAAL,CAAwB9b,OAAxB;;AAEA,aAAO,CAACA,OAAO,CAAC0b,qBAAT,CAAP;AACD;AAnDH;AAAA;AAAA,WAqDE,0BAAiBtc,GAAjB;AACE,UAAI,KAAK2b,MAAL,IAAe,KAAKD,UAAxB,EAAoC;AAAA;;AAClC,aAAKA,UAAL,CAAgBlD,MAAhB,GACEuC,cAAc,CAAC,KAAKY,MAAL,CAAYnD,MAAb,EAAqB;AACjC3b,UAAAA,OAAO,EAAE,KAAK8e,MAAL,CAAY9e,OADY;AAEjCmD,UAAAA;AAFiC,SAArB,CAAd,IAGM,sBAAK2b,MAAL,kCAAagB,QAAb,KAAyB,CAH/B,CADF;AAKD;AACF;AA7DH;AAAA;AAAA,WA+DE;;;UAAO;AACL7c,QAAAA,IADK;AAELR,QAAAA,UAFK;AAGLsB,QAAAA,OAHK;AAILZ,QAAAA;AAJK;AAWL,UAAI,CAACY,OAAL,EAAc;AAEd,UAAI,CAACd,IAAL,EAAWA,IAAI,GAAGc,OAAO,CAACgc,UAAf;AACX,UAAI,CAACtd,UAAL,EAAiBA,UAAU,GAAGsB,OAAO,CAACic,gBAArB;AAEjB,UAAI,CAAC/c,IAAD,IAAS,CAACR,UAAV,IAAwB,CAACsB,OAAO,CAACZ,GAAR,CAAY8c,YAAZ,CAAyBhd,IAAI,CAACE,GAA9B,CAA7B,EAAiE;;AAEjE,UAAIY,OAAO,CAACic,gBAAR,IAA4Bvd,UAAU,KAAKsB,OAAO,CAACic,gBAAvD,EAAyE;AACvE,cAAME,cAAc,GAClBnc,OAAO,YAAYqY,WAAnB,GACI,IAAIc,6BAAJ,GAAqBgC,sBAArB,CAA4Cnb,OAA5C,EAAqDtB,UAArD,EAAiEU,GAAjE,CADJ,GAEIY,OAAO,CAACob,QAHd;AAKA,aAAKC,gBAAL,CAAsBjc,GAAtB;AACA,aAAK8b,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,cAAMC,GAAG,GAAG,KAAKC,MAAL,CAAYW,cAAZ,CAAZ;AACAZ,QAAAA,GAAG,IAAI,KAAKL,SAAL,CAAeO,MAAf,CAAsBF,GAAtB,CAAP;AACD;;AAED,YAAMa,OAAO,GAAGpc,OAAO,CAAC+W,SAAR,CAAkB7X,IAAI,CAACE,GAAvB,CAAhB;AACA,YAAMid,YAAY,GAAG,yBAAKvB,UAAL,8BAAiBlD,MAAjB,GACjB,2BAAKkD,UAAL,uCAAiBlD,MAAjB,KACC,0BAAKkD,UAAL,+BAAiBzL,WAAjB,GAA+B,2BAAKyL,UAAL,uCAAiBzL,WAAjB,IAA+B,CAA9D,GAAkE,CADnE,CADiB,GAGjB,CAHJ;AAIA,YAAMiN,EAAE,GACN9P,IAAI,CAACc,KAAL,CAAW,CAAC8O,OAAO,CAACld,IAAR,CAAaH,IAAb,GAAoBG,IAAI,CAACH,IAA1B,IAAkCL,UAA7C,IAA2D2d,YAD7D;AAEA,YAAME,EAAE,GACN/P,IAAI,CAACc,KAAL,CAAW,CAACpO,IAAI,CAACF,IAAL,GAAYod,OAAO,CAACld,IAAR,CAAaF,IAA1B,IAAkCN,UAA7C,IAA2D2d,YAD7D;AAGA,WAAKnB,SAAL,CAAezW,KAAf,CAAqB+X,IAArB,GAA+BF,EAAE,CAACvQ,QAAH,EAA/B;AACA,WAAKmP,SAAL,CAAezW,KAAf,CAAqBgY,GAArB,GAA8BF,EAAE,CAACxQ,QAAH,EAA9B;AAEA/L,MAAAA,OAAO,CAACgc,UAAR,GAAqB9c,IAArB;AACAc,MAAAA,OAAO,CAACic,gBAAR,GAA2Bvd,UAA3B;AACD;AA5GH;AAAA;AAAA,WA8GE,gBACE8V,WADF;AAGE,YAAM;AAAE9E,QAAAA,OAAF;AAAWoE,QAAAA,QAAX;AAAqB4I,QAAAA,UAArB;AAAiCpN,QAAAA,QAAjC;AAA2CqN,QAAAA;AAA3C,UACJ,KAAK7B,UAAL,IAAmB,EADrB;AAEA,YAAM8B,SAAS,GAAG,IAAIC,mBAAJ;AAChBrI,QAAAA;AADgB,SAEbmG,iBAFa;AAGhBM,QAAAA,WAAW,EAAE,KAAKA;AAHF,SAIb,KAAKH,UAJQ,EAAlB;;AAOA,UAAI,KAAKC,MAAT,EAAiB;AACf6B,QAAAA,SAAS,CAACE,WAAV;AACD,OAFD,MAEO;AACLF,QAAAA,SAAS,CAACG,YAAV;AACD;;AAED,UAAIC,UAAJ;AACAJ,MAAAA,SAAS,CAACzG,OAAV,CAAkB,CAAC8G,CAAD,EAAU1B,GAAV;AAChByB,QAAAA,UAAU,GAAGzB,GAAb;AACA,aAAKP,SAAL,IAAkBgC,UAAU,CAACE,SAAX,CAAqBC,GAArB,CAAyB,KAAKnC,SAA9B,CAAlB;AACA,cAAMxX,IAAI,GACRwZ,UAAU,IAAIA,UAAU,CAACI,aAAX,CAAyB,KAAKrC,MAAL,GAAc,QAAd,GAAyB,MAAlD,CADhB;;AAGA,YAAIvX,IAAJ,EAAU;AACRA,UAAAA,IAAI,CAAC6Z,YAAL,CAAkB,gBAAlB,EAAoC3N,OAAO,IAAI,OAA/C;AACAlM,UAAAA,IAAI,CAAC6Z,YAAL,CAAkB,iBAAlB,EAAqCvJ,QAAQ,IAAI,OAAjD;AACAtQ,UAAAA,IAAI,CAAC6Z,YAAL,CAAkB,mBAAlB,EAAuC,CAACX,UAAU,IAAI,EAAf,EAAmB3Q,QAAnB,EAAvC;AACAvI,UAAAA,IAAI,CAAC6Z,YAAL,CAAkB,mBAAlB,EAAuC,CAACV,UAAU,IAAI,CAAf,EAAkB5Q,QAAlB,EAAvC;;AAEA,cAAI,KAAKgP,MAAT,EAAiB;AACfvX,YAAAA,IAAI,CAAC6Z,YAAL,CACE,kBADF,EAEE/N,QAAQ,IAAIA,QAAQ,CAAClV,MAAT,GAAkB,CAA9B,GAAkCkV,QAAQ,CAAC/M,IAAT,CAAc,GAAd,CAAlC,GAAuD,EAFzD;AAID;AACF;AACF,OAnBD;AAqBA,aAAOya,UAAP;AACD;AAvJH;AAAA;AAAA,WAyJU,4BAAmBM,cAAnB;;;AACN,UAAIA,cAAc,CAACC,UAAf,KAA8BC,4BAAe,CAACtW,IAAlD,EAAwD;AAExD,YAAMuW,OAAO,GAAGH,cAAH,6CAAGA,cAAc,CAAE5B,qBAAnB,qBAAG,sBAAuC1F,IAAvC,CAA4CoH,aAA5C,CACd,KAAKrC,MAAL,GAAc,QAAd,GAAyB,MADX,CAAhB;AAIAnR,MAAAA,MAAM,CAACsB,IAAP,CAAYwS,wBAAZ,EAAyBC,OAAzB,CAAiCC,SAAS;AACxC,YAAIN,cAAc,CAACC,UAAf,GAA4BG,wBAAW,CAACE,SAAD,CAAX,CAAuBC,IAAvD,EAA6D;AAC3DC,UAAAA,uBAAc,CACZL,OADY,EAEZC,wBAAW,CAACE,SAAD,CAAX,CAAuBhb,IAFX,EAGXvF,KAAD;AACEigB,YAAAA,cAAc,CAACS,IAAf,CAAoBL,wBAAW,CAACE,SAAD,CAAX,CAAuBhb,IAA3C,EAAiD;AAC/CoT,cAAAA,IAAI,EAAEyH,OADyC;AAE/ClgB,cAAAA,YAAY,EAAEF;AAFiC,aAAjD;AAID,WARW,CAAd;AAUD;AACF,OAbD;AAcD;AA9KH;;AAAA;AAAA,EAA6B2gB,cAA7B;;SCLgBC,kBACdnhB;AAEA,SACEA,MAAM,YAAY+a,iBAAlB,IACA/a,MAAM,YAAYohB,mCADlB,IAEAphB,MAAM,YAAYqhB,mBAFlB,IAGArhB,MAAM,YAAYshB,uBAJpB;AAMD;AAED,SAAgBC,kBACdvhB;AAEA,SAAOA,MAAM,YAAYohB,mCAAlB,IAAuCphB,MAAM,YAAYshB,uBAAhE;AACD;AAED,SAAgBE,oBACdxhB;AAEA,SACEA,MAAM,YAAYyhB,oBAAlB,IACAzhB,MAAM,YAAY0hB,mBADlB,IAEA1hB,MAAM,YAAY2hB,mBAHpB;AAKD;AAED,SAAgBC,qBACd5hB;AAEA,SAAOA,MAAM,YAAYqc,6BAAzB;AACD;AAED,SAAgBwF,eACd7hB;AAEA,SAAOA,MAAM,YAAY8hB,iBAAzB;AACD;AAED,SAAgBC,6BACd/hB;AAEA,SAAOA,MAAM,YAAYgiB,6CAAzB;AACD;AAED,SAAgBC,oBACdjiB;AAEA,SAAO,CAAC,CAAEA,MAA0B,CAACyJ,kBAArC;AACD;;AC/DD;;;;;AAKA,AAAO,MAAMyY,WAAW,GAAG,GAApB;AAEP,AAAO,MAAMC,YAAY,gBAAG,IAAInI,yBAAJ,CAAiB,CAAC,EAAD,EAAK,CAAC,EAAN,CAAjB,EAA4B;AAAE1X,EAAAA,GAAG,EAAE8f;AAAP,CAA5B,CAArB;AAEP,AAAO,MAAMC,WAAW,gBAAG,IAAIC,iBAAJ,CACzB,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,GAAD,EAAM,CAAC,EAAP,CANF,CADyB,EASzB;AACEhgB,EAAAA,GAAG,EAAE8f;AADP,CATyB,CAApB;AAaP,AAAO,MAAMG,mBAAmB,gBAAG,IAAIC,iCAAJ,CACjC,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,GAAD,EAAM,CAAC,EAAP,CANF,CADiC,EASjC;AACElgB,EAAAA,GAAG,EAAE8f;AADP,CATiC,CAA5B;AAaP,AAAO,MAAMK,cAAc,gBAAG,IAAIC,eAAJ,CAC5B,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,CAD4B,EAO5B;AAAEpgB,EAAAA,GAAG,EAAE8f;AAAP,CAP4B,CAAvB;AASP,AAAO,MAAMO,aAAa,gBAAG,IAAIC,mBAAJ,CAC3B,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,EAAD,EAAK,CAAC,EAAN,CANF,EAOE,CAAC,EAAD,EAAK,CAAC,EAAN,CAPF,CAD2B,EAU3B;AAAEtgB,EAAAA,GAAG,EAAE8f;AAAP,CAV2B,CAAtB;AAaP,AAAO,MAAMS,iBAAiB,gBAAG,IAAIP,iBAAJ,CAC/B,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,GAAD,EAAM,CAAC,EAAP,CAFF,CAD+B,EAK/B;AACEhgB,EAAAA,GAAG,EAAE8f;AADP,CAL+B,CAA1B;AAUP,AAAO,MAAMU,oBAAoB,gBAAG,IAAIJ,eAAJ,CAClC,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,CADkC,EAOlC;AAAEpgB,EAAAA,GAAG,EAAE8f;AAAP,CAPkC,CAA7B;AAUP,AAAO,MAAMW,uBAAuB,gBAAG,IAAIL,eAAJ,CACrC,CACE,CAAC,EAAD,EAAK,CAAL,CADF,EAEE,CAAC,GAAD,EAAM,CAAC,EAAP,CAFF,EAGE,CAAC,GAAD,EAAM,CAAC,EAAP,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,GAAN,CAJF,EAKE,CAAC,CAAD,EAAI,CAAC,EAAL,CALF,EAME,CAAC,CAAD,EAAI,CAAC,EAAL,CANF,CADqC,EASrC;AAAEpgB,EAAAA,GAAG,EAAE8f;AAAP,CATqC,CAAhC;AAYP,AAAO,MAAMY,mBAAmB,GAAG;AACjC1D,EAAAA,OAAO,EAAEyD;AADwB,CAA5B;AAIP,AAAO,MAAME,eAAe,GAAG;AAC7BziB,EAAAA,KAAK,EAAE2hB,YADsB;AAE7Be,EAAAA,QAAQ,EAAEL,iBAFmB;AAG7BM,EAAAA,gBAAgB,EAAEZ,mBAHW;AAI7BjD,EAAAA,OAAO,EAAEwD,oBAJoB;AAK7BM,EAAAA,MAAM,EAAET;AALqB,CAAxB;AAQP,AAAO,MAAMU,aAAa,GAAG;AAC3B7iB,EAAAA,KAAK,EAAE2hB,YADoB;AAE3Be,EAAAA,QAAQ,EAAEb,WAFiB;AAG3Bc,EAAAA,gBAAgB,EAAEZ,mBAHS;AAI3BjD,EAAAA,OAAO,EAAEmD,cAJkB;AAK3BW,EAAAA,MAAM,EAAET;AALmB,CAAtB;;SCjGSW,iBACdtjB,QACA0R,MACAtO;MADAsO;AAAAA,IAAAA,OAAewQ;;;MACf9e;AAAAA,IAAAA,WAA0C;;;AAE1C,QAAMxB,UAAU,GAAGsgB,WAAW,GAAGxQ,IAAjC;;AACA,QAAM6R,gBAAgB,gBAAQF,aAAR,EAA0BjgB,QAA1B,CAAtB;;AAEA,MAAIoe,mBAAmB,CAACxhB,MAAD,CAAvB,EAAiC;AAC/B,WAAOA,MAAM,CAACwjB,mBAAP,CACLD,gBAAgB,CAACjE,OADZ,EAEL1d,UAFK,EAGLwgB,SAHK,CAAP;AAKD;;AAED,MAAIR,oBAAoB,CAAC5hB,MAAD,CAAxB,EAAkC;AAChC,WAAOA,MAAM,CAACwjB,mBAAP,CACLD,gBAAgB,CAACL,QADZ,EAELthB,UAFK,EAGLwgB,SAHK,CAAP;AAKD;;AAED,MAAIP,cAAc,CAAC7hB,MAAD,CAAlB,EAA4B;AAC1B,WAAOA,MAAM,CAACwjB,mBAAP,CACLD,gBAAgB,CAACH,MADZ,EAELxhB,UAFK,EAGLwgB,SAHK,CAAP;AAKD;;AAED,MAAIL,4BAA4B,CAAC/hB,MAAD,CAAhC,EAA0C;AACxC,WAAOA,MAAM,CAACwjB,mBAAP,CACLD,gBAAgB,CAACJ,gBADZ,EAELvhB,UAFK,EAGLwgB,SAHK,CAAP;AAKD;;AAED,SAAOpiB,MAAM,CAACwjB,mBAAP,CAA2BD,gBAAgB,CAAC/iB,KAA5C,EAAmDoB,UAAnD,EAA+DwgB,SAA/D,CAAP;AACD;AAED,MAAaqB,yBAAyB,GAAG,SAA5BA,yBAA4B,CACvCzjB,MADuC,EAEvC0R,IAFuC;MAEvCA;AAAAA,IAAAA,OAAewQ;;;AAEf,SAAOoB,gBAAgB,CAACtjB,MAAD,EAAS0R,IAAT,EAAesR,mBAAf,CAAvB;AACD,CALM;AAOP,MAAaU,sBAAsB,GAAG,SAAzBA,sBAAyB,CACpC1jB,MADoC,EAEpC0R,IAFoC;MAEpCA;AAAAA,IAAAA,OAAewQ;;;AAEf,SAAOoB,gBAAgB,CAACtjB,MAAD,EAAS0R,IAAT,EAAeuR,eAAf,CAAvB;AACD,CALM;;SCzDSU,qBAAqBtL,SAAmBvF;AACtDuF,EAAAA,OAAO,CAACwI,OAAR,CAAgBjI,MAAM;AACpB9F,IAAAA,MAAM,CAAC8Q,IAAP,CAA6BhL,MAA7B;AACD,GAFD;AAGD;;SC8BeiL,kBACd7jB;AAEA,UAAQA,MAAM,CAAC8F,IAAf;AACE,SAAK,QAAL;AACE,aAAOge,mBAAmB,CAAC9jB,MAAD,CAA1B;;AACF,SAAK,gBAAL;AACE,aAAO+jB,yBAAyB,CAAC/jB,MAAD,CAAhC;;AACF,SAAK,mBAAL;AACE,aAAOgkB,sBAAsB,CAAChkB,MAAD,CAA7B;;AACF,SAAK,mBAAL;AACE,aAAOikB,uBAAuB,CAACjkB,MAAD,CAA9B;;AACF,SAAK,wBAAL;AACE,aAAOkkB,4BAA4B,CAAClkB,MAAD,CAAnC;;AACF,SAAK,kBAAL;AACE,aAAOmkB,2BAA2B,CAACnkB,MAAD,CAAlC;;AACF,SAAK,eAAL;AACE,aAAOokB,wBAAwB,CAACpkB,MAAD,CAA/B;;AACF,SAAK,sBAAL;AACA,SAAK,gBAAL;AACE,aAAOqkB,yBAAyB,CAACrkB,MAAD,CAAhC;;AACF,SAAK,eAAL;AACE,aAAO6jB,iBAAiB,CAAE7jB,MAA0B,CAACyJ,kBAA7B,CAAxB;;AACF;AACE,aAAO,IAAP;AArBJ;AAuBD;;AAED,SAASqa,mBAAT,CAA6B9jB,MAA7B;;;AACE,SAAO,IAAI8hB,iBAAJ,cACF9hB,MADE;AAELskB,IAAAA,QAAQ,EAAEte,iBAAiB,CAAChG,MAAM,CAACskB,QAAR,CAFtB;AAGL/R,IAAAA,WAAW,EAAEvM,iBAAiB,CAAChG,MAAD,sCAACA,MAAM,CAAEiJ,MAAT,qBAAC,eAAgBoH,KAAjB,CAHzB;AAILgC,IAAAA,WAAW,EAAErM,iBAAiB,CAAChG,MAAD,uCAACA,MAAM,CAAEiJ,MAAT,qBAAC,gBAAgBqJ,KAAjB,CAJzB;AAKLwC,IAAAA,SAAS,EAAE9O,iBAAiB,CAAChG,MAAD,oCAACA,MAAM,CAAE+J,IAAT,qBAAC,aAAcuI,KAAf;AALvB,KAAP;AAOD;;AAED,SAAS0R,sBAAT,CAAgChkB,MAAhC;AACE;AACA,SAAO,IAAIukB,iBAAJ,CAAiBC,4BAA4B,CAACxkB,MAAD,CAA7C,CAAP;AACD;;AAED,MAAaykB,uBAAuB,GAAIzZ,MAAD,IAAkC,CACvEhF,iBAAiB,CAACgF,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CADsD,EAEvEhF,iBAAiB,CAACgF,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CAFsD,CAAlE;;AAKP,SAAS0Z,+BAAT;MAAyC;AAAE5e,IAAAA,IAAF;AAAQ6e,IAAAA,IAAR;AAAcjT,IAAAA,IAAd;AAAoB1G,IAAAA,MAApB;AAA4B4Z,IAAAA,KAA5B;AAAmCvR,IAAAA,UAAnC;AAA+CwR,IAAAA;AAA/C;AACvC;AACE/e,IAAAA,IAAI,EAAEE,iBAAiB,CAACF,IAAD,CADzB;AAEE6e,IAAAA,IAAI,EAAE3e,iBAAiB,CAAC2e,IAAD,CAFzB;AAGEjT,IAAAA,IAAI,EAAE1L,iBAAiB,CAAC0L,IAAD,CAHzB;AAIE1G,IAAAA,MAAM,EAAEyZ,uBAAuB,CAACzZ,MAAD,CAJjC;AAKE4Z,IAAAA,KAAK,EAAE5e,iBAAiB,CAAC4e,KAAD;AAL1B,KAMMvR,UAAU,GACV;AACAA,IAAAA,UAAU,eACJA,UADI;AAERyB,MAAAA,SAAS,EAAEgQ,gBAAgB,CAAC9e,iBAAiB,CAAEqN,UAAF,oBAAEA,UAA6B,CAAEyB,SAAjC,CAAlB,CAFnB;AAGRzC,MAAAA,WAAW,EAAEyS,gBAAgB,CAAC9e,iBAAiB,CAAEqN,UAAF,oBAAEA,UAA6B,CAAEhB,WAAjC,CAAlB,CAHrB;AAIRE,MAAAA,WAAW,EAAEvM,iBAAiB,CAAEqN,UAAF,oBAAEA,UAA6B,CAAEd,WAAjC;AAJtB;AADV,GADU,GASV,EAfN,EAgBMsS,MAAM,GACN;AACAA,IAAAA,MAAM,eACAA,MADA;AAEJxS,MAAAA,WAAW,EAAEyS,gBAAgB,CAAC9e,iBAAiB,CAAE6e,MAAF,oBAAEA,MAAyB,CAAExS,WAA7B,CAAlB,CAFzB;AAGJE,MAAAA,WAAW,EAAEvM,iBAAiB,CAAE6e,MAAF,oBAAEA,MAAyB,CAAEtS,WAA7B,CAH1B;AAIJuC,MAAAA,SAAS,EAAEgQ,gBAAgB,CACzB9e,iBAAiB,CAAE6e,MAAF,oBAAEA,MAAyB,CAAE/P,SAA7B,CADQ;AAJvB;AADN,GADM,GAWN,EA3BN;AA6BD;;AAED,SAASiP,yBAAT,CAAmC/jB,MAAnC;AACE,SAAO,IAAIukB,iBAAJ,CAAiBG,+BAA+B,CAAC1kB,MAAD,CAAhD,CAAP;AACD;;AAED,SAASikB,uBAAT,CAAiCjkB,MAAjC;AACE,SAAO,IAAI+kB,mBAAJ,cACFP,4BAA4B,CAACxkB,MAAD,CAD1B;AAEL;AACA4kB,IAAAA,KAAK,EAAE5e,iBAAiB,CAAChG,MAAM,CAAC4kB,KAAR;AAHnB,KAAP;AAKD;;AAED,SAASV,4BAAT,CAAsClkB,MAAtC;AACE,SAAO,IAAIshB,uBAAJ,cACFthB,MADE;AAEL;AACA4kB,IAAAA,KAAK,EAAE5e,iBAAiB,CAAChG,MAAM,CAAC4kB,KAAR,CAHnB;AAIL;AACAvU,IAAAA,KAAK,EAAErK,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CALnB;AAML;AACAiD,IAAAA,MAAM,EAAEtN,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAPpB;AAQL;AACA0R,IAAAA,WAAW,EAAEC,iBAAiB,CAACjlB,MAAM,CAACgL,MAAR,CATzB;AAUL;AACAka,IAAAA,WAAW,EAAEC,iBAAiB,CAACnlB,MAAM,CAAColB,KAAR,CAXzB;AAYL;AACAC,IAAAA,UAAU,EAAEF,iBAAiB,CAACnlB,MAAM,CAACslB,SAAR,CAbxB;AAcL;AACAC,IAAAA,SAAS,EAAET,gBAAgB,CAAC9e,iBAAiB,CAAChG,MAAM,CAACwlB,WAAR,CAAlB;AAftB,KAAP;AAiBD;;AAED,SAASrB,2BAAT,CAAqCnkB,MAArC;AACE,SAAO,IAAIylB,mCAAJ,cACFzlB,MADE;AAEL;AACA4kB,IAAAA,KAAK,EAAE5e,iBAAiB,CAAChG,MAAM,CAAC4kB,KAAR,CAHnB;AAIL;AACAvU,IAAAA,KAAK,EAAErK,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CALnB;AAML;AACAiD,IAAAA,MAAM,EAAEtN,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAPpB;AAQL;AACA0R,IAAAA,WAAW,EAAEC,iBAAiB,CAACjlB,MAAM,CAACgL,MAAR,CATzB;AAUL;AACA0a,IAAAA,MAAM,EAAEP,iBAAiB,CAACnlB,MAAM,CAAColB,KAAR;AAXpB,KAAP;AAaD;;AAED,SAAShB,wBAAT,CAAkCpkB,MAAlC;AACE,MAAI8J,wBAAwB,CAAC9J,MAAD,CAA5B,EAAsC;AACpC,WAAO,IAAI0U,aAAJ,CAAkB1U,MAAlB,CAAP;AACD;;AAED,MAAIgK,sBAAsB,CAAChK,MAAD,CAA1B,EAAoC;AAClC,WAAO,IAAImS,aAAJ,CAAkBnS,MAAlB,CAAP;AACD;;AAED,SAAO,IAAI6U,iBAAJ,CAAsB7U,MAAtB,CAAP;AACD;;AAED,SAASqkB,yBAAT,CAAmCrkB,MAAnC;AACE,SAAO,IAAIoY,kBAAJ,CAAuBpY,MAAvB,CAAP;AACD;;AAED,SAASwkB,4BAAT;MAAsC;AACpC9S,IAAAA,IADoC;AAEpC1G,IAAAA,MAFoC;AAGpCqH,IAAAA,WAHoC;AAIpCE,IAAAA,WAJoC;AAKpCuC,IAAAA;AALoC;AAOpC,SAAO;AACLpD,IAAAA,IAAI,EAAE1L,iBAAiB,CAAC0L,IAAD,CADlB;AAEL1G,IAAAA,MAAM,EAAEia,iBAAiB,CAACja,MAAD,CAFpB;AAGLuH,IAAAA,WAAW,EAAEvM,iBAAiB,CAACuM,WAAD,CAHzB;AAILF,IAAAA,WAAW,EAAEyS,gBAAgB,CAC3B9e,iBAAiB,CAACqM,WAAD,CADU,CAJxB;AAOLyC,IAAAA,SAAS,EAAEgQ,gBAAgB,CACzB9e,iBAAiB,CAAC8O,SAAD,CADQ;AAPtB,GAAP;AAWD;;AAED,SAASqQ,iBAAT,CAA2BQ,IAA3B;AACE,oCAAgCA,IAAhC;AACD;;AAED,SAAgBV,kBAAkBja;AAChC;AACA,SAAOA,MAAM,CAAC9L,GAAP,CAAW8G,iBAAX,CAAP;AACD;;AAED,SAAS8e,gBAAT,CAA0BxS,OAA1B;AACE,SAAOA,OAAK,GAAG,IAAItD,WAAJ,CAAUsD,OAAV,EAAiBrD,QAAjB,EAAH,GAAiC,IAA7C;AACD;;AChNM,MAAM2W,WAAW,GAAG,CACzB5lB,MADyB,EAEzBwP,GAFyB,EAGzBC,GAHyB;AAKzB,MAAI8R,iBAAiB,CAACvhB,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAACqQ,KAAP,GAAef,KAAK,CAACtP,MAAM,CAACqQ,KAAR,EAAeb,GAAf,EAAoBC,GAApB,CAApB;AACAzP,IAAAA,MAAM,CAACsT,MAAP,GAAgBhE,KAAK,CAACtP,MAAM,CAACsT,MAAR,EAAgB9D,GAAhB,EAAqBC,GAArB,CAArB;AACD,GAHD,MAGO,IAAI0R,iBAAiB,CAACnhB,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAAC0R,IAAP,GAAcpC,KAAK,CAACtP,MAAM,CAAC0R,IAAR,EAAclC,GAAd,EAAmBC,GAAnB,CAAnB;AACD;;AAED,SAAOzP,MAAP;AACD,CAbM;AAeP,SAAgB6lB,kBAAkB7lB;AAChC,MAAIuhB,iBAAiB,CAACvhB,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAACglB,WAAP,GAAqB,CAAChlB,MAAM,CAACqQ,KAAP,GAAe,CAAhB,EAAmBrQ,MAAM,CAACsT,MAAP,GAAgB,CAAnC,CAArB;AACD,GAFD,MAEO,IAAI6N,iBAAiB,CAACnhB,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAACgL,MAAP,GAAgB,CAAC,CAAD,EAAI,CAAJ,CAAhB;AACD;;AAED,SAAOhL,MAAP;AACD;AAED,MAAa8lB,YAAY,GAAG,CAC1B9lB,MAD0B;AAAA,MAE1B;AAAE0R,IAAAA;AAAF,GAF0B;AAAA,SAGvBmU,iBAAiB,CAACD,WAAW,CAAC5lB,MAAD,EAAS,CAAT,EAAY0R,IAAZ,CAAZ,CAHM;AAAA,CAArB;;ACbP,MAAMqU,mBAAmB,GAAG,EAA5B;AAEA,SAAgBC,gBAOdC;MANA;AACEjmB,IAAAA,MADF;AAEE0R,IAAAA,IAAI,GAAGqU,mBAFT;AAGEnN,IAAAA,MAAM,GAAG0K,gBAHX;AAIE4C,IAAAA;AAJF;AAQA5iB,EAAAA,eAAS,CAAC;AACR,QAAI2iB,SAAS,CAAC1oB,OAAV,KAAsB,IAAtB,IAA8ByC,MAAM,KAAKkP,SAA7C,EAAwD;AACtD,YAAM4D,MAAM,GAAGmT,SAAS,CAAC1oB,OAAzB;AACA4oB,MAAAA,aAAa,CAACrT,MAAD,EAASpB,IAAT,EAAewU,QAAf,CAAb;AAEAtN,MAAAA,MAAM,CAAC5Y,MAAD,EAAS0R,IAAT,CAAN,CAAqB0U,IAArB,CAA0B/N,OAAO;AAC/BsL,QAAAA,oBAAoB,CAACtL,OAAD,EAAUvF,MAAV,CAApB;AACD,OAFD;AAGD;;AAEF,GAVQ,EAUN,CAAC9S,MAAD,EAAS0R,IAAT,EAAewU,QAAf,CAVM,CAAT;AAWD;;AAED,SAASC,aAAT,CAAuBrT,MAAvB,EAAuCpB,IAAvC,EAAqDwU,QAArD;AACEpT,EAAAA,MAAM,CAACoG,IAAP,CAAY5F,MAAZ,GAAqB5B,IAArB;AACAoB,EAAAA,MAAM,CAACoG,IAAP,CAAY7I,KAAZ,GAAoB6V,QAAQ,GAAGxW,IAAI,CAACF,GAAL,CAASkC,IAAT,EAAewU,QAAf,CAAH,GAA8BxU,IAA1D;AACD;;SCzCe2U;AACd,QAAMvT,MAAM,GAAGwT,YAAM,CAAgB,IAAhB,CAArB;AACA,QAAMC,GAAG,GAAG5oB,iBAAW,CAAEub,IAAD;AACtB,QAAIA,IAAI,KAAK,IAAb,EAAmB;AACjBpG,MAAAA,MAAM,CAACvV,OAAP,GAAiB,IAAIipB,aAAJ,CAAWtN,IAAX,CAAjB;AACD,KAFD,MAEO;AACLpG,MAAAA,MAAM,CAACvV,OAAP,GAAiB,IAAjB;AACD;AACF,GANsB,EAMpB,EANoB,CAAvB;AAQA,SAAO;AAAEuV,IAAAA,MAAF;AAAUyT,IAAAA;AAAV,GAAP;AACD;;SCZeE;MAAS;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX;AACvBrjB,EAAAA,eAAS,CAAC;AACRojB,IAAAA,OAAO,IAAIA,OAAO,EAAlB;AACA,WAAOC,SAAP;AAED,GAJQ,EAIN,EAJM,CAAT;AAKD;;SCJeC,kBAEdC;MADA;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,UAAX;AAAuBjI,IAAAA;AAAvB;;MACA+H;AAAAA,IAAAA,OAAU;;;AAEV,QAAMG,OAAO,GAAGV,YAAM,EAAtB;AAEAG,EAAAA,QAAQ,CAAC;AACPE,IAAAA,SAAS;AACP,UAAIK,OAAO,CAACzpB,OAAR,IAAmBwpB,UAAvB,EAAmC;AACjCA,QAAAA,UAAU,CAACC,OAAO,CAACzpB,OAAT,CAAV;AACD;AACF;;AALM,GAAD,CAAR;AAQA,SAAOiB,aAAO,CAAC;AACb,QAAIwoB,OAAO,CAACzpB,OAAZ,EAAqB;AACnB,UAAIuhB,MAAJ,EAAY;AACV,cAAMmI,OAAO,GAAGnI,MAAM,CAACkI,OAAO,CAACzpB,OAAT,EAAkBspB,IAAlB,EAAwB;AAAEC,UAAAA,OAAF;AAAWC,UAAAA;AAAX,SAAxB,CAAtB;AACA,YAAIE,OAAJ,EAAaD,OAAO,CAACzpB,OAAR,GAAkB0pB,OAAlB;AACd,OAHD,MAGO,IAAIF,UAAJ,EAAgB;AACrBA,QAAAA,UAAU,CAACC,OAAO,CAACzpB,OAAT,CAAV;AACD;AACF,KAPD,MAOO;AACL,UAAI,CAACuhB,MAAD,IAAW,CAACkI,OAAO,CAACzpB,OAAxB,EAAiC;AAC/BypB,QAAAA,OAAO,CAACzpB,OAAR,GAAkBupB,OAAO,CAACD,IAAD,CAAzB;AACD;AACF;;AAED,WAAOG,OAAO,CAACzpB,OAAf;AAED,GAhBa,EAgBXspB,IAhBW,CAAd;AAiBD;;SCjCeK;MAAuC;AACrDC,IAAAA,QADqD;AAErDC,IAAAA,YAFqD;AAGrDP,IAAAA;AAHqD;AAKrDvjB,EAAAA,eAAS,CAAC;AACR,QAAI,CAAC8jB,YAAD,IAAiBA,YAAY,EAAjC,EAAqC;AACnCD,MAAAA,QAAQ;AACT;;AAEF,GALQ,EAKNN,IALM,CAAT;AAMD;;SCPeQ,cAAc3nB,OAAcqD;AAC1C,QAAM;AAAE7D,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA6nB,EAAAA,SAAS,CAAC;AACRC,IAAAA,QAAQ,EAAE,MAAMjoB,GAAG,CAACooB,WAAJ,CAAgB5nB,KAAhB,EAAuBqD,MAAvB,CADR;AAER8jB,IAAAA,IAAI,EAAE,CAAC9jB,MAAD,EAASrD,KAAT;AAFE,GAAD,CAAT;AAID;;SCTe6nB,mBAAmB7nB,OAAc8nB;MAAAA;AAAAA,IAAAA,cAAuB;;;AACtEN,EAAAA,SAAS,CAAC;AACRE,IAAAA,YAAY,EAAE,MAAM1nB,KAAK,CAAC8nB,WAAN,KAAsBA,WADlC;AAERL,IAAAA,QAAQ,EAAE,MAAOznB,KAAK,CAAC8nB,WAAN,GAAoBA,WAF7B;AAGRX,IAAAA,IAAI,EAAE,CAACW,WAAD,EAAc9nB,KAAd;AAHE,GAAD,CAAT;AAKD;;SCNe+nB,gBAAgB/nB,OAAcgoB;MAAAA;AAAAA,IAAAA,UAAkB;;;AAC9DR,EAAAA,SAAS,CAAC;AACRE,IAAAA,YAAY,EAAE,MAAM1nB,KAAK,CAACgoB,OAAN,KAAkBA,OAD9B;AAERP,IAAAA,QAAQ,EAAE,MAAOznB,KAAK,CAACgoB,OAAN,GAAgBA,OAFzB;AAGRb,IAAAA,IAAI,EAAE,CAACa,OAAD,EAAUhoB,KAAV;AAHE,GAAD,CAAT;AAKD;;SCCeioB;MAAuB;AACrCC,IAAAA,IADqC;AAErC7kB,IAAAA,MAFqC;AAGrC4E,IAAAA,KAHqC;AAIrCrF,IAAAA,GAJqC;AAKrCulB,IAAAA,EALqC;AAMrC/jB,IAAAA,SANqC;AAOrC0jB,IAAAA,WAPqC;AAQrCE,IAAAA,OARqC;AASrCI,IAAAA,YATqC;AAUrCC,IAAAA,WAVqC;AAWrCC,IAAAA;AAXqC;AAarC,QAAM1pB,KAAG,GAAGK,iBAAiB,EAA7B;AACA,QAAM;AAAEO,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAGknB,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAImB,uBAAJ,CAAwB;AAAEL,MAAAA,IAAF;AAAQ9jB,MAAAA,SAAR;AAAmB6D,MAAAA,KAAnB;AAA0BrF,MAAAA,GAA1B;AAA+BwlB,MAAAA,YAA/B;AAA6CC,MAAAA,WAA7C;AAA0DC,MAAAA;AAA1D,KAAxB,EAA+F1pB,KAA/F,CADjB;AAEEyoB,IAAAA,UAAU,EAAErnB,KAAK,IAAIR,GAAG,CAACgpB,OAAJ,CAAYxoB,KAAZ,MAA2C,CAAC,CAA5C,IAAiDR,GAAG,CAACipB,WAAJ,CAAgBzoB,KAAhB,CAFxE;AAGEof,IAAAA,MAAM,EAAE,CAACpf,KAAD;UAAQ,CAACkoB,IAAD,EAAOjgB,KAAP,EAAc7D,SAAd,EAAyBxB,GAAG,GAAG8lB,eAA/B,EAA4CN,YAA5C;AACdpoB,MAAAA,KAAK,CAACkoB,IAAN,GAAaA,IAAb;AACAloB,MAAAA,KAAK,CAACiI,KAAN,GAAcA,KAAd;AACAjI,MAAAA,KAAK,CAACoE,SAAN,GAAkBA,SAAlB;AACApE,MAAAA,KAAK,CAACooB,YAAN,GAAqBA,YAArB;AACApoB,MAAAA,KAAK,CAAC4C,GAAN,GAAYA,GAAZ;AACD;AATH,GADuB,EAYvB,CAACslB,IAAD,EAAOjgB,KAAP,EAAc7D,SAAd,EAAyBxB,GAAzB,EAA8BwlB,YAA9B,EAA4CD,EAA5C,CAZuB,CAAzB;AAeAR,EAAAA,aAAa,CAAC3nB,KAAD,EAA4BqD,MAA5B,CAAb;AACAwkB,EAAAA,kBAAkB,CAAC7nB,KAAD,EAA4B8nB,WAA5B,CAAlB;AACAC,EAAAA,eAAe,CAAC/nB,KAAD,EAA4BgoB,OAA5B,CAAf;AAEA,SAAOhoB,KAAP;AACD;;SCjCe2oB;MAAoB;AAClCT,IAAAA,IADkC;AAElCU,IAAAA,SAFkC;AAGlCC,IAAAA,UAHkC;AAIlCxlB,IAAAA,MAJkC;AAKlCykB,IAAAA,WALkC;AAMlCllB,IAAAA,GANkC;AAOlColB,IAAAA;AAPkC;AASlC,QAAMppB,KAAG,GAAGK,iBAAiB,EAA7B;AACA,QAAM;AAAEO,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAMK,KAAK,GAAGlB,aAAO,CACnB,MAAM,IAAIgqB,oBAAJ,CAAqB;AAAEZ,IAAAA,IAAF;AAAQU,IAAAA,SAAR;AAAmBC,IAAAA,UAAnB;AAA+BjmB,IAAAA,GAA/B;AAAoColB,IAAAA;AAApC,GAArB,EAAoEppB,KAApE,CADa;AAGnB,GAACspB,IAAD,EAAOU,SAAP,EAAkBC,UAAlB,EAA8BjmB,GAA9B,EAAmColB,OAAnC,CAHmB,CAArB;AAMApkB,EAAAA,eAAS,CACP,MAAM;AACJpE,IAAAA,GAAG,CAACgpB,OAAJ,CAAaxoB,KAAb,MAA6C,CAAC,CAA9C,IACER,GAAG,CAACipB,WAAJ,CAAiBzoB,KAAjB,CADF;AAED,GAJM;AAMP,GAACA,KAAD,CANO,CAAT;AASA2nB,EAAAA,aAAa,CAAE3nB,KAAF,EAA8BqD,MAA9B,CAAb;AACAwkB,EAAAA,kBAAkB,CAAE7nB,KAAF,EAA8B8nB,WAA9B,CAAlB;AAEA,SAAO9nB,KAAP;AACD;;SCjCe+oB;MAAgB;AAC9B1lB,IAAAA,MAD8B;AAE9BykB,IAAAA,WAAW,GAAG,IAFgB;AAG9BpkB,IAAAA,QAH8B;AAI9BskB,IAAAA;AAJ8B;AAM9B,QAAM;AAAExoB,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAGknB,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAIvnB,2BAAJ,CAAiB;AAAE6D,MAAAA,QAAF;AAAYskB,MAAAA;AAAZ,KAAjB,CADjB;AAEEX,IAAAA,UAAU,EAAErnB,KAAK,IAAIR,GAAG,CAACgpB,OAAJ,CAAYxoB,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAACipB,WAAJ,CAAgBzoB,KAAhB,CAFpD;AAGEof,IAAAA,MAAM,EAAE,CAACpf,KAAD;UAAQ,CAAC0D,QAAD;AACd1D,MAAAA,KAAK,CAAC0D,QAAN,GAAiBA,QAAjB;AACD;AALH,GADuB,EAQvB,CAACA,QAAD,CARuB,CAAzB;AAWAikB,EAAAA,aAAa,CAAC3nB,KAAD,EAAQqD,MAAR,CAAb;AACAwkB,EAAAA,kBAAkB,CAAC7nB,KAAD,EAAQ8nB,WAAR,CAAlB;AACAC,EAAAA,eAAe,CAAC/nB,KAAD,EAAQgoB,OAAR,CAAf;AAEA,SAAOhoB,KAAP;AACD;;SC7BegpB,iBACdC,cACAC;AAEA,QAAM;AAAE1pB,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMkB,KAAK,GAAGqoB,KAAK,GAAGC,oBAAH,GAAqBC,uBAAxC;AAEA,QAAMC,gBAAgB,GAAGprB,iBAAW,CAAC;AACnCgrB,IAAAA,YAAY,IAAIA,YAAY,CAACK,WAAW,CAAC9pB,GAAD,CAAZ,CAA5B;AAED,GAHmC,EAGjC,CAACypB,YAAD,EAAezpB,GAAf,EAAoBqB,KAApB,CAHiC,CAApC;AAKA+C,EAAAA,eAAS,CAAC;AACRpE,IAAAA,GAAG,CAAC+pB,EAAJ,CAAO1oB,KAAK,CAACuF,IAAb,EAAmBijB,gBAAnB;AAEA,WAAO;AACL7pB,MAAAA,GAAG,CAACgqB,GAAJ,CAAQ3oB,KAAK,CAACuF,IAAd,EAAoBijB,gBAApB;AACD,KAFD;AAID,GAPQ,EAON,CAACA,gBAAD,EAAmBxoB,KAAnB,CAPM,CAAT;AAQD;AAOD,SAAgByoB,YAAY9pB;AAC1B,SAAO;AACLsC,IAAAA,QAAQ,EAAEtC,GAAG,CAACsC,QAAJ,CAAaO,KAAb,CAAmB,CAAnB,CADL;AAELH,IAAAA,UAAU,EAAE1C,GAAG,CAAC0C;AAFX,GAAP;AAID;;SClCeunB,aAAaC;AAC3B,QAAM;AAAEjqB,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AAEA,QAAMgqB,eAAe,GAAG1rB,iBAAW,CAAC;AAClCyrB,IAAAA,QAAQ,IAAIA,QAAQ,CAAC,CAACjqB,OAAO,CAACkR,KAAT,EAAgBlR,OAAO,CAACmU,MAAxB,CAAD,CAApB;AAED,GAHkC,EAGhC,CAAC8V,QAAD,EAAWjqB,OAAX,CAHgC,CAAnC;AAKAmE,EAAAA,eAAS,CAAC;AACRnE,IAAAA,OAAO,CAAC8pB,EAAR,CAAWK,oBAAS,CAACxjB,IAArB,EAA2BujB,eAA3B;AAEA,WAAO;AACLlqB,MAAAA,OAAO,CAAC+pB,GAAR,CAAYI,oBAAS,CAACxjB,IAAtB,EAA4BujB,eAA5B;AACD,KAFD;AAID,GAPQ,EAON,CAACA,eAAD,CAPM,CAAT;AAQD;;MCOYE,UAAU,GAAG;AACxB,QAAM;AAAErqB,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM,CAACmqB,cAAD,EAAiBC,iBAAjB,IAAsChsB,cAAQ,EAApD;AAEA,QAAMisB,aAAa,GAAGlrB,aAAO,CAAC,MAAMU,GAAG,CAACkB,MAAX,EAAgD,CAC3ElB,GAAG,CAACkB,MADuE,CAAhD,CAA7B;AAIA,QAAMupB,IAAI,GAAGhsB,iBAAW,CACrB4C,KAAD;AACE,QAAI,EAAEA,KAAK,YAAYqpB,2BAAnB,CAAJ,EAAwC;AACtC;AACD;;AAED,UAAMC,cAAc,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO1qB,OAAO,CAACkR,KAAf,EAAsBlR,OAAO,CAACmU,MAA9B,CAAvB;AACA,UAAM,CAAC3S,CAAD,EAAIC,CAAJ,IAASzB,OAAO,CAAC2qB,aAAR,CAAsBvpB,KAAK,CAACC,KAAN,CAAYgB,QAAlC,CAAf;AAEAioB,IAAAA,iBAAiB,CAAC;AAChBM,MAAAA,aAAa,EAAExpB,KAAK,CAACC,KAAN,CAAYgB,QADX;AAEhBwoB,MAAAA,UAAU,EAAE,CAACta,IAAI,CAACc,KAAL,CAAW7P,CAAX,CAAD,EAAgB+O,IAAI,CAACc,KAAL,CAAW5P,CAAX,CAAhB,CAFI;AAGhBqpB,MAAAA,SAAS,EAAEC,qBAAqB,CAACR,aAAD,CAHhB;AAIhBG,MAAAA,cAJgB;AAKhBM,MAAAA,QAAQ,EAAEjrB,GAAG,CAACoD,GAAJ,CAAQ8nB;AALF,KAAD,CAAjB;AAOD,GAhBqB,EAkBtB,CAACjrB,OAAD,EAAUuqB,aAAV,EAAyBxqB,GAAG,CAACoD,GAAJ,CAAQ8nB,IAAjC,CAlBsB,CAAxB;AAqBA3D,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE,MAAMxnB,GAAG,CAAC+pB,EAAJ,CAAO,OAAP,EAAgBU,IAAhB,CADR;AAEPhD,IAAAA,SAAS,EAAE,MAAMznB,GAAG,CAACgqB,GAAJ,CAAQ,OAAR,EAAiBS,IAAjB;AAFV,GAAD,CAAR;AAKA,SAAOH,cAAP;AACD,CAnCM;;AAqCP,SAASa,iBAAT,CAA2B3qB,KAA3B;AACE;AAEEA,IAAAA,KAAK,CAAC4qB,cAAN;AAEA5qB,IAAAA,KAAK,CAAC4qB,cAAN,CAAqBloB,IAFrB;AAIA1C,IAAAA,KAAK,CAAC4qB,cAAN,CAAqBloB,IAArB,CAA0BsV;AAN5B;AAQD;;AAED,SAASwS,qBAAT,CAA+B9pB,MAA/B;AACE,MAAI6pB,SAAS,GAAc,EAA3B;;AAEA,OAAK,MAAMvqB,KAAX,IAAoBU,MAApB,EAA4B;AAC1B,QAAI,CAACmqB,yBAAqB,CAAC7qB,KAAD,CAA1B,EAAmC;AACjC;AACD;;AAEDuqB,IAAAA,SAAS,CAACvqB,KAAK,CAACkoB,IAAP,CAAT,GAAwByC,iBAAiB,CAAC3qB,KAAD,CAAzC;AACD;;AAED,SAAOuqB,SAAP;AACD;;SClFeO,YAAY5B;AAC1B,QAAM;AAAE1pB,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAM,GAAGorB,QAAH,IAAeC,gBAAU,CAACC,eAAD,EAAkBzb,SAAlB,EAA6B,MAC1D8Z,WAAW,CAAC9pB,GAAD,CADkB,CAA/B;AAIA,QAAM6pB,gBAAgB,GAAGprB,iBAAW,CAAC8sB,QAAD,EAAW,CAACA,QAAD,CAAX,CAApC;AAEA/B,EAAAA,gBAAgB,CAACK,gBAAD,EAAmBH,KAAnB,CAAhB;AAEA,SAAOI,WAAW,CAAC9pB,GAAD,CAAlB;AACD;;AAED,SAASyrB,eAAT,CAAyBxK,CAAzB,EAAsCyK,QAAtC;AACE,SAAOA,QAAP;AACD;;SCdeC;AACd,QAAM;AAAE3rB,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM;AAAEmC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ,MAA2B4oB,WAAW,EAA5C;AAEA,QAAM9nB,KAAK,GAAGlE,aAAO,CAAC;AACpB,UAAMiQ,KAAK,GAAGvP,GAAG,CAACyD,UAAJ,CAAemoB,QAAf,CAAwBlpB,UAAxB,CAAd;AAEA,QAAI6M,KAAK,KAAK,KAAK,CAAf,IAAoBA,KAAK,KAAK,IAAlC,EAAwC;AAExC,WAAOvP,GAAG,CAACyD,UAAJ,CAAeE,MAAf,CAAsB4L,KAAtB,EAA6B1L,MAApC;AAED,GAPoB,EAOlB,CAACnB,UAAD,CAPkB,CAArB;;AAUA,QAAMQ,IAAI,GAAG5D,aAAO,CAAC,MAAMW,OAAO,CAACiD,IAAf,EAAqB,CAACZ,QAAD,EAAWI,UAAX,CAArB,CAApB;AAEA,SAAO;AACLJ,IAAAA,QADK;AAELI,IAAAA,UAFK;AAGLc,IAAAA,KAHK;AAILN,IAAAA;AAJK,GAAP;AAMD;AAED,SAAgB2oB;AACd,QAAM;AAAE7rB,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM;AAAEuC,IAAAA;AAAF,MAAiB4oB,WAAW,CAAC,IAAD,CAAlC;AAEA,SAAOhsB,aAAO,CAAC;AACb,UAAMiQ,KAAK,GAAGvP,GAAG,CAACyD,UAAJ,CAAemoB,QAAf,CAAwBlpB,UAAxB,CAAd;AAEA,QAAI6M,KAAK,KAAK,KAAK,CAAf,IAAoBA,KAAK,KAAK,IAAlC,EAAwC;AAExC,WAAOvP,GAAG,CAACyD,UAAJ,CAAeE,MAAf,CAAsB4L,KAAtB,EAA6B1L,MAApC;AAED,GAPa,EAOX,CAACnB,UAAD,CAPW,CAAd;AAQD;;SCtCeopB;AACd,QAAM;AAAE7rB,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AACA,QAAM4rB,UAAU,GAAG3E,YAAM,CAAwB,IAAxB,CAAzB;AAEAG,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE,MAAOvnB,OAAO,CAACuB,OAAR,GAAkBuqB,UAAU,CAAC1tB,OADtC;AAEPopB,IAAAA,SAAS,EAAE,MAAOxnB,OAAO,CAACuB,OAAR,GAAkB;AAF7B,GAAD,CAAR;AAKA,SAAOuqB,UAAP;AACD;;ACVD,MAAMC,OAAO,GAAIC,KAAD,IAAmB;AAAA,MAAC;AAAEpoB,IAAAA;AAAF,GAAD;AAAA,SACjCA,MAAM,KAAKooB,KADsB;AAAA,CAAnC;;AAGA,MAAaC,cAAc,GAAG,CAC5BC,QAD4B,EAE5BC,QAF4B,EAG5BC,eAH4B,EAI5BC,iBAJ4B;AAM5B,QAAM;AAAEtsB,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEAiE,EAAAA,eAAS,CAAC;AACR,UAAMT,MAAM,GAAG3D,GAAG,CAACyD,UAAJ,CAAeE,MAA9B;;AAEA,QAAIyoB,QAAQ,KAAKpc,SAAjB,EAA4B;AAC1B,YAAM;AAAEtN,QAAAA;AAAF,UAAiBiB,MAAM,CAACC,IAAP,CAAYooB,OAAO,CAACI,QAAD,CAAnB,KAAkC;AACvD1pB,QAAAA,UAAU,EAAE,CAAC;AAD0C,OAAzD;AAGA1C,MAAAA,GAAG,CAAC0M,aAAJ,GAAoBhK,UAApB;AACD;;AACD,QAAIypB,QAAQ,KAAKnc,SAAjB,EAA4B;AAC1B,YAAM;AAAEtN,QAAAA;AAAF,UAAiBiB,MAAM,CAACC,IAAP,CAAYooB,OAAO,CAACG,QAAD,CAAnB,KAAkC;AACvDzpB,QAAAA,UAAU,EAAE,CAAC;AAD0C,OAAzD;AAGA1C,MAAAA,GAAG,CAAC2M,aAAJ,GAAoBjK,UAApB;AACD;;AAED,QAAIypB,QAAQ,KAAKnc,SAAb,IAA0Boc,QAAQ,KAAKpc,SAA3C,EAAsD;AACpDuc,MAAAA,mBAAmB,CAACvsB,GAAD,EAAMqsB,eAAN,EAAuBC,iBAAvB,CAAnB;AACD;;AAEF,GApBQ,EAoBN,CAACtsB,GAAD,EAAMmsB,QAAN,EAAgBC,QAAhB,CApBM,CAAT;AAqBD,CA7BM;AA+BP,MAAaG,mBAAmB,GAAG,CACjCvsB,GADiC,EAEjCqsB,eAFiC,EAGjCC,iBAHiC;AAKjC,MAAID,eAAe,IAAIC,iBAAvB,EAA0C;AACxC,UAAME,aAAa,GAAGhc,IAAI,CAACF,GAAL,CACpBE,IAAI,CAACD,GAAL,CAAS+b,iBAAT,EAA4BtsB,GAAG,CAAC0M,aAAJ,IAAqB,CAAjD,CADoB,EAEpB1M,GAAG,CAAC2M,aAAJ,IAAqB8f,MAAM,CAACC,SAFR,CAAtB;AAKA1sB,IAAAA,GAAG,CAACyC,SAAJ,CAAc4pB,eAAd,EAA+BG,aAA/B;AACD;AACF,CAbM;;ACnCP,SAASG,QAAT,CAAkBV,KAAlB;AACE,QAAMW,KAAK,GAAGpc,IAAI,CAACqc,GAAL,CAAS,EAAT,EAAa,CAACrc,IAAI,CAACsc,KAAL,CAAWb,KAAX,IAAoB,EAArB,EAAyB7tB,MAAzB,GAAkC,CAA/C,CAAd;AACA,QAAM2uB,CAAC,GAAGd,KAAK,GAAGW,KAAlB;AAEA,SAAOA,KAAK,IAAIG,CAAC,IAAI,EAAL,GAAU,EAAV,GAAeA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAa,CAA1D,CAAZ;AACD;;AAED,SAASC,sBAAT,CAAgCtqB,UAAhC;AACE,QAAM;AAAEzC,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AACA,QAAM;AACJiU,IAAAA,MADI;AAEJjD,IAAAA,KAFI;AAGJjO,IAAAA,IAAI,EAAE;AAAEH,MAAAA,IAAF;AAAQD,MAAAA,IAAR;AAAcG,MAAAA,IAAd;AAAoBD,MAAAA,IAApB;AAA0BI,MAAAA;AAA1B;AAHF,MAIFnD,OAJJ;AAMA,SAAOX,aAAO,CAAC;AACb,QAAI6R,KAAK,KAAK,CAAd,EAAiB;AACf,aAAOzO,UAAP;AACD;;AACD,UAAMuqB,aAAa,GAAG9b,KAAK,GAAG,EAA9B;AACA,UAAMoD,CAAC,GAAGtU,OAAO,CAAC+B,sBAAR,CAA+B,CAA/B,EAAkCoS,MAAM,GAAG,CAA3C,CAAV;AACA,UAAMY,CAAC,GAAG/U,OAAO,CAAC+B,sBAAR,CAA+BirB,aAA/B,EAA8C7Y,MAAM,GAAG,CAAvD,CAAV;AAEA,WAAOqK,iBAAQ,CAAClK,CAAD,EAAIS,CAAJ,CAAR,GAAiBiY,aAAxB;AAED,GAVa,EAUX,CAAC7Y,MAAD,EAASjD,KAAT,EAAgBpO,IAAhB,EAAsBD,IAAtB,EAA4BG,IAA5B,EAAkCD,IAAlC,EAAwCI,GAAG,CAAC8nB,IAA5C,EAAkDxoB,UAAlD,EAA8DzC,OAA9D,CAVW,CAAd;AAWD;;AAED,SAAgBitB;MAAS;AACvBxqB,IAAAA,UADuB;AAEvByqB,IAAAA,SAAS,GAAG;AAFW;AAOvB,QAAMC,mBAAmB,GAAGJ,sBAAsB,CAACtqB,UAAD,CAAlD;AAEA,SAAOpD,aAAO,CAAC;AACb,UAAM6sB,QAAQ,GAAGgB,SAAS,GAAGC,mBAA7B;AACA,UAAMC,YAAY,GAAGV,QAAQ,CAACR,QAAD,CAA7B;AACA,UAAMhb,KAAK,GAAGwb,QAAQ,CAACR,QAAD,CAAR,GAAqBiB,mBAAnC;AAEA,WAAO;AACLC,MAAAA,YADK;AAELlc,MAAAA;AAFK,KAAP;AAID,GATa,EASX,CAACic,mBAAD,EAAsBD,SAAtB,CATW,CAAd;AAUD;;SC1CeG,uBAEd5D;MADA;AAAEpnB,IAAAA,QAAF;AAAYI,IAAAA;AAAZ;AAGA,QAAM;AAAE1C,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM;AAAEsC,IAAAA;AAAF,MAAgBR,iBAAiB,EAAvC;AAEAmC,EAAAA,eAAS,CAAC;AACR,QAAImpB,oBAAoB,CAACvtB,GAAD,EAAM;AAAEsC,MAAAA,QAAF;AAAYI,MAAAA;AAAZ,KAAN,CAAxB,EAAyD;AACvDD,MAAAA,SAAS,CAAC;AACRH,QAAAA,QADQ;AAERI,QAAAA;AAFQ,OAAD,CAAT;AAID;;AAEF,GARQ,EAQN,CAACJ,QAAD,EAAWI,UAAX,EAAuBgnB,KAAvB,CARM,CAAT;AASD;;AAED,SAAS8D,oBAAT,CAA8BxtB,GAA9B,EAAwCsC,QAAxC;AACE,SACEA,QAAQ,KACP,CAACmrB,eAAU,CAACztB,GAAG,CAACsC,QAAJ,CAAa,CAAb,CAAD,EAAkBA,QAAQ,CAAC,CAAD,CAA1B,CAAX,IACC,CAACmrB,eAAU,CAACztB,GAAG,CAACsC,QAAJ,CAAa,CAAb,CAAD,EAAkBA,QAAQ,CAAC,CAAD,CAA1B,CAFL,CADV;AAKD;;AAED,SAASorB,sBAAT,CAAgC1tB,GAAhC,EAA0C0C,UAA1C;AACE,SAAOA,UAAU,IAAI,CAAC+qB,eAAU,CAACztB,GAAG,CAAC0C,UAAL,EAAiBA,UAAjB,CAAhC;AACD;;AAED,SAAgB6qB,qBACdvtB;MACA;AAAEsC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ;AAEA,SACE8qB,oBAAoB,CAACxtB,GAAD,EAAMsC,QAAN,CAApB,IACAorB,sBAAsB,CAAC1tB,GAAD,EAAM0C,UAAN,CAFxB;AAID;;MCRYirB,UAAU,GAAG,SAAbA,UAAa,CAAC9pB,MAAD;MAACA;AAAAA,IAAAA,SAAS;;;AAClC,QAAM;AAAErD,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAwBE,iBAAiB,EAA/C;AACA,QAAM;AAAEX,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM+B,aAAa,GAAGd,aAAa,EAAnC;AAEA,QAAMwsB,cAAc,GAAwCxG,YAAM,CAAC,EAAD,CAAlE;AACA,QAAMyG,YAAY,GAA0CzG,YAAM,CAAC,IAAD,CAAlE;AACA,QAAM0G,MAAM,GAAsC1G,YAAM,CAAC,EAAD,CAAxD;AAEA,QAAM2G,UAAU,GAAGtvB,iBAAW,CAAC,MAAMgC,UAAU,CAACutB,MAAX,CAAkBvtB,UAAU,CAACyD,QAA7B,CAAP,EAA+C,CAC3EzD,UAD2E,CAA/C,CAA9B;AAIA,QAAM7B,KAAK,GAAGH,iBAAW,CAAC;AACxBmvB,IAAAA,cAAc,CAACvvB,OAAf,CAAuBsjB,OAAvB,CAA+B,CAAC3d,OAAD,EAAyBuL,KAAzB;AAC7B,YAAM0e,oBAAoB,GAAGH,MAAM,CAACzvB,OAAP,CAAekR,KAAf,CAA7B;;AAEA,UAAI0e,oBAAJ,EAA0B;AACxB,cAAM;AACJC,UAAAA,WADI;AAEJC,UAAAA,WAFI;AAGJC,UAAAA,UAHI;AAIJC,UAAAA;AAJI,YAKFJ,oBALJ;;AAOA,YAAIjqB,OAAO,CAACsqB,WAAR,CAAoB,WAApB,EAAiCJ,WAAjC,CAAJ,EAA8D;AAC5DlqB,UAAAA,OAAO,CAACgmB,GAAR,CAAY,WAAZ,EAAyBkE,WAAzB;AACD;;AAED,YAAIlqB,OAAO,CAACsqB,WAAR,CAAoB,WAApB,EAAiCH,WAAjC,CAAJ,EAA8D;AAC5DnqB,UAAAA,OAAO,CAACgmB,GAAR,CAAY,WAAZ,EAAyBmE,WAAzB;AACD;;AAED,YAAInqB,OAAO,CAACsqB,WAAR,CAAoB,UAApB,EAAgCF,UAAhC,CAAJ,EAA4D;AAC1DpqB,UAAAA,OAAO,CAACgmB,GAAR,CAAY,UAAZ,EAAwBoE,UAAxB;AACD;;AAED,YAAIpqB,OAAO,CAACsqB,WAAR,CAAoB,OAApB,EAA6BD,OAA7B,CAAJ,EAAsD;AACpDrqB,UAAAA,OAAO,CAACgmB,GAAR,CAAY,OAAZ,EAAqBqE,OAArB;AACD;AACF;AACF,KA3BD;AA6BAruB,IAAAA,GAAG,CAACgqB,GAAJ,CAAQ,OAAR,EAAiB+D,UAAjB;AACAH,IAAAA,cAAc,CAACvvB,OAAf,GAAyB,EAAzB;AACAwvB,IAAAA,YAAY,CAACxvB,OAAb,GAAuB,IAAvB;AACAmC,IAAAA,KAAK,CAACwtB,MAAN,CAAaxtB,KAAK,CAAC0D,QAAnB;AACA4pB,IAAAA,MAAM,CAACzvB,OAAP,GAAiB,EAAjB;;AAEA,QAAI2B,GAAG,CAACgpB,OAAJ,CAAYvoB,UAAZ,MAA4B,CAAC,CAAjC,EAAoC;AAClCT,MAAAA,GAAG,CAACipB,WAAJ,CAAgBxoB,UAAhB;AACD;AACF,GAvCwB,EAuCtB,CAACstB,UAAD,EAAattB,UAAb,EAAyBD,KAAzB,EAAgCR,GAAhC,CAvCsB,CAAzB;AAyCAoE,EAAAA,eAAS,CAAC;AACR,QAAIpE,GAAG,CAACgpB,OAAJ,CAAYxoB,KAAZ,MAAuB,CAAC,CAA5B,EAA+B;AAC7BR,MAAAA,GAAG,CAACooB,WAAJ,CAAgB5nB,KAAhB,EAAuBqD,MAAvB;AACD;;AACD,WAAOjF,KAAP;AACD,GALQ,EAKN,CAACA,KAAD,EAAQoB,GAAR,EAAaQ,KAAb,EAAoBqD,MAApB,CALM,CAAT;AAOA,QAAM0qB,iBAAiB,GAAG9vB,iBAAW,CACnC;QAAC;AACC6C,MAAAA,KADD;AAECgB,MAAAA,QAFD;AAGCyX,MAAAA,SAHD;AAICyU,MAAAA;AAJD;AAQC,UAAMxqB,OAAO,GAAG,IAAIyqB,kBAAJ,CAAiBnsB,QAAQ,IAAIhB,KAAK,CAACgB,QAAnC,EAA6C;AAC3DxB,MAAAA,MAAM,EAAE,IAAIgZ,WAAJ,CAAgB;AACtBC,QAAAA,SAAS,EAAEA;AADW,OAAhB,CADmD;AAI3D3W,MAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAJkD,KAA7C,CAAhB;;AAOA,QAAIorB,SAAJ,EAAe;AACb,UAAIxuB,GAAG,CAACgpB,OAAJ,CAAYvoB,UAAZ,MAA4B,CAAC,CAAjC,EAAoC;AAClCT,QAAAA,GAAG,CAACooB,WAAJ,CAAgB3nB,UAAhB,EAA4BoD,MAA5B;AACD;;AAEDpD,MAAAA,UAAU,CAACutB,MAAX,CAAkBvtB,UAAU,CAACyD,QAA7B;AACAzD,MAAAA,UAAU,CAAC0gB,GAAX,CAAend,OAAf;AACD,KAPD,MAOO;AACL6pB,MAAAA,YAAY,CAACxvB,OAAb,GAAuB2F,OAAvB;AACAxD,MAAAA,KAAK,CAAC2gB,GAAN,CAAUnd,OAAV;AACD;AACF,GA3BkC,EA4BnC,CAACvD,UAAD,EAAaD,KAAb,EAAoBR,GAApB,EAAyB6D,MAAzB,CA5BmC,CAArC;AA+BA,QAAM6qB,oBAAoB,GAAGjwB,iBAAW,CACtC4C,KAAK;AACH,QAAIA,KAAK,CAAC2Y,IAAV,EAAgB;AACd3Y,MAAAA,KAAK,CAAC2Y,IAAN,CAAW2U,gBAAX,GAA8B,IAA9B;AACD;;AACDttB,IAAAA,KAAK,CAACutB,eAAN;AACAf,IAAAA,YAAY,CAACxvB,OAAb,IACEmC,KAAK,CAACquB,GAAN,CAAUhB,YAAY,CAACxvB,OAAvB,CADF,IAEEmC,KAAK,CAACwtB,MAAN,CAAaH,YAAY,CAACxvB,OAA1B,CAFF;AAGAwvB,IAAAA,YAAY,CAACxvB,OAAb,GAAuB,IAAvB;AACAmC,IAAAA,KAAK,CAACwtB,MAAN,CAAaxtB,KAAK,CAAC0D,QAAnB;AACD,GAXqC,EAYtC,CAAC1D,KAAD,CAZsC,CAAxC;AAeA,SAAO/B,iBAAW,CACfqwB,aAAD;AACE,UAAM;AAAE9qB,MAAAA,OAAF;AAAW1B,MAAAA,QAAX;AAAqByX,MAAAA,SAArB;AAAgCyU,MAAAA;AAAhC,QAA8CM,aAApD;AACA,UAAMC,MAAM,GAAG/qB,OAAO,IAAIhE,GAA1B;AACA4tB,IAAAA,cAAc,CAACvvB,OAAf,CAAuBmP,IAAvB,CAA4BuhB,MAA5B;AACA,UAAMC,KAAK,GAAGD,MAAM,YAAYnvB,QAAhC;AAEA,UAAMqvB,aAAa,GAAkB,EAArC;;AAEAA,IAAAA,aAAa,CAACf,WAAd,GAA6B7sB,KAAD;AAC1BA,MAAAA,KAAK,CAACutB,eAAN;AACAF,MAAAA,oBAAoB,CAACrtB,KAAD,CAApB;AAEAktB,MAAAA,iBAAiB,CAAC;AAAEjtB,QAAAA,KAAK,EAAEY,aAAa,CAACb,KAAD,CAAtB;AAA+BiB,QAAAA,QAA/B;AAAyCyX,QAAAA;AAAzC,OAAD,CAAjB;AACD,KALD;;AAOAkV,IAAAA,aAAa,CAACd,WAAd,GACE9sB,KAD0B;AAK1B,UAAI,CAAC2tB,KAAL,EAAY;AACV3tB,QAAAA,KAAK,CAACutB,eAAN;AACD;;AAED,UAAIvtB,KAAK,CAAC2Y,IAAV,EAAgB;AACd3Y,QAAAA,KAAK,CAAC2Y,IAAN,CAAW2U,gBAAX,GAA8B,IAA9B;AACD;;AAED,YAAMrtB,KAAK,GAAGY,aAAa,CAACb,KAAD,CAA3B;;AAEA,UAAIwsB,YAAY,CAACxvB,OAAjB,EAA0B;AACxB2wB,QAAAA,KAAK,IACH,CAACxuB,KAAK,CAACquB,GAAN,CAAUhB,YAAY,CAACxvB,OAAvB,CADH,IAEEmC,KAAK,CAAC2gB,GAAN,CAAU0M,YAAY,CAACxvB,OAAvB,CAFF;AAIAwvB,QAAAA,YAAY,CAACxvB,OAAb,CAAqBiE,QAArB,GAAgCA,QAAQ,IAAIhB,KAAK,CAACgB,QAAlD;AACD,OAND,MAMO;AACLisB,QAAAA,iBAAiB,CAAC;AAAEjtB,UAAAA,KAAK,EAAEA,KAAT;AAAgBgB,UAAAA,QAAhB;AAA0ByX,UAAAA;AAA1B,SAAD,CAAjB;AACD;AACF,KAxBD;;AA0BA,QAAIyU,SAAJ,EAAe;AACbS,MAAAA,aAAa,CAACZ,OAAd,GAAyBhtB,KAAD;AACtBA,QAAAA,KAAK,CAACutB,eAAN;AAEAL,QAAAA,iBAAiB,CAAC;AAChBjtB,UAAAA,KAAK,EAAEY,aAAa,CAACb,KAAD,CADJ;AAEhBiB,UAAAA,QAFgB;AAGhByX,UAAAA,SAHgB;AAIhByU,UAAAA;AAJgB,SAAD,CAAjB;AAMD,OATD;AAUD;;AAEDS,IAAAA,aAAa,CAACb,UAAd,GAA2BM,oBAA3B;AAEAZ,IAAAA,MAAM,CAACzvB,OAAP,CAAemP,IAAf,CAAoByhB,aAApB;AAEA,UAAM;AAAEf,MAAAA,WAAF;AAAeC,MAAAA,WAAf;AAA4BC,MAAAA,UAA5B;AAAwCC,MAAAA;AAAxC,QAAoDY,aAA1D;;AAEA,QAAIT,SAAS,IAAI,CAACQ,KAAlB,EAAyB;AACvBD,MAAAA,MAAM,CAAChF,EAAP,CAAU,WAAV,EAAuBqE,UAAvB;AACAW,MAAAA,MAAM,CAAChF,EAAP,CAAU,WAAV,EAAuBqE,UAAvB;AACAW,MAAAA,MAAM,CAAChF,EAAP,CAAU,OAAV,EAAmBsE,OAAnB;;AAEA,UAAI,CAACruB,GAAG,CAACsuB,WAAJ,CAAgB,OAAhB,EAAyBP,UAAzB,CAAL,EAAsD;AACpD/tB,QAAAA,GAAG,CAAC+pB,EAAJ,CAAO,OAAP,EAAgBgE,UAAhB;AACD;AACF,KARD,MAQO;AACL,UAAI,CAACiB,KAAL,EAAY;AACVD,QAAAA,MAAM,CAAChF,EAAP,CAAU,WAAV,EAAuBmE,WAAvB;AACD;;AACDa,MAAAA,MAAM,CAAChF,EAAP,CAAU,WAAV,EAAuBoE,WAAvB;AACAY,MAAAA,MAAM,CAAChF,EAAP,CAAU,UAAV,EAAsBqE,UAAtB;AACD;AACF,GA5Ee,EA6EhB,CACEM,oBADF,EAEEX,UAFF,EAGE/tB,GAHF,EAIEuuB,iBAJF,EAKErsB,aALF,EAME1B,KANF,CA7EgB,CAAlB;AAsFD,CAjMM;;SClBS0uB;MAAgB;AAC9BrrB,IAAAA,MAD8B;AAE9BykB,IAAAA,WAAW,GAAG,IAFgB;AAG9BpkB,IAAAA,QAH8B;AAI9BirB,IAAAA,YAJ8B;AAK9B3c,IAAAA,IAL8B;AAM9BiM,IAAAA,QAN8B;AAO9B2Q,IAAAA;AAP8B;AAS9B,QAAM;AAAEpvB,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAMkvB,eAAe,GAAGjI,YAAM,CAACljB,QAAD,CAA9B;AAEA,QAAM1D,KAAK,GAAiBknB,WAAW,CACrC;AACEE,IAAAA,OAAO,EAAE;AACP,YAAM0H,mBAAmB,GAAG,IAAIC,uCAAJ,CAAwB;AAClD/c,QAAAA,IADkD;AAElDiM,QAAAA,QAFkD;AAGlD0Q,QAAAA,YAAY,EAAEA,YAAY,GACtBjrB,QAAQ,IAAIirB,YAAY,CAACjrB,QAAD,EAAW1D,KAAX,CADF,GAEtB,KAAK;AALyC,OAAxB,CAA5B;AAQA,YAAMgvB,YAAY,GAAG,IAAIC,2BAAJ,CAAiB;AACpCH,QAAAA,mBADoC;AAEpCF,QAAAA;AAFoC,OAAjB,CAArB;AAIAC,MAAAA,eAAe,CAAChxB,OAAhB,GAA0B6F,QAA1B;AAEAsrB,MAAAA,YAAY,CAACrO,GAAb,CAAiBjd,QAAjB;AAEA,aAAOsrB,YAAP;AACD,KAnBH;AAoBE3H,IAAAA,UAAU,EAAErnB,KAAK,IAAIR,GAAG,CAACgpB,OAAJ,CAAYxoB,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAACipB,WAAJ,CAAgBzoB,KAAhB,CApBpD;AAqBEof,IAAAA,MAAM,EAAE,CAAC4P,YAAD;UAAe,CAACtrB,QAAD;AACrBsrB,MAAAA,YAAY,CAACxB,MAAb,CAAoBqB,eAAe,CAAChxB,OAApC;AACAmxB,MAAAA,YAAY,CAACrO,GAAb,CAAiBjd,QAAjB;AAEAmrB,MAAAA,eAAe,CAAChxB,OAAhB,GAA0B6F,QAA1B;AACD;AA1BH,GADqC,EA6BrC,CAACA,QAAD,CA7BqC,CAAvC;AAgCAikB,EAAAA,aAAa,CAAC3nB,KAAD,EAAQqD,MAAR,CAAb;AACAwkB,EAAAA,kBAAkB,CAAC7nB,KAAD,EAAQ8nB,WAAR,CAAlB;AAEA,SAAO9nB,KAAP;AACD;;MCpEYkvB,gBAAgB,GAAG,GAAzB;AAKP;AAAA,WAAYC;AACVA,EAAAA,iCAAA,qBAAA;AACAA,EAAAA,sBAAA,wBAAA;AACAA,EAAAA,iBAAA,iCAAA;AACAA,EAAAA,yBAAA,gBAAA;AACD,CALD,EAAYA,kBAAU,KAAVA,kBAAU,KAAA,CAAtB;;AAYA,MAAMC,iBAAiB,GAAmC,CAACC,iBAAD,EAAYC,gBAAZ,EAAsBC,OAAO,IAAI,IAAIC,IAAJ,CAASD,OAAT,CAAjC,CAA1D;AAEA,MAAaE,OAAO,GAAIF,OAAD;AACrB,MAAI,CAACA,OAAL,EAAc,OAAO,IAAP;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,SAAK,MAAMG,MAAX,IAAqBN,iBAArB,EAAwC;AACtC,YAAMO,IAAI,GAAGD,MAAM,CAACH,OAAD,CAAnB;;AAEA,UAAIK,eAAO,CAACD,IAAD,CAAX,EAAmB;AACjB,eAAOE,cAAM,CAACF,IAAD,CAAb;AACD;AACF;;AAED,WAAO,IAAP;AACD;;AAED,QAAMG,UAAU,GAAGD,cAAM,CAACN,OAAD,CAAzB;AAEA,SAAOK,eAAO,CAACE,UAAD,CAAP,GAAsBA,UAAtB,GAAmC,IAA1C;AACD,CAlBM;AAoBP,MAAaC,UAAU,GAAG,SAAbA,UAAa,CACxBJ,IADwB;MAExB;AAAEK,IAAAA,UAAU,GAAGb,kBAAU,CAACc,mBAA1B;AAA+C1pB,IAAAA,YAAY,GAAG2oB;AAA9D,yBAAsG;AAEtG,QAAMgB,SAAS,GAAGP,IAAI,GAAGF,OAAO,CAACE,IAAD,CAAV,GAAmB,IAAzC;;AAEA,MAAIC,eAAO,CAACM,SAAD,CAAX,EAAwB;AACtB,WAAOC,cAAM,CAACD,SAAD,EAAoBF,UAApB,CAAb;AACD;;AAED,SAAOzpB,YAAY,CAACgJ,QAAb,EAAP;AACD,CAXM;;SCzCS6gB,iBACdnvB,GACAovB,gBACAC;MADAD;AAAAA,IAAAA,iBAAiB;;;MACjBC;AAAAA,IAAAA,QAAwB;;;AAExB,QAAM,CAACzgB,GAAD,EAAM0gB,IAAN,IAActvB,CAAC,CAACiT,OAAF,CAAUmc,cAAV,EAA0BzqB,KAA1B,CAAgC,GAAhC,CAApB;AACA,QAAM4qB,aAAa,GAAG3gB,GAAG,CAAC4gB,OAAJ,CAAY,uBAAZ,EAAqC,GAArC,CAAtB;AAEA,SAAO,CAACD,aAAD,EAAgBD,IAAhB,EAAsBxqB,IAAtB,CAA2BuqB,KAA3B,CAAP;AACD;;SCTeI,WAAWxyB;AACzB,QAAMyyB,WAAW,GAAG,oDAApB;AAEA,SAAO,CAACC,aAAa,CAAC1yB,KAAD,CAAd,IAAyBA,KAAK,CAAC2yB,KAAN,CAAYF,WAAZ,CAAhC;AACD;AAED,SAAgBC,cAAc1yB;AAC5B,QAAM4yB,SAAS,GAAG,6BAAlB;AAEA,SAAOA,SAAS,CAACC,IAAV,CAAe7yB,KAAf,CAAP;AACD;AAED,SAAgB8yB,cAAc9yB;AAC5B,QAAM+yB,SAAS,GAAG,gBAAlB;AAEA,SAAOA,SAAS,CAACF,IAAV,CAAe7yB,KAAf,CAAP;AACD;AAED,SAAgBgzB,eAAehzB;AAC7B,QAAMizB,UAAU,GAAG,gBAAnB;AAEA,SAAOA,UAAU,CAACJ,IAAX,CAAgB,CAAC,CAAC7yB,KAAF,EAASqR,QAAT,EAAhB,CAAP;AACD;AAED,SAAgB6hB,qBAAqBlzB;AACnC,QAAMmzB,UAAU,GAAG,8BAAnB;AACA,SAAOA,UAAU,CAACN,IAAX,CAAgB7yB,KAAhB,CAAP;AACD;AAED,SAAgBozB,mBAAmBpzB;AACjC,SAAO0yB,aAAa,CAAC1yB,KAAD,CAAb,IAAwB8yB,aAAa,CAAC9yB,KAAD,CAArC,IAAgDgzB,cAAc,CAAChzB,KAAD,CAArE;AACD;AAED,SAAgBqzB,gBAAgBrzB;AAC9B,QAAMyyB,WAAW,GAAG,oDAApB;AAEA,SACE,CAACW,kBAAkB,CAACpzB,KAAD,CAAnB,IACA,CAACkzB,oBAAoB,CAAClzB,KAAD,CADrB,IAEAyyB,WAAW,CAACI,IAAZ,CAAiB7yB,KAAjB,CAHF;AAKD;AAED,SAAgBszB,eAAetzB;AAC7B,SAAOuzB,aAAa,CAACvzB,KAAD,CAAb,IAAwBA,KAAK,CAACsH,QAAN,CAAe,GAAf,CAA/B;AACD;AAED,SAAgBisB,cAAcvzB;AAC5B,MAAIwzB,UAAU,CAACxzB,KAAD,CAAd,EAAuB;AACrB,WAAO,IAAP;AACD;;AAED,QAAMyzB,SAAS,GAAG,kGAAlB;AAEA,QAAMC,OAAO,GAAG1zB,KAAK,CAAC2yB,KAAN,CAAYc,SAAZ,CAAhB;AAEA,SAAOC,OAAO,KAAK,IAAnB;AACD;AAED,SAAgBF,WAAWxzB;AACzB,MAAI;AACF,QAAI2zB,GAAJ,CAAQ3zB,KAAR;AACD,GAFD,CAEE,OAAOuiB,CAAP,EAAU;AACV,WAAO,KAAP;AACD;;AAED,SAAO,IAAP;AACD;AAED,MAAaqR,QAAQ,GAAIC,IAAD,gBAA4BA,IAA7C;AAEP,MAAaC,SAAS,GAAID,IAAD,aAAyBA,IAA3C;AAEP,MAAaE,OAAO,GAAIzzB,GAAD,IAAkBkzB,UAAU,CAAClzB,GAAD,CAAV,GAAkBA,GAAlB,UAA6BA,GAA/D;;AC3DP,MAAM0zB,eAAe,GAAIh0B,KAAD,KAAoB;AAC1CkI,EAAAA,IAAI;;AADsC;AAE1ClI,EAAAA;AAF0C,CAApB,CAAxB;;AAKA,MAAMi0B,YAAY,GAAIj0B,KAAD,KAAoB;AACvCkI,EAAAA,IAAI;;AADmC;AAEvClI,EAAAA;AAFuC,CAApB,CAArB;;AAKA,MAAMk0B,aAAa,GAAIl0B,KAAD,KAAoB;AACxCkI,EAAAA,IAAI;;AADoC;AAExClI,EAAAA;AAFwC,CAApB,CAAtB;;AAKA,MAAMm0B,cAAc,GAAIn0B,KAAD,KAAoB;AACzCkI,EAAAA,IAAI;;AADqC;AAEzClI,EAAAA;AAFyC,CAApB,CAAvB;;AAKA,MAAMo0B,sBAAsB,GAAIp0B,KAAD;AAC7B,MAAIszB,cAAc,CAACtzB,KAAD,CAAlB,EAA2B;AACzB,WAAOk0B,aAAa,CAACl0B,KAAD,CAApB;AACD;;AAED,MAAIuzB,aAAa,CAACvzB,KAAD,CAAjB,EAA0B;AACxB,WAAOi0B,YAAY,CAACj0B,KAAD,CAAnB;AACD;;AAED,MAAIqzB,eAAe,CAACrzB,KAAD,CAAnB,EAA4B;AAC1B,WAAOm0B,cAAc,CAACn0B,KAAD,CAArB;AACD;;AAED,SAAOg0B,eAAe,CAACh0B,KAAD,CAAtB;AACD,CAdD;;AAgBA,MAAMq0B,qBAAqB,GAAIr0B,KAAD;AAC5B,QAAMs0B,MAAM,GAAG9B,UAAU,CAACxyB,KAAD,CAAzB;;AAEA,MACE,CAACozB,kBAAkB,CAACpzB,KAAD,CAAnB,IACA,CAACkzB,oBAAoB,CAAClzB,KAAD,CADrB,IAEAs0B,MAFA,IAGAA,MAAM,CAAC50B,MAJT,EAKE;AACA,WAAO40B,MAAM,CAAChzB,GAAP,CAAW6yB,cAAX,CAAP;AACD;;AAED,QAAMI,eAAe,GAAGv0B,KAAK,CAAC0H,KAAN,CAAY,OAAZ,EAAqBpG,GAArB,CAAyB8yB,sBAAzB,CAAxB;;AAEA,MAAIG,eAAe,CAACC,KAAhB,CAAsB;AAAA,QAAC;AAAEtsB,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,MAAlB;AAAA;;AAAtB,GAAJ,EAA6E;AAC3E,WAAO,CACL8rB,eAAe,CACbO,eAAe,CACZjzB,GADH,CACO;AAAA,UAAC;AAAEtB,QAAAA;AAAF,OAAD;AAAA,aACHy0B,KAAK,CAAC,CAACz0B,KAAF,CAAL,IAAiBozB,kBAAkB,CAACpzB,KAAD,CAAnC,GACIgzB,cAAc,CAAChzB,KAAD,CAAd,GACE,CAACA,KADH,GAEEA,KAHN,GAIIkyB,gBAAgB,CAAC,CAAClyB,KAAF,EAAS,CAAT,EAAY,EAAZ,CALjB;AAAA,KADP,EAQG6H,IARH,CAQQ,GARR,CADa,CADV,CAAP;AAaD;;AAED,SAAO0sB,eAAP;AACD,CA/BD;;AAiCA,MAAMG,uBAAuB,GAAI10B,KAAD,IAC9Bg0B,eAAe,CAACh0B,KAAK,CAACqR,QAAN,EAAD,CADjB;;AAGA,MAAMsjB,kBAAkB,GAAI30B,KAAD,IACzBg0B,eAAe,CAAC9B,gBAAgB,CAAClyB,KAAD,EAAQ,CAAR,EAAW,EAAX,CAAjB,CADjB;;AAGA,MAAM40B,gBAAgB,GAAG,CAAzB;;AAEA,MAAMC,qBAAqB,GAAI70B,KAAD,IAC5Bg0B,eAAe,CAAC9B,gBAAgB,CAAClyB,KAAD,EAAQ40B,gBAAR,EAA0B,GAA1B,CAAjB,CADjB;;AAGA,MAAME,iBAAiB,GACrB90B,KADwB,IAEMA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKsR,SAF5D;;AAIA,MAAMyjB,oBAAoB,GAAG;AAC3B7sB,EAAAA,IAAI;;AADuB;AAE3BlI,EAAAA,KAAK,EAAEgxB;AAFoB,CAA7B;AAKA,MAAagE,oBAAoB,GAC/BjvB,SADkC;AAGlC,MAAI+uB,iBAAiB,CAAC/uB,SAAS,CAAC/F,KAAX,CAArB,EAAwC;AACtC,WAAO,CAAC+0B,oBAAD,CAAP;AACD;;AAED,UAAQhvB,SAAS,CAACmC,IAAlB;AACE,SAAK,QAAL;AACE,aAAOmsB,qBAAqB,CAACtuB,SAAS,CAAC/F,KAAX,CAA5B;;AACF,SAAK,UAAL;AACE,aAAO,CAAC00B,uBAAuB,CAAC3uB,SAAS,CAAC/F,KAAX,CAAxB,CAAP;;AACF,SAAK,OAAL;AACA,SAAK,OAAL;AACE,aAAO,CAAC20B,kBAAkB,CAAC5uB,SAAS,CAAC/F,KAAX,CAAnB,CAAP;;AACF,SAAK,QAAL;AACE,aAAO,CAAC60B,qBAAqB,CAAC9uB,SAAS,CAAC/F,KAAX,CAAtB,CAAP;;AACF;AACE,aAAO,CAAC+0B,oBAAD,CAAP;AAXJ;AAaD,CApBM;;AC9FP,WAAYE;AACV;AACAA,EAAAA,gCAAA,gBAAA;AACA;;AACAA,EAAAA,wBAAA,QAAA;AACA;;AACAA,EAAAA,wBAAA,UAAA;AACA;;AACAA,EAAAA,uCAAA,uBAAA;AACD,CATD,EAAYA,YAAI,KAAJA,YAAI,KAAA,CAAhB;;AAWA,MAAaC,OAAO,GAAsB;AACxC,GAACD,YAAI,CAACE,WAAN,GAAoB3K,eADoB;AAExC,GAACyK,YAAI,CAACG,GAAN,GAAYzV,OAF4B;AAGxC,GAACsV,YAAI,CAACI,KAAN,GAAcC,SAH0B;AAIxC,GAACL,YAAI,CAACM,kBAAN,GAA2BC;AAJa,CAAnC;AAOP,MAAaC,YAAY,GAAGR,YAAI,CAACE,WAA1B;AAEP,MAAaO,WAAW,GAAGR,OAAO,CAACO,YAAD,CAA3B;AAEP,MAAaE,MAAM,GAAIC,IAAD,IAAuBV,OAAO,CAACU,IAAD,CAA7C;;ACnBA,MAAMC,uBAAuB,GAClCC,cADqC;AAGrC,MAAIA,cAAc,YAAYxE,IAA9B,EAAoC;AAClC,WAAOyE,iBAAa,CAACC,QAArB;AACD;;AAED,MAAI,OAAOF,cAAP,KAA0B,QAA9B,EAAwC;AACtC,WAAOC,iBAAa,CAACE,MAArB;AACD;;AAED,MAAI,OAAOH,cAAP,KAA0B,QAA9B,EAAwC;AACtC,WAAOC,iBAAa,CAACG,KAArB;AACD;;AAED,SAAOH,iBAAa,CAACI,OAArB;AACD,CAhBM;AAkBP,AAAO,MAAMC,kBAAkB,GAC7BC,eADgC;AAGhC,QAAMC,UAAU,GAAID,eAAe,IAAIA,eAAe,CAACC,UAApC,IAAmD,EAAtE;AAEA,SAAOpnB,MAAM,CAACC,OAAP,CAAemnB,UAAf,EAA2Bh1B,GAA3B,CAA+B;AAAA,QAAC,CAAC0oB,IAAD,EAAOuM,UAAP,CAAD;AAAA;AACpCvM,MAAAA;AADoC,OAEjCuM,UAFiC;AAAA,GAA/B,CAAP;AAID,CATM;AAWP,AAAO,MAAMC,oBAAoB,GAC/BF,UADkC;AAGlC,SAAOA,UAAU,GACbpnB,MAAM,CAACC,OAAP,CAAemnB,UAAf,EAA2Bh1B,GAA3B,CAA+B;AAAA,QAAC,CAAC0oB,IAAD,EAAOhqB,KAAP,CAAD;AAAA,WAAoB;AACjDgqB,MAAAA,IADiD;AAEjDhqB,MAAAA,KAFiD;AAGjDkI,MAAAA,IAAI,EAAE2tB,uBAAuB,CAAC71B,KAAD;AAHoB,KAApB;AAAA,GAA/B,CADa,GAMb,EANJ;AAOD,CAVM;AAYP,AAaO,MAAMy2B,eAAe,GAAG,CAC7BC,WAD6B,EAE7BC,WAF6B;AAI7B,SAAOD,WAAW,CAACp1B,GAAZ,CAAgByE,SAAS,iBAC3BA,SAD2B,EAE1B4wB,WAAW,CAACzxB,IAAZ,CAAiB;AAAA,QAAC;AAAE8kB,MAAAA;AAAF,KAAD;AAAA,WAAcjkB,SAAS,CAACikB,IAAV,KAAmBA,IAAjC;AAAA,GAAjB,KAA2D,EAFjC,CAAzB,CAAP;AAID,CARM;;IC3CM4M,cAAb;AAUE,0BAAYtxB,OAAZ;;;AATO,WAAA,GAAqB,IAArB;AACA,oBAAA,GAA8B,IAA9B;AACA,iBAAA,GAA+B,IAA/B;AAEA,kBAAA,GAA4B,IAA5B;AACA,mBAAA,GAA6B,IAA7B;AACA,mBAAA,GAAyC,IAAzC;AACA,eAAA,GAAkC,IAAlC;AAGL,SAAKuxB,EAAL,GAAUvxB,OAAO,CAACuxB,EAAlB;AACA,SAAKC,WAAL,GAAmBxxB,OAAO,CAACuxB,EAA3B;AACA,SAAKE,QAAL,GAAgBzxB,OAAO,CAACyxB,QAAxB;AAEA,SAAKC,SAAL,GAAiB1xB,OAAO,CAACxD,KAAzB;AACA,SAAKm1B,UAAL,GAAkB3xB,OAAO,CAACxD,KAA1B;AACA,SAAKw0B,UAAL,GAAkBE,oBAAoB,CAAClxB,OAAO,CAACgxB,UAAT,CAAtC;AACD;;AAlBH;AAAA;AAAA,WAoBS;AACL,UAAI,CAAC,KAAKS,QAAN,IAAkB,CAAC,KAAK30B,MAA5B,EAAoC;AAClC,eAAO,IAAP;AACD;;;AAGD,YAAM;AAAE8F,QAAAA,IAAF;AAAQ4R,QAAAA,WAAR;AAAqBod,QAAAA;AAArB,UAA4B,KAAKH,QAAvC;AACA,YAAMryB,GAAG,GAAGwwB,OAAO,CAACgC,EAAD,CAAnB;;AAEA,UAAI,CAACxyB,GAAL,EAAU;AACR,eAAO,IAAP;AACD;;AAED,cAAQwD,IAAR;AACE,aAAKivB,gBAAY,CAACC,KAAlB;AACE,iBAAO,IAAIhb,yBAAJ,CAAiBtC,WAAjB,EAA8B;AACnC1X,YAAAA,MAAM,EAAEkd,aAD2B;AAEnC5a,YAAAA;AAFmC,WAA9B,CAAP;;AAIF,aAAKyyB,gBAAY,CAACE,UAAlB;AACE,iBAAO,IAAIC,qBAAJ,CAAexd,WAAf,EAA4B;AACjC1X,YAAAA,MAAM,EAAEkd,aADyB;AAEjC5a,YAAAA;AAFiC,WAA5B,CAAP;;AAIF,aAAKyyB,gBAAY,CAACzS,QAAlB;AACE,iBAAO,IAAIA,iBAAJ,CAAa5K,WAAb,EAA0B;AAC/B1X,YAAAA,MAAM,EAAEmd,gBADuB;AAE/B7a,YAAAA;AAF+B,WAA1B,CAAP;;AAIF,aAAKyyB,gBAAY,CAACrS,OAAlB;AACE,iBAAO,IAAIA,eAAJ,CAAYhL,WAAZ,EAAyB;AAC9B1X,YAAAA,MAAM,EAAEod,eADsB;AAE9B9a,YAAAA;AAF8B,WAAzB,CAAP;;AAIF;AACE,iBAAO,IAAP;AAtBJ;AAwBD;AAzDH;AAAA;AAAA,WA2DS;AACL,YAAMY,OAAO,GAAG,KAAKiyB,WAAL,EAAhB;AAEA,aAAOjyB,OAAO,IAAIA,OAAO,CAACd,IAA1B;AACD;AA/DH;;AAAA;AAAA;;SCrBgBgzB,kBACdtxB,aACAowB;AAEA,MAAI;AACF,UAAMmB,SAAS,GAAG,IAAIC,4BAAJ,CAAuBpB,UAAvB,CAAlB;AACA,UAAMzmB,MAAM,GAAG4nB,SAAS,CAACE,QAAV,CAAmBzxB,WAAnB,CAAf;;AAEA,QAAI2J,MAAM,YAAYvJ,KAAtB,EAA6B;AAC3B,aAAO,IAAP;AACD;;AAED,WAAOuJ,MAAP;AACD,GATD,CASE,gBAAM;AACN,WAAO,IAAP;AACD;AACF;;ACGD,SAAS+nB,iBAAT,CACEtB,UADF,EAEEvnB,aAFF;AAIE,QAAM8oB,aAAa,GAAGvB,UAAU,CAACpxB,IAAX,CAAgB;AAAA,QAAC;AAAE8kB,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,KAAKjb,aAAvB;AAAA,GAAhB,CAAtB;AAEA,SAAO8oB,aAAa,GAAGA,aAAa,CAAC73B,KAAjB,GAAyB,IAA7C;AACD;;AAED,MAAa83B,6BAA6B,GACxC5xB,SAD2C,IAEzB,IAAID,uBAAJ,CAA4BC,SAA5B,EAAuC6I,aAFpD;AAIP,MAAagpB,8BAA8B,GACzCvpB,MAD4C,IAG5CA,MAAM,CAAC9O,MAAP,GAAgB,CAAhB,GAAoBo4B,6BAA6B,CAACtpB,MAAM,CAAC,CAAD,CAAN,CAAUtI,SAAX,CAAjD,GAAyE,IAHpE;;AAKP,SAAS8xB,gBAAT,CACEC,eADF;MAEE,CAACjO,IAAD,EAAOhqB,KAAP;AAEA,SAAOA,KAAK,KAAK,IAAV,GACHi4B,eAAe,CAAC/yB,IAAhB,CACE;AAAA,QAAC;AAAEgB,MAAAA;AAAF,KAAD;AAAA,WACElG,KAAK,KAAKsR,SAAV,IAAuBkmB,iBAAiB,CAACtxB,SAAD,EAAY;AAAE,OAAC8jB,IAAD,GAAQhqB;AAAV,KAAZ,CAD1C;AAAA,GADF,CADG,GAKH,IALJ;AAMD;;AAED,SAASk4B,sBAAT,CACED,eADF,EAEE3B,UAFF;AAIE,QAAMtM,IAAI,GAAG+N,8BAA8B,CAACE,eAAD,CAA9B,IAAmD,EAAhE;AACA,QAAMj4B,KAAK,GAAGgqB,IAAI,IAAI4N,iBAAiB,CAACtB,UAAD,EAAatM,IAAb,CAAvC;AAEA,SAAO,CAACA,IAAD,EAAOhqB,KAAP,CAAP;AACD;;AAED,SAASm4B,qBAAT,CAA+B7B,UAA/B;AACE;AACA,WAAS8B,IAAT,CACEvoB,MADF;QAEE,CAACwoB,aAAD,EAAgB9qB,cAAhB;AAEA,QAAI+qB,iBAAJ;;AAEA,QAAIrwB,sBAAsB,CAACsF,cAAD,CAA1B,EAA4C;AAC1C,YAAM,CAACwB,aAAD,EAAgB+mB,cAAhB,IAAkCoC,sBAAsB,CAC5D3qB,cAAc,CAACiB,MAD6C,EAE5D8nB,UAF4D,CAA9D;AAIA,YAAMiC,YAAY,GAAGP,gBAAgB,CAACzqB,cAAc,CAACiB,MAAhB,EAAwB,CAC3DO,aAD2D,EAE3D+mB,cAF2D,CAAxB,CAArC;AAKAwC,MAAAA,iBAAiB,GAAGC,YAAY,GAC5BA,YAAY,CAACv4B,KADe,GAE5BuN,cAAc,CAAClF,YAFnB;AAGD,KAbD,MAaO,IAAIP,QAAQ,CAACyF,cAAD,CAAZ,EAA8B;AACnC;AACA+qB,MAAAA,iBAAiB,GAAGppB,MAAM,CAACC,OAAP,CAAe5B,cAAf,EAA+BmB,MAA/B,CAClB0pB,IADkB,EAElB7qB,cAFkB,CAApB;AAID;;AAED,WAAO+qB,iBAAiB,KAAKhnB,SAAtB,gBAEEzB,MAFF;AAGD,OAACwoB,aAAD,GAAiBC;AAHhB,SAKHzoB,MALJ;AAMD;;AAED,SAAOuoB,IAAP;AACD;;AAED,SAAgBI,sBACdC,aACAnC;AAEA,SACE,CAACmC,WAAW,IAAI,EAAhB,EAAoBvzB,IAApB,CAAyB;QAAC;AAAEgB,MAAAA;AAAF;AACxB,UAAM6I,aAAa,GACjB7I,SAAS,IAAI4xB,6BAA6B,CAAC5xB,SAAD,CAD5C;AAEA,UAAM4vB,cAAc,GAClB/mB,aAAa,IAAI6oB,iBAAiB,CAACtB,UAAD,EAAavnB,aAAb,CADpC;;AAGA,QAAI7I,SAAS,IAAI6I,aAAb,IAA8B+mB,cAAc,KAAKxkB,SAArD,EAAgE;AAC9D,aAAOkmB,iBAAiB,CAACtxB,SAAD,EAAY;AAClC,SAAC6I,aAAD,GAAiB+mB;AADiB,OAAZ,CAAxB;AAGD;;AAED,WAAO,KAAP;AACD,GAbD,KAaM,IAdR;AAgBD;AAED,SAAgB4C,uBACdD,aACAnC;AAEA,QAAMqC,YAAY,GAAGH,qBAAqB,CAACC,WAAD,EAAcnC,UAAd,CAA1C;AAEA,SAAOqC,YAAY,GAAGA,YAAY,CAACv2B,MAAhB,GAAyB,IAA5C;AACD;AAED,SAAgBw2B,iBACd7uB,OACAusB;AAEA,MAAI,CAACvsB,KAAD,IAAU,CAACA,KAAK,CAAC3H,MAArB,EAA6B;AAC3B,WAAO,IAAP;AACD;;AAED,MAAI2H,KAAK,CAACpJ,QAAN,KAAmB,IAAvB,EAA6B;AAC3B,WAAO+3B,sBAAsB,CAAC3uB,KAAK,CAACpJ,QAAP,EAAiB21B,UAAjB,CAAtB,IAAsDvsB,KAAK,CAAC3H,MAAnE;AACD;;AAED,SAAO8M,MAAM,CAACC,OAAP,CAAepF,KAAK,CAAC3H,MAArB,EAA6BsM,MAA7B,CACLypB,qBAAqB,CAAC7B,UAAD,CADhB,EAELvsB,KAAK,CAAC3H,MAFD,CAAP;AAID;;IC3IYy2B,YAAb;AAOE,wBAAYC,OAAZ;;;AANgB,aAAA,GAAsB,IAAtB;AACC,uBAAA,GAAgC,IAAhC;AACA,cAAA,GAAuB,IAAvB;AACA,mBAAA,GAAsC,IAAtC;AACA,cAAA,GAA6B,IAA7B;AAGf,UAAMC,cAAc,GAAGD,OAAvB;AACA,UAAM;AAAE9O,MAAAA,IAAF;AAAQgP,MAAAA,KAAR;AAAejvB,MAAAA,KAAf;AAAsBssB,MAAAA;AAAtB,QAA0C0C,cAAhD;AAEA,SAAK/O,IAAL,GAAYA,IAAZ;AACA,SAAKgP,KAAL,GAAaA,KAAK,IAAIhP,IAAtB;AACA,SAAKsM,UAAL,GAAkBF,kBAAkB,CAACC,eAAD,CAApC;AACA,SAAKtsB,KAAL,GAAcA,KAAK,IAAI,IAAI4D,YAAJ,CAAiB5D,KAAjB,CAAV,IAAsC,IAAnD;AACA,SAAKkvB,cAAL,GACG5C,eAAe,IAAIA,eAAe,CAAC4C,cAApC,IAAuD,IADzD;AAED;;AAjBH;AAAA;AAAA,WAmBS,yBAAgB3zB,OAAhB;AACLA,MAAAA,OAAO,CAACgxB,UAAR,GAAqBG,eAAe,CAClCnxB,OAAO,CAACgxB,UAAR,IAAsB,EADY,EAElC,KAAKA,UAAL,IAAmB,EAFe,CAApC;AAKAhxB,MAAAA,OAAO,CAAClD,MAAR,GACE,KAAK2H,KAAL,IAAc6uB,gBAAgB,CAAC,KAAK7uB,KAAN,EAAazE,OAAO,CAACgxB,UAArB,CADhC;AAGAhxB,MAAAA,OAAO,CAAC2xB,UAAR,GAAqB,KAAK+B,KAA1B;AAEA,YAAMC,cAAc,GAAG,CAAC3zB,OAAO,CAACgxB,UAAR,IAAsB,EAAvB,EAA2BpxB,IAA3B,CACrB;AAAA,YAAC;AAAE8kB,UAAAA;AAAF,SAAD;AAAA,eAAcA,IAAI,KAAK,KAAKiP,cAA5B;AAAA,OADqB,CAAvB;AAIA,YAAMnC,WAAW,GACdmC,cAAc,IAAIjE,oBAAoB,CAACiE,cAAD,CAApB,CAAqC,CAArC,EAAwCj5B,KAA3D,IACAsF,OAAO,CAACuxB,EAFV;AAIAvxB,MAAAA,OAAO,CAACwxB,WAAR,GAAsBA,WAAW,QAAMA,WAAN,GAAsBxxB,OAAO,CAACuxB,EAA/D;AAEA,aAAOvxB,OAAP;AACD;AAzCH;;AAAA;AAAA;;AA4CA,MAAM4zB,gBAAgB,GAAI5zB,OAAD,IAA8BxD,KAAD,IACpDA,KAAK,CAACkoB,IAAN,KAAe1kB,OAAO,CAAC0xB,SADzB;;AAGA,MAAamC,eAAe,GAAI32B,MAAD,IAC7B8C,OADyD;AAGzD,QAAM8zB,YAAY,GAAG52B,MAAM,CAAC0C,IAAP,CAAYg0B,gBAAgB,CAAC5zB,OAAD,CAA5B,CAArB;AAEA,SAAO8zB,YAAY,GAAGA,YAAY,CAACD,eAAb,CAA6B7zB,OAA7B,CAAH,GAA2CA,OAA9D;AACD,CANM;;SCjDS+zB,iBACdr5B,OACA6Q;AAEA,MAAI7Q,KAAK,CAAC+N,KAAV,EAAiB,OAAO/N,KAAK,CAAC+N,KAAb;AAEjB,MAAIpI,YAAY,CAAC3F,KAAD,CAAhB,EAAyB,OAAO4Q,eAAe,CAAC5Q,KAAD,EAAQ6Q,KAAR,CAAtB;AACzB,MAAIhL,aAAa,CAAC7F,KAAD,CAAjB,EAA0B,OAAOA,KAAK,CAACmO,WAAb;AAE1B,SAAO,EAAP;AACD;;SCfemrB,iBAAiB7xB;AAC/B,SAAO,EAACA,SAAD,YAACA,SAAS,CAAEH,QAAX,CAAoB,aAApB,CAAD,KAAuC,EAACG,SAAD,YAACA,SAAS,CAAEH,QAAX,CAAoB,oBAApB,CAAD,CAA9C;AACD;;ACsCD,WAAYiyB;AACVA,EAAAA,+BAAA,OAAA;AACAA,EAAAA,8BAAA,OAAA;AACD,CAHD,EAAYA,gCAAwB,KAAxBA,gCAAwB,KAAA,CAApC;;AAKA,WAAYC;AACV;AACAA,EAAAA,4BAAA,WAAA;AACA;;AACAA,EAAAA,+BAAA,cAAA;AACA;;AACAA,EAAAA,iCAAA,gBAAA;AACA;;AACAA,EAAAA,8BAAA,aAAA;AACA;;AACAA,EAAAA,qCAAA,oBAAA;AACA;;AACAA,EAAAA,kCAAA,iBAAA;AACAA,EAAAA,4BAAA,WAAA;AACAA,EAAAA,2BAAA,UAAA;AACA;;AACAA,EAAAA,8BAAA,aAAA;AACA;;AACAA,EAAAA,iCAAA,gBAAA;AACAA,EAAAA,gCAAA,eAAA;AACAA,EAAAA,mCAAA,kBAAA;AACAA,EAAAA,8BAAA,aAAA;AACAA,EAAAA,iCAAA,gBAAA;AACAA,EAAAA,6BAAA,YAAA;AACAA,EAAAA,6BAAA,YAAA;AACD,CAzBD,EAAYA,0BAAkB,KAAlBA,0BAAkB,KAAA,CAA9B;;SC3CgBC,WAAW9nB;AACzB,MAAI9B,MAAM,GAAG8B,GAAb;AACA,MAAI+nB,OAAO,GAAG,IAAd;;AAEA,MAAI/nB,GAAG,IAAI,QAAX,EAAqB;AACnB9B,IAAAA,MAAM,GAAG8B,GAAG,GAAG,OAAf;AACA+nB,IAAAA,OAAO,GAAG,KAAV;AACD,GAHD,MAGO,IAAI/nB,GAAG,IAAI,KAAX,EAAkB;AACvB9B,IAAAA,MAAM,GAAG8B,GAAG,GAAG,KAAf;AACA+nB,IAAAA,OAAO,GAAG,IAAV;AACD;;AAED,SAAUxH,gBAAgB,CAACriB,MAAD,CAA1B,SAAsC6pB,OAAtC;AACD;AAED,SAAgBC,aAAahoB;AAC3B,MAAI9B,MAAM,GAAG8B,GAAb;AACA,MAAI+nB,OAAO,GAAG,GAAd;;AAEA,MAAI/nB,GAAG,GAAG,KAAV,EAAiB;AACf9B,IAAAA,MAAM,GAAG8B,GAAG,GAAG,IAAf;AACA+nB,IAAAA,OAAO,GAAG,IAAV;AACD;;AAED,SAAUxH,gBAAgB,CAACriB,MAAD,CAA1B,SAAsC6pB,OAAtC;AACD;AACD,SAAgBE,qBAAqBC,MAAcC;AACjD,kBAAcL,UAAU,CAACI,IAAD,CAAxB,cAAuCF,YAAY,CAACG,SAAD,CAAnD;AACD;AAED,SAAgBC,sBACd1iB,OACArT;AAEA,MAAIqT,KAAK,CAAC,CAAD,CAAL,CAAS3X,MAAT,IAAmB,CAAvB,EAA0B;AACxB,WAAO,KAAP;AACD;;AAED,QAAMs6B,MAAM,GAAG3iB,KAAK,CAAC,CAAD,CAApB;AACA,QAAM4iB,UAAU,GAAGD,MAAM,CAAC,CAAD,CAAzB;AACA,QAAME,SAAS,GAAGF,MAAM,CAACA,MAAM,CAACt6B,MAAP,GAAgB,CAAjB,CAAxB;AACA,QAAMqgB,QAAQ,GAAG/b,UAAU,GAAG,CAA9B;AAEA,SAAO+qB,eAAU,CAACkL,UAAU,CAAC,CAAD,CAAX,EAAgBC,SAAS,CAAC,CAAD,CAAzB,EAA8Bna,QAA9B,CAAV,IAAqDgP,eAAU,CAACkL,UAAU,CAAC,CAAD,CAAX,EAAgBC,SAAS,CAAC,CAAD,CAAzB,EAA8Bna,QAA9B,CAAtE;AACD;;SChDekO,WAASV;AACvB,QAAM4M,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf;;AAEA,OAAK,IAAIp3B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3B,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm3B,MAAM,CAACz6B,MAA3B,EAAmCsD,CAAC,EAApC,EAAwC;AACtC,YAAM6M,MAAM,GAAGiC,IAAI,CAACqc,GAAL,CAAS,EAAT,EAAaprB,CAAb,IAAkBo3B,MAAM,CAACn3B,CAAD,CAAvC;;AAEA,UAAI6M,MAAM,GAAG0d,KAAb,EAAoB;AAClB,eAAO1d,MAAP;AACD;AACF;AACF;;AAED,SAAO,CAAP;AACD;;ACJD,MAAMuqB,aAAa,GAAqB,EAAxC;AAIA,MAAaC,gBAAgB,GAAG;MAAC;AAC/BC,IAAAA,MAD+B;AAE/BC,IAAAA;AAF+B;AAI/B,QAAMC,aAAa,GAAG7O,UAAU,EAAhC;AACA,QAAMnpB,MAAM,GAAGC,uBAAuB,EAAtC;AACA,QAAM,CAAC+C,QAAD,EAAWi1B,WAAX,IAA0B56B,cAAQ,CAAmBu6B,aAAnB,CAAxC;AAEA,QAAMM,cAAc,GAAG36B,iBAAW,CAAC,MAAM06B,WAAW,CAACL,aAAD,CAAlB,EAAmC,CACnEK,WADmE,CAAnC,CAAlC;AAIA/0B,EAAAA,eAAS,CAAC;AACR,QAAI,CAAC80B,aAAL,EAAoB;AAClB;AACD;;AAEDF,IAAAA,MAAM,CAACE,aAAD,CAAN,CAAsBhS,IAAtB,CAA2BhjB,QAAQ;AACjCi1B,MAAAA,WAAW,CAACj1B,QAAQ,CAAClE,GAAT,CAAa63B,eAAe,CAAC32B,MAAD,CAA5B,CAAD,CAAX;AACD,KAFD;AAID,GATQ,EASN,CAACg4B,aAAD,CATM,CAAT;AAWA,SAAO,CACL,OAAOD,UAAP,KAAsB,UAAtB,GAAmCA,UAAU,CAAC/0B,QAAD,CAA7C,GAA0DA,QADrD,EAELk1B,cAFK,CAAP;AAID,CA3BM;;MCXMC,MAAM,GAAI/E,IAAD;AACpB,SAAOh1B,aAAO,CAAC;AACb,WAAOs0B,OAAO,CAACU,IAAI,IAAIH,YAAT,CAAP,IAAiCC,WAAxC;AACD,GAFa,EAEX,CAACE,IAAD,CAFW,CAAd;AAGD,CAJM;;ACYP,MAAMgF,SAAS,GAAG,CAACr5B,OAAD,EAAsBs5B,MAAtB,KAChBt5B,OAAO,CAACuB,OAAR,IACA,OAAOvB,OAAO,CAACuB,OAAf,KAA2B,QAD3B,KAECvB,OAAO,CAACuB,OAAR,CAAgBiH,KAAhB,CAAsB8wB,MAAtB,GAA+BA,MAFhC,CADF;;AAKA,SAASC,IAAT;AACE;AACD;;AAED,MAAaC,kBAAkB,GAAG;MAAC;AACjCn3B,IAAAA,QADiC;AAEjCo3B,IAAAA,QAFiC;AAGjC54B,IAAAA;AAHiC;AAKjC,QAAMkD,OAAO,GAAGojB,YAAM,CAAiB,IAAjB,CAAtB;AACA,QAAM;AAAEpnB,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAMK,KAAK,GAAG4mB,YAAM,CAAC,IAAI/mB,2BAAJ,EAAD,CAApB;AACA,QAAMs5B,WAAW,GAAGvS,YAAM,CACxB,IAAIwS,uBAAJ,CAAgB55B,GAAhB,EAAqB;AACnB65B,IAAAA,QAAQ,EAAE,KADS;AAEnBC,IAAAA,WAAW,EAAEt5B,KAAK,CAACnC;AAFA,GAArB,CADwB,CAA1B;AAOA,QAAM07B,UAAU,GAAGt7B,iBAAW,CAC3B4C,KAAD;AACEA,IAAAA,KAAK,CAACutB,eAAN;;AACA,QAAI,EAAEvtB,KAAK,YAAYqpB,2BAAnB,CAAJ,EAAwC;AACtC;AACD;;AAED1qB,IAAAA,GAAG,CAACgqB,GAAJ,CAAQ,OAAR,EAAiB+P,UAAjB;AACAT,IAAAA,SAAS,CAACr5B,OAAD,EAAU,SAAV,CAAT;AACAy5B,IAAAA,QAAQ,CAACr4B,KAAK,CAACC,KAAN,CAAYgB,QAAb,CAAR;AACD,GAV2B,EAW5B,CAACrC,OAAD,EAAUD,GAAV,EAAe05B,QAAf,CAX4B,CAA9B;AAcAnS,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE;AACPxnB,MAAAA,GAAG,CAACg6B,QAAJ,CAAax5B,KAAK,CAACnC,OAAnB;AACAs7B,MAAAA,WAAW,CAACt7B,OAAZ,CAAoB0rB,EAApB,CAAuB,MAAvB,EAA+B;AAAA;;AAAA,eAC7B2P,QAAQ,CAAC,0BAAAC,WAAW,CAACt7B,OAAZ,CAAoB47B,aAApB,2CAAmC33B,QAAnC,KAA+C,CAAC,CAAD,EAAI,CAAJ,CAAhD,CADqB;AAAA,OAA/B;;AAIA,UAAI,CAACA,QAAL,EAAe;AACbg3B,QAAAA,SAAS,CAACr5B,OAAD,EAAU,SAAV,CAAT;AACAD,QAAAA,GAAG,CAAC+pB,EAAJ,CAAO,OAAP,EAAgBgQ,UAAhB;AACD;AACF,KAXM;AAYPtS,IAAAA,SAAS,EAAE;AACTznB,MAAAA,GAAG,CAACipB,WAAJ,CAAgBzoB,KAAK,CAACnC,OAAtB;AACA2B,MAAAA,GAAG,CAACgqB,GAAJ,CAAQ,OAAR,EAAiB+P,UAAjB;AACAJ,MAAAA,WAAW,CAACt7B,OAAZ,CAAoB2rB,GAApB,CAAwB,MAAxB,EAAgC;AAAA;;AAAA,eAC9B0P,QAAQ,CAAC,2BAAAC,WAAW,CAACt7B,OAAZ,CAAoB47B,aAApB,4CAAmC33B,QAAnC,KAA+C,CAAC,CAAD,EAAI,CAAJ,CAAhD,CADsB;AAAA,OAAhC;AAGAg3B,MAAAA,SAAS,CAACr5B,OAAD,EAAU,SAAV,CAAT;AACD;AAnBM,GAAD,CAAR;AAsBAmE,EAAAA,eAAS,CAAC;AACR,QAAI9B,QAAJ,EAAc;AACZ,UAAI,CAAC0B,OAAO,CAAC3F,OAAb,EAAsB;AACpB,cAAM67B,WAAW,GAAGl6B,GAAG,CAACsuB,WAAJ,CAAgB,OAAhB,EAAyByL,UAAzB,CAApB;AAEA,cAAM9W,YAAY,GAAG,IAAInI,yBAAJ,CAAiBxY,QAAjB,EAA2B;AAC9Cc,UAAAA,GAAG,EAAEpD,GAAG,CAACoD,GADqC;AAE9CtC,UAAAA,MAAM,EAAEA,MAAM,IAAI,IAAIohB,mCAAJ;AAF4B,SAA3B,CAArB;AAKAe,QAAAA,YAAY,CAAC8G,EAAb,CAAgB,WAAhB,EAA6ByP,IAA7B;AACAvW,QAAAA,YAAY,CAAC8G,EAAb,CAAgB,WAAhB,EAA6B,MAAMuP,SAAS,CAACr5B,OAAD,EAAU,SAAV,CAA5C;AACAgjB,QAAAA,YAAY,CAAC8G,EAAb,CAAgB,UAAhB,EAA4B,MAAMuP,SAAS,CAACr5B,OAAD,EAAU,SAAV,CAA3C;AAEAO,QAAAA,KAAK,CAACnC,OAAN,CAAc8iB,GAAd,CAAkB8B,YAAlB;AACA0W,QAAAA,WAAW,CAACt7B,OAAZ,CAAoB47B,aAApB,GAAoChX,YAApC;AACA0W,QAAAA,WAAW,CAACt7B,OAAZ,CAAoBw7B,QAApB,GAA+B,IAA/B;AACA71B,QAAAA,OAAO,CAAC3F,OAAR,GAAkB4kB,YAAlB;;AACA,YAAIiX,WAAJ,EAAiB;AACfl6B,UAAAA,GAAG,CAACgqB,GAAJ,CAAQ,OAAR,EAAiB+P,UAAjB;AACAT,UAAAA,SAAS,CAACr5B,OAAD,EAAU,SAAV,CAAT;AACD;AACF,OApBD,MAoBO,IAAI+D,OAAO,CAAC3F,OAAR,IAAmBs7B,WAAW,CAACt7B,OAAZ,CAAoB47B,aAA3C,EAA0D;AAC/DN,QAAAA,WAAW,CAACt7B,OAAZ,CAAoB47B,aAApB,CAAkC33B,QAAlC,GAA6CA,QAA7C;AACA9B,QAAAA,KAAK,CAACnC,OAAN,CAAcwhB,MAAd;AACD;AACF,KAzBD,MAyBO,IAAI7b,OAAO,CAAC3F,OAAZ,EAAqB;AAC1BmC,MAAAA,KAAK,CAACnC,OAAN,CAAc2vB,MAAd,CAAqBhqB,OAAO,CAAC3F,OAA7B;AACA2F,MAAAA,OAAO,CAAC3F,OAAR,GAAkB,IAAlB;AACAi7B,MAAAA,SAAS,CAACr5B,OAAD,EAAU,SAAV,CAAT;AACAD,MAAAA,GAAG,CAAC+pB,EAAJ,CAAO,OAAP,EAAgBgQ,UAAhB;AACD;AACF,GAhCQ,EAgCN,CAACA,UAAD,EAAa95B,OAAb,EAAsBD,GAAtB,EAA2BsC,QAA3B,EAAqCxB,MAArC,CAhCM,CAAT;AAiCD,CApFM;;MCjBMq5B,iBAAiB,GAAG,CAAC/b,MAAD,EAAiBhb,GAAjB;AAC/B,QAAM;AAAEnD,IAAAA,OAAF;AAAWD,IAAAA;AAAX,MAAmBG,aAAa,EAAtC;AACA,QAAM;AAAEuC,IAAAA;AAAF,MAAiB4oB,WAAW,EAAlC;AAEA,SAAOhsB,aAAO,CACZ,MACE6e,cAAc,CAACC,MAAD,EAAS;AACrBne,IAAAA,OAAO,EAAEA,OADY;AAErBmD,IAAAA,GAAG,EAAEA,GAAG,IAAIpD,GAAG,CAACoD;AAFK,GAAT,CAFJ;AAOZ,GAACnD,OAAD,EAAUme,MAAV,EAAkBhb,GAAlB,EAAuBpD,GAAG,CAACoD,GAA3B,EAAgCV,UAAhC,CAPY,CAAd;AASD,CAbM;AAeP,MAAa03B,mBAAmB,GAAG;AACjC,QAAM;AAAEn6B,IAAAA,OAAF;AAAWD,IAAAA;AAAX,MAAmBG,aAAa,EAAtC;AAEA,SAAO1B,iBAAW,CAChB,CAAC2f,MAAD,EAAiBhb,GAAjB,KACE+a,cAAc,CAACC,MAAD,EAAS;AACrBne,IAAAA,OAAO,EAAEA,OADY;AAErBmD,IAAAA,GAAG,EAAEA,GAAG,IAAIpD,GAAG,CAACoD;AAFK,GAAT,CAFA,EAMhB,CAACnD,OAAD,EAAUD,GAAG,CAACoD,GAAd,CANgB,CAAlB;AAQD,CAXM;;MCnBMi3B,oBAAoB,GAC/BC,QADkC;AAGlC,SAAOh7B,aAAO,CACZ,MACEi7B,cAAQ,CAAEC,EAAD;AACPA,IAAAA,EAAE;AACH,GAFO,EAELF,QAFK,CAFE,EAKZ,CAACA,QAAD,CALY,CAAd;AAOD,CAVM;;MCDMG,SAAS,GAAIrsB,OAAD;AACvB,QAAM,CAACssB,KAAD,EAAQC,QAAR,IAAoBp8B,cAAQ,CAAC6P,OAAO,KAAK4B,SAAZ,GAAwB5B,OAAxB,GAAkC,KAAnC,CAAlC;AACA,QAAMwsB,MAAM,GAAGn8B,iBAAW,CAAC,MAAMk8B,QAAQ,CAAC,CAACD,KAAF,CAAf,EAAyB,CAACA,KAAD,CAAzB,CAA1B;AAEA,SAAO,CAACA,KAAD,EAAQE,MAAR,EAAgBD,QAAhB,CAAP;AACD,CALM;;SCASE;AACd,QAAM,CAAC7gB,IAAD,EAAO8gB,SAAP,IAAoBv8B,cAAQ,CAAqB,IAArB,CAAlC;AAEA,QAAM8oB,GAAG,GAAG5oB,iBAAW,CAACq8B,SAAD,EAAY,CAACA,SAAD,CAAZ,CAAvB;AAEA,SAAO,CAACzT,GAAD,EAAMrN,IAAN,CAAP;AACD;;MCFYgI,MAAM,GAAoB;MAAC;AAAElhB,IAAAA,MAAF;AAAU0R,IAAAA,IAAV;AAAgBkH,IAAAA;AAAhB;AACtC,QAAM;AAAE9F,IAAAA,MAAF;AAAUyT,IAAAA;AAAV,MAAkBF,SAAS,EAAjC;AACAL,EAAAA,SAAS,CAAC;AAAEhmB,IAAAA,MAAF;AAAU0R,IAAAA,IAAV;AAAgBkH,IAAAA;AAAhB,GAAD,EAA2B9F,MAA3B,CAAT;AAEA,SAAOrU,4BAAA,SAAA;AAAQ8nB,IAAAA,GAAG,EAAEA;GAAb,CAAP;AACD,CALM;;;MCEM0T,YAAY,gBAAGC,eAAM,CAACC,GAAV,gJACT;AAAA,MAAC;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,GAAD;AAAA,kBACLA,KAAK,CAACD,YAAD,CADA,2BAEVA,YAAY,KAAKrF,gBAAY,CAACzS,QAA9B,GAAyC,aAAzC,GAAyD,WAF/C;AAAA,CADS,CAAlB;AASP,MAAagY,aAAa,gBAAGJ,eAAM,CAACC,GAAV,grBAYF;AAAA,MAAC;AAAE7nB,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CAZE,EA2BF;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CA3BE,CAAnB;;ACJP,MAAMioB,QAAQ,GAAG,EAAjB;AAEA,MAAaC,WAAW,GAA+B;MAAC;AACtDx6B,IAAAA,MADsD;AAEtD0R,IAAAA,IAAI,GAAG6oB,QAF+C;AAGtDh8B,IAAAA;AAHsD;;AAKtD,MAAIA,QAAJ,EAAc;AACZ,WAAOE,4BAAA,wBAAA,MAAA,EAAGF,QAAH,CAAP;AACD;;AAED,MAAIk8B,UAAU,GAAG,IAAjB;;AAEA,MAAI;AACFA,IAAAA,UAAU,GAAG5W,iBAAiB,CAAC7jB,MAAD,CAA9B;AACD,GAFD,CAEE,OAAO06B,CAAP,EAAU;AAEX;;AAED,MAAI,CAACD,UAAL,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAIxY,mBAAmB,CAACjiB,MAAD,CAAvB,EAAmD;AAAA;;AACjD,UAAMsS,KAAK,GAAGtM,iBAAiB,0BAAEy0B,UAA+B,CAACpnB,UAAlC,qBAAE,sBAA4CyB,SAA9C,CAAjB,IACZ9O,iBAAiB,uBAAEy0B,UAA+B,CAAC5V,MAAlC,qBAAE,mBAAwC/P,SAA1C,CADL,IACuE,kBADrF;AAGA,WAAOrW,4BAAA,CAAC67B,aAAD;AAAehoB,MAAAA,KAAK,EAAEA;KAAtB,CAAP;AACD;;AAED,SACE7T,4BAAA,CAACyiB,MAAD;AACElhB,IAAAA,MAAM,EAAE8lB,YAAY,CAAC2U,UAAD,EAAa;AAAE/oB,MAAAA,IAAI,EAAEA,IAAI,GAAG;AAAf,KAAb;AACpBA,IAAAA,IAAI,EAAEA;GAFR,CADF;AAMD,CAlCM;;;MCZMipB,oBAAoB,gBAAGT,eAAM,CAACC,GAAV,6jBAkB7BS,UAlB6B,CAA1B;AA6BP,MAAaC,YAAY,gBAAGX,eAAM,CAACC,GAAV,iMAAlB;AAQP,MAAaW,UAAU,gBAAGZ,eAAM,CAACC,GAAV,qKAAhB;AAMP,MAAaY,SAAS,gBAAGb,eAAM,CAACC,GAAV,8KAAf;AAOP,MAAaa,YAAY,gBAAGd,eAAM,CAACC,GAAV,sJAGrBS,UAHqB,CAAlB;AAQP,MAAaK,WAAW,gBAAGf,eAAM,CAACC,GAAV,2LAAjB;AAOP,MAAae,SAAS,gBAAGhB,eAAM,CAACC,GAAV,qIAAf;AAKP,MAAagB,cAAc,gBAAGjB,eAAM,CAACC,GAAV,wVAApB;AAcP,MAAaiB,qBAAqB,gBAAGlB,eAAM,CAACC,GAAV,6GAA3B;AAIP,MAAakB,mBAAmB,gBAAGnB,eAAM,CAACC,GAAV,2JAAzB;AAMP,MAAamB,cAAc,gBAAGpB,eAAM,CAACC,GAAV,6IAApB;AAKP,MAAaoB,kBAAkB,gBAAGrB,eAAM,CAACC,GAAV,wHAAxB;AAIP,MAAaqB,cAAc,gBAAGtB,eAAM,CAACC,GAAV,6JAApB;AAMP,MAAasB,uBAAuB,gBAAGvB,eAAM,CAACC,GAAV,mIAA7B;AAKP,MAAauB,eAAe,gBAAGxB,eAAM,CAACC,GAAV,2FAArB;AAEP,MAAawB,SAAS,gBAAGzB,eAAM,CAACzmB,CAAV,iKAAf;;AC9GA,MAAMmoB,SAAS,GAAG;AAAA,MAAC;AAAEnK,IAAAA;AAAF,GAAD;AAAA,SACvBhzB,4BAAA,CAACk9B,SAAD;AAAW1N,IAAAA,MAAM,EAAE;AAAU4N,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAEtK,QAAQ,CAACC,IAAD;GAA9D,EACGA,IADH,CADuB;AAAA,CAAlB;;ACAA,MAAMsK,UAAU,GAAG;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SACxBv9B,4BAAA,CAACk9B,SAAD;AAAW1N,IAAAA,MAAM,EAAE;AAAU4N,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAEpK,SAAS,CAACsK,KAAD;GAA/D,EACGA,KADH,CADwB;AAAA,CAAnB;;ACAA,MAAMC,QAAQ,GAAG;AAAA,MAAC;AAAE/9B,IAAAA;AAAF,GAAD;AAAA,SACtBO,4BAAA,CAACk9B,SAAD;AAAW1N,IAAAA,MAAM,EAAE;AAAU4N,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAEnK,OAAO,CAACzzB,GAAD;GAA7D,EACGA,GADH,CADsB;AAAA,CAAjB;;ACKA,MAAMg+B,cAAc,GAAwC;MAAC;AAClEv4B,IAAAA;AADkE;AAGlE,QAAMwuB,eAAe,GAAGS,oBAAoB,CAACjvB,SAAD,CAA5C;AAEA,SACElF,4BAAA,CAACg9B,uBAAD,MAAA,EACGtJ,eAAe,CAACjzB,GAAhB,CAAoB,CAACw0B,cAAD,EAAiBjlB,KAAjB;AACnB,UAAM;AAAE7Q,MAAAA;AAAF,QAAY81B,cAAlB;AACA,UAAMyI,GAAG,GAAMv+B,KAAN,SAAe6Q,KAAxB;;AAEA,QAAIilB,cAAc,CAAC5tB,IAAf;;AAAJ,MAAoD;AAClD,eAAOrH,4BAAA,CAACw9B,QAAD;AAAUE,UAAAA,GAAG,EAAEA;AAAKj+B,UAAAA,GAAG,EAAEk+B,cAAc,CAACx+B,KAAD;SAAvC,CAAP;AACD;;AAED,QAAI81B,cAAc,CAAC5tB,IAAf;;AAAJ,MAAqD;AACnD,eAAOrH,4BAAA,CAACm9B,SAAD;AAAWO,UAAAA,GAAG,EAAEA;AAAK1K,UAAAA,IAAI,EAAE7zB;SAA3B,CAAP;AACD;;AAED,QAAI81B,cAAc,CAAC5tB,IAAf;;AAAJ,MAAsD;AACpD,eAAOrH,4BAAA,CAACs9B,UAAD;AAAYI,UAAAA,GAAG,EAAEA;AAAKH,UAAAA,KAAK,EAAEp+B;SAA7B,CAAP;AACD;;AAED,WAAOa,4BAAA,CAACi9B,eAAD;AAAiBS,MAAAA,GAAG,EAAEv+B;KAAtB,EAA8BA,KAA9B,CAAP;AACD,GAjBA,CADH,CADF;AAsBD,CA3BM;;AA6BP,SAASw+B,cAAT,CAAwBC,OAAxB;AACE,MAAI;AACF,WAAOA,OAAO,CACX/2B,KADI,CACE,GADF,EAEJpG,GAFI,CAEAo9B,QAAQ,CAACC,SAFT,EAGJ92B,IAHI,CAGC,GAHD,CAAP;AAID,GALD,CAKE,OAAO+2B,KAAP,EAAc;AACd,WAAOH,OAAP;AACD;AACF;;MCxCYI,oBAAoB,GAAwC;AAAA,MAAC;AACxE94B,IAAAA,SADwE;AAExEua,IAAAA;AAFwE,GAAD;AAAA,SAIvEzf,4BAAA,CAAC88B,kBAAD;AAAoBrd,IAAAA,SAAS,EAAEA;GAA/B,EACEzf,4BAAA,CAAC+8B,cAAD,MAAA,EAAiB73B,SAAS,CAACizB,KAAV,IAAmBjzB,SAAS,CAACikB,IAA9C,CADF,EAEEnpB,4BAAA,CAACy9B,cAAD;AAAgBv4B,IAAAA,SAAS,EAAEA;GAA3B,CAFF,CAJuE;AAAA,CAAlE;;ACmBA,MAAM+4B,UAAU,GAA0C;MAAC;AAChEt5B,IAAAA,QAAQ,GAAG,EADqD;AAEhE8a,IAAAA,SAFgE;AAGhEpgB,IAAAA,KAHgE;AAIhEoF,IAAAA,OAJgE;AAKhE3B,IAAAA,IALgE;AAMhE1D,IAAAA,IANgE;AAOhEN,IAAAA,OAPgE;AAQhEG,IAAAA,IARgE;AAShEi/B,IAAAA,YATgE;AAUhEC,IAAAA,YAVgE;AAWhEC,IAAAA,eAXgE;AAYhEC,IAAAA,WAZgE;AAahEC,IAAAA;AAbgE;AAehEz5B,EAAAA,eAAS,CAAC;AACRu5B,IAAAA,eAAe,IAAIA,eAAe,CAACt/B,OAAD,CAAlC;AACD,GAFQ,EAEN,CAACA,OAAD,EAAUs/B,eAAV,CAFM,CAAT;AAIA,SACEp+B,4BAAA,CAACk8B,oBAAD;AAAsBzc,IAAAA,SAAS,EAAEA;GAAjC,EACEzf,4BAAA,CAACo8B,YAAD,MAAA,EACEp8B,4BAAA,CAACq8B,UAAD,MAAA,EACEr8B,4BAAA,CAAC+7B,WAAD;AAAax6B,IAAAA,MAAM,EAAEkD,OAAO,CAAClD,MAAR,IAAkB;GAAvC,CADF,EAEEvB,4BAAA,CAACs8B,SAAD,MAAA,EACEt8B,4BAAA,CAACw8B,WAAD;AAAatvB,IAAAA,KAAK,EAAEzI,OAAO,CAACwxB,WAAR,IAAuB;GAA3C,EACGxxB,OAAO,CAACwxB,WADX,CADF,EAIEj2B,4BAAA,CAACy8B,SAAD,MAAA,EAAYh4B,OAAO,CAAC2xB,UAApB,CAJF,CAFF,EAQEp2B,4BAAA,CAACu8B,YAAD,MAAA,EACG4B,YAAY,IAAIn+B,4BAAA,CAACu+B,gBAAD;AAAYzP,IAAAA,OAAO,EAAE,MAAMqP,YAAY,CAAC15B,OAAD;GAAvC,EAAkDzE,4BAAA,CAACw+B,6BAAD,MAAA,CAAlD,CADnB,EAEG,CAACF,QAAD,IAAat+B,4BAAA,CAACu+B,gBAAD;AAAYzP,IAAAA,OAAO,EAAEhsB;GAArB,EAA2B9C,4BAAA,CAACy+B,yBAAD,MAAA,CAA3B,CAFhB,EAGEz+B,4BAAA,CAACu+B,gBAAD;AAAYzP,IAAAA,OAAO,EAAEzvB;GAArB,EAA4BW,4BAAA,CAAC0+B,wBAAD,MAAA,CAA5B,CAHF,CARF,CADF,EAeG/5B,QAAQ,CAAC9F,MAAT,GAAkB,CAAlB,GACCmB,4BAAA,CAAC08B,cAAD,MAAA,EACE18B,4BAAA,CAACu+B,gBAAD;AAAYzP,IAAAA,OAAO,EAAE1vB;GAArB,EAA2BY,4BAAA,CAAC2+B,2BAAD,MAAA,CAA3B,CADF,EAEE3+B,4BAAA,CAAC28B,qBAAD,MAAA,EACE38B,4BAAA,CAAC48B,mBAAD;AAAqB9N,IAAAA,OAAO,EAAEhsB;GAA9B,EACGhE,OAAO,GAAG,CADb,CADF,sDAAA,EAIa6F,QAAQ,CAAC9F,MAJtB,CAFF,EAQEmB,4BAAA,CAACu+B,gBAAD;AAAYzP,IAAAA,OAAO,EAAE7vB;GAArB,EAA2Be,4BAAA,CAAC4+B,2BAAD,MAAA,CAA3B,CARF,CADD,GAWG,IA1BN,EA2BGP,WA3BH,CADF,EA8BEr+B,4BAAA,CAAC68B,cAAD,MAAA,EACGp4B,OAAO,CAACgxB,UAAR,IACC,CAAC,OAAOyI,YAAP,KAAwB,UAAxB,GACGA,YAAY,CAACz5B,OAAO,CAACgxB,UAAT,CADf,GAEGhxB,OAAO,CAACgxB,UAFZ,EAGEh1B,GAHF,CAGOyE,SAAD;AACJ,WACEA,SAAS,CAACiV,MAAV,IACEna,4BAAA,CAACg+B,oBAAD;AACEN,MAAAA,GAAG,EAAEx4B,SAAS,CAACikB;AACfjkB,MAAAA,SAAS,EAAEA;KAFb,CAFJ;AAQD,GAZD,CAFJ,CA9BF,CADF;AAiDD,CApEM;;;AC/BP,MAuBa25B,WAAW,GAA+B;MAAC;AACtDC,IAAAA,UADsD;AAEtDrf,IAAAA,SAFsD;AAGtD3f,IAAAA;AAHsD;MAInDqb;;AAEH,QAAM;AAAExW,IAAAA,QAAQ,GAAG;AAAb,MAAoBwW,KAA1B;AACA,QAAM4jB,SAAS,GAAGr6B,cAAc,CAACC,QAAD,CAAhC;AACA,QAAM;AAAEF,IAAAA,OAAF;AAAW3F,IAAAA;AAAX,MAAuBigC,SAA7B;;AACA,QAAMC,SAAS,gBAAQ7jB,KAAR,EAAkB4jB,SAAlB,CAAf;;AAEA,SAAOt6B,OAAO,GACZzE,4BAAA,wBAAA,MAAA,EACG,OAAO8+B,UAAP,KAAsB,UAAtB,GACCA,UAAU,CAACE,SAAD,CADX,GAGCh/B,4BAAA,CAACi+B,UAAD;AAAYxe,IAAAA,SAAS,EAAEA;KAAeuf,UAAtC,CAJJ,EAMGl/B,QAAQ,IAAIA,QAAQ,CAAChB,OAAD,CANvB,CADY,GASV,IATJ;AAUD,CArBM;;MCnBMoxB,YAAY,GAAgC/U,KAAK;AAC5DwU,EAAAA,eAAe,CAACxU,KAAD,CAAf;AAEA,SAAO,IAAP;AACD,CAJM;;MCAMqO,mBAAmB,GAAuCrO,KAAK;AAC1E+N,EAAAA,sBAAsB,CAAC/N,KAAD,CAAtB;AAEA,SAAO,IAAP;AACD,CAJM;;MCAMra,YAAY,GAAgCqa,KAAK;AAC5D6O,EAAAA,eAAe,CAAC7O,KAAD,CAAf;AAEA,SAAO,IAAP;AACD,CAJM;;ACCP,MAAM8jB,OAAO,GAAW9/B,KAAR,IACd4F,OAAO,CAAC5F,KAAD,CADT;;AAGA,MAAM+/B,WAAW,GAAIpgC,OAAD,IAAqB,CAAC2F,OAAD,EAAmBuL,KAAnB;AACvC;AACAvL,EAAAA,OAAO,CAAC,YAAD,CAAP,GAAwBuL,KAAK,KAAKlR,OAAlC;AAEA,SAAO2F,OAAP;AACD,CALD;;AAOA,MAAM06B,MAAM,GAAI16B,OAAD,IAA6BA,OAAO,CAACiyB,WAAR,EAA5C;;;AAGA,AAAO,MAAM0I,eAAe,GAAG,CAC7Bz6B,QAD6B,EAE7B06B,YAF6B,KAI7Bt/B,aAAO,CACL,MACE4E,QAAQ,CACLlE,GADH,CACO0+B,MADP,EAEG71B,MAFH,CAEU21B,OAFV,EAGGx+B,GAHH,CAGOy+B,WAAW,CAACG,YAAD,CAHlB,CAFG,EAML,CAAC16B,QAAD,EAAW06B,YAAX,CANK,CAJF;;MCLMC,kBAAkB,GAAsC;MAAC;AACpE36B,IAAAA,QADoE;AAEpEL,IAAAA,MAFoE;AAGpExF,IAAAA;AAHoE;AAKpE,QAAMygC,YAAY,GAAGH,eAAe,CAACz6B,QAAD,EAAW7F,OAAX,CAApC;AAEA,SAAOkB,4BAAA,CAACc,YAAD;AAAc6D,IAAAA,QAAQ,EAAE46B;AAAcj7B,IAAAA,MAAM,EAAEA;GAA9C,CAAP;AACD,CARM;;MCTMylB,gBAAgB,GAAoC5O,KAAK;AACpEyO,EAAAA,mBAAmB,CAACzO,KAAD,CAAnB;AAEA,SAAO,IAAP;AACD,CAJM;;;ACJP,SAagBqkB;MAAa;AAC3BC,IAAAA,OAD2B;AAE3Bn7B,IAAAA,MAF2B;AAG3BykB,IAAAA;AAH2B;MAIxB2W;;AAEH,QAAM;AAAEj/B,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAGknB,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAIsX,qBAAJ,CAAcF,OAAd,EAAuBC,eAAvB,CADjB;AAEEpX,IAAAA,UAAU,EAAErnB,KAAK,IAAIR,GAAG,CAACgpB,OAAJ,CAAYxoB,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAACipB,WAAJ,CAAgBzoB,KAAhB;AAFpD,GADuB,EAKvB,CAACw+B,OAAD,CALuB,CAAzB;AAQA7W,EAAAA,aAAa,CAAC3nB,KAAD,EAAQqD,MAAR,CAAb;AACAwkB,EAAAA,kBAAkB,CAAC7nB,KAAD,EAAQ8nB,WAAR,CAAlB;AAEA,SAAO9nB,KAAP;AACD;;MC7BY0+B,SAAS,GAA6BxkB,KAAK;AACtDqkB,EAAAA,YAAY,CAACrkB,KAAD,CAAZ;AAEA,SAAO,IAAP;AACD,CAJM;;ACKP,MAAMykB,aAAa,GAAG,GAAtB;AAEA,MAAaC,aAAa,GAAiC;MAAC;AAC1DpG,IAAAA,MAD0D;AAE1Dha,IAAAA,SAF0D;AAG1Dqf,IAAAA,UAH0D;AAI1Dx6B,IAAAA,MAJ0D;AAK1Do1B,IAAAA,UAL0D;AAM1DwE,IAAAA,YAN0D;AAO1DC,IAAAA;AAP0D;AAS1D,QAAM,CAACx5B,QAAD,EAAWk1B,cAAX,IAA6BL,gBAAgB,CAAC;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAD,CAAnD;AAEA,SACE15B,4BAAA,CAAC6+B,WAAD;AACEpf,IAAAA,SAAS,EAAEA;AACX9a,IAAAA,QAAQ,EAAEA;AACVtF,IAAAA,KAAK,EAAEw6B;AACPiF,IAAAA,UAAU,EAAEA;AACZZ,IAAAA,YAAY,EAAEA;AACdC,IAAAA,YAAY,EAAEA;GANhB,EAQGr/B,OAAO,IACNkB,4BAAA,CAACs/B,kBAAD;AACE36B,IAAAA,QAAQ,EAAEA;AACV7F,IAAAA,OAAO,EAAEA;AACTwF,IAAAA,MAAM,EAAEA,MAAM,IAAIs7B;GAHpB,CATJ,CADF;AAkBD,CA7BM;;;;ACFP,MAAME,OAAO,GAAI5gB,QAAD,IAAsB6gB,UAAtB,8GACP7gB,QADO,EAENA,QAFM,CAAhB;;AAKA,MAAM8gB,QAAQ,GAAI9gB,QAAD,IAAsB6gB,UAAtB,iHACR7gB,QADQ,EAENA,QAFM,CAAjB;;AAKA,MAAM+gB,UAAU,GAAI/gB,QAAD,IAAsB6gB,UAAtB,mHACP7gB,QADO,EAETA,QAFS,CAAnB;;AAKA,MAAMghB,WAAW,GAAIhhB,QAAD,IAAsB6gB,UAAtB,oHACR7gB,QADQ,EAETA,QAFS,CAApB;;AAWA,AAAO,MAAMihB,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,SAD4B,EAE5BlhB,QAF4B;AAAA,MAC5BkhB,SAD4B;AAC5BA,IAAAA,SAD4B,GACL,aADK;AAAA;;AAAA,MAE5BlhB,QAF4B;AAE5BA,IAAAA,QAF4B,GAET,MAFS;AAAA;;AAAA,SAGzB6gB,UAHyB,mHAI1BK,SAAS,KAAK,UAAd,IAA4BN,OAAO,CAAC5gB,QAAD,CAJT,EAK1BkhB,SAAS,KAAK,WAAd,IAA6BJ,QAAQ,CAAC9gB,QAAD,CALX,EAM1BkhB,SAAS,KAAK,aAAd,IAA+BH,UAAU,CAAC/gB,QAAD,CANf,EAO1BkhB,SAAS,KAAK,cAAd,IAAgCF,WAAW,CAAChhB,QAAD,CAPjB;AAAA,CAAvB;;;ACzBP,MAAMmhB,kBAAkB,gBAAGN,UAAH,wOAAxB;AAcA,AAAO,MAAMO,SAAS,gBAAG7E,eAAM,CAACU,UAAD,CAAT,wGAClBkE,kBADkB,CAAf;;AAKP,AAAO,MAAME,UAAU,gBAAG9E,eAAM,CAACU,UAAD,CAAT,wGACnBkE,kBADmB,CAAhB;;AAKP,AAAO,MAAMG,SAAS,gBAAG/E,eAAM,CAACU,UAAD,CAAT,wGAClBkE,kBADkB,CAAf;AAKP;;AACA,AAAO,MAAMI,aAAa,gBAAGhF,eAAM,CAACU,UAAD,CAAT,wGACtBkE,kBADsB,CAAnB;;AAKP,AAAO,MAAMK,UAAU,gBAAGjF,eAAM,CAACU,UAAD,CAAT,wGAGnBkE,kBAHmB,CAAhB;;AAOP,MAAaM,UAAU,gBAAGlF,eAAM,CAACC,GAAV,sVAAhB;AAcP,MAAakF,WAAW,gBAAGnF,eAAM,CAACC,GAAV,2QAGJ;AAAA,MAAC;AAAEmF,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,KAAzC;AAAA,CAHI,EAKpB;AAAA,MAAC;AAAET,IAAAA;AAAF,GAAD;AAAA,SAAmBD,cAAc,CAACC,SAAD,CAAjC;AAAA,CALoB,EAOpBO,UAPoB,EAQH;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,GAAzC;AAAA,CARG,EASJ;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,GAAH,GAAS,QAApC;AAAA,CATI,EAUF;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,KAAzC;AAAA,CAVE,CAAjB;;MC9DMC,OAAO,GAAG;AACrB,SACE9gC,4BAAA,CAAC2gC,UAAD,MAAA,EACE3gC,4BAAA,CAAC0gC,UAAD;AAAY5R,IAAAA,OAAO,EAAE;GAArB,CADF,CADF;AAKD,CANM;;MCAMiS,MAAM,GAAG;AACpB,SACE/gC,4BAAA,CAAC2gC,UAAD,MAAA,EACE3gC,4BAAA,CAACwgC,SAAD;AAAW1R,IAAAA,OAAO,EAAE;GAApB,CADF,CADF;AAKD,CANM;;MCAMkS,UAAU,GAAG;AACxB,SACEhhC,4BAAA,CAAC2gC,UAAD,MAAA,EACE3gC,4BAAA,CAACygC,aAAD;AAAe3R,IAAAA,OAAO,EAAE;GAAxB,CADF,CADF;AAKD,CANM;;MCAMmS,eAAe,GAAG,CAC7BC,KAD6B,EAE7Bt6B,SAF6B;AAAA;;AAAA,SAGjB,CAAC,OAAOs6B,KAAP,KAAiB,QAAjB,GACTt6B,SADS,6CACTA,SAAS,CAAEu6B,WAAX,EADS,qBACT,sBAA0B16B,QAA1B,CAAmCy6B,KAAK,CAACC,WAAN,EAAnC,CADS,GAETD,KAAK,CAACj0B,IAAN,CAAW5F,IAAI;AAAA;;AAAA,WAAIT,SAAJ,8CAAIA,SAAS,CAAEu6B,WAAX,EAAJ,qBAAI,uBAA0B16B,QAA1B,CAAmCY,IAAI,CAAC85B,WAAL,EAAnC,CAAJ;AAAA,GAAf,CAFQ,KAEuE,KALtD;AAAA,CAAxB;;;MCKMC,oBAAoB,gBAAG3F,eAAM,CAACC,GAAV,oHAA1B;AAIP,MAAa2F,QAAQ,gBAAG5F,eAAM,CAACC,GAAV,gJAEX;AAAA,MAAC;AAAE4F,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA0BA,KAAK,CAACC,WAAhC;AAAA,CAFW,CAAd;AAKP,MAAaC,aAAa,gBAAGhG,eAAM,CAACC,GAAV,mLAAnB;AAQP,MAAagG,eAAe,gBAAGjG,eAAM,CAAC,MAAD,CAAT,4LAArB;AAOP,MAAakG,cAAc,gBAAGlG,eAAM,CAACC,GAAV,ofAOf;AAAA,MAAC;AAAE9wB,IAAAA;AAAF,GAAD;AAAA,SACRA,kBAAkB,GAAG,SAAH,GAAe,SADzB;AAAA,CAPe,EASP;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAChBA,kBAAkB,GAAG,MAAH,GAAY,MADd;AAAA,CATO,EAgBvBy2B,QAhBuB,EAgBVK,eAhBU,EAoBvBL,QApBuB,EAqBZ;AAAA,MAAC;AAAEO,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,IAArC;AAAA,CArBY,EAwBvBF,eAxBuB,EAyBZ;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,CAArC;AAAA,CAzBY,EA6BrBP,QA7BqB,EA6BRK,eA7BQ,EAkCvBnD,gBAlCuB,CAApB;AAuCP,MAAMsD,qBAAqB,gBAAG9B,UAAH,8MAMH;AAAA,MAAC;AAAEuB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACC,WAApC;AAAA,CANG,CAA3B;AAUA,MAAaC,YAAY,gBAAGvG,eAAM,CAACwG,IAAV,mRAOrB;AAAA,MAAC;AAAEnT,IAAAA;AAAF,GAAD;AAAA,SAAiB,CAAC,CAACA,OAAF,IAAa+S,qBAA9B;AAAA,CAPqB,CAAlB;AAeP,MAAaK,gBAAgB,gBAAGzG,eAAM,CAACkF,UAAD,CAAT,mHAAtB;AAIP,MAAawB,kBAAkB,gBAAG1G,eAAM,CAACC,GAAV,mTAAxB;AAcP,MAAa0G,eAAe,gBAAG3G,eAAM,CAACC,GAAV,8LAArB;AAOP,MAAa2G,6BAA6B,gBAAG5G,eAAM,CAACC,GAAV,0MAAnC;AAOP,MAAa4G,cAAc,gBAAG7G,eAAM,CAACwG,IAAV,uTAMR;AAAA,MAAC;AAAEX,IAAAA,KAAK,EAAE;AAAEiB,MAAAA;AAAF;AAAT,GAAD;AAAA,SAAiCA,YAAY,CAACC,MAA9C;AAAA,CANQ,EAOL;AAAA,MAAC;AAAElB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACW,OAApC;AAAA,CAPK,EAQhB;AAAA,MAAC;AAAEnB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACY,WAApC;AAAA,CARgB,CAApB;AAYP,MAAaC,wBAAwB,gBAAGlH,eAAM,CAACC,GAAV,0OACvB;AAAA,MAAC;AAAEkH,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,UAAH,GAAgB,UAAzC;AAAA,CADuB,EAGxB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,CAAH,GAAO,CAAhC;AAAA,CAHwB,EAIrB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,SAAH,GAAe,QAAxC;AAAA,CAJqB,CAA9B;AASP,MAAaC,wBAAwB,gBAAGpH,eAAM,CAACkH,wBAAD,CAAT,0JAA9B;AAKP,MAAaG,kBAAkB,gBAAGrH,eAAM,CAACwG,IAAV,+FAAxB;AAEP,MAAac,yBAAyB,gBAAGtH,eAAM,CAACC,GAAV,ycAOlCoH,kBAPkC,EAiBb;AAAA,MAAC;AAAExB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA2BA,OAAO,CAACC,WAAnC;AAAA,CAjBa,EAsBhCe,kBAtBgC,CAA/B;AA4BP,MAAaE,qBAAqB,gBAAGvH,eAAM,CAACC,GAAV,uLAMtB;AAAA,MAAC;AAAEuH,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBC,IAAAA;AAAxB,GAAD;AAAA,SACRA,UAAU,GAAG,CAACD,SAAS,IAAI,CAAd,IAAmB,CAAtB,GAA0BD,SAD5B;AAAA,CANsB,EAQpB;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAqBA,UAAU,GAAG,MAAH,GAAY,QAA3C;AAAA,CARoB,CAA3B;AAYP,MAAaC,mBAAmB,gBAAG3H,eAAM,CAACC,GAAV,+MAAzB;;AAQP,MAAM2H,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAClkC,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAe4gC,UAAf,qeAkBP5gC,KAAK,GAAG,CAlBD,EAmBfA,KAnBe,EAoBdA,KApBc;AAAA,CAA5B;;AAwBA,MAAMmkC,0BAA0B,GAAG,SAA7BA,0BAA6B,CAACnkC,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAe4gC,UAAf,8jBAQvB5gC,KARuB,EAwBrBA,KAxBqB,EAyBhB8R,IAAI,CAACc,KAAL,CAAW5S,KAAK,GAAG,CAAnB,CAzBgB;AAAA,CAAnC;;AA8BA,MAAMokC,0BAA0B,gBAAGxD,UAAH,wIAAhC;AAKA,MAAayD,aAAa,gBAAG/H,eAAM,CAACC,GAAV,8RAEd;AAAA,MAAC;AAAE90B,IAAAA;AAAF,GAAD;AAAA,SACRq6B,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEbr6B,SAFa,CAAf,GAII,IAJJ,GAKI,CANI;AAAA,CAFc,EASV;AAAA,MAAC;AAAEzH,IAAAA;AAAF,GAAD;AAAA,SAAgB,OAAOA,KAAP,KAAiB,QAAjB,GAA4B,MAA5B,GAAqCA,KAArD;AAAA,CATU,EAab;AAAA,MAAC;AAAEyiC,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,CAArC;AAAA,CAba,EAetB;AAAA,MAAC;AAAEziC,IAAAA,KAAF;AAASyH,IAAAA;AAAT,GAAD;AAAA,SACAq6B,eAAe,CAAC,MAAD,EAASr6B,SAAT,CAAf,IACAy8B,mBAAmB,CAAClkC,KAAD,CAFnB;AAAA,CAfsB,EAmBtB;AAAA,MAAC;AAAEA,IAAAA,KAAF;AAASyH,IAAAA;AAAT,GAAD;AAAA,SACAq6B,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEbr6B,SAFa,CAAf,IAGK08B,0BAA0B,CAACnkC,KAAD,CAJ/B;AAAA,CAnBsB,CAAnB;AA0BP,MAAaskC,cAAc,gBAAGhI,eAAM,CAAC+H,aAAD,CAAT,kPAApB;AAUP,MAAME,oBAAoB,gBAAG3D,UAAH,iOAMtB0D,cANsB,CAA1B;AAYA,MAAME,2BAA2B,gBAAG5D,UAAH,qOAK7B0D,cAL6B,CAAjC;AAWA,MAAaG,mBAAmB,gBAAGnI,eAAM,CAACC,GAAV,0LAAzB;AAOP,MAAamI,yBAAyB,gBAAGpI,eAAM,CAACC,GAAV,uIAA/B;AAKP,MAAaoI,wBAAwB,gBAAGrI,eAAM,CAACC,GAAV,2IAA9B;AAKP,MAAaqI,uBAAuB,gBAAGtI,eAAM,CAACC,GAAV,+HAA7B;AAIP,MAAasI,qBAAqB,gBAAGvI,eAAM,CAACsI,uBAAD,CAAT,2FAA3B;AAEP,MAAME,0BAA0B,gBAAGlE,UAAH,oLAI5ByD,aAJ4B,CAAhC;AASA,MAAMU,sBAAsB,gBAAGnE,UAAH,qYAQxB;AAAA,MAAC;AAAEoE,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAM,IAAIF,0BAA1B;AAAA,CARwB,EAUxBT,aAVwB,EAqBtB;AAAA,MAAC;AAAE58B,IAAAA;AAAF,GAAD;AAAA,SACAq6B,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEbr6B,SAFa,CAAf,IAGK28B,0BAJL;AAAA,CArBsB,CAA5B;AA6BA,MAAaa,cAAc,gBAAG3I,eAAM,CAACC,GAAV,iNAYvB;AAAA,MAAC;AAAEyI,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAM,IAAIT,oBAA1B;AAAA,CAZuB,EAavB;AAAA,MAAC;AAAEW,IAAAA;AAAF,GAAD;AAAA,SAAuBA,aAAa,IAAIV,2BAAxC;AAAA,CAbuB,EAcvB;AAAA,MAAC;AAAEW,IAAAA;AAAF,GAAD;AAAA,SAAkBA,QAAQ,IAAIJ,sBAA9B;AAAA,CAduB,CAApB;AAiBP,MAAaK,uBAAuB,gBAAG9I,eAAM,CAACC,GAAV,oXAIhC8H,aAJgC,CAA7B;AAiBP,MAAagB,eAAe,gBAAG/I,eAAM,CAACC,GAAV,+MAArB;AAQP,MAAa+I,oBAAoB,gBAAGhJ,eAAM,CAACC,GAAV,2aAA1B;AAsBP,MAAagJ,oBAAoB,gBAAGjJ,eAAM,CAACgI,cAAD,CAAT,6JAA1B;AAMP,MAAakB,qBAAqB,gBAAGlJ,eAAM,CAACC,GAAV,mLAA3B;AAOP,MAAakJ,sBAAsB,gBAAGnJ,eAAM,CAACC,GAAV,2IAA5B;;MCxcMmJ,0BAA0B,GAAG,EAAnC;AAEP,MAAaC,iBAAiB,GAAG,CAA1B;AAEP,MAAaxd,qBAAmB,GAAG,EAA5B;AAEP,MAAayd,2BAA2B,GAAG,EAApC;AAEP,MAAaC,yBAAyB,GAAG,sBAAlC;AAEP,MAAaC,2BAA2B,GAAG,oBAApC;AAEP,MAAaC,qBAAqB,GAAG,CAAC,CAAD,EAAI,CAAJ,CAA9B;AAEP,MAAaC,mBAAmB,4PAAzB;AAMP,MAAaC,qBAAqB,GAG7B;AACH,GAAC9O,gBAAY,CAACrS,OAAd,GAAwB,CAAC,YAAD,EAAe,cAAf,EAA+B,cAA/B,CADrB;AAEH,GAACqS,gBAAY,CAACzS,QAAd,GAAyB,CAAC,cAAD,EAAiB,cAAjB,CAFtB;AAGH,GAACyS,gBAAY,CAACC,KAAd,GAAsB,CACpB,OADoB,EAEpB,MAFoB,EAGpB,YAHoB,EAIpB,WAJoB,EAKpB,sBALoB,EAMpB,wBANoB,EAOpB,wBAPoB,EAQpB,kBARoB,EASpB,oBAToB,EAUpB,oBAVoB,EAWpB,yBAXoB,EAYpB,qCAZoB,EAapB,uCAboB,EAcpB,uCAdoB,EAepB,yCAfoB,EAgBpB,2CAhBoB,EAiBpB,2CAjBoB;AAHnB,CAHE;AA2BP,MAAa8O,aAAa,GAAG;AAC3BC,EAAAA,QAAQ,EAAE,CADiB;AAE3BC,EAAAA,QAAQ,EAAE,EAFiB;AAG3BC,EAAAA,SAAS,EAAE,CAHgB;AAI3BC,EAAAA,aAAa,EAAE,GAJY;AAK3BC,EAAAA,aAAa,EAAE,GALY;AAM3BC,EAAAA,iBAAiB,EAAE,CANQ;AAO3BC,EAAAA,iBAAiB,EAAE,KAPQ;AAQ3BC,EAAAA,gBAAgB,EAAE,EARS;AAS3BC,EAAAA,gBAAgB,EAAE,GATS;AAU3Bn1B,EAAAA,gBAAgB,EAAE,CAVS;AAW3BC,EAAAA,gBAAgB,EAAE,EAXS;AAY3Bm1B,EAAAA,iBAAiB,EAAE,IAZQ;AAa3BC,EAAAA,SAAS,EAAE,CAAC,GAbe;AAc3BC,EAAAA,SAAS,EAAE,GAdgB;AAe3BC,EAAAA,UAAU,EAAE,CAfe;AAgB3BC,EAAAA,gBAAgB,EAAE,EAhBS;AAiB3BC,EAAAA,sBAAsB,EAAE;AAjBG,CAAtB;AAoBP,MAAaC,sBAAsB,GAAkB;AACnDC,EAAAA,YAAY,EAAE,IADqC;AAEnDv1B,EAAAA,GAAG,EAAEs0B,aAAa,CAAC10B,gBAFgC;AAGnDK,EAAAA,GAAG,EAAEq0B,aAAa,CAACz0B,gBAHgC;AAInD21B,EAAAA,IAAI,EAAElB,aAAa,CAACU,iBAJ+B;AAKnDS,EAAAA,KAAK;;AAL8C;AAMnDC,EAAAA,SAAS,EAAEtnC,KAAK,IAAIA,KAN+B;AAOnDunC,EAAAA,WAAW,EAAEvnC,KAAK,IAAIA;AAP6B,CAA9C;AAUP,MAAawnC,eAAe,GAGvB;AACH1zB,EAAAA,IAAI,4BACCozB,sBADD;AAEFt1B,IAAAA,GAAG,EAAEs0B,aAAa,CAACC,QAFjB;AAGFt0B,IAAAA,GAAG,EAAEq0B,aAAa,CAACE,QAHjB;AAIFgB,IAAAA,IAAI,EAAElB,aAAa,CAACG,SAJlB;AAKFgB,IAAAA,KAAK;;;AALH;AADD,CAHE;AAqDP,MAAaI,wBAAwB,GAAuC;AAC1E,GAACjO,0BAAkB,CAACkO,MAApB,GAA6B,IAD6C;AAE1E,GAAClO,0BAAkB,CAACmO,SAApB,GAAgC,IAF0C;AAG1E,GAACnO,0BAAkB,CAACoO,WAApB,GAAkC,GAHwC;AAI1E,GAACpO,0BAAkB,CAACqO,eAApB,GAAsC,IAJoC;AAK1E,GAACrO,0BAAkB,CAACsO,QAApB,GAA+B,GAL2C;AAM1E,GAACtO,0BAAkB,CAACuO,YAApB,GAAmC,IANuC;AAO1E,GAACvO,0BAAkB,CAACwO,MAApB,GAA6B,IAP6C;AAQ1E,GAACxO,0BAAkB,CAACyO,KAApB,GAA4B,IAR8C;AAS1E,GAACzO,0BAAkB,CAAC0O,QAApB,GAA+B,IAT2C;AAU1E,GAAC1O,0BAAkB,CAAC2O,WAApB,GAAkC,IAVwC;AAW1E,GAAC3O,0BAAkB,CAAC4O,UAApB,GAAiC,IAXyC;AAY1E,GAAC5O,0BAAkB,CAAC6O,aAApB,GAAoC,IAZsC;AAa1E,GAAC7O,0BAAkB,CAAC8O,QAApB,GAA+B,IAb2C;AAc1E,GAAC9O,0BAAkB,CAAC+O,WAApB,GAAkC,IAdwC;AAe1E,GAAC/O,0BAAkB,CAACgP,OAApB,GAA8B,SAf4C;AAgB1E,GAAChP,0BAAkB,CAACiP,OAApB,GAA8B;AAhB4C,CAArE;AAmBP,MAAaC,cAAc,GAAG,CAC5BlP,0BAAkB,CAACkO,MADS,EAE5BlO,0BAAkB,CAACmO,SAFS,CAAvB;AAKP,MAAagB,kBAAkB,GAAG,CAChCnP,0BAAkB,CAAC0O,QADa,EAEhC1O,0BAAkB,CAAC2O,WAFa,CAA3B;AAKP,MAAaS,gBAAgB,GAAG,CAC9BpP,0BAAkB,CAACwO,MADW,EAE9BxO,0BAAkB,CAACyO,KAFW,CAAzB;AAKP,MAAaY,qBAAqB,GAAG,CACnCrP,0BAAkB,CAAC4O,UADgB,EAEnC5O,0BAAkB,CAAC6O,aAFgB,CAA9B;AAKP,MAAaS,mBAAmB,GAAG,CACjCtP,0BAAkB,CAAC8O,QADc,EAEjC9O,0BAAkB,CAAC+O,WAFc,CAA5B;AAKP,MAAaQ,eAAe,GAAG,CAC7BvP,0BAAkB,CAACsO,QADU,EAE7BtO,0BAAkB,CAACuO,YAFU,EAG7BvO,0BAAkB,CAACoO,WAHU,EAI7BpO,0BAAkB,CAACqO,eAJU,CAAxB;AAOP,MAAamB,iBAAiB,GAAG,CAC/BxP,0BAAkB,CAACgP,OADY,EAE/BhP,0BAAkB,CAACiP,OAFY,CAA1B;AAKP,MAAaQ,yBAAyB,GAAG,CACvC,GAAGP,cADoC,EAEvC,GAAGK,eAFoC,EAGvC,GAAGH,gBAHoC,EAIvC,GAAGI,iBAJoC,CAAlC;AAOP,MAAaE,uBAAuB,GAAG,CACrC,GAAGR,cADkC,EAErC,GAAGK,eAFkC,EAGrC,GAAGH,gBAHkC,EAIrC,GAAGI,iBAJkC,CAAhC;AAOP,MAAaG,uBAAuB,GAAG,CACrC,GAAGT,cADkC,EAErC,GAAGC,kBAFkC,EAGrC,GAAGE,qBAHkC,EAIrC,GAAGC,mBAJkC,EAKrC,GAAGF,gBALkC,CAAhC;;AC7CP,WAAYQ;AACVA,EAAAA,mBAAA,SAAA;AACAA,EAAAA,qBAAA,WAAA;AACD,CAHD,EAAYA,mBAAW,KAAXA,mBAAW,KAAA,CAAvB;;AC7IA,MAAMC,sBAAsB,GAAG,IAA/B;AAEA,MAAaC,kBAAkB,GAAIzoB,GAAD,mCACH0oB,MAAM,CAACC,IAAP,CAAY3oB,GAAZ,CADxB;AAGP,MAAa4oB,iBAAiB,GAAG,CAC/B5oB,GAD+B,EAE/BrS,MAF+B,KAI/BqS,GAAG,CACA6oB,QADH,CACY,QADZ,EACuBjnB,GAAD;AAClBjU,EAAAA,MAAM,QAAN,YAAAA,MAAM,CAAEyU,OAAR,CAAgB,OAAYpS,KAAZ;QAAC;AAAE7Q,MAAAA;AAAF;AACfyiB,IAAAA,GAAG,CAACknB,IAAJ,CAAS94B,KAAK,IAAI,CAAArC,MAAM,QAAN,YAAAA,MAAM,CAAE9O,MAAR,IAAiB,CAArB,CAAd,EAAuCM,KAAvC;AACD,GAFD;AAGD,CALH,EAMG4G,IANH,CAMQ,CANR,EAMW,CANX,EAOGC,EAPH,CAOM,CAPN,EAOS,CAPT,CAJK;;AAcP,MAAa+iC,mBAAmB,GAAG;;;MAAC;AAClCC,IAAAA,YADkC;AAElCznC,IAAAA,MAFkC;AAGlCye,IAAAA,GAHkC;AAIlCipB,IAAAA,EAJkC;AAKlCC,IAAAA;AALkC;AAalC,MAAI,CAAC3nC,MAAL,EAAa,OAAOynC,YAAP;AAEb,QAAMG,UAAU,GAAG5hC,iBAAiB,CAClCyY,GAAG,IAAKze,MAAM,CAAC2kB,IADmB,CAApC;AAIA,MAAI,CAACijB,UAAL,EAAiB,OAAOH,YAAP;AAEjBA,EAAAA,YAAY,CAACI,KAAb;AAEA,QAAM;AAAEn2B,IAAAA,IAAF;AAAQkT,IAAAA,KAAR;AAAevR,IAAAA,UAAf;AAA2BwR,IAAAA;AAA3B,MAAsC7kB,MAA5C;AAEA,QAAM8nC,cAAc,GAClB,CAACJ,EAAD,IACA,CAACE,UAAU,CAAC1iC,QAAX,CAAoB,WAApB,CADD,IAEA,CAAC0iC,UAAU,CAAC1iC,QAAX,CAAoB,eAApB,CAHH;AAIA,QAAM6iC,QAAQ,GAAGH,UAAU,CAACzX,OAAX,CAAmB,oCAAnB,EAAyD,EAAzD,CAAjB;;AAEA,MAAI2X,cAAJ,EAAoB;AAAA;;AAClBL,IAAAA,YAAY,CAAChpB,GAAb,CAAiBspB,QAAjB;AAEA,UAAMC,eAAe,aAAG,qBAAqBC,IAArB,CAA0BL,UAA1B,CAAH,qBAAG,OAAwC,CAAxC,CAAxB;;AAEA,QAAII,eAAJ,YAAIA,eAAe,CAAG,CAAH,CAAnB,EAA0B;AACxBP,MAAAA,YAAY,CAACS,OAAb,CAAqBF,eAArB;AACD;;AAEDP,IAAAA,YAAY,CAAC/1B,IAAb,CAAkBA,IAAlB;AACD,GAVD,MAUO;AACL,UAAMy2B,KAAK,GAAGT,EAAE,KAAIK,QAAJ,oBAAIA,QAAQ,CAAE7iC,QAAV,CAAmB,WAAnB,CAAJ,CAAhB;AACA,QAAIkjC,WAAW,GAAGD,KAAK,GAAG3E,2BAAH,GAAiCzd,qBAAxD;AACA,UAAMsiB,WAAW,GAAG32B,IAAI,IAAI02B,WAA5B;AACA,QAAIE,OAAO,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAOF,WAAP,EAAoBA,WAApB,CAAd;AACA,UAAM71B,WAAW,GACfvM,iBAAiB,CACdqN,UADc,oBACdA,UAA6B,CAAEd,WADjB,CAAjB,KAGC,QAAQc,UAAR,oBAAQA,UAA6B,CAAEhB,WAAvC,MAAuD,QAAvD,GAAkE,CAAlE,GAAsE,CAHvE,CADF;;AAMA,QAAIE,WAAJ,EAAiB;AACf61B,MAAAA,WAAW,IAAI71B,WAAf;AACA+1B,MAAAA,OAAO,GAAG,CAAC,CAAC/1B,WAAD,GAAe,CAAhB,EAAmB,CAACA,WAAD,GAAe,CAAlC,EAAqC61B,WAArC,EAAkDA,WAAlD,CAAV;AACD;;AAED,QAAID,KAAJ,EAAW;AACTV,MAAAA,YAAY,CAAC/1B,IAAb,CAAqB22B,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CACEI,OAAO,CAAC7iC,IAAR,CAAa,GAAb,CADF;AAIA,YAAM8iC,SAAS,GAAGb,EAAE,KAAKr0B,UAAL,oBAAKA,UAA6B,CAAEvN,IAApC,CAApB;;AAEA,UAAIyiC,SAAJ,EAAe;AACb,cAAMl2B,WAAW,GAAGrM,iBAAiB,CAClCqN,UADkC,oBAClCA,UAA6B,CAAEhB,WADG,CAArC;AAGA,cAAMyC,SAAS,GAAG9O,iBAAiB,CAChCqN,UADgC,oBAChCA,UAA6B,CAAEyB,SADC,CAAnC;AAIA2yB,QAAAA,YAAY,CAAChpB,GAAb,CACE8pB,SAAS,KAAKvB,mBAAW,CAACl8B,MAA1B,wEAGY04B,2BAA2B,GAAG,CAH1C,iCAIYA,2BAA2B,GAAG,CAJ1C,gCAKWA,2BAA2B,GAAG,CALzC,oCAMc1uB,SAAS,IAAI2uB,yBAN3B,uCAOgBpxB,WAAW,IAAIqxB,2BAP/B,4CAQsBnxB,WARtB,kGAYeixB,2BAZf,qCAagBA,2BAbhB,8DAec1uB,SAAS,IAAI2uB,yBAf3B,uCAgBgBpxB,WAAW,IAAIqxB,2BAhB/B,4CAiBsBnxB,WAjBtB,yBADF;AAqBAk1B,QAAAA,YAAY,CAAChpB,GAAb,CAAiBspB,QAAjB;AACAN,QAAAA,YAAY,CAAC3kC,IAAb,CAAkB,8BAAlB,EAAkD0lC,IAAlD,CAAwDC,IAAD,IACrDA,IAAI,CAACvb,MAAL,EADF;AAGAua,QAAAA,YAAY,CAAC3kC,IAAb,CAAkB,kBAAlB,EAAsC0lC,IAAtC,CAA4CC,IAAD,IACzCA,IAAI,CACDl3B,MADH,CAEIiyB,2BAA2B,GAAG,CAFlC,EAGIA,2BAA2B,GAAG,CAHlC,EAKGz5B,IALH,CAKQ,OALR,CADF;AASA,cAAM2+B,QAAQ,GAAGjB,YAAY,CAAC3kC,IAAb,CAAkB,YAAlB,EAAgC,CAAhC,CAAjB;;AAEA,YAAI6kC,YAAJ,EAAkB;AAChBe,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAEz/B,MAAV,CAAiB;AAAEye,YAAAA,OAAO,EAAEuf;AAAX,WAAjB;AACD,SA9CY;;;AAiDb,YACEphC,sBAAsB,CACnBwN,UADmB,oBACnBA,UAA6B,CAAEyB,SADZ,CADxB,EAIE;AAAA;;AACA4zB,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAE3+B,IAAV,CAAes9B,iBAAiB,CAC9BI,YAD8B,EAE5Bp0B,UAF4B,6CAE5BA,UAA6B,CAAEyB,SAFH,qBAE5B,sBAEE1I,MAJ0B,CAAhC;AAMD;;AAED,YAAIvG,sBAAsB,CACvBwN,UADuB,oBACvBA,UAA6B,CAAEhB,WADR,CAA1B,EAEG;AAAA;;AACDq2B,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAEz/B,MAAV,CAAiB;AACfqJ,YAAAA,KAAK,EAAG+0B,iBAAiB,CACvBI,YADuB,EAErBp0B,UAFqB,6CAErBA,UAA6B,CAAEhB,WAFV,qBAErB,sBAEEjG,MAJmB;AADV,WAAjB;AAQD;AACF,OA1ED,MA0EO;AACLq7B,QAAAA,YAAY,CAAChpB,GAAb,CAAiBspB,QAAjB;AACD;AACF,KApFD,MAoFO;AACL,YAAM11B,WAAW,GAAGrM,iBAAiB,CAClC6e,MADkC,oBAClCA,MAAyB,CAAExS,WADO,CAArC;AAGA,YAAME,WAAW,GAAGvM,iBAAiB,CAClC6e,MADkC,oBAClCA,MAAyB,CAAEtS,WADO,CAAjB,KAGjB,QAAQsS,MAAR,oBAAQA,MAAyB,CAAExS,WAAnC,MAAmD,QAAnD,GAA8D,CAA9D,GAAkE,CAHjD,CAApB;AAIA,YAAMyC,SAAS,GAAG9O,iBAAiB,CAChC6e,MADgC,oBAChCA,MAAyB,CAAE/P,SADK,CAAnC;AAIA2yB,MAAAA,YAAY,CAAC/1B,IAAb,CAAqB22B,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CACEI,OAAO,CAAC7iC,IAAR,CAAa,GAAb,CADF;AAGAgiC,MAAAA,YAAY,CAAChpB,GAAb,CAAiBspB,QAAjB;AACAN,MAAAA,YAAY,CAAC3kC,IAAb,CAAkB,gBAAlB,EAAoC0lC,IAApC,CAAyCC,IAAI;AAC3CA,QAAAA,IAAI,CACDl3B,MADH,CACUwU,qBAAmB,GAAG,CADhC,EACmCA,qBAAmB,GAAG,CADzD,EAEGhc,IAFH,CAEQ+K,SAAS,IAAI2uB,yBAFrB,EAGGx6B,MAHH,CAGU;AAAEqJ,UAAAA,KAAK,EAAED,WAAT;AAAsBhC,UAAAA,KAAK,EAAEkC;AAA7B,SAHV;;AAKA,YACE1M,sBAAsB,CACnBgf,MADmB,oBACnBA,MAAyB,CAAE/P,SADR,CADxB,EAIE;AAAA;;AACA2zB,UAAAA,IAAI,QAAJ,YAAAA,IAAI,CAAE1+B,IAAN,CAAWs9B,iBAAiB,CAC1BI,YAD0B,EAExB5iB,MAFwB,yCAExBA,MAAyB,CAAE/P,SAFH,qBAExB,kBAEE1I,MAJsB,CAA5B;AAMD;;AAED,YACEvG,sBAAsB,CACnBgf,MADmB,oBACnBA,MAAyB,CAAExS,WADR,CADxB,EAIE;AAAA;;AACAo2B,UAAAA,IAAI,QAAJ,YAAAA,IAAI,CAAEx/B,MAAN,CAAa;AACXqJ,YAAAA,KAAK,EAAG+0B,iBAAiB,CACvBI,YADuB,EAErB5iB,MAFqB,2CAErBA,MAAyB,CAAExS,WAFN,qBAErB,oBAEEjG,MAJmB;AADd,WAAb;AAQD;AACF,OAjCD;AAkCD;AACF;;AAED,QAAMu8B,aAAa,cAAG,gCAAgCV,IAAhC,CAAqCL,UAArC,CAAH,qBAAG,QAAmD,CAAnD,CAAtB;;AAEA,MAAIe,aAAJ,EAAmB;AACjB,UAAMC,cAAc,GAAGD,aAAa,CAAC5mC,KAAd,CAAoB,CAApB,EAAuB,CAAC,CAAxB,EAA2BuD,KAA3B,CAAiC,GAAjC,CAAvB;AAEAmiC,IAAAA,YAAY,CAACoB,SAAb,CAAuB;AACrB,OAACD,cAAc,CAAC,CAAD,CAAf,GAAqBA,cAAc,CAAC,CAAD,CAAd,CAAkBtjC,KAAlB,CAAwB,GAAxB;AADA,KAAvB;AAGD;;AAED,QAAMwjC,YAAY,GAAGrB,YAAY,CAACoB,SAAb,CAAuB,QAAvB,CAArB;;AAEA,MAAIC,YAAJ,EAAkB;AAChBrB,IAAAA,YAAY,CAACsB,MAAb,CAAoB,CAACD,YAArB,EAAmC,CAAnC,EAAsC,CAAtC;AACD;;AACD,MAAIlkB,KAAK,KAAK1V,SAAd,EAAyB;AACvBu4B,IAAAA,YAAY,CAACsB,MAAb,CAAqBnkB,KAAgB,IAAI,MAAMlV,IAAI,CAAC8B,EAAf,CAArC,EAAyD,CAAzD,EAA4D,CAA5D;AACD;;AAED,SAAOi2B,YAAP;AACD,CAtNM;;MCtCMuB,SAAS,GAAIC,MAAD,IACvB,CAAC5W,KAAK,CAAC6W,UAAU,CAACD,MAAD,CAAX,CAAN,IAAwCE,QAAQ,CAACF,MAAD,CAD3C;;ACcA,MAAMG,6BAA6B,GAAuC;AAC/E,GAACxkC,mBAAS,CAACE,IAAX,GAAkBsyB,0BAAkB,CAACkO,MAD0C;AAE/E,GAAC1gC,mBAAS,CAACykC,OAAX,GAAqBjS,0BAAkB,CAACmO,SAFuC;AAG/E,GAAC3gC,mBAAS,CAACC,IAAX,GAAkBuyB,0BAAkB,CAACoO,WAH0C;AAI/E,GAAC5gC,mBAAS,CAACI,IAAX,GAAkBoyB,0BAAkB,CAACsO,QAJ0C;AAK/E,GAAC9gC,mBAAS,CAACG,KAAX,GAAmBqyB,0BAAkB,CAACqO,eALyC;AAM/E,GAAC7gC,mBAAS,CAACK,KAAX,GAAmBmyB,0BAAkB,CAACuO,YANyC;AAO/E,GAAC/gC,mBAAS,CAACwhC,OAAX,GAAqBhP,0BAAkB,CAACgP,OAPuC;AAQ/E,GAACxhC,mBAAS,CAACyhC,OAAX,GAAqBjP,0BAAkB,CAACiP;AARuC,CAA1E;AAWP,AAAO,MAAMiD,uBAAuB,GAAoB,CACtD3V,iBAAa,CAAC4V,KADwC,EAEtD5V,iBAAa,CAACG,KAFwC,EAGtDH,iBAAa,CAACC,QAHwC,EAItDD,iBAAa,CAAC6V,MAJwC,CAAjD;;AAOP,MAAMC,WAAW,GAAG,CAAC7rC,KAAD,EAAyB+Q,MAAzB;AAClB,SAAOA,MAAM,UACJ8gB,UAAU,CAAC7xB,KAAD,EAAQ;AACrB8xB,IAAAA,UAAU,EAAEb,kBAAU,CAAC6a,GADF;AAErBzjC,IAAAA,YAAY,EAAErI;AAFO,GAAR,CADN,SAKTA,KAAK,GACLA,KAAK,CAACqR,QAAN,EADK,GAEL,CAPJ;AAQD,CATD;;AAWA,SAAgB06B,gBAAgB7lC;AAC9B,QAAM;AAAE8lC,IAAAA,kBAAF;AAAsBhsC,IAAAA,KAAtB;AAA6BkI,IAAAA,IAA7B;AAAmCnC,IAAAA;AAAnC,MAAiDG,WAAvD;AACA,QAAM+lC,QAAQ,GAAGxE,wBAAwB,CAACuE,kBAAD,CAAxB,IAAsEA,kBAAvF;AAEA,QAAME,aAAa,GAAG,OAAOlsC,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACsH,QAAN,CAAe,KAAf,CAA7B,GAAqDtH,KAAK,CAAC0H,KAAN,CAAY,KAAZ,CAArD,GAA0E1H,KAAhG;AACA,QAAM+Q,MAAM,GAAG7I,IAAI,KAAK6tB,iBAAa,CAACC,QAAtC;AACA,QAAMmW,gBAAgB,GAAGnD,iBAAiB,CAAC1hC,QAAlB,CAA2B0kC,kBAA3B,CAAzB;AACA,QAAMt7B,WAAW,GAAG,CAACg7B,uBAAuB,CAACpkC,QAAxB,CAAiCY,IAAjC,CAAD,IAA4DgkC,aAAa,KAAK,IAAlG;;AAEA,MAAIC,gBAAgB,IAAIpkC,KAAK,CAACC,OAAN,CAAckkC,aAAd,CAApB,IAAoDA,aAAa,CAAC,CAAD,CAAb,KAAqB56B,SAA7E,EAAwF;AACtF,WAAUm2B,wBAAwB,CAACuE,kBAAD,CAAlC,SAAgFjmC,SAAhF,UAA8F8lC,WAAW,CACvGK,aAAa,CAAC,CAAD,CAD0F,EAEvGn7B,MAFuG,CAAzG,UAGM86B,WAAW,CAACK,aAAa,CAAC,CAAD,CAAd,EAAmBn7B,MAAnB,CAHjB;AAID;;AAED,QAAMq7B,cAAc,GAAGrkC,KAAK,CAACC,OAAN,CAAckkC,aAAd,IACnBA,aAAa,CAAC5qC,GAAd,CAAkB+qC,GAAG,IAAIR,WAAW,CAACQ,GAAD,EAAMt7B,MAAN,CAApC,CADmB,GAEnB86B,WAAW,CAACK,aAAD,EAAmCn7B,MAAnC,CAFf;AAIA,QAAMu7B,WAAW,GAAGC,YAAK,CAACL,aAAD,CAAL,GAAuB,QAAvB,GAAkCE,cAAtD;AAEA,QAAMI,YAAY,GAChB97B,WAAW,IAAI,OAAO47B,WAAP,KAAuB,QAAtC,SACQG,cAAI,CAACC,eAAL,CAAqBC,mBAAmB,CAACL,WAAD,EAAcN,kBAAd,CAAxC,CADR,SAEIM,WAHN;AAKA,SAAUvmC,SAAV,SAAuBkmC,QAAvB,SAAmCO,YAAnC;AACD;AAED,SAAgBI,sBAAsB1mC;AACpC,MAAI6B,KAAK,CAACC,OAAN,CAAc9B,SAAd,CAAJ,EAA8B;AAC5B,kBAAY6lC,eAAe,CAAC7lC,SAAS,CAAC,CAAD,CAAV,CAA3B,SAA6CA,SAAS,CAAC,CAAD,CAAT,CAAaF,SAA1D,SAAuE+lC,eAAe,CAAC7lC,SAAS,CAAC,CAAD,CAAV,CAAtF;AACD;;AAED,SAAO6lC,eAAe,CAAC7lC,SAAD,CAAtB;AACD;AAED,SAAgB2mC;MAAgB;AAAE9mC,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBhG,IAAAA;AAAxB;AAC9B,QAAMgsC,kBAAkB,GAAGR,6BAA6B,CAACxlC,SAAD,CAAxD;AACA,QAAM8mC,eAAe,GAAGC,oBAAoB,CAAC/sC,KAAD,EAAqCgsC,kBAArC,CAA5C;AAEA;AACEjmC,IAAAA;AADF,KAEK+mC,eAFL;AAID;;AAED,SAASC,oBAAT,CAA8B/sC,KAA9B,EAAgEgsC,kBAAhE;AACE,MAAI,OAAOhsC,KAAP,KAAiB,QAArB,EAA+B;AAC7B,UAAMgtC,aAAa,GAAG,EAAEhB,kBAAkB,KAAKxS,0BAAkB,CAACmO,SAA5C,CAAtB;;AAEA,QAAI3nC,KAAK,CAACitC,UAAN,CAAiBR,cAAI,CAACS,UAAtB,KAAqCltC,KAAK,CAACmtC,QAAN,CAAeV,cAAI,CAACS,UAApB,CAAzC,EAA0E;AACxE,aAAO;AACLltC,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAEL6nC,QAAAA,kBAAkB,EAAErD,kBAAkB,CAACqE,aAAD;AAFjC,OAAP;AAID;;AAED,QAAIhtC,KAAK,CAACitC,UAAN,CAAiBR,cAAI,CAACS,UAAtB,CAAJ,EAAuC;AACrC,aAAO;AACLltC,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,CADF;AAEL6nC,QAAAA,kBAAkB,EAAElD,mBAAmB,CAACkE,aAAD;AAFlC,OAAP;AAID;;AAED,QAAIhtC,KAAK,CAACmtC,QAAN,CAAeV,cAAI,CAACS,UAApB,CAAJ,EAAqC;AACnC,aAAO;AACLltC,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAEL6nC,QAAAA,kBAAkB,EAAEnD,qBAAqB,CAACmE,aAAD;AAFpC,OAAP;AAID;AACF;;AAED,SAAO;AAAEhtC,IAAAA,KAAF;AAASgsC,IAAAA;AAAT,GAAP;AACD;;AAED,MAAMoB,WAAW,GAAIptC,KAAD,UAAgCA,KAAhC,MAApB;;AACA,MAAMqtC,aAAa,GAAIrtC,KAAD,IAA+BA,KAA/B,MAAtB;;AACA,MAAMstC,WAAW,GAAIttC,KAAD,UAAgCA,KAApD;;AAEA,SAAS2sC,mBAAT,CAA6B3sC,KAA7B,EAA4CisC,QAA5C;AACE,UAAQA,QAAR;AACE,SAAKzS,0BAAkB,CAAC0O,QAAxB;AACA,SAAK1O,0BAAkB,CAAC2O,WAAxB;AACE,aAAOiF,WAAW,CAACptC,KAAD,CAAlB;;AACF,SAAKw5B,0BAAkB,CAAC4O,UAAxB;AACA,SAAK5O,0BAAkB,CAAC6O,aAAxB;AACE,aAAOgF,aAAa,CAACrtC,KAAD,CAApB;;AACF,SAAKw5B,0BAAkB,CAAC8O,QAAxB;AACA,SAAK9O,0BAAkB,CAAC+O,WAAxB;AACE,aAAO+E,WAAW,CAACttC,KAAD,CAAlB;;AACF,SAAKw5B,0BAAkB,CAACgP,OAAxB;AACE,aAAOiE,cAAI,CAACc,OAAZ;;AACF,SAAK/T,0BAAkB,CAACiP,OAAxB;AACE,aAAOgE,cAAI,CAACe,OAAZ;;AACF;AACE,aAAOxtC,KAAP;AAfJ;AAiBD;;ICzIYytC,eAAb;AAGE,2BAAoBvnC,WAApB;QAAoBA;AAAAA,MAAAA,cAA2B;;;;;AAA3B,kBAAA,GAAAA,WAAA;AAClB,SAAKwnC,oBAAL,GAA4B,IAAItnC,8BAAJ,CAAyBF,WAAzB,CAA5B;AACD;;AALH;AAAA;AAAA,SAaE;AACE,YAAM;AAAElG,QAAAA;AAAF,UAAY,KAAK0tC,oBAAvB;;AAEA,UAAI1tC,KAAK,YAAYsG,KAArB,EAA4B;AAC1B;AACAG,QAAAA,OAAO,CAACC,IAAR,CAAa1G,KAAK,CAAC2tC,OAAnB;AACD;;AAED,aAAO3tC,KAAK,YAAYsG,KAAjB,GAAyB,EAAzB,GAA8BtG,KAAK,CAACqG,WAAN,CAAkB/E,GAAlB,CAAsBurC,eAAtB,CAArC;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,YAAM;AAAE7sC,QAAAA;AAAF,UAAY,KAAK0tC,oBAAvB;;AAEA,UAAI1tC,KAAK,YAAYsG,KAArB,EAA4B;AAC1B,eAAO,IAAP;AACD;;AAED,YAAMsnC,aAAa,GAAG5tC,KAAK,CAAC6tC,cAAN,CAAqBvmC,QAArB,CAA8BN,mBAAS,CAAC8mC,MAAxC,CAAtB;AACA,YAAMC,cAAc,GAAG/tC,KAAK,CAAC6tC,cAAN,CAAqBvmC,QAArB,CAA8BN,mBAAS,CAACgnC,OAAxC,CAAvB;;AAEA,UAAIJ,aAAa,IAAIG,cAArB,EAAqC;AACnC,eAAO,IAAP;AACD;;AAED,aAAOH,aAAa,GAAGrU,gCAAwB,CAAC0U,EAA5B,GAAiCF,cAAc,GAAGxU,gCAAwB,CAAC2U,GAA5B,GAAkC,IAArG;AACD;AAvCH;AAAA;AAAA,WAyCS;AACL,aAAO,KAAKR,oBAAL,CAA0B1tC,KAA1B,YAA2CsG,KAAlD;AACD;AA3CH;AAAA;AAAA,WA6CS;AACL,aAAO,KAAKJ,SAAZ;AACD;AA/CH;AAAA;AAAA,WAOE,cAAYioC,UAAZ,EAA+CnoC,SAA/C;AACE,YAAME,SAAS,GAAG,CAAAioC,UAAU,QAAV,YAAAA,UAAU,CAAE7sC,GAAZ,CAAgBsrC,qBAAhB,EAAuC/kC,IAAvC,OAAgD7B,SAAhD,YAAiE,IAAnF;AAEA,aAAO,IAAIynC,eAAJ,CAAoBvnC,SAApB,CAAP;AACD;AAXH;;AAAA;AAAA;;MC0EakoC,cAAc,GACzBpuC,KAD4B,IAEe8H,QAAQ,CAAC9H,KAAD,CAAR,IAAmB,UAAUA,KAFnE;AAIP,MAAaquC,yBAAyB,GAAInoC,SAAD;AACvC,QAAMooC,KAAK,GAAGpoC,SAAS,CAACwB,KAAV,CAAgB,GAAhB,CAAd;AAEA,SAAO4mC,KAAK,CAAC,CAAD,CAAL,CAASrB,UAAT,CAAoB,GAApB,IAA2BqB,KAAK,CAAC,CAAD,CAAL,CAASnqC,KAAT,CAAe,CAAf,CAA3B,GAA+CmqC,KAAK,CAAC,CAAD,CAA3D;AACD,CAJM;AAMP,MAAaC,oBAAoB,GAAG,CAClCroC,SADkC,EAElCsoC,SAFkC;;;AAIlC,MAAIC,IAAJ;;AAEA,MAAID,SAAJ,EAAe;AACb,UAAMF,KAAK,GAAGpoC,SAAS,CAACwB,KAAV,CAAgB,MAAhB,EAAwBpG,GAAxB,CAA4BotC,IAAI,IAAIA,IAAI,CAACvqC,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAApC,CAAd;AAEAsqC,IAAAA,IAAI,GAAGH,KAAK,CAACE,SAAS,GAAG,CAAb,CAAZ;AACD,GAJD,MAIO;AACLC,IAAAA,IAAI,GAAGvoC,SAAP;AACD;;AAED,kBAAOuoC,IAAP,qBAAO,MAAM/mC,KAAN,CAAY,GAAZ,CAAP;AACD,CAfM;AAiBP,MAAainC,wBAAwB,GAAG,CACtCzoC,SADsC,EAEtCsoC,SAFsC;;;AAItC,kCAAOD,oBAAoB,CAACroC,SAAD,EAAYsoC,SAAZ,CAA3B,qBAAO,sBAA6C,CAA7C,CAAP;AACD,CALM;AAOP,MAAaI,yBAAyB,GAAG,CACvC1oC,SADuC,EAEvCsoC,SAFuC;;;AAIvC,mCAAOD,oBAAoB,CAACroC,SAAD,EAAYsoC,SAAZ,CAA3B,qBAAO,uBAA6C,CAA7C,CAAP;AACD,CALM;AAOP,MAAaK,gBAAgB,GAAI3oC,SAAD,IAC9B,CAAAA,SAAS,QAAT,YAAAA,SAAS,CAAEoB,QAAX,CAAoB,GAApB,MAA4B,KADvB;AAGP,MAAawnC,sBAAsB,GACjCrnC,SADoC;AAGpC,SAAO+/B,eAAe,CAAC//B,SAAD,CAAf,IAA8By/B,sBAArC;AACD,CAJM;AAMP,MAAa6H,sBAAsB,GAAG,CACpC/uC,KADoC,EAEpC6rC,WAFoC;AAIpC,QAAM;AAAE9lC,IAAAA,SAAF;AAAaoI,IAAAA;AAAb,MAA6BnO,KAAnC;AAEA,SAAO+F,SAAS,IAAI8lC,WAAb,GACFA,WAAW,CACV9lC,SAAS,CAACmC,IADA,EAEViG,WAFU,EAGVpI,SAAS,CAACipC,YAHA,CADT,GAMH7gC,WANJ;AAOD,CAbM;AAeP,MAAa6C,gBAAc,GAAG,OAE5BF,QAF4B,EAG5BC,MAH4B,EAI5BF,KAJ4B;MAC5B;AAAEjK,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EACFA,IAAI,KAAK,IAAT,IAAiBiK,KAAK,KAAK,CAA3B,GACIE,MAAM,GACJnK,IADI,GAEJkK,QAAQ,GACR,CAAClK,IADO,GAER,CAACA,IAAD,GAAQ,CALd,GAMIA,IARD;AASLC,IAAAA;AATK,GAAP;AAWD,CAjBM;AAmBP,MAAaooC,qBAAqB,GAAG,CACnCjvC,KADmC,EAEnC6rC,WAFmC,EAGnCh7B,KAHmC;;;AAKnC,QAAMC,QAAQ,GAAG,qBAAA9Q,KAAK,CAAC+F,SAAN,sCAAiBmC,IAAjB,MAA0B,QAA3C;AACA,QAAM6I,MAAM,GAAG,sBAAA/Q,KAAK,CAAC+F,SAAN,uCAAiBmC,IAAjB,MAA0B,UAAzC;AAEA,QAAM;AAAEtB,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAemK,gBAAc,CAAChR,KAAD,EAAQ8Q,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;AAEA,QAAMq+B,aAAa,GAAGrD,WAAW,GAC7BA,WAAW,sBACT7rC,KAAK,CAAC+F,SADG,qBACT,kBAAiBmC,IADR,EAETtB,IAFS,uBAGT5G,KAAK,CAAC+F,SAHG,qBAGT,kBAAiBipC,YAHR,CADkB,GAM7BpoC,IANJ;AAOA,QAAMuoC,WAAW,GAAGtD,WAAW,GAC3BA,WAAW,sBACT7rC,KAAK,CAAC+F,SADG,qBACT,kBAAiBmC,IADR,EAETrB,EAFS,uBAGT7G,KAAK,CAAC+F,SAHG,qBAGT,kBAAiBipC,YAHR,CADgB,GAM3BnoC,EANJ;;AAQA,MAAID,IAAI,KAAK,IAAb,EAAmB;AACjB,gBAAUuoC,WAAV,IAAwB,CAACp+B,MAAD,SAAcb,IAAI,CAACe,CAAL,CAAO,SAAP,EAAkB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAlB,CAAd,GAAqD,EAA7E;AACD;;AAED,MAAI1J,EAAE,KAAK,IAAX,EAAiB;AACf,iBAAU,CAACkK,MAAD,GAAab,IAAI,CAACe,CAAL,CAAO,MAAP,EAAe;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAf,CAAb,SAAkD,EAA5D,IAAiE2+B,aAAjE;AACD;;AAED,SAAOtoC,IAAI,KAAKC,EAAT,QAAiBqoC,aAAjB,GAAsCA,aAAtC,WAAyDC,WAAhE;AACD,CAlCM;AAoCP,MAAaC,mBAAmB,GAC9BC,SADiC;;;AAGjC,SACE,0BAAApJ,qBAAqB,CAACoJ,SAAS,CAAC7S,YAAX,CAArB,2CAA+C1uB,IAA/C,CAAoDwhC,KAAK;;;AACvD,UAAMC,UAAU,GAAIC,GAAG,qBACrBH,SAAS,CAACtlC,KADW,qBACrB,iBAAiB3H,MADI,EAErBktC,KAFqB,CAAvB;AAKA,WAAO,CAAAC,UAAU,QAAV,YAAAA,UAAU,CAAErnC,IAAZ,MAAqB,aAA5B;AACD,GAPD,MAOM,KARR;AAUD,CAbM;AAeP,MAAaunC,qBAAqB,GAAG;MAAC;AACpCvpC,IAAAA,SADoC;AAEpCH,IAAAA,SAFoC;AAGpC8lC,IAAAA;AAHoC;AASpC,QAAMyC,KAAK,GAAGpoC,SAAH,oBAAGA,SAAS,CAAEwB,KAAX,CAAiB,MAAjB,CAAd;AACA,QAAMyG,WAAW,GAAGmgC,KAAK,QAAL,IAAAA,KAAK,CAAG,CAAH,CAAL,GAAcA,KAAK,CAAC,CAAD,CAAL,CAASrB,UAAT,CAAoB,GAApB,KAA4BqB,KAAK,CAAC,CAAD,CAAL,CAASnB,QAAT,CAAkB,GAAlB,CAA5B,GAAqDmB,KAAK,CAAC,CAAD,CAAL,CAASnqC,KAAT,CAAe,CAAf,EAAkB,CAAC,CAAnB,CAArD,GAA6EmqC,KAAK,CAAC,CAAD,CAAhG,GAAuG,EAA3H;AAEA,SAAOvoC,SAAS,IAAI8lC,WAAb,GACHA,WAAW,CAAC9lC,SAAS,CAACmC,IAAX,EAAiBiG,WAAjB,EAA8BpI,SAAS,CAACipC,YAAxC,CADR,GAEH7gC,WAFJ;AAGD,CAfM;AAiBP,SAAgBuhC,8BACdH,YACAxpC,WACA8lC,aACAh7B;AAEA,MAAI,CAAC9K,SAAL,EAAgB,OAAO,EAAP;AAEhB,MAAIwpC,UAAU,CAACxhC,KAAf,EAAsB,OAAOwhC,UAAU,CAACxhC,KAAlB;AAEtB,QAAM/N,KAAK,GAAG;AACZuN,IAAAA,cAAc,EAAEnF,iBAAiB,CAACmnC,UAAU,CAACvvC,KAAZ,CADrB;AAEZ+F,IAAAA;AAFY,GAAd;AAKA,QAAM4pC,IAAI,GAAGhB,wBAAwB,CAACY,UAAU,CAACrpC,SAAZ,EAAuB,CAAvB,CAArC;AACA,QAAM0pC,WAAW,GAAGD,IAAI,CAACroC,QAAL,CAAc,GAAd,CAApB;AAECtH,EAAAA,KAAoB,CAAC4G,IAArB,GAA4BgpC,WAAW,GACpChB,yBAAyB,CAACW,UAAU,CAACrpC,SAAZ,EAAuB,CAAvB,CADW,GAEpC,IAFH;AAGAlG,EAAAA,KAAoB,CAAC6G,EAArB,GACC0oC,UAAU,CAACrpC,SAAX,CAAqBoB,QAArB,CAA8B,MAA9B,KAAyCsoC,WAAzC,GACIhB,yBAAyB,CAACW,UAAU,CAACrpC,SAAZ,EAAuB,CAAvB,CAD7B,GAEI,CAAC0pC,WAAD,GACAhB,yBAAyB,CAACW,UAAU,CAACrpC,SAAZ,EAAuB,CAAvB,CADzB,GAEA,IALL;AAOD,MAAIP,YAAY,CAAC3F,KAAD,CAAhB,EACE,OAAOivC,qBAAqB,CAACjvC,KAAD,EAAsB6rC,WAAtB,EAAmCh7B,KAAnC,CAA5B;AACF,MAAIhL,aAAa,CAAC7F,KAAD,CAAjB,EACE,OAAO+uC,sBAAsB,CAAC/uC,KAAD,EAAuB6rC,WAAvB,CAA7B;AAEF,SAAO,EAAP;AACD;AAwBD;AACA;;AACA,MAAagE,qBAAqB,GAAqB;AACrD;;AAAA,KAA2B;AACzB34B,IAAAA,SAAS,EAAE,WADc;AAEzBvC,IAAAA,WAAW,EAAE,CAFY;AAGzBF,IAAAA,WAAW,EAAE;AAHY,GAD0B;AAMrD;;AAAA,KAAgC;AAC9BmT,IAAAA,WAAW,EAAE;AADiB,GANqB;AASrD;;AAAA,KAA0B;AACxBvc,IAAAA,MAAM,EAAE;AACNoH,MAAAA,KAAK,EAAE,CADD;AAENiC,MAAAA,KAAK,EAAE;AAFD;AADgB,GAT2B;AAerD;;AAAA,KAA6B;AAC3BvI,IAAAA,IAAI,EAAE;AACJuI,MAAAA,KAAK,EAAE,WADH;AAEJK,MAAAA,UAAU,EAAE;AAFR,KADqB;AAK3B1J,IAAAA,MAAM,EAAE;AACNoH,MAAAA,KAAK,EAAE,CADD;AAENiC,MAAAA,KAAK,EAAE;AAFD;AALmB;AAfwB,CAAhD;AA2BP,MAAao7B,sBAAsB,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAA/B;;AAGP,MAAaC,oBAAoB,GAA2B;AAC1DC,EAAAA,iBAAiB,EAAE,CADuC;AAE1DC,EAAAA,iBAAiB,EAAE,EAFuC;AAG1DC,EAAAA,gBAAgB,EAAE,EAHwC;AAI1DC,EAAAA,sBAAsB,EAAE,EAJkC;AAK1DC,EAAAA,cAAc,EAAE;AAL0C,CAArD;;AAQP,MAAMC,0BAA0B,GAAG,CACjCC,UADiC,EAEjC7oC,SAFiC,EAGjC8oC,qBAHiC,EAIjCroC,IAJiC;AAMjC,MAAIqoC,qBAAqB,CAACjpC,QAAtB,CAA+BG,SAA/B,CAAJ,EAA+C;AAC7C,UAAM+oC,qBAAqB,GAAGC,sBAAsB,CAClDZ,qBAAqB,CAAC3nC,IAAD,CAD6B,EAElDT,SAFkD,CAApD;;AAKA,QAAI+oC,qBAAJ,EAA2B;AACzB,aAAOA,qBAAP;AACD;;AACD,QACEV,sBAAsB,CAACxoC,QAAvB,CAAgCG,SAAhC,KACAsoC,oBAAoB,CAACO,UAAU,CAACpoC,IAAZ,CAFtB,EAGE;AACA,aAAO6nC,oBAAoB,CAACO,UAAU,CAACpoC,IAAZ,CAA3B;AACD;AACF;;AAED,SAAOE,iBAAiB,CAACqoC,sBAAsB,CAACH,UAAD,EAAa7oC,SAAb,CAAvB,CAAxB;AACD,CAxBD;;AA0BA,MAAaipC,qBAAqB,GAAG,CACnCtuC,MADmC,EAEnC0G,IAFmC,EAGnC9I,KAHmC,KAKnCsI,qBAAqB,CAAC,MAAMtI,KAAP,CAArB,CACEoC,MADF,EAEE0G,IAFF,CALK;;AAUP,MAAM6nC,iBAAiB,GAA8C,CACnEL,UADmE,EAEnE7oC,SAFmE,EAGnE8oC,qBAHmE,EAInEhjC,cAJmE;AAMnE,SAAOmjC,qBAAqB,cAErBJ,UAFqB;AAGxBp5B,IAAAA,SAAS,EAAEm5B,0BAA0B,CACnCC,UADmC,EAEnC,WAFmC,EAGnCC,qBAHmC;;AAAA,KAHb;AASxB97B,IAAAA,WAAW,EAAE47B,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KATf;AAexB57B,IAAAA,WAAW,EAAE07B,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KAff;AAqBxBz8B,IAAAA,IAAI,EAAEu8B,0BAA0B,CAC9BC,UAD8B,EAE9B,MAF8B,EAG9BC,qBAH8B;;AAAA,KArBR;AA2BxBnjC,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ;AA3BgB,MA6B1B3F,SA7B0B,EA8B1B8F,cA9B0B,CAA5B;AAgCD,CAtCD;;AA6CA,SAAgBqjC,cAAcxuC,QAAqB0R;AACjD,QAAM4B,MAAM,GAAGtN,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAAhC;AACA,QAAMjD,KAAK,GAAGrK,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CAA/B;;AAEA,MAAIA,KAAK,KAAKiD,MAAd,EAAsB;AACpB,WAAO;AACLjD,MAAAA,KAAK,EAAEqB,IADF;AAEL4B,MAAAA,MAAM,EAAE5B;AAFH,KAAP;AAID;;AAED,QAAM+8B,KAAK,GAAGn7B,MAAM,GAAGjD,KAAvB;;AAEA,MAAIA,KAAK,GAAGiD,MAAZ,EAAoB;AAClB,WAAO;AACLjD,MAAAA,KAAK,EAAEqB,IADF;AAEL4B,MAAAA,MAAM,EAAEA,MAAM,GAAG,CAAC5B,IAAI,GAAGrB,KAAR,IAAiBo+B;AAF7B,KAAP;AAID;;AAED,SAAO;AACLp+B,IAAAA,KAAK,EAAEA,KAAK,GAAG,CAACqB,IAAI,GAAG4B,MAAR,IAAkBm7B,KAD5B;AAELn7B,IAAAA,MAAM,EAAE5B;AAFH,GAAP;AAID;;AAED,MAAMg9B,sBAAsB,GAA+B,CACzDR,UADyD,EAEzD7oC,SAFyD,EAGzD8oC,qBAHyD,EAIzDhjC,cAJyD;AAMzD,MAAInL,MAAM,gBAAQkuC,UAAR,CAAV;;AAEA,MAAI/lC,mBAAmB,CAACnI,MAAD,CAAvB,EAAiC;AAC/BA,IAAAA,MAAM,CAACwlB,WAAP,GAAqByoB,0BAA0B,CAC7CC,UAD6C,EAE7C,aAF6C,EAG7CC,qBAH6C;;AAAA,KAA/C;AAMD;;AAED,MAAI9oC,SAAS,KAAK,QAAd,IAA0BA,SAAS,KAAK,OAA5C,EAAqD;AACnD,UAAM;AAAEiO,MAAAA,MAAF;AAAUjD,MAAAA;AAAV,QAAoBm+B,aAAa,CACrCN,UADqC,EAErC/iC,cAFqC,CAAvC;AAKAnL,IAAAA,MAAM,CAACsT,MAAP,GAAgBA,MAAhB;AACAtT,IAAAA,MAAM,CAACqQ,KAAP,GAAeA,KAAf;AACD,GARD,MAQO;AACLrQ,IAAAA,MAAM,CAACqQ,KAAP,GAAe49B,0BAA0B,CACvCC,UADuC,EAEvC,OAFuC,EAGvCC,qBAHuC;;AAAA,KAAzC;AAMAnuC,IAAAA,MAAM,CAACsT,MAAP,GAAgBtT,MAAM,CAACqQ,KAAvB;AAEArQ,IAAAA,MAAM,GAAGsuC,qBAAqB,CAACtuC,MAAD,EAASqF,SAAT,EAAoB8F,cAApB,CAA9B;AACD;;AAEDnL,EAAAA,MAAM,CAACgL,MAAP,GAAgB,CACbhF,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAAjB,GAAsE,CADzD,EAEbtN,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CAAjB,GAAqE,CAFxD,CAAhB;AAKA,SAAOrQ,MAAP;AACD,CA3CD;;AA6CA,MAAM2uC,gBAAgB,GAAkC,CACtDT,UADsD,EAEtD7oC,SAFsD,EAGtD8oC,qBAHsD,EAItDhjC,cAJsD;AAMtD,SAAOmjC,qBAAqB,cAErBJ,UAFqB;AAGxBpoC,IAAAA,IAAI,EAAE,gBAHkB;AAIxBmD,IAAAA,MAAM,EAAE;AACNqJ,MAAAA,KAAK,EAAE27B,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAON99B,MAAAA,KAAK,EAAE49B,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAJgB,MAmB1B9oC,SAnB0B,EAoB1B8F,cApB0B,CAA5B;AAsBD,CA5BD;;AA8BA,MAAMyjC,mBAAmB,GAAiC,CACxDV,UADwD,EAExD7oC,SAFwD,EAGxD8oC,qBAHwD,EAIxDhjC,cAJwD;AAMxD,SAAOmjC,qBAAqB,cAErBJ,UAFqB;AAGxBnkC,IAAAA,IAAI,EAAE;AACJuI,MAAAA,KAAK,EAAE27B,0BAA0B,CAC/BC,UAD+B,EAE/B,YAF+B,EAG/BC,qBAH+B;;AAAA,OAD7B;AAOJx7B,MAAAA,UAAU,EAAEs7B,0BAA0B,CACpCC,UADoC,EAEpC,iBAFoC,EAGpCC,qBAHoC;;AAAA;AAPlC,KAHkB;AAiBxBllC,IAAAA,MAAM,EAAE;AACNqJ,MAAAA,KAAK,EAAE27B,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAON99B,MAAAA,KAAK,EAAE49B,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAjBgB,MAgC1B9oC,SAhC0B,EAiC1B8F,cAjC0B,CAA5B;AAmCD,CAzCD;;AA2CA,MAAM0jC,cAAc,GAA4B,CAC9CX,UAD8C,EAE9C7oC,SAF8C,EAG9C8oC,qBAH8C,EAI9ChjC,cAJ8C;AAM9C,SAAQmjC,qBAAqB,cAEtBJ,UAFsB;AAGzBnkC,IAAAA,IAAI,EAAE;AACJuI,MAAAA,KAAK,EAAE27B,0BAA0B,CAC/BC,UAD+B,EAE/B,YAF+B,EAG/BC,qBAH+B;;AAAA;AAD7B,KAHmB;AAWzBllC,IAAAA,MAAM,EAAE;AACNqJ,MAAAA,KAAK,EAAE27B,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAON99B,MAAAA,KAAK,EAAE49B,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAXiB,MA0B3B9oC,SA1B2B,EA2B3B8F,cA3B2B,CAA7B;AA6BD,CAnCD;;AAqCA,MAAM2jC,mBAAmB,GAAiC,CACxDZ,UADwD,EAExD7oC,SAFwD,EAGxD8oC,qBAHwD,EAIxDhjC,cAJwD;AAMxD,SAAOmjC,qBAAqB,cAErBJ,UAFqB;AAGxBp5B,IAAAA,SAAS,EAAEm5B,0BAA0B,CACnCC,UADmC,EAEnC,WAFmC,EAGnCC,qBAHmC;;AAAA;AAHb,MAU1B9oC,SAV0B,EAW1B8F,cAX0B,CAA5B;AAaD,CAnBD;;AAqBA,MAAa4jC,kBAAkB,GAAG,CAChC5jC,cADgC,EAEhC9F,SAFgC,EAGhC8oC,qBAHgC,EAIhCD,UAJgC;AAMhC,MAAI7iC,sBAAsB,CAACF,cAAD,CAA1B,EAA4C;AAC1C,WAAOA,cAAP;AACD;;AAED,MAAI/B,eAAe,CAAC8kC,UAAD,CAAnB,EAAiC;AAC/B,WAAOY,mBAAmB,CACxBZ,UADwB,EAExB7oC,SAFwB,EAGxB8oC,qBAHwB,EAIxBhjC,cAJwB,CAA1B;AAMD;;AAED,MAAIvC,eAAe,CAACslC,UAAD,CAAnB,EAAiC;AAC/B,WAAOK,iBAAiB,CACtBL,UADsB,EAEtB7oC,SAFsB,EAGtB8oC,qBAHsB,EAItBhjC,cAJsB,CAAxB;AAMD;;AAED,MAAIxC,sBAAsB,CAACulC,UAAD,CAA1B,EAAwC;AACtC,WAAOQ,sBAAsB,CAC3BR,UAD2B,EAE3B7oC,SAF2B,EAG3B8oC,qBAH2B,EAI3BhjC,cAJ2B,CAA7B;AAMD;;AAED,MAAI1C,iBAAiB,CAACylC,UAAD,CAArB,EAAmC;AACjC,WAAOS,gBAAgB,CACrBT,UADqB,EAErB7oC,SAFqB,EAGrB8oC,qBAHqB,EAIrBhjC,cAJqB,CAAvB;AAMD;;AAED,MAAI7C,eAAe,CAAC4lC,UAAD,CAAnB,EAAiC;AAC/B,WAAOU,mBAAmB,CACxBV,UADwB,EAExB7oC,SAFwB,EAGxB8oC,qBAHwB,EAIxBhjC,cAJwB,CAA1B;AAMD;;AAED,MAAIjC,cAAc,CAACglC,UAAD,CAAlB,EAAgC;AAC9B,WAAOW,cAAc,CACnBX,UADmB,EAEnB7oC,SAFmB,EAGnB8oC,qBAHmB,EAInBhjC,cAJmB,CAArB;AAMD;;AAED,SAAO,IAAP;AACD,CAjEM;AAmEP,SAAgB6jC,sBACdriC,eACAsiC,eACArxC;AAEA,MAAIsxC,QAAJ;AACA,MAAItF,kBAAJ;;AAEA,MAAIrmC,YAAY,CAAC3F,KAAD,CAAhB,EAAyB;AACvB,QAAIA,KAAK,CAAC4G,IAAN,IAAc5G,KAAK,CAAC6G,EAAxB,EAA4B;AAC1ByqC,MAAAA,QAAQ,GAAG,CAACtxC,KAAK,CAAC4G,IAAP,EAAuB5G,KAAK,CAAC6G,EAA7B,CAAX;AACAmlC,MAAAA,kBAAkB,GAAGxS,0BAAkB,CAACiP,OAAxC;AACD,KAHD,MAGO,IAAIzoC,KAAK,CAAC4G,IAAV,EAAgB;AACrB0qC,MAAAA,QAAQ,GAAGtxC,KAAK,CAAC4G,IAAjB;AACAolC,MAAAA,kBAAkB,GAAGxS,0BAAkB,CAACsO,QAAxC;AACD,KAHM,MAGA,IAAI9nC,KAAK,CAAC6G,EAAV,EAAc;AACnByqC,MAAAA,QAAQ,GAAGtxC,KAAK,CAAC6G,EAAjB;AACAmlC,MAAAA,kBAAkB,GAAGxS,0BAAkB,CAACoO,WAAxC;AACD;AACF,GAXD,MAWO;AACL0J,IAAAA,QAAQ,GAAGtxC,KAAK,CAACmO,WAAN,IAAqBnO,KAAK,CAAC+N,KAAtC;AACAi+B,IAAAA,kBAAkB,GAAGxS,0BAAkB,CAACmO,SAAxC;AACD;;AAED,SAAO,IAAI8F,eAAJ,CACLb,qBAAqB,CAAC;AACpB7mC,IAAAA,SAAS,EAAEgJ,aADS;AAEpB7G,IAAAA,IAAI,EAAEmpC,aAFc;AAGpBrF,IAAAA,kBAAkB,EAAEA,kBAHA;AAIpBhsC,IAAAA,KAAK,EAAEsxC;AAJa,GAAD,CADhB,EAOLjgC,QAPK,EAAP;AAQD;AAED,MAAakgC,0BAA0B,GAAG,CACxC/iC,MADwC,EAExCO,aAFwC,EAGxCsiC,aAHwC;AAKxC,QAAMrxC,KAAK,GAAGwO,MAAM,CAACA,MAAM,CAAC9O,MAAP,GAAgB,CAAjB,CAApB;AACA,MAAI8xC,eAAJ;;AAEA,MAAI7rC,YAAY,CAAC3F,KAAD,CAAhB,EAAyB;AACvBwxC,IAAAA,eAAe,GAAG,IAAI/D,eAAJ,CAChBb,qBAAqB,CAAC;AACpB7mC,MAAAA,SAAS,EAAEgJ,aADS;AAEpB7G,MAAAA,IAAI,EAAEmpC,aAFc;AAGpBrF,MAAAA,kBAAkB,EAAExS,0BAAkB,CAACuO,YAHnB;AAIpB/nC,MAAAA,KAAK,EAAGA,KAAoB,CAAC6G,EAArB,IAA4B7G,KAAoB,CAAC4G;AAJrC,KAAD,CADL,EAOhByK,QAPgB,EAAlB;AAQD,GATD,MASO;AACL,UAAM88B,UAAU,GAAG3/B,MAAM,CAAClN,GAAP,CAAW+qC,GAAG,IAC/B,IAAIoB,eAAJ,CACEb,qBAAqB,CAAC;AACpB7mC,MAAAA,SAAS,EAAEgJ,aADS;AAEpB7G,MAAAA,IAAI,EAAEmpC,aAFc;AAGpBrF,MAAAA,kBAAkB,EAAExS,0BAAkB,CAACkO,MAHnB;AAIpB1nC,MAAAA,KAAK,EAAGqsC,GAAmB,CAACl+B;AAJR,KAAD,CADvB,EAOEkD,QAPF,EADiB,CAAnB;AAWAmgC,IAAAA,eAAe,UAAQrD,UAAU,CAC9BhkC,MADoB,CACbvE,OADa,EAEpBiC,IAFoB,OAEX0xB,gCAAwB,CAAC0U,EAFd,OAAR,OAAf;AAGD;;AAED,SAAOuD,eAAP;AACD,CAnCM;AAqCP,MAAaC,wBAAwB,GAAG,CACtC1rC,SADsC,EAEtC2rC,UAFsC,EAGtC7F,WAHsC,EAItCh7B,KAJsC,EAKtC8gC,UALsC;AAOtC,QAAMC,KAAK,GAAG;AACZ7jC,IAAAA,KAAK,EAAE4jC,UADK;AAEZpkC,IAAAA,cAAc,EAAEmkC,UAAU,CAACrpC,YAFf;AAGZmpC,IAAAA,eAAe,EAAED,0BAA0B,CACzCG,UAAU,CAACljC,MAAX,CAAkBlN,GAAlB,CAAsB+qC,GAAG,IACvBwF,sBAAsB,CACpBxF,GAAG,CAACrsC,KADgB,EAEpB2xC,UAFoB,EAGpB,IAAI1rC,uBAAJ,CAA4BomC,GAAG,CAACnmC,SAAhC,CAHoB,CADxB,CADyC,EAQzCH,SAAS,CAACikB,IAR+B,EASzCjkB,SAAS,CAACmC,IAT+B;AAH/B,GAAd;AAgBA,QAAM4pC,KAAK,GAAGJ,UAAU,CAACljC,MAAX,CAAkBlN,GAAlB,CAAsBiuC,UAAU;AAC5C,UAAMhiC,cAAc,GAAGnF,iBAAiB,CAACmnC,UAAU,CAACvvC,KAAZ,CAAxC;AACA,UAAM6P,MAAM,GAAG;AAAEtC,MAAAA,cAAF;AAAkBxH,MAAAA;AAAlB,KAAf;;AAEA,QAAI8oC,gBAAgB,CAACU,UAAU,CAACrpC,SAAZ,CAApB,EAA4C;AAC1C,YAAMU,IAAI,GAAGgoC,yBAAyB,CAACW,UAAU,CAACrpC,SAAZ,EAAuB,CAAvB,CAAtC;AACA,YAAMW,EAAE,GAAG+nC,yBAAyB,CAACW,UAAU,CAACrpC,SAAZ,EAAuB,CAAvB,CAApC;AAEC2J,MAAAA,MAAqB,CAACjJ,IAAtB,GAA6BA,IAAI,GAC9BwkC,SAAS,CAACxkC,IAAD,CAAT,GACE,CAACA,IADH,GAEEirB,UAAU,CAACjrB,IAAD,CAHkB,GAI9B,IAJH;AAKAiJ,MAAAA,MAAqB,CAAChJ,EAAtB,GAA2BA,EAAE,GAC1BukC,SAAS,CAACvkC,EAAD,CAAT,GACE,CAACA,EADH,GAEEgrB,UAAU,CAAChrB,EAAD,CAHc,GAI1B,IAJH;AAMDgJ,MAAAA,MAAM,CAAC9B,KAAP,GAAe2hC,6BAA6B,CAC1CH,UAD0C,EAE1CxpC,SAF0C,EAG1C8lC,WAH0C,EAI1Ch7B,KAJ0C,CAA5C;AAOA,aAAOhB,MAAP;AACD;;AAEAA,IAAAA,MAAsB,CAAC1B,WAAvB,GAAqC09B,WAAW,GAC5CA,WAAW,CACV9lC,SAAS,CAACmC,IADA,EAEVqnC,UAAU,CAACvvC,KAFD,EAGV+F,SAAS,CAACipC,YAHA,CADiC,GAM7CO,UAAU,CAACvvC,KAAX,CAAiBqR,QAAjB,EANH;AAODxB,IAAAA,MAAM,CAAC9B,KAAP,GAAe0hC,qBAAqB,CAAC;AAAEvpC,MAAAA,SAAS,EAAEqpC,UAAU,CAACrpC;AAAxB,KAAD,CAApC;AACA2J,IAAAA,MAAM,CAAC2hC,eAAP,GAAyBJ,qBAAqB,CAC5CrrC,SAAS,CAACikB,IADkC,EAE5CjkB,SAAS,CAACmC,IAFkC,EAG5C2pC,sBAAsB,CACpBtC,UAAU,CAACvvC,KADS,EAEpB6P,MAAM,CAAC9B,KAFa,EAGpB,IAAI9H,uBAAJ,CAA4BspC,UAAU,CAACrpC,SAAvC,CAHoB,CAHsB,CAA9C;AAUA,WAAO2J,MAAP;AACD,GAhDa,CAAd;AAkDA,SAAO,CAAC,GAAGiiC,KAAJ,EAAWF,KAAX,CAAP;AACD,CA1EM;AA4EP,MAAaG,wBAAwB,GAAG,CACtChsC,SADsC,EAEtCupC,KAFsC,EAGtC0C,MAHsC,EAItCN,UAJsC,EAKtCtvC,MALsC,EAMtCypC,WANsC,EAOtCoG,YAPsC,EAQtCN,UARsC;AAUtC,QAAMC,KAAK,GAAG;AACZ7jC,IAAAA,KAAK,EAAE4jC,UADK;AAEZvvC,IAAAA,MAAM,EAAE+uC,kBAAkB,CACxBO,UAAU,CAACrpC,YADa,EAExBinC,KAFwB,EAGxB0C,MAHwB,EAIxB5vC,MAJwB,CAFd;AAQZovC,IAAAA,eAAe,EAAED,0BAA0B,CACzCG,UAAU,CAACljC,MAAX,CAAkBlN,GAAlB,CAAsB+qC,GAAG,IACvBwF,sBAAsB,CACpBxF,GAAG,CAACrsC,KADgB,EAEpB2xC,UAFoB,EAGpB,IAAI1rC,uBAAJ,CAA4BomC,GAAG,CAACnmC,SAAhC,CAHoB,CADxB,CADyC,EAQzCH,SAAS,CAACikB,IAR+B,EASzCjkB,SAAS,CAACmC,IAT+B;AAR/B,GAAd;AAqBA,QAAM4pC,KAAK,GAAGJ,UAAU,CAACljC,MAAX,CAAkBlN,GAAlB,CAAsB,CAACiuC,UAAD,EAAa1+B,KAAb;AAClC,UAAMhB,MAAM,GAAG;AACbzN,MAAAA,MAAM,EAAE+uC,kBAAkB,CACxB5B,UAAU,CAACvvC,KADa,EAExBsvC,KAFwB,EAGxB0C,MAHwB,EAIxB5vC,MAJwB;AADb,KAAf;AASAyN,IAAAA,MAAM,CAAC9B,KAAP,GAAe8gC,gBAAgB,CAACU,UAAU,CAACrpC,SAAZ,CAAhB,GACXwpC,6BAA6B,CAC3BH,UAD2B,EAE3BxpC,SAF2B,EAG3B8lC,WAH2B,EAI3BoG,YAJ2B,CADlB,GAOXxC,qBAAqB,CAAC;AAAEvpC,MAAAA,SAAS,EAAEqpC,UAAU,CAACrpC;AAAxB,KAAD,CAPzB;AASA2J,IAAAA,MAAM,CAAC2hC,eAAP,GAAyBJ,qBAAqB,CAC5CrrC,SAAS,CAACikB,IADkC,EAE5CjkB,SAAS,CAACmC,IAFkC,EAG5C2pC,sBAAsB,CACpBtC,UAAU,CAACvvC,KADS,EAEpB6P,MAAM,CAAC9B,KAFa,EAGpB,IAAI9H,uBAAJ,CAA4ByrC,UAAU,CAACljC,MAAX,CAAkBqC,KAAlB,EAAyB3K,SAArD,CAHoB,CAHsB,CAA9C;AAUA,WAAO2J,MAAP;AACD,GA9Ba,CAAd;AAgCA,SAAO,CAAC,GAAGiiC,KAAJ,EAAWF,KAAX,CAAP;AACD,CAhEM;AAsEP,MAAaM,oBAAoB,GAAG,CAClC9vC,MADkC,EAElC+vC,cAFkC,EAGlCthC,KAHkC;AAKlC,SAAOshC,cAAP,oBAAOA,cAAc,CAAEzjC,MAAhB,CAAuB,CAACmB,MAAD,EAAS6hC,UAAT;AAC5B,UAAMpC,KAAK,GAAIE,GAAG,CAChBptC,MADgB,EAEhBsvC,UAFgB,CAAlB;AAKA,WAAO,CAAApC,KAAK,QAAL,YAAAA,KAAK,CAAEpnC,IAAP,MAAgB,aAAhB,gBAAqC2H,MAArC;AAA6C,OAAC6hC,UAAD;AAAgB7gC,QAAAA;AAAhB,SAA0By+B,KAA1B;AAA7C,SAAmFz/B,MAA1F;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD,CAbM;AAeP,MAAauiC,aAAa,GACxB/C,SAD2B;;;AAG3B,MAAI,CAACA,SAAL,EAAgB,OAAO/9B,SAAP;;AAEhB,2BAAI+9B,SAAS,CAACtlC,KAAd,sCAAI,kBAAiBpJ,QAArB,aAAI,sBAA2BjB,MAA/B,EAAuC;AAAA;;AACrC,WAAO;AACL0C,MAAAA,MAAM,EAAE;AACN8F,QAAAA,IAAI,EAAE,aADA;AAENG,QAAAA,YAAY,EAAEgnC,SAAS,CAACtlC,KAAV,CAAgB3H,MAFxB;AAGN2L,QAAAA,KAAK,EAAE,IAHD;AAINS,QAAAA,MAAM,uBAAE6gC,SAAS,CAACtlC,KAAZ,qBAAE,kBAAiBpJ;AAJnB;AADH,KAAP;AAUD;;AAED,QAAMwxC,cAAc,GAAGlM,qBAAqB,CAACoJ,SAAS,CAAC7S,YAAX,CAA5C;;AAEA,MAAI,qBAAA6S,SAAS,CAACtlC,KAAV,+BAAiB3H,MAAjB,IAA2BqI,wBAAwB,CAAC4kC,SAAS,CAACtlC,KAAV,CAAgB3H,MAAjB,CAAvD,EAAiF;AAAA;;AAC/E,QAAI,2BAACitC,SAAS,CAACtlC,KAAV,CAAgB3H,MAAhB,CAAuBoM,MAAxB,aAAC,sBAA+B9O,MAAhC,CAAJ,EAA4C,OAAO4R,SAAP;AAE5C,WAAO+9B,SAAS,CAACtlC,KAAV,CAAgB3H,MAAhB,CAAuBoM,MAAvB,CAA8BE,MAA9B,CAAqC,CAACmB,MAAD,EAAyByV,QAAzB,EAA2DzU,KAA3D;AAC1C,0BAAYhB,MAAZ,EAAuBqiC,oBAAoB,CAAC5sB,QAAD,EAAW6sB,cAAX,EAA2BthC,KAA3B,CAA3C;AACD,KAFM,EAEJ,EAFI,CAAP;AAGD;;AAED,SAAOqhC,oBAAoB,sBAAC7C,SAAS,CAACtlC,KAAX,qBAAC,kBAAiB3H,MAAlB,EAA0B+vC,cAA1B,CAA3B;AACD,CA7BM;AA+BP,MAAaE,oBAAoB,GAAIjwC,MAAD;;;AAClC,SAAOmJ,gBAAgB,CAACnJ,MAAD,CAAhB,yBACDA,MAAM,CAACqT,UADN,qBACD,mBAAsCd,WADrC,GAEDvS,MAAsB,CAACuS,WAF7B;AAGD,CAJM;AAMP,MAAa87B,sBAAsB,GAAG,CACpCruC,MADoC,EAEpCqF,SAFoC;AAIpC,MAAI6qC,mBAAmB,GAAG,EAA1B;AAEAhqC,EAAAA,qBAAqB,CAAEiF,cAAD;AACpB+kC,IAAAA,mBAAmB,GAAG/kC,cAAtB;AACD,GAFoB,CAArB,CAEGnL,MAFH,EAEWqF,SAFX;AAIA,SAAO6qC,mBAAP;AACD,CAXM;AAaP,MAAaC,mBAAmB,GAAInwC,MAAD;AACjC,MAAI0R,IAAI,GAAG,CAAX;;AAEA,MAAIvI,gBAAgB,CAACnJ,MAAD,CAApB,EAA8B;AAC5B0R,IAAAA,IAAI,GAAG1L,iBAAiB,CAAChG,MAAM,CAAC0R,IAAR,CAAxB;AACD;;AAED,MAAIxI,cAAc,CAAClJ,MAAD,CAAlB,EAA4B;AAC1B0R,IAAAA,IAAI,GAAG1L,iBAAiB,CAAChG,MAAM,CAACskB,QAAR,CAAxB;AACD;;AAED,MAAI3b,sBAAsB,CAAC3I,MAAD,CAA1B,EAAoC;AAClC0R,IAAAA,IAAI,GAAGhC,IAAI,CAACD,GAAL,CACLzJ,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CADZ,EAELrK,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAFZ,CAAP;AAID;;AAED,MAAI1K,eAAe,CAAC5I,MAAD,CAAnB,EAA6B;AAC3B,UAAMuS,WAAW,GAAG09B,oBAAoB,CAACjwC,MAAD,CAAxC;AAEA0R,IAAAA,IAAI,GACF1L,iBAAiB,CAAChG,MAAM,CAAC0R,IAAR,CAAjB,IACCa,WAAW,GAAGvM,iBAAiB,CAACuM,WAAD,CAAjB,GAAiCgxB,iBAApC,GAAwD,CADpE,CADF;AAGD;;AAED,MAAI96B,iBAAiB,CAACzI,MAAD,CAArB,EAA+B;AAC7B0R,IAAAA,IAAI,GAAG1L,iBAAiB,CACtBqoC,sBAAsB,CAACruC,MAAD,EAAS,cAAT,CADA,CAAxB;AAGD;;AAED,SAAO0P,IAAI,CAACD,GAAL,CAAS6zB,0BAAT,EAAqC5xB,IAArC,CAAP;AACD,CAjCM;AAmCP,MAAa0+B,uBAAuB,GAAIpwC,MAAD;;;AACrC,MAAI,CAACA,MAAL,EAAa,OAAO,IAAP;AAEb,QAAMqwC,eAAe,GACjB,mBAAArwC,MAAM,CAAC6kB,MAAP,oCAAkC/P,SAAlC,KAA0D,IAD9D;AAEA,QAAMw7B,WAAW,GACb,wBAAAtwC,MAAM,CAACqT,UAAP,yCAAsCyB,SAAtC,KAA8D,IADlE;AAGA;AACEhP,IAAAA,IAAI,EAAE,gBADR;AAEE4L,IAAAA,IAAI,EAAE1R,MAAM,CAAC0R,IAFf;AAGE1G,IAAAA,MAAM,EAAEhL,MAAM,CAACgL,MAHjB;AAIE4Z,IAAAA,KAAK,EAAE5kB,MAAM,CAAC4kB;AAJhB,KAKM0rB,WAAW,GACX;AACEj9B,IAAAA,UAAU,EAAE;AACVohB,MAAAA,EAAE,EAAE,WADM;AAEV3f,MAAAA,SAAS,EAAEw7B,WAFD;AAGVj+B,MAAAA,WAAW,EACP,wBAAArS,MAAM,CAACqT,UAAP,yCAAsChB,WAAtC,KACF,IALQ;AAMVE,MAAAA,WAAW,EACR,wBAAAvS,MAAM,CAACqT,UAAP,yCAAsCd,WAAtC,KAAqD,IAP9C;AAQVzM,MAAAA,IAAI,EACD,wBAAA9F,MAAM,CAACqT,UAAP,yCAAsCvN,IAAtC,KAA8CkhC,mBAAW,CAACl8B;AATnD;AADd,GADW,GAcX,EAnBN,EAoBMulC,eAAe,GACf;AACExrB,IAAAA,MAAM,EAAE;AACN4P,MAAAA,EAAE,EAAE,eADE;AAEN3f,MAAAA,SAAS,EAAEu7B,eAFL;AAGNh+B,MAAAA,WAAW,EACP,oBAAArS,MAAM,CAAC6kB,MAAP,qCAAkCxS,WAAlC,KACF,IALI;AAMNE,MAAAA,WAAW,EACR,oBAAAvS,MAAM,CAAC6kB,MAAP,qCAAkCtS,WAAlC,KAAiD;AAP9C;AADV,GADe,GAWf,EA/BN;AAiCD,CAzCM;AA2CP,MAAMg+B,eAAe,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,aAAnB,EAAkC,cAAlC,CAAxB;AAEA,MAAaC,oBAAoB,GAAInrC,SAAD,IAClCkrC,eAAe,CAACrrC,QAAhB,CAAyBG,SAAzB,CADK;AAGP,MAAaorC,uBAAuB,GAClC/wC,KADqC;AAGrC,QAAMgxC,yBAAyB,GAAmC;AAChE9oB,IAAAA,IAAI,EAAE;AAD0D,GAAlE;AAIA,MAAI,CAACokB,cAAc,CAACtsC,KAAD,CAAf,IAA0B,EAAE,mBAAmBA,KAArB,CAA9B,EACE,OAAOgxC,yBAAP;AAEF,sBACKA,yBADL,EAEMhxC,KAAK,CAACixC,aAAN,IAAuB,EAF7B;AAID,CAdM;AAgBP;;AACA,MAAaC,kBAAkB,GAAG,UAA3B;AAEP;;AACA,MAAaC,yBAAyB,GAAG,KAAlC;AAEP,MAAaC,0BAA0B,GACrCpxC,KADwC;AAGxC,QAAMqxC,oBAAoB,GAAGN,uBAAuB,CAAC/wC,KAAD,CAApD;AACA,QAAMsxC,4BAA4B,GAA8B;AAC9DC,IAAAA,iBAAiB,EAAEL,kBAD2C;AAE9DM,IAAAA,WAAW,EAAEL,yBAFiD;AAG9DM,IAAAA,SAAS,EAAE;AAHmD,GAAhE;;AAMA,MACE,CAACJ,oBAAD,IACA,EAAE,6BAA6BA,oBAA/B,CAFF,EAGE;AACA,WAAOC,4BAAP;AACD;;AAED,sBACKA,4BADL,EAEOD,oBAA4D,CAC9DK,uBADE,IACyB,EAHhC;AAKD,CAtBM;AAwBP,MAAaC,kBAAkB,GAC7B3xC,KADgC;AAGhC,QAAM;AAAEuxC,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAqCJ,0BAA0B,CACnEpxC,KADmE,CAArE;AAIA,QAAM4xC,oBAAoB,GAAsB;AAC9Cpd,IAAAA,UAAU,EAAE,EADkC;AAE9C+c,IAAAA,iBAAiB,EAAEA,iBAF2B;AAG9CC,IAAAA,WAH8C;AAI9C9W,IAAAA,YAAY,EAAErF,gBAAY,CAAChB,OAJmB;AAK9C8C,IAAAA,cAAc,EAAE;AAL8B,GAAhD;;AAQA,MAAI,CAACmV,cAAc,CAACtsC,KAAD,CAAf,IAA0B,EAAE,qBAAqBA,KAAvB,CAA9B,EAA6D;AAC3D,WAAO4xC,oBAAP;AACD;;AAED,sBACKA,oBADL,EAEM5xC,KAAK,CAACu0B,eAAN,IAAyB,EAF/B;AAGEC,IAAAA,UAAU,EACRx0B,KAAK,CAACu0B,eAAN,CAAsBC,UAAtB,IAAoCod,oBAAoB,CAACpd;AAJ7D;AAMD,CAzBM;AA2BP,SAAgBqd,iBACd7xC,OACAiN;AAEA,QAAM;AAAEunB,IAAAA;AAAF,MAAiBmd,kBAAkB,CAAC3xC,KAAD,CAAzC;AACA,QAAMiE,SAAS,GAAGuwB,UAAU,CAACvnB,aAAD,CAA5B;AAEA,SAAOhJ,SAAS,GAAGA,SAAS,CAACmC,IAAb,GAAoB6tB,iBAAa,CAACI,OAAlD;AACD;AAED,MAAa0b,sBAAsB,GAAG,CACpCtkC,cADoC,EAEpCQ,KAFoC,EAGpC7H,SAHoC;AAKpCqH,EAAAA,cALoC;AAMpCQ,EAAAA;AANoC,GAOhC7H,SAAS,CAACM,QAAV,KACA;AACE2H,EAAAA,WAAW,EAAEjI,SAAS,CAACiI;AADzB,CADA,GAIA;AACEvH,EAAAA,IAAI,EAAEV,SAAS,CAACkI,KAAV,CAAgB,CAAhB,CADR;AAEEvH,EAAAA,EAAE,EAAEX,SAAS,CAACkI,KAAV,CAAgB,CAAhB;AAFN,CAXgC,CAA/B;;MCvlCMwlC,YAAY,GAAG,CAACxxC,MAAD,EAAyByxC,UAAzB,EAA+C9J,YAA/C;AAC1B,QAAM+J,oBAAoB,GAAGprB,YAAM,CAAqB,IAArB,CAAnC;AACA,QAAMmhB,YAAY,GAAGjpC,aAAO,CAAC,MAAMmzC,UAAG,EAAV,EAAc,EAAd,CAA5B;AAEA,QAAMC,OAAO,GAAGj0C,iBAAW,CAAC;AAC1B8pC,IAAAA,YAAY,CAACoK,KAAb,CAAmBH,oBAAoB,CAACn0C,OAAxC;AACD,GAF0B,EAExB,CAACkqC,YAAD,CAFwB,CAA3B;AAIA,QAAMqK,UAAU,GAAGn0C,iBAAW,CAAC,MAAM8pC,YAAY,CAAChpB,GAAb,EAAP,EAA2B,CAACgpB,YAAD,CAA3B,CAA9B;AAEA,QAAMsK,aAAa,GAAGp0C,iBAAW,CAC/B;QAAC;AACC8gB,MAAAA,GADD;AAECipB,MAAAA,EAFD;AAGCsK,MAAAA,SAHD;AAICrK,MAAAA;AAJD;AAWCH,IAAAA,mBAAmB,CAAC;AAClBC,MAAAA,YADkB;AAElBznC,MAAAA,MAAM,EAAEgyC,SAAS,IAAIhyC,MAFH;AAGlBye,MAAAA,GAHkB;AAIlBipB,MAAAA,EAJkB;AAKlBC,MAAAA;AALkB,KAAD,CAAnB;AAOD,GAnB8B,EAoB/B,CAACF,YAAD,EAAeznC,MAAf,CApB+B,CAAjC;AAuBA,QAAMiyC,mBAAmB,GAAGt0C,iBAAW,CACrC,CAACu0C,KAAD,EAA8Bt0C,KAA9B;;;AACE,UAAM;AAAE+mB,MAAAA,IAAF;AAAQ3Z,MAAAA;AAAR,QAAmBhL,MAAzB;AACA,UAAMkvC,QAAQ,GAAGtxC,KAAK,YAAYoR,WAAjB,GAAyBpR,KAAK,CAACqR,QAAN,CAAe,MAAf,CAAzB,GAAkDrR,KAAnE;;AAEA,UAAMo0C,SAAS,gBACVG,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeryC,MAAf,CAAX,CADU;AAEbgL,MAAAA,MAAM,EAAEymC,UAAU,GACd9N,qBADc,GAEd6M,oBAAoB,CAAC0B,KAAD,CAApB,GACAztB,uBAAuB,CAACzZ,MAAD,CADvB,GAEAA;AANS,MAAf;;AASA,QAAIknC,KAAK,CAAChqB,OAAN,CAAc,GAAd,MAAuB,CAAC,CAA5B,EAA+B;AAAA;;AAC7B,YAAMgkB,KAAK,GAAGgG,KAAK,CAAC5sC,KAAN,CAAY,GAAZ,CAAd;;AAEA,+BAAI0sC,SAAS,CAAC9F,KAAK,CAAC,CAAD,CAAN,CAAb,aAAI,kBAAsBA,KAAK,CAAC,CAAD,CAA3B,CAAJ,EAAqC;AACnC8F,QAAAA,SAAS,CAAC9F,KAAK,CAAC,CAAD,CAAN,CAAT,CAAoBA,KAAK,CAAC,CAAD,CAAzB,IAAgCgD,QAAhC;AACD,OAFD,MAEO;AACL8C,QAAAA,SAAS,CAAC9F,KAAK,CAAC,CAAD,CAAN,CAAT,gBACK8F,SAAS,CAAC9F,KAAK,CAAC,CAAD,CAAN,CADd;AAEE,WAACA,KAAK,CAAC,CAAD,CAAN,GAAYgD;AAFd,WAGMhD,KAAK,CAAC,CAAD,CAAL,KAAa,YAAb,GACA;AAAEpmC,UAAAA,IAAI,EAAEksC,SAAS,CAAC3+B,UAAV,CAAqBvN,IAA7B;AAAmC2uB,UAAAA,EAAE,EAAE;AAAvC,SADA,GAEAyX,KAAK,CAAC,CAAD,CAAL,KAAa,QAAb,GACA;AAAEzX,UAAAA,EAAE,EAAE;AAAN,SADA,GAEA,EAPN;AASD;AACF,KAhBD,MAgBO;AACLud,MAAAA,SAAS,CAACE,KAAD,CAAT,GAAmBhD,QAAnB;AACD;;AAED6C,IAAAA,aAAa,CAAC;AACZtzB,MAAAA,GAAG,EAAEzY,iBAAiB,CAAC2e,IAAD,CADV;AAEZqtB,MAAAA,SAFY;AAGZtK,MAAAA,EAAE,2BAAEsK,SAAS,CAAC3+B,UAAZ,qBAAE,sBAAsBvN,IAHd;AAIZ6hC,MAAAA;AAJY,KAAD,CAAb;AAOA,wBAAYqK,SAAZ;AAAuBrtB,MAAAA,IAAI,EAAE8iB,YAAY,CAAChpB,GAAb;AAA7B;AACD,GA1CoC,EA2CrC,CAACgpB,YAAD,EAAesK,aAAf,EAA8BN,UAA9B,EAA0CzxC,MAA1C,CA3CqC,CAAvC;AA8CA,SAAO;AACLsyC,IAAAA,MAAM,EAAEZ,oBADH;AAELE,IAAAA,OAFK;AAGLE,IAAAA,UAHK;AAILC,IAAAA,aAJK;AAKLE,IAAAA;AALK,GAAP;AAOD,CAtFM;;;ACPP,MAAMM,kBAAkB,gBAAGrY,eAAM,CAACC,GAAV,oHAAxB;AAIA,MAAMqY,cAAc,gBAAGtY,eAAM,CAACC,GAAV,wUAUhB;AAAA,MAAC;AAAEsY,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEC,UAAf,CAAD,sBAA8CD,YAAY,CAACC,UAD3D;AAAA,CAVgB,EAYhB;AAAA,MAAC;AAAED,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEE,UAAf,CAAD,sBAA8CF,YAAY,CAACE,UAD3D;AAAA,CAZgB,EAchB;AAAA,MAAC;AAAEF,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEG,SAAf,CAAD,qBAA4CH,YAAY,CAACG,SADzD;AAAA,CAdgB,EAgBhB;AAAA,MAAC;AAAEH,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEI,SAAf,CAAD,gBAAuCJ,YAAY,CAACI,SADpD;AAAA,CAhBgB,EAkBhB;AAAA,MAAC;AAAEJ,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEK,QAAf,CAAD,qBAEE,OAAOL,YAAY,CAACK,QAApB,KAAiC,QAAjC,GACIL,YAAY,CAACK,QADjB,GAEOL,YAAY,CAACK,QAFpB,OAFF,CADA;AAAA,CAlBgB,EAyBhB;AAAA,MAAC;AAAEL,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEM,SAAf,CAAD,IACA,CAAC,EAACN,YAAD,YAACA,YAAY,CAAEO,SAAf,CADD,8BAEwBP,YAAY,CAACO,SAFrC,WAEoDP,YAAY,CAACM,SAFjE,MADA;AAAA,CAzBgB,CAApB;AAgCA,MAAaE,SAAS,gBAAuBC,UAAI,CAC/C;MAAC;AAAEz0B,IAAAA,GAAF;AAAOipB,IAAAA,EAAP;AAAW1nC,IAAAA,MAAX;AAAmB2L,IAAAA,KAAnB;AAA0BwnC,IAAAA,IAA1B;AAAgCV,IAAAA,YAAhC;AAA8ChB,IAAAA,UAA9C;AAA0D9J,IAAAA,YAA1D;AAAwEpa,IAAAA;AAAxE;AACC,QAAM;AAAE+kB,IAAAA,MAAF;AAAUV,IAAAA,OAAV;AAAmBE,IAAAA,UAAnB;AAA+BC,IAAAA;AAA/B,MAAiDP,YAAY,CACjExxC,MADiE,EAEjEyxC,UAFiE,EAGjE9J,YAHiE,CAAnE;AAMA,QAAMyL,cAAc,GAAGz1C,iBAAW,CAAC;AACjC4vB,IAAAA,OAAO,QAAP,YAAAA,OAAO,CAAGukB,UAAU,EAAb,eACF9xC,MADE,EAED0nC,EAAE,GACF;AACEr0B,MAAAA,UAAU,eACJrT,MAAM,CAACqT,UADH;AAERvN,QAAAA,IAAI,EAAE4hC;AAFE;AADZ,KADE,GAOF,EATC,EAAP;AAWD,GAZiC,EAY/B,CAACA,EAAD,EAAKoK,UAAL,EAAiBvkB,OAAjB,EAA0BvtB,MAA1B,CAZ+B,CAAlC;AAcA,QAAMqzC,YAAY,GAAG70C,aAAO,CAC1B,MACEC,4BAAA,CAACgiC,YAAD;AACEla,IAAAA,GAAG,EAAE+rB;AACL3mC,IAAAA,KAAK,EAAEA;AACP4hB,IAAAA,OAAO,EAAEA,OAAO,GAAG6lB,cAAH,GAAoBlkC;GAHtC,CAFwB,EAQ1B,CAACojC,MAAD,EAAS3mC,KAAT,EAAgB4hB,OAAhB,EAAyB6lB,cAAzB,CAR0B,CAA5B;AAWA9vC,EAAAA,eAAS,CAAC;AACRsuC,IAAAA,OAAO;AACR,GAFQ,EAEN,CAACA,OAAD,CAFM,CAAT;AAIAtuC,EAAAA,eAAS,CAAC;AACRyuC,IAAAA,aAAa,CAAC;AAAEtzB,MAAAA,GAAF;AAAOipB,MAAAA,EAAP;AAAWsK,MAAAA,SAAS,EAAEhyC,MAAtB;AAA8B2nC,MAAAA;AAA9B,KAAD,CAAb;AACD,GAFQ,EAEN,CAAClpB,GAAD,EAAMze,MAAN,EAAc0nC,EAAd,EAAkBqK,aAAlB,EAAiCpK,YAAjC,CAFM,CAAT;AAIA,SAAOwL,IAAI,GACT10C,4BAAA,CAAC8zC,kBAAD,MAAA,EACGc,YADH,EAEE50C,4BAAA,CAAC+zC,cAAD;AAAgBC,IAAAA,YAAY,EAAEA;GAA9B,EAA6CU,IAA7C,CAFF,EAGG,CAAC,EAACV,YAAD,YAACA,YAAY,CAAEM,SAAf,CAAD,IAA6B,CAAC,EAACN,YAAD,YAACA,YAAY,CAAEO,SAAf,CAA9B,IACCv0C,4BAAA,CAAC+zC,cAAD;AACEC,IAAAA,YAAY,eACPA,YADO;AAEVM,MAAAA,SAAS,EAAE7jC,SAFD;AAGV8jC,MAAAA,SAAS,EAAE9jC;AAHD;GADd,EAOGikC,IAPH,CAJJ,CADS,GAiBTE,YAjBF;AAmBD,CA5D8C,CAA1C;;MC9BMC,oBAAoB,GAK5B;;;MAAC;AAAEtzC,IAAAA,MAAF;AAAUyO,IAAAA,KAAV;AAAiBiD,IAAAA,IAAI,GAAG,EAAxB;AAA4BohC,IAAAA,QAAQ,GAAG;AAAvC;AACJ,QAAMnL,YAAY,GAAG9hC,sBAAsB,CACzC7F,MAAM,CAAC8U,SADkC,CAA3C;AAGA,QAAMy+B,iBAAiB,GAAG5L,YAAY,IAAIl5B,KAAK,KAAKS,SAApD;AAEA,QAAM4F,SAAS,GACby+B,iBAAiB,GACZ,0BAAAvzC,MAAM,CAAC8U,SAAP,CAAkD1I,MAAlD,CAAyDqC,KAAzD,4CACG7Q,KADH,KAEAoC,MAAM,CAAC8U,SAAP,CAAkD7O,YAHtC,GAIbjG,MAAM,CAAC8U,SALb;AAOA,QAAMzC,WAAW,GAAGs1B,YAAY,GAAG7yB,SAAH,GAAe9U,MAAM,CAACqS,WAAtD;AAEA,QAAMmhC,SAAS,GAAG;AAChB1tC,IAAAA,IAAI,EAAE,gBADU;AAEhB4L,IAAAA,IAFgB;AAGhB1G,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAHQ;AAIhB4Z,IAAAA,KAAK,EAAE,CAJS;AAKhBvR,IAAAA,UAAU,EAAE;AACVohB,MAAAA,EAAE,EAAE,WADM;AAEV3f,MAAAA,SAFU;AAGVzC,MAAAA,WAHU;AAIVE,MAAAA,WAAW,EAAE,CAJH;AAKVzM,MAAAA,IAAI,EAAE;AALI;AALI,GAAlB;AAcA,SACErH,4BAAA,CAACw0C,SAAD;AACEx0B,IAAAA,GAAG,EAAEmlB;AACL5jC,IAAAA,MAAM,EAAGwzC;AACT7L,IAAAA,YAAY,EAAEA;AACdwL,IAAAA,IAAI,EAAE;AACNV,IAAAA,YAAY,eACPzyC,MAAM,CAACyzC,WADA;AAEVX,MAAAA,QAAQ,EACLA,QAAkC,4BAAI9yC,MAAM,CAACyzC,WAAX,qBAAI,oBAAoBX,QAAxB;AAH3B;GALd,CADF;AAaD,CA/CM;;MCPMY,YAAY,GAMpB;MAAC;AAAE5tC,IAAAA,IAAF;AAAQ9F,IAAAA,MAAR;AAAgB0R,IAAAA,IAAhB;AAAsB+M,IAAAA,GAAtB;AAA2BgzB,IAAAA;AAA3B;AACJ,QAAMkC,aAAa,GAAGn1C,aAAO,CAAC,MAC5BC,4BAAA,CAACyiB,MAAD;AAAQlhB,IAAAA,MAAM,EAAEA;AAA0B0R,IAAAA,IAAI,EAAEA;GAAhD,CAD2B,EAE1B,CAAC1R,MAAD,EAAS0R,IAAT,CAF0B,CAA7B;;AAIA,UAAQ5L,IAAR;AACE,SAAK,gBAAL;AACE,aAAO2Y,GAAG,GACRhgB,4BAAA,CAACw0C,SAAD;AACEx0B,QAAAA,GAAG,EAAEA;AACL/M,QAAAA,IAAI,EAAEA;AACN+/B,QAAAA,UAAU,EAAEA;AACZzxC,QAAAA,MAAM,EAAEowC,uBAAuB,CAACpwC,MAAD;OAJjC,CADQ,GAQR2zC,aARF;;AAUF;AACE,aAAOA,aAAP;AAbJ;AAeD,CA1BM;;MCUMC,oBAAoB,gBAG5BV,UAAI,CAAC;MAAC;AAAElzC,IAAAA,MAAF;AAAUyO,IAAAA;AAAV;;AACT,MAAIrF,eAAe,CAACpJ,MAAD,CAAnB,EAA6B;AAC3B,WACEvB,4BAAA,CAAC4kC,sBAAD,MAAA,EACE5kC,4BAAA,CAAC60C,oBAAD;AACEtzC,MAAAA,MAAM,EAAEA;AACRyO,MAAAA,KAAK,EAAEA;KAFT,CADF,CADF;AAQD;;AAED,SACEhQ,4BAAA,CAACi1C,YAAD;AACE1zC,IAAAA,MAAM,EAAE6jB,iBAAiB,CAAC7jB,MAAD;AACzB0R,IAAAA,IAAI,EAAEy+B,mBAAmB,CAACnwC,MAAD,CAAnB,IAA+BsjC;AACrCx9B,IAAAA,IAAI,EAAE9F,MAAM,CAAC8F;AACb2Y,IAAAA,GAAG,EACDzY,iBAAiB,CACdhG,MAAyB,CAAC2kB,IADZ;AAInB8sB,IAAAA,UAAU;GATZ,CADF;AAaD,CAzBQ,CAHF;;ACPA,MAAMoC,mBAAmB,GAAiC;AAAA,MAAC;AAAEjf,IAAAA,SAAF;AAAakf,IAAAA,gBAAb;AAA+BC,IAAAA,kBAA/B;AAAmDC,IAAAA;AAAnD,GAAD;AAAA,SAC/Dv1C,4BAAA,wBAAA,MAAA,EACG,CAAC,CAACu1C,kBAAF,IACCv1C,4BAAA,CAAC8iC,kBAAD,MAAA,EACE9iC,4BAAA,CAACu+B,gBAAD;AAAYzP,IAAAA,OAAO,EAAEymB;GAArB,EACEv1C,4BAAA,CAACw1C,iCAAD,MAAA,CADF,CADF,CAFJ,EAQG,CAAC,CAACF,kBAAF,IACCt1C,4BAAA,CAAC8iC,kBAAD,MAAA,EACE9iC,4BAAA,CAACu+B,gBAAD;AACEkX,IAAAA,QAAQ,EAAE,CAACJ;AACXvmB,IAAAA,OAAO,EAAE,MAAMwmB,kBAAN,oBAAMA,kBAAkB,CAAGnf,SAAH;GAFnC,EAIEn2B,4BAAA,CAAC01C,0BAAD,MAAA,CAJF,CADF,CATJ,CAD+D;AAAA,CAA1D;;ACPA,MAAMC,qBAAqB,GAAG,CACnClgB,UADmC,EAEnCpwB,SAFmC;AAInC,MAAI,CAACA,SAAL,EAAgB,OAAO,IAAP;AAEhB,QAAM6I,aAAa,GAAG+oB,6BAA6B,CAAC5xB,SAAD,CAAnD;AAEA,MAAIH,SAAS,GAAmBuwB,UAAU,CAACpxB,IAAX,CAC9B;AAAA,QAAC;AAAE8kB,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,KAAKjb,aAAvB;AAAA,GAD8B,CAAhC;;AAIA,MAAI,CAAChJ,SAAL,EAAgB;AACd,QAAIgJ,aAAa,KAAK,OAAtB,EAA+B;AAC7BhJ,MAAAA,SAAS,GAAG;AACVikB,QAAAA,IAAI,EAAE,OADI;AAEVgP,QAAAA,KAAK,EAAE,YAFG;AAGV9wB,QAAAA,IAAI,EAAE6tB,iBAAa,CAAC4V;AAHV,OAAZ;AAKD,KAND,MAMO;AACL,aAAO,IAAP;AACD;AACF;;AAED,SAAO5lC,SAAP;AACD,CAzBM;;ACJA,MAAM0wC,cAAc,GAAG,CAC5BjF,eAD4B,EAE5BkF,aAF4B,KAGhB,CAAC,EAACA,aAAD,YAACA,aAAa,CAAEpvC,QAAf,CAAwBkqC,eAAxB,CAAD,CAHR;;ACKP,MAAMmF,YAAY,GAAG,CAACC,MAAD,EAAiB/lC,KAAjB;AACnB,QAAMgmC,QAAQ,GAAGD,MAAM,CAAClvC,KAAP,CAAa,GAAb,CAAjB;AAEA,SACE7G,4BAAA,CAACi2C,cAAD;AAAUvY,IAAAA,GAAG,EAAE1tB;GAAf,EACEhQ,4BAAA,CAACqhC,QAAD;AAAUn0B,IAAAA,KAAK,EAAE6oC;GAAjB,EACGC,QAAQ,CAAC,CAAD,CADX,EAEEh2C,4BAAA,CAACohC,oBAAD,MAAA,EAAuB4U,QAAQ,CAAC,CAAD,CAA/B,CAFF,CADF,EAKGhmC,KAAK,KAAK,CAAV,IAAehQ,4BAAA,CAACyhC,aAAD,MAAA,CALlB,CADF;AASD,CAZD;;AAcA,AAAO,MAAMyU,aAAa,GAAG;MAAC;AAC5BhpC,IAAAA,KAD4B;AAE5B8C,IAAAA,KAF4B;AAG5BE,IAAAA;AAH4B;;AAS5B,MAAI,CAAChD,KAAL,EAAY;AACV,WAAOlN,4BAAA,CAACqhC,QAAD,MAAA,EAAWhyB,IAAI,CAACe,CAAL,CAAO,OAAP,EAAgB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAhB,CAAX,CAAP;AACD;;AAED,QAAMymC,OAAO,GAAGjpC,KAAH,oBAAGA,KAAK,CAAErG,KAAP,CAAa,KAAb,CAAhB;AACA,QAAMuvC,cAAc,GAAG,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAEt3C,MAAT,MAAoB,CAA3C;;AAEA,MAAI,CAACqR,MAAD,IAAYF,KAAK,IAAIomC,cAAzB,EAA0C;AACxC,WAAOp2C,4BAAA,CAACqhC,QAAD;AAAUn0B,MAAAA,KAAK,EAAEA;KAAjB,EAAyBA,KAAzB,CAAP;AACD;;AAED,MAAI,CAAC8C,KAAD,IAAUomC,cAAd,EAA8B;AAC5B,WACEp2C,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACqhC,QAAD;AAAUn0B,MAAAA,KAAK,EAAC;KAAhB,UAAA,CADF,EAEElN,4BAAA,CAACyhC,aAAD,MAAA,CAFF,EAGGqU,YAAY,CAAC5oC,KAAD,CAHf,CADF;AAOD;;AAED,SAAOlN,4BAAA,wBAAA,MAAA,EAAGm2C,OAAO,CAAC11C,GAAR,CAAYq1C,YAAZ,CAAH,CAAP;AACD,CA/BM;;MCKMO,cAAc,GAA4B;;;MAAC;AACtD7H,IAAAA,SADsD;AAEtDqH,IAAAA,aAFsD;AAGtDS,IAAAA,kBAHsD;AAItDhB,IAAAA,kBAJsD;AAKtDtK,IAAAA;AALsD;AAOtD,MAAI,EAACwD,SAAD,gCAACA,SAAS,CAAEtlC,KAAZ,sCAAC,iBAAkBpJ,QAAnB,aAAC,sBAA4BjB,MAA7B,CAAJ,EAAyC,OAAO,IAAP;AAEzC,QAAM42B,UAAU,GAAGF,kBAAkB,CAACiZ,SAAS,CAAChZ,eAAX,CAArC;AAEA,SACEx1B,4BAAA,CAACmiC,kBAAD,MAAA,EACGqM,SAAS,CAACtlC,KAAV,CAAgBpJ,QAAhB,CAAyBW,GAAzB,CAA6B,CAACiuC,UAAD,EAAa1+B,KAAb;;;AAC5B,UAAM9K,SAAS,GAAGywC,qBAAqB,CACrClgB,UADqC,EAErCiZ,UAAU,CAACrpC,SAF0B,CAAvC;AAKA,QAAI,CAACH,SAAL,EAAgB,OAAO,IAAP;AAEhB,UAAMyrC,eAAe,GAAGJ,qBAAqB,CAC3CrrC,SAAS,CAACikB,IADiC,EAE3CjkB,SAAS,CAACmC,IAFiC,EAG3C2pC,sBAAsB,CACpBtC,UAAU,CAACntC,MADS,EAEpBmtC,UAAU,CAACxhC,KAFS,EAGpB,IAAI9H,uBAAJ,CAA4BspC,UAAU,CAACrpC,SAAvC,CAHoB,CAHqB,CAA7C;AAUA,UAAMkxC,UAAU,GAAGL,aAAa,CAAC;AAC/BhpC,MAAAA,KAAK,EAAE8gC,gBAAgB,CAACU,UAAU,CAACrpC,SAAZ,CAAhB,GACHwpC,6BAA6B,CAC3BH,UAD2B,EAI3BxpC,SAJ2B,EAK3B8lC,WAL2B,EAM3Bh7B,KAN2B,CAD1B,GASH4+B,qBAAqB,CAAC;AACpBvpC,QAAAA,SAAS,EAAEqpC,UAAU,CAACrpC,SADF;AAEpBH,QAAAA,SAFoB;AAGpB8lC,QAAAA;AAHoB,OAAD,CAVM;AAe/Bh7B,MAAAA,KAf+B;AAgB/BE,MAAAA,MAAM,EACJ,0BAAAylC,qBAAqB,CAAClgB,UAAD,EAAaiZ,UAAU,CAACrpC,SAAxB,CAArB,2CAAyDgC,IAAzD,MACA;AAlB6B,KAAD,CAAhC;AAqBA,WACErH,4BAAA,CAAC2hC,cAAD;AACEjE,MAAAA,GAAG,EAAE1tB;AACL4xB,MAAAA,QAAQ,EAAEgU,cAAc,CACtBjF,eADsB,EAEtBkF,aAFsB,oBAEtBA,aAAa,CAAGrH,SAAS,CAACrlB,IAAb,CAFS;AAIxB2F,MAAAA,OAAO,EAAE,MACPwnB,kBADO,oBACPA,kBAAkB,CAAG9H,SAAS,CAACrlB,IAAb,EAAmBwnB,eAAnB;KAPtB,EAUE3wC,4BAAA,CAAC0hC,eAAD,MAAA,EACE1hC,4BAAA,CAACm1C,oBAAD;AACE5zC,MAAAA,MAAM,EAAEmtC,UAAU,CAACntC;KADrB,CADF,CAVF,EAeGg1C,UAfH,EAgBEv2C,4BAAA,CAACo1C,mBAAD;AAAqBjf,MAAAA,SAAS,EAAEqY,SAAS,CAACrlB;AAAMmsB,MAAAA,kBAAkB,EAAEA;KAApE,CAhBF,CADF;AAoBD,GA3DA,CADH,CADF;AAgED,CA3EM;;MCjBMkB,0BAA0B,GAGlC;MAAC;AAAE5vC,IAAAA,SAAF;AAAaoJ,IAAAA;AAAb;AACJ,QAAM;AAAEI,IAAAA;AAAF,MAAQqmC,2BAAc,CAAC,OAAD,CAA5B;AACA,QAAMtS,MAAM,GAAGlD,eAAe,CAAC,MAAD,EAASr6B,SAAT,CAA9B;AACA,QAAMy9B,aAAa,GAAGpD,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkCr6B,SAAlC,CAArC;AACA,QAAM8vC,aAAa,GAAGzV,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkCr6B,SAAlC,CAArC;AAEA,SACE5G,4BAAA,CAACqiC,6BAAD,MAAA,EACGgC,aAAa,IAAIqS,aAAjB,GACIrS,aAAa,GAAGj0B,CAAC,CAAC,aAAD,CAAJ,GAAsBA,CAAC,CAAC,aAAD,CADxC,GAEG+zB,MAAM,GAAG/zB,CAAC,CAAC,YAAD,CAAJ,GAAqBA,CAAC,CAAC,aAAD,CAHlC,EAIG,CAAC,CAACJ,KAAF,IAAWhQ,4BAAA,CAACsiC,cAAD,MAAA,EAAiBtyB,KAAjB,CAJd,CADF;AAQD,CAjBM;;ACgBP,MAAM2mC,uBAAuB,GAAG,CAACzpC,KAAD,EAAgB0pC,QAAhB;AAC9B,MAAI1pC,KAAK,CAACzG,QAAN,CAAe,KAAf,CAAJ,EAA2B;AACzB,UAAMuI,MAAM,GAAG9B,KAAH,oBAAGA,KAAK,CAAErG,KAAP,CAAa,KAAb,CAAf;AAEA,WAAO+vC,QAAQ,KAAK,KAAb,GAAqB5nC,MAArB,oBAAqBA,MAAM,CAAG,CAAH,CAA3B,GAAmCA,MAAnC,oBAAmCA,MAAM,CAAG,CAAH,CAAhD;AACD;;AAED,MAAI9B,KAAK,CAACzG,QAAN,CAAe,GAAf,CAAJ,EAAyB;AACvB,UAAMuI,MAAM,GAAG9B,KAAH,oBAAGA,KAAK,CAAErG,KAAP,CAAa,GAAb,CAAf;AAEA,WAAOmI,MAAM,CAAChI,IAAP,CAAY,IAAZ,CAAP;AACD;;AAED,SAAOkG,KAAK,CAACrG,KAAN,CAAY,GAAZ,EAAiBxC,IAAjB,CAAsBkmC,SAAtB,KAAoCr9B,KAApC,IAA6C,EAApD;AACD,CAdD;;AAgBA,MAAa2pC,eAAe,GAA6B;;;MAAC;AACxDC,IAAAA,QADwD;AAExDlU,IAAAA,OAFwD;AAGxDj1B,IAAAA,MAHwD;AAIxDT,IAAAA,KAJwD;AAKxDtG,IAAAA,SALwD;AAMxDivC,IAAAA;AANwD;AAQxD,QAAM;AAAEzlC,IAAAA;AAAF,MAAQqmC,2BAAc,CAAC,OAAD,CAA5B;AACA,QAAMM,aAAa,GAAG,CAAC,GAAGppC,MAAJ,CAAtB;AACA,QAAMojC,KAAK,GAAGgG,aAAa,CAACC,GAAd,EAAd;AACA,QAAM7S,MAAM,GAAGlD,eAAe,CAAC,MAAD,EAASr6B,SAAT,CAA9B;AACA,QAAMy9B,aAAa,GAAGpD,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkCr6B,SAAlC,CAArC;AACA,QAAMqwC,QAAQ,GAAGN,uBAAuB,oBAACI,aAAa,CAAC,CAAD,CAAd,qBAAC,gBAAkB7pC,KAAnB,EAA0B,KAA1B,CAAxC;AACA,QAAMgqC,QAAQ,GAAGP,uBAAuB,mBAACI,aAAa,CAACA,aAAa,CAACl4C,MAAd,GAAuB,CAAxB,CAAd,qBAAC,eAAyCqO,KAA1C,EAAiD,KAAjD,CAAxC;AAEA,QAAMiqC,aAAa,GAAGj4C,iBAAW,CAAEyxC,eAAD,IAA8BA,eAAe,GAC3EkF,aAD2E,oBAC3EA,aAAa,CAAE5oC,IAAf,CAAoB5H,SAAS,IAAIsrC,eAAe,CAAClqC,QAAhB,CAAyBpB,SAAzB,CAAjC,CAD2E,GAE3E,KAF6B,EAEtB,CAACwwC,aAAD,CAFsB,CAAjC;AAIA,SACE71C,4BAAA,CAAC6iC,wBAAD;AAA0B/a,IAAAA,GAAG,EAAEgvB;AAAUlU,IAAAA,OAAO,EAAEA;GAAlD,EACG,CAAC,CAAC11B,KAAF,IAAWlN,4BAAA,CAACojC,mBAAD,MAAA,EAAsBl2B,KAAtB,CADd,EAEGi3B,MAAM,GACLnkC,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAAC4jC,mBAAD,MAAA,EACE5jC,4BAAA,CAAC6jC,yBAAD,MAAA,EACE7jC,4BAAA,CAACokC,cAAD;AAAgBx9B,IAAAA,SAAS,EAAEA;AAAWu9B,IAAAA,MAAM;GAA5C,EACG4S,aAAa,CAACt2C,GAAd,CAAkB,CAACtB,KAAD,EAAQ6Q,KAAR,KACjBhQ,4BAAA,CAACwjC,aAAD;AACE9F,IAAAA,GAAG,OAAKv+B,KAAK,CAAC+N,KAAX,GAAmB8C;AACtB9C,IAAAA,KAAK,EAAE/N,KAAK,CAAC+N;AACb/N,IAAAA,KAAK,EAAEA,KAAK,CAACuN;AACb9F,IAAAA,SAAS,EAAEA;AACXg7B,IAAAA,QAAQ,EAAEuV,aAAa,CAACh4C,KAAK,CAACwxC,eAAP;GALzB,CADD,CADH,CADF,CADF,EAcE3wC,4BAAA,CAAC8jC,wBAAD,MAAA,EACE9jC,4BAAA,CAAC+jC,uBAAD,MAAA,sBAA0BgT,aAAa,CAAC,CAAD,CAAvC,qBAA0B,iBAAkB7pC,KAA5C,CADF,EAEElN,4BAAA,CAACgkC,qBAAD,MAAA,qBAAwB+S,aAAa,CAACA,aAAa,CAACl4C,MAAd,GAAuB,CAAxB,CAArC,qBAAwB,gBAAyCqO,KAAjE,CAFF,CAdF,CADF,EAoBElN,4BAAA,CAAC4jC,mBAAD,MAAA,EACE5jC,4BAAA,CAAC6jC,yBAAD,MAAA,EACE7jC,4BAAA,CAACokC,cAAD;AAAgBx9B,IAAAA,SAAS,EAAEA;AAAWu9B,IAAAA,MAAM;GAA5C,EACEnkC,4BAAA,CAACyjC,cAAD;AACEv2B,IAAAA,KAAK,EAAEkD,CAAC,CAAC,OAAD;AACRjR,IAAAA,KAAK,EAAE4xC,KAAF,oBAAEA,KAAK,CAAErkC;AACd9F,IAAAA,SAAS,EAAEA;AACXg7B,IAAAA,QAAQ,EAAEuV,aAAa,CAACpG,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CADF,CADF,CADF,EAWE3wC,4BAAA,CAAC8jC,wBAAD,MAAA,EACE9jC,4BAAA,CAACgkC,qBAAD,MAAA,EAAwB5zB,CAAC,CAAC,OAAD,CAAzB,CADF,CAXF,CApBF,CADK,GAqCHi0B,aAAa,GACfrkC,4BAAA,CAACokC,cAAD;AAAgBx9B,IAAAA,SAAS,EAAEA;AAAWy9B,IAAAA,aAAa;GAAnD,EACG0S,aAAa,CAACt2C,GAAd,CAAkB,CAACtB,KAAD,EAAQ6Q,KAAR,KACjBhQ,4BAAA,CAACwjC,aAAD;AACE9F,IAAAA,GAAG,OAAKv+B,KAAK,CAAC+N,KAAX,GAAmB8C;AACtB9C,IAAAA,KAAK,EAAE/N,KAAK,CAAC+N;AACb/N,IAAAA,KAAK,EAAEA,KAAK,CAACuN;AACb9F,IAAAA,SAAS,EAAEA;AACXg7B,IAAAA,QAAQ,EAAEuV,aAAa,CAACh4C,KAAK,CAACwxC,eAAP;GALzB,EAOG,CAAC,CAAC3gC,KAAD,IAAUA,KAAK,KAAK+mC,aAAa,CAACl4C,MAAd,GAAuB,CAA5C,KAAkDM,KAAK,CAAC+N,KAP3D,CADD,CADH,EAYElN,4BAAA,CAACyjC,cAAD;AACEv2B,IAAAA,KAAK,EAAEkD,CAAC,CAAC,OAAD;AACRjR,IAAAA,KAAK,EAAE4xC,KAAF,oBAAEA,KAAK,CAAErkC;AACd9F,IAAAA,SAAS,EAAEA;AACXg7B,IAAAA,QAAQ,EAAEuV,aAAa,CAACpG,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,EAMGvgC,CAAC,CAAC,OAAD,CANJ,CAZF,CADe,GAuBfpQ,4BAAA,CAACokC,cAAD;AAAgBx9B,IAAAA,SAAS,EAAEA;GAA3B,EACE5G,4BAAA,CAACukC,uBAAD,MAAA,EACGwS,aAAa,CAACt2C,GAAd,CAAkB,CAACtB,KAAD,EAAQ6Q,KAAR,KACjBhQ,4BAAA,CAACwjC,aAAD;AACE9F,IAAAA,GAAG,OAAKv+B,KAAK,CAAC+N,KAAX,GAAmB8C;AACtB9C,IAAAA,KAAK,EAAE/N,KAAK,CAAC+N;AACb/N,IAAAA,KAAK,EAAEA,KAAK,CAACuN;AACb9F,IAAAA,SAAS,EAAEA;AACXg7B,IAAAA,QAAQ,EAAEuV,aAAa,CAACh4C,KAAK,CAACwxC,eAAP;GALzB,CADD,CADH,CADF,EAYE3wC,4BAAA,CAACyjC,cAAD;AACEv2B,IAAAA,KAAK,EAAEkD,CAAC,CAAC,OAAD;AACRjR,IAAAA,KAAK,EAAE4xC,KAAF,oBAAEA,KAAK,CAAErkC;AACd9F,IAAAA,SAAS,EAAEA;AACXg7B,IAAAA,QAAQ,EAAEuV,aAAa,CAACpG,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CAZF,CA9DJ,EAkFG,QAAOI,KAAP,oBAAOA,KAAK,CAAErkC,cAAd,MAAiC,QAAjC,KAA8CuqC,QAAQ,IAAIC,QAA1D,KACCl3C,4BAAA,CAACwkC,eAAD,MAAA,EACExkC,4BAAA,CAACykC,oBAAD,MAAA,EACEzkC,4BAAA,MAAA,MAAA,EAAMi3C,QAAN,CADF,EAEEj3C,4BAAA,MAAA,MAAA,EAAMk3C,QAAN,CAFF,CADF,EAKEl3C,4BAAA,CAAC0kC,oBAAD,MAAA,KAAA,CALF,CAnFJ,CADF;AA8FD,CAlHM;;MCdM0S,eAAe,GAA6B;MAAC;AACxDN,IAAAA,QADwD;AAExDlU,IAAAA,OAFwD;AAGxDzM,IAAAA,SAHwD;AAIxD50B,IAAAA,MAAM,EAAE81C,aAJgD;AAKxDzwC,IAAAA,SALwD;AAMxD+G,IAAAA,MANwD;AAOxDqC,IAAAA,KAAK,EAAEohC,YAPiD;AAQxDZ,IAAAA,aARwD;AASxDqF,IAAAA,aATwD;AAUxDS,IAAAA;AAVwD;AAYxD,QAAMpmC,MAAM,GAAGsgC,aAAa,KAAK,UAAjC;AACA,QAAMrM,MAAM,GAAGlD,eAAe,CAC5B,MAD4B,EAE5Br6B,SAF4B,CAA9B;AAIA,QAAMy9B,aAAa,GAAGpD,eAAe,CACnC,CAAC,aAAD,EAAgB,cAAhB,CADmC,EAEnCr6B,SAFmC,CAArC;AAIA,QAAM8vC,aAAa,GAAGzV,eAAe,CACnC,CAAC,aAAD,EAAgB,cAAhB,CADmC,EAEnCr6B,SAFmC,CAArC;AAKA,QAAM8F,cAAc,GAAG3M,aAAO,CAC5B,MACG4uC,GAAG,CAAC0I,aAAD,EAAgBzwC,SAAhB,CAFsB,EAK5B,CAACywC,aAAD,EAAgBzwC,SAAhB,CAL4B,CAA9B;AAQA,QAAM0wC,YAAY,GAAGp4C,iBAAW,CAC9B,QAAqC8Q,KAArC;;;QAAC;AAAEzO,MAAAA,MAAF;AAAU2L,MAAAA,KAAV;AAAiByjC,MAAAA;AAAjB;AACC,QAAI,CAACpvC,MAAL,EAAa,OAAO,IAAP;AAEb,UAAMqJ,oBAAkB,GAAG2sC,kBAAwB,CAACh2C,MAAD,EAASqF,SAAT,CAAnD;AACA,UAAMzH,KAAK,GAAIoI,iBAAiB,CAC5BmF,cAD4B,6CAC5BA,cAAc,CAAEiB,MAAhB,CAAuBqC,KAAvB,CAD4B,qBAC5B,sBAA+B7Q,KADH,CAAjB,KAC8BuN,cAD9B,oBAC8BA,cAAc,CAAElF,YAD9C,CAAf;AAIA,WACExH,4BAAA,CAAC2hC,cAAD;AACEjE,MAAAA,GAAG,EAAE0T,YAAY,GAAGlkC,KAAf,GAAuB8C;AAC5B4xB,MAAAA,QAAQ,EAAEgU,cAAc,CAACjF,eAAD,EAAkBkF,aAAlB;AACxBjrC,MAAAA,kBAAkB,EAAEA;AACpBkkB,MAAAA,OAAO,EAAE,MAAMwnB,kBAAN,oBAAMA,kBAAkB,CAAGngB,SAAH,EAAcwa,eAAd;KAJnC,EAMGxM,MAAM,IAAIE,aAAV,IAA2BqS,aAA3B,GACC12C,4BAAA,CAACokC,cAAD;AACEx9B,MAAAA,SAAS,EAAEA;AACXu9B,MAAAA,MAAM,EAAEA;AACRE,MAAAA,aAAa,EAAEA;AACfqS,MAAAA,aAAa,EAAEA;AACfpS,MAAAA,QAAQ;KALV,EAOEtkC,4BAAA,CAACwjC,aAAD;AACE9F,MAAAA,GAAG,OAAKxwB,KAAL,GAAa8C;AAChB9C,MAAAA,KAAK,EAAEA;AACP/N,MAAAA,KAAK,EAAEA;AACPyH,MAAAA,SAAS,EAAEA;KAJb,CAPF,CADD,GAgBC5G,4BAAA,CAAC0hC,eAAD,MAAA,EACE1hC,4BAAA,CAACm1C,oBAAD;AACEnlC,MAAAA,KAAK,EAAEA;AACPzO,MAAAA,MAAM,EACJqJ,oBAAkB,GAAGysC,aAAH,GAAsCxsC,kBAAkB,CAACtJ,MAAD,EAAS,IAAT;KAH9E,CADF,CAtBJ,EA+BG20C,aAAa,CAAC;AAAEhpC,MAAAA,KAAF;AAAS8C,MAAAA,KAAT;AAAgBE,MAAAA;AAAhB,KAAD,CA/BhB,CADF;AAmCD,GA5C6B,EA6C9B,CACEtJ,SADF,EAEEwqC,YAFF,EAGEyE,aAHF,EAIE1R,MAJF,EAKEE,aALF,EAMEqS,aANF,EAOEhqC,cAPF,EAQE2qC,aARF,EASEnnC,MATF,EAUEomC,kBAVF,EAWEngB,SAXF,CA7C8B,CAAhC;AA4DA,SACEn2B,4BAAA,CAAC2iC,wBAAD;AAA0B7a,IAAAA,GAAG,EAAEgvB;AAAUlU,IAAAA,OAAO,EAAEA;GAAlD,EACGj1B,MAAM,CAAClN,GAAP,CAAW62C,YAAX,CADH,CADF;AAKD,CAnGM;;MCFME,aAAa,GAA2B;;;MAAC;AACpDrhB,IAAAA,SADoD;AAEpD50B,IAAAA,MAFoD;AAGpDqF,IAAAA,SAHoD;AAIpD6wC,IAAAA,UAJoD;AAKpD5G,IAAAA,UALoD;AAMpDgF,IAAAA,aANoD;AAOpDS,IAAAA,kBAPoD;AAQpDhB,IAAAA,kBARoD;AASpDC,IAAAA,kBAToD;AAUpDrwC,IAAAA,SAVoD;AAWpD8lC,IAAAA,WAXoD;AAYpDh7B,IAAAA,KAZoD;AAapD0nC,IAAAA;AAboD;AAepD,QAAM;AAAEtnC,IAAAA;AAAF,MAAQqmC,2BAAc,CAAC,OAAD,CAA5B;AACA,QAAM,CAACtT,UAAD,EAAawU,cAAb,IAA+Bzc,SAAS,EAA9C;AACA,QAAM,CAAC0c,MAAD,EAASC,OAAT,IAAoBvc,OAAO,EAAjC;AACA,QAAM,CAACwc,MAAD,EAASC,OAAT,IAAoBzc,OAAO,EAAjC;AAEA,MAAI,CAACnF,SAAD,IAAc,CAACjxB,SAAnB,EAA8B,OAAO,IAAP;AAE9B,QAAM8yC,aAAa,GAAGpuC,wBAAwB,CAACrI,MAAD,CAAxB,GACjBA,MAAiC,CAACoM,MAAlC,CAAyCqC,KAAzC,CADiB,GACsDzO,MAD5E;AAGA,SACEvB,4BAAA,CAAC+iC,yBAAD;AAA2BsS,IAAAA,gBAAgB,EAAE,CAAC,EAACQ,aAAD,qCAACA,aAAa,CAAG1f,SAAH,CAAd,aAAC,sBAA4Bt3B,MAA7B;GAA9C,EACEmB,4BAAA,CAACoiC,eAAD,MAAA,EACGl9B,SAAS,CAACizB,KAAV,IAAmBjzB,SAAS,CAACikB,IADhC,EAEEnpB,4BAAA,CAACo1C,mBAAD;AACEjf,IAAAA,SAAS,EAAEA;AACXkf,IAAAA,gBAAgB,EAAE,CAAC,EAACQ,aAAD,sCAACA,aAAa,CAAG1f,SAAH,CAAd,aAAC,uBAA4Bt3B,MAA7B;AACnBy2C,IAAAA,kBAAkB,EAAEA;AACpBC,IAAAA,kBAAkB,EAAEA;GAJtB,CAFF,CADF,EAUEv1C,4BAAA,CAACw2C,0BAAD;AACE5vC,IAAAA,SAAS,EAAEA;AACXoJ,IAAAA,KAAK,EAAE0nC,KAAK,IAAI1nC,KAAK,KAAKS,SAAnB,GAA+BinC,KAAK,GAAG1nC,KAAvC,GAA+C;GAFxD,CAVF,EAcEhQ,4BAAA,CAACgjC,qBAAD;AACEC,IAAAA,SAAS,EAAE8U,OAAF,oBAAEA,OAAO,CAAEE;AACpB/U,IAAAA,SAAS,EAAE2U,OAAF,oBAAEA,OAAO,CAAEI;AACpB9U,IAAAA,UAAU,EAAEA;GAHd,EAKEnjC,4BAAA,CAACo3C,eAAD;AACEN,IAAAA,QAAQ,EAAEc;AACVhV,IAAAA,OAAO,EAAEO;AACThN,IAAAA,SAAS,EAAEA;AACX50B,IAAAA,MAAM,EAAEy2C;AACRnC,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAG1f,SAAH;AAC5BmgB,IAAAA,kBAAkB,EAAEA;AACpB1vC,IAAAA,SAAS,EAAEA;AACX4pC,IAAAA,aAAa,EAAEtrC,SAAS,CAACmC;AACzB2I,IAAAA,KAAK,EAAEA;AACPrC,IAAAA,MAAM,EAAEujC,wBAAwB,CAC9BhsC,SAD8B,EAE9B0B,SAF8B,EAG9B6wC,UAH8B,EAI9B5G,UAJ8B,EAK9BmH,aAL8B,EAM9BhN,WAN8B,EAO9Bh7B,KAP8B,EAQ9BI,CAAC,CAAC,OAAD,CAR6B;GAVlC,CALF,EA0BEpQ,4BAAA,CAAC62C,eAAD;AACEC,IAAAA,QAAQ,EAAEgB;AACVlV,IAAAA,OAAO,EAAE,CAACO;AACV0S,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAG1f,SAAH;AAC5BvvB,IAAAA,SAAS,EAAEA;AACX+G,IAAAA,MAAM,EAAEijC,wBAAwB,CAC9B1rC,SAD8B,EAE9B2rC,UAF8B,EAG9B7F,WAH8B,EAI9Bh7B,KAJ8B,EAK9BI,CAAC,CAAC,OAAD,CAL6B;GALlC,CA1BF,CAdF,EAsDEpQ,4BAAA,CAAC2kC,qBAAD;AAAuB7V,IAAAA,OAAO,EAAE6oB;GAAhC,EACGxU,UAAU,GAAG/yB,CAAC,CAAC,MAAD,CAAJ,GAAeA,CAAC,CAAC,MAAD,CAD7B,CAtDF,CADF;AA4DD,CArFM;;;ACvBP,MAWa8nC,MAAM,gBAAoBzD,UAAI,CACzC;;;MAAC;AAAEjG,IAAAA,SAAF;AAAaxD,IAAAA,WAAb;AAA0B6K,IAAAA,aAA1B;AAAyCS,IAAAA,kBAAzC;AAA6DhB,IAAAA,kBAA7D;AAAiFC,IAAAA;AAAjF;MAAwG4C;;AACvG,MAAI,CAAC3J,SAAL,EAAgB,OAAO,IAAP;;AAEhB,0BAAIA,SAAS,CAACtlC,KAAd,sCAAI,iBAAiBpJ,QAArB,aAAI,sBAA2BjB,MAA/B,EAAuC;AACrC,WACEmB,4BAAA,CAACq2C,cAAD;AACE7H,MAAAA,SAAS,EAAEA;AACXxD,MAAAA,WAAW,EAAEA;AACb6K,MAAAA,aAAa,EAAEA;AACfS,MAAAA,kBAAkB,EAAEA;AACpBhB,MAAAA,kBAAkB,EAAEA;AACpBC,MAAAA,kBAAkB,EAAEA;KANtB,CADF;AAUD;;AAED,QAAM9f,UAAU,GAAGF,kBAAkB,CAACiZ,SAAS,CAAChZ,eAAX,CAArC;AAEA,QAAM4iB,WAAW,GAAGr4C,aAAO,CAAC;;;AAC1B,UAAM03C,UAAU,GAAGrS,qBAAqB,CAACoJ,SAAS,CAAC7S,YAAX,CAAxC;AACA,UAAMxgB,KAAK,GAAG;AACZgb,MAAAA,SAAS,EAAEqY,SAAS,CAACrlB,IADT;AAEZ5nB,MAAAA,MAAM,uBAAEitC,SAAS,CAACtlC,KAAZ,qBAAE,kBAAiB3H,MAFb;AAGZk2C,MAAAA,UAAU,EAAEA,UAHA;AAIZzM,MAAAA,WAAW,EAAEA,WAJD;AAKZ6K,MAAAA,aAAa,EAAEA,aALH;AAMZS,MAAAA,kBAAkB,EAAEA,kBANR;AAOZhB,MAAAA,kBAAkB,EAAEA,kBAPR;AAQZC,MAAAA,kBAAkB,EAAEA;AARR,KAAd;;AAWA,QAAI,qBAAA/G,SAAS,CAACtlC,KAAV,+BAAiB3H,MAAjB,IAA2BqI,wBAAwB,CAAC4kC,SAAS,CAACtlC,KAAV,CAAgB3H,MAAjB,CAAvD,EAAiF;AAAA;;AAC/E,YAAMoM,MAAM,wBAAG6gC,SAAS,CAACtlC,KAAb,8CAAG,kBAAiB3H,MAApB,+CAAG,sBAAyBoM,MAA5B,qBAAG,uBAAiCE,MAAjC,CAAwC,CAACmB,MAAD,EAASzN,MAAT,EAAiByO,KAAjB;AACrD,eAAO,CAACqhC,oBAAoB,CAAC9vC,MAAD,EAASk2C,UAAT,EAA4CznC,KAA5C,CAArB,EAA2F,GAAGhB,MAA9F,CAAP;AACD,OAFc,EAEZ,EAFY,CAAf;AAIA,aACEhP,4BAAA,wBAAA,MAAA,EACG2N,MADH,oBACGA,MAAM,CAAElN,GAAR,CAAY,CAACtB,KAAD,EAAQ6Q,KAAR,KAAkB3B,MAAM,CAACsB,IAAP,CAAYxQ,KAAZ,EAAmBsB,GAAnB,CAAuB,CAACguC,KAAD,EAAQ4J,QAAR;;;AACpD,cAAMrO,IAAI,GAAG7qC,KAAK,CAACsvC,KAAD,CAAlB;AAEA,eACEzuC,4BAAA,CAACw3C,aAAD;AACE9Z,UAAAA,GAAG,EAAE,CAAC2a,QAAD,EAAWroC,KAAX,EAAkBhJ,IAAlB,CAAuB,GAAvB;AACLgJ,UAAAA,KAAK,EAAEg6B,IAAF,oBAAEA,IAAI,CAAEh6B;AACb0nC,UAAAA,KAAK,EAAE/pC,MAAF,oBAAEA,MAAM,CAAE9O;AACfqG,UAAAA,SAAS,EAAEywC,qBAAqB,CAAClgB,UAAD,EAAauU,IAAb,qCAAaA,IAAI,CAAEr8B,MAAN,CAAa,CAAb,CAAb,qBAAa,cAAiBtI,SAA9B;AAChCuB,UAAAA,SAAS,EAAE6nC;AACXoC,UAAAA,UAAU,EAAE7G;WACR7uB,OACAg9B,KARN,CADF;AAYD,OAf8B,CAA9B,CADH,CADF;AAoBD;;AAED,UAAMtH,UAAU,GAAGU,aAAa,CAAC/C,SAAD,CAAhC;AAEA,QAAI,CAACqC,UAAL,EAAiB,OAAO,IAAP;AAEjB,WACE7wC,4BAAA,wBAAA,MAAA,EACGqO,MAAM,CAACsB,IAAP,CAAYkhC,UAAZ,EAAwBpwC,GAAxB,CAA4B,CAACguC,KAAD,EAAQ4J,QAAR;;;AAC3B,YAAMrO,IAAI,GAAG6G,UAAU,CAACpC,KAAD,CAAvB;AAEA,aACEzuC,4BAAA,CAACw3C,aAAD;AACE9Z,QAAAA,GAAG,EAAE,CAAC2a,QAAD,EAAWrO,IAAI,CAACh6B,KAAhB,EAAuBhJ,IAAvB,CAA4B,GAA5B;AACLgJ,QAAAA,KAAK,EAAEg6B,IAAI,CAACh6B;AACZ9K,QAAAA,SAAS,EAAEywC,qBAAqB,CAAClgB,UAAD,EAAauU,IAAb,sCAAaA,IAAI,CAAEr8B,MAAN,CAAa,CAAb,CAAb,qBAAa,eAAiBtI,SAA9B;AAChCuB,QAAAA,SAAS,EAAE6nC;AACXoC,QAAAA,UAAU,EAAE7G;SACR7uB,OACAg9B,KAPN,CADF;AAWD,KAdA,CADH,CADF;AAmBD,GA/D0B,EA+DxB,CAAC3J,SAAD,EAAYxD,WAAZ,EAAyB6K,aAAzB,EAAwCS,kBAAxC,EAA4DhB,kBAA5D,EAAgFC,kBAAhF,CA/DwB,CAA3B;AAiEA,SACEv1C,4BAAA,CAACmiC,kBAAD,MAAA,EACGiW,WADH,CADF;AAKD,CAzFwC,CAApC;;MCaM/3C,GAAG,GAAuB;MAAC;AACtCof,IAAAA,SADsC;AAEtC1c,IAAAA,QAFsC;AAGtCI,IAAAA,UAHsC;AAItCypB,IAAAA,QAJsC;AAKtCC,IAAAA,QALsC;AAMtC/sB,IAAAA,QANsC;AAOtCoqB,IAAAA,YAPsC;AAQtChhB,IAAAA;AARsC;AAUtC,QAAMsjB,UAAU,GAAGD,aAAa,EAAhC;AACA,QAAM;AAAE9rB,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAM0pB,gBAAgB,GAAGprB,iBAAW,CACjCi8B,KAAD;AACE,QAAIjR,YAAY,IAAI8D,oBAAoB,CAACvtB,GAAD,EAAM;AAAEsC,MAAAA,QAAF;AAAYI,MAAAA;AAAZ,KAAN,CAAxC,EAAyE;AACvE+mB,MAAAA,YAAY,CAACiR,KAAD,CAAZ;AACD;AACF,GALiC,EAMlC,CAAC16B,GAAD,EAAMypB,YAAN,EAAoBnnB,QAApB,EAA8BI,UAA9B,CANkC,CAApC;AASA4qB,EAAAA,gBAAgB,CAAC;AAAEhrB,IAAAA,QAAF;AAAYI,IAAAA;AAAZ,GAAD,CAAhB;AACAwpB,EAAAA,cAAc,CAACC,QAAD,EAAWC,QAAX,EAAqB9pB,QAArB,EAA+BI,UAA/B,CAAd;AAEA8mB,EAAAA,gBAAgB,CAACK,gBAAD,CAAhB;AAEA,SACEtqB,4BAAA,MAAA;AAAKyf,IAAAA,SAAS,EAAEA;AAAWqI,IAAAA,GAAG,EAAE0E;AAAYtjB,IAAAA,KAAK,EAAEA;GAAnD,EACGpJ,QADH,CADF;AAKD,CAhCM;;ACjBA,MAAMw4C,kBAAkB,GAA0B;AACvDz3B,EAAAA,OAAO,EAAEkY,oBAD8C;AAEvDl6B,EAAAA,MAAM,EAAEi6B;AAF+C,CAAlD;;ACiCP,MAAMyf,cAAc,GAAG,CAAvB;AACA,MAAMC,sBAAsB,GAAqB,CAACC,QAAD,EAAWA,QAAX,CAAjD;AAEA,IAAaC,sBAAb;AAAA;;AAAA;;AAUE,kCACEj4C,GADF,EAEEC,OAFF,EAGEywC,MAHF;;;;;AAKE,8BAAM1wC,GAAN,EAAW0wC,MAAX;;AAyLM,gBAAA,GAAS;AACf,YAAK3uB,IAAL,CAAU,QAAV;AACD,KAFO;;AAxLN,UAAK9hB,OAAL,GAAeA,OAAf;AACA,UAAKi4C,iBAAL,GAAyBxH,MAAM,CAACwH,iBAAhC;AACA,UAAKC,UAAL,GAAkBzH,MAAM,CAACyH,UAAP,IAAqBN,kBAAvC;AACA,UAAKO,UAAL,GAAkB1H,MAAM,CAAC0H,UAAzB;;AACA,UAAKruB,EAAL,CAAQ,UAAR,EAAoB,MAAKsuB,cAAzB;;;AAEA,UAAKtuB,EAAL,CAAQ,QAAR,EAAkB,MAAKuuB,cAAvB;;;AACD;;AAvBH;AAAA;AAAA,WAyBY,0BAAiBj3C,KAAjB;AACR,mGAAuBA,KAAvB;;AACA,WAAKk3C,oBAAL,CAA0Bl3C,KAA1B;AACD;AA5BH;AAAA;AAAA,WA8BY;AACR;;AACA,WAAKm3C,YAAL;AACA,WAAKlf,SAAL,CAAe,SAAf;AACD;AAlCH;AAAA;AAAA,WAoCY;AACR;;AACA,WAAKmf,gBAAL;AACA,WAAKC,eAAL;AACA,WAAKC,kBAAL;AACA,WAAKC,iBAAL;AACA,WAAKtf,SAAL,CAAe,SAAf;AACD;AA3CH;AAAA;AAAA,WA6CU;AACN,YAAMt1B,OAAO,GAAG,KAAKi2B,aAArB;AAEA,UAAI,CAACj2B,OAAL,EAAc;AACd,YAAM;AAAE+R,QAAAA,KAAF;AAAS3S,QAAAA;AAAT,UAA2BY,OAAjC;;AAEA,UAAIy0B,qBAAqB,CAAC1iB,KAAD,EAAQ,KAAK/V,GAAL,CAAS0C,UAAjB,CAAzB,EAAuD;AACrD,aAAKm2C,aAAL;AACA,aAAK92B,IAAL,CAAU,IAAI+2B,0BAAJ,CAAuB90C,OAAvB,EAAgC,IAAI+0C,UAAJ,CAAe,SAAf,CAAhC,CAAV;AAEA;AACD;;AAED,UAAIhjC,KAAK,CAAC,CAAD,CAAL,CAAS3X,MAAT,KAAoB,CAAxB,EAA2B;AACzB,cAAM46C,UAAU,GAAG51C,GAAG,CAAC61C,YAAJ,CAAiB56B,OAAjB,CAAnB;AACA,cAAM/c,KAAK,GAAGyU,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd;AACA,YAAI,CAACijC,UAAL,EAAiB;AACjB,cAAM,CAACE,GAAD,EAAMC,IAAN,IAAcH,UAAU,CAAC13C,KAAD,CAA9B;AAEA,aAAKo3C,eAAL;AACA,aAAKU,qBAAL;AACA,aAAKC,aAAL,CACKH,GAAG,CAACxkC,OAAJ,CAAYojC,cAAZ,CADL,UACqCqB,IAAI,CAACzkC,OAAL,CAAaojC,cAAb,CADrC,EAEEx2C,KAFF;AAID,OAZD,MAYO;AACL,aAAKm3C,gBAAL;AACD;AACF;AAzEH;AAAA;AAAA,WA2EU;AACN,UAAI,KAAKa,WAAT,EAAsB;AACpB,aAAKC,UAAL,IAAmB,KAAKA,UAAL,CAAgBvrB,MAAhB,CAAuB,KAAKsrB,WAA5B,CAAnB;AACD;;AAED,YAAMt1C,OAAO,GAAG,KAAKi2B,aAArB;AAEA,UAAI,CAACj2B,OAAL,EAAc;AACd,YAAM;AAAE+R,QAAAA,KAAF;AAAS3S,QAAAA;AAAT,UAAiBY,OAAvB;AACA,YAAMw1C,YAAY,GAAG,CAAC,GAAGzjC,KAAK,CAAC,CAAD,CAAT,CAArB;AAEAyjC,MAAAA,YAAY,CAACC,KAAb;AACA,WAAKH,WAAL,GAAmB,IAAI91B,eAAJ,CAAYg2B,YAAZ,EAA0B;AAAEp2C,QAAAA;AAAF,OAA1B,CAAnB;AACA,WAAKk2C,WAAL,CAAiBx4C,MAAjB,GAA0B,KAAKs3C,UAAL,IAAmB76B,iBAA7C;AAEA,WAAK0c,aAAL,IAAsB,KAAKA,aAAL,CAAmByf,IAAnB,EAAtB;AACA,WAAKH,UAAL,IAAmB,KAAKA,UAAL,CAAgBp4B,GAAhB,CAAoB,KAAKm4B,WAAzB,CAAnB;AACD;AA5FH;AAAA;AAAA,WA8FU;AACN,UAAI,KAAKA,WAAT,EAAsB;AACpB,aAAKC,UAAL,IAAmB,KAAKA,UAAL,CAAgBvrB,MAAhB,CAAuB,KAAKsrB,WAA5B,CAAnB;AACA,eAAO,KAAKA,WAAZ;AACD;AACF;AAnGH;AAAA;AAAA,WAqGU,wBAAej4C,KAAf;AACN,YAAM2C,OAAO,GAAG,KAAKi2B,aAArB;AACA,YAAM;AAAEjhB,QAAAA,SAAF;AAAa2gC,QAAAA;AAAb,UAA4Bt4C,KAAlC;AAEA,UAAI,CAAC2C,OAAD,IAAYgV,SAAS,KAAK,IAA1B,IAAkC2gC,UAAU,KAAK,IAArD,EAA2D;AAE3D,YAAM;AAAE5jC,QAAAA,KAAF;AAAS3S,QAAAA;AAAT,UAAiBY,OAAvB;AAEA,YAAM1B,QAAQ,GAAGyT,KAAK,CAACiD,SAAD,CAAL,CAAiB2gC,UAAjB,CAAjB;AACA,YAAMv7C,MAAM,GAAGw7C,eAAU,CAAC7jC,KAAD,EAAQ3S,GAAR,CAAzB;AACA,UAAI8W,OAAO,GAAG,KAAKi+B,UAAL,CAAgB/5C,MAAhB,CAAuBA,MAAvB,CAAd;;AAEA,UAAIq6B,qBAAqB,CAAC1iB,KAAD,EAAQ,KAAK/V,GAAL,CAAS0C,UAAjB,CAAzB,EAAuD;AACrD,aAAKm3C,cAAL;AAEA,cAAMthB,IAAI,GAAGuhB,aAAQ,CAAC/jC,KAAD,EAAQ3S,GAAR,CAArB;AAEA8W,QAAAA,OAAO,GAAG,KAAKi+B,UAAL,CAAgB/3B,OAAhB,CAAwBmY,IAAxB,EAA8Bn6B,MAA9B,CAAV;AACD,OAND,MAMO,IAAI,KAAKk7C,WAAT,EAAsB;AAC3Bt1C,QAAAA,OAAO,CAACX,IAAR;AACA,aAAKu1C,iBAAL;AACD;;AAED,UAAI,KAAKmB,kBAAT,EAA6B;AAC3B,aAAKA,kBAAL,CAAwBz3C,QAAxB,GAAmCA,QAAnC;AACA,aAAKy3C,kBAAL,CAAwB7/B,OAAxB,GAAkCA,OAAlC;AACD;AACF;AAhIH;AAAA;AAAA,WAkIU;AACN,WAAK8/B,SAAL,GAAiB,IAAIvrB,kBAAJ,CAAiBspB,sBAAjB,EAAyC;AACxD79B,QAAAA,OAAO,EAAE,0CAD+C;AAExD9W,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAF0C;AAGxDtC,QAAAA,MAAM,EAAE2Z,iBAAiB,CAAC;AACxBE,UAAAA,WAAW,EAAE,KAAKu9B;AADM,SAAD;AAH+B,OAAzC,CAAjB;AAOA,WAAKqB,UAAL,IAAmB,KAAKA,UAAL,CAAgBp4B,GAAhB,CAAoB,KAAK64B,SAAzB,CAAnB;AACD;AA3IH;AAAA;AAAA,WA6IU,uBAAc9/B,OAAd,EAA+B5X,QAA/B;AACN,WAAK23C,UAAL,GAAkB,IAAIxrB,kBAAJ,CAAiBnsB,QAAjB,EAA2B;AAC3C4X,QAAAA,OAD2C;AAE3C9W,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAF6B;AAG3CtC,QAAAA,MAAM,EAAE2Z,iBAAiB,CAAC;AACxBE,UAAAA,WAAW,EAAE,KAAKu9B,iBADM;AAExBt9B,UAAAA,OAAO,EAAE,KAAKs/B;AAFU,SAAD;AAHkB,OAA3B,CAAlB;AAQA,WAAKX,UAAL,IAAmB,KAAKU,UAAxB,IAAsC,KAAKV,UAAL,CAAgBp4B,GAAhB,CAAoB,KAAK84B,UAAzB,CAAtC;AACD;AAvJH;AAAA;AAAA,WAyJU;AACN,WAAKF,kBAAL,GAA0B,IAAItrB,kBAAJ,CAAiBspB,sBAAjB,EAAyC;AACjE30C,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GADmD;AAEjEtC,QAAAA,MAAM,EAAE2Z,iBAAiB,CAAC;AACxBE,UAAAA,WAAW,EAAE,KAAKu9B;AADM,SAAD;AAFwC,OAAzC,CAA1B;AAMA,WAAKqB,UAAL,IACE,KAAKQ,kBADP,IAEE,KAAKR,UAAL,CAAgBp4B,GAAhB,CAAoB,KAAK44B,kBAAzB,CAFF;AAGD;AAnKH;AAAA;AAAA,WAqKU;AACN,UAAI,KAAKC,SAAT,EAAoB;AAClB,aAAKT,UAAL,IAAmB,KAAKA,UAAL,CAAgBvrB,MAAhB,CAAuB,KAAKgsB,SAA5B,CAAnB;AACA,eAAO,KAAKA,SAAZ;AACD;AACF;AA1KH;AAAA;AAAA,WA4KU;AACN,UAAI,KAAKC,UAAT,EAAqB;AACnB,aAAKV,UAAL,IAAmB,KAAKA,UAAL,CAAgBvrB,MAAhB,CAAuB,KAAKisB,UAA5B,CAAnB;AACA,eAAO,KAAKA,UAAZ;AACD;AACF;AAjLH;AAAA;AAAA,WAmLU;AACN,UAAI,KAAKF,kBAAT,EAA6B;AAC3B,aAAKR,UAAL,IAAmB,KAAKA,UAAL,CAAgBvrB,MAAhB,CAAuB,KAAK+rB,kBAA5B,CAAnB;AACA,eAAO,KAAKA,kBAAZ;AACD;AACF;AAxLH;AAAA;AAAA,WA0LU,8BAAqB14C,KAArB;AACN,UAAI,KAAK24C,SAAT,EAAoB;AAClB,aAAKA,SAAL,CAAe13C,QAAf,GAA0BjB,KAAK,CAACC,KAAN,CAAYgB,QAAtC;AACD;AACF;AA9LH;AAAA;AAAA,WAgMU,mBAAUi3B,MAAV;AACN,YAAM;AAAE/3B,QAAAA;AAAF,UAAc,KAAKvB,OAAzB;;AAEA,UAAIuB,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAAlC,EAA4C;AAC1CA,QAAAA,OAAO,CAACiH,KAAR,CAAc8wB,MAAd,GAAuBA,MAAvB;AACD;AACF;AAtMH;;AAAA;AAAA,EAA4C4gB,+BAA5C;;ICpBaC,qBAAb;AAAA;;AAAA;;AAME,iCACEp6C,GADF,EAEEC,OAFF,EAGEywC,MAHF;;;;;AAKE,8BAAM1wC,GAAN,EAAW0wC,MAAX;;AAaM,uBAAA,GAAgB;AACtB,YAAM1sC,OAAO,GAAG,MAAKi2B,aAArB;AAEA,UAAI,CAACj2B,OAAL,EAAc,OAAO,IAAP;AAEd,YAAM;AAAE+R,QAAAA,KAAF;AAASskC,QAAAA,UAAT;AAAqBj3C,QAAAA;AAArB,UAA6BY,OAAnC;AACA,YAAMs2C,WAAW,GAAGvkC,KAAK,CAAC,CAAD,CAAL,CAAS3X,MAA7B;AACA,YAAMkE,QAAQ,GAAGyT,KAAK,CAAC,CAAD,CAAL,CAASukC,WAAW,GAAG,CAAvB,CAAjB;AAEA,YAAM/hB,IAAI,GAAGuhB,aAAQ,CAAC/jC,KAAD,EAAQ3S,GAAR,CAArB;AACA,YAAMhF,MAAM,GAAGw7C,eAAU,CAAC7jC,KAAD,EAAQ3S,GAAR,EAAai3C,UAAb,CAAzB;AACA,YAAMngC,OAAO,GAAGmgC,UAAU,GACtB,MAAKlC,UAAL,CAAgB/3B,OAAhB,CAAwBmY,IAAxB,EAA8Bn6B,MAA9B,CADsB,GAEtB,MAAK+5C,UAAL,CAAgB/5C,MAAhB,CAAuBA,MAAvB,CAFJ;AAIA,aAAO;AACL8b,QAAAA,OADK;AAEL5X,QAAAA;AAFK,OAAP;AAID,KAnBO;;AAmDA,uBAAA,GAAgB;AACtB,YAAKyf,IAAL,CAAU,QAAV;AACD,KAFO;;AA/DN,UAAK9hB,OAAL,GAAeA,OAAf;AACA,UAAKi4C,iBAAL,GAAyBxH,MAAM,CAACwH,iBAAhC;AACA,UAAKC,UAAL,GAAkBzH,MAAM,CAACyH,UAAP,IAAqBN,kBAAvC;;AACA,UAAK9tB,EAAL,CAAQ,QAAR,EAAkB,MAAKwwB,mBAAvB;;AACA,UAAKxwB,EAAL,CAAQ,MAAR,EAAgB,MAAKwwB,mBAArB;;;AACD;;AAjBH;AAAA;AAAA,WAmBY;AACR;;AACA,WAAKnB,qBAAL;AACD;AAtBH;AAAA;AAAA,WA6CU;AACN,YAAMoB,aAAa,GAAG,KAAKA,aAAL,EAAtB;AACA,UAAIA,aAAa,KAAK,IAAtB,EAA4B;AAE5B,YAAM;AAAEtgC,QAAAA,OAAF;AAAW5X,QAAAA;AAAX,UAAwBk4C,aAA9B;AAEA,WAAKT,kBAAL,GAA0B,IAAItrB,kBAAJ,CAAiBnsB,QAAjB,EAA2B;AACnD4X,QAAAA,OADmD;AAEnD9W,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAFqC;AAGnDtC,QAAAA,MAAM,EAAE2Z,iBAAiB,CAAC;AACxBG,UAAAA,OAAO,EAAE,KAAK6/B,aADU;AAExB9/B,UAAAA,WAAW,EAAE,KAAKu9B;AAFM,SAAD;AAH0B,OAA3B,CAA1B;AAQA,WAAKqB,UAAL,IAAmB,KAAKA,UAAL,CAAgBp4B,GAAhB,CAAoB,KAAK44B,kBAAzB,CAAnB;AACD;AA5DH;AAAA;AAAA,WA8DE;AACE,UAAI,KAAKA,kBAAT,EAA6B;AAC3B,cAAMS,aAAa,GAAG,KAAKA,aAAL,EAAtB;AAEA,YAAIA,aAAa,KAAK,IAAtB,EAA4B;AAE5B,cAAM;AAAEtgC,UAAAA,OAAF;AAAW5X,UAAAA;AAAX,YAAwBk4C,aAA9B;AAEA,aAAKT,kBAAL,CAAwB7/B,OAAxB,GAAkCA,OAAlC;AACA,aAAK6/B,kBAAL,CAAwBz3C,QAAxB,GAAmCA,QAAnC;AACD;AACF;AAzEH;;AAAA;AAAA,EAA2Co4C,qBAA3C;;ICIaC,WAAb;AAAA;;AAAA;;AAAA;;;;;;;AAoHE,uBAAA,GAAiBt5C,KAAD;AACd,YAAM2C,OAAO,GAAG,MAAK42C,UAAL,CAAgB,CAAC,GAAGv5C,KAAK,CAAC2C,OAAN,CAAc+R,KAAlB,CAAhB,CAAhB;;AAEA,YAAKvV,KAAL,IAAc,MAAKA,KAAL,CAAW2gB,GAAX,CAAend,OAAf,CAAd;;AACA,UAAI,MAAK62C,aAAT,EAAwB;AACtB,cAAKA,aAAL,CAAmB5gB,aAAnB,GAAmCj2B,OAAnC;AACD;;AACD,YAAK82C,UAAL,CAAgB,KAAhB,EAAuB,IAAvB;AACD,KARD;;AAUA,uBAAA,GAAgB;AACd,UAAI,MAAKD,aAAL,IAAsB,MAAKA,aAAL,CAAmB5gB,aAA7C,EAA4D;AAC1D,cAAKz5B,KAAL,IAAc,MAAKA,KAAL,CAAWwtB,MAAX,CAAkB,MAAK6sB,aAAL,CAAmB5gB,aAArC,CAAd;AACD;;AAED,YAAK6gB,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD,KAND;;AAQA,+BAAA,GAAwB;AACtBC,MAAAA,UAAU,CAAC;AACT,cAAKD,UAAL,CAAgB,KAAhB,EAAuB,KAAvB;;AACA,cAAKA,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD,OAHS,EAGP,EAHO,CAAV;AAID,KALD;;;AAUD;;AAhJD;AAAA;AAAA,WAKE;AACE,YAAM;AAAE96C,QAAAA,GAAF;AAAOC,QAAAA,OAAP;AAAgBi4C,QAAAA;AAAhB,UAAsC,KAAKx9B,KAAjD;AAEA,WAAKla,KAAL,GAAa,IAAIH,2BAAJ,EAAb;AACA,WAAK26C,cAAL,CAAoBh7C,GAApB,EAAyBC,OAAzB,EAAkCi4C,iBAAlC;AACA,WAAK+C,YAAL,CAAkBj7C,GAAlB,EAAuBC,OAAvB,EAAgCi4C,iBAAhC;AAEA,WAAKx9B,KAAL,CAAW1a,GAAX,CAAeg6B,QAAf,CAAwB,KAAKx5B,KAA7B;AACA,WAAKs6C,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD;AAdH;AAAA;AAAA,WAgBE;AACE,WAAKt6C,KAAL,IAAc,KAAKka,KAAL,CAAW1a,GAAX,CAAeipB,WAAf,CAA2B,KAAKzoB,KAAhC,CAAd;AACA,WAAKs6C,UAAL,CAAgB,KAAhB,EAAuB,KAAvB;AACA,WAAKI,SAAL;AACA,WAAKC,eAAL;AACD;AArBH;AAAA;AAAA,WAuBE,wBACEn7C,GADF,EAEEC,OAFF,EAGEi4C,iBAHF;AAKE,YAAM;AAAEkD,QAAAA,YAAF;AAAgBjD,QAAAA,UAAhB;AAA4BC,QAAAA;AAA5B,UAA2C,KAAK19B,KAAtD;AAEA,WAAK2gC,aAAL,GAAqB,IAAIpD,sBAAJ,CAA2Bj4C,GAA3B,EAAgCC,OAAhC,EAAyC;AAC5D45B,QAAAA,QAAQ,EAAE,KADkD;AAE5DyhB,QAAAA,YAAY,EAAE,IAF8C;AAG5Dx6C,QAAAA,MAAM,EAAEs6C,YAAY,IAAI99B,mBAHoC;AAI5D86B,QAAAA,UAJ4D;AAK5DmD,QAAAA,eAAe,EAAE,GAL2C;AAM5DrD,QAAAA,iBAN4D;AAO5DC,QAAAA,UAAU,EAAEA;AAPgD,OAAzC,CAArB;;AAUA,WAAKkD,aAAL,CAAmBtxB,EAAnB,CAAsB,eAAtB,EAAuC,KAAKyxB,aAA5C;AACA,WAAKH,aAAL,CAAmBtxB,EAAnB,CAAsB,QAAtB,EAAgC,KAAK0xB,qBAArC;AACD;AA1CH;AAAA;AAAA,WA4CE,sBACEz7C,GADF,EAEEC,OAFF,EAGEi4C,iBAHF;AAKE,YAAM;AAAEkD,QAAAA,YAAF;AAAgBM,QAAAA,UAAhB;AAA4BvD,QAAAA;AAA5B,UAA2C,KAAKz9B,KAAtD;AAEA,WAAKmgC,aAAL,GAAqB,IAAIT,qBAAJ,CAA0Bp6C,GAA1B,EAA+BC,OAA/B,EAAwC;AAC3D45B,QAAAA,QAAQ,EAAE,KADiD;AAE3DC,QAAAA,WAAW,EAAE,KAAKt5B,KAFyC;AAG3Dm7C,QAAAA,cAAc,EAAED,UAAU,IAAIj+B,wBAH6B;AAI3D3c,QAAAA,MAAM,EAAEs6C,YAAY,IAAI99B,mBAJmC;AAK3D46B,QAAAA,iBAL2D;AAM3DC,QAAAA;AAN2D,OAAxC,CAArB;AAQA,WAAK0C,aAAL,CAAmBe,kBAAnB,GAAwC,KAAxC;AACA,WAAKf,aAAL,CAAmB9wB,EAAnB,CAAsB,QAAtB,EAAgC,KAAK0wB,aAArC;AACD;AA7DH;AAAA;AAAA,WA+DE;UAAmB;AAAEtC,QAAAA;AAAF;AACjB,YAAM;AAAEA,QAAAA,UAAU,EAAE0D;AAAd,UAAoC,KAAKnhC,KAA/C;AAEA,UAAImhC,iBAAiB,KAAK1D,UAAtB,IAAoC0D,iBAAxC,EACE,IAAI,KAAKhB,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmB1C,UAAnB,GAAgC0D,iBAAhC;AACA,aAAKhB,aAAL,CAAmBN,mBAAnB;AACD;AACJ;AAvEH;AAAA;AAAA,WAyEE;AACE,UAAI,KAAKc,aAAT,EAAwB;AACtB;AACA,aAAKA,aAAL,CAAmBrxB,GAAnB,CAAuB,eAAvB,EAAwC,KAAKwxB,aAA7C;AACD;;AAED,WAAKX,aAAL,IAAsB,KAAKA,aAAL,CAAmB7wB,GAAnB,CAAuB,QAAvB,EAAiC,KAAKywB,aAAtC,CAAtB;AACA,WAAKY,aAAL,IACE,KAAKA,aAAL,CAAmBrxB,GAAnB,CAAuB,QAAvB,EAAiC,KAAKyxB,qBAAtC,CADF;AAED;AAlFH;AAAA;AAAA,WAoFE;AACE,aAAO,KAAKJ,aAAZ;AACA,aAAO,KAAKR,aAAZ;AACA,aAAO,KAAKr6C,KAAZ;AACD;AAxFH;AAAA;AAAA,WA0FE,oBAAWs7C,MAAX,EAA4BC,IAA5B;AACE,UAAI,KAAKV,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBxhB,QAAnB,GAA8BiiB,MAA9B;AACD;;AAED,UAAI,KAAKjB,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBhhB,QAAnB,GAA8BkiB,IAA9B;AACD;AACF;AAlGH;AAAA;AAAA,WAoGE,oBAAWhmC,KAAX;AACE,YAAM;AAAEqlC,QAAAA,YAAF;AAAgBhD,QAAAA,UAAhB;AAA4Bp4C,QAAAA;AAA5B,UAAoC,KAAK0a,KAA/C;AACA,UAAI1W,OAAJ;;AAEA,UAAIy0B,qBAAqB,CAAC1iB,KAAD,EAAQ/V,GAAG,CAAC0C,UAAZ,CAAzB,EAAkD;AAChDqT,QAAAA,KAAK,CAAC,CAAD,CAAL,CAAS0jC,KAAT;AACAz1C,QAAAA,OAAO,GAAG,IAAIwf,eAAJ,CAAYzN,KAAZ,EAAmB;AAAE3S,UAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAAX,SAAnB,CAAV;AACAY,QAAAA,OAAO,CAAClD,MAAR,GAAiBs3C,UAAU,IAAI76B,iBAA/B;AACD,OAJD,MAIO;AACLvZ,QAAAA,OAAO,GAAG,IAAIof,iBAAJ,CAAarN,KAAb,EAAoB;AAAE3S,UAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAAX,SAApB,CAAV;AACAY,QAAAA,OAAO,CAAClD,MAAR,GAAiBs6C,YAAY,IAAI99B,mBAAjC;AACD;;AAED,aAAOtZ,OAAP;AACD;AAlHH;AAAA;AAAA,WA6IE;AACE,aAAOzE,4BAAA,MAAA;AAAKkJ,QAAAA,KAAK,EAAE;AAAEuzC,UAAAA,OAAO,EAAE;AAAX;OAAZ,CAAP;AACD;AA/IH;;AAAA;AAAA,EAAiCz8C,cAAK,CAAC6a,SAAvC;;;AC3BA,MAqBa6hC,QAAQ,GAA2B;MAAC;AAAEpiB,IAAAA;AAAF;MAAenf;;AAC9D,QAAM;AAAE1a,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AAEA,SAAO05B,QAAQ,GACbt6B,4BAAA,CAACo7C,WAAD;AAAa36C,IAAAA,GAAG,EAAEA;AAAKC,IAAAA,OAAO,EAAEA;KAAaya,MAA7C,CADa,GAEX,IAFJ;AAGD,CANM;;;MCnBMwhC,mBAAmB,gBAAGlhB,eAAM,CAACC,GAAV,sOAAzB;AAaP,MAAakhB,eAAe,gBAAGnhB,eAAM,CAACC,GAAV,gQAIjB;AAAA,MAAC;AAAE9pB,IAAAA;AAAF,GAAD;AAAA,SAAkBA,KAAlB;AAAA,CAJiB,CAArB;AAiBP,MAAairC,aAAa,gBAAGphB,eAAM,CAACC,GAAV,mRAIT;AAAA,MAAC;AAAEohB,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,UAAH,GAAgB,QAA3C;AAAA,CAJS,EAKf;AAAA,MAAC;AAAElrC,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,IAAI,MAAxB;AAAA,CALe,CAAnB;;MC5BMmrC,UAAU,GAAa;AAClC,QAAM;AAAE55C,IAAAA;AAAF,MAAiBipB,UAAU,EAAjC;AACA,QAAM;AAAE0B,IAAAA,YAAF;AAAgBlc,IAAAA;AAAhB,MAA0B+b,QAAQ,CAAC;AAAExqB,IAAAA,UAAU,EAAEA,UAAU,IAAI;AAA5B,GAAD,CAAxC;AAEA,SACEnD,4BAAA,CAAC28C,mBAAD,MAAA,EACE38C,4BAAA,CAAC48C,eAAD;AAAiBhrC,IAAAA,KAAK,EAAEA;GAAxB,EACE5R,4BAAA,CAAC68C,aAAD;AAAeC,IAAAA,QAAQ;AAACE,IAAAA,MAAM,EAAE;GAAhC,EACGlvB,YAAY,IAAI,IAAhB,GACMA,YAAY,GAAG,IADrB,UAEMA,YAFN,MADH,CADF,CADF,CADF;AAWD,CAfM;;MCIMmvB,IAAI,GAAwB;MAAC;AAAEn9C,IAAAA;AAAF;AACxC,QAAM;AAAEkD,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAsBP,iBAAiB,EAA7C;AAEA,SACE1C,4BAAA,CAAC2gC,UAAD,MAAA,EACE3gC,4BAAA,CAACsgC,SAAD;AAAWxR,IAAAA,OAAO,EAAE9rB;GAApB,CADF,EAEEhD,4BAAA,CAACugC,UAAD;AAAYzR,IAAAA,OAAO,EAAE7rB;GAArB,CAFF,EAGGnD,QAHH,CADF;AAOD,CAVM;;MCFMo9C,SAAS,GAAa;AACjC,QAAMj5C,KAAK,GAAGqoB,WAAW,EAAzB;AAEA,SACEtsB,4BAAA,CAAC68C,aAAD;AAAeM,IAAAA,UAAU,EAAE;AAAMvrC,IAAAA,KAAK,EAAE;GAAxC,EACG3N,KAAK,IAAI,CADZ,CADF;AAKD,CARM;;;;ACKP,MAAMm5C,YAAY,GAAIC,UAAD,IAAwBtd,UAAxB,mTAKFsd,UALE,EAMDA,UANC,EAOHA,UAPG,CAArB;;AAWA,MAAMC,UAAU,GAAID,UAAD,IAAwBtd,UAAxB,qTAKDsd,UALC,EAMCA,UAND,EAOEA,UAPF,CAAnB;;AAWA,MAAME,WAAW,GAAIF,UAAD,IAAwBtd,UAAxB,oTAKFsd,UALE,EAMDA,UANC,EAOCA,UAPD,CAApB;;AAWA,MAAMG,SAAS,GAAIH,UAAD,IAAwBtd,UAAxB,sTAKCsd,UALD,EAMEA,UANF,EAOGA,UAPH,CAAlB;;AAWA,MAAMn8B,GAAG,GAAG,CAAChC,QAAD,EAAmBm+B,UAAnB,KAAiDtd,UAAjD,6JAGA7gB,QAHA,EAIRm+B,UAAU,IAAID,YAAY,CAACC,UAAD,CAJlB,CAAZ;;AAOA,MAAMI,KAAK,GAAG,CAACv+B,QAAD,EAAmBm+B,UAAnB,KAAiDtd,UAAjD,0JAGJ7gB,QAHI,EAIVm+B,UAAU,IAAIC,UAAU,CAACD,UAAD,CAJd,CAAd;;AAOA,MAAMp8B,IAAI,GAAG,CAAC/B,QAAD,EAAmBm+B,UAAnB,KAAiDtd,UAAjD,2JAGF7gB,QAHE,EAITm+B,UAAU,IAAIE,WAAW,CAACF,UAAD,CAJhB,CAAb;;AAOA,MAAMK,MAAM,GAAG,CAACx+B,QAAD,EAAmBm+B,UAAnB,KAAiDtd,UAAjD,0JAGN7gB,QAHM,EAIXm+B,UAAU,IAAIG,SAAS,CAACH,UAAD,CAJZ,CAAf;;AAOA,AAAO,MAAMld,gBAAc,GAAG,SAAjBA,cAAiB,CAC5BC,SAD4B,EAE5BlhB,QAF4B,EAG5Bm+B,UAH4B;AAAA,MAC5Bjd,SAD4B;AAC5BA,IAAAA,SAD4B,GACL,KADK;AAAA;;AAAA,SAIzBL,UAJyB,mHAK1BK,SAAS,KAAK,KAAd,IAAuBlf,GAAG,CAAChC,QAAD,EAAWm+B,UAAX,CALA,EAM1Bjd,SAAS,KAAK,OAAd,IAAyBqd,KAAK,CAACv+B,QAAD,EAAWm+B,UAAX,CANJ,EAO1Bjd,SAAS,KAAK,MAAd,IAAwBnf,IAAI,CAAC/B,QAAD,EAAWm+B,UAAX,CAPF,EAQ1Bjd,SAAS,KAAK,QAAd,IAA0Bsd,MAAM,CAACx+B,QAAD,EAAWm+B,UAAX,CARN;AAAA,CAAvB;AAWP,MAAMM,MAAM,gBAAG5d,UAAH,8LAAZ;AASA,MAAa6d,gBAAgB,gBAAGniB,eAAM,CAACC,GAAV,sXAYzB;AAAA,MAAC;AAAE0E,IAAAA,SAAF;AAAalhB,IAAAA,QAAQ,GAAG,QAAxB;AAAkC2+B,IAAAA,SAAlC;AAA6CR,IAAAA,UAAU,GAAG;AAA1D,GAAD;AAAA,SACAld,gBAAc,CAACC,SAAD,EAAYlhB,QAAZ,EAAsB2+B,SAAS,GAAGR,UAAH,GAAgB,IAA/C,CADd;AAAA,CAZyB,EAczB;AAAA,MAAC;AAAEQ,IAAAA;AAAF,GAAD;AAAA,SAAmBA,SAAS,IAAIF,MAAhC;AAAA,CAdyB,CAAtB;;;ACvGP;AAUA,MAAM;AAAE19C,EAAAA,QAAF;AAAY69C,EAAAA;AAAZ,iBAAyBn+C,mBAAa,CAAY,EAAZ,CAA5C;;AAGA,MAAao+C,OAAO,GAAuB;MAAC;AAC1Cp5C,IAAAA,QAAQ,GAAG,EAD+B;AAE1ClE,IAAAA,GAF0C;AAG1CqS,IAAAA,MAH0C;AAI1C0H,IAAAA,SAJ0C;AAK1ClW,IAAAA,MAL0C;AAM1CxE,IAAAA,QAN0C;AAO1C6a,IAAAA,OAP0C;AAQ1CqjC,IAAAA,aAR0C;AAS1C/uB,IAAAA;AAT0C;MAUvC9T;;AAEH,QAAM8iC,SAAS,GAAG7vB,UAAU,CAAC9pB,MAAD,CAA5B;AAEAO,EAAAA,eAAS,CAAC;AACR,KAACpE,GAAG,GAAG,CAACA,GAAD,CAAH,GAAWkE,QAAf,EAAyByd,OAAzB,CAAkC3d,OAAD;AAC/B,YAAM1B,QAAQ,GACZ+P,MAAM,IAAI,EAAErO,OAAO,YAAYpE,QAArB,CAAV,IAAuCoE,OAAO,CAACd,IAAR,CAAamP,MAApD,GACIrO,OAAO,CAACd,IAAR,CAAamP,MADjB,GAEIrC,SAHN;AAKAwtC,MAAAA,SAAS,CAAC;AACRx5C,QAAAA,OADQ;AAER+V,QAAAA,SAAS,EACP,OAAOwjC,aAAP,KAAyB,UAAzB,GACI,MAAMA,aAAa,CAACv5C,OAAD,CADvB,GAEI,MAAMzE,4BAAA,CAAC49C,gBAAD,oBAAsBziC,MAAtB,EAA8BR,OAA9B,CALJ;AAMR5X,QAAAA,QANQ;AAORksB,QAAAA;AAPQ,OAAD,CAAT;AASD,KAfD;AAgBD,GAjBQ,EAiBN,CACDtU,OADC,EAEDsU,SAFC,EAGD+uB,aAHC,EAIDC,SAJC,EAKDx9C,GALC,EAMDqS,MANC,EAODnO,QAPC,EAQD6V,SARC,EASDW,KATC,CAjBM,CAAT;AA6BA,SACEnb,4BAAA,CAACC,QAAD;AAAUd,IAAAA,KAAK,EAAEwF;GAAjB,EACGlE,GAAG,GAAGX,QAAH,GAAcA,QAAQ,GAAGE,4BAAA,CAAC89C,QAAD,MAAA,EAAWh+C,QAAX,CAAH,GAAqC,IADjE,CADF;AAKD,CAhDM;;ACXP;;AACA,MAAao+C,IAAI,GAAG,MAAMl+C,4BAAA,MAAA;AAAKkJ,EAAAA,KAAK,EAAE;AAAEuzC,IAAAA,OAAO,EAAE;AAAX;CAAZ,CAAnB;;MCGM0B,eAAe,GAA6B;MAAC;AACxDp7C,IAAAA,QADwD;AAExDo3B,IAAAA,QAFwD;AAGxD54B,IAAAA;AAHwD;AAKxD24B,EAAAA,kBAAkB,CAAC;AAAEn3B,IAAAA,QAAF;AAAYo3B,IAAAA,QAAZ;AAAsB54B,IAAAA;AAAtB,GAAD,CAAlB;AAEA,SAAOvB,4BAAA,CAACi2C,cAAD,MAAA,CAAP;AACD,CARM;;MCJMx9B,sBAAsB,GAAG,CACpC3F,MADoC,EAEpCsrC,QAFoC;AAIpC,QAAMnlC,WAAW,GAAkB,EAAnC;AACA,QAAMoD,MAAM,GAAG+hC,QAAQ,GAAG,CAA1B;AACA,QAAMC,QAAQ,GAAGptC,IAAI,CAAC8B,EAAL,GAAU,CAA3B;AACA,QAAMwzB,IAAI,GAAGt1B,IAAI,CAACD,GAAL,CAASC,IAAI,CAAC8B,EAAL,GAAU,CAAV,GAAcsJ,MAAvB,EAA+BgiC,QAAQ,GAAG,GAA1C,CAAb;AACA,MAAIC,KAAK,GAAG,CAAZ;AACA,MAAIC,GAAG,GAAGF,QAAV;;AAEA,OAAK,IAAIG,GAAG,GAAGF,KAAf,EAAsBE,GAAG,GAAGD,GAA5B,EAAiCC,GAAG,IAAIjY,IAAxC,EAA8C;AAC5CttB,IAAAA,WAAW,CAAChL,IAAZ,CAAiB,CACfgD,IAAI,CAACwtC,GAAL,CAASD,GAAT,IAAgBniC,MAAhB,GAAyBvJ,MAAM,CAAC,CAAD,CADhB,EAEf7B,IAAI,CAACytC,GAAL,CAASF,GAAT,IAAgBniC,MAAhB,GAAyBvJ,MAAM,CAAC,CAAD,CAFhB,CAAjB;AAID;;AAED,SAAO,CAACmG,WAAD,CAAP;AACD,CAnBM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"react.cjs.development.js","sources":["../src/hooks/usePagination.ts","../src/contexts/EvergisContext.tsx","../src/contexts/MapContext.tsx","../src/contexts/TooltipContext.tsx","../src/contexts/LegendContext.tsx","../src/contexts/EvergisSelectContext.tsx","../src/hooks/useEventPoint.ts","../src/hooks/useMapViewActions.ts","../src/hooks/useZoomToFeature.ts","../src/hooks/useEvergisCard.ts","../src/core/classification/types.ts","../src/core/classification/ClassificationCondition.ts","../src/core/classification/parameter.ts","../src/utils/isObject.ts","../src/core/classification/parameterValue.ts","../src/core/style/types/utils.ts","../src/core/style/types/label.ts","../src/core/style/compositeSymbol.ts","../src/core/style/types/symbol.ts","../src/core/style/types/brush.ts","../src/core/style/types/miters.ts","../src/core/style/types/offset.ts","../src/core/style/types/parameterValue.ts","../src/core/style/types/style.ts","../src/core/style/EvergisStyle.ts","../src/core/classification/getClassifications.ts","../src/core/classification/ClassificationManager.ts","../src/core/classification/unClassify.ts","../src/i18n/index.ts","../src/core/classification/printClass.ts","../src/utils/color.ts","../src/symbols/previewLimits.ts","../src/utils/math.ts","../src/symbols/strokeStyle.ts","../src/symbols/Evergis/SGisBrushFill.ts","../src/symbols/Evergis/SGisImageFill.ts","../src/symbols/Evergis/SGisPolygonSymbol.ts","../src/symbols/LineMiters/LineMiterRender.ts","../src/symbols/LineMiters/ArrowLineMiterRender.ts","../src/utils/date.ts","../src/utils/format.ts","../src/utils/url.ts","../src/core/attributes/format.ts","../src/core/crs/index.ts","../src/core/attributes/utils.ts","../src/core/feature/EvergisFeature.ts","../src/core/feature/evaluateCondition.ts","../src/core/feature/getFeatureSymbol.ts","../src/core/layer/EvergisLayer.ts","../src/core/legend/createValueTitle.ts","../src/core/legend/isValidParameter.ts","../src/core/legend/types.ts","../src/core/measurer.ts","../src/core/scale.ts","../src/controls/MeasureToolFormatters.ts","../src/controls/BaseMeasureToolCreator.ts","../src/controls/BaseMeasureToolEditor.ts","../src/utils/isNumeric.ts","../src/utils/isParameterType.ts","../src/core/legend/createCondition.ts","../src/core/legend/FilterCondition.ts","../src/utils/legend.ts","../src/utils/metersToPixels.ts","../src/utils/polygonCircleFromPoint.ts","../src/components/Legend/constants.ts","../src/components/Legend/types.ts","../src/utils/svg.ts","../src/symbols/LineMiters/CircleLineMiterRender.ts","../src/symbols/LineMiters/SquareLineMiterRender.ts","../src/symbols/LineMiters/getLineMiterRender.ts","../src/symbols/LineMiters/updateRingsForMiter.ts","../src/symbols/Evergis/SGisPolylineSymbol.ts","../src/symbols/Label/LabelSymbol.tsx","../src/symbols/Label/createLabelSymbol.tsx","../src/symbols/Shadowed/ShadowedPointSymbol.ts","../src/symbols/Shadowed/ShadowedPolySymbol.ts","../src/symbols/Selected/SelectedPointSymbol.ts","../src/symbols/Selected/SelectedPolySymbol.ts","../src/symbols/Selected/selectedSymbols.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/hooks/useSymbol.ts","../src/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useProperty.ts","../src/hooks/useUpdate.ts","../src/hooks/useLayerOrder.ts","../src/hooks/useLayerVisibility.ts","../src/hooks/useLayerOpacity.ts","../src/hooks/useEvergisDynamicLayer.ts","../src/hooks/useEvergisTileLayer.ts","../src/hooks/useFeatureLayer.ts","../src/hooks/useMapBboxChange.ts","../src/hooks/useMapResize.ts","../src/hooks/useMapPick.ts","../src/hooks/useMapState.ts","../src/hooks/useMapView.ts","../src/hooks/useMapWrapper.ts","../src/hooks/useMaxMinScale.ts","../src/hooks/useScale.ts","../src/hooks/useUpdateMapView.ts","../src/hooks/useTooltip.ts","../src/hooks/useClusterLayer.ts","../src/hooks/useEvergisSelect.ts","../src/hooks/useCrs.ts","../src/hooks/useDraggableMarker.ts","../src/hooks/useMetersToPixels.ts","../src/hooks/useDebouncedCallback.ts","../src/hooks/useToggle.ts","../src/hooks/useNode.ts","../src/components/Symbol/Symbol.tsx","../src/components/Symbol/styled.ts","../src/components/Symbol/StyleSymbol.tsx","../src/components/EvergisCard/styled.ts","../src/components/EvergisCard/MailValue.tsx","../src/components/EvergisCard/PhoneValue.tsx","../src/components/EvergisCard/UrlValue.tsx","../src/components/EvergisCard/AttributeValue.tsx","../src/components/EvergisCard/EvergisCardAttribute.tsx","../src/components/EvergisCard/StyledCard.tsx","../src/components/EvergisCard/EvergisCard.tsx","../src/components/Layers/ClusterLayer.tsx","../src/components/Layers/EvergisDynamicLayer.tsx","../src/components/Layers/FeatureLayer.tsx","../src/components/Layers/useSGisFeatures.ts","../src/components/Layers/EvergisSelectLayer.tsx","../src/components/Layers/EvergisTileLayer.tsx","../src/hooks/useTileLayer.ts","../src/components/Layers/TileLayer.tsx","../src/components/EvergisSelect/EvergisSelect.tsx","../src/ui/mixins/placementMixin.ts","../src/components/MapControls/styled.ts","../src/components/MapControls/Measure.tsx","../src/components/MapControls/Search.tsx","../src/components/MapControls/Fullscreen.tsx","../src/components/Legend/styled.ts","../src/components/Legend/hooks/useSvgSymbol.ts","../src/components/Legend/components/SvgSymbol.tsx","../src/components/Legend/components/ClusterSymbolPreview.tsx","../src/components/Legend/components/SymbolByType.tsx","../src/components/Legend/components/LegendSymbolRenderer.tsx","../src/components/Legend/components/LegendHeaderButtons.tsx","../src/components/Legend/utils/getConditionAttribute.ts","../src/components/Legend/utils/isHiddenLegend.ts","../src/components/Legend/utils/getLegendText.tsx","../src/components/Legend/components/LegendChildren.tsx","../src/components/Legend/components/LegendParameterDescription.tsx","../src/components/Legend/components/MinimizedLegend.tsx","../src/components/Legend/components/MaximizedLegend.tsx","../src/components/Legend/components/LegendSection.tsx","../src/components/Legend/Legend.tsx","../src/components/Map/Map.tsx","../src/components/Measurer/MeasureTool.tsx","../src/components/Measurer/Measurer.tsx","../src/components/ScaleControl/styled.ts","../src/components/ScaleControl/ScaleRuler.tsx","../src/components/ScaleControl/Zoom.tsx","../src/components/ScaleControl/ZoomLevel.tsx","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Noop/index.tsx","../src/components/DraggableMarker/DraggableMarker.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\r\n\r\ntype Pagination = [\r\n number,\r\n { prev: () => void; next: () => void; reset: () => void }\r\n];\r\n\r\nexport const usePagination = (length: number): Pagination => {\r\n const [current, setCurrent] = useState(0);\r\n\r\n const next = useCallback(\r\n () => setCurrent(value => (value < length - 1 ? value + 1 : value)),\r\n [length, setCurrent]\r\n );\r\n\r\n const prev = useCallback(\r\n () => setCurrent(value => (value === 0 ? value : value - 1)),\r\n [setCurrent]\r\n );\r\n\r\n const reset = useCallback(() => setCurrent(0), [setCurrent]);\r\n\r\n return [current, { prev, next, reset }];\r\n};\r\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { Api } from '@evergis/api';\n\nconst BASE_URL = '/';\n\nconst defaultApi = new Api({\n url: BASE_URL,\n});\n\nconst evergisContext = createContext<Api>(defaultApi);\n\ntype EvergisProviderProps = {\n api?: Api;\n};\n\nexport const EvergisProvider: React.FC<EvergisProviderProps> = ({\n api,\n children,\n}) => {\n const value = useMemo(() => api || defaultApi, [api]);\n return (\n <evergisContext.Provider value={value}>{children}</evergisContext.Provider>\n );\n};\n\nexport const useEvergisContext = () => useContext(evergisContext);\n","import React, { createContext, FC, PropsWithChildren, useContext, useMemo } from 'react';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\n\r\ntype MapContext = {\r\n map: Map;\r\n painter: DomPainter;\r\n};\r\n\r\nconst defaultMap = new Map();\r\nconst defaultPainter = new DomPainter(defaultMap);\r\n\r\nconst mapContext = createContext<MapContext>({\r\n map: defaultMap,\r\n painter: defaultPainter,\r\n});\r\n\r\ninterface MapProviderProps extends PropsWithChildren<any> {\r\n map?: Map;\r\n painter?: DomPainter;\r\n}\r\n\r\nexport const MapProvider: FC<MapProviderProps> = ({\r\n map,\r\n painter,\r\n children,\r\n}) => {\r\n const value = useMemo(\r\n () => ({\r\n map: map || defaultMap,\r\n painter: painter || (map ? new DomPainter(map) : defaultPainter),\r\n }),\r\n [map, painter]\r\n );\r\n return <mapContext.Provider value={value}>{children}</mapContext.Provider>;\r\n};\r\n\r\nexport const useMapContext = () => useContext(mapContext);\r\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\n\ntype TooltipContext = {\n layer: FeatureLayer;\n popupLayer: FeatureLayer;\n};\n\nconst defaultLayer = new FeatureLayer();\n\nconst defaultPopupLayer = new FeatureLayer();\n\nconst tooltipContext = createContext<TooltipContext>({\n layer: defaultLayer,\n popupLayer: defaultPopupLayer,\n});\n\ntype TooltipProviderProps = {\n layer?: FeatureLayer;\n popupLayer?: FeatureLayer;\n zIndex?: number;\n};\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n layer,\n popupLayer,\n children,\n}) => {\n const value = useMemo(\n () => ({\n layer: layer || defaultLayer,\n popupLayer: popupLayer || defaultPopupLayer,\n }),\n [layer, popupLayer]\n );\n\n return (\n <tooltipContext.Provider value={value}>{children}</tooltipContext.Provider>\n );\n};\n\nexport const useTooltipContext = () => useContext(tooltipContext);\n","import React, { createContext, useContext } from 'react';\nimport { StyleSymbolType } from '../core/style/types/symbol';\n\nconst LegendContext = createContext<StyleSymbolType | null>(null);\n\ntype LegendProviderProps = {\n symbol?: StyleSymbolType;\n};\n\nexport const LegendProvider: React.FC<LegendProviderProps> = ({\n symbol,\n children,\n}) => {\n return (\n <LegendContext.Provider value={symbol || null}>\n {children}\n </LegendContext.Provider>\n );\n};\n\nexport const useLegendContext = () => useContext(LegendContext);\n","import React, { createContext, useContext } from 'react';\nimport { EvergisLayer } from '../core/layer/EvergisLayer';\n\nconst evergisSelectContext = createContext<EvergisLayer[]>([]);\n\ntype EvergisSelectProviderProps = {\n layers: EvergisLayer[];\n};\n\nexport const EvergisSelectProvider: React.FC<EvergisSelectProviderProps> = ({\n layers,\n children,\n}) => (\n <evergisSelectContext.Provider value={layers}>\n {children}\n </evergisSelectContext.Provider>\n);\nexport const useEvergisSelectContext = () => useContext(evergisSelectContext);\n","import { useCallback } from 'react';\nimport { getMouseOffset } from '@evergis/sgis/es/utils/domEvent';\nimport { sGisMouseEvent } from '@evergis/sgis/es/commonEvents';\nimport { IPoint } from '@evergis/sgis/es/Point';\n\nimport { useMapContext } from '../contexts';\n\nexport const useEventPoint = () => {\n const { painter } = useMapContext();\n\n return useCallback(\n (event: sGisMouseEvent | TouchEvent | MouseEvent): IPoint => {\n if ('point' in event) {\n return event.point;\n }\n\n const browserEvent =\n 'browserEvent' in event ? event['browserEvent'] : event;\n\n const wrapper = painter.wrapper;\n const { x, y } = getMouseOffset(\n wrapper,\n 'touches' in browserEvent\n ? {\n pageX: browserEvent.touches[0].pageX,\n pageY: browserEvent.touches[0].pageY,\n }\n : browserEvent\n );\n const originalPoint = painter.getPointFromPxPosition(x, y);\n\n return originalPoint;\n },\n [painter]\n );\n};\n","import { useCallback } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\n\r\nimport { useEventPoint } from '../hooks/useEventPoint';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapViewActions() {\r\n const { map, painter } = useMapContext();\r\n const getEventPoint = useEventPoint();\r\n\r\n const zoomTo = useCallback(\r\n (k: number) => {\r\n map.zoom(k, map.position);\r\n },\r\n [map]\r\n );\r\n\r\n const zoomIn = useCallback(() => zoomTo(1), [zoomTo]);\r\n const zoomOut = useCallback(() => zoomTo(-1), [zoomTo]);\r\n\r\n const animateTo = useCallback(\r\n ({ position, resolution, extent }: AnimateToParams) => {\r\n if (position || resolution) {\r\n const nextPosition = position\r\n ? (position.slice(0) as Coordinates)\r\n : map.position;\r\n map.animateTo(nextPosition, resolution || map.resolution);\r\n }\r\n\r\n if (extent) {\r\n const { xMax, xMin, yMax, yMin } = extent;\r\n const bbox = new Bbox([xMin, yMax], [xMax, yMin], map.crs);\r\n painter && painter.show(bbox, true);\r\n }\r\n },\r\n [map, painter]\r\n );\r\n\r\n const zoomAround = useCallback(\r\n (event: sGisClickEvent) => {\r\n map.zoom(1, getEventPoint(event));\r\n },\r\n [getEventPoint, map]\r\n );\r\n\r\n const changeZoomLevel = useCallback(\r\n (level: number) => {\r\n const { tileScheme } = map;\r\n let tileLevel = tileScheme.levels.find(({ zIndex }) => zIndex === level);\r\n const resolution = tileLevel ? tileLevel.resolution : map.resolution;\r\n\r\n map.animateSetResolution(resolution, map.position);\r\n },\r\n [map]\r\n );\r\n\r\n return {\r\n zoomTo,\r\n zoomIn,\r\n zoomOut,\r\n zoomAround,\r\n animateTo,\r\n changeZoomLevel,\r\n };\r\n}\r\n\r\ntype AnimateToParams = {\r\n position?: Coordinates;\r\n resolution?: number;\r\n extent?: { xMax: number; yMax: number; xMin: number; yMin: number };\r\n};\r\n","import { useCallback } from 'react';\n\nimport { useMapViewActions } from './useMapViewActions';\n\nimport { EvergisFeature } from '../core';\n\nexport const useZoomToFeature = () => {\n const { animateTo } = useMapViewActions();\n\n return useCallback(\n (feature: EvergisFeature) => {\n const extent = feature.extent();\n\n if (extent) {\n animateTo({ extent });\n }\n },\n [animateTo]\n );\n};\n","import { useCallback, useEffect } from 'react';\r\n\r\nimport { usePagination } from './usePagination';\r\nimport { useZoomToFeature } from './useZoomToFeature';\r\n\r\nimport { EvergisFeature } from '../core';\r\n\r\nexport type UseEvergisCard = {\r\n feature: EvergisFeature;\r\n current: number;\r\n prev: () => void;\r\n next: () => void;\r\n zoom: () => void;\r\n};\r\n\r\nexport const useEvergisCard = (features: EvergisFeature[]): UseEvergisCard => {\r\n const [current, { prev, next, reset }] = usePagination(features.length);\r\n\r\n const feature = features[current];\r\n\r\n const zoomToFeature = useZoomToFeature();\r\n\r\n const zoom = useCallback(() => zoomToFeature(feature), [\r\n zoomToFeature,\r\n feature,\r\n ]);\r\n\r\n useEffect(() => {\r\n reset();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [features.length]);\r\n\r\n return { feature, current, prev, next, zoom };\r\n};\r\n","import {\r\n ClassifyAble,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n} from '../style';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\n\r\nexport type NestedClassificationParameters =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor'\r\n | 'figure.strokeColor'\r\n | 'figure.strokeWidth';\r\n\r\nexport type SimpleClassificationParameters =\r\n | 'fillColor'\r\n | 'strokeColor'\r\n | 'strokeWidth'\r\n | 'size'\r\n | 'symbol'\r\n | 'angle'\r\n | 'maskedColor';\r\n\r\nexport type ClassificationParameter =\r\n | NestedClassificationParameters\r\n | SimpleClassificationParameters;\r\n\r\nexport type ClassificationParameterExtended =\r\n | ClassificationParameter\r\n | 'width'\r\n | 'height';\r\n\r\nexport interface ClassBase {\r\n title: string | null;\r\n parameterValue: ParameterValueWithSymbol;\r\n attribute?: ClassificationAttribute;\r\n}\r\n\r\nexport type UniqueClass = ClassBase & {\r\n uniqueValue: string;\r\n};\r\n\r\nexport type RangeClass = ClassBase & {\r\n from: number | string | null;\r\n to: number | string | null;\r\n};\r\n\r\nexport type ClassificationClass = UniqueClass | RangeClass;\r\nexport type ClassificationValues = ClassificationClass[];\r\n\r\nexport const enum ClassificationType {\r\n Range,\r\n Unique,\r\n}\r\n\r\nexport interface Classification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> {\r\n parameter?: ClassificationParameterExtended;\r\n attribute?: string;\r\n type: Type;\r\n values: Value[];\r\n}\r\n\r\nexport type RangeClassification = Classification<\r\n ClassificationType.Range,\r\n RangeClass\r\n>;\r\n\r\nexport type UniqueClassification = Classification<\r\n ClassificationType.Unique,\r\n UniqueClass\r\n>;\r\n\r\nexport interface ClassificationExtras {\r\n defaultTitle: string;\r\n defaultValue: ParameterValueWithSymbol;\r\n}\r\n\r\nexport type ExtendedClassification<\r\n Type extends ClassificationType = ClassificationType,\r\n Value extends ClassificationClass = ClassificationClass\r\n> = Classification<Type, Value> & ClassificationExtras;\r\n\r\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\r\n return Boolean(value && 'from' in value);\r\n}\r\n\r\nexport function isUniqueClass(\r\n value: ClassificationClass\r\n): value is UniqueClass {\r\n return Boolean(value && 'uniqueValue' in value);\r\n}\r\n\r\nexport type ParameterValueModifier = (\r\n parameterValue: ClassifyAble<ParameterValue>\r\n) => ClassifyAble<ParameterValue> | void;\r\n","import {\r\n ConditionInterpreter,\r\n Expression,\r\n TokenType,\r\n} from '@evergis/condition';\r\n\r\nimport { ClassificationType } from './types';\r\n\r\nconst NULL_EXPRESSION: Expression = {\r\n // @ts-ignore TODO\r\n attribute: null,\r\n // @ts-ignore TODO\r\n operation: null,\r\n value: null,\r\n};\r\n\r\nexport class ClassificationCondition {\r\n private readonly condition: string;\r\n private readonly expressions: Expression[] = [];\r\n\r\n constructor(condition: string) {\r\n this.condition = condition;\r\n const conditionResult = new ConditionInterpreter(condition).value;\r\n\r\n this.expressions =\r\n conditionResult instanceof Error ? [] : conditionResult.expressions;\r\n }\r\n\r\n public get attributeName() {\r\n return this.leftExpression.attribute;\r\n }\r\n\r\n public get uniqueValue() {\r\n if (this.isUnique()) {\r\n const { value } = this.leftExpression;\r\n\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n console.warn(`Trying to get unique from range condition ${this.condition}`);\r\n\r\n return '';\r\n }\r\n\r\n public get range(): [number, number] {\r\n if (!this.isRange()) {\r\n console.warn(\r\n `Trying to get range from unique condition ${this.condition}`\r\n );\r\n\r\n return [0, 0];\r\n }\r\n\r\n if (this.expressions.length === 2) {\r\n const { value: from } = this.leftExpression;\r\n const { value: to } = this.rightExpression;\r\n\r\n return [from, to] as [number, number];\r\n }\r\n\r\n if (this.expressions.length === 1) {\r\n const { operation, value } = this.leftExpression;\r\n const isFrom = operation === TokenType.ArGr;\r\n\r\n return [isFrom ? value : null, isFrom ? null : value] as [number, number];\r\n }\r\n\r\n return [0, 0];\r\n }\r\n\r\n public get type(): ClassificationType {\r\n return this.isUnique()\r\n ? ClassificationType.Unique\r\n : ClassificationType.Range;\r\n }\r\n\r\n public isUnique() {\r\n return this.leftExpression.operation === TokenType.ArEq;\r\n }\r\n\r\n public isRange() {\r\n return [\r\n TokenType.ArGr,\r\n TokenType.ArGre,\r\n TokenType.ArLs,\r\n TokenType.ArLse,\r\n ].includes(this.leftExpression.operation);\r\n }\r\n\r\n public toString() {\r\n return this.condition;\r\n }\r\n\r\n private get leftExpression(): Expression {\r\n return this.expressions.length > 0 ? this.expressions[0] : NULL_EXPRESSION;\r\n }\r\n\r\n private get rightExpression(): Expression {\r\n return this.expressions.length > 1 ? this.expressions[1] : NULL_EXPRESSION;\r\n }\r\n}\r\n","import { ClassificationParameterExtended } from './types';\n\nexport const PARAMETER_SEPARATOR = '.';\n\nexport const parameterToPaths = (\n parameter: ClassificationParameterExtended\n): ClassificationParameterExtended[] =>\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\n\nexport const pathsToParameter = (\n paths: ClassificationParameterExtended[]\n): ClassificationParameterExtended =>\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { parameterToPaths } from './parameter';\r\nimport {\r\n ClassificationParameterExtended,\r\n ParameterValueModifier,\r\n} from './types';\r\n\r\nimport {\r\n CalculatedAble,\r\n CalculatedParameter,\r\n ClassifyAble,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n UnidentifiedParameterValue,\r\n} from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nexport const isParameterByAttribute = (\r\n value: UnidentifiedParameterValue\r\n): value is ParameterByAttribute<ParameterValueWithSymbol> =>\r\n Boolean(\r\n isObject(value) &&\r\n (value as ParameterByAttribute<ParameterValueWithSymbol>)?.type ===\r\n 'byAttribute'\r\n );\r\n\r\nexport const isCalculatedParameter = (\r\n value: UnidentifiedParameterValue\r\n): value is CalculatedParameter<ParameterValueWithSymbol> =>\r\n Boolean(\r\n isObject(value) &&\r\n (value as CalculatedParameter<ParameterValueWithSymbol>)?.type ===\r\n 'calculated'\r\n );\r\n\r\nexport const getParameterValue = <Value extends ParameterValueWithSymbol>(\r\n value: ClassifyAble<Value> | CalculatedAble<Value>\r\n): Value => {\r\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\r\n return value.defaultValue;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const symbolParameterWalker = (\r\n valueModifier: ParameterValueModifier\r\n) => <S extends StyleSymbolType>(\r\n symbol: S,\r\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\r\n): S => {\r\n const paths = Array.isArray(parameter)\r\n ? parameter\r\n : parameterToPaths(parameter);\r\n const [firstKey, ...restKeys] = paths;\r\n\r\n // @ts-ignore\r\n const symbolPart = symbol[firstKey];\r\n\r\n if (restKeys.length) {\r\n const goDeeper = symbolParameterWalker(valueModifier);\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\r\n };\r\n }\r\n\r\n return {\r\n ...symbol,\r\n [firstKey]: valueModifier(symbolPart) || symbolPart,\r\n };\r\n};\r\n\r\nexport const setDefaultParameterValue = symbolParameterWalker(\r\n getParameterValue\r\n);\r\n\r\nexport const setParameterValue = <S extends StyleSymbolType>(\r\n symbol: S,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n): S => symbolParameterWalker(() => value)(symbol, path);\r\n\r\nexport function applyParameterValue(\r\n symbol: StyleSymbolType,\r\n path: ClassificationParameterExtended,\r\n value: ClassifyAble<ParameterValue>\r\n) {\r\n if (path === 'symbol') {\r\n return value as StyleSymbolType;\r\n }\r\n\r\n return setParameterValue(symbol, path, value);\r\n}\r\n","import { LineEndingType, ParameterDcColor, ParameterDcDouble } from '@evergis/api';\r\n\r\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\r\nimport { Offset } from './offset';\r\nimport { LineMiterSize } from './miters';\r\nimport { StyleSymbolType } from './symbol';\r\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\r\n\r\ntype ToClientSymbolField<\r\n F,\r\n IsClassifyable extends boolean\r\n> = F extends ParameterDcDouble\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<number>\r\n : number\r\n : F extends ParameterDcColor\r\n ? IsClassifyable extends true\r\n ? ClassifyAble<string>\r\n : string\r\n : F;\r\n\r\ntype ExtraClientSymbolFields = {\r\n offset: Offset;\r\n /* TODO: DC has other type */\r\n fontWeight: number;\r\n childSymbols: StyleSymbolType[];\r\n stroke: StrokeBrushType;\r\n fill: FillBrushType;\r\n textBackground: TextBackgroundType;\r\n beginning: null | LineEndingType;\r\n beginningSize: LineMiterSize;\r\n ending: null | LineEndingType;\r\n endingSize: LineMiterSize;\r\n angle: CalculatedAble<number>;\r\n};\r\n\r\nexport type ClientSymbol<\r\n SymbolType,\r\n SymbolDcType,\r\n NonClassifiedFields extends keyof SymbolDcType = never\r\n> = {\r\n [K in keyof SymbolDcType]: K extends 'type'\r\n ? SymbolType\r\n : K extends keyof ExtraClientSymbolFields\r\n ? ExtraClientSymbolFields[K]\r\n : ToClientSymbolField<\r\n SymbolDcType[K],\r\n K extends NonClassifiedFields ? false : true\r\n >;\r\n};\r\n\r\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\r\n type: ClientSymbol['type']\r\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\r\n symbol && symbol.type === type;\r\n\r\nexport type Unclassify<T> = {\r\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\r\n ? V\r\n : T[K] extends CalculatedAble<infer V2>\r\n ? V2\r\n : T[K];\r\n};\r\n","import {\r\n PointLabelSymbolDc,\r\n PolygonLabelSymbolDc,\r\n PolylineLabelSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { UnknownSymbol } from './symbol';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\n\r\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\r\n\r\nexport type PointLabelSymbol = ClientSymbol<\r\n 'labelPointSymbol',\r\n PointLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolygonLabelSymbol = ClientSymbol<\r\n 'polygonLabelSymbol',\r\n PolygonLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\nexport type PolylineLabelSymbol = ClientSymbol<\r\n 'polylineLabelSymbol',\r\n PolylineLabelSymbolDc,\r\n NonClassifyableLabelFields\r\n>;\r\n\r\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\r\n 'labelPointSymbol'\r\n);\r\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\r\n 'polygonLabelSymbol'\r\n);\r\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\r\n 'polylineLabelSymbol'\r\n);\r\n\r\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\r\n Boolean(\r\n symbol &&\r\n (isPointLabelSymbol(symbol) ||\r\n isPolygonLabelSymbol(symbol) ||\r\n isPolylineLabelSymbol(symbol))\r\n );\r\n\r\nexport type LabelType =\r\n | PolylineLabelSymbol\r\n | PolygonLabelSymbol\r\n | PointLabelSymbol;\r\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport {\r\n CompositeSymbolType,\r\n isCompositeSymbol,\r\n isLabelSymbol,\r\n isRasterSymbol,\r\n isSimpleSymbol,\r\n Style,\r\n StyleSymbolType,\r\n UnknownSymbol,\r\n} from './types';\r\n\r\nexport const createCompositeSymbol = (\r\n childSymbols: StyleSymbolType[]\r\n): CompositeSymbolType => ({\r\n type: 'compositeSymbol',\r\n childSymbols,\r\n});\r\n\r\nexport const getChildSymbols = (symbol?: UnknownSymbol): StyleSymbolType[] => {\r\n if (!symbol || !isCompositeSymbol(symbol)) return [];\r\n\r\n return symbol.childSymbols || [];\r\n};\r\n\r\nexport const extractSymbol = (\r\n symbol?: UnknownSymbol\r\n): Pick<Style, 'symbol' | 'label' | 'raster'> => {\r\n const childSymbols = getChildSymbols(symbol);\r\n\r\n return {\r\n // @ts-ignore\r\n symbol: childSymbols.find(isSimpleSymbol),\r\n label: childSymbols.find(isLabelSymbol) || null,\r\n raster: childSymbols.find(isRasterSymbol) || null,\r\n };\r\n};\r\n\r\nexport const extractStyle = (style: StyleDc): Style => {\r\n // @ts-ignore\r\n if (isCompositeSymbol(style.symbol)) {\r\n return {\r\n ...style,\r\n ...extractSymbol(style.symbol),\r\n // @ts-ignore\r\n children: style.children && style.children.map(extractStyle),\r\n };\r\n }\r\n\r\n // NOTE: for cases when style is exist style object should have same reference for all extractStyle calls\r\n return (style || {}) as Style;\r\n};\r\n\r\nexport const packStyle = (style: Style): StyleDc => {\r\n const { ignoreLabel, label, symbol, raster, children, ...styleDc } = style;\r\n const childSymbols = [!ignoreLabel && label, raster].filter(Boolean);\r\n\r\n return {\r\n ...styleDc,\r\n symbol: childSymbols.length\r\n ? // @ts-ignore\r\n createCompositeSymbol([symbol, ...childSymbols])\r\n : symbol,\r\n // @ts-ignore\r\n children: children\r\n ? // @ts-ignore\r\n children.map(childStyle =>\r\n packStyle({ ...childStyle, ignoreLabel, label })\r\n )\r\n : children,\r\n };\r\n};\r\n","import {\r\n CirclePointSymbolDc,\r\n ClusterSymbolDc,\r\n CombinedPolylineSymbolDc,\r\n CompositeSymbolDc,\r\n H3GridSymbolDc,\r\n ImagePointSymbolDc,\r\n MaskedImagePointSymbolDc,\r\n PolygonSymbolDc,\r\n PolylineSymbolDc,\r\n RasterSymbolDc,\r\n SimplePolylineSymbolDc,\r\n SquarePointSymbolDc,\r\n StyleDc,\r\n SvgPointSymbolDc,\r\n} from '@evergis/api';\r\n\r\nimport { isLabelSymbol, LabelType } from './label';\r\nimport { extractSymbol } from \"../compositeSymbol\";\r\nimport { CalculatedAble } from './parameterValue';\r\nimport { ClientSymbol, symbolTypeGuard } from './utils';\r\nimport { FillBrushType, StrokeBrushType } from './brush';\r\nimport { ClassificationParameterExtended } from \"../../classification\";\r\n\r\nexport type PointSymbol = ClientSymbol<\r\n 'circlePointSymbol',\r\n CirclePointSymbolDc\r\n>;\r\n\r\nexport type SvgPointSymbol = ClientSymbol<\r\n 'svgPointSymbol',\r\n SvgPointSymbolDc\r\n>;\r\n\r\nexport type SquareSymbol = ClientSymbol<\r\n 'squarePointSymbol',\r\n SquarePointSymbolDc\r\n> & {\r\n angle?: CalculatedAble<number>;\r\n};\r\n\r\nexport type MaskedImageSymbol = ClientSymbol<\r\n 'maskedImagePointSymbol',\r\n MaskedImagePointSymbolDc\r\n>;\r\n\r\nexport type StaticImageSymbol = ClientSymbol<\r\n 'imagePointSymbol',\r\n ImagePointSymbolDc\r\n>;\r\n\r\nexport type PolygonSymbol<\r\n Fill = FillBrushType,\r\n Stroke = StrokeBrushType\r\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\r\n fill: Fill;\r\n stroke: Stroke;\r\n};\r\n\r\nexport type SimplePolylineSymbol = ClientSymbol<\r\n 'simplePolylineSymbol',\r\n SimplePolylineSymbolDc\r\n>;\r\n\r\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\r\n\r\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\r\n\r\nexport type ClusterSymbolType = ClientSymbol<\"cluster\", ClusterSymbolDc>;\r\n\r\nexport type CompositeSymbolType = ClientSymbol<\r\n 'compositeSymbol',\r\n CompositeSymbolDc\r\n>;\r\n\r\nexport type H3GridSymbol = ClientSymbol<\r\n 'h3grid',\r\n H3GridSymbolDc\r\n>;\r\n\r\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\r\n\r\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PointSymbolType = SvgPointSymbol | PointSymbol | SquareSymbol | MaskedImageSymbol | StaticImageSymbol;\r\n\r\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\r\n\r\nexport type StyleSymbolType =\r\n | PointSymbolType\r\n | PolygonSymbol\r\n | PolylineSymbols\r\n | LabelType\r\n | RasterSymbol\r\n | CompositeSymbolType\r\n | H3GridSymbolDc\r\n | ClusterSymbolDc;\r\n\r\nexport type StyleSymbolTypes = StyleSymbolType['type'];\r\n\r\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\r\n\r\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\r\n\r\nexport type FillStyledSymbols = PolygonSymbol;\r\n\r\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\r\n\r\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\r\n\r\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\r\n 'squarePointSymbol'\r\n);\r\n\r\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\r\n 'maskedImagePointSymbol'\r\n);\r\n\r\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\r\n 'imagePointSymbol'\r\n);\r\n\r\nexport const isCombinedPolylineSymbol = symbolTypeGuard<CombinedPolylineSymbolDc>(\"combinedPolylineSymbol\");\r\n\r\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\r\n\r\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\r\n 'polylineSymbol'\r\n);\r\n\r\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\r\n 'simplePolylineSymbol'\r\n);\r\n\r\nexport const isPolylineSymbols = (\r\n symbol: UnknownSymbol\r\n): symbol is PolylineSymbols =>\r\n Boolean(\r\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\r\n );\r\n\r\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\r\n 'compositeSymbol'\r\n);\r\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\r\n\r\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\r\n Boolean(\r\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\r\n );\r\n\r\nexport const isTwoDimensionalSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\r\n\r\nexport const isSizableSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\r\n\r\nexport const isStrokeStyledSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is StrokeStyledSymbols =>\r\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\r\n\r\nexport const isScalablePolylineSymbol = (\r\n symbol: PolylineSymbol | SimplePolylineSymbol\r\n) =>\r\n (symbol.beginning !== null && symbol.ending !== null) ||\r\n (symbol.stroke && symbol.stroke.type !== 'solid');\r\n\r\nexport const isSimpleSymbol = (\r\n symbol: UnknownSymbol\r\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\r\n Boolean(\r\n symbol &&\r\n !isLabelSymbol(symbol) &&\r\n !isCompositeSymbol(symbol) &&\r\n !isRasterSymbol(symbol)\r\n );\r\n\r\nexport const isH3GridSymbol = symbolTypeGuard<H3GridSymbolDc>(\"h3grid\");\r\n\r\nexport const isSvgPointSymbol = symbolTypeGuard<SvgPointSymbol>(\"svgPointSymbol\");\r\n\r\nexport const isClusterSymbol = symbolTypeGuard<ClusterSymbolType>(\"cluster\");\r\n\r\nexport const isClusterFillColor = (symbol: StyleSymbolType, parameter: ClassificationParameterExtended) => {\r\n return isClusterSymbol(symbol) && parameter === \"fillColor\";\r\n};\r\n\r\nexport const getExtractedSymbol = (symbol: StyleSymbolType, extractCluster = false): StyleSymbolType => {\r\n const extracted = isCompositeSymbol(symbol as CompositeSymbolType) ? extractSymbol(symbol)?.symbol : symbol;\r\n\r\n return extractCluster && isClusterSymbol(extracted as ClusterSymbolType)\r\n ? ((extracted as ClusterSymbolType).singleObjectSymbol as StyleSymbolType)\r\n : extracted;\r\n};\r\n","import {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\n","import { LineEndingType } from \"@evergis/api\";\r\n\r\nimport { ClassifyAble } from './parameterValue';\r\n\r\nexport const enum LineMiterSize {\r\n Small = 'small',\r\n Large = 'large',\r\n}\r\n\r\nexport type NoLineMiterType = {\r\n type: LineEndingType.None;\r\n};\r\n\r\ntype LineMiterBase<T extends LineEndingType> = {\r\n type: T;\r\n color?: ClassifyAble<string>;\r\n};\r\n\r\nexport type ArrowLineType = LineMiterBase<LineEndingType.Arrow> & {\r\n strokeWidth?: number;\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type FilledArrowLineMiterType = LineMiterBase<\r\n LineEndingType.FilledArrow\r\n> & {\r\n arrowLength?: number;\r\n arrowWidth?: number;\r\n};\r\nexport type SquareLineMiterType = LineMiterBase<LineEndingType.Square> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledSquareLineMiterType = LineMiterBase<\r\n LineEndingType.FilledSquare\r\n> & {\r\n size?: number;\r\n};\r\nexport type CircleLineMiterType = LineMiterBase<LineEndingType.Circle> & {\r\n size?: number;\r\n strokeWidth?: number;\r\n};\r\nexport type FilledCircleLineMiterType = LineMiterBase<\r\n LineEndingType.FilledCircle\r\n> & {\r\n size?: number;\r\n};\r\n\r\nexport type FilledLineMitters =\r\n | FilledArrowLineMiterType\r\n | FilledSquareLineMiterType\r\n | FilledCircleLineMiterType;\r\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\r\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\r\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\r\nexport type LineMiterType =\r\n | NoLineMiterType\r\n | ArrowLineMiters\r\n | SquareLineMiters\r\n | CircleLineMiters;\r\n\r\nexport const isMiterExist = (\r\n miter?: undefined | LineMiterType\r\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\r\n Boolean(miter && miter.type !== LineEndingType.None);\r\n\r\nexport const isFilledLineMitter = (\r\n miter: LineMiterType\r\n): miter is FilledLineMitters =>\r\n miter.type === LineEndingType.FilledCircle ||\r\n miter.type === LineEndingType.FilledArrow ||\r\n miter.type === LineEndingType.FilledSquare;\r\n\r\nexport const isArrowLineMiter = (\r\n miter: LineMiterType\r\n): miter is ArrowLineMiters =>\r\n miter.type === LineEndingType.Arrow ||\r\n miter.type === LineEndingType.FilledArrow;\r\n\r\nexport const isSquareLineMiter = (\r\n miter: LineMiterType\r\n): miter is SquareLineMiters =>\r\n miter.type === LineEndingType.Square ||\r\n miter.type === LineEndingType.FilledSquare;\r\n\r\nexport const isCircleLineMiter = (\r\n miter: LineMiterType\r\n): miter is CircleLineMiters =>\r\n miter.type === LineEndingType.Circle ||\r\n miter.type === LineEndingType.FilledCircle;\r\n","import { PointSymbolType, UnknownSymbol } from './symbol';\nimport { ParameterByAttribute } from './parameterValue';\n\nimport { isParameterByAttribute } from '../../classification/parameterValue';\n\nexport type SimpleOffset = [number, number];\n\nexport type ClassifiedOffset = [\n ParameterByAttribute<number>,\n ParameterByAttribute<number>\n];\n\nexport type Offset = SimpleOffset | ClassifiedOffset;\n\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\n offset &&\n !isParameterByAttribute(offset[0]) &&\n !isParameterByAttribute(offset[1]);\n\nexport const isSymbolWithOffset = (\n symbol: UnknownSymbol\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\n","import { StyleSymbolType } from './symbol';\r\n\r\nexport type ParameterByAttributeValue<Value> = {\r\n condition: string;\r\n value: Value;\r\n title: string | null;\r\n};\r\n\r\nexport type ParameterByAttribute<Value> = {\r\n type: 'byAttribute';\r\n defaultValue: Value;\r\n title: string | null;\r\n values: ParameterByAttributeValue<Value>[];\r\n};\r\n\r\nexport type CalculatedParameter<Value> = {\r\n type: 'calculated';\r\n expression: string;\r\n defaultValue: Value;\r\n title?: string | null;\r\n};\r\n\r\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\r\n\r\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\r\n\r\nexport type ParameterValue = string | number | number[] | Date;\r\n\r\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\r\n\r\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n>[];\r\n\r\nexport type ClassifiedParameterValue = ClassifyAble<ParameterValueWithSymbol>;\r\n\r\nexport type UnidentifiedParameterValue =\r\n | ParameterValueWithSymbol\r\n | Partial<ClassifyAble<ParameterValueWithSymbol>>\r\n | Partial<CalculatedAble<ParameterValue>>;\r\n\r\nexport type CalculatedParameterValue = CalculatedAble<ParameterValue>;\r\n\r\nexport const isStringParameterValue = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is string => typeof parameterValue === 'string';\r\n\r\nexport const isParameterValueSimple = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is ParameterValue =>\r\n typeof parameterValue === 'number' || typeof parameterValue === 'string';\r\n\r\nexport const isParameterValueSymbol = (\r\n parameterValue: ParameterValueWithSymbol\r\n): parameterValue is StyleSymbolType => !isParameterValueSimple(parameterValue);\r\n","import { StyleDc } from '@evergis/api';\n\nimport { LabelType } from './label';\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\n\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\n ignoreLabel?: boolean;\n label: LabelType | null;\n raster: RasterSymbol | null;\n children: Style[] | null;\n};\n\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\n","import { StyleDc } from '@evergis/api';\r\n\r\nimport { extractStyle, packStyle } from './compositeSymbol';\r\nimport { Style } from './types';\r\n\r\nimport { ClassificationManager } from '../classification';\r\n\r\nexport class EvergisStyle {\r\n public classificationManager: ClassificationManager;\r\n private readonly style: Style;\r\n\r\n constructor(style: StyleDc) {\r\n this.style = extractStyle(style);\r\n this.classificationManager = new ClassificationManager(this.style);\r\n }\r\n\r\n public serialize() {\r\n return packStyle(this.style);\r\n }\r\n\r\n public hasRasters() {\r\n return !!(\r\n this.style.raster ||\r\n (this.style.children || []).some(style => style.raster)\r\n );\r\n }\r\n\r\n get symbol() {\r\n return this.style.symbol;\r\n }\r\n\r\n get raster() {\r\n return this.style.raster;\r\n }\r\n get label() {\r\n return this.style.label;\r\n }\r\n\r\n get children() {\r\n return this.style.children;\r\n }\r\n\r\n get title() {\r\n return this.style.title;\r\n }\r\n\r\n get condition() {\r\n return this.style.condition;\r\n }\r\n\r\n get ignoreLabel() {\r\n return this.style.ignoreLabel;\r\n }\r\n\r\n get resolution(): Nullable<[number, number]> {\r\n const { minResolution, maxResolution } = this.style;\r\n\r\n return minResolution === void 0 || maxResolution === void 0\r\n ? null\r\n : [minResolution, maxResolution];\r\n }\r\n}\r\n","import {\r\n ClassificationClass,\r\n ClassificationExtras,\r\n ClassificationParameterExtended,\r\n ExtendedClassification,\r\n} from './types';\r\nimport { ClassificationCondition } from './ClassificationCondition';\r\nimport { pathsToParameter } from './parameter';\r\nimport { isParameterByAttribute } from './parameterValue';\r\n\r\nimport {\r\n isStyle,\r\n isTwoDimensionalSymbol,\r\n ParameterByAttributeValue,\r\n ParameterValueWithSymbol,\r\n Style,\r\n StyleSymbolType,\r\n} from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nconst toClassificationClass = (\r\n parameterValue: ParameterValueWithSymbol,\r\n title: string,\r\n condition: ClassificationCondition\r\n): ClassificationClass => ({\r\n parameterValue,\r\n title,\r\n ...(condition.isUnique()\r\n ? {\r\n uniqueValue: condition.uniqueValue,\r\n }\r\n : {\r\n from: condition.range[0],\r\n to: condition.range[1],\r\n }),\r\n});\r\n\r\nconst DEFAULT_EXTRAS: ClassificationExtras = {\r\n defaultTitle: '',\r\n // @ts-ignore\r\n defaultValue: null,\r\n};\r\n\r\nexport const toClassification = (\r\n values: (ParameterByAttributeValue<ParameterValueWithSymbol> | Style)[],\r\n parameter: ClassificationParameterExtended,\r\n extras: ClassificationExtras = DEFAULT_EXTRAS\r\n): ExtendedClassification =>\r\n // @ts-ignore\r\n values.reduce(\r\n // @ts-ignore\r\n (classification: ExtendedClassification, value) => {\r\n const classificationCondition = new ClassificationCondition(\r\n value.condition || ''\r\n );\r\n const classificationValue = toClassificationClass(\r\n isStyle(value) ? value.symbol : value.value,\r\n // @ts-ignore\r\n value.title,\r\n classificationCondition\r\n );\r\n\r\n classification.values.push(classificationValue);\r\n\r\n return {\r\n ...classification,\r\n type: classification.type || classificationCondition.type,\r\n attribute:\r\n classification.attribute || classificationCondition.attributeName,\r\n };\r\n },\r\n {\r\n ...extras,\r\n attribute: null,\r\n parameter,\r\n type: null,\r\n values: [],\r\n }\r\n );\r\n\r\nexport const getClassifications = (\r\n symbol: StyleSymbolType,\r\n pathContext: ClassificationParameterExtended[] = []\r\n): ExtendedClassification[] =>\r\n Object.entries(symbol).reduce(\r\n (classifications, [parameter, parameterValue]) => {\r\n const skipHeight =\r\n isTwoDimensionalSymbol(symbol) && parameter === 'height';\r\n const skip = !isObject(parameterValue) || skipHeight;\r\n\r\n if (skip) {\r\n return classifications;\r\n }\r\n\r\n if (!isParameterByAttribute(parameterValue)) {\r\n return [\r\n ...classifications,\r\n // @ts-ignore\r\n ...getClassifications(symbol[parameter], [\r\n ...pathContext,\r\n parameter as ClassificationParameterExtended,\r\n ]),\r\n ];\r\n }\r\n\r\n const classification = toClassification(\r\n parameterValue.values,\r\n pathsToParameter([\r\n ...pathContext,\r\n parameter as ClassificationParameterExtended,\r\n ]),\r\n {\r\n // @ts-ignore\r\n defaultTitle: parameterValue.title,\r\n defaultValue: parameterValue.defaultValue,\r\n }\r\n );\r\n\r\n return [...classifications, classification];\r\n },\r\n [] as ExtendedClassification[]\r\n );\r\n","import { getClassifications, toClassification } from './getClassifications';\nimport { ExtendedClassification } from './types';\n\nimport { Style } from '../style/types';\n\nexport class ClassificationManager {\n private classifications: ExtendedClassification[] = [];\n\n constructor(private style: Style) {\n this.collectClassifications();\n }\n\n public get values() {\n return this.classifications;\n }\n\n public find(predicate: (classification: ExtendedClassification) => boolean) {\n for (const classification of this.classifications) {\n if (predicate(classification)) {\n return classification;\n }\n }\n\n return null;\n }\n\n public filter(callback: (classification: ExtendedClassification) => boolean) {\n return this.classifications.filter(callback);\n }\n\n public map<T extends ValueOf<ExtendedClassification>>(\n callback: (classification: ExtendedClassification) => T\n ) {\n return this.classifications.map(callback);\n }\n\n public reduce<T>(\n callback: (classifications: T, classification: ExtendedClassification) => T,\n initial: T\n ) {\n return this.classifications.reduce(callback, initial);\n }\n\n public hasClassifications() {\n return this.classifications.length > 0;\n }\n\n private collectClassifications() {\n if (this.style.children && this.style.children.length) {\n this.classifications.push(\n toClassification(this.style.children, 'symbol')\n );\n }\n\n if (this.style.symbol) {\n this.classifications.push(...getClassifications(this.style.symbol));\n }\n }\n}\n","import { getParameterValue } from './parameterValue';\r\n\r\nimport { StyleSymbolType, Unclassify } from '../style';\r\n\r\nimport { isObject } from '../../utils/isObject';\r\n\r\nexport const unClassify = <V extends StyleSymbolType>(\r\n symbol: V\r\n): Unclassify<V> =>\r\n Object.entries(symbol).reduce((flatSymbol, [parameter, parameterValue]) => {\r\n let result = Array.isArray(parameterValue)\r\n ? parameterValue.map(getParameterValue)\r\n : getParameterValue(parameterValue);\r\n\r\n if (isObject(result)) {\r\n return {\r\n ...flatSymbol,\r\n [parameter]: unClassify(parameterValue),\r\n };\r\n }\r\n\r\n return {\r\n ...flatSymbol,\r\n [parameter]: result,\r\n };\r\n }, {} as Unclassify<V>);\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\n\r\nexport const DEFAULT_LANGUAGE = \"en\";\r\n\r\nexport const resources = {\r\n en: {},\r\n ru: {},\r\n} as const;\r\n\r\ni18n\r\n .use(initReactI18next)\r\n .init({\r\n fallbackLng: DEFAULT_LANGUAGE,\r\n ns: Object.keys(resources[DEFAULT_LANGUAGE]),\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n resources,\r\n supportedLngs: Object.keys(resources),\r\n });\r\n\r\nexport { i18n };\r\n","import { i18n } from \"../../i18n\";\r\nimport { RangeClass } from './types';\r\n\r\nexport const printRangeClass = (value: RangeClass, index: number): string => {\r\n const isDouble = Boolean(value.attribute?.type === 'Double');\r\n const isDate = Boolean(value.attribute?.type === 'DateTime');\r\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\r\n\r\n if (from === null) {\r\n return `${to} ${isDate ? i18n.t(\"andBefore\", { ns: \"style\" }) : i18n.t(\"andLess\", { ns: \"style\" })}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${isDate ? i18n.t(\"after\", { ns: \"style\" }) : i18n.t(\"more\", { ns: \"style\" })} ${from}`;\r\n }\r\n\r\n return from === to ? `${from}` : `${from} - ${to}`;\r\n};\r\n\r\nfunction getRangeValues(\r\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\r\n isDouble: boolean,\r\n isDate: boolean,\r\n index: number\r\n): Pick<RangeClass, 'from' | 'to'> {\r\n return {\r\n from: from !== null && index !== 0 ?\r\n (isDate ? from : (isDouble ? +from : +from + 1)) : from,\r\n to,\r\n };\r\n}\r\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","// TODO reduce\nexport const PREVIEW_LIMITS = {\n STROKE_WIDTH_MIN: 0.25,\n STROKE_WIDTH_MAX: 6.5,\n};\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\r\nimport { unique } from '@evergis/api';\r\n\r\nimport { PREVIEW_LIMITS } from './previewLimits';\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport { ClassifyAble, StrokeBrushType } from '../core/style';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\n// TODO refactoring\r\nexport const enum StrokeStyle {\r\n Solid,\r\n Dash,\r\n Dot,\r\n DashDot,\r\n DashDotDot,\r\n Custom,\r\n}\r\n\r\ninterface StrokeStylePreset {\r\n style: StrokeStyle;\r\n type: StrokeBrushType['type'];\r\n intervals: number[];\r\n}\r\nexport const SOLID_INTERVALS: number[] = [];\r\n\r\nexport const solidStrokeStylePreset: StrokeStylePreset = {\r\n style: StrokeStyle.Solid,\r\n type: 'solid',\r\n intervals: SOLID_INTERVALS,\r\n};\r\nexport const strokeStylePresets: StrokeStylePreset[] = [\r\n solidStrokeStylePreset,\r\n {\r\n style: StrokeStyle.Dot,\r\n type: 'dashed',\r\n intervals: [2, 2],\r\n },\r\n {\r\n style: StrokeStyle.Dash,\r\n type: 'dashed',\r\n intervals: [3, 3, 3, 3],\r\n },\r\n {\r\n style: StrokeStyle.DashDot,\r\n type: 'dashed',\r\n intervals: [5, 2, 1, 2],\r\n },\r\n {\r\n style: StrokeStyle.DashDotDot,\r\n type: 'dashed',\r\n intervals: [5, 2, 1, 1, 1, 2],\r\n },\r\n {\r\n style: StrokeStyle.Custom,\r\n type: 'dashed',\r\n intervals: [5, 4],\r\n },\r\n];\r\n\r\nconst walkByNumbersGroup = (\r\n numbers: number[],\r\n offset: number,\r\n walker: (group: [number, number], offset: number) => [number, number]\r\n): number[] => {\r\n if (!numbers || !numbers.length) return [];\r\n\r\n const newNumbers = [];\r\n\r\n for (let i = 0; i < numbers.length; i++) {\r\n if (i % 2) {\r\n newNumbers.push(...walker([numbers[i - 1], numbers[i]], offset));\r\n }\r\n }\r\n\r\n return newNumbers;\r\n};\r\n\r\nexport const toIntervals = (numbers: number[], width: ClassifyAble<number>) =>\r\n walkByNumbersGroup(\r\n numbers,\r\n clamp(\r\n getParameterValue(width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n ([length, gap], offset) => [length * offset, gap * offset]\r\n );\r\n\r\nexport const toLineDash = (numbers: number[], width: ClassifyAble<number>) =>\r\n walkByNumbersGroup(\r\n numbers,\r\n clamp(\r\n getParameterValue(width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n ([length, gap], offset) => [\r\n Math.round(length / Math.max(1, Math.min(offset, 16) / 4)),\r\n Math.round(gap + 1 + Math.max(1, Math.min(offset, 16) / 2)),\r\n ]\r\n );\r\n\r\nexport const getLineDash = (brush: StrokeBrushType): number[] => {\r\n if (!brush || brush.type === 'solid') return [];\r\n\r\n // @ts-ignore\r\n return toLineDash(brush.intervals, brush.width);\r\n};\r\n\r\nexport const defineStrokeStylePreset = (intervals: number[]) => {\r\n if (!intervals.length) return solidStrokeStylePreset;\r\n\r\n return strokeStylePresets.find(preset => {\r\n if (preset.intervals.length !== intervals.length) return false;\r\n\r\n const uniqueStrokeWidths = preset.intervals\r\n .map((presetInterval, i) => intervals[i] / presetInterval)\r\n .filter(unique);\r\n\r\n return uniqueStrokeWidths.length === 1;\r\n });\r\n};\r\n\r\nexport const getDashStylePreset = (\r\n dashStyle: StrokeStyle\r\n): StrokeStylePreset | undefined =>\r\n strokeStylePresets.find(preset => preset.style === dashStyle);\r\n","import { BrushFill as sBrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { Color } from '@evergis/color';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n FillBrushType,\n HatchBrush,\n isHatchBrush,\n PolygonSymbol,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nconst ALPHA_NORMALIZER = 65025;\n\nconst sum = (numbers: number[]) =>\n numbers.reduce((result, num) => result + num, 0);\n\nconst shouldFillMatrixCell = (\n matrixSize: number,\n hatchAngle: number,\n x: number,\n y: number\n) => {\n const center = Math.round(matrixSize / 2);\n\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\n return true;\n }\n if (hatchAngle === Math.PI / 4 && y === x) {\n return true;\n }\n if (hatchAngle === Math.PI / 2 && y === center) {\n return true;\n }\n\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\n};\n\nconst createEmptyMatrix = (size: number): number[][] =>\n Array(size)\n .fill(null)\n .map(() => Array(size));\n\nconst fillMatrix = (\n matrix: number[][],\n filler: (x: number, y: number, size: number) => number\n) => {\n const matrixSize = matrix.length;\n\n for (let x = 0; x < matrixSize; x++) {\n for (let y = 0; y < matrixSize; y++) {\n matrix[x][y] = filler(x, y, matrixSize);\n }\n }\n};\n\nconst createFillBrushMatrix = (\n hatchAngle: number,\n hatchWidth: number,\n scalingFactor: number[]\n) => {\n const matrixSize = Math.max(\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\n hatchWidth\n );\n const matrix = createEmptyMatrix(matrixSize);\n\n fillMatrix(matrix, (x, y, size) =>\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\n );\n\n return matrix;\n};\n\nconst createSymbolFillBrush = (\n fillBrush: FillBrushType\n): number[][] | undefined => {\n if (fillBrush.type !== 'hatch') return undefined;\n\n return createFillBrushMatrix(\n // @ts-ignore\n getParameterValue(fillBrush.hatchAngle),\n // @ts-ignore\n Math.round(fillBrush.hatchWidth),\n fillBrush.scalingFactor\n );\n};\n\nexport class SGisBrushFill extends sBrushFill {\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n fillBackground: getHexColor(\n // @ts-ignore\n getParameterValue(originalSymbol.fill?.color)\n ),\n fillForeground: isHatchBrush(originalSymbol.fill)\n ? // @ts-ignore\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\n : void 0,\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\n lineCap: 'square',\n });\n }\n\n _updateBrush() {\n // @ts-ignore\n if (!this._initialized) return;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n const brush = this.fillBrush;\n const brushSize = brush.length;\n const foreground = new Color(this.fillForeground);\n const background = new Color(this.fillBackground);\n\n canvas.height = brushSize;\n canvas.width = brushSize;\n for (let i = 0; i < brushSize; i++) {\n // eslint-disable-next-line id-length\n for (let j = 0; j < brush[i].length; j++) {\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\n const dstA = (background.a / 255) * (1 - srcA);\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\n const red = Math.round(\n Math.min(255, background.r * dstA + foreground.r * srcA)\n );\n const green = Math.round(\n Math.min(255, background.g * dstA + foreground.g * srcA)\n );\n const blue = Math.round(\n Math.min(255, background.b * dstA + foreground.b * srcA)\n );\n\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\n ctx.fillRect(j, i, 1, 1);\n }\n }\n this._brush = new Image();\n this._brush.src = canvas.toDataURL();\n }\n\n clone() {\n return new SGisBrushFill(this.originalSymbol);\n }\n}\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisImageFill extends sImageFill {\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisImageFill(this.originalSymbol);\n }\n}\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisPolygonSymbol extends sPolygonSymbol {\n constructor(public originalSymbol: PolygonSymbol) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\n // TODO?: may be it should be defined by user\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisPolygonSymbol(this.originalSymbol);\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { projectRings } from '@evergis/sgis/es/geotools';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { LineMiterSize } from '../../core/style/types';\r\n\r\nexport type MiterPosition = 'left' | 'right';\r\n\r\nexport interface LineMiterRenderBaseInfo {\r\n position: MiterPosition;\r\n color: string;\r\n strokeWidth: number;\r\n kind: LineEndingType;\r\n size: LineMiterSize;\r\n}\r\n\r\nconst adaptMiterRings = (\r\n rings: Coordinates[][],\r\n resolution: number,\r\n fromCrs: Crs,\r\n toCrs: Crs\r\n) => {\r\n const projected = projectRings(rings, fromCrs, toCrs);\r\n\r\n return simplifyCoordinates(\r\n projected.map(ring =>\r\n // @ts-ignore\r\n ring.map(([x, y]) => [x / resolution, y / -resolution])\r\n ),\r\n 1\r\n );\r\n};\r\n\r\nconst miterSizeCalcs: Record<LineMiterSize, (strokeWidth: number) => number> = {\r\n [LineMiterSize.Small]: strokeWidth => (strokeWidth + 1) * 3 + 1,\r\n [LineMiterSize.Large]: strokeWidth => (strokeWidth + 1) * 5 - 1,\r\n};\r\n\r\nexport abstract class LineMiterRender implements LineMiterRenderBaseInfo {\r\n // @ts-ignore\r\n position: MiterPosition;\r\n // @ts-ignore\r\n color: string;\r\n // @ts-ignore\r\n strokeWidth: number;\r\n // @ts-ignore\r\n kind: LineEndingType;\r\n // @ts-ignore\r\n size: LineMiterSize;\r\n\r\n constructor(baseInfo: LineMiterRenderBaseInfo) {\r\n Object.assign(this, baseInfo);\r\n }\r\n\r\n getAnchor = (rings: Coordinates[][]): Coordinates => {\r\n if (this.position === 'right') {\r\n const lastRing = rings[rings.length - 1];\r\n\r\n return (lastRing && lastRing[lastRing.length - 1]) || null;\r\n }\r\n\r\n const firstRing = rings[0];\r\n\r\n return (firstRing && firstRing[0]) || null;\r\n };\r\n\r\n getRender(\r\n anchorRings: Coordinates[][],\r\n anchorCrs: Crs,\r\n resolution: number,\r\n currentCrs: Crs\r\n ): Render {\r\n const xMultiplier = this.position === 'right' ? 1 : -1;\r\n const miterAnchor = this.getAnchor(anchorRings);\r\n const miterRings = this.createRings(miterAnchor, xMultiplier);\r\n const projectedMiterRings = adaptMiterRings(\r\n miterRings,\r\n resolution,\r\n anchorCrs,\r\n currentCrs\r\n );\r\n\r\n return this.createRender(projectedMiterRings);\r\n }\r\n\r\n get miterSize() {\r\n const calcMiterSize = miterSizeCalcs[this.size];\r\n\r\n return calcMiterSize ? calcMiterSize(this.strokeWidth) : 1;\r\n }\r\n abstract get usageSize(): number;\r\n abstract createRings(\r\n anchor: Coordinates,\r\n xMultiplier: number\r\n ): Coordinates[][];\r\n abstract createRender(rings: Coordinates[][]): Render;\r\n}\r\n","import { LineEndingType } from \"@evergis/api\";\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nexport class ArrowLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y],\r\n [x, y - this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineEndingType.FilledArrow;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: isFilled,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\r\n\r\nexport const NO_CONTENT_VALUE = '—';\r\n\r\nexport type DateType = number | Date;\r\nexport type RawDateType = string | DateType;\r\n\r\nexport enum DateFormat {\r\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\r\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\r\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\r\n AxisTooltip = \"d MMMM yyyy\",\r\n}\r\n\r\ninterface FormatDateOptions {\r\n dateFormat?: DateFormat;\r\n defaultValue?: RawDateType;\r\n}\r\n\r\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\r\n\r\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\r\n if (!rawDate) return null;\r\n\r\n if (typeof rawDate === \"string\") {\r\n for (const parser of stringDateParsers) {\r\n const date = parser(rawDate);\r\n\r\n if (isValid(date)) {\r\n return toDate(date);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n const parsedDate = toDate(rawDate);\r\n\r\n return isValid(parsedDate) ? parsedDate : null;\r\n};\r\n\r\nexport const formatDate = (\r\n date?: RawDateType,\r\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\r\n): string => {\r\n const dateValue = date ? getDate(date) : null;\r\n\r\n if (isValid(dateValue)) {\r\n return format(dateValue as Date, dateFormat);\r\n }\r\n\r\n return defaultValue.toString();\r\n};\r\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\r\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\r\n\r\n return !isStringAsInn(value) && value.match(phoneRegexp);\r\n}\r\n\r\nexport function isStringAsInn(value: string) {\r\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\r\n\r\n return innRegexp.test(value);\r\n}\r\n\r\nexport function isStringAsKpp(value: string) {\r\n const kppRegexp = /^(([0-9]{9}))$/;\r\n\r\n return kppRegexp.test(value);\r\n}\r\n\r\nexport function isStringAsOgrn(value: string) {\r\n const ogrnRegexp = /^([0-9]{13})?$/;\r\n\r\n return ogrnRegexp.test((+value).toString());\r\n}\r\n\r\nexport function isStringContainsDate(value: string) {\r\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\r\n return dateRegexp.test(value);\r\n}\r\n\r\nexport function isRequisiteNumbers(value: string) {\r\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\r\n}\r\n\r\nexport function isStringAsPhone(value: string) {\r\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\r\n\r\n return (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phoneRegexp.test(value)\r\n );\r\n}\r\n\r\nexport function isStringAsMail(value: string) {\r\n return isStringAsUrl(value) && value.includes('@');\r\n}\r\n\r\nexport function isStringAsUrl(value: string) {\r\n if (isValidUrl(value)) {\r\n return true;\r\n }\r\n\r\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\r\n\r\n const urlKind = value.match(urlRegexp);\r\n\r\n return urlKind !== null;\r\n}\r\n\r\nexport function isValidUrl(value: string) {\r\n try {\r\n new URL(value);\r\n } catch (_) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport const mailHref = (mail: string) => `mailto:${mail}`;\r\n\r\nexport const phoneHref = (mail: string) => `tel:${mail}`;\r\n\r\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\r\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\r\n\r\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\r\nimport { numberWithSpaces } from '../../utils/format';\r\nimport {\r\n isStringAsMail,\r\n isStringAsPhone,\r\n isStringAsUrl,\r\n matchPhone,\r\n isRequisiteNumbers,\r\n isStringAsOgrn,\r\n isStringContainsDate,\r\n} from '../../utils/url';\r\n\r\nconst stringAttribute = (value: string) => ({\r\n type: AttributeValueType.String,\r\n value,\r\n});\r\n\r\nconst urlAttribute = (value: string) => ({\r\n type: AttributeValueType.Url,\r\n value,\r\n});\r\n\r\nconst mailAttribute = (value: string) => ({\r\n type: AttributeValueType.Mail,\r\n value,\r\n});\r\n\r\nconst phoneAttribute = (value: string) => ({\r\n type: AttributeValueType.Phone,\r\n value,\r\n});\r\n\r\nconst convertStringAttribute = (value: string) => {\r\n if (isStringAsMail(value)) {\r\n return mailAttribute(value);\r\n }\r\n\r\n if (isStringAsUrl(value)) {\r\n return urlAttribute(value);\r\n }\r\n\r\n if (isStringAsPhone(value)) {\r\n return phoneAttribute(value);\r\n }\r\n\r\n return stringAttribute(value);\r\n};\r\n\r\nconst formatStringAttribute = (value: string): AttributeValue[] => {\r\n const phones = matchPhone(value);\r\n\r\n if (\r\n !isRequisiteNumbers(value) &&\r\n !isStringContainsDate(value) &&\r\n phones &&\r\n phones.length\r\n ) {\r\n return phones.map(phoneAttribute);\r\n }\r\n\r\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\r\n\r\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\r\n return [\r\n stringAttribute(\r\n attributeValues\r\n .map(({ value }) =>\r\n isNaN(+value) || isRequisiteNumbers(value)\r\n ? isStringAsOgrn(value)\r\n ? +value\r\n : value\r\n : numberWithSpaces(+value, 0, '')\r\n )\r\n .join(' ')\r\n ),\r\n ];\r\n }\r\n\r\n return attributeValues;\r\n};\r\n\r\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\r\n stringAttribute(value.toString());\r\n\r\nconst formatIntAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, 0, ''));\r\n\r\nconst DOUBLE_FRACTIONS = 2;\r\n\r\nconst formatDoubleAttribute = (value: number): AttributeValue =>\r\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\r\n\r\nconst isNullOrUndefined = <Value>(\r\n value: Value | null | undefined\r\n): value is null | undefined => value === null || value === undefined;\r\n\r\nconst NO_CONTENT_ATTRIBUTE = {\r\n type: AttributeValueType.String,\r\n value: NO_CONTENT_VALUE,\r\n};\r\n\r\nexport const formatAttributeValue = (\r\n attribute: FeatureAttribute\r\n): AttributeValue[] => {\r\n if (isNullOrUndefined(attribute.value)) {\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n\r\n switch (attribute.type) {\r\n case 'String':\r\n return formatStringAttribute(attribute.value as string);\r\n case 'DateTime':\r\n return [formatDateTimeAttribute(attribute.value as Date)];\r\n case 'Int32':\r\n case 'Int64':\r\n return [formatIntAttribute(attribute.value as number)];\r\n case 'Double':\r\n return [formatDoubleAttribute(attribute.value as number)];\r\n default:\r\n return [NO_CONTENT_ATTRIBUTE];\r\n }\r\n};\r\n","import {\n Crs,\n ellipticalMercator,\n geo,\n webMercator,\n wgs84,\n} from '@evergis/sgis/es/Crs';\n\n/** Spatial Reference WKID using for @evergis/sgis */\nexport enum SrId {\n /** 3857 */\n WebMercator = 3857,\n /** 4326 */\n Geo = 4326,\n /** 84 */\n Wgs84 = 84,\n /** 3395 */\n EllipticalMercator = 3395,\n}\n\nexport const CRS_MAP: Record<SrId, Crs> = {\n [SrId.WebMercator]: webMercator,\n [SrId.Geo]: geo,\n [SrId.Wgs84]: wgs84,\n [SrId.EllipticalMercator]: ellipticalMercator,\n};\n\nexport const DEFAULT_SRID = SrId.WebMercator;\n\nexport const DEFAULT_CRS = CRS_MAP[DEFAULT_SRID];\n\nexport const getCrs = (srId: number): Crs => CRS_MAP[srId as SrId];\n","import { AttributeType, LayerDefinitionDc } from '@evergis/api';\n\nimport {\n Attribute,\n ClassificationAttribute,\n FeatureAttribute,\n FeatureAttributeValue,\n LayerAttribute,\n} from './types';\n\nimport { LayerAttributes } from '../layer';\n\nexport const getFeatureAttributeType = (\n attributeValue?: FeatureAttributeValue\n): AttributeType => {\n if (attributeValue instanceof Date) {\n return AttributeType.DateTime;\n }\n\n if (typeof attributeValue === 'string') {\n return AttributeType.String;\n }\n\n if (typeof attributeValue === 'number') {\n return AttributeType.Int64;\n }\n\n return AttributeType.Unknown;\n};\n\nexport const getLayerAttributes = (\n layerDefinition?: LayerDefinitionDc\n): LayerAttribute[] => {\n const attributes = (layerDefinition && layerDefinition.attributes) || {};\n\n return Object.entries(attributes).map(([name, definition]) => ({\n name,\n ...definition,\n })) as LayerAttribute[];\n};\n\nexport const getFeatureAttributes = (\n attributes?: Record<string, FeatureAttributeValue>\n): FeatureAttribute[] => {\n return attributes\n ? Object.entries(attributes).map(([name, value]) => ({\n name,\n value,\n type: getFeatureAttributeType(value),\n }))\n : [];\n};\n\nexport const getClassificationAttribute = (\n attributeName: string,\n attributes: LayerAttributes\n): ClassificationAttribute => {\n const attribute = attributes[attributeName];\n const attrNamePart = {\n name: attributeName,\n type: attribute?.type || AttributeType.Unknown,\n };\n\n return attribute ? { ...attrNamePart, ...attribute } : attrNamePart;\n};\n\nexport const mergeAttributes = (\n attributes1: Attribute[],\n attributes2: Attribute[]\n) => {\n return attributes1.map(attribute => ({\n ...attribute,\n ...(attributes2.find(({ name }) => attribute.name === name) || {}),\n }));\n};\n","import { FeatureDc, GeometryDc, GeometryType } from '@evergis/api';\r\nimport { MultiPoint } from '@evergis/sgis/es/features/MultiPoint';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { CRS_MAP, SrId } from '../crs';\r\n\r\nimport { FeatureAttribute } from '../attributes';\r\nimport { getFeatureAttributes } from '../attributes/utils';\r\n\r\nimport { StyleSymbolType } from '../style';\r\n\r\nimport {\r\n selectedPoint,\r\n selectedPolygon,\r\n selectedPolyline,\r\n} from '../../symbols';\r\n\r\nexport type FeatureDCExtened = FeatureDc & {\r\n layer?: string;\r\n};\r\n\r\nexport class EvergisFeature {\r\n public id?: string | null = null;\r\n public displayName?: string | null = null;\r\n public geometry?: GeometryDc | null = null;\r\n\r\n public layerName?: string | null = null;\r\n public layerAlias?: string | null = null;\r\n public attributes?: FeatureAttribute[] | null = null;\r\n public symbol?: StyleSymbolType | null = null;\r\n\r\n constructor(feature: FeatureDCExtened) {\r\n this.id = feature.id;\r\n this.displayName = feature.id;\r\n this.geometry = feature.geometry;\r\n\r\n this.layerName = feature.layer;\r\n this.layerAlias = feature.layer;\r\n this.attributes = getFeatureAttributes(feature.attributes);\r\n }\r\n\r\n public sGisFeature() {\r\n if (!this.geometry || !this.symbol) {\r\n return null;\r\n }\r\n\r\n // @ts-ignore\r\n const { type, coordinates, sr } = this.geometry;\r\n const crs = CRS_MAP[sr as SrId];\r\n\r\n if (!crs) {\r\n return null;\r\n }\r\n\r\n switch (type) {\r\n case GeometryType.Point:\r\n return new PointFeature(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Multipoint:\r\n return new MultiPoint(coordinates, {\r\n symbol: selectedPoint,\r\n crs,\r\n });\r\n case GeometryType.Polyline:\r\n return new Polyline(coordinates, {\r\n symbol: selectedPolyline,\r\n crs,\r\n });\r\n case GeometryType.Polygon:\r\n return new Polygon(coordinates, {\r\n symbol: selectedPolygon,\r\n crs,\r\n });\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n public extent() {\r\n const feature = this.sGisFeature();\r\n\r\n return feature && feature.bbox;\r\n }\r\n}\r\n","import { ConditionAttributes, ConditionEvaluator } from '@evergis/condition';\n\nexport function evaluateCondition(\n condition: string,\n attributes: ConditionAttributes\n) {\n try {\n const evaluator = new ConditionEvaluator(attributes);\n const result = evaluator.evaluate(condition);\n\n if (result instanceof Error) {\n return null;\n }\n\n return result;\n } catch {\n return null;\n }\n}\n","import { evaluateCondition } from './evaluateCondition';\n\nimport { FeatureAttribute, FeatureAttributeValue } from '../attributes';\n\nimport {\n ClassificationCondition,\n isParameterByAttribute,\n} from '../classification';\n\nimport {\n ClassifiedParameterValue,\n EvergisStyle,\n ParameterByAttributeValue,\n ParameterByAttributeValues,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nfunction getAttributeValue(\n attributes: FeatureAttribute[],\n attributeName: string\n) {\n const attributeMeta = attributes.find(({ name }) => name === attributeName);\n\n return attributeMeta ? attributeMeta.value : null;\n}\n\nexport const getAttributeNameFromCondition = (\n condition: string\n): string | null => new ClassificationCondition(condition).attributeName;\n\nexport const getAttributeNameFromClassified = (\n values: ParameterByAttributeValue<ParameterValueWithSymbol>[]\n): string | null =>\n values.length > 0 ? getAttributeNameFromCondition(values[0].condition) : null;\n\nfunction findFeatureValue(\n parameterValues: ParameterByAttributeValues,\n [name, value]: [string, FeatureAttributeValue | undefined]\n) {\n return value !== null\n ? parameterValues.find(\n ({ condition }) =>\n value !== undefined && evaluateCondition(condition, { [name]: value })\n )\n : null;\n}\n\nfunction extractValuesAttribute(\n parameterValues: ParameterByAttributeValues,\n attributes: FeatureAttribute[]\n): [string, FeatureAttributeValue | undefined] {\n const name = getAttributeNameFromClassified(parameterValues) || '';\n const value = name && getAttributeValue(attributes, name);\n\n return [name, value];\n}\n\nfunction evaluateFeatureSymbol(attributes: FeatureAttribute[]) {\n // @ts-ignore\n function calc(\n result: StyleSymbolType,\n [parameterName, parameterValue]: [string, ClassifiedParameterValue]\n ) {\n let newParameterValue;\n\n if (isParameterByAttribute(parameterValue)) {\n const [attributeName, attributeValue] = extractValuesAttribute(\n parameterValue.values,\n attributes\n );\n const featureValue = findFeatureValue(parameterValue.values, [\n attributeName,\n attributeValue,\n ]);\n\n newParameterValue = featureValue\n ? featureValue.value\n : parameterValue.defaultValue;\n } else if (isObject(parameterValue)) {\n // @ts-ignore\n newParameterValue = Object.entries(parameterValue).reduce(\n calc,\n parameterValue\n );\n }\n\n return newParameterValue !== undefined\n ? {\n ...result,\n [parameterName]: newParameterValue,\n }\n : result;\n }\n\n return calc;\n}\n\nexport function findChildFeatureStyle(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n return (\n (childStyles || []).find(({ condition }) => {\n const attributeName =\n condition && getAttributeNameFromCondition(condition);\n const attributeValue =\n attributeName && getAttributeValue(attributes, attributeName);\n\n if (condition && attributeName && attributeValue !== undefined) {\n return evaluateCondition(condition, {\n [attributeName]: attributeValue,\n });\n }\n\n return false;\n }) || null\n );\n}\n\nexport function findChildFeatureSymbol(\n childStyles: Style[],\n attributes: FeatureAttribute[]\n) {\n const featureStyle = findChildFeatureStyle(childStyles, attributes);\n\n return featureStyle ? featureStyle.symbol : null;\n}\n\nexport function getFeatureSymbol(\n style: EvergisStyle,\n attributes: FeatureAttribute[]\n): StyleSymbolType | null {\n if (!style || !style.symbol) {\n return null;\n }\n\n if (style.children !== null) {\n return findChildFeatureSymbol(style.children, attributes) || style.symbol;\n }\n\n return Object.entries(style.symbol).reduce(\n evaluateFeatureSymbol(attributes),\n style.symbol\n );\n}\n","import { FeatureLayerServiceInfoDc, ServiceInfoDc } from '@evergis/api';\r\n\r\nimport { LayerAttribute, formatAttributeValue } from '../attributes';\r\nimport { getLayerAttributes, mergeAttributes } from '../attributes/utils';\r\n\r\nimport { EvergisFeature, getFeatureSymbol } from '../feature';\r\n\r\nimport { EvergisStyle } from '../style';\r\n\r\nexport class EvergisLayer {\r\n public readonly name: string | null = null;\r\n private readonly titleAttribute: string | null = null;\r\n private readonly alias: string | null = null;\r\n private readonly attributes: LayerAttribute[] | null = null;\r\n private readonly style: EvergisStyle | null = null;\r\n\r\n constructor(service: ServiceInfoDc) {\r\n const evergisService = service as FeatureLayerServiceInfoDc;\r\n const { name, alias, style, layerDefinition } = evergisService;\r\n\r\n this.name = name;\r\n this.alias = alias || name;\r\n this.attributes = getLayerAttributes(layerDefinition);\r\n this.style = (style && new EvergisStyle(style)) || null;\r\n this.titleAttribute =\r\n (layerDefinition && layerDefinition.titleAttribute) || null;\r\n }\r\n\r\n public evaluateFeature(feature: EvergisFeature): EvergisFeature {\r\n feature.attributes = mergeAttributes(\r\n feature.attributes || [],\r\n this.attributes || []\r\n );\r\n\r\n feature.symbol =\r\n this.style && getFeatureSymbol(this.style, feature.attributes);\r\n\r\n feature.layerAlias = this.alias;\r\n\r\n const titleAttribute = (feature.attributes || []).find(\r\n ({ name }) => name === this.titleAttribute\r\n );\r\n\r\n const displayName =\r\n (titleAttribute && formatAttributeValue(titleAttribute)[0].value) ||\r\n feature.id;\r\n\r\n feature.displayName = displayName ? `${displayName}` : feature.id;\r\n\r\n return feature;\r\n }\r\n}\r\n\r\nconst findFeatureLayer = (feature: EvergisFeature) => (layer: EvergisLayer) =>\r\n layer.name === feature.layerName;\r\n\r\nexport const evaluateFeature = (layers: EvergisLayer[]) => (\r\n feature: EvergisFeature\r\n) => {\r\n const featureLayer = layers.find(findFeatureLayer(feature));\r\n\r\n return featureLayer ? featureLayer.evaluateFeature(feature) : feature;\r\n};\r\n","import {\n ClassificationClass,\n isRangeClass,\n isUniqueClass,\n printRangeClass,\n} from '../classification';\n\nexport function createValueTitle(\n value: ClassificationClass,\n index: number\n): string {\n if (value.title) return value.title;\n\n if (isRangeClass(value)) return printRangeClass(value, index);\n if (isUniqueClass(value)) return value.uniqueValue;\n\n return '';\n}\n","import { ClassificationParameterExtended } from \"../classification\";\r\n\r\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\r\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\r\n}\r\n","import { AttributeType, FeatureLayerServiceInfoDc } from '@evergis/api';\r\n\r\nimport { ClassificationAttribute } from '../attributes';\r\nimport { ClassificationClass, ClassificationParameterExtended } from '../classification';\r\nimport { LayerAttributes } from '../layer';\r\nimport {\r\n CompositeSymbolType,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n Unclassify,\r\n} from '../style';\r\n\r\nexport type LegendValueType = {\r\n title: string;\r\n parameterValue: ParameterValueWithSymbol;\r\n hiddenCondition?: string;\r\n};\r\n\r\nexport type LegendItem = {\r\n attribute?: ClassificationAttribute;\r\n title: string;\r\n parameter: ClassificationParameterExtended;\r\n values: LegendValueType[];\r\n};\r\n\r\nexport type LayerLegend = {\r\n symbol: Unclassify<Exclude<StyleSymbolType, CompositeSymbolType>>;\r\n items: LegendItem[];\r\n};\r\n\r\nexport type LegendConfig = {\r\n attributes?: LayerAttributes;\r\n skipDefaultValue?: boolean;\r\n reverse?: boolean;\r\n searchable?: boolean;\r\n renderLegendTitle?: (item: React.ReactNode | LegendItem) => React.ReactNode;\r\n renderTitle?: (value: ClassificationClass, index: number) => string;\r\n renderCustomLegend?: (layer: FeatureLayerServiceInfoDc) => React.ReactNode;\r\n searchLayer?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n parameters?: ClassificationParameterExtended[];\r\n};\r\n\r\nexport enum FilterConditionOperation {\r\n AND = \"&&\",\r\n OR = \"||\",\r\n}\r\n\r\nexport enum ComparisonOperator {\r\n /** `==` */\r\n Equals = \"Equals\",\r\n /** `!=` */\r\n NotEquals = \"NotEquals\",\r\n /** `>` */\r\n GreaterThan = \"GreaterThan\",\r\n /** `<` */\r\n LessThan = \"LessThan\",\r\n /** `>=` */\r\n GreaterOrEquals = \"GreaterOrEquals\",\r\n /** `<=` */\r\n LessOrEquals = \"LessOrEquals\",\r\n Filled = \"Filled\",\r\n Empty = \"Empty\",\r\n /** `==` */\r\n Contains = \"Contains\",\r\n /** `!=` */\r\n NotContains = \"NotContains\",\r\n StartsWith = \"StartsWith\",\r\n NotStartsWith = \"NotStartsWith\",\r\n EndsWith = \"EndsWith\",\r\n NotEndsWith = \"NotEndsWith\",\r\n Between = \"Between\",\r\n Outside = \"Outside\",\r\n}\r\n\r\nexport interface FilterCondition<Value> {\r\n id?: string;\r\n attribute: string | null;\r\n type?: AttributeType;\r\n comparisonOperator: ComparisonOperator | null;\r\n value: Value | string[] | null;\r\n}\r\n\r\nexport type FilterConditionType = FilterCondition<string | number>;\r\n","import { softEquals } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { numberWithSpaces } from '../utils/format';\r\n\r\nexport function formatArea(num: number): string {\r\n let result = num;\r\n let measure = 'м²';\r\n\r\n if (num >= 10000000) {\r\n result = num / 1000000;\r\n measure = 'км²';\r\n } else if (num >= 10000) {\r\n result = num / 10000;\r\n measure = 'га';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\n\r\nexport function formatLength(num: number): string {\r\n let result = num;\r\n let measure = 'м';\r\n\r\n if (num > 10000) {\r\n result = num / 1000;\r\n measure = 'км';\r\n }\r\n\r\n return `${numberWithSpaces(result)} ${measure}`;\r\n}\r\nexport function formatPolygonMeasure(area: number, perimiter: number): string {\r\n return `S : ${formatArea(area)} P : ${formatLength(perimiter)}`;\r\n}\r\n\r\nexport function isPolylineLikePolygon(\r\n rings: [number, number][][],\r\n resolution: number\r\n): boolean {\r\n if (rings[0].length <= 3) {\r\n return false;\r\n }\r\n\r\n const coords = rings[0];\r\n const firstPoint = coords[0];\r\n const lastPoint = coords[coords.length - 1];\r\n const distance = resolution * 2;\r\n\r\n return softEquals(firstPoint[0], lastPoint[0], distance) && softEquals(firstPoint[1], lastPoint[1], distance);\r\n}\r\n","export function getScale(scale: number): number {\n const scales = [1, 2, 5];\n\n for (let x = 0; x < 21; x++) {\n for (let y = 0; y < scales.length; y++) {\n const result = Math.pow(10, x) * scales[y];\n\n if (result > scale) {\n return result;\n }\n }\n }\n\n return 1;\n}\n","import { formatLength, formatPolygonMeasure } from '../core';\n\nexport interface MeasureToolFormatters {\n polygon: typeof formatPolygonMeasure;\n length: typeof formatLength;\n}\n\nexport const DEFAULT_FORMATTERS: MeasureToolFormatters = {\n polygon: formatPolygonMeasure,\n length: formatLength,\n};\n","import { PolylineControl } from '@evergis/sgis/es/controls/PolylineControl';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { PolyControlParams } from '@evergis/sgis/es/controls/PolyControl';\nimport { sGisMouseMoveEvent } from '@evergis/sgis/es/commonEvents';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\nimport { geo } from '@evergis/sgis/es/Crs';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport {\n ChangeEvent,\n DrawingFinishEvent,\n} from '@evergis/sgis/es/controls/Control';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { isPolylineLikePolygon } from '../core';\n\nimport {\n createLabelSymbol,\n measureAreaSymbol,\n ShadowedPolySymbol,\n} from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolCreatorParams extends PolyControlParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n areaSymbol?: ShadowedPolySymbol;\n}\n\nconst COORD_FRACTION = 6;\nconst DEFAULT_LABEL_POSITION: [number, number] = [Infinity, Infinity];\n\nexport class BaseMeasureToolCreator extends PolylineControl {\n private tempLabel?: LabelFeature;\n private coordLabel?: LabelFeature;\n private measureResultLabel?: LabelFeature;\n private tempPolygon?: Poly;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n areaSymbol?: ShadowedPolySymbol;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolCreatorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.areaSymbol = params.areaSymbol;\n this.on('pointAdd', this.handlePointAdd);\n // @ts-ignore\n this.on('change', this.updateDistance);\n }\n\n protected _handleMousemove(event: sGisMouseMoveEvent): void {\n super._handleMousemove(event);\n this.drawPointOnMouseMove(event);\n }\n\n protected _activate(): void {\n super._activate();\n this.addTempLabel();\n this.setCursor('pointer');\n }\n\n protected _deactivate(): void {\n super._deactivate();\n this.removeCoordLabel();\n this.removeTempLabel();\n this.removeMeasureLabel();\n this.removeTempPolygon();\n this.setCursor('default');\n }\n\n private handlePointAdd() {\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs }: Polyline = feature;\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.finishDrawing();\n this.fire(new DrawingFinishEvent(feature, new MouseEvent('mouseup')));\n\n return;\n }\n\n if (rings[0].length === 2) {\n const projection = crs.projectionTo(geo);\n const point = rings[0][0];\n if (!projection) return;\n const [lat, long] = projection(point);\n\n this.removeTempLabel();\n this.addMeasureResultLabel();\n this.addCoordLabel(\n `${lat.toFixed(COORD_FRACTION)}, ${long.toFixed(COORD_FRACTION)}`,\n point\n );\n } else {\n this.removeCoordLabel();\n }\n }\n\n private polygonPreview() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n }\n\n const feature = this.activeFeature;\n\n if (!feature) return;\n const { rings, crs } = feature;\n const polygonRings = [...rings[0]];\n\n polygonRings.shift();\n this.tempPolygon = new Polygon(polygonRings, { crs });\n this.tempPolygon.symbol = this.areaSymbol || measureAreaSymbol;\n\n this.activeFeature && this.activeFeature.hide();\n this._tempLayer && this._tempLayer.add(this.tempPolygon);\n }\n\n private removeTempPolygon() {\n if (this.tempPolygon) {\n this._tempLayer && this._tempLayer.remove(this.tempPolygon);\n delete this.tempPolygon;\n }\n }\n\n private updateDistance(event: ChangeEvent) {\n const feature = this.activeFeature;\n const { ringIndex, pointIndex } = event;\n\n if (!feature || ringIndex === null || pointIndex === null) return;\n\n const { rings, crs } = feature;\n\n const position = rings[ringIndex][pointIndex];\n const length = calcLength(rings, crs);\n let content = this.formatters.length(length);\n\n if (isPolylineLikePolygon(rings, this.map.resolution)) {\n this.polygonPreview();\n\n const area = calcArea(rings, crs);\n\n content = this.formatters.polygon(area, length);\n } else if (this.tempPolygon) {\n feature.show();\n this.removeTempPolygon();\n }\n\n if (this.measureResultLabel) {\n this.measureResultLabel.position = position;\n this.measureResultLabel.content = content;\n }\n }\n\n private addTempLabel() {\n this.tempLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n content: 'Нажмите на карту, чтобы начать измерение',\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.tempLabel);\n }\n\n private addCoordLabel(content: string, position: Coordinates) {\n this.coordLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n onClose: this.cancel,\n }),\n });\n this._tempLayer && this.coordLabel && this._tempLayer.add(this.coordLabel);\n }\n\n private addMeasureResultLabel() {\n this.measureResultLabel = new LabelFeature(DEFAULT_LABEL_POSITION, {\n crs: this.map.crs,\n symbol: createLabelSymbol({\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer &&\n this.measureResultLabel &&\n this._tempLayer.add(this.measureResultLabel);\n }\n\n private removeTempLabel() {\n if (this.tempLabel) {\n this._tempLayer && this._tempLayer.remove(this.tempLabel);\n delete this.tempLabel;\n }\n }\n\n private removeCoordLabel() {\n if (this.coordLabel) {\n this._tempLayer && this._tempLayer.remove(this.coordLabel);\n delete this.coordLabel;\n }\n }\n\n private removeMeasureLabel() {\n if (this.measureResultLabel) {\n this._tempLayer && this._tempLayer.remove(this.measureResultLabel);\n delete this.measureResultLabel;\n }\n }\n\n private drawPointOnMouseMove(event: sGisMouseMoveEvent) {\n if (this.tempLabel) {\n this.tempLabel.position = event.point.position;\n }\n }\n\n private setCursor(cursor: 'pointer' | 'default') {\n const { wrapper } = this.painter;\n\n if (wrapper && typeof wrapper !== 'string') {\n wrapper.style.cursor = cursor;\n }\n }\n\n private cancel = () => {\n this.fire('cancel');\n };\n}\n","import { PolyEditor } from '@evergis/sgis/es/controls/PolyEditor';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\nimport { Map as SMap } from '@evergis/sgis/es/Map';\nimport { ControlWithSymbolParams } from '@evergis/sgis/es/controls/Control';\nimport {\n area as calcArea,\n length as calcLength,\n} from '@evergis/sgis/es/geotools';\n\nimport { renderLabelSymbolType } from '../components';\n\nimport { createLabelSymbol } from '../symbols';\nimport {\n DEFAULT_FORMATTERS,\n MeasureToolFormatters,\n} from './MeasureToolFormatters';\n\ninterface BaseMeasureToolEditorParams extends ControlWithSymbolParams {\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n}\n\nexport class BaseMeasureToolEditor extends PolyEditor {\n private measureResultLabel?: LabelFeature;\n formatters: MeasureToolFormatters;\n painter: DomPainter;\n renderLabelSymbol: renderLabelSymbolType;\n\n constructor(\n map: SMap,\n painter: DomPainter,\n params: BaseMeasureToolEditorParams\n ) {\n super(map, params);\n this.painter = painter;\n this.renderLabelSymbol = params.renderLabelSymbol;\n this.formatters = params.formatters || DEFAULT_FORMATTERS;\n this.on('change', this.updateMeasureResult);\n this.on('edit', this.updateMeasureResult);\n }\n\n protected _activate(): void {\n super._activate();\n this.addMeasureResultLabel();\n }\n\n private measureResult = () => {\n const feature = this.activeFeature;\n\n if (!feature) return null;\n\n const { rings, isEnclosed, crs } = feature;\n const pointsCount = rings[0].length;\n const position = rings[0][pointsCount - 1];\n\n const area = calcArea(rings, crs);\n const length = calcLength(rings, crs, isEnclosed);\n const content = isEnclosed\n ? this.formatters.polygon(area, length)\n : this.formatters.length(length);\n\n return {\n content,\n position,\n };\n };\n\n private addMeasureResultLabel() {\n const measureResult = this.measureResult();\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel = new LabelFeature(position, {\n content,\n crs: this.map.crs,\n symbol: createLabelSymbol({\n onClose: this.removeFeature,\n renderLabel: this.renderLabelSymbol,\n }),\n });\n this._tempLayer && this._tempLayer.add(this.measureResultLabel);\n }\n\n updateMeasureResult() {\n if (this.measureResultLabel) {\n const measureResult = this.measureResult();\n\n if (measureResult === null) return;\n\n const { content, position } = measureResult;\n\n this.measureResultLabel.content = content;\n this.measureResultLabel.position = position;\n }\n }\n\n private removeFeature = () => {\n this.fire('remove');\n };\n}\n","export const isNumeric = (number: string | number): boolean =>\r\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\r\n","import { ClassificationParameterExtended } from '../core';\r\n\r\ntype IsParameterType = 'size' | 'strokeWidth' | 'stroke.width' | 'strokeColor' | 'stroke.color';\r\n\r\nexport const isParameterType = (\r\n types: IsParameterType | Array<IsParameterType>,\r\n parameter?: ClassificationParameterExtended,\r\n): boolean => (typeof types === 'string'\r\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\r\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\r\n","import { Char, Expression, TokenType } from \"@evergis/condition\";\r\nimport { AttributeType } from \"@evergis/api\";\r\nimport { isNil } from \"lodash\";\r\n\r\nimport { DateFormat, formatDate } from \"../../utils/date\";\r\nimport { ComparisonOperator, FilterConditionType } from \"./types\";\r\nimport {\r\n BETWEEN_OPERATORS,\r\n CONTAINS_OPERATORS,\r\n ENDS_WITH_OPERATORS,\r\n OPERATOR_CONDITION_REMAP,\r\n STARTS_WITH_OPERATORS\r\n} from \"../../components\";\r\n\r\nexport const comparisonOperatorMapReversed: Record<string, ComparisonOperator> = {\r\n [TokenType.ArEq]: ComparisonOperator.Equals,\r\n [TokenType.ArNotEq]: ComparisonOperator.NotEquals,\r\n [TokenType.ArGr]: ComparisonOperator.GreaterThan,\r\n [TokenType.ArLs]: ComparisonOperator.LessThan,\r\n [TokenType.ArGre]: ComparisonOperator.GreaterOrEquals,\r\n [TokenType.ArLse]: ComparisonOperator.LessOrEquals,\r\n [TokenType.Between]: ComparisonOperator.Between,\r\n [TokenType.Outside]: ComparisonOperator.Outside,\r\n};\r\n\r\nexport const NUMERIC_ATTRIBUTE_TYPES: AttributeType[] = [\r\n AttributeType.Int32,\r\n AttributeType.Int64,\r\n AttributeType.DateTime,\r\n AttributeType.Double,\r\n];\r\n\r\nconst formatValue = (value: string | number, isDate?: boolean) => {\r\n return isDate\r\n ? `#'${formatDate(value, {\r\n dateFormat: DateFormat.UTC,\r\n defaultValue: value,\r\n })}'`\r\n : value\r\n ? value.toString()\r\n : 0;\r\n};\r\n\r\nexport function formatCondition(condition: FilterConditionType) {\r\n const { comparisonOperator, value, type, attribute } = condition;\r\n const operator = OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator] || comparisonOperator;\r\n\r\n const preparedValue = typeof value === \"string\" && value.includes(\" - \") ? value.split(\" - \") : value;\r\n const isDate = type === AttributeType.DateTime;\r\n const isBetweenOutside = BETWEEN_OPERATORS.includes(comparisonOperator as ComparisonOperator);\r\n const escapeValue = !NUMERIC_ATTRIBUTE_TYPES.includes(type as AttributeType) && preparedValue !== null;\r\n\r\n if (isBetweenOutside && Array.isArray(preparedValue) && preparedValue[0] !== undefined) {\r\n return `${OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator]}(${attribute}, ${formatValue(\r\n preparedValue[0],\r\n isDate,\r\n )}, ${formatValue(preparedValue[1], isDate)})`;\r\n }\r\n\r\n const formattedValue = Array.isArray(preparedValue)\r\n ? preparedValue.map(val => formatValue(val, isDate))\r\n : formatValue(preparedValue as string | number, isDate);\r\n\r\n const nulledValue = isNil(preparedValue) ? \"{null}\" : formattedValue;\r\n\r\n const valueEscaped =\r\n escapeValue && typeof nulledValue === \"string\"\r\n ? `'${Char.escapeSpecChars(addOperationToValue(nulledValue, comparisonOperator as ComparisonOperator))}'`\r\n : nulledValue;\r\n\r\n return `${attribute} ${operator} ${valueEscaped}`;\r\n}\r\n\r\nexport function createConditionString(condition: FilterConditionType) {\r\n if (Array.isArray(condition)) {\r\n return `( ${formatCondition(condition[0])} ${condition[0].operation} ${formatCondition(condition[1])} )`;\r\n }\r\n\r\n return formatCondition(condition);\r\n}\r\n\r\nexport function createCondition({ attribute, operation, value }: Expression) {\r\n const comparisonOperator = comparisonOperatorMapReversed[operation];\r\n const convertedResult = convertOperatorValue(value as string | number | boolean, comparisonOperator);\r\n\r\n return {\r\n attribute,\r\n ...convertedResult,\r\n } as FilterConditionType;\r\n}\r\n\r\nfunction convertOperatorValue(value: string | number | boolean, comparisonOperator: ComparisonOperator) {\r\n if (typeof value === \"string\") {\r\n const operatorIndex = +(comparisonOperator === ComparisonOperator.NotEquals);\r\n\r\n if (value.startsWith(Char.PERCENTAGE) && value.endsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(1, -1),\r\n comparisonOperator: CONTAINS_OPERATORS[operatorIndex],\r\n };\r\n }\r\n\r\n if (value.startsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(1),\r\n comparisonOperator: ENDS_WITH_OPERATORS[operatorIndex],\r\n };\r\n }\r\n\r\n if (value.endsWith(Char.PERCENTAGE)) {\r\n return {\r\n value: value.slice(0, -1),\r\n comparisonOperator: STARTS_WITH_OPERATORS[operatorIndex],\r\n };\r\n }\r\n }\r\n\r\n return { value, comparisonOperator };\r\n}\r\n\r\nconst addContains = (value: string | number) => `%${value}%`;\r\nconst addStartsWith = (value: string | number) => `${value}%`;\r\nconst addEndsWith = (value: string | number) => `%${value}`;\r\n\r\nfunction addOperationToValue(value: string, operator: ComparisonOperator) {\r\n switch (operator) {\r\n case ComparisonOperator.Contains:\r\n case ComparisonOperator.NotContains:\r\n return addContains(value);\r\n case ComparisonOperator.StartsWith:\r\n case ComparisonOperator.NotStartsWith:\r\n return addStartsWith(value);\r\n case ComparisonOperator.EndsWith:\r\n case ComparisonOperator.NotEndsWith:\r\n return addEndsWith(value);\r\n case ComparisonOperator.Between:\r\n return Char.BETWEEN;\r\n case ComparisonOperator.Outside:\r\n return Char.OUTSIDE;\r\n default:\r\n return value;\r\n }\r\n}\r\n","import { ConditionInterpreter, TokenType } from \"@evergis/condition\";\r\n\r\nimport { FilterConditionOperation, FilterConditionType } from \"./index\";\r\nimport { createCondition, createConditionString } from \"./createCondition\";\r\n\r\nexport class FilterCondition {\r\n private readonly conditionInterpreter: ConditionInterpreter;\r\n\r\n constructor(private condition: string | null = null) {\r\n this.conditionInterpreter = new ConditionInterpreter(condition as string);\r\n }\r\n\r\n static from(conditions: FilterConditionType[], operation: FilterConditionOperation) {\r\n const condition = conditions?.map(createConditionString).join(` ${operation} `) || null;\r\n\r\n return new FilterCondition(condition);\r\n }\r\n\r\n get conditions(): FilterConditionType[] {\r\n const { value } = this.conditionInterpreter;\r\n\r\n if (value instanceof Error) {\r\n // TODO handle errors in client notifications\r\n console.warn(value.message);\r\n }\r\n\r\n return value instanceof Error ? [] : value.expressions.map(createCondition);\r\n }\r\n\r\n get conditionOperation() {\r\n const { value } = this.conditionInterpreter;\r\n\r\n if (value instanceof Error) {\r\n return null;\r\n }\r\n\r\n const isOrCondition = value.boolOperations.includes(TokenType.BoolOr);\r\n const isAndCondition = value.boolOperations.includes(TokenType.BoolAnd);\r\n\r\n if (isOrCondition && isAndCondition) {\r\n return null;\r\n }\r\n\r\n return isOrCondition ? FilterConditionOperation.OR : isAndCondition ? FilterConditionOperation.AND : null;\r\n }\r\n\r\n public isParsingError() {\r\n return this.conditionInterpreter.value instanceof Error;\r\n }\r\n\r\n public toString() {\r\n return this.condition;\r\n }\r\n}\r\n","/* eslint-disable max-lines */\r\nimport get from 'lodash/get';\r\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\r\nimport { ClusterSymbol } from '@evergis/sgis/es/symbols/ClusterSymbol';\r\nimport {\r\n AttributesConfigurationDc,\r\n AttributeType,\r\n CompositeLayerInfoDc,\r\n FeatureLayerServiceInfoDc,\r\n GeometryType,\r\n LayerDefinitionDc,\r\n ParameterDcColor,\r\n PostgresLayerServiceConfigurationDc,\r\n ServiceInfoDc,\r\n SimplePolylineSymbolDc,\r\n StyleDc,\r\n SvgParameterDc,\r\n} from '@evergis/api';\r\n\r\nimport {\r\n ClassifyParameter,\r\n DEFAULT_LEGEND_SYMBOL_SIZE,\r\n DEFAULT_PARAMETER_INFO,\r\n EXTRA_BORDER_SIZE,\r\n LegendProps,\r\n LegendSectionItem,\r\n PARAMETER_INFOS,\r\n ParameterInfo,\r\n SvgSymbolBg,\r\n SYMBOL_CLASSIFICATION,\r\n} from '../components';\r\nimport { i18n } from \"../i18n\";\r\nimport { formatDate } from './date';\r\nimport {\r\n ClassificationClass,\r\n ClassificationCondition,\r\n ClassificationParameter,\r\n ClassificationParameterExtended,\r\n ClassifyAble,\r\n ComparisonOperator,\r\n FilterConditionOperation,\r\n getParameterValue,\r\n ImageSymbol,\r\n isClusterSymbol,\r\n isCombinedPolylineSymbol,\r\n isH3GridSymbol,\r\n isMaskedImageSymbol,\r\n isParameterValueSymbol,\r\n isPolygonSymbol,\r\n isPolylineSymbols,\r\n isRangeClass,\r\n isSizableSymbol,\r\n isSvgPointSymbol,\r\n isTwoDimensionalSymbol,\r\n isUniqueClass,\r\n LabelType,\r\n LayerAttribute,\r\n LegendValueType,\r\n MaskedImageSymbol,\r\n ParameterByAttribute,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n ParameterValueWithSymbol,\r\n PointSymbol,\r\n PointSymbolType,\r\n PolygonSymbol,\r\n PolylineSymbol,\r\n RangeClass,\r\n SquareSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n symbolParameterWalker,\r\n UniqueClass,\r\n} from '../core';\r\nimport { isNumeric } from './isNumeric';\r\nimport { isObject } from './isObject';\r\nimport { createConditionString } from '../core/legend/createCondition';\r\nimport { FilterCondition } from '../core/legend/FilterCondition';\r\n\r\nexport const isLayerService = (\r\n value?: unknown\r\n): value is CompositeLayerInfoDc['layer'] => isObject(value) && 'name' in value;\r\n\r\nexport const getAttributeFromCondition = (condition: string): string => {\r\n const parts = condition.split(' ');\r\n\r\n return parts[0].startsWith('(') ? parts[0].slice(1) : parts[0];\r\n};\r\n\r\nexport const getExprFromCondition = (\r\n condition: string,\r\n partIndex?: number\r\n): string[] => {\r\n let expr;\r\n\r\n if (partIndex) {\r\n const parts = condition.split(' && ').map(part => part.slice(1, -1));\r\n\r\n expr = parts[partIndex - 1];\r\n } else {\r\n expr = condition;\r\n }\r\n\r\n return expr?.split(' ');\r\n};\r\n\r\nexport const getSignFromConditionPart = (\r\n condition: string,\r\n partIndex?: number\r\n): string => {\r\n return getExprFromCondition(condition, partIndex)?.[1];\r\n};\r\n\r\nexport const getValueFromConditionPart = (\r\n condition: string,\r\n partIndex?: number\r\n): string => {\r\n return getExprFromCondition(condition, partIndex)?.[2];\r\n};\r\n\r\nexport const isRangeCondition = (condition?: string): boolean =>\r\n condition?.includes('(') || false;\r\n\r\nexport const getSymbolParameterInfo = (\r\n parameter: ClassificationParameter\r\n): ParameterInfo => {\r\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\r\n};\r\n\r\nexport const formatUniqueClassValue = (\r\n value: UniqueClass,\r\n formatValue?: LegendProps['formatValue']\r\n): string => {\r\n const { attribute, uniqueValue } = value;\r\n\r\n return attribute && formatValue\r\n ? (formatValue(\r\n attribute.type,\r\n uniqueValue,\r\n attribute.stringFormat\r\n ) as string)\r\n : uniqueValue;\r\n};\r\n\r\nexport const getRangeValues = (\r\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\r\n isDouble: boolean,\r\n isDate: boolean,\r\n index: number\r\n): Pick<RangeClass, 'from' | 'to'> => {\r\n return {\r\n from:\r\n from !== null && index !== 0\r\n ? isDate\r\n ? from\r\n : isDouble\r\n ? +from\r\n : +from + 1\r\n : from,\r\n to,\r\n };\r\n};\r\n\r\nexport const formatRangeClassValue = (\r\n value: RangeClass,\r\n formatValue: LegendProps['formatValue'],\r\n index: number\r\n): string => {\r\n const isDouble = value.attribute?.type === 'Double';\r\n const isDate = value.attribute?.type === 'DateTime';\r\n\r\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\r\n\r\n const formattedFrom = formatValue\r\n ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n from as string | number | Date,\r\n value.attribute?.stringFormat\r\n )\r\n : from;\r\n const formattedTo = formatValue\r\n ? formatValue(\r\n value.attribute?.type as AttributeType,\r\n to as string | number | Date,\r\n value.attribute?.stringFormat\r\n )\r\n : to;\r\n\r\n if (from === null) {\r\n return `${formattedTo}${!isDate ? ` ${i18n.t(\"andLess\", { ns: \"style\" })}` : ''}`;\r\n }\r\n\r\n if (to === null) {\r\n return `${!isDate ? `${i18n.t(\"more\", { ns: \"style\" })} ` : ''}${formattedFrom}`;\r\n }\r\n\r\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\r\n};\r\n\r\nexport const checkLayerHasLegend = (\r\n layerInfo: Pick<FeatureLayerServiceInfoDc, 'geometryType' | 'style'>\r\n): boolean => {\r\n return (\r\n SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\r\n const paramValue = (get(\r\n layerInfo.style?.symbol,\r\n param\r\n ) as unknown) as ParameterByAttribute<ParameterValue>;\r\n\r\n return paramValue?.type === 'byAttribute';\r\n }) || false\r\n );\r\n};\r\n\r\nexport const getTitleFromCondition = ({\r\n condition,\r\n attribute,\r\n formatValue,\r\n}: {\r\n condition?: string;\r\n attribute?: LayerAttribute | null;\r\n formatValue?: LegendProps['formatValue'];\r\n}): string => {\r\n const parts = condition?.split(' == ');\r\n const uniqueValue = parts?.[1] ? (parts[1].startsWith(\"'\") && parts[1].endsWith(\"'\") ? parts[1].slice(1, -1) : parts[1]) : '';\r\n\r\n return attribute && formatValue\r\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat)\r\n : uniqueValue;\r\n};\r\n\r\nexport function createValueTitleFromCondition(\r\n paramValue: ParameterByAttributeValue<ParameterValueWithSymbol>,\r\n attribute: LayerAttribute | null,\r\n formatValue: LegendProps['formatValue'],\r\n index: number\r\n): string {\r\n if (!attribute) return '';\r\n\r\n if (paramValue.title) return paramValue.title;\r\n\r\n const value = {\r\n parameterValue: getParameterValue(paramValue.value),\r\n attribute,\r\n } as ClassificationClass;\r\n\r\n const sign = getSignFromConditionPart(paramValue.condition, 1);\r\n const isFirstFrom = sign.includes('>');\r\n\r\n (value as RangeClass).from = isFirstFrom\r\n ? getValueFromConditionPart(paramValue.condition, 1)\r\n : null;\r\n (value as RangeClass).to =\r\n paramValue.condition.includes(' && ') && isFirstFrom\r\n ? getValueFromConditionPart(paramValue.condition, 2)\r\n : !isFirstFrom\r\n ? getValueFromConditionPart(paramValue.condition, 1)\r\n : null;\r\n\r\n if (isRangeClass(value))\r\n return formatRangeClassValue(value as RangeClass, formatValue, index);\r\n if (isUniqueClass(value))\r\n return formatUniqueClassValue(value as UniqueClass, formatValue);\r\n\r\n return '';\r\n}\r\n\r\ntype SymbolCreator<T> = (\r\n baseSymbol: T,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n parameterValue: ParameterValue\r\n) => T;\r\n\r\nexport const enum LegendSymbolTypes {\r\n Point,\r\n ImagePoint,\r\n Line,\r\n Polygon,\r\n}\r\n\r\ntype LegendSymbolsMap = {\r\n [LegendSymbolTypes.Point]: PointSymbolType;\r\n [LegendSymbolTypes.ImagePoint]: MaskedImageSymbol;\r\n [LegendSymbolTypes.Line]: PolylineSymbol;\r\n [LegendSymbolTypes.Polygon]: PolygonSymbol;\r\n};\r\n\r\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 ->\r\n// пункт \"Настраиваемые значения параметров символики в системе\"\r\n// Для добавления подготовленных значений размеров символов нужно использовать константу PREPARED_SYMBOL_SIZES\r\nexport const DEFAULT_LEGEND_STYLES: LegendSymbolsMap = {\r\n [LegendSymbolTypes.Point]: {\r\n fillColor: '#00000047',\r\n strokeWidth: 1,\r\n strokeColor: '#0000001f',\r\n },\r\n [LegendSymbolTypes.ImagePoint]: {\r\n maskedColor: '#00000047',\r\n },\r\n [LegendSymbolTypes.Line]: {\r\n stroke: {\r\n width: 2,\r\n color: '#00000047',\r\n },\r\n },\r\n [LegendSymbolTypes.Polygon]: {\r\n fill: {\r\n color: '#00000000',\r\n hatchColor: '#00000000',\r\n },\r\n stroke: {\r\n width: 1,\r\n color: '#0000001f',\r\n },\r\n },\r\n};\r\n\r\nexport const SYMBOL_SIZE_PARAMETERS = ['size', 'width', 'height'];\r\n\r\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 -> пункт \"Библиотека символов\"\r\nexport const DEFAULT_LEGEND_SIZES: Record<string, number> = {\r\n circlePointSymbol: 8,\r\n squarePointSymbol: 12,\r\n imagePointSymbol: 24,\r\n maskedImagePointSymbol: 24,\r\n svgPointSymbol: 24,\r\n};\r\n\r\nconst getNonClassifiedParamValue = <S extends StyleSymbolType>(\r\n baseSymbol: S,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n type: LegendSymbolTypes\r\n) => {\r\n if (classificationsParams.includes(parameter)) {\r\n const defaultParameterValue = getParameterFromSymbol(\r\n DEFAULT_LEGEND_STYLES[type],\r\n parameter\r\n );\r\n\r\n if (defaultParameterValue) {\r\n return defaultParameterValue;\r\n }\r\n if (\r\n SYMBOL_SIZE_PARAMETERS.includes(parameter) &&\r\n DEFAULT_LEGEND_SIZES[baseSymbol.type as string]\r\n ) {\r\n return DEFAULT_LEGEND_SIZES[baseSymbol.type as string];\r\n }\r\n }\r\n\r\n return getParameterValue(getParameterFromSymbol(baseSymbol, parameter));\r\n};\r\n\r\nexport const updateSymbolParameter = <S extends StyleSymbolType | LabelType>(\r\n symbol: S,\r\n path: string,\r\n value: ClassifyAble<ParameterValue>\r\n): S =>\r\n symbolParameterWalker(() => value)(\r\n symbol,\r\n path as ClassificationParameterExtended | ClassificationParameterExtended[]\r\n );\r\n\r\nconst createPointSymbol: SymbolCreator<PointSymbol | SquareSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): PointSymbol | SquareSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fillColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'fillColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\r\n strokeColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'strokeColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\r\n strokeWidth: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'strokeWidth',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\r\n size: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'size',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ),\r\n offset: [0, 0],\r\n },\r\n parameter,\r\n parameterValue\r\n ) as PointSymbol | SquareSymbol;\r\n};\r\n\r\ntype Dimensions = {\r\n height: number;\r\n width: number;\r\n};\r\n\r\nexport function getDimensions(symbol: ImageSymbol, size: number): Dimensions {\r\n const height = getParameterValue(symbol.height as ParameterValue) as number;\r\n const width = getParameterValue(symbol.width as ParameterValue) as number;\r\n\r\n if (width === height) {\r\n return {\r\n width: size,\r\n height: size,\r\n };\r\n }\r\n\r\n const ratio = height / width;\r\n\r\n if (width < height) {\r\n return {\r\n width: size,\r\n height: height + (size - width) * ratio,\r\n };\r\n }\r\n\r\n return {\r\n width: width + (size - height) * ratio,\r\n height: size,\r\n };\r\n}\r\n\r\nconst createImagePointSymbol: SymbolCreator<ImageSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): ImageSymbol => {\r\n let symbol = { ...baseSymbol };\r\n\r\n if (isMaskedImageSymbol(symbol)) {\r\n symbol.maskedColor = getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'maskedColor',\r\n classificationsParams,\r\n LegendSymbolTypes.ImagePoint\r\n ) as ClassifyAble<string>;\r\n }\r\n\r\n if (parameter === 'height' || parameter === 'width') {\r\n const { height, width } = getDimensions(\r\n baseSymbol,\r\n parameterValue as number\r\n );\r\n\r\n symbol.height = height;\r\n symbol.width = width;\r\n } else {\r\n symbol.width = getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'width',\r\n classificationsParams,\r\n LegendSymbolTypes.ImagePoint\r\n ) as number;\r\n symbol.height = symbol.width;\r\n\r\n symbol = updateSymbolParameter(symbol, parameter, parameterValue);\r\n }\r\n\r\n symbol.offset = [\r\n (getParameterValue(symbol.height as ClassifyAble<number>) as number) / 2,\r\n (getParameterValue(symbol.width as ClassifyAble<number>) as number) / 2,\r\n ];\r\n\r\n return symbol;\r\n};\r\n\r\nconst createLineSymbol: SymbolCreator<PolylineSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): PolylineSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n type: 'polylineSymbol',\r\n stroke: {\r\n color: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Line\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Line\r\n ),\r\n },\r\n },\r\n parameter,\r\n parameterValue\r\n ) as PolylineSymbol;\r\n};\r\n\r\nconst createPolygonSymbol: SymbolCreator<PolygonSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): PolygonSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fill: {\r\n color: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'fill.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n hatchColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'fill.hatchColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n },\r\n parameter,\r\n parameterValue\r\n ) as PolygonSymbol;\r\n};\r\n\r\nconst createH3Symbol: SymbolCreator<H3Symbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): H3Symbol => {\r\n return (updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fill: {\r\n color: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'fill.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n stroke: {\r\n color: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.color',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n width: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'stroke.width',\r\n classificationsParams,\r\n LegendSymbolTypes.Polygon\r\n ),\r\n },\r\n },\r\n parameter,\r\n parameterValue\r\n ) as unknown) as H3Symbol;\r\n};\r\n\r\nconst createClusterSymbol: SymbolCreator<ClusterSymbol> = (\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n): ClusterSymbol => {\r\n return updateSymbolParameter(\r\n {\r\n ...baseSymbol,\r\n fillColor: getNonClassifiedParamValue(\r\n baseSymbol,\r\n 'fillColor',\r\n classificationsParams,\r\n LegendSymbolTypes.Point\r\n ) as ParameterDcColor,\r\n } as StyleSymbolType,\r\n parameter,\r\n parameterValue\r\n ) as ClusterSymbol;\r\n};\r\n\r\nexport const createLegendSymbol = (\r\n parameterValue: ParameterValueWithSymbol,\r\n parameter: ClassificationParameterExtended,\r\n classificationsParams: ClassificationParameterExtended[],\r\n baseSymbol: StyleSymbolType\r\n): StyleSymbolType | null => {\r\n if (isParameterValueSymbol(parameterValue)) {\r\n return parameterValue;\r\n }\r\n\r\n if (isClusterSymbol(baseSymbol)) {\r\n return createClusterSymbol(\r\n baseSymbol as ClusterSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue\r\n );\r\n }\r\n\r\n if (isSizableSymbol(baseSymbol)) {\r\n return createPointSymbol(\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n if (isTwoDimensionalSymbol(baseSymbol)) {\r\n return createImagePointSymbol(\r\n baseSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n if (isPolylineSymbols(baseSymbol)) {\r\n return createLineSymbol(\r\n baseSymbol as PolylineSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n if (isPolygonSymbol(baseSymbol)) {\r\n return createPolygonSymbol(\r\n baseSymbol as PolygonSymbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n if (isH3GridSymbol(baseSymbol)) {\r\n return createH3Symbol(\r\n baseSymbol as H3Symbol,\r\n parameter,\r\n classificationsParams,\r\n parameterValue as ParameterValue\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport function createHiddenCondition(\r\n attributeName: string,\r\n attributeType: AttributeType,\r\n value: ClassificationClass\r\n) {\r\n let newValue;\r\n let comparisonOperator;\r\n\r\n if (isRangeClass(value)) {\r\n if (value.from && value.to) {\r\n newValue = [value.from as string, value.to as string];\r\n comparisonOperator = ComparisonOperator.Outside;\r\n } else if (value.from) {\r\n newValue = value.from;\r\n comparisonOperator = ComparisonOperator.LessThan;\r\n } else if (value.to) {\r\n newValue = value.to;\r\n comparisonOperator = ComparisonOperator.GreaterThan;\r\n }\r\n } else {\r\n newValue = value.uniqueValue || value.title;\r\n comparisonOperator = ComparisonOperator.NotEquals;\r\n }\r\n\r\n return new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: comparisonOperator as ComparisonOperator,\r\n value: newValue as string,\r\n })\r\n ).toString();\r\n}\r\n\r\nexport const createOtherHiddenCondition = (\r\n values: ClassificationClass[],\r\n attributeName: string,\r\n attributeType: AttributeType\r\n) => {\r\n const value = values[values.length - 1];\r\n let hiddenCondition;\r\n\r\n if (isRangeClass(value)) {\r\n hiddenCondition = new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: ComparisonOperator.LessOrEquals,\r\n value: (value as RangeClass).to || (value as RangeClass).from,\r\n })\r\n ).toString();\r\n } else {\r\n const conditions = values.map(val =>\r\n new FilterCondition(\r\n createConditionString({\r\n attribute: attributeName,\r\n type: attributeType,\r\n comparisonOperator: ComparisonOperator.Equals,\r\n value: (val as UniqueClass).uniqueValue,\r\n })\r\n ).toString()\r\n );\r\n\r\n hiddenCondition = `( ${conditions\r\n .filter(Boolean)\r\n .join(` ${FilterConditionOperation.OR} `)} )`;\r\n }\r\n\r\n return hiddenCondition;\r\n};\r\n\r\nexport const getMinimizedLegendValues = (\r\n attribute: LayerAttribute,\r\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\r\n formatValue: LegendProps['formatValue'],\r\n index: number,\r\n otherTitle: string\r\n): LegendValueType[] => {\r\n const other = {\r\n title: otherTitle,\r\n parameterValue: classified.defaultValue,\r\n hiddenCondition: createOtherHiddenCondition(\r\n classified.values.map(val =>\r\n getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition)\r\n )\r\n ),\r\n attribute.name as string,\r\n attribute.type\r\n ),\r\n } as LegendValueType;\r\n\r\n const items = classified.values.map(paramValue => {\r\n const parameterValue = getParameterValue(paramValue.value);\r\n const result = { parameterValue, attribute } as Partial<LegendValueType>;\r\n\r\n if (isRangeCondition(paramValue.condition)) {\r\n const from = getValueFromConditionPart(paramValue.condition, 1);\r\n const to = getValueFromConditionPart(paramValue.condition, 2);\r\n\r\n (result as RangeClass).from = from\r\n ? isNumeric(from)\r\n ? +from\r\n : formatDate(from)\r\n : null;\r\n (result as RangeClass).to = to\r\n ? isNumeric(to)\r\n ? +to\r\n : formatDate(to)\r\n : null;\r\n\r\n result.title = createValueTitleFromCondition(\r\n paramValue,\r\n attribute,\r\n formatValue,\r\n index\r\n );\r\n\r\n return result;\r\n }\r\n\r\n (result as UniqueClass).uniqueValue = formatValue\r\n ? (formatValue(\r\n attribute.type,\r\n paramValue.value,\r\n attribute.stringFormat\r\n ) as string)\r\n : paramValue.value.toString();\r\n result.title = getTitleFromCondition({ condition: paramValue.condition });\r\n result.hiddenCondition = createHiddenCondition(\r\n attribute.name as string,\r\n attribute.type,\r\n getClassificationValue(\r\n paramValue.value,\r\n result.title,\r\n new ClassificationCondition(paramValue.condition)\r\n )\r\n ) as string;\r\n\r\n return result;\r\n }) as LegendValueType[];\r\n\r\n return [...items, other] as LegendValueType[];\r\n};\r\n\r\nexport const getMaximizedLegendValues = (\r\n attribute: LayerAttribute,\r\n param: ClassificationParameterExtended,\r\n params: ClassificationParameterExtended[],\r\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\r\n symbol: StyleDc['symbol'],\r\n formatValue: LegendProps['formatValue'],\r\n sectionIndex: number,\r\n otherTitle: string\r\n): LegendSectionItem[] => {\r\n const other = {\r\n title: otherTitle,\r\n symbol: createLegendSymbol(\r\n classified.defaultValue,\r\n param,\r\n params,\r\n symbol as StyleSymbolType\r\n ),\r\n hiddenCondition: createOtherHiddenCondition(\r\n classified.values.map(val =>\r\n getClassificationValue(\r\n val.value,\r\n otherTitle,\r\n new ClassificationCondition(val.condition)\r\n )\r\n ),\r\n attribute.name as string,\r\n attribute.type\r\n ),\r\n };\r\n\r\n const items = classified.values.map((paramValue, index) => {\r\n const result = {\r\n symbol: createLegendSymbol(\r\n paramValue.value,\r\n param,\r\n params,\r\n symbol as StyleSymbolType\r\n ),\r\n } as LegendSectionItem;\r\n\r\n result.title = isRangeCondition(paramValue.condition)\r\n ? createValueTitleFromCondition(\r\n paramValue,\r\n attribute,\r\n formatValue,\r\n sectionIndex\r\n )\r\n : getTitleFromCondition({ condition: paramValue.condition });\r\n\r\n result.hiddenCondition = createHiddenCondition(\r\n attribute.name as string,\r\n attribute.type,\r\n getClassificationValue(\r\n paramValue.value,\r\n result.title,\r\n new ClassificationCondition(classified.values[index].condition)\r\n )\r\n ) as string;\r\n\r\n return result;\r\n });\r\n\r\n return [...items, other] as LegendSectionItem[];\r\n};\r\n\r\nexport type ClassifiedListItem = ParameterByAttribute<ParameterValueWithSymbol> & { index?: number };\r\n\r\nexport type ClassifiedList = Partial<Record<ClassifyParameter, ClassifiedListItem>>;\r\n\r\nexport const classifyParamsReduce = (\r\n symbol?: StyleSymbolType,\r\n classifyParams?: ClassifyParameter[],\r\n index?: number,\r\n): undefined | ClassifiedList => {\r\n return classifyParams?.reduce((result, classified) => {\r\n const param = (get(\r\n symbol,\r\n classified\r\n ) as unknown) as ParameterByAttribute<ParameterValue>;\r\n\r\n return param?.type === 'byAttribute' ? { ...result, [classified]: { index, ...param } } : result;\r\n }, {} as ClassifiedList);\r\n}\r\n\r\nexport const getClassified = (\r\n layerInfo: FeatureLayerServiceInfoDc\r\n): ClassifiedList | undefined => {\r\n if (!layerInfo) return undefined;\r\n\r\n if (layerInfo.style?.children?.length) {\r\n return {\r\n symbol: {\r\n type: 'byAttribute',\r\n defaultValue: layerInfo.style.symbol as StyleSymbolType,\r\n title: null,\r\n values: layerInfo.style?.children as ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n >[],\r\n },\r\n };\r\n }\r\n\r\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n\r\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\r\n if (!layerInfo.style.symbol.values?.length) return undefined;\r\n\r\n return layerInfo.style.symbol.values.reduce((result: ClassifiedList, polyline: SimplePolylineSymbolDc, index) => {\r\n return { ...result, ...classifyParamsReduce(polyline, classifyParams, index) };\r\n }, {} as ClassifiedList);\r\n }\r\n\r\n return classifyParamsReduce(layerInfo.style?.symbol, classifyParams);\r\n};\r\n\r\nexport const getSymbolStrokeWidth = (symbol: PointSymbolType): number => {\r\n return isSvgPointSymbol(symbol)\r\n ? ((symbol.background as SvgParameterDc)?.strokeWidth as number)\r\n : ((symbol as PointSymbol).strokeWidth as number);\r\n};\r\n\r\nexport const getParameterFromSymbol = <R extends ClassifyAble<ParameterValue>>(\r\n symbol: StyleSymbolType | LabelType,\r\n parameter: ClassificationParameterExtended\r\n): R => {\r\n let parameterFromSymbol = {};\r\n\r\n symbolParameterWalker((parameterValue: ClassifyAble<ParameterValue>) => {\r\n parameterFromSymbol = parameterValue;\r\n })(symbol, parameter);\r\n\r\n return parameterFromSymbol as R;\r\n};\r\n\r\nexport const getLegendSymbolSize = (symbol: StyleSymbolType): number => {\r\n let size = 0;\r\n\r\n if (isSvgPointSymbol(symbol)) {\r\n size = getParameterValue(symbol.size as ClassifyAble<number>);\r\n }\r\n\r\n if (isH3GridSymbol(symbol)) {\r\n size = getParameterValue(symbol.cellSize as ClassifyAble<number>);\r\n }\r\n\r\n if (isTwoDimensionalSymbol(symbol)) {\r\n size = Math.max(\r\n getParameterValue(symbol.width as ClassifyAble<number>),\r\n getParameterValue(symbol.height as ClassifyAble<number>)\r\n );\r\n }\r\n\r\n if (isSizableSymbol(symbol)) {\r\n const strokeWidth = getSymbolStrokeWidth(symbol);\r\n\r\n size =\r\n getParameterValue(symbol.size as ClassifyAble<number>) +\r\n (strokeWidth ? getParameterValue(strokeWidth) + EXTRA_BORDER_SIZE : 0);\r\n }\r\n\r\n if (isPolylineSymbols(symbol)) {\r\n size = getParameterValue(\r\n getParameterFromSymbol(symbol, 'stroke.width')\r\n ) as number;\r\n }\r\n\r\n return Math.max(DEFAULT_LEGEND_SYMBOL_SIZE, size);\r\n};\r\n\r\nexport const serializeSvgPointSymbol = (symbol: SvgPointSymbol) => {\r\n if (!symbol) return null;\r\n\r\n const figureFillColor =\r\n ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\r\n const bgFillColor =\r\n ((symbol.background as SvgParameterDc)?.fillColor as string) || null;\r\n\r\n return {\r\n type: 'svgPointSymbol',\r\n size: symbol.size,\r\n offset: symbol.offset,\r\n angle: symbol.angle,\r\n ...(bgFillColor\r\n ? {\r\n background: {\r\n id: 'symbol-bg',\r\n fillColor: bgFillColor,\r\n strokeColor:\r\n ((symbol.background as SvgParameterDc)?.strokeColor as string) ||\r\n null,\r\n strokeWidth:\r\n (symbol.background as SvgParameterDc)?.strokeWidth || null,\r\n type:\r\n (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\r\n },\r\n }\r\n : {}),\r\n ...(figureFillColor\r\n ? {\r\n figure: {\r\n id: 'symbol-figure',\r\n fillColor: figureFillColor,\r\n strokeColor:\r\n ((symbol.figure as SvgParameterDc)?.strokeColor as string) ||\r\n null,\r\n strokeWidth:\r\n (symbol.figure as SvgParameterDc)?.strokeWidth || null, },\r\n }\r\n : {}),\r\n };\r\n};\r\n\r\nconst SIZE_PARAMETERS = ['size', 'height', 'strokeWidth', 'stroke.width'];\r\n\r\nexport const isSizeClassification = (parameter: string): boolean =>\r\n SIZE_PARAMETERS.includes(parameter);\r\n\r\nexport const getServiceConfiguration = (\r\n layer?: ServiceInfoDc\r\n): ServiceInfoDc['configuration'] => {\r\n const emptyServiceConfiguration: ServiceInfoDc['configuration'] = {\r\n name: '',\r\n };\r\n\r\n if (!isLayerService(layer) || !('configuration' in layer))\r\n return emptyServiceConfiguration;\r\n\r\n return {\r\n ...emptyServiceConfiguration,\r\n ...(layer.configuration || {}),\r\n };\r\n};\r\n\r\n/** default attribute name which use for geometry info */\r\nexport const GEOMETRY_ATTRIBUTE = 'geometry';\r\n\r\n/** default attribute name which contains unique id info */\r\nexport const DEFAULT_ID_ATTRIBUTE_NAME = 'gid';\r\n\r\nexport const getAttributesConfiguration = (\r\n layer: ServiceInfoDc\r\n): AttributesConfigurationDc => {\r\n const serviceConfiguration = getServiceConfiguration(layer);\r\n const emptyAttributesConfiguration: AttributesConfigurationDc = {\r\n geometryAttribute: GEOMETRY_ATTRIBUTE,\r\n idAttribute: DEFAULT_ID_ATTRIBUTE_NAME,\r\n tableName: '',\r\n };\r\n\r\n if (\r\n !serviceConfiguration ||\r\n !('attributesConfiguration' in serviceConfiguration)\r\n ) {\r\n return emptyAttributesConfiguration;\r\n }\r\n\r\n return {\r\n ...emptyAttributesConfiguration,\r\n ...((serviceConfiguration as PostgresLayerServiceConfigurationDc)\r\n .attributesConfiguration || {}),\r\n };\r\n};\r\n\r\nexport const getLayerDefinition = (\r\n layer?: FeatureLayerServiceInfoDc\r\n): LayerDefinitionDc => {\r\n const { geometryAttribute, idAttribute } = getAttributesConfiguration(\r\n layer as FeatureLayerServiceInfoDc\r\n );\r\n\r\n const emptyLayerDefinition: LayerDefinitionDc = {\r\n attributes: {},\r\n geometryAttribute: geometryAttribute as string,\r\n idAttribute,\r\n geometryType: GeometryType.Unknown,\r\n titleAttribute: '',\r\n };\r\n\r\n if (!isLayerService(layer) || !('layerDefinition' in layer)) {\r\n return emptyLayerDefinition;\r\n }\r\n\r\n return {\r\n ...emptyLayerDefinition,\r\n ...(layer.layerDefinition || {}),\r\n attributes:\r\n layer.layerDefinition.attributes || emptyLayerDefinition.attributes,\r\n };\r\n};\r\n\r\nexport function getAttributeType(\r\n layer: FeatureLayerServiceInfoDc,\r\n attributeName: string\r\n): AttributeType {\r\n const { attributes } = getLayerDefinition(layer);\r\n const attribute = attributes[attributeName];\r\n\r\n return attribute ? attribute.type : AttributeType.Unknown;\r\n}\r\n\r\nexport const getClassificationValue = (\r\n parameterValue: ParameterValueWithSymbol,\r\n title: string,\r\n condition: ClassificationCondition\r\n): ClassificationClass => ({\r\n parameterValue,\r\n title,\r\n ...(condition.isUnique()\r\n ? {\r\n uniqueValue: condition.uniqueValue,\r\n }\r\n : {\r\n from: condition.range[0],\r\n to: condition.range[1],\r\n }),\r\n});\r\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n","import { GeometryType } from '@evergis/api';\r\n\r\nimport { ClassifyParameter, ParameterInfo, Units } from './types';\r\nimport { ClassificationParameter, ComparisonOperator } from '../../core';\r\n\r\nexport const DEFAULT_LEGEND_SYMBOL_SIZE = 26;\r\n\r\nexport const EXTRA_BORDER_SIZE = 4;\r\n\r\nexport const DEFAULT_SYMBOL_SIZE = 20;\r\n\r\nexport const DEFAULT_SYMBOL_WITH_BG_SIZE = 24;\r\n\r\nexport const DEFAULT_SYMBOL_FILL_COLOR = 'rgba(0, 163, 245, 1)';\r\n\r\nexport const DEFAULT_SYMBOL_STROKE_COLOR = 'rgb(255, 255, 255)';\r\n\r\nexport const DEFAULT_SYMBOL_OFFSET = [0, 0];\r\n\r\nexport const DEFAULT_CLUSTER_SVG = `\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 56 56\" width=\"56px\" height=\"56px\">\r\n <circle cx=\"28\" cy=\"28\" r=\"22\" fill=\"#00AAFF\" stroke=\"#00AAFF\" stroke-opacity=\"0.28\" stroke-width=\"12\" id=\"symbol-bg\" />\r\n</svg>\r\n`;\r\n\r\nexport const SYMBOL_CLASSIFICATION: Partial<Record<\r\n GeometryType,\r\n ClassifyParameter[]\r\n>> = {\r\n [GeometryType.Polygon]: ['fill.color', 'stroke.color', 'stroke.width'],\r\n [GeometryType.Polyline]: ['stroke.color', 'stroke.width'],\r\n [GeometryType.Point]: [\r\n 'angle',\r\n 'size',\r\n 'fill.color',\r\n 'fillColor',\r\n 'background.fillColor',\r\n 'background.strokeColor',\r\n 'background.strokeWidth',\r\n 'figure.fillColor',\r\n 'figure.strokeColor',\r\n 'figure.strokeWidth',\r\n 'singleObjectSymbol.size',\r\n 'singleObjectSymbol.figure.fillColor',\r\n 'singleObjectSymbol.figure.strokeColor',\r\n 'singleObjectSymbol.figure.strokeWidth',\r\n 'singleObjectSymbol.background.fillColor',\r\n 'singleObjectSymbol.background.strokeColor',\r\n 'singleObjectSymbol.background.strokeWidth',\r\n ],\r\n};\r\n\r\nexport const SYMBOL_LIMITS = {\r\n SIZE_MIN: 1,\r\n SIZE_MAX: 64,\r\n SIZE_STEP: 1,\r\n GRID_SIZE_MIN: 0.1,\r\n GRID_SIZE_MAX: 120,\r\n MIN_OBJECTS_COUNT: 2,\r\n MAX_OBJECTS_COUNT: 10000,\r\n MIN_CLUSTER_SIZE: 16,\r\n MAX_CLUSTER_SIZE: 120,\r\n STROKE_WIDTH_MIN: 0,\r\n STROKE_WIDTH_MAX: 32,\r\n STROKE_WIDTH_STEP: 0.25,\r\n ANGLE_MIN: -360,\r\n ANGLE_MAX: 360,\r\n ANGLE_STEP: 1,\r\n PREVIEW_SIZE_MAX: 32,\r\n PREVIEW_SIZE_MAX_WIDTH: 26,\r\n};\r\n\r\nexport const DEFAULT_PARAMETER_INFO: ParameterInfo = {\r\n classifyAble: true,\r\n min: SYMBOL_LIMITS.STROKE_WIDTH_MIN,\r\n max: SYMBOL_LIMITS.STROKE_WIDTH_MAX,\r\n step: SYMBOL_LIMITS.STROKE_WIDTH_STEP,\r\n units: Units.Pixels,\r\n serialize: value => value,\r\n deserialize: value => value,\r\n};\r\n\r\nexport const PARAMETER_INFOS: Partial<Record<\r\n ClassificationParameter,\r\n ParameterInfo\r\n>> = {\r\n size: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.SIZE_MIN,\r\n max: SYMBOL_LIMITS.SIZE_MAX,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n units: Units.Pixels,\r\n },\r\n /* gridSize: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.GRID_SIZE_MIN,\r\n max: SYMBOL_LIMITS.GRID_SIZE_MAX,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: null,\r\n },\r\n maxObjectCount: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\r\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: i18n.t(Units.Count, { ns: \"common\" }),\r\n },\r\n selectionObjectsLimit: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\r\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\r\n step: SYMBOL_LIMITS.SIZE_STEP,\r\n classifyAble: false,\r\n units: i18n.t(Units.Count, { ns: \"common\" }),\r\n },\r\n angle: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n min: SYMBOL_LIMITS.ANGLE_MIN,\r\n max: SYMBOL_LIMITS.ANGLE_MAX,\r\n step: SYMBOL_LIMITS.ANGLE_STEP,\r\n units: Units.Degrees,\r\n serialize: compose(Math.round, radToDeg),\r\n deserialize: degToRad,\r\n },\r\n endingSize: {\r\n ...DEFAULT_PARAMETER_INFO,\r\n classifyAble: false,\r\n min: 3,\r\n max: 12,\r\n step: 1,\r\n },*/\r\n};\r\n\r\nexport const OPERATOR_CONDITION_REMAP: Record<ComparisonOperator, string> = {\r\n [ComparisonOperator.Equals]: '==',\r\n [ComparisonOperator.NotEquals]: '!=',\r\n [ComparisonOperator.GreaterThan]: '>',\r\n [ComparisonOperator.GreaterOrEquals]: '>=',\r\n [ComparisonOperator.LessThan]: '<',\r\n [ComparisonOperator.LessOrEquals]: '<=',\r\n [ComparisonOperator.Filled]: '!=',\r\n [ComparisonOperator.Empty]: '==',\r\n [ComparisonOperator.Contains]: '==',\r\n [ComparisonOperator.NotContains]: '!=',\r\n [ComparisonOperator.StartsWith]: '==',\r\n [ComparisonOperator.NotStartsWith]: '!=',\r\n [ComparisonOperator.EndsWith]: '==',\r\n [ComparisonOperator.NotEndsWith]: '!=',\r\n [ComparisonOperator.Between]: 'between',\r\n [ComparisonOperator.Outside]: '!between',\r\n};\r\n\r\nexport const BASE_OPERATORS = [\r\n ComparisonOperator.Equals,\r\n ComparisonOperator.NotEquals,\r\n];\r\n\r\nexport const CONTAINS_OPERATORS = [\r\n ComparisonOperator.Contains,\r\n ComparisonOperator.NotContains,\r\n];\r\n\r\nexport const FILLED_OPERATORS = [\r\n ComparisonOperator.Filled,\r\n ComparisonOperator.Empty,\r\n];\r\n\r\nexport const STARTS_WITH_OPERATORS = [\r\n ComparisonOperator.StartsWith,\r\n ComparisonOperator.NotStartsWith,\r\n];\r\n\r\nexport const ENDS_WITH_OPERATORS = [\r\n ComparisonOperator.EndsWith,\r\n ComparisonOperator.NotEndsWith,\r\n];\r\n\r\nexport const RANGE_OPERATORS = [\r\n ComparisonOperator.LessThan,\r\n ComparisonOperator.LessOrEquals,\r\n ComparisonOperator.GreaterThan,\r\n ComparisonOperator.GreaterOrEquals,\r\n];\r\n\r\nexport const BETWEEN_OPERATORS = [\r\n ComparisonOperator.Between,\r\n ComparisonOperator.Outside,\r\n];\r\n\r\nexport const numberComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...RANGE_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n ...BETWEEN_OPERATORS,\r\n];\r\n\r\nexport const dateComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...RANGE_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n ...BETWEEN_OPERATORS,\r\n];\r\n\r\nexport const textComparisonOperators = [\r\n ...BASE_OPERATORS,\r\n ...CONTAINS_OPERATORS,\r\n ...STARTS_WITH_OPERATORS,\r\n ...ENDS_WITH_OPERATORS,\r\n ...FILLED_OPERATORS,\r\n];\r\n","import { ReactNode, RefObject } from 'react';\r\nimport {\r\n AttributeType,\r\n PointLabelSymbolDc,\r\n SvgPointSymbolDc,\r\n StyleDc,\r\n FeatureLayerServiceInfoDc,\r\n AttributeFormatDc,\r\n FeatureDc,\r\n} from '@evergis/api';\r\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport {\r\n ClassificationParameterExtended,\r\n LayerAttribute,\r\n LegendValueType,\r\n ParameterByAttribute,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../../core';\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from '../../symbols';\r\n\r\nexport type ClassifyParameter =\r\n | 'fill.color'\r\n | 'fill.hatchColor'\r\n | 'fillColor'\r\n | 'stroke.width'\r\n | 'stroke.color'\r\n | 'strokeWidth'\r\n | 'strokeColor'\r\n | 'textBackground.fill.color'\r\n | 'background.fillColor'\r\n | 'background.strokeColor'\r\n | 'background.strokeWidth'\r\n | 'figure.fillColor'\r\n | 'figure.strokeColor'\r\n | 'figure.strokeWidth'\r\n | 'fontColor'\r\n | 'haloColor'\r\n | 'size'\r\n | 'symbol'\r\n | 'angle'\r\n | 'maskedColor'\r\n | 'endingSize'\r\n | 'beginningSize'\r\n | 'maxObjectCount'\r\n | 'gridSize'\r\n | 'selectionObjectsLimit'\r\n | 'singleObjectSymbol.size'\r\n | 'singleObjectSymbol.figure.fillColor'\r\n | 'singleObjectSymbol.figure.strokeColor'\r\n | 'singleObjectSymbol.figure.strokeWidth'\r\n | 'singleObjectSymbol.background.fillColor'\r\n | 'singleObjectSymbol.background.strokeColor'\r\n | 'singleObjectSymbol.background.strokeWidth';\r\n\r\nexport interface ParameterInfo {\r\n min: number;\r\n max: number;\r\n step: number;\r\n units: Units | null;\r\n serialize: (value: number) => number;\r\n deserialize: (value: number) => number;\r\n classifyAble: boolean;\r\n}\r\n\r\nexport const enum Units {\r\n Pixels = 'px',\r\n Count = 'pcs',\r\n Degrees = '°',\r\n}\r\n\r\nexport type Positions = Coordinates | Coordinates[] | Coordinates[][];\r\n\r\nexport type FeaturedDcExtendedGeometry = Omit<\r\n FeatureDc['geometry'],\r\n 'coordinates'\r\n> & {\r\n coordinates?: Positions;\r\n};\r\n\r\nexport type LegendProps = {\r\n layerInfo: FeatureLayerServiceInfoDc;\r\n formatValue?: (\r\n type: AttributeType,\r\n value: string | number | Date | FeaturedDcExtendedGeometry,\r\n stringFormat?: AttributeFormatDc\r\n ) => string;\r\n hiddenLegends?: Record<string, string[]>;\r\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\r\n clearHiddenLegends?: (layerName: string) => void;\r\n goToClassification?: VoidFunction;\r\n};\r\n\r\nexport type LegendChildrenProps = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\r\n> & {\r\n layerInfo: FeatureLayerServiceInfoDc;\r\n};\r\n\r\nexport type LegendSectionProps = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\r\n> & {\r\n layerName: string;\r\n symbol: StyleDc['symbol'];\r\n parameter: ClassificationParameterExtended;\r\n parameters: ClassificationParameterExtended[];\r\n classified: ParameterByAttribute<ParameterValueWithSymbol>;\r\n attribute: LayerAttribute | null;\r\n index: number;\r\n count?: number;\r\n};\r\n\r\nexport type LegendSectionItem = Pick<\r\n LegendProps,\r\n 'hiddenLegends' | 'toggleHiddenLegend'\r\n> & {\r\n attributeType: AttributeType;\r\n symbol: StyleSymbolType;\r\n title: string;\r\n index: number;\r\n hiddenCondition?: string;\r\n};\r\n\r\nexport type MaximizedLegendProps = {\r\n innerRef?: RefObject<HTMLDivElement> | undefined;\r\n isShown?: boolean;\r\n layerName: string;\r\n symbol: StyleDc['symbol'];\r\n parameter: ClassificationParameterExtended;\r\n values: LegendSectionItem[];\r\n attributeType: AttributeType;\r\n index: number;\r\n hiddenLegends?: string[];\r\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\r\n};\r\n\r\nexport type SvgSymbolProps = {\r\n svg: string;\r\n symbol: SvgPointSymbol;\r\n size?: number;\r\n title?: string;\r\n text?: string;\r\n bg?: SvgSymbolBg;\r\n skipOffset?: boolean;\r\n isClassified?: boolean;\r\n fontSettings?: PointLabelSymbolDc;\r\n onClick?: (svg: string, symbol: SvgPointSymbol) => void;\r\n};\r\n\r\nexport enum SvgSymbolBg {\r\n Rect = 'rect',\r\n Circle = 'circle',\r\n}\r\n\r\nexport type SGisSymbol =\r\n | MaskedImage\r\n | SvgPointSymbolDc\r\n | SGisPolylineSymbol\r\n | SGisPolygonSymbol\r\n | SGisImageFill\r\n | SGisBrushFill\r\n | H3Symbol;\r\n/* | sPointSymbol\r\n | sSquareSymbol\r\n | sStaticImageSymbol\r\n | SGisMiterSymbol*/\r\n\r\nexport type SvgEditorField = Pick<\r\n SvgPointSymbol,\r\n 'size' | 'offset' | 'angle'\r\n> & {\r\n 'background.fillColor': string;\r\n 'background.strokeColor': string;\r\n 'background.strokeWidth': string;\r\n 'figure.strokeColor': string;\r\n 'figure.strokeWidth': string;\r\n 'figure.fillColor': string;\r\n};\r\n\r\nexport type MinimizedLegendProps = {\r\n innerRef?: RefObject<HTMLDivElement> | undefined;\r\n isShown?: boolean;\r\n title?: string | ReactNode;\r\n values: LegendValueType[];\r\n parameter: ClassificationParameterExtended;\r\n hiddenLegends?: string[];\r\n};\r\n\r\nexport type MapLegendItemProps = {\r\n value?: string | number;\r\n parameter?: ClassificationParameterExtended;\r\n isHidden?: boolean;\r\n};\r\n","import { Gradient, Svg } from '@svgdotjs/svg.js';\r\nimport { SvgParameterDc } from '@evergis/api';\r\n\r\nimport {\r\n DEFAULT_SYMBOL_FILL_COLOR,\r\n DEFAULT_SYMBOL_SIZE,\r\n DEFAULT_SYMBOL_STROKE_COLOR,\r\n DEFAULT_SYMBOL_WITH_BG_SIZE,\r\n} from '../components/Legend/constants';\r\nimport { SvgSymbolBg } from '../components/Legend/types';\r\nimport {\r\n getParameterValue,\r\n isParameterByAttribute,\r\n ParameterByAttribute,\r\n ParameterByAttributeValue,\r\n ParameterValue,\r\n SvgPointSymbol,\r\n} from '../core';\r\n\r\nconst DEFAULT_STROKE_OPACITY = 0.28;\r\n\r\nexport const convertSvgToBase64 = (svg: string) =>\r\n `data:image/svg+xml;base64,${window.btoa(svg)}`;\r\n\r\nexport const createSvgGradient = (\r\n svg: Svg,\r\n values: ParameterByAttributeValue<string>[]\r\n) =>\r\n svg\r\n .gradient('linear', (add: Gradient) => {\r\n values?.forEach(({ value }, index) => {\r\n add.stop(index / (values?.length - 1), value);\r\n });\r\n })\r\n .from(0, 0)\r\n .to(1, 1);\r\n\r\n// eslint-disable-next-line max-lines-per-function\r\nexport const manipulateSvgSymbol = ({\r\n SVGContainer,\r\n symbol,\r\n svg,\r\n bg,\r\n isClassified,\r\n}: {\r\n SVGContainer: Svg;\r\n symbol: SvgPointSymbol;\r\n svg?: string;\r\n bg?: SvgSymbolBg;\r\n isClassified?: boolean;\r\n}): Svg => {\r\n if (!symbol) return SVGContainer;\r\n\r\n const symbolData = getParameterValue(\r\n svg || (symbol.data as ParameterValue)\r\n ) as string;\r\n\r\n if (!symbolData) return SVGContainer;\r\n\r\n SVGContainer.clear();\r\n\r\n const { size, angle, background, figure } = symbol;\r\n\r\n const isUploadedFile =\r\n !bg &&\r\n !symbolData.includes('symbol-bg') &&\r\n !symbolData.includes('symbol-figure');\r\n const innerSvg = symbolData.replace(/<\\?xml[^?]*\\?>|<svg[^>]*>|<\\/svg>/g, '');\r\n\r\n if (isUploadedFile) {\r\n SVGContainer.svg(innerSvg);\r\n\r\n const uploadedViewBox = /viewBox=\"([^\"]+)\"/g.exec(symbolData)?.[1];\r\n\r\n if (uploadedViewBox?.[1]) {\r\n SVGContainer.viewbox(uploadedViewBox);\r\n }\r\n\r\n SVGContainer.size(size as number);\r\n } else {\r\n const hasBg = bg || innerSvg?.includes('symbol-bg');\r\n let defaultSize = hasBg ? DEFAULT_SYMBOL_WITH_BG_SIZE : DEFAULT_SYMBOL_SIZE;\r\n const currentSize = size || defaultSize;\r\n let viewBox = [0, 0, defaultSize, defaultSize];\r\n const strokeWidth =\r\n getParameterValue(\r\n (background as SvgParameterDc)?.strokeWidth as number\r\n ) ||\r\n (typeof (background as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\r\n\r\n if (strokeWidth) {\r\n defaultSize += strokeWidth as number;\r\n viewBox = [-strokeWidth / 2, -strokeWidth / 2, defaultSize, defaultSize];\r\n }\r\n\r\n if (hasBg) {\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\r\n viewBox.join(' ')\r\n );\r\n\r\n const currentBg = bg || (background as SvgParameterDc)?.type;\r\n\r\n if (currentBg) {\r\n const strokeColor = getParameterValue(\r\n (background as SvgParameterDc)?.strokeColor as ParameterValue\r\n );\r\n const fillColor = getParameterValue(\r\n (background as SvgParameterDc)?.fillColor as ParameterValue\r\n );\r\n\r\n SVGContainer.svg(\r\n currentBg === SvgSymbolBg.Circle\r\n ? `<circle\r\n id=\"symbol-bg\"\r\n cx=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n cy=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n r=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\r\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\r\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\r\n stroke-width=\"${strokeWidth}\"\r\n />`\r\n : `<rect\r\n id=\"symbol-bg\"\r\n width=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\r\n height=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\r\n rx=\"4\"\r\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\r\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\r\n stroke-width=\"${strokeWidth}\"\r\n />`\r\n );\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find('#symbol-bg:not(:first-child)').each((item: any) =>\r\n item.remove()\r\n );\r\n SVGContainer.find(':not(#symbol-bg)').each((item: any) =>\r\n item\r\n .center(\r\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2,\r\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2\r\n )\r\n .fill('white')\r\n );\r\n\r\n const symbolBg = SVGContainer.find('#symbol-bg')[0];\r\n\r\n if (isClassified) {\r\n symbolBg?.stroke({ opacity: DEFAULT_STROKE_OPACITY });\r\n }\r\n\r\n // eslint-disable-next-line max-depth\r\n if (\r\n isParameterByAttribute(\r\n (background as SvgParameterDc)?.fillColor as ParameterValue\r\n )\r\n ) {\r\n symbolBg?.fill(createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ));\r\n }\r\n\r\n if (isParameterByAttribute(\r\n (background as SvgParameterDc)?.strokeColor as ParameterValue\r\n )) {\r\n symbolBg?.stroke({\r\n color: (createSvgGradient(\r\n SVGContainer,\r\n ((background as SvgParameterDc)?.strokeColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ) as unknown) as string,\r\n });\r\n }\r\n } else {\r\n SVGContainer.svg(innerSvg);\r\n }\r\n } else {\r\n const strokeColor = getParameterValue(\r\n (figure as SvgParameterDc)?.strokeColor as string\r\n );\r\n const strokeWidth = getParameterValue(\r\n (figure as SvgParameterDc)?.strokeWidth as number\r\n ) ||\r\n (typeof (figure as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\r\n const fillColor = getParameterValue(\r\n (figure as SvgParameterDc)?.fillColor as string\r\n );\r\n\r\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\r\n viewBox.join(' ')\r\n );\r\n SVGContainer.svg(innerSvg);\r\n SVGContainer.find('#symbol-figure').each(item => {\r\n item\r\n .center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2)\r\n .fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR)\r\n .stroke({ color: strokeColor, width: strokeWidth });\r\n\r\n if (\r\n isParameterByAttribute(\r\n (figure as SvgParameterDc)?.fillColor as ParameterValue\r\n )\r\n ) {\r\n item?.fill(createSvgGradient(\r\n SVGContainer,\r\n ((figure as SvgParameterDc)?.fillColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ));\r\n }\r\n\r\n if (\r\n isParameterByAttribute(\r\n (figure as SvgParameterDc)?.strokeColor as ParameterValue\r\n )\r\n ) {\r\n item?.stroke({\r\n color: (createSvgGradient(\r\n SVGContainer,\r\n ((figure as SvgParameterDc)?.strokeColor as ParameterByAttribute<\r\n string\r\n >)?.values\r\n ) as unknown) as string,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n const rootTransform = /<svg[^>]*transform=\"([^\"]+)\"/g.exec(symbolData)?.[1];\r\n\r\n if (rootTransform) {\r\n const transformParts = rootTransform.slice(0, -1).split('(');\r\n\r\n SVGContainer.transform({\r\n [transformParts[0]]: transformParts[1].split(','),\r\n });\r\n }\r\n\r\n const rotatedAngle = SVGContainer.transform('rotate');\r\n\r\n if (rotatedAngle) {\r\n SVGContainer.rotate(-rotatedAngle, 0, 0);\r\n }\r\n if (angle !== undefined) {\r\n SVGContainer.rotate((angle as number) * (180 / Math.PI), 0, 0);\r\n }\r\n\r\n return SVGContainer;\r\n};\r\n","import { LineEndingType } from \"@evergis/api\";\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { polygonCircleFromPoint } from '../../';\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nexport class CircleLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth * 3;\r\n }\r\n\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineEndingType.FilledCircle;\r\n\r\n return new PolyRender(\r\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\r\n {\r\n fillColor: isFilled ? this.color : 'transparent',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n enclosed: true,\r\n }\r\n );\r\n }\r\n}\r\n","import { LineEndingType } from \"@evergis/api\";\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\n\r\nimport { LineMiterRender } from './LineMiterRender';\r\n\r\nexport class SquareLineMiterRender extends LineMiterRender {\r\n get usageSize() {\r\n return this.miterSize + this.strokeWidth;\r\n }\r\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\r\n return [\r\n [\r\n [x, y + this.miterSize / 2],\r\n [x, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\r\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\r\n ],\r\n ];\r\n }\r\n\r\n createRender(miterRings: Coordinates[][]) {\r\n const isFilled = this.kind === LineEndingType.FilledSquare;\r\n\r\n return new PolyRender(miterRings, {\r\n enclosed: true,\r\n fillColor: isFilled ? this.color : void 0,\r\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\r\n lineCap: 'square',\r\n lineJoin: 'miter',\r\n strokeColor: this.color,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n }\r\n}\r\n","import { LineEndingType } from \"@evergis/api\";\r\n\r\nimport { ArrowLineMiterRender } from './ArrowLineMiterRender';\r\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\r\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\r\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\r\n\r\nexport const getLineMiterRender = (\r\n options: LineMiterRenderBaseInfo\r\n): LineMiterRender | null => {\r\n switch (options.kind) {\r\n case LineEndingType.Arrow:\r\n case LineEndingType.FilledArrow:\r\n return new ArrowLineMiterRender(options);\r\n case LineEndingType.Square:\r\n case LineEndingType.FilledSquare:\r\n return new SquareLineMiterRender(options);\r\n case LineEndingType.Circle:\r\n case LineEndingType.FilledCircle:\r\n return new CircleLineMiterRender(options);\r\n default:\r\n return null;\r\n }\r\n};\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { MiterPosition } from './LineMiterRender';\n\nconst updateRingForRightMiter = (\n ring: Coordinates[],\n miterSize: number,\n isLastRing: boolean\n): Coordinates[] => {\n const reversedRing = ring.slice().reverse();\n\n for (let i = 0; i < reversedRing.length; i++) {\n const coordinates = reversedRing[i];\n\n if (isLastRing && i === 0) {\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\n }\n\n const nextCoordinates = reversedRing[i - 1];\n\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\n reversedRing[i] = [\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return reversedRing.reverse();\n};\n\nconst updateRingForLeftMiter = (\n ring: Coordinates[],\n miterSize: number,\n isFirstRing: boolean\n): Coordinates[] => {\n const newRing = ring.slice();\n\n for (let i = 0; i < newRing.length; i++) {\n const coordinates = newRing[i];\n\n if (i === 0 && isFirstRing) {\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\n }\n\n const prevCoordinates = newRing[i - 1];\n\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\n newRing[i] = [\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return newRing;\n};\n\nexport const updateRingsForMiter = (\n rings: Coordinates[][],\n position: MiterPosition,\n miterSize: number\n): Coordinates[][] => {\n return rings.map((ring, ringIndex) => {\n switch (position) {\n case 'right':\n return updateRingForRightMiter(\n ring,\n miterSize,\n ringIndex === rings.length - 1\n );\n default:\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\n }\n });\n};\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\r\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\r\n\r\nimport { getParameterValue } from '../../core/classification';\r\n\r\nimport {\r\n isDashedBrush,\r\n isSimplePolylineSymbol,\r\n PolylineSymbols,\r\n} from '../../core/style';\r\n\r\nimport { getHexColor } from '../../utils/color';\r\nimport { clamp } from '../../utils/math';\r\nimport { PREVIEW_LIMITS } from '../previewLimits';\r\nimport { getLineDash } from '../strokeStyle';\r\n\r\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\r\n rings.map(ring =>\r\n ring.map(coordinates => coordinates.slice() as Coordinates)\r\n );\r\n\r\nexport class SGisPolylineSymbol extends sPolylineSymbol {\r\n constructor(public originalSymbol: PolylineSymbols) {\r\n super({\r\n // @ts-ignore\r\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\r\n strokeWidth: clamp(\r\n // @ts-ignore\r\n getParameterValue(originalSymbol.stroke?.width),\r\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\r\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\r\n ),\r\n // @ts-ignore\r\n lineDash: getLineDash(originalSymbol.stroke),\r\n // @ts-ignore\r\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\r\n });\r\n }\r\n\r\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\r\n if (!isSimplePolylineSymbol(this.originalSymbol))\r\n return super.renderFunction(feature, resolution, crs);\r\n\r\n const {\r\n ending,\r\n beginning,\r\n } = this.originalSymbol;\r\n const renders: Render[] = [];\r\n\r\n const featureCopy = feature.clone();\r\n\r\n const beginningMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: beginning.type,\r\n position: 'left',\r\n // @ts-ignore\r\n size: beginning.size,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n const endingMiterRender = getLineMiterRender({\r\n color: this.strokeColor,\r\n // @ts-ignore\r\n kind: ending.type,\r\n position: 'right',\r\n // @ts-ignore\r\n size: ending.size,\r\n strokeWidth: this.strokeWidth,\r\n });\r\n\r\n if (beginningMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'left',\r\n beginningMiterRender.usageSize\r\n );\r\n const render = beginningMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n if (endingMiterRender) {\r\n const updatedRings = updateRingsForMiter(\r\n featureCopy.rings,\r\n 'right',\r\n endingMiterRender.usageSize\r\n );\r\n const render = endingMiterRender.getRender(\r\n updatedRings,\r\n feature.crs,\r\n resolution,\r\n crs\r\n );\r\n\r\n featureCopy.rings = updatedRings;\r\n renders.push(render);\r\n }\r\n\r\n // NOTE: линия должна быть в начале чтобы быть под митерами\r\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\r\n\r\n return renders;\r\n }\r\n\r\n clone() {\r\n return new SGisPolylineSymbol(this.originalSymbol);\r\n }\r\n}\r\n","import React, { ComponentType } from 'react';\nimport ReactDOM from 'react-dom';\nimport { DynamicPointSymbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nexport type LabelSymbolComponent =\n | ComponentType<{ content: string }>\n | ComponentType;\n\ntype LabelSymbolParams = {\n offset?: Offset;\n component?: LabelSymbolComponent;\n};\n\nexport class LabelSymbol extends DynamicPointSymbol {\n public component?: LabelSymbolComponent;\n\n constructor({ component, offset }: LabelSymbolParams = {}) {\n super({ offset });\n this.component = component;\n }\n\n protected _getFeatureNode(feature: LabelFeature): HTMLElement {\n const node = document.createElement('div');\n\n this.renderDom(feature.content, node);\n\n return node;\n }\n\n protected _updateFeatureNode(feature: LabelFeature): void {\n this.renderDom(feature.content, this.getNode(feature));\n }\n\n private renderDom(content: string, node: HTMLElement): void {\n if (!node) {\n return;\n }\n\n const Component = this.component;\n\n if (Component) {\n ReactDOM.render(<Component content={content} />, node);\n } else {\n node.innerText = content;\n }\n }\n}\n","import React from 'react';\nimport { Offset } from '@evergis/sgis/es/baseTypes';\n\nimport { renderLabelSymbolType } from '../../components';\nimport { LabelSymbol } from './LabelSymbol';\n\nexport const defaultOffset: Offset = [8, -16];\n\ntype createLabelSymbolParams = {\n offset?: Offset;\n onClose?: VoidFunction;\n renderLabel: renderLabelSymbolType;\n};\n\nexport const createLabelSymbol = (props: createLabelSymbolParams) => {\n const {\n offset = defaultOffset,\n renderLabel = ({ content }: { content: string }) => <div>{content}</div>,\n onClose = undefined,\n } = props || {};\n\n return new LabelSymbol({\n offset,\n component: ({ content }: { content: string }) =>\n renderLabel({ content, onClose }),\n });\n};\n","import {\r\n PointSymbol,\r\n PointSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/point/Point';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\nexport type EditorPointSymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n mapCoordinates?: Coordinates;\r\n} & PointSymbolConstructorParams;\r\n\r\nexport class ShadowedPointSymbol extends PointSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPointSymbolParams) {\r\n super(options);\r\n }\r\n\r\n static getShadowArc(\r\n position: Coordinates,\r\n { strokeWidth = 2, shadowColor, shadowSize, size = 6 }: EditorPointSymbolParams,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n return new Arc(position, {\r\n fillColor: \"transparent\",\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n radius: (size + strokeWidth + shadowSize) / 2,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n static getPointArc(\r\n position: Coordinates,\r\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n return new Arc(position, {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n radius: size / 2,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n public renderFunction(\r\n feature: PointFeature,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof PointFeature)) return [];\r\n const { position } = feature.projectTo(crs);\r\n\r\n const pxPosition: Coordinates = [\r\n position[0] / resolution + (this.offset[0] || 0),\r\n -position[1] / resolution + (this.offset[1] || 0),\r\n ];\r\n\r\n const shadowRender = this.getShadow(pxPosition, feature, position);\r\n const pointArc = this.getPoint(pxPosition, feature, position);\r\n\r\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\r\n }\r\n\r\n protected getShadow(\r\n position: Coordinates,\r\n _feature: Feature,\r\n mapCoordinates: Coordinates,\r\n ): Arc | void {\r\n return ShadowedPointSymbol.getShadowArc(position, this, mapCoordinates);\r\n }\r\n\r\n protected getPoint(position: Coordinates, _feature: Feature, mapCoordinates: Coordinates): Arc {\r\n return ShadowedPointSymbol.getPointArc(position, this, mapCoordinates);\r\n }\r\n}\r\n","import {\r\n PolylineSymbol,\r\n PolylineSymbolConstructorParams,\r\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Feature } from '@evergis/sgis';\r\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from './ShadowedPointSymbol';\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\nexport const getSimplifiedPolygonCoordinates = (feature: Poly, crs: Crs, tolerance = 1) => {\r\n const projected = feature.crs.equals(crs) ? feature.rings : feature.projectTo(crs).rings;\r\n\r\n return simplifyCoordinates(projected, tolerance);\r\n};\r\n\r\nexport function createShadowRender(\r\n position: Coordinates,\r\n { strokeWidth = 1, shadowColor, shadowSize, size = 3, mapCoordinates }: EditorPointSymbolParams,\r\n) {\r\n const shadowRadius = (size + strokeWidth + shadowSize) / 2;\r\n\r\n return new Arc(position, {\r\n fillColor: \"transparent\",\r\n strokeColor: shadowColor,\r\n strokeWidth: shadowSize,\r\n radius: shadowRadius,\r\n mapCoordinates,\r\n });\r\n}\r\n\r\nexport function createPointRender(\r\n position: Coordinates,\r\n { strokeColor, strokeWidth, fillColor, size = 3, mapCoordinates }: EditorPointSymbolParams,\r\n) {\r\n const radius = size / 2;\r\n\r\n return new Arc(position, {\r\n fillColor,\r\n strokeColor,\r\n strokeWidth,\r\n radius,\r\n mapCoordinates,\r\n });\r\n}\r\n\r\nexport type EditorPolySymbolParams = {\r\n shadowColor: string;\r\n shadowSize: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n} & PolylineSymbolConstructorParams;\r\n\r\nexport class ShadowedPolySymbol extends PolylineSymbol {\r\n shadowColor!: string;\r\n shadowSize!: number;\r\n fillColor?: string;\r\n enclose?: boolean;\r\n showVertex?: boolean;\r\n vertexShadowSize?: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(options: EditorPolySymbolParams) {\r\n super(options);\r\n }\r\n\r\n public renderFunction(\r\n feature: Polygon,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n if (!(feature instanceof Poly)) return [];\r\n\r\n const coordinates = super.getRenderedCoordinates(\r\n feature,\r\n resolution,\r\n crs\r\n );\r\n const simplifiedFeatureCoordinates = getSimplifiedPolygonCoordinates(feature, crs);\r\n const polyRender = this.getPolyRender(coordinates, feature, simplifiedFeatureCoordinates);\r\n const shadowRender = this.getShadow(coordinates, feature, simplifiedFeatureCoordinates);\r\n const vertexRenders = this.getVertexRenders(coordinates, simplifiedFeatureCoordinates);\r\n let renders: Render[] = [polyRender];\r\n\r\n if (shadowRender) {\r\n renders = [shadowRender, polyRender];\r\n }\r\n\r\n if (vertexRenders) {\r\n renders = renders.concat(vertexRenders);\r\n }\r\n\r\n return renders;\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n _feature: Feature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender | void {\r\n return new PolyRender(coordinates, {\r\n fillStyle: FillStyle.None,\r\n enclosed: this.enclose,\r\n strokeColor: this.shadowColor,\r\n strokeWidth: this.shadowSize,\r\n lineDash: this.lineDash,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n _feature: Feature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender {\r\n return new PolyRender(coordinates, {\r\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\r\n enclosed: this.enclose,\r\n fillColor: this.fillColor,\r\n strokeColor: this.strokeColor,\r\n strokeWidth: this.strokeWidth,\r\n lineDash: this.lineDash,\r\n mapCoordinates,\r\n });\r\n }\r\n\r\n protected getVertexRenders(\r\n coordinates: Coordinates[][],\r\n mapCoordinates: Coordinates[][]\r\n ): Arc[] | void {\r\n if (!this.showVertex) return;\r\n\r\n const pointRenderers = [];\r\n const shadowRenderers = [];\r\n\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const ring = coordinates[i];\r\n\r\n for (let j = 0; j < ring.length; j++) {\r\n const point = ring[j];\r\n const featurePoint = mapCoordinates[i][j];\r\n\r\n const shadowRender = createShadowRender(point, {\r\n size: 6,\r\n strokeWidth: 2,\r\n shadowColor: this.shadowColor,\r\n strokeColor: this.strokeColor,\r\n shadowSize:\r\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\r\n fillColor: 'transparent',\r\n mapCoordinates: featurePoint,\r\n });\r\n const pointRender = createPointRender(point, {\r\n size: 6,\r\n strokeWidth: 2,\r\n shadowColor: this.shadowColor,\r\n strokeColor: this.strokeColor,\r\n shadowSize:\r\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\r\n fillColor: '#ffffff',\r\n mapCoordinates: featurePoint,\r\n });\r\n\r\n shadowRenderers.push(shadowRender);\r\n pointRenderers.push(pointRender);\r\n }\r\n }\r\n\r\n return [...pointRenderers, ...shadowRenderers];\r\n }\r\n}\r\n\r\nconst polySymbolParams = {\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n shadowSize: 8,\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n};\r\n\r\nconst measureSymbolParams = {\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n vertexShadowSize: 0,\r\n};\r\n\r\nexport const measureLengthSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n enclose: false,\r\n showVertex: true,\r\n});\r\n\r\nexport const measureAreaSymbol = new ShadowedPolySymbol({\r\n ...polySymbolParams,\r\n ...measureSymbolParams,\r\n fillColor: 'rgba(255, 105, 51, 0.25)',\r\n enclose: true,\r\n showVertex: true,\r\n});\r\n\r\nconst snapSymbolParams = {\r\n size: 10,\r\n strokeWidth: 2,\r\n strokeColor: '#e33600',\r\n fillColor: '#ffffff',\r\n shadowColor: 'rgba(227, 54, 0, 0.3)',\r\n shadowSize: 3,\r\n};\r\n\r\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\r\n ...snapSymbolParams,\r\n strokeColor: '#ff6933',\r\n shadowSize: 0,\r\n});\r\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\n\r\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\r\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\r\n\r\ntype SelectedFeature = PointFeature & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPointSymbolParams = {\r\n selectedStrokeColor: string;\r\n selectedFillColor: string;\r\n} & EditorPointSymbolParams;\r\n\r\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\r\n selectedStrokeColor!: string;\r\n selectedFillColor!: string;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPointSymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n position: [number, number],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates,\r\n ): Arc | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(position, feature, mapCoordinates);\r\n }\r\n }\r\n\r\n protected getPoint(\r\n position: [number, number],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates,\r\n ): Arc {\r\n const pointRender = super.getPoint(position, feature, mapCoordinates);\r\n\r\n if (feature.isSelected) {\r\n pointRender.strokeColor = this.selectedStrokeColor;\r\n pointRender.fillColor = this.selectedFillColor;\r\n }\r\n\r\n return pointRender;\r\n }\r\n}\r\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\n\r\nimport {\r\n EditorPolySymbolParams,\r\n ShadowedPolySymbol,\r\n} from '../Shadowed';\r\n\r\ntype SelectedFeature = Polygon & {\r\n isSelected: boolean;\r\n};\r\n\r\nexport type SelectedPolySymbolParams = {\r\n selectedFillColor?: string;\r\n selectedStrokeColor: string;\r\n selectedStrokeWidth?: number;\r\n} & EditorPolySymbolParams;\r\n\r\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\r\n selectedFillColor!: string;\r\n selectedStrokeColor!: string;\r\n selectedStrokeWidth!: number;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n constructor(props: SelectedPolySymbolParams) {\r\n super(props);\r\n }\r\n\r\n protected getShadow(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender | void {\r\n if (feature.isSelected) {\r\n return super.getShadow(coordinates, feature, mapCoordinates);\r\n }\r\n }\r\n\r\n protected getPolyRender(\r\n coordinates: Coordinates[][],\r\n feature: SelectedFeature,\r\n mapCoordinates: Coordinates[][],\r\n ): PolyRender {\r\n const polyRender = super.getPolyRender(coordinates, feature, mapCoordinates);\r\n if (feature.isSelected) {\r\n polyRender.fillColor = this.selectedFillColor;\r\n polyRender.strokeColor = this.selectedStrokeColor;\r\n if (this.selectedStrokeWidth !== void 0) {\r\n polyRender.strokeWidth = this.selectedStrokeWidth;\r\n }\r\n }\r\n\r\n return polyRender;\r\n }\r\n}\r\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\r\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\nimport { Bbox } from '@evergis/sgis/es/Bbox';\r\nimport { Crs } from '@evergis/sgis/es/Crs';\r\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\r\nimport {\r\n MouseEventFlags,\r\n mouseEvents,\r\n Handler,\r\n} from '@evergis/sgis/es/EventHandler';\r\n\r\nimport { metersToPixels } from '../../utils/metersToPixels';\r\n\r\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\r\n\r\nconst defaultPathStyles: SvgPolyPathStyles = {\r\n strokeWidth: 2,\r\n strokeColor: 'rgb(0, 163, 245)',\r\n fillStyle: FillStyle.None,\r\n};\r\n\r\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\r\n container: HTMLDivElement = document.createElement('div');\r\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\r\n pathStyles?: SvgPolyPathStyles;\r\n circle?: SVGPolyProps['circle'];\r\n className?: string;\r\n appendToSvg?: SVGPolyProps['appendToSvg'];\r\n\r\n constructor({\r\n redrawFeatureNode,\r\n pathStyles,\r\n circle,\r\n className,\r\n appendToSvg,\r\n }: SVGPolyProps = {}) {\r\n super();\r\n this.container.style.position = 'absolute';\r\n this.redrawFeatureNode = redrawFeatureNode;\r\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\r\n this.circle = circle;\r\n this.className = className;\r\n this.appendToSvg = appendToSvg;\r\n }\r\n\r\n renderFunction(\r\n feature: SVGFeaturePoly,\r\n resolution: number,\r\n crs: Crs\r\n ): Render[] {\r\n const coordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(coordinates);\r\n svg && this.container.append(svg);\r\n\r\n feature.__dynamicSymbolRender = new DynamicRender({\r\n node: this.container,\r\n update: (bbox, resolution) =>\r\n this.update({ bbox, resolution, feature, crs }),\r\n redraw: () => {\r\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\r\n },\r\n });\r\n\r\n this._setEventListeners(feature);\r\n\r\n return [feature.__dynamicSymbolRender];\r\n }\r\n\r\n setCirclePxRaius(crs: Crs) {\r\n if (this.circle && this.pathStyles) {\r\n this.pathStyles.radius =\r\n metersToPixels(this.circle.radius, {\r\n painter: this.circle.painter,\r\n crs,\r\n }) + (this.circle?.pxOffset || 0);\r\n }\r\n }\r\n\r\n update({\r\n bbox,\r\n resolution,\r\n feature,\r\n crs,\r\n }: {\r\n bbox?: Bbox;\r\n resolution?: number;\r\n feature: SVGFeaturePoly;\r\n crs: Crs;\r\n }) {\r\n if (!feature) return;\r\n\r\n if (!bbox) bbox = feature.__lastBbox;\r\n if (!resolution) resolution = feature.__lastResolution;\r\n\r\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\r\n\r\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\r\n const newCoordinates =\r\n feature instanceof Poly\r\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\r\n : feature.centroid;\r\n\r\n this.setCirclePxRaius(crs);\r\n this.container.innerHTML = '';\r\n const svg = this.setSvg(newCoordinates);\r\n svg && this.container.append(svg);\r\n }\r\n\r\n const polygon = feature.projectTo(bbox.crs);\r\n const radiusOffset = this.pathStyles?.radius\r\n ? this.pathStyles?.radius +\r\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\r\n : 0;\r\n const dx =\r\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\r\n const dy =\r\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\r\n\r\n this.container.style.left = `${dx.toString()}px`;\r\n this.container.style.top = `${dy.toString()}px`;\r\n\r\n feature.__lastBbox = bbox;\r\n feature.__lastResolution = resolution;\r\n }\r\n\r\n setSvg(\r\n coordinates: [number, number][][] | Coordinates\r\n ): SVGElement | undefined {\r\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\r\n this.pathStyles || {};\r\n const svgRender = new SvgRender({\r\n coordinates,\r\n ...defaultPathStyles,\r\n appendToSvg: this.appendToSvg,\r\n ...this.pathStyles,\r\n });\r\n\r\n if (this.circle) {\r\n svgRender._setArcNode();\r\n } else {\r\n svgRender._setPolyNode();\r\n }\r\n\r\n let svgElement;\r\n svgRender.getNode((_: null, svg: SVGElement) => {\r\n svgElement = svg;\r\n this.className && svgElement.classList.add(this.className);\r\n const path =\r\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\r\n\r\n if (path) {\r\n path.setAttribute('stroke-linecap', lineCap || 'round');\r\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\r\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\r\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\r\n\r\n if (this.circle) {\r\n path.setAttribute(\r\n 'stroke-dasharray',\r\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\r\n );\r\n }\r\n }\r\n });\r\n\r\n return svgElement;\r\n }\r\n\r\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\r\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\r\n\r\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\r\n this.circle ? 'circle' : 'path'\r\n );\r\n\r\n Object.keys(mouseEvents).forEach(eventName => {\r\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\r\n listenDomEvent(\r\n svgNode,\r\n mouseEvents[eventName].type,\r\n (event: Handler) => {\r\n dynamicFeature.fire(mouseEvents[eventName].type, {\r\n node: svgNode,\r\n browserEvent: event,\r\n });\r\n }\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\r\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\r\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\r\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\r\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\r\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\r\nimport { ClusterSymbolDc } from \"@evergis/api\";\r\n\r\nimport {\r\n SGisImageSymbolType,\r\n SGisPointSymbolType,\r\n SGisPolygonSymbolType,\r\n SGisPolylineSymbolType,\r\n SGisSymbolType,\r\n} from './types';\r\n\r\nexport function isSGisPointSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPointSymbolType {\r\n return (\r\n symbol instanceof PointSymbol ||\r\n symbol instanceof StaticImageSymbol ||\r\n symbol instanceof SquareSymbol ||\r\n symbol instanceof MaskedImage\r\n );\r\n}\r\n\r\nexport function isSGisImageSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisImageSymbolType {\r\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\r\n}\r\n\r\nexport function isSGisPolygonSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolygonSymbolType {\r\n return (\r\n symbol instanceof PolygonSymbol ||\r\n symbol instanceof BrushFill ||\r\n symbol instanceof ImageFill\r\n );\r\n}\r\n\r\nexport function isSGisPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is SGisPolylineSymbolType {\r\n return symbol instanceof PolylineSymbol;\r\n}\r\n\r\nexport function isSGisH3Symbol(\r\n symbol: SGisSymbolType\r\n): symbol is H3Symbol {\r\n return symbol instanceof H3Symbol;\r\n}\r\n\r\nexport function isSGisCombinedPolylineSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is CombinedPolylineSymbol {\r\n return symbol instanceof CombinedPolylineSymbol\r\n}\r\n\r\nexport function isSGisClusterSymbol(\r\n symbol: SGisSymbolType\r\n): symbol is ClusterSymbol {\r\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\r\n}\r\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\r\nimport { plain } from '@evergis/sgis/es/Crs';\r\nimport { CombinedPolyline } from \"@evergis/sgis/es/features/CombinedPolyline\";\r\n\r\n/**\r\n * Моки фич для отображения превью символа\r\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\r\n */\r\n\r\nexport const viewBoxSize = 100;\r\n\r\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\r\n\r\nexport const lineFeature = new Polyline(\r\n [\r\n [0, -57],\r\n [26, -57],\r\n [40, -35],\r\n [60, -65],\r\n [74, -43],\r\n [100, -43],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\nexport const combinedLineFeature = new CombinedPolyline(\r\n [\r\n [0, -57],\r\n [26, -57],\r\n [40, -35],\r\n [60, -65],\r\n [74, -43],\r\n [100, -43],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\nexport const polygonFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\nexport const h3gridFeature = new H3Feature(\r\n [\r\n [50, -15],\r\n [80, -33],\r\n [80, -67],\r\n [50, -85],\r\n [20, -67],\r\n [20, -33],\r\n [50, -15],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const lineLegendFeature = new Polyline(\r\n [\r\n [0, -50],\r\n [100, -50],\r\n ],\r\n {\r\n crs: plain,\r\n }\r\n);\r\n\r\nexport const polygonLegendFeature = new Polygon(\r\n [\r\n [20, -20],\r\n [80, -20],\r\n [80, -80],\r\n [20, -80],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const polygonMapLegendFeature = new Polygon(\r\n [\r\n [50, 0],\r\n [100, -25],\r\n [100, -75],\r\n [50, -100],\r\n [0, -75],\r\n [0, -25],\r\n ],\r\n { crs: plain }\r\n);\r\n\r\nexport const MAP_LEGEND_FEATURES = {\r\n polygon: polygonMapLegendFeature,\r\n};\r\n\r\nexport const LEGEND_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineLegendFeature,\r\n combinedPolyline: combinedLineFeature,\r\n polygon: polygonLegendFeature,\r\n h3grid: h3gridFeature,\r\n};\r\n\r\nexport const MOCK_FEATURES = {\r\n point: pointFeature,\r\n polyline: lineFeature,\r\n combinedPolyline: combinedLineFeature,\r\n polygon: polygonFeature,\r\n h3grid: h3gridFeature,\r\n} as const;\r\n","import { plain } from '@evergis/sgis/es/Crs';\r\n\r\nimport { isSGisCombinedPolylineSymbol, isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\r\nimport {\r\n LEGEND_FEATURES,\r\n MAP_LEGEND_FEATURES,\r\n MOCK_FEATURES,\r\n viewBoxSize,\r\n} from './mockFeatures';\r\nimport { SGisSymbolType } from './types';\r\n\r\nexport function getSymbolRenders(\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize,\r\n features: Partial<typeof MOCK_FEATURES> = {}\r\n) {\r\n const resolution = viewBoxSize / size;\r\n const featuresToRender = { ...MOCK_FEATURES, ...features };\r\n\r\n if (isSGisPolygonSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polygon,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.polyline,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisH3Symbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.h3grid,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n if (isSGisCombinedPolylineSymbol(symbol)) {\r\n return symbol.renderFunctionAsync(\r\n featuresToRender.combinedPolyline,\r\n resolution,\r\n plain\r\n );\r\n }\r\n\r\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\r\n}\r\n\r\nexport const getMapLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => {\r\n return getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\r\n}\r\n\r\nexport const getLegendSymbolRenders = (\r\n symbol: SGisSymbolType,\r\n size: number = viewBoxSize\r\n) => {\r\n return getSymbolRenders(symbol, size, LEGEND_FEATURES);\r\n}\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\r\n\r\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\r\n renders.forEach(render => {\r\n canvas.draw(<RenderForCanvas>render);\r\n });\r\n}\r\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\r\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\r\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\r\nimport { Color } from '@evergis/color';\r\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\r\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\r\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\r\n\r\nimport { getParameterValue } from '../core/classification';\r\n\r\nimport {\r\n ClassifyAble,\r\n H3GridSymbol,\r\n isPolygonHasHatchBrush,\r\n isPolygonHasPatternBrush,\r\n MaskedImageSymbol,\r\n Offset,\r\n ParameterValue,\r\n PointSymbol,\r\n PolygonSymbol,\r\n PolylineSymbols,\r\n SimpleOffset,\r\n SquareSymbol,\r\n StaticImageSymbol,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../core/style';\r\n\r\nimport {\r\n SGisBrushFill,\r\n SGisImageFill,\r\n SGisPolygonSymbol,\r\n SGisPolylineSymbol,\r\n} from './Evergis';\r\n\r\nimport { SGisSymbolType } from './types';\r\n\r\n// TODO create classes from unClassified symbols only\r\nexport function deserializeSymbol(\r\n symbol: StyleSymbolType\r\n): SGisSymbolType | null {\r\n switch (symbol.type) {\r\n case \"h3grid\":\r\n return deserializeH3Symbol(symbol as H3Symbol);\r\n case \"svgPointSymbol\":\r\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\r\n case 'circlePointSymbol':\r\n return deserializePointSymbol(symbol as PointSymbol);\r\n case 'squarePointSymbol':\r\n return deserializeSquareSymbol(symbol as SquareSymbol);\r\n case 'maskedImagePointSymbol':\r\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\r\n case 'imagePointSymbol':\r\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\r\n case 'polygonSymbol':\r\n return deserializePolygonSymbol(symbol as PolygonSymbol);\r\n case 'simplePolylineSymbol':\r\n case 'polylineSymbol':\r\n return deserializePolylineSymbol(symbol as PolylineSymbols);\r\n case \"clusterSymbol\":\r\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\r\n return new H3Symbol({\r\n ...symbol,\r\n cellSize: getParameterValue(symbol.cellSize as number),\r\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\r\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\r\n fillColor: getParameterValue(symbol?.fill?.color as string),\r\n });\r\n}\r\n\r\nfunction deserializePointSymbol(symbol: PointSymbol) {\r\n // @ts-ignore\r\n return new SPointSymbol(deserializePointSymbolParams(symbol));\r\n}\r\n\r\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\r\n getParameterValue(offset?.[0]),\r\n getParameterValue(offset?.[1]),\r\n];\r\n\r\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\r\n return {\r\n type: getParameterValue(type as ParameterValue),\r\n data: getParameterValue(data as ParameterValue),\r\n size: getParameterValue(size as ParameterValue),\r\n offset: getOffsetParameterValue(offset as Offset),\r\n angle: getParameterValue(angle as ParameterValue),\r\n ...(background\r\n ? {\r\n background: {\r\n ...(background as SvgParameterDc),\r\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\r\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\r\n },\r\n }\r\n : {}),\r\n ...(figure\r\n ? {\r\n figure: {\r\n ...(figure as SvgParameterDc),\r\n strokeColor: deserializeColor(getParameterValue((figure as SvgParameterDc)?.strokeColor as string)),\r\n strokeWidth: getParameterValue((figure as SvgParameterDc)?.strokeWidth as ParameterValue),\r\n fillColor: deserializeColor(\r\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\r\n ),\r\n },\r\n }\r\n : {}),\r\n };\r\n}\r\n\r\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\r\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\r\n}\r\n\r\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\r\n return new SSquareSymbol({\r\n ...deserializePointSymbolParams(symbol),\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n });\r\n}\r\n\r\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\r\n return new MaskedImage({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n imageSource: deserializeBase64(symbol.image),\r\n // @ts-ignore\r\n maskSource: deserializeBase64(symbol.imageMask),\r\n // @ts-ignore\r\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\r\n });\r\n}\r\n\r\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\r\n return new SStaticImageSymbol({\r\n ...symbol,\r\n // @ts-ignore\r\n angle: getParameterValue(symbol.angle),\r\n // @ts-ignore\r\n width: getParameterValue(symbol.width),\r\n // @ts-ignore\r\n height: getParameterValue(symbol.height),\r\n // @ts-ignore\r\n anchorPoint: deserializeAnchor(symbol.offset),\r\n // @ts-ignore\r\n source: deserializeBase64(symbol.image),\r\n });\r\n}\r\n\r\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\r\n if (isPolygonHasPatternBrush(symbol)) {\r\n return new SGisImageFill(symbol);\r\n }\r\n\r\n if (isPolygonHasHatchBrush(symbol)) {\r\n return new SGisBrushFill(symbol);\r\n }\r\n\r\n return new SGisPolygonSymbol(symbol);\r\n}\r\n\r\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\r\n return new SGisPolylineSymbol(symbol);\r\n}\r\n\r\nfunction deserializePointSymbolParams({\r\n size,\r\n offset,\r\n strokeColor,\r\n strokeWidth,\r\n fillColor,\r\n}: PointSymbol | SquareSymbol) {\r\n return {\r\n size: getParameterValue(size as ClassifyAble<number>),\r\n offset: deserializeAnchor(offset as Offset),\r\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\r\n strokeColor: deserializeColor(\r\n getParameterValue(strokeColor as ClassifyAble<string>)\r\n ),\r\n fillColor: deserializeColor(\r\n getParameterValue(fillColor as ClassifyAble<string>)\r\n ),\r\n };\r\n}\r\n\r\nfunction deserializeBase64(base: string) {\r\n return `data:image/png;base64,${base}`;\r\n}\r\n\r\nexport function deserializeAnchor(offset: Offset) {\r\n // @ts-ignore\r\n return offset.map(getParameterValue);\r\n}\r\n\r\nfunction deserializeColor(color: string): string | null {\r\n return color ? new Color(color).toString() : null;\r\n}\r\n","import { SGisSymbolType } from './types';\r\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\r\n\r\nimport { clamp } from '../utils/math';\r\n\r\nexport const clampSymbol = (\r\n symbol: SGisSymbolType,\r\n min: number,\r\n max: number\r\n): SGisSymbolType => {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.width = clamp(symbol.width, min, max);\r\n symbol.height = clamp(symbol.height, min, max);\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.size = clamp(symbol.size, min, max);\r\n }\r\n\r\n return symbol;\r\n};\r\n\r\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\r\n if (isSGisImageSymbol(symbol)) {\r\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\r\n } else if (isSGisPointSymbol(symbol)) {\r\n symbol.offset = [0, 0];\r\n }\r\n\r\n return symbol;\r\n}\r\n\r\nexport const adjustSymbol = (\r\n symbol: SGisSymbolType,\r\n { size }: { size: number }\r\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\r\n","import { MutableRefObject, useEffect } from 'react';\r\nimport { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\r\nimport { Render } from '@evergis/sgis/es/renders/Render';\r\n\r\nimport {\r\n getSymbolRenders,\r\n renderSymbolToCanvas,\r\n SGisSymbolType,\r\n} from '../symbols';\r\n\r\nexport interface UseSymbolParams {\r\n symbol: SGisSymbolType;\r\n render?: (symbol: SGisSymbolType, size: number) => Promise<Render[]>;\r\n size?: number;\r\n maxWidth?: number;\r\n}\r\n\r\nconst DEFAULT_SYMBOL_SIZE = 26;\r\n\r\nexport function useSymbol(\r\n {\r\n symbol,\r\n size = DEFAULT_SYMBOL_SIZE,\r\n render = getSymbolRenders,\r\n maxWidth,\r\n }: UseSymbolParams,\r\n canvasRef: MutableRefObject<Canvas | null>\r\n) {\r\n useEffect(() => {\r\n if (canvasRef.current !== null && symbol !== undefined) {\r\n const canvas = canvasRef.current;\r\n setCanvasSize(canvas, size, maxWidth);\r\n\r\n render(symbol, size).then(renders => {\r\n renderSymbolToCanvas(renders, canvas);\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [symbol, size, maxWidth]);\r\n}\r\n\r\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\r\n canvas.node.height = size;\r\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\r\n}\r\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { useCallback, useRef } from 'react';\n\nexport function useCanvas() {\n const canvas = useRef<Canvas | null>(null);\n const ref = useCallback((node: HTMLCanvasElement | null) => {\n if (node !== null) {\n canvas.current = new Canvas(node);\n } else {\n canvas.current = null;\n }\n }, []);\n\n return { canvas, ref };\n}\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { useMemo, useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nexport function useProperty<T, D extends unknown[] | []>(\n { factory, destructor, update }: UsePropertyOptions<T, D>,\n deps: D = [] as D\n): T {\n const propRef = useRef<T>();\n\n useMount({\n onUnmount() {\n if (propRef.current && destructor) {\n destructor(propRef.current);\n }\n },\n });\n\n return useMemo(() => {\n if (propRef.current) {\n if (update) {\n const newProp = update(propRef.current, deps, { factory, destructor });\n if (newProp) propRef.current = newProp;\n } else if (destructor) {\n destructor(propRef.current);\n }\n } else {\n if (!update || !propRef.current) {\n propRef.current = factory(deps);\n }\n }\n\n return propRef.current;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UsePropertyOptions<T, D> = {\n factory: (deps: D) => T;\n destructor?: (prop: T) => void;\n\n /**\n * Allows to update useProperty return value.\n * If that property is not exist then each update of deps call factory\n */\n update?: (\n prop: T,\n deps: D,\n propertyOptions: Omit<UsePropertyOptions<T, D>, 'update'>\n ) => void | T;\n};\n","import { useEffect } from 'react';\n\nexport function useUpdate<Deps extends Array<unknown>>({\n onUpdate,\n shouldUpdate,\n deps,\n}: UseUpdateOptions<Deps>) {\n useEffect(() => {\n if (!shouldUpdate || shouldUpdate()) {\n onUpdate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\ntype UseUpdateOptions<Deps> = {\n onUpdate: () => void;\n shouldUpdate?: () => boolean;\n deps?: Deps;\n};\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nimport { useMapContext } from '../contexts';\n\nexport function useLayerOrder(layer: Layer, zIndex: number) {\n const { map } = useMapContext();\n\n useUpdate({\n onUpdate: () => map.insertLayer(layer, zIndex),\n deps: [zIndex, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerVisibility(layer: Layer, isDisplayed: boolean = true) {\n useUpdate({\n shouldUpdate: () => layer.isDisplayed !== isDisplayed,\n onUpdate: () => (layer.isDisplayed = isDisplayed),\n deps: [isDisplayed, layer],\n });\n}\n","import { Layer } from '@evergis/sgis/es/layers/Layer';\n\nimport { useUpdate } from './useUpdate';\n\nexport function useLayerOpacity(layer: Layer, opacity: number = 1) {\n useUpdate({\n shouldUpdate: () => layer.opacity !== opacity,\n onUpdate: () => (layer.opacity = opacity),\n deps: [opacity, layer],\n });\n}\n","import { EvergisDynamicLayer, EvergisDynamicLayerParams } from '@evergis/api';\r\nimport { Layer } from \"@evergis/sgis/es/layers/Layer\";\r\nimport { webMercator } from '@evergis/sgis/es/Crs';\r\n\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useEvergisContext, useMapContext } from '../contexts';\r\nimport { useLayerOpacity } from './useLayerOpacity';\r\nimport { LayerProps } from './LayerProps';\r\n\r\nexport function useEvergisDynamicLayer({\r\n name,\r\n zIndex,\r\n style,\r\n crs,\r\n ts,\r\n condition,\r\n isDisplayed,\r\n opacity,\r\n dataFilterId,\r\n onLoadStart,\r\n onLoadEnd,\r\n}: EvergisDynamicLayerProps) {\r\n const api = useEvergisContext();\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new EvergisDynamicLayer({ name, condition, style, crs, dataFilterId, onLoadStart, onLoadEnd }, api),\r\n destructor: layer => map.indexOf(layer as unknown as Layer) !== -1 && map.removeLayer(layer as unknown as Layer),\r\n update: (layer, [name, style, condition, crs = webMercator, dataFilterId]) => {\r\n layer.name = name;\r\n layer.style = style;\r\n layer.condition = condition;\r\n layer.dataFilterId = dataFilterId;\r\n layer.crs = crs;\r\n },\r\n },\r\n [name, style, condition, crs, dataFilterId, ts]\r\n );\r\n\r\n useLayerOrder(layer as unknown as Layer, zIndex);\r\n useLayerVisibility(layer as unknown as Layer, isDisplayed);\r\n useLayerOpacity(layer as unknown as Layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type EvergisDynamicLayerProps = EvergisDynamicLayerParams & LayerProps & {\r\n ts?: any;\r\n};\r\n","import { EvergisTileLayer, EvergisTileLayerParams } from '@evergis/api';\r\nimport { Layer } from '@evergis/sgis/es/layers/Layer';\r\n\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useEvergisContext, useMapContext } from '../contexts';\r\nimport { useEffect, useMemo } from 'react';\r\n\r\nexport type EvergisTileLayerProps = EvergisTileLayerParams & LayerProps & {\r\n sourceUrl?: string;\r\n};\r\n\r\nexport function useEvergisTileLayer({\r\n name,\r\n sourceUrl,\r\n subDomains,\r\n zIndex,\r\n isDisplayed,\r\n crs,\r\n opacity,\r\n}: EvergisTileLayerProps) {\r\n const api = useEvergisContext();\r\n const { map } = useMapContext();\r\n const layer = useMemo(\r\n () => new EvergisTileLayer({ name, sourceUrl, subDomains, crs, opacity }, api),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [name, sourceUrl, subDomains, crs, opacity]\r\n );\r\n\r\n useEffect(\r\n () => () => {\r\n map.indexOf((layer as unknown) as Layer) !== -1 &&\r\n map.removeLayer((layer as unknown) as Layer);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [layer]\r\n );\r\n\r\n useLayerOrder((layer as unknown) as Layer, zIndex);\r\n useLayerVisibility((layer as unknown) as Layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n","import { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\n\r\nimport { useMapContext } from '../contexts';\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useLayerOpacity } from \"./useLayerOpacity\";\r\n\r\nimport { LayerProps } from './LayerProps';\r\n\r\nexport function useFeatureLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n opacity,\r\n}: FeatureLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new FeatureLayer({ features, opacity }),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (layer, [features]) => {\r\n layer.features = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n useLayerOpacity(layer, opacity);\r\n\r\n return layer;\r\n}\r\n\r\nexport type FeatureLayerProps = {\r\n features: Feature[];\r\n} & LayerProps;\r\n","import { useCallback, useEffect } from 'react';\r\nimport { BboxChangeEndEvent, BboxChangeEvent, Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapBboxChange(\r\n onBboxChange?: (mapState: MapState) => void,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n\r\n const event = force ? BboxChangeEvent : BboxChangeEndEvent;\r\n\r\n const handleBboxChange = useCallback(() => {\r\n onBboxChange && onBboxChange(getMapState(map));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onBboxChange, map, event]);\r\n\r\n useEffect(() => {\r\n map.on(event.type, handleBboxChange);\r\n\r\n return () => {\r\n map.off(event.type, handleBboxChange);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleBboxChange, event]);\r\n}\r\n\r\nexport type MapState = {\r\n position: Coordinates;\r\n resolution: number;\r\n};\r\n\r\nexport function getMapState(map: Map): MapState {\r\n return {\r\n position: map.position.slice(0) as Coordinates,\r\n resolution: map.resolution,\r\n };\r\n}\r\n","import { MapResize } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { useCallback, useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useMapResize(onResize?: (size: number[]) => void) {\r\n const { painter } = useMapContext();\r\n\r\n const handleMapResize = useCallback(() => {\r\n onResize && onResize([painter.width, painter.height]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [onResize, painter]);\r\n\r\n useEffect(() => {\r\n painter.on(MapResize.type, handleMapResize);\r\n\r\n return () => {\r\n painter.off(MapResize.type, handleMapResize);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleMapResize]);\r\n}\r\n","import { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\r\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\r\nimport {\r\n EvergisDynamicLayer,\r\n EvergisLayer,\r\n isEvergisDynamicLayer,\r\n} from '@evergis/api';\r\nimport { useCallback, useMemo, useState } from 'react';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useMount } from './useMount';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\ntype BboxCoordinates = [number, number, number, number];\r\n\r\nexport type Envelopes = {\r\n [layerName: string]: BboxCoordinates;\r\n};\r\n\r\nexport type MapPickResult = {\r\n pointPosition: Coordinates;\r\n clickPoint: Coordinates;\r\n envelopes: Envelopes;\r\n imageRectangle: [number, number, number, number];\r\n extentSr: number;\r\n};\r\n\r\nexport const useMapPick = (): MapPickResult | undefined => {\r\n const { map, painter } = useMapContext();\r\n const [geometryParams, setGeometryParams] = useState<MapPickResult>();\r\n\r\n const evergisLayers = useMemo(() => map.layers as unknown as EvergisLayer[], [\r\n map.layers,\r\n ]);\r\n\r\n const pick = useCallback(\r\n (event: sGisEvent) => {\r\n if (!(event instanceof sGisClickEvent)) {\r\n return;\r\n }\r\n\r\n const imageRectangle = [0, 0, painter.width, painter.height];\r\n const [x, y] = painter.getPxPosition(event.point.position);\r\n\r\n setGeometryParams({\r\n pointPosition: event.point.position,\r\n clickPoint: [Math.round(x), Math.round(y)],\r\n envelopes: collectLayerEnvelopes(evergisLayers),\r\n imageRectangle,\r\n extentSr: map.crs.wkid,\r\n } as MapPickResult);\r\n },\r\n\r\n [painter, evergisLayers, map.crs.wkid]\r\n );\r\n\r\n useMount({\r\n onMount: () => map.on('click', pick),\r\n onUnmount: () => map.off('click', pick),\r\n });\r\n\r\n return geometryParams;\r\n};\r\n\r\nfunction getLayerBboxCoors(layer: EvergisDynamicLayer): BboxCoordinates {\r\n return (\r\n // @ts-ignore TODO _currentRender prop on DynamicLayer private\r\n layer._currentRender &&\r\n // @ts-ignore\r\n layer._currentRender.bbox &&\r\n // @ts-ignore\r\n layer._currentRender.bbox.coordinates\r\n );\r\n}\r\n\r\nfunction collectLayerEnvelopes(layers: EvergisLayer[]) {\r\n let envelopes: Envelopes = {};\r\n\r\n for (const layer of layers) {\r\n if (!isEvergisDynamicLayer(layer)) {\r\n continue;\r\n }\r\n\r\n envelopes[layer.name] = getLayerBboxCoors(layer);\r\n }\r\n\r\n return envelopes;\r\n}\r\n","import { useCallback, useReducer } from 'react';\n\nimport { getMapState, MapState, useMapBboxChange } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapState(force?: boolean) {\n const { map } = useMapContext();\n\n const [, dispatch] = useReducer(mapStateReducer, undefined, () =>\n getMapState(map)\n );\n\n const handleBboxChange = useCallback(dispatch, [dispatch]);\n\n useMapBboxChange(handleBboxChange, force);\n\n return getMapState(map);\n}\n\nfunction mapStateReducer(_: MapState, mapState: MapState): MapState {\n return mapState;\n}\n","import { useMemo } from 'react';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\n\nimport { useMapState } from './useMapState';\nimport { MapState } from './useMapBboxChange';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapView(): MapView {\n const { map, painter } = useMapContext();\n const { position, resolution } = useMapState();\n\n const level = useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const bbox = useMemo(() => painter.bbox, [position, resolution]);\n\n return {\n position,\n resolution,\n level,\n bbox,\n };\n}\n\nexport function useMapLevel() {\n const { map } = useMapContext();\n const { resolution } = useMapState(true);\n\n return useMemo(() => {\n const index = map.tileScheme.getLevel(resolution);\n\n if (index === void 0 && index === null) return;\n\n return map.tileScheme.levels[index].zIndex;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolution]);\n}\n\ntype MapView = MapState & {\n level?: number;\n bbox: Bbox;\n};\n","import { useRef } from 'react';\n\nimport { useMount } from './useMount';\n\nimport { useMapContext } from '../contexts';\n\nexport function useMapWrapper() {\n const { painter } = useMapContext();\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n useMount({\n onMount: () => (painter.wrapper = wrapperRef.current),\n onUnmount: () => (painter.wrapper = null),\n });\n\n return wrapperRef;\n}\n","import { LevelDefinition } from '@evergis/sgis/es/TileScheme';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { useEffect } from 'react';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nconst byScale = (scale: number) => ({ zIndex }: LevelDefinition) =>\r\n zIndex === scale;\r\n\r\nexport const useMaxMinScale = (\r\n minScale?: number,\r\n maxScale?: number,\r\n currentPosition?: [number, number],\r\n currentResolution?: number\r\n) => {\r\n const { map } = useMapContext();\r\n\r\n useEffect(() => {\r\n const levels = map.tileScheme.levels;\r\n\r\n if (maxScale !== undefined) {\r\n const { resolution } = levels.find(byScale(maxScale)) || {\r\n resolution: -1,\r\n };\r\n map.minResolution = resolution;\r\n }\r\n if (minScale !== undefined) {\r\n const { resolution } = levels.find(byScale(minScale)) || {\r\n resolution: -1,\r\n };\r\n map.maxResolution = resolution;\r\n }\r\n\r\n if (minScale !== undefined || maxScale !== undefined) {\r\n updateMapResolution(map, currentPosition, currentResolution);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [map, minScale, maxScale]);\r\n};\r\n\r\nexport const updateMapResolution = (\r\n map: Map,\r\n currentPosition?: [number, number],\r\n currentResolution?: number\r\n) => {\r\n if (currentPosition && currentResolution) {\r\n const newResolution = Math.min(\r\n Math.max(currentResolution, map.minResolution || 0),\r\n map.maxResolution || Number.MAX_VALUE\r\n );\r\n\r\n map.animateTo(currentPosition, newResolution);\r\n }\r\n};\r\n","import { useMemo } from 'react';\nimport { distance } from '@evergis/sgis/es/geotools';\n\nimport { useMapContext } from '../contexts';\n\nfunction getScale(scale: number): number {\n const pow10 = Math.pow(10, (Math.floor(scale) + '').length - 1);\n const d = scale / pow10;\n\n return pow10 * (d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1);\n}\n\nfunction useCorrectedResolution(resolution: number): number {\n const { painter } = useMapContext();\n const {\n height,\n width,\n bbox: { xMin, xMax, yMin, yMax, crs },\n } = painter;\n\n return useMemo(() => {\n if (width === 0) {\n return resolution;\n }\n const segmentLength = width / 10;\n const a = painter.getPointFromPxPosition(0, height / 2);\n const b = painter.getPointFromPxPosition(segmentLength, height / 2);\n\n return distance(a, b) / segmentLength;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [height, width, xMin, xMax, yMin, yMax, crs.wkid, resolution, painter]);\n}\n\nexport function useScale({\n resolution,\n minLength = 50,\n}: {\n resolution: number;\n minLength?: number;\n}) {\n const correctedResolution = useCorrectedResolution(resolution);\n\n return useMemo(() => {\n const minScale = minLength * correctedResolution;\n const currentScale = getScale(minScale);\n const width = getScale(minScale) / correctedResolution;\n\n return {\n currentScale,\n width,\n };\n }, [correctedResolution, minLength]);\n}\n","import { softEquals } from '@evergis/sgis/es/utils/math';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { useEffect } from 'react';\r\n\r\nimport { MapState } from './useMapBboxChange';\r\nimport { useMapViewActions } from './useMapViewActions';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useUpdateMapView(\r\n { position, resolution }: Partial<MapState>,\r\n force?: boolean\r\n) {\r\n const { map } = useMapContext();\r\n const { animateTo } = useMapViewActions();\r\n\r\n useEffect(() => {\r\n if (shouldUpdateMapState(map, { position, resolution })) {\r\n animateTo({\r\n position,\r\n resolution,\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [position, resolution, force]);\r\n}\r\n\r\nfunction shouldUpdatePosition(map: Map, position?: Coordinates) {\r\n return (\r\n position &&\r\n (!softEquals(map.position[0], position[0]) ||\r\n !softEquals(map.position[1], position[1]))\r\n );\r\n}\r\n\r\nfunction shouldUpdateResolution(map: Map, resolution?: number) {\r\n return resolution && !softEquals(map.resolution, resolution);\r\n}\r\n\r\nexport function shouldUpdateMapState(\r\n map: Map,\r\n { position, resolution }: Partial<MapState>\r\n) {\r\n return (\r\n shouldUpdatePosition(map, position) ||\r\n shouldUpdateResolution(map, resolution)\r\n );\r\n}\r\n","import {\r\n MutableRefObject,\r\n ReactNode,\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n} from 'react';\r\nimport { LabelFeature } from '@evergis/sgis/es/features/Label';\r\nimport {\r\n sGisClickEvent,\r\n sGisMouseEvent,\r\n sGisMouseMoveEvent,\r\n sGisMouseOverEvent,\r\n} from '@evergis/sgis/es/commonEvents';\r\nimport { Handler } from '@evergis/sgis/es/EventHandler';\r\nimport { IPoint } from '@evergis/sgis/es/Point';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Map } from '@evergis/sgis/es/Map';\r\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\r\n\r\nimport { useEventPoint } from './useEventPoint';\r\n\r\nimport { useMapContext, useTooltipContext } from '../contexts';\r\n\r\nimport { LabelSymbol, LabelSymbolComponent } from '../symbols';\r\n\r\nexport type TooltipParams = {\r\n position?: Coordinates;\r\n component?: ReactNode;\r\n feature?: Feature | Map;\r\n clickMode?: boolean;\r\n};\r\n\r\ntype TargetEvent = (event: sGisMouseEvent) => void;\r\n\r\nexport type FeatureEvents = {\r\n [key: string]: TargetEvent | null;\r\n};\r\n\r\n// TODO HOW to read that?\r\nexport const useTooltip = (zIndex = 1) => {\r\n const { layer, popupLayer } = useTooltipContext();\r\n const { map } = useMapContext();\r\n const getEventPoint = useEventPoint();\r\n\r\n const targetFeatures: MutableRefObject<Feature[] | Map[]> = useRef([]);\r\n const labelFeature: MutableRefObject<LabelFeature | null> = useRef(null);\r\n const events: MutableRefObject<FeatureEvents[]> = useRef([]);\r\n\r\n const onClickMap = useCallback(() => popupLayer.remove(popupLayer.features), [\r\n popupLayer,\r\n ]);\r\n\r\n const reset = useCallback(() => {\r\n targetFeatures.current.forEach((feature: Feature | Map, index: number) => {\r\n const currentFeatureEvents = events.current[index];\r\n\r\n if (currentFeatureEvents) {\r\n const {\r\n onMouseOver,\r\n onMouseMove,\r\n onMouseOut,\r\n onClick,\r\n } = currentFeatureEvents;\r\n\r\n if (feature.hasListener('mouseover', onMouseOver as Handler)) {\r\n feature.off('mouseover', onMouseOver as Handler);\r\n }\r\n\r\n if (feature.hasListener('mousemove', onMouseMove as Handler)) {\r\n feature.off('mousemove', onMouseMove as Handler);\r\n }\r\n\r\n if (feature.hasListener('mouseout', onMouseOut as Handler)) {\r\n feature.off('mouseout', onMouseOut as Handler);\r\n }\r\n\r\n if (feature.hasListener('click', onClick as Handler)) {\r\n feature.off('click', onClick as Handler);\r\n }\r\n }\r\n });\r\n\r\n map.off('click', onClickMap as Handler);\r\n targetFeatures.current = [];\r\n labelFeature.current = null;\r\n layer.remove(layer.features);\r\n events.current = [];\r\n\r\n if (map.indexOf(popupLayer) !== -1) {\r\n map.removeLayer(popupLayer);\r\n }\r\n }, [onClickMap, popupLayer, layer, map]);\r\n\r\n useEffect(() => {\r\n if (map.indexOf(layer) === -1) {\r\n map.insertLayer(layer, zIndex);\r\n }\r\n return reset;\r\n }, [reset, map, layer, zIndex]);\r\n\r\n const onSetLabelFeature = useCallback(\r\n ({\r\n point,\r\n position,\r\n component,\r\n clickMode,\r\n }: {\r\n point: IPoint;\r\n } & TooltipParams) => {\r\n const feature = new LabelFeature(position || point.position, {\r\n symbol: new LabelSymbol({\r\n component: component as LabelSymbolComponent,\r\n }),\r\n crs: map.crs,\r\n });\r\n\r\n if (clickMode) {\r\n if (map.indexOf(popupLayer) === -1) {\r\n map.insertLayer(popupLayer, zIndex);\r\n }\r\n\r\n popupLayer.remove(popupLayer.features);\r\n popupLayer.add(feature);\r\n } else {\r\n labelFeature.current = feature;\r\n layer.add(feature);\r\n }\r\n },\r\n [popupLayer, layer, map, zIndex]\r\n );\r\n\r\n const onRemoveLabelFeature = useCallback(\r\n event => {\r\n if (event.node) {\r\n event.node.doNotBubbleToMap = true;\r\n }\r\n event.stopPropagation();\r\n labelFeature.current &&\r\n layer.has(labelFeature.current) &&\r\n layer.remove(labelFeature.current);\r\n labelFeature.current = null;\r\n layer.remove(layer.features);\r\n },\r\n [layer]\r\n );\r\n\r\n return useCallback(\r\n (tooltipParams: TooltipParams) => {\r\n const { feature, position, component, clickMode } = tooltipParams;\r\n const target = feature || map;\r\n targetFeatures.current.push(target as Feature & Map);\r\n const isMap = target instanceof Map;\r\n\r\n const featureEvents: FeatureEvents = {};\r\n\r\n featureEvents.onMouseOver = (event: sGisMouseOverEvent) => {\r\n event.stopPropagation();\r\n onRemoveLabelFeature(event);\r\n\r\n onSetLabelFeature({ point: getEventPoint(event), position, component });\r\n };\r\n\r\n featureEvents.onMouseMove = (\r\n event: sGisMouseMoveEvent & {\r\n node?: HTMLImageElement & { doNotBubbleToMap?: boolean };\r\n }\r\n ) => {\r\n if (!isMap) {\r\n event.stopPropagation();\r\n }\r\n\r\n if (event.node) {\r\n event.node.doNotBubbleToMap = true;\r\n }\r\n\r\n const point = getEventPoint(event);\r\n\r\n if (labelFeature.current) {\r\n isMap &&\r\n !layer.has(labelFeature.current) &&\r\n layer.add(labelFeature.current);\r\n\r\n labelFeature.current.position = position || point.position;\r\n } else {\r\n onSetLabelFeature({ point: point, position, component });\r\n }\r\n };\r\n\r\n if (clickMode) {\r\n featureEvents.onClick = (event: sGisClickEvent) => {\r\n event.stopPropagation();\r\n\r\n onSetLabelFeature({\r\n point: getEventPoint(event),\r\n position,\r\n component,\r\n clickMode,\r\n });\r\n };\r\n }\r\n\r\n featureEvents.onMouseOut = onRemoveLabelFeature;\r\n\r\n events.current.push(featureEvents);\r\n\r\n const { onMouseOver, onMouseMove, onMouseOut, onClick } = featureEvents;\r\n\r\n if (clickMode && !isMap) {\r\n target.on('mouseover', onMouseOut as Handler);\r\n target.on('mousemove', onMouseOut as Handler);\r\n target.on('click', onClick as Handler);\r\n\r\n if (!map.hasListener('click', onClickMap as Handler)) {\r\n map.on('click', onClickMap as Handler);\r\n }\r\n } else {\r\n if (!isMap) {\r\n target.on('mouseover', onMouseOver as Handler);\r\n }\r\n target.on('mousemove', onMouseMove as Handler);\r\n target.on('mouseout', onMouseOut as Handler);\r\n }\r\n },\r\n [\r\n onRemoveLabelFeature,\r\n onClickMap,\r\n map,\r\n onSetLabelFeature,\r\n getEventPoint,\r\n layer,\r\n ]\r\n );\r\n};\r\n","import { useRef } from 'react';\r\nimport { ClusterLayer } from '@evergis/sgis/es/layers/ClusterLayer';\r\nimport { GridClusterProvider } from '@evergis/sgis/es/layers/clusterProviders/GridClusterProvider';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Symbol } from '@evergis/sgis/es/symbols/Symbol';\r\n\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\nimport { useProperty } from './useProperty';\r\nimport { LayerProps } from './LayerProps';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport type ClusterLayerProps = {\r\n features: Feature[];\r\n zIndex?: number;\r\n size?: number;\r\n distance?: number;\r\n onChangeGrid?: (fetures: Feature[], layer: ClusterLayer) => void;\r\n clusterSymbol?: Symbol<Feature>;\r\n} & LayerProps;\r\n\r\nexport function useClusterLayer({\r\n zIndex,\r\n isDisplayed = true,\r\n features,\r\n onChangeGrid,\r\n size,\r\n distance,\r\n clusterSymbol,\r\n}: ClusterLayerProps) {\r\n const { map } = useMapContext();\r\n const currentFeatures = useRef(features);\r\n\r\n const layer: ClusterLayer = useProperty(\r\n {\r\n factory: () => {\r\n const gridClusterProvider = new GridClusterProvider({\r\n size,\r\n distance,\r\n onChangeGrid: onChangeGrid\r\n ? features => onChangeGrid(features, layer)\r\n : void 0,\r\n });\r\n\r\n const clusterLayer = new ClusterLayer({\r\n gridClusterProvider,\r\n clusterSymbol,\r\n });\r\n currentFeatures.current = features;\r\n\r\n clusterLayer.add(features);\r\n\r\n return clusterLayer;\r\n },\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n update: (clusterLayer, [features]) => {\r\n clusterLayer.remove(currentFeatures.current);\r\n clusterLayer.add(features);\r\n\r\n currentFeatures.current = features;\r\n },\r\n },\r\n [features]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\n\r\nimport { useMapPick } from './useMapPick';\r\n\r\nimport { useEvergisSelectContext } from '../contexts';\r\n\r\nimport { evaluateFeature, EvergisFeature } from '../core';\r\n\r\nimport { EvergisSelectProps } from '../components/EvergisSelect/types';\r\n\r\nconst INIT_FEATURES: EvergisFeature[] = [];\r\n\r\ntype SelectionResult = [EvergisFeature[], () => void];\r\n\r\nexport const useEvergisSelect = ({\r\n onPick,\r\n onFeatures,\r\n}: Pick<EvergisSelectProps, 'onPick' | 'onFeatures'>): SelectionResult => {\r\n const mapPickResult = useMapPick();\r\n const layers = useEvergisSelectContext();\r\n const [features, setFeatures] = useState<EvergisFeature[]>(INIT_FEATURES);\r\n\r\n const resetSelection = useCallback(() => setFeatures(INIT_FEATURES), [\r\n setFeatures,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!mapPickResult) {\r\n return;\r\n }\r\n\r\n onPick(mapPickResult).then(features => {\r\n setFeatures(features.map(evaluateFeature(layers)));\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [mapPickResult]);\r\n\r\n return [\r\n typeof onFeatures === 'function' ? onFeatures(features) : features,\r\n resetSelection,\r\n ];\r\n};\r\n","import { useMemo } from 'react';\nimport { CRS_MAP, DEFAULT_CRS, DEFAULT_SRID, SrId } from '../core';\n\nexport const useCrs = (srId?: SrId) => {\n return useMemo(() => {\n return CRS_MAP[srId || DEFAULT_SRID] || DEFAULT_CRS;\n }, [srId]);\n};\n","import { useRef, useEffect, useCallback } from 'react';\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\nimport { PointEditor } from '@evergis/sgis/es/controls/PointEditor';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { sGisEvent } from '@evergis/sgis/es/EventHandler';\nimport { sGisClickEvent } from '@evergis/sgis/es/commonEvents';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\nimport { useMount } from './useMount';\nimport { useMapContext } from '../contexts';\n\nimport { DraggableMarkerProps } from '../components';\n\nconst setCursor = (painter: DomPainter, cursor: string) =>\n painter.wrapper &&\n typeof painter.wrapper !== 'string' &&\n (painter.wrapper.style.cursor = cursor);\n\nfunction none() {\n return;\n}\n\nexport const useDraggableMarker = ({\n position,\n onChange,\n symbol,\n}: DraggableMarkerProps) => {\n const feature = useRef<Feature | null>(null);\n const { map, painter } = useMapContext();\n const layer = useRef(new FeatureLayer());\n const pointEditor = useRef(\n new PointEditor(map, {\n isActive: false,\n activeLayer: layer.current,\n })\n );\n\n const onMapClick = useCallback(\n (event: sGisEvent) => {\n event.stopPropagation();\n if (!(event instanceof sGisClickEvent)) {\n return;\n }\n\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n onChange(event.point.position);\n },\n [painter, map, onChange]\n );\n\n useMount({\n onMount: () => {\n map.addLayer(layer.current);\n pointEditor.current.on('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n\n if (!position) {\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n },\n onUnmount: () => {\n map.removeLayer(layer.current);\n map.off('click', onMapClick);\n pointEditor.current.off('edit', () =>\n onChange(pointEditor.current.activeFeature?.position || [0, 0])\n );\n setCursor(painter, 'default');\n },\n });\n\n useEffect(() => {\n if (position) {\n if (!feature.current) {\n const hasMapClick = map.hasListener('click', onMapClick);\n\n const pointFeature = new PointFeature(position, {\n crs: map.crs,\n symbol: symbol || new StaticImageSymbol(),\n });\n\n pointFeature.on('mousemove', none);\n pointFeature.on('mouseover', () => setCursor(painter, 'pointer'));\n pointFeature.on('mouseout', () => setCursor(painter, 'default'));\n\n layer.current.add(pointFeature);\n pointEditor.current.activeFeature = pointFeature;\n pointEditor.current.isActive = true;\n feature.current = pointFeature;\n if (hasMapClick) {\n map.off('click', onMapClick);\n setCursor(painter, 'default');\n }\n } else if (feature.current && pointEditor.current.activeFeature) {\n pointEditor.current.activeFeature.position = position;\n layer.current.redraw();\n }\n } else if (feature.current) {\n layer.current.remove(feature.current as Feature);\n feature.current = null;\n setCursor(painter, 'pointer');\n map.on('click', onMapClick);\n }\n }, [onMapClick, painter, map, position, symbol]);\n};\n","import { useMemo, useCallback } from 'react';\nimport { Crs } from '@evergis/sgis/es/Crs';\n\nimport { useMapContext } from '../contexts';\nimport { useMapState } from '../hooks';\nimport { metersToPixels } from '../utils/metersToPixels';\n\nexport const useMetersToPixels = (meters: number, crs?: Crs): number => {\n const { painter, map } = useMapContext();\n const { resolution } = useMapState();\n\n return useMemo(\n () =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [painter, meters, crs, map.crs, resolution]\n );\n};\n\nexport const useMetersToPixelsCb = () => {\n const { painter, map } = useMapContext();\n\n return useCallback(\n (meters: number, crs?: Crs) =>\n metersToPixels(meters, {\n painter: painter,\n crs: crs || map.crs,\n }),\n [painter, map.crs]\n );\n};\n","import { useMemo } from 'react';\nimport { debounce } from '@evergis/sgis/es/utils/utils';\n\nexport const useDebouncedCallback = <CallbackFn extends () => void>(\n interval: number\n): ((cb: CallbackFn) => void) => {\n return useMemo(\n () =>\n debounce((cb: CallbackFn) => {\n cb();\n }, interval),\n [interval]\n );\n};\n","import { useCallback, useState } from \"react\";\r\n\r\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\r\n const [state, setState] = useState(initial !== undefined ? initial : false);\r\n const toggle = useCallback(() => setState(!state), [state]);\r\n\r\n return [state, toggle, setState];\r\n};\r\n","import { PropsWithRef, useCallback, useState } from 'react';\r\n\r\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\r\n const [node, onSetNode] = useState<HTMLElement | null>(null);\r\n\r\n const ref = useCallback(onSetNode, [onSetNode]);\r\n\r\n return [ref, node];\r\n}\r\n","import React from 'react';\r\n\r\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\r\n\r\ninterface Props extends UseSymbolParams {}\r\n\r\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\r\n const { canvas, ref } = useCanvas();\r\n useSymbol({ symbol, size, render }, canvas);\r\n\r\n return <canvas ref={ref} />;\r\n};\r\n","import { GeometryType } from '@evergis/api';\r\nimport styled from 'styled-components';\r\n\r\nexport type CompoundIconProps = {\r\n geometryType: GeometryType;\r\n icons: Record<GeometryType, string>;\r\n};\r\n\r\nexport const CompoundIcon = styled.div<CompoundIconProps>`\r\n background: ${({ geometryType, icons }) =>\r\n `url(${icons[geometryType]}) center center / ${\r\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\r\n } no-repeat`};\r\n height: 32px;\r\n width: 32px;\r\n`;\r\n\r\nexport const ClusterSymbol = styled.div<{ color?: string }>`\r\n position: relative;\r\n width: 32px;\r\n height: 32px;\r\n\r\n :before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: inherit;\r\n height: inherit;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n opacity: 0.28;\r\n }\r\n \r\n :after {\r\n content: \"99\";\r\n position: absolute;\r\n top: 4px;\r\n left: 4px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 24px;\r\n height: 24px;\r\n background-color: ${({ color }) => color};\r\n border-radius: 50%;\r\n color: white;\r\n font-size: 0.75rem;\r\n line-height: 1;\r\n }\r\n`;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { SvgPointSymbolDc } from \"@evergis/api\";\r\n\r\nimport { Symbol } from './Symbol';\r\nimport { ClusterSymbol } from \"./styled\";\r\nimport { getParameterValue, StyleSymbolType } from '../../core';\r\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\r\n\r\ntype StyleSymbolProps = PropsWithChildren<{\r\n symbol: StyleSymbolType;\r\n size?: number;\r\n}>;\r\n\r\nconst MAX_SIZE = 32;\r\n\r\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\r\n symbol,\r\n size = MAX_SIZE,\r\n children,\r\n}) => {\r\n if (children) {\r\n return <>{children}</>;\r\n }\r\n\r\n let sGisSymbol = null;\r\n\r\n try {\r\n sGisSymbol = deserializeSymbol(symbol);\r\n } catch (e) {\r\n // TODO generate Error symbol\r\n }\r\n\r\n if (!sGisSymbol) {\r\n return null;\r\n }\r\n\r\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\r\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\r\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\r\n\r\n return <ClusterSymbol color={color} />\r\n }\r\n\r\n return (\r\n <Symbol\r\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\r\n size={size}\r\n />\r\n );\r\n};\r\n","import { Icon } from '@evergis/icons';\r\nimport styled from 'styled-components';\r\n\r\nexport const EvergisCardContainer = styled.div`\r\n position: absolute;\r\n top: 2.25rem;\r\n right: 0.5rem;\r\n width: 22.5rem;\r\n margin-bottom: 1rem;\r\n max-height: 90%;\r\n min-height: 1rem;\r\n background: #fff;\r\n border-radius: 4px;\r\n z-index: 1;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n overflow: initial;\r\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\r\n\r\n ${Icon} {\r\n color: rgba(0, 0, 0, 0.65);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n color: #1fb3aa;\r\n }\r\n }\r\n`;\r\n\r\nexport const StickyHeader = styled.div`\r\n display: flex;\r\n position: sticky;\r\n top: 0;\r\n flex-direction: column;\r\n background: #fff;\r\n`;\r\n\r\nexport const CardHeader = styled.div`\r\n display: flex;\r\n padding: 1.5rem 1.5rem 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const CardTitle = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: 0 0.5rem;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const CardControls = styled.div`\r\n display: flex;\r\n\r\n ${Icon} {\r\n margin: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport const FeatureName = styled.div`\r\n font-size: 1.25rem;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const LayerName = styled.div`\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const CardPagination = styled.div`\r\n display: flex;\r\n height: 2.5rem;\r\n padding: 0 1.5rem;\r\n align-items: center;\r\n font-size: 0.75rem;\r\n justify-content: space-between;\r\n background: linear-gradient(\r\n 0deg,\r\n rgba(161, 186, 208, 0.12),\r\n rgba(161, 186, 208, 0.12)\r\n );\r\n`;\r\n\r\nexport const PaginationDescription = styled.div`\r\n display: flex;\r\n`;\r\n\r\nexport const CurrentFeatureIndex = styled.div`\r\n cursor: pointer;\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const CardAttributes = styled.div`\r\n padding: 1rem 1.5rem;\r\n overflow-y: scroll;\r\n`;\r\n\r\nexport const AttributeContainer = styled.div`\r\n padding-bottom: 0.5rem;\r\n`;\r\n\r\nexport const AttributeTitle = styled.div`\r\n margin: 0.25rem 0;\r\n color: #30454f;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const AttributeValueContainer = styled.div`\r\n flex-wrap: wrap;\r\n display: flex;\r\n`;\r\n\r\nexport const SimpleAttribute = styled.div``;\r\n\r\nexport const ValueLink = styled.a`\r\n padding: 0 0.25rem;\r\n color: #1fb3aa;\r\n text-decoration: none;\r\n`;\r\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { mailHref } from '../../utils/url';\n\ntype MailValueProps = {\n mail: string;\n};\n\nexport const MailValue = ({ mail }: MailValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={mailHref(mail)}>\n {mail}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { phoneHref } from '../../utils/url';\n\ntype PhoneValueProps = {\n phone: string;\n};\n\nexport const PhoneValue = ({ phone }: PhoneValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={phoneHref(phone)}>\n {phone}\n </ValueLink>\n);\n","import React from 'react';\n\nimport { ValueLink } from './styled';\nimport { urlHref } from '../../utils/url';\n\ntype UrlValueProps = {\n url: string;\n};\n\nexport const UrlValue = ({ url }: UrlValueProps) => (\n <ValueLink target={'_blank'} rel={'noreferrer'} href={urlHref(url)}>\n {url}\n </ValueLink>\n);\n","import React from 'react';\r\nimport { AttributeValueContainer, SimpleAttribute } from './styled';\r\nimport { MailValue } from './MailValue';\r\nimport { PhoneValue } from './PhoneValue';\r\nimport { UrlValue } from './UrlValue';\r\nimport { EvergisCardAttributeProps } from './EvergisCardAttribute';\r\n\r\nimport punycode from 'punycode';\r\n\r\nimport {\r\n AttributeValueType,\r\n formatAttributeValue,\r\n} from '../../core/attributes';\r\n\r\nexport const AttributeValue: React.FC<EvergisCardAttributeProps> = ({\r\n attribute,\r\n}) => {\r\n const attributeValues = formatAttributeValue(attribute);\r\n\r\n return (\r\n <AttributeValueContainer>\r\n {attributeValues.map((attributeValue, index) => {\r\n const { value } = attributeValue;\r\n const key = `${value}-${index}`;\r\n\r\n if (attributeValue.type === AttributeValueType.Url) {\r\n return <UrlValue key={key} url={punycodeDecode(value)} />;\r\n }\r\n\r\n if (attributeValue.type === AttributeValueType.Mail) {\r\n return <MailValue key={key} mail={value} />;\r\n }\r\n\r\n if (attributeValue.type === AttributeValueType.Phone) {\r\n return <PhoneValue key={key} phone={value} />;\r\n }\r\n\r\n return <SimpleAttribute key={value}>{value}</SimpleAttribute>;\r\n })}\r\n </AttributeValueContainer>\r\n );\r\n};\r\n\r\nfunction punycodeDecode(domains: string) {\r\n try {\r\n return domains\r\n .split('/')\r\n .map(punycode.toUnicode)\r\n .join('/');\r\n } catch (error) {\r\n return domains;\r\n }\r\n}\r\n","import React from 'react';\n\nimport { AttributeContainer, AttributeTitle } from './styled';\n\nimport { FeatureAttribute } from '../../core';\nimport { AttributeValue } from './AttributeValue';\n\nexport type EvergisCardAttributeProps = {\n attribute: FeatureAttribute;\n className?: string;\n};\n\nexport const EvergisCardAttribute: React.FC<EvergisCardAttributeProps> = ({\n attribute,\n className,\n}) => (\n <AttributeContainer className={className}>\n <AttributeTitle>{attribute.alias || attribute.name}</AttributeTitle>\n <AttributeValue attribute={attribute} />\n </AttributeContainer>\n);\n","import React, { FC, useEffect } from 'react';\nimport {\n IconButton,\n EverCloudCloseIcon,\n EverCloudStatisticsIcon,\n EverCloudZoomtoIcon,\n EverCloudPlayPrevIcon,\n EverCloudPlayNextIcon,\n} from \"@evergis/icons\";\n\nimport { StyleSymbol } from '../Symbol';\nimport { EvergisCardAttribute } from './EvergisCardAttribute';\n\nimport {\n CardAttributes,\n CardControls,\n CardHeader,\n CardPagination,\n CardTitle,\n CurrentFeatureIndex,\n EvergisCardContainer,\n FeatureName,\n LayerName,\n PaginationDescription,\n StickyHeader,\n} from './styled';\n\nimport { EvergisCardProps } from './EvergisCard';\nimport { UseEvergisCard } from '../../hooks/useEvergisCard';\nimport { FeatureAttribute } from '../../';\n\nexport const StyledCard: FC<EvergisCardProps & UseEvergisCard> = ({\n features = [],\n className,\n reset,\n feature,\n zoom,\n prev,\n current,\n next,\n onAttributes,\n onStatistics,\n onFeatureChange,\n headerExtra,\n hideZoom,\n}) => {\n useEffect(() => {\n onFeatureChange && onFeatureChange(current);\n }, [current, onFeatureChange]);\n\n return (\n <EvergisCardContainer className={className}>\n <StickyHeader>\n <CardHeader>\n <StyleSymbol symbol={feature.symbol || {}} />\n <CardTitle>\n <FeatureName title={feature.displayName || ''}>\n {feature.displayName}\n </FeatureName>\n <LayerName>{feature.layerAlias}</LayerName>\n </CardTitle>\n <CardControls>\n {onStatistics && <IconButton onClick={() => onStatistics(feature)}><EverCloudStatisticsIcon /></IconButton>}\n {!hideZoom && <IconButton onClick={zoom}><EverCloudZoomtoIcon /></IconButton>}\n <IconButton onClick={reset}><EverCloudCloseIcon /></IconButton>\n </CardControls>\n </CardHeader>\n {features.length > 1 ? (\n <CardPagination>\n <IconButton onClick={prev}><EverCloudPlayPrevIcon /></IconButton>\n <PaginationDescription>\n <CurrentFeatureIndex onClick={zoom}>\n {current + 1}\n </CurrentFeatureIndex>\n объект из {features.length}\n </PaginationDescription>\n <IconButton onClick={next}><EverCloudPlayNextIcon /></IconButton>\n </CardPagination>\n ) : null}\n {headerExtra}\n </StickyHeader>\n <CardAttributes>\n {feature.attributes &&\n (typeof onAttributes === 'function'\n ? onAttributes(feature.attributes)\n : feature.attributes\n ).map((attribute: FeatureAttribute) => {\n return (\n attribute.render || (\n <EvergisCardAttribute\n key={attribute.name}\n attribute={attribute}\n />\n )\n );\n })}\n </CardAttributes>\n </EvergisCardContainer>\n );\n};\n","import React, { ReactElement, ReactNode } from 'react';\n\nimport { useEvergisCard, UseEvergisCard } from '../../hooks/useEvergisCard';\n\nimport { StyledCard } from './StyledCard';\nimport { EvergisFeature, FeatureAttribute } from '../../core';\n\nexport type EvergisCardProps = {\n features?: EvergisFeature[];\n reset?: VoidFunction;\n children?: (current: number) => React.ReactNode;\n className?: string;\n renderCard?: (\n cardProps: Omit<EvergisCardProps, 'className' | 'renderCard' | 'children'> &\n UseEvergisCard\n ) => ReactElement;\n onAttributes?: (attributes: FeatureAttribute[]) => FeatureAttribute[];\n onStatistics?: (feature: EvergisFeature) => void;\n onFeatureChange?: (current: number) => void;\n headerExtra?: ReactNode;\n hideZoom?: boolean;\n};\n\nexport const EvergisCard: React.FC<EvergisCardProps> = ({\n renderCard,\n className,\n children,\n ...props\n}) => {\n const { features = [] } = props;\n const hookProps = useEvergisCard(features);\n const { feature, current } = hookProps;\n const cardProps = { ...props, ...hookProps };\n\n return feature ? (\n <>\n {typeof renderCard === 'function' ? (\n renderCard(cardProps)\n ) : (\n <StyledCard className={className} {...cardProps} />\n )}\n {children && children(current)}\n </>\n ) : null;\n};\n","import * as React from 'react';\r\n\r\nimport { ClusterLayerProps, useClusterLayer } from '../../hooks';\r\n\r\nexport const ClusterLayer: React.FC<ClusterLayerProps> = props => {\r\n useClusterLayer(props);\r\n\r\n return null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { EvergisDynamicLayerProps, useEvergisDynamicLayer } from '../../hooks';\r\n\r\nexport const EvergisDynamicLayer: React.FC<EvergisDynamicLayerProps> = props => {\r\n useEvergisDynamicLayer(props);\r\n\r\n return null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { FeatureLayerProps, useFeatureLayer } from '../../hooks';\r\n\r\nexport const FeatureLayer: React.FC<FeatureLayerProps> = props => {\r\n useFeatureLayer(props);\r\n\r\n return null;\r\n};\r\n","import { useMemo } from 'react';\r\nimport { Feature } from '@evergis/sgis';\r\n\r\nimport { EvergisFeature } from '../../core';\r\n\r\nconst truthly = <Value>(value: Value | null | undefined): value is Value =>\r\n Boolean(value);\r\n\r\nconst setSelected = (current: number) => (feature: Feature, index: number) => {\r\n // @ts-ignore\r\n feature['isSelected'] = index === current;\r\n\r\n return feature;\r\n};\r\n\r\nconst toSgis = (feature: EvergisFeature) => feature.sGisFeature();\r\n\r\n// TODO inner hooks???\r\nexport const useSGisFeatures = (\r\n features: EvergisFeature[],\r\n currentIndex: number\r\n) =>\r\n useMemo(\r\n () =>\r\n features\r\n .map(toSgis)\r\n .filter(truthly)\r\n .map(setSelected(currentIndex)),\r\n [features, currentIndex]\r\n );\r\n","import React from 'react';\n\nimport { FeatureLayer } from './FeatureLayer';\nimport { useSGisFeatures } from './useSGisFeatures';\n\nimport { EvergisFeature } from '../../core';\n\ntype EvergisSelectLayerProps = {\n features: EvergisFeature[];\n current: number;\n zIndex: number;\n};\n\nexport const EvergisSelectLayer: React.FC<EvergisSelectLayerProps> = ({\n features,\n zIndex,\n current,\n}) => {\n const sGisFeatures = useSGisFeatures(features, current);\n\n return <FeatureLayer features={sGisFeatures} zIndex={zIndex} />;\n};\n","import React from 'react';\r\n\r\nimport { EvergisTileLayerProps, useEvergisTileLayer } from '../../hooks';\r\n\r\nexport const EvergisTileLayer: React.FC<EvergisTileLayerProps> = props => {\r\n useEvergisTileLayer(props);\r\n\r\n return null;\r\n};\r\n","import {\r\n GetTileUrl,\r\n TileLayer,\r\n TileLayerConstructorParams,\r\n} from '@evergis/sgis/es/layers/TileLayer';\r\n\r\nimport { useProperty } from './useProperty';\r\nimport { useLayerOrder } from './useLayerOrder';\r\nimport { LayerProps } from './LayerProps';\r\nimport { useLayerVisibility } from './useLayerVisibility';\r\n\r\nimport { useMapContext } from '../contexts';\r\n\r\nexport function useTileLayer({\r\n maskUrl,\r\n zIndex,\r\n isDisplayed,\r\n ...tileLayerParams\r\n}: TileLayerProps) {\r\n const { map } = useMapContext();\r\n\r\n const layer = useProperty(\r\n {\r\n factory: () => new TileLayer(maskUrl, tileLayerParams),\r\n destructor: layer => map.indexOf(layer) !== -1 && map.removeLayer(layer),\r\n },\r\n [maskUrl]\r\n );\r\n\r\n useLayerOrder(layer, zIndex);\r\n useLayerVisibility(layer, isDisplayed);\r\n\r\n return layer;\r\n}\r\n\r\nexport type TileLayerProps = {\r\n maskUrl: string | GetTileUrl;\r\n} & LayerProps &\r\n TileLayerConstructorParams;\r\n","import * as React from 'react';\r\n\r\nimport { useTileLayer, TileLayerProps } from '../../hooks/useTileLayer';\r\n\r\nexport const TileLayer: React.FC<TileLayerProps> = props => {\r\n useTileLayer(props);\r\n\r\n return null;\r\n};\r\n","import React from 'react';\r\n\r\nimport { EvergisCard } from '../EvergisCard';\r\nimport { EvergisSelectLayer } from '../Layers';\r\n\r\nimport { useEvergisSelect } from '../../hooks';\r\n\r\nimport { EvergisSelectProps } from './types';\r\n\r\nconst defaultZIndex = 200;\r\n\r\nexport const EvergisSelect: React.FC<EvergisSelectProps> = ({\r\n onPick,\r\n className,\r\n renderCard,\r\n zIndex,\r\n onFeatures,\r\n onAttributes,\r\n onStatistics,\r\n}) => {\r\n const [features, resetSelection] = useEvergisSelect({ onPick, onFeatures });\r\n\r\n return (\r\n <EvergisCard\r\n className={className}\r\n features={features}\r\n reset={resetSelection}\r\n renderCard={renderCard}\r\n onAttributes={onAttributes}\r\n onStatistics={onStatistics}\r\n >\r\n {current => (\r\n <EvergisSelectLayer\r\n features={features}\r\n current={current}\r\n zIndex={zIndex || defaultZIndex}\r\n />\r\n )}\r\n </EvergisCard>\r\n );\r\n};\r\n","import { css } from 'styled-components';\n\nexport const CONTROL_PLACEMENTS: Placement[] = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst topLeft = (distance: string) => css`\n top: ${distance};\n left: ${distance};\n`;\n\nconst topRight = (distance: string) => css`\n top: ${distance};\n right: ${distance};\n`;\n\nconst bottomLeft = (distance: string) => css`\n bottom: ${distance};\n left: ${distance};\n`;\n\nconst bottomRight = (distance: string) => css`\n bottom: ${distance};\n right: ${distance};\n`;\n\nexport type Placement =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n\nexport const placementMixin = (\n placement: Placement = 'bottom-left',\n distance: string = '1rem'\n) => css`\n ${placement === 'top-left' && topLeft(distance)}\n ${placement === 'top-right' && topRight(distance)}\n ${placement === 'bottom-left' && bottomLeft(distance)}\n ${placement === 'bottom-right' && bottomRight(distance)}\n`;\n","import styled, { css } from 'styled-components';\r\nimport { Icon } from \"@evergis/icons\";\r\n\r\nimport { Placement, placementMixin } from '../../ui/mixins/placementMixin';\r\n\r\nexport type MapControlsProps = {\r\n placement?: Placement;\r\n vertical?: boolean;\r\n};\r\n\r\nconst mapControlBtnMixin = css`\r\n width: 2rem;\r\n height: 2rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n color: #fff;\r\n`;\r\n\r\ntype MapControlBtnProps = {\r\n onClick?: () => void;\r\n};\r\n\r\nexport const ZoomInBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomInBtn.defaultProps = { kind: \"plus\" };\r\n\r\nexport const ZoomOutBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// ZoomOutBtn.defaultProps = { kind: \"minus\" };\r\n\r\nexport const SearchBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// SearchBtn.defaultProps = { kind: \"search\" };\r\n\r\n// TODO not exists in fonts\r\nexport const FullscreenBtn = styled(Icon)<MapControlBtnProps>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// FullscreenBtn.defaultProps = { kind: \"maximize\" };\r\n\r\nexport const MeasureBtn = styled(Icon)<\r\n MapControlBtnProps\r\n>`\r\n ${mapControlBtnMixin}\r\n`;\r\n// MeasureBtn.defaultProps = { kind: \"measure_length\" };\r\n\r\nexport const MapControl = styled.div`\r\n border-radius: 0.15rem;\r\n background: rgba(28, 33, 48, 0.8);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #fff;\r\n font-size: 1.5rem;\r\n cursor: pointer;\r\n height: auto;\r\n width: auto;\r\n padding: 0.25rem;\r\n`;\r\n\r\nexport const MapControls = styled.div<MapControlsProps>`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n\r\n ${({ placement }) => placementMixin(placement)}\r\n\r\n ${MapControl} {\r\n margin-bottom: ${({ vertical }) => (vertical ? '0.5rem' : '0')};\r\n margin-right: ${({ vertical }) => (vertical ? '0' : '0.5rem')};\r\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\r\n }\r\n`;\r\n","import React from 'react';\nimport { MapControl, MeasureBtn } from './styled';\n\n// TODO\nexport const Measure = () => {\n return (\n <MapControl>\n <MeasureBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { MapControl, SearchBtn } from './styled';\n\n// TODO\nexport const Search = () => {\n return (\n <MapControl>\n <SearchBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import React from 'react';\nimport { FullscreenBtn, MapControl } from './styled';\n\n// TODO\nexport const Fullscreen = () => {\n return (\n <MapControl>\n <FullscreenBtn onClick={() => {}} />\n </MapControl>\n );\n};\n","import { MouseEventHandler } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { IconButton } from \"@evergis/icons\";\r\n\r\nimport { MapControl } from '../MapControls';\r\nimport { isParameterType } from '../../utils/isParameterType';\r\nimport { ClassificationParameterExtended } from '../../core';\r\nimport { MapLegendItemProps } from './types';\r\n\r\nexport const MapLegendDescription = styled.div`\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const ItemText = styled.div`\r\n max-width: calc(100% - 2rem);\r\n font: ${({ theme: { fonts } }) => fonts.description};\r\n`;\r\n\r\nexport const ItemSeparator = styled.div`\r\n :after {\r\n content: '-';\r\n margin: 0 0.5rem;\r\n font-size: 0.75rem;\r\n }\r\n`;\r\n\r\nexport const SymbolContainer = styled('span')`\r\n display: flex;\r\n justify-content: center;\r\n min-width: 1.5rem;\r\n margin-right: 0.5rem;\r\n`;\r\n\r\nexport const ClassifiedItem = styled.div<{\r\n isHidden?: boolean;\r\n isClusterFillColor?: boolean;\r\n}>`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n cursor: ${({ isClusterFillColor }) =>\r\n isClusterFillColor ? 'default' : 'pointer'};\r\n pointer-events: ${({ isClusterFillColor }) =>\r\n isClusterFillColor ? 'none' : 'auto'};\r\n\r\n :not(:last-of-type) {\r\n margin-bottom: 0.25rem;\r\n }\r\n\r\n ${ItemText}, ${SymbolContainer} {\r\n transition: opacity 150ms;\r\n }\r\n\r\n ${ItemText} {\r\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 0.65)};\r\n }\r\n\r\n ${SymbolContainer} {\r\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\r\n }\r\n\r\n :hover {\r\n ${ItemText}, ${SymbolContainer} {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n ${IconButton} {\r\n margin-left: 0.5rem;\r\n }\r\n`;\r\n\r\nconst SymbolButtonWithClick = css`\r\n width: 3.875rem;\r\n height: 3.875rem;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${({ theme: { palette } }) => palette.elementDeep};\r\n }\r\n`;\r\n\r\nexport const SymbolButton = styled.span<{\r\n onClick?: MouseEventHandler<HTMLSpanElement> | null;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: background-color 150ms;\r\n ${({ onClick }) => !!onClick && SymbolButtonWithClick};\r\n\r\n svg {\r\n max-width: 4rem;\r\n max-height: 4rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendControl = styled(MapControl)`\r\n cursor: default;\r\n`;\r\n\r\nexport const MapLegendContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n width: 100%;\r\n padding-bottom: 1rem;\r\n box-sizing: border-box;\r\n\r\n canvas {\r\n height: 1.625rem;\r\n width: 1.625rem;\r\n }\r\n`;\r\n\r\nexport const MapLegendHeader = styled.div`\r\n max-width: 15rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: bold;\r\n`;\r\n\r\nexport const MapLegendDescriptionContainer = styled.div`\r\n margin-bottom: 0.5rem;\r\n font-weight: 400;\r\n font-size: 0.625rem;\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const MapLegendBadge = styled.span`\r\n min-width: 0.5rem;\r\n height: 0.75rem;\r\n display: inline-block;\r\n margin-left: 0.25rem;\r\n padding: 0.125rem 0.25rem;\r\n border-radius: ${({ theme: { borderRadius } }) => borderRadius.xSmall};\r\n background-color: ${({ theme: { palette } }) => palette.element};\r\n color: ${({ theme: { palette } }) => palette.textPrimary};\r\n text-align: center;\r\n`;\r\n\r\nexport const MaximizedLegendContainer = styled.div<{ isShown?: boolean }>`\r\n position: ${({ isShown }) => (isShown ? 'relative' : 'absolute')};\r\n top: 0;\r\n opacity: ${({ isShown }) => (isShown ? 1 : 0)};\r\n visibility: ${({ isShown }) => (isShown ? 'visible' : 'hidden')};\r\n overflow: hidden;\r\n transition: opacity 0.5s, visibility 0.5s;\r\n`;\r\n\r\nexport const MinimizedLegendContainer = styled(MaximizedLegendContainer)`\r\n width: calc(100% - 1.5rem);\r\n padding-right: 1.5rem;\r\n`;\r\n\r\nexport const LegendHeaderButton = styled.span``;\r\n\r\nexport const MapLegendSectionContainer = styled.div<{ hasHiddenLegends?: boolean }>`\r\n width: 100%;\r\n\r\n :not(:last-child) {\r\n margin-bottom: 1rem;\r\n }\r\n\r\n ${LegendHeaderButton} {\r\n padding-left: 0.75rem;\r\n visibility: hidden;\r\n\r\n :first-child {\r\n padding-left: 1rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.75rem;\r\n border-left: 1px ${({ theme: { palette }}) => palette.elementDeep} solid;\r\n }\r\n }\r\n \r\n :hover {\r\n ${LegendHeaderButton} {\r\n visibility: visible;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendSectionItems = styled.div<{\r\n minHeight?: number;\r\n maxHeight?: number;\r\n isExpanded?: boolean;\r\n}>`\r\n position: relative;\r\n height: ${({ minHeight, maxHeight, isExpanded }) =>\r\n isExpanded ? (maxHeight || 0) + 4 : minHeight}px;\r\n overflow: ${({ isExpanded }) => (isExpanded ? 'none' : 'hidden')};\r\n transition: height 0.5s;\r\n`;\r\n\r\nexport const MapLegendValueDescr = styled.div`\r\n min-height: 1rem;\r\n margin-bottom: 0.25rem;\r\n font-size: 0.75rem;\r\n font-weight: 600;\r\n line-height: 1rem;\r\n`;\r\n\r\nconst SizeLegendItemMixin = (value = 0) => css`\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n display: flex;\r\n align-items: flex-end;\r\n flex: none;\r\n height: inherit;\r\n width: inherit;\r\n margin: 0 auto;\r\n background: none;\r\n border: none;\r\n\r\n :after {\r\n content: '';\r\n display: flex;\r\n border: 1px rgba(48, 69, 79, 0.28) solid;\r\n border-radius: 50%;\r\n margin: 0 0 0 -${value / 2}px;\r\n width: ${value}px;\r\n height: ${value}px;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\r\n position: relative;\r\n background: none;\r\n border: none;\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n width: calc(100% - 2rem);\r\n height: ${value}px;\r\n margin: 0 0 0.25rem 0;\r\n padding-left: 2rem;\r\n font-size: 0.75rem;\r\n\r\n :first-child,\r\n :last-child {\r\n height: auto;\r\n }\r\n\r\n :after {\r\n content: '';\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 1.5rem;\r\n height: ${value}px;\r\n margin-top: -${Math.round(value / 2)}px;\r\n background: rgb(224, 224, 224);\r\n }\r\n`;\r\n\r\nconst StrokeColorLegendItemMixin = css`\r\n margin-right: 0.5rem;\r\n width: 1.5rem;\r\n`;\r\n\r\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\r\n flex: 1;\r\n height: ${({ parameter }) =>\r\n isParameterType(\r\n ['strokeColor', 'stroke.color'],\r\n parameter as ClassificationParameterExtended\r\n )\r\n ? 0.25\r\n : 1}rem;\r\n background: ${({ value }) => (typeof value === 'number' ? 'none' : value)};\r\n border: 1px rgba(48, 69, 79, 0.1) solid;\r\n margin-right: -1px;\r\n color: rgba(48, 69, 79, 0.65);\r\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\r\n\r\n ${({ value, parameter }) =>\r\n isParameterType('size', parameter as ClassificationParameterExtended) &&\r\n SizeLegendItemMixin(value as number)}\r\n\r\n ${({ value, parameter }) =>\r\n isParameterType(\r\n ['strokeWidth', 'stroke.width'],\r\n parameter as ClassificationParameterExtended\r\n ) && StrokeWidthLegendItemMixin(value as number)}\r\n`;\r\n\r\nexport const MapLegendOther = styled(MapLegendItem)`\r\n display: flex;\r\n align-items: center;\r\n flex: none;\r\n position: relative;\r\n width: 1rem;\r\n margin-left: 0.25rem;\r\n border-radius: 0.125rem;\r\n`;\r\n\r\nconst SizeLegendItemsMixin = css`\r\n position: relative;\r\n width: 2rem;\r\n height: 2rem;\r\n margin: 0 auto;\r\n\r\n ${MapLegendOther} {\r\n width: auto;\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nconst StrokeWidthLegendItemsMixin = css`\r\n position: relative;\r\n flex-direction: column;\r\n width: auto;\r\n\r\n ${MapLegendOther} {\r\n width: calc(100% - 2rem);\r\n margin-left: 0;\r\n }\r\n`;\r\n\r\nexport const SizeMinimizedLegend = styled.div`\r\n display: flex;\r\n flex-wrap: nowrap;\r\n align-items: center;\r\n margin: 0.5rem 0 0.25rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendSymbol = styled.div`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendLabel = styled.div`\r\n max-width: 9.75rem;\r\n font-size: 0.75rem;\r\n`;\r\n\r\nexport const SizeMinimizedLegendDown = styled.div`\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)``;\r\n\r\nconst SingleSizeLegendItemsMixin = css`\r\n width: 4rem;\r\n margin-right: 0.75rem;\r\n\r\n ${MapLegendItem}:after {\r\n margin: 0 auto;\r\n }\r\n`;\r\n\r\nconst SingleLegendItemsMixin = css<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n}>`\r\n justify-content: center;\r\n width: 2rem;\r\n height: auto;\r\n margin: 0;\r\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\r\n\r\n ${MapLegendItem} {\r\n position: relative;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n margin: 0;\r\n height: auto;\r\n width: auto;\r\n\r\n ${({ parameter }) =>\r\n isParameterType(\r\n ['strokeColor', 'stroke.color'],\r\n parameter as ClassificationParameterExtended\r\n ) && StrokeColorLegendItemMixin}\r\n }\r\n`;\r\n\r\nexport const MapLegendItems = styled.div<{\r\n parameter: ClassificationParameterExtended;\r\n isSize?: boolean;\r\n isStrokeWidth?: boolean;\r\n isStrokeColor?: boolean;\r\n isSingle?: boolean;\r\n}>`\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n border-radius: 0.125rem;\r\n\r\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\r\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\r\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\r\n`;\r\n\r\nexport const MapLegendItemsContainer = styled.div`\r\n display: flex;\r\n width: 100%;\r\n\r\n ${MapLegendItem} {\r\n :first-child {\r\n border-top-left-radius: 0.125rem;\r\n border-bottom-left-radius: 0.125rem;\r\n }\r\n\r\n :last-child {\r\n border-top-right-radius: 0.125rem;\r\n border-bottom-right-radius: 0.125rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValues = styled.div`\r\n display: flex;\r\n width: 100%;\r\n margin-top: 0.5rem;\r\n font-size: 0.75rem;\r\n color: rgba(48, 69, 79, 0.65);\r\n`;\r\n\r\nexport const MapLegendValuesRange = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n width: calc(100% - 1.25rem);\r\n\r\n div {\r\n flex: 1;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n\r\n :first-child {\r\n margin-right: 0.5rem;\r\n }\r\n\r\n :last-child {\r\n margin-left: 0.5rem;\r\n text-align: right;\r\n }\r\n }\r\n`;\r\n\r\nexport const MapLegendValuesOther = styled(MapLegendOther)`\r\n justify-content: center;\r\n border: 0;\r\n overflow: visible;\r\n`;\r\n\r\nexport const MapLegendExpandButton = styled.div`\r\n cursor: pointer;\r\n margin-top: 0.1rem;\r\n font-size: 0.625rem;\r\n color: #1fb3aa;\r\n`;\r\n\r\nexport const ClusterLegendContainer = styled.div`\r\n margin: -0.9rem;\r\n transform: scale(0.5);\r\n`;\r\n","import { useCallback, useMemo, useRef } from 'react';\r\nimport { SVG } from '@svgdotjs/svg.js';\r\nimport { Color } from '@evergis/color/es/Color';\r\n\r\nimport { DEFAULT_SYMBOL_OFFSET } from '../constants';\r\nimport { manipulateSvgSymbol } from '../../../utils/svg';\r\nimport { isSizeClassification } from '../../../utils/legend';\r\nimport { getOffsetParameterValue } from '../../../symbols';\r\nimport {\r\n getParameterValue,\r\n Offset,\r\n ParameterValue,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\nimport { SvgEditorField, SvgSymbolBg } from '../types';\r\n\r\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean, isClassified?: boolean) => {\r\n const SVGWrapperRefElement = useRef<HTMLElement | null>(null);\r\n const SVGContainer = useMemo(() => SVG(), []);\r\n\r\n const initSvg = useCallback(() => {\r\n SVGContainer.addTo(SVGWrapperRefElement.current as HTMLElement);\r\n }, [SVGContainer]);\r\n\r\n const getSvgData = useCallback(() => SVGContainer.svg(), [SVGContainer]);\r\n\r\n const manipulateSvg = useCallback(\r\n ({\r\n svg,\r\n bg,\r\n newSymbol,\r\n isClassified,\r\n }: {\r\n svg: string;\r\n bg?: SvgSymbolBg;\r\n newSymbol?: SvgPointSymbol;\r\n isClassified?: boolean;\r\n }) => {\r\n manipulateSvgSymbol({\r\n SVGContainer,\r\n symbol: newSymbol || symbol,\r\n svg,\r\n bg,\r\n isClassified,\r\n });\r\n },\r\n [SVGContainer, symbol]\r\n );\r\n\r\n const getUpdatedSvgSymbol = useCallback(\r\n (field: keyof SvgEditorField, value: Color | number | string) => {\r\n const { data, offset } = symbol;\r\n const newValue = value instanceof Color ? value.toString('rgba') : value;\r\n\r\n const newSymbol = {\r\n ...JSON.parse(JSON.stringify(symbol)),\r\n offset: skipOffset\r\n ? DEFAULT_SYMBOL_OFFSET\r\n : isSizeClassification(field)\r\n ? getOffsetParameterValue(offset as Offset)\r\n : offset,\r\n };\r\n\r\n if (field.indexOf('.') !== -1) {\r\n const parts = field.split('.');\r\n\r\n if (newSymbol[parts[0]]?.[parts[1]]) {\r\n newSymbol[parts[0]][parts[1]] = newValue;\r\n } else {\r\n newSymbol[parts[0]] = {\r\n ...newSymbol[parts[0]],\r\n [parts[1]]: newValue,\r\n ...(parts[0] === 'background'\r\n ? { type: newSymbol.background.type, id: 'symbol-bg' }\r\n : parts[0] === 'figure'\r\n ? { id: 'symbol-figure' }\r\n : {}),\r\n };\r\n }\r\n } else {\r\n newSymbol[field] = newValue;\r\n }\r\n\r\n manipulateSvg({\r\n svg: getParameterValue(data as ParameterValue) as string,\r\n newSymbol,\r\n bg: newSymbol.background?.type,\r\n isClassified,\r\n });\r\n\r\n return { ...newSymbol, data: SVGContainer.svg() };\r\n },\r\n [SVGContainer, manipulateSvg, skipOffset, symbol]\r\n );\r\n\r\n return {\r\n svgRef: SVGWrapperRefElement,\r\n initSvg,\r\n getSvgData,\r\n manipulateSvg,\r\n getUpdatedSvgSymbol,\r\n };\r\n};\r\n","import React, { FC, memo, useCallback, useEffect, useMemo } from 'react';\r\nimport styled from 'styled-components';\r\nimport { SvgParameterDc, PointLabelSymbolDc } from '@evergis/api';\r\n\r\nimport { SymbolButton } from '../styled';\r\nimport { useSvgSymbol } from '../hooks/useSvgSymbol';\r\nimport { SvgPointSymbol } from '../../../core';\r\nimport { SvgSymbolProps } from '../types';\r\n\r\nconst SvgSymbolContainer = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst SvgSymbolLabel = styled.div<{ fontSettings?: PointLabelSymbolDc }>`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n color: #fff;\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.fontSize &&\r\n `font-size: ${\r\n typeof fontSettings.fontSize === 'string'\r\n ? fontSettings.fontSize\r\n : `${fontSettings.fontSize}px`\r\n }`};\r\n ${({ fontSettings }) =>\r\n !!fontSettings?.haloColor &&\r\n !!fontSettings?.haloWidth &&\r\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\r\n line-height: 0;\r\n`;\r\n\r\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\r\n ({ svg, bg, symbol, title, text, fontSettings, skipOffset, isClassified, onClick }) => {\r\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(\r\n symbol,\r\n skipOffset,\r\n isClassified,\r\n );\r\n\r\n const onSelectSymbol = useCallback(() => {\r\n onClick?.(getSvgData(), {\r\n ...symbol,\r\n ...(bg\r\n ? {\r\n background: {\r\n ...(symbol.background as SvgParameterDc),\r\n type: bg,\r\n },\r\n }\r\n : {}),\r\n } as SvgPointSymbol);\r\n }, [bg, getSvgData, onClick, symbol]);\r\n\r\n const renderSymbol = useMemo(\r\n () => (\r\n <SymbolButton\r\n ref={svgRef}\r\n title={title}\r\n onClick={onClick ? onSelectSymbol : undefined}\r\n />\r\n ),\r\n [svgRef, title, onClick, onSelectSymbol]\r\n );\r\n\r\n useEffect(() => {\r\n initSvg();\r\n }, [initSvg]);\r\n\r\n useEffect(() => {\r\n manipulateSvg({ svg, bg, newSymbol: symbol, isClassified });\r\n }, [svg, symbol, bg, manipulateSvg, isClassified]);\r\n\r\n return text ? (\r\n <SvgSymbolContainer>\r\n {renderSymbol}\r\n <SvgSymbolLabel fontSettings={fontSettings}>{text}</SvgSymbolLabel>\r\n {!!fontSettings?.haloColor && !!fontSettings?.haloWidth && (\r\n <SvgSymbolLabel\r\n fontSettings={{\r\n ...fontSettings,\r\n haloColor: undefined,\r\n haloWidth: undefined,\r\n }}\r\n >\r\n {text}\r\n </SvgSymbolLabel>\r\n )}\r\n </SvgSymbolContainer>\r\n ) : (\r\n renderSymbol\r\n );\r\n }\r\n);\r\n","import React, { FC } from 'react';\r\nimport {\r\n CalculatedParameterDc,\r\n ClusterSymbolDc,\r\n ParameterDcColor,\r\n} from '@evergis/api';\r\n\r\nimport { SvgSymbol } from './SvgSymbol';\r\nimport { DEFAULT_CLUSTER_SVG } from '../constants';\r\nimport {\r\n isParameterByAttribute,\r\n ParameterByAttribute,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\n\r\nexport const ClusterSymbolPreview: FC<{\r\n symbol: ClusterSymbolDc;\r\n index?: number;\r\n size?: number;\r\n fontSize?: string;\r\n}> = ({ symbol, index, size = 56, fontSize = '1.25rem' }) => {\r\n const isClassified = isParameterByAttribute(\r\n symbol.fillColor as ParameterDcColor\r\n );\r\n const isClassifiedValue = isClassified && index !== undefined;\r\n\r\n const fillColor =\r\n isClassifiedValue\r\n ? (symbol.fillColor as ParameterByAttribute<string>).values[index as number]\r\n ?.value ||\r\n (symbol.fillColor as ParameterByAttribute<string>).defaultValue\r\n : symbol.fillColor;\r\n\r\n const strokeColor = isClassified ? fillColor : symbol.strokeColor;\r\n\r\n const svgSymbol = {\r\n type: 'svgPointSymbol',\r\n size,\r\n offset: [0, 0],\r\n angle: 0,\r\n background: {\r\n id: 'symbol-bg',\r\n fillColor,\r\n strokeColor,\r\n strokeWidth: 6,\r\n type: 'circle',\r\n },\r\n };\r\n\r\n return (\r\n <SvgSymbol\r\n svg={DEFAULT_CLUSTER_SVG}\r\n symbol={(svgSymbol as unknown) as SvgPointSymbol}\r\n isClassified={isClassified}\r\n text={'99'}\r\n fontSettings={{\r\n ...symbol.labelSymbol,\r\n fontSize:\r\n (fontSize as CalculatedParameterDc) || symbol.labelSymbol?.fontSize,\r\n }}\r\n />\r\n );\r\n};\r\n","import React, { FC, useMemo } from 'react';\r\n\r\nimport { SvgSymbol } from './SvgSymbol';\r\nimport { Symbol, SGisSymbolType } from '../../../';\r\nimport { serializeSvgPointSymbol } from '../../../utils/legend';\r\nimport { SGisSymbol } from '../types';\r\nimport { SvgPointSymbol } from '../../../core';\r\n\r\nexport const SymbolByType: FC<{\r\n symbol?: SGisSymbol;\r\n size?: number;\r\n type?: string;\r\n svg?: string;\r\n skipOffset?: boolean;\r\n}> = ({ type, symbol, size, svg, skipOffset }) => {\r\n const defaultSymbol = useMemo(() => (\r\n <Symbol symbol={symbol as SGisSymbolType} size={size} />\r\n ), [symbol, size]);\r\n\r\n switch (type) {\r\n case 'svgPointSymbol':\r\n return svg ? (\r\n <SvgSymbol\r\n svg={svg}\r\n size={size}\r\n skipOffset={skipOffset}\r\n symbol={serializeSvgPointSymbol(symbol as SvgPointSymbol) as unknown as SvgPointSymbol}\r\n />\r\n ) : (\r\n defaultSymbol\r\n );\r\n default:\r\n return defaultSymbol;\r\n }\r\n};\r\n","import React, { FC, memo } from 'react';\r\nimport { ClusterSymbolDc } from '@evergis/api';\r\n\r\nimport { SymbolByType } from './SymbolByType';\r\nimport { ClusterSymbolPreview } from './ClusterSymbolPreview';\r\nimport { ClusterLegendContainer } from '../styled';\r\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from '../constants';\r\nimport { getLegendSymbolSize } from '../../../utils/legend';\r\nimport { deserializeSymbol } from '../../../symbols';\r\nimport {\r\n getParameterValue,\r\n isClusterSymbol,\r\n ParameterValue,\r\n StyleSymbolType,\r\n SvgPointSymbol,\r\n} from '../../../core';\r\nimport { SGisSymbol } from '../types';\r\n\r\nexport const LegendSymbolRenderer: FC<{\r\n symbol: StyleSymbolType;\r\n index?: number;\r\n}> = memo(({ symbol, index }) => {\r\n if (isClusterSymbol(symbol)) {\r\n return (\r\n <ClusterLegendContainer>\r\n <ClusterSymbolPreview\r\n symbol={symbol as ClusterSymbolDc}\r\n index={index}\r\n />\r\n </ClusterLegendContainer>\r\n );\r\n }\r\n\r\n return (\r\n <SymbolByType\r\n symbol={deserializeSymbol(symbol) as SGisSymbol}\r\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\r\n type={symbol.type}\r\n svg={\r\n getParameterValue(\r\n (symbol as SvgPointSymbol).data as ParameterValue\r\n ) as string\r\n }\r\n skipOffset\r\n />\r\n );\r\n});\r\n","import React, { FC } from \"react\";\r\nimport { EverCloudClassificationIcon, EverCloudRefreshIcon, IconButton } from \"@evergis/icons\";\r\n\r\nimport { LegendHeaderButton } from \"../styled\";\r\nimport { LegendProps } from \"../types\";\r\n\r\ntype LegendHeaderButtonsProps = Pick<LegendProps, 'clearHiddenLegends' | 'goToClassification'> & {\r\n layerName: string;\r\n hasHiddenLegends?: boolean;\r\n};\r\n\r\nexport const LegendHeaderButtons: FC<LegendHeaderButtonsProps> = ({ layerName, hasHiddenLegends, clearHiddenLegends, goToClassification }) => (\r\n <>\r\n {!!goToClassification && (\r\n <LegendHeaderButton>\r\n <IconButton onClick={goToClassification}>\r\n <EverCloudClassificationIcon />\r\n </IconButton>\r\n </LegendHeaderButton>\r\n )}\r\n {!!clearHiddenLegends && (\r\n <LegendHeaderButton>\r\n <IconButton\r\n disabled={!hasHiddenLegends}\r\n onClick={() => clearHiddenLegends?.(layerName)}\r\n >\r\n <EverCloudRefreshIcon />\r\n </IconButton>\r\n </LegendHeaderButton>\r\n )}\r\n </>\r\n);\r\n","import { AttributeType } from '@evergis/api';\r\n\r\nimport { getAttributeNameFromCondition, LayerAttribute } from '../../../core';\r\n\r\nexport const getConditionAttribute = (\r\n attributes: LayerAttribute[],\r\n condition?: string\r\n): LayerAttribute | null => {\r\n if (!condition) return null;\r\n\r\n const attributeName = getAttributeNameFromCondition(condition) as string;\r\n\r\n let attribute: LayerAttribute = attributes.find(\r\n ({ name }) => name === attributeName\r\n ) as LayerAttribute;\r\n\r\n if (!attribute) {\r\n if (attributeName === 'count') {\r\n attribute = {\r\n name: 'count',\r\n alias: 'Количество',\r\n type: AttributeType.Int32,\r\n };\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return attribute;\r\n};\r\n","export const isHiddenLegend = (\r\n hiddenCondition: string,\r\n hiddenLegends?: string[]\r\n): boolean => !!hiddenLegends?.includes(hiddenCondition);\r\n","import React, { Fragment } from 'react';\r\n\r\nimport { ItemSeparator, ItemText, MapLegendDescription } from '../styled';\r\nimport { i18n } from \"../../../i18n\";\r\n\r\nconst renderColumn = (column: string, index?: number) => {\r\n const dateTime = column.split(' ');\r\n\r\n return (\r\n <Fragment key={index}>\r\n <ItemText title={column}>\r\n {dateTime[0]}\r\n <MapLegendDescription>{dateTime[1]}</MapLegendDescription>\r\n </ItemText>\r\n {index === 0 && <ItemSeparator />}\r\n </Fragment>\r\n );\r\n};\r\n\r\nexport const getLegendText = ({\r\n title,\r\n index,\r\n isDate,\r\n}: {\r\n title?: string;\r\n index: number;\r\n isDate: boolean;\r\n}) => {\r\n if (!title) {\r\n return <ItemText>{i18n.t(\"other\", { ns: \"style\" })}</ItemText>;\r\n }\r\n\r\n const columns = title?.split(' - ');\r\n const isSingleColumn = columns?.length === 1;\r\n\r\n if (!isDate || (index && isSingleColumn)) {\r\n return <ItemText title={title}>{title}</ItemText>;\r\n }\r\n\r\n if (!index && isSingleColumn) {\r\n return (\r\n <>\r\n <ItemText title=\"∞\">∞</ItemText>\r\n <ItemSeparator />\r\n {renderColumn(title)}\r\n </>\r\n );\r\n }\r\n\r\n return <>{columns.map(renderColumn)}</>;\r\n};\r\n","import React, { FC } from 'react';\r\n\r\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\r\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\r\nimport { ClassifiedItem, MapLegendContainer, SymbolContainer } from '../styled';\r\nimport {\r\n createHiddenCondition,\r\n createValueTitleFromCondition,\r\n getClassificationValue,\r\n getTitleFromCondition,\r\n isRangeCondition,\r\n} from '../../../utils/legend';\r\nimport { getConditionAttribute } from '../utils/getConditionAttribute';\r\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\r\nimport { getLegendText } from '../utils/getLegendText';\r\nimport { getLayerAttributes } from '../../../core/attributes/utils';\r\nimport { LegendChildrenProps } from '../types';\r\nimport {\r\n ClassificationCondition,\r\n ParameterByAttributeValue,\r\n ParameterValueWithSymbol,\r\n StyleSymbolType,\r\n} from '../../../core';\r\n\r\nexport const LegendChildren: FC<LegendChildrenProps> = ({\r\n layerInfo,\r\n hiddenLegends,\r\n toggleHiddenLegend,\r\n clearHiddenLegends,\r\n formatValue,\r\n}) => {\r\n if (!layerInfo?.style?.children?.length) return null;\r\n\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {layerInfo.style.children.map((paramValue, index) => {\r\n const attribute = getConditionAttribute(\r\n attributes,\r\n paramValue.condition\r\n );\r\n\r\n if (!attribute) return null;\r\n\r\n const hiddenCondition = createHiddenCondition(\r\n attribute.name as string,\r\n attribute.type,\r\n getClassificationValue(\r\n paramValue.symbol as StyleSymbolType,\r\n paramValue.title as string,\r\n new ClassificationCondition(paramValue.condition as string)\r\n )\r\n ) as string;\r\n\r\n const legendText = getLegendText({\r\n title: isRangeCondition(paramValue.condition)\r\n ? createValueTitleFromCondition(\r\n paramValue as ParameterByAttributeValue<\r\n ParameterValueWithSymbol\r\n >,\r\n attribute,\r\n formatValue,\r\n index\r\n )\r\n : getTitleFromCondition({\r\n condition: paramValue.condition,\r\n attribute,\r\n formatValue,\r\n }),\r\n index,\r\n isDate:\r\n getConditionAttribute(attributes, paramValue.condition)?.type ===\r\n 'DateTime',\r\n });\r\n\r\n return (\r\n <ClassifiedItem\r\n key={index}\r\n isHidden={isHiddenLegend(\r\n hiddenCondition,\r\n hiddenLegends?.[layerInfo.name]\r\n )}\r\n onClick={() =>\r\n toggleHiddenLegend?.(layerInfo.name, hiddenCondition)\r\n }\r\n >\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n symbol={paramValue.symbol as StyleSymbolType}\r\n />\r\n </SymbolContainer>\r\n {legendText}\r\n <LegendHeaderButtons layerName={layerInfo.name} clearHiddenLegends={clearHiddenLegends} />\r\n </ClassifiedItem>\r\n );\r\n })}\r\n </MapLegendContainer>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { MapLegendBadge, MapLegendDescriptionContainer } from \"../styled\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport { ClassificationParameterExtended } from \"../../../core\";\r\n\r\nexport const LegendParameterDescription: FC<{\r\n parameter: ClassificationParameterExtended;\r\n index?: number;\r\n}> = ({ parameter, index }) => {\r\n const { t } = useTranslation(\"style\");\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\r\n\r\n return (\r\n <MapLegendDescriptionContainer>\r\n {isStrokeWidth || isStrokeColor\r\n ? (isStrokeWidth ? t(\"strokeWidth\") : t(\"strokeColor\"))\r\n : isSize ? t(\"symbolSize\") : t(\"symbolColor\")}\r\n {!!index && <MapLegendBadge>{index}</MapLegendBadge>}\r\n </MapLegendDescriptionContainer>\r\n );\r\n};\r\n","import React, { FC, useCallback } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nimport { isNumeric } from \"../../../utils/isNumeric\";\r\nimport { isParameterType } from \"../../../utils/isParameterType\";\r\nimport {\r\n MapLegendItem,\r\n MapLegendItems,\r\n MapLegendItemsContainer,\r\n MapLegendOther,\r\n MapLegendValueDescr,\r\n MapLegendValues,\r\n MapLegendValuesOther,\r\n MapLegendValuesRange,\r\n MinimizedLegendContainer,\r\n SizeMinimizedLegend,\r\n SizeMinimizedLegendDown,\r\n SizeMinimizedLegendLabel,\r\n SizeMinimizedLegendSymbol,\r\n SizeMinimizedLegendUp\r\n} from \"../styled\";\r\nimport { MinimizedLegendProps } from \"../types\";\r\n\r\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\r\n if (title.includes(\" - \")) {\r\n const result = title?.split(\" - \");\r\n\r\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\r\n }\r\n\r\n if (title.includes(\",\")) {\r\n const result = title?.split(\",\");\r\n\r\n return result.join(\", \");\r\n }\r\n\r\n return title.split(\" \").find(isNumeric) || title || \"\";\r\n};\r\n\r\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\r\n innerRef,\r\n isShown,\r\n values,\r\n title,\r\n parameter,\r\n hiddenLegends,\r\n}) => {\r\n const { t } = useTranslation(\"style\");\r\n const currentValues = [...values];\r\n const other = currentValues.pop();\r\n const isSize = isParameterType(\"size\", parameter);\r\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\r\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\r\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\r\n\r\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\r\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\r\n : false, [hiddenLegends]);\r\n\r\n return (\r\n <MinimizedLegendContainer ref={innerRef} isShown={isShown}>\r\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\r\n {isSize ? (\r\n <>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\r\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n <SizeMinimizedLegend>\r\n <SizeMinimizedLegendSymbol>\r\n <MapLegendItems parameter={parameter} isSize>\r\n <MapLegendOther\r\n title={t(\"other\")}\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n </SizeMinimizedLegendSymbol>\r\n <SizeMinimizedLegendLabel>\r\n <SizeMinimizedLegendUp>{t(\"other\")}</SizeMinimizedLegendUp>\r\n </SizeMinimizedLegendLabel>\r\n </SizeMinimizedLegend>\r\n </>\r\n ) : isStrokeWidth ? (\r\n <MapLegendItems parameter={parameter} isStrokeWidth>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n >\r\n {(!index || index === currentValues.length - 1) && value.title}\r\n </MapLegendItem>\r\n ))}\r\n <MapLegendOther\r\n title={t(\"other\")}\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n >\r\n {t(\"other\")}\r\n </MapLegendOther>\r\n </MapLegendItems>\r\n ) : (\r\n <MapLegendItems parameter={parameter}>\r\n <MapLegendItemsContainer>\r\n {currentValues.map((value, index) => (\r\n <MapLegendItem\r\n key={`${value.title}${index}`}\r\n title={value.title}\r\n value={value.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(value.hiddenCondition)}\r\n />\r\n ))}\r\n </MapLegendItemsContainer>\r\n <MapLegendOther\r\n title={t(\"other\")}\r\n value={other?.parameterValue as string}\r\n parameter={parameter}\r\n isHidden={checkIsHidden(other?.hiddenCondition)}\r\n />\r\n </MapLegendItems>\r\n )}\r\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\r\n <MapLegendValues>\r\n <MapLegendValuesRange>\r\n <div>{titleMax}</div>\r\n <div>{titleMin}</div>\r\n </MapLegendValuesRange>\r\n <MapLegendValuesOther>-</MapLegendValuesOther>\r\n </MapLegendValues>\r\n )}\r\n </MinimizedLegendContainer>\r\n )\r\n}\r\n","import React, { FC, useCallback, useMemo } from 'react';\r\nimport get from 'lodash/get';\r\n\r\nimport {\r\n ClassifiedItem,\r\n MapLegendItem,\r\n MapLegendItems,\r\n MaximizedLegendContainer,\r\n SymbolContainer,\r\n} from '../styled';\r\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\r\nimport { isParameterType } from '../../../utils/isParameterType';\r\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\r\nimport { getLegendText } from '../utils/getLegendText';\r\nimport {\r\n ClassificationParameterExtended,\r\n getExtractedSymbol,\r\n getParameterValue,\r\n isClusterFillColor as isClusterFillColorAction,\r\n ParameterByAttribute,\r\n ParameterValue,\r\n StyleSymbolType,\r\n} from '../../../core';\r\nimport { MaximizedLegendProps } from '../types';\r\n\r\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\r\n innerRef,\r\n isShown,\r\n layerName,\r\n symbol: sectionSymbol,\r\n parameter,\r\n values,\r\n index: sectionIndex,\r\n attributeType,\r\n hiddenLegends,\r\n toggleHiddenLegend,\r\n}) => {\r\n const isDate = attributeType === 'DateTime';\r\n const isSize = isParameterType(\r\n 'size',\r\n parameter as ClassificationParameterExtended\r\n );\r\n const isStrokeWidth = isParameterType(\r\n ['strokeWidth', 'stroke.width'],\r\n parameter as ClassificationParameterExtended\r\n );\r\n const isStrokeColor = isParameterType(\r\n ['strokeColor', 'stroke.color'],\r\n parameter as ClassificationParameterExtended\r\n );\r\n\r\n const parameterValue = useMemo(\r\n () =>\r\n (get(sectionSymbol, parameter) as unknown) as ParameterByAttribute<\r\n ParameterValue\r\n >,\r\n [sectionSymbol, parameter]\r\n );\r\n\r\n const renderLegend = useCallback(\r\n ({ symbol, title, hiddenCondition }, index: number) => {\r\n if (!symbol) return null;\r\n\r\n const isClusterFillColor = isClusterFillColorAction(symbol, parameter);\r\n const value = (getParameterValue(\r\n parameterValue?.values[index]?.value) || parameterValue?.defaultValue\r\n ) as string | number;\r\n\r\n return (\r\n <ClassifiedItem\r\n key={sectionIndex + title + index}\r\n isHidden={isHiddenLegend(hiddenCondition, hiddenLegends)}\r\n isClusterFillColor={isClusterFillColor}\r\n onClick={() => toggleHiddenLegend?.(layerName, hiddenCondition)}\r\n >\r\n {isSize || isStrokeWidth || isStrokeColor ? (\r\n <MapLegendItems\r\n parameter={parameter as ClassificationParameterExtended}\r\n isSize={isSize}\r\n isStrokeWidth={isStrokeWidth}\r\n isStrokeColor={isStrokeColor}\r\n isSingle\r\n >\r\n <MapLegendItem\r\n key={`${title}${index}`}\r\n title={title}\r\n value={value}\r\n parameter={parameter as ClassificationParameterExtended}\r\n />\r\n </MapLegendItems>\r\n ) : (\r\n <SymbolContainer>\r\n <LegendSymbolRenderer\r\n index={index}\r\n symbol={\r\n isClusterFillColor ? sectionSymbol as StyleSymbolType : getExtractedSymbol(symbol, true)\r\n }\r\n />\r\n </SymbolContainer>\r\n )}\r\n {getLegendText({ title, index, isDate })}\r\n </ClassifiedItem>\r\n );\r\n },\r\n [\r\n parameter,\r\n sectionIndex,\r\n hiddenLegends,\r\n isSize,\r\n isStrokeWidth,\r\n isStrokeColor,\r\n parameterValue,\r\n sectionSymbol,\r\n isDate,\r\n toggleHiddenLegend,\r\n layerName,\r\n ]\r\n );\r\n\r\n return (\r\n <MaximizedLegendContainer ref={innerRef} isShown={isShown}>\r\n {values.map(renderLegend)}\r\n </MaximizedLegendContainer>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\r\nimport { CombinedPolylineSymbolDc, StyleDc } from \"@evergis/api\";\r\n\r\nimport { MinimizedLegend } from './MinimizedLegend';\r\nimport { MaximizedLegend } from './MaximizedLegend';\r\nimport { LegendParameterDescription } from './LegendParameterDescription';\r\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\r\nimport {\r\n MapLegendExpandButton,\r\n MapLegendHeader,\r\n MapLegendSectionContainer,\r\n MapLegendSectionItems,\r\n} from '../styled';\r\nimport {\r\n getMaximizedLegendValues,\r\n getMinimizedLegendValues,\r\n} from '../../../utils/legend';\r\nimport { isCombinedPolylineSymbol } from \"../../../core\";\r\nimport { useNode, useToggle } from '../../../hooks';\r\nimport { LegendSectionProps } from '../types';\r\n\r\nexport const LegendSection: FC<LegendSectionProps> = ({\r\n layerName,\r\n symbol,\r\n parameter,\r\n parameters,\r\n classified,\r\n hiddenLegends,\r\n toggleHiddenLegend,\r\n clearHiddenLegends,\r\n goToClassification,\r\n attribute,\r\n formatValue,\r\n index,\r\n count,\r\n}) => {\r\n const { t } = useTranslation(\"style\");\r\n const [isExpanded, toggleExpanded] = useToggle();\r\n const [maxRef, maxNode] = useNode();\r\n const [minRef, minNode] = useNode();\r\n\r\n if (!layerName || !attribute) return null;\r\n\r\n const currentSymbol = isCombinedPolylineSymbol(symbol as CombinedPolylineSymbolDc)\r\n ? (symbol as CombinedPolylineSymbol).values[index] as StyleDc['symbol'] : symbol;\r\n\r\n return (\r\n <MapLegendSectionContainer hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}>\r\n <MapLegendHeader>\r\n {attribute.alias || attribute.name}\r\n <LegendHeaderButtons\r\n layerName={layerName}\r\n hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}\r\n clearHiddenLegends={clearHiddenLegends}\r\n goToClassification={goToClassification}\r\n />\r\n </MapLegendHeader>\r\n <LegendParameterDescription\r\n parameter={parameter}\r\n index={count && index !== undefined ? count - index : 0}\r\n />\r\n <MapLegendSectionItems\r\n minHeight={minNode?.offsetHeight}\r\n maxHeight={maxNode?.offsetHeight}\r\n isExpanded={isExpanded}\r\n >\r\n <MaximizedLegend\r\n innerRef={maxRef}\r\n isShown={isExpanded}\r\n layerName={layerName}\r\n symbol={currentSymbol}\r\n hiddenLegends={hiddenLegends?.[layerName]}\r\n toggleHiddenLegend={toggleHiddenLegend}\r\n parameter={parameter}\r\n attributeType={attribute.type}\r\n index={index}\r\n values={getMaximizedLegendValues(\r\n attribute,\r\n parameter,\r\n parameters,\r\n classified,\r\n currentSymbol,\r\n formatValue,\r\n index,\r\n t(\"other\")\r\n )}\r\n />\r\n <MinimizedLegend\r\n innerRef={minRef}\r\n isShown={!isExpanded}\r\n hiddenLegends={hiddenLegends?.[layerName]}\r\n parameter={parameter}\r\n values={getMinimizedLegendValues(\r\n attribute,\r\n classified,\r\n formatValue,\r\n index,\r\n t(\"other\")\r\n )}\r\n />\r\n </MapLegendSectionItems>\r\n <MapLegendExpandButton onClick={toggleExpanded}>\r\n {isExpanded ? t('hide') : t('show')}\r\n </MapLegendExpandButton>\r\n </MapLegendSectionContainer>\r\n );\r\n};\r\n","import React, { FC, memo, useMemo } from 'react';\r\n\r\nimport { LegendSection, LegendChildren } from './components';\r\nimport { MapLegendContainer } from './styled';\r\nimport { SYMBOL_CLASSIFICATION } from './constants';\r\nimport { getLayerAttributes } from '../../core/attributes/utils';\r\nimport { getConditionAttribute } from './utils/getConditionAttribute';\r\nimport { ClassifiedList, ClassifiedListItem, classifyParamsReduce, getClassified } from '../../utils/legend';\r\nimport { ClassificationParameterExtended, isCombinedPolylineSymbol } from '../../core';\r\nimport { ClassifyParameter, LegendProps } from './types';\r\n\r\nexport const Legend: FC<LegendProps> = memo(\r\n ({ layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification, ...rest }) => {\r\n if (!layerInfo) return null;\r\n\r\n if (layerInfo.style?.children?.length) {\r\n return (\r\n <LegendChildren\r\n layerInfo={layerInfo}\r\n formatValue={formatValue}\r\n hiddenLegends={hiddenLegends}\r\n toggleHiddenLegend={toggleHiddenLegend}\r\n clearHiddenLegends={clearHiddenLegends}\r\n goToClassification={goToClassification}\r\n />\r\n );\r\n }\r\n\r\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\r\n\r\n const renderItems = useMemo(() => {\r\n const parameters = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\r\n const props = {\r\n layerName: layerInfo.name,\r\n symbol: layerInfo.style?.symbol,\r\n parameters: parameters as ClassificationParameterExtended[],\r\n formatValue: formatValue,\r\n hiddenLegends: hiddenLegends,\r\n toggleHiddenLegend: toggleHiddenLegend,\r\n clearHiddenLegends: clearHiddenLegends,\r\n goToClassification: goToClassification,\r\n };\r\n\r\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\r\n const values = layerInfo.style?.symbol?.values?.reduce((result, symbol, index) => {\r\n return [classifyParamsReduce(symbol, parameters as ClassifyParameter[], index) as ClassifiedList, ...result];\r\n }, [] as ClassifiedList[]);\r\n\r\n return (\r\n <>\r\n {values?.map((value, index) => Object.keys(value).map((param, keyIndex) => {\r\n const item = value[param as ClassifyParameter] as ClassifiedListItem;\r\n\r\n return (\r\n <LegendSection\r\n key={[keyIndex, index].join(\"-\")}\r\n index={item?.index as number}\r\n count={values?.length}\r\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\r\n parameter={param as ClassificationParameterExtended}\r\n classified={item}\r\n {...props}\r\n {...rest}\r\n />\r\n );\r\n }))}\r\n </>\r\n );\r\n }\r\n\r\n const classified = getClassified(layerInfo);\r\n\r\n if (!classified) return null;\r\n\r\n return (\r\n <>\r\n {Object.keys(classified).map((param, keyIndex) => {\r\n const item = classified[param as keyof ClassifiedList] as ClassifiedListItem;\r\n\r\n return (\r\n <LegendSection\r\n key={[keyIndex, item.index].join(\"-\")}\r\n index={item.index as number}\r\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\r\n parameter={param as ClassificationParameterExtended}\r\n classified={item}\r\n {...props}\r\n {...rest}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n }, [layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification]);\r\n\r\n return (\r\n <MapLegendContainer>\r\n {renderItems}\r\n </MapLegendContainer>\r\n );\r\n }\r\n);\r\n","import React, { CSSProperties, PropsWithChildren, useCallback } from 'react';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { useMapContext } from '../../contexts';\n\nimport {\n MapState,\n shouldUpdateMapState,\n useMapBboxChange,\n useMapWrapper,\n useMaxMinScale,\n useUpdateMapView,\n} from '../../hooks';\n\nexport type MapProps = PropsWithChildren<{\n className?: string;\n position?: Coordinates;\n resolution?: number;\n minScale?: number;\n maxScale?: number;\n style?: CSSProperties;\n onBboxChange?: (mapState: MapState) => void;\n}>;\n\nexport const Map: React.FC<MapProps> = ({\n className,\n position,\n resolution,\n minScale,\n maxScale,\n children,\n onBboxChange,\n style,\n}) => {\n const wrapperRef = useMapWrapper();\n const { map } = useMapContext();\n\n const handleBboxChange = useCallback(\n (state: MapState) => {\n if (onBboxChange && shouldUpdateMapState(map, { position, resolution })) {\n onBboxChange(state);\n }\n },\n [map, onBboxChange, position, resolution]\n );\n\n useUpdateMapView({ position, resolution });\n useMaxMinScale(minScale, maxScale, position, resolution);\n\n useMapBboxChange(handleBboxChange);\n\n return (\n <div className={className} ref={wrapperRef} style={style}>\n {children}\n </div>\n );\n};\n","import React from 'react';\r\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\r\nimport { Map as SMap } from '@evergis/sgis/es/Map';\r\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\r\nimport { FeatureLayer } from '@evergis/sgis/es/layers/FeatureLayer';\r\nimport { DrawingFinishEvent } from '@evergis/sgis/es/controls/Control';\r\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\r\nimport { Feature } from '@evergis/sgis/es/features/Feature';\r\nimport { Poly } from '@evergis/sgis/es/features/Poly';\r\n\r\nimport { renderLabelSymbolType, MeasureProps } from './Measurer';\r\n\r\nimport { BaseMeasureToolCreator, BaseMeasureToolEditor } from '../../controls';\r\n\r\nimport { isPolylineLikePolygon } from '../../core';\r\n\r\nimport {\r\n measureAreaSymbol,\r\n measureLengthSymbol,\r\n measurePolygonSnapSymbol,\r\n} from '../../symbols';\r\n\r\ninterface MeasureToolProps extends Omit<MeasureProps, 'isActive'> {\r\n map: SMap;\r\n painter: DomPainter;\r\n}\r\n\r\nexport class MeasureTool extends React.Component<MeasureToolProps> {\r\n layer?: FeatureLayer;\r\n createControl?: BaseMeasureToolCreator;\r\n editorControl?: BaseMeasureToolEditor;\r\n\r\n componentDidMount(): void {\r\n const { map, painter, renderLabelSymbol } = this.props;\r\n\r\n this.layer = new FeatureLayer();\r\n this.initCreateMode(map, painter, renderLabelSymbol);\r\n this.initEditMode(map, painter, renderLabelSymbol);\r\n\r\n this.props.map.addLayer(this.layer);\r\n this.switchMode(true, false);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.layer && this.props.map.removeLayer(this.layer);\r\n this.switchMode(false, false);\r\n this.offEvents();\r\n this.clearProperties();\r\n }\r\n\r\n initCreateMode(\r\n map: SMap,\r\n painter: DomPainter,\r\n renderLabelSymbol: renderLabelSymbolType\r\n ): void {\r\n const { lengthSymbol, formatters, areaSymbol } = this.props;\r\n\r\n this.createControl = new BaseMeasureToolCreator(map, painter, {\r\n isActive: false,\r\n useTempLayer: true,\r\n symbol: lengthSymbol || measureLengthSymbol,\r\n areaSymbol,\r\n dblClickMinTime: 300,\r\n renderLabelSymbol,\r\n formatters: formatters,\r\n });\r\n // @ts-ignore\r\n this.createControl.on('drawingFinish', this.createFeature);\r\n this.createControl.on('cancel', this.cancelFeatureCreation);\r\n }\r\n\r\n initEditMode(\r\n map: SMap,\r\n painter: DomPainter,\r\n renderLabelSymbol: renderLabelSymbolType\r\n ): void {\r\n const { lengthSymbol, snapSymbol, formatters } = this.props;\r\n\r\n this.editorControl = new BaseMeasureToolEditor(map, painter, {\r\n isActive: false,\r\n activeLayer: this.layer,\r\n snappingSymbol: snapSymbol || measurePolygonSnapSymbol,\r\n symbol: lengthSymbol || measureLengthSymbol,\r\n renderLabelSymbol,\r\n formatters,\r\n });\r\n this.editorControl.featureDragAllowed = false;\r\n this.editorControl.on('remove', this.removeFeature);\r\n }\r\n\r\n componentDidUpdate({ formatters }: MeasureToolProps) {\r\n const { formatters: currentFormatters } = this.props;\r\n\r\n if (currentFormatters !== formatters && currentFormatters)\r\n if (this.editorControl) {\r\n this.editorControl.formatters = currentFormatters;\r\n this.editorControl.updateMeasureResult();\r\n }\r\n }\r\n\r\n offEvents(): void {\r\n if (this.createControl) {\r\n // @ts-ignore\r\n this.createControl.off('drawingFinish', this.createFeature);\r\n }\r\n\r\n this.editorControl && this.editorControl.off('remove', this.removeFeature);\r\n this.createControl &&\r\n this.createControl.off('cancel', this.cancelFeatureCreation);\r\n }\r\n\r\n clearProperties(): void {\r\n delete this.createControl;\r\n delete this.editorControl;\r\n delete this.layer;\r\n }\r\n\r\n switchMode(create: boolean, edit: boolean): void {\r\n if (this.createControl) {\r\n this.createControl.isActive = create;\r\n }\r\n\r\n if (this.editorControl) {\r\n this.editorControl.isActive = edit;\r\n }\r\n }\r\n\r\n getFeature(rings: [number, number][][]): Feature | Feature[] {\r\n const { lengthSymbol, areaSymbol, map } = this.props;\r\n let feature;\r\n\r\n if (isPolylineLikePolygon(rings, map.resolution)) {\r\n rings[0].shift();\r\n feature = new Polygon(rings, { crs: map.crs });\r\n feature.symbol = areaSymbol || measureAreaSymbol;\r\n } else {\r\n feature = new Polyline(rings, { crs: map.crs });\r\n feature.symbol = lengthSymbol || measureLengthSymbol;\r\n }\r\n\r\n return feature;\r\n }\r\n\r\n createFeature = (event: DrawingFinishEvent<Polyline>): void => {\r\n const feature = this.getFeature([...event.feature.rings]);\r\n\r\n this.layer && this.layer.add(feature);\r\n if (this.editorControl) {\r\n this.editorControl.activeFeature = feature as Poly;\r\n }\r\n this.switchMode(false, true);\r\n };\r\n\r\n removeFeature = (): void => {\r\n if (this.editorControl && this.editorControl.activeFeature) {\r\n this.layer && this.layer.remove(this.editorControl.activeFeature);\r\n }\r\n\r\n this.switchMode(true, false);\r\n };\r\n\r\n cancelFeatureCreation = (): void => {\r\n setTimeout(() => {\r\n this.switchMode(false, false);\r\n this.switchMode(true, false);\r\n }, 10);\r\n };\r\n\r\n render(): React.ReactElement {\r\n return <div style={{ display: 'none' }} />;\r\n }\r\n}\r\n","import React, { ReactElement } from 'react';\n\nimport { useMapContext } from '../../contexts';\nimport { MeasureToolFormatters } from '../../controls/MeasureToolFormatters';\nimport { MeasureTool } from './MeasureTool';\nimport { ShadowedPolySymbol, ShadowedPointSymbol } from '../../symbols';\n\nexport type renderLabelSymbolType = (props: {\n content: string;\n onClose?: VoidFunction;\n}) => ReactElement;\n\nexport type MeasureProps = {\n isActive: boolean;\n renderLabelSymbol: renderLabelSymbolType;\n formatters?: MeasureToolFormatters;\n snapSymbol?: ShadowedPointSymbol;\n lengthSymbol?: ShadowedPolySymbol;\n areaSymbol?: ShadowedPolySymbol;\n};\n\nexport const Measurer: React.FC<MeasureProps> = ({ isActive, ...props }) => {\n const { map, painter } = useMapContext();\n\n return isActive ? (\n <MeasureTool map={map} painter={painter} {...props} />\n ) : null;\n};\n","import styled from 'styled-components';\n\nexport const ScaleRulerContainer = styled.div`\n height: 2rem;\n cursor: default;\n display: flex;\n align-items: flex-end;\n padding: 0 0.5rem 0.5rem;\n box-sizing: border-box;\n`;\n\ntype ScaleRulerBlockProps = {\n width: number;\n};\n\nexport const ScaleRulerBlock = styled.div<ScaleRulerBlockProps>`\n display: flex;\n align-items: flex-end;\n justify-content: center;\n width: ${({ width }) => `${width}px`};\n height: 0.25rem;\n border: 0.0625rem solid white;\n border-top: 0;\n`;\n\ntype TextContainerProps = {\n margin?: string;\n width?: string;\n buttonText?: boolean;\n alignEnd?: boolean;\n};\n\nexport const TextContainer = styled.div<TextContainerProps>`\n height: 2rem;\n display: flex;\n justify-content: center;\n align-items: ${({ alignEnd }) => (alignEnd ? 'flex-end' : 'center')};\n width: ${({ width }) => width || 'auto'};\n color: #fff;\n font-size: 1rem;\n cursor: default;\n padding: 0 0.5rem;\n`;\n","import React from 'react';\nimport { ScaleRulerBlock, ScaleRulerContainer, TextContainer } from './styled';\nimport { useMapView, useScale } from '../../hooks';\n\nexport const ScaleRuler: React.FC = () => {\n const { resolution } = useMapView();\n const { currentScale, width } = useScale({ resolution: resolution || 0 });\n\n return (\n <ScaleRulerContainer>\n <ScaleRulerBlock width={width}>\n <TextContainer alignEnd margin={'0'}>\n {currentScale >= 1000\n ? `${currentScale / 1000}km`\n : `${currentScale}m`}\n </TextContainer>\n </ScaleRulerBlock>\n </ScaleRulerContainer>\n );\n};\n","import React, { PropsWithChildren } from 'react';\n\nimport { MapControl, ZoomInBtn, ZoomOutBtn } from '../MapControls/styled';\n\nimport { useMapViewActions } from '../../hooks';\n\ntype ZoomProps = PropsWithChildren<{}>;\n\nexport const Zoom: React.FC<ZoomProps> = ({ children }) => {\n const { zoomIn, zoomOut } = useMapViewActions();\n\n return (\n <MapControl>\n <ZoomInBtn onClick={zoomIn} />\n <ZoomOutBtn onClick={zoomOut} />\n {children}\n </MapControl>\n );\n};\n","import React from 'react';\n\nimport { TextContainer } from './styled';\n\nimport { useMapLevel } from '../../hooks';\n\nexport const ZoomLevel: React.FC = () => {\n const level = useMapLevel();\n\n return (\n <TextContainer buttonText={true} width={'2rem'}>\n {level || 0}\n </TextContainer>\n );\n};\n","import styled, { css } from 'styled-components';\n\nimport { TooltipComponentProps, Placement } from './types';\n\nexport const TOOLTIP_PLACEMENTS: Placement[] = [\n 'top',\n 'right',\n 'left',\n 'bottom',\n];\n\nconst cornerBottom = (cornerSize: string) => css`\n &:before {\n left: 50%;\n transform: translate(-50%, 100%);\n bottom: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-top: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst cornerLeft = (cornerSize: string) => css`\n &:before {\n transform: translate(-100%, -50%);\n left: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerRight = (cornerSize: string) => css`\n &:before {\n transform: translate(100%, -50%);\n right: 0;\n top: 50%;\n border-top: ${cornerSize} solid transparent;\n border-left: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n border-bottom: ${cornerSize} solid transparent;\n }\n`;\n\nconst cornerTop = (cornerSize: string) => css`\n &:before {\n transform: translate(-50%, -100%);\n left: 50%;\n top: 0;\n border-left: ${cornerSize} solid transparent;\n border-right: ${cornerSize} solid transparent;\n border-bottom: ${cornerSize} solid rgba(28, 33, 48, 0.8);\n }\n`;\n\nconst top = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n bottom: ${distance};\n ${cornerSize && cornerBottom(cornerSize)}\n`;\n\nconst right = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n left: ${distance};\n ${cornerSize && cornerLeft(cornerSize)}\n`;\n\nconst left = (distance: string, cornerSize: string | null) => css`\n transform: translate(0, -50%);\n top: -50%;\n right: ${distance};\n ${cornerSize && cornerRight(cornerSize)}\n`;\n\nconst bottom = (distance: string, cornerSize: string | null) => css`\n transform: translate(-50%, 0);\n left: -50%;\n top: ${distance};\n ${cornerSize && cornerTop(cornerSize)}\n`;\n\nexport const placementMixin = (\n placement: Placement = 'top',\n distance: string,\n cornerSize: string | null\n) => css`\n ${placement === 'top' && top(distance, cornerSize)}\n ${placement === 'right' && right(distance, cornerSize)}\n ${placement === 'left' && left(distance, cornerSize)}\n ${placement === 'bottom' && bottom(distance, cornerSize)}\n`;\n\nconst corner = css`\n &:before {\n content: '';\n width: 0;\n height: 0;\n position: absolute;\n }\n`;\n\nexport const TooltipComponent = styled.div<TooltipComponentProps>`\n position: absolute;\n z-index: 999;\n display: flex;\n font-size: 0.625rem;\n color: #fff;\n background-color: rgba(28, 33, 48, 0.8);\n padding: 0.4em 0.6em;\n border-radius: 2px;\n user-select: none;\n box-sizing: border-box;\n white-space: pre;\n ${({ placement, distance = '0.5rem', withArrow, cornerSize = '0.25rem' }) =>\n placementMixin(placement, distance, withArrow ? cornerSize : null)}\n ${({ withArrow }) => withArrow && corner}\n`;\n","import React, { createContext, useEffect } from 'react';\nimport { Feature } from '@evergis/sgis/es/features/Feature';\nimport { Map } from '@evergis/sgis/es/Map';\n\nimport { TooltipComponent } from './styled';\nimport { ITooltip } from './types';\n\nimport { useTooltip } from '../../hooks';\n\n// TODO why???\nconst { Provider, Consumer } = createContext<Feature[]>([]);\n\n// TODO I just cant read that\nexport const Tooltip: React.FC<ITooltip> = ({\n features = [],\n map,\n center,\n component,\n zIndex,\n children,\n content,\n onEachFeature,\n clickMode,\n ...props\n}: ITooltip) => {\n const onTooltip = useTooltip(zIndex);\n\n useEffect(() => {\n (map ? [map] : features).forEach((feature: Feature | Map) => {\n const position =\n center && !(feature instanceof Map) && feature.bbox.center\n ? feature.bbox.center\n : undefined;\n\n onTooltip({\n feature,\n component:\n typeof onEachFeature === 'function'\n ? () => onEachFeature(feature)\n : () => <TooltipComponent {...props}>{content}</TooltipComponent>,\n position,\n clickMode,\n });\n });\n }, [\n content,\n clickMode,\n onEachFeature,\n onTooltip,\n map,\n center,\n features,\n component,\n props,\n ]);\n\n return (\n <Provider value={features}>\n {map ? children : children ? <Consumer>{children}</Consumer> : null}\n </Provider>\n );\n};\n","import React from 'react';\n\n/** No operation element */\nexport const Noop = () => <div style={{ display: 'none' }}></div>;\n","import React, { FC, ReactElement, Fragment } from 'react';\n\nimport { useDraggableMarker } from '../../hooks';\n\nimport { DraggableMarkerProps } from './types';\n\nexport const DraggableMarker: FC<DraggableMarkerProps> = ({\n position,\n onChange,\n symbol,\n}): ReactElement => {\n useDraggableMarker({ position, onChange, symbol });\n\n return <Fragment />;\n};\n"],"names":["usePagination","length","current","setCurrent","useState","next","useCallback","value","prev","reset","BASE_URL","defaultApi","Api","url","evergisContext","createContext","EvergisProvider","api","children","useMemo","React","Provider","useEvergisContext","useContext","defaultMap","Map","defaultPainter","DomPainter","mapContext","map","painter","MapProvider","useMapContext","defaultLayer","FeatureLayer","defaultPopupLayer","tooltipContext","layer","popupLayer","TooltipProvider","useTooltipContext","LegendContext","LegendProvider","symbol","useLegendContext","evergisSelectContext","EvergisSelectProvider","layers","useEvergisSelectContext","useEventPoint","event","point","browserEvent","wrapper","x","y","getMouseOffset","pageX","touches","pageY","originalPoint","getPointFromPxPosition","useMapViewActions","getEventPoint","zoomTo","k","zoom","position","zoomIn","zoomOut","animateTo","resolution","extent","nextPosition","slice","xMax","xMin","yMax","yMin","bbox","Bbox","crs","show","zoomAround","changeZoomLevel","level","tileScheme","tileLevel","levels","find","zIndex","animateSetResolution","useZoomToFeature","feature","useEvergisCard","features","zoomToFeature","useEffect","isRangeClass","Boolean","isUniqueClass","NULL_EXPRESSION","attribute","operation","ClassificationCondition","condition","conditionResult","ConditionInterpreter","expressions","Error","leftExpression","isUnique","console","warn","isRange","from","to","rightExpression","isFrom","TokenType","ArGr","ArEq","ArGre","ArLs","ArLse","includes","PARAMETER_SEPARATOR","parameterToPaths","parameter","split","pathsToParameter","paths","join","isObject","Array","isArray","isParameterByAttribute","type","isCalculatedParameter","getParameterValue","defaultValue","symbolParameterWalker","valueModifier","firstKey","restKeys","symbolPart","goDeeper","setDefaultParameterValue","setParameterValue","path","applyParameterValue","symbolTypeGuard","isPointLabelSymbol","isPolygonLabelSymbol","isPolylineLabelSymbol","isLabelSymbol","createCompositeSymbol","childSymbols","getChildSymbols","isCompositeSymbol","extractSymbol","isSimpleSymbol","label","raster","isRasterSymbol","extractStyle","style","packStyle","ignoreLabel","styleDc","filter","childStyle","isPointSymbol","isSquareSymbol","isMaskedImageSymbol","isStaticImageSymbol","isCombinedPolylineSymbol","isPolygonSymbol","isPolylineSymbol","isSimplePolylineSymbol","isPolylineSymbols","isImageSymbol","isTwoDimensionalSymbol","isSizableSymbol","isStrokeStyledSymbol","isScalablePolylineSymbol","beginning","ending","stroke","isH3GridSymbol","isSvgPointSymbol","isClusterSymbol","isClusterFillColor","getExtractedSymbol","extractCluster","extracted","singleObjectSymbol","isHatchBrush","isPatternBrush","isDashedBrush","isSolidBrush","isPolygonHasPatternBrush","fill","isPolygonHasHatchBrush","isMiterExist","miter","LineEndingType","None","isFilledLineMitter","FilledCircle","FilledArrow","FilledSquare","isArrowLineMiter","Arrow","isSquareLineMiter","Square","isCircleLineMiter","Circle","isSimpleOffset","offset","isSymbolWithOffset","isStringParameterValue","parameterValue","isParameterValueSimple","isParameterValueSymbol","isStyle","EvergisStyle","classificationManager","ClassificationManager","some","title","minResolution","maxResolution","toClassificationClass","uniqueValue","range","DEFAULT_EXTRAS","defaultTitle","toClassification","values","extras","reduce","classification","classificationCondition","classificationValue","push","attributeName","getClassifications","pathContext","Object","entries","classifications","skipHeight","skip","collectClassifications","predicate","callback","initial","unClassify","flatSymbol","result","DEFAULT_LANGUAGE","resources","en","ru","i18n","use","initReactI18next","init","fallbackLng","ns","keys","interpolation","escapeValue","supportedLngs","printRangeClass","index","isDouble","isDate","getRangeValues","t","getHexColor","colorString","Color","toString","undefined","PREVIEW_LIMITS","STROKE_WIDTH_MIN","STROKE_WIDTH_MAX","clamp","num","min","max","Math","SOLID_INTERVALS","solidStrokeStylePreset","intervals","strokeStylePresets","walkByNumbersGroup","numbers","walker","newNumbers","i","toIntervals","width","gap","toLineDash","round","getLineDash","brush","defineStrokeStylePreset","preset","uniqueStrokeWidths","presetInterval","unique","getDashStylePreset","dashStyle","ALPHA_NORMALIZER","sum","shouldFillMatrixCell","matrixSize","hatchAngle","center","PI","createEmptyMatrix","size","fillMatrix","matrix","filler","createFillBrushMatrix","hatchWidth","scalingFactor","createSymbolFillBrush","fillBrush","SGisBrushFill","originalSymbol","strokeColor","color","strokeWidth","lineDash","fillBackground","fillForeground","hatchColor","lineCap","_initialized","canvas","document","createElement","ctx","getContext","brushSize","foreground","background","height","j","srcA","a","dstA","alpha","toFixed","red","r","green","g","blue","b","fillStyle","fillRect","_brush","Image","src","toDataURL","sBrushFill","SGisImageFill","pattern","sImageFill","SGisPolygonSymbol","fillColor","sPolygonSymbol","adaptMiterRings","rings","fromCrs","toCrs","projected","projectRings","simplifyCoordinates","ring","miterSizeCalcs","LineMiterRender","baseInfo","lastRing","firstRing","assign","anchorRings","anchorCrs","currentCrs","xMultiplier","miterAnchor","getAnchor","miterRings","createRings","projectedMiterRings","createRender","calcMiterSize","ArrowLineMiterRender","miterSize","isFilled","kind","PolyRender","enclosed","FillStyle","lineJoin","NO_CONTENT_VALUE","DateFormat","stringDateParsers","parseJSON","parseISO","rawDate","Date","getDate","parser","date","isValid","toDate","parsedDate","formatDate","dateFormat","ClientDefaultFormat","dateValue","format","numberWithSpaces","fractionDigits","delim","frac","numWithSpaces","replace","matchPhone","phoneRegexp","isStringAsInn","match","innRegexp","test","isStringAsKpp","kppRegexp","isStringAsOgrn","ogrnRegexp","isStringContainsDate","dateRegexp","isRequisiteNumbers","isStringAsPhone","isStringAsMail","isStringAsUrl","isValidUrl","urlRegexp","urlKind","URL","_","mailHref","mail","phoneHref","urlHref","stringAttribute","urlAttribute","mailAttribute","phoneAttribute","convertStringAttribute","formatStringAttribute","phones","attributeValues","every","isNaN","formatDateTimeAttribute","formatIntAttribute","DOUBLE_FRACTIONS","formatDoubleAttribute","isNullOrUndefined","NO_CONTENT_ATTRIBUTE","formatAttributeValue","SrId","CRS_MAP","WebMercator","webMercator","Geo","geo","Wgs84","wgs84","EllipticalMercator","ellipticalMercator","DEFAULT_SRID","DEFAULT_CRS","getCrs","srId","getFeatureAttributeType","attributeValue","AttributeType","DateTime","String","Int64","Unknown","getLayerAttributes","layerDefinition","attributes","name","definition","getFeatureAttributes","mergeAttributes","attributes1","attributes2","EvergisFeature","id","displayName","geometry","layerName","layerAlias","coordinates","sr","GeometryType","Point","PointFeature","selectedPoint","Multipoint","MultiPoint","Polyline","selectedPolyline","Polygon","selectedPolygon","sGisFeature","evaluateCondition","evaluator","ConditionEvaluator","evaluate","getAttributeValue","attributeMeta","getAttributeNameFromCondition","getAttributeNameFromClassified","findFeatureValue","parameterValues","extractValuesAttribute","evaluateFeatureSymbol","calc","parameterName","newParameterValue","featureValue","findChildFeatureStyle","childStyles","findChildFeatureSymbol","featureStyle","getFeatureSymbol","EvergisLayer","service","evergisService","alias","titleAttribute","findFeatureLayer","evaluateFeature","featureLayer","createValueTitle","isValidParameter","FilterConditionOperation","ComparisonOperator","formatArea","measure","formatLength","formatPolygonMeasure","area","perimiter","isPolylineLikePolygon","coords","firstPoint","lastPoint","distance","softEquals","getScale","scale","scales","pow","DEFAULT_FORMATTERS","polygon","COORD_FRACTION","DEFAULT_LABEL_POSITION","Infinity","BaseMeasureToolCreator","params","fire","renderLabelSymbol","formatters","areaSymbol","on","handlePointAdd","updateDistance","drawPointOnMouseMove","addTempLabel","setCursor","removeCoordLabel","removeTempLabel","removeMeasureLabel","removeTempPolygon","activeFeature","finishDrawing","DrawingFinishEvent","MouseEvent","projection","projectionTo","lat","long","addMeasureResultLabel","addCoordLabel","tempPolygon","_tempLayer","remove","polygonRings","shift","measureAreaSymbol","hide","add","ringIndex","pointIndex","calcLength","content","polygonPreview","calcArea","measureResultLabel","tempLabel","LabelFeature","createLabelSymbol","renderLabel","coordLabel","onClose","cancel","cursor","PolylineControl","BaseMeasureToolEditor","isEnclosed","pointsCount","updateMeasureResult","measureResult","removeFeature","PolyEditor","isNumeric","number","parseFloat","isFinite","isParameterType","types","toLowerCase","comparisonOperatorMapReversed","Equals","ArNotEq","NotEquals","GreaterThan","LessThan","GreaterOrEquals","LessOrEquals","Between","Outside","NUMERIC_ATTRIBUTE_TYPES","Int32","Double","formatValue","UTC","formatCondition","comparisonOperator","operator","OPERATOR_CONDITION_REMAP","preparedValue","isBetweenOutside","BETWEEN_OPERATORS","formattedValue","val","nulledValue","isNil","valueEscaped","Char","escapeSpecChars","addOperationToValue","createConditionString","createCondition","convertedResult","convertOperatorValue","operatorIndex","startsWith","PERCENTAGE","endsWith","CONTAINS_OPERATORS","ENDS_WITH_OPERATORS","STARTS_WITH_OPERATORS","addContains","addStartsWith","addEndsWith","Contains","NotContains","StartsWith","NotStartsWith","EndsWith","NotEndsWith","BETWEEN","OUTSIDE","FilterCondition","conditionInterpreter","message","isOrCondition","boolOperations","BoolOr","isAndCondition","BoolAnd","OR","AND","conditions","isLayerService","getAttributeFromCondition","parts","getExprFromCondition","partIndex","expr","part","getSignFromConditionPart","getValueFromConditionPart","isRangeCondition","getSymbolParameterInfo","PARAMETER_INFOS","DEFAULT_PARAMETER_INFO","formatUniqueClassValue","stringFormat","formatRangeClassValue","formattedFrom","formattedTo","checkLayerHasLegend","layerInfo","SYMBOL_CLASSIFICATION","geometryType","param","paramValue","get","getTitleFromCondition","createValueTitleFromCondition","sign","isFirstFrom","DEFAULT_LEGEND_STYLES","maskedColor","SYMBOL_SIZE_PARAMETERS","DEFAULT_LEGEND_SIZES","circlePointSymbol","squarePointSymbol","imagePointSymbol","maskedImagePointSymbol","svgPointSymbol","getNonClassifiedParamValue","baseSymbol","classificationsParams","defaultParameterValue","getParameterFromSymbol","updateSymbolParameter","createPointSymbol","getDimensions","ratio","createImagePointSymbol","createLineSymbol","createPolygonSymbol","createH3Symbol","createClusterSymbol","createLegendSymbol","createHiddenCondition","attributeType","newValue","createOtherHiddenCondition","hiddenCondition","getMinimizedLegendValues","classified","otherTitle","other","getClassificationValue","items","getMaximizedLegendValues","sectionIndex","classifyParamsReduce","classifyParams","getClassified","polyline","getSymbolStrokeWidth","parameterFromSymbol","getLegendSymbolSize","cellSize","EXTRA_BORDER_SIZE","DEFAULT_LEGEND_SYMBOL_SIZE","serializeSvgPointSymbol","figureFillColor","figure","bgFillColor","angle","SvgSymbolBg","SIZE_PARAMETERS","isSizeClassification","getServiceConfiguration","emptyServiceConfiguration","configuration","GEOMETRY_ATTRIBUTE","DEFAULT_ID_ATTRIBUTE_NAME","getAttributesConfiguration","serviceConfiguration","emptyAttributesConfiguration","geometryAttribute","idAttribute","tableName","attributesConfiguration","getLayerDefinition","emptyLayerDefinition","getAttributeType","metersToPixels","meters","zeroPoint","projectTo","maxWidthPoint","widthDistance","pxK","polygonCircleFromPoint","diameter","radius","endAngle","step","start","end","ang","cos","sin","DEFAULT_SYMBOL_SIZE","DEFAULT_SYMBOL_WITH_BG_SIZE","DEFAULT_SYMBOL_FILL_COLOR","DEFAULT_SYMBOL_STROKE_COLOR","DEFAULT_SYMBOL_OFFSET","DEFAULT_CLUSTER_SVG","SYMBOL_LIMITS","SIZE_MIN","SIZE_MAX","SIZE_STEP","GRID_SIZE_MIN","GRID_SIZE_MAX","MIN_OBJECTS_COUNT","MAX_OBJECTS_COUNT","MIN_CLUSTER_SIZE","MAX_CLUSTER_SIZE","STROKE_WIDTH_STEP","ANGLE_MIN","ANGLE_MAX","ANGLE_STEP","PREVIEW_SIZE_MAX","PREVIEW_SIZE_MAX_WIDTH","classifyAble","units","serialize","deserialize","Filled","Empty","BASE_OPERATORS","FILLED_OPERATORS","RANGE_OPERATORS","numberComparisonOperators","dateComparisonOperators","textComparisonOperators","DEFAULT_STROKE_OPACITY","convertSvgToBase64","svg","window","btoa","createSvgGradient","gradient","forEach","stop","manipulateSvgSymbol","SVGContainer","bg","isClassified","symbolData","data","clear","isUploadedFile","innerSvg","uploadedViewBox","exec","viewbox","hasBg","defaultSize","currentSize","viewBox","currentBg","each","item","symbolBg","opacity","rootTransform","transformParts","transform","rotatedAngle","rotate","CircleLineMiterRender","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","copyRings","SGisPolylineSymbol","renders","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","render","getRender","unshift","sPolylineSymbol","LabelSymbol","component","node","renderDom","getNode","Component","ReactDOM","innerText","DynamicPointSymbol","defaultOffset","props","ShadowedPointSymbol","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","mapCoordinates","getShadowArc","getPointArc","shadowColor","shadowSize","Arc","PointSymbol","getSimplifiedPolygonCoordinates","tolerance","equals","createShadowRender","shadowRadius","createPointRender","ShadowedPolySymbol","Poly","simplifiedFeatureCoordinates","polyRender","getPolyRender","vertexRenders","getVertexRenders","concat","enclose","showVertex","pointRenderers","shadowRenderers","featurePoint","vertexShadowSize","pointRender","PolylineSymbol","polySymbolParams","measureSymbolParams","measureLengthSymbol","snapSymbolParams","measurePolygonSnapSymbol","SelectedPointSymbol","isSelected","selectedStrokeColor","selectedFillColor","SelectedPolySymbol","selectedStrokeWidth","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","setSvg","append","__dynamicSymbolRender","DynamicRender","update","redraw","_setEventListeners","pxOffset","__lastBbox","__lastResolution","canProjectTo","newCoordinates","radiusOffset","dx","dy","left","top","miterLimit","dashOffset","svgRender","SvgRender","_setArcNode","_setPolyNode","svgElement","classList","querySelector","setAttribute","dynamicFeature","eventFlags","MouseEventFlags","svgNode","mouseEvents","eventName","flag","listenDomEvent","Symbol","isSGisPointSymbol","StaticImageSymbol","SquareSymbol","MaskedImage","isSGisImageSymbol","isSGisPolygonSymbol","PolygonSymbol","BrushFill","ImageFill","isSGisPolylineSymbol","isSGisH3Symbol","H3Symbol","isSGisCombinedPolylineSymbol","CombinedPolylineSymbol","isSGisClusterSymbol","viewBoxSize","pointFeature","plain","lineFeature","combinedLineFeature","CombinedPolyline","polygonFeature","h3gridFeature","H3Feature","lineLegendFeature","polygonLegendFeature","polygonMapLegendFeature","MAP_LEGEND_FEATURES","LEGEND_FEATURES","combinedPolyline","h3grid","MOCK_FEATURES","getSymbolRenders","featuresToRender","renderFunctionAsync","getMapLegendSymbolRenders","getLegendSymbolRenders","renderSymbolToCanvas","draw","deserializeSymbol","deserializeH3Symbol","deserializeSvgPointSymbol","deserializePointSymbol","deserializeSquareSymbol","deserializeMaskedImageSymbol","deserializeImagePointSymbol","deserializePolygonSymbol","deserializePolylineSymbol","SPointSymbol","deserializePointSymbolParams","getOffsetParameterValue","deserializeSvgPointSymbolParams","deserializeColor","SSquareSymbol","anchorPoint","deserializeAnchor","imageSource","deserializeBase64","image","maskSource","imageMask","maskColor","SStaticImageSymbol","source","base","clampSymbol","centerAlignSymbol","adjustSymbol","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useCanvas","useRef","ref","Canvas","useMount","onMount","onUnmount","useProperty","deps","factory","destructor","propRef","newProp","useUpdate","onUpdate","shouldUpdate","useLayerOrder","insertLayer","useLayerVisibility","isDisplayed","useLayerOpacity","useEvergisDynamicLayer","ts","dataFilterId","onLoadStart","onLoadEnd","EvergisDynamicLayer","indexOf","removeLayer","useEvergisTileLayer","sourceUrl","subDomains","EvergisTileLayer","useFeatureLayer","useMapBboxChange","onBboxChange","force","BboxChangeEvent","BboxChangeEndEvent","handleBboxChange","getMapState","off","useMapResize","onResize","handleMapResize","MapResize","useMapPick","geometryParams","setGeometryParams","evergisLayers","pick","sGisClickEvent","imageRectangle","getPxPosition","pointPosition","clickPoint","envelopes","collectLayerEnvelopes","extentSr","wkid","getLayerBboxCoors","_currentRender","isEvergisDynamicLayer","useMapState","dispatch","useReducer","mapStateReducer","mapState","useMapView","getLevel","useMapLevel","useMapWrapper","wrapperRef","byScale","useMaxMinScale","minScale","maxScale","currentPosition","currentResolution","updateMapResolution","newResolution","Number","MAX_VALUE","pow10","floor","d","useCorrectedResolution","segmentLength","useScale","minLength","correctedResolution","currentScale","useUpdateMapView","shouldUpdateMapState","shouldUpdatePosition","shouldUpdateResolution","useTooltip","targetFeatures","labelFeature","events","onClickMap","currentFeatureEvents","onMouseOver","onMouseMove","onMouseOut","onClick","hasListener","onSetLabelFeature","clickMode","onRemoveLabelFeature","doNotBubbleToMap","stopPropagation","has","tooltipParams","target","isMap","featureEvents","useClusterLayer","onChangeGrid","clusterSymbol","currentFeatures","gridClusterProvider","GridClusterProvider","clusterLayer","ClusterLayer","INIT_FEATURES","useEvergisSelect","onPick","onFeatures","mapPickResult","setFeatures","resetSelection","useCrs","none","useDraggableMarker","onChange","pointEditor","PointEditor","isActive","activeLayer","onMapClick","addLayer","hasMapClick","useMetersToPixels","useMetersToPixelsCb","useDebouncedCallback","interval","debounce","cb","useToggle","state","setState","toggle","useNode","onSetNode","CompoundIcon","styled","div","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","sGisSymbol","e","EvergisCardContainer","Icon","StickyHeader","CardHeader","CardTitle","CardControls","FeatureName","LayerName","CardPagination","PaginationDescription","CurrentFeatureIndex","CardAttributes","AttributeContainer","AttributeTitle","AttributeValueContainer","SimpleAttribute","ValueLink","MailValue","rel","href","PhoneValue","phone","UrlValue","AttributeValue","key","punycodeDecode","domains","punycode","toUnicode","error","EvergisCardAttribute","StyledCard","onAttributes","onStatistics","onFeatureChange","headerExtra","hideZoom","IconButton","EverCloudStatisticsIcon","EverCloudZoomtoIcon","EverCloudCloseIcon","EverCloudPlayPrevIcon","EverCloudPlayNextIcon","EvergisCard","renderCard","hookProps","cardProps","truthly","setSelected","toSgis","useSGisFeatures","currentIndex","EvergisSelectLayer","sGisFeatures","useTileLayer","maskUrl","tileLayerParams","TileLayer","defaultZIndex","EvergisSelect","topLeft","css","topRight","bottomLeft","bottomRight","placementMixin","placement","mapControlBtnMixin","ZoomInBtn","ZoomOutBtn","SearchBtn","FullscreenBtn","MeasureBtn","MapControl","MapControls","vertical","Measure","Search","Fullscreen","MapLegendDescription","ItemText","theme","fonts","description","ItemSeparator","SymbolContainer","ClassifiedItem","isHidden","SymbolButtonWithClick","palette","elementDeep","SymbolButton","span","MapLegendControl","MapLegendContainer","MapLegendHeader","MapLegendDescriptionContainer","MapLegendBadge","borderRadius","xSmall","element","textPrimary","MaximizedLegendContainer","isShown","MinimizedLegendContainer","LegendHeaderButton","MapLegendSectionContainer","MapLegendSectionItems","minHeight","maxHeight","isExpanded","MapLegendValueDescr","SizeLegendItemMixin","StrokeWidthLegendItemMixin","StrokeColorLegendItemMixin","MapLegendItem","MapLegendOther","SizeLegendItemsMixin","StrokeWidthLegendItemsMixin","SizeMinimizedLegend","SizeMinimizedLegendSymbol","SizeMinimizedLegendLabel","SizeMinimizedLegendDown","SizeMinimizedLegendUp","SingleSizeLegendItemsMixin","SingleLegendItemsMixin","isSize","MapLegendItems","isStrokeWidth","isSingle","MapLegendItemsContainer","MapLegendValues","MapLegendValuesRange","MapLegendValuesOther","MapLegendExpandButton","ClusterLegendContainer","useSvgSymbol","skipOffset","SVGWrapperRefElement","SVG","initSvg","addTo","getSvgData","manipulateSvg","newSymbol","getUpdatedSvgSymbol","field","JSON","parse","stringify","svgRef","SvgSymbolContainer","SvgSymbolLabel","fontSettings","fontFamily","fontWeight","fontStyle","fontColor","fontSize","haloColor","haloWidth","SvgSymbol","memo","text","onSelectSymbol","renderSymbol","ClusterSymbolPreview","isClassifiedValue","svgSymbol","labelSymbol","SymbolByType","defaultSymbol","LegendSymbolRenderer","LegendHeaderButtons","hasHiddenLegends","clearHiddenLegends","goToClassification","EverCloudClassificationIcon","disabled","EverCloudRefreshIcon","getConditionAttribute","isHiddenLegend","hiddenLegends","renderColumn","column","dateTime","Fragment","getLegendText","columns","isSingleColumn","LegendChildren","toggleHiddenLegend","legendText","LegendParameterDescription","useTranslation","isStrokeColor","getValueFromLegendTitle","minOrMax","MinimizedLegend","innerRef","currentValues","pop","titleMax","titleMin","checkIsHidden","MaximizedLegend","sectionSymbol","renderLegend","isClusterFillColorAction","LegendSection","parameters","count","toggleExpanded","maxRef","maxNode","minRef","minNode","currentSymbol","offsetHeight","Legend","rest","renderItems","keyIndex","MeasureTool","getFeature","editorControl","switchMode","setTimeout","initCreateMode","initEditMode","offEvents","clearProperties","lengthSymbol","createControl","useTempLayer","dblClickMinTime","createFeature","cancelFeatureCreation","snapSymbol","snappingSymbol","featureDragAllowed","currentFormatters","create","edit","display","Measurer","ScaleRulerContainer","ScaleRulerBlock","TextContainer","alignEnd","ScaleRuler","margin","Zoom","ZoomLevel","buttonText","cornerBottom","cornerSize","cornerLeft","cornerRight","cornerTop","right","bottom","corner","TooltipComponent","withArrow","Consumer","Tooltip","onEachFeature","onTooltip","Noop","DraggableMarker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAMA,aAAa,GAAIC,MAAD;AAC3B,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBC,cAAQ,CAAC,CAAD,CAAtC;AAEA,QAAMC,IAAI,GAAGC,iBAAW,CACtB,MAAMH,UAAU,CAACI,KAAK,IAAKA,KAAK,GAAGN,MAAM,GAAG,CAAjB,GAAqBM,KAAK,GAAG,CAA7B,GAAiCA,KAA5C,CADM,EAEtB,CAACN,MAAD,EAASE,UAAT,CAFsB,CAAxB;AAKA,QAAMK,IAAI,GAAGF,iBAAW,CACtB,MAAMH,UAAU,CAACI,KAAK,IAAKA,KAAK,KAAK,CAAV,GAAcA,KAAd,GAAsBA,KAAK,GAAG,CAAzC,CADM,EAEtB,CAACJ,UAAD,CAFsB,CAAxB;AAKA,QAAMM,KAAK,GAAGH,iBAAW,CAAC,MAAMH,UAAU,CAAC,CAAD,CAAjB,EAAsB,CAACA,UAAD,CAAtB,CAAzB;AAEA,SAAO,CAACD,OAAD,EAAU;AAAEM,IAAAA,IAAF;AAAQH,IAAAA,IAAR;AAAcI,IAAAA;AAAd,GAAV,CAAP;AACD,CAhBM;;ACJP,MAAMC,QAAQ,GAAG,GAAjB;AAEA,MAAMC,UAAU,gBAAG,IAAIC,OAAJ,CAAQ;AACzBC,EAAAA,GAAG,EAAEH;AADoB,CAAR,CAAnB;AAIA,MAAMI,cAAc,gBAAGC,mBAAa,CAAMJ,UAAN,CAApC;AAMA,MAAaK,eAAe,GAAmC;MAAC;AAC9DC,IAAAA,GAD8D;AAE9DC,IAAAA;AAF8D;AAI9D,QAAMX,KAAK,GAAGY,aAAO,CAAC,MAAMF,GAAG,IAAIN,UAAd,EAA0B,CAACM,GAAD,CAA1B,CAArB;AACA,SACEG,4BAAA,CAACN,cAAc,CAACO,QAAhB;AAAyBd,IAAAA,KAAK,EAAEA;GAAhC,EAAwCW,QAAxC,CADF;AAGD,CARM;AAUP,MAAaI,iBAAiB,GAAG,MAAMC,gBAAU,CAACT,cAAD,CAA1C;;AChBP,MAAMU,UAAU,gBAAG,IAAIC,QAAJ,EAAnB;AACA,MAAMC,cAAc,gBAAG,IAAIC,qBAAJ,CAAeH,UAAf,CAAvB;AAEA,MAAMI,UAAU,gBAAGb,mBAAa,CAAa;AAC3Cc,EAAAA,GAAG,EAAEL,UADsC;AAE3CM,EAAAA,OAAO,EAAEJ;AAFkC,CAAb,CAAhC;AAUA,MAAaK,WAAW,GAAyB;MAAC;AAChDF,IAAAA,GADgD;AAEhDC,IAAAA,OAFgD;AAGhDZ,IAAAA;AAHgD;AAKhD,QAAMX,KAAK,GAAGY,aAAO,CACnB,OAAO;AACLU,IAAAA,GAAG,EAAEA,GAAG,IAAIL,UADP;AAELM,IAAAA,OAAO,EAAEA,OAAO,KAAKD,GAAG,GAAG,IAAIF,qBAAJ,CAAeE,GAAf,CAAH,GAAyBH,cAAjC;AAFX,GAAP,CADmB,EAKnB,CAACG,GAAD,EAAMC,OAAN,CALmB,CAArB;AAOA,SAAOV,4BAAA,CAACQ,UAAU,CAACP,QAAZ;AAAqBd,IAAAA,KAAK,EAAEA;GAA5B,EAAoCW,QAApC,CAAP;AACD,CAbM;AAeP,MAAac,aAAa,GAAG,MAAMT,gBAAU,CAACK,UAAD,CAAtC;;AC7BP,MAAMK,YAAY,gBAAG,IAAIC,2BAAJ,EAArB;AAEA,MAAMC,iBAAiB,gBAAG,IAAID,2BAAJ,EAA1B;AAEA,MAAME,cAAc,gBAAGrB,mBAAa,CAAiB;AACnDsB,EAAAA,KAAK,EAAEJ,YAD4C;AAEnDK,EAAAA,UAAU,EAAEH;AAFuC,CAAjB,CAApC;AAWA,MAAaI,eAAe,GAAmC;MAAC;AAC9DF,IAAAA,KAD8D;AAE9DC,IAAAA,UAF8D;AAG9DpB,IAAAA;AAH8D;AAK9D,QAAMX,KAAK,GAAGY,aAAO,CACnB,OAAO;AACLkB,IAAAA,KAAK,EAAEA,KAAK,IAAIJ,YADX;AAELK,IAAAA,UAAU,EAAEA,UAAU,IAAIH;AAFrB,GAAP,CADmB,EAKnB,CAACE,KAAD,EAAQC,UAAR,CALmB,CAArB;AAQA,SACElB,4BAAA,CAACgB,cAAc,CAACf,QAAhB;AAAyBd,IAAAA,KAAK,EAAEA;GAAhC,EAAwCW,QAAxC,CADF;AAGD,CAhBM;AAkBP,MAAasB,iBAAiB,GAAG,MAAMjB,gBAAU,CAACa,cAAD,CAA1C;;ACtCP,MAAMK,aAAa,gBAAG1B,mBAAa,CAAyB,IAAzB,CAAnC;AAMA,MAAa2B,cAAc,GAAkC;MAAC;AAC5DC,IAAAA,MAD4D;AAE5DzB,IAAAA;AAF4D;AAI5D,SACEE,4BAAA,CAACqB,aAAa,CAACpB,QAAf;AAAwBd,IAAAA,KAAK,EAAEoC,MAAM,IAAI;GAAzC,EACGzB,QADH,CADF;AAKD,CATM;AAWP,MAAa0B,gBAAgB,GAAG,MAAMrB,gBAAU,CAACkB,aAAD,CAAzC;;ACjBP,MAAMI,oBAAoB,gBAAG9B,mBAAa,CAAiB,EAAjB,CAA1C;AAMA,MAAa+B,qBAAqB,GAAyC;AAAA,MAAC;AAC1EC,IAAAA,MAD0E;AAE1E7B,IAAAA;AAF0E,GAAD;AAAA,SAIzEE,4BAAA,CAACyB,oBAAoB,CAACxB,QAAtB;AAA+Bd,IAAAA,KAAK,EAAEwC;GAAtC,EACG7B,QADH,CAJyE;AAAA,CAApE;AAQP,MAAa8B,uBAAuB,GAAG,MAAMzB,gBAAU,CAACsB,oBAAD,CAAhD;;MCVMI,aAAa,GAAG;AAC3B,QAAM;AAAEnB,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AAEA,SAAO1B,iBAAW,CACf4C,KAAD;AACE,QAAI,WAAWA,KAAf,EAAsB;AACpB,aAAOA,KAAK,CAACC,KAAb;AACD;;AAED,UAAMC,YAAY,GAChB,kBAAkBF,KAAlB,GAA0BA,KAAK,CAAC,cAAD,CAA/B,GAAkDA,KADpD;AAGA,UAAMG,OAAO,GAAGvB,OAAO,CAACuB,OAAxB;AACA,UAAM;AAAEC,MAAAA,CAAF;AAAKC,MAAAA;AAAL,QAAWC,uBAAc,CAC7BH,OAD6B,EAE7B,aAAaD,YAAb,GACI;AACEK,MAAAA,KAAK,EAAEL,YAAY,CAACM,OAAb,CAAqB,CAArB,EAAwBD,KADjC;AAEEE,MAAAA,KAAK,EAAEP,YAAY,CAACM,OAAb,CAAqB,CAArB,EAAwBC;AAFjC,KADJ,GAKIP,YAPyB,CAA/B;AASA,UAAMQ,aAAa,GAAG9B,OAAO,CAAC+B,sBAAR,CAA+BP,CAA/B,EAAkCC,CAAlC,CAAtB;AAEA,WAAOK,aAAP;AACD,GAtBe,EAuBhB,CAAC9B,OAAD,CAvBgB,CAAlB;AAyBD,CA5BM;;SCESgC;AACd,QAAM;AAAEjC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM+B,aAAa,GAAGd,aAAa,EAAnC;AAEA,QAAMe,MAAM,GAAG1D,iBAAW,CACvB2D,CAAD;AACEpC,IAAAA,GAAG,CAACqC,IAAJ,CAASD,CAAT,EAAYpC,GAAG,CAACsC,QAAhB;AACD,GAHuB,EAIxB,CAACtC,GAAD,CAJwB,CAA1B;AAOA,QAAMuC,MAAM,GAAG9D,iBAAW,CAAC,MAAM0D,MAAM,CAAC,CAAD,CAAb,EAAkB,CAACA,MAAD,CAAlB,CAA1B;AACA,QAAMK,OAAO,GAAG/D,iBAAW,CAAC,MAAM0D,MAAM,CAAC,CAAC,CAAF,CAAb,EAAmB,CAACA,MAAD,CAAnB,CAA3B;AAEA,QAAMM,SAAS,GAAGhE,iBAAW,CAC3B;QAAC;AAAE6D,MAAAA,QAAF;AAAYI,MAAAA,UAAZ;AAAwBC,MAAAA;AAAxB;;AACC,QAAIL,QAAQ,IAAII,UAAhB,EAA4B;AAC1B,YAAME,YAAY,GAAGN,QAAQ,GACxBA,QAAQ,CAACO,KAAT,CAAe,CAAf,CADwB,GAEzB7C,GAAG,CAACsC,QAFR;AAGAtC,MAAAA,GAAG,CAACyC,SAAJ,CAAcG,YAAd,EAA4BF,UAAU,IAAI1C,GAAG,CAAC0C,UAA9C;AACD;;AAED,QAAIC,MAAJ,EAAY;AACV,YAAM;AAAEG,QAAAA,IAAF;AAAQC,QAAAA,IAAR;AAAcC,QAAAA,IAAd;AAAoBC,QAAAA;AAApB,UAA6BN,MAAnC;AACA,YAAMO,IAAI,GAAG,IAAIC,SAAJ,CAAS,CAACJ,IAAD,EAAOC,IAAP,CAAT,EAAuB,CAACF,IAAD,EAAOG,IAAP,CAAvB,EAAqCjD,GAAG,CAACoD,GAAzC,CAAb;AACAnD,MAAAA,OAAO,IAAIA,OAAO,CAACoD,IAAR,CAAaH,IAAb,EAAmB,IAAnB,CAAX;AACD;AACF,GAd0B,EAe3B,CAAClD,GAAD,EAAMC,OAAN,CAf2B,CAA7B;AAkBA,QAAMqD,UAAU,GAAG7E,iBAAW,CAC3B4C,KAAD;AACErB,IAAAA,GAAG,CAACqC,IAAJ,CAAS,CAAT,EAAYH,aAAa,CAACb,KAAD,CAAzB;AACD,GAH2B,EAI5B,CAACa,aAAD,EAAgBlC,GAAhB,CAJ4B,CAA9B;AAOA,QAAMuD,eAAe,GAAG9E,iBAAW,CAChC+E,KAAD;AACE,UAAM;AAAEC,MAAAA;AAAF,QAAiBzD,GAAvB;AACA,QAAI0D,SAAS,GAAGD,UAAU,CAACE,MAAX,CAAkBC,IAAlB,CAAuB;AAAA,UAAC;AAAEC,QAAAA;AAAF,OAAD;AAAA,aAAgBA,MAAM,KAAKL,KAA3B;AAAA,KAAvB,CAAhB;AACA,UAAMd,UAAU,GAAGgB,SAAS,GAAGA,SAAS,CAAChB,UAAb,GAA0B1C,GAAG,CAAC0C,UAA1D;AAEA1C,IAAAA,GAAG,CAAC8D,oBAAJ,CAAyBpB,UAAzB,EAAqC1C,GAAG,CAACsC,QAAzC;AACD,GAPgC,EAQjC,CAACtC,GAAD,CARiC,CAAnC;AAWA,SAAO;AACLmC,IAAAA,MADK;AAELI,IAAAA,MAFK;AAGLC,IAAAA,OAHK;AAILc,IAAAA,UAJK;AAKLb,IAAAA,SALK;AAMLc,IAAAA;AANK,GAAP;AAQD;;AC7DM,MAAMQ,gBAAgB,GAAG;AAC9B,QAAM;AAAEtB,IAAAA;AAAF,MAAgBR,iBAAiB,EAAvC;AAEA,SAAOxD,iBAAW,CACfuF,OAAD;AACE,UAAMrB,MAAM,GAAGqB,OAAO,CAACrB,MAAR,EAAf;;AAEA,QAAIA,MAAJ,EAAY;AACVF,MAAAA,SAAS,CAAC;AAAEE,QAAAA;AAAF,OAAD,CAAT;AACD;AACF,GAPe,EAQhB,CAACF,SAAD,CARgB,CAAlB;AAUD,CAbM;;ACSA,MAAMwB,cAAc,GAAIC,QAAD;AAC5B,QAAM,CAAC7F,OAAD,EAAU;AAAEM,IAAAA,IAAF;AAAQH,IAAAA,IAAR;AAAcI,IAAAA;AAAd,GAAV,IAAmCT,aAAa,CAAC+F,QAAQ,CAAC9F,MAAV,CAAtD;AAEA,QAAM4F,OAAO,GAAGE,QAAQ,CAAC7F,OAAD,CAAxB;AAEA,QAAM8F,aAAa,GAAGJ,gBAAgB,EAAtC;AAEA,QAAM1B,IAAI,GAAG5D,iBAAW,CAAC,MAAM0F,aAAa,CAACH,OAAD,CAApB,EAA+B,CACrDG,aADqD,EAErDH,OAFqD,CAA/B,CAAxB;AAKAI,EAAAA,eAAS,CAAC;AACRxF,IAAAA,KAAK;AAEN,GAHQ,EAGN,CAACsF,QAAQ,CAAC9F,MAAV,CAHM,CAAT;AAKA,SAAO;AAAE4F,IAAAA,OAAF;AAAW3F,IAAAA,OAAX;AAAoBM,IAAAA,IAApB;AAA0BH,IAAAA,IAA1B;AAAgC6D,IAAAA;AAAhC,GAAP;AACD,CAlBM;;SC4ESgC,aAAa3F;AAC3B,SAAO4F,OAAO,CAAC5F,KAAK,IAAI,UAAUA,KAApB,CAAd;AACD;AAED,SAAgB6F,cACd7F;AAEA,SAAO4F,OAAO,CAAC5F,KAAK,IAAI,iBAAiBA,KAA3B,CAAd;AACD;;AC3FD,MAAM8F,eAAe,GAAe;AAClC;AACAC,EAAAA,SAAS,EAAE,IAFuB;AAGlC;AACAC,EAAAA,SAAS,EAAE,IAJuB;AAKlChG,EAAAA,KAAK,EAAE;AAL2B,CAApC;AAQA,IAAaiG,uBAAb;AAIE,mCAAYC,WAAZ;;;AAFiB,oBAAA,GAA4B,EAA5B;AAGf,SAAKA,SAAL,GAAiBA,WAAjB;AACA,UAAMC,eAAe,GAAG,IAAIC,8BAAJ,CAAyBF,WAAzB,EAAoClG,KAA5D;AAEA,SAAKqG,WAAL,GACEF,eAAe,YAAYG,KAA3B,GAAmC,EAAnC,GAAwCH,eAAe,CAACE,WAD1D;AAED;;AAVH;AAAA;AAAA,SAYE;AACE,aAAO,KAAKE,cAAL,CAAoBR,SAA3B;AACD;AAdH;AAAA;AAAA,SAgBE;AACE,UAAI,KAAKS,QAAL,EAAJ,EAAqB;AACnB,cAAM;AAAExG,UAAAA;AAAF,YAAY,KAAKuG,cAAvB;AAEA,eAAO,OAAOvG,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC,EAA3C;AACD;;AAEDyG,MAAAA,OAAO,CAACC,IAAR,gDAA0D,KAAKR,SAA/D;AAEA,aAAO,EAAP;AACD;AA1BH;AAAA;AAAA,SA4BE;AACE,UAAI,CAAC,KAAKS,OAAL,EAAL,EAAqB;AACnBF,QAAAA,OAAO,CAACC,IAAR,gDAC+C,KAAKR,SADpD;AAIA,eAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;;AAED,UAAI,KAAKG,WAAL,CAAiB3G,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAEM,UAAAA,KAAK,EAAE4G;AAAT,YAAkB,KAAKL,cAA7B;AACA,cAAM;AAAEvG,UAAAA,KAAK,EAAE6G;AAAT,YAAgB,KAAKC,eAA3B;AAEA,eAAO,CAACF,IAAD,EAAOC,EAAP,CAAP;AACD;;AAED,UAAI,KAAKR,WAAL,CAAiB3G,MAAjB,KAA4B,CAAhC,EAAmC;AACjC,cAAM;AAAEsG,UAAAA,SAAF;AAAahG,UAAAA;AAAb,YAAuB,KAAKuG,cAAlC;AACA,cAAMQ,MAAM,GAAGf,SAAS,KAAKgB,mBAAS,CAACC,IAAvC;AAEA,eAAO,CAACF,MAAM,GAAG/G,KAAH,GAAW,IAAlB,EAAwB+G,MAAM,GAAG,IAAH,GAAU/G,KAAxC,CAAP;AACD;;AAED,aAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;AApDH;AAAA;AAAA,SAsDE;AACE,aAAO,KAAKwG,QAAL;;AAAA;;AAAP;AAGD;AA1DH;AAAA;AAAA,WA4DS;AACL,aAAO,KAAKD,cAAL,CAAoBP,SAApB,KAAkCgB,mBAAS,CAACE,IAAnD;AACD;AA9DH;AAAA;AAAA,WAgES;AACL,aAAO,CACLF,mBAAS,CAACC,IADL,EAELD,mBAAS,CAACG,KAFL,EAGLH,mBAAS,CAACI,IAHL,EAILJ,mBAAS,CAACK,KAJL,EAKLC,QALK,CAKI,KAAKf,cAAL,CAAoBP,SALxB,CAAP;AAMD;AAvEH;AAAA;AAAA,WAyES;AACL,aAAO,KAAKE,SAAZ;AACD;AA3EH;AAAA;AAAA,SA6EE;AACE,aAAO,KAAKG,WAAL,CAAiB3G,MAAjB,GAA0B,CAA1B,GAA8B,KAAK2G,WAAL,CAAiB,CAAjB,CAA9B,GAAoDP,eAA3D;AACD;AA/EH;AAAA;AAAA,SAiFE;AACE,aAAO,KAAKO,WAAL,CAAiB3G,MAAjB,GAA0B,CAA1B,GAA8B,KAAK2G,WAAL,CAAiB,CAAjB,CAA9B,GAAoDP,eAA3D;AACD;AAnFH;;AAAA;AAAA;;ACdO,MAAMyB,mBAAmB,GAAG,GAA5B;AAEP,AAAO,MAAMC,gBAAgB,GAC3BC,SAD8B,IAG9BA,SAAS,CAACC,KAAV,CAAgBH,mBAAhB,CAHK;AAKP,AAAO,MAAMI,gBAAgB,GAC3BC,KAD8B,IAG9BA,KAAK,CAACC,IAAN,CAAWN,mBAAX,CAHK;;SCTSO,SAAY9H;AAC1B,SAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,KAAK,IAAvC,IAA+C,CAAC+H,KAAK,CAACC,OAAN,CAAchI,KAAd,CAAvD;AACD;;MCiBYiI,sBAAsB,GACjCjI,KADoC,IAGpC4F,OAAO,CACLkC,QAAQ,CAAC9H,KAAD,CAAR,IACG,CAAAA,KAAwD,QAAxD,YAAAA,KAAwD,CAAEkI,IAA1D,MACC,aAHC,CAHF;AASP,MAAaC,qBAAqB,GAChCnI,KADmC,IAGnC4F,OAAO,CACLkC,QAAQ,CAAC9H,KAAD,CAAR,IACG,CAAAA,KAAuD,QAAvD,YAAAA,KAAuD,CAAEkI,IAAzD,MACC,YAHC,CAHF;AASP,MAAaE,iBAAiB,GAC5BpI,KAD+B;AAG/B,MAAIiI,sBAAsB,CAACjI,KAAD,CAAtB,IAAiCmI,qBAAqB,CAACnI,KAAD,CAA1D,EAAmE;AACjE,WAAOA,KAAK,CAACqI,YAAb;AACD;;AAED,SAAOrI,KAAP;AACD,CARM;AAUP,MAAasI,qBAAqB,GAChCC,aADmC,IAEhC,CACHnG,MADG,EAEHqF,SAFG;AAIH,QAAMG,KAAK,GAAGG,KAAK,CAACC,OAAN,CAAcP,SAAd,IACVA,SADU,GAEVD,gBAAgB,CAACC,SAAD,CAFpB;AAGA,QAAM,CAACe,QAAD,EAAW,GAAGC,QAAd,IAA0Bb,KAAhC;;AAGA,QAAMc,UAAU,GAAGtG,MAAM,CAACoG,QAAD,CAAzB;;AAEA,MAAIC,QAAQ,CAAC/I,MAAb,EAAqB;AACnB,UAAMiJ,QAAQ,GAAGL,qBAAqB,CAACC,aAAD,CAAtC;AAEA,wBACKnG,MADL;AAEE,OAACoG,QAAD,GAAYG,QAAQ,CAACD,UAAD,EAAaD,QAAb,CAAR,IAAkCC;AAFhD;AAID;;AAED,sBACKtG,MADL;AAEE,KAACoG,QAAD,GAAYD,aAAa,CAACG,UAAD,CAAb,IAA6BA;AAF3C;AAID,CA3BM;AA6BP,MAAaE,wBAAwB,gBAAGN,qBAAqB,CAC3DF,iBAD2D,CAAtD;AAIP,MAAaS,iBAAiB,GAAG,CAC/BzG,MAD+B,EAE/B0G,IAF+B,EAG/B9I,KAH+B,KAIzBsI,qBAAqB,CAAC,MAAMtI,KAAP,CAArB,CAAmCoC,MAAnC,EAA2C0G,IAA3C,CAJD;AAMP,SAAgBC,oBACd3G,QACA0G,MACA9I;AAEA,MAAI8I,IAAI,KAAK,QAAb,EAAuB;AACrB,WAAO9I,KAAP;AACD;;AAED,SAAO6I,iBAAiB,CAACzG,MAAD,EAAS0G,IAAT,EAAe9I,KAAf,CAAxB;AACD;;MC7CYgJ,eAAe,GAC1Bd,IAD6B,IAEzB9F,MAAD,IACHA,MAAM,IAAIA,MAAM,CAAC8F,IAAP,KAAgBA,IAHrB;;MCxBMe,kBAAkB,gBAAGD,eAAe,CAC/C,kBAD+C,CAA1C;AAGP,MAAaE,oBAAoB,gBAAGF,eAAe,CACjD,oBADiD,CAA5C;AAGP,MAAaG,qBAAqB,gBAAGH,eAAe,CAClD,qBADkD,CAA7C;AAIP,MAAaI,aAAa,GAAIhH,MAAD,IAC3BwD,OAAO,CACLxD,MAAM,KACH6G,kBAAkB,CAAC7G,MAAD,CAAlB,IACC8G,oBAAoB,CAAC9G,MAAD,CADrB,IAEC+G,qBAAqB,CAAC/G,MAAD,CAHnB,CADD,CADF;;;ACnCP,MAWaiH,qBAAqB,GAChCC,YADmC,KAEV;AACzBpB,EAAAA,IAAI,EAAE,iBADmB;AAEzBoB,EAAAA;AAFyB,CAFU,CAA9B;AAOP,MAAaC,eAAe,GAAInH,MAAD;AAC7B,MAAI,CAACA,MAAD,IAAW,CAACoH,iBAAiB,CAACpH,MAAD,CAAjC,EAA2C,OAAO,EAAP;AAE3C,SAAOA,MAAM,CAACkH,YAAP,IAAuB,EAA9B;AACD,CAJM;AAMP,MAAaG,aAAa,GACxBrH,MAD2B;AAG3B,QAAMkH,YAAY,GAAGC,eAAe,CAACnH,MAAD,CAApC;AAEA,SAAO;AACL;AACAA,IAAAA,MAAM,EAAEkH,YAAY,CAACpE,IAAb,CAAkBwE,cAAlB,CAFH;AAGLC,IAAAA,KAAK,EAAEL,YAAY,CAACpE,IAAb,CAAkBkE,aAAlB,KAAoC,IAHtC;AAILQ,IAAAA,MAAM,EAAEN,YAAY,CAACpE,IAAb,CAAkB2E,cAAlB,KAAqC;AAJxC,GAAP;AAMD,CAXM;AAaP,MAAaC,YAAY,GAAIC,KAAD;AAC1B;AACA,MAAIP,iBAAiB,CAACO,KAAK,CAAC3H,MAAP,CAArB,EAAqC;AACnC,wBACK2H,KADL,EAEKN,aAAa,CAACM,KAAK,CAAC3H,MAAP,CAFlB;AAGE;AACAzB,MAAAA,QAAQ,EAAEoJ,KAAK,CAACpJ,QAAN,IAAkBoJ,KAAK,CAACpJ,QAAN,CAAeW,GAAf,CAAmBwI,YAAnB;AAJ9B;AAMD;;;AAGD,SAAQC,KAAK,IAAI,EAAjB;AACD,CAbM;AAeP,MAAaC,SAAS,GAAID,KAAD;AACvB,QAAM;AAAEE,IAAAA,WAAF;AAAeN,IAAAA,KAAf;AAAsBvH,IAAAA,MAAtB;AAA8BwH,IAAAA,MAA9B;AAAsCjJ,IAAAA;AAAtC,MAA+DoJ,KAArE;AAAA,QAAyDG,OAAzD,iCAAqEH,KAArE;;AACA,QAAMT,YAAY,GAAG,CAAC,CAACW,WAAD,IAAgBN,KAAjB,EAAwBC,MAAxB,EAAgCO,MAAhC,CAAuCvE,OAAvC,CAArB;AAEA,sBACKsE,OADL;AAEE9H,IAAAA,MAAM,EAAEkH,YAAY,CAAC5J,MAAb;AAEJ2J,IAAAA,qBAAqB,CAAC,CAACjH,MAAD,EAAS,GAAGkH,YAAZ,CAAD,CAFjB,GAGJlH,MALN;AAME;AACAzB,IAAAA,QAAQ,EAAEA,QAAQ;AAEdA,IAAAA,QAAQ,CAACW,GAAT,CAAa8I,UAAU,IACrBJ,SAAS,cAAMI,UAAN;AAAkBH,MAAAA,WAAlB;AAA+BN,MAAAA;AAA/B,OADX,CAFc,GAKdhJ;AAZN;AAcD,CAlBM;;MCsDM0J,aAAa,gBAAGrB,eAAe,CAAc,mBAAd,CAArC;AAEP,MAAasB,cAAc,gBAAGtB,eAAe,CAC3C,mBAD2C,CAAtC;AAIP,MAAauB,mBAAmB,gBAAGvB,eAAe,CAChD,wBADgD,CAA3C;AAIP,MAAawB,mBAAmB,gBAAGxB,eAAe,CAChD,kBADgD,CAA3C;AAIP,MAAayB,wBAAwB,gBAAGzB,eAAe,CAA2B,wBAA3B,CAAhD;AAEP,MAAa0B,eAAe,gBAAG1B,eAAe,CAAgB,eAAhB,CAAvC;AAEP,MAAa2B,gBAAgB,gBAAG3B,eAAe,CAC7C,gBAD6C,CAAxC;AAIP,MAAa4B,sBAAsB,gBAAG5B,eAAe,CACnD,sBADmD,CAA9C;AAIP,MAAa6B,iBAAiB,GAC5BzI,MAD+B,IAG/BwD,OAAO,CACLxD,MAAM,KAAKuI,gBAAgB,CAACvI,MAAD,CAAhB,IAA4BwI,sBAAsB,CAACxI,MAAD,CAAvD,CADD,CAHF;AAOP,MAAaoH,iBAAiB,gBAAGR,eAAe,CAC9C,iBAD8C,CAAzC;AAGP,MAAaa,cAAc,gBAAGb,eAAe,CAAe,cAAf,CAAtC;AAEP,MAAa8B,aAAa,GAAI1I,MAAD,IAC3BwD,OAAO,CACLxD,MAAM,KAAKmI,mBAAmB,CAACnI,MAAD,CAAnB,IAA+BoI,mBAAmB,CAACpI,MAAD,CAAvD,CADD,CADF;AAKP,MAAa2I,sBAAsB,GACjC3I,MADoC,IAEVwD,OAAO,CAACxD,MAAM,IAAI,WAAWA,MAAtB,CAF5B;AAIP,MAAa4I,eAAe,GAC1B5I,MAD6B,IAEGwD,OAAO,CAACxD,MAAM,IAAI,UAAUA,MAArB,CAFlC;AAIP,MAAa6I,oBAAoB,GAC/B7I,MADkC,IAGlCwD,OAAO,CAACxD,MAAM,KAAKsI,eAAe,CAACtI,MAAD,CAAf,IAA2ByI,iBAAiB,CAACzI,MAAD,CAAjD,CAAP,CAHF;AAKP,MAAa8I,wBAAwB,GACnC9I,MADsC,IAGrCA,MAAM,CAAC+I,SAAP,KAAqB,IAArB,IAA6B/I,MAAM,CAACgJ,MAAP,KAAkB,IAAhD,IACChJ,MAAM,CAACiJ,MAAP,IAAiBjJ,MAAM,CAACiJ,MAAP,CAAcnD,IAAd,KAAuB,OAJpC;AAMP,MAAawB,cAAc,GACzBtH,MAD4B,IAG5BwD,OAAO,CACLxD,MAAM,IACJ,CAACgH,aAAa,CAAChH,MAAD,CADhB,IAEE,CAACoH,iBAAiB,CAACpH,MAAD,CAFpB,IAGE,CAACyH,cAAc,CAACzH,MAAD,CAJZ,CAHF;AAUP,MAAakJ,cAAc,gBAAGtC,eAAe,CAAiB,QAAjB,CAAtC;AAEP,MAAauC,gBAAgB,gBAAGvC,eAAe,CAAiB,gBAAjB,CAAxC;AAEP,MAAawC,eAAe,gBAAGxC,eAAe,CAAoB,SAApB,CAAvC;AAEP,MAAayC,kBAAkB,GAAG,CAACrJ,MAAD,EAA0BqF,SAA1B;AAChC,SAAO+D,eAAe,CAACpJ,MAAD,CAAf,IAA2BqF,SAAS,KAAK,WAAhD;AACD,CAFM;AAIP,MAAaiE,kBAAkB,GAAG,SAArBA,kBAAqB,CAACtJ,MAAD,EAA0BuJ,cAA1B;;;MAA0BA;AAAAA,IAAAA,iBAAiB;;;AAC3E,QAAMC,SAAS,GAAGpC,iBAAiB,CAACpH,MAAD,CAAjB,qBAAmDqH,aAAa,CAACrH,MAAD,CAAhE,qBAAmD,eAAuBA,MAA1E,GAAmFA,MAArG;AAEA,SAAOuJ,cAAc,IAAIH,eAAe,CAACI,SAAD,CAAjC,GACDA,SAA+B,CAACC,kBAD/B,GAEHD,SAFJ;AAGD,CANM;;MC5KME,YAAY,gBAAG9C,eAAe,CAAa,OAAb,CAApC;AACP,MAAa+C,cAAc,gBAAG/C,eAAe,CAAe,SAAf,CAAtC;AACP,MAAagD,aAAa,gBAAGhD,eAAe,CAAc,QAAd,CAArC;AACP,MAAaiD,YAAY,gBAAGjD,eAAe,CAAa,OAAb,CAApC;AAEP,MAAakD,wBAAwB,GACnC9J,MADsC,IAGtCwD,OAAO,CAACxD,MAAM,IAAIsI,eAAe,CAACtI,MAAD,CAAzB,IAAqC2J,cAAc,CAAC3J,MAAM,CAAC+J,IAAR,CAApD,CAHF;AAKP,MAAaC,sBAAsB,GACjChK,MADoC,IAGpCwD,OAAO,CAACxD,MAAM,IAAIsI,eAAe,CAACtI,MAAD,CAAzB,IAAqC0J,YAAY,CAAC1J,MAAM,CAAC+J,IAAR,CAAlD,CAHF;;MCiCME,YAAY,GACvBC,KAD0B,IAG1B1G,OAAO,CAAC0G,KAAK,IAAIA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACC,IAAxC,CAHF;AAKP,MAAaC,kBAAkB,GAC7BH,KADgC,IAGhCA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACG,YAA9B,IACAJ,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACI,WAD9B,IAEAL,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACK,YALzB;AAOP,MAAaC,gBAAgB,GAC3BP,KAD8B,IAG9BA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACO,KAA9B,IACAR,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACI,WAJzB;AAMP,MAAaI,iBAAiB,GAC5BT,KAD+B,IAG/BA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACS,MAA9B,IACAV,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACK,YAJzB;AAMP,MAAaK,iBAAiB,GAC5BX,KAD+B,IAG/BA,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACW,MAA9B,IACAZ,KAAK,CAACpE,IAAN,KAAeqE,kBAAc,CAACG,YAJzB;;MCvEMS,cAAc,GAAIC,MAAD,IAC5BA,MAAM,IACN,CAACnF,sBAAsB,CAACmF,MAAM,CAAC,CAAD,CAAP,CADvB,IAEA,CAACnF,sBAAsB,CAACmF,MAAM,CAAC,CAAD,CAAP,CAHlB;AAKP,MAAaC,kBAAkB,GAC7BjL,MADgC,IAEFwD,OAAO,CAACxD,MAAM,IAAI,YAAYA,MAAvB,CAFhC;;MCwBMkL,sBAAsB,GACjCC,cADoC,IAEP,OAAOA,cAAP,KAA0B,QAFlD;AAIP,MAAaC,sBAAsB,GACjCD,cADoC,IAGpC,OAAOA,cAAP,KAA0B,QAA1B,IAAsC,OAAOA,cAAP,KAA0B,QAH3D;AAKP,MAAaE,sBAAsB,GACjCF,cADoC,IAEE,CAACC,sBAAsB,CAACD,cAAD,CAFxD;;MCvCMG,OAAO,GAAI1N,KAAD,IAAmC,YAAYA,KAA/D;;ICNM2N,YAAb;AAIE,wBAAY5D,KAAZ;;;AACE,SAAKA,KAAL,GAAaD,YAAY,CAACC,KAAD,CAAzB;AACA,SAAK6D,qBAAL,GAA6B,IAAIC,qBAAJ,CAA0B,KAAK9D,KAA/B,CAA7B;AACD;;AAPH;AAAA;AAAA,WASS;AACL,aAAOC,SAAS,CAAC,KAAKD,KAAN,CAAhB;AACD;AAXH;AAAA;AAAA,WAaS;AACL,aAAO,CAAC,EACN,KAAKA,KAAL,CAAWH,MAAX,IACA,CAAC,KAAKG,KAAL,CAAWpJ,QAAX,IAAuB,EAAxB,EAA4BmN,IAA5B,CAAiC/D,KAAK,IAAIA,KAAK,CAACH,MAAhD,CAFM,CAAR;AAID;AAlBH;AAAA;AAAA,SAoBE;AACE,aAAO,KAAKG,KAAL,CAAW3H,MAAlB;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,aAAO,KAAK2H,KAAL,CAAWH,MAAlB;AACD;AA1BH;AAAA;AAAA,SA2BE;AACE,aAAO,KAAKG,KAAL,CAAWJ,KAAlB;AACD;AA7BH;AAAA;AAAA,SA+BE;AACE,aAAO,KAAKI,KAAL,CAAWpJ,QAAlB;AACD;AAjCH;AAAA;AAAA,SAmCE;AACE,aAAO,KAAKoJ,KAAL,CAAWgE,KAAlB;AACD;AArCH;AAAA;AAAA,SAuCE;AACE,aAAO,KAAKhE,KAAL,CAAW7D,SAAlB;AACD;AAzCH;AAAA;AAAA,SA2CE;AACE,aAAO,KAAK6D,KAAL,CAAWE,WAAlB;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAM;AAAE+D,QAAAA,aAAF;AAAiBC,QAAAA;AAAjB,UAAmC,KAAKlE,KAA9C;AAEA,aAAOiE,aAAa,KAAK,KAAK,CAAvB,IAA4BC,aAAa,KAAK,KAAK,CAAnD,GACH,IADG,GAEH,CAACD,aAAD,EAAgBC,aAAhB,CAFJ;AAGD;AArDH;;AAAA;AAAA;;ACcA,MAAMC,qBAAqB,GAAG,CAC5BX,cAD4B,EAE5BQ,KAF4B,EAG5B7H,SAH4B;AAK5BqH,EAAAA,cAL4B;AAM5BQ,EAAAA;AAN4B,GAOxB7H,SAAS,CAACM,QAAV,KACA;AACE2H,EAAAA,WAAW,EAAEjI,SAAS,CAACiI;AADzB,CADA,GAIA;AACEvH,EAAAA,IAAI,EAAEV,SAAS,CAACkI,KAAV,CAAgB,CAAhB,CADR;AAEEvH,EAAAA,EAAE,EAAEX,SAAS,CAACkI,KAAV,CAAgB,CAAhB;AAFN,CAXwB,CAA9B;;AAiBA,MAAMC,cAAc,GAAyB;AAC3CC,EAAAA,YAAY,EAAE,EAD6B;AAE3C;AACAjG,EAAAA,YAAY,EAAE;AAH6B,CAA7C;AAMA,AAAO,MAAMkG,gBAAgB,GAAG,SAAnBA,gBAAmB,CAC9BC,MAD8B,EAE9B/G,SAF8B,EAG9BgH,MAH8B;AAAA,MAG9BA,MAH8B;AAG9BA,IAAAA,MAH8B,GAGCJ,cAHD;AAAA;;AAAA;AAM9BG,IAAAA,MAAM,CAACE,MAAP;AAEE,KAACC,cAAD,EAAyC3O,KAAzC;AACE,YAAM4O,uBAAuB,GAAG,IAAI3I,uBAAJ,CAC9BjG,KAAK,CAACkG,SAAN,IAAmB,EADW,CAAhC;AAGA,YAAM2I,mBAAmB,GAAGX,qBAAqB,CAC/CR,OAAO,CAAC1N,KAAD,CAAP,GAAiBA,KAAK,CAACoC,MAAvB,GAAgCpC,KAAK,CAACA,KADS;AAG/CA,MAAAA,KAAK,CAAC+N,KAHyC,EAI/Ca,uBAJ+C,CAAjD;AAOAD,MAAAA,cAAc,CAACH,MAAf,CAAsBM,IAAtB,CAA2BD,mBAA3B;AAEA,0BACKF,cADL;AAEEzG,QAAAA,IAAI,EAAEyG,cAAc,CAACzG,IAAf,IAAuB0G,uBAAuB,CAAC1G,IAFvD;AAGEnC,QAAAA,SAAS,EACP4I,cAAc,CAAC5I,SAAf,IAA4B6I,uBAAuB,CAACG;AAJxD;AAMD,KArBH,eAuBON,MAvBP;AAwBI1I,MAAAA,SAAS,EAAE,IAxBf;AAyBI0B,MAAAA,SAzBJ;AA0BIS,MAAAA,IAAI,EAAE,IA1BV;AA2BIsG,MAAAA,MAAM,EAAE;AA3BZ;AAN8B;AAAA,CAAzB;AAqCP,AAAO,MAAMQ,kBAAkB,GAAG,SAArBA,kBAAqB,CAChC5M,MADgC,EAEhC6M,WAFgC;AAAA,MAEhCA,WAFgC;AAEhCA,IAAAA,WAFgC,GAEiB,EAFjB;AAAA;;AAAA,SAIhCC,MAAM,CAACC,OAAP,CAAe/M,MAAf,EAAuBsM,MAAvB,CACE,CAACU,eAAD;QAAkB,CAAC3H,SAAD,EAAY8F,cAAZ;AAChB,UAAM8B,UAAU,GACdtE,sBAAsB,CAAC3I,MAAD,CAAtB,IAAkCqF,SAAS,KAAK,QADlD;AAEA,UAAM6H,IAAI,GAAG,CAACxH,QAAQ,CAACyF,cAAD,CAAT,IAA6B8B,UAA1C;;AAEA,QAAIC,IAAJ,EAAU;AACR,aAAOF,eAAP;AACD;;AAED,QAAI,CAACnH,sBAAsB,CAACsF,cAAD,CAA3B,EAA6C;AAC3C,aAAO,CACL,GAAG6B,eADE;AAGL,SAAGJ,kBAAkB,CAAC5M,MAAM,CAACqF,SAAD,CAAP,EAAoB,CACvC,GAAGwH,WADoC,EAEvCxH,SAFuC,CAApB,CAHhB,CAAP;AAQD;;AAED,UAAMkH,cAAc,GAAGJ,gBAAgB,CACrChB,cAAc,CAACiB,MADsB,EAErC7G,gBAAgB,CAAC,CACf,GAAGsH,WADY,EAEfxH,SAFe,CAAD,CAFqB,EAMrC;AACE;AACA6G,MAAAA,YAAY,EAAEf,cAAc,CAACQ,KAF/B;AAGE1F,MAAAA,YAAY,EAAEkF,cAAc,CAAClF;AAH/B,KANqC,CAAvC;AAaA,WAAO,CAAC,GAAG+G,eAAJ,EAAqBT,cAArB,CAAP;AACD,GAnCH,EAoCE,EApCF,CAJgC;AAAA,CAA3B;;IC5EMd,qBAAb;AAGE,iCAAoB9D,KAApB;;;AAAoB,cAAA,GAAAA,KAAA;AAFZ,wBAAA,GAA4C,EAA5C;AAGN,SAAKwF,sBAAL;AACD;;AALH;AAAA;AAAA,SAOE;AACE,aAAO,KAAKH,eAAZ;AACD;AATH;AAAA;AAAA,WAWS,cAAKI,SAAL;AACL,WAAK,MAAMb,cAAX,IAA6B,KAAKS,eAAlC,EAAmD;AACjD,YAAII,SAAS,CAACb,cAAD,CAAb,EAA+B;AAC7B,iBAAOA,cAAP;AACD;AACF;;AAED,aAAO,IAAP;AACD;AAnBH;AAAA;AAAA,WAqBS,gBAAOc,QAAP;AACL,aAAO,KAAKL,eAAL,CAAqBjF,MAArB,CAA4BsF,QAA5B,CAAP;AACD;AAvBH;AAAA;AAAA,WAyBS,aACLA,QADK;AAGL,aAAO,KAAKL,eAAL,CAAqB9N,GAArB,CAAyBmO,QAAzB,CAAP;AACD;AA7BH;AAAA;AAAA,WA+BS,gBACLA,QADK,EAELC,OAFK;AAIL,aAAO,KAAKN,eAAL,CAAqBV,MAArB,CAA4Be,QAA5B,EAAsCC,OAAtC,CAAP;AACD;AApCH;AAAA;AAAA,WAsCS;AACL,aAAO,KAAKN,eAAL,CAAqB1P,MAArB,GAA8B,CAArC;AACD;AAxCH;AAAA;AAAA,WA0CU;AACN,UAAI,KAAKqK,KAAL,CAAWpJ,QAAX,IAAuB,KAAKoJ,KAAL,CAAWpJ,QAAX,CAAoBjB,MAA/C,EAAuD;AACrD,aAAK0P,eAAL,CAAqBN,IAArB,CACEP,gBAAgB,CAAC,KAAKxE,KAAL,CAAWpJ,QAAZ,EAAsB,QAAtB,CADlB;AAGD;;AAED,UAAI,KAAKoJ,KAAL,CAAW3H,MAAf,EAAuB;AACrB,aAAKgN,eAAL,CAAqBN,IAArB,CAA0B,GAAGE,kBAAkB,CAAC,KAAKjF,KAAL,CAAW3H,MAAZ,CAA/C;AACD;AACF;AApDH;;AAAA;AAAA;;MCCauN,UAAU,GACrBvN,MADwB,IAGxB8M,MAAM,CAACC,OAAP,CAAe/M,MAAf,EAAuBsM,MAAvB,CAA8B,CAACkB,UAAD;MAAa,CAACnI,SAAD,EAAY8F,cAAZ;AACzC,MAAIsC,MAAM,GAAG9H,KAAK,CAACC,OAAN,CAAcuF,cAAd,IACTA,cAAc,CAACjM,GAAf,CAAmB8G,iBAAnB,CADS,GAETA,iBAAiB,CAACmF,cAAD,CAFrB;;AAIA,MAAIzF,QAAQ,CAAC+H,MAAD,CAAZ,EAAsB;AACpB,wBACKD,UADL;AAEE,OAACnI,SAAD,GAAakI,UAAU,CAACpC,cAAD;AAFzB;AAID;;AAED,sBACKqC,UADL;AAEE,KAACnI,SAAD,GAAaoI;AAFf;AAID,CAhBD,EAgBG,EAhBH,CAHK;;ACHA,MAAMC,gBAAgB,GAAG,IAAzB;AAEP,AAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,EAAE,EAAE,EADmB;AAEvBC,EAAAA,EAAE,EAAE;AAFmB,CAAlB;AAKPC,IAAI,CACDC,GADH,CACOC,6BADP,EAEGC,IAFH,CAEQ;AACJC,EAAAA,WAAW,EAAER,gBADT;AAEJS,EAAAA,EAAE,EAAErB,MAAM,CAACsB,IAAP,CAAYT,SAAS,CAACD,gBAAD,CAArB,CAFA;AAGJW,EAAAA,aAAa,EAAE;AACbC,IAAAA,WAAW,EAAE;AADA,GAHX;AAMJX,EAAAA,SANI;AAOJY,EAAAA,aAAa,EAAEzB,MAAM,CAACsB,IAAP,CAAYT,SAAZ;AAPX,CAFR;;MCPaa,eAAe,GAAG,CAAC5Q,KAAD,EAAoB6Q,KAApB;;;AAC7B,QAAMC,QAAQ,GAAGlL,OAAO,CAAC,qBAAA5F,KAAK,CAAC+F,SAAN,sCAAiBmC,IAAjB,MAA0B,QAA3B,CAAxB;AACA,QAAM6I,MAAM,GAAGnL,OAAO,CAAC,sBAAA5F,KAAK,CAAC+F,SAAN,uCAAiBmC,IAAjB,MAA0B,UAA3B,CAAtB;AACA,QAAM;AAAEtB,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAemK,cAAc,CAAChR,KAAD,EAAQ8Q,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;;AAEA,MAAIjK,IAAI,KAAK,IAAb,EAAmB;AACjB,WAAUC,EAAV,UAAgBkK,MAAM,GAAGb,IAAI,CAACe,CAAL,CAAO,WAAP,EAAoB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAApB,CAAH,GAA0CL,IAAI,CAACe,CAAL,CAAO,SAAP,EAAkB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAlB,CAAhE;AACD;;AAED,MAAI1J,EAAE,KAAK,IAAX,EAAiB;AACf,YAAUkK,MAAM,GAAGb,IAAI,CAACe,CAAL,CAAO,OAAP,EAAgB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAhB,CAAH,GAAsCL,IAAI,CAACe,CAAL,CAAO,MAAP,EAAe;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAf,CAAtD,UAAyF3J,IAAzF;AACD;;AAED,SAAOA,IAAI,KAAKC,EAAT,QAAiBD,IAAjB,GAA6BA,IAA7B,WAAuCC,EAA9C;AACD,CAdM;;AAgBP,SAASmK,cAAT,OAEEF,QAFF,EAGEC,MAHF,EAIEF,KAJF;MACE;AAAEjK,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EAAEA,IAAI,KAAK,IAAT,IAAiBiK,KAAK,KAAK,CAA3B,GACHE,MAAM,GAAGnK,IAAH,GAAWkK,QAAQ,GAAG,CAAClK,IAAJ,GAAW,CAACA,IAAD,GAAQ,CADzC,GAC+CA,IAFhD;AAGLC,IAAAA;AAHK,GAAP;AAKD;;MC5BYqK,WAAW,GAAIC,WAAD,IACzBA,WAAW,GAAG,IAAIC,WAAJ,CAAUD,WAAV,EAAuBE,QAAvB,CAAgC,KAAhC,CAAH,GAA4CC,SADlD;;ACFP;AACA,MAAaC,cAAc,GAAG;AAC5BC,EAAAA,gBAAgB,EAAE,IADU;AAE5BC,EAAAA,gBAAgB,EAAE;AAFU,CAAvB;;SCDSC,MAAMC,KAAaC,KAAaC;AAC9C,SAAOC,IAAI,CAACF,GAAL,CAASE,IAAI,CAACD,GAAL,CAASF,GAAT,EAAcC,GAAd,CAAT,EAA6BC,GAA7B,CAAP;AACD;;ACFD;AACA,MAyBaE,eAAe,GAAa,EAAlC;AAEP,MAAaC,sBAAsB,GAAsB;AACvDjI,EAAAA,KAAK;;AADkD;AAEvD7B,EAAAA,IAAI,EAAE,OAFiD;AAGvD+J,EAAAA,SAAS,EAAEF;AAH4C,CAAlD;AAKP,MAAaG,kBAAkB,GAAwB,CACrDF,sBADqD,EAErD;AACEjI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAFqD,EAOrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAPqD,EAYrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAHb,CAZqD,EAiBrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB;AAHb,CAjBqD,EAsBrD;AACElI,EAAAA,KAAK;;AADP;AAEE7B,EAAAA,IAAI,EAAE,QAFR;AAGE+J,EAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ;AAHb,CAtBqD,CAAhD;;AA6BP,MAAME,kBAAkB,GAAG,CACzBC,OADyB,EAEzBhF,MAFyB,EAGzBiF,MAHyB;AAKzB,MAAI,CAACD,OAAD,IAAY,CAACA,OAAO,CAAC1S,MAAzB,EAAiC,OAAO,EAAP;AAEjC,QAAM4S,UAAU,GAAG,EAAnB;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,OAAO,CAAC1S,MAA5B,EAAoC6S,CAAC,EAArC,EAAyC;AACvC,QAAIA,CAAC,GAAG,CAAR,EAAW;AACTD,MAAAA,UAAU,CAACxD,IAAX,CAAgB,GAAGuD,MAAM,CAAC,CAACD,OAAO,CAACG,CAAC,GAAG,CAAL,CAAR,EAAiBH,OAAO,CAACG,CAAD,CAAxB,CAAD,EAA+BnF,MAA/B,CAAzB;AACD;AACF;;AAED,SAAOkF,UAAP;AACD,CAhBD;;AAkBA,MAAaE,WAAW,GAAG,CAACJ,OAAD,EAAoBK,KAApB,KACzBN,kBAAkB,CAChBC,OADgB,EAEhBV,KAAK,CACHtJ,iBAAiB,CAACqK,KAAD,CADd,EAEHlB,cAAc,CAACC,gBAFZ,EAGHD,cAAc,CAACE,gBAHZ,CAFW,EAOhB,OAAgBrE,MAAhB;AAAA,MAAC,CAAC1N,MAAD,EAASgT,GAAT,CAAD;AAAA,SAA2B,CAAChT,MAAM,GAAG0N,MAAV,EAAkBsF,GAAG,GAAGtF,MAAxB,CAA3B;AAAA,CAPgB,CADb;AAWP,MAAauF,UAAU,GAAG,CAACP,OAAD,EAAoBK,KAApB,KACxBN,kBAAkB,CAChBC,OADgB,EAEhBV,KAAK,CACHtJ,iBAAiB,CAACqK,KAAD,CADd,EAEHlB,cAAc,CAACC,gBAFZ,EAGHD,cAAc,CAACE,gBAHZ,CAFW,EAOhB,QAAgBrE,MAAhB;AAAA,MAAC,CAAC1N,MAAD,EAASgT,GAAT,CAAD;AAAA,SAA2B,CACzBZ,IAAI,CAACc,KAAL,CAAWlT,MAAM,GAAGoS,IAAI,CAACD,GAAL,CAAS,CAAT,EAAYC,IAAI,CAACF,GAAL,CAASxE,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAApB,CADyB,EAEzB0E,IAAI,CAACc,KAAL,CAAWF,GAAG,GAAG,CAAN,GAAUZ,IAAI,CAACD,GAAL,CAAS,CAAT,EAAYC,IAAI,CAACF,GAAL,CAASxE,MAAT,EAAiB,EAAjB,IAAuB,CAAnC,CAArB,CAFyB,CAA3B;AAAA,CAPgB,CADb;AAcP,MAAayF,WAAW,GAAIC,KAAD;AACzB,MAAI,CAACA,KAAD,IAAUA,KAAK,CAAC5K,IAAN,KAAe,OAA7B,EAAsC,OAAO,EAAP;;AAGtC,SAAOyK,UAAU,CAACG,KAAK,CAACb,SAAP,EAAkBa,KAAK,CAACL,KAAxB,CAAjB;AACD,CALM;AAOP,MAAaM,uBAAuB,GAAId,SAAD;AACrC,MAAI,CAACA,SAAS,CAACvS,MAAf,EAAuB,OAAOsS,sBAAP;AAEvB,SAAOE,kBAAkB,CAAChN,IAAnB,CAAwB8N,MAAM;AACnC,QAAIA,MAAM,CAACf,SAAP,CAAiBvS,MAAjB,KAA4BuS,SAAS,CAACvS,MAA1C,EAAkD,OAAO,KAAP;AAElD,UAAMuT,kBAAkB,GAAGD,MAAM,CAACf,SAAP,CACxB3Q,GADwB,CACpB,CAAC4R,cAAD,EAAiBX,CAAjB,KAAuBN,SAAS,CAACM,CAAD,CAAT,GAAeW,cADlB,EAExB/I,MAFwB,CAEjBgJ,UAFiB,CAA3B;AAIA,WAAOF,kBAAkB,CAACvT,MAAnB,KAA8B,CAArC;AACD,GARM,CAAP;AASD,CAZM;AAcP,MAAa0T,kBAAkB,GAC7BC,SADgC,IAGhCnB,kBAAkB,CAAChN,IAAnB,CAAwB8N,MAAM,IAAIA,MAAM,CAACjJ,KAAP,KAAiBsJ,SAAnD,CAHK;;AC/GP,MAAMC,gBAAgB,GAAG,KAAzB;;AAEA,MAAMC,GAAG,GAAInB,OAAD,IACVA,OAAO,CAAC1D,MAAR,CAAe,CAACmB,MAAD,EAAS8B,GAAT,KAAiB9B,MAAM,GAAG8B,GAAzC,EAA8C,CAA9C,CADF;;AAGA,MAAM6B,oBAAoB,GAAG,CAC3BC,UAD2B,EAE3BC,UAF2B,EAG3B3Q,CAH2B,EAI3BC,CAJ2B;AAM3B,QAAM2Q,MAAM,GAAG7B,IAAI,CAACc,KAAL,CAAWa,UAAU,GAAG,CAAxB,CAAf;;AAEA,MAAI,CAACC,UAAU,KAAK,CAAf,IAAoBA,UAAU,KAAK5B,IAAI,CAAC8B,EAAzC,KAAgD7Q,CAAC,KAAK4Q,MAA1D,EAAkE;AAChE,WAAO,IAAP;AACD;;AACD,MAAID,UAAU,KAAK5B,IAAI,CAAC8B,EAAL,GAAU,CAAzB,IAA8B5Q,CAAC,KAAKD,CAAxC,EAA2C;AACzC,WAAO,IAAP;AACD;;AACD,MAAI2Q,UAAU,KAAK5B,IAAI,CAAC8B,EAAL,GAAU,CAAzB,IAA8B5Q,CAAC,KAAK2Q,MAAxC,EAAgD;AAC9C,WAAO,IAAP;AACD;;AAED,SAAOD,UAAU,KAAM,IAAI5B,IAAI,CAAC8B,EAAV,GAAgB,CAA/B,IAAoCH,UAAU,GAAG,CAAb,GAAiBzQ,CAAjB,KAAuBD,CAAlE;AACD,CAnBD;;AAqBA,MAAM8Q,iBAAiB,GAAIC,IAAD,IACxB/L,KAAK,CAAC+L,IAAD,CAAL,CACG3H,IADH,CACQ,IADR,EAEG7K,GAFH,CAEO,MAAMyG,KAAK,CAAC+L,IAAD,CAFlB,CADF;;AAKA,MAAMC,UAAU,GAAG,CACjBC,MADiB,EAEjBC,MAFiB;AAIjB,QAAMR,UAAU,GAAGO,MAAM,CAACtU,MAA1B;;AAEA,OAAK,IAAIqD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,UAApB,EAAgC1Q,CAAC,EAAjC,EAAqC;AACnC,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyQ,UAApB,EAAgCzQ,CAAC,EAAjC,EAAqC;AACnCgR,MAAAA,MAAM,CAACjR,CAAD,CAAN,CAAUC,CAAV,IAAeiR,MAAM,CAAClR,CAAD,EAAIC,CAAJ,EAAOyQ,UAAP,CAArB;AACD;AACF;AACF,CAXD;;AAaA,MAAMS,qBAAqB,GAAG,CAC5BR,UAD4B,EAE5BS,UAF4B,EAG5BC,aAH4B;AAK5B,QAAMX,UAAU,GAAG3B,IAAI,CAACD,GAAL,CACjBC,IAAI,CAACc,KAAL,CAAWW,GAAG,CAAC,CAACzB,IAAI,CAACD,GAAL,CAAS,GAAGuC,aAAZ,CAAD,EAA6BD,UAA7B,CAAD,CAAd,CADiB,EAEjBA,UAFiB,CAAnB;AAIA,QAAMH,MAAM,GAAGH,iBAAiB,CAACJ,UAAD,CAAhC;AAEAM,EAAAA,UAAU,CAACC,MAAD,EAAS,CAACjR,CAAD,EAAIC,CAAJ,EAAO8Q,IAAP,KACjBN,oBAAoB,CAACM,IAAD,EAAOJ,UAAP,EAAmB3Q,CAAnB,EAAsBC,CAAtB,CAApB,GAA+C,GAA/C,GAAqD,CAD7C,CAAV;AAIA,SAAOgR,MAAP;AACD,CAhBD;;AAkBA,MAAMK,qBAAqB,GACzBC,SAD4B;AAG5B,MAAIA,SAAS,CAACpM,IAAV,KAAmB,OAAvB,EAAgC,OAAOoJ,SAAP;AAEhC,SAAO4C,qBAAqB;AAE1B9L,EAAAA,iBAAiB,CAACkM,SAAS,CAACZ,UAAX,CAFS;AAI1B5B,EAAAA,IAAI,CAACc,KAAL,CAAW0B,SAAS,CAACH,UAArB,CAJ0B,EAK1BG,SAAS,CAACF,aALgB,CAA5B;AAOD,CAZD;;AAcA,IAAaG,aAAb;AAAA;;AAAA;;AACE,yBAAmBC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvM,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CALjB;AAMJwJ,MAAAA,cAAc,EAAE3D,WAAW;AAEzB9I,MAAAA,iBAAiB,yBAACoM,cAAc,CAACrI,IAAhB,qBAAC,qBAAqBuI,KAAtB,CAFQ,CANvB;AAUJI,MAAAA,cAAc,EAAEhJ,YAAY,CAAC0I,cAAc,CAACrI,IAAhB,CAAZ;AAEZ+E,MAAAA,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACrI,IAAhB,qBAAC,sBAAqB4I,UAAtB,CAAlB,CAFC,GAGZ,KAAK,CAbL;AAcJT,MAAAA,SAAS,EAAED,qBAAqB,CAACG,cAAc,CAACrI,IAAhB,CAd5B;AAeJ6I,MAAAA,OAAO,EAAE;AAfL,KAAN;AADiB,wBAAA,GAAAR,cAAA;;AAkBlB;;AAnBH;AAAA;AAAA,WAqBE;AACE;AACA,UAAI,CAAC,KAAKS,YAAV,EAAwB;AAExB,YAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACA,YAAMC,GAAG,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAZ;;AAEA,UAAI,CAACD,GAAL,EAAU;AACR;AACD;;AAED,YAAMvC,KAAK,GAAG,KAAKwB,SAAnB;AACA,YAAMiB,SAAS,GAAGzC,KAAK,CAACpT,MAAxB;AACA,YAAM8V,UAAU,GAAG,IAAIpE,WAAJ,CAAU,KAAK0D,cAAf,CAAnB;AACA,YAAMW,UAAU,GAAG,IAAIrE,WAAJ,CAAU,KAAKyD,cAAf,CAAnB;AAEAK,MAAAA,MAAM,CAACQ,MAAP,GAAgBH,SAAhB;AACAL,MAAAA,MAAM,CAACzC,KAAP,GAAe8C,SAAf;;AACA,WAAK,IAAIhD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgD,SAApB,EAA+BhD,CAAC,EAAhC,EAAoC;AAClC;AACA,aAAK,IAAIoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG7C,KAAK,CAACP,CAAD,CAAL,CAAS7S,MAA7B,EAAqCiW,CAAC,EAAtC,EAA0C;AACxC,gBAAMC,IAAI,GAAI9C,KAAK,CAACP,CAAD,CAAL,CAASoD,CAAT,IAAcH,UAAU,CAACK,CAA1B,GAA+BvC,gBAA5C;AACA,gBAAMwC,IAAI,GAAIL,UAAU,CAACI,CAAX,GAAe,GAAhB,IAAwB,IAAID,IAA5B,CAAb;AACA,gBAAMG,KAAK,GAAG,CAACjE,IAAI,CAACF,GAAL,CAAS,CAAT,EAAYgE,IAAI,GAAGE,IAAnB,EAAyBE,OAAzB,CAAiC,CAAjC,CAAf;AACA,gBAAMC,GAAG,GAAGnE,IAAI,CAACc,KAAL,CACVd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACS,CAAX,GAAeJ,IAAf,GAAsBN,UAAU,CAACU,CAAX,GAAeN,IAAnD,CADU,CAAZ;AAGA,gBAAMO,KAAK,GAAGrE,IAAI,CAACc,KAAL,CACZd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACW,CAAX,GAAeN,IAAf,GAAsBN,UAAU,CAACY,CAAX,GAAeR,IAAnD,CADY,CAAd;AAGA,gBAAMS,IAAI,GAAGvE,IAAI,CAACc,KAAL,CACXd,IAAI,CAACF,GAAL,CAAS,GAAT,EAAc6D,UAAU,CAACa,CAAX,GAAeR,IAAf,GAAsBN,UAAU,CAACc,CAAX,GAAeV,IAAnD,CADW,CAAb;AAIAP,UAAAA,GAAG,CAACkB,SAAJ,aAAwBN,GAAxB,SAA+BE,KAA/B,SAAwCE,IAAxC,SAAgDN,KAAhD;AACAV,UAAAA,GAAG,CAACmB,QAAJ,CAAab,CAAb,EAAgBpD,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB;AACD;AACF;;AACD,WAAKkE,MAAL,GAAc,IAAIC,KAAJ,EAAd;AACA,WAAKD,MAAL,CAAYE,GAAZ,GAAkBzB,MAAM,CAAC0B,SAAP,EAAlB;AACD;AA7DH;AAAA;AAAA,WA+DE;AACE,aAAO,IAAIrC,aAAJ,CAAkB,KAAKC,cAAvB,CAAP;AACD;AAjEH;;AAAA;AAAA,EAAmCqC,mBAAnC;;IClFaC,aAAb;AAAA;;AAAA;;AACE,yBAAmBtC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvM,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CALjB;AAMJsL,MAAAA,GAAG,6BAA2BnC,cAAc,CAACrI,IAAf,CAAoB4K,OAN9C;AAOJ/B,MAAAA,OAAO,EAAEhJ,aAAa,CAACwI,cAAc,CAACnJ,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAPvD,KAAN;AADiB,wBAAA,GAAAmJ,cAAA;;AAUlB;;AAXH;AAAA;AAAA,WAaE;AACE,aAAO,IAAIsC,aAAJ,CAAkB,KAAKtC,cAAvB,CAAP;AACD;AAfH;;AAAA;AAAA,EAAmCwC,mBAAnC;;ICAaC,iBAAb;AAAA;;AAAA;;AACE,6BAAmBzC,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJ;AACAC,MAAAA,WAAW,EAAEvM,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAJ1B;AAKJmC,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CALjB;AAMJ;AACA6L,MAAAA,SAAS,EAAEhG,WAAW,CAAC9I,iBAAiB,yBAACoM,cAAc,CAACrI,IAAhB,qBAAC,qBAAqBuI,KAAtB,CAAlB,CAPlB;AAQJ;AACAM,MAAAA,OAAO,EAAEhJ,aAAa,CAACwI,cAAc,CAACnJ,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AATvD,KAAN;AADiB,wBAAA,GAAAmJ,cAAA;;AAYlB;;AAbH;AAAA;AAAA,WAeE;AACE,aAAO,IAAIyC,iBAAJ,CAAsB,KAAKzC,cAA3B,CAAP;AACD;AAjBH;;AAAA;AAAA,EAAuC2C,oBAAvC;;ACUA,MAAMC,eAAe,GAAG,CACtBC,KADsB,EAEtBrT,UAFsB,EAGtBsT,OAHsB,EAItBC,KAJsB;AAMtB,QAAMC,SAAS,GAAGC,qBAAY,CAACJ,KAAD,EAAQC,OAAR,EAAiBC,KAAjB,CAA9B;AAEA,SAAOG,wBAAmB,CACxBF,SAAS,CAAClW,GAAV,CAAcqW,IAAI;AAEhBA,EAAAA,IAAI,CAACrW,GAAL,CAAS;AAAA,QAAC,CAACyB,CAAD,EAAIC,CAAJ,CAAD;AAAA,WAAY,CAACD,CAAC,GAAGiB,UAAL,EAAiBhB,CAAC,GAAG,CAACgB,UAAtB,CAAZ;AAAA,GAAT,CAFF,CADwB,EAKxB,CALwB,CAA1B;AAOD,CAfD;;AAiBA,MAAM4T,cAAc,GAA2D;AAC7E;;AAAA,KAAuBjD,WAAW,IAAI,CAACA,WAAW,GAAG,CAAf,IAAoB,CAApB,GAAwB,CADe;AAE7E;;AAAA,KAAuBA,WAAW,IAAI,CAACA,WAAW,GAAG,CAAf,IAAoB,CAApB,GAAwB;AAFe,CAA/E;AAKA,IAAsBkD,eAAtB;AAYE,2BAAYC,QAAZ;;;AAIA,kBAAA,GAAaT,KAAD;AACV,UAAI,KAAKzT,QAAL,KAAkB,OAAtB,EAA+B;AAC7B,cAAMmU,QAAQ,GAAGV,KAAK,CAACA,KAAK,CAAC3X,MAAN,GAAe,CAAhB,CAAtB;AAEA,eAAQqY,QAAQ,IAAIA,QAAQ,CAACA,QAAQ,CAACrY,MAAT,GAAkB,CAAnB,CAArB,IAA+C,IAAtD;AACD;;AAED,YAAMsY,SAAS,GAAGX,KAAK,CAAC,CAAD,CAAvB;AAEA,aAAQW,SAAS,IAAIA,SAAS,CAAC,CAAD,CAAvB,IAA+B,IAAtC;AACD,KAVD;;AAHE9I,IAAAA,MAAM,CAAC+I,MAAP,CAAc,IAAd,EAAoBH,QAApB;AACD;;AAdH;AAAA;AAAA,WA4BE,mBACEI,WADF,EAEEC,SAFF,EAGEnU,UAHF,EAIEoU,UAJF;AAME,YAAMC,WAAW,GAAG,KAAKzU,QAAL,KAAkB,OAAlB,GAA4B,CAA5B,GAAgC,CAAC,CAArD;AACA,YAAM0U,WAAW,GAAG,KAAKC,SAAL,CAAeL,WAAf,CAApB;AACA,YAAMM,UAAU,GAAG,KAAKC,WAAL,CAAiBH,WAAjB,EAA8BD,WAA9B,CAAnB;AACA,YAAMK,mBAAmB,GAAGtB,eAAe,CACzCoB,UADyC,EAEzCxU,UAFyC,EAGzCmU,SAHyC,EAIzCC,UAJyC,CAA3C;AAOA,aAAO,KAAKO,YAAL,CAAkBD,mBAAlB,CAAP;AACD;AA7CH;AAAA;AAAA,SA+CE;AACE,YAAME,aAAa,GAAGhB,cAAc,CAAC,KAAK9D,IAAN,CAApC;AAEA,aAAO8E,aAAa,GAAGA,aAAa,CAAC,KAAKjE,WAAN,CAAhB,GAAqC,CAAzD;AACD;AAnDH;;AAAA;AAAA;;ICnCakE,oBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKC,SAAL,GAAiB,KAAKnE,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC0D,WAAjC;UAAY,CAACtV,CAAD,EAAIC,CAAJ;AACV,aAAO,CACL,CACE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/V,CAAC,GAAG,KAAK+V,SAAL,GAAiBT,WAAtB,EAAmCrV,CAAnC,CAFF,EAGE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CAHF,CADK,CAAP;AAOD;AAZH;AAAA;AAAA,WAcE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAczM,kBAAc,CAACI,WAA9C;AAEA,aAAO,IAAIsM,eAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAEH,QADsB;AAEhC7B,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,KAAK,CAFR;AAGhC6B,QAAAA,SAAS,EAAEwC,QAAQ,GAAGI,cAAS,CAAC/H,KAAb,GAAqB+H,cAAS,CAAC3M,IAHlB;AAIhCwI,QAAAA,OAAO,EAAE,QAJuB;AAKhCoE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3E,QAAAA,WAAW,EAAE,KAAKC,KANc;AAOhCC,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA1BH;;AAAA;AAAA,EAA0CkD,eAA1C;;MCJawB,gBAAgB,GAAG,GAAzB;AAKP;AAAA,WAAYC;AACVA,EAAAA,iCAAA,qBAAA;AACAA,EAAAA,sBAAA,wBAAA;AACAA,EAAAA,iBAAA,iCAAA;AACAA,EAAAA,yBAAA,gBAAA;AACD,CALD,EAAYA,kBAAU,KAAVA,kBAAU,KAAA,CAAtB;;AAYA,MAAMC,iBAAiB,GAAmC,CAACC,iBAAD,EAAYC,gBAAZ,EAAsBC,OAAO,IAAI,IAAIC,IAAJ,CAASD,OAAT,CAAjC,CAA1D;AAEA,MAAaE,OAAO,GAAIF,OAAD;AACrB,MAAI,CAACA,OAAL,EAAc,OAAO,IAAP;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,SAAK,MAAMG,MAAX,IAAqBN,iBAArB,EAAwC;AACtC,YAAMO,IAAI,GAAGD,MAAM,CAACH,OAAD,CAAnB;;AAEA,UAAIK,eAAO,CAACD,IAAD,CAAX,EAAmB;AACjB,eAAOE,cAAM,CAACF,IAAD,CAAb;AACD;AACF;;AAED,WAAO,IAAP;AACD;;AAED,QAAMG,UAAU,GAAGD,cAAM,CAACN,OAAD,CAAzB;AAEA,SAAOK,eAAO,CAACE,UAAD,CAAP,GAAsBA,UAAtB,GAAmC,IAA1C;AACD,CAlBM;AAoBP,MAAaC,UAAU,GAAG,SAAbA,UAAa,CACxBJ,IADwB;MAExB;AAAEK,IAAAA,UAAU,GAAGb,kBAAU,CAACc,mBAA1B;AAA+C/R,IAAAA,YAAY,GAAGgR;AAA9D,yBAAsG;AAEtG,QAAMgB,SAAS,GAAGP,IAAI,GAAGF,OAAO,CAACE,IAAD,CAAV,GAAmB,IAAzC;;AAEA,MAAIC,eAAO,CAACM,SAAD,CAAX,EAAwB;AACtB,WAAOC,cAAM,CAACD,SAAD,EAAoBF,UAApB,CAAb;AACD;;AAED,SAAO9R,YAAY,CAACgJ,QAAb,EAAP;AACD,CAXM;;SCzCSkJ,iBACdxX,GACAyX,gBACAC;MADAD;AAAAA,IAAAA,iBAAiB;;;MACjBC;AAAAA,IAAAA,QAAwB;;;AAExB,QAAM,CAAC9I,GAAD,EAAM+I,IAAN,IAAc3X,CAAC,CAACiT,OAAF,CAAUwE,cAAV,EAA0B9S,KAA1B,CAAgC,GAAhC,CAApB;AACA,QAAMiT,aAAa,GAAGhJ,GAAG,CAACiJ,OAAJ,CAAY,uBAAZ,EAAqC,GAArC,CAAtB;AAEA,SAAO,CAACD,aAAD,EAAgBD,IAAhB,EAAsB7S,IAAtB,CAA2B4S,KAA3B,CAAP;AACD;;SCTeI,WAAW7a;AACzB,QAAM8a,WAAW,GAAG,oDAApB;AAEA,SAAO,CAACC,aAAa,CAAC/a,KAAD,CAAd,IAAyBA,KAAK,CAACgb,KAAN,CAAYF,WAAZ,CAAhC;AACD;AAED,SAAgBC,cAAc/a;AAC5B,QAAMib,SAAS,GAAG,6BAAlB;AAEA,SAAOA,SAAS,CAACC,IAAV,CAAelb,KAAf,CAAP;AACD;AAED,SAAgBmb,cAAcnb;AAC5B,QAAMob,SAAS,GAAG,gBAAlB;AAEA,SAAOA,SAAS,CAACF,IAAV,CAAelb,KAAf,CAAP;AACD;AAED,SAAgBqb,eAAerb;AAC7B,QAAMsb,UAAU,GAAG,gBAAnB;AAEA,SAAOA,UAAU,CAACJ,IAAX,CAAgB,CAAC,CAAClb,KAAF,EAASqR,QAAT,EAAhB,CAAP;AACD;AAED,SAAgBkK,qBAAqBvb;AACnC,QAAMwb,UAAU,GAAG,8BAAnB;AACA,SAAOA,UAAU,CAACN,IAAX,CAAgBlb,KAAhB,CAAP;AACD;AAED,SAAgByb,mBAAmBzb;AACjC,SAAO+a,aAAa,CAAC/a,KAAD,CAAb,IAAwBmb,aAAa,CAACnb,KAAD,CAArC,IAAgDqb,cAAc,CAACrb,KAAD,CAArE;AACD;AAED,SAAgB0b,gBAAgB1b;AAC9B,QAAM8a,WAAW,GAAG,oDAApB;AAEA,SACE,CAACW,kBAAkB,CAACzb,KAAD,CAAnB,IACA,CAACub,oBAAoB,CAACvb,KAAD,CADrB,IAEA8a,WAAW,CAACI,IAAZ,CAAiBlb,KAAjB,CAHF;AAKD;AAED,SAAgB2b,eAAe3b;AAC7B,SAAO4b,aAAa,CAAC5b,KAAD,CAAb,IAAwBA,KAAK,CAACsH,QAAN,CAAe,GAAf,CAA/B;AACD;AAED,SAAgBsU,cAAc5b;AAC5B,MAAI6b,UAAU,CAAC7b,KAAD,CAAd,EAAuB;AACrB,WAAO,IAAP;AACD;;AAED,QAAM8b,SAAS,GAAG,kGAAlB;AAEA,QAAMC,OAAO,GAAG/b,KAAK,CAACgb,KAAN,CAAYc,SAAZ,CAAhB;AAEA,SAAOC,OAAO,KAAK,IAAnB;AACD;AAED,SAAgBF,WAAW7b;AACzB,MAAI;AACF,QAAIgc,GAAJ,CAAQhc,KAAR;AACD,GAFD,CAEE,OAAOic,CAAP,EAAU;AACV,WAAO,KAAP;AACD;;AAED,SAAO,IAAP;AACD;AAED,MAAaC,QAAQ,GAAIC,IAAD,gBAA4BA,IAA7C;AAEP,MAAaC,SAAS,GAAID,IAAD,aAAyBA,IAA3C;AAEP,MAAaE,OAAO,GAAI/b,GAAD,IAAkBub,UAAU,CAACvb,GAAD,CAAV,GAAkBA,GAAlB,UAA6BA,GAA/D;;AC3DP,MAAMgc,eAAe,GAAItc,KAAD,KAAoB;AAC1CkI,EAAAA,IAAI;;AADsC;AAE1ClI,EAAAA;AAF0C,CAApB,CAAxB;;AAKA,MAAMuc,YAAY,GAAIvc,KAAD,KAAoB;AACvCkI,EAAAA,IAAI;;AADmC;AAEvClI,EAAAA;AAFuC,CAApB,CAArB;;AAKA,MAAMwc,aAAa,GAAIxc,KAAD,KAAoB;AACxCkI,EAAAA,IAAI;;AADoC;AAExClI,EAAAA;AAFwC,CAApB,CAAtB;;AAKA,MAAMyc,cAAc,GAAIzc,KAAD,KAAoB;AACzCkI,EAAAA,IAAI;;AADqC;AAEzClI,EAAAA;AAFyC,CAApB,CAAvB;;AAKA,MAAM0c,sBAAsB,GAAI1c,KAAD;AAC7B,MAAI2b,cAAc,CAAC3b,KAAD,CAAlB,EAA2B;AACzB,WAAOwc,aAAa,CAACxc,KAAD,CAApB;AACD;;AAED,MAAI4b,aAAa,CAAC5b,KAAD,CAAjB,EAA0B;AACxB,WAAOuc,YAAY,CAACvc,KAAD,CAAnB;AACD;;AAED,MAAI0b,eAAe,CAAC1b,KAAD,CAAnB,EAA4B;AAC1B,WAAOyc,cAAc,CAACzc,KAAD,CAArB;AACD;;AAED,SAAOsc,eAAe,CAACtc,KAAD,CAAtB;AACD,CAdD;;AAgBA,MAAM2c,qBAAqB,GAAI3c,KAAD;AAC5B,QAAM4c,MAAM,GAAG/B,UAAU,CAAC7a,KAAD,CAAzB;;AAEA,MACE,CAACyb,kBAAkB,CAACzb,KAAD,CAAnB,IACA,CAACub,oBAAoB,CAACvb,KAAD,CADrB,IAEA4c,MAFA,IAGAA,MAAM,CAACld,MAJT,EAKE;AACA,WAAOkd,MAAM,CAACtb,GAAP,CAAWmb,cAAX,CAAP;AACD;;AAED,QAAMI,eAAe,GAAG7c,KAAK,CAAC0H,KAAN,CAAY,OAAZ,EAAqBpG,GAArB,CAAyBob,sBAAzB,CAAxB;;AAEA,MAAIG,eAAe,CAACC,KAAhB,CAAsB;AAAA,QAAC;AAAE5U,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,MAAlB;AAAA;;AAAtB,GAAJ,EAA6E;AAC3E,WAAO,CACLoU,eAAe,CACbO,eAAe,CACZvb,GADH,CACO;AAAA,UAAC;AAAEtB,QAAAA;AAAF,OAAD;AAAA,aACH+c,KAAK,CAAC,CAAC/c,KAAF,CAAL,IAAiByb,kBAAkB,CAACzb,KAAD,CAAnC,GACIqb,cAAc,CAACrb,KAAD,CAAd,GACE,CAACA,KADH,GAEEA,KAHN,GAIIua,gBAAgB,CAAC,CAACva,KAAF,EAAS,CAAT,EAAY,EAAZ,CALjB;AAAA,KADP,EAQG6H,IARH,CAQQ,GARR,CADa,CADV,CAAP;AAaD;;AAED,SAAOgV,eAAP;AACD,CA/BD;;AAiCA,MAAMG,uBAAuB,GAAIhd,KAAD,IAC9Bsc,eAAe,CAACtc,KAAK,CAACqR,QAAN,EAAD,CADjB;;AAGA,MAAM4L,kBAAkB,GAAIjd,KAAD,IACzBsc,eAAe,CAAC/B,gBAAgB,CAACva,KAAD,EAAQ,CAAR,EAAW,EAAX,CAAjB,CADjB;;AAGA,MAAMkd,gBAAgB,GAAG,CAAzB;;AAEA,MAAMC,qBAAqB,GAAInd,KAAD,IAC5Bsc,eAAe,CAAC/B,gBAAgB,CAACva,KAAD,EAAQkd,gBAAR,EAA0B,GAA1B,CAAjB,CADjB;;AAGA,MAAME,iBAAiB,GACrBpd,KADwB,IAEMA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKsR,SAF5D;;AAIA,MAAM+L,oBAAoB,GAAG;AAC3BnV,EAAAA,IAAI;;AADuB;AAE3BlI,EAAAA,KAAK,EAAEqZ;AAFoB,CAA7B;AAKA,MAAaiE,oBAAoB,GAC/BvX,SADkC;AAGlC,MAAIqX,iBAAiB,CAACrX,SAAS,CAAC/F,KAAX,CAArB,EAAwC;AACtC,WAAO,CAACqd,oBAAD,CAAP;AACD;;AAED,UAAQtX,SAAS,CAACmC,IAAlB;AACE,SAAK,QAAL;AACE,aAAOyU,qBAAqB,CAAC5W,SAAS,CAAC/F,KAAX,CAA5B;;AACF,SAAK,UAAL;AACE,aAAO,CAACgd,uBAAuB,CAACjX,SAAS,CAAC/F,KAAX,CAAxB,CAAP;;AACF,SAAK,OAAL;AACA,SAAK,OAAL;AACE,aAAO,CAACid,kBAAkB,CAAClX,SAAS,CAAC/F,KAAX,CAAnB,CAAP;;AACF,SAAK,QAAL;AACE,aAAO,CAACmd,qBAAqB,CAACpX,SAAS,CAAC/F,KAAX,CAAtB,CAAP;;AACF;AACE,aAAO,CAACqd,oBAAD,CAAP;AAXJ;AAaD,CApBM;;AC9FP,WAAYE;AACV;AACAA,EAAAA,gCAAA,gBAAA;AACA;;AACAA,EAAAA,wBAAA,QAAA;AACA;;AACAA,EAAAA,wBAAA,UAAA;AACA;;AACAA,EAAAA,uCAAA,uBAAA;AACD,CATD,EAAYA,YAAI,KAAJA,YAAI,KAAA,CAAhB;;AAWA,MAAaC,OAAO,GAAsB;AACxC,GAACD,YAAI,CAACE,WAAN,GAAoBC,eADoB;AAExC,GAACH,YAAI,CAACI,GAAN,GAAYC,OAF4B;AAGxC,GAACL,YAAI,CAACM,KAAN,GAAcC,SAH0B;AAIxC,GAACP,YAAI,CAACQ,kBAAN,GAA2BC;AAJa,CAAnC;AAOP,MAAaC,YAAY,GAAGV,YAAI,CAACE,WAA1B;AAEP,MAAaS,WAAW,GAAGV,OAAO,CAACS,YAAD,CAA3B;AAEP,MAAaE,MAAM,GAAIC,IAAD,IAAuBZ,OAAO,CAACY,IAAD,CAA7C;;ACnBA,MAAMC,uBAAuB,GAClCC,cADqC;AAGrC,MAAIA,cAAc,YAAY3E,IAA9B,EAAoC;AAClC,WAAO4E,iBAAa,CAACC,QAArB;AACD;;AAED,MAAI,OAAOF,cAAP,KAA0B,QAA9B,EAAwC;AACtC,WAAOC,iBAAa,CAACE,MAArB;AACD;;AAED,MAAI,OAAOH,cAAP,KAA0B,QAA9B,EAAwC;AACtC,WAAOC,iBAAa,CAACG,KAArB;AACD;;AAED,SAAOH,iBAAa,CAACI,OAArB;AACD,CAhBM;AAkBP,AAAO,MAAMC,kBAAkB,GAC7BC,eADgC;AAGhC,QAAMC,UAAU,GAAID,eAAe,IAAIA,eAAe,CAACC,UAApC,IAAmD,EAAtE;AAEA,SAAO5P,MAAM,CAACC,OAAP,CAAe2P,UAAf,EAA2Bxd,GAA3B,CAA+B;AAAA,QAAC,CAACyd,IAAD,EAAOC,UAAP,CAAD;AAAA;AACpCD,MAAAA;AADoC,OAEjCC,UAFiC;AAAA,GAA/B,CAAP;AAID,CATM;AAWP,AAAO,MAAMC,oBAAoB,GAC/BH,UADkC;AAGlC,SAAOA,UAAU,GACb5P,MAAM,CAACC,OAAP,CAAe2P,UAAf,EAA2Bxd,GAA3B,CAA+B;AAAA,QAAC,CAACyd,IAAD,EAAO/e,KAAP,CAAD;AAAA,WAAoB;AACjD+e,MAAAA,IADiD;AAEjD/e,MAAAA,KAFiD;AAGjDkI,MAAAA,IAAI,EAAEmW,uBAAuB,CAACre,KAAD;AAHoB,KAApB;AAAA,GAA/B,CADa,GAMb,EANJ;AAOD,CAVM;AAYP,AAaO,MAAMkf,eAAe,GAAG,CAC7BC,WAD6B,EAE7BC,WAF6B;AAI7B,SAAOD,WAAW,CAAC7d,GAAZ,CAAgByE,SAAS,iBAC3BA,SAD2B,EAE1BqZ,WAAW,CAACla,IAAZ,CAAiB;AAAA,QAAC;AAAE6Z,MAAAA;AAAF,KAAD;AAAA,WAAchZ,SAAS,CAACgZ,IAAV,KAAmBA,IAAjC;AAAA,GAAjB,KAA2D,EAFjC,CAAzB,CAAP;AAID,CARM;;IC3CMM,cAAb;AAUE,0BAAY/Z,OAAZ;;;AATO,WAAA,GAAqB,IAArB;AACA,oBAAA,GAA8B,IAA9B;AACA,iBAAA,GAA+B,IAA/B;AAEA,kBAAA,GAA4B,IAA5B;AACA,mBAAA,GAA6B,IAA7B;AACA,mBAAA,GAAyC,IAAzC;AACA,eAAA,GAAkC,IAAlC;AAGL,SAAKga,EAAL,GAAUha,OAAO,CAACga,EAAlB;AACA,SAAKC,WAAL,GAAmBja,OAAO,CAACga,EAA3B;AACA,SAAKE,QAAL,GAAgBla,OAAO,CAACka,QAAxB;AAEA,SAAKC,SAAL,GAAiBna,OAAO,CAACxD,KAAzB;AACA,SAAK4d,UAAL,GAAkBpa,OAAO,CAACxD,KAA1B;AACA,SAAKgd,UAAL,GAAkBG,oBAAoB,CAAC3Z,OAAO,CAACwZ,UAAT,CAAtC;AACD;;AAlBH;AAAA;AAAA,WAoBS;AACL,UAAI,CAAC,KAAKU,QAAN,IAAkB,CAAC,KAAKpd,MAA5B,EAAoC;AAClC,eAAO,IAAP;AACD;;;AAGD,YAAM;AAAE8F,QAAAA,IAAF;AAAQyX,QAAAA,WAAR;AAAqBC,QAAAA;AAArB,UAA4B,KAAKJ,QAAvC;AACA,YAAM9a,GAAG,GAAG8Y,OAAO,CAACoC,EAAD,CAAnB;;AAEA,UAAI,CAAClb,GAAL,EAAU;AACR,eAAO,IAAP;AACD;;AAED,cAAQwD,IAAR;AACE,aAAK2X,gBAAY,CAACC,KAAlB;AACE,iBAAO,IAAIC,yBAAJ,CAAiBJ,WAAjB,EAA8B;AACnCvd,YAAAA,MAAM,EAAE4d,aAD2B;AAEnCtb,YAAAA;AAFmC,WAA9B,CAAP;;AAIF,aAAKmb,gBAAY,CAACI,UAAlB;AACE,iBAAO,IAAIC,qBAAJ,CAAeP,WAAf,EAA4B;AACjCvd,YAAAA,MAAM,EAAE4d,aADyB;AAEjCtb,YAAAA;AAFiC,WAA5B,CAAP;;AAIF,aAAKmb,gBAAY,CAACM,QAAlB;AACE,iBAAO,IAAIA,iBAAJ,CAAaR,WAAb,EAA0B;AAC/Bvd,YAAAA,MAAM,EAAEge,gBADuB;AAE/B1b,YAAAA;AAF+B,WAA1B,CAAP;;AAIF,aAAKmb,gBAAY,CAACQ,OAAlB;AACE,iBAAO,IAAIA,eAAJ,CAAYV,WAAZ,EAAyB;AAC9Bvd,YAAAA,MAAM,EAAEke,eADsB;AAE9B5b,YAAAA;AAF8B,WAAzB,CAAP;;AAIF;AACE,iBAAO,IAAP;AAtBJ;AAwBD;AAzDH;AAAA;AAAA,WA2DS;AACL,YAAMY,OAAO,GAAG,KAAKib,WAAL,EAAhB;AAEA,aAAOjb,OAAO,IAAIA,OAAO,CAACd,IAA1B;AACD;AA/DH;;AAAA;AAAA;;SCrBgBgc,kBACdta,aACA4Y;AAEA,MAAI;AACF,UAAM2B,SAAS,GAAG,IAAIC,4BAAJ,CAAuB5B,UAAvB,CAAlB;AACA,UAAMjP,MAAM,GAAG4Q,SAAS,CAACE,QAAV,CAAmBza,WAAnB,CAAf;;AAEA,QAAI2J,MAAM,YAAYvJ,KAAtB,EAA6B;AAC3B,aAAO,IAAP;AACD;;AAED,WAAOuJ,MAAP;AACD,GATD,CASE,gBAAM;AACN,WAAO,IAAP;AACD;AACF;;ACGD,SAAS+Q,iBAAT,CACE9B,UADF,EAEE/P,aAFF;AAIE,QAAM8R,aAAa,GAAG/B,UAAU,CAAC5Z,IAAX,CAAgB;AAAA,QAAC;AAAE6Z,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,KAAKhQ,aAAvB;AAAA,GAAhB,CAAtB;AAEA,SAAO8R,aAAa,GAAGA,aAAa,CAAC7gB,KAAjB,GAAyB,IAA7C;AACD;;AAED,MAAa8gB,6BAA6B,GACxC5a,SAD2C,IAEzB,IAAID,uBAAJ,CAA4BC,SAA5B,EAAuC6I,aAFpD;AAIP,MAAagS,8BAA8B,GACzCvS,MAD4C,IAG5CA,MAAM,CAAC9O,MAAP,GAAgB,CAAhB,GAAoBohB,6BAA6B,CAACtS,MAAM,CAAC,CAAD,CAAN,CAAUtI,SAAX,CAAjD,GAAyE,IAHpE;;AAKP,SAAS8a,gBAAT,CACEC,eADF;MAEE,CAAClC,IAAD,EAAO/e,KAAP;AAEA,SAAOA,KAAK,KAAK,IAAV,GACHihB,eAAe,CAAC/b,IAAhB,CACE;AAAA,QAAC;AAAEgB,MAAAA;AAAF,KAAD;AAAA,WACElG,KAAK,KAAKsR,SAAV,IAAuBkP,iBAAiB,CAACta,SAAD,EAAY;AAAE,OAAC6Y,IAAD,GAAQ/e;AAAV,KAAZ,CAD1C;AAAA,GADF,CADG,GAKH,IALJ;AAMD;;AAED,SAASkhB,sBAAT,CACED,eADF,EAEEnC,UAFF;AAIE,QAAMC,IAAI,GAAGgC,8BAA8B,CAACE,eAAD,CAA9B,IAAmD,EAAhE;AACA,QAAMjhB,KAAK,GAAG+e,IAAI,IAAI6B,iBAAiB,CAAC9B,UAAD,EAAaC,IAAb,CAAvC;AAEA,SAAO,CAACA,IAAD,EAAO/e,KAAP,CAAP;AACD;;AAED,SAASmhB,qBAAT,CAA+BrC,UAA/B;AACE;AACA,WAASsC,IAAT,CACEvR,MADF;QAEE,CAACwR,aAAD,EAAgB9T,cAAhB;AAEA,QAAI+T,iBAAJ;;AAEA,QAAIrZ,sBAAsB,CAACsF,cAAD,CAA1B,EAA4C;AAC1C,YAAM,CAACwB,aAAD,EAAgBuP,cAAhB,IAAkC4C,sBAAsB,CAC5D3T,cAAc,CAACiB,MAD6C,EAE5DsQ,UAF4D,CAA9D;AAIA,YAAMyC,YAAY,GAAGP,gBAAgB,CAACzT,cAAc,CAACiB,MAAhB,EAAwB,CAC3DO,aAD2D,EAE3DuP,cAF2D,CAAxB,CAArC;AAKAgD,MAAAA,iBAAiB,GAAGC,YAAY,GAC5BA,YAAY,CAACvhB,KADe,GAE5BuN,cAAc,CAAClF,YAFnB;AAGD,KAbD,MAaO,IAAIP,QAAQ,CAACyF,cAAD,CAAZ,EAA8B;AACnC;AACA+T,MAAAA,iBAAiB,GAAGpS,MAAM,CAACC,OAAP,CAAe5B,cAAf,EAA+BmB,MAA/B,CAClB0S,IADkB,EAElB7T,cAFkB,CAApB;AAID;;AAED,WAAO+T,iBAAiB,KAAKhQ,SAAtB,gBAEEzB,MAFF;AAGD,OAACwR,aAAD,GAAiBC;AAHhB,SAKHzR,MALJ;AAMD;;AAED,SAAOuR,IAAP;AACD;;AAED,SAAgBI,sBACdC,aACA3C;AAEA,SACE,CAAC2C,WAAW,IAAI,EAAhB,EAAoBvc,IAApB,CAAyB;QAAC;AAAEgB,MAAAA;AAAF;AACxB,UAAM6I,aAAa,GACjB7I,SAAS,IAAI4a,6BAA6B,CAAC5a,SAAD,CAD5C;AAEA,UAAMoY,cAAc,GAClBvP,aAAa,IAAI6R,iBAAiB,CAAC9B,UAAD,EAAa/P,aAAb,CADpC;;AAGA,QAAI7I,SAAS,IAAI6I,aAAb,IAA8BuP,cAAc,KAAKhN,SAArD,EAAgE;AAC9D,aAAOkP,iBAAiB,CAACta,SAAD,EAAY;AAClC,SAAC6I,aAAD,GAAiBuP;AADiB,OAAZ,CAAxB;AAGD;;AAED,WAAO,KAAP;AACD,GAbD,KAaM,IAdR;AAgBD;AAED,SAAgBoD,uBACdD,aACA3C;AAEA,QAAM6C,YAAY,GAAGH,qBAAqB,CAACC,WAAD,EAAc3C,UAAd,CAA1C;AAEA,SAAO6C,YAAY,GAAGA,YAAY,CAACvf,MAAhB,GAAyB,IAA5C;AACD;AAED,SAAgBwf,iBACd7X,OACA+U;AAEA,MAAI,CAAC/U,KAAD,IAAU,CAACA,KAAK,CAAC3H,MAArB,EAA6B;AAC3B,WAAO,IAAP;AACD;;AAED,MAAI2H,KAAK,CAACpJ,QAAN,KAAmB,IAAvB,EAA6B;AAC3B,WAAO+gB,sBAAsB,CAAC3X,KAAK,CAACpJ,QAAP,EAAiBme,UAAjB,CAAtB,IAAsD/U,KAAK,CAAC3H,MAAnE;AACD;;AAED,SAAO8M,MAAM,CAACC,OAAP,CAAepF,KAAK,CAAC3H,MAArB,EAA6BsM,MAA7B,CACLyS,qBAAqB,CAACrC,UAAD,CADhB,EAEL/U,KAAK,CAAC3H,MAFD,CAAP;AAID;;IC3IYyf,YAAb;AAOE,wBAAYC,OAAZ;;;AANgB,aAAA,GAAsB,IAAtB;AACC,uBAAA,GAAgC,IAAhC;AACA,cAAA,GAAuB,IAAvB;AACA,mBAAA,GAAsC,IAAtC;AACA,cAAA,GAA6B,IAA7B;AAGf,UAAMC,cAAc,GAAGD,OAAvB;AACA,UAAM;AAAE/C,MAAAA,IAAF;AAAQiD,MAAAA,KAAR;AAAejY,MAAAA,KAAf;AAAsB8U,MAAAA;AAAtB,QAA0CkD,cAAhD;AAEA,SAAKhD,IAAL,GAAYA,IAAZ;AACA,SAAKiD,KAAL,GAAaA,KAAK,IAAIjD,IAAtB;AACA,SAAKD,UAAL,GAAkBF,kBAAkB,CAACC,eAAD,CAApC;AACA,SAAK9U,KAAL,GAAcA,KAAK,IAAI,IAAI4D,YAAJ,CAAiB5D,KAAjB,CAAV,IAAsC,IAAnD;AACA,SAAKkY,cAAL,GACGpD,eAAe,IAAIA,eAAe,CAACoD,cAApC,IAAuD,IADzD;AAED;;AAjBH;AAAA;AAAA,WAmBS,yBAAgB3c,OAAhB;AACLA,MAAAA,OAAO,CAACwZ,UAAR,GAAqBI,eAAe,CAClC5Z,OAAO,CAACwZ,UAAR,IAAsB,EADY,EAElC,KAAKA,UAAL,IAAmB,EAFe,CAApC;AAKAxZ,MAAAA,OAAO,CAAClD,MAAR,GACE,KAAK2H,KAAL,IAAc6X,gBAAgB,CAAC,KAAK7X,KAAN,EAAazE,OAAO,CAACwZ,UAArB,CADhC;AAGAxZ,MAAAA,OAAO,CAACoa,UAAR,GAAqB,KAAKsC,KAA1B;AAEA,YAAMC,cAAc,GAAG,CAAC3c,OAAO,CAACwZ,UAAR,IAAsB,EAAvB,EAA2B5Z,IAA3B,CACrB;AAAA,YAAC;AAAE6Z,UAAAA;AAAF,SAAD;AAAA,eAAcA,IAAI,KAAK,KAAKkD,cAA5B;AAAA,OADqB,CAAvB;AAIA,YAAM1C,WAAW,GACd0C,cAAc,IAAI3E,oBAAoB,CAAC2E,cAAD,CAApB,CAAqC,CAArC,EAAwCjiB,KAA3D,IACAsF,OAAO,CAACga,EAFV;AAIAha,MAAAA,OAAO,CAACia,WAAR,GAAsBA,WAAW,QAAMA,WAAN,GAAsBja,OAAO,CAACga,EAA/D;AAEA,aAAOha,OAAP;AACD;AAzCH;;AAAA;AAAA;;AA4CA,MAAM4c,gBAAgB,GAAI5c,OAAD,IAA8BxD,KAAD,IACpDA,KAAK,CAACid,IAAN,KAAezZ,OAAO,CAACma,SADzB;;AAGA,MAAa0C,eAAe,GAAI3f,MAAD,IAC7B8C,OADyD;AAGzD,QAAM8c,YAAY,GAAG5f,MAAM,CAAC0C,IAAP,CAAYgd,gBAAgB,CAAC5c,OAAD,CAA5B,CAArB;AAEA,SAAO8c,YAAY,GAAGA,YAAY,CAACD,eAAb,CAA6B7c,OAA7B,CAAH,GAA2CA,OAA9D;AACD,CANM;;SCjDS+c,iBACdriB,OACA6Q;AAEA,MAAI7Q,KAAK,CAAC+N,KAAV,EAAiB,OAAO/N,KAAK,CAAC+N,KAAb;AAEjB,MAAIpI,YAAY,CAAC3F,KAAD,CAAhB,EAAyB,OAAO4Q,eAAe,CAAC5Q,KAAD,EAAQ6Q,KAAR,CAAtB;AACzB,MAAIhL,aAAa,CAAC7F,KAAD,CAAjB,EAA0B,OAAOA,KAAK,CAACmO,WAAb;AAE1B,SAAO,EAAP;AACD;;SCfemU,iBAAiB7a;AAC/B,SAAO,EAACA,SAAD,YAACA,SAAS,CAAEH,QAAX,CAAoB,aAApB,CAAD,KAAuC,EAACG,SAAD,YAACA,SAAS,CAAEH,QAAX,CAAoB,oBAApB,CAAD,CAA9C;AACD;;ACsCD,WAAYib;AACVA,EAAAA,+BAAA,OAAA;AACAA,EAAAA,8BAAA,OAAA;AACD,CAHD,EAAYA,gCAAwB,KAAxBA,gCAAwB,KAAA,CAApC;;AAKA,WAAYC;AACV;AACAA,EAAAA,4BAAA,WAAA;AACA;;AACAA,EAAAA,+BAAA,cAAA;AACA;;AACAA,EAAAA,iCAAA,gBAAA;AACA;;AACAA,EAAAA,8BAAA,aAAA;AACA;;AACAA,EAAAA,qCAAA,oBAAA;AACA;;AACAA,EAAAA,kCAAA,iBAAA;AACAA,EAAAA,4BAAA,WAAA;AACAA,EAAAA,2BAAA,UAAA;AACA;;AACAA,EAAAA,8BAAA,aAAA;AACA;;AACAA,EAAAA,iCAAA,gBAAA;AACAA,EAAAA,gCAAA,eAAA;AACAA,EAAAA,mCAAA,kBAAA;AACAA,EAAAA,8BAAA,aAAA;AACAA,EAAAA,iCAAA,gBAAA;AACAA,EAAAA,6BAAA,YAAA;AACAA,EAAAA,6BAAA,YAAA;AACD,CAzBD,EAAYA,0BAAkB,KAAlBA,0BAAkB,KAAA,CAA9B;;SC3CgBC,WAAW9Q;AACzB,MAAI9B,MAAM,GAAG8B,GAAb;AACA,MAAI+Q,OAAO,GAAG,IAAd;;AAEA,MAAI/Q,GAAG,IAAI,QAAX,EAAqB;AACnB9B,IAAAA,MAAM,GAAG8B,GAAG,GAAG,OAAf;AACA+Q,IAAAA,OAAO,GAAG,KAAV;AACD,GAHD,MAGO,IAAI/Q,GAAG,IAAI,KAAX,EAAkB;AACvB9B,IAAAA,MAAM,GAAG8B,GAAG,GAAG,KAAf;AACA+Q,IAAAA,OAAO,GAAG,IAAV;AACD;;AAED,SAAUnI,gBAAgB,CAAC1K,MAAD,CAA1B,SAAsC6S,OAAtC;AACD;AAED,SAAgBC,aAAahR;AAC3B,MAAI9B,MAAM,GAAG8B,GAAb;AACA,MAAI+Q,OAAO,GAAG,GAAd;;AAEA,MAAI/Q,GAAG,GAAG,KAAV,EAAiB;AACf9B,IAAAA,MAAM,GAAG8B,GAAG,GAAG,IAAf;AACA+Q,IAAAA,OAAO,GAAG,IAAV;AACD;;AAED,SAAUnI,gBAAgB,CAAC1K,MAAD,CAA1B,SAAsC6S,OAAtC;AACD;AACD,SAAgBE,qBAAqBC,MAAcC;AACjD,kBAAcL,UAAU,CAACI,IAAD,CAAxB,cAAuCF,YAAY,CAACG,SAAD,CAAnD;AACD;AAED,SAAgBC,sBACd1L,OACArT;AAEA,MAAIqT,KAAK,CAAC,CAAD,CAAL,CAAS3X,MAAT,IAAmB,CAAvB,EAA0B;AACxB,WAAO,KAAP;AACD;;AAED,QAAMsjB,MAAM,GAAG3L,KAAK,CAAC,CAAD,CAApB;AACA,QAAM4L,UAAU,GAAGD,MAAM,CAAC,CAAD,CAAzB;AACA,QAAME,SAAS,GAAGF,MAAM,CAACA,MAAM,CAACtjB,MAAP,GAAgB,CAAjB,CAAxB;AACA,QAAMyjB,QAAQ,GAAGnf,UAAU,GAAG,CAA9B;AAEA,SAAOof,eAAU,CAACH,UAAU,CAAC,CAAD,CAAX,EAAgBC,SAAS,CAAC,CAAD,CAAzB,EAA8BC,QAA9B,CAAV,IAAqDC,eAAU,CAACH,UAAU,CAAC,CAAD,CAAX,EAAgBC,SAAS,CAAC,CAAD,CAAzB,EAA8BC,QAA9B,CAAtE;AACD;;SChDeE,SAASC;AACvB,QAAMC,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf;;AAEA,OAAK,IAAIxgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3B,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGugB,MAAM,CAAC7jB,MAA3B,EAAmCsD,CAAC,EAApC,EAAwC;AACtC,YAAM6M,MAAM,GAAGiC,IAAI,CAAC0R,GAAL,CAAS,EAAT,EAAazgB,CAAb,IAAkBwgB,MAAM,CAACvgB,CAAD,CAAvC;;AAEA,UAAI6M,MAAM,GAAGyT,KAAb,EAAoB;AAClB,eAAOzT,MAAP;AACD;AACF;AACF;;AAED,SAAO,CAAP;AACD;;ACPM,MAAM4T,kBAAkB,GAA0B;AACvDC,EAAAA,OAAO,EAAEd,oBAD8C;AAEvDljB,EAAAA,MAAM,EAAEijB;AAF+C,CAAlD;;ACiCP,MAAMgB,cAAc,GAAG,CAAvB;AACA,MAAMC,sBAAsB,GAAqB,CAACC,QAAD,EAAWA,QAAX,CAAjD;AAEA,IAAaC,sBAAb;AAAA;;AAAA;;AAUE,kCACExiB,GADF,EAEEC,OAFF,EAGEwiB,MAHF;;;;;AAKE,8BAAMziB,GAAN,EAAWyiB,MAAX;;AAyLM,gBAAA,GAAS;AACf,YAAKC,IAAL,CAAU,QAAV;AACD,KAFO;;AAxLN,UAAKziB,OAAL,GAAeA,OAAf;AACA,UAAK0iB,iBAAL,GAAyBF,MAAM,CAACE,iBAAhC;AACA,UAAKC,UAAL,GAAkBH,MAAM,CAACG,UAAP,IAAqBT,kBAAvC;AACA,UAAKU,UAAL,GAAkBJ,MAAM,CAACI,UAAzB;;AACA,UAAKC,EAAL,CAAQ,UAAR,EAAoB,MAAKC,cAAzB;;;AAEA,UAAKD,EAAL,CAAQ,QAAR,EAAkB,MAAKE,cAAvB;;;AACD;;AAvBH;AAAA;AAAA,WAyBY,0BAAiB3hB,KAAjB;AACR,mGAAuBA,KAAvB;;AACA,WAAK4hB,oBAAL,CAA0B5hB,KAA1B;AACD;AA5BH;AAAA;AAAA,WA8BY;AACR;;AACA,WAAK6hB,YAAL;AACA,WAAKC,SAAL,CAAe,SAAf;AACD;AAlCH;AAAA;AAAA,WAoCY;AACR;;AACA,WAAKC,gBAAL;AACA,WAAKC,eAAL;AACA,WAAKC,kBAAL;AACA,WAAKC,iBAAL;AACA,WAAKJ,SAAL,CAAe,SAAf;AACD;AA3CH;AAAA;AAAA,WA6CU;AACN,YAAMnf,OAAO,GAAG,KAAKwf,aAArB;AAEA,UAAI,CAACxf,OAAL,EAAc;AACd,YAAM;AAAE+R,QAAAA,KAAF;AAAS3S,QAAAA;AAAT,UAA2BY,OAAjC;;AAEA,UAAIyd,qBAAqB,CAAC1L,KAAD,EAAQ,KAAK/V,GAAL,CAAS0C,UAAjB,CAAzB,EAAuD;AACrD,aAAK+gB,aAAL;AACA,aAAKf,IAAL,CAAU,IAAIgB,0BAAJ,CAAuB1f,OAAvB,EAAgC,IAAI2f,UAAJ,CAAe,SAAf,CAAhC,CAAV;AAEA;AACD;;AAED,UAAI5N,KAAK,CAAC,CAAD,CAAL,CAAS3X,MAAT,KAAoB,CAAxB,EAA2B;AACzB,cAAMwlB,UAAU,GAAGxgB,GAAG,CAACygB,YAAJ,CAAiBvH,OAAjB,CAAnB;AACA,cAAMhb,KAAK,GAAGyU,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd;AACA,YAAI,CAAC6N,UAAL,EAAiB;AACjB,cAAM,CAACE,GAAD,EAAMC,IAAN,IAAcH,UAAU,CAACtiB,KAAD,CAA9B;AAEA,aAAK+hB,eAAL;AACA,aAAKW,qBAAL;AACA,aAAKC,aAAL,CACKH,GAAG,CAACpP,OAAJ,CAAY2N,cAAZ,CADL,UACqC0B,IAAI,CAACrP,OAAL,CAAa2N,cAAb,CADrC,EAEE/gB,KAFF;AAID,OAZD,MAYO;AACL,aAAK8hB,gBAAL;AACD;AACF;AAzEH;AAAA;AAAA,WA2EU;AACN,UAAI,KAAKc,WAAT,EAAsB;AACpB,aAAKC,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKF,WAA5B,CAAnB;AACD;;AAED,YAAMlgB,OAAO,GAAG,KAAKwf,aAArB;AAEA,UAAI,CAACxf,OAAL,EAAc;AACd,YAAM;AAAE+R,QAAAA,KAAF;AAAS3S,QAAAA;AAAT,UAAiBY,OAAvB;AACA,YAAMqgB,YAAY,GAAG,CAAC,GAAGtO,KAAK,CAAC,CAAD,CAAT,CAArB;AAEAsO,MAAAA,YAAY,CAACC,KAAb;AACA,WAAKJ,WAAL,GAAmB,IAAInF,eAAJ,CAAYsF,YAAZ,EAA0B;AAAEjhB,QAAAA;AAAF,OAA1B,CAAnB;AACA,WAAK8gB,WAAL,CAAiBpjB,MAAjB,GAA0B,KAAK+hB,UAAL,IAAmB0B,iBAA7C;AAEA,WAAKf,aAAL,IAAsB,KAAKA,aAAL,CAAmBgB,IAAnB,EAAtB;AACA,WAAKL,UAAL,IAAmB,KAAKA,UAAL,CAAgBM,GAAhB,CAAoB,KAAKP,WAAzB,CAAnB;AACD;AA5FH;AAAA;AAAA,WA8FU;AACN,UAAI,KAAKA,WAAT,EAAsB;AACpB,aAAKC,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKF,WAA5B,CAAnB;AACA,eAAO,KAAKA,WAAZ;AACD;AACF;AAnGH;AAAA;AAAA,WAqGU,wBAAe7iB,KAAf;AACN,YAAM2C,OAAO,GAAG,KAAKwf,aAArB;AACA,YAAM;AAAEkB,QAAAA,SAAF;AAAaC,QAAAA;AAAb,UAA4BtjB,KAAlC;AAEA,UAAI,CAAC2C,OAAD,IAAY0gB,SAAS,KAAK,IAA1B,IAAkCC,UAAU,KAAK,IAArD,EAA2D;AAE3D,YAAM;AAAE5O,QAAAA,KAAF;AAAS3S,QAAAA;AAAT,UAAiBY,OAAvB;AAEA,YAAM1B,QAAQ,GAAGyT,KAAK,CAAC2O,SAAD,CAAL,CAAiBC,UAAjB,CAAjB;AACA,YAAMvmB,MAAM,GAAGwmB,eAAU,CAAC7O,KAAD,EAAQ3S,GAAR,CAAzB;AACA,UAAIyhB,OAAO,GAAG,KAAKjC,UAAL,CAAgBxkB,MAAhB,CAAuBA,MAAvB,CAAd;;AAEA,UAAIqjB,qBAAqB,CAAC1L,KAAD,EAAQ,KAAK/V,GAAL,CAAS0C,UAAjB,CAAzB,EAAuD;AACrD,aAAKoiB,cAAL;AAEA,cAAMvD,IAAI,GAAGwD,aAAQ,CAAChP,KAAD,EAAQ3S,GAAR,CAArB;AAEAyhB,QAAAA,OAAO,GAAG,KAAKjC,UAAL,CAAgBR,OAAhB,CAAwBb,IAAxB,EAA8BnjB,MAA9B,CAAV;AACD,OAND,MAMO,IAAI,KAAK8lB,WAAT,EAAsB;AAC3BlgB,QAAAA,OAAO,CAACX,IAAR;AACA,aAAKkgB,iBAAL;AACD;;AAED,UAAI,KAAKyB,kBAAT,EAA6B;AAC3B,aAAKA,kBAAL,CAAwB1iB,QAAxB,GAAmCA,QAAnC;AACA,aAAK0iB,kBAAL,CAAwBH,OAAxB,GAAkCA,OAAlC;AACD;AACF;AAhIH;AAAA;AAAA,WAkIU;AACN,WAAKI,SAAL,GAAiB,IAAIC,kBAAJ,CAAiB5C,sBAAjB,EAAyC;AACxDuC,QAAAA,OAAO,EAAE,0CAD+C;AAExDzhB,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAF0C;AAGxDtC,QAAAA,MAAM,EAAEqkB,iBAAiB,CAAC;AACxBC,UAAAA,WAAW,EAAE,KAAKzC;AADM,SAAD;AAH+B,OAAzC,CAAjB;AAOA,WAAKwB,UAAL,IAAmB,KAAKA,UAAL,CAAgBM,GAAhB,CAAoB,KAAKQ,SAAzB,CAAnB;AACD;AA3IH;AAAA;AAAA,WA6IU,uBAAcJ,OAAd,EAA+BviB,QAA/B;AACN,WAAK+iB,UAAL,GAAkB,IAAIH,kBAAJ,CAAiB5iB,QAAjB,EAA2B;AAC3CuiB,QAAAA,OAD2C;AAE3CzhB,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAF6B;AAG3CtC,QAAAA,MAAM,EAAEqkB,iBAAiB,CAAC;AACxBC,UAAAA,WAAW,EAAE,KAAKzC,iBADM;AAExB2C,UAAAA,OAAO,EAAE,KAAKC;AAFU,SAAD;AAHkB,OAA3B,CAAlB;AAQA,WAAKpB,UAAL,IAAmB,KAAKkB,UAAxB,IAAsC,KAAKlB,UAAL,CAAgBM,GAAhB,CAAoB,KAAKY,UAAzB,CAAtC;AACD;AAvJH;AAAA;AAAA,WAyJU;AACN,WAAKL,kBAAL,GAA0B,IAAIE,kBAAJ,CAAiB5C,sBAAjB,EAAyC;AACjElf,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GADmD;AAEjEtC,QAAAA,MAAM,EAAEqkB,iBAAiB,CAAC;AACxBC,UAAAA,WAAW,EAAE,KAAKzC;AADM,SAAD;AAFwC,OAAzC,CAA1B;AAMA,WAAKwB,UAAL,IACE,KAAKa,kBADP,IAEE,KAAKb,UAAL,CAAgBM,GAAhB,CAAoB,KAAKO,kBAAzB,CAFF;AAGD;AAnKH;AAAA;AAAA,WAqKU;AACN,UAAI,KAAKC,SAAT,EAAoB;AAClB,aAAKd,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKa,SAA5B,CAAnB;AACA,eAAO,KAAKA,SAAZ;AACD;AACF;AA1KH;AAAA;AAAA,WA4KU;AACN,UAAI,KAAKI,UAAT,EAAqB;AACnB,aAAKlB,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKiB,UAA5B,CAAnB;AACA,eAAO,KAAKA,UAAZ;AACD;AACF;AAjLH;AAAA;AAAA,WAmLU;AACN,UAAI,KAAKL,kBAAT,EAA6B;AAC3B,aAAKb,UAAL,IAAmB,KAAKA,UAAL,CAAgBC,MAAhB,CAAuB,KAAKY,kBAA5B,CAAnB;AACA,eAAO,KAAKA,kBAAZ;AACD;AACF;AAxLH;AAAA;AAAA,WA0LU,8BAAqB3jB,KAArB;AACN,UAAI,KAAK4jB,SAAT,EAAoB;AAClB,aAAKA,SAAL,CAAe3iB,QAAf,GAA0BjB,KAAK,CAACC,KAAN,CAAYgB,QAAtC;AACD;AACF;AA9LH;AAAA;AAAA,WAgMU,mBAAUkjB,MAAV;AACN,YAAM;AAAEhkB,QAAAA;AAAF,UAAc,KAAKvB,OAAzB;;AAEA,UAAIuB,OAAO,IAAI,OAAOA,OAAP,KAAmB,QAAlC,EAA4C;AAC1CA,QAAAA,OAAO,CAACiH,KAAR,CAAc+c,MAAd,GAAuBA,MAAvB;AACD;AACF;AAtMH;;AAAA;AAAA,EAA4CC,+BAA5C;;ICpBaC,qBAAb;AAAA;;AAAA;;AAME,iCACE1lB,GADF,EAEEC,OAFF,EAGEwiB,MAHF;;;;;AAKE,8BAAMziB,GAAN,EAAWyiB,MAAX;;AAaM,uBAAA,GAAgB;AACtB,YAAMze,OAAO,GAAG,MAAKwf,aAArB;AAEA,UAAI,CAACxf,OAAL,EAAc,OAAO,IAAP;AAEd,YAAM;AAAE+R,QAAAA,KAAF;AAAS4P,QAAAA,UAAT;AAAqBviB,QAAAA;AAArB,UAA6BY,OAAnC;AACA,YAAM4hB,WAAW,GAAG7P,KAAK,CAAC,CAAD,CAAL,CAAS3X,MAA7B;AACA,YAAMkE,QAAQ,GAAGyT,KAAK,CAAC,CAAD,CAAL,CAAS6P,WAAW,GAAG,CAAvB,CAAjB;AAEA,YAAMrE,IAAI,GAAGwD,aAAQ,CAAChP,KAAD,EAAQ3S,GAAR,CAArB;AACA,YAAMhF,MAAM,GAAGwmB,eAAU,CAAC7O,KAAD,EAAQ3S,GAAR,EAAauiB,UAAb,CAAzB;AACA,YAAMd,OAAO,GAAGc,UAAU,GACtB,MAAK/C,UAAL,CAAgBR,OAAhB,CAAwBb,IAAxB,EAA8BnjB,MAA9B,CADsB,GAEtB,MAAKwkB,UAAL,CAAgBxkB,MAAhB,CAAuBA,MAAvB,CAFJ;AAIA,aAAO;AACLymB,QAAAA,OADK;AAELviB,QAAAA;AAFK,OAAP;AAID,KAnBO;;AAmDA,uBAAA,GAAgB;AACtB,YAAKogB,IAAL,CAAU,QAAV;AACD,KAFO;;AA/DN,UAAKziB,OAAL,GAAeA,OAAf;AACA,UAAK0iB,iBAAL,GAAyBF,MAAM,CAACE,iBAAhC;AACA,UAAKC,UAAL,GAAkBH,MAAM,CAACG,UAAP,IAAqBT,kBAAvC;;AACA,UAAKW,EAAL,CAAQ,QAAR,EAAkB,MAAK+C,mBAAvB;;AACA,UAAK/C,EAAL,CAAQ,MAAR,EAAgB,MAAK+C,mBAArB;;;AACD;;AAjBH;AAAA;AAAA,WAmBY;AACR;;AACA,WAAK7B,qBAAL;AACD;AAtBH;AAAA;AAAA,WA6CU;AACN,YAAM8B,aAAa,GAAG,KAAKA,aAAL,EAAtB;AACA,UAAIA,aAAa,KAAK,IAAtB,EAA4B;AAE5B,YAAM;AAAEjB,QAAAA,OAAF;AAAWviB,QAAAA;AAAX,UAAwBwjB,aAA9B;AAEA,WAAKd,kBAAL,GAA0B,IAAIE,kBAAJ,CAAiB5iB,QAAjB,EAA2B;AACnDuiB,QAAAA,OADmD;AAEnDzhB,QAAAA,GAAG,EAAE,KAAKpD,GAAL,CAASoD,GAFqC;AAGnDtC,QAAAA,MAAM,EAAEqkB,iBAAiB,CAAC;AACxBG,UAAAA,OAAO,EAAE,KAAKS,aADU;AAExBX,UAAAA,WAAW,EAAE,KAAKzC;AAFM,SAAD;AAH0B,OAA3B,CAA1B;AAQA,WAAKwB,UAAL,IAAmB,KAAKA,UAAL,CAAgBM,GAAhB,CAAoB,KAAKO,kBAAzB,CAAnB;AACD;AA5DH;AAAA;AAAA,WA8DE;AACE,UAAI,KAAKA,kBAAT,EAA6B;AAC3B,cAAMc,aAAa,GAAG,KAAKA,aAAL,EAAtB;AAEA,YAAIA,aAAa,KAAK,IAAtB,EAA4B;AAE5B,cAAM;AAAEjB,UAAAA,OAAF;AAAWviB,UAAAA;AAAX,YAAwBwjB,aAA9B;AAEA,aAAKd,kBAAL,CAAwBH,OAAxB,GAAkCA,OAAlC;AACA,aAAKG,kBAAL,CAAwB1iB,QAAxB,GAAmCA,QAAnC;AACD;AACF;AAzEH;;AAAA;AAAA,EAA2C0jB,qBAA3C;;MCvBaC,SAAS,GAAIC,MAAD,IACvB,CAACzK,KAAK,CAAC0K,UAAU,CAACD,MAAD,CAAX,CAAN,IAAwCE,QAAQ,CAACF,MAAD,CAD3C;;MCIMG,eAAe,GAAG,CAC7BC,KAD6B,EAE7BngB,SAF6B;AAAA;;AAAA,SAGjB,CAAC,OAAOmgB,KAAP,KAAiB,QAAjB,GACTngB,SADS,6CACTA,SAAS,CAAEogB,WAAX,EADS,qBACT,sBAA0BvgB,QAA1B,CAAmCsgB,KAAK,CAACC,WAAN,EAAnC,CADS,GAETD,KAAK,CAAC9Z,IAAN,CAAW5F,IAAI;AAAA;;AAAA,WAAIT,SAAJ,8CAAIA,SAAS,CAAEogB,WAAX,EAAJ,qBAAI,uBAA0BvgB,QAA1B,CAAmCY,IAAI,CAAC2f,WAAL,EAAnC,CAAJ;AAAA,GAAf,CAFQ,KAEuE,KALtD;AAAA,CAAxB;;ACUA,MAAMC,6BAA6B,GAAuC;AAC/E,GAAC9gB,mBAAS,CAACE,IAAX,GAAkBsb,0BAAkB,CAACuF,MAD0C;AAE/E,GAAC/gB,mBAAS,CAACghB,OAAX,GAAqBxF,0BAAkB,CAACyF,SAFuC;AAG/E,GAACjhB,mBAAS,CAACC,IAAX,GAAkBub,0BAAkB,CAAC0F,WAH0C;AAI/E,GAAClhB,mBAAS,CAACI,IAAX,GAAkBob,0BAAkB,CAAC2F,QAJ0C;AAK/E,GAACnhB,mBAAS,CAACG,KAAX,GAAmBqb,0BAAkB,CAAC4F,eALyC;AAM/E,GAACphB,mBAAS,CAACK,KAAX,GAAmBmb,0BAAkB,CAAC6F,YANyC;AAO/E,GAACrhB,mBAAS,CAACshB,OAAX,GAAqB9F,0BAAkB,CAAC8F,OAPuC;AAQ/E,GAACthB,mBAAS,CAACuhB,OAAX,GAAqB/F,0BAAkB,CAAC+F;AARuC,CAA1E;AAWP,AAAO,MAAMC,uBAAuB,GAAoB,CACtDjK,iBAAa,CAACkK,KADwC,EAEtDlK,iBAAa,CAACG,KAFwC,EAGtDH,iBAAa,CAACC,QAHwC,EAItDD,iBAAa,CAACmK,MAJwC,CAAjD;;AAOP,MAAMC,WAAW,GAAG,CAAC3oB,KAAD,EAAyB+Q,MAAzB;AAClB,SAAOA,MAAM,UACJmJ,UAAU,CAACla,KAAD,EAAQ;AACrBma,IAAAA,UAAU,EAAEb,kBAAU,CAACsP,GADF;AAErBvgB,IAAAA,YAAY,EAAErI;AAFO,GAAR,CADN,SAKTA,KAAK,GACLA,KAAK,CAACqR,QAAN,EADK,GAEL,CAPJ;AAQD,CATD;;AAWA,SAAgBwX,gBAAgB3iB;AAC9B,QAAM;AAAE4iB,IAAAA,kBAAF;AAAsB9oB,IAAAA,KAAtB;AAA6BkI,IAAAA,IAA7B;AAAmCnC,IAAAA;AAAnC,MAAiDG,WAAvD;AACA,QAAM6iB,QAAQ,GAAGC,wBAAwB,CAACF,kBAAD,CAAxB,IAAsEA,kBAAvF;AAEA,QAAMG,aAAa,GAAG,OAAOjpB,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACsH,QAAN,CAAe,KAAf,CAA7B,GAAqDtH,KAAK,CAAC0H,KAAN,CAAY,KAAZ,CAArD,GAA0E1H,KAAhG;AACA,QAAM+Q,MAAM,GAAG7I,IAAI,KAAKqW,iBAAa,CAACC,QAAtC;AACA,QAAM0K,gBAAgB,GAAGC,iBAAiB,CAAC7hB,QAAlB,CAA2BwhB,kBAA3B,CAAzB;AACA,QAAMpY,WAAW,GAAG,CAAC8X,uBAAuB,CAAClhB,QAAxB,CAAiCY,IAAjC,CAAD,IAA4D+gB,aAAa,KAAK,IAAlG;;AAEA,MAAIC,gBAAgB,IAAInhB,KAAK,CAACC,OAAN,CAAcihB,aAAd,CAApB,IAAoDA,aAAa,CAAC,CAAD,CAAb,KAAqB3X,SAA7E,EAAwF;AACtF,WAAU0X,wBAAwB,CAACF,kBAAD,CAAlC,SAAgF/iB,SAAhF,UAA8F4iB,WAAW,CACvGM,aAAa,CAAC,CAAD,CAD0F,EAEvGlY,MAFuG,CAAzG,UAGM4X,WAAW,CAACM,aAAa,CAAC,CAAD,CAAd,EAAmBlY,MAAnB,CAHjB;AAID;;AAED,QAAMqY,cAAc,GAAGrhB,KAAK,CAACC,OAAN,CAAcihB,aAAd,IACnBA,aAAa,CAAC3nB,GAAd,CAAkB+nB,GAAG,IAAIV,WAAW,CAACU,GAAD,EAAMtY,MAAN,CAApC,CADmB,GAEnB4X,WAAW,CAACM,aAAD,EAAmClY,MAAnC,CAFf;AAIA,QAAMuY,WAAW,GAAGC,YAAK,CAACN,aAAD,CAAL,GAAuB,QAAvB,GAAkCG,cAAtD;AAEA,QAAMI,YAAY,GAChB9Y,WAAW,IAAI,OAAO4Y,WAAP,KAAuB,QAAtC,SACQG,cAAI,CAACC,eAAL,CAAqBC,mBAAmB,CAACL,WAAD,EAAcR,kBAAd,CAAxC,CADR,SAEIQ,WAHN;AAKA,SAAUvjB,SAAV,SAAuBgjB,QAAvB,SAAmCS,YAAnC;AACD;AAED,SAAgBI,sBAAsB1jB;AACpC,MAAI6B,KAAK,CAACC,OAAN,CAAc9B,SAAd,CAAJ,EAA8B;AAC5B,kBAAY2iB,eAAe,CAAC3iB,SAAS,CAAC,CAAD,CAAV,CAA3B,SAA6CA,SAAS,CAAC,CAAD,CAAT,CAAaF,SAA1D,SAAuE6iB,eAAe,CAAC3iB,SAAS,CAAC,CAAD,CAAV,CAAtF;AACD;;AAED,SAAO2iB,eAAe,CAAC3iB,SAAD,CAAtB;AACD;AAED,SAAgB2jB;MAAgB;AAAE9jB,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBhG,IAAAA;AAAxB;AAC9B,QAAM8oB,kBAAkB,GAAGhB,6BAA6B,CAAC9hB,SAAD,CAAxD;AACA,QAAM8jB,eAAe,GAAGC,oBAAoB,CAAC/pB,KAAD,EAAqC8oB,kBAArC,CAA5C;AAEA;AACE/iB,IAAAA;AADF,KAEK+jB,eAFL;AAID;;AAED,SAASC,oBAAT,CAA8B/pB,KAA9B,EAAgE8oB,kBAAhE;AACE,MAAI,OAAO9oB,KAAP,KAAiB,QAArB,EAA+B;AAC7B,UAAMgqB,aAAa,GAAG,EAAElB,kBAAkB,KAAKtG,0BAAkB,CAACyF,SAA5C,CAAtB;;AAEA,QAAIjoB,KAAK,CAACiqB,UAAN,CAAiBR,cAAI,CAACS,UAAtB,KAAqClqB,KAAK,CAACmqB,QAAN,CAAeV,cAAI,CAACS,UAApB,CAAzC,EAA0E;AACxE,aAAO;AACLlqB,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAEL2kB,QAAAA,kBAAkB,EAAEsB,kBAAkB,CAACJ,aAAD;AAFjC,OAAP;AAID;;AAED,QAAIhqB,KAAK,CAACiqB,UAAN,CAAiBR,cAAI,CAACS,UAAtB,CAAJ,EAAuC;AACrC,aAAO;AACLlqB,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,CADF;AAEL2kB,QAAAA,kBAAkB,EAAEuB,mBAAmB,CAACL,aAAD;AAFlC,OAAP;AAID;;AAED,QAAIhqB,KAAK,CAACmqB,QAAN,CAAeV,cAAI,CAACS,UAApB,CAAJ,EAAqC;AACnC,aAAO;AACLlqB,QAAAA,KAAK,EAAEA,KAAK,CAACmE,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CADF;AAEL2kB,QAAAA,kBAAkB,EAAEwB,qBAAqB,CAACN,aAAD;AAFpC,OAAP;AAID;AACF;;AAED,SAAO;AAAEhqB,IAAAA,KAAF;AAAS8oB,IAAAA;AAAT,GAAP;AACD;;AAED,MAAMyB,WAAW,GAAIvqB,KAAD,UAAgCA,KAAhC,MAApB;;AACA,MAAMwqB,aAAa,GAAIxqB,KAAD,IAA+BA,KAA/B,MAAtB;;AACA,MAAMyqB,WAAW,GAAIzqB,KAAD,UAAgCA,KAApD;;AAEA,SAAS2pB,mBAAT,CAA6B3pB,KAA7B,EAA4C+oB,QAA5C;AACE,UAAQA,QAAR;AACE,SAAKvG,0BAAkB,CAACkI,QAAxB;AACA,SAAKlI,0BAAkB,CAACmI,WAAxB;AACE,aAAOJ,WAAW,CAACvqB,KAAD,CAAlB;;AACF,SAAKwiB,0BAAkB,CAACoI,UAAxB;AACA,SAAKpI,0BAAkB,CAACqI,aAAxB;AACE,aAAOL,aAAa,CAACxqB,KAAD,CAApB;;AACF,SAAKwiB,0BAAkB,CAACsI,QAAxB;AACA,SAAKtI,0BAAkB,CAACuI,WAAxB;AACE,aAAON,WAAW,CAACzqB,KAAD,CAAlB;;AACF,SAAKwiB,0BAAkB,CAAC8F,OAAxB;AACE,aAAOmB,cAAI,CAACuB,OAAZ;;AACF,SAAKxI,0BAAkB,CAAC+F,OAAxB;AACE,aAAOkB,cAAI,CAACwB,OAAZ;;AACF;AACE,aAAOjrB,KAAP;AAfJ;AAiBD;;ICzIYkrB,eAAb;AAGE,2BAAoBhlB,WAApB;QAAoBA;AAAAA,MAAAA,cAA2B;;;;;AAA3B,kBAAA,GAAAA,WAAA;AAClB,SAAKilB,oBAAL,GAA4B,IAAI/kB,8BAAJ,CAAyBF,WAAzB,CAA5B;AACD;;AALH;AAAA;AAAA,SAaE;AACE,YAAM;AAAElG,QAAAA;AAAF,UAAY,KAAKmrB,oBAAvB;;AAEA,UAAInrB,KAAK,YAAYsG,KAArB,EAA4B;AAC1B;AACAG,QAAAA,OAAO,CAACC,IAAR,CAAa1G,KAAK,CAACorB,OAAnB;AACD;;AAED,aAAOprB,KAAK,YAAYsG,KAAjB,GAAyB,EAAzB,GAA8BtG,KAAK,CAACqG,WAAN,CAAkB/E,GAAlB,CAAsBuoB,eAAtB,CAArC;AACD;AAtBH;AAAA;AAAA,SAwBE;AACE,YAAM;AAAE7pB,QAAAA;AAAF,UAAY,KAAKmrB,oBAAvB;;AAEA,UAAInrB,KAAK,YAAYsG,KAArB,EAA4B;AAC1B,eAAO,IAAP;AACD;;AAED,YAAM+kB,aAAa,GAAGrrB,KAAK,CAACsrB,cAAN,CAAqBhkB,QAArB,CAA8BN,mBAAS,CAACukB,MAAxC,CAAtB;AACA,YAAMC,cAAc,GAAGxrB,KAAK,CAACsrB,cAAN,CAAqBhkB,QAArB,CAA8BN,mBAAS,CAACykB,OAAxC,CAAvB;;AAEA,UAAIJ,aAAa,IAAIG,cAArB,EAAqC;AACnC,eAAO,IAAP;AACD;;AAED,aAAOH,aAAa,GAAG9I,gCAAwB,CAACmJ,EAA5B,GAAiCF,cAAc,GAAGjJ,gCAAwB,CAACoJ,GAA5B,GAAkC,IAArG;AACD;AAvCH;AAAA;AAAA,WAyCS;AACL,aAAO,KAAKR,oBAAL,CAA0BnrB,KAA1B,YAA2CsG,KAAlD;AACD;AA3CH;AAAA;AAAA,WA6CS;AACL,aAAO,KAAKJ,SAAZ;AACD;AA/CH;AAAA;AAAA,WAOE,cAAY0lB,UAAZ,EAA+C5lB,SAA/C;AACE,YAAME,SAAS,GAAG,CAAA0lB,UAAU,QAAV,YAAAA,UAAU,CAAEtqB,GAAZ,CAAgBsoB,qBAAhB,EAAuC/hB,IAAvC,OAAgD7B,SAAhD,YAAiE,IAAnF;AAEA,aAAO,IAAIklB,eAAJ,CAAoBhlB,SAApB,CAAP;AACD;AAXH;;AAAA;AAAA;;MC0Ea2lB,cAAc,GACzB7rB,KAD4B,IAEe8H,QAAQ,CAAC9H,KAAD,CAAR,IAAmB,UAAUA,KAFnE;AAIP,MAAa8rB,yBAAyB,GAAI5lB,SAAD;AACvC,QAAM6lB,KAAK,GAAG7lB,SAAS,CAACwB,KAAV,CAAgB,GAAhB,CAAd;AAEA,SAAOqkB,KAAK,CAAC,CAAD,CAAL,CAAS9B,UAAT,CAAoB,GAApB,IAA2B8B,KAAK,CAAC,CAAD,CAAL,CAAS5nB,KAAT,CAAe,CAAf,CAA3B,GAA+C4nB,KAAK,CAAC,CAAD,CAA3D;AACD,CAJM;AAMP,MAAaC,oBAAoB,GAAG,CAClC9lB,SADkC,EAElC+lB,SAFkC;;;AAIlC,MAAIC,IAAJ;;AAEA,MAAID,SAAJ,EAAe;AACb,UAAMF,KAAK,GAAG7lB,SAAS,CAACwB,KAAV,CAAgB,MAAhB,EAAwBpG,GAAxB,CAA4B6qB,IAAI,IAAIA,IAAI,CAAChoB,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAApC,CAAd;AAEA+nB,IAAAA,IAAI,GAAGH,KAAK,CAACE,SAAS,GAAG,CAAb,CAAZ;AACD,GAJD,MAIO;AACLC,IAAAA,IAAI,GAAGhmB,SAAP;AACD;;AAED,kBAAOgmB,IAAP,qBAAO,MAAMxkB,KAAN,CAAY,GAAZ,CAAP;AACD,CAfM;AAiBP,MAAa0kB,wBAAwB,GAAG,CACtClmB,SADsC,EAEtC+lB,SAFsC;;;AAItC,kCAAOD,oBAAoB,CAAC9lB,SAAD,EAAY+lB,SAAZ,CAA3B,qBAAO,sBAA6C,CAA7C,CAAP;AACD,CALM;AAOP,MAAaI,yBAAyB,GAAG,CACvCnmB,SADuC,EAEvC+lB,SAFuC;;;AAIvC,mCAAOD,oBAAoB,CAAC9lB,SAAD,EAAY+lB,SAAZ,CAA3B,qBAAO,uBAA6C,CAA7C,CAAP;AACD,CALM;AAOP,MAAaK,gBAAgB,GAAIpmB,SAAD,IAC9B,CAAAA,SAAS,QAAT,YAAAA,SAAS,CAAEoB,QAAX,CAAoB,GAApB,MAA4B,KADvB;AAGP,MAAailB,sBAAsB,GACjC9kB,SADoC;AAGpC,SAAO+kB,eAAe,CAAC/kB,SAAD,CAAf,IAA8BglB,sBAArC;AACD,CAJM;AAMP,MAAaC,sBAAsB,GAAG,CACpC1sB,KADoC,EAEpC2oB,WAFoC;AAIpC,QAAM;AAAE5iB,IAAAA,SAAF;AAAaoI,IAAAA;AAAb,MAA6BnO,KAAnC;AAEA,SAAO+F,SAAS,IAAI4iB,WAAb,GACFA,WAAW,CACV5iB,SAAS,CAACmC,IADA,EAEViG,WAFU,EAGVpI,SAAS,CAAC4mB,YAHA,CADT,GAMHxe,WANJ;AAOD,CAbM;AAeP,MAAa6C,gBAAc,GAAG,OAE5BF,QAF4B,EAG5BC,MAH4B,EAI5BF,KAJ4B;MAC5B;AAAEjK,IAAAA,IAAF;AAAQC,IAAAA;AAAR;AAKA,SAAO;AACLD,IAAAA,IAAI,EACFA,IAAI,KAAK,IAAT,IAAiBiK,KAAK,KAAK,CAA3B,GACIE,MAAM,GACJnK,IADI,GAEJkK,QAAQ,GACR,CAAClK,IADO,GAER,CAACA,IAAD,GAAQ,CALd,GAMIA,IARD;AASLC,IAAAA;AATK,GAAP;AAWD,CAjBM;AAmBP,MAAa+lB,qBAAqB,GAAG,CACnC5sB,KADmC,EAEnC2oB,WAFmC,EAGnC9X,KAHmC;;;AAKnC,QAAMC,QAAQ,GAAG,qBAAA9Q,KAAK,CAAC+F,SAAN,sCAAiBmC,IAAjB,MAA0B,QAA3C;AACA,QAAM6I,MAAM,GAAG,sBAAA/Q,KAAK,CAAC+F,SAAN,uCAAiBmC,IAAjB,MAA0B,UAAzC;AAEA,QAAM;AAAEtB,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAemK,gBAAc,CAAChR,KAAD,EAAQ8Q,QAAR,EAAkBC,MAAlB,EAA0BF,KAA1B,CAAnC;AAEA,QAAMgc,aAAa,GAAGlE,WAAW,GAC7BA,WAAW,sBACT3oB,KAAK,CAAC+F,SADG,qBACT,kBAAiBmC,IADR,EAETtB,IAFS,uBAGT5G,KAAK,CAAC+F,SAHG,qBAGT,kBAAiB4mB,YAHR,CADkB,GAM7B/lB,IANJ;AAOA,QAAMkmB,WAAW,GAAGnE,WAAW,GAC3BA,WAAW,sBACT3oB,KAAK,CAAC+F,SADG,qBACT,kBAAiBmC,IADR,EAETrB,EAFS,uBAGT7G,KAAK,CAAC+F,SAHG,qBAGT,kBAAiB4mB,YAHR,CADgB,GAM3B9lB,EANJ;;AAQA,MAAID,IAAI,KAAK,IAAb,EAAmB;AACjB,gBAAUkmB,WAAV,IAAwB,CAAC/b,MAAD,SAAcb,IAAI,CAACe,CAAL,CAAO,SAAP,EAAkB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAlB,CAAd,GAAqD,EAA7E;AACD;;AAED,MAAI1J,EAAE,KAAK,IAAX,EAAiB;AACf,iBAAU,CAACkK,MAAD,GAAab,IAAI,CAACe,CAAL,CAAO,MAAP,EAAe;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAf,CAAb,SAAkD,EAA5D,IAAiEsc,aAAjE;AACD;;AAED,SAAOjmB,IAAI,KAAKC,EAAT,QAAiBgmB,aAAjB,GAAsCA,aAAtC,WAAyDC,WAAhE;AACD,CAlCM;AAoCP,MAAaC,mBAAmB,GAC9BC,SADiC;;;AAGjC,SACE,0BAAAC,qBAAqB,CAACD,SAAS,CAACE,YAAX,CAArB,2CAA+Cpf,IAA/C,CAAoDqf,KAAK;;;AACvD,UAAMC,UAAU,GAAIC,GAAG,qBACrBL,SAAS,CAACjjB,KADW,qBACrB,iBAAiB3H,MADI,EAErB+qB,KAFqB,CAAvB;AAKA,WAAO,CAAAC,UAAU,QAAV,YAAAA,UAAU,CAAEllB,IAAZ,MAAqB,aAA5B;AACD,GAPD,MAOM,KARR;AAUD,CAbM;AAeP,MAAaolB,qBAAqB,GAAG;MAAC;AACpCpnB,IAAAA,SADoC;AAEpCH,IAAAA,SAFoC;AAGpC4iB,IAAAA;AAHoC;AASpC,QAAMoD,KAAK,GAAG7lB,SAAH,oBAAGA,SAAS,CAAEwB,KAAX,CAAiB,MAAjB,CAAd;AACA,QAAMyG,WAAW,GAAG4d,KAAK,QAAL,IAAAA,KAAK,CAAG,CAAH,CAAL,GAAcA,KAAK,CAAC,CAAD,CAAL,CAAS9B,UAAT,CAAoB,GAApB,KAA4B8B,KAAK,CAAC,CAAD,CAAL,CAAS5B,QAAT,CAAkB,GAAlB,CAA5B,GAAqD4B,KAAK,CAAC,CAAD,CAAL,CAAS5nB,KAAT,CAAe,CAAf,EAAkB,CAAC,CAAnB,CAArD,GAA6E4nB,KAAK,CAAC,CAAD,CAAhG,GAAuG,EAA3H;AAEA,SAAOhmB,SAAS,IAAI4iB,WAAb,GACHA,WAAW,CAAC5iB,SAAS,CAACmC,IAAX,EAAiBiG,WAAjB,EAA8BpI,SAAS,CAAC4mB,YAAxC,CADR,GAEHxe,WAFJ;AAGD,CAfM;AAiBP,SAAgBof,8BACdH,YACArnB,WACA4iB,aACA9X;AAEA,MAAI,CAAC9K,SAAL,EAAgB,OAAO,EAAP;AAEhB,MAAIqnB,UAAU,CAACrf,KAAf,EAAsB,OAAOqf,UAAU,CAACrf,KAAlB;AAEtB,QAAM/N,KAAK,GAAG;AACZuN,IAAAA,cAAc,EAAEnF,iBAAiB,CAACglB,UAAU,CAACptB,KAAZ,CADrB;AAEZ+F,IAAAA;AAFY,GAAd;AAKA,QAAMynB,IAAI,GAAGpB,wBAAwB,CAACgB,UAAU,CAAClnB,SAAZ,EAAuB,CAAvB,CAArC;AACA,QAAMunB,WAAW,GAAGD,IAAI,CAAClmB,QAAL,CAAc,GAAd,CAApB;AAECtH,EAAAA,KAAoB,CAAC4G,IAArB,GAA4B6mB,WAAW,GACpCpB,yBAAyB,CAACe,UAAU,CAAClnB,SAAZ,EAAuB,CAAvB,CADW,GAEpC,IAFH;AAGAlG,EAAAA,KAAoB,CAAC6G,EAArB,GACCumB,UAAU,CAAClnB,SAAX,CAAqBoB,QAArB,CAA8B,MAA9B,KAAyCmmB,WAAzC,GACIpB,yBAAyB,CAACe,UAAU,CAAClnB,SAAZ,EAAuB,CAAvB,CAD7B,GAEI,CAACunB,WAAD,GACApB,yBAAyB,CAACe,UAAU,CAAClnB,SAAZ,EAAuB,CAAvB,CADzB,GAEA,IALL;AAOD,MAAIP,YAAY,CAAC3F,KAAD,CAAhB,EACE,OAAO4sB,qBAAqB,CAAC5sB,KAAD,EAAsB2oB,WAAtB,EAAmC9X,KAAnC,CAA5B;AACF,MAAIhL,aAAa,CAAC7F,KAAD,CAAjB,EACE,OAAO0sB,sBAAsB,CAAC1sB,KAAD,EAAuB2oB,WAAvB,CAA7B;AAEF,SAAO,EAAP;AACD;AAwBD;AACA;;AACA,MAAa+E,qBAAqB,GAAqB;AACrD;;AAAA,KAA2B;AACzBxW,IAAAA,SAAS,EAAE,WADc;AAEzBvC,IAAAA,WAAW,EAAE,CAFY;AAGzBF,IAAAA,WAAW,EAAE;AAHY,GAD0B;AAMrD;;AAAA,KAAgC;AAC9BkZ,IAAAA,WAAW,EAAE;AADiB,GANqB;AASrD;;AAAA,KAA0B;AACxBtiB,IAAAA,MAAM,EAAE;AACNoH,MAAAA,KAAK,EAAE,CADD;AAENiC,MAAAA,KAAK,EAAE;AAFD;AADgB,GAT2B;AAerD;;AAAA,KAA6B;AAC3BvI,IAAAA,IAAI,EAAE;AACJuI,MAAAA,KAAK,EAAE,WADH;AAEJK,MAAAA,UAAU,EAAE;AAFR,KADqB;AAK3B1J,IAAAA,MAAM,EAAE;AACNoH,MAAAA,KAAK,EAAE,CADD;AAENiC,MAAAA,KAAK,EAAE;AAFD;AALmB;AAfwB,CAAhD;AA2BP,MAAakZ,sBAAsB,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAA/B;;AAGP,MAAaC,oBAAoB,GAA2B;AAC1DC,EAAAA,iBAAiB,EAAE,CADuC;AAE1DC,EAAAA,iBAAiB,EAAE,EAFuC;AAG1DC,EAAAA,gBAAgB,EAAE,EAHwC;AAI1DC,EAAAA,sBAAsB,EAAE,EAJkC;AAK1DC,EAAAA,cAAc,EAAE;AAL0C,CAArD;;AAQP,MAAMC,0BAA0B,GAAG,CACjCC,UADiC,EAEjC3mB,SAFiC,EAGjC4mB,qBAHiC,EAIjCnmB,IAJiC;AAMjC,MAAImmB,qBAAqB,CAAC/mB,QAAtB,CAA+BG,SAA/B,CAAJ,EAA+C;AAC7C,UAAM6mB,qBAAqB,GAAGC,sBAAsB,CAClDb,qBAAqB,CAACxlB,IAAD,CAD6B,EAElDT,SAFkD,CAApD;;AAKA,QAAI6mB,qBAAJ,EAA2B;AACzB,aAAOA,qBAAP;AACD;;AACD,QACEV,sBAAsB,CAACtmB,QAAvB,CAAgCG,SAAhC,KACAomB,oBAAoB,CAACO,UAAU,CAAClmB,IAAZ,CAFtB,EAGE;AACA,aAAO2lB,oBAAoB,CAACO,UAAU,CAAClmB,IAAZ,CAA3B;AACD;AACF;;AAED,SAAOE,iBAAiB,CAACmmB,sBAAsB,CAACH,UAAD,EAAa3mB,SAAb,CAAvB,CAAxB;AACD,CAxBD;;AA0BA,MAAa+mB,qBAAqB,GAAG,CACnCpsB,MADmC,EAEnC0G,IAFmC,EAGnC9I,KAHmC,KAKnCsI,qBAAqB,CAAC,MAAMtI,KAAP,CAArB,CACEoC,MADF,EAEE0G,IAFF,CALK;;AAUP,MAAM2lB,iBAAiB,GAA8C,CACnEL,UADmE,EAEnE3mB,SAFmE,EAGnE4mB,qBAHmE,EAInE9gB,cAJmE;AAMnE,SAAOihB,qBAAqB,cAErBJ,UAFqB;AAGxBlX,IAAAA,SAAS,EAAEiX,0BAA0B,CACnCC,UADmC,EAEnC,WAFmC,EAGnCC,qBAHmC;;AAAA,KAHb;AASxB5Z,IAAAA,WAAW,EAAE0Z,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KATf;AAexB1Z,IAAAA,WAAW,EAAEwZ,0BAA0B,CACrCC,UADqC,EAErC,aAFqC,EAGrCC,qBAHqC;;AAAA,KAff;AAqBxBva,IAAAA,IAAI,EAAEqa,0BAA0B,CAC9BC,UAD8B,EAE9B,MAF8B,EAG9BC,qBAH8B;;AAAA,KArBR;AA2BxBjhB,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ;AA3BgB,MA6B1B3F,SA7B0B,EA8B1B8F,cA9B0B,CAA5B;AAgCD,CAtCD;;AA6CA,SAAgBmhB,cAActsB,QAAqB0R;AACjD,QAAM4B,MAAM,GAAGtN,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAAhC;AACA,QAAMjD,KAAK,GAAGrK,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CAA/B;;AAEA,MAAIA,KAAK,KAAKiD,MAAd,EAAsB;AACpB,WAAO;AACLjD,MAAAA,KAAK,EAAEqB,IADF;AAEL4B,MAAAA,MAAM,EAAE5B;AAFH,KAAP;AAID;;AAED,QAAM6a,KAAK,GAAGjZ,MAAM,GAAGjD,KAAvB;;AAEA,MAAIA,KAAK,GAAGiD,MAAZ,EAAoB;AAClB,WAAO;AACLjD,MAAAA,KAAK,EAAEqB,IADF;AAEL4B,MAAAA,MAAM,EAAEA,MAAM,GAAG,CAAC5B,IAAI,GAAGrB,KAAR,IAAiBkc;AAF7B,KAAP;AAID;;AAED,SAAO;AACLlc,IAAAA,KAAK,EAAEA,KAAK,GAAG,CAACqB,IAAI,GAAG4B,MAAR,IAAkBiZ,KAD5B;AAELjZ,IAAAA,MAAM,EAAE5B;AAFH,GAAP;AAID;;AAED,MAAM8a,sBAAsB,GAA+B,CACzDR,UADyD,EAEzD3mB,SAFyD,EAGzD4mB,qBAHyD,EAIzD9gB,cAJyD;AAMzD,MAAInL,MAAM,gBAAQgsB,UAAR,CAAV;;AAEA,MAAI7jB,mBAAmB,CAACnI,MAAD,CAAvB,EAAiC;AAC/BA,IAAAA,MAAM,CAACurB,WAAP,GAAqBQ,0BAA0B,CAC7CC,UAD6C,EAE7C,aAF6C,EAG7CC,qBAH6C;;AAAA,KAA/C;AAMD;;AAED,MAAI5mB,SAAS,KAAK,QAAd,IAA0BA,SAAS,KAAK,OAA5C,EAAqD;AACnD,UAAM;AAAEiO,MAAAA,MAAF;AAAUjD,MAAAA;AAAV,QAAoBic,aAAa,CACrCN,UADqC,EAErC7gB,cAFqC,CAAvC;AAKAnL,IAAAA,MAAM,CAACsT,MAAP,GAAgBA,MAAhB;AACAtT,IAAAA,MAAM,CAACqQ,KAAP,GAAeA,KAAf;AACD,GARD,MAQO;AACLrQ,IAAAA,MAAM,CAACqQ,KAAP,GAAe0b,0BAA0B,CACvCC,UADuC,EAEvC,OAFuC,EAGvCC,qBAHuC;;AAAA,KAAzC;AAMAjsB,IAAAA,MAAM,CAACsT,MAAP,GAAgBtT,MAAM,CAACqQ,KAAvB;AAEArQ,IAAAA,MAAM,GAAGosB,qBAAqB,CAACpsB,MAAD,EAASqF,SAAT,EAAoB8F,cAApB,CAA9B;AACD;;AAEDnL,EAAAA,MAAM,CAACgL,MAAP,GAAgB,CACbhF,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAAjB,GAAsE,CADzD,EAEbtN,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CAAjB,GAAqE,CAFxD,CAAhB;AAKA,SAAOrQ,MAAP;AACD,CA3CD;;AA6CA,MAAMysB,gBAAgB,GAAkC,CACtDT,UADsD,EAEtD3mB,SAFsD,EAGtD4mB,qBAHsD,EAItD9gB,cAJsD;AAMtD,SAAOihB,qBAAqB,cAErBJ,UAFqB;AAGxBlmB,IAAAA,IAAI,EAAE,gBAHkB;AAIxBmD,IAAAA,MAAM,EAAE;AACNqJ,MAAAA,KAAK,EAAEyZ,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAON5b,MAAAA,KAAK,EAAE0b,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAJgB,MAmB1B5mB,SAnB0B,EAoB1B8F,cApB0B,CAA5B;AAsBD,CA5BD;;AA8BA,MAAMuhB,mBAAmB,GAAiC,CACxDV,UADwD,EAExD3mB,SAFwD,EAGxD4mB,qBAHwD,EAIxD9gB,cAJwD;AAMxD,SAAOihB,qBAAqB,cAErBJ,UAFqB;AAGxBjiB,IAAAA,IAAI,EAAE;AACJuI,MAAAA,KAAK,EAAEyZ,0BAA0B,CAC/BC,UAD+B,EAE/B,YAF+B,EAG/BC,qBAH+B;;AAAA,OAD7B;AAOJtZ,MAAAA,UAAU,EAAEoZ,0BAA0B,CACpCC,UADoC,EAEpC,iBAFoC,EAGpCC,qBAHoC;;AAAA;AAPlC,KAHkB;AAiBxBhjB,IAAAA,MAAM,EAAE;AACNqJ,MAAAA,KAAK,EAAEyZ,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAON5b,MAAAA,KAAK,EAAE0b,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAjBgB,MAgC1B5mB,SAhC0B,EAiC1B8F,cAjC0B,CAA5B;AAmCD,CAzCD;;AA2CA,MAAMwhB,cAAc,GAA4B,CAC9CX,UAD8C,EAE9C3mB,SAF8C,EAG9C4mB,qBAH8C,EAI9C9gB,cAJ8C;AAM9C,SAAQihB,qBAAqB,cAEtBJ,UAFsB;AAGzBjiB,IAAAA,IAAI,EAAE;AACJuI,MAAAA,KAAK,EAAEyZ,0BAA0B,CAC/BC,UAD+B,EAE/B,YAF+B,EAG/BC,qBAH+B;;AAAA;AAD7B,KAHmB;AAWzBhjB,IAAAA,MAAM,EAAE;AACNqJ,MAAAA,KAAK,EAAEyZ,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA,OAD3B;AAON5b,MAAAA,KAAK,EAAE0b,0BAA0B,CAC/BC,UAD+B,EAE/B,cAF+B,EAG/BC,qBAH+B;;AAAA;AAP3B;AAXiB,MA0B3B5mB,SA1B2B,EA2B3B8F,cA3B2B,CAA7B;AA6BD,CAnCD;;AAqCA,MAAMyhB,mBAAmB,GAAiC,CACxDZ,UADwD,EAExD3mB,SAFwD,EAGxD4mB,qBAHwD,EAIxD9gB,cAJwD;AAMxD,SAAOihB,qBAAqB,cAErBJ,UAFqB;AAGxBlX,IAAAA,SAAS,EAAEiX,0BAA0B,CACnCC,UADmC,EAEnC,WAFmC,EAGnCC,qBAHmC;;AAAA;AAHb,MAU1B5mB,SAV0B,EAW1B8F,cAX0B,CAA5B;AAaD,CAnBD;;AAqBA,MAAa0hB,kBAAkB,GAAG,CAChC1hB,cADgC,EAEhC9F,SAFgC,EAGhC4mB,qBAHgC,EAIhCD,UAJgC;AAMhC,MAAI3gB,sBAAsB,CAACF,cAAD,CAA1B,EAA4C;AAC1C,WAAOA,cAAP;AACD;;AAED,MAAI/B,eAAe,CAAC4iB,UAAD,CAAnB,EAAiC;AAC/B,WAAOY,mBAAmB,CACxBZ,UADwB,EAExB3mB,SAFwB,EAGxB4mB,qBAHwB,EAIxB9gB,cAJwB,CAA1B;AAMD;;AAED,MAAIvC,eAAe,CAACojB,UAAD,CAAnB,EAAiC;AAC/B,WAAOK,iBAAiB,CACtBL,UADsB,EAEtB3mB,SAFsB,EAGtB4mB,qBAHsB,EAItB9gB,cAJsB,CAAxB;AAMD;;AAED,MAAIxC,sBAAsB,CAACqjB,UAAD,CAA1B,EAAwC;AACtC,WAAOQ,sBAAsB,CAC3BR,UAD2B,EAE3B3mB,SAF2B,EAG3B4mB,qBAH2B,EAI3B9gB,cAJ2B,CAA7B;AAMD;;AAED,MAAI1C,iBAAiB,CAACujB,UAAD,CAArB,EAAmC;AACjC,WAAOS,gBAAgB,CACrBT,UADqB,EAErB3mB,SAFqB,EAGrB4mB,qBAHqB,EAIrB9gB,cAJqB,CAAvB;AAMD;;AAED,MAAI7C,eAAe,CAAC0jB,UAAD,CAAnB,EAAiC;AAC/B,WAAOU,mBAAmB,CACxBV,UADwB,EAExB3mB,SAFwB,EAGxB4mB,qBAHwB,EAIxB9gB,cAJwB,CAA1B;AAMD;;AAED,MAAIjC,cAAc,CAAC8iB,UAAD,CAAlB,EAAgC;AAC9B,WAAOW,cAAc,CACnBX,UADmB,EAEnB3mB,SAFmB,EAGnB4mB,qBAHmB,EAInB9gB,cAJmB,CAArB;AAMD;;AAED,SAAO,IAAP;AACD,CAjEM;AAmEP,SAAgB2hB,sBACdngB,eACAogB,eACAnvB;AAEA,MAAIovB,QAAJ;AACA,MAAItG,kBAAJ;;AAEA,MAAInjB,YAAY,CAAC3F,KAAD,CAAhB,EAAyB;AACvB,QAAIA,KAAK,CAAC4G,IAAN,IAAc5G,KAAK,CAAC6G,EAAxB,EAA4B;AAC1BuoB,MAAAA,QAAQ,GAAG,CAACpvB,KAAK,CAAC4G,IAAP,EAAuB5G,KAAK,CAAC6G,EAA7B,CAAX;AACAiiB,MAAAA,kBAAkB,GAAGtG,0BAAkB,CAAC+F,OAAxC;AACD,KAHD,MAGO,IAAIvoB,KAAK,CAAC4G,IAAV,EAAgB;AACrBwoB,MAAAA,QAAQ,GAAGpvB,KAAK,CAAC4G,IAAjB;AACAkiB,MAAAA,kBAAkB,GAAGtG,0BAAkB,CAAC2F,QAAxC;AACD,KAHM,MAGA,IAAInoB,KAAK,CAAC6G,EAAV,EAAc;AACnBuoB,MAAAA,QAAQ,GAAGpvB,KAAK,CAAC6G,EAAjB;AACAiiB,MAAAA,kBAAkB,GAAGtG,0BAAkB,CAAC0F,WAAxC;AACD;AACF,GAXD,MAWO;AACLkH,IAAAA,QAAQ,GAAGpvB,KAAK,CAACmO,WAAN,IAAqBnO,KAAK,CAAC+N,KAAtC;AACA+a,IAAAA,kBAAkB,GAAGtG,0BAAkB,CAACyF,SAAxC;AACD;;AAED,SAAO,IAAIiD,eAAJ,CACLtB,qBAAqB,CAAC;AACpB7jB,IAAAA,SAAS,EAAEgJ,aADS;AAEpB7G,IAAAA,IAAI,EAAEinB,aAFc;AAGpBrG,IAAAA,kBAAkB,EAAEA,kBAHA;AAIpB9oB,IAAAA,KAAK,EAAEovB;AAJa,GAAD,CADhB,EAOL/d,QAPK,EAAP;AAQD;AAED,MAAage,0BAA0B,GAAG,CACxC7gB,MADwC,EAExCO,aAFwC,EAGxCogB,aAHwC;AAKxC,QAAMnvB,KAAK,GAAGwO,MAAM,CAACA,MAAM,CAAC9O,MAAP,GAAgB,CAAjB,CAApB;AACA,MAAI4vB,eAAJ;;AAEA,MAAI3pB,YAAY,CAAC3F,KAAD,CAAhB,EAAyB;AACvBsvB,IAAAA,eAAe,GAAG,IAAIpE,eAAJ,CAChBtB,qBAAqB,CAAC;AACpB7jB,MAAAA,SAAS,EAAEgJ,aADS;AAEpB7G,MAAAA,IAAI,EAAEinB,aAFc;AAGpBrG,MAAAA,kBAAkB,EAAEtG,0BAAkB,CAAC6F,YAHnB;AAIpBroB,MAAAA,KAAK,EAAGA,KAAoB,CAAC6G,EAArB,IAA4B7G,KAAoB,CAAC4G;AAJrC,KAAD,CADL,EAOhByK,QAPgB,EAAlB;AAQD,GATD,MASO;AACL,UAAMua,UAAU,GAAGpd,MAAM,CAAClN,GAAP,CAAW+nB,GAAG,IAC/B,IAAI6B,eAAJ,CACEtB,qBAAqB,CAAC;AACpB7jB,MAAAA,SAAS,EAAEgJ,aADS;AAEpB7G,MAAAA,IAAI,EAAEinB,aAFc;AAGpBrG,MAAAA,kBAAkB,EAAEtG,0BAAkB,CAACuF,MAHnB;AAIpB/nB,MAAAA,KAAK,EAAGqpB,GAAmB,CAAClb;AAJR,KAAD,CADvB,EAOEkD,QAPF,EADiB,CAAnB;AAWAie,IAAAA,eAAe,UAAQ1D,UAAU,CAC9BzhB,MADoB,CACbvE,OADa,EAEpBiC,IAFoB,OAEX0a,gCAAwB,CAACmJ,EAFd,OAAR,OAAf;AAGD;;AAED,SAAO4D,eAAP;AACD,CAnCM;AAqCP,MAAaC,wBAAwB,GAAG,CACtCxpB,SADsC,EAEtCypB,UAFsC,EAGtC7G,WAHsC,EAItC9X,KAJsC,EAKtC4e,UALsC;AAOtC,QAAMC,KAAK,GAAG;AACZ3hB,IAAAA,KAAK,EAAE0hB,UADK;AAEZliB,IAAAA,cAAc,EAAEiiB,UAAU,CAACnnB,YAFf;AAGZinB,IAAAA,eAAe,EAAED,0BAA0B,CACzCG,UAAU,CAAChhB,MAAX,CAAkBlN,GAAlB,CAAsB+nB,GAAG,IACvBsG,sBAAsB,CACpBtG,GAAG,CAACrpB,KADgB,EAEpByvB,UAFoB,EAGpB,IAAIxpB,uBAAJ,CAA4BojB,GAAG,CAACnjB,SAAhC,CAHoB,CADxB,CADyC,EAQzCH,SAAS,CAACgZ,IAR+B,EASzChZ,SAAS,CAACmC,IAT+B;AAH/B,GAAd;AAgBA,QAAM0nB,KAAK,GAAGJ,UAAU,CAAChhB,MAAX,CAAkBlN,GAAlB,CAAsB8rB,UAAU;AAC5C,UAAM7f,cAAc,GAAGnF,iBAAiB,CAACglB,UAAU,CAACptB,KAAZ,CAAxC;AACA,UAAM6P,MAAM,GAAG;AAAEtC,MAAAA,cAAF;AAAkBxH,MAAAA;AAAlB,KAAf;;AAEA,QAAIumB,gBAAgB,CAACc,UAAU,CAAClnB,SAAZ,CAApB,EAA4C;AAC1C,YAAMU,IAAI,GAAGylB,yBAAyB,CAACe,UAAU,CAAClnB,SAAZ,EAAuB,CAAvB,CAAtC;AACA,YAAMW,EAAE,GAAGwlB,yBAAyB,CAACe,UAAU,CAAClnB,SAAZ,EAAuB,CAAvB,CAApC;AAEC2J,MAAAA,MAAqB,CAACjJ,IAAtB,GAA6BA,IAAI,GAC9B2gB,SAAS,CAAC3gB,IAAD,CAAT,GACE,CAACA,IADH,GAEEsT,UAAU,CAACtT,IAAD,CAHkB,GAI9B,IAJH;AAKAiJ,MAAAA,MAAqB,CAAChJ,EAAtB,GAA2BA,EAAE,GAC1B0gB,SAAS,CAAC1gB,EAAD,CAAT,GACE,CAACA,EADH,GAEEqT,UAAU,CAACrT,EAAD,CAHc,GAI1B,IAJH;AAMDgJ,MAAAA,MAAM,CAAC9B,KAAP,GAAewf,6BAA6B,CAC1CH,UAD0C,EAE1CrnB,SAF0C,EAG1C4iB,WAH0C,EAI1C9X,KAJ0C,CAA5C;AAOA,aAAOhB,MAAP;AACD;;AAEAA,IAAAA,MAAsB,CAAC1B,WAAvB,GAAqCwa,WAAW,GAC5CA,WAAW,CACV5iB,SAAS,CAACmC,IADA,EAEVklB,UAAU,CAACptB,KAFD,EAGV+F,SAAS,CAAC4mB,YAHA,CADiC,GAM7CS,UAAU,CAACptB,KAAX,CAAiBqR,QAAjB,EANH;AAODxB,IAAAA,MAAM,CAAC9B,KAAP,GAAeuf,qBAAqB,CAAC;AAAEpnB,MAAAA,SAAS,EAAEknB,UAAU,CAAClnB;AAAxB,KAAD,CAApC;AACA2J,IAAAA,MAAM,CAACyf,eAAP,GAAyBJ,qBAAqB,CAC5CnpB,SAAS,CAACgZ,IADkC,EAE5ChZ,SAAS,CAACmC,IAFkC,EAG5CynB,sBAAsB,CACpBvC,UAAU,CAACptB,KADS,EAEpB6P,MAAM,CAAC9B,KAFa,EAGpB,IAAI9H,uBAAJ,CAA4BmnB,UAAU,CAAClnB,SAAvC,CAHoB,CAHsB,CAA9C;AAUA,WAAO2J,MAAP;AACD,GAhDa,CAAd;AAkDA,SAAO,CAAC,GAAG+f,KAAJ,EAAWF,KAAX,CAAP;AACD,CA1EM;AA4EP,MAAaG,wBAAwB,GAAG,CACtC9pB,SADsC,EAEtConB,KAFsC,EAGtCpJ,MAHsC,EAItCyL,UAJsC,EAKtCptB,MALsC,EAMtCumB,WANsC,EAOtCmH,YAPsC,EAQtCL,UARsC;AAUtC,QAAMC,KAAK,GAAG;AACZ3hB,IAAAA,KAAK,EAAE0hB,UADK;AAEZrtB,IAAAA,MAAM,EAAE6sB,kBAAkB,CACxBO,UAAU,CAACnnB,YADa,EAExB8kB,KAFwB,EAGxBpJ,MAHwB,EAIxB3hB,MAJwB,CAFd;AAQZktB,IAAAA,eAAe,EAAED,0BAA0B,CACzCG,UAAU,CAAChhB,MAAX,CAAkBlN,GAAlB,CAAsB+nB,GAAG,IACvBsG,sBAAsB,CACpBtG,GAAG,CAACrpB,KADgB,EAEpByvB,UAFoB,EAGpB,IAAIxpB,uBAAJ,CAA4BojB,GAAG,CAACnjB,SAAhC,CAHoB,CADxB,CADyC,EAQzCH,SAAS,CAACgZ,IAR+B,EASzChZ,SAAS,CAACmC,IAT+B;AAR/B,GAAd;AAqBA,QAAM0nB,KAAK,GAAGJ,UAAU,CAAChhB,MAAX,CAAkBlN,GAAlB,CAAsB,CAAC8rB,UAAD,EAAavc,KAAb;AAClC,UAAMhB,MAAM,GAAG;AACbzN,MAAAA,MAAM,EAAE6sB,kBAAkB,CACxB7B,UAAU,CAACptB,KADa,EAExBmtB,KAFwB,EAGxBpJ,MAHwB,EAIxB3hB,MAJwB;AADb,KAAf;AASAyN,IAAAA,MAAM,CAAC9B,KAAP,GAAeue,gBAAgB,CAACc,UAAU,CAAClnB,SAAZ,CAAhB,GACXqnB,6BAA6B,CAC3BH,UAD2B,EAE3BrnB,SAF2B,EAG3B4iB,WAH2B,EAI3BmH,YAJ2B,CADlB,GAOXxC,qBAAqB,CAAC;AAAEpnB,MAAAA,SAAS,EAAEknB,UAAU,CAAClnB;AAAxB,KAAD,CAPzB;AASA2J,IAAAA,MAAM,CAACyf,eAAP,GAAyBJ,qBAAqB,CAC5CnpB,SAAS,CAACgZ,IADkC,EAE5ChZ,SAAS,CAACmC,IAFkC,EAG5CynB,sBAAsB,CACpBvC,UAAU,CAACptB,KADS,EAEpB6P,MAAM,CAAC9B,KAFa,EAGpB,IAAI9H,uBAAJ,CAA4BupB,UAAU,CAAChhB,MAAX,CAAkBqC,KAAlB,EAAyB3K,SAArD,CAHoB,CAHsB,CAA9C;AAUA,WAAO2J,MAAP;AACD,GA9Ba,CAAd;AAgCA,SAAO,CAAC,GAAG+f,KAAJ,EAAWF,KAAX,CAAP;AACD,CAhEM;AAsEP,MAAaK,oBAAoB,GAAG,CAClC3tB,MADkC,EAElC4tB,cAFkC,EAGlCnf,KAHkC;AAKlC,SAAOmf,cAAP,oBAAOA,cAAc,CAAEthB,MAAhB,CAAuB,CAACmB,MAAD,EAAS2f,UAAT;AAC5B,UAAMrC,KAAK,GAAIE,GAAG,CAChBjrB,MADgB,EAEhBotB,UAFgB,CAAlB;AAKA,WAAO,CAAArC,KAAK,QAAL,YAAAA,KAAK,CAAEjlB,IAAP,MAAgB,aAAhB,gBAAqC2H,MAArC;AAA6C,OAAC2f,UAAD;AAAgB3e,QAAAA;AAAhB,SAA0Bsc,KAA1B;AAA7C,SAAmFtd,MAA1F;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD,CAbM;AAeP,MAAaogB,aAAa,GACxBjD,SAD2B;;;AAG3B,MAAI,CAACA,SAAL,EAAgB,OAAO1b,SAAP;;AAEhB,2BAAI0b,SAAS,CAACjjB,KAAd,sCAAI,kBAAiBpJ,QAArB,aAAI,sBAA2BjB,MAA/B,EAAuC;AAAA;;AACrC,WAAO;AACL0C,MAAAA,MAAM,EAAE;AACN8F,QAAAA,IAAI,EAAE,aADA;AAENG,QAAAA,YAAY,EAAE2kB,SAAS,CAACjjB,KAAV,CAAgB3H,MAFxB;AAGN2L,QAAAA,KAAK,EAAE,IAHD;AAINS,QAAAA,MAAM,uBAAEwe,SAAS,CAACjjB,KAAZ,qBAAE,kBAAiBpJ;AAJnB;AADH,KAAP;AAUD;;AAED,QAAMqvB,cAAc,GAAG/C,qBAAqB,CAACD,SAAS,CAACE,YAAX,CAA5C;;AAEA,MAAI,qBAAAF,SAAS,CAACjjB,KAAV,+BAAiB3H,MAAjB,IAA2BqI,wBAAwB,CAACuiB,SAAS,CAACjjB,KAAV,CAAgB3H,MAAjB,CAAvD,EAAiF;AAAA;;AAC/E,QAAI,2BAAC4qB,SAAS,CAACjjB,KAAV,CAAgB3H,MAAhB,CAAuBoM,MAAxB,aAAC,sBAA+B9O,MAAhC,CAAJ,EAA4C,OAAO4R,SAAP;AAE5C,WAAO0b,SAAS,CAACjjB,KAAV,CAAgB3H,MAAhB,CAAuBoM,MAAvB,CAA8BE,MAA9B,CAAqC,CAACmB,MAAD,EAAyBqgB,QAAzB,EAA2Drf,KAA3D;AAC1C,0BAAYhB,MAAZ,EAAuBkgB,oBAAoB,CAACG,QAAD,EAAWF,cAAX,EAA2Bnf,KAA3B,CAA3C;AACD,KAFM,EAEJ,EAFI,CAAP;AAGD;;AAED,SAAOkf,oBAAoB,sBAAC/C,SAAS,CAACjjB,KAAX,qBAAC,kBAAiB3H,MAAlB,EAA0B4tB,cAA1B,CAA3B;AACD,CA7BM;AA+BP,MAAaG,oBAAoB,GAAI/tB,MAAD;;;AAClC,SAAOmJ,gBAAgB,CAACnJ,MAAD,CAAhB,yBACDA,MAAM,CAACqT,UADN,qBACD,mBAAsCd,WADrC,GAEDvS,MAAsB,CAACuS,WAF7B;AAGD,CAJM;AAMP,MAAa4Z,sBAAsB,GAAG,CACpCnsB,MADoC,EAEpCqF,SAFoC;AAIpC,MAAI2oB,mBAAmB,GAAG,EAA1B;AAEA9nB,EAAAA,qBAAqB,CAAEiF,cAAD;AACpB6iB,IAAAA,mBAAmB,GAAG7iB,cAAtB;AACD,GAFoB,CAArB,CAEGnL,MAFH,EAEWqF,SAFX;AAIA,SAAO2oB,mBAAP;AACD,CAXM;AAaP,MAAaC,mBAAmB,GAAIjuB,MAAD;AACjC,MAAI0R,IAAI,GAAG,CAAX;;AAEA,MAAIvI,gBAAgB,CAACnJ,MAAD,CAApB,EAA8B;AAC5B0R,IAAAA,IAAI,GAAG1L,iBAAiB,CAAChG,MAAM,CAAC0R,IAAR,CAAxB;AACD;;AAED,MAAIxI,cAAc,CAAClJ,MAAD,CAAlB,EAA4B;AAC1B0R,IAAAA,IAAI,GAAG1L,iBAAiB,CAAChG,MAAM,CAACkuB,QAAR,CAAxB;AACD;;AAED,MAAIvlB,sBAAsB,CAAC3I,MAAD,CAA1B,EAAoC;AAClC0R,IAAAA,IAAI,GAAGhC,IAAI,CAACD,GAAL,CACLzJ,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CADZ,EAELrK,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAFZ,CAAP;AAID;;AAED,MAAI1K,eAAe,CAAC5I,MAAD,CAAnB,EAA6B;AAC3B,UAAMuS,WAAW,GAAGwb,oBAAoB,CAAC/tB,MAAD,CAAxC;AAEA0R,IAAAA,IAAI,GACF1L,iBAAiB,CAAChG,MAAM,CAAC0R,IAAR,CAAjB,IACCa,WAAW,GAAGvM,iBAAiB,CAACuM,WAAD,CAAjB,GAAiC4b,iBAApC,GAAwD,CADpE,CADF;AAGD;;AAED,MAAI1lB,iBAAiB,CAACzI,MAAD,CAArB,EAA+B;AAC7B0R,IAAAA,IAAI,GAAG1L,iBAAiB,CACtBmmB,sBAAsB,CAACnsB,MAAD,EAAS,cAAT,CADA,CAAxB;AAGD;;AAED,SAAO0P,IAAI,CAACD,GAAL,CAAS2e,0BAAT,EAAqC1c,IAArC,CAAP;AACD,CAjCM;AAmCP,MAAa2c,uBAAuB,GAAIruB,MAAD;;;AACrC,MAAI,CAACA,MAAL,EAAa,OAAO,IAAP;AAEb,QAAMsuB,eAAe,GACjB,mBAAAtuB,MAAM,CAACuuB,MAAP,oCAAkCzZ,SAAlC,KAA0D,IAD9D;AAEA,QAAM0Z,WAAW,GACb,wBAAAxuB,MAAM,CAACqT,UAAP,yCAAsCyB,SAAtC,KAA8D,IADlE;AAGA;AACEhP,IAAAA,IAAI,EAAE,gBADR;AAEE4L,IAAAA,IAAI,EAAE1R,MAAM,CAAC0R,IAFf;AAGE1G,IAAAA,MAAM,EAAEhL,MAAM,CAACgL,MAHjB;AAIEyjB,IAAAA,KAAK,EAAEzuB,MAAM,CAACyuB;AAJhB,KAKMD,WAAW,GACX;AACEnb,IAAAA,UAAU,EAAE;AACV6J,MAAAA,EAAE,EAAE,WADM;AAEVpI,MAAAA,SAAS,EAAE0Z,WAFD;AAGVnc,MAAAA,WAAW,EACP,wBAAArS,MAAM,CAACqT,UAAP,yCAAsChB,WAAtC,KACF,IALQ;AAMVE,MAAAA,WAAW,EACR,wBAAAvS,MAAM,CAACqT,UAAP,yCAAsCd,WAAtC,KAAqD,IAP9C;AAQVzM,MAAAA,IAAI,EACD,wBAAA9F,MAAM,CAACqT,UAAP,yCAAsCvN,IAAtC,KAA8C4oB,mBAAW,CAAC5jB;AATnD;AADd,GADW,GAcX,EAnBN,EAoBMwjB,eAAe,GACf;AACEC,IAAAA,MAAM,EAAE;AACNrR,MAAAA,EAAE,EAAE,eADE;AAENpI,MAAAA,SAAS,EAAEwZ,eAFL;AAGNjc,MAAAA,WAAW,EACP,oBAAArS,MAAM,CAACuuB,MAAP,qCAAkClc,WAAlC,KACF,IALI;AAMNE,MAAAA,WAAW,EACR,oBAAAvS,MAAM,CAACuuB,MAAP,qCAAkChc,WAAlC,KAAiD;AAP9C;AADV,GADe,GAWf,EA/BN;AAiCD,CAzCM;AA2CP,MAAMoc,eAAe,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,aAAnB,EAAkC,cAAlC,CAAxB;AAEA,MAAaC,oBAAoB,GAAIvpB,SAAD,IAClCspB,eAAe,CAACzpB,QAAhB,CAAyBG,SAAzB,CADK;AAGP,MAAawpB,uBAAuB,GAClCnvB,KADqC;AAGrC,QAAMovB,yBAAyB,GAAmC;AAChEnS,IAAAA,IAAI,EAAE;AAD0D,GAAlE;AAIA,MAAI,CAAC8M,cAAc,CAAC/pB,KAAD,CAAf,IAA0B,EAAE,mBAAmBA,KAArB,CAA9B,EACE,OAAOovB,yBAAP;AAEF,sBACKA,yBADL,EAEMpvB,KAAK,CAACqvB,aAAN,IAAuB,EAF7B;AAID,CAdM;AAgBP;;AACA,MAAaC,kBAAkB,GAAG,UAA3B;AAEP;;AACA,MAAaC,yBAAyB,GAAG,KAAlC;AAEP,MAAaC,0BAA0B,GACrCxvB,KADwC;AAGxC,QAAMyvB,oBAAoB,GAAGN,uBAAuB,CAACnvB,KAAD,CAApD;AACA,QAAM0vB,4BAA4B,GAA8B;AAC9DC,IAAAA,iBAAiB,EAAEL,kBAD2C;AAE9DM,IAAAA,WAAW,EAAEL,yBAFiD;AAG9DM,IAAAA,SAAS,EAAE;AAHmD,GAAhE;;AAMA,MACE,CAACJ,oBAAD,IACA,EAAE,6BAA6BA,oBAA/B,CAFF,EAGE;AACA,WAAOC,4BAAP;AACD;;AAED,sBACKA,4BADL,EAEOD,oBAA4D,CAC9DK,uBADE,IACyB,EAHhC;AAKD,CAtBM;AAwBP,MAAaC,kBAAkB,GAC7B/vB,KADgC;AAGhC,QAAM;AAAE2vB,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAqCJ,0BAA0B,CACnExvB,KADmE,CAArE;AAIA,QAAMgwB,oBAAoB,GAAsB;AAC9ChT,IAAAA,UAAU,EAAE,EADkC;AAE9C2S,IAAAA,iBAAiB,EAAEA,iBAF2B;AAG9CC,IAAAA,WAH8C;AAI9CxE,IAAAA,YAAY,EAAErN,gBAAY,CAAClB,OAJmB;AAK9CsD,IAAAA,cAAc,EAAE;AAL8B,GAAhD;;AAQA,MAAI,CAAC4J,cAAc,CAAC/pB,KAAD,CAAf,IAA0B,EAAE,qBAAqBA,KAAvB,CAA9B,EAA6D;AAC3D,WAAOgwB,oBAAP;AACD;;AAED,sBACKA,oBADL,EAEMhwB,KAAK,CAAC+c,eAAN,IAAyB,EAF/B;AAGEC,IAAAA,UAAU,EACRhd,KAAK,CAAC+c,eAAN,CAAsBC,UAAtB,IAAoCgT,oBAAoB,CAAChT;AAJ7D;AAMD,CAzBM;AA2BP,SAAgBiT,iBACdjwB,OACAiN;AAEA,QAAM;AAAE+P,IAAAA;AAAF,MAAiB+S,kBAAkB,CAAC/vB,KAAD,CAAzC;AACA,QAAMiE,SAAS,GAAG+Y,UAAU,CAAC/P,aAAD,CAA5B;AAEA,SAAOhJ,SAAS,GAAGA,SAAS,CAACmC,IAAb,GAAoBqW,iBAAa,CAACI,OAAlD;AACD;AAED,MAAagR,sBAAsB,GAAG,CACpCpiB,cADoC,EAEpCQ,KAFoC,EAGpC7H,SAHoC;AAKpCqH,EAAAA,cALoC;AAMpCQ,EAAAA;AANoC,GAOhC7H,SAAS,CAACM,QAAV,KACA;AACE2H,EAAAA,WAAW,EAAEjI,SAAS,CAACiI;AADzB,CADA,GAIA;AACEvH,EAAAA,IAAI,EAAEV,SAAS,CAACkI,KAAV,CAAgB,CAAhB,CADR;AAEEvH,EAAAA,EAAE,EAAEX,SAAS,CAACkI,KAAV,CAAgB,CAAhB;AAFN,CAXgC,CAA/B;;MC9lCM4jB,cAAc,GAAG,CAC5BC,MAD4B;MAE5B;AAAE1wB,IAAAA,OAAF;AAAWmD,IAAAA,GAAG,GAAGkZ;AAAjB;AAEA,QAAM;AAAEnL,IAAAA;AAAF,MAAYlR,OAAlB;AACA,QAAM2wB,SAAS,GAAG3wB,OAAO,CAAC+B,sBAAR,CAA+B,CAA/B,EAAkC,CAAlC,EAAqC6uB,SAArC,CAA+CztB,GAA/C,CAAlB;AACA,QAAM0tB,aAAa,GAAG7wB,OAAO,CAAC+B,sBAAR,CAA+BmP,KAA/B,EAAsC,CAAtC,EAAyC0f,SAAzC,CAAmDztB,GAAnD,CAAtB;AACA,QAAM2tB,aAAa,GAAWlP,iBAAQ,CAAC+O,SAAD,EAAYE,aAAZ,CAAtC;AACA,QAAME,GAAG,GAAG7f,KAAK,IAAI4f,aAAa,IAAI,CAArB,CAAjB;AAEA,SAAOvgB,IAAI,CAACc,KAAL,CAAWqf,MAAM,GAAGK,GAApB,CAAP;AACD,CAXM;;MCPMC,sBAAsB,GAAG,CACpC5e,MADoC,EAEpC6e,QAFoC;AAIpC,QAAM7S,WAAW,GAAkB,EAAnC;AACA,QAAM8S,MAAM,GAAGD,QAAQ,GAAG,CAA1B;AACA,QAAME,QAAQ,GAAG5gB,IAAI,CAAC8B,EAAL,GAAU,CAA3B;AACA,QAAM+e,IAAI,GAAG7gB,IAAI,CAACD,GAAL,CAASC,IAAI,CAAC8B,EAAL,GAAU,CAAV,GAAc6e,MAAvB,EAA+BC,QAAQ,GAAG,GAA1C,CAAb;AACA,MAAIE,KAAK,GAAG,CAAZ;AACA,MAAIC,GAAG,GAAGH,QAAV;;AAEA,OAAK,IAAII,GAAG,GAAGF,KAAf,EAAsBE,GAAG,GAAGD,GAA5B,EAAiCC,GAAG,IAAIH,IAAxC,EAA8C;AAC5ChT,IAAAA,WAAW,CAAC7Q,IAAZ,CAAiB,CACfgD,IAAI,CAACihB,GAAL,CAASD,GAAT,IAAgBL,MAAhB,GAAyB9e,MAAM,CAAC,CAAD,CADhB,EAEf7B,IAAI,CAACkhB,GAAL,CAASF,GAAT,IAAgBL,MAAhB,GAAyB9e,MAAM,CAAC,CAAD,CAFhB,CAAjB;AAID;;AAED,SAAO,CAACgM,WAAD,CAAP;AACD,CAnBM;;MCGM6Q,0BAA0B,GAAG,EAAnC;AAEP,MAAaD,iBAAiB,GAAG,CAA1B;AAEP,MAAa0C,mBAAmB,GAAG,EAA5B;AAEP,MAAaC,2BAA2B,GAAG,EAApC;AAEP,MAAaC,yBAAyB,GAAG,sBAAlC;AAEP,MAAaC,2BAA2B,GAAG,oBAApC;AAEP,MAAaC,qBAAqB,GAAG,CAAC,CAAD,EAAI,CAAJ,CAA9B;AAEP,MAAaC,mBAAmB,4PAAzB;AAMP,MAAarG,qBAAqB,GAG7B;AACH,GAACpN,gBAAY,CAACQ,OAAd,GAAwB,CAAC,YAAD,EAAe,cAAf,EAA+B,cAA/B,CADrB;AAEH,GAACR,gBAAY,CAACM,QAAd,GAAyB,CAAC,cAAD,EAAiB,cAAjB,CAFtB;AAGH,GAACN,gBAAY,CAACC,KAAd,GAAsB,CACpB,OADoB,EAEpB,MAFoB,EAGpB,YAHoB,EAIpB,WAJoB,EAKpB,sBALoB,EAMpB,wBANoB,EAOpB,wBAPoB,EAQpB,kBARoB,EASpB,oBAToB,EAUpB,oBAVoB,EAWpB,yBAXoB,EAYpB,qCAZoB,EAapB,uCAboB,EAcpB,uCAdoB,EAepB,yCAfoB,EAgBpB,2CAhBoB,EAiBpB,2CAjBoB;AAHnB,CAHE;AA2BP,MAAayT,aAAa,GAAG;AAC3BC,EAAAA,QAAQ,EAAE,CADiB;AAE3BC,EAAAA,QAAQ,EAAE,EAFiB;AAG3BC,EAAAA,SAAS,EAAE,CAHgB;AAI3BC,EAAAA,aAAa,EAAE,GAJY;AAK3BC,EAAAA,aAAa,EAAE,GALY;AAM3BC,EAAAA,iBAAiB,EAAE,CANQ;AAO3BC,EAAAA,iBAAiB,EAAE,KAPQ;AAQ3BC,EAAAA,gBAAgB,EAAE,EARS;AAS3BC,EAAAA,gBAAgB,EAAE,GATS;AAU3BxiB,EAAAA,gBAAgB,EAAE,CAVS;AAW3BC,EAAAA,gBAAgB,EAAE,EAXS;AAY3BwiB,EAAAA,iBAAiB,EAAE,IAZQ;AAa3BC,EAAAA,SAAS,EAAE,CAAC,GAbe;AAc3BC,EAAAA,SAAS,EAAE,GAdgB;AAe3BC,EAAAA,UAAU,EAAE,CAfe;AAgB3BC,EAAAA,gBAAgB,EAAE,EAhBS;AAiB3BC,EAAAA,sBAAsB,EAAE;AAjBG,CAAtB;AAoBP,MAAa7H,sBAAsB,GAAkB;AACnD8H,EAAAA,YAAY,EAAE,IADqC;AAEnD3iB,EAAAA,GAAG,EAAE2hB,aAAa,CAAC/hB,gBAFgC;AAGnDK,EAAAA,GAAG,EAAE0hB,aAAa,CAAC9hB,gBAHgC;AAInDkhB,EAAAA,IAAI,EAAEY,aAAa,CAACU,iBAJ+B;AAKnDO,EAAAA,KAAK;;AAL8C;AAMnDC,EAAAA,SAAS,EAAEz0B,KAAK,IAAIA,KAN+B;AAOnD00B,EAAAA,WAAW,EAAE10B,KAAK,IAAIA;AAP6B,CAA9C;AAUP,MAAawsB,eAAe,GAGvB;AACH1Y,EAAAA,IAAI,4BACC2Y,sBADD;AAEF7a,IAAAA,GAAG,EAAE2hB,aAAa,CAACC,QAFjB;AAGF3hB,IAAAA,GAAG,EAAE0hB,aAAa,CAACE,QAHjB;AAIFd,IAAAA,IAAI,EAAEY,aAAa,CAACG,SAJlB;AAKFc,IAAAA,KAAK;;;AALH;AADD,CAHE;AAqDP,MAAaxL,wBAAwB,GAAuC;AAC1E,GAACxG,0BAAkB,CAACuF,MAApB,GAA6B,IAD6C;AAE1E,GAACvF,0BAAkB,CAACyF,SAApB,GAAgC,IAF0C;AAG1E,GAACzF,0BAAkB,CAAC0F,WAApB,GAAkC,GAHwC;AAI1E,GAAC1F,0BAAkB,CAAC4F,eAApB,GAAsC,IAJoC;AAK1E,GAAC5F,0BAAkB,CAAC2F,QAApB,GAA+B,GAL2C;AAM1E,GAAC3F,0BAAkB,CAAC6F,YAApB,GAAmC,IANuC;AAO1E,GAAC7F,0BAAkB,CAACmS,MAApB,GAA6B,IAP6C;AAQ1E,GAACnS,0BAAkB,CAACoS,KAApB,GAA4B,IAR8C;AAS1E,GAACpS,0BAAkB,CAACkI,QAApB,GAA+B,IAT2C;AAU1E,GAAClI,0BAAkB,CAACmI,WAApB,GAAkC,IAVwC;AAW1E,GAACnI,0BAAkB,CAACoI,UAApB,GAAiC,IAXyC;AAY1E,GAACpI,0BAAkB,CAACqI,aAApB,GAAoC,IAZsC;AAa1E,GAACrI,0BAAkB,CAACsI,QAApB,GAA+B,IAb2C;AAc1E,GAACtI,0BAAkB,CAACuI,WAApB,GAAkC,IAdwC;AAe1E,GAACvI,0BAAkB,CAAC8F,OAApB,GAA8B,SAf4C;AAgB1E,GAAC9F,0BAAkB,CAAC+F,OAApB,GAA8B;AAhB4C,CAArE;AAmBP,MAAasM,cAAc,GAAG,CAC5BrS,0BAAkB,CAACuF,MADS,EAE5BvF,0BAAkB,CAACyF,SAFS,CAAvB;AAKP,MAAamC,kBAAkB,GAAG,CAChC5H,0BAAkB,CAACkI,QADa,EAEhClI,0BAAkB,CAACmI,WAFa,CAA3B;AAKP,MAAamK,gBAAgB,GAAG,CAC9BtS,0BAAkB,CAACmS,MADW,EAE9BnS,0BAAkB,CAACoS,KAFW,CAAzB;AAKP,MAAatK,qBAAqB,GAAG,CACnC9H,0BAAkB,CAACoI,UADgB,EAEnCpI,0BAAkB,CAACqI,aAFgB,CAA9B;AAKP,MAAaR,mBAAmB,GAAG,CACjC7H,0BAAkB,CAACsI,QADc,EAEjCtI,0BAAkB,CAACuI,WAFc,CAA5B;AAKP,MAAagK,eAAe,GAAG,CAC7BvS,0BAAkB,CAAC2F,QADU,EAE7B3F,0BAAkB,CAAC6F,YAFU,EAG7B7F,0BAAkB,CAAC0F,WAHU,EAI7B1F,0BAAkB,CAAC4F,eAJU,CAAxB;AAOP,MAAae,iBAAiB,GAAG,CAC/B3G,0BAAkB,CAAC8F,OADY,EAE/B9F,0BAAkB,CAAC+F,OAFY,CAA1B;AAKP,MAAayM,yBAAyB,GAAG,CACvC,GAAGH,cADoC,EAEvC,GAAGE,eAFoC,EAGvC,GAAGD,gBAHoC,EAIvC,GAAG3L,iBAJoC,CAAlC;AAOP,MAAa8L,uBAAuB,GAAG,CACrC,GAAGJ,cADkC,EAErC,GAAGE,eAFkC,EAGrC,GAAGD,gBAHkC,EAIrC,GAAG3L,iBAJkC,CAAhC;AAOP,MAAa+L,uBAAuB,GAAG,CACrC,GAAGL,cADkC,EAErC,GAAGzK,kBAFkC,EAGrC,GAAGE,qBAHkC,EAIrC,GAAGD,mBAJkC,EAKrC,GAAGyK,gBALkC,CAAhC;;AC7CP,WAAYhE;AACVA,EAAAA,mBAAA,SAAA;AACAA,EAAAA,qBAAA,WAAA;AACD,CAHD,EAAYA,mBAAW,KAAXA,mBAAW,KAAA,CAAvB;;AC7IA,MAAMqE,sBAAsB,GAAG,IAA/B;AAEA,MAAaC,kBAAkB,GAAIC,GAAD,mCACHC,MAAM,CAACC,IAAP,CAAYF,GAAZ,CADxB;AAGP,MAAaG,iBAAiB,GAAG,CAC/BH,GAD+B,EAE/B7mB,MAF+B,KAI/B6mB,GAAG,CACAI,QADH,CACY,QADZ,EACuB1P,GAAD;AAClBvX,EAAAA,MAAM,QAAN,YAAAA,MAAM,CAAEknB,OAAR,CAAgB,OAAY7kB,KAAZ;QAAC;AAAE7Q,MAAAA;AAAF;AACf+lB,IAAAA,GAAG,CAAC4P,IAAJ,CAAS9kB,KAAK,IAAI,CAAArC,MAAM,QAAN,YAAAA,MAAM,CAAE9O,MAAR,IAAiB,CAArB,CAAd,EAAuCM,KAAvC;AACD,GAFD;AAGD,CALH,EAMG4G,IANH,CAMQ,CANR,EAMW,CANX,EAOGC,EAPH,CAOM,CAPN,EAOS,CAPT,CAJK;;AAcP,MAAa+uB,mBAAmB,GAAG;;;MAAC;AAClCC,IAAAA,YADkC;AAElCzzB,IAAAA,MAFkC;AAGlCizB,IAAAA,GAHkC;AAIlCS,IAAAA,EAJkC;AAKlCC,IAAAA;AALkC;AAalC,MAAI,CAAC3zB,MAAL,EAAa,OAAOyzB,YAAP;AAEb,QAAMG,UAAU,GAAG5tB,iBAAiB,CAClCitB,GAAG,IAAKjzB,MAAM,CAAC6zB,IADmB,CAApC;AAIA,MAAI,CAACD,UAAL,EAAiB,OAAOH,YAAP;AAEjBA,EAAAA,YAAY,CAACK,KAAb;AAEA,QAAM;AAAEpiB,IAAAA,IAAF;AAAQ+c,IAAAA,KAAR;AAAepb,IAAAA,UAAf;AAA2Bkb,IAAAA;AAA3B,MAAsCvuB,MAA5C;AAEA,QAAM+zB,cAAc,GAClB,CAACL,EAAD,IACA,CAACE,UAAU,CAAC1uB,QAAX,CAAoB,WAApB,CADD,IAEA,CAAC0uB,UAAU,CAAC1uB,QAAX,CAAoB,eAApB,CAHH;AAIA,QAAM8uB,QAAQ,GAAGJ,UAAU,CAACpb,OAAX,CAAmB,oCAAnB,EAAyD,EAAzD,CAAjB;;AAEA,MAAIub,cAAJ,EAAoB;AAAA;;AAClBN,IAAAA,YAAY,CAACR,GAAb,CAAiBe,QAAjB;AAEA,UAAMC,eAAe,aAAG,qBAAqBC,IAArB,CAA0BN,UAA1B,CAAH,qBAAG,OAAwC,CAAxC,CAAxB;;AAEA,QAAIK,eAAJ,YAAIA,eAAe,CAAG,CAAH,CAAnB,EAA0B;AACxBR,MAAAA,YAAY,CAACU,OAAb,CAAqBF,eAArB;AACD;;AAEDR,IAAAA,YAAY,CAAC/hB,IAAb,CAAkBA,IAAlB;AACD,GAVD,MAUO;AACL,UAAM0iB,KAAK,GAAGV,EAAE,KAAIM,QAAJ,oBAAIA,QAAQ,CAAE9uB,QAAV,CAAmB,WAAnB,CAAJ,CAAhB;AACA,QAAImvB,WAAW,GAAGD,KAAK,GAAGtD,2BAAH,GAAiCD,mBAAxD;AACA,UAAMyD,WAAW,GAAG5iB,IAAI,IAAI2iB,WAA5B;AACA,QAAIE,OAAO,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAOF,WAAP,EAAoBA,WAApB,CAAd;AACA,UAAM9hB,WAAW,GACfvM,iBAAiB,CACdqN,UADc,oBACdA,UAA6B,CAAEd,WADjB,CAAjB,KAGC,QAAQc,UAAR,oBAAQA,UAA6B,CAAEhB,WAAvC,MAAuD,QAAvD,GAAkE,CAAlE,GAAsE,CAHvE,CADF;;AAMA,QAAIE,WAAJ,EAAiB;AACf8hB,MAAAA,WAAW,IAAI9hB,WAAf;AACAgiB,MAAAA,OAAO,GAAG,CAAC,CAAChiB,WAAD,GAAe,CAAhB,EAAmB,CAACA,WAAD,GAAe,CAAlC,EAAqC8hB,WAArC,EAAkDA,WAAlD,CAAV;AACD;;AAED,QAAID,KAAJ,EAAW;AACTX,MAAAA,YAAY,CAAC/hB,IAAb,CAAqB4iB,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CACEI,OAAO,CAAC9uB,IAAR,CAAa,GAAb,CADF;AAIA,YAAM+uB,SAAS,GAAGd,EAAE,KAAKrgB,UAAL,oBAAKA,UAA6B,CAAEvN,IAApC,CAApB;;AAEA,UAAI0uB,SAAJ,EAAe;AACb,cAAMniB,WAAW,GAAGrM,iBAAiB,CAClCqN,UADkC,oBAClCA,UAA6B,CAAEhB,WADG,CAArC;AAGA,cAAMyC,SAAS,GAAG9O,iBAAiB,CAChCqN,UADgC,oBAChCA,UAA6B,CAAEyB,SADC,CAAnC;AAIA2e,QAAAA,YAAY,CAACR,GAAb,CACEuB,SAAS,KAAK9F,mBAAW,CAAC5jB,MAA1B,wEAGYgmB,2BAA2B,GAAG,CAH1C,iCAIYA,2BAA2B,GAAG,CAJ1C,gCAKWA,2BAA2B,GAAG,CALzC,oCAMchc,SAAS,IAAIic,yBAN3B,uCAOgB1e,WAAW,IAAI2e,2BAP/B,4CAQsBze,WARtB,kGAYeue,2BAZf,qCAagBA,2BAbhB,8DAechc,SAAS,IAAIic,yBAf3B,uCAgBgB1e,WAAW,IAAI2e,2BAhB/B,4CAiBsBze,WAjBtB,yBADF;AAqBAkhB,QAAAA,YAAY,CAACR,GAAb,CAAiBe,QAAjB;AACAP,QAAAA,YAAY,CAAC3wB,IAAb,CAAkB,8BAAlB,EAAkD2xB,IAAlD,CAAwDC,IAAD,IACrDA,IAAI,CAACpR,MAAL,EADF;AAGAmQ,QAAAA,YAAY,CAAC3wB,IAAb,CAAkB,kBAAlB,EAAsC2xB,IAAtC,CAA4CC,IAAD,IACzCA,IAAI,CACDnjB,MADH,CAEIuf,2BAA2B,GAAG,CAFlC,EAGIA,2BAA2B,GAAG,CAHlC,EAKG/mB,IALH,CAKQ,OALR,CADF;AASA,cAAM4qB,QAAQ,GAAGlB,YAAY,CAAC3wB,IAAb,CAAkB,YAAlB,EAAgC,CAAhC,CAAjB;;AAEA,YAAI6wB,YAAJ,EAAkB;AAChBgB,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAE1rB,MAAV,CAAiB;AAAE2rB,YAAAA,OAAO,EAAE7B;AAAX,WAAjB;AACD,SA9CY;;;AAiDb,YACEltB,sBAAsB,CACnBwN,UADmB,oBACnBA,UAA6B,CAAEyB,SADZ,CADxB,EAIE;AAAA;;AACA6f,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAE5qB,IAAV,CAAeqpB,iBAAiB,CAC9BK,YAD8B,EAE5BpgB,UAF4B,6CAE5BA,UAA6B,CAAEyB,SAFH,qBAE5B,sBAEE1I,MAJ0B,CAAhC;AAMD;;AAED,YAAIvG,sBAAsB,CACvBwN,UADuB,oBACvBA,UAA6B,CAAEhB,WADR,CAA1B,EAEG;AAAA;;AACDsiB,UAAAA,QAAQ,QAAR,YAAAA,QAAQ,CAAE1rB,MAAV,CAAiB;AACfqJ,YAAAA,KAAK,EAAG8gB,iBAAiB,CACvBK,YADuB,EAErBpgB,UAFqB,6CAErBA,UAA6B,CAAEhB,WAFV,qBAErB,sBAEEjG,MAJmB;AADV,WAAjB;AAQD;AACF,OA1ED,MA0EO;AACLqnB,QAAAA,YAAY,CAACR,GAAb,CAAiBe,QAAjB;AACD;AACF,KApFD,MAoFO;AACL,YAAM3hB,WAAW,GAAGrM,iBAAiB,CAClCuoB,MADkC,oBAClCA,MAAyB,CAAElc,WADO,CAArC;AAGA,YAAME,WAAW,GAAGvM,iBAAiB,CAClCuoB,MADkC,oBAClCA,MAAyB,CAAEhc,WADO,CAAjB,KAGjB,QAAQgc,MAAR,oBAAQA,MAAyB,CAAElc,WAAnC,MAAmD,QAAnD,GAA8D,CAA9D,GAAkE,CAHjD,CAApB;AAIA,YAAMyC,SAAS,GAAG9O,iBAAiB,CAChCuoB,MADgC,oBAChCA,MAAyB,CAAEzZ,SADK,CAAnC;AAIA2e,MAAAA,YAAY,CAAC/hB,IAAb,CAAqB4iB,WAArB,SAAyCA,WAAzC,SAA0DH,OAA1D,CACEI,OAAO,CAAC9uB,IAAR,CAAa,GAAb,CADF;AAGAguB,MAAAA,YAAY,CAACR,GAAb,CAAiBe,QAAjB;AACAP,MAAAA,YAAY,CAAC3wB,IAAb,CAAkB,gBAAlB,EAAoC2xB,IAApC,CAAyCC,IAAI;AAC3CA,QAAAA,IAAI,CACDnjB,MADH,CACUsf,mBAAmB,GAAG,CADhC,EACmCA,mBAAmB,GAAG,CADzD,EAEG9mB,IAFH,CAEQ+K,SAAS,IAAIic,yBAFrB,EAGG9nB,MAHH,CAGU;AAAEqJ,UAAAA,KAAK,EAAED,WAAT;AAAsBhC,UAAAA,KAAK,EAAEkC;AAA7B,SAHV;;AAKA,YACE1M,sBAAsB,CACnB0oB,MADmB,oBACnBA,MAAyB,CAAEzZ,SADR,CADxB,EAIE;AAAA;;AACA4f,UAAAA,IAAI,QAAJ,YAAAA,IAAI,CAAE3qB,IAAN,CAAWqpB,iBAAiB,CAC1BK,YAD0B,EAExBlF,MAFwB,yCAExBA,MAAyB,CAAEzZ,SAFH,qBAExB,kBAEE1I,MAJsB,CAA5B;AAMD;;AAED,YACEvG,sBAAsB,CACnB0oB,MADmB,oBACnBA,MAAyB,CAAElc,WADR,CADxB,EAIE;AAAA;;AACAqiB,UAAAA,IAAI,QAAJ,YAAAA,IAAI,CAAEzrB,MAAN,CAAa;AACXqJ,YAAAA,KAAK,EAAG8gB,iBAAiB,CACvBK,YADuB,EAErBlF,MAFqB,2CAErBA,MAAyB,CAAElc,WAFN,qBAErB,oBAEEjG,MAJmB;AADd,WAAb;AAQD;AACF,OAjCD;AAkCD;AACF;;AAED,QAAMyoB,aAAa,cAAG,gCAAgCX,IAAhC,CAAqCN,UAArC,CAAH,qBAAG,QAAmD,CAAnD,CAAtB;;AAEA,MAAIiB,aAAJ,EAAmB;AACjB,UAAMC,cAAc,GAAGD,aAAa,CAAC9yB,KAAd,CAAoB,CAApB,EAAuB,CAAC,CAAxB,EAA2BuD,KAA3B,CAAiC,GAAjC,CAAvB;AAEAmuB,IAAAA,YAAY,CAACsB,SAAb,CAAuB;AACrB,OAACD,cAAc,CAAC,CAAD,CAAf,GAAqBA,cAAc,CAAC,CAAD,CAAd,CAAkBxvB,KAAlB,CAAwB,GAAxB;AADA,KAAvB;AAGD;;AAED,QAAM0vB,YAAY,GAAGvB,YAAY,CAACsB,SAAb,CAAuB,QAAvB,CAArB;;AAEA,MAAIC,YAAJ,EAAkB;AAChBvB,IAAAA,YAAY,CAACwB,MAAb,CAAoB,CAACD,YAArB,EAAmC,CAAnC,EAAsC,CAAtC;AACD;;AACD,MAAIvG,KAAK,KAAKvf,SAAd,EAAyB;AACvBukB,IAAAA,YAAY,CAACwB,MAAb,CAAqBxG,KAAgB,IAAI,MAAM/e,IAAI,CAAC8B,EAAf,CAArC,EAAyD,CAAzD,EAA4D,CAA5D;AACD;;AAED,SAAOiiB,YAAP;AACD,CAtNM;;IC/BMyB,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKxe,SAAL,GAAiB,KAAKnE,WAAL,GAAmB,CAA3C;AACD;AAHH;AAAA;AAAA,WAKE,2BAAiC0D,WAAjC;UAAY,CAACtV,CAAD,EAAIC,CAAJ;AACV,aAAO,CAAC,CAAC,CAACD,CAAC,GAAG,CAAC,KAAK+V,SAAL,GAAiB,CAAjB,GAAqB,KAAKnE,WAA3B,IAA0C0D,WAA/C,EAA4DrV,CAA5D,CAAD,CAAD,CAAP;AACD;AAPH;AAAA;AAAA,WASE,sBAAawV,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAczM,kBAAc,CAACG,YAA9C;AAEA,aAAO,IAAIuM,eAAJ,CACLsZ,sBAAsB,CAAC/Z,UAAU,CAAC,CAAD,CAAV,CAAc,CAAd,CAAD,EAAmB,KAAKM,SAAxB,CADjB,EAEL;AACE5B,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,aADrC;AAEED,QAAAA,WAAW,EAAE,KAAKC,KAFpB;AAGEC,QAAAA,WAAW,EAAE,KAAKA,WAHpB;AAIEuE,QAAAA,QAAQ,EAAE;AAJZ,OAFK,CAAP;AASD;AArBH;;AAAA;AAAA,EAA2CrB,eAA3C;;ICDa0f,qBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,SACE;AACE,aAAO,KAAKze,SAAL,GAAiB,KAAKnE,WAA7B;AACD;AAHH;AAAA;AAAA,WAIE,2BAAiC0D,WAAjC;UAAY,CAACtV,CAAD,EAAIC,CAAJ;AACV,aAAO,CACL,CACE,CAACD,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CADF,EAEE,CAAC/V,CAAD,EAAIC,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAzB,CAFF,EAGE,CAAC/V,CAAC,GAAG,KAAK+V,SAAL,GAAiBT,WAAtB,EAAmCrV,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAxD,CAHF,EAIE,CAAC/V,CAAC,GAAG,KAAK+V,SAAL,GAAiBT,WAAtB,EAAmCrV,CAAC,GAAG,KAAK8V,SAAL,GAAiB,CAAxD,CAJF,CADK,CAAP;AAQD;AAbH;AAAA;AAAA,WAeE,sBAAaN,UAAb;AACE,YAAMO,QAAQ,GAAG,KAAKC,IAAL,KAAczM,kBAAc,CAACK,YAA9C;AAEA,aAAO,IAAIqM,eAAJ,CAAeT,UAAf,EAA2B;AAChCU,QAAAA,QAAQ,EAAE,IADsB;AAEhChC,QAAAA,SAAS,EAAE6B,QAAQ,GAAG,KAAKrE,KAAR,GAAgB,KAAK,CAFR;AAGhC6B,QAAAA,SAAS,EAAEwC,QAAQ,GAAGI,cAAS,CAAC/H,KAAb,GAAqB+H,cAAS,CAAC3M,IAHlB;AAIhCwI,QAAAA,OAAO,EAAE,QAJuB;AAKhCoE,QAAAA,QAAQ,EAAE,OALsB;AAMhC3E,QAAAA,WAAW,EAAE,KAAKC,KANc;AAOhCC,QAAAA,WAAW,EAAE,KAAKA;AAPc,OAA3B,CAAP;AASD;AA3BH;;AAAA;AAAA,EAA2CkD,eAA3C;;ACCO,MAAM2f,kBAAkB,GAC7BC,OADgC;AAGhC,UAAQA,OAAO,CAACze,IAAhB;AACE,SAAKzM,kBAAc,CAACO,KAApB;AACA,SAAKP,kBAAc,CAACI,WAApB;AACE,aAAO,IAAIkM,oBAAJ,CAAyB4e,OAAzB,CAAP;;AACF,SAAKlrB,kBAAc,CAACS,MAApB;AACA,SAAKT,kBAAc,CAACK,YAApB;AACE,aAAO,IAAI2qB,qBAAJ,CAA0BE,OAA1B,CAAP;;AACF,SAAKlrB,kBAAc,CAACW,MAApB;AACA,SAAKX,kBAAc,CAACG,YAApB;AACE,aAAO,IAAI4qB,qBAAJ,CAA0BG,OAA1B,CAAP;;AACF;AACE,aAAO,IAAP;AAXJ;AAaD,CAhBM;;ACHP,MAAMC,uBAAuB,GAAG,CAC9B/f,IAD8B,EAE9BmB,SAF8B,EAG9B6e,UAH8B;AAK9B,QAAMC,YAAY,GAAGjgB,IAAI,CAACxT,KAAL,GAAa0zB,OAAb,EAArB;;AAEA,OAAK,IAAItlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqlB,YAAY,CAACl4B,MAAjC,EAAyC6S,CAAC,EAA1C,EAA8C;AAC5C,UAAMoN,WAAW,GAAGiY,YAAY,CAACrlB,CAAD,CAAhC;;AAEA,QAAIolB,UAAU,IAAIplB,CAAC,KAAK,CAAxB,EAA2B;AACzBqlB,MAAAA,YAAY,CAACrlB,CAAD,CAAZ,GAAkB,CAACoN,WAAW,CAAC,CAAD,CAAX,GAAiB7G,SAAlB,EAA6B6G,WAAW,CAAC,CAAD,CAAxC,CAAlB;AACD;;AAED,UAAMmY,eAAe,GAAGF,YAAY,CAACrlB,CAAC,GAAG,CAAL,CAApC;;AAEA,QAAIulB,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqBnY,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1DiY,MAAAA,YAAY,CAACrlB,CAAD,CAAZ,GAAkB,CAChBulB,eAAe,CAAC,CAAD,CAAf,GAAqBhmB,IAAI,CAACimB,GAAL,CAASD,eAAe,CAAC,CAAD,CAAf,GAAqBnY,WAAW,CAAC,CAAD,CAAzC,CADL,EAEhBA,WAAW,CAAC,CAAD,CAFK,CAAlB;AAID;AACF;;AAED,SAAOiY,YAAY,CAACC,OAAb,EAAP;AACD,CAzBD;;AA2BA,MAAMG,sBAAsB,GAAG,CAC7BrgB,IAD6B,EAE7BmB,SAF6B,EAG7Bmf,WAH6B;AAK7B,QAAMC,OAAO,GAAGvgB,IAAI,CAACxT,KAAL,EAAhB;;AAEA,OAAK,IAAIoO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2lB,OAAO,CAACx4B,MAA5B,EAAoC6S,CAAC,EAArC,EAAyC;AACvC,UAAMoN,WAAW,GAAGuY,OAAO,CAAC3lB,CAAD,CAA3B;;AAEA,QAAIA,CAAC,KAAK,CAAN,IAAW0lB,WAAf,EAA4B;AAC1BC,MAAAA,OAAO,CAAC3lB,CAAD,CAAP,GAAa,CAACoN,WAAW,CAAC,CAAD,CAAX,GAAiB7G,SAAlB,EAA6B6G,WAAW,CAAC,CAAD,CAAxC,CAAb;AACD;;AAED,UAAMwY,eAAe,GAAGD,OAAO,CAAC3lB,CAAC,GAAG,CAAL,CAA/B;;AAEA,QAAI4lB,eAAe,IAAIA,eAAe,CAAC,CAAD,CAAf,GAAqBxY,WAAW,CAAC,CAAD,CAAvD,EAA4D;AAC1DuY,MAAAA,OAAO,CAAC3lB,CAAD,CAAP,GAAa,CACX4lB,eAAe,CAAC,CAAD,CAAf,GAAqBrmB,IAAI,CAACimB,GAAL,CAASpY,WAAW,CAAC,CAAD,CAAX,GAAiBwY,eAAe,CAAC,CAAD,CAAzC,CADV,EAEXxY,WAAW,CAAC,CAAD,CAFA,CAAb;AAID;AACF;;AAED,SAAOuY,OAAP;AACD,CAzBD;;AA2BA,AAAO,MAAME,mBAAmB,GAAG,CACjC/gB,KADiC,EAEjCzT,QAFiC,EAGjCkV,SAHiC;AAKjC,SAAOzB,KAAK,CAAC/V,GAAN,CAAU,CAACqW,IAAD,EAAOqO,SAAP;AACf,YAAQpiB,QAAR;AACE,WAAK,OAAL;AACE,eAAO8zB,uBAAuB,CAC5B/f,IAD4B,EAE5BmB,SAF4B,EAG5BkN,SAAS,KAAK3O,KAAK,CAAC3X,MAAN,GAAe,CAHD,CAA9B;;AAKF;AACE,eAAOs4B,sBAAsB,CAACrgB,IAAD,EAAOmB,SAAP,EAAkBkN,SAAS,KAAK,CAAhC,CAA7B;AARJ;AAUD,GAXM,CAAP;AAYD,CAjBM;;MCpCMqS,SAAS,GAAIhhB,KAAD,IACvBA,KAAK,CAAC/V,GAAN,CAAUqW,IAAI,IACZA,IAAI,CAACrW,GAAL,CAASqe,WAAW,IAAIA,WAAW,CAACxb,KAAZ,EAAxB,CADF,CADK;AAKP,IAAam0B,kBAAb;AAAA;;AAAA;;AACE,8BAAmB9jB,cAAnB;;;;;;;AACE,8BAAM;AACJ;AACAC,MAAAA,WAAW,EAAEvD,WAAW,CAAC9I,iBAAiB,0BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,sBAAuBqJ,KAAxB,CAAlB,CAFpB;AAGJC,MAAAA,WAAW,EAAEjD,KAAK;AAEhBtJ,MAAAA,iBAAiB,2BAACoM,cAAc,CAACnJ,MAAhB,qBAAC,uBAAuBoH,KAAxB,CAFD,EAGhBlB,cAAc,CAACC,gBAHC,EAIhBD,cAAc,CAACE,gBAJC,CAHd;AASJ;AACAmD,MAAAA,QAAQ,EAAE/B,WAAW,CAAC2B,cAAc,CAACnJ,MAAhB,CAVjB;AAWJ;AACA2J,MAAAA,OAAO,EAAEhJ,aAAa,CAACwI,cAAc,CAACnJ,MAAhB,CAAb,GAAuC,QAAvC,GAAkD;AAZvD,KAAN;AADiB,wBAAA,GAAAmJ,cAAA;;AAelB;;AAhBH;AAAA;AAAA,WAkBE,wBAAelP,OAAf,EAAkCtB,UAAlC,EAAsDU,GAAtD;AACE,UAAI,CAACkG,sBAAsB,CAAC,KAAK4J,cAAN,CAA3B,EACE,8FAA4BlP,OAA5B,EAAqCtB,UAArC,EAAiDU,GAAjD;AAEF,YAAM;AACJ0G,QAAAA,MADI;AAEJD,QAAAA;AAFI,UAGF,KAAKqJ,cAHT;AAIA,YAAM+jB,OAAO,GAAa,EAA1B;AAEA,YAAMC,WAAW,GAAGlzB,OAAO,CAACmzB,KAAR,EAApB;AAEA,YAAMC,oBAAoB,GAAGlB,kBAAkB,CAAC;AAC9C9iB,QAAAA,KAAK,EAAE,KAAKD,WADkC;AAE9C;AACAuE,QAAAA,IAAI,EAAE7N,SAAS,CAACjD,IAH8B;AAI9CtE,QAAAA,QAAQ,EAAE,MAJoC;AAK9C;AACAkQ,QAAAA,IAAI,EAAE3I,SAAS,CAAC2I,IAN8B;AAO9Ca,QAAAA,WAAW,EAAE,KAAKA;AAP4B,OAAD,CAA/C;AASA,YAAMgkB,iBAAiB,GAAGnB,kBAAkB,CAAC;AAC3C9iB,QAAAA,KAAK,EAAE,KAAKD,WAD+B;AAE3C;AACAuE,QAAAA,IAAI,EAAE5N,MAAM,CAAClD,IAH8B;AAI3CtE,QAAAA,QAAQ,EAAE,OAJiC;AAK3C;AACAkQ,QAAAA,IAAI,EAAE1I,MAAM,CAAC0I,IAN8B;AAO3Ca,QAAAA,WAAW,EAAE,KAAKA;AAPyB,OAAD,CAA5C;;AAUA,UAAI+jB,oBAAJ,EAA0B;AACxB,cAAME,YAAY,GAAGR,mBAAmB,CACtCI,WAAW,CAACnhB,KAD0B,EAEtC,MAFsC,EAGtCqhB,oBAAoB,CAACG,SAHiB,CAAxC;AAKA,cAAMC,MAAM,GAAGJ,oBAAoB,CAACK,SAArB,CACbH,YADa,EAEbtzB,OAAO,CAACZ,GAFK,EAGbV,UAHa,EAIbU,GAJa,CAAf;AAOA8zB,QAAAA,WAAW,CAACnhB,KAAZ,GAAoBuhB,YAApB;AACAL,QAAAA,OAAO,CAACzpB,IAAR,CAAagqB,MAAb;AACD;;AAED,UAAIH,iBAAJ,EAAuB;AACrB,cAAMC,YAAY,GAAGR,mBAAmB,CACtCI,WAAW,CAACnhB,KAD0B,EAEtC,OAFsC,EAGtCshB,iBAAiB,CAACE,SAHoB,CAAxC;AAKA,cAAMC,MAAM,GAAGH,iBAAiB,CAACI,SAAlB,CACbH,YADa,EAEbtzB,OAAO,CAACZ,GAFK,EAGbV,UAHa,EAIbU,GAJa,CAAf;AAOA8zB,QAAAA,WAAW,CAACnhB,KAAZ,GAAoBuhB,YAApB;AACAL,QAAAA,OAAO,CAACzpB,IAAR,CAAagqB,MAAb;AACD;;;AAGDP,MAAAA,OAAO,CAACS,OAAR,CAAgB,0FAAwBR,WAAxB,EAAqCx0B,UAArC,EAAiDU,GAAjD,CAAhB;AAEA,aAAO6zB,OAAP;AACD;AAvFH;AAAA;AAAA,WAyFE;AACE,aAAO,IAAID,kBAAJ,CAAuB,KAAK9jB,cAA5B,CAAP;AACD;AA3FH;;AAAA;AAAA,EAAwCykB,6BAAxC;;ICZaC,WAAb;AAAA;;AAAA;;AAGE;;;QAAY;AAAEC,MAAAA,SAAF;AAAa/rB,MAAAA;AAAb,2BAA2C;;;;AACrD,8BAAM;AAAEA,MAAAA;AAAF,KAAN;AACA,UAAK+rB,SAAL,GAAiBA,SAAjB;;AACD;;AANH;AAAA;AAAA,WAQY,yBAAgB7zB,OAAhB;AACR,YAAM8zB,IAAI,GAAGjkB,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAb;AAEA,WAAKikB,SAAL,CAAe/zB,OAAO,CAAC6gB,OAAvB,EAAgCiT,IAAhC;AAEA,aAAOA,IAAP;AACD;AAdH;AAAA;AAAA,WAgBY,4BAAmB9zB,OAAnB;AACR,WAAK+zB,SAAL,CAAe/zB,OAAO,CAAC6gB,OAAvB,EAAgC,KAAKmT,OAAL,CAAah0B,OAAb,CAAhC;AACD;AAlBH;AAAA;AAAA,WAoBU,mBAAU6gB,OAAV,EAA2BiT,IAA3B;AACN,UAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED,YAAMG,SAAS,GAAG,KAAKJ,SAAvB;;AAEA,UAAII,SAAJ,EAAe;AACbC,QAAAA,QAAQ,CAACV,MAAT,CAAgBj4B,4BAAA,CAAC04B,SAAD;AAAWpT,UAAAA,OAAO,EAAEA;SAApB,CAAhB,EAAiDiT,IAAjD;AACD,OAFD,MAEO;AACLA,QAAAA,IAAI,CAACK,SAAL,GAAiBtT,OAAjB;AACD;AACF;AAhCH;;AAAA;AAAA,EAAiCuT,0BAAjC;;MCTaC,aAAa,GAAW,CAAC,CAAD,EAAI,CAAC,EAAL,CAA9B;AAQP,MAAalT,iBAAiB,GAAImT,KAAD;AAC/B,QAAM;AACJxsB,IAAAA,MAAM,GAAGusB,aADL;AAEJjT,IAAAA,WAAW,GAAG;AAAA,UAAC;AAAEP,QAAAA;AAAF,OAAD;AAAA,aAAsCtlB,4BAAA,MAAA,MAAA,EAAMslB,OAAN,CAAtC;AAAA,KAFV;AAGJS,IAAAA,OAAO,GAAGtV;AAHN,MAIFsoB,KAAK,IAAI,EAJb;AAMA,SAAO,IAAIV,WAAJ,CAAgB;AACrB9rB,IAAAA,MADqB;AAErB+rB,IAAAA,SAAS,EAAE;AAAA,UAAC;AAAEhT,QAAAA;AAAF,OAAD;AAAA,aACTO,WAAW,CAAC;AAAEP,QAAAA,OAAF;AAAWS,QAAAA;AAAX,OAAD,CADF;AAAA;AAFU,GAAhB,CAAP;AAKD,CAZM;;ICIMiT,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAYpC,OAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WAqCS,wBACLnyB,OADK,EAELtB,UAFK,EAGLU,GAHK;AAKL,UAAI,EAAEY,OAAO,YAAYya,yBAArB,CAAJ,EAAwC,OAAO,EAAP;AACxC,YAAM;AAAEnc,QAAAA;AAAF,UAAe0B,OAAO,CAAC6sB,SAAR,CAAkBztB,GAAlB,CAArB;AAEA,YAAMo1B,UAAU,GAAgB,CAC9Bl2B,QAAQ,CAAC,CAAD,CAAR,GAAcI,UAAd,IAA4B,KAAKoJ,MAAL,CAAY,CAAZ,KAAkB,CAA9C,CAD8B,EAE9B,CAACxJ,QAAQ,CAAC,CAAD,CAAT,GAAeI,UAAf,IAA6B,KAAKoJ,MAAL,CAAY,CAAZ,KAAkB,CAA/C,CAF8B,CAAhC;AAKA,YAAM2sB,YAAY,GAAG,KAAKC,SAAL,CAAeF,UAAf,EAA2Bx0B,OAA3B,EAAoC1B,QAApC,CAArB;AACA,YAAMq2B,QAAQ,GAAG,KAAKC,QAAL,CAAcJ,UAAd,EAA0Bx0B,OAA1B,EAAmC1B,QAAnC,CAAjB;AAEA,aAAOm2B,YAAY,GAAG,CAACA,YAAD,EAAeE,QAAf,CAAH,GAA8B,CAACA,QAAD,CAAjD;AACD;AAtDH;AAAA;AAAA,WAwDY,mBACRr2B,QADQ,EAERu2B,QAFQ,EAGRC,cAHQ;AAKR,aAAOP,mBAAmB,CAACQ,YAApB,CAAiCz2B,QAAjC,EAA2C,IAA3C,EAAiDw2B,cAAjD,CAAP;AACD;AA9DH;AAAA;AAAA,WAgEY,kBAASx2B,QAAT,EAAgCu2B,QAAhC,EAAmDC,cAAnD;AACR,aAAOP,mBAAmB,CAACS,WAApB,CAAgC12B,QAAhC,EAA0C,IAA1C,EAAgDw2B,cAAhD,CAAP;AACD;AAlEH;AAAA;AAAA,WASE,sBACEx2B,QADF,QAGEw2B,cAHF;UAEE;AAAEzlB,QAAAA,WAAW,GAAG,CAAhB;AAAmB4lB,QAAAA,WAAnB;AAAgCC,QAAAA,UAAhC;AAA4C1mB,QAAAA,IAAI,GAAG;AAAnD;AAGA,aAAO,IAAI2mB,OAAJ,CAAQ72B,QAAR,EAAkB;AACvBsT,QAAAA,SAAS,EAAE,aADY;AAEvBzC,QAAAA,WAAW,EAAE8lB,WAFU;AAGvB5lB,QAAAA,WAAW,EAAE6lB,UAHU;AAIvB/H,QAAAA,MAAM,EAAE,CAAC3e,IAAI,GAAGa,WAAP,GAAqB6lB,UAAtB,IAAoC,CAJrB;AAKvBJ,QAAAA;AALuB,OAAlB,CAAP;AAOD;AArBH;AAAA;AAAA,WAuBE,qBACEx2B,QADF,SAGEw2B,cAHF;UAEE;AAAEzlB,QAAAA,WAAF;AAAeuC,QAAAA,SAAf;AAA0BzC,QAAAA,WAA1B;AAAuCX,QAAAA,IAAI,GAAG;AAA9C;AAGA,aAAO,IAAI2mB,OAAJ,CAAQ72B,QAAR,EAAkB;AACvBsT,QAAAA,SADuB;AAEvBzC,QAAAA,WAFuB;AAGvBE,QAAAA,WAHuB;AAIvB8d,QAAAA,MAAM,EAAE3e,IAAI,GAAG,CAJQ;AAKvBsmB,QAAAA;AALuB,OAAlB,CAAP;AAOD;AAnCH;;AAAA;AAAA,EAAyCM,iBAAzC;;MCFaC,+BAA+B,GAAG,SAAlCA,+BAAkC,CAACr1B,OAAD,EAAgBZ,GAAhB,EAA0Bk2B,SAA1B;MAA0BA;AAAAA,IAAAA,YAAY;;;AACnF,QAAMpjB,SAAS,GAAGlS,OAAO,CAACZ,GAAR,CAAYm2B,MAAZ,CAAmBn2B,GAAnB,IAA0BY,OAAO,CAAC+R,KAAlC,GAA0C/R,OAAO,CAAC6sB,SAAR,CAAkBztB,GAAlB,EAAuB2S,KAAnF;AAEA,SAAOK,wBAAmB,CAACF,SAAD,EAAYojB,SAAZ,CAA1B;AACD,CAJM;AAMP,SAAgBE,mBACdl3B;MACA;AAAE+Q,IAAAA,WAAW,GAAG,CAAhB;AAAmB4lB,IAAAA,WAAnB;AAAgCC,IAAAA,UAAhC;AAA4C1mB,IAAAA,IAAI,GAAG,CAAnD;AAAsDsmB,IAAAA;AAAtD;AAEA,QAAMW,YAAY,GAAG,CAACjnB,IAAI,GAAGa,WAAP,GAAqB6lB,UAAtB,IAAoC,CAAzD;AAEA,SAAO,IAAIC,OAAJ,CAAQ72B,QAAR,EAAkB;AACvBsT,IAAAA,SAAS,EAAE,aADY;AAEvBzC,IAAAA,WAAW,EAAE8lB,WAFU;AAGvB5lB,IAAAA,WAAW,EAAE6lB,UAHU;AAIvB/H,IAAAA,MAAM,EAAEsI,YAJe;AAKvBX,IAAAA;AALuB,GAAlB,CAAP;AAOD;AAED,SAAgBY,kBACdp3B;MACA;AAAE6Q,IAAAA,WAAF;AAAeE,IAAAA,WAAf;AAA4BuC,IAAAA,SAA5B;AAAuCpD,IAAAA,IAAI,GAAG,CAA9C;AAAiDsmB,IAAAA;AAAjD;AAEA,QAAM3H,MAAM,GAAG3e,IAAI,GAAG,CAAtB;AAEA,SAAO,IAAI2mB,OAAJ,CAAQ72B,QAAR,EAAkB;AACvBsT,IAAAA,SADuB;AAEvBzC,IAAAA,WAFuB;AAGvBE,IAAAA,WAHuB;AAIvB8d,IAAAA,MAJuB;AAKvB2H,IAAAA;AALuB,GAAlB,CAAP;AAOD;AAWD,IAAaa,kBAAb;AAAA;;AAAA;;AAQE;AACA,8BAAYxD,OAAZ;;;6BACQA;AACP;;AAXH;AAAA;AAAA,WAaS,wBACLnyB,OADK,EAELtB,UAFK,EAGLU,GAHK;AAKL,UAAI,EAAEY,OAAO,YAAY41B,WAArB,CAAJ,EAAgC,OAAO,EAAP;;AAEhC,YAAMvb,WAAW,kGACfra,OADe,EAEftB,UAFe,EAGfU,GAHe,CAAjB;;AAKA,YAAMy2B,4BAA4B,GAAGR,+BAA+B,CAACr1B,OAAD,EAAUZ,GAAV,CAApE;AACA,YAAM02B,UAAU,GAAG,KAAKC,aAAL,CAAmB1b,WAAnB,EAAgCra,OAAhC,EAAyC61B,4BAAzC,CAAnB;AACA,YAAMpB,YAAY,GAAG,KAAKC,SAAL,CAAera,WAAf,EAA4Bra,OAA5B,EAAqC61B,4BAArC,CAArB;AACA,YAAMG,aAAa,GAAG,KAAKC,gBAAL,CAAsB5b,WAAtB,EAAmCwb,4BAAnC,CAAtB;AACA,UAAI5C,OAAO,GAAa,CAAC6C,UAAD,CAAxB;;AAEA,UAAIrB,YAAJ,EAAkB;AAChBxB,QAAAA,OAAO,GAAG,CAACwB,YAAD,EAAeqB,UAAf,CAAV;AACD;;AAED,UAAIE,aAAJ,EAAmB;AACjB/C,QAAAA,OAAO,GAAGA,OAAO,CAACiD,MAAR,CAAeF,aAAf,CAAV;AACD;;AAED,aAAO/C,OAAP;AACD;AAxCH;AAAA;AAAA,WA0CY,mBACR5Y,WADQ,EAERwa,QAFQ,EAGRC,cAHQ;AAKR,aAAO,IAAInhB,eAAJ,CAAe0G,WAAf,EAA4B;AACjCpJ,QAAAA,SAAS,EAAE4C,cAAS,CAAC3M,IADY;AAEjC0M,QAAAA,QAAQ,EAAE,KAAKuiB,OAFkB;AAGjChnB,QAAAA,WAAW,EAAE,KAAK8lB,WAHe;AAIjC5lB,QAAAA,WAAW,EAAE,KAAK6lB,UAJe;AAKjC5lB,QAAAA,QAAQ,EAAE,KAAKA,QALkB;AAMjCwlB,QAAAA;AANiC,OAA5B,CAAP;AAQD;AAvDH;AAAA;AAAA,WAyDY,uBACRza,WADQ,EAERwa,QAFQ,EAGRC,cAHQ;AAKR,aAAO,IAAInhB,eAAJ,CAAe0G,WAAf,EAA4B;AACjCpJ,QAAAA,SAAS,EAAE,KAAKklB,OAAL,GAAetiB,cAAS,CAAC/H,KAAzB,GAAiC+H,cAAS,CAAC3M,IADrB;AAEjC0M,QAAAA,QAAQ,EAAE,KAAKuiB,OAFkB;AAGjCvkB,QAAAA,SAAS,EAAE,KAAKA,SAHiB;AAIjCzC,QAAAA,WAAW,EAAE,KAAKA,WAJe;AAKjCE,QAAAA,WAAW,EAAE,KAAKA,WALe;AAMjCC,QAAAA,QAAQ,EAAE,KAAKA,QANkB;AAOjCwlB,QAAAA;AAPiC,OAA5B,CAAP;AASD;AAvEH;AAAA;AAAA,WAyEY,0BACRza,WADQ,EAERya,cAFQ;AAIR,UAAI,CAAC,KAAKsB,UAAV,EAAsB;AAEtB,YAAMC,cAAc,GAAG,EAAvB;AACA,YAAMC,eAAe,GAAG,EAAxB;;AAEA,WAAK,IAAIrpB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoN,WAAW,CAACjgB,MAAhC,EAAwC6S,CAAC,EAAzC,EAA6C;AAC3C,cAAMoF,IAAI,GAAGgI,WAAW,CAACpN,CAAD,CAAxB;;AAEA,aAAK,IAAIoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgC,IAAI,CAACjY,MAAzB,EAAiCiW,CAAC,EAAlC,EAAsC;AACpC,gBAAM/S,KAAK,GAAG+U,IAAI,CAAChC,CAAD,CAAlB;AACA,gBAAMkmB,YAAY,GAAGzB,cAAc,CAAC7nB,CAAD,CAAd,CAAkBoD,CAAlB,CAArB;AAEA,gBAAMokB,YAAY,GAAGe,kBAAkB,CAACl4B,KAAD,EAAQ;AAC7CkR,YAAAA,IAAI,EAAE,CADuC;AAE7Ca,YAAAA,WAAW,EAAE,CAFgC;AAG7C4lB,YAAAA,WAAW,EAAE,KAAKA,WAH2B;AAI7C9lB,YAAAA,WAAW,EAAE,KAAKA,WAJ2B;AAK7C+lB,YAAAA,UAAU,EACR,KAAKsB,gBAAL,KAA0BxqB,SAA1B,GAAsC,KAAKwqB,gBAA3C,GAA8D,CANnB;AAO7C5kB,YAAAA,SAAS,EAAE,aAPkC;AAQ7CkjB,YAAAA,cAAc,EAAEyB;AAR6B,WAAR,CAAvC;AAUA,gBAAME,WAAW,GAAGf,iBAAiB,CAACp4B,KAAD,EAAQ;AAC3CkR,YAAAA,IAAI,EAAE,CADqC;AAE3Ca,YAAAA,WAAW,EAAE,CAF8B;AAG3C4lB,YAAAA,WAAW,EAAE,KAAKA,WAHyB;AAI3C9lB,YAAAA,WAAW,EAAE,KAAKA,WAJyB;AAK3C+lB,YAAAA,UAAU,EACR,KAAKsB,gBAAL,KAA0BxqB,SAA1B,GAAsC,KAAKwqB,gBAA3C,GAA8D,CANrB;AAO3C5kB,YAAAA,SAAS,EAAE,SAPgC;AAQ3CkjB,YAAAA,cAAc,EAAEyB;AAR2B,WAAR,CAArC;AAWAD,UAAAA,eAAe,CAAC9sB,IAAhB,CAAqBirB,YAArB;AACA4B,UAAAA,cAAc,CAAC7sB,IAAf,CAAoBitB,WAApB;AACD;AACF;;AAED,aAAO,CAAC,GAAGJ,cAAJ,EAAoB,GAAGC,eAAvB,CAAP;AACD;AApHH;;AAAA;AAAA,EAAwCI,6BAAxC;AAuHA,MAAMC,gBAAgB,GAAG;AACvBtnB,EAAAA,WAAW,EAAE,CADU;AAEvBF,EAAAA,WAAW,EAAE,SAFU;AAGvB+lB,EAAAA,UAAU,EAAE,CAHW;AAIvBD,EAAAA,WAAW,EAAE;AAJU,CAAzB;AAOA,MAAM2B,mBAAmB,GAAG;AAC1BznB,EAAAA,WAAW,EAAE,SADa;AAE1B+lB,EAAAA,UAAU,EAAE,CAFc;AAG1BsB,EAAAA,gBAAgB,EAAE;AAHQ,CAA5B;AAMA,MAAaK,mBAAmB,gBAAG,IAAIlB,kBAAJ,4BAC9BgB,gBAD8B,EAE9BC,mBAF8B;AAGjCT,EAAAA,OAAO,EAAE,KAHwB;AAIjCC,EAAAA,UAAU,EAAE;AAJqB,GAA5B;AAOP,MAAa7V,iBAAiB,gBAAG,IAAIoV,kBAAJ,4BAC5BgB,gBAD4B,EAE5BC,mBAF4B;AAG/BhlB,EAAAA,SAAS,EAAE,0BAHoB;AAI/BukB,EAAAA,OAAO,EAAE,IAJsB;AAK/BC,EAAAA,UAAU,EAAE;AALmB,GAA1B;AAQP,MAAMU,gBAAgB,GAAG;AACvBtoB,EAAAA,IAAI,EAAE,EADiB;AAEvBa,EAAAA,WAAW,EAAE,CAFU;AAGvBF,EAAAA,WAAW,EAAE,SAHU;AAIvByC,EAAAA,SAAS,EAAE,SAJY;AAKvBqjB,EAAAA,WAAW,EAAE,uBALU;AAMvBC,EAAAA,UAAU,EAAE;AANW,CAAzB;AASA,MAAa6B,wBAAwB,gBAAG,IAAIxC,mBAAJ,4BACnCuC,gBADmC;AAEtC3nB,EAAAA,WAAW,EAAE,SAFyB;AAGtC+lB,EAAAA,UAAU,EAAE;AAH0B,GAAjC;;IC1MM8B,mBAAb;AAAA;;AAAA;;AAIE;AACA,+BAAY1C,KAAZ;;;6BACQA;AACP;;AAPH;AAAA;AAAA,WASY,mBACRh2B,QADQ,EAER0B,OAFQ,EAGR80B,cAHQ;AAKR,UAAI90B,OAAO,CAACi3B,UAAZ,EAAwB;AACtB,kGAAuB34B,QAAvB,EAAiC0B,OAAjC,EAA0C80B,cAA1C;AACD;AACF;AAjBH;AAAA;AAAA,WAmBY,kBACRx2B,QADQ,EAER0B,OAFQ,EAGR80B,cAHQ;AAKR,YAAM2B,WAAW,qFAAkBn4B,QAAlB,EAA4B0B,OAA5B,EAAqC80B,cAArC,CAAjB;;AAEA,UAAI90B,OAAO,CAACi3B,UAAZ,EAAwB;AACtBR,QAAAA,WAAW,CAACtnB,WAAZ,GAA0B,KAAK+nB,mBAA/B;AACAT,QAAAA,WAAW,CAAC7kB,SAAZ,GAAwB,KAAKulB,iBAA7B;AACD;;AAED,aAAOV,WAAP;AACD;AAhCH;;AAAA;AAAA,EAAyClC,mBAAzC;;ICIa6C,kBAAb;AAAA;;AAAA;;AAKE;AACA,8BAAY9C,KAAZ;;;6BACQA;AACP;;AARH;AAAA;AAAA,WAUY,mBACRja,WADQ,EAERra,OAFQ,EAGR80B,cAHQ;AAKR,UAAI90B,OAAO,CAACi3B,UAAZ,EAAwB;AACtB,iGAAuB5c,WAAvB,EAAoCra,OAApC,EAA6C80B,cAA7C;AACD;AACF;AAlBH;AAAA;AAAA,WAoBY,uBACRza,WADQ,EAERra,OAFQ,EAGR80B,cAHQ;AAKR,YAAMgB,UAAU,yFAAuBzb,WAAvB,EAAoCra,OAApC,EAA6C80B,cAA7C,CAAhB;;AACA,UAAI90B,OAAO,CAACi3B,UAAZ,EAAwB;AACtBnB,QAAAA,UAAU,CAAClkB,SAAX,GAAuB,KAAKulB,iBAA5B;AACArB,QAAAA,UAAU,CAAC3mB,WAAX,GAAyB,KAAK+nB,mBAA9B;;AACA,YAAI,KAAKG,mBAAL,KAA6B,KAAK,CAAtC,EAAyC;AACvCvB,UAAAA,UAAU,CAACzmB,WAAX,GAAyB,KAAKgoB,mBAA9B;AACD;AACF;;AAED,aAAOvB,UAAP;AACD;AAnCH;;AAAA;AAAA,EAAwCH,kBAAxC;;MChBajb,aAAa,gBAAG,IAAIsc,mBAAJ,CAAwB;AACnDxoB,EAAAA,IAAI,EAAE,CAD6C;AAEnDa,EAAAA,WAAW,EAAE,CAFsC;AAGnDF,EAAAA,WAAW,EAAE,wBAHsC;AAInDyC,EAAAA,SAAS,EAAE,2BAJwC;AAKnDqjB,EAAAA,WAAW,EAAE,wBALsC;AAMnDC,EAAAA,UAAU,EAAE,CANuC;AAQnDgC,EAAAA,mBAAmB,EAAE,SAR8B;AASnDC,EAAAA,iBAAiB,EAAE;AATgC,CAAxB,CAAtB;AAYP,MAAarc,gBAAgB,gBAAG,IAAIsc,kBAAJ,CAAuB;AACrD/nB,EAAAA,WAAW,EAAE,CADwC;AAErDF,EAAAA,WAAW,EAAE,wBAFwC;AAGrD+lB,EAAAA,UAAU,EAAE,CAHyC;AAIrDD,EAAAA,WAAW,EAAE,wBAJwC;AAKrDiC,EAAAA,mBAAmB,EAAE,SALgC;AAMrDG,EAAAA,mBAAmB,EAAE;AANgC,CAAvB,CAAzB;AASP,MAAarc,eAAe,gBAAG,IAAIoc,kBAAJ,CAAuB;AACpD/nB,EAAAA,WAAW,EAAE,CADuC;AAEpDF,EAAAA,WAAW,EAAE,wBAFuC;AAGpD+lB,EAAAA,UAAU,EAAE,CAHwC;AAIpDD,EAAAA,WAAW,EAAE,wBAJuC;AAKpDrjB,EAAAA,SAAS,EAAE,2BALyC;AAMpDukB,EAAAA,OAAO,EAAE,IAN2C;AAOpDgB,EAAAA,iBAAiB,EAAE,2BAPiC;AAQpDD,EAAAA,mBAAmB,EAAE;AAR+B,CAAvB,CAAxB;;ACJP,MAAMI,iBAAiB,GAAsB;AAC3CjoB,EAAAA,WAAW,EAAE,CAD8B;AAE3CF,EAAAA,WAAW,EAAE,kBAF8B;AAG3C8B,EAAAA,SAAS,EAAE4C,cAAS,CAAC3M;AAHsB,CAA7C;AAMA,IAAaqwB,OAAb;AAAA;;AAAA;;AAQE;;;QAAY;AACVC,MAAAA,iBADU;AAEVC,MAAAA,UAFU;AAGVC,MAAAA,MAHU;AAIVC,MAAAA,SAJU;AAKVC,MAAAA;AALU,2BAMM;;;;AAChB;AAdF,mBAAA,GAA4B/nB,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAA5B;AAeE,UAAK+nB,SAAL,CAAepzB,KAAf,CAAqBnG,QAArB,GAAgC,UAAhC;AACA,UAAKk5B,iBAAL,GAAyBA,iBAAzB;AACA,UAAKC,UAAL;AAAoBppB,MAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAA5B;AAAoCuD,MAAAA,SAAS,EAAE;AAA/C,OAA0D6lB,UAA1D;AACA,UAAKC,MAAL,GAAcA,MAAd;AACA,UAAKC,SAAL,GAAiBA,SAAjB;AACA,UAAKC,WAAL,GAAmBA,WAAnB;;AACD;;AAtBH;AAAA;AAAA,WAwBE,wBACE53B,OADF,EAEEtB,UAFF,EAGEU,GAHF;AAKE,YAAMib,WAAW,GACfra,OAAO,YAAY41B,WAAnB,GACI,IAAIc,6BAAJ,GAAqBoB,sBAArB,CAA4C93B,OAA5C,EAAqDtB,UAArD,EAAiEU,GAAjE,CADJ,GAEIY,OAAO,CAAC+3B,QAHd;AAKA,WAAKC,gBAAL,CAAsB54B,GAAtB;AACA,WAAKy4B,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,YAAMlI,GAAG,GAAG,KAAKmI,MAAL,CAAY7d,WAAZ,CAAZ;AACA0V,MAAAA,GAAG,IAAI,KAAK8H,SAAL,CAAeM,MAAf,CAAsBpI,GAAtB,CAAP;AAEA/vB,MAAAA,OAAO,CAACo4B,qBAAR,GAAgC,IAAIC,oBAAJ,CAAkB;AAChDvE,QAAAA,IAAI,EAAE,KAAK+D,SADqC;AAEhDS,QAAAA,MAAM,EAAE,CAACp5B,IAAD,EAAOR,UAAP,KACN,KAAK45B,MAAL,CAAY;AAAEp5B,UAAAA,IAAF;AAAQR,UAAAA,UAAR;AAAoBsB,UAAAA,OAApB;AAA6BZ,UAAAA;AAA7B,SAAZ,CAH8C;AAIhDm5B,QAAAA,MAAM,EAAE;AACN,eAAKf,iBAAL,IAA0B,KAAKA,iBAAL,CAAuBx3B,OAAvB,CAA1B;AACD;AAN+C,OAAlB,CAAhC;;AASA,WAAKw4B,kBAAL,CAAwBx4B,OAAxB;;AAEA,aAAO,CAACA,OAAO,CAACo4B,qBAAT,CAAP;AACD;AAnDH;AAAA;AAAA,WAqDE,0BAAiBh5B,GAAjB;AACE,UAAI,KAAKs4B,MAAL,IAAe,KAAKD,UAAxB,EAAoC;AAAA;;AAClC,aAAKA,UAAL,CAAgBtK,MAAhB,GACET,cAAc,CAAC,KAAKgL,MAAL,CAAYvK,MAAb,EAAqB;AACjClxB,UAAAA,OAAO,EAAE,KAAKy7B,MAAL,CAAYz7B,OADY;AAEjCmD,UAAAA;AAFiC,SAArB,CAAd,IAGM,sBAAKs4B,MAAL,kCAAae,QAAb,KAAyB,CAH/B,CADF;AAKD;AACF;AA7DH;AAAA;AAAA,WA+DE;;;UAAO;AACLv5B,QAAAA,IADK;AAELR,QAAAA,UAFK;AAGLsB,QAAAA,OAHK;AAILZ,QAAAA;AAJK;AAWL,UAAI,CAACY,OAAL,EAAc;AAEd,UAAI,CAACd,IAAL,EAAWA,IAAI,GAAGc,OAAO,CAAC04B,UAAf;AACX,UAAI,CAACh6B,UAAL,EAAiBA,UAAU,GAAGsB,OAAO,CAAC24B,gBAArB;AAEjB,UAAI,CAACz5B,IAAD,IAAS,CAACR,UAAV,IAAwB,CAACsB,OAAO,CAACZ,GAAR,CAAYw5B,YAAZ,CAAyB15B,IAAI,CAACE,GAA9B,CAA7B,EAAiE;;AAEjE,UAAIY,OAAO,CAAC24B,gBAAR,IAA4Bj6B,UAAU,KAAKsB,OAAO,CAAC24B,gBAAvD,EAAyE;AACvE,cAAME,cAAc,GAClB74B,OAAO,YAAY41B,WAAnB,GACI,IAAIc,6BAAJ,GAAqBoB,sBAArB,CAA4C93B,OAA5C,EAAqDtB,UAArD,EAAiEU,GAAjE,CADJ,GAEIY,OAAO,CAAC+3B,QAHd;AAKA,aAAKC,gBAAL,CAAsB54B,GAAtB;AACA,aAAKy4B,SAAL,CAAeI,SAAf,GAA2B,EAA3B;AACA,cAAMlI,GAAG,GAAG,KAAKmI,MAAL,CAAYW,cAAZ,CAAZ;AACA9I,QAAAA,GAAG,IAAI,KAAK8H,SAAL,CAAeM,MAAf,CAAsBpI,GAAtB,CAAP;AACD;;AAED,YAAM3R,OAAO,GAAGpe,OAAO,CAAC6sB,SAAR,CAAkB3tB,IAAI,CAACE,GAAvB,CAAhB;AACA,YAAM05B,YAAY,GAAG,yBAAKrB,UAAL,8BAAiBtK,MAAjB,GACjB,2BAAKsK,UAAL,uCAAiBtK,MAAjB,KACC,0BAAKsK,UAAL,+BAAiBpoB,WAAjB,GAA+B,2BAAKooB,UAAL,uCAAiBpoB,WAAjB,IAA+B,CAA9D,GAAkE,CADnE,CADiB,GAGjB,CAHJ;AAIA,YAAM0pB,EAAE,GACNvsB,IAAI,CAACc,KAAL,CAAW,CAAC8Q,OAAO,CAAClf,IAAR,CAAaH,IAAb,GAAoBG,IAAI,CAACH,IAA1B,IAAkCL,UAA7C,IAA2Do6B,YAD7D;AAEA,YAAME,EAAE,GACNxsB,IAAI,CAACc,KAAL,CAAW,CAACpO,IAAI,CAACF,IAAL,GAAYof,OAAO,CAAClf,IAAR,CAAaF,IAA1B,IAAkCN,UAA7C,IAA2Do6B,YAD7D;AAGA,WAAKjB,SAAL,CAAepzB,KAAf,CAAqBw0B,IAArB,GAA+BF,EAAE,CAAChtB,QAAH,EAA/B;AACA,WAAK8rB,SAAL,CAAepzB,KAAf,CAAqBy0B,GAArB,GAA8BF,EAAE,CAACjtB,QAAH,EAA9B;AAEA/L,MAAAA,OAAO,CAAC04B,UAAR,GAAqBx5B,IAArB;AACAc,MAAAA,OAAO,CAAC24B,gBAAR,GAA2Bj6B,UAA3B;AACD;AA5GH;AAAA;AAAA,WA8GE,gBACE2b,WADF;AAGE,YAAM;AAAE3K,QAAAA,OAAF;AAAWoE,QAAAA,QAAX;AAAqBqlB,QAAAA,UAArB;AAAiC7pB,QAAAA,QAAjC;AAA2C8pB,QAAAA;AAA3C,UACJ,KAAK3B,UAAL,IAAmB,EADrB;AAEA,YAAM4B,SAAS,GAAG,IAAIC,mBAAJ;AAChBjf,QAAAA;AADgB,SAEbid,iBAFa;AAGhBM,QAAAA,WAAW,EAAE,KAAKA;AAHF,SAIb,KAAKH,UAJQ,EAAlB;;AAOA,UAAI,KAAKC,MAAT,EAAiB;AACf2B,QAAAA,SAAS,CAACE,WAAV;AACD,OAFD,MAEO;AACLF,QAAAA,SAAS,CAACG,YAAV;AACD;;AAED,UAAIC,UAAJ;AACAJ,MAAAA,SAAS,CAACrF,OAAV,CAAkB,CAACrd,CAAD,EAAUoZ,GAAV;AAChB0J,QAAAA,UAAU,GAAG1J,GAAb;AACA,aAAK4H,SAAL,IAAkB8B,UAAU,CAACC,SAAX,CAAqBjZ,GAArB,CAAyB,KAAKkX,SAA9B,CAAlB;AACA,cAAMn0B,IAAI,GACRi2B,UAAU,IAAIA,UAAU,CAACE,aAAX,CAAyB,KAAKjC,MAAL,GAAc,QAAd,GAAyB,MAAlD,CADhB;;AAGA,YAAIl0B,IAAJ,EAAU;AACRA,UAAAA,IAAI,CAACo2B,YAAL,CAAkB,gBAAlB,EAAoClqB,OAAO,IAAI,OAA/C;AACAlM,UAAAA,IAAI,CAACo2B,YAAL,CAAkB,iBAAlB,EAAqC9lB,QAAQ,IAAI,OAAjD;AACAtQ,UAAAA,IAAI,CAACo2B,YAAL,CAAkB,mBAAlB,EAAuC,CAACT,UAAU,IAAI,EAAf,EAAmBptB,QAAnB,EAAvC;AACAvI,UAAAA,IAAI,CAACo2B,YAAL,CAAkB,mBAAlB,EAAuC,CAACR,UAAU,IAAI,CAAf,EAAkBrtB,QAAlB,EAAvC;;AAEA,cAAI,KAAK2rB,MAAT,EAAiB;AACfl0B,YAAAA,IAAI,CAACo2B,YAAL,CACE,kBADF,EAEEtqB,QAAQ,IAAIA,QAAQ,CAAClV,MAAT,GAAkB,CAA9B,GAAkCkV,QAAQ,CAAC/M,IAAT,CAAc,GAAd,CAAlC,GAAuD,EAFzD;AAID;AACF;AACF,OAnBD;AAqBA,aAAOk3B,UAAP;AACD;AAvJH;AAAA;AAAA,WAyJU,4BAAmBI,cAAnB;;;AACN,UAAIA,cAAc,CAACC,UAAf,KAA8BC,4BAAe,CAAC7yB,IAAlD,EAAwD;AAExD,YAAM8yB,OAAO,GAAGH,cAAH,6CAAGA,cAAc,CAAEzB,qBAAnB,qBAAG,sBAAuCtE,IAAvC,CAA4C6F,aAA5C,CACd,KAAKjC,MAAL,GAAc,QAAd,GAAyB,MADX,CAAhB;AAIA9tB,MAAAA,MAAM,CAACsB,IAAP,CAAY+uB,wBAAZ,EAAyB7J,OAAzB,CAAiC8J,SAAS;AACxC,YAAIL,cAAc,CAACC,UAAf,GAA4BG,wBAAW,CAACC,SAAD,CAAX,CAAuBC,IAAvD,EAA6D;AAC3DC,UAAAA,uBAAc,CACZJ,OADY,EAEZC,wBAAW,CAACC,SAAD,CAAX,CAAuBt3B,IAFX,EAGXvF,KAAD;AACEw8B,YAAAA,cAAc,CAACnb,IAAf,CAAoBub,wBAAW,CAACC,SAAD,CAAX,CAAuBt3B,IAA3C,EAAiD;AAC/CkxB,cAAAA,IAAI,EAAEkG,OADyC;AAE/Cz8B,cAAAA,YAAY,EAAEF;AAFiC,aAAjD;AAID,WARW,CAAd;AAUD;AACF,OAbD;AAcD;AA9KH;;AAAA;AAAA,EAA6Bg9B,cAA7B;;SCLgBC,kBACdx9B;AAEA,SACEA,MAAM,YAAYs4B,iBAAlB,IACAt4B,MAAM,YAAYy9B,mCADlB,IAEAz9B,MAAM,YAAY09B,mBAFlB,IAGA19B,MAAM,YAAY29B,uBAJpB;AAMD;AAED,SAAgBC,kBACd59B;AAEA,SAAOA,MAAM,YAAYy9B,mCAAlB,IAAuCz9B,MAAM,YAAY29B,uBAAhE;AACD;AAED,SAAgBE,oBACd79B;AAEA,SACEA,MAAM,YAAY89B,oBAAlB,IACA99B,MAAM,YAAY+9B,mBADlB,IAEA/9B,MAAM,YAAYg+B,mBAHpB;AAKD;AAED,SAAgBC,qBACdj+B;AAEA,SAAOA,MAAM,YAAY45B,6BAAzB;AACD;AAED,SAAgBsE,eACdl+B;AAEA,SAAOA,MAAM,YAAYm+B,iBAAzB;AACD;AAED,SAAgBC,6BACdp+B;AAEA,SAAOA,MAAM,YAAYq+B,6CAAzB;AACD;AAED,SAAgBC,oBACdt+B;AAEA,SAAO,CAAC,CAAEA,MAA0B,CAACyJ,kBAArC;AACD;;AC/DD;;;;;AAKA,AAAO,MAAM80B,WAAW,GAAG,GAApB;AAEP,AAAO,MAAMC,YAAY,gBAAG,IAAI7gB,yBAAJ,CAAiB,CAAC,EAAD,EAAK,CAAC,EAAN,CAAjB,EAA4B;AAAErb,EAAAA,GAAG,EAAEm8B;AAAP,CAA5B,CAArB;AAEP,AAAO,MAAMC,WAAW,gBAAG,IAAI3gB,iBAAJ,CACzB,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,GAAD,EAAM,CAAC,EAAP,CANF,CADyB,EASzB;AACEzb,EAAAA,GAAG,EAAEm8B;AADP,CATyB,CAApB;AAaP,AAAO,MAAME,mBAAmB,gBAAG,IAAIC,iCAAJ,CACjC,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,GAAD,EAAM,CAAC,EAAP,CANF,CADiC,EASjC;AACEt8B,EAAAA,GAAG,EAAEm8B;AADP,CATiC,CAA5B;AAaP,AAAO,MAAMI,cAAc,gBAAG,IAAI5gB,eAAJ,CAC5B,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,CAD4B,EAO5B;AAAE3b,EAAAA,GAAG,EAAEm8B;AAAP,CAP4B,CAAvB;AASP,AAAO,MAAMK,aAAa,gBAAG,IAAIC,mBAAJ,CAC3B,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,EAKE,CAAC,EAAD,EAAK,CAAC,EAAN,CALF,EAME,CAAC,EAAD,EAAK,CAAC,EAAN,CANF,EAOE,CAAC,EAAD,EAAK,CAAC,EAAN,CAPF,CAD2B,EAU3B;AAAEz8B,EAAAA,GAAG,EAAEm8B;AAAP,CAV2B,CAAtB;AAaP,AAAO,MAAMO,iBAAiB,gBAAG,IAAIjhB,iBAAJ,CAC/B,CACE,CAAC,CAAD,EAAI,CAAC,EAAL,CADF,EAEE,CAAC,GAAD,EAAM,CAAC,EAAP,CAFF,CAD+B,EAK/B;AACEzb,EAAAA,GAAG,EAAEm8B;AADP,CAL+B,CAA1B;AAUP,AAAO,MAAMQ,oBAAoB,gBAAG,IAAIhhB,eAAJ,CAClC,CACE,CAAC,EAAD,EAAK,CAAC,EAAN,CADF,EAEE,CAAC,EAAD,EAAK,CAAC,EAAN,CAFF,EAGE,CAAC,EAAD,EAAK,CAAC,EAAN,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,EAAN,CAJF,CADkC,EAOlC;AAAE3b,EAAAA,GAAG,EAAEm8B;AAAP,CAPkC,CAA7B;AAUP,AAAO,MAAMS,uBAAuB,gBAAG,IAAIjhB,eAAJ,CACrC,CACE,CAAC,EAAD,EAAK,CAAL,CADF,EAEE,CAAC,GAAD,EAAM,CAAC,EAAP,CAFF,EAGE,CAAC,GAAD,EAAM,CAAC,EAAP,CAHF,EAIE,CAAC,EAAD,EAAK,CAAC,GAAN,CAJF,EAKE,CAAC,CAAD,EAAI,CAAC,EAAL,CALF,EAME,CAAC,CAAD,EAAI,CAAC,EAAL,CANF,CADqC,EASrC;AAAE3b,EAAAA,GAAG,EAAEm8B;AAAP,CATqC,CAAhC;AAYP,AAAO,MAAMU,mBAAmB,GAAG;AACjC7d,EAAAA,OAAO,EAAE4d;AADwB,CAA5B;AAIP,AAAO,MAAME,eAAe,GAAG;AAC7B5+B,EAAAA,KAAK,EAAEg+B,YADsB;AAE7B1Q,EAAAA,QAAQ,EAAEkR,iBAFmB;AAG7BK,EAAAA,gBAAgB,EAAEV,mBAHW;AAI7Brd,EAAAA,OAAO,EAAE2d,oBAJoB;AAK7BK,EAAAA,MAAM,EAAER;AALqB,CAAxB;AAQP,AAAO,MAAMS,aAAa,GAAG;AAC3B/+B,EAAAA,KAAK,EAAEg+B,YADoB;AAE3B1Q,EAAAA,QAAQ,EAAE4Q,WAFiB;AAG3BW,EAAAA,gBAAgB,EAAEV,mBAHS;AAI3Brd,EAAAA,OAAO,EAAEud,cAJkB;AAK3BS,EAAAA,MAAM,EAAER;AALmB,CAAtB;;SCjGSU,iBACdx/B,QACA0R,MACAtO;MADAsO;AAAAA,IAAAA,OAAe6sB;;;MACfn7B;AAAAA,IAAAA,WAA0C;;;AAE1C,QAAMxB,UAAU,GAAG28B,WAAW,GAAG7sB,IAAjC;;AACA,QAAM+tB,gBAAgB,gBAAQF,aAAR,EAA0Bn8B,QAA1B,CAAtB;;AAEA,MAAIy6B,mBAAmB,CAAC79B,MAAD,CAAvB,EAAiC;AAC/B,WAAOA,MAAM,CAAC0/B,mBAAP,CACLD,gBAAgB,CAACne,OADZ,EAEL1f,UAFK,EAGL68B,SAHK,CAAP;AAKD;;AAED,MAAIR,oBAAoB,CAACj+B,MAAD,CAAxB,EAAkC;AAChC,WAAOA,MAAM,CAAC0/B,mBAAP,CACLD,gBAAgB,CAAC3R,QADZ,EAELlsB,UAFK,EAGL68B,SAHK,CAAP;AAKD;;AAED,MAAIP,cAAc,CAACl+B,MAAD,CAAlB,EAA4B;AAC1B,WAAOA,MAAM,CAAC0/B,mBAAP,CACLD,gBAAgB,CAACH,MADZ,EAEL19B,UAFK,EAGL68B,SAHK,CAAP;AAKD;;AAED,MAAIL,4BAA4B,CAACp+B,MAAD,CAAhC,EAA0C;AACxC,WAAOA,MAAM,CAAC0/B,mBAAP,CACLD,gBAAgB,CAACJ,gBADZ,EAELz9B,UAFK,EAGL68B,SAHK,CAAP;AAKD;;AAED,SAAOz+B,MAAM,CAAC0/B,mBAAP,CAA2BD,gBAAgB,CAACj/B,KAA5C,EAAmDoB,UAAnD,EAA+D68B,SAA/D,CAAP;AACD;AAED,MAAakB,yBAAyB,GAAG,SAA5BA,yBAA4B,CACvC3/B,MADuC,EAEvC0R,IAFuC;MAEvCA;AAAAA,IAAAA,OAAe6sB;;;AAEf,SAAOiB,gBAAgB,CAACx/B,MAAD,EAAS0R,IAAT,EAAeytB,mBAAf,CAAvB;AACD,CALM;AAOP,MAAaS,sBAAsB,GAAG,SAAzBA,sBAAyB,CACpC5/B,MADoC,EAEpC0R,IAFoC;MAEpCA;AAAAA,IAAAA,OAAe6sB;;;AAEf,SAAOiB,gBAAgB,CAACx/B,MAAD,EAAS0R,IAAT,EAAe0tB,eAAf,CAAvB;AACD,CALM;;SCzDSS,qBAAqB1J,SAAmBrjB;AACtDqjB,EAAAA,OAAO,CAAC7C,OAAR,CAAgBoD,MAAM;AACpB5jB,IAAAA,MAAM,CAACgtB,IAAP,CAA6BpJ,MAA7B;AACD,GAFD;AAGD;;SC8BeqJ,kBACd//B;AAEA,UAAQA,MAAM,CAAC8F,IAAf;AACE,SAAK,QAAL;AACE,aAAOk6B,mBAAmB,CAAChgC,MAAD,CAA1B;;AACF,SAAK,gBAAL;AACE,aAAOigC,yBAAyB,CAACjgC,MAAD,CAAhC;;AACF,SAAK,mBAAL;AACE,aAAOkgC,sBAAsB,CAAClgC,MAAD,CAA7B;;AACF,SAAK,mBAAL;AACE,aAAOmgC,uBAAuB,CAACngC,MAAD,CAA9B;;AACF,SAAK,wBAAL;AACE,aAAOogC,4BAA4B,CAACpgC,MAAD,CAAnC;;AACF,SAAK,kBAAL;AACE,aAAOqgC,2BAA2B,CAACrgC,MAAD,CAAlC;;AACF,SAAK,eAAL;AACE,aAAOsgC,wBAAwB,CAACtgC,MAAD,CAA/B;;AACF,SAAK,sBAAL;AACA,SAAK,gBAAL;AACE,aAAOugC,yBAAyB,CAACvgC,MAAD,CAAhC;;AACF,SAAK,eAAL;AACE,aAAO+/B,iBAAiB,CAAE//B,MAA0B,CAACyJ,kBAA7B,CAAxB;;AACF;AACE,aAAO,IAAP;AArBJ;AAuBD;;AAED,SAASu2B,mBAAT,CAA6BhgC,MAA7B;;;AACE,SAAO,IAAIm+B,iBAAJ,cACFn+B,MADE;AAELkuB,IAAAA,QAAQ,EAAEloB,iBAAiB,CAAChG,MAAM,CAACkuB,QAAR,CAFtB;AAGL3b,IAAAA,WAAW,EAAEvM,iBAAiB,CAAChG,MAAD,sCAACA,MAAM,CAAEiJ,MAAT,qBAAC,eAAgBoH,KAAjB,CAHzB;AAILgC,IAAAA,WAAW,EAAErM,iBAAiB,CAAChG,MAAD,uCAACA,MAAM,CAAEiJ,MAAT,qBAAC,gBAAgBqJ,KAAjB,CAJzB;AAKLwC,IAAAA,SAAS,EAAE9O,iBAAiB,CAAChG,MAAD,oCAACA,MAAM,CAAE+J,IAAT,qBAAC,aAAcuI,KAAf;AALvB,KAAP;AAOD;;AAED,SAAS4tB,sBAAT,CAAgClgC,MAAhC;AACE;AACA,SAAO,IAAIwgC,iBAAJ,CAAiBC,4BAA4B,CAACzgC,MAAD,CAA7C,CAAP;AACD;;AAED,MAAa0gC,uBAAuB,GAAI11B,MAAD,IAAkC,CACvEhF,iBAAiB,CAACgF,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CADsD,EAEvEhF,iBAAiB,CAACgF,MAAD,oBAACA,MAAM,CAAG,CAAH,CAAP,CAFsD,CAAlE;;AAKP,SAAS21B,+BAAT;MAAyC;AAAE76B,IAAAA,IAAF;AAAQ+tB,IAAAA,IAAR;AAAcniB,IAAAA,IAAd;AAAoB1G,IAAAA,MAApB;AAA4ByjB,IAAAA,KAA5B;AAAmCpb,IAAAA,UAAnC;AAA+Ckb,IAAAA;AAA/C;AACvC;AACEzoB,IAAAA,IAAI,EAAEE,iBAAiB,CAACF,IAAD,CADzB;AAEE+tB,IAAAA,IAAI,EAAE7tB,iBAAiB,CAAC6tB,IAAD,CAFzB;AAGEniB,IAAAA,IAAI,EAAE1L,iBAAiB,CAAC0L,IAAD,CAHzB;AAIE1G,IAAAA,MAAM,EAAE01B,uBAAuB,CAAC11B,MAAD,CAJjC;AAKEyjB,IAAAA,KAAK,EAAEzoB,iBAAiB,CAACyoB,KAAD;AAL1B,KAMMpb,UAAU,GACV;AACAA,IAAAA,UAAU,eACJA,UADI;AAERyB,MAAAA,SAAS,EAAE8rB,gBAAgB,CAAC56B,iBAAiB,CAAEqN,UAAF,oBAAEA,UAA6B,CAAEyB,SAAjC,CAAlB,CAFnB;AAGRzC,MAAAA,WAAW,EAAEuuB,gBAAgB,CAAC56B,iBAAiB,CAAEqN,UAAF,oBAAEA,UAA6B,CAAEhB,WAAjC,CAAlB,CAHrB;AAIRE,MAAAA,WAAW,EAAEvM,iBAAiB,CAAEqN,UAAF,oBAAEA,UAA6B,CAAEd,WAAjC;AAJtB;AADV,GADU,GASV,EAfN,EAgBMgc,MAAM,GACN;AACAA,IAAAA,MAAM,eACAA,MADA;AAEJlc,MAAAA,WAAW,EAAEuuB,gBAAgB,CAAC56B,iBAAiB,CAAEuoB,MAAF,oBAAEA,MAAyB,CAAElc,WAA7B,CAAlB,CAFzB;AAGJE,MAAAA,WAAW,EAAEvM,iBAAiB,CAAEuoB,MAAF,oBAAEA,MAAyB,CAAEhc,WAA7B,CAH1B;AAIJuC,MAAAA,SAAS,EAAE8rB,gBAAgB,CACzB56B,iBAAiB,CAAEuoB,MAAF,oBAAEA,MAAyB,CAAEzZ,SAA7B,CADQ;AAJvB;AADN,GADM,GAWN,EA3BN;AA6BD;;AAED,SAASmrB,yBAAT,CAAmCjgC,MAAnC;AACE,SAAO,IAAIwgC,iBAAJ,CAAiBG,+BAA+B,CAAC3gC,MAAD,CAAhD,CAAP;AACD;;AAED,SAASmgC,uBAAT,CAAiCngC,MAAjC;AACE,SAAO,IAAI6gC,mBAAJ,cACFJ,4BAA4B,CAACzgC,MAAD,CAD1B;AAEL;AACAyuB,IAAAA,KAAK,EAAEzoB,iBAAiB,CAAChG,MAAM,CAACyuB,KAAR;AAHnB,KAAP;AAKD;;AAED,SAAS2R,4BAAT,CAAsCpgC,MAAtC;AACE,SAAO,IAAI29B,uBAAJ,cACF39B,MADE;AAEL;AACAyuB,IAAAA,KAAK,EAAEzoB,iBAAiB,CAAChG,MAAM,CAACyuB,KAAR,CAHnB;AAIL;AACApe,IAAAA,KAAK,EAAErK,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CALnB;AAML;AACAiD,IAAAA,MAAM,EAAEtN,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAPpB;AAQL;AACAwtB,IAAAA,WAAW,EAAEC,iBAAiB,CAAC/gC,MAAM,CAACgL,MAAR,CATzB;AAUL;AACAg2B,IAAAA,WAAW,EAAEC,iBAAiB,CAACjhC,MAAM,CAACkhC,KAAR,CAXzB;AAYL;AACAC,IAAAA,UAAU,EAAEF,iBAAiB,CAACjhC,MAAM,CAACohC,SAAR,CAbxB;AAcL;AACAC,IAAAA,SAAS,EAAET,gBAAgB,CAAC56B,iBAAiB,CAAChG,MAAM,CAACurB,WAAR,CAAlB;AAftB,KAAP;AAiBD;;AAED,SAAS8U,2BAAT,CAAqCrgC,MAArC;AACE,SAAO,IAAIshC,mCAAJ,cACFthC,MADE;AAEL;AACAyuB,IAAAA,KAAK,EAAEzoB,iBAAiB,CAAChG,MAAM,CAACyuB,KAAR,CAHnB;AAIL;AACApe,IAAAA,KAAK,EAAErK,iBAAiB,CAAChG,MAAM,CAACqQ,KAAR,CALnB;AAML;AACAiD,IAAAA,MAAM,EAAEtN,iBAAiB,CAAChG,MAAM,CAACsT,MAAR,CAPpB;AAQL;AACAwtB,IAAAA,WAAW,EAAEC,iBAAiB,CAAC/gC,MAAM,CAACgL,MAAR,CATzB;AAUL;AACAu2B,IAAAA,MAAM,EAAEN,iBAAiB,CAACjhC,MAAM,CAACkhC,KAAR;AAXpB,KAAP;AAaD;;AAED,SAASZ,wBAAT,CAAkCtgC,MAAlC;AACE,MAAI8J,wBAAwB,CAAC9J,MAAD,CAA5B,EAAsC;AACpC,WAAO,IAAI0U,aAAJ,CAAkB1U,MAAlB,CAAP;AACD;;AAED,MAAIgK,sBAAsB,CAAChK,MAAD,CAA1B,EAAoC;AAClC,WAAO,IAAImS,aAAJ,CAAkBnS,MAAlB,CAAP;AACD;;AAED,SAAO,IAAI6U,iBAAJ,CAAsB7U,MAAtB,CAAP;AACD;;AAED,SAASugC,yBAAT,CAAmCvgC,MAAnC;AACE,SAAO,IAAIk2B,kBAAJ,CAAuBl2B,MAAvB,CAAP;AACD;;AAED,SAASygC,4BAAT;MAAsC;AACpC/uB,IAAAA,IADoC;AAEpC1G,IAAAA,MAFoC;AAGpCqH,IAAAA,WAHoC;AAIpCE,IAAAA,WAJoC;AAKpCuC,IAAAA;AALoC;AAOpC,SAAO;AACLpD,IAAAA,IAAI,EAAE1L,iBAAiB,CAAC0L,IAAD,CADlB;AAEL1G,IAAAA,MAAM,EAAE+1B,iBAAiB,CAAC/1B,MAAD,CAFpB;AAGLuH,IAAAA,WAAW,EAAEvM,iBAAiB,CAACuM,WAAD,CAHzB;AAILF,IAAAA,WAAW,EAAEuuB,gBAAgB,CAC3B56B,iBAAiB,CAACqM,WAAD,CADU,CAJxB;AAOLyC,IAAAA,SAAS,EAAE8rB,gBAAgB,CACzB56B,iBAAiB,CAAC8O,SAAD,CADQ;AAPtB,GAAP;AAWD;;AAED,SAASmsB,iBAAT,CAA2BO,IAA3B;AACE,oCAAgCA,IAAhC;AACD;;AAED,SAAgBT,kBAAkB/1B;AAChC;AACA,SAAOA,MAAM,CAAC9L,GAAP,CAAW8G,iBAAX,CAAP;AACD;;AAED,SAAS46B,gBAAT,CAA0BtuB,OAA1B;AACE,SAAOA,OAAK,GAAG,IAAItD,WAAJ,CAAUsD,OAAV,EAAiBrD,QAAjB,EAAH,GAAiC,IAA7C;AACD;;AChNM,MAAMwyB,WAAW,GAAG,CACzBzhC,MADyB,EAEzBwP,GAFyB,EAGzBC,GAHyB;AAKzB,MAAImuB,iBAAiB,CAAC59B,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAACqQ,KAAP,GAAef,KAAK,CAACtP,MAAM,CAACqQ,KAAR,EAAeb,GAAf,EAAoBC,GAApB,CAApB;AACAzP,IAAAA,MAAM,CAACsT,MAAP,GAAgBhE,KAAK,CAACtP,MAAM,CAACsT,MAAR,EAAgB9D,GAAhB,EAAqBC,GAArB,CAArB;AACD,GAHD,MAGO,IAAI+tB,iBAAiB,CAACx9B,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAAC0R,IAAP,GAAcpC,KAAK,CAACtP,MAAM,CAAC0R,IAAR,EAAclC,GAAd,EAAmBC,GAAnB,CAAnB;AACD;;AAED,SAAOzP,MAAP;AACD,CAbM;AAeP,SAAgB0hC,kBAAkB1hC;AAChC,MAAI49B,iBAAiB,CAAC59B,MAAD,CAArB,EAA+B;AAC7BA,IAAAA,MAAM,CAAC8gC,WAAP,GAAqB,CAAC9gC,MAAM,CAACqQ,KAAP,GAAe,CAAhB,EAAmBrQ,MAAM,CAACsT,MAAP,GAAgB,CAAnC,CAArB;AACD,GAFD,MAEO,IAAIkqB,iBAAiB,CAACx9B,MAAD,CAArB,EAA+B;AACpCA,IAAAA,MAAM,CAACgL,MAAP,GAAgB,CAAC,CAAD,EAAI,CAAJ,CAAhB;AACD;;AAED,SAAOhL,MAAP;AACD;AAED,MAAa2hC,YAAY,GAAG,CAC1B3hC,MAD0B;AAAA,MAE1B;AAAE0R,IAAAA;AAAF,GAF0B;AAAA,SAGvBgwB,iBAAiB,CAACD,WAAW,CAACzhC,MAAD,EAAS,CAAT,EAAY0R,IAAZ,CAAZ,CAHM;AAAA,CAArB;;ACbP,MAAMmf,qBAAmB,GAAG,EAA5B;AAEA,SAAgB+Q,gBAOdC;MANA;AACE7hC,IAAAA,MADF;AAEE0R,IAAAA,IAAI,GAAGmf,qBAFT;AAGE6F,IAAAA,MAAM,GAAG8I,gBAHX;AAIEsC,IAAAA;AAJF;AAQAx+B,EAAAA,eAAS,CAAC;AACR,QAAIu+B,SAAS,CAACtkC,OAAV,KAAsB,IAAtB,IAA8ByC,MAAM,KAAKkP,SAA7C,EAAwD;AACtD,YAAM4D,MAAM,GAAG+uB,SAAS,CAACtkC,OAAzB;AACAwkC,MAAAA,aAAa,CAACjvB,MAAD,EAASpB,IAAT,EAAeowB,QAAf,CAAb;AAEApL,MAAAA,MAAM,CAAC12B,MAAD,EAAS0R,IAAT,CAAN,CAAqBswB,IAArB,CAA0B7L,OAAO;AAC/B0J,QAAAA,oBAAoB,CAAC1J,OAAD,EAAUrjB,MAAV,CAApB;AACD,OAFD;AAGD;;AAEF,GAVQ,EAUN,CAAC9S,MAAD,EAAS0R,IAAT,EAAeowB,QAAf,CAVM,CAAT;AAWD;;AAED,SAASC,aAAT,CAAuBjvB,MAAvB,EAAuCpB,IAAvC,EAAqDowB,QAArD;AACEhvB,EAAAA,MAAM,CAACkkB,IAAP,CAAY1jB,MAAZ,GAAqB5B,IAArB;AACAoB,EAAAA,MAAM,CAACkkB,IAAP,CAAY3mB,KAAZ,GAAoByxB,QAAQ,GAAGpyB,IAAI,CAACF,GAAL,CAASkC,IAAT,EAAeowB,QAAf,CAAH,GAA8BpwB,IAA1D;AACD;;SCzCeuwB;AACd,QAAMnvB,MAAM,GAAGovB,YAAM,CAAgB,IAAhB,CAArB;AACA,QAAMC,GAAG,GAAGxkC,iBAAW,CAAEq5B,IAAD;AACtB,QAAIA,IAAI,KAAK,IAAb,EAAmB;AACjBlkB,MAAAA,MAAM,CAACvV,OAAP,GAAiB,IAAI6kC,aAAJ,CAAWpL,IAAX,CAAjB;AACD,KAFD,MAEO;AACLlkB,MAAAA,MAAM,CAACvV,OAAP,GAAiB,IAAjB;AACD;AACF,GANsB,EAMpB,EANoB,CAAvB;AAQA,SAAO;AAAEuV,IAAAA,MAAF;AAAUqvB,IAAAA;AAAV,GAAP;AACD;;SCZeE;MAAS;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX;AACvBj/B,EAAAA,eAAS,CAAC;AACRg/B,IAAAA,OAAO,IAAIA,OAAO,EAAlB;AACA,WAAOC,SAAP;AAED,GAJQ,EAIN,EAJM,CAAT;AAKD;;SCJeC,kBAEdC;MADA;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,UAAX;AAAuBnH,IAAAA;AAAvB;;MACAiH;AAAAA,IAAAA,OAAU;;;AAEV,QAAMG,OAAO,GAAGV,YAAM,EAAtB;AAEAG,EAAAA,QAAQ,CAAC;AACPE,IAAAA,SAAS;AACP,UAAIK,OAAO,CAACrlC,OAAR,IAAmBolC,UAAvB,EAAmC;AACjCA,QAAAA,UAAU,CAACC,OAAO,CAACrlC,OAAT,CAAV;AACD;AACF;;AALM,GAAD,CAAR;AAQA,SAAOiB,aAAO,CAAC;AACb,QAAIokC,OAAO,CAACrlC,OAAZ,EAAqB;AACnB,UAAIi+B,MAAJ,EAAY;AACV,cAAMqH,OAAO,GAAGrH,MAAM,CAACoH,OAAO,CAACrlC,OAAT,EAAkBklC,IAAlB,EAAwB;AAAEC,UAAAA,OAAF;AAAWC,UAAAA;AAAX,SAAxB,CAAtB;AACA,YAAIE,OAAJ,EAAaD,OAAO,CAACrlC,OAAR,GAAkBslC,OAAlB;AACd,OAHD,MAGO,IAAIF,UAAJ,EAAgB;AACrBA,QAAAA,UAAU,CAACC,OAAO,CAACrlC,OAAT,CAAV;AACD;AACF,KAPD,MAOO;AACL,UAAI,CAACi+B,MAAD,IAAW,CAACoH,OAAO,CAACrlC,OAAxB,EAAiC;AAC/BqlC,QAAAA,OAAO,CAACrlC,OAAR,GAAkBmlC,OAAO,CAACD,IAAD,CAAzB;AACD;AACF;;AAED,WAAOG,OAAO,CAACrlC,OAAf;AAED,GAhBa,EAgBXklC,IAhBW,CAAd;AAiBD;;SCjCeK;MAAuC;AACrDC,IAAAA,QADqD;AAErDC,IAAAA,YAFqD;AAGrDP,IAAAA;AAHqD;AAKrDn/B,EAAAA,eAAS,CAAC;AACR,QAAI,CAAC0/B,YAAD,IAAiBA,YAAY,EAAjC,EAAqC;AACnCD,MAAAA,QAAQ;AACT;;AAEF,GALQ,EAKNN,IALM,CAAT;AAMD;;SCPeQ,cAAcvjC,OAAcqD;AAC1C,QAAM;AAAE7D,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEAyjC,EAAAA,SAAS,CAAC;AACRC,IAAAA,QAAQ,EAAE,MAAM7jC,GAAG,CAACgkC,WAAJ,CAAgBxjC,KAAhB,EAAuBqD,MAAvB,CADR;AAER0/B,IAAAA,IAAI,EAAE,CAAC1/B,MAAD,EAASrD,KAAT;AAFE,GAAD,CAAT;AAID;;SCTeyjC,mBAAmBzjC,OAAc0jC;MAAAA;AAAAA,IAAAA,cAAuB;;;AACtEN,EAAAA,SAAS,CAAC;AACRE,IAAAA,YAAY,EAAE,MAAMtjC,KAAK,CAAC0jC,WAAN,KAAsBA,WADlC;AAERL,IAAAA,QAAQ,EAAE,MAAOrjC,KAAK,CAAC0jC,WAAN,GAAoBA,WAF7B;AAGRX,IAAAA,IAAI,EAAE,CAACW,WAAD,EAAc1jC,KAAd;AAHE,GAAD,CAAT;AAKD;;SCNe2jC,gBAAgB3jC,OAAck1B;MAAAA;AAAAA,IAAAA,UAAkB;;;AAC9DkO,EAAAA,SAAS,CAAC;AACRE,IAAAA,YAAY,EAAE,MAAMtjC,KAAK,CAACk1B,OAAN,KAAkBA,OAD9B;AAERmO,IAAAA,QAAQ,EAAE,MAAOrjC,KAAK,CAACk1B,OAAN,GAAgBA,OAFzB;AAGR6N,IAAAA,IAAI,EAAE,CAAC7N,OAAD,EAAUl1B,KAAV;AAHE,GAAD,CAAT;AAKD;;SCCe4jC;MAAuB;AACrC3mB,IAAAA,IADqC;AAErC5Z,IAAAA,MAFqC;AAGrC4E,IAAAA,KAHqC;AAIrCrF,IAAAA,GAJqC;AAKrCihC,IAAAA,EALqC;AAMrCz/B,IAAAA,SANqC;AAOrCs/B,IAAAA,WAPqC;AAQrCxO,IAAAA,OARqC;AASrC4O,IAAAA,YATqC;AAUrCC,IAAAA,WAVqC;AAWrCC,IAAAA;AAXqC;AAarC,QAAMplC,KAAG,GAAGK,iBAAiB,EAA7B;AACA,QAAM;AAAEO,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAG8iC,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAIiB,uBAAJ,CAAwB;AAAEhnB,MAAAA,IAAF;AAAQ7Y,MAAAA,SAAR;AAAmB6D,MAAAA,KAAnB;AAA0BrF,MAAAA,GAA1B;AAA+BkhC,MAAAA,YAA/B;AAA6CC,MAAAA,WAA7C;AAA0DC,MAAAA;AAA1D,KAAxB,EAA+FplC,KAA/F,CADjB;AAEEqkC,IAAAA,UAAU,EAAEjjC,KAAK,IAAIR,GAAG,CAAC0kC,OAAJ,CAAYlkC,KAAZ,MAA2C,CAAC,CAA5C,IAAiDR,GAAG,CAAC2kC,WAAJ,CAAgBnkC,KAAhB,CAFxE;AAGE87B,IAAAA,MAAM,EAAE,CAAC97B,KAAD;UAAQ,CAACid,IAAD,EAAOhV,KAAP,EAAc7D,SAAd,EAAyBxB,GAAG,GAAGgZ,eAA/B,EAA4CkoB,YAA5C;AACd9jC,MAAAA,KAAK,CAACid,IAAN,GAAaA,IAAb;AACAjd,MAAAA,KAAK,CAACiI,KAAN,GAAcA,KAAd;AACAjI,MAAAA,KAAK,CAACoE,SAAN,GAAkBA,SAAlB;AACApE,MAAAA,KAAK,CAAC8jC,YAAN,GAAqBA,YAArB;AACA9jC,MAAAA,KAAK,CAAC4C,GAAN,GAAYA,GAAZ;AACD;AATH,GADuB,EAYvB,CAACqa,IAAD,EAAOhV,KAAP,EAAc7D,SAAd,EAAyBxB,GAAzB,EAA8BkhC,YAA9B,EAA4CD,EAA5C,CAZuB,CAAzB;AAeAN,EAAAA,aAAa,CAACvjC,KAAD,EAA4BqD,MAA5B,CAAb;AACAogC,EAAAA,kBAAkB,CAACzjC,KAAD,EAA4B0jC,WAA5B,CAAlB;AACAC,EAAAA,eAAe,CAAC3jC,KAAD,EAA4Bk1B,OAA5B,CAAf;AAEA,SAAOl1B,KAAP;AACD;;SCjCeokC;MAAoB;AAClCnnB,IAAAA,IADkC;AAElConB,IAAAA,SAFkC;AAGlCC,IAAAA,UAHkC;AAIlCjhC,IAAAA,MAJkC;AAKlCqgC,IAAAA,WALkC;AAMlC9gC,IAAAA,GANkC;AAOlCsyB,IAAAA;AAPkC;AASlC,QAAMt2B,KAAG,GAAGK,iBAAiB,EAA7B;AACA,QAAM;AAAEO,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAMK,KAAK,GAAGlB,aAAO,CACnB,MAAM,IAAIylC,oBAAJ,CAAqB;AAAEtnB,IAAAA,IAAF;AAAQonB,IAAAA,SAAR;AAAmBC,IAAAA,UAAnB;AAA+B1hC,IAAAA,GAA/B;AAAoCsyB,IAAAA;AAApC,GAArB,EAAoEt2B,KAApE,CADa;AAGnB,GAACqe,IAAD,EAAOonB,SAAP,EAAkBC,UAAlB,EAA8B1hC,GAA9B,EAAmCsyB,OAAnC,CAHmB,CAArB;AAMAtxB,EAAAA,eAAS,CACP,MAAM;AACJpE,IAAAA,GAAG,CAAC0kC,OAAJ,CAAalkC,KAAb,MAA6C,CAAC,CAA9C,IACER,GAAG,CAAC2kC,WAAJ,CAAiBnkC,KAAjB,CADF;AAED,GAJM;AAMP,GAACA,KAAD,CANO,CAAT;AASAujC,EAAAA,aAAa,CAAEvjC,KAAF,EAA8BqD,MAA9B,CAAb;AACAogC,EAAAA,kBAAkB,CAAEzjC,KAAF,EAA8B0jC,WAA9B,CAAlB;AAEA,SAAO1jC,KAAP;AACD;;SCjCewkC;MAAgB;AAC9BnhC,IAAAA,MAD8B;AAE9BqgC,IAAAA,WAAW,GAAG,IAFgB;AAG9BhgC,IAAAA,QAH8B;AAI9BwxB,IAAAA;AAJ8B;AAM9B,QAAM;AAAE11B,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAG8iC,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAInjC,2BAAJ,CAAiB;AAAE6D,MAAAA,QAAF;AAAYwxB,MAAAA;AAAZ,KAAjB,CADjB;AAEE+N,IAAAA,UAAU,EAAEjjC,KAAK,IAAIR,GAAG,CAAC0kC,OAAJ,CAAYlkC,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAAC2kC,WAAJ,CAAgBnkC,KAAhB,CAFpD;AAGE87B,IAAAA,MAAM,EAAE,CAAC97B,KAAD;UAAQ,CAAC0D,QAAD;AACd1D,MAAAA,KAAK,CAAC0D,QAAN,GAAiBA,QAAjB;AACD;AALH,GADuB,EAQvB,CAACA,QAAD,CARuB,CAAzB;AAWA6/B,EAAAA,aAAa,CAACvjC,KAAD,EAAQqD,MAAR,CAAb;AACAogC,EAAAA,kBAAkB,CAACzjC,KAAD,EAAQ0jC,WAAR,CAAlB;AACAC,EAAAA,eAAe,CAAC3jC,KAAD,EAAQk1B,OAAR,CAAf;AAEA,SAAOl1B,KAAP;AACD;;SC7BeykC,iBACdC,cACAC;AAEA,QAAM;AAAEnlC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMkB,KAAK,GAAG8jC,KAAK,GAAGC,oBAAH,GAAqBC,uBAAxC;AAEA,QAAMC,gBAAgB,GAAG7mC,iBAAW,CAAC;AACnCymC,IAAAA,YAAY,IAAIA,YAAY,CAACK,WAAW,CAACvlC,GAAD,CAAZ,CAA5B;AAED,GAHmC,EAGjC,CAACklC,YAAD,EAAellC,GAAf,EAAoBqB,KAApB,CAHiC,CAApC;AAKA+C,EAAAA,eAAS,CAAC;AACRpE,IAAAA,GAAG,CAAC8iB,EAAJ,CAAOzhB,KAAK,CAACuF,IAAb,EAAmB0+B,gBAAnB;AAEA,WAAO;AACLtlC,MAAAA,GAAG,CAACwlC,GAAJ,CAAQnkC,KAAK,CAACuF,IAAd,EAAoB0+B,gBAApB;AACD,KAFD;AAID,GAPQ,EAON,CAACA,gBAAD,EAAmBjkC,KAAnB,CAPM,CAAT;AAQD;AAOD,SAAgBkkC,YAAYvlC;AAC1B,SAAO;AACLsC,IAAAA,QAAQ,EAAEtC,GAAG,CAACsC,QAAJ,CAAaO,KAAb,CAAmB,CAAnB,CADL;AAELH,IAAAA,UAAU,EAAE1C,GAAG,CAAC0C;AAFX,GAAP;AAID;;SClCe+iC,aAAaC;AAC3B,QAAM;AAAEzlC,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AAEA,QAAMwlC,eAAe,GAAGlnC,iBAAW,CAAC;AAClCinC,IAAAA,QAAQ,IAAIA,QAAQ,CAAC,CAACzlC,OAAO,CAACkR,KAAT,EAAgBlR,OAAO,CAACmU,MAAxB,CAAD,CAApB;AAED,GAHkC,EAGhC,CAACsxB,QAAD,EAAWzlC,OAAX,CAHgC,CAAnC;AAKAmE,EAAAA,eAAS,CAAC;AACRnE,IAAAA,OAAO,CAAC6iB,EAAR,CAAW8iB,oBAAS,CAACh/B,IAArB,EAA2B++B,eAA3B;AAEA,WAAO;AACL1lC,MAAAA,OAAO,CAACulC,GAAR,CAAYI,oBAAS,CAACh/B,IAAtB,EAA4B++B,eAA5B;AACD,KAFD;AAID,GAPQ,EAON,CAACA,eAAD,CAPM,CAAT;AAQD;;MCOYE,UAAU,GAAG;AACxB,QAAM;AAAE7lC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM,CAAC2lC,cAAD,EAAiBC,iBAAjB,IAAsCxnC,cAAQ,EAApD;AAEA,QAAMynC,aAAa,GAAG1mC,aAAO,CAAC,MAAMU,GAAG,CAACkB,MAAX,EAAgD,CAC3ElB,GAAG,CAACkB,MADuE,CAAhD,CAA7B;AAIA,QAAM+kC,IAAI,GAAGxnC,iBAAW,CACrB4C,KAAD;AACE,QAAI,EAAEA,KAAK,YAAY6kC,2BAAnB,CAAJ,EAAwC;AACtC;AACD;;AAED,UAAMC,cAAc,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAOlmC,OAAO,CAACkR,KAAf,EAAsBlR,OAAO,CAACmU,MAA9B,CAAvB;AACA,UAAM,CAAC3S,CAAD,EAAIC,CAAJ,IAASzB,OAAO,CAACmmC,aAAR,CAAsB/kC,KAAK,CAACC,KAAN,CAAYgB,QAAlC,CAAf;AAEAyjC,IAAAA,iBAAiB,CAAC;AAChBM,MAAAA,aAAa,EAAEhlC,KAAK,CAACC,KAAN,CAAYgB,QADX;AAEhBgkC,MAAAA,UAAU,EAAE,CAAC91B,IAAI,CAACc,KAAL,CAAW7P,CAAX,CAAD,EAAgB+O,IAAI,CAACc,KAAL,CAAW5P,CAAX,CAAhB,CAFI;AAGhB6kC,MAAAA,SAAS,EAAEC,qBAAqB,CAACR,aAAD,CAHhB;AAIhBG,MAAAA,cAJgB;AAKhBM,MAAAA,QAAQ,EAAEzmC,GAAG,CAACoD,GAAJ,CAAQsjC;AALF,KAAD,CAAjB;AAOD,GAhBqB,EAkBtB,CAACzmC,OAAD,EAAU+lC,aAAV,EAAyBhmC,GAAG,CAACoD,GAAJ,CAAQsjC,IAAjC,CAlBsB,CAAxB;AAqBAvD,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE,MAAMpjC,GAAG,CAAC8iB,EAAJ,CAAO,OAAP,EAAgBmjB,IAAhB,CADR;AAEP5C,IAAAA,SAAS,EAAE,MAAMrjC,GAAG,CAACwlC,GAAJ,CAAQ,OAAR,EAAiBS,IAAjB;AAFV,GAAD,CAAR;AAKA,SAAOH,cAAP;AACD,CAnCM;;AAqCP,SAASa,iBAAT,CAA2BnmC,KAA3B;AACE;AAEEA,IAAAA,KAAK,CAAComC,cAAN;AAEApmC,IAAAA,KAAK,CAAComC,cAAN,CAAqB1jC,IAFrB;AAIA1C,IAAAA,KAAK,CAAComC,cAAN,CAAqB1jC,IAArB,CAA0Bmb;AAN5B;AAQD;;AAED,SAASmoB,qBAAT,CAA+BtlC,MAA/B;AACE,MAAIqlC,SAAS,GAAc,EAA3B;;AAEA,OAAK,MAAM/lC,KAAX,IAAoBU,MAApB,EAA4B;AAC1B,QAAI,CAAC2lC,yBAAqB,CAACrmC,KAAD,CAA1B,EAAmC;AACjC;AACD;;AAED+lC,IAAAA,SAAS,CAAC/lC,KAAK,CAACid,IAAP,CAAT,GAAwBkpB,iBAAiB,CAACnmC,KAAD,CAAzC;AACD;;AAED,SAAO+lC,SAAP;AACD;;SClFeO,YAAY3B;AAC1B,QAAM;AAAEnlC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAM,GAAG4mC,QAAH,IAAeC,gBAAU,CAACC,eAAD,EAAkBj3B,SAAlB,EAA6B,MAC1Du1B,WAAW,CAACvlC,GAAD,CADkB,CAA/B;AAIA,QAAMslC,gBAAgB,GAAG7mC,iBAAW,CAACsoC,QAAD,EAAW,CAACA,QAAD,CAAX,CAApC;AAEA9B,EAAAA,gBAAgB,CAACK,gBAAD,EAAmBH,KAAnB,CAAhB;AAEA,SAAOI,WAAW,CAACvlC,GAAD,CAAlB;AACD;;AAED,SAASinC,eAAT,CAAyBtsB,CAAzB,EAAsCusB,QAAtC;AACE,SAAOA,QAAP;AACD;;SCdeC;AACd,QAAM;AAAEnnC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAM;AAAEmC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ,MAA2BokC,WAAW,EAA5C;AAEA,QAAMtjC,KAAK,GAAGlE,aAAO,CAAC;AACpB,UAAMiQ,KAAK,GAAGvP,GAAG,CAACyD,UAAJ,CAAe2jC,QAAf,CAAwB1kC,UAAxB,CAAd;AAEA,QAAI6M,KAAK,KAAK,KAAK,CAAf,IAAoBA,KAAK,KAAK,IAAlC,EAAwC;AAExC,WAAOvP,GAAG,CAACyD,UAAJ,CAAeE,MAAf,CAAsB4L,KAAtB,EAA6B1L,MAApC;AAED,GAPoB,EAOlB,CAACnB,UAAD,CAPkB,CAArB;;AAUA,QAAMQ,IAAI,GAAG5D,aAAO,CAAC,MAAMW,OAAO,CAACiD,IAAf,EAAqB,CAACZ,QAAD,EAAWI,UAAX,CAArB,CAApB;AAEA,SAAO;AACLJ,IAAAA,QADK;AAELI,IAAAA,UAFK;AAGLc,IAAAA,KAHK;AAILN,IAAAA;AAJK,GAAP;AAMD;AAED,SAAgBmkC;AACd,QAAM;AAAErnC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM;AAAEuC,IAAAA;AAAF,MAAiBokC,WAAW,CAAC,IAAD,CAAlC;AAEA,SAAOxnC,aAAO,CAAC;AACb,UAAMiQ,KAAK,GAAGvP,GAAG,CAACyD,UAAJ,CAAe2jC,QAAf,CAAwB1kC,UAAxB,CAAd;AAEA,QAAI6M,KAAK,KAAK,KAAK,CAAf,IAAoBA,KAAK,KAAK,IAAlC,EAAwC;AAExC,WAAOvP,GAAG,CAACyD,UAAJ,CAAeE,MAAf,CAAsB4L,KAAtB,EAA6B1L,MAApC;AAED,GAPa,EAOX,CAACnB,UAAD,CAPW,CAAd;AAQD;;SCtCe4kC;AACd,QAAM;AAAErnC,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AACA,QAAMonC,UAAU,GAAGvE,YAAM,CAAwB,IAAxB,CAAzB;AAEAG,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE,MAAOnjC,OAAO,CAACuB,OAAR,GAAkB+lC,UAAU,CAAClpC,OADtC;AAEPglC,IAAAA,SAAS,EAAE,MAAOpjC,OAAO,CAACuB,OAAR,GAAkB;AAF7B,GAAD,CAAR;AAKA,SAAO+lC,UAAP;AACD;;ACVD,MAAMC,OAAO,GAAIxlB,KAAD,IAAmB;AAAA,MAAC;AAAEne,IAAAA;AAAF,GAAD;AAAA,SACjCA,MAAM,KAAKme,KADsB;AAAA,CAAnC;;AAGA,MAAaylB,cAAc,GAAG,CAC5BC,QAD4B,EAE5BC,QAF4B,EAG5BC,eAH4B,EAI5BC,iBAJ4B;AAM5B,QAAM;AAAE7nC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEAiE,EAAAA,eAAS,CAAC;AACR,UAAMT,MAAM,GAAG3D,GAAG,CAACyD,UAAJ,CAAeE,MAA9B;;AAEA,QAAIgkC,QAAQ,KAAK33B,SAAjB,EAA4B;AAC1B,YAAM;AAAEtN,QAAAA;AAAF,UAAiBiB,MAAM,CAACC,IAAP,CAAY4jC,OAAO,CAACG,QAAD,CAAnB,KAAkC;AACvDjlC,QAAAA,UAAU,EAAE,CAAC;AAD0C,OAAzD;AAGA1C,MAAAA,GAAG,CAAC0M,aAAJ,GAAoBhK,UAApB;AACD;;AACD,QAAIglC,QAAQ,KAAK13B,SAAjB,EAA4B;AAC1B,YAAM;AAAEtN,QAAAA;AAAF,UAAiBiB,MAAM,CAACC,IAAP,CAAY4jC,OAAO,CAACE,QAAD,CAAnB,KAAkC;AACvDhlC,QAAAA,UAAU,EAAE,CAAC;AAD0C,OAAzD;AAGA1C,MAAAA,GAAG,CAAC2M,aAAJ,GAAoBjK,UAApB;AACD;;AAED,QAAIglC,QAAQ,KAAK13B,SAAb,IAA0B23B,QAAQ,KAAK33B,SAA3C,EAAsD;AACpD83B,MAAAA,mBAAmB,CAAC9nC,GAAD,EAAM4nC,eAAN,EAAuBC,iBAAvB,CAAnB;AACD;;AAEF,GApBQ,EAoBN,CAAC7nC,GAAD,EAAM0nC,QAAN,EAAgBC,QAAhB,CApBM,CAAT;AAqBD,CA7BM;AA+BP,MAAaG,mBAAmB,GAAG,CACjC9nC,GADiC,EAEjC4nC,eAFiC,EAGjCC,iBAHiC;AAKjC,MAAID,eAAe,IAAIC,iBAAvB,EAA0C;AACxC,UAAME,aAAa,GAAGv3B,IAAI,CAACF,GAAL,CACpBE,IAAI,CAACD,GAAL,CAASs3B,iBAAT,EAA4B7nC,GAAG,CAAC0M,aAAJ,IAAqB,CAAjD,CADoB,EAEpB1M,GAAG,CAAC2M,aAAJ,IAAqBq7B,MAAM,CAACC,SAFR,CAAtB;AAKAjoC,IAAAA,GAAG,CAACyC,SAAJ,CAAcmlC,eAAd,EAA+BG,aAA/B;AACD;AACF,CAbM;;ACnCP,SAAShmB,UAAT,CAAkBC,KAAlB;AACE,QAAMkmB,KAAK,GAAG13B,IAAI,CAAC0R,GAAL,CAAS,EAAT,EAAa,CAAC1R,IAAI,CAAC23B,KAAL,CAAWnmB,KAAX,IAAoB,EAArB,EAAyB5jB,MAAzB,GAAkC,CAA/C,CAAd;AACA,QAAMgqC,CAAC,GAAGpmB,KAAK,GAAGkmB,KAAlB;AAEA,SAAOA,KAAK,IAAIE,CAAC,IAAI,EAAL,GAAU,EAAV,GAAeA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAa,CAA1D,CAAZ;AACD;;AAED,SAASC,sBAAT,CAAgC3lC,UAAhC;AACE,QAAM;AAAEzC,IAAAA;AAAF,MAAcE,aAAa,EAAjC;AACA,QAAM;AACJiU,IAAAA,MADI;AAEJjD,IAAAA,KAFI;AAGJjO,IAAAA,IAAI,EAAE;AAAEH,MAAAA,IAAF;AAAQD,MAAAA,IAAR;AAAcG,MAAAA,IAAd;AAAoBD,MAAAA,IAApB;AAA0BI,MAAAA;AAA1B;AAHF,MAIFnD,OAJJ;AAMA,SAAOX,aAAO,CAAC;AACb,QAAI6R,KAAK,KAAK,CAAd,EAAiB;AACf,aAAOzO,UAAP;AACD;;AACD,UAAM4lC,aAAa,GAAGn3B,KAAK,GAAG,EAA9B;AACA,UAAMoD,CAAC,GAAGtU,OAAO,CAAC+B,sBAAR,CAA+B,CAA/B,EAAkCoS,MAAM,GAAG,CAA3C,CAAV;AACA,UAAMY,CAAC,GAAG/U,OAAO,CAAC+B,sBAAR,CAA+BsmC,aAA/B,EAA8Cl0B,MAAM,GAAG,CAAvD,CAAV;AAEA,WAAOyN,iBAAQ,CAACtN,CAAD,EAAIS,CAAJ,CAAR,GAAiBszB,aAAxB;AAED,GAVa,EAUX,CAACl0B,MAAD,EAASjD,KAAT,EAAgBpO,IAAhB,EAAsBD,IAAtB,EAA4BG,IAA5B,EAAkCD,IAAlC,EAAwCI,GAAG,CAACsjC,IAA5C,EAAkDhkC,UAAlD,EAA8DzC,OAA9D,CAVW,CAAd;AAWD;;AAED,SAAgBsoC;MAAS;AACvB7lC,IAAAA,UADuB;AAEvB8lC,IAAAA,SAAS,GAAG;AAFW;AAOvB,QAAMC,mBAAmB,GAAGJ,sBAAsB,CAAC3lC,UAAD,CAAlD;AAEA,SAAOpD,aAAO,CAAC;AACb,UAAMooC,QAAQ,GAAGc,SAAS,GAAGC,mBAA7B;AACA,UAAMC,YAAY,GAAG3mB,UAAQ,CAAC2lB,QAAD,CAA7B;AACA,UAAMv2B,KAAK,GAAG4Q,UAAQ,CAAC2lB,QAAD,CAAR,GAAqBe,mBAAnC;AAEA,WAAO;AACLC,MAAAA,YADK;AAELv3B,MAAAA;AAFK,KAAP;AAID,GATa,EASX,CAACs3B,mBAAD,EAAsBD,SAAtB,CATW,CAAd;AAUD;;SC1CeG,uBAEdxD;MADA;AAAE7iC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ;AAGA,QAAM;AAAE1C,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM;AAAEsC,IAAAA;AAAF,MAAgBR,iBAAiB,EAAvC;AAEAmC,EAAAA,eAAS,CAAC;AACR,QAAIwkC,oBAAoB,CAAC5oC,GAAD,EAAM;AAAEsC,MAAAA,QAAF;AAAYI,MAAAA;AAAZ,KAAN,CAAxB,EAAyD;AACvDD,MAAAA,SAAS,CAAC;AACRH,QAAAA,QADQ;AAERI,QAAAA;AAFQ,OAAD,CAAT;AAID;;AAEF,GARQ,EAQN,CAACJ,QAAD,EAAWI,UAAX,EAAuByiC,KAAvB,CARM,CAAT;AASD;;AAED,SAAS0D,oBAAT,CAA8B7oC,GAA9B,EAAwCsC,QAAxC;AACE,SACEA,QAAQ,KACP,CAACwf,eAAU,CAAC9hB,GAAG,CAACsC,QAAJ,CAAa,CAAb,CAAD,EAAkBA,QAAQ,CAAC,CAAD,CAA1B,CAAX,IACC,CAACwf,eAAU,CAAC9hB,GAAG,CAACsC,QAAJ,CAAa,CAAb,CAAD,EAAkBA,QAAQ,CAAC,CAAD,CAA1B,CAFL,CADV;AAKD;;AAED,SAASwmC,sBAAT,CAAgC9oC,GAAhC,EAA0C0C,UAA1C;AACE,SAAOA,UAAU,IAAI,CAACof,eAAU,CAAC9hB,GAAG,CAAC0C,UAAL,EAAiBA,UAAjB,CAAhC;AACD;;AAED,SAAgBkmC,qBACd5oC;MACA;AAAEsC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ;AAEA,SACEmmC,oBAAoB,CAAC7oC,GAAD,EAAMsC,QAAN,CAApB,IACAwmC,sBAAsB,CAAC9oC,GAAD,EAAM0C,UAAN,CAFxB;AAID;;MCRYqmC,UAAU,GAAG,SAAbA,UAAa,CAACllC,MAAD;MAACA;AAAAA,IAAAA,SAAS;;;AAClC,QAAM;AAAErD,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAwBE,iBAAiB,EAA/C;AACA,QAAM;AAAEX,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAM+B,aAAa,GAAGd,aAAa,EAAnC;AAEA,QAAM4nC,cAAc,GAAwChG,YAAM,CAAC,EAAD,CAAlE;AACA,QAAMiG,YAAY,GAA0CjG,YAAM,CAAC,IAAD,CAAlE;AACA,QAAMkG,MAAM,GAAsClG,YAAM,CAAC,EAAD,CAAxD;AAEA,QAAMmG,UAAU,GAAG1qC,iBAAW,CAAC,MAAMgC,UAAU,CAAC2jB,MAAX,CAAkB3jB,UAAU,CAACyD,QAA7B,CAAP,EAA+C,CAC3EzD,UAD2E,CAA/C,CAA9B;AAIA,QAAM7B,KAAK,GAAGH,iBAAW,CAAC;AACxBuqC,IAAAA,cAAc,CAAC3qC,OAAf,CAAuB+1B,OAAvB,CAA+B,CAACpwB,OAAD,EAAyBuL,KAAzB;AAC7B,YAAM65B,oBAAoB,GAAGF,MAAM,CAAC7qC,OAAP,CAAekR,KAAf,CAA7B;;AAEA,UAAI65B,oBAAJ,EAA0B;AACxB,cAAM;AACJC,UAAAA,WADI;AAEJC,UAAAA,WAFI;AAGJC,UAAAA,UAHI;AAIJC,UAAAA;AAJI,YAKFJ,oBALJ;;AAOA,YAAIplC,OAAO,CAACylC,WAAR,CAAoB,WAApB,EAAiCJ,WAAjC,CAAJ,EAA8D;AAC5DrlC,UAAAA,OAAO,CAACwhC,GAAR,CAAY,WAAZ,EAAyB6D,WAAzB;AACD;;AAED,YAAIrlC,OAAO,CAACylC,WAAR,CAAoB,WAApB,EAAiCH,WAAjC,CAAJ,EAA8D;AAC5DtlC,UAAAA,OAAO,CAACwhC,GAAR,CAAY,WAAZ,EAAyB8D,WAAzB;AACD;;AAED,YAAItlC,OAAO,CAACylC,WAAR,CAAoB,UAApB,EAAgCF,UAAhC,CAAJ,EAA4D;AAC1DvlC,UAAAA,OAAO,CAACwhC,GAAR,CAAY,UAAZ,EAAwB+D,UAAxB;AACD;;AAED,YAAIvlC,OAAO,CAACylC,WAAR,CAAoB,OAApB,EAA6BD,OAA7B,CAAJ,EAAsD;AACpDxlC,UAAAA,OAAO,CAACwhC,GAAR,CAAY,OAAZ,EAAqBgE,OAArB;AACD;AACF;AACF,KA3BD;AA6BAxpC,IAAAA,GAAG,CAACwlC,GAAJ,CAAQ,OAAR,EAAiB2D,UAAjB;AACAH,IAAAA,cAAc,CAAC3qC,OAAf,GAAyB,EAAzB;AACA4qC,IAAAA,YAAY,CAAC5qC,OAAb,GAAuB,IAAvB;AACAmC,IAAAA,KAAK,CAAC4jB,MAAN,CAAa5jB,KAAK,CAAC0D,QAAnB;AACAglC,IAAAA,MAAM,CAAC7qC,OAAP,GAAiB,EAAjB;;AAEA,QAAI2B,GAAG,CAAC0kC,OAAJ,CAAYjkC,UAAZ,MAA4B,CAAC,CAAjC,EAAoC;AAClCT,MAAAA,GAAG,CAAC2kC,WAAJ,CAAgBlkC,UAAhB;AACD;AACF,GAvCwB,EAuCtB,CAAC0oC,UAAD,EAAa1oC,UAAb,EAAyBD,KAAzB,EAAgCR,GAAhC,CAvCsB,CAAzB;AAyCAoE,EAAAA,eAAS,CAAC;AACR,QAAIpE,GAAG,CAAC0kC,OAAJ,CAAYlkC,KAAZ,MAAuB,CAAC,CAA5B,EAA+B;AAC7BR,MAAAA,GAAG,CAACgkC,WAAJ,CAAgBxjC,KAAhB,EAAuBqD,MAAvB;AACD;;AACD,WAAOjF,KAAP;AACD,GALQ,EAKN,CAACA,KAAD,EAAQoB,GAAR,EAAaQ,KAAb,EAAoBqD,MAApB,CALM,CAAT;AAOA,QAAM6lC,iBAAiB,GAAGjrC,iBAAW,CACnC;QAAC;AACC6C,MAAAA,KADD;AAECgB,MAAAA,QAFD;AAGCu1B,MAAAA,SAHD;AAIC8R,MAAAA;AAJD;AAQC,UAAM3lC,OAAO,GAAG,IAAIkhB,kBAAJ,CAAiB5iB,QAAQ,IAAIhB,KAAK,CAACgB,QAAnC,EAA6C;AAC3DxB,MAAAA,MAAM,EAAE,IAAI82B,WAAJ,CAAgB;AACtBC,QAAAA,SAAS,EAAEA;AADW,OAAhB,CADmD;AAI3Dz0B,MAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAJkD,KAA7C,CAAhB;;AAOA,QAAIumC,SAAJ,EAAe;AACb,UAAI3pC,GAAG,CAAC0kC,OAAJ,CAAYjkC,UAAZ,MAA4B,CAAC,CAAjC,EAAoC;AAClCT,QAAAA,GAAG,CAACgkC,WAAJ,CAAgBvjC,UAAhB,EAA4BoD,MAA5B;AACD;;AAEDpD,MAAAA,UAAU,CAAC2jB,MAAX,CAAkB3jB,UAAU,CAACyD,QAA7B;AACAzD,MAAAA,UAAU,CAACgkB,GAAX,CAAezgB,OAAf;AACD,KAPD,MAOO;AACLilC,MAAAA,YAAY,CAAC5qC,OAAb,GAAuB2F,OAAvB;AACAxD,MAAAA,KAAK,CAACikB,GAAN,CAAUzgB,OAAV;AACD;AACF,GA3BkC,EA4BnC,CAACvD,UAAD,EAAaD,KAAb,EAAoBR,GAApB,EAAyB6D,MAAzB,CA5BmC,CAArC;AA+BA,QAAM+lC,oBAAoB,GAAGnrC,iBAAW,CACtC4C,KAAK;AACH,QAAIA,KAAK,CAACy2B,IAAV,EAAgB;AACdz2B,MAAAA,KAAK,CAACy2B,IAAN,CAAW+R,gBAAX,GAA8B,IAA9B;AACD;;AACDxoC,IAAAA,KAAK,CAACyoC,eAAN;AACAb,IAAAA,YAAY,CAAC5qC,OAAb,IACEmC,KAAK,CAACupC,GAAN,CAAUd,YAAY,CAAC5qC,OAAvB,CADF,IAEEmC,KAAK,CAAC4jB,MAAN,CAAa6kB,YAAY,CAAC5qC,OAA1B,CAFF;AAGA4qC,IAAAA,YAAY,CAAC5qC,OAAb,GAAuB,IAAvB;AACAmC,IAAAA,KAAK,CAAC4jB,MAAN,CAAa5jB,KAAK,CAAC0D,QAAnB;AACD,GAXqC,EAYtC,CAAC1D,KAAD,CAZsC,CAAxC;AAeA,SAAO/B,iBAAW,CACfurC,aAAD;AACE,UAAM;AAAEhmC,MAAAA,OAAF;AAAW1B,MAAAA,QAAX;AAAqBu1B,MAAAA,SAArB;AAAgC8R,MAAAA;AAAhC,QAA8CK,aAApD;AACA,UAAMC,MAAM,GAAGjmC,OAAO,IAAIhE,GAA1B;AACAgpC,IAAAA,cAAc,CAAC3qC,OAAf,CAAuBmP,IAAvB,CAA4By8B,MAA5B;AACA,UAAMC,KAAK,GAAGD,MAAM,YAAYrqC,QAAhC;AAEA,UAAMuqC,aAAa,GAAkB,EAArC;;AAEAA,IAAAA,aAAa,CAACd,WAAd,GAA6BhoC,KAAD;AAC1BA,MAAAA,KAAK,CAACyoC,eAAN;AACAF,MAAAA,oBAAoB,CAACvoC,KAAD,CAApB;AAEAqoC,MAAAA,iBAAiB,CAAC;AAAEpoC,QAAAA,KAAK,EAAEY,aAAa,CAACb,KAAD,CAAtB;AAA+BiB,QAAAA,QAA/B;AAAyCu1B,QAAAA;AAAzC,OAAD,CAAjB;AACD,KALD;;AAOAsS,IAAAA,aAAa,CAACb,WAAd,GACEjoC,KAD0B;AAK1B,UAAI,CAAC6oC,KAAL,EAAY;AACV7oC,QAAAA,KAAK,CAACyoC,eAAN;AACD;;AAED,UAAIzoC,KAAK,CAACy2B,IAAV,EAAgB;AACdz2B,QAAAA,KAAK,CAACy2B,IAAN,CAAW+R,gBAAX,GAA8B,IAA9B;AACD;;AAED,YAAMvoC,KAAK,GAAGY,aAAa,CAACb,KAAD,CAA3B;;AAEA,UAAI4nC,YAAY,CAAC5qC,OAAjB,EAA0B;AACxB6rC,QAAAA,KAAK,IACH,CAAC1pC,KAAK,CAACupC,GAAN,CAAUd,YAAY,CAAC5qC,OAAvB,CADH,IAEEmC,KAAK,CAACikB,GAAN,CAAUwkB,YAAY,CAAC5qC,OAAvB,CAFF;AAIA4qC,QAAAA,YAAY,CAAC5qC,OAAb,CAAqBiE,QAArB,GAAgCA,QAAQ,IAAIhB,KAAK,CAACgB,QAAlD;AACD,OAND,MAMO;AACLonC,QAAAA,iBAAiB,CAAC;AAAEpoC,UAAAA,KAAK,EAAEA,KAAT;AAAgBgB,UAAAA,QAAhB;AAA0Bu1B,UAAAA;AAA1B,SAAD,CAAjB;AACD;AACF,KAxBD;;AA0BA,QAAI8R,SAAJ,EAAe;AACbQ,MAAAA,aAAa,CAACX,OAAd,GAAyBnoC,KAAD;AACtBA,QAAAA,KAAK,CAACyoC,eAAN;AAEAJ,QAAAA,iBAAiB,CAAC;AAChBpoC,UAAAA,KAAK,EAAEY,aAAa,CAACb,KAAD,CADJ;AAEhBiB,UAAAA,QAFgB;AAGhBu1B,UAAAA,SAHgB;AAIhB8R,UAAAA;AAJgB,SAAD,CAAjB;AAMD,OATD;AAUD;;AAEDQ,IAAAA,aAAa,CAACZ,UAAd,GAA2BK,oBAA3B;AAEAV,IAAAA,MAAM,CAAC7qC,OAAP,CAAemP,IAAf,CAAoB28B,aAApB;AAEA,UAAM;AAAEd,MAAAA,WAAF;AAAeC,MAAAA,WAAf;AAA4BC,MAAAA,UAA5B;AAAwCC,MAAAA;AAAxC,QAAoDW,aAA1D;;AAEA,QAAIR,SAAS,IAAI,CAACO,KAAlB,EAAyB;AACvBD,MAAAA,MAAM,CAACnnB,EAAP,CAAU,WAAV,EAAuBymB,UAAvB;AACAU,MAAAA,MAAM,CAACnnB,EAAP,CAAU,WAAV,EAAuBymB,UAAvB;AACAU,MAAAA,MAAM,CAACnnB,EAAP,CAAU,OAAV,EAAmB0mB,OAAnB;;AAEA,UAAI,CAACxpC,GAAG,CAACypC,WAAJ,CAAgB,OAAhB,EAAyBN,UAAzB,CAAL,EAAsD;AACpDnpC,QAAAA,GAAG,CAAC8iB,EAAJ,CAAO,OAAP,EAAgBqmB,UAAhB;AACD;AACF,KARD,MAQO;AACL,UAAI,CAACe,KAAL,EAAY;AACVD,QAAAA,MAAM,CAACnnB,EAAP,CAAU,WAAV,EAAuBumB,WAAvB;AACD;;AACDY,MAAAA,MAAM,CAACnnB,EAAP,CAAU,WAAV,EAAuBwmB,WAAvB;AACAW,MAAAA,MAAM,CAACnnB,EAAP,CAAU,UAAV,EAAsBymB,UAAtB;AACD;AACF,GA5Ee,EA6EhB,CACEK,oBADF,EAEET,UAFF,EAGEnpC,GAHF,EAIE0pC,iBAJF,EAKExnC,aALF,EAME1B,KANF,CA7EgB,CAAlB;AAsFD,CAjMM;;SClBS4pC;MAAgB;AAC9BvmC,IAAAA,MAD8B;AAE9BqgC,IAAAA,WAAW,GAAG,IAFgB;AAG9BhgC,IAAAA,QAH8B;AAI9BmmC,IAAAA,YAJ8B;AAK9B73B,IAAAA,IAL8B;AAM9BqP,IAAAA,QAN8B;AAO9ByoB,IAAAA;AAP8B;AAS9B,QAAM;AAAEtqC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AACA,QAAMoqC,eAAe,GAAGvH,YAAM,CAAC9+B,QAAD,CAA9B;AAEA,QAAM1D,KAAK,GAAiB8iC,WAAW,CACrC;AACEE,IAAAA,OAAO,EAAE;AACP,YAAMgH,mBAAmB,GAAG,IAAIC,uCAAJ,CAAwB;AAClDj4B,QAAAA,IADkD;AAElDqP,QAAAA,QAFkD;AAGlDwoB,QAAAA,YAAY,EAAEA,YAAY,GACtBnmC,QAAQ,IAAImmC,YAAY,CAACnmC,QAAD,EAAW1D,KAAX,CADF,GAEtB,KAAK;AALyC,OAAxB,CAA5B;AAQA,YAAMkqC,YAAY,GAAG,IAAIC,2BAAJ,CAAiB;AACpCH,QAAAA,mBADoC;AAEpCF,QAAAA;AAFoC,OAAjB,CAArB;AAIAC,MAAAA,eAAe,CAAClsC,OAAhB,GAA0B6F,QAA1B;AAEAwmC,MAAAA,YAAY,CAACjmB,GAAb,CAAiBvgB,QAAjB;AAEA,aAAOwmC,YAAP;AACD,KAnBH;AAoBEjH,IAAAA,UAAU,EAAEjjC,KAAK,IAAIR,GAAG,CAAC0kC,OAAJ,CAAYlkC,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAAC2kC,WAAJ,CAAgBnkC,KAAhB,CApBpD;AAqBE87B,IAAAA,MAAM,EAAE,CAACoO,YAAD;UAAe,CAACxmC,QAAD;AACrBwmC,MAAAA,YAAY,CAACtmB,MAAb,CAAoBmmB,eAAe,CAAClsC,OAApC;AACAqsC,MAAAA,YAAY,CAACjmB,GAAb,CAAiBvgB,QAAjB;AAEAqmC,MAAAA,eAAe,CAAClsC,OAAhB,GAA0B6F,QAA1B;AACD;AA1BH,GADqC,EA6BrC,CAACA,QAAD,CA7BqC,CAAvC;AAgCA6/B,EAAAA,aAAa,CAACvjC,KAAD,EAAQqD,MAAR,CAAb;AACAogC,EAAAA,kBAAkB,CAACzjC,KAAD,EAAQ0jC,WAAR,CAAlB;AAEA,SAAO1jC,KAAP;AACD;;AC5DD,MAAMoqC,aAAa,GAAqB,EAAxC;AAIA,MAAaC,gBAAgB,GAAG;MAAC;AAC/BC,IAAAA,MAD+B;AAE/BC,IAAAA;AAF+B;AAI/B,QAAMC,aAAa,GAAGnF,UAAU,EAAhC;AACA,QAAM3kC,MAAM,GAAGC,uBAAuB,EAAtC;AACA,QAAM,CAAC+C,QAAD,EAAW+mC,WAAX,IAA0B1sC,cAAQ,CAAmBqsC,aAAnB,CAAxC;AAEA,QAAMM,cAAc,GAAGzsC,iBAAW,CAAC,MAAMwsC,WAAW,CAACL,aAAD,CAAlB,EAAmC,CACnEK,WADmE,CAAnC,CAAlC;AAIA7mC,EAAAA,eAAS,CAAC;AACR,QAAI,CAAC4mC,aAAL,EAAoB;AAClB;AACD;;AAEDF,IAAAA,MAAM,CAACE,aAAD,CAAN,CAAsBlI,IAAtB,CAA2B5+B,QAAQ;AACjC+mC,MAAAA,WAAW,CAAC/mC,QAAQ,CAAClE,GAAT,CAAa6gB,eAAe,CAAC3f,MAAD,CAA5B,CAAD,CAAX;AACD,KAFD;AAID,GATQ,EASN,CAAC8pC,aAAD,CATM,CAAT;AAWA,SAAO,CACL,OAAOD,UAAP,KAAsB,UAAtB,GAAmCA,UAAU,CAAC7mC,QAAD,CAA7C,GAA0DA,QADrD,EAELgnC,cAFK,CAAP;AAID,CA3BM;;MCXMC,MAAM,GAAIruB,IAAD;AACpB,SAAOxd,aAAO,CAAC;AACb,WAAO4c,OAAO,CAACY,IAAI,IAAIH,YAAT,CAAP,IAAiCC,WAAxC;AACD,GAFa,EAEX,CAACE,IAAD,CAFW,CAAd;AAGD,CAJM;;ACYP,MAAMqG,SAAS,GAAG,CAACljB,OAAD,EAAsBulB,MAAtB,KAChBvlB,OAAO,CAACuB,OAAR,IACA,OAAOvB,OAAO,CAACuB,OAAf,KAA2B,QAD3B,KAECvB,OAAO,CAACuB,OAAR,CAAgBiH,KAAhB,CAAsB+c,MAAtB,GAA+BA,MAFhC,CADF;;AAKA,SAAS4lB,IAAT;AACE;AACD;;AAED,MAAaC,kBAAkB,GAAG;MAAC;AACjC/oC,IAAAA,QADiC;AAEjCgpC,IAAAA,QAFiC;AAGjCxqC,IAAAA;AAHiC;AAKjC,QAAMkD,OAAO,GAAGg/B,YAAM,CAAiB,IAAjB,CAAtB;AACA,QAAM;AAAEhjC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AACA,QAAMK,KAAK,GAAGwiC,YAAM,CAAC,IAAI3iC,2BAAJ,EAAD,CAApB;AACA,QAAMkrC,WAAW,GAAGvI,YAAM,CACxB,IAAIwI,uBAAJ,CAAgBxrC,GAAhB,EAAqB;AACnByrC,IAAAA,QAAQ,EAAE,KADS;AAEnBC,IAAAA,WAAW,EAAElrC,KAAK,CAACnC;AAFA,GAArB,CADwB,CAA1B;AAOA,QAAMstC,UAAU,GAAGltC,iBAAW,CAC3B4C,KAAD;AACEA,IAAAA,KAAK,CAACyoC,eAAN;;AACA,QAAI,EAAEzoC,KAAK,YAAY6kC,2BAAnB,CAAJ,EAAwC;AACtC;AACD;;AAEDlmC,IAAAA,GAAG,CAACwlC,GAAJ,CAAQ,OAAR,EAAiBmG,UAAjB;AACAxoB,IAAAA,SAAS,CAACljB,OAAD,EAAU,SAAV,CAAT;AACAqrC,IAAAA,QAAQ,CAACjqC,KAAK,CAACC,KAAN,CAAYgB,QAAb,CAAR;AACD,GAV2B,EAW5B,CAACrC,OAAD,EAAUD,GAAV,EAAesrC,QAAf,CAX4B,CAA9B;AAcAnI,EAAAA,QAAQ,CAAC;AACPC,IAAAA,OAAO,EAAE;AACPpjC,MAAAA,GAAG,CAAC4rC,QAAJ,CAAaprC,KAAK,CAACnC,OAAnB;AACAktC,MAAAA,WAAW,CAACltC,OAAZ,CAAoBykB,EAApB,CAAuB,MAAvB,EAA+B;AAAA;;AAAA,eAC7BwoB,QAAQ,CAAC,0BAAAC,WAAW,CAACltC,OAAZ,CAAoBmlB,aAApB,2CAAmClhB,QAAnC,KAA+C,CAAC,CAAD,EAAI,CAAJ,CAAhD,CADqB;AAAA,OAA/B;;AAIA,UAAI,CAACA,QAAL,EAAe;AACb6gB,QAAAA,SAAS,CAACljB,OAAD,EAAU,SAAV,CAAT;AACAD,QAAAA,GAAG,CAAC8iB,EAAJ,CAAO,OAAP,EAAgB6oB,UAAhB;AACD;AACF,KAXM;AAYPtI,IAAAA,SAAS,EAAE;AACTrjC,MAAAA,GAAG,CAAC2kC,WAAJ,CAAgBnkC,KAAK,CAACnC,OAAtB;AACA2B,MAAAA,GAAG,CAACwlC,GAAJ,CAAQ,OAAR,EAAiBmG,UAAjB;AACAJ,MAAAA,WAAW,CAACltC,OAAZ,CAAoBmnC,GAApB,CAAwB,MAAxB,EAAgC;AAAA;;AAAA,eAC9B8F,QAAQ,CAAC,2BAAAC,WAAW,CAACltC,OAAZ,CAAoBmlB,aAApB,4CAAmClhB,QAAnC,KAA+C,CAAC,CAAD,EAAI,CAAJ,CAAhD,CADsB;AAAA,OAAhC;AAGA6gB,MAAAA,SAAS,CAACljB,OAAD,EAAU,SAAV,CAAT;AACD;AAnBM,GAAD,CAAR;AAsBAmE,EAAAA,eAAS,CAAC;AACR,QAAI9B,QAAJ,EAAc;AACZ,UAAI,CAAC0B,OAAO,CAAC3F,OAAb,EAAsB;AACpB,cAAMwtC,WAAW,GAAG7rC,GAAG,CAACypC,WAAJ,CAAgB,OAAhB,EAAyBkC,UAAzB,CAApB;AAEA,cAAMrM,YAAY,GAAG,IAAI7gB,yBAAJ,CAAiBnc,QAAjB,EAA2B;AAC9Cc,UAAAA,GAAG,EAAEpD,GAAG,CAACoD,GADqC;AAE9CtC,UAAAA,MAAM,EAAEA,MAAM,IAAI,IAAIy9B,mCAAJ;AAF4B,SAA3B,CAArB;AAKAe,QAAAA,YAAY,CAACxc,EAAb,CAAgB,WAAhB,EAA6BsoB,IAA7B;AACA9L,QAAAA,YAAY,CAACxc,EAAb,CAAgB,WAAhB,EAA6B,MAAMK,SAAS,CAACljB,OAAD,EAAU,SAAV,CAA5C;AACAq/B,QAAAA,YAAY,CAACxc,EAAb,CAAgB,UAAhB,EAA4B,MAAMK,SAAS,CAACljB,OAAD,EAAU,SAAV,CAA3C;AAEAO,QAAAA,KAAK,CAACnC,OAAN,CAAcomB,GAAd,CAAkB6a,YAAlB;AACAiM,QAAAA,WAAW,CAACltC,OAAZ,CAAoBmlB,aAApB,GAAoC8b,YAApC;AACAiM,QAAAA,WAAW,CAACltC,OAAZ,CAAoBotC,QAApB,GAA+B,IAA/B;AACAznC,QAAAA,OAAO,CAAC3F,OAAR,GAAkBihC,YAAlB;;AACA,YAAIuM,WAAJ,EAAiB;AACf7rC,UAAAA,GAAG,CAACwlC,GAAJ,CAAQ,OAAR,EAAiBmG,UAAjB;AACAxoB,UAAAA,SAAS,CAACljB,OAAD,EAAU,SAAV,CAAT;AACD;AACF,OApBD,MAoBO,IAAI+D,OAAO,CAAC3F,OAAR,IAAmBktC,WAAW,CAACltC,OAAZ,CAAoBmlB,aAA3C,EAA0D;AAC/D+nB,QAAAA,WAAW,CAACltC,OAAZ,CAAoBmlB,aAApB,CAAkClhB,QAAlC,GAA6CA,QAA7C;AACA9B,QAAAA,KAAK,CAACnC,OAAN,CAAck+B,MAAd;AACD;AACF,KAzBD,MAyBO,IAAIv4B,OAAO,CAAC3F,OAAZ,EAAqB;AAC1BmC,MAAAA,KAAK,CAACnC,OAAN,CAAc+lB,MAAd,CAAqBpgB,OAAO,CAAC3F,OAA7B;AACA2F,MAAAA,OAAO,CAAC3F,OAAR,GAAkB,IAAlB;AACA8kB,MAAAA,SAAS,CAACljB,OAAD,EAAU,SAAV,CAAT;AACAD,MAAAA,GAAG,CAAC8iB,EAAJ,CAAO,OAAP,EAAgB6oB,UAAhB;AACD;AACF,GAhCQ,EAgCN,CAACA,UAAD,EAAa1rC,OAAb,EAAsBD,GAAtB,EAA2BsC,QAA3B,EAAqCxB,MAArC,CAhCM,CAAT;AAiCD,CApFM;;MCjBMgrC,iBAAiB,GAAG,CAACnb,MAAD,EAAiBvtB,GAAjB;AAC/B,QAAM;AAAEnD,IAAAA,OAAF;AAAWD,IAAAA;AAAX,MAAmBG,aAAa,EAAtC;AACA,QAAM;AAAEuC,IAAAA;AAAF,MAAiBokC,WAAW,EAAlC;AAEA,SAAOxnC,aAAO,CACZ,MACEoxB,cAAc,CAACC,MAAD,EAAS;AACrB1wB,IAAAA,OAAO,EAAEA,OADY;AAErBmD,IAAAA,GAAG,EAAEA,GAAG,IAAIpD,GAAG,CAACoD;AAFK,GAAT,CAFJ;AAOZ,GAACnD,OAAD,EAAU0wB,MAAV,EAAkBvtB,GAAlB,EAAuBpD,GAAG,CAACoD,GAA3B,EAAgCV,UAAhC,CAPY,CAAd;AASD,CAbM;AAeP,MAAaqpC,mBAAmB,GAAG;AACjC,QAAM;AAAE9rC,IAAAA,OAAF;AAAWD,IAAAA;AAAX,MAAmBG,aAAa,EAAtC;AAEA,SAAO1B,iBAAW,CAChB,CAACkyB,MAAD,EAAiBvtB,GAAjB,KACEstB,cAAc,CAACC,MAAD,EAAS;AACrB1wB,IAAAA,OAAO,EAAEA,OADY;AAErBmD,IAAAA,GAAG,EAAEA,GAAG,IAAIpD,GAAG,CAACoD;AAFK,GAAT,CAFA,EAMhB,CAACnD,OAAD,EAAUD,GAAG,CAACoD,GAAd,CANgB,CAAlB;AAQD,CAXM;;MCnBM4oC,oBAAoB,GAC/BC,QADkC;AAGlC,SAAO3sC,aAAO,CACZ,MACE4sC,cAAQ,CAAEC,EAAD;AACPA,IAAAA,EAAE;AACH,GAFO,EAELF,QAFK,CAFE,EAKZ,CAACA,QAAD,CALY,CAAd;AAOD,CAVM;;MCDMG,SAAS,GAAIh+B,OAAD;AACvB,QAAM,CAACi+B,KAAD,EAAQC,QAAR,IAAoB/tC,cAAQ,CAAC6P,OAAO,KAAK4B,SAAZ,GAAwB5B,OAAxB,GAAkC,KAAnC,CAAlC;AACA,QAAMm+B,MAAM,GAAG9tC,iBAAW,CAAC,MAAM6tC,QAAQ,CAAC,CAACD,KAAF,CAAf,EAAyB,CAACA,KAAD,CAAzB,CAA1B;AAEA,SAAO,CAACA,KAAD,EAAQE,MAAR,EAAgBD,QAAhB,CAAP;AACD,CALM;;SCASE;AACd,QAAM,CAAC1U,IAAD,EAAO2U,SAAP,IAAoBluC,cAAQ,CAAqB,IAArB,CAAlC;AAEA,QAAM0kC,GAAG,GAAGxkC,iBAAW,CAACguC,SAAD,EAAY,CAACA,SAAD,CAAZ,CAAvB;AAEA,SAAO,CAACxJ,GAAD,EAAMnL,IAAN,CAAP;AACD;;MCFYuG,MAAM,GAAoB;MAAC;AAAEv9B,IAAAA,MAAF;AAAU0R,IAAAA,IAAV;AAAgBglB,IAAAA;AAAhB;AACtC,QAAM;AAAE5jB,IAAAA,MAAF;AAAUqvB,IAAAA;AAAV,MAAkBF,SAAS,EAAjC;AACAL,EAAAA,SAAS,CAAC;AAAE5hC,IAAAA,MAAF;AAAU0R,IAAAA,IAAV;AAAgBglB,IAAAA;AAAhB,GAAD,EAA2B5jB,MAA3B,CAAT;AAEA,SAAOrU,4BAAA,SAAA;AAAQ0jC,IAAAA,GAAG,EAAEA;GAAb,CAAP;AACD,CALM;;;MCEMyJ,YAAY,gBAAGC,eAAM,CAACC,GAAV,gJACT;AAAA,MAAC;AAAEhhB,IAAAA,YAAF;AAAgBihB,IAAAA;AAAhB,GAAD;AAAA,kBACLA,KAAK,CAACjhB,YAAD,CADA,2BAEVA,YAAY,KAAKrN,gBAAY,CAACM,QAA9B,GAAyC,aAAzC,GAAyD,WAF/C;AAAA,CADS,CAAlB;AASP,MAAaiuB,aAAa,gBAAGH,eAAM,CAACC,GAAV,grBAYF;AAAA,MAAC;AAAEx5B,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CAZE,EA2BF;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAf;AAAA,CA3BE,CAAnB;;ACJP,MAAM25B,QAAQ,GAAG,EAAjB;AAEA,MAAaC,WAAW,GAA+B;MAAC;AACtDlsC,IAAAA,MADsD;AAEtD0R,IAAAA,IAAI,GAAGu6B,QAF+C;AAGtD1tC,IAAAA;AAHsD;;AAKtD,MAAIA,QAAJ,EAAc;AACZ,WAAOE,4BAAA,wBAAA,MAAA,EAAGF,QAAH,CAAP;AACD;;AAED,MAAI4tC,UAAU,GAAG,IAAjB;;AAEA,MAAI;AACFA,IAAAA,UAAU,GAAGpM,iBAAiB,CAAC//B,MAAD,CAA9B;AACD,GAFD,CAEE,OAAOosC,CAAP,EAAU;AAEX;;AAED,MAAI,CAACD,UAAL,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAI7N,mBAAmB,CAACt+B,MAAD,CAAvB,EAAmD;AAAA;;AACjD,UAAMsS,KAAK,GAAGtM,iBAAiB,0BAAEmmC,UAA+B,CAAC94B,UAAlC,qBAAE,sBAA4CyB,SAA9C,CAAjB,IACZ9O,iBAAiB,uBAAEmmC,UAA+B,CAAC5d,MAAlC,qBAAE,mBAAwCzZ,SAA1C,CADL,IACuE,kBADrF;AAGA,WAAOrW,4BAAA,CAACutC,aAAD;AAAe15B,MAAAA,KAAK,EAAEA;KAAtB,CAAP;AACD;;AAED,SACE7T,4BAAA,CAAC8+B,MAAD;AACEv9B,IAAAA,MAAM,EAAE2hC,YAAY,CAACwK,UAAD,EAAa;AAAEz6B,MAAAA,IAAI,EAAEA,IAAI,GAAG;AAAf,KAAb;AACpBA,IAAAA,IAAI,EAAEA;GAFR,CADF;AAMD,CAlCM;;;MCZM26B,oBAAoB,gBAAGR,eAAM,CAACC,GAAV,6jBAkB7BQ,UAlB6B,CAA1B;AA6BP,MAAaC,YAAY,gBAAGV,eAAM,CAACC,GAAV,iMAAlB;AAQP,MAAaU,UAAU,gBAAGX,eAAM,CAACC,GAAV,qKAAhB;AAMP,MAAaW,SAAS,gBAAGZ,eAAM,CAACC,GAAV,8KAAf;AAOP,MAAaY,YAAY,gBAAGb,eAAM,CAACC,GAAV,sJAGrBQ,UAHqB,CAAlB;AAQP,MAAaK,WAAW,gBAAGd,eAAM,CAACC,GAAV,2LAAjB;AAOP,MAAac,SAAS,gBAAGf,eAAM,CAACC,GAAV,qIAAf;AAKP,MAAae,cAAc,gBAAGhB,eAAM,CAACC,GAAV,wVAApB;AAcP,MAAagB,qBAAqB,gBAAGjB,eAAM,CAACC,GAAV,6GAA3B;AAIP,MAAaiB,mBAAmB,gBAAGlB,eAAM,CAACC,GAAV,2JAAzB;AAMP,MAAakB,cAAc,gBAAGnB,eAAM,CAACC,GAAV,6IAApB;AAKP,MAAamB,kBAAkB,gBAAGpB,eAAM,CAACC,GAAV,wHAAxB;AAIP,MAAaoB,cAAc,gBAAGrB,eAAM,CAACC,GAAV,6JAApB;AAMP,MAAaqB,uBAAuB,gBAAGtB,eAAM,CAACC,GAAV,mIAA7B;AAKP,MAAasB,eAAe,gBAAGvB,eAAM,CAACC,GAAV,2FAArB;AAEP,MAAauB,SAAS,gBAAGxB,eAAM,CAACp4B,CAAV,iKAAf;;AC9GA,MAAM65B,SAAS,GAAG;AAAA,MAAC;AAAEvzB,IAAAA;AAAF,GAAD;AAAA,SACvBtb,4BAAA,CAAC4uC,SAAD;AAAWlE,IAAAA,MAAM,EAAE;AAAUoE,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAE1zB,QAAQ,CAACC,IAAD;GAA9D,EACGA,IADH,CADuB;AAAA,CAAlB;;ACAA,MAAM0zB,UAAU,GAAG;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SACxBjvC,4BAAA,CAAC4uC,SAAD;AAAWlE,IAAAA,MAAM,EAAE;AAAUoE,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAExzB,SAAS,CAAC0zB,KAAD;GAA/D,EACGA,KADH,CADwB;AAAA,CAAnB;;ACAA,MAAMC,QAAQ,GAAG;AAAA,MAAC;AAAEzvC,IAAAA;AAAF,GAAD;AAAA,SACtBO,4BAAA,CAAC4uC,SAAD;AAAWlE,IAAAA,MAAM,EAAE;AAAUoE,IAAAA,GAAG,EAAE;AAAcC,IAAAA,IAAI,EAAEvzB,OAAO,CAAC/b,GAAD;GAA7D,EACGA,GADH,CADsB;AAAA,CAAjB;;ACKA,MAAM0vC,cAAc,GAAwC;MAAC;AAClEjqC,IAAAA;AADkE;AAGlE,QAAM8W,eAAe,GAAGS,oBAAoB,CAACvX,SAAD,CAA5C;AAEA,SACElF,4BAAA,CAAC0uC,uBAAD,MAAA,EACG1yB,eAAe,CAACvb,GAAhB,CAAoB,CAACgd,cAAD,EAAiBzN,KAAjB;AACnB,UAAM;AAAE7Q,MAAAA;AAAF,QAAYse,cAAlB;AACA,UAAM2xB,GAAG,GAAMjwC,KAAN,SAAe6Q,KAAxB;;AAEA,QAAIyN,cAAc,CAACpW,IAAf;;AAAJ,MAAoD;AAClD,aAAOrH,4BAAA,CAACkvC,QAAD;AAAUE,QAAAA,GAAG,EAAEA;AAAK3vC,QAAAA,GAAG,EAAE4vC,cAAc,CAAClwC,KAAD;OAAvC,CAAP;AACD;;AAED,QAAIse,cAAc,CAACpW,IAAf;;AAAJ,MAAqD;AACnD,aAAOrH,4BAAA,CAAC6uC,SAAD;AAAWO,QAAAA,GAAG,EAAEA;AAAK9zB,QAAAA,IAAI,EAAEnc;OAA3B,CAAP;AACD;;AAED,QAAIse,cAAc,CAACpW,IAAf;;AAAJ,MAAsD;AACpD,aAAOrH,4BAAA,CAACgvC,UAAD;AAAYI,QAAAA,GAAG,EAAEA;AAAKH,QAAAA,KAAK,EAAE9vC;OAA7B,CAAP;AACD;;AAED,WAAOa,4BAAA,CAAC2uC,eAAD;AAAiBS,MAAAA,GAAG,EAAEjwC;KAAtB,EAA8BA,KAA9B,CAAP;AACD,GAjBA,CADH,CADF;AAsBD,CA3BM;;AA6BP,SAASkwC,cAAT,CAAwBC,OAAxB;AACE,MAAI;AACF,WAAOA,OAAO,CACXzoC,KADI,CACE,GADF,EAEJpG,GAFI,CAEA8uC,QAAQ,CAACC,SAFT,EAGJxoC,IAHI,CAGC,GAHD,CAAP;AAID,GALD,CAKE,OAAOyoC,KAAP,EAAc;AACd,WAAOH,OAAP;AACD;AACF;;MCxCYI,oBAAoB,GAAwC;AAAA,MAAC;AACxExqC,IAAAA,SADwE;AAExEk3B,IAAAA;AAFwE,GAAD;AAAA,SAIvEp8B,4BAAA,CAACwuC,kBAAD;AAAoBpS,IAAAA,SAAS,EAAEA;GAA/B,EACEp8B,4BAAA,CAACyuC,cAAD,MAAA,EAAiBvpC,SAAS,CAACic,KAAV,IAAmBjc,SAAS,CAACgZ,IAA9C,CADF,EAEEle,4BAAA,CAACmvC,cAAD;AAAgBjqC,IAAAA,SAAS,EAAEA;GAA3B,CAFF,CAJuE;AAAA,CAAlE;;ACmBA,MAAMyqC,UAAU,GAA0C;MAAC;AAChEhrC,IAAAA,QAAQ,GAAG,EADqD;AAEhEy3B,IAAAA,SAFgE;AAGhE/8B,IAAAA,KAHgE;AAIhEoF,IAAAA,OAJgE;AAKhE3B,IAAAA,IALgE;AAMhE1D,IAAAA,IANgE;AAOhEN,IAAAA,OAPgE;AAQhEG,IAAAA,IARgE;AAShE2wC,IAAAA,YATgE;AAUhEC,IAAAA,YAVgE;AAWhEC,IAAAA,eAXgE;AAYhEC,IAAAA,WAZgE;AAahEC,IAAAA;AAbgE;AAehEnrC,EAAAA,eAAS,CAAC;AACRirC,IAAAA,eAAe,IAAIA,eAAe,CAAChxC,OAAD,CAAlC;AACD,GAFQ,EAEN,CAACA,OAAD,EAAUgxC,eAAV,CAFM,CAAT;AAIA,SACE9vC,4BAAA,CAAC4tC,oBAAD;AAAsBxR,IAAAA,SAAS,EAAEA;GAAjC,EACEp8B,4BAAA,CAAC8tC,YAAD,MAAA,EACE9tC,4BAAA,CAAC+tC,UAAD,MAAA,EACE/tC,4BAAA,CAACytC,WAAD;AAAalsC,IAAAA,MAAM,EAAEkD,OAAO,CAAClD,MAAR,IAAkB;GAAvC,CADF,EAEEvB,4BAAA,CAACguC,SAAD,MAAA,EACEhuC,4BAAA,CAACkuC,WAAD;AAAahhC,IAAAA,KAAK,EAAEzI,OAAO,CAACia,WAAR,IAAuB;GAA3C,EACGja,OAAO,CAACia,WADX,CADF,EAIE1e,4BAAA,CAACmuC,SAAD,MAAA,EAAY1pC,OAAO,CAACoa,UAApB,CAJF,CAFF,EAQE7e,4BAAA,CAACiuC,YAAD,MAAA,EACG4B,YAAY,IAAI7vC,4BAAA,CAACiwC,gBAAD;AAAYhG,IAAAA,OAAO,EAAE,MAAM4F,YAAY,CAACprC,OAAD;GAAvC,EAAkDzE,4BAAA,CAACkwC,6BAAD,MAAA,CAAlD,CADnB,EAEG,CAACF,QAAD,IAAahwC,4BAAA,CAACiwC,gBAAD;AAAYhG,IAAAA,OAAO,EAAEnnC;GAArB,EAA2B9C,4BAAA,CAACmwC,yBAAD,MAAA,CAA3B,CAFhB,EAGEnwC,4BAAA,CAACiwC,gBAAD;AAAYhG,IAAAA,OAAO,EAAE5qC;GAArB,EAA4BW,4BAAA,CAACowC,wBAAD,MAAA,CAA5B,CAHF,CARF,CADF,EAeGzrC,QAAQ,CAAC9F,MAAT,GAAkB,CAAlB,GACCmB,4BAAA,CAACouC,cAAD,MAAA,EACEpuC,4BAAA,CAACiwC,gBAAD;AAAYhG,IAAAA,OAAO,EAAE7qC;GAArB,EAA2BY,4BAAA,CAACqwC,2BAAD,MAAA,CAA3B,CADF,EAEErwC,4BAAA,CAACquC,qBAAD,MAAA,EACEruC,4BAAA,CAACsuC,mBAAD;AAAqBrE,IAAAA,OAAO,EAAEnnC;GAA9B,EACGhE,OAAO,GAAG,CADb,CADF,sDAAA,EAIa6F,QAAQ,CAAC9F,MAJtB,CAFF,EAQEmB,4BAAA,CAACiwC,gBAAD;AAAYhG,IAAAA,OAAO,EAAEhrC;GAArB,EAA2Be,4BAAA,CAACswC,2BAAD,MAAA,CAA3B,CARF,CADD,GAWG,IA1BN,EA2BGP,WA3BH,CADF,EA8BE/vC,4BAAA,CAACuuC,cAAD,MAAA,EACG9pC,OAAO,CAACwZ,UAAR,IACC,CAAC,OAAO2xB,YAAP,KAAwB,UAAxB,GACGA,YAAY,CAACnrC,OAAO,CAACwZ,UAAT,CADf,GAEGxZ,OAAO,CAACwZ,UAFZ,EAGExd,GAHF,CAGOyE,SAAD;AACJ,WACEA,SAAS,CAAC+yB,MAAV,IACEj4B,4BAAA,CAAC0vC,oBAAD;AACEN,MAAAA,GAAG,EAAElqC,SAAS,CAACgZ;AACfhZ,MAAAA,SAAS,EAAEA;KAFb,CAFJ;AAQD,GAZD,CAFJ,CA9BF,CADF;AAiDD,CApEM;;;AC/BP,MAuBaqrC,WAAW,GAA+B;MAAC;AACtDC,IAAAA,UADsD;AAEtDpU,IAAAA,SAFsD;AAGtDt8B,IAAAA;AAHsD;MAInDi5B;;AAEH,QAAM;AAAEp0B,IAAAA,QAAQ,GAAG;AAAb,MAAoBo0B,KAA1B;AACA,QAAM0X,SAAS,GAAG/rC,cAAc,CAACC,QAAD,CAAhC;AACA,QAAM;AAAEF,IAAAA,OAAF;AAAW3F,IAAAA;AAAX,MAAuB2xC,SAA7B;;AACA,QAAMC,SAAS,gBAAQ3X,KAAR,EAAkB0X,SAAlB,CAAf;;AAEA,SAAOhsC,OAAO,GACZzE,4BAAA,wBAAA,MAAA,EACG,OAAOwwC,UAAP,KAAsB,UAAtB,GACCA,UAAU,CAACE,SAAD,CADX,GAGC1wC,4BAAA,CAAC2vC,UAAD;AAAYvT,IAAAA,SAAS,EAAEA;KAAesU,UAAtC,CAJJ,EAMG5wC,QAAQ,IAAIA,QAAQ,CAAChB,OAAD,CANvB,CADY,GASV,IATJ;AAUD,CArBM;;MCnBMssC,YAAY,GAAgCrS,KAAK;AAC5D8R,EAAAA,eAAe,CAAC9R,KAAD,CAAf;AAEA,SAAO,IAAP;AACD,CAJM;;MCAMmM,mBAAmB,GAAuCnM,KAAK;AAC1E8L,EAAAA,sBAAsB,CAAC9L,KAAD,CAAtB;AAEA,SAAO,IAAP;AACD,CAJM;;MCAMj4B,YAAY,GAAgCi4B,KAAK;AAC5D0M,EAAAA,eAAe,CAAC1M,KAAD,CAAf;AAEA,SAAO,IAAP;AACD,CAJM;;ACCP,MAAM4X,OAAO,GAAWxxC,KAAR,IACd4F,OAAO,CAAC5F,KAAD,CADT;;AAGA,MAAMyxC,WAAW,GAAI9xC,OAAD,IAAqB,CAAC2F,OAAD,EAAmBuL,KAAnB;AACvC;AACAvL,EAAAA,OAAO,CAAC,YAAD,CAAP,GAAwBuL,KAAK,KAAKlR,OAAlC;AAEA,SAAO2F,OAAP;AACD,CALD;;AAOA,MAAMosC,MAAM,GAAIpsC,OAAD,IAA6BA,OAAO,CAACib,WAAR,EAA5C;;;AAGA,AAAO,MAAMoxB,eAAe,GAAG,CAC7BnsC,QAD6B,EAE7BosC,YAF6B,KAI7BhxC,aAAO,CACL,MACE4E,QAAQ,CACLlE,GADH,CACOowC,MADP,EAEGvnC,MAFH,CAEUqnC,OAFV,EAGGlwC,GAHH,CAGOmwC,WAAW,CAACG,YAAD,CAHlB,CAFG,EAML,CAACpsC,QAAD,EAAWosC,YAAX,CANK,CAJF;;MCLMC,kBAAkB,GAAsC;MAAC;AACpErsC,IAAAA,QADoE;AAEpEL,IAAAA,MAFoE;AAGpExF,IAAAA;AAHoE;AAKpE,QAAMmyC,YAAY,GAAGH,eAAe,CAACnsC,QAAD,EAAW7F,OAAX,CAApC;AAEA,SAAOkB,4BAAA,CAACc,YAAD;AAAc6D,IAAAA,QAAQ,EAAEssC;AAAc3sC,IAAAA,MAAM,EAAEA;GAA9C,CAAP;AACD,CARM;;MCTMkhC,gBAAgB,GAAoCzM,KAAK;AACpEsM,EAAAA,mBAAmB,CAACtM,KAAD,CAAnB;AAEA,SAAO,IAAP;AACD,CAJM;;;ACJP,SAagBmY;MAAa;AAC3BC,IAAAA,OAD2B;AAE3B7sC,IAAAA,MAF2B;AAG3BqgC,IAAAA;AAH2B;MAIxByM;;AAEH,QAAM;AAAE3wC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMK,KAAK,GAAG8iC,WAAW,CACvB;AACEE,IAAAA,OAAO,EAAE,MAAM,IAAIoN,qBAAJ,CAAcF,OAAd,EAAuBC,eAAvB,CADjB;AAEElN,IAAAA,UAAU,EAAEjjC,KAAK,IAAIR,GAAG,CAAC0kC,OAAJ,CAAYlkC,KAAZ,MAAuB,CAAC,CAAxB,IAA6BR,GAAG,CAAC2kC,WAAJ,CAAgBnkC,KAAhB;AAFpD,GADuB,EAKvB,CAACkwC,OAAD,CALuB,CAAzB;AAQA3M,EAAAA,aAAa,CAACvjC,KAAD,EAAQqD,MAAR,CAAb;AACAogC,EAAAA,kBAAkB,CAACzjC,KAAD,EAAQ0jC,WAAR,CAAlB;AAEA,SAAO1jC,KAAP;AACD;;MC7BYowC,SAAS,GAA6BtY,KAAK;AACtDmY,EAAAA,YAAY,CAACnY,KAAD,CAAZ;AAEA,SAAO,IAAP;AACD,CAJM;;ACKP,MAAMuY,aAAa,GAAG,GAAtB;AAEA,MAAaC,aAAa,GAAiC;MAAC;AAC1DhG,IAAAA,MAD0D;AAE1DnP,IAAAA,SAF0D;AAG1DoU,IAAAA,UAH0D;AAI1DlsC,IAAAA,MAJ0D;AAK1DknC,IAAAA,UAL0D;AAM1DoE,IAAAA,YAN0D;AAO1DC,IAAAA;AAP0D;AAS1D,QAAM,CAAClrC,QAAD,EAAWgnC,cAAX,IAA6BL,gBAAgB,CAAC;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAD,CAAnD;AAEA,SACExrC,4BAAA,CAACuwC,WAAD;AACEnU,IAAAA,SAAS,EAAEA;AACXz3B,IAAAA,QAAQ,EAAEA;AACVtF,IAAAA,KAAK,EAAEssC;AACP6E,IAAAA,UAAU,EAAEA;AACZZ,IAAAA,YAAY,EAAEA;AACdC,IAAAA,YAAY,EAAEA;GANhB,EAQG/wC,OAAO,IACNkB,4BAAA,CAACgxC,kBAAD;AACErsC,IAAAA,QAAQ,EAAEA;AACV7F,IAAAA,OAAO,EAAEA;AACTwF,IAAAA,MAAM,EAAEA,MAAM,IAAIgtC;GAHpB,CATJ,CADF;AAkBD,CA7BM;;;;ACFP,MAAME,OAAO,GAAIlvB,QAAD,IAAsBmvB,UAAtB,8GACPnvB,QADO,EAENA,QAFM,CAAhB;;AAKA,MAAMovB,QAAQ,GAAIpvB,QAAD,IAAsBmvB,UAAtB,iHACRnvB,QADQ,EAENA,QAFM,CAAjB;;AAKA,MAAMqvB,UAAU,GAAIrvB,QAAD,IAAsBmvB,UAAtB,mHACPnvB,QADO,EAETA,QAFS,CAAnB;;AAKA,MAAMsvB,WAAW,GAAItvB,QAAD,IAAsBmvB,UAAtB,oHACRnvB,QADQ,EAETA,QAFS,CAApB;;AAWA,AAAO,MAAMuvB,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,SAD4B,EAE5BxvB,QAF4B;AAAA,MAC5BwvB,SAD4B;AAC5BA,IAAAA,SAD4B,GACL,aADK;AAAA;;AAAA,MAE5BxvB,QAF4B;AAE5BA,IAAAA,QAF4B,GAET,MAFS;AAAA;;AAAA,SAGzBmvB,UAHyB,mHAI1BK,SAAS,KAAK,UAAd,IAA4BN,OAAO,CAAClvB,QAAD,CAJT,EAK1BwvB,SAAS,KAAK,WAAd,IAA6BJ,QAAQ,CAACpvB,QAAD,CALX,EAM1BwvB,SAAS,KAAK,aAAd,IAA+BH,UAAU,CAACrvB,QAAD,CANf,EAO1BwvB,SAAS,KAAK,cAAd,IAAgCF,WAAW,CAACtvB,QAAD,CAPjB;AAAA,CAAvB;;;ACzBP,MAAMyvB,kBAAkB,gBAAGN,UAAH,wOAAxB;AAcA,AAAO,MAAMO,SAAS,gBAAG5E,eAAM,CAACS,UAAD,CAAT,wGAClBkE,kBADkB,CAAf;;AAKP,AAAO,MAAME,UAAU,gBAAG7E,eAAM,CAACS,UAAD,CAAT,wGACnBkE,kBADmB,CAAhB;;AAKP,AAAO,MAAMG,SAAS,gBAAG9E,eAAM,CAACS,UAAD,CAAT,wGAClBkE,kBADkB,CAAf;AAKP;;AACA,AAAO,MAAMI,aAAa,gBAAG/E,eAAM,CAACS,UAAD,CAAT,wGACtBkE,kBADsB,CAAnB;;AAKP,AAAO,MAAMK,UAAU,gBAAGhF,eAAM,CAACS,UAAD,CAAT,wGAGnBkE,kBAHmB,CAAhB;;AAOP,MAAaM,UAAU,gBAAGjF,eAAM,CAACC,GAAV,sVAAhB;AAcP,MAAaiF,WAAW,gBAAGlF,eAAM,CAACC,GAAV,2QAGJ;AAAA,MAAC;AAAEkF,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,KAAzC;AAAA,CAHI,EAKpB;AAAA,MAAC;AAAET,IAAAA;AAAF,GAAD;AAAA,SAAmBD,cAAc,CAACC,SAAD,CAAjC;AAAA,CALoB,EAOpBO,UAPoB,EAQH;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,GAAzC;AAAA,CARG,EASJ;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,GAAH,GAAS,QAApC;AAAA,CATI,EAUF;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,QAAH,GAAc,KAAzC;AAAA,CAVE,CAAjB;;MC9DMC,OAAO,GAAG;AACrB,SACExyC,4BAAA,CAACqyC,UAAD,MAAA,EACEryC,4BAAA,CAACoyC,UAAD;AAAYnI,IAAAA,OAAO,EAAE;GAArB,CADF,CADF;AAKD,CANM;;MCAMwI,MAAM,GAAG;AACpB,SACEzyC,4BAAA,CAACqyC,UAAD,MAAA,EACEryC,4BAAA,CAACkyC,SAAD;AAAWjI,IAAAA,OAAO,EAAE;GAApB,CADF,CADF;AAKD,CANM;;MCAMyI,UAAU,GAAG;AACxB,SACE1yC,4BAAA,CAACqyC,UAAD,MAAA,EACEryC,4BAAA,CAACmyC,aAAD;AAAelI,IAAAA,OAAO,EAAE;GAAxB,CADF,CADF;AAKD,CANM;;;MCKM0I,oBAAoB,gBAAGvF,eAAM,CAACC,GAAV,oHAA1B;AAIP,MAAauF,QAAQ,gBAAGxF,eAAM,CAACC,GAAV,gJAEX;AAAA,MAAC;AAAEwF,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA0BA,KAAK,CAACC,WAAhC;AAAA,CAFW,CAAd;AAKP,MAAaC,aAAa,gBAAG5F,eAAM,CAACC,GAAV,mLAAnB;AAQP,MAAa4F,eAAe,gBAAG7F,eAAM,CAAC,MAAD,CAAT,4LAArB;AAOP,MAAa8F,cAAc,gBAAG9F,eAAM,CAACC,GAAV,ofAOf;AAAA,MAAC;AAAEziC,IAAAA;AAAF,GAAD;AAAA,SACRA,kBAAkB,GAAG,SAAH,GAAe,SADzB;AAAA,CAPe,EASP;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAChBA,kBAAkB,GAAG,MAAH,GAAY,MADd;AAAA,CATO,EAgBvBgoC,QAhBuB,EAgBVK,eAhBU,EAoBvBL,QApBuB,EAqBZ;AAAA,MAAC;AAAEO,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,IAArC;AAAA,CArBY,EAwBvBF,eAxBuB,EAyBZ;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,CAArC;AAAA,CAzBY,EA6BrBP,QA7BqB,EA6BRK,eA7BQ,EAkCvBhD,gBAlCuB,CAApB;AAuCP,MAAMmD,qBAAqB,gBAAG3B,UAAH,8MAMH;AAAA,MAAC;AAAEoB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACC,WAApC;AAAA,CANG,CAA3B;AAUA,MAAaC,YAAY,gBAAGnG,eAAM,CAACoG,IAAV,mRAOrB;AAAA,MAAC;AAAEvJ,IAAAA;AAAF,GAAD;AAAA,SAAiB,CAAC,CAACA,OAAF,IAAamJ,qBAA9B;AAAA,CAPqB,CAAlB;AAeP,MAAaK,gBAAgB,gBAAGrG,eAAM,CAACiF,UAAD,CAAT,mHAAtB;AAIP,MAAaqB,kBAAkB,gBAAGtG,eAAM,CAACC,GAAV,mTAAxB;AAcP,MAAasG,eAAe,gBAAGvG,eAAM,CAACC,GAAV,8LAArB;AAOP,MAAauG,6BAA6B,gBAAGxG,eAAM,CAACC,GAAV,0MAAnC;AAOP,MAAawG,cAAc,gBAAGzG,eAAM,CAACoG,IAAV,uTAMR;AAAA,MAAC;AAAEX,IAAAA,KAAK,EAAE;AAAEiB,MAAAA;AAAF;AAAT,GAAD;AAAA,SAAiCA,YAAY,CAACC,MAA9C;AAAA,CANQ,EAOL;AAAA,MAAC;AAAElB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACW,OAApC;AAAA,CAPK,EAQhB;AAAA,MAAC;AAAEnB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA4BA,OAAO,CAACY,WAApC;AAAA,CARgB,CAApB;AAYP,MAAaC,wBAAwB,gBAAG9G,eAAM,CAACC,GAAV,0OACvB;AAAA,MAAC;AAAE8G,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,UAAH,GAAgB,UAAzC;AAAA,CADuB,EAGxB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,CAAH,GAAO,CAAhC;AAAA,CAHwB,EAIrB;AAAA,MAAC;AAAEA,IAAAA;AAAF,GAAD;AAAA,SAAkBA,OAAO,GAAG,SAAH,GAAe,QAAxC;AAAA,CAJqB,CAA9B;AASP,MAAaC,wBAAwB,gBAAGhH,eAAM,CAAC8G,wBAAD,CAAT,0JAA9B;AAKP,MAAaG,kBAAkB,gBAAGjH,eAAM,CAACoG,IAAV,+FAAxB;AAEP,MAAac,yBAAyB,gBAAGlH,eAAM,CAACC,GAAV,ycAOlCgH,kBAPkC,EAiBb;AAAA,MAAC;AAAExB,IAAAA,KAAK,EAAE;AAAEQ,MAAAA;AAAF;AAAT,GAAD;AAAA,SAA2BA,OAAO,CAACC,WAAnC;AAAA,CAjBa,EAsBhCe,kBAtBgC,CAA/B;AA4BP,MAAaE,qBAAqB,gBAAGnH,eAAM,CAACC,GAAV,uLAMtB;AAAA,MAAC;AAAEmH,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBC,IAAAA;AAAxB,GAAD;AAAA,SACRA,UAAU,GAAG,CAACD,SAAS,IAAI,CAAd,IAAmB,CAAtB,GAA0BD,SAD5B;AAAA,CANsB,EAQpB;AAAA,MAAC;AAAEE,IAAAA;AAAF,GAAD;AAAA,SAAqBA,UAAU,GAAG,MAAH,GAAY,QAA3C;AAAA,CARoB,CAA3B;AAYP,MAAaC,mBAAmB,gBAAGvH,eAAM,CAACC,GAAV,+MAAzB;;AAQP,MAAMuH,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACz1C,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAesyC,UAAf,qeAkBPtyC,KAAK,GAAG,CAlBD,EAmBfA,KAnBe,EAoBdA,KApBc;AAAA,CAA5B;;AAwBA,MAAM01C,0BAA0B,GAAG,SAA7BA,0BAA6B,CAAC11C,KAAD;AAAA,MAACA,KAAD;AAACA,IAAAA,KAAD,GAAS,CAAT;AAAA;;AAAA,SAAesyC,UAAf,8jBAQvBtyC,KARuB,EAwBrBA,KAxBqB,EAyBhB8R,IAAI,CAACc,KAAL,CAAW5S,KAAK,GAAG,CAAnB,CAzBgB;AAAA,CAAnC;;AA8BA,MAAM21C,0BAA0B,gBAAGrD,UAAH,wIAAhC;AAKA,MAAasD,aAAa,gBAAG3H,eAAM,CAACC,GAAV,8RAEd;AAAA,MAAC;AAAEzmC,IAAAA;AAAF,GAAD;AAAA,SACRkgB,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEblgB,SAFa,CAAf,GAII,IAJJ,GAKI,CANI;AAAA,CAFc,EASV;AAAA,MAAC;AAAEzH,IAAAA;AAAF,GAAD;AAAA,SAAgB,OAAOA,KAAP,KAAiB,QAAjB,GAA4B,MAA5B,GAAqCA,KAArD;AAAA,CATU,EAab;AAAA,MAAC;AAAEg0C,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,IAAH,GAAU,CAArC;AAAA,CAba,EAetB;AAAA,MAAC;AAAEh0C,IAAAA,KAAF;AAASyH,IAAAA;AAAT,GAAD;AAAA,SACAkgB,eAAe,CAAC,MAAD,EAASlgB,SAAT,CAAf,IACAguC,mBAAmB,CAACz1C,KAAD,CAFnB;AAAA,CAfsB,EAmBtB;AAAA,MAAC;AAAEA,IAAAA,KAAF;AAASyH,IAAAA;AAAT,GAAD;AAAA,SACAkgB,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEblgB,SAFa,CAAf,IAGKiuC,0BAA0B,CAAC11C,KAAD,CAJ/B;AAAA,CAnBsB,CAAnB;AA0BP,MAAa61C,cAAc,gBAAG5H,eAAM,CAAC2H,aAAD,CAAT,kPAApB;AAUP,MAAME,oBAAoB,gBAAGxD,UAAH,iOAMtBuD,cANsB,CAA1B;AAYA,MAAME,2BAA2B,gBAAGzD,UAAH,qOAK7BuD,cAL6B,CAAjC;AAWA,MAAaG,mBAAmB,gBAAG/H,eAAM,CAACC,GAAV,0LAAzB;AAOP,MAAa+H,yBAAyB,gBAAGhI,eAAM,CAACC,GAAV,uIAA/B;AAKP,MAAagI,wBAAwB,gBAAGjI,eAAM,CAACC,GAAV,2IAA9B;AAKP,MAAaiI,uBAAuB,gBAAGlI,eAAM,CAACC,GAAV,+HAA7B;AAIP,MAAakI,qBAAqB,gBAAGnI,eAAM,CAACkI,uBAAD,CAAT,2FAA3B;AAEP,MAAME,0BAA0B,gBAAG/D,UAAH,oLAI5BsD,aAJ4B,CAAhC;AASA,MAAMU,sBAAsB,gBAAGhE,UAAH,qYAQxB;AAAA,MAAC;AAAEiE,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAM,IAAIF,0BAA1B;AAAA,CARwB,EAUxBT,aAVwB,EAqBtB;AAAA,MAAC;AAAEnuC,IAAAA;AAAF,GAAD;AAAA,SACAkgB,eAAe,CACb,CAAC,aAAD,EAAgB,cAAhB,CADa,EAEblgB,SAFa,CAAf,IAGKkuC,0BAJL;AAAA,CArBsB,CAA5B;AA6BA,MAAaa,cAAc,gBAAGvI,eAAM,CAACC,GAAV,iNAYvB;AAAA,MAAC;AAAEqI,IAAAA;AAAF,GAAD;AAAA,SAAgBA,MAAM,IAAIT,oBAA1B;AAAA,CAZuB,EAavB;AAAA,MAAC;AAAEW,IAAAA;AAAF,GAAD;AAAA,SAAuBA,aAAa,IAAIV,2BAAxC;AAAA,CAbuB,EAcvB;AAAA,MAAC;AAAEW,IAAAA;AAAF,GAAD;AAAA,SAAkBA,QAAQ,IAAIJ,sBAA9B;AAAA,CAduB,CAApB;AAiBP,MAAaK,uBAAuB,gBAAG1I,eAAM,CAACC,GAAV,oXAIhC0H,aAJgC,CAA7B;AAiBP,MAAagB,eAAe,gBAAG3I,eAAM,CAACC,GAAV,+MAArB;AAQP,MAAa2I,oBAAoB,gBAAG5I,eAAM,CAACC,GAAV,2aAA1B;AAsBP,MAAa4I,oBAAoB,gBAAG7I,eAAM,CAAC4H,cAAD,CAAT,6JAA1B;AAMP,MAAakB,qBAAqB,gBAAG9I,eAAM,CAACC,GAAV,mLAA3B;AAOP,MAAa8I,sBAAsB,gBAAG/I,eAAM,CAACC,GAAV,2IAA5B;;MC7bM+I,YAAY,GAAG,CAAC70C,MAAD,EAAyB80C,UAAzB,EAA+CnhB,YAA/C;AAC1B,QAAMohB,oBAAoB,GAAG7S,YAAM,CAAqB,IAArB,CAAnC;AACA,QAAMzO,YAAY,GAAGj1B,aAAO,CAAC,MAAMw2C,UAAG,EAAV,EAAc,EAAd,CAA5B;AAEA,QAAMC,OAAO,GAAGt3C,iBAAW,CAAC;AAC1B81B,IAAAA,YAAY,CAACyhB,KAAb,CAAmBH,oBAAoB,CAACx3C,OAAxC;AACD,GAF0B,EAExB,CAACk2B,YAAD,CAFwB,CAA3B;AAIA,QAAM0hB,UAAU,GAAGx3C,iBAAW,CAAC,MAAM81B,YAAY,CAACR,GAAb,EAAP,EAA2B,CAACQ,YAAD,CAA3B,CAA9B;AAEA,QAAM2hB,aAAa,GAAGz3C,iBAAW,CAC/B;QAAC;AACCs1B,MAAAA,GADD;AAECS,MAAAA,EAFD;AAGC2hB,MAAAA,SAHD;AAIC1hB,MAAAA;AAJD;AAWCH,IAAAA,mBAAmB,CAAC;AAClBC,MAAAA,YADkB;AAElBzzB,MAAAA,MAAM,EAAEq1C,SAAS,IAAIr1C,MAFH;AAGlBizB,MAAAA,GAHkB;AAIlBS,MAAAA,EAJkB;AAKlBC,MAAAA;AALkB,KAAD,CAAnB;AAOD,GAnB8B,EAoB/B,CAACF,YAAD,EAAezzB,MAAf,CApB+B,CAAjC;AAuBA,QAAMs1C,mBAAmB,GAAG33C,iBAAW,CACrC,CAAC43C,KAAD,EAA8B33C,KAA9B;;;AACE,UAAM;AAAEi2B,MAAAA,IAAF;AAAQ7oB,MAAAA;AAAR,QAAmBhL,MAAzB;AACA,UAAMgtB,QAAQ,GAAGpvB,KAAK,YAAYoR,WAAjB,GAAyBpR,KAAK,CAACqR,QAAN,CAAe,MAAf,CAAzB,GAAkDrR,KAAnE;;AAEA,UAAMy3C,SAAS,gBACVG,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAe11C,MAAf,CAAX,CADU;AAEbgL,MAAAA,MAAM,EAAE8pC,UAAU,GACd7jB,qBADc,GAEdrC,oBAAoB,CAAC2mB,KAAD,CAApB,GACA7U,uBAAuB,CAAC11B,MAAD,CADvB,GAEAA;AANS,MAAf;;AASA,QAAIuqC,KAAK,CAAC3R,OAAN,CAAc,GAAd,MAAuB,CAAC,CAA5B,EAA+B;AAAA;;AAC7B,YAAMja,KAAK,GAAG4rB,KAAK,CAACjwC,KAAN,CAAY,GAAZ,CAAd;;AAEA,+BAAI+vC,SAAS,CAAC1rB,KAAK,CAAC,CAAD,CAAN,CAAb,aAAI,kBAAsBA,KAAK,CAAC,CAAD,CAA3B,CAAJ,EAAqC;AACnC0rB,QAAAA,SAAS,CAAC1rB,KAAK,CAAC,CAAD,CAAN,CAAT,CAAoBA,KAAK,CAAC,CAAD,CAAzB,IAAgCqD,QAAhC;AACD,OAFD,MAEO;AACLqoB,QAAAA,SAAS,CAAC1rB,KAAK,CAAC,CAAD,CAAN,CAAT,gBACK0rB,SAAS,CAAC1rB,KAAK,CAAC,CAAD,CAAN,CADd;AAEE,WAACA,KAAK,CAAC,CAAD,CAAN,GAAYqD;AAFd,WAGMrD,KAAK,CAAC,CAAD,CAAL,KAAa,YAAb,GACA;AAAE7jB,UAAAA,IAAI,EAAEuvC,SAAS,CAAChiC,UAAV,CAAqBvN,IAA7B;AAAmCoX,UAAAA,EAAE,EAAE;AAAvC,SADA,GAEAyM,KAAK,CAAC,CAAD,CAAL,KAAa,QAAb,GACA;AAAEzM,UAAAA,EAAE,EAAE;AAAN,SADA,GAEA,EAPN;AASD;AACF,KAhBD,MAgBO;AACLm4B,MAAAA,SAAS,CAACE,KAAD,CAAT,GAAmBvoB,QAAnB;AACD;;AAEDooB,IAAAA,aAAa,CAAC;AACZniB,MAAAA,GAAG,EAAEjtB,iBAAiB,CAAC6tB,IAAD,CADV;AAEZwhB,MAAAA,SAFY;AAGZ3hB,MAAAA,EAAE,2BAAE2hB,SAAS,CAAChiC,UAAZ,qBAAE,sBAAsBvN,IAHd;AAIZ6tB,MAAAA;AAJY,KAAD,CAAb;AAOA,wBAAY0hB,SAAZ;AAAuBxhB,MAAAA,IAAI,EAAEJ,YAAY,CAACR,GAAb;AAA7B;AACD,GA1CoC,EA2CrC,CAACQ,YAAD,EAAe2hB,aAAf,EAA8BN,UAA9B,EAA0C90C,MAA1C,CA3CqC,CAAvC;AA8CA,SAAO;AACL21C,IAAAA,MAAM,EAAEZ,oBADH;AAELE,IAAAA,OAFK;AAGLE,IAAAA,UAHK;AAILC,IAAAA,aAJK;AAKLE,IAAAA;AALK,GAAP;AAOD,CAtFM;;;ACPP,MAAMM,kBAAkB,gBAAG/J,eAAM,CAACC,GAAV,oHAAxB;AAIA,MAAM+J,cAAc,gBAAGhK,eAAM,CAACC,GAAV,wUAUhB;AAAA,MAAC;AAAEgK,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEC,UAAf,CAAD,sBAA8CD,YAAY,CAACC,UAD3D;AAAA,CAVgB,EAYhB;AAAA,MAAC;AAAED,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEE,UAAf,CAAD,sBAA8CF,YAAY,CAACE,UAD3D;AAAA,CAZgB,EAchB;AAAA,MAAC;AAAEF,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEG,SAAf,CAAD,qBAA4CH,YAAY,CAACG,SADzD;AAAA,CAdgB,EAgBhB;AAAA,MAAC;AAAEH,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEI,SAAf,CAAD,gBAAuCJ,YAAY,CAACI,SADpD;AAAA,CAhBgB,EAkBhB;AAAA,MAAC;AAAEJ,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEK,QAAf,CAAD,qBAEE,OAAOL,YAAY,CAACK,QAApB,KAAiC,QAAjC,GACIL,YAAY,CAACK,QADjB,GAEOL,YAAY,CAACK,QAFpB,OAFF,CADA;AAAA,CAlBgB,EAyBhB;AAAA,MAAC;AAAEL,IAAAA;AAAF,GAAD;AAAA,SACA,CAAC,EAACA,YAAD,YAACA,YAAY,CAAEM,SAAf,CAAD,IACA,CAAC,EAACN,YAAD,YAACA,YAAY,CAAEO,SAAf,CADD,8BAEwBP,YAAY,CAACO,SAFrC,WAEoDP,YAAY,CAACM,SAFjE,MADA;AAAA,CAzBgB,CAApB;AAgCA,MAAaE,SAAS,gBAAuBC,UAAI,CAC/C;MAAC;AAAEtjB,IAAAA,GAAF;AAAOS,IAAAA,EAAP;AAAW1zB,IAAAA,MAAX;AAAmB2L,IAAAA,KAAnB;AAA0B6qC,IAAAA,IAA1B;AAAgCV,IAAAA,YAAhC;AAA8ChB,IAAAA,UAA9C;AAA0DnhB,IAAAA,YAA1D;AAAwE+U,IAAAA;AAAxE;AACC,QAAM;AAAEiN,IAAAA,MAAF;AAAUV,IAAAA,OAAV;AAAmBE,IAAAA,UAAnB;AAA+BC,IAAAA;AAA/B,MAAiDP,YAAY,CACjE70C,MADiE,EAEjE80C,UAFiE,EAGjEnhB,YAHiE,CAAnE;AAMA,QAAM8iB,cAAc,GAAG94C,iBAAW,CAAC;AACjC+qC,IAAAA,OAAO,QAAP,YAAAA,OAAO,CAAGyM,UAAU,EAAb,eACFn1C,MADE,EAED0zB,EAAE,GACF;AACErgB,MAAAA,UAAU,eACJrT,MAAM,CAACqT,UADH;AAERvN,QAAAA,IAAI,EAAE4tB;AAFE;AADZ,KADE,GAOF,EATC,EAAP;AAWD,GAZiC,EAY/B,CAACA,EAAD,EAAKyhB,UAAL,EAAiBzM,OAAjB,EAA0B1oC,MAA1B,CAZ+B,CAAlC;AAcA,QAAM02C,YAAY,GAAGl4C,aAAO,CAC1B,MACEC,4BAAA,CAACuzC,YAAD;AACE7P,IAAAA,GAAG,EAAEwT;AACLhqC,IAAAA,KAAK,EAAEA;AACP+8B,IAAAA,OAAO,EAAEA,OAAO,GAAG+N,cAAH,GAAoBvnC;GAHtC,CAFwB,EAQ1B,CAACymC,MAAD,EAAShqC,KAAT,EAAgB+8B,OAAhB,EAAyB+N,cAAzB,CAR0B,CAA5B;AAWAnzC,EAAAA,eAAS,CAAC;AACR2xC,IAAAA,OAAO;AACR,GAFQ,EAEN,CAACA,OAAD,CAFM,CAAT;AAIA3xC,EAAAA,eAAS,CAAC;AACR8xC,IAAAA,aAAa,CAAC;AAAEniB,MAAAA,GAAF;AAAOS,MAAAA,EAAP;AAAW2hB,MAAAA,SAAS,EAAEr1C,MAAtB;AAA8B2zB,MAAAA;AAA9B,KAAD,CAAb;AACD,GAFQ,EAEN,CAACV,GAAD,EAAMjzB,MAAN,EAAc0zB,EAAd,EAAkB0hB,aAAlB,EAAiCzhB,YAAjC,CAFM,CAAT;AAIA,SAAO6iB,IAAI,GACT/3C,4BAAA,CAACm3C,kBAAD,MAAA,EACGc,YADH,EAEEj4C,4BAAA,CAACo3C,cAAD;AAAgBC,IAAAA,YAAY,EAAEA;GAA9B,EAA6CU,IAA7C,CAFF,EAGG,CAAC,EAACV,YAAD,YAACA,YAAY,CAAEM,SAAf,CAAD,IAA6B,CAAC,EAACN,YAAD,YAACA,YAAY,CAAEO,SAAf,CAA9B,IACC53C,4BAAA,CAACo3C,cAAD;AACEC,IAAAA,YAAY,eACPA,YADO;AAEVM,MAAAA,SAAS,EAAElnC,SAFD;AAGVmnC,MAAAA,SAAS,EAAEnnC;AAHD;GADd,EAOGsnC,IAPH,CAJJ,CADS,GAiBTE,YAjBF;AAmBD,CA5D8C,CAA1C;;MC9BMC,oBAAoB,GAK5B;;;MAAC;AAAE32C,IAAAA,MAAF;AAAUyO,IAAAA,KAAV;AAAiBiD,IAAAA,IAAI,GAAG,EAAxB;AAA4BykC,IAAAA,QAAQ,GAAG;AAAvC;AACJ,QAAMxiB,YAAY,GAAG9tB,sBAAsB,CACzC7F,MAAM,CAAC8U,SADkC,CAA3C;AAGA,QAAM8hC,iBAAiB,GAAGjjB,YAAY,IAAIllB,KAAK,KAAKS,SAApD;AAEA,QAAM4F,SAAS,GACb8hC,iBAAiB,GACZ,0BAAA52C,MAAM,CAAC8U,SAAP,CAAkD1I,MAAlD,CAAyDqC,KAAzD,4CACG7Q,KADH,KAEAoC,MAAM,CAAC8U,SAAP,CAAkD7O,YAHtC,GAIbjG,MAAM,CAAC8U,SALb;AAOA,QAAMzC,WAAW,GAAGshB,YAAY,GAAG7e,SAAH,GAAe9U,MAAM,CAACqS,WAAtD;AAEA,QAAMwkC,SAAS,GAAG;AAChB/wC,IAAAA,IAAI,EAAE,gBADU;AAEhB4L,IAAAA,IAFgB;AAGhB1G,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CAHQ;AAIhByjB,IAAAA,KAAK,EAAE,CAJS;AAKhBpb,IAAAA,UAAU,EAAE;AACV6J,MAAAA,EAAE,EAAE,WADM;AAEVpI,MAAAA,SAFU;AAGVzC,MAAAA,WAHU;AAIVE,MAAAA,WAAW,EAAE,CAJH;AAKVzM,MAAAA,IAAI,EAAE;AALI;AALI,GAAlB;AAcA,SACErH,4BAAA,CAAC63C,SAAD;AACErjB,IAAAA,GAAG,EAAE/B;AACLlxB,IAAAA,MAAM,EAAG62C;AACTljB,IAAAA,YAAY,EAAEA;AACd6iB,IAAAA,IAAI,EAAE;AACNV,IAAAA,YAAY,eACP91C,MAAM,CAAC82C,WADA;AAEVX,MAAAA,QAAQ,EACLA,QAAkC,4BAAIn2C,MAAM,CAAC82C,WAAX,qBAAI,oBAAoBX,QAAxB;AAH3B;GALd,CADF;AAaD,CA/CM;;MCPMY,YAAY,GAMpB;MAAC;AAAEjxC,IAAAA,IAAF;AAAQ9F,IAAAA,MAAR;AAAgB0R,IAAAA,IAAhB;AAAsBuhB,IAAAA,GAAtB;AAA2B6hB,IAAAA;AAA3B;AACJ,QAAMkC,aAAa,GAAGx4C,aAAO,CAAC,MAC5BC,4BAAA,CAAC8+B,MAAD;AAAQv9B,IAAAA,MAAM,EAAEA;AAA0B0R,IAAAA,IAAI,EAAEA;GAAhD,CAD2B,EAE1B,CAAC1R,MAAD,EAAS0R,IAAT,CAF0B,CAA7B;;AAIA,UAAQ5L,IAAR;AACE,SAAK,gBAAL;AACE,aAAOmtB,GAAG,GACRx0B,4BAAA,CAAC63C,SAAD;AACErjB,QAAAA,GAAG,EAAEA;AACLvhB,QAAAA,IAAI,EAAEA;AACNojC,QAAAA,UAAU,EAAEA;AACZ90C,QAAAA,MAAM,EAAEquB,uBAAuB,CAACruB,MAAD;OAJjC,CADQ,GAQRg3C,aARF;;AAUF;AACE,aAAOA,aAAP;AAbJ;AAeD,CA1BM;;MCUMC,oBAAoB,gBAG5BV,UAAI,CAAC;MAAC;AAAEv2C,IAAAA,MAAF;AAAUyO,IAAAA;AAAV;;AACT,MAAIrF,eAAe,CAACpJ,MAAD,CAAnB,EAA6B;AAC3B,WACEvB,4BAAA,CAACm2C,sBAAD,MAAA,EACEn2C,4BAAA,CAACk4C,oBAAD;AACE32C,MAAAA,MAAM,EAAEA;AACRyO,MAAAA,KAAK,EAAEA;KAFT,CADF,CADF;AAQD;;AAED,SACEhQ,4BAAA,CAACs4C,YAAD;AACE/2C,IAAAA,MAAM,EAAE+/B,iBAAiB,CAAC//B,MAAD;AACzB0R,IAAAA,IAAI,EAAEuc,mBAAmB,CAACjuB,MAAD,CAAnB,IAA+BouB;AACrCtoB,IAAAA,IAAI,EAAE9F,MAAM,CAAC8F;AACbmtB,IAAAA,GAAG,EACDjtB,iBAAiB,CACdhG,MAAyB,CAAC6zB,IADZ;AAInBihB,IAAAA,UAAU;GATZ,CADF;AAaD,CAzBQ,CAHF;;ACPA,MAAMoC,mBAAmB,GAAiC;AAAA,MAAC;AAAE75B,IAAAA,SAAF;AAAa85B,IAAAA,gBAAb;AAA+BC,IAAAA,kBAA/B;AAAmDC,IAAAA;AAAnD,GAAD;AAAA,SAC/D54C,4BAAA,wBAAA,MAAA,EACG,CAAC,CAAC44C,kBAAF,IACC54C,4BAAA,CAACq0C,kBAAD,MAAA,EACEr0C,4BAAA,CAACiwC,gBAAD;AAAYhG,IAAAA,OAAO,EAAE2O;GAArB,EACE54C,4BAAA,CAAC64C,iCAAD,MAAA,CADF,CADF,CAFJ,EAQG,CAAC,CAACF,kBAAF,IACC34C,4BAAA,CAACq0C,kBAAD,MAAA,EACEr0C,4BAAA,CAACiwC,gBAAD;AACE6I,IAAAA,QAAQ,EAAE,CAACJ;AACXzO,IAAAA,OAAO,EAAE,MAAM0O,kBAAN,oBAAMA,kBAAkB,CAAG/5B,SAAH;GAFnC,EAIE5e,4BAAA,CAAC+4C,0BAAD,MAAA,CAJF,CADF,CATJ,CAD+D;AAAA,CAA1D;;ACPA,MAAMC,qBAAqB,GAAG,CACnC/6B,UADmC,EAEnC5Y,SAFmC;AAInC,MAAI,CAACA,SAAL,EAAgB,OAAO,IAAP;AAEhB,QAAM6I,aAAa,GAAG+R,6BAA6B,CAAC5a,SAAD,CAAnD;AAEA,MAAIH,SAAS,GAAmB+Y,UAAU,CAAC5Z,IAAX,CAC9B;AAAA,QAAC;AAAE6Z,MAAAA;AAAF,KAAD;AAAA,WAAcA,IAAI,KAAKhQ,aAAvB;AAAA,GAD8B,CAAhC;;AAIA,MAAI,CAAChJ,SAAL,EAAgB;AACd,QAAIgJ,aAAa,KAAK,OAAtB,EAA+B;AAC7BhJ,MAAAA,SAAS,GAAG;AACVgZ,QAAAA,IAAI,EAAE,OADI;AAEViD,QAAAA,KAAK,EAAE,YAFG;AAGV9Z,QAAAA,IAAI,EAAEqW,iBAAa,CAACkK;AAHV,OAAZ;AAKD,KAND,MAMO;AACL,aAAO,IAAP;AACD;AACF;;AAED,SAAO1iB,SAAP;AACD,CAzBM;;ACJA,MAAM+zC,cAAc,GAAG,CAC5BxqB,eAD4B,EAE5ByqB,aAF4B,KAGhB,CAAC,EAACA,aAAD,YAACA,aAAa,CAAEzyC,QAAf,CAAwBgoB,eAAxB,CAAD,CAHR;;ACKP,MAAM0qB,YAAY,GAAG,CAACC,MAAD,EAAiBppC,KAAjB;AACnB,QAAMqpC,QAAQ,GAAGD,MAAM,CAACvyC,KAAP,CAAa,GAAb,CAAjB;AAEA,SACE7G,4BAAA,CAACs5C,cAAD;AAAUlK,IAAAA,GAAG,EAAEp/B;GAAf,EACEhQ,4BAAA,CAAC4yC,QAAD;AAAU1lC,IAAAA,KAAK,EAAEksC;GAAjB,EACGC,QAAQ,CAAC,CAAD,CADX,EAEEr5C,4BAAA,CAAC2yC,oBAAD,MAAA,EAAuB0G,QAAQ,CAAC,CAAD,CAA/B,CAFF,CADF,EAKGrpC,KAAK,KAAK,CAAV,IAAehQ,4BAAA,CAACgzC,aAAD,MAAA,CALlB,CADF;AASD,CAZD;;AAcA,AAAO,MAAMuG,aAAa,GAAG;MAAC;AAC5BrsC,IAAAA,KAD4B;AAE5B8C,IAAAA,KAF4B;AAG5BE,IAAAA;AAH4B;;AAS5B,MAAI,CAAChD,KAAL,EAAY;AACV,WAAOlN,4BAAA,CAAC4yC,QAAD,MAAA,EAAWvjC,IAAI,CAACe,CAAL,CAAO,OAAP,EAAgB;AAAEV,MAAAA,EAAE,EAAE;AAAN,KAAhB,CAAX,CAAP;AACD;;AAED,QAAM8pC,OAAO,GAAGtsC,KAAH,oBAAGA,KAAK,CAAErG,KAAP,CAAa,KAAb,CAAhB;AACA,QAAM4yC,cAAc,GAAG,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAE36C,MAAT,MAAoB,CAA3C;;AAEA,MAAI,CAACqR,MAAD,IAAYF,KAAK,IAAIypC,cAAzB,EAA0C;AACxC,WAAOz5C,4BAAA,CAAC4yC,QAAD;AAAU1lC,MAAAA,KAAK,EAAEA;KAAjB,EAAyBA,KAAzB,CAAP;AACD;;AAED,MAAI,CAAC8C,KAAD,IAAUypC,cAAd,EAA8B;AAC5B,WACEz5C,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAAC4yC,QAAD;AAAU1lC,MAAAA,KAAK,EAAC;KAAhB,UAAA,CADF,EAEElN,4BAAA,CAACgzC,aAAD,MAAA,CAFF,EAGGmG,YAAY,CAACjsC,KAAD,CAHf,CADF;AAOD;;AAED,SAAOlN,4BAAA,wBAAA,MAAA,EAAGw5C,OAAO,CAAC/4C,GAAR,CAAY04C,YAAZ,CAAH,CAAP;AACD,CA/BM;;MCKMO,cAAc,GAA4B;;;MAAC;AACtDvtB,IAAAA,SADsD;AAEtD+sB,IAAAA,aAFsD;AAGtDS,IAAAA,kBAHsD;AAItDhB,IAAAA,kBAJsD;AAKtD7wB,IAAAA;AALsD;AAOtD,MAAI,EAACqE,SAAD,gCAACA,SAAS,CAAEjjB,KAAZ,sCAAC,iBAAkBpJ,QAAnB,aAAC,sBAA4BjB,MAA7B,CAAJ,EAAyC,OAAO,IAAP;AAEzC,QAAMof,UAAU,GAAGF,kBAAkB,CAACoO,SAAS,CAACnO,eAAX,CAArC;AAEA,SACEhe,4BAAA,CAAC0zC,kBAAD,MAAA,EACGvnB,SAAS,CAACjjB,KAAV,CAAgBpJ,QAAhB,CAAyBW,GAAzB,CAA6B,CAAC8rB,UAAD,EAAavc,KAAb;;;AAC5B,UAAM9K,SAAS,GAAG8zC,qBAAqB,CACrC/6B,UADqC,EAErCsO,UAAU,CAAClnB,SAF0B,CAAvC;AAKA,QAAI,CAACH,SAAL,EAAgB,OAAO,IAAP;AAEhB,UAAMupB,eAAe,GAAGJ,qBAAqB,CAC3CnpB,SAAS,CAACgZ,IADiC,EAE3ChZ,SAAS,CAACmC,IAFiC,EAG3CynB,sBAAsB,CACpBvC,UAAU,CAAChrB,MADS,EAEpBgrB,UAAU,CAACrf,KAFS,EAGpB,IAAI9H,uBAAJ,CAA4BmnB,UAAU,CAAClnB,SAAvC,CAHoB,CAHqB,CAA7C;AAUA,UAAMu0C,UAAU,GAAGL,aAAa,CAAC;AAC/BrsC,MAAAA,KAAK,EAAEue,gBAAgB,CAACc,UAAU,CAAClnB,SAAZ,CAAhB,GACHqnB,6BAA6B,CAC3BH,UAD2B,EAI3BrnB,SAJ2B,EAK3B4iB,WAL2B,EAM3B9X,KAN2B,CAD1B,GASHyc,qBAAqB,CAAC;AACpBpnB,QAAAA,SAAS,EAAEknB,UAAU,CAAClnB,SADF;AAEpBH,QAAAA,SAFoB;AAGpB4iB,QAAAA;AAHoB,OAAD,CAVM;AAe/B9X,MAAAA,KAf+B;AAgB/BE,MAAAA,MAAM,EACJ,0BAAA8oC,qBAAqB,CAAC/6B,UAAD,EAAasO,UAAU,CAAClnB,SAAxB,CAArB,2CAAyDgC,IAAzD,MACA;AAlB6B,KAAD,CAAhC;AAqBA,WACErH,4BAAA,CAACkzC,cAAD;AACE9D,MAAAA,GAAG,EAAEp/B;AACLmjC,MAAAA,QAAQ,EAAE8F,cAAc,CACtBxqB,eADsB,EAEtByqB,aAFsB,oBAEtBA,aAAa,CAAG/sB,SAAS,CAACjO,IAAb,CAFS;AAIxB+rB,MAAAA,OAAO,EAAE,MACP0P,kBADO,oBACPA,kBAAkB,CAAGxtB,SAAS,CAACjO,IAAb,EAAmBuQ,eAAnB;KAPtB,EAUEzuB,4BAAA,CAACizC,eAAD,MAAA,EACEjzC,4BAAA,CAACw4C,oBAAD;AACEj3C,MAAAA,MAAM,EAAEgrB,UAAU,CAAChrB;KADrB,CADF,CAVF,EAeGq4C,UAfH,EAgBE55C,4BAAA,CAACy4C,mBAAD;AAAqB75B,MAAAA,SAAS,EAAEuN,SAAS,CAACjO;AAAMy6B,MAAAA,kBAAkB,EAAEA;KAApE,CAhBF,CADF;AAoBD,GA3DA,CADH,CADF;AAgED,CA3EM;;MCjBMkB,0BAA0B,GAGlC;MAAC;AAAEjzC,IAAAA,SAAF;AAAaoJ,IAAAA;AAAb;AACJ,QAAM;AAAEI,IAAAA;AAAF,MAAQ0pC,2BAAc,CAAC,OAAD,CAA5B;AACA,QAAMpE,MAAM,GAAG5uB,eAAe,CAAC,MAAD,EAASlgB,SAAT,CAA9B;AACA,QAAMgvC,aAAa,GAAG9uB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClgB,SAAlC,CAArC;AACA,QAAMmzC,aAAa,GAAGjzB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClgB,SAAlC,CAArC;AAEA,SACE5G,4BAAA,CAAC4zC,6BAAD,MAAA,EACGgC,aAAa,IAAImE,aAAjB,GACInE,aAAa,GAAGxlC,CAAC,CAAC,aAAD,CAAJ,GAAsBA,CAAC,CAAC,aAAD,CADxC,GAEGslC,MAAM,GAAGtlC,CAAC,CAAC,YAAD,CAAJ,GAAqBA,CAAC,CAAC,aAAD,CAHlC,EAIG,CAAC,CAACJ,KAAF,IAAWhQ,4BAAA,CAAC6zC,cAAD,MAAA,EAAiB7jC,KAAjB,CAJd,CADF;AAQD,CAjBM;;ACgBP,MAAMgqC,uBAAuB,GAAG,CAAC9sC,KAAD,EAAgB+sC,QAAhB;AAC9B,MAAI/sC,KAAK,CAACzG,QAAN,CAAe,KAAf,CAAJ,EAA2B;AACzB,UAAMuI,MAAM,GAAG9B,KAAH,oBAAGA,KAAK,CAAErG,KAAP,CAAa,KAAb,CAAf;AAEA,WAAOozC,QAAQ,KAAK,KAAb,GAAqBjrC,MAArB,oBAAqBA,MAAM,CAAG,CAAH,CAA3B,GAAmCA,MAAnC,oBAAmCA,MAAM,CAAG,CAAH,CAAhD;AACD;;AAED,MAAI9B,KAAK,CAACzG,QAAN,CAAe,GAAf,CAAJ,EAAyB;AACvB,UAAMuI,MAAM,GAAG9B,KAAH,oBAAGA,KAAK,CAAErG,KAAP,CAAa,GAAb,CAAf;AAEA,WAAOmI,MAAM,CAAChI,IAAP,CAAY,IAAZ,CAAP;AACD;;AAED,SAAOkG,KAAK,CAACrG,KAAN,CAAY,GAAZ,EAAiBxC,IAAjB,CAAsBqiB,SAAtB,KAAoCxZ,KAApC,IAA6C,EAApD;AACD,CAdD;;AAgBA,MAAagtC,eAAe,GAA6B;;;MAAC;AACxDC,IAAAA,QADwD;AAExDhG,IAAAA,OAFwD;AAGxDxmC,IAAAA,MAHwD;AAIxDT,IAAAA,KAJwD;AAKxDtG,IAAAA,SALwD;AAMxDsyC,IAAAA;AANwD;AAQxD,QAAM;AAAE9oC,IAAAA;AAAF,MAAQ0pC,2BAAc,CAAC,OAAD,CAA5B;AACA,QAAMM,aAAa,GAAG,CAAC,GAAGzsC,MAAJ,CAAtB;AACA,QAAMkhB,KAAK,GAAGurB,aAAa,CAACC,GAAd,EAAd;AACA,QAAM3E,MAAM,GAAG5uB,eAAe,CAAC,MAAD,EAASlgB,SAAT,CAA9B;AACA,QAAMgvC,aAAa,GAAG9uB,eAAe,CAAC,CAAC,aAAD,EAAgB,cAAhB,CAAD,EAAkClgB,SAAlC,CAArC;AACA,QAAM0zC,QAAQ,GAAGN,uBAAuB,oBAACI,aAAa,CAAC,CAAD,CAAd,qBAAC,gBAAkBltC,KAAnB,EAA0B,KAA1B,CAAxC;AACA,QAAMqtC,QAAQ,GAAGP,uBAAuB,mBAACI,aAAa,CAACA,aAAa,CAACv7C,MAAd,GAAuB,CAAxB,CAAd,qBAAC,eAAyCqO,KAA1C,EAAiD,KAAjD,CAAxC;AAEA,QAAMstC,aAAa,GAAGt7C,iBAAW,CAAEuvB,eAAD,IAA8BA,eAAe,GAC3EyqB,aAD2E,oBAC3EA,aAAa,CAAEjsC,IAAf,CAAoB5H,SAAS,IAAIopB,eAAe,CAAChoB,QAAhB,CAAyBpB,SAAzB,CAAjC,CAD2E,GAE3E,KAF6B,EAEtB,CAAC6zC,aAAD,CAFsB,CAAjC;AAIA,SACEl5C,4BAAA,CAACo0C,wBAAD;AAA0B1Q,IAAAA,GAAG,EAAEyW;AAAUhG,IAAAA,OAAO,EAAEA;GAAlD,EACG,CAAC,CAACjnC,KAAF,IAAWlN,4BAAA,CAAC20C,mBAAD,MAAA,EAAsBznC,KAAtB,CADd,EAEGwoC,MAAM,GACL11C,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACm1C,mBAAD,MAAA,EACEn1C,4BAAA,CAACo1C,yBAAD,MAAA,EACEp1C,4BAAA,CAAC21C,cAAD;AAAgB/uC,IAAAA,SAAS,EAAEA;AAAW8uC,IAAAA,MAAM;GAA5C,EACG0E,aAAa,CAAC35C,GAAd,CAAkB,CAACtB,KAAD,EAAQ6Q,KAAR,KACjBhQ,4BAAA,CAAC+0C,aAAD;AACE3F,IAAAA,GAAG,OAAKjwC,KAAK,CAAC+N,KAAX,GAAmB8C;AACtB9C,IAAAA,KAAK,EAAE/N,KAAK,CAAC+N;AACb/N,IAAAA,KAAK,EAAEA,KAAK,CAACuN;AACb9F,IAAAA,SAAS,EAAEA;AACXusC,IAAAA,QAAQ,EAAEqH,aAAa,CAACr7C,KAAK,CAACsvB,eAAP;GALzB,CADD,CADH,CADF,CADF,EAcEzuB,4BAAA,CAACq1C,wBAAD,MAAA,EACEr1C,4BAAA,CAACs1C,uBAAD,MAAA,sBAA0B8E,aAAa,CAAC,CAAD,CAAvC,qBAA0B,iBAAkBltC,KAA5C,CADF,EAEElN,4BAAA,CAACu1C,qBAAD,MAAA,qBAAwB6E,aAAa,CAACA,aAAa,CAACv7C,MAAd,GAAuB,CAAxB,CAArC,qBAAwB,gBAAyCqO,KAAjE,CAFF,CAdF,CADF,EAoBElN,4BAAA,CAACm1C,mBAAD,MAAA,EACEn1C,4BAAA,CAACo1C,yBAAD,MAAA,EACEp1C,4BAAA,CAAC21C,cAAD;AAAgB/uC,IAAAA,SAAS,EAAEA;AAAW8uC,IAAAA,MAAM;GAA5C,EACE11C,4BAAA,CAACg1C,cAAD;AACE9nC,IAAAA,KAAK,EAAEkD,CAAC,CAAC,OAAD;AACRjR,IAAAA,KAAK,EAAE0vB,KAAF,oBAAEA,KAAK,CAAEniB;AACd9F,IAAAA,SAAS,EAAEA;AACXusC,IAAAA,QAAQ,EAAEqH,aAAa,CAAC3rB,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CADF,CADF,CADF,EAWEzuB,4BAAA,CAACq1C,wBAAD,MAAA,EACEr1C,4BAAA,CAACu1C,qBAAD,MAAA,EAAwBnlC,CAAC,CAAC,OAAD,CAAzB,CADF,CAXF,CApBF,CADK,GAqCHwlC,aAAa,GACf51C,4BAAA,CAAC21C,cAAD;AAAgB/uC,IAAAA,SAAS,EAAEA;AAAWgvC,IAAAA,aAAa;GAAnD,EACGwE,aAAa,CAAC35C,GAAd,CAAkB,CAACtB,KAAD,EAAQ6Q,KAAR,KACjBhQ,4BAAA,CAAC+0C,aAAD;AACE3F,IAAAA,GAAG,OAAKjwC,KAAK,CAAC+N,KAAX,GAAmB8C;AACtB9C,IAAAA,KAAK,EAAE/N,KAAK,CAAC+N;AACb/N,IAAAA,KAAK,EAAEA,KAAK,CAACuN;AACb9F,IAAAA,SAAS,EAAEA;AACXusC,IAAAA,QAAQ,EAAEqH,aAAa,CAACr7C,KAAK,CAACsvB,eAAP;GALzB,EAOG,CAAC,CAACze,KAAD,IAAUA,KAAK,KAAKoqC,aAAa,CAACv7C,MAAd,GAAuB,CAA5C,KAAkDM,KAAK,CAAC+N,KAP3D,CADD,CADH,EAYElN,4BAAA,CAACg1C,cAAD;AACE9nC,IAAAA,KAAK,EAAEkD,CAAC,CAAC,OAAD;AACRjR,IAAAA,KAAK,EAAE0vB,KAAF,oBAAEA,KAAK,CAAEniB;AACd9F,IAAAA,SAAS,EAAEA;AACXusC,IAAAA,QAAQ,EAAEqH,aAAa,CAAC3rB,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,EAMGre,CAAC,CAAC,OAAD,CANJ,CAZF,CADe,GAuBfpQ,4BAAA,CAAC21C,cAAD;AAAgB/uC,IAAAA,SAAS,EAAEA;GAA3B,EACE5G,4BAAA,CAAC81C,uBAAD,MAAA,EACGsE,aAAa,CAAC35C,GAAd,CAAkB,CAACtB,KAAD,EAAQ6Q,KAAR,KACjBhQ,4BAAA,CAAC+0C,aAAD;AACE3F,IAAAA,GAAG,OAAKjwC,KAAK,CAAC+N,KAAX,GAAmB8C;AACtB9C,IAAAA,KAAK,EAAE/N,KAAK,CAAC+N;AACb/N,IAAAA,KAAK,EAAEA,KAAK,CAACuN;AACb9F,IAAAA,SAAS,EAAEA;AACXusC,IAAAA,QAAQ,EAAEqH,aAAa,CAACr7C,KAAK,CAACsvB,eAAP;GALzB,CADD,CADH,CADF,EAYEzuB,4BAAA,CAACg1C,cAAD;AACE9nC,IAAAA,KAAK,EAAEkD,CAAC,CAAC,OAAD;AACRjR,IAAAA,KAAK,EAAE0vB,KAAF,oBAAEA,KAAK,CAAEniB;AACd9F,IAAAA,SAAS,EAAEA;AACXusC,IAAAA,QAAQ,EAAEqH,aAAa,CAAC3rB,KAAD,oBAACA,KAAK,CAAEJ,eAAR;GAJzB,CAZF,CA9DJ,EAkFG,QAAOI,KAAP,oBAAOA,KAAK,CAAEniB,cAAd,MAAiC,QAAjC,KAA8C4tC,QAAQ,IAAIC,QAA1D,KACCv6C,4BAAA,CAAC+1C,eAAD,MAAA,EACE/1C,4BAAA,CAACg2C,oBAAD,MAAA,EACEh2C,4BAAA,MAAA,MAAA,EAAMs6C,QAAN,CADF,EAEEt6C,4BAAA,MAAA,MAAA,EAAMu6C,QAAN,CAFF,CADF,EAKEv6C,4BAAA,CAACi2C,oBAAD,MAAA,KAAA,CALF,CAnFJ,CADF;AA8FD,CAlHM;;MCdMwE,eAAe,GAA6B;MAAC;AACxDN,IAAAA,QADwD;AAExDhG,IAAAA,OAFwD;AAGxDv1B,IAAAA,SAHwD;AAIxDrd,IAAAA,MAAM,EAAEm5C,aAJgD;AAKxD9zC,IAAAA,SALwD;AAMxD+G,IAAAA,MANwD;AAOxDqC,IAAAA,KAAK,EAAEif,YAPiD;AAQxDX,IAAAA,aARwD;AASxD4qB,IAAAA,aATwD;AAUxDS,IAAAA;AAVwD;AAYxD,QAAMzpC,MAAM,GAAGoe,aAAa,KAAK,UAAjC;AACA,QAAMonB,MAAM,GAAG5uB,eAAe,CAC5B,MAD4B,EAE5BlgB,SAF4B,CAA9B;AAIA,QAAMgvC,aAAa,GAAG9uB,eAAe,CACnC,CAAC,aAAD,EAAgB,cAAhB,CADmC,EAEnClgB,SAFmC,CAArC;AAIA,QAAMmzC,aAAa,GAAGjzB,eAAe,CACnC,CAAC,aAAD,EAAgB,cAAhB,CADmC,EAEnClgB,SAFmC,CAArC;AAKA,QAAM8F,cAAc,GAAG3M,aAAO,CAC5B,MACGysB,GAAG,CAACkuB,aAAD,EAAgB9zC,SAAhB,CAFsB,EAK5B,CAAC8zC,aAAD,EAAgB9zC,SAAhB,CAL4B,CAA9B;AAQA,QAAM+zC,YAAY,GAAGz7C,iBAAW,CAC9B,QAAqC8Q,KAArC;;;QAAC;AAAEzO,MAAAA,MAAF;AAAU2L,MAAAA,KAAV;AAAiBuhB,MAAAA;AAAjB;AACC,QAAI,CAACltB,MAAL,EAAa,OAAO,IAAP;AAEb,UAAMqJ,oBAAkB,GAAGgwC,kBAAwB,CAACr5C,MAAD,EAASqF,SAAT,CAAnD;AACA,UAAMzH,KAAK,GAAIoI,iBAAiB,CAC5BmF,cAD4B,6CAC5BA,cAAc,CAAEiB,MAAhB,CAAuBqC,KAAvB,CAD4B,qBAC5B,sBAA+B7Q,KADH,CAAjB,KAC8BuN,cAD9B,oBAC8BA,cAAc,CAAElF,YAD9C,CAAf;AAIA,WACExH,4BAAA,CAACkzC,cAAD;AACE9D,MAAAA,GAAG,EAAEngB,YAAY,GAAG/hB,KAAf,GAAuB8C;AAC5BmjC,MAAAA,QAAQ,EAAE8F,cAAc,CAACxqB,eAAD,EAAkByqB,aAAlB;AACxBtuC,MAAAA,kBAAkB,EAAEA;AACpBq/B,MAAAA,OAAO,EAAE,MAAM0P,kBAAN,oBAAMA,kBAAkB,CAAG/6B,SAAH,EAAc6P,eAAd;KAJnC,EAMGinB,MAAM,IAAIE,aAAV,IAA2BmE,aAA3B,GACC/5C,4BAAA,CAAC21C,cAAD;AACE/uC,MAAAA,SAAS,EAAEA;AACX8uC,MAAAA,MAAM,EAAEA;AACRE,MAAAA,aAAa,EAAEA;AACfmE,MAAAA,aAAa,EAAEA;AACflE,MAAAA,QAAQ;KALV,EAOE71C,4BAAA,CAAC+0C,aAAD;AACE3F,MAAAA,GAAG,OAAKliC,KAAL,GAAa8C;AAChB9C,MAAAA,KAAK,EAAEA;AACP/N,MAAAA,KAAK,EAAEA;AACPyH,MAAAA,SAAS,EAAEA;KAJb,CAPF,CADD,GAgBC5G,4BAAA,CAACizC,eAAD,MAAA,EACEjzC,4BAAA,CAACw4C,oBAAD;AACExoC,MAAAA,KAAK,EAAEA;AACPzO,MAAAA,MAAM,EACJqJ,oBAAkB,GAAG8vC,aAAH,GAAsC7vC,kBAAkB,CAACtJ,MAAD,EAAS,IAAT;KAH9E,CADF,CAtBJ,EA+BGg4C,aAAa,CAAC;AAAErsC,MAAAA,KAAF;AAAS8C,MAAAA,KAAT;AAAgBE,MAAAA;AAAhB,KAAD,CA/BhB,CADF;AAmCD,GA5C6B,EA6C9B,CACEtJ,SADF,EAEEqoB,YAFF,EAGEiqB,aAHF,EAIExD,MAJF,EAKEE,aALF,EAMEmE,aANF,EAOErtC,cAPF,EAQEguC,aARF,EASExqC,MATF,EAUEypC,kBAVF,EAWE/6B,SAXF,CA7C8B,CAAhC;AA4DA,SACE5e,4BAAA,CAACk0C,wBAAD;AAA0BxQ,IAAAA,GAAG,EAAEyW;AAAUhG,IAAAA,OAAO,EAAEA;GAAlD,EACGxmC,MAAM,CAAClN,GAAP,CAAWk6C,YAAX,CADH,CADF;AAKD,CAnGM;;MCFME,aAAa,GAA2B;;;MAAC;AACpDj8B,IAAAA,SADoD;AAEpDrd,IAAAA,MAFoD;AAGpDqF,IAAAA,SAHoD;AAIpDk0C,IAAAA,UAJoD;AAKpDnsB,IAAAA,UALoD;AAMpDuqB,IAAAA,aANoD;AAOpDS,IAAAA,kBAPoD;AAQpDhB,IAAAA,kBARoD;AASpDC,IAAAA,kBAToD;AAUpD1zC,IAAAA,SAVoD;AAWpD4iB,IAAAA,WAXoD;AAYpD9X,IAAAA,KAZoD;AAapD+qC,IAAAA;AAboD;AAepD,QAAM;AAAE3qC,IAAAA;AAAF,MAAQ0pC,2BAAc,CAAC,OAAD,CAA5B;AACA,QAAM,CAACpF,UAAD,EAAasG,cAAb,IAA+BnO,SAAS,EAA9C;AACA,QAAM,CAACoO,MAAD,EAASC,OAAT,IAAoBjO,OAAO,EAAjC;AACA,QAAM,CAACkO,MAAD,EAASC,OAAT,IAAoBnO,OAAO,EAAjC;AAEA,MAAI,CAACruB,SAAD,IAAc,CAAC1Z,SAAnB,EAA8B,OAAO,IAAP;AAE9B,QAAMm2C,aAAa,GAAGzxC,wBAAwB,CAACrI,MAAD,CAAxB,GACjBA,MAAiC,CAACoM,MAAlC,CAAyCqC,KAAzC,CADiB,GACsDzO,MAD5E;AAGA,SACEvB,4BAAA,CAACs0C,yBAAD;AAA2BoE,IAAAA,gBAAgB,EAAE,CAAC,EAACQ,aAAD,qCAACA,aAAa,CAAGt6B,SAAH,CAAd,aAAC,sBAA4B/f,MAA7B;GAA9C,EACEmB,4BAAA,CAAC2zC,eAAD,MAAA,EACGzuC,SAAS,CAACic,KAAV,IAAmBjc,SAAS,CAACgZ,IADhC,EAEEle,4BAAA,CAACy4C,mBAAD;AACE75B,IAAAA,SAAS,EAAEA;AACX85B,IAAAA,gBAAgB,EAAE,CAAC,EAACQ,aAAD,sCAACA,aAAa,CAAGt6B,SAAH,CAAd,aAAC,uBAA4B/f,MAA7B;AACnB85C,IAAAA,kBAAkB,EAAEA;AACpBC,IAAAA,kBAAkB,EAAEA;GAJtB,CAFF,CADF,EAUE54C,4BAAA,CAAC65C,0BAAD;AACEjzC,IAAAA,SAAS,EAAEA;AACXoJ,IAAAA,KAAK,EAAE+qC,KAAK,IAAI/qC,KAAK,KAAKS,SAAnB,GAA+BsqC,KAAK,GAAG/qC,KAAvC,GAA+C;GAFxD,CAVF,EAcEhQ,4BAAA,CAACu0C,qBAAD;AACEC,IAAAA,SAAS,EAAE4G,OAAF,oBAAEA,OAAO,CAAEE;AACpB7G,IAAAA,SAAS,EAAEyG,OAAF,oBAAEA,OAAO,CAAEI;AACpB5G,IAAAA,UAAU,EAAEA;GAHd,EAKE10C,4BAAA,CAACy6C,eAAD;AACEN,IAAAA,QAAQ,EAAEc;AACV9G,IAAAA,OAAO,EAAEO;AACT91B,IAAAA,SAAS,EAAEA;AACXrd,IAAAA,MAAM,EAAE85C;AACRnC,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAGt6B,SAAH;AAC5B+6B,IAAAA,kBAAkB,EAAEA;AACpB/yC,IAAAA,SAAS,EAAEA;AACX0nB,IAAAA,aAAa,EAAEppB,SAAS,CAACmC;AACzB2I,IAAAA,KAAK,EAAEA;AACPrC,IAAAA,MAAM,EAAEqhB,wBAAwB,CAC9B9pB,SAD8B,EAE9B0B,SAF8B,EAG9Bk0C,UAH8B,EAI9BnsB,UAJ8B,EAK9B0sB,aAL8B,EAM9BvzB,WAN8B,EAO9B9X,KAP8B,EAQ9BI,CAAC,CAAC,OAAD,CAR6B;GAVlC,CALF,EA0BEpQ,4BAAA,CAACk6C,eAAD;AACEC,IAAAA,QAAQ,EAAEgB;AACVhH,IAAAA,OAAO,EAAE,CAACO;AACVwE,IAAAA,aAAa,EAAEA,aAAF,oBAAEA,aAAa,CAAGt6B,SAAH;AAC5BhY,IAAAA,SAAS,EAAEA;AACX+G,IAAAA,MAAM,EAAE+gB,wBAAwB,CAC9BxpB,SAD8B,EAE9BypB,UAF8B,EAG9B7G,WAH8B,EAI9B9X,KAJ8B,EAK9BI,CAAC,CAAC,OAAD,CAL6B;GALlC,CA1BF,CAdF,EAsDEpQ,4BAAA,CAACk2C,qBAAD;AAAuBjM,IAAAA,OAAO,EAAE+Q;GAAhC,EACGtG,UAAU,GAAGtkC,CAAC,CAAC,MAAD,CAAJ,GAAeA,CAAC,CAAC,MAAD,CAD7B,CAtDF,CADF;AA4DD,CArFM;;;ACvBP,MAWamrC,MAAM,gBAAoBzD,UAAI,CACzC;;;MAAC;AAAE3rB,IAAAA,SAAF;AAAarE,IAAAA,WAAb;AAA0BoxB,IAAAA,aAA1B;AAAyCS,IAAAA,kBAAzC;AAA6DhB,IAAAA,kBAA7D;AAAiFC,IAAAA;AAAjF;MAAwG4C;;AACvG,MAAI,CAACrvB,SAAL,EAAgB,OAAO,IAAP;;AAEhB,0BAAIA,SAAS,CAACjjB,KAAd,sCAAI,iBAAiBpJ,QAArB,aAAI,sBAA2BjB,MAA/B,EAAuC;AACrC,WACEmB,4BAAA,CAAC05C,cAAD;AACEvtB,MAAAA,SAAS,EAAEA;AACXrE,MAAAA,WAAW,EAAEA;AACboxB,MAAAA,aAAa,EAAEA;AACfS,MAAAA,kBAAkB,EAAEA;AACpBhB,MAAAA,kBAAkB,EAAEA;AACpBC,MAAAA,kBAAkB,EAAEA;KANtB,CADF;AAUD;;AAED,QAAM36B,UAAU,GAAGF,kBAAkB,CAACoO,SAAS,CAACnO,eAAX,CAArC;AAEA,QAAMy9B,WAAW,GAAG17C,aAAO,CAAC;;;AAC1B,UAAM+6C,UAAU,GAAG1uB,qBAAqB,CAACD,SAAS,CAACE,YAAX,CAAxC;AACA,UAAM0M,KAAK,GAAG;AACZna,MAAAA,SAAS,EAAEuN,SAAS,CAACjO,IADT;AAEZ3c,MAAAA,MAAM,uBAAE4qB,SAAS,CAACjjB,KAAZ,qBAAE,kBAAiB3H,MAFb;AAGZu5C,MAAAA,UAAU,EAAEA,UAHA;AAIZhzB,MAAAA,WAAW,EAAEA,WAJD;AAKZoxB,MAAAA,aAAa,EAAEA,aALH;AAMZS,MAAAA,kBAAkB,EAAEA,kBANR;AAOZhB,MAAAA,kBAAkB,EAAEA,kBAPR;AAQZC,MAAAA,kBAAkB,EAAEA;AARR,KAAd;;AAWA,QAAI,qBAAAzsB,SAAS,CAACjjB,KAAV,+BAAiB3H,MAAjB,IAA2BqI,wBAAwB,CAACuiB,SAAS,CAACjjB,KAAV,CAAgB3H,MAAjB,CAAvD,EAAiF;AAAA;;AAC/E,YAAMoM,MAAM,wBAAGwe,SAAS,CAACjjB,KAAb,8CAAG,kBAAiB3H,MAApB,+CAAG,sBAAyBoM,MAA5B,qBAAG,uBAAiCE,MAAjC,CAAwC,CAACmB,MAAD,EAASzN,MAAT,EAAiByO,KAAjB;AACrD,eAAO,CAACkf,oBAAoB,CAAC3tB,MAAD,EAASu5C,UAAT,EAA4C9qC,KAA5C,CAArB,EAA2F,GAAGhB,MAA9F,CAAP;AACD,OAFc,EAEZ,EAFY,CAAf;AAIA,aACEhP,4BAAA,wBAAA,MAAA,EACG2N,MADH,oBACGA,MAAM,CAAElN,GAAR,CAAY,CAACtB,KAAD,EAAQ6Q,KAAR,KAAkB3B,MAAM,CAACsB,IAAP,CAAYxQ,KAAZ,EAAmBsB,GAAnB,CAAuB,CAAC6rB,KAAD,EAAQovB,QAAR;;;AACpD,cAAMzlB,IAAI,GAAG92B,KAAK,CAACmtB,KAAD,CAAlB;AAEA,eACEtsB,4BAAA,CAAC66C,aAAD;AACEzL,UAAAA,GAAG,EAAE,CAACsM,QAAD,EAAW1rC,KAAX,EAAkBhJ,IAAlB,CAAuB,GAAvB;AACLgJ,UAAAA,KAAK,EAAEimB,IAAF,oBAAEA,IAAI,CAAEjmB;AACb+qC,UAAAA,KAAK,EAAEptC,MAAF,oBAAEA,MAAM,CAAE9O;AACfqG,UAAAA,SAAS,EAAE8zC,qBAAqB,CAAC/6B,UAAD,EAAagY,IAAb,qCAAaA,IAAI,CAAEtoB,MAAN,CAAa,CAAb,CAAb,qBAAa,cAAiBtI,SAA9B;AAChCuB,UAAAA,SAAS,EAAE0lB;AACXqC,UAAAA,UAAU,EAAEsH;WACR8C,OACAyiB,KARN,CADF;AAYD,OAf8B,CAA9B,CADH,CADF;AAoBD;;AAED,UAAM7sB,UAAU,GAAGS,aAAa,CAACjD,SAAD,CAAhC;AAEA,QAAI,CAACwC,UAAL,EAAiB,OAAO,IAAP;AAEjB,WACE3uB,4BAAA,wBAAA,MAAA,EACGqO,MAAM,CAACsB,IAAP,CAAYgf,UAAZ,EAAwBluB,GAAxB,CAA4B,CAAC6rB,KAAD,EAAQovB,QAAR;;;AAC3B,YAAMzlB,IAAI,GAAGtH,UAAU,CAACrC,KAAD,CAAvB;AAEA,aACEtsB,4BAAA,CAAC66C,aAAD;AACEzL,QAAAA,GAAG,EAAE,CAACsM,QAAD,EAAWzlB,IAAI,CAACjmB,KAAhB,EAAuBhJ,IAAvB,CAA4B,GAA5B;AACLgJ,QAAAA,KAAK,EAAEimB,IAAI,CAACjmB;AACZ9K,QAAAA,SAAS,EAAE8zC,qBAAqB,CAAC/6B,UAAD,EAAagY,IAAb,sCAAaA,IAAI,CAAEtoB,MAAN,CAAa,CAAb,CAAb,qBAAa,eAAiBtI,SAA9B;AAChCuB,QAAAA,SAAS,EAAE0lB;AACXqC,QAAAA,UAAU,EAAEsH;SACR8C,OACAyiB,KAPN,CADF;AAWD,KAdA,CADH,CADF;AAmBD,GA/D0B,EA+DxB,CAACrvB,SAAD,EAAYrE,WAAZ,EAAyBoxB,aAAzB,EAAwCS,kBAAxC,EAA4DhB,kBAA5D,EAAgFC,kBAAhF,CA/DwB,CAA3B;AAiEA,SACE54C,4BAAA,CAAC0zC,kBAAD,MAAA,EACG+H,WADH,CADF;AAKD,CAzFwC,CAApC;;MCaMp7C,GAAG,GAAuB;MAAC;AACtC+7B,IAAAA,SADsC;AAEtCr5B,IAAAA,QAFsC;AAGtCI,IAAAA,UAHsC;AAItCglC,IAAAA,QAJsC;AAKtCC,IAAAA,QALsC;AAMtCtoC,IAAAA,QANsC;AAOtC6lC,IAAAA,YAPsC;AAQtCz8B,IAAAA;AARsC;AAUtC,QAAM8+B,UAAU,GAAGD,aAAa,EAAhC;AACA,QAAM;AAAEtnC,IAAAA;AAAF,MAAUG,aAAa,EAA7B;AAEA,QAAMmlC,gBAAgB,GAAG7mC,iBAAW,CACjC4tC,KAAD;AACE,QAAInH,YAAY,IAAI0D,oBAAoB,CAAC5oC,GAAD,EAAM;AAAEsC,MAAAA,QAAF;AAAYI,MAAAA;AAAZ,KAAN,CAAxC,EAAyE;AACvEwiC,MAAAA,YAAY,CAACmH,KAAD,CAAZ;AACD;AACF,GALiC,EAMlC,CAACrsC,GAAD,EAAMklC,YAAN,EAAoB5iC,QAApB,EAA8BI,UAA9B,CANkC,CAApC;AASAimC,EAAAA,gBAAgB,CAAC;AAAErmC,IAAAA,QAAF;AAAYI,IAAAA;AAAZ,GAAD,CAAhB;AACA+kC,EAAAA,cAAc,CAACC,QAAD,EAAWC,QAAX,EAAqBrlC,QAArB,EAA+BI,UAA/B,CAAd;AAEAuiC,EAAAA,gBAAgB,CAACK,gBAAD,CAAhB;AAEA,SACE/lC,4BAAA,MAAA;AAAKo8B,IAAAA,SAAS,EAAEA;AAAWsH,IAAAA,GAAG,EAAEsE;AAAY9+B,IAAAA,KAAK,EAAEA;GAAnD,EACGpJ,QADH,CADF;AAKD,CAhCM;;ICGM67C,WAAb;AAAA;;AAAA;;AAAA;;;;;;;AAoHE,uBAAA,GAAiB75C,KAAD;AACd,YAAM2C,OAAO,GAAG,MAAKm3C,UAAL,CAAgB,CAAC,GAAG95C,KAAK,CAAC2C,OAAN,CAAc+R,KAAlB,CAAhB,CAAhB;;AAEA,YAAKvV,KAAL,IAAc,MAAKA,KAAL,CAAWikB,GAAX,CAAezgB,OAAf,CAAd;;AACA,UAAI,MAAKo3C,aAAT,EAAwB;AACtB,cAAKA,aAAL,CAAmB53B,aAAnB,GAAmCxf,OAAnC;AACD;;AACD,YAAKq3C,UAAL,CAAgB,KAAhB,EAAuB,IAAvB;AACD,KARD;;AAUA,uBAAA,GAAgB;AACd,UAAI,MAAKD,aAAL,IAAsB,MAAKA,aAAL,CAAmB53B,aAA7C,EAA4D;AAC1D,cAAKhjB,KAAL,IAAc,MAAKA,KAAL,CAAW4jB,MAAX,CAAkB,MAAKg3B,aAAL,CAAmB53B,aAArC,CAAd;AACD;;AAED,YAAK63B,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD,KAND;;AAQA,+BAAA,GAAwB;AACtBC,MAAAA,UAAU,CAAC;AACT,cAAKD,UAAL,CAAgB,KAAhB,EAAuB,KAAvB;;AACA,cAAKA,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD,OAHS,EAGP,EAHO,CAAV;AAID,KALD;;;AAUD;;AAhJD;AAAA;AAAA,WAKE;AACE,YAAM;AAAEr7C,QAAAA,GAAF;AAAOC,QAAAA,OAAP;AAAgB0iB,QAAAA;AAAhB,UAAsC,KAAK2V,KAAjD;AAEA,WAAK93B,KAAL,GAAa,IAAIH,2BAAJ,EAAb;AACA,WAAKk7C,cAAL,CAAoBv7C,GAApB,EAAyBC,OAAzB,EAAkC0iB,iBAAlC;AACA,WAAK64B,YAAL,CAAkBx7C,GAAlB,EAAuBC,OAAvB,EAAgC0iB,iBAAhC;AAEA,WAAK2V,KAAL,CAAWt4B,GAAX,CAAe4rC,QAAf,CAAwB,KAAKprC,KAA7B;AACA,WAAK66C,UAAL,CAAgB,IAAhB,EAAsB,KAAtB;AACD;AAdH;AAAA;AAAA,WAgBE;AACE,WAAK76C,KAAL,IAAc,KAAK83B,KAAL,CAAWt4B,GAAX,CAAe2kC,WAAf,CAA2B,KAAKnkC,KAAhC,CAAd;AACA,WAAK66C,UAAL,CAAgB,KAAhB,EAAuB,KAAvB;AACA,WAAKI,SAAL;AACA,WAAKC,eAAL;AACD;AArBH;AAAA;AAAA,WAuBE,wBACE17C,GADF,EAEEC,OAFF,EAGE0iB,iBAHF;AAKE,YAAM;AAAEg5B,QAAAA,YAAF;AAAgB/4B,QAAAA,UAAhB;AAA4BC,QAAAA;AAA5B,UAA2C,KAAKyV,KAAtD;AAEA,WAAKsjB,aAAL,GAAqB,IAAIp5B,sBAAJ,CAA2BxiB,GAA3B,EAAgCC,OAAhC,EAAyC;AAC5DwrC,QAAAA,QAAQ,EAAE,KADkD;AAE5DoQ,QAAAA,YAAY,EAAE,IAF8C;AAG5D/6C,QAAAA,MAAM,EAAE66C,YAAY,IAAI9gB,mBAHoC;AAI5DhY,QAAAA,UAJ4D;AAK5Di5B,QAAAA,eAAe,EAAE,GAL2C;AAM5Dn5B,QAAAA,iBAN4D;AAO5DC,QAAAA,UAAU,EAAEA;AAPgD,OAAzC,CAArB;;AAUA,WAAKg5B,aAAL,CAAmB94B,EAAnB,CAAsB,eAAtB,EAAuC,KAAKi5B,aAA5C;AACA,WAAKH,aAAL,CAAmB94B,EAAnB,CAAsB,QAAtB,EAAgC,KAAKk5B,qBAArC;AACD;AA1CH;AAAA;AAAA,WA4CE,sBACEh8C,GADF,EAEEC,OAFF,EAGE0iB,iBAHF;AAKE,YAAM;AAAEg5B,QAAAA,YAAF;AAAgBM,QAAAA,UAAhB;AAA4Br5B,QAAAA;AAA5B,UAA2C,KAAK0V,KAAtD;AAEA,WAAK8iB,aAAL,GAAqB,IAAI11B,qBAAJ,CAA0B1lB,GAA1B,EAA+BC,OAA/B,EAAwC;AAC3DwrC,QAAAA,QAAQ,EAAE,KADiD;AAE3DC,QAAAA,WAAW,EAAE,KAAKlrC,KAFyC;AAG3D07C,QAAAA,cAAc,EAAED,UAAU,IAAIlhB,wBAH6B;AAI3Dj6B,QAAAA,MAAM,EAAE66C,YAAY,IAAI9gB,mBAJmC;AAK3DlY,QAAAA,iBAL2D;AAM3DC,QAAAA;AAN2D,OAAxC,CAArB;AAQA,WAAKw4B,aAAL,CAAmBe,kBAAnB,GAAwC,KAAxC;AACA,WAAKf,aAAL,CAAmBt4B,EAAnB,CAAsB,QAAtB,EAAgC,KAAKiD,aAArC;AACD;AA7DH;AAAA;AAAA,WA+DE;UAAmB;AAAEnD,QAAAA;AAAF;AACjB,YAAM;AAAEA,QAAAA,UAAU,EAAEw5B;AAAd,UAAoC,KAAK9jB,KAA/C;AAEA,UAAI8jB,iBAAiB,KAAKx5B,UAAtB,IAAoCw5B,iBAAxC,EACE,IAAI,KAAKhB,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBx4B,UAAnB,GAAgCw5B,iBAAhC;AACA,aAAKhB,aAAL,CAAmBv1B,mBAAnB;AACD;AACJ;AAvEH;AAAA;AAAA,WAyEE;AACE,UAAI,KAAK+1B,aAAT,EAAwB;AACtB;AACA,aAAKA,aAAL,CAAmBpW,GAAnB,CAAuB,eAAvB,EAAwC,KAAKuW,aAA7C;AACD;;AAED,WAAKX,aAAL,IAAsB,KAAKA,aAAL,CAAmB5V,GAAnB,CAAuB,QAAvB,EAAiC,KAAKzf,aAAtC,CAAtB;AACA,WAAK61B,aAAL,IACE,KAAKA,aAAL,CAAmBpW,GAAnB,CAAuB,QAAvB,EAAiC,KAAKwW,qBAAtC,CADF;AAED;AAlFH;AAAA;AAAA,WAoFE;AACE,aAAO,KAAKJ,aAAZ;AACA,aAAO,KAAKR,aAAZ;AACA,aAAO,KAAK56C,KAAZ;AACD;AAxFH;AAAA;AAAA,WA0FE,oBAAW67C,MAAX,EAA4BC,IAA5B;AACE,UAAI,KAAKV,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBnQ,QAAnB,GAA8B4Q,MAA9B;AACD;;AAED,UAAI,KAAKjB,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmB3P,QAAnB,GAA8B6Q,IAA9B;AACD;AACF;AAlGH;AAAA;AAAA,WAoGE,oBAAWvmC,KAAX;AACE,YAAM;AAAE4lC,QAAAA,YAAF;AAAgB94B,QAAAA,UAAhB;AAA4B7iB,QAAAA;AAA5B,UAAoC,KAAKs4B,KAA/C;AACA,UAAIt0B,OAAJ;;AAEA,UAAIyd,qBAAqB,CAAC1L,KAAD,EAAQ/V,GAAG,CAAC0C,UAAZ,CAAzB,EAAkD;AAChDqT,QAAAA,KAAK,CAAC,CAAD,CAAL,CAASuO,KAAT;AACAtgB,QAAAA,OAAO,GAAG,IAAI+a,eAAJ,CAAYhJ,KAAZ,EAAmB;AAAE3S,UAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAAX,SAAnB,CAAV;AACAY,QAAAA,OAAO,CAAClD,MAAR,GAAiB+hB,UAAU,IAAI0B,iBAA/B;AACD,OAJD,MAIO;AACLvgB,QAAAA,OAAO,GAAG,IAAI6a,iBAAJ,CAAa9I,KAAb,EAAoB;AAAE3S,UAAAA,GAAG,EAAEpD,GAAG,CAACoD;AAAX,SAApB,CAAV;AACAY,QAAAA,OAAO,CAAClD,MAAR,GAAiB66C,YAAY,IAAI9gB,mBAAjC;AACD;;AAED,aAAO72B,OAAP;AACD;AAlHH;AAAA;AAAA,WA6IE;AACE,aAAOzE,4BAAA,MAAA;AAAKkJ,QAAAA,KAAK,EAAE;AAAE8zC,UAAAA,OAAO,EAAE;AAAX;OAAZ,CAAP;AACD;AA/IH;;AAAA;AAAA,EAAiCh9C,cAAK,CAAC04B,SAAvC;;;AC3BA,MAqBaukB,QAAQ,GAA2B;MAAC;AAAE/Q,IAAAA;AAAF;MAAenT;;AAC9D,QAAM;AAAEt4B,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAmBE,aAAa,EAAtC;AAEA,SAAOsrC,QAAQ,GACblsC,4BAAA,CAAC27C,WAAD;AAAal7C,IAAAA,GAAG,EAAEA;AAAKC,IAAAA,OAAO,EAAEA;KAAaq4B,MAA7C,CADa,GAEX,IAFJ;AAGD,CANM;;;MCnBMmkB,mBAAmB,gBAAG9P,eAAM,CAACC,GAAV,sOAAzB;AAaP,MAAa8P,eAAe,gBAAG/P,eAAM,CAACC,GAAV,gQAIjB;AAAA,MAAC;AAAEz7B,IAAAA;AAAF,GAAD;AAAA,SAAkBA,KAAlB;AAAA,CAJiB,CAArB;AAiBP,MAAawrC,aAAa,gBAAGhQ,eAAM,CAACC,GAAV,mRAIT;AAAA,MAAC;AAAEgQ,IAAAA;AAAF,GAAD;AAAA,SAAmBA,QAAQ,GAAG,UAAH,GAAgB,QAA3C;AAAA,CAJS,EAKf;AAAA,MAAC;AAAEzrC,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,IAAI,MAAxB;AAAA,CALe,CAAnB;;MC5BM0rC,UAAU,GAAa;AAClC,QAAM;AAAEn6C,IAAAA;AAAF,MAAiBykC,UAAU,EAAjC;AACA,QAAM;AAAEuB,IAAAA,YAAF;AAAgBv3B,IAAAA;AAAhB,MAA0Bo3B,QAAQ,CAAC;AAAE7lC,IAAAA,UAAU,EAAEA,UAAU,IAAI;AAA5B,GAAD,CAAxC;AAEA,SACEnD,4BAAA,CAACk9C,mBAAD,MAAA,EACEl9C,4BAAA,CAACm9C,eAAD;AAAiBvrC,IAAAA,KAAK,EAAEA;GAAxB,EACE5R,4BAAA,CAACo9C,aAAD;AAAeC,IAAAA,QAAQ;AAACE,IAAAA,MAAM,EAAE;GAAhC,EACGpU,YAAY,IAAI,IAAhB,GACMA,YAAY,GAAG,IADrB,UAEMA,YAFN,MADH,CADF,CADF,CADF;AAWD,CAfM;;MCIMqU,IAAI,GAAwB;MAAC;AAAE19C,IAAAA;AAAF;AACxC,QAAM;AAAEkD,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAsBP,iBAAiB,EAA7C;AAEA,SACE1C,4BAAA,CAACqyC,UAAD,MAAA,EACEryC,4BAAA,CAACgyC,SAAD;AAAW/H,IAAAA,OAAO,EAAEjnC;GAApB,CADF,EAEEhD,4BAAA,CAACiyC,UAAD;AAAYhI,IAAAA,OAAO,EAAEhnC;GAArB,CAFF,EAGGnD,QAHH,CADF;AAOD,CAVM;;MCFM29C,SAAS,GAAa;AACjC,QAAMx5C,KAAK,GAAG6jC,WAAW,EAAzB;AAEA,SACE9nC,4BAAA,CAACo9C,aAAD;AAAeM,IAAAA,UAAU,EAAE;AAAM9rC,IAAAA,KAAK,EAAE;GAAxC,EACG3N,KAAK,IAAI,CADZ,CADF;AAKD,CARM;;;;ACKP,MAAM05C,YAAY,GAAIC,UAAD,IAAwBnM,UAAxB,mTAKFmM,UALE,EAMDA,UANC,EAOHA,UAPG,CAArB;;AAWA,MAAMC,UAAU,GAAID,UAAD,IAAwBnM,UAAxB,qTAKDmM,UALC,EAMCA,UAND,EAOEA,UAPF,CAAnB;;AAWA,MAAME,WAAW,GAAIF,UAAD,IAAwBnM,UAAxB,oTAKFmM,UALE,EAMDA,UANC,EAOCA,UAPD,CAApB;;AAWA,MAAMG,SAAS,GAAIH,UAAD,IAAwBnM,UAAxB,sTAKCmM,UALD,EAMEA,UANF,EAOGA,UAPH,CAAlB;;AAWA,MAAMjgB,GAAG,GAAG,CAACrb,QAAD,EAAmBs7B,UAAnB,KAAiDnM,UAAjD,6JAGAnvB,QAHA,EAIRs7B,UAAU,IAAID,YAAY,CAACC,UAAD,CAJlB,CAAZ;;AAOA,MAAMI,KAAK,GAAG,CAAC17B,QAAD,EAAmBs7B,UAAnB,KAAiDnM,UAAjD,0JAGJnvB,QAHI,EAIVs7B,UAAU,IAAIC,UAAU,CAACD,UAAD,CAJd,CAAd;;AAOA,MAAMlgB,IAAI,GAAG,CAACpb,QAAD,EAAmBs7B,UAAnB,KAAiDnM,UAAjD,2JAGFnvB,QAHE,EAITs7B,UAAU,IAAIE,WAAW,CAACF,UAAD,CAJhB,CAAb;;AAOA,MAAMK,MAAM,GAAG,CAAC37B,QAAD,EAAmBs7B,UAAnB,KAAiDnM,UAAjD,0JAGNnvB,QAHM,EAIXs7B,UAAU,IAAIG,SAAS,CAACH,UAAD,CAJZ,CAAf;;AAOA,AAAO,MAAM/L,gBAAc,GAAG,SAAjBA,cAAiB,CAC5BC,SAD4B,EAE5BxvB,QAF4B,EAG5Bs7B,UAH4B;AAAA,MAC5B9L,SAD4B;AAC5BA,IAAAA,SAD4B,GACL,KADK;AAAA;;AAAA,SAIzBL,UAJyB,mHAK1BK,SAAS,KAAK,KAAd,IAAuBnU,GAAG,CAACrb,QAAD,EAAWs7B,UAAX,CALA,EAM1B9L,SAAS,KAAK,OAAd,IAAyBkM,KAAK,CAAC17B,QAAD,EAAWs7B,UAAX,CANJ,EAO1B9L,SAAS,KAAK,MAAd,IAAwBpU,IAAI,CAACpb,QAAD,EAAWs7B,UAAX,CAPF,EAQ1B9L,SAAS,KAAK,QAAd,IAA0BmM,MAAM,CAAC37B,QAAD,EAAWs7B,UAAX,CARN;AAAA,CAAvB;AAWP,MAAMM,MAAM,gBAAGzM,UAAH,8LAAZ;AASA,MAAa0M,gBAAgB,gBAAG/Q,eAAM,CAACC,GAAV,sXAYzB;AAAA,MAAC;AAAEyE,IAAAA,SAAF;AAAaxvB,IAAAA,QAAQ,GAAG,QAAxB;AAAkC87B,IAAAA,SAAlC;AAA6CR,IAAAA,UAAU,GAAG;AAA1D,GAAD;AAAA,SACA/L,gBAAc,CAACC,SAAD,EAAYxvB,QAAZ,EAAsB87B,SAAS,GAAGR,UAAH,GAAgB,IAA/C,CADd;AAAA,CAZyB,EAczB;AAAA,MAAC;AAAEQ,IAAAA;AAAF,GAAD;AAAA,SAAmBA,SAAS,IAAIF,MAAhC;AAAA,CAdyB,CAAtB;;;ACvGP;AAUA,MAAM;AAAEj+C,EAAAA,QAAF;AAAYo+C,EAAAA;AAAZ,iBAAyB1+C,mBAAa,CAAY,EAAZ,CAA5C;;AAGA,MAAa2+C,OAAO,GAAuB;MAAC;AAC1C35C,IAAAA,QAAQ,GAAG,EAD+B;AAE1ClE,IAAAA,GAF0C;AAG1CqS,IAAAA,MAH0C;AAI1CwlB,IAAAA,SAJ0C;AAK1Ch0B,IAAAA,MAL0C;AAM1CxE,IAAAA,QAN0C;AAO1CwlB,IAAAA,OAP0C;AAQ1Ci5B,IAAAA,aAR0C;AAS1CnU,IAAAA;AAT0C;MAUvCrR;;AAEH,QAAMylB,SAAS,GAAGhV,UAAU,CAACllC,MAAD,CAA5B;AAEAO,EAAAA,eAAS,CAAC;AACR,KAACpE,GAAG,GAAG,CAACA,GAAD,CAAH,GAAWkE,QAAf,EAAyBkwB,OAAzB,CAAkCpwB,OAAD;AAC/B,YAAM1B,QAAQ,GACZ+P,MAAM,IAAI,EAAErO,OAAO,YAAYpE,QAArB,CAAV,IAAuCoE,OAAO,CAACd,IAAR,CAAamP,MAApD,GACIrO,OAAO,CAACd,IAAR,CAAamP,MADjB,GAEIrC,SAHN;AAKA+tC,MAAAA,SAAS,CAAC;AACR/5C,QAAAA,OADQ;AAER6zB,QAAAA,SAAS,EACP,OAAOimB,aAAP,KAAyB,UAAzB,GACI,MAAMA,aAAa,CAAC95C,OAAD,CADvB,GAEI,MAAMzE,4BAAA,CAACm+C,gBAAD,oBAAsBplB,MAAtB,EAA8BzT,OAA9B,CALJ;AAMRviB,QAAAA,QANQ;AAORqnC,QAAAA;AAPQ,OAAD,CAAT;AASD,KAfD;AAgBD,GAjBQ,EAiBN,CACD9kB,OADC,EAED8kB,SAFC,EAGDmU,aAHC,EAIDC,SAJC,EAKD/9C,GALC,EAMDqS,MANC,EAODnO,QAPC,EAQD2zB,SARC,EASDS,KATC,CAjBM,CAAT;AA6BA,SACE/4B,4BAAA,CAACC,QAAD;AAAUd,IAAAA,KAAK,EAAEwF;GAAjB,EACGlE,GAAG,GAAGX,QAAH,GAAcA,QAAQ,GAAGE,4BAAA,CAACq+C,QAAD,MAAA,EAAWv+C,QAAX,CAAH,GAAqC,IADjE,CADF;AAKD,CAhDM;;ACXP;;AACA,MAAa2+C,IAAI,GAAG,MAAMz+C,4BAAA,MAAA;AAAKkJ,EAAAA,KAAK,EAAE;AAAE8zC,IAAAA,OAAO,EAAE;AAAX;CAAZ,CAAnB;;MCGM0B,eAAe,GAA6B;MAAC;AACxD37C,IAAAA,QADwD;AAExDgpC,IAAAA,QAFwD;AAGxDxqC,IAAAA;AAHwD;AAKxDuqC,EAAAA,kBAAkB,CAAC;AAAE/oC,IAAAA,QAAF;AAAYgpC,IAAAA,QAAZ;AAAsBxqC,IAAAA;AAAtB,GAAD,CAAlB;AAEA,SAAOvB,4BAAA,CAACs5C,cAAD,MAAA,CAAP;AACD,CARM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}