@apia/charts 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +20 -20
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/charts/util/parseMargin.ts","../src/charts/ChartContext.tsx","../src/charts/util/LegendItem.tsx","../src/charts/util/LegendContainer.tsx","../src/charts/horizontalBars/Bar.tsx","../src/charts/util/getBarColor.tsx","../src/charts/util/useChartStyles.ts","../src/charts/horizontalBars/HorizontalBars.tsx","../src/charts/pie/Slice.tsx","../src/charts/pie/TextSlice.tsx","../src/charts/pie/usePieAnimation.ts","../src/charts/pie/Pie.tsx","../src/charts/verticalBars/Bar.tsx","../src/charts/verticalBars/VerticalBars.tsx","../src/charts/linear/Node.tsx","../src/charts/linear/LineChart.tsx","../src/charts/util/ChartSelector.tsx","../src/charts/waterfallBars/WaterfallBar.tsx","../src/charts/waterfallBars/WaterfallBars.tsx","../src/charts/ChartRenderer.tsx","../src/widgets/scale/Scale.tsx","../src/widgets/speedMeter/SpeedMeter.tsx","../src/widgets/tLight/TLight.tsx","../src/widgets/oxford/Oxford.tsx","../src/widgets/counter/Counter.tsx","../src/widgets/ring/Ring.tsx","../src/widgets/thermometer/util.ts","../src/widgets/custom/util.ts","../src/widgets/custom/useCustomWidget.ts","../src/widgets/thermometer/Thermometer.tsx","../src/widgets/WidgetContainer.tsx"],"sourcesContent":["import { TChartRendererProps } from '../types';\r\n\r\nexport function parseMargin(\r\n margin: TChartRendererProps['margin'] = {\r\n left: 100,\r\n right: 50,\r\n top: 50,\r\n bottom: 70,\r\n },\r\n) {\r\n return typeof margin === 'number'\r\n ? { left: margin, right: margin, top: margin, bottom: margin }\r\n : margin;\r\n}\r\n","import { createContext } from 'react';\r\n\r\nexport type TChartContext = {\r\n chartId: string;\r\n};\r\n\r\nexport const ChartContext = createContext<TChartContext>({} as TChartContext);\r\n","import { SimpleButton } from '@apia/components';\r\nimport { icons } from '@apia/icons';\r\nimport { useCallback, useContext } from 'react';\r\nimport { ChartContext } from '../ChartContext';\r\nimport { chartMethods } from '../ChartRenderer';\r\n\r\nconst LegendItem = ({\r\n groupId,\r\n title,\r\n color,\r\n className,\r\n isHighlighted,\r\n isAnyHighlighted,\r\n avoidEvent,\r\n}: {\r\n groupId: string;\r\n title: string;\r\n color: string;\r\n className?: string;\r\n isHighlighted: boolean;\r\n isAnyHighlighted: boolean;\r\n avoidEvent: boolean;\r\n}) => {\r\n const { chartId } = useContext(ChartContext);\r\n const handleMouseEnter = useCallback(() => {\r\n if (avoidEvent) {\r\n return;\r\n }\r\n chartMethods(chartId, 'highlight', groupId);\r\n }, [avoidEvent, chartId, groupId]);\r\n const handleMouseLeave = useCallback(() => {\r\n if (avoidEvent) {\r\n return;\r\n }\r\n chartMethods(chartId, 'highlight', '');\r\n }, [avoidEvent, chartId]);\r\n return (\r\n <SimpleButton\r\n variant=\"icon-outline\"\r\n className={`${className ?? ''} ${\r\n isHighlighted ? 'highlight' : ''\r\n } legendItem`}\r\n iconColor={color || 'black'}\r\n icon={color === 'transparent' ? undefined : icons.SquareFilled}\r\n sx={{\r\n opacity: isAnyHighlighted && !isHighlighted ? '0.15' : '1',\r\n }}\r\n title={title}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n {title}\r\n </SimpleButton>\r\n );\r\n};\r\n\r\nexport { LegendItem };\r\n","import { Box } from '@apia/theme';\r\nimport { LegendItem } from './LegendItem';\r\nimport { makeImperativeComponent } from '@apia/util';\r\n\r\nexport type TChartReference = {\r\n color: string;\r\n title: string;\r\n}[];\r\n\r\nexport const [legendContainerMethods, , LegendContainer] =\r\n makeImperativeComponent<\r\n {\r\n references: TChartReference;\r\n itemClassName?: string;\r\n avoidEvent?: boolean;\r\n },\r\n never\r\n >()({\r\n initialState: {\r\n highlightedBarGroup: '',\r\n },\r\n methods: {\r\n highlight(setState, highlightedBarGroup: string) {\r\n setState({ highlightedBarGroup });\r\n },\r\n },\r\n Component: ({ references, highlightedBarGroup, avoidEvent }) => {\r\n return (\r\n <Box className={`legendContainer`}>\r\n {references.map((data) => {\r\n return (\r\n <LegendItem\r\n isHighlighted={data.title === highlightedBarGroup}\r\n isAnyHighlighted={highlightedBarGroup !== ''}\r\n groupId={data.title}\r\n key={data.title}\r\n color={data.color}\r\n title={data.title}\r\n avoidEvent={avoidEvent ?? false}\r\n />\r\n );\r\n })}\r\n </Box>\r\n );\r\n },\r\n });\r\n","import tinycolor from 'tinycolor2';\r\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\r\nimport {\r\n TApiaChartColorDisposition,\r\n TChartMargin,\r\n TChartRendererProps,\r\n} from '../types';\r\nimport { Box } from '@apia/theme';\r\nimport { localPoint } from '@visx/event';\r\nimport { IParsedColumn } from './HorizontalBars';\r\nimport {} from 'react';\r\nimport { useTooltip } from '@apia/components';\r\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\r\nimport { legendContainerMethods } from '../util/LegendContainer';\r\nimport { useContext, useState, useMemo } from 'react';\r\nimport { ChartContext } from '../ChartContext';\r\nimport { TChartEvents } from '../ChartRenderer';\r\n\r\nexport const Bar = ({\r\n bar,\r\n barGroup,\r\n chart,\r\n parsedData,\r\n isSingle,\r\n effectiveMargin,\r\n setsWithColor,\r\n}: Pick<TChartRendererProps, 'chart'> & {\r\n isSingle: boolean;\r\n bar: BarGroupBar<string>;\r\n barGroup: BarGroupHorizontal<string>;\r\n parsedData: IParsedColumn[];\r\n effectiveMargin: TChartMargin;\r\n setsWithColor: TApiaChartColorDisposition[];\r\n}) => {\r\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\r\n const set = arrayOrArray(column?.sets)[barGroup.index];\r\n const currentBarColor = setsWithColor.find(\r\n (innerSet) =>\r\n innerSet.columnName === column.name && innerSet.key === set.key,\r\n )?.color;\r\n const [isHighlighted, setIsHighlighted] = useState(false);\r\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\r\n\r\n const { open } = useTooltip({\r\n children: (\r\n <>\r\n <div\r\n style={{\r\n color: currentBarColor,\r\n }}\r\n >\r\n <strong>{parsedData[barGroup.index].columnName}</strong>\r\n </div>\r\n {chart.showValues && <div>{bar.value}</div>}\r\n <div>{bar.key}</div>\r\n </>\r\n ),\r\n });\r\n\r\n useImperativeComponentEvents<TChartEvents>({\r\n highlight(barName) {\r\n if (barName.split(' - ').length === 1) {\r\n setIsHighlighted(barName === bar.key);\r\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\r\n } else if (barName.split(' - ').length === 2) {\r\n setIsHighlighted(\r\n barName.split(' - ')[0] === bar.key &&\r\n barName.split(' - ')[1] === set.key,\r\n );\r\n setIsAnyHighlighted(\r\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\r\n );\r\n }\r\n },\r\n });\r\n\r\n const { chartId } = useContext(ChartContext);\r\n return (\r\n <g>\r\n <text\r\n x={bar.x + 5}\r\n y={bar.y - 5}\r\n width={bar.width}\r\n height={bar.height}\r\n textAnchor=\"start\"\r\n style={{\r\n display: isHighlighted ? 'block' : 'none',\r\n opacity: isHighlighted ? 1 : 0,\r\n transition: 'opacity 500ms',\r\n }}\r\n >\r\n {bar.value} - {parsedData[barGroup.index].columnName}\r\n </text>\r\n\r\n <Box\r\n as=\"rect\"\r\n className=\"chart__barRect\"\r\n sx={useMemo(\r\n () => ({\r\n fill: isAnyHighlighted\r\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\r\n : currentBarColor,\r\n '&:hover': {\r\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\r\n },\r\n transition: 'fill 500ms, opacity 500ms',\r\n x: bar.x,\r\n y: bar.y,\r\n width: bar.width - effectiveMargin.left,\r\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\r\n height: bar.height > 0 ? bar.height : 0,\r\n }),\r\n [\r\n bar.height,\r\n bar.width,\r\n bar.x,\r\n bar.y,\r\n currentBarColor,\r\n effectiveMargin.left,\r\n isAnyHighlighted,\r\n isHighlighted,\r\n ],\r\n )}\r\n onMouseEnter={(ev) => {\r\n if (!isSingle) {\r\n legendContainerMethods.highlight(chartId, bar.key);\r\n }\r\n (ev.target as HTMLElement).classList?.add('over');\r\n const point = {\r\n x: localPoint(ev)?.x,\r\n y: localPoint(ev)?.y,\r\n };\r\n if (!point) return;\r\n\r\n open({\r\n attachToElement: () => ev.target as HTMLElement,\r\n attachToElementAnchorPoint: 'center',\r\n });\r\n }}\r\n onMouseLeave={(ev) => {\r\n if (!isSingle) {\r\n legendContainerMethods.highlight(chartId, '');\r\n }\r\n\r\n (ev.target as HTMLElement).classList?.remove('over');\r\n }}\r\n >\r\n <animate\r\n attributeName=\"width\"\r\n from={0}\r\n to={bar.width}\r\n dur=\"0.5s\"\r\n calcMode={'paced'}\r\n keySplines={'0.5 0 0.5 1;'}\r\n keyTimes={'0; 1'}\r\n />\r\n </Box>\r\n </g>\r\n );\r\n};\r\n","import tinycolor from 'tinycolor2';\r\n\r\nexport function getBarColor(\r\n colors: string[],\r\n index: number,\r\n alwaysDiffer = false,\r\n) {\r\n const module = colors.length;\r\n let count = 0;\r\n let barColor = '';\r\n if (!alwaysDiffer) {\r\n if (colors[index]) {\r\n barColor = colors[index];\r\n } else {\r\n let innerIndex = index;\r\n while (innerIndex >= module) {\r\n innerIndex = index / module;\r\n count++;\r\n }\r\n barColor = tinycolor(colors[index % module])\r\n .desaturate(count * 5)\r\n .toHex();\r\n }\r\n } else {\r\n if (colors[index]) {\r\n barColor = colors[index];\r\n } else {\r\n barColor = tinycolor(colors[index % module]).toHex();\r\n }\r\n }\r\n return barColor;\r\n}\r\n","import { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\r\nimport { IChartStylesSchemes, TChartStylesDefinition } from '../types';\r\nimport { getValueByPath } from '@apia/util';\r\n\r\nexport function useChartStyles(\r\n schemeName?: string,\r\n): TChartStylesDefinition | undefined {\r\n const { theme } = useThemeUI();\r\n\r\n if (!theme.layout)\r\n console.error('The layout property is missing in the current theme');\r\n\r\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\r\n ?.charts ?? {}) as IChartStylesSchemes;\r\n const defaultStyles = charts.common;\r\n const currentStylescheme = {\r\n schema: getValueByPath(\r\n theme.colors as ColorModesScale,\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n charts[schemeName || 'blue']?.schema as string,\r\n ),\r\n };\r\n if (\r\n typeof currentStylescheme.schema === 'object' &&\r\n currentStylescheme.schema\r\n ) {\r\n const returnStyles: string[] = Object.entries(\r\n currentStylescheme.schema,\r\n ).map((e) => {\r\n const element = document.querySelector('*');\r\n if (element) {\r\n if ((e[1] as string).startsWith('var(')) {\r\n return window\r\n .getComputedStyle(element)\r\n .getPropertyValue((e[1] as string).slice(4, -1));\r\n }\r\n return window\r\n .getComputedStyle(element)\r\n .getPropertyValue(e[1] as unknown as string);\r\n }\r\n\r\n return window\r\n .getComputedStyle(document.querySelector('*') as Element)\r\n .getPropertyValue(e[1] as unknown as string);\r\n });\r\n return { ...defaultStyles, schema: returnStyles };\r\n }\r\n // return {\r\n // ...defaultStyles,\r\n // ...currentStylescheme,\r\n // };\r\n}\r\n","import { uniqueId } from 'lodash';\r\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { parseMargin } from '../util/parseMargin';\r\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\r\nimport React, { useLayoutEffect, useMemo } from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { Grid } from '@visx/visx';\r\nimport { Group } from '@visx/group';\r\nimport { BarGroupHorizontal } from '@visx/shape';\r\nimport { AxisBottom, AxisLeft } from '@visx/axis';\r\nimport { usePanelParametersSelector } from '@apia/dashboard';\r\nimport { Bar } from './Bar';\r\nimport { usePanAndZoom } from '@apia/util';\r\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\r\nimport { getBarColor } from '../util/getBarColor';\r\nimport { useChartStyles } from '../util/useChartStyles';\r\nexport interface IParsedColumn {\r\n columnName: string;\r\n [key: string]: string;\r\n}\r\n\r\nfunction adjustDimensions({\r\n width,\r\n height,\r\n maxWidth,\r\n}: {\r\n width: number;\r\n height: number;\r\n maxWidth: number;\r\n}) {\r\n if (width <= maxWidth) {\r\n return { width, height };\r\n }\r\n\r\n const ratio = width / height;\r\n const newWidth = maxWidth;\r\n const newHeight = Math.floor(newWidth / ratio);\r\n\r\n return { width: newWidth, height: newHeight };\r\n}\r\n\r\nconst getYValue = (d: IParsedColumn) => d.columnName;\r\n\r\nexport type THorizontalBarsEvents = { highlight: { barName: string } };\r\n\r\n/**\r\n * Acepta parámetro pieces que debe ser compuesto por...\r\n *\r\n * @example\r\n *\r\n * // Instanciar con solamente x\r\n * <Pie pieces={{x: 3}} />\r\n *\r\n * // Instanciar con x e y\r\n * <Pie pieces={{x: 3, y: 5}} />\r\n */\r\nconst HorizontalBars = ({\r\n margin = { top: 20, left: 50, bottom: 150, right: 20 },\r\n chart,\r\n className,\r\n chartId,\r\n outerClassName,\r\n allowZoom,\r\n}: TChartRendererProps) => {\r\n const effectiveMargin = parseMargin(margin);\r\n let innerWidth =\r\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\r\n let innerHeight =\r\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\r\n if (innerWidth > chart.ratio.maxWidth) {\r\n const newValues = adjustDimensions({\r\n height: innerHeight,\r\n width: innerWidth,\r\n maxWidth: chart.ratio.maxWidth,\r\n });\r\n innerWidth = newValues.width;\r\n innerHeight = newValues.height;\r\n }\r\n\r\n const columnas = arrayOrArray(chart.dataSets?.data)\r\n .filter((column) => !!column.sets)\r\n .map((column) => {\r\n return {\r\n ...column,\r\n sets: column.sets,\r\n };\r\n });\r\n\r\n const xValues = arrayOrArray(columnas[0].sets).map(\r\n (innerCoord) => innerCoord.key,\r\n );\r\n const columnNames = columnas.map((col) => {\r\n return col.name;\r\n });\r\n\r\n const parsedData: IParsedColumn[] = xValues.map((x) => {\r\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\r\n (acc, column) => {\r\n return {\r\n ...acc,\r\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\r\n return coord.key === x;\r\n })[0].value,\r\n };\r\n },\r\n { columnName: x },\r\n );\r\n return obj;\r\n });\r\n\r\n const yScale = scaleBand<string>({\r\n range: [\r\n typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top,\r\n innerHeight,\r\n ],\r\n domain: parsedData.map(getYValue),\r\n padding: 0.2,\r\n });\r\n\r\n const columnGroupScale = scaleBand<string>({\r\n domain: columnNames,\r\n range: [0, yScale.bandwidth()],\r\n });\r\n\r\n const xScaleLog = scaleLog<number>({\r\n range: [\r\n typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.left,\r\n innerWidth,\r\n ],\r\n domain: [\r\n 1,\r\n Math.max(\r\n ...parsedData.map((d) =>\r\n Math.max(...columnNames.map((key) => Number(d[key]))),\r\n ),\r\n ),\r\n ],\r\n base: 10,\r\n });\r\n\r\n const xScaleLine = scaleLinear<number>({\r\n range: [\r\n typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.left,\r\n innerWidth,\r\n ],\r\n domain: [\r\n 0,\r\n Math.max(\r\n ...parsedData.map((d) =>\r\n Math.max(...columnNames.map((key) => Number(d[key]))),\r\n ),\r\n ),\r\n ],\r\n });\r\n\r\n const color = scaleOrdinal<string, string>({\r\n domain: columnNames,\r\n range: columnas.map((col) => col.color),\r\n });\r\n\r\n const parameters = usePanelParametersSelector((global) => {\r\n return global;\r\n });\r\n\r\n const scale = parameters.PRMT_CHART_SCALE;\r\n\r\n const isLogScale = scale === '0';\r\n\r\n const xScale = useMemo(() => {\r\n if (!isLogScale) {\r\n return xScaleLine;\r\n }\r\n return xScaleLog;\r\n }, [isLogScale, xScaleLine, xScaleLog]);\r\n\r\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\r\n useLayoutEffect(() => {\r\n document\r\n .querySelectorAll<HTMLElement>(\r\n `#${id} .__${(chartId as string) ?? outerClassName}`,\r\n )\r\n .forEach((current) => {\r\n const width = current.getBoundingClientRect().width;\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transformOrigin =\r\n (current.getAttribute('x') as string) + 'px 14px';\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transform = `rotate(15deg) translateX(${width / 2}px)`;\r\n });\r\n });\r\n const styles = useChartStyles(chart.colorSchema);\r\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\r\n undefined,\r\n !allowZoom ?? true,\r\n );\r\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\r\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\r\n const dataColor =\r\n data.color !== '' && data.color !== undefined\r\n ? data.color\r\n : arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ).length > 0\r\n ? getBarColor(\r\n arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ),\r\n index,\r\n isSingle,\r\n )\r\n : '';\r\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\r\n arrayOrArray(data.sets).forEach((set) => {\r\n if (set.color !== '' && set.color !== undefined) {\r\n returnColumnsArray.push({ ...set, columnName: data.name });\r\n } else {\r\n returnColumnsArray.push({\r\n ...set,\r\n color: dataColor,\r\n columnName: data.name,\r\n });\r\n }\r\n });\r\n return returnColumnsArray;\r\n });\r\n\r\n const colorReference: TChartReference = setsWithColor.map((column) => {\r\n return {\r\n color: column[0].color ?? '',\r\n title: column[0].columnName,\r\n };\r\n });\r\n\r\n arrayOrArray(chart.dataSets.data)\r\n .map((data) => {\r\n const returnArray: { color: string; title: string }[] = [];\r\n arrayOrArray(data.sets).forEach((set) => {\r\n if (set.color !== '' && set.color !== undefined) {\r\n returnArray.push({\r\n color: set.color,\r\n title: data.name + ' - ' + set.key,\r\n });\r\n }\r\n });\r\n return returnArray;\r\n })\r\n .flat()\r\n .forEach((addRef) => colorReference.push(addRef));\r\n\r\n return (\r\n <>\r\n <Box\r\n ref={boxRef}\r\n id={id}\r\n className={`${outerClassName ?? ''} ${chartId} ${chart.title}`}\r\n sx={React.useMemo(() => {\r\n return {\r\n [`.__${(chartId as string) ?? outerClassName}`]: {\r\n transform: 'rotate(45deg)',\r\n transformOrigin: 'attr(x) 18px',\r\n },\r\n overflow: 'auto',\r\n position: 'relative',\r\n\r\n height: `${chart.ratio.height}px`,\r\n width: `${chart.ratio.width}px`,\r\n };\r\n }, [chart.ratio.height, chart.ratio.width, chartId, outerClassName])}\r\n >\r\n <svg\r\n ref={elementRef}\r\n className={`_${chartId} ${className ? className : ''} chart__svg`}\r\n height={chart.ratio.height}\r\n width={chart.ratio.width}\r\n style={{\r\n position: 'absolute',\r\n }}\r\n >\r\n {chart.showGrid && (\r\n <Grid.Grid\r\n xScale={xScale}\r\n yScale={yScale}\r\n left={0}\r\n width={innerWidth}\r\n height={innerHeight}\r\n numTicksRows={10}\r\n numTicksColumns={10}\r\n top={\r\n (typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top) - 20\r\n }\r\n />\r\n )}\r\n <Group\r\n top={\r\n (typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top) - 20\r\n }\r\n left={effectiveMargin.left}\r\n >\r\n <BarGroupHorizontal\r\n data={parsedData}\r\n keys={columnNames}\r\n width={innerWidth}\r\n y0={getYValue}\r\n y0Scale={yScale}\r\n y1Scale={columnGroupScale}\r\n xScale={xScale}\r\n color={color}\r\n >\r\n {(barGroups) =>\r\n barGroups.map((barGroup) => {\r\n return (\r\n <Group\r\n key={`bar-group-${barGroup.index}-${barGroup.y0}`}\r\n top={barGroup.y0}\r\n >\r\n {barGroup.bars.map((bar) => {\r\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\r\n return (\r\n <Bar\r\n isSingle={barGroup.bars.length === 1}\r\n key={key}\r\n bar={bar}\r\n barGroup={barGroup}\r\n chart={chart}\r\n parsedData={parsedData}\r\n effectiveMargin={effectiveMargin}\r\n setsWithColor={setsWithColor.flat()}\r\n />\r\n );\r\n })}\r\n </Group>\r\n );\r\n })\r\n }\r\n </BarGroupHorizontal>\r\n </Group>\r\n <AxisLeft\r\n scale={yScale}\r\n left={effectiveMargin.left}\r\n label={\r\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\r\n ? chart.axisYTitle\r\n : ''\r\n }\r\n tickLabelProps={() => ({\r\n display: 'none',\r\n })}\r\n />\r\n <AxisBottom\r\n top={innerHeight}\r\n scale={xScale}\r\n label={\r\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\r\n ? chart.axisXTitle\r\n : ''\r\n }\r\n tickLabelProps={{\r\n className: 'tickLabel',\r\n }}\r\n labelOffset={50}\r\n />\r\n </svg>\r\n </Box>\r\n {colorReference.length > 1 && (\r\n <LegendContainer id={chartId} references={colorReference} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport { HorizontalBars };\r\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\r\nimport { useTooltip } from '@apia/components';\r\nimport { useMemo, useState, useContext } from 'react';\r\nimport tinycolor from 'tinycolor2';\r\nimport { localPoint } from '@visx/event';\r\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\r\nimport { useImperativeComponentEvents } from '@apia/util';\r\nimport { legendContainerMethods } from '../util/LegendContainer';\r\nimport { ChartContext } from '../ChartContext';\r\nimport { TChartEvents } from '../ChartRenderer';\r\n\r\nexport const Slice = ({\r\n arc,\r\n arcPath,\r\n chart,\r\n actualColor,\r\n}: Pick<TChartRendererProps, 'chart'> & {\r\n arc: PieArcDatum<TApiaChartCoordinate>;\r\n arcPath: string | null;\r\n actualColor: string;\r\n}) => {\r\n const [isHighlighted, setIsHighlighted] = useState(false);\r\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\r\n\r\n const { open } = useTooltip({\r\n children: (\r\n <>\r\n <div\r\n style={{\r\n color: `#${tinycolor(actualColor).toHex()}`,\r\n }}\r\n >\r\n <strong>{arc.data.key}</strong>\r\n </div>\r\n {chart.showValues && (\r\n <div>{`${arc.value} ${\r\n arc.data.percentage ? '- ' + arc.data.percentage : ''\r\n }${arc.data.percentage ? '%' : ''}`}</div>\r\n )}\r\n </>\r\n ),\r\n });\r\n\r\n useImperativeComponentEvents<TChartEvents>({\r\n highlight(barName) {\r\n setIsHighlighted(barName === arc.data.key);\r\n setIsAnyHighlighted(barName !== arc.data.key && barName !== '');\r\n // if (barName === arc.data.key) {\r\n // console.log('open');\r\n\r\n // open();\r\n // }\r\n },\r\n });\r\n const { chartId } = useContext(ChartContext);\r\n const name = arc.data;\r\n\r\n return (\r\n <path\r\n key={`arc-${name.key}-${name.value}`}\r\n id={`arc-${name.key}-${name.value}`}\r\n style={useMemo(\r\n () => ({\r\n '&:hover': {\r\n fill: `#${tinycolor(actualColor).saturate(25).toHex()}`,\r\n },\r\n transition: 'fill 500ms, opacity 500ms',\r\n }),\r\n [actualColor],\r\n )}\r\n fill={\r\n isAnyHighlighted\r\n ? `#${tinycolor(actualColor).desaturate(70).toHex()}`\r\n : actualColor\r\n }\r\n opacity={isAnyHighlighted && !isHighlighted ? 0.15 : 1}\r\n d={arcPath ?? ''}\r\n onMouseEnter={(ev) => {\r\n legendContainerMethods.highlight(chartId, arc.data.key);\r\n (ev.target as HTMLElement).classList?.add('over');\r\n const point = {\r\n x: localPoint(ev)?.x,\r\n y: localPoint(ev)?.y,\r\n };\r\n if (!point) return;\r\n open({\r\n attachToElement: () => ev.target as HTMLElement,\r\n attachToElementAnchorPoint: 'center',\r\n });\r\n }}\r\n onMouseLeave={(ev) => {\r\n legendContainerMethods.highlight(chartId, '');\r\n\r\n (ev.target as HTMLElement).classList?.remove('over');\r\n }}\r\n ></path>\r\n );\r\n};\r\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\r\nimport { useState } from 'react';\r\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\r\nimport { useImperativeComponentEvents } from '@apia/util';\r\nimport { TChartEvents } from '../ChartRenderer';\r\n\r\nexport const TextSlice = ({\r\n arc,\r\n x,\r\n y,\r\n dy,\r\n}: Pick<TChartRendererProps, 'chart'> & {\r\n arc: PieArcDatum<TApiaChartCoordinate>;\r\n x: number;\r\n y: number;\r\n dy: string;\r\n}) => {\r\n const [isHighlighted, setIsHighlighted] = useState(false);\r\n\r\n useImperativeComponentEvents<TChartEvents>({\r\n highlight(barName) {\r\n setIsHighlighted(barName === arc.data.key);\r\n },\r\n });\r\n return (\r\n <text\r\n textAnchor=\"middle\"\r\n style={{\r\n opacity: isHighlighted ? 1 : 0,\r\n display: isHighlighted ? 'block' : 'none',\r\n transition: 'opacity 500ms',\r\n }}\r\n x={x}\r\n y={y}\r\n dy={dy}\r\n >\r\n {arc.value}\r\n </text>\r\n );\r\n};\r\n","import React, { useRef } from 'react';\r\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\r\nimport {\r\n addBoundary,\r\n animate,\r\n arrayOrArray,\r\n // useUpdateEffect,\r\n} from '@apia/util';\r\n\r\nexport const usePieAnimation = ({\r\n incomingColumn,\r\n piezas,\r\n setDataset,\r\n}: {\r\n incomingColumn: TApiaChartColumn;\r\n setDataset: React.Dispatch<React.SetStateAction<TApiaChartColumn[]>>;\r\n piezas: {\r\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\r\n color: string;\r\n sets: TApiaChartCoordinate | TApiaChartCoordinate[];\r\n name: string;\r\n };\r\n}) => {\r\n const previousObjectRef = useRef<\r\n | {\r\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\r\n color: string;\r\n name: string;\r\n }\r\n | undefined\r\n >(undefined);\r\n\r\n const actualObjectRef = useRef<\r\n | {\r\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\r\n color: string;\r\n name: string;\r\n }\r\n | undefined\r\n >(undefined);\r\n\r\n const isAnimating = useRef(false);\r\n\r\n if (previousObjectRef.current && piezas) {\r\n const previousCoordinates =\r\n isAnimating.current && actualObjectRef.current\r\n ? arrayOrArray(actualObjectRef.current.coordinate)\r\n : arrayOrArray(previousObjectRef.current.coordinate);\r\n\r\n const currentCoordinates = arrayOrArray(incomingColumn.sets);\r\n\r\n const hasValueChanged = previousCoordinates.some((prevCoord, index) => {\r\n const currentCoord = currentCoordinates[index];\r\n return prevCoord.value !== currentCoord.value;\r\n });\r\n if (hasValueChanged) {\r\n isAnimating.current = true;\r\n const difference: TApiaChartCoordinate[] = [];\r\n for (\r\n let i = 0;\r\n i < Math.max(previousCoordinates.length, currentCoordinates.length);\r\n i++\r\n ) {\r\n const coord1 = previousCoordinates[i];\r\n const coord2 = currentCoordinates[i];\r\n\r\n if (coord1 && coord2) {\r\n const newValue = Math.abs(\r\n parseInt(coord1.value) - parseInt(coord2.value),\r\n ).toString();\r\n const newCoordinate: TApiaChartCoordinate = {\r\n key: coord2.key,\r\n color: coord2.color, // Assuming color is the same for both coordinates\r\n value: newValue,\r\n };\r\n\r\n difference.push(newCoordinate);\r\n } else if (!coord1 && coord2 && previousCoordinates.length > 0) {\r\n const newValue = Math.abs(0 - parseInt(coord2.value)).toString();\r\n const newCoordinate: TApiaChartCoordinate = {\r\n key: coord2.key,\r\n color: coord2.color, // Assuming color is the same for both coordinates\r\n value: newValue,\r\n };\r\n\r\n difference.push(newCoordinate);\r\n }\r\n }\r\n\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step: TApiaChartColumn = {\r\n color: piezas.color,\r\n name: incomingColumn.name,\r\n sets: difference.map((coord, i) => {\r\n return {\r\n key: coord.key,\r\n color: coord.color,\r\n percentage: coord.percentage,\r\n value: addBoundary(\r\n Number(currentCoordinates[i].value) >\r\n Number(\r\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\r\n )\r\n ? Number(coord.value) * progress +\r\n Number(\r\n previousCoordinates[i]\r\n ? previousCoordinates[i].value\r\n : 0,\r\n )\r\n : Number(\r\n previousCoordinates[i]\r\n ? previousCoordinates[i].value\r\n : 0,\r\n ) -\r\n Number(coord.value) * progress,\r\n Math.min(\r\n Number(\r\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\r\n ),\r\n Number(currentCoordinates[i].value),\r\n ),\r\n Math.max(\r\n Number(\r\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\r\n ),\r\n Number(currentCoordinates[i].value),\r\n ),\r\n ).toString(),\r\n };\r\n }),\r\n };\r\n actualObjectRef.current = {\r\n color: step.color,\r\n coordinate: step.sets,\r\n name: step.name,\r\n };\r\n setDataset([step]);\r\n },\r\n () => {\r\n const newPrev = {\r\n ...incomingColumn,\r\n coordinate: incomingColumn.sets,\r\n };\r\n previousObjectRef.current = newPrev;\r\n isAnimating.current = false;\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }\r\n } else if (!previousObjectRef.current) {\r\n const newPrev = {\r\n ...incomingColumn,\r\n coordinate: incomingColumn.sets,\r\n };\r\n previousObjectRef.current = newPrev;\r\n isAnimating.current = false;\r\n }\r\n};\r\n","import {\r\n TApiaChartColumn,\r\n TApiaChartCoordinate,\r\n TChartRendererProps,\r\n} from '../types';\r\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\r\nimport { Box } from '@apia/theme';\r\nimport { Group } from '@visx/group';\r\nimport Pie from '@visx/shape/lib/shapes/Pie';\r\nimport { Slice } from './Slice';\r\nimport { useChartStyles } from '../util/useChartStyles';\r\nimport { useRef, useMemo, useState } from 'react';\r\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\r\nimport { getBarColor } from '../util/getBarColor';\r\nimport { TextSlice } from './TextSlice';\r\nimport { spacing } from '@apia/theme';\r\nimport { usePieAnimation } from './usePieAnimation';\r\n\r\nfunction adjustDimensions({\r\n width,\r\n height,\r\n maxWidth,\r\n}: {\r\n width: number;\r\n height: number;\r\n maxWidth: number;\r\n}) {\r\n if (width <= maxWidth) {\r\n return { width, height };\r\n }\r\n\r\n const ratio = width / height;\r\n const newWidth = maxWidth;\r\n const newHeight = Math.floor(newWidth / ratio);\r\n\r\n return { width: newWidth, height: newHeight };\r\n}\r\n\r\nexport type TPieChartEvents = { highlight: { barName: string } };\r\n\r\nconst PieChart = ({\r\n chart,\r\n className,\r\n chartId,\r\n allowZoom,\r\n}: TChartRendererProps) => {\r\n const [dataset, setDataset] = useState<TApiaChartColumn[]>(\r\n arrayOrArray(chart.dataSets?.data),\r\n );\r\n\r\n const piezas = useMemo(() => {\r\n return dataset\r\n .filter((piece) => !!piece.sets)\r\n .map((piece) => {\r\n return {\r\n ...piece,\r\n coordinate: piece.sets,\r\n };\r\n })[0];\r\n }, [dataset]);\r\n\r\n usePieAnimation({\r\n incomingColumn: arrayOrArray(chart.dataSets?.data)[0],\r\n piezas,\r\n setDataset,\r\n });\r\n\r\n let innerWidth =\r\n chart.ratio.width > chart.ratio.height\r\n ? chart.ratio.width\r\n : chart.ratio.height;\r\n let innerHeight =\r\n chart.ratio.width > chart.ratio.height\r\n ? chart.ratio.width\r\n : chart.ratio.height;\r\n if (innerWidth > chart.ratio.maxWidth) {\r\n const newValues = adjustDimensions({\r\n height: innerHeight,\r\n width: innerWidth,\r\n maxWidth: chart.ratio.maxWidth,\r\n });\r\n innerWidth = newValues.width;\r\n innerHeight = newValues.height;\r\n }\r\n\r\n const centerY = useMemo(() => {\r\n return innerHeight / 2.5;\r\n }, [innerHeight]);\r\n const centerX = useMemo(() => {\r\n return innerWidth / 2.5;\r\n }, [innerWidth]);\r\n const top = centerY;\r\n const left = centerX;\r\n\r\n const getValue = (d: TApiaChartCoordinate) =>\r\n Number(d.value) === 0 && arrayOrArray(piezas.coordinate).length === 1\r\n ? 100\r\n : Number(d.value);\r\n const radius = Math.min(innerHeight, innerWidth) / 2.5;\r\n\r\n const styles = useChartStyles(chart.colorSchema);\r\n\r\n const colorsArray = styles\r\n ? styles.schema\r\n : ['#7ad6f4', '#45bdee', '#28a7ea', '#006cbb', '#034698', '#032f64'];\r\n const names = arrayOrArray(dataset[0].sets).map((coord) => {\r\n return coord.key;\r\n });\r\n const colorReference: TChartReference = names.map((name, index) => {\r\n return {\r\n title: name,\r\n color: getBarColor(arrayOrArray(colorsArray), index),\r\n };\r\n });\r\n\r\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\r\n undefined,\r\n !allowZoom ?? true,\r\n );\r\n const previousPaths = useRef<(string | null)[]>([]);\r\n if (!piezas) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <Box\r\n ref={boxRef}\r\n key={piezas.name}\r\n className={`${className ? className : ''} ${chartId}`}\r\n sx={{ textAlign: 'center', pb: spacing(5) }}\r\n >\r\n <svg\r\n ref={elementRef}\r\n height={radius * 2}\r\n width={radius * 2}\r\n className={`_${chartId} chart__svg`}\r\n >\r\n <Group top={top ?? 0} left={left ?? 0}>\r\n <Pie\r\n data={arrayOrArray(piezas.coordinate)}\r\n pieValue={getValue}\r\n pieSort={null}\r\n outerRadius={radius}\r\n >\r\n {(pie) => {\r\n const paths = arrayOrArray(pie.arcs).map((arc) => {\r\n return pie.path(arc);\r\n });\r\n\r\n const result = pie.arcs.map((arc) => {\r\n const name = arc.data;\r\n\r\n const arcPath = pie.path(arc);\r\n return (\r\n <Slice\r\n arc={arc}\r\n arcPath={arcPath}\r\n chart={chart}\r\n key={`${name.key}_${name.value}`}\r\n actualColor={\r\n colorReference.find((color) => {\r\n return color.title === name.key;\r\n })?.color ?? ''\r\n }\r\n />\r\n );\r\n });\r\n previousPaths.current = paths;\r\n\r\n return result;\r\n }}\r\n </Pie>\r\n <Pie\r\n data={arrayOrArray(piezas.coordinate)}\r\n pieValue={getValue}\r\n pieSort={null}\r\n outerRadius={radius}\r\n >\r\n {(pie) => {\r\n return pie.arcs.map((arc) => {\r\n const name = arc.data;\r\n\r\n const angle = (arc.startAngle - Math.PI + arc.endAngle) / 2;\r\n\r\n const x = Math.cos(angle) * (radius * 0.75);\r\n\r\n const y = Math.sin(angle) * (radius * 0.75);\r\n\r\n return (\r\n <g key={`arc-${name.key}-${name.value}`}>\r\n <TextSlice\r\n arc={arc}\r\n chart={chart}\r\n dy=\"0.33em\"\r\n x={x}\r\n y={y}\r\n />\r\n </g>\r\n );\r\n });\r\n }}\r\n </Pie>\r\n </Group>\r\n </svg>\r\n </Box>\r\n {colorReference.length > 1 && (\r\n <LegendContainer id={chartId} references={colorReference} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport { PieChart };\r\n","import tinycolor from 'tinycolor2';\r\nimport { BarGroup, BarGroupBar } from '@visx/shape/lib/types';\r\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\r\nimport { Box } from '@apia/theme';\r\nimport { localPoint } from '@visx/event';\r\nimport { IParsedColumn } from './VerticalBars';\r\nimport { useTooltip } from '@apia/components';\r\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\r\nimport { legendContainerMethods } from '../util/LegendContainer';\r\nimport { useContext, useState, useMemo } from 'react';\r\nimport { ChartContext } from '../ChartContext';\r\nimport { TChartEvents } from '../ChartRenderer';\r\n\r\nexport const Bar = ({\r\n bar,\r\n barGroup,\r\n chart,\r\n parsedData,\r\n isSingle,\r\n setsWithColor,\r\n}: Pick<TChartRendererProps, 'chart'> & {\r\n isSingle: boolean;\r\n bar: BarGroupBar<string>;\r\n barGroup: BarGroup<string>;\r\n parsedData: IParsedColumn[];\r\n setsWithColor: TApiaChartColorDisposition[];\r\n}) => {\r\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\r\n const set = arrayOrArray(column?.sets)[barGroup.index];\r\n const currentBarColor = setsWithColor.find(\r\n (innerSet) =>\r\n innerSet.columnName === column.name && innerSet.key === set.key,\r\n )?.color;\r\n const [isHighlighted, setIsHighlighted] = useState(false);\r\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\r\n\r\n const { open } = useTooltip({\r\n children: (\r\n <>\r\n <div\r\n style={{\r\n color: currentBarColor,\r\n }}\r\n >\r\n <strong>{parsedData[barGroup.index].columnName}</strong>\r\n </div>\r\n {chart.showValues && <div>{bar.value}</div>}\r\n <div>{bar.key}</div>\r\n </>\r\n ),\r\n });\r\n\r\n useImperativeComponentEvents<TChartEvents>({\r\n highlight(barName) {\r\n if (barName.split(' - ').length === 1) {\r\n setIsHighlighted(barName === bar.key);\r\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\r\n } else if (barName.split(' - ').length === 2) {\r\n setIsHighlighted(\r\n barName.split(' - ')[0] === bar.key &&\r\n barName.split(' - ')[1] === set.key,\r\n );\r\n setIsAnyHighlighted(\r\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\r\n );\r\n }\r\n },\r\n });\r\n const { chartId } = useContext(ChartContext);\r\n\r\n return (\r\n <g>\r\n <text\r\n x={bar.x + bar.width / 2}\r\n y={bar.y - 5}\r\n width={bar.width}\r\n height={bar.height}\r\n textAnchor=\"middle\"\r\n style={{\r\n display: isHighlighted ? 'block' : 'none',\r\n opacity: isHighlighted ? 1 : 0,\r\n transition: 'opacity 500ms',\r\n }}\r\n >\r\n {bar.value}\r\n </text>\r\n\r\n <Box\r\n as=\"rect\"\r\n className=\"chart__barRect\"\r\n sx={useMemo(\r\n () => ({\r\n fill: isAnyHighlighted\r\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\r\n : currentBarColor,\r\n '&:hover': {\r\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\r\n },\r\n transition: 'fill 500ms, opacity 500ms',\r\n x: bar.x,\r\n y: bar.y,\r\n width: bar.width,\r\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\r\n height: bar.height > 0 ? bar.height : 0,\r\n }),\r\n [\r\n bar.height,\r\n bar.width,\r\n bar.x,\r\n bar.y,\r\n currentBarColor,\r\n isAnyHighlighted,\r\n isHighlighted,\r\n ],\r\n )}\r\n onMouseEnter={(ev) => {\r\n if (!isSingle) {\r\n legendContainerMethods.highlight(chartId, bar.key);\r\n }\r\n (ev.target as HTMLElement).classList?.add('over');\r\n const point = {\r\n x: localPoint(ev)?.x,\r\n y: localPoint(ev)?.y,\r\n };\r\n if (!point) return;\r\n\r\n open({\r\n attachToElement: () => ev.target as HTMLElement,\r\n attachToElementAnchorPoint: 'center',\r\n });\r\n }}\r\n onMouseLeave={(ev) => {\r\n if (!isSingle) {\r\n legendContainerMethods.highlight(chartId, '');\r\n }\r\n\r\n (ev.target as HTMLElement).classList?.remove('over');\r\n }}\r\n >\r\n <animate\r\n attributeName=\"height\"\r\n from={0}\r\n to={bar.height}\r\n dur=\"0.5s\"\r\n calcMode={'paced'}\r\n keySplines={'0.5 0 0.5 1;'}\r\n keyTimes={'0; 1'}\r\n />\r\n <animate\r\n attributeName=\"y\"\r\n from={bar.y + bar.height}\r\n to={bar.y}\r\n dur=\"0.5s\"\r\n calcMode={'paced'}\r\n keySplines={'0.5 0 0.5 1;'}\r\n keyTimes={'0; 1'}\r\n />\r\n </Box>\r\n </g>\r\n );\r\n};\r\n","import { uniqueId } from 'lodash';\r\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\r\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\r\nimport { parseMargin } from '../util/parseMargin';\r\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\r\nimport { useLayoutEffect, useMemo } from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { Grid } from '@visx/visx';\r\nimport { Group } from '@visx/group';\r\nimport { BarGroup } from '@visx/shape';\r\nimport { AxisBottom, AxisLeft } from '@visx/axis';\r\nimport { usePanelParametersSelector } from '@apia/dashboard';\r\nimport { useChartStyles } from '../util/useChartStyles';\r\nimport { Bar } from './Bar';\r\nimport { getBarColor } from '../util/getBarColor';\r\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\r\n\r\nexport interface IParsedColumn {\r\n columnName: string;\r\n [key: string]: string;\r\n}\r\n\r\nfunction adjustDimensions({\r\n width,\r\n height,\r\n maxWidth,\r\n}: {\r\n width: number;\r\n height: number;\r\n maxWidth: number;\r\n}) {\r\n if (width <= maxWidth) {\r\n return { width, height };\r\n }\r\n\r\n const ratio = width / height;\r\n const newWidth = maxWidth;\r\n const newHeight = Math.floor(newWidth / ratio);\r\n\r\n return { width: newWidth, height: newHeight };\r\n}\r\n\r\nconst getXValue = (d: IParsedColumn) => d.columnName;\r\n\r\nexport type TVerticalBarsEvents = { highlight: { barName: string } };\r\n\r\n/**\r\n * Acepta parámetro pieces que debe ser compuesto por...\r\n *\r\n * @example\r\n *\r\n * // Instanciar con solamente x\r\n * <Pie pieces={{x: 3}} />\r\n *\r\n * // Instanciar con x e y\r\n * <Pie pieces={{x: 3, y: 5}} />\r\n */\r\nconst VerticalBars = ({\r\n margin = { top: 20, left: 100, bottom: 150, right: 20 },\r\n chart,\r\n className,\r\n chartId,\r\n allowZoom,\r\n}: TChartRendererProps) => {\r\n const effectiveMargin = parseMargin(margin);\r\n if (!chart.showAxisYTitle) {\r\n effectiveMargin.left = 50;\r\n }\r\n let innerWidth =\r\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\r\n let innerHeight =\r\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\r\n if (innerWidth > chart.ratio.maxWidth) {\r\n const newValues = adjustDimensions({\r\n height: innerHeight,\r\n width: innerWidth,\r\n maxWidth: chart.ratio.maxWidth,\r\n });\r\n innerWidth = newValues.width;\r\n innerHeight = newValues.height;\r\n }\r\n\r\n const styles = useChartStyles(chart.colorSchema);\r\n\r\n const columnas = arrayOrArray(chart.dataSets?.data)\r\n .filter((column) => !!column.sets)\r\n .map((column) => {\r\n return {\r\n ...column,\r\n sets: column.sets,\r\n };\r\n });\r\n\r\n const xValues = arrayOrArray(columnas[0].sets).map(\r\n (innerCoord) => innerCoord.key,\r\n );\r\n const columnNames = columnas.map((col) => {\r\n return col.name;\r\n });\r\n\r\n const parsedData: IParsedColumn[] = xValues.map((x) => {\r\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\r\n (acc, column) => {\r\n return {\r\n ...acc,\r\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\r\n return coord.key === x;\r\n })[0].value,\r\n };\r\n },\r\n { columnName: x },\r\n );\r\n return obj;\r\n });\r\n\r\n const xScale = scaleBand<string>({\r\n range: [\r\n typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.left,\r\n innerWidth,\r\n ],\r\n domain: parsedData.map(getXValue),\r\n padding: 0.2,\r\n });\r\n\r\n const columnGroupScale = scaleBand<string>({\r\n domain: columnNames,\r\n range: [0, xScale.bandwidth()],\r\n });\r\n\r\n const yScaleLog = scaleLog<number>({\r\n range: [\r\n innerHeight,\r\n typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top,\r\n ],\r\n domain: [\r\n 1,\r\n Math.max(\r\n ...parsedData.map((d) =>\r\n Math.max(...columnNames.map((key) => Number(d[key]))),\r\n ),\r\n ),\r\n ],\r\n base: 10,\r\n });\r\n\r\n const yScaleLine = scaleLinear<number>({\r\n range: [\r\n innerHeight,\r\n typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top,\r\n ],\r\n domain: [\r\n 0,\r\n Math.max(\r\n ...parsedData.map((d) =>\r\n Math.max(...columnNames.map((key) => Number(d[key]))),\r\n ),\r\n ),\r\n ],\r\n });\r\n\r\n const color = scaleOrdinal<string, string>({\r\n domain: columnNames,\r\n range: columnas.map((col) => col.color),\r\n });\r\n\r\n const parameters = usePanelParametersSelector((global) => {\r\n return global;\r\n });\r\n // const hideLegendsColors = arrayOrArray(chart.dataSets.data).some((data) => {\r\n // return arrayOrArray(data.sets).some(\r\n // (set) => set.color !== undefined && set.color !== '',\r\n // );\r\n // });\r\n\r\n const scale = parameters.PRMT_CHART_SCALE;\r\n\r\n const isLogScale = scale === '0';\r\n\r\n const yScale = useMemo(() => {\r\n if (!isLogScale) {\r\n return yScaleLine;\r\n }\r\n return yScaleLog;\r\n }, [isLogScale, yScaleLine, yScaleLog]);\r\n\r\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\r\n useLayoutEffect(() => {\r\n document\r\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\r\n .forEach((current) => {\r\n const box = current.getBoundingClientRect();\r\n console.log(box);\r\n if (box.width > 125) {\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.width = '125px';\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.overflow = 'hidden';\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.textOverflow = 'ellipsis';\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.whiteSpace = 'nowrap';\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transformOrigin =\r\n (current.getAttribute('x') as string) + 'px 14px';\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transform = `rotate(25deg)`;\r\n });\r\n });\r\n\r\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\r\n undefined,\r\n !allowZoom ?? true,\r\n );\r\n\r\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\r\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\r\n const dataColor =\r\n data.color !== '' && data.color !== undefined\r\n ? data.color\r\n : arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ).length > 0\r\n ? getBarColor(\r\n arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ),\r\n index,\r\n isSingle,\r\n )\r\n : '';\r\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\r\n arrayOrArray(data.sets).forEach((set) => {\r\n if (set.color !== '' && set.color !== undefined) {\r\n returnColumnsArray.push({ ...set, columnName: data.name });\r\n } else {\r\n returnColumnsArray.push({\r\n ...set,\r\n color: dataColor,\r\n columnName: data.name,\r\n });\r\n }\r\n });\r\n return returnColumnsArray;\r\n });\r\n\r\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\r\n (data, index) => {\r\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\r\n const dataColor =\r\n data.color !== '' && data.color !== undefined\r\n ? data.color\r\n : arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ).length > 0\r\n ? getBarColor(\r\n arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ),\r\n index,\r\n isSingle,\r\n )\r\n : '';\r\n return {\r\n color: dataColor,\r\n title: data.name,\r\n };\r\n },\r\n );\r\n\r\n arrayOrArray(chart.dataSets.data)\r\n .map((data) => {\r\n const returnArray: { color: string; title: string }[] = [];\r\n arrayOrArray(data.sets).forEach((set) => {\r\n if (set.color !== '' && set.color !== undefined) {\r\n returnArray.push({\r\n color: set.color,\r\n title: data.name + ' - ' + set.key,\r\n });\r\n }\r\n });\r\n return returnArray;\r\n })\r\n .flat()\r\n .forEach((addRef) => colorReference.push(addRef));\r\n\r\n return (\r\n <>\r\n <Box\r\n ref={boxRef}\r\n id={id}\r\n className={`${className ?? ''} ${chart.title}`}\r\n sx={{\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <svg\r\n ref={elementRef}\r\n className={`_${chartId} chart__svg`}\r\n height={chart.ratio.height}\r\n width={chart.ratio.width}\r\n >\r\n {chart.showGrid && (\r\n <Grid.Grid\r\n xScale={xScale}\r\n yScale={yScale}\r\n left={0}\r\n width={innerWidth}\r\n height={innerHeight}\r\n numTicksRows={10}\r\n numTicksColumns={10}\r\n top={\r\n (typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top) - 20\r\n }\r\n />\r\n )}\r\n <Group\r\n top={\r\n (typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top) - 20\r\n }\r\n >\r\n <BarGroup\r\n data={parsedData}\r\n keys={columnNames}\r\n height={innerHeight}\r\n x0={getXValue}\r\n x0Scale={xScale}\r\n x1Scale={columnGroupScale}\r\n yScale={yScale}\r\n color={color}\r\n >\r\n {(barGroups) =>\r\n barGroups.map((barGroup) => {\r\n return (\r\n <Group\r\n key={`bar-group-${barGroup.index}-${barGroup.x0}`}\r\n left={barGroup.x0}\r\n >\r\n {barGroup.bars.map((bar) => {\r\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\r\n\r\n return (\r\n <Bar\r\n isSingle={barGroup.bars.length === 1}\r\n key={key}\r\n bar={bar}\r\n barGroup={barGroup}\r\n chart={chart}\r\n parsedData={parsedData}\r\n setsWithColor={setsWithColor.flat()}\r\n />\r\n );\r\n })}\r\n </Group>\r\n );\r\n })\r\n }\r\n </BarGroup>\r\n </Group>\r\n <AxisLeft\r\n scale={yScale}\r\n left={effectiveMargin.left}\r\n label={\r\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\r\n ? chart.axisYTitle\r\n : ''\r\n }\r\n />\r\n <AxisBottom\r\n top={innerHeight}\r\n scale={xScale}\r\n label={\r\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\r\n ? chart.axisXTitle\r\n : ''\r\n }\r\n tickLabelProps={{\r\n className: 'tickLabel',\r\n textAnchor: 'start',\r\n }}\r\n labelOffset={50}\r\n />\r\n </svg>\r\n </Box>\r\n {colorReference.length > 1 && (\r\n <LegendContainer\r\n id={chartId}\r\n references={\r\n // hideLegendsColors\r\n // ? colorReference.map((ref) => {\r\n // return { ...ref, color: 'transparent' };\r\n // })\r\n colorReference\r\n }\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport { VerticalBars };\r\n","// import { useTooltip } from '@apia/components';\r\n// import { useMemo } from 'react';\r\nimport { Fragment } from 'theme-ui/jsx-runtime';\r\nimport tinycolor from 'tinycolor2';\r\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\r\n\r\nexport const Node = ({\r\n currentCircle,\r\n innerKey,\r\n cx,\r\n cy,\r\n // coordinate,\r\n color,\r\n setCurrentCircle,\r\n}: // column,\r\n{\r\n currentCircle: string[];\r\n innerKey: string;\r\n cx: number;\r\n cy: number;\r\n coordinate: TApiaChartCoordinate;\r\n color: string;\r\n setCurrentCircle: (value: React.SetStateAction<string[]>) => void;\r\n column: TApiaChartColumn;\r\n}) => {\r\n return (\r\n <Fragment key={innerKey}>\r\n {currentCircle.includes(innerKey) && (\r\n <circle\r\n r={6}\r\n cx={cx}\r\n cy={cy}\r\n stroke={`#${tinycolor(color).saturate(25).toHex()}`}\r\n fill={`#${tinycolor(color).saturate(25).toHex()}`}\r\n />\r\n )}\r\n <circle\r\n r={3}\r\n cx={cx}\r\n cy={cy}\r\n stroke={`#${tinycolor(color).darken(15).toHex()}`}\r\n fill={`#${tinycolor(color).darken(15).toHex()}`}\r\n />\r\n <circle\r\n r={10}\r\n cx={cx}\r\n cy={cy}\r\n stroke=\"transparent\"\r\n fill=\"transparent\"\r\n onMouseEnter={() => {\r\n setCurrentCircle([innerKey]);\r\n }}\r\n onMouseLeave={() => {\r\n setCurrentCircle([]);\r\n }}\r\n style={{ cursor: 'pointer' }}\r\n />\r\n </Fragment>\r\n );\r\n};\r\n","import {\r\n arrayOrArray,\r\n useImperativeComponentEvents,\r\n usePanAndZoom,\r\n usePrevious,\r\n} from '@apia/util';\r\nimport {\r\n TApiaChartColorDisposition,\r\n TApiaChartCoordinate,\r\n TApiaChartDefinition,\r\n TChartRendererProps,\r\n} from '../types';\r\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\r\nimport { min, max } from 'd3-array';\r\nimport { parseMargin } from '../util/parseMargin';\r\nimport { useMemo, useState, useLayoutEffect, useEffect } from 'react';\r\nimport { useChartStyles } from '../util/useChartStyles';\r\nimport { Box } from '@apia/theme';\r\nimport { Grid } from '@visx/visx';\r\nimport { Group } from '@visx/group';\r\nimport { LinePath } from '@visx/shape';\r\nimport { AxisBottom, AxisLeft } from '@visx/axis';\r\nimport * as allCurves from '@visx/curve';\r\nimport { uniqueId } from 'lodash';\r\nimport { Node } from './Node';\r\nimport { useTooltip } from '@apia/components';\r\nimport { getBarColor } from '../util/getBarColor';\r\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\r\nimport { TChartEvents } from '../ChartRenderer';\r\n\r\nfunction adjustDimensions({\r\n width,\r\n height,\r\n maxWidth,\r\n}: {\r\n width: number;\r\n height: number;\r\n maxWidth: number;\r\n}) {\r\n if (width <= maxWidth) {\r\n return { width, height };\r\n }\r\n\r\n const ratio = width / height;\r\n const newWidth = maxWidth;\r\n const newHeight = Math.floor(newWidth / ratio);\r\n\r\n return { width: newWidth, height: newHeight };\r\n}\r\n\r\nfunction getX(coordinate: TApiaChartCoordinate) {\r\n return coordinate.key;\r\n}\r\n\r\nfunction getY(coordinate: TApiaChartCoordinate) {\r\n return Number(coordinate.value);\r\n}\r\n\r\nfunction parseData(chart: TApiaChartDefinition) {\r\n const columns = arrayOrArray(chart.dataSets?.data);\r\n const data = columns.map((column) => column.sets);\r\n const allData = data.reduce<TApiaChartCoordinate[]>(\r\n (rec, d) => arrayOrArray(rec).concat(d),\r\n [],\r\n );\r\n return {\r\n columns,\r\n xScale: scaleOrdinal<string, number>({\r\n domain: arrayOrArray(columns[0].sets).map(getX),\r\n }),\r\n yScale: scaleLinear<number>({\r\n domain: [\r\n min(allData, getY) ?? 0 < 0 ? min(allData, getY) ?? 0 : 0,\r\n max(allData, getY) ?? 1,\r\n ],\r\n }),\r\n yScaleLog: scaleLog<number>({\r\n domain: [\r\n min(allData, getY) ?? 1 > 0 ? min(allData, getY) ?? 1 : 1,\r\n max(allData, getY) ?? 10,\r\n ],\r\n }),\r\n };\r\n}\r\nexport type TLineChartEvents = { highlight: { barName: string } };\r\n\r\nexport type TChartNode = {\r\n x: number;\r\n y: number;\r\n xValue: string;\r\n yValue: string;\r\n columnName: string;\r\n};\r\n\r\nconst LineChart = ({\r\n chart,\r\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\r\n chartId,\r\n allowZoom,\r\n}: TChartRendererProps) => {\r\n const effectiveMargin = parseMargin(margin);\r\n if (!chart.showAxisYTitle) {\r\n effectiveMargin.left = 50;\r\n }\r\n let innerWidth = chart.ratio.width;\r\n let innerHeight =\r\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\r\n if (innerWidth > chart.ratio.maxWidth) {\r\n const newValues = adjustDimensions({\r\n height: innerHeight,\r\n width: innerWidth,\r\n maxWidth: chart.ratio.maxWidth,\r\n });\r\n innerWidth = newValues.width;\r\n innerHeight = newValues.height;\r\n }\r\n\r\n const { columns, xScale, yScale, yScaleLog } = parseData(chart);\r\n const styles = useChartStyles(chart.colorSchema);\r\n const coordinates = arrayOrArray(columns[0].sets);\r\n const coordinatesArray = columns.map((col) => {\r\n return col.sets;\r\n });\r\n const step = innerWidth / coordinates.length;\r\n\r\n xScale.range(\r\n coordinates.map((_, i) => {\r\n if (i === 0) {\r\n return effectiveMargin.left;\r\n }\r\n return i * step + effectiveMargin.left;\r\n }),\r\n );\r\n\r\n yScale.range([\r\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom) / 2,\r\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\r\n ]);\r\n yScaleLog.range([\r\n innerHeight,\r\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\r\n ]);\r\n\r\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\r\n\r\n const actualYScale = useMemo(() => {\r\n return yScale;\r\n }, [yScale]);\r\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\r\n useLayoutEffect(() => {\r\n document\r\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\r\n .forEach((current) => {\r\n const width = current.getBoundingClientRect().width;\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transformOrigin =\r\n (current.getAttribute('x') as string) + 'px 14px';\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\r\n });\r\n });\r\n function addNameToProps(\r\n names: string[],\r\n objects: {\r\n xValue: string;\r\n yValue: string;\r\n x: number;\r\n y: number;\r\n }[],\r\n fixedValue: number,\r\n ) {\r\n return objects.map((object, index) => {\r\n const nameIndex = Math.floor(index / fixedValue);\r\n const name = names[nameIndex];\r\n return { ...object, columnName: name };\r\n });\r\n }\r\n const [nodes, setNodes] = useState<TChartNode[]>([]);\r\n useEffect(() => {\r\n const coords = coordinatesArray.flat().map((coord) => {\r\n return {\r\n xValue: coord.key,\r\n yValue: coord.value,\r\n x: xScale(getX(coord)),\r\n y: actualYScale(getY(coord)),\r\n };\r\n });\r\n const columnNames = columns.map((column) => {\r\n return column.name;\r\n });\r\n const nodesData = addNameToProps(columnNames, coords, coordinates.length);\r\n setNodes(nodesData);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\r\n const previousNearNodesArray = usePrevious(nearNodesArray);\r\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\r\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\r\n const dataColor =\r\n data.color !== '' && data.color !== undefined\r\n ? data.color\r\n : arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ).length > 0\r\n ? getBarColor(\r\n arrayOrArray(\r\n styles\r\n ? styles.schema\r\n : [\r\n '#7ad6f4',\r\n '#45bdee',\r\n '#28a7ea',\r\n '#006cbb',\r\n '#034698',\r\n '#032f64',\r\n ],\r\n ),\r\n index,\r\n isSingle,\r\n )\r\n : '';\r\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\r\n arrayOrArray(data.sets).forEach((set) => {\r\n if (set.color !== '' && set.color !== undefined) {\r\n returnColumnsArray.push({ ...set, columnName: data.name });\r\n } else {\r\n returnColumnsArray.push({\r\n ...set,\r\n color: dataColor,\r\n columnName: data.name,\r\n });\r\n }\r\n });\r\n return { returnColumnsArray, columnColor: dataColor };\r\n });\r\n\r\n const colorReference: TChartReference = setsWithColor.map((column) => {\r\n return {\r\n color: column.columnColor ?? '',\r\n title: column.returnColumnsArray[0].columnName,\r\n };\r\n });\r\n\r\n arrayOrArray(chart.dataSets.data)\r\n .map((data) => {\r\n const returnArray: { color: string; title: string }[] = [];\r\n arrayOrArray(data.sets).forEach((set) => {\r\n if (set.color !== '' && set.color !== undefined) {\r\n returnArray.push({\r\n color: set.color,\r\n title: data.name + ' - ' + set.key,\r\n });\r\n }\r\n });\r\n return returnArray;\r\n })\r\n .flat()\r\n .forEach((addRef) => colorReference.push(addRef));\r\n\r\n const { open } = useTooltip({\r\n children: nearNodesArray\r\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\r\n .map((node, i) => {\r\n const useSpecific = colorReference.some(\r\n (ref) => ref.title === node.columnName + ' - ' + node.xValue,\r\n );\r\n\r\n return (\r\n <Box key={`${node.columnName}_${node.xValue}_${node.yValue}`}>\r\n <div\r\n style={{\r\n color:\r\n colorReference[\r\n colorReference.findIndex((ref) => {\r\n return (\r\n ref.title ===\r\n (useSpecific\r\n ? node.columnName + ' - ' + node.xValue\r\n : node.columnName)\r\n );\r\n })\r\n ].color,\r\n }}\r\n >\r\n <strong>{node.columnName}</strong>\r\n </div>\r\n {chart.showValues && <div>{node.yValue}</div>}\r\n <div>{node.xValue}</div>\r\n {nearNodesArray[i + 1] && <hr />}\r\n </Box>\r\n );\r\n }),\r\n });\r\n\r\n const [highlightedBar, setHighlightedBar] = useState('');\r\n useImperativeComponentEvents<TChartEvents>({\r\n highlight(barName) {\r\n if (barName.split(' - ').length === 1) {\r\n setHighlightedBar(barName);\r\n } else if (barName.split(' - ').length === 2) {\r\n setHighlightedBar(barName.split(' - ')[0]);\r\n }\r\n },\r\n });\r\n\r\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\r\n undefined,\r\n !allowZoom ?? true,\r\n );\r\n\r\n return (\r\n <>\r\n <Box id={id} ref={boxRef}>\r\n <svg\r\n ref={elementRef}\r\n width={innerWidth}\r\n height={innerHeight}\r\n id=\"LinesChart\"\r\n className={`_${chartId} chart__svg`}\r\n onMouseMove={(ev) => {\r\n const rect = elementRef.current?.getBoundingClientRect();\r\n\r\n let clientX = ev.clientX;\r\n let clientY =\r\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\r\n\r\n if (rect) {\r\n clientX = ev.clientX - rect.left;\r\n clientY = ev.clientY - rect.top;\r\n }\r\n const nearNodes = nodes.filter((node) => {\r\n return (\r\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\r\n 20\r\n );\r\n });\r\n\r\n if (previousNearNodesArray.current && nearNodes.length > 0) {\r\n const currentColumns = columns\r\n .map((col) => {\r\n let colNames = '';\r\n nearNodes.forEach((node) => {\r\n if (col.name === node.columnName) {\r\n colNames = node.columnName;\r\n }\r\n });\r\n\r\n return colNames;\r\n })\r\n .filter((name) => name !== '');\r\n const currentIndex = coordinates.findIndex((coord) => {\r\n return coord.key === nearNodes[0].xValue;\r\n });\r\n\r\n if (currentColumns && currentIndex !== undefined) {\r\n const newCircleValues = currentColumns.map((col) => {\r\n return `${col}${currentIndex}`;\r\n });\r\n\r\n setCurrentCircle([...newCircleValues]);\r\n }\r\n setNearNodesArray(nearNodes);\r\n open({\r\n attachToElement: () => ev.target as HTMLElement,\r\n attachToElementAnchorPoint: 'center',\r\n });\r\n } else if (nearNodes.length === 0) {\r\n setCurrentCircle([]);\r\n }\r\n }}\r\n >\r\n {chart.showGrid && (\r\n <Grid.Grid\r\n top={\r\n (typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top) - 20\r\n }\r\n left={0}\r\n xScale={xScale}\r\n yScale={actualYScale}\r\n width={innerWidth}\r\n height={innerHeight}\r\n stroke={styles?.grid.stroke}\r\n strokeOpacity={styles?.grid.opacity}\r\n />\r\n )}\r\n {columns.map((column, i) => {\r\n const currentCoordinates = arrayOrArray(column.sets);\r\n const newColor = setsWithColor.find(\r\n (data) => data.returnColumnsArray[0].columnName === column.name,\r\n )?.columnColor;\r\n\r\n return (\r\n <Group\r\n key={`lines-${column.name + i.toString()}`}\r\n top={\r\n (typeof effectiveMargin === 'number'\r\n ? effectiveMargin\r\n : effectiveMargin.top) - 20\r\n }\r\n style={{\r\n opacity:\r\n highlightedBar !== '' && highlightedBar !== column.name\r\n ? 0.15\r\n : 1,\r\n transition: 'opacity 500ms',\r\n }}\r\n >\r\n <LinePath\r\n curve={allCurves.curveMonotoneX}\r\n data={currentCoordinates}\r\n x={(coordinate) => {\r\n return xScale(getX(coordinate)) ?? 0;\r\n }}\r\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\r\n stroke={newColor ?? 'black'}\r\n strokeWidth={2}\r\n strokeOpacity={1}\r\n shapeRendering=\"geometricPrecision\"\r\n />\r\n {currentCoordinates.map((coordinate, j) => {\r\n const key = column.name + j.toString();\r\n const realColor = setsWithColor\r\n .map((sets) => sets.returnColumnsArray)\r\n .flat()\r\n .find(\r\n (set) =>\r\n set.columnName === column.name &&\r\n set.key === coordinate.key,\r\n )?.color;\r\n return (\r\n <g key={key}>\r\n <text\r\n x={xScale(getX(coordinate)) + 10}\r\n y={actualYScale(getY(coordinate)) - 5}\r\n textAnchor=\"middle\"\r\n style={{\r\n display:\r\n highlightedBar === column.name ? 'block' : 'none',\r\n opacity: highlightedBar === column.name ? 1 : 0,\r\n transition: 'opacity 500ms',\r\n }}\r\n >\r\n {coordinate.value}\r\n </text>\r\n <Node\r\n color={realColor ?? 'black'}\r\n coordinate={coordinate}\r\n currentCircle={currentCircle}\r\n cx={xScale(getX(coordinate))}\r\n cy={actualYScale(getY(coordinate))}\r\n setCurrentCircle={setCurrentCircle}\r\n innerKey={key}\r\n column={column}\r\n />\r\n </g>\r\n );\r\n })}\r\n </Group>\r\n );\r\n })}\r\n\r\n <AxisLeft\r\n scale={actualYScale}\r\n left={effectiveMargin.left}\r\n label={\r\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\r\n ? chart.axisYTitle\r\n : ''\r\n }\r\n />\r\n <AxisBottom\r\n top={\r\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom) / 2\r\n }\r\n scale={xScale}\r\n label={\r\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\r\n ? chart.axisXTitle\r\n : ''\r\n }\r\n tickLabelProps={{\r\n className: 'tickLabel',\r\n }}\r\n labelOffset={50}\r\n />\r\n </svg>\r\n </Box>\r\n {colorReference.length > 1 && (\r\n <LegendContainer id={chartId} references={colorReference} />\r\n )}\r\n </>\r\n );\r\n};\r\nexport { LineChart };\r\n","import { Select } from '@apia/theme';\r\n\r\nfunction ChartSelector({\r\n chartId,\r\n pieces,\r\n className,\r\n current,\r\n setCurrent,\r\n}: {\r\n chartId: string;\r\n pieces: string[];\r\n className?: string;\r\n current: string;\r\n setCurrent: React.Dispatch<React.SetStateAction<string>>;\r\n}) {\r\n return (\r\n <Select\r\n sx={{ width: 'auto' }}\r\n name={`chartSelector_${chartId}`}\r\n className={`chartSelector_${chartId} ${className ?? ''}`}\r\n value={current ?? '0'}\r\n onChange={(ev) => {\r\n ev.preventDefault();\r\n setCurrent(ev.target.value);\r\n }}\r\n >\r\n {pieces\r\n .map((piece, i) => {\r\n return {\r\n label: piece,\r\n value: `${i}`,\r\n };\r\n })\r\n .map((option) => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}{' '}\r\n </Select>\r\n );\r\n}\r\n\r\nexport default ChartSelector;\r\n","import { useTooltip } from '@apia/components';\r\nimport { Line } from '@visx/shape';\r\nimport { useMemo } from 'react';\r\nimport { TApiaChartDefinition } from '../types';\r\nimport tinycolor from 'tinycolor2';\r\nimport { Box } from '@apia/theme';\r\n\r\nconst WaterfallBar = ({\r\n width,\r\n height,\r\n x,\r\n y,\r\n fill,\r\n x1,\r\n lineY,\r\n x2,\r\n stroke,\r\n strokeDashArray,\r\n textX,\r\n textY,\r\n textContent,\r\n isLast,\r\n step,\r\n columnName,\r\n chart,\r\n}: {\r\n width: number;\r\n height: number;\r\n x: string | number;\r\n y: string | number;\r\n fill: string;\r\n x1: string | number;\r\n x2: string | number;\r\n lineY: string | number;\r\n stroke: string;\r\n strokeDashArray: string | number;\r\n textX: string | number;\r\n textY: string | number;\r\n textContent: string;\r\n isLast: boolean;\r\n step: {\r\n x: string;\r\n y: string;\r\n start: number;\r\n end: number;\r\n color: string;\r\n };\r\n columnName: string;\r\n chart: TApiaChartDefinition;\r\n}) => {\r\n const { open } = useTooltip({\r\n children: (\r\n <>\r\n <div\r\n style={{\r\n color: step.color,\r\n }}\r\n >\r\n <strong>{columnName}</strong>\r\n </div>\r\n {chart.showValues && <div>{step.y}</div>}\r\n <div>{step.x}</div>\r\n </>\r\n ),\r\n });\r\n\r\n return (\r\n <>\r\n <Box\r\n as={'rect'}\r\n sx={useMemo(() => {\r\n return {\r\n width: `${width}px`,\r\n height: `${height}px`,\r\n x: `${x}px`,\r\n y: `${y}px`,\r\n fill: `${fill}`,\r\n '&:hover': {\r\n fill: `#${tinycolor(fill).saturate(25).toHex()}`,\r\n },\r\n transition: 'fill 500ms',\r\n };\r\n }, [fill, height, width, x, y])}\r\n onMouseEnter={(ev) => {\r\n open({\r\n attachToElement: () => ev.target as HTMLElement,\r\n attachToElementAnchorPoint: 'center',\r\n });\r\n }}\r\n onMouseLeave={() => {}}\r\n />\r\n\r\n {!isLast && (\r\n <Line\r\n x1={x1}\r\n x2={x2}\r\n y1={lineY}\r\n y2={lineY}\r\n stroke={stroke}\r\n strokeDasharray={strokeDashArray}\r\n />\r\n )}\r\n <text textAnchor=\"middle\" x={textX} y={textY}>\r\n {textContent}\r\n </text>\r\n </>\r\n );\r\n};\r\n\r\nexport { WaterfallBar };\r\n","import { Box } from '@apia/theme';\r\nimport { TChartRendererProps } from '../types';\r\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\r\nimport React, { useMemo, useLayoutEffect, useState } from 'react';\r\nimport { scaleBand, scaleLinear } from '@visx/scale';\r\nimport { extent } from 'd3-array';\r\nimport { parseMargin } from '../util/parseMargin';\r\nimport { Group } from '@visx/group';\r\nimport { GridRows } from '@visx/grid';\r\nimport { AxisBottom, AxisLeft } from '@visx/axis';\r\nimport { uniqueId } from 'lodash';\r\nimport ChartSelector from '../util/ChartSelector';\r\nimport { WaterfallBar } from './WaterfallBar';\r\nimport { LegendContainer } from '../util/LegendContainer';\r\n\r\nexport interface IParsedColumn {\r\n columnName: string;\r\n [key: string]: string;\r\n}\r\n\r\ntype TDatum = { key: string; value: string };\r\n\r\nconst calculateWaterfallSteps = ({\r\n data,\r\n xAccessor,\r\n yAccessor,\r\n showFinal,\r\n colors,\r\n}: {\r\n data: TDatum[];\r\n xAccessor: (d: TDatum) => string;\r\n yAccessor: (d: TDatum) => string;\r\n showFinal: boolean;\r\n colors: {\r\n positive: string;\r\n negative: string;\r\n total: string;\r\n stepConnector: string;\r\n };\r\n}) => {\r\n // Holds cumulative value\r\n let cumulativeTotal = 0;\r\n\r\n // Calculate bars for each data point\r\n const steps = data.map((datum) => {\r\n const xValue = xAccessor(datum);\r\n const yValue = yAccessor(datum);\r\n\r\n const prevTotal = cumulativeTotal;\r\n cumulativeTotal += Number(yValue);\r\n\r\n return {\r\n x: xValue,\r\n y: yValue,\r\n start: prevTotal,\r\n end: cumulativeTotal,\r\n color: Number(yValue) > 0 ? colors.positive : colors.negative,\r\n };\r\n });\r\n\r\n // Add final Total bar\r\n if (showFinal) {\r\n steps.push({\r\n x: 'Total',\r\n y: cumulativeTotal as unknown as string,\r\n start: 0,\r\n end: cumulativeTotal,\r\n color: colors.total,\r\n });\r\n }\r\n\r\n return steps;\r\n};\r\nfunction adjustDimensions({\r\n width,\r\n height,\r\n maxWidth,\r\n}: {\r\n width: number;\r\n height: number;\r\n maxWidth: number;\r\n}) {\r\n if (width <= maxWidth) {\r\n return { width, height };\r\n }\r\n\r\n const ratio = width / height;\r\n const newWidth = maxWidth;\r\n const newHeight = Math.floor(newWidth / ratio);\r\n\r\n return { width: newWidth, height: newHeight };\r\n}\r\nexport const WaterfallBars = ({\r\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\r\n chart: {\r\n waterfallColors = {\r\n positive: '#49b86f',\r\n negative: '#c92e5b',\r\n total: '#434857',\r\n stepConnector: '#888d94',\r\n },\r\n ...chart\r\n },\r\n className,\r\n chartId,\r\n allowZoom,\r\n}: TChartRendererProps) => {\r\n const effectiveMargin = parseMargin(margin);\r\n if (!chart.showAxisYTitle) {\r\n effectiveMargin.left = 50;\r\n }\r\n let innerWidth =\r\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\r\n let innerHeight =\r\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\r\n if (innerWidth > chart.ratio.maxWidth) {\r\n const newValues = adjustDimensions({\r\n height: innerHeight,\r\n width: innerWidth,\r\n maxWidth: chart.ratio.maxWidth,\r\n });\r\n innerWidth = newValues.width;\r\n innerHeight = newValues.height;\r\n }\r\n\r\n const getXValue = (d: TDatum) => d.key;\r\n const getYValue = (d: TDatum) => d.value;\r\n\r\n const charts = arrayOrArray(chart.dataSets?.data)\r\n .filter((piece) => !!piece.sets)\r\n .map((piece) => {\r\n return {\r\n ...piece,\r\n coordinate: piece.sets,\r\n };\r\n });\r\n const [currentPie, setCurrentPie] = useState('0');\r\n const chartNames = charts.map((piece) => {\r\n return piece.name;\r\n });\r\n const steps = useMemo(\r\n () =>\r\n calculateWaterfallSteps({\r\n data: arrayOrArray(chart.dataSets.data)[currentPie as unknown as number]\r\n .sets as TDatum[],\r\n xAccessor: getXValue,\r\n yAccessor: getYValue,\r\n showFinal: chart.showTotal ?? true,\r\n colors: waterfallColors,\r\n }),\r\n [chart.dataSets.data, chart.showTotal, currentPie, waterfallColors],\r\n );\r\n\r\n // Build scales\r\n const padding = 0.2;\r\n\r\n const xScale = scaleBand({\r\n domain: steps.map((step) => step.x),\r\n padding,\r\n range: [0, innerWidth],\r\n });\r\n\r\n const yDomain = useMemo(() => {\r\n const values = steps.flatMap((step) => [step.start, step.end]);\r\n const [min, max] = extent<number>(values);\r\n return min != null && max != null ? [min - 5, max + 5] : undefined;\r\n }, [steps]);\r\n\r\n const yScale = scaleLinear({\r\n domain: yDomain,\r\n nice: true,\r\n range: [innerHeight, 0],\r\n });\r\n\r\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\r\n useLayoutEffect(() => {\r\n document\r\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\r\n .forEach((current) => {\r\n const width = current.getBoundingClientRect().width;\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transformOrigin =\r\n (current.getAttribute('x') as string) + 'px 14px';\r\n // eslint-disable-next-line no-param-reassign\r\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\r\n });\r\n });\r\n\r\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\r\n undefined,\r\n !allowZoom ?? true,\r\n );\r\n return (\r\n <>\r\n {charts.length > 1 && (\r\n <Box className=\"chart__combo__wrapper\">\r\n <ChartSelector\r\n chartId={chartId}\r\n pieces={chartNames}\r\n className=\"chartSelectorCombo\"\r\n current={currentPie}\r\n setCurrent={setCurrentPie}\r\n />\r\n </Box>\r\n )}\r\n <Box id={id} className={className} ref={boxRef}>\r\n <svg\r\n height={chart.ratio.height}\r\n width={chart.ratio.width}\r\n ref={elementRef}\r\n >\r\n <Group left={effectiveMargin.left} top={effectiveMargin.top}>\r\n <GridRows scale={yScale} width={innerWidth} strokeDasharray=\"5\" />\r\n {steps.map((step, index) => {\r\n const x = xScale(step.x);\r\n const y = yScale(Math.max(step.start, step.end));\r\n\r\n if (x == null || y == null) {\r\n return null;\r\n }\r\n\r\n const barHeight = Math.abs(yScale(step.start) - yScale(step.end));\r\n\r\n const isLast = index === steps.length - 1;\r\n const linePadding = 2;\r\n const x1 = x + xScale.bandwidth() + linePadding;\r\n const x2 = x + xScale.bandwidth() / (1 - padding) - linePadding;\r\n const lineY = step.end < step.start ? y + barHeight : y;\r\n\r\n const labelOffset = 10;\r\n const labelY =\r\n yScale(step.end) +\r\n ((step.y as unknown as number) < 0\r\n ? labelOffset\r\n : -labelOffset);\r\n\r\n let currentYValue = 0;\r\n steps\r\n .filter((_, i) => {\r\n if ((chart.showTotal ?? true) && !steps[i + 1]) {\r\n return false;\r\n }\r\n return i <= index;\r\n })\r\n .forEach((step) => {\r\n currentYValue += Number(step.y);\r\n });\r\n\r\n return (\r\n <WaterfallBar\r\n chart={chart}\r\n columnName={chartNames[currentPie as unknown as number]}\r\n fill={step.color}\r\n height={barHeight}\r\n isLast={isLast}\r\n key={index}\r\n lineY={lineY}\r\n step={step}\r\n stroke={waterfallColors.stepConnector}\r\n strokeDashArray={2}\r\n textContent={\r\n chart.showTotal ?? true\r\n ? step.y\r\n : (currentYValue as unknown as string)\r\n }\r\n textX={x + xScale.bandwidth() / 2}\r\n textY={labelY + 5}\r\n width={xScale.bandwidth()}\r\n x={x}\r\n y={y}\r\n x1={x1}\r\n x2={x2}\r\n />\r\n );\r\n })}\r\n <AxisLeft\r\n label={''}\r\n scale={yScale}\r\n hideAxisLine\r\n hideTicks\r\n tickLabelProps={() => ({\r\n textAnchor: 'end',\r\n verticalAnchor: 'middle',\r\n })}\r\n />\r\n <AxisBottom\r\n scale={xScale}\r\n top={innerHeight}\r\n tickLabelProps={() => ({\r\n textAnchor: 'middle',\r\n verticalAnchor: 'middle',\r\n className: 'tickLabel',\r\n })}\r\n />\r\n </Group>\r\n </svg>\r\n </Box>\r\n <LegendContainer\r\n id={chartId}\r\n avoidEvent\r\n references={[\r\n {\r\n title: arrayOrArray(chart.dataSets.data)[\r\n currentPie as unknown as number\r\n ].name,\r\n color: 'transparent',\r\n },\r\n ]}\r\n />\r\n </>\r\n );\r\n};\r\n","import { TApiaChartDefinition, TChartRendererProps } from './types';\r\nimport React, { useMemo, RefAttributes } from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { getVariant, makeStyledComponent, spacing } from '@apia/theme';\r\nimport { HorizontalBars } from './horizontalBars/HorizontalBars';\r\nimport { PieChart } from './pie/Pie';\r\nimport { getIndex, makeImperativeComponent } from '@apia/util';\r\nimport { VerticalBars } from './verticalBars/VerticalBars';\r\nimport { ChartContext } from './ChartContext';\r\nimport { LineChart } from './linear/LineChart';\r\nimport { WaterfallBars } from './waterfallBars/WaterfallBars';\r\n\r\nconst frontColor = 'hsl(196, 37%, 13%)';\r\n\r\nfunction useMultipleRefs<T extends HTMLElement | null>(\r\n ...refs: React.MutableRefObject<T>[]\r\n) {\r\n return React.useCallback(\r\n function setRef(element: T) {\r\n refs.forEach((current) => {\r\n // eslint-disable-next-line no-param-reassign\r\n if (current) current.current = element;\r\n });\r\n },\r\n [refs],\r\n );\r\n}\r\n\r\nexport type TChartEvents = {\r\n highlight: string;\r\n};\r\n\r\nexport const [, chartMethods, ChartRenderer] = makeImperativeComponent<\r\n {\r\n currentChart: TApiaChartDefinition;\r\n chartConfig?: Partial<Omit<TApiaChartDefinition, 'columns'>>;\r\n chartProps?: Partial<TChartRendererProps>;\r\n allowScaleChange?: boolean;\r\n chartId: string;\r\n allowZoom?: boolean;\r\n } & RefAttributes<HTMLElement>,\r\n TChartEvents\r\n>()({\r\n Component: makeStyledComponent(\r\n 'ChartRenderer',\r\n 'layout.charts',\r\n {\r\n red: {\r\n schema: 'schemas.red',\r\n },\r\n orange: {\r\n schema: 'schemas.orange',\r\n },\r\n green: {\r\n schema: 'schemas.green',\r\n },\r\n blue: {\r\n schema: 'schemas.blue',\r\n },\r\n violet: {\r\n schema: 'schemas.violet',\r\n },\r\n turquoise: {\r\n schema: 'schemas.turquoise',\r\n },\r\n yellow: {\r\n schema: 'schemas.yellow',\r\n },\r\n grey: {\r\n schema: 'schemas.grey',\r\n },\r\n ocean: {\r\n schema: 'schemas.ocean',\r\n },\r\n sunset: {\r\n schema: 'schemas.sunset',\r\n },\r\n common: {\r\n axis: {\r\n stroke: frontColor,\r\n title: frontColor,\r\n },\r\n schema: frontColor,\r\n background: 'hsl(200deg 20% 98%)',\r\n grid: {\r\n stroke: frontColor,\r\n opacity: '0.1',\r\n },\r\n toolTip: {\r\n backgroundColor: 'rgb(232, 241, 255)',\r\n border: '1px solid #07c',\r\n color: frontColor,\r\n padding: '.3rem .5rem',\r\n borderRadius: '3px',\r\n fontSize: '18px',\r\n boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\r\n lineHeight: '1em',\r\n },\r\n },\r\n '.legendContainer': {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n gap: spacing(3),\r\n flexWrap: 'wrap',\r\n },\r\n\r\n '.chart__combo__wrapper': {\r\n position: 'absolute',\r\n },\r\n\r\n '.legendItem .button__content': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n wordWrap: 'normal',\r\n },\r\n },\r\n // eslint-disable-next-line react/display-name\r\n React.forwardRef(\r\n (\r\n {\r\n currentChart,\r\n chartId,\r\n allowZoom,\r\n }: {\r\n currentChart: TApiaChartDefinition;\r\n chartProps?: Partial<TChartRendererProps>;\r\n allowScaleChange?: boolean;\r\n chartId: string;\r\n allowModal?: boolean;\r\n allowZoom?: boolean;\r\n },\r\n ref,\r\n ) => {\r\n const innerRef = React.useRef<HTMLElement | null>(null);\r\n const setRefs = useMultipleRefs(\r\n ref as React.MutableRefObject<HTMLElement>,\r\n innerRef,\r\n );\r\n\r\n const contextValue = useMemo(() => ({ chartId }), [chartId]);\r\n const CurrentChart = getIndex(\r\n [PieChart, HorizontalBars, VerticalBars, LineChart, WaterfallBars],\r\n [\r\n currentChart.chartType === 'pie2D',\r\n currentChart.chartType === 'barH2D',\r\n currentChart.chartType === 'barV2D',\r\n currentChart.chartType === 'linear',\r\n currentChart.chartType === 'waterfall',\r\n ],\r\n 0,\r\n );\r\n\r\n return (\r\n <ChartContext.Provider value={contextValue}>\r\n <Box\r\n ref={setRefs}\r\n className=\"chart__chartRenderer\"\r\n {...getVariant('layout.charts')}\r\n >\r\n <CurrentChart\r\n chart={currentChart}\r\n chartId={chartId}\r\n parentRef={innerRef as React.MutableRefObject<HTMLElement>}\r\n allowZoom={allowZoom}\r\n />\r\n </Box>\r\n </ChartContext.Provider>\r\n );\r\n },\r\n ),\r\n true,\r\n ),\r\n});\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 90;\r\nconst END_ANGLE = 270;\r\n\r\nexport const Scale = ({\r\n currentValue,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n}: TApiaWidgetProps) => {\r\n const allTicks = false;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 10 + 1,\r\n diameter: diameter,\r\n });\r\n const gauge2 = useGauge({\r\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter / 2 + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 90,\r\n endAngle: 270,\r\n })}\r\n stroke=\"gray\"\r\n opacity=\"0.2\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n />\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n />\r\n {showText && (\r\n <text\r\n fill=\"black\"\r\n {...gauge.getLabelProps({ angle, offset: 20 })}\r\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n {allTicks &&\r\n gauge2.ticks.map((angle, i) => {\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={2}\r\n {...gauge.getTickProps({\r\n angle,\r\n length: 3,\r\n })}\r\n />\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n y={-diameter / 4 + 20}\r\n >\r\n {value}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 30;\r\nconst END_ANGLE = 330;\r\n\r\nexport const SpeedMeter = ({\r\n backgroundColor,\r\n colorRanges,\r\n currentValue,\r\n currentValueColor,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n}: TApiaWidgetProps) => {\r\n const allTicks = false;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: allTicks\r\n ? valueRanges[valueRanges.length - 1] - valueRanges[0] + 1\r\n : valueRanges[valueRanges.length - 1] / 10 + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n }\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 0,\r\n endAngle: 360,\r\n })}\r\n stroke=\"gray\"\r\n fill={backgroundColor ?? 'none'}\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n />\r\n {valueRanges.map((innerValue, i) => {\r\n const valueToAngle = (value: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n const angle =\r\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <g key={`${innerValue}_${i}`}>\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -50,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -55,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n key={`${innerValue}_${i}`}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n </g>\r\n );\r\n })}\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n />\r\n {showText && (\r\n <text\r\n fill=\"black\"\r\n {...gauge.getLabelProps({ angle, offset: 20 })}\r\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n y={diameter / 2}\r\n fill={currentValueColor}\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n >\r\n {value}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetProps } from '../types';\r\nimport { useCallback, useRef, useState, useEffect } from 'react';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const TLight = ({\r\n addBorder = false,\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n width,\r\n currentValueColor,\r\n currentValueFontSize,\r\n}: TApiaWidgetProps) => {\r\n const [value, setValue] = useState(currentValue);\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value < range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n\r\n const hasRendered = useRef(false);\r\n\r\n const onRenderSvg = useCallback(\r\n (el: SVGSVGElement) => {\r\n if (!el || hasRendered.current) return;\r\n\r\n hasRendered.current = true;\r\n\r\n const svgElement = el;\r\n const pathElement = el.querySelector('#TLight_arcs');\r\n\r\n if (!(svgElement && pathElement)) {\r\n return;\r\n }\r\n\r\n const pathBox = pathElement.getBoundingClientRect();\r\n const svgBox = svgElement.getBoundingClientRect();\r\n const pathWidth = pathBox.width;\r\n const pathHeight = pathBox.height;\r\n const pathX = pathBox.x - svgBox.x;\r\n const pathY = pathBox.y - svgBox.y;\r\n\r\n const viewBox = `${pathX - diameter / 2} ${\r\n pathY - diameter / 2\r\n } ${pathWidth} ${pathHeight}`;\r\n\r\n svgElement.setAttribute('viewBox', viewBox);\r\n\r\n svgElement.style.visibility = 'visible';\r\n },\r\n [diameter],\r\n );\r\n\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = currentValue - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n setValue(Math.round(step));\r\n },\r\n () => {\r\n lastCurrentValue.current = currentValue;\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentValue]);\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n style={{ visibility: 'hidden' }}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n id=\"TLight_svg\"\r\n ref={onRenderSvg}\r\n viewBox={`-${diameter / 2} -${diameter / 2} ${diameter} ${diameter}`}\r\n >\r\n <g id=\"TLight_arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n fill={getColor(value)}\r\n id=\"TLight_path\"\r\n style={{ transition: 'fill 0.3s' }}\r\n />\r\n {addBorder && (\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -2.5,\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n stroke={'black'}\r\n fill={'transparent'}\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n id=\"TLight_path\"\r\n />\r\n )}\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{ fontSize: `${currentValueFontSize ?? 100}pt` }}\r\n alignmentBaseline=\"central\"\r\n fill={currentValueColor}\r\n >\r\n {value}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport tinycolor from 'tinycolor2';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetProps } from '../types';\r\nimport { noNaN } from '@apia/util';\r\n\r\nconst START_ANGLE = 45;\r\nconst END_ANGLE = 315;\r\n\r\nexport const Oxford = ({\r\n backgroundColor,\r\n colorRanges,\r\n currentValue,\r\n currentValueColor,\r\n currentValueFontSize,\r\n height,\r\n maxValue,\r\n minValue,\r\n pointerColor,\r\n scaleValuesSize,\r\n valueRanges,\r\n width,\r\n}: TApiaWidgetProps) => {\r\n const allTicks = true;\r\n const value = currentValue;\r\n const diameter = Math.min(height, width);\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n\r\n const offset = 20;\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 10 + 1,\r\n diameter: diameter,\r\n });\r\n const gauge2 = useGauge({\r\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\r\n diameter: diameter,\r\n });\r\n\r\n const needle = gauge.getNeedleProps({\r\n value: 0,\r\n baseRadius: 12,\r\n tipRadius: 2,\r\n });\r\n\r\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n }\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: 0,\r\n endAngle: 360,\r\n })}\r\n stroke=\"black\"\r\n opacity=\"1\"\r\n fill={\r\n backgroundColor !== '' && backgroundColor !== undefined\r\n ? tinycolor(backgroundColor)\r\n .setAlpha(0.5)\r\n .toPercentageRgbString()\r\n : 'none'\r\n }\r\n strokeLinecap=\"round\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n {valueRanges.map((innerValue, i) => {\r\n if (!valueRanges[i + 1]) {\r\n return null;\r\n }\r\n\r\n const valueToAngle = (value: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n const angle =\r\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <g key={`${innerValue}_${i}`}>\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={'black'}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"square\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -20,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n stroke={getColor(innerValue)}\r\n opacity=\"0.1\"\r\n fill=\"none\"\r\n strokeLinecap=\"butt\"\r\n strokeWidth={75}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: -55,\r\n startAngle:\r\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\r\n endAngle:\r\n i === 0\r\n ? valueToAngle(valueRanges[1])\r\n : i === valueRanges.length - 1\r\n ? END_ANGLE\r\n : valueToAngle(valueRanges[i + 1]),\r\n })}\r\n key={`${innerValue}_${i}`}\r\n stroke={getColor(innerValue) || '#999'}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"butt\"\r\n strokeWidth={10}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </g>\r\n );\r\n })}\r\n </g>\r\n <g id=\"ticks\">\r\n {gauge.ticks.map((angle, i) => {\r\n const angleToValue = (angle: number) => {\r\n const angleRange = END_ANGLE - START_ANGLE;\r\n const valueRange = domainMax - domainMin;\r\n\r\n const value =\r\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\r\n\r\n return Math.round(value);\r\n };\r\n const asValue = angleToValue(angle);\r\n\r\n const showText = asValue % 10 === 0;\r\n\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={showText ? 4 : 2}\r\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n {showText && (\r\n <text\r\n fill={'black'}\r\n {...gauge.getLabelProps({\r\n angle,\r\n offset: 20,\r\n })}\r\n style={{\r\n fontSize: `${scaleValuesSize ?? 30}px`,\r\n }}\r\n >\r\n {asValue}\r\n </text>\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n {allTicks &&\r\n gauge2.ticks.map((angle, i) => {\r\n return (\r\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\r\n <line\r\n stroke=\"gray\"\r\n strokeWidth={2}\r\n {...gauge.getTickProps({\r\n angle,\r\n length: 3,\r\n })}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </React.Fragment>\r\n );\r\n })}\r\n </g>\r\n <g id=\"needle\">\r\n <circle fill={pointerColor} {...needle.base} r={20} />\r\n <circle fill={pointerColor} {...needle.base} />\r\n <circle\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n {...needle.tip}\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n />\r\n <polyline\r\n style={{\r\n transform: `rotate(${angle}deg)`,\r\n transition: 'transform 500ms',\r\n }}\r\n fill={pointerColor}\r\n opacity=\"0.5\"\r\n points={needle.points}\r\n />\r\n <circle fill=\"white\" {...needle.base} r={4} />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n alignmentBaseline=\"text-before-edge\"\r\n y={diameter / 5}\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n fill={currentValueColor}\r\n >\r\n {value}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetProps } from '../types';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const Counter = ({\r\n addBorder = false,\r\n colorRanges,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n width,\r\n maxValue,\r\n minValue,\r\n currentValueFontSize,\r\n panelId,\r\n}: TApiaWidgetProps) => {\r\n const [value, setValue] = useState(currentValue);\r\n const diameter = Math.min(height, width);\r\n const offset = 20;\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = currentValue - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n setValue(Math.round(step));\r\n },\r\n () => {\r\n lastCurrentValue.current = currentValue;\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentValue]);\r\n const widgetContainer = document.querySelector('.widgetContainer__Counter');\r\n let actualWidth = width;\r\n if (widgetContainer) {\r\n const box = widgetContainer.getBoundingClientRect();\r\n if (box.width < actualWidth) {\r\n actualWidth = box.width;\r\n }\r\n }\r\n return (\r\n <Box sx={{ position: 'relative' }} className=\"widgetContainer__Counter\">\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={actualWidth}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n {addBorder && (\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - 5,\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n stroke=\"gray\"\r\n opacity=\"0.2\"\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={2}\r\n />\r\n )}\r\n </g>\r\n </svg>\r\n <svg\r\n height={Math.max(width, height)}\r\n width={actualWidth}\r\n style={{ position: 'absolute', left: 0, top: 0 }}\r\n >\r\n <text\r\n x={actualWidth / 2}\r\n y={Math.max(width, height) / 2}\r\n textAnchor=\"middle\"\r\n style={{\r\n fontSize: `${currentValueFontSize ?? 30}px`,\r\n transition: 'fill 0.5s',\r\n }}\r\n alignmentBaseline=\"central\"\r\n fill={getColor(value)}\r\n id={`text_${panelId}`}\r\n >\r\n {value}\r\n </text>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { useGauge } from 'use-gauge';\r\nimport { TApiaWidgetProps } from '../types';\r\nimport { addBoundary, noNaN, animate } from '@apia/util';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nconst START_ANGLE = 0;\r\nconst END_ANGLE = 360;\r\n\r\nexport const Ring = ({\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n ringEmptyColor,\r\n ringWidth,\r\n width,\r\n currentValueColor,\r\n currentValueFontSize,\r\n}: TApiaWidgetProps) => {\r\n const [value, setValue] = useState(currentValue);\r\n const diameter = Math.min(height, width);\r\n const offset = 20;\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const domainMin = noNaN(minValue) ?? valueRanges[0];\r\n const gauge = useGauge({\r\n domain: [domainMin, domainMax],\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n numTicks: 0,\r\n diameter: diameter,\r\n });\r\n\r\n const lastCurrentValue = useRef(0);\r\n useEffect(() => {\r\n const difference = currentValue - lastCurrentValue.current;\r\n return animate(\r\n 500,\r\n (progress) => {\r\n const step = addBoundary(\r\n difference * progress + lastCurrentValue.current,\r\n domainMin,\r\n domainMax,\r\n );\r\n setValue(Math.round(step));\r\n },\r\n () => {\r\n lastCurrentValue.current = currentValue;\r\n },\r\n );\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentValue]);\r\n\r\n function getColor(value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n }\r\n\r\n const valueToAngle = (value: number) => {\r\n const angleRange = 360;\r\n const valueRange = domainMax - domainMin;\r\n const angle = ((value - domainMin) / valueRange) * angleRange;\r\n\r\n return Math.round(angle);\r\n };\r\n\r\n return (\r\n <Box>\r\n <svg\r\n {...gauge.getSVGProps()}\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\r\n diameter + offset * 2\r\n } ${diameter + offset * 2}`}\r\n >\r\n <g id=\"arcs\">\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\r\n startAngle: START_ANGLE,\r\n endAngle: END_ANGLE,\r\n })}\r\n stroke={ringEmptyColor ?? 'transparent'}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\r\n />\r\n <path\r\n {...gauge.getArcProps({\r\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\r\n startAngle: 180,\r\n endAngle:\r\n valueToAngle(value) === 360\r\n ? 179 + valueToAngle(value)\r\n : 180 + valueToAngle(value),\r\n })}\r\n stroke={getColor(value)}\r\n opacity=\"0.8\"\r\n fill=\"none\"\r\n strokeLinecap=\"square\"\r\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\r\n style={{\r\n transition: 'stroke 0.5s',\r\n }}\r\n />\r\n </g>\r\n <g>\r\n <text\r\n textAnchor=\"middle\"\r\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\r\n alignmentBaseline=\"central\"\r\n color={currentValueColor}\r\n >\r\n {value}\r\n </text>\r\n </g>\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","const colorGetter = (\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n innerValue: number,\r\n) => {\r\n let color = '';\r\n valueRanges.forEach((value, index) => {\r\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\r\n color = colorRanges[index - 1];\r\n }\r\n });\r\n return color;\r\n};\r\n\r\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n}\r\n\r\nfunction getInnerColor(\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n value: number,\r\n) {\r\n const index = valueRanges.findIndex((range) => value < range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n}\r\n\r\nconst valueToTickPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n\r\n return Math.round(percentage);\r\n};\r\n\r\nconst valueToPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n const test = (percentage * 69) / 100;\r\n\r\n return Math.round(test);\r\n};\r\n\r\nexport {\r\n colorGetter,\r\n getColor,\r\n getInnerColor,\r\n valueToPercent,\r\n valueToTickPercent,\r\n};\r\n","const colorGetter = (\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n innerValue: number,\r\n) => {\r\n let color = '';\r\n valueRanges.forEach((value, index) => {\r\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\r\n color = colorRanges[index - 1];\r\n }\r\n });\r\n return color;\r\n};\r\n\r\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\r\n const index = valueRanges.findIndex((range) => value <= range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index];\r\n}\r\n\r\nfunction getInnerColor(\r\n valueRanges: number[],\r\n colorRanges: string[],\r\n value: number,\r\n) {\r\n const index = valueRanges.findIndex((range) => value < range);\r\n\r\n if (index === -1) {\r\n return colorRanges[0];\r\n }\r\n\r\n return colorRanges[index - 1] ?? colorRanges[index];\r\n}\r\n\r\nconst valueToTickPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n\r\n return Math.round(percentage);\r\n};\r\n\r\nconst valueToPercent = (\r\n domainMax: number,\r\n baseValue: number,\r\n value: number,\r\n) => {\r\n const range = domainMax - (baseValue ?? 0);\r\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\r\n const test = (percentage * 69) / 100;\r\n\r\n return Math.round(test);\r\n};\r\n\r\nexport {\r\n colorGetter,\r\n getColor,\r\n getInnerColor,\r\n valueToPercent,\r\n valueToTickPercent,\r\n};\r\n","import { noNaN } from '@apia/util';\r\nimport { useState, useRef, useCallback } from 'react';\r\nimport { valueToPercent } from './util';\r\n\r\nexport const useCustomWidget = ({\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n panelId,\r\n}: {\r\n maxValue: number;\r\n minValue: number;\r\n currentValue: number;\r\n panelId: string;\r\n}) => {\r\n const baseValue = minValue;\r\n const domainMax = maxValue;\r\n\r\n const [yDifference, setYDifference] = useState(0);\r\n const svgRect = useRef<DOMRect>({} as DOMRect);\r\n const pathRect = useRef<DOMRect>({} as DOMRect);\r\n\r\n const onRenderRect = useCallback(\r\n (el: SVGRectElement) => {\r\n if (!el) return;\r\n\r\n const svgElement = el.closest('svg');\r\n const pathElement = svgElement?.querySelector(`#path_${panelId}`);\r\n\r\n if (!svgElement) throw new Error('No svg');\r\n if (!pathElement) throw new Error('No path');\r\n\r\n const svgBox = svgElement.getBoundingClientRect();\r\n const pathBox = pathElement.getBoundingClientRect();\r\n\r\n const pathY = pathBox.y - svgBox.y;\r\n\r\n svgRect.current = svgBox;\r\n pathRect.current = pathBox;\r\n setYDifference(pathY);\r\n },\r\n [panelId],\r\n );\r\n\r\n const pathX = noNaN(pathRect.current.x - svgRect.current.x);\r\n const pathY = noNaN(pathRect.current.y - svgRect.current.y);\r\n const pathWidth = noNaN(pathRect.current.width);\r\n const pathHeight = noNaN(pathRect.current.height);\r\n\r\n const viewBox = `${pathX} ${pathY} ${pathWidth} ${pathHeight}`;\r\n\r\n const rectProps: React.SVGProps<SVGRectElement> = {\r\n y: noNaN(\r\n (valueToPercent(domainMax, baseValue, currentValue) * pathHeight) / 100 +\r\n yDifference,\r\n ),\r\n x: pathX,\r\n width: pathWidth,\r\n height: pathHeight,\r\n style: {\r\n visibility: 'visible',\r\n transition: 'y 0.5s, fill 0.5s',\r\n },\r\n };\r\n\r\n return {\r\n rectRef: onRenderRect,\r\n svgViewBox: viewBox,\r\n rectProps,\r\n pathX,\r\n pathY,\r\n pathRect,\r\n svgRect,\r\n };\r\n};\r\n","import { Box } from '@apia/theme';\r\nimport { TApiaWidgetProps } from '../types';\r\nimport {\r\n valueToTickPercent,\r\n colorGetter,\r\n getInnerColor,\r\n getColor,\r\n} from './util';\r\nimport { noNaN } from '@apia/util';\r\nimport { useCustomWidget } from '../custom/useCustomWidget';\r\n// Usar un segundo svg para los textos\r\nexport const Thermometer = ({\r\n colorRanges,\r\n maxValue,\r\n minValue,\r\n currentValue,\r\n height,\r\n valueRanges,\r\n width,\r\n panelId,\r\n currentValueFontSize,\r\n}: TApiaWidgetProps) => {\r\n const value = currentValue;\r\n const baseValue = noNaN(minValue) ?? valueRanges[0];\r\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\r\n const pathDValue = `m 179.6875,717.73633 c -0.45013,0 -0.8125,0.36237 -0.8125,0.8125 l 0,8.46289 a 2.3125,2.3125 0 0 0 -1.5,2.16211 2.3125,2.3125 0 0 0 2.3125,2.3125 2.3125,2.3125 0 0 0 2.3125,-2.3125 2.3125,2.3125 0 0 0 -1.5,-2.16211 l 0,-8.46289 c 0,-0.45013 -0.36237,-0.8125 -0.8125,-0.8125 z`;\r\n\r\n const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({\r\n currentValue: value,\r\n maxValue: domainMax,\r\n minValue: baseValue,\r\n panelId,\r\n });\r\n\r\n const boxValues = {\r\n height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),\r\n width: noNaN(Math.max(width, height)),\r\n x: pathX,\r\n y: pathY,\r\n };\r\n\r\n const tickArray = valueRanges.map((val, i) => {\r\n return {\r\n height:\r\n boxValues.height *\r\n (valueToTickPercent(domainMax, baseValue, val) / 100),\r\n color: !valueRanges[i + 1]\r\n ? 'black'\r\n : colorGetter(valueRanges, colorRanges, val),\r\n value: val,\r\n };\r\n });\r\n\r\n return (\r\n <Box sx={{ position: 'relative' }}>\r\n <svg\r\n height={Math.max(width, height)}\r\n width={Math.max(width, height)}\r\n id={`svg_${panelId}`}\r\n viewBox={svgViewBox}\r\n style={{ position: 'relative', top: '10px' }}\r\n >\r\n <clipPath id=\"clipPath\">\r\n <path d={pathDValue} />\r\n </clipPath>\r\n <mask id=\"myMask\">\r\n <path d={pathDValue} id=\"maskPath\" fill=\"white\" />\r\n </mask>\r\n\r\n <path d={pathDValue} id={`path_${panelId}`} fill=\"white\" />\r\n\r\n <rect\r\n fill={getInnerColor(valueRanges, colorRanges, value)}\r\n id={`rect_${panelId}`}\r\n mask=\"url(#myMask)\"\r\n ref={rectRef}\r\n {...rectProps}\r\n />\r\n\r\n <path\r\n d={pathDValue}\r\n id=\"path\"\r\n fill=\"none\"\r\n stroke=\"white\"\r\n strokeWidth={10}\r\n clipPath=\"url(#clipPath)\"\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n <path\r\n clipPath=\"url(#clipPath)\"\r\n d={pathDValue}\r\n id=\"path\"\r\n fill=\"none\"\r\n stroke=\"black\"\r\n strokeWidth={5}\r\n vectorEffect={'non-scaling-stroke'}\r\n />\r\n </svg>\r\n <svg\r\n height={Math.max(width, height) + 10}\r\n width={Math.max(width, height)}\r\n style={{ position: 'absolute', left: 0, top: 0 }}\r\n >\r\n {boxValues.x && (\r\n <g>\r\n <text\r\n x={Math.max(width, height) / 2}\r\n y={Math.max(width, height) - Math.max(width, height) / 6 + 10}\r\n style={{\r\n fontSize: `${noNaN(currentValueFontSize) ?? 50}px`,\r\n }}\r\n textAnchor=\"middle\"\r\n alignmentBaseline={'central'}\r\n vectorEffect={'non-scaling-stroke'}\r\n >\r\n {value}\r\n </text>\r\n </g>\r\n )}\r\n {tickArray.map((tick, i) => {\r\n return (\r\n <g key={i}>\r\n <rect\r\n x={\r\n i === 0\r\n ? Math.max(width, height) / 2 + 30\r\n : Math.max(width, height) / 2 + 20\r\n }\r\n y={tick.height + 10}\r\n width={'15px'}\r\n height={'3px'}\r\n vectorEffect={'non-scaling-stroke'}\r\n fill={getColor(valueRanges, colorRanges, tick.value)}\r\n />\r\n <text\r\n x={\r\n i === 0\r\n ? Math.max(width, height) - Math.max(width, height) / 3 + 10\r\n : Math.max(width, height) - Math.max(width, height) / 3\r\n }\r\n y={tickArray[i + 1] ? tick.height + 16 : tick.height + 1.5}\r\n textAnchor=\"middle\"\r\n alignmentBaseline={\r\n tickArray[i + 1] ? 'auto' : 'text-before-edge'\r\n }\r\n >\r\n {tick.value}\r\n </text>\r\n </g>\r\n );\r\n })}\r\n </svg>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { Scale } from './scale/Scale';\r\nimport { SpeedMeter } from './speedMeter/SpeedMeter';\r\nimport { TLight } from './tLight/TLight';\r\nimport { Oxford } from './oxford/Oxford';\r\nimport { Counter } from './counter/Counter';\r\nimport { Ring } from './ring/Ring';\r\nimport { Thermometer } from './thermometer/Thermometer';\r\n// import { Custom } from './custom/Custom';\r\nimport { TWidgetData } from './types';\r\nimport { arrayOrArray, getIndex } from '@apia/util';\r\nimport tinycolor from 'tinycolor2';\r\nimport { usePanelIdentity } from '@apia/dashboard';\r\n\r\nexport const WidgetContainer = ({ data }: { data: TWidgetData }) => {\r\n // const mockData: TWidgetData = {\r\n // border: true,\r\n // backgroundColor: 'white',\r\n // currentValue: 1010,\r\n // height: 400,\r\n // width: 400,\r\n // maxValue: 1050,\r\n // minValue: 1000,\r\n // noValueColor: '',\r\n // pointerColor: 'blue',\r\n // ringAnchor: 5,\r\n // scaleFontSize: 20,\r\n // valueColor: 'darkblue',\r\n // valueDecimals: 1,\r\n // valueFontSize: 50,\r\n // valueType: '',\r\n // widKpiType: 0,\r\n // zones: {\r\n // Zone: [\r\n // {\r\n // color: 'blue',\r\n // maximum: 1020,\r\n // minimum: 1000,\r\n // transparency: 230,\r\n // },\r\n // {\r\n // color: 'purple',\r\n // maximum: 1040,\r\n // minimum: 1020,\r\n // transparency: 150,\r\n // },\r\n // {\r\n // color: 'red',\r\n // maximum: 1050,\r\n // minimum: 1040,\r\n // transparency: 255,\r\n // },\r\n // ],\r\n // },\r\n // };\r\n\r\n const realData: TWidgetData = {\r\n ...data,\r\n };\r\n\r\n const valueRanges = Array.from(\r\n new Set(\r\n arrayOrArray(realData.zones.Zone)\r\n .map((zone) => {\r\n return [Number(zone.minimum), Number(zone.maximum)];\r\n })\r\n .flat()\r\n .sort((a, b) => a - b),\r\n ),\r\n );\r\n\r\n const colorRanges = arrayOrArray(realData.zones.Zone)\r\n .map((zone) => {\r\n return tinycolor(zone.color)\r\n .setAlpha(1 - (255 - zone.transparency) / 255)\r\n .toPercentageRgbString();\r\n })\r\n .flat();\r\n\r\n const CurrentWidget = getIndex(\r\n [SpeedMeter, Oxford, Counter, TLight, Thermometer, Scale, Ring],\r\n [\r\n realData.widKpiType === '1',\r\n realData.widKpiType === '2',\r\n realData.widKpiType === '3',\r\n realData.widKpiType === '4',\r\n realData.widKpiType === '5',\r\n realData.widKpiType === '6',\r\n realData.widKpiType === '7',\r\n ],\r\n 0,\r\n );\r\n const panelData = usePanelIdentity();\r\n\r\n return (\r\n <Box>\r\n <CurrentWidget\r\n addBorder={realData.border}\r\n backgroundColor={realData.backgroundColor}\r\n colorRanges={colorRanges}\r\n currentValue={Number(realData.currentValue)}\r\n decimals={realData.valueDecimals}\r\n currentValueColor={realData.valueColor}\r\n currentValueFontSize={realData.valueFontSize}\r\n forceProp={realData.forceProp}\r\n height={realData.height}\r\n panelId={panelData.panelId}\r\n maxValue={realData.maxValue}\r\n minValue={realData.minValue}\r\n pointerColor={realData.pointerColor}\r\n ringEmptyColor={realData.noValueColor}\r\n ringWidth={realData.ringAnchor}\r\n scaleValuesSize={realData.scaleFontSize}\r\n valueRanges={valueRanges}\r\n width={realData.width}\r\n />\r\n </Box>\r\n );\r\n};\r\n"],"names":["Bar","_a","__spreadProps","__spreadValues","adjustDimensions","_b","Fragment","step","START_ANGLE","END_ANGLE","angle","value","pathY"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/charts/util/parseMargin.ts","../src/charts/ChartContext.tsx","../src/charts/util/LegendItem.tsx","../src/charts/util/LegendContainer.tsx","../src/charts/horizontalBars/Bar.tsx","../src/charts/util/getBarColor.tsx","../src/charts/util/useChartStyles.ts","../src/charts/horizontalBars/HorizontalBars.tsx","../src/charts/pie/Slice.tsx","../src/charts/pie/TextSlice.tsx","../src/charts/pie/usePieAnimation.ts","../src/charts/pie/Pie.tsx","../src/charts/verticalBars/Bar.tsx","../src/charts/verticalBars/VerticalBars.tsx","../src/charts/linear/Node.tsx","../src/charts/linear/LineChart.tsx","../src/charts/util/ChartSelector.tsx","../src/charts/waterfallBars/WaterfallBar.tsx","../src/charts/waterfallBars/WaterfallBars.tsx","../src/charts/ChartRenderer.tsx","../src/widgets/scale/Scale.tsx","../src/widgets/speedMeter/SpeedMeter.tsx","../src/widgets/tLight/TLight.tsx","../src/widgets/oxford/Oxford.tsx","../src/widgets/counter/Counter.tsx","../src/widgets/ring/Ring.tsx","../src/widgets/thermometer/util.ts","../src/widgets/custom/util.ts","../src/widgets/custom/useCustomWidget.ts","../src/widgets/thermometer/Thermometer.tsx","../src/widgets/WidgetContainer.tsx"],"sourcesContent":["import { TChartRendererProps } from '../types';\n\nexport function parseMargin(\n margin: TChartRendererProps['margin'] = {\n left: 100,\n right: 50,\n top: 50,\n bottom: 70,\n },\n) {\n return typeof margin === 'number'\n ? { left: margin, right: margin, top: margin, bottom: margin }\n : margin;\n}\n","import { createContext } from 'react';\n\nexport type TChartContext = {\n chartId: string;\n};\n\nexport const ChartContext = createContext<TChartContext>({} as TChartContext);\n","import { SimpleButton } from '@apia/components';\nimport { icons } from '@apia/icons';\nimport { useCallback, useContext } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { chartMethods } from '../ChartRenderer';\n\nconst LegendItem = ({\n groupId,\n title,\n color,\n className,\n isHighlighted,\n isAnyHighlighted,\n avoidEvent,\n}: {\n groupId: string;\n title: string;\n color: string;\n className?: string;\n isHighlighted: boolean;\n isAnyHighlighted: boolean;\n avoidEvent: boolean;\n}) => {\n const { chartId } = useContext(ChartContext);\n const handleMouseEnter = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', groupId);\n }, [avoidEvent, chartId, groupId]);\n const handleMouseLeave = useCallback(() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', '');\n }, [avoidEvent, chartId]);\n return (\n <SimpleButton\n variant=\"icon-outline\"\n className={`${className ?? ''} ${\n isHighlighted ? 'highlight' : ''\n } legendItem`}\n iconColor={color || 'black'}\n icon={color === 'transparent' ? undefined : icons.SquareFilled}\n sx={{\n opacity: isAnyHighlighted && !isHighlighted ? '0.15' : '1',\n }}\n title={title}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {title}\n </SimpleButton>\n );\n};\n\nexport { LegendItem };\n","import { Box } from '@apia/theme';\nimport { LegendItem } from './LegendItem';\nimport { makeImperativeComponent } from '@apia/util';\n\nexport type TChartReference = {\n color: string;\n title: string;\n}[];\n\nexport const [legendContainerMethods, , LegendContainer] =\n makeImperativeComponent<\n {\n references: TChartReference;\n itemClassName?: string;\n avoidEvent?: boolean;\n },\n never\n >()({\n initialState: {\n highlightedBarGroup: '',\n },\n methods: {\n highlight(setState, highlightedBarGroup: string) {\n setState({ highlightedBarGroup });\n },\n },\n Component: ({ references, highlightedBarGroup, avoidEvent }) => {\n return (\n <Box className={`legendContainer`}>\n {references.map((data) => {\n return (\n <LegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n color={data.color}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })}\n </Box>\n );\n },\n });\n","import tinycolor from 'tinycolor2';\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\nimport {\n TApiaChartColorDisposition,\n TChartMargin,\n TChartRendererProps,\n} from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './HorizontalBars';\nimport {} from 'react';\nimport { useTooltip } from '@apia/components';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n effectiveMargin,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroupHorizontal<string>;\n parsedData: IParsedColumn[];\n effectiveMargin: TChartMargin;\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n });\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n }\n },\n });\n\n const { chartId } = useContext(ChartContext);\n return (\n <g>\n <text\n x={bar.x + 5}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"start\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value} - {parsedData[barGroup.index].columnName}\n </text>\n\n <Box\n as=\"rect\"\n className=\"chart__barRect\"\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width - effectiveMargin.left,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n effectiveMargin.left,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n }\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, '');\n }\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"width\"\n from={0}\n to={bar.width}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import tinycolor from 'tinycolor2';\n\nexport function getBarColor(\n colors: string[],\n index: number,\n alwaysDiffer = false,\n) {\n const module = colors.length;\n let count = 0;\n let barColor = '';\n if (!alwaysDiffer) {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n let innerIndex = index;\n while (innerIndex >= module) {\n innerIndex = index / module;\n count++;\n }\n barColor = tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex();\n }\n } else {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n barColor = tinycolor(colors[index % module]).toHex();\n }\n }\n return barColor;\n}\n","import { ColorModesScale, ThemeUIStyleObject, useThemeUI } from '@apia/theme';\nimport { IChartStylesSchemes, TChartStylesDefinition } from '../types';\nimport { getValueByPath } from '@apia/util';\n\nexport function useChartStyles(\n schemeName?: string,\n): TChartStylesDefinition | undefined {\n const { theme } = useThemeUI();\n\n if (!theme.layout)\n console.error('The layout property is missing in the current theme');\n\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\n ?.charts ?? {}) as IChartStylesSchemes;\n const defaultStyles = charts.common;\n const currentStylescheme = {\n schema: getValueByPath(\n theme.colors as ColorModesScale,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n charts[schemeName || 'blue']?.schema as string,\n ),\n };\n if (\n typeof currentStylescheme.schema === 'object' &&\n currentStylescheme.schema\n ) {\n const returnStyles: string[] = Object.entries(\n currentStylescheme.schema,\n ).map((e) => {\n const element = document.querySelector('*');\n if (element) {\n if ((e[1] as string).startsWith('var(')) {\n return window\n .getComputedStyle(element)\n .getPropertyValue((e[1] as string).slice(4, -1));\n }\n return window\n .getComputedStyle(element)\n .getPropertyValue(e[1] as unknown as string);\n }\n\n return window\n .getComputedStyle(document.querySelector('*') as Element)\n .getPropertyValue(e[1] as unknown as string);\n });\n return { ...defaultStyles, schema: returnStyles };\n }\n // return {\n // ...defaultStyles,\n // ...currentStylescheme,\n // };\n}\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport React, { useLayoutEffect, useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroupHorizontal } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { usePanelParametersSelector } from '@apia/dashboard';\nimport { Bar } from './Bar';\nimport { usePanAndZoom } from '@apia/util';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { useChartStyles } from '../util/useChartStyles';\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getYValue = (d: IParsedColumn) => d.columnName;\n\nexport type THorizontalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst HorizontalBars = ({\n margin = { top: 20, left: 50, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n outerClassName,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const yScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n innerHeight,\n ],\n domain: parsedData.map(getYValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, yScale.bandwidth()],\n });\n\n const xScaleLog = scaleLog<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const xScaleLine = scaleLinear<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const parameters = usePanelParametersSelector((global) => {\n return global;\n });\n\n const scale = parameters.PRMT_CHART_SCALE;\n\n const isLogScale = scale === '0';\n\n const xScale = useMemo(() => {\n if (!isLogScale) {\n return xScaleLine;\n }\n return xScaleLog;\n }, [isLogScale, xScaleLine, xScaleLog]);\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(\n `#${id} .__${(chartId as string) ?? outerClassName}`,\n )\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(15deg) translateX(${width / 2}px)`;\n });\n });\n const styles = useChartStyles(chart.colorSchema);\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = setsWithColor.map((column) => {\n return {\n color: column[0].color ?? '',\n title: column[0].columnName,\n };\n });\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${outerClassName ?? ''} ${chartId} ${chart.title}`}\n sx={React.useMemo(() => {\n return {\n [`.__${(chartId as string) ?? outerClassName}`]: {\n transform: 'rotate(45deg)',\n transformOrigin: 'attr(x) 18px',\n },\n overflow: 'auto',\n position: 'relative',\n\n height: `${chart.ratio.height}px`,\n width: `${chart.ratio.width}px`,\n };\n }, [chart.ratio.height, chart.ratio.width, chartId, outerClassName])}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} ${className ? className : ''} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n style={{\n position: 'absolute',\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={effectiveMargin.left}\n >\n <BarGroupHorizontal\n data={parsedData}\n keys={columnNames}\n width={innerWidth}\n y0={getYValue}\n y0Scale={yScale}\n y1Scale={columnGroupScale}\n xScale={xScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.y0}`}\n top={barGroup.y0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n effectiveMargin={effectiveMargin}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroupHorizontal>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={() => ({\n display: 'none',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{\n className: 'tickLabel',\n }}\n labelOffset={50}\n />\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer id={chartId} references={colorReference} />\n )}\n </>\n );\n};\n\nexport { HorizontalBars };\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\nimport { useTooltip } from '@apia/components';\nimport { useMemo, useState, useContext } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { localPoint } from '@visx/event';\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\nimport { useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const Slice = ({\n arc,\n arcPath,\n chart,\n actualColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n arc: PieArcDatum<TApiaChartCoordinate>;\n arcPath: string | null;\n actualColor: string;\n}) => {\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: `#${tinycolor(actualColor).toHex()}`,\n }}\n >\n <strong>{arc.data.key}</strong>\n </div>\n {chart.showValues && (\n <div>{`${arc.value} ${\n arc.data.percentage ? '- ' + arc.data.percentage : ''\n }${arc.data.percentage ? '%' : ''}`}</div>\n )}\n </>\n ),\n });\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n setIsHighlighted(barName === arc.data.key);\n setIsAnyHighlighted(barName !== arc.data.key && barName !== '');\n // if (barName === arc.data.key) {\n // console.log('open');\n\n // open();\n // }\n },\n });\n const { chartId } = useContext(ChartContext);\n const name = arc.data;\n\n return (\n <path\n key={`arc-${name.key}-${name.value}`}\n id={`arc-${name.key}-${name.value}`}\n style={useMemo(\n () => ({\n '&:hover': {\n fill: `#${tinycolor(actualColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n }),\n [actualColor],\n )}\n fill={\n isAnyHighlighted\n ? `#${tinycolor(actualColor).desaturate(70).toHex()}`\n : actualColor\n }\n opacity={isAnyHighlighted && !isHighlighted ? 0.15 : 1}\n d={arcPath ?? ''}\n onMouseEnter={(ev) => {\n legendContainerMethods.highlight(chartId, arc.data.key);\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n ></path>\n );\n};\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\nimport { useState } from 'react';\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\nimport { useImperativeComponentEvents } from '@apia/util';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const TextSlice = ({\n arc,\n x,\n y,\n dy,\n}: Pick<TChartRendererProps, 'chart'> & {\n arc: PieArcDatum<TApiaChartCoordinate>;\n x: number;\n y: number;\n dy: string;\n}) => {\n const [isHighlighted, setIsHighlighted] = useState(false);\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n setIsHighlighted(barName === arc.data.key);\n },\n });\n return (\n <text\n textAnchor=\"middle\"\n style={{\n opacity: isHighlighted ? 1 : 0,\n display: isHighlighted ? 'block' : 'none',\n transition: 'opacity 500ms',\n }}\n x={x}\n y={y}\n dy={dy}\n >\n {arc.value}\n </text>\n );\n};\n","import React, { useRef } from 'react';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\nimport {\n addBoundary,\n animate,\n arrayOrArray,\n // useUpdateEffect,\n} from '@apia/util';\n\nexport const usePieAnimation = ({\n incomingColumn,\n piezas,\n setDataset,\n}: {\n incomingColumn: TApiaChartColumn;\n setDataset: React.Dispatch<React.SetStateAction<TApiaChartColumn[]>>;\n piezas: {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n sets: TApiaChartCoordinate | TApiaChartCoordinate[];\n name: string;\n };\n}) => {\n const previousObjectRef = useRef<\n | {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n }\n | undefined\n >(undefined);\n\n const actualObjectRef = useRef<\n | {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n }\n | undefined\n >(undefined);\n\n const isAnimating = useRef(false);\n\n if (previousObjectRef.current && piezas) {\n const previousCoordinates =\n isAnimating.current && actualObjectRef.current\n ? arrayOrArray(actualObjectRef.current.coordinate)\n : arrayOrArray(previousObjectRef.current.coordinate);\n\n const currentCoordinates = arrayOrArray(incomingColumn.sets);\n\n const hasValueChanged = previousCoordinates.some((prevCoord, index) => {\n const currentCoord = currentCoordinates[index];\n return prevCoord.value !== currentCoord.value;\n });\n if (hasValueChanged) {\n isAnimating.current = true;\n const difference: TApiaChartCoordinate[] = [];\n for (\n let i = 0;\n i < Math.max(previousCoordinates.length, currentCoordinates.length);\n i++\n ) {\n const coord1 = previousCoordinates[i];\n const coord2 = currentCoordinates[i];\n\n if (coord1 && coord2) {\n const newValue = Math.abs(\n parseInt(coord1.value) - parseInt(coord2.value),\n ).toString();\n const newCoordinate: TApiaChartCoordinate = {\n key: coord2.key,\n color: coord2.color, // Assuming color is the same for both coordinates\n value: newValue,\n };\n\n difference.push(newCoordinate);\n } else if (!coord1 && coord2 && previousCoordinates.length > 0) {\n const newValue = Math.abs(0 - parseInt(coord2.value)).toString();\n const newCoordinate: TApiaChartCoordinate = {\n key: coord2.key,\n color: coord2.color, // Assuming color is the same for both coordinates\n value: newValue,\n };\n\n difference.push(newCoordinate);\n }\n }\n\n return animate(\n 500,\n (progress) => {\n const step: TApiaChartColumn = {\n color: piezas.color,\n name: incomingColumn.name,\n sets: difference.map((coord, i) => {\n return {\n key: coord.key,\n color: coord.color,\n percentage: coord.percentage,\n value: addBoundary(\n Number(currentCoordinates[i].value) >\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n )\n ? Number(coord.value) * progress +\n Number(\n previousCoordinates[i]\n ? previousCoordinates[i].value\n : 0,\n )\n : Number(\n previousCoordinates[i]\n ? previousCoordinates[i].value\n : 0,\n ) -\n Number(coord.value) * progress,\n Math.min(\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n ),\n Number(currentCoordinates[i].value),\n ),\n Math.max(\n Number(\n previousCoordinates[i] ? previousCoordinates[i].value : 0,\n ),\n Number(currentCoordinates[i].value),\n ),\n ).toString(),\n };\n }),\n };\n actualObjectRef.current = {\n color: step.color,\n coordinate: step.sets,\n name: step.name,\n };\n setDataset([step]);\n },\n () => {\n const newPrev = {\n ...incomingColumn,\n coordinate: incomingColumn.sets,\n };\n previousObjectRef.current = newPrev;\n isAnimating.current = false;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }\n } else if (!previousObjectRef.current) {\n const newPrev = {\n ...incomingColumn,\n coordinate: incomingColumn.sets,\n };\n previousObjectRef.current = newPrev;\n isAnimating.current = false;\n }\n};\n","import {\n TApiaChartColumn,\n TApiaChartCoordinate,\n TChartRendererProps,\n} from '../types';\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\nimport { Box } from '@apia/theme';\nimport { Group } from '@visx/group';\nimport Pie from '@visx/shape/lib/shapes/Pie';\nimport { Slice } from './Slice';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { useRef, useMemo, useState } from 'react';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { TextSlice } from './TextSlice';\nimport { spacing } from '@apia/theme';\nimport { usePieAnimation } from './usePieAnimation';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nexport type TPieChartEvents = { highlight: { barName: string } };\n\nconst PieChart = ({\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const [dataset, setDataset] = useState<TApiaChartColumn[]>(\n arrayOrArray(chart.dataSets?.data),\n );\n\n const piezas = useMemo(() => {\n return dataset\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n })[0];\n }, [dataset]);\n\n usePieAnimation({\n incomingColumn: arrayOrArray(chart.dataSets?.data)[0],\n piezas,\n setDataset,\n });\n\n let innerWidth =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n let innerHeight =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const centerY = useMemo(() => {\n return innerHeight / 2.5;\n }, [innerHeight]);\n const centerX = useMemo(() => {\n return innerWidth / 2.5;\n }, [innerWidth]);\n const top = centerY;\n const left = centerX;\n\n const getValue = (d: TApiaChartCoordinate) =>\n Number(d.value) === 0 && arrayOrArray(piezas.coordinate).length === 1\n ? 100\n : Number(d.value);\n const radius = Math.min(innerHeight, innerWidth) / 2.5;\n\n const styles = useChartStyles(chart.colorSchema);\n\n const colorsArray = styles\n ? styles.schema\n : ['#7ad6f4', '#45bdee', '#28a7ea', '#006cbb', '#034698', '#032f64'];\n const names = arrayOrArray(dataset[0].sets).map((coord) => {\n return coord.key;\n });\n const colorReference: TChartReference = names.map((name, index) => {\n return {\n title: name,\n color: getBarColor(arrayOrArray(colorsArray), index),\n };\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const previousPaths = useRef<(string | null)[]>([]);\n if (!piezas) {\n return null;\n }\n\n return (\n <>\n <Box\n ref={boxRef}\n key={piezas.name}\n className={`${className ? className : ''} ${chartId}`}\n sx={{ textAlign: 'center', pb: spacing(5) }}\n >\n <svg\n ref={elementRef}\n height={radius * 2}\n width={radius * 2}\n className={`_${chartId} chart__svg`}\n >\n <Group top={top ?? 0} left={left ?? 0}>\n <Pie\n data={arrayOrArray(piezas.coordinate)}\n pieValue={getValue}\n pieSort={null}\n outerRadius={radius}\n >\n {(pie) => {\n const paths = arrayOrArray(pie.arcs).map((arc) => {\n return pie.path(arc);\n });\n\n const result = pie.arcs.map((arc) => {\n const name = arc.data;\n\n const arcPath = pie.path(arc);\n return (\n <Slice\n arc={arc}\n arcPath={arcPath}\n chart={chart}\n key={`${name.key}_${name.value}`}\n actualColor={\n colorReference.find((color) => {\n return color.title === name.key;\n })?.color ?? ''\n }\n />\n );\n });\n previousPaths.current = paths;\n\n return result;\n }}\n </Pie>\n <Pie\n data={arrayOrArray(piezas.coordinate)}\n pieValue={getValue}\n pieSort={null}\n outerRadius={radius}\n >\n {(pie) => {\n return pie.arcs.map((arc) => {\n const name = arc.data;\n\n const angle = (arc.startAngle - Math.PI + arc.endAngle) / 2;\n\n const x = Math.cos(angle) * (radius * 0.75);\n\n const y = Math.sin(angle) * (radius * 0.75);\n\n return (\n <g key={`arc-${name.key}-${name.value}`}>\n <TextSlice\n arc={arc}\n chart={chart}\n dy=\"0.33em\"\n x={x}\n y={y}\n />\n </g>\n );\n });\n }}\n </Pie>\n </Group>\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer id={chartId} references={colorReference} />\n )}\n </>\n );\n};\n\nexport { PieChart };\n","import tinycolor from 'tinycolor2';\nimport { BarGroup, BarGroupBar } from '@visx/shape/lib/types';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './VerticalBars';\nimport { useTooltip } from '@apia/components';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroup<string>;\n parsedData: IParsedColumn[];\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n });\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n }\n },\n });\n const { chartId } = useContext(ChartContext);\n\n return (\n <g>\n <text\n x={bar.x + bar.width / 2}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"middle\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n\n <Box\n as=\"rect\"\n className=\"chart__barRect\"\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n }\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, '');\n }\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"height\"\n from={0}\n to={bar.height}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n <animate\n attributeName=\"y\"\n from={bar.y + bar.height}\n to={bar.y}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { useLayoutEffect, useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroup } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { usePanelParametersSelector } from '@apia/dashboard';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Bar } from './Bar';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getXValue = (d: IParsedColumn) => d.columnName;\n\nexport type TVerticalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst VerticalBars = ({\n margin = { top: 20, left: 100, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const styles = useChartStyles(chart.colorSchema);\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const xScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: parsedData.map(getXValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, xScale.bandwidth()],\n });\n\n const yScaleLog = scaleLog<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const yScaleLine = scaleLinear<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const parameters = usePanelParametersSelector((global) => {\n return global;\n });\n // const hideLegendsColors = arrayOrArray(chart.dataSets.data).some((data) => {\n // return arrayOrArray(data.sets).some(\n // (set) => set.color !== undefined && set.color !== '',\n // );\n // });\n\n const scale = parameters.PRMT_CHART_SCALE;\n\n const isLogScale = scale === '0';\n\n const yScale = useMemo(() => {\n if (!isLogScale) {\n return yScaleLine;\n }\n return yScaleLog;\n }, [isLogScale, yScaleLine, yScaleLog]);\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const box = current.getBoundingClientRect();\n console.log(box);\n if (box.width > 125) {\n // eslint-disable-next-line no-param-reassign\n current.style.width = '125px';\n // eslint-disable-next-line no-param-reassign\n current.style.overflow = 'hidden';\n // eslint-disable-next-line no-param-reassign\n current.style.textOverflow = 'ellipsis';\n // eslint-disable-next-line no-param-reassign\n current.style.whiteSpace = 'nowrap';\n }\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${className ?? ''} ${chart.title}`}\n sx={{\n overflow: 'hidden',\n }}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n >\n <BarGroup\n data={parsedData}\n keys={columnNames}\n height={innerHeight}\n x0={getXValue}\n x0Scale={xScale}\n x1Scale={columnGroupScale}\n yScale={yScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.x0}`}\n left={barGroup.x0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroup>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{\n className: 'tickLabel',\n textAnchor: 'start',\n }}\n labelOffset={50}\n />\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer\n id={chartId}\n references={\n // hideLegendsColors\n // ? colorReference.map((ref) => {\n // return { ...ref, color: 'transparent' };\n // })\n colorReference\n }\n />\n )}\n </>\n );\n};\n\nexport { VerticalBars };\n","// import { useTooltip } from '@apia/components';\n// import { useMemo } from 'react';\nimport { Fragment } from 'theme-ui/jsx-runtime';\nimport tinycolor from 'tinycolor2';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\n\nexport const Node = ({\n currentCircle,\n innerKey,\n cx,\n cy,\n // coordinate,\n color,\n setCurrentCircle,\n}: // column,\n{\n currentCircle: string[];\n innerKey: string;\n cx: number;\n cy: number;\n coordinate: TApiaChartCoordinate;\n color: string;\n setCurrentCircle: (value: React.SetStateAction<string[]>) => void;\n column: TApiaChartColumn;\n}) => {\n return (\n <Fragment key={innerKey}>\n {currentCircle.includes(innerKey) && (\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).saturate(25).toHex()}`}\n fill={`#${tinycolor(color).saturate(25).toHex()}`}\n />\n )}\n <circle\n r={3}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).darken(15).toHex()}`}\n fill={`#${tinycolor(color).darken(15).toHex()}`}\n />\n <circle\n r={10}\n cx={cx}\n cy={cy}\n stroke=\"transparent\"\n fill=\"transparent\"\n onMouseEnter={() => {\n setCurrentCircle([innerKey]);\n }}\n onMouseLeave={() => {\n setCurrentCircle([]);\n }}\n style={{ cursor: 'pointer' }}\n />\n </Fragment>\n );\n};\n","import {\n arrayOrArray,\n useImperativeComponentEvents,\n usePanAndZoom,\n usePrevious,\n} from '@apia/util';\nimport {\n TApiaChartColorDisposition,\n TApiaChartCoordinate,\n TApiaChartDefinition,\n TChartRendererProps,\n} from '../types';\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { min, max } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { useMemo, useState, useLayoutEffect, useEffect } from 'react';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Box } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport * as allCurves from '@visx/curve';\nimport { uniqueId } from 'lodash';\nimport { Node } from './Node';\nimport { useTooltip } from '@apia/components';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { TChartEvents } from '../ChartRenderer';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nfunction getX(coordinate: TApiaChartCoordinate) {\n return coordinate.key;\n}\n\nfunction getY(coordinate: TApiaChartCoordinate) {\n return Number(coordinate.value);\n}\n\nfunction parseData(chart: TApiaChartDefinition) {\n const columns = arrayOrArray(chart.dataSets?.data);\n const data = columns.map((column) => column.sets);\n const allData = data.reduce<TApiaChartCoordinate[]>(\n (rec, d) => arrayOrArray(rec).concat(d),\n [],\n );\n return {\n columns,\n xScale: scaleOrdinal<string, number>({\n domain: arrayOrArray(columns[0].sets).map(getX),\n }),\n yScale: scaleLinear<number>({\n domain: [\n min(allData, getY) ?? 0 < 0 ? min(allData, getY) ?? 0 : 0,\n max(allData, getY) ?? 1,\n ],\n }),\n yScaleLog: scaleLog<number>({\n domain: [\n min(allData, getY) ?? 1 > 0 ? min(allData, getY) ?? 1 : 1,\n max(allData, getY) ?? 10,\n ],\n }),\n };\n}\nexport type TLineChartEvents = { highlight: { barName: string } };\n\nexport type TChartNode = {\n x: number;\n y: number;\n xValue: string;\n yValue: string;\n columnName: string;\n};\n\nconst LineChart = ({\n chart,\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle) {\n effectiveMargin.left = 50;\n }\n let innerWidth = chart.ratio.width;\n let innerHeight =\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const { columns, xScale, yScale, yScaleLog } = parseData(chart);\n const styles = useChartStyles(chart.colorSchema);\n const coordinates = arrayOrArray(columns[0].sets);\n const coordinatesArray = columns.map((col) => {\n return col.sets;\n });\n const step = innerWidth / coordinates.length;\n\n xScale.range(\n coordinates.map((_, i) => {\n if (i === 0) {\n return effectiveMargin.left;\n }\n return i * step + effectiveMargin.left;\n }),\n );\n\n yScale.range([\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom) / 2,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n yScaleLog.range([\n innerHeight,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\n\n const actualYScale = useMemo(() => {\n return yScale;\n }, [yScale]);\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n function addNameToProps(\n names: string[],\n objects: {\n xValue: string;\n yValue: string;\n x: number;\n y: number;\n }[],\n fixedValue: number,\n ) {\n return objects.map((object, index) => {\n const nameIndex = Math.floor(index / fixedValue);\n const name = names[nameIndex];\n return { ...object, columnName: name };\n });\n }\n const [nodes, setNodes] = useState<TChartNode[]>([]);\n useEffect(() => {\n const coords = coordinatesArray.flat().map((coord) => {\n return {\n xValue: coord.key,\n yValue: coord.value,\n x: xScale(getX(coord)),\n y: actualYScale(getY(coord)),\n };\n });\n const columnNames = columns.map((column) => {\n return column.name;\n });\n const nodesData = addNameToProps(columnNames, coords, coordinates.length);\n setNodes(nodesData);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\n const previousNearNodesArray = usePrevious(nearNodesArray);\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return { returnColumnsArray, columnColor: dataColor };\n });\n\n const colorReference: TChartReference = setsWithColor.map((column) => {\n return {\n color: column.columnColor ?? '',\n title: column.returnColumnsArray[0].columnName,\n };\n });\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n const { open } = useTooltip({\n children: nearNodesArray\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\n .map((node, i) => {\n const useSpecific = colorReference.some(\n (ref) => ref.title === node.columnName + ' - ' + node.xValue,\n );\n\n return (\n <Box key={`${node.columnName}_${node.xValue}_${node.yValue}`}>\n <div\n style={{\n color:\n colorReference[\n colorReference.findIndex((ref) => {\n return (\n ref.title ===\n (useSpecific\n ? node.columnName + ' - ' + node.xValue\n : node.columnName)\n );\n })\n ].color,\n }}\n >\n <strong>{node.columnName}</strong>\n </div>\n {chart.showValues && <div>{node.yValue}</div>}\n <div>{node.xValue}</div>\n {nearNodesArray[i + 1] && <hr />}\n </Box>\n );\n }),\n });\n\n const [highlightedBar, setHighlightedBar] = useState('');\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setHighlightedBar(barName);\n } else if (barName.split(' - ').length === 2) {\n setHighlightedBar(barName.split(' - ')[0]);\n }\n },\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n\n return (\n <>\n <Box id={id} ref={boxRef}>\n <svg\n ref={elementRef}\n width={innerWidth}\n height={innerHeight}\n id=\"LinesChart\"\n className={`_${chartId} chart__svg`}\n onMouseMove={(ev) => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n let clientX = ev.clientX;\n let clientY =\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n\n if (rect) {\n clientX = ev.clientX - rect.left;\n clientY = ev.clientY - rect.top;\n }\n const nearNodes = nodes.filter((node) => {\n return (\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\n 20\n );\n });\n\n if (previousNearNodesArray.current && nearNodes.length > 0) {\n const currentColumns = columns\n .map((col) => {\n let colNames = '';\n nearNodes.forEach((node) => {\n if (col.name === node.columnName) {\n colNames = node.columnName;\n }\n });\n\n return colNames;\n })\n .filter((name) => name !== '');\n const currentIndex = coordinates.findIndex((coord) => {\n return coord.key === nearNodes[0].xValue;\n });\n\n if (currentColumns && currentIndex !== undefined) {\n const newCircleValues = currentColumns.map((col) => {\n return `${col}${currentIndex}`;\n });\n\n setCurrentCircle([...newCircleValues]);\n }\n setNearNodesArray(nearNodes);\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n } else if (nearNodes.length === 0) {\n setCurrentCircle([]);\n }\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={0}\n xScale={xScale}\n yScale={actualYScale}\n width={innerWidth}\n height={innerHeight}\n stroke={styles?.grid.stroke}\n strokeOpacity={styles?.grid.opacity}\n />\n )}\n {columns.map((column, i) => {\n const currentCoordinates = arrayOrArray(column.sets);\n const newColor = setsWithColor.find(\n (data) => data.returnColumnsArray[0].columnName === column.name,\n )?.columnColor;\n\n return (\n <Group\n key={`lines-${column.name + i.toString()}`}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n style={{\n opacity:\n highlightedBar !== '' && highlightedBar !== column.name\n ? 0.15\n : 1,\n transition: 'opacity 500ms',\n }}\n >\n <LinePath\n curve={allCurves.curveMonotoneX}\n data={currentCoordinates}\n x={(coordinate) => {\n return xScale(getX(coordinate)) ?? 0;\n }}\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\n stroke={newColor ?? 'black'}\n strokeWidth={2}\n strokeOpacity={1}\n shapeRendering=\"geometricPrecision\"\n />\n {currentCoordinates.map((coordinate, j) => {\n const key = column.name + j.toString();\n const realColor = setsWithColor\n .map((sets) => sets.returnColumnsArray)\n .flat()\n .find(\n (set) =>\n set.columnName === column.name &&\n set.key === coordinate.key,\n )?.color;\n return (\n <g key={key}>\n <text\n x={xScale(getX(coordinate)) + 10}\n y={actualYScale(getY(coordinate)) - 5}\n textAnchor=\"middle\"\n style={{\n display:\n highlightedBar === column.name ? 'block' : 'none',\n opacity: highlightedBar === column.name ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {coordinate.value}\n </text>\n <Node\n color={realColor ?? 'black'}\n coordinate={coordinate}\n currentCircle={currentCircle}\n cx={xScale(getX(coordinate))}\n cy={actualYScale(getY(coordinate))}\n setCurrentCircle={setCurrentCircle}\n innerKey={key}\n column={column}\n />\n </g>\n );\n })}\n </Group>\n );\n })}\n\n <AxisLeft\n scale={actualYScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n />\n <AxisBottom\n top={\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom) / 2\n }\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{\n className: 'tickLabel',\n }}\n labelOffset={50}\n />\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer id={chartId} references={colorReference} />\n )}\n </>\n );\n};\nexport { LineChart };\n","import { Select } from '@apia/theme';\n\nfunction ChartSelector({\n chartId,\n pieces,\n className,\n current,\n setCurrent,\n}: {\n chartId: string;\n pieces: string[];\n className?: string;\n current: string;\n setCurrent: React.Dispatch<React.SetStateAction<string>>;\n}) {\n return (\n <Select\n sx={{ width: 'auto' }}\n name={`chartSelector_${chartId}`}\n className={`chartSelector_${chartId} ${className ?? ''}`}\n value={current ?? '0'}\n onChange={(ev) => {\n ev.preventDefault();\n setCurrent(ev.target.value);\n }}\n >\n {pieces\n .map((piece, i) => {\n return {\n label: piece,\n value: `${i}`,\n };\n })\n .map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}{' '}\n </Select>\n );\n}\n\nexport default ChartSelector;\n","import { useTooltip } from '@apia/components';\nimport { Line } from '@visx/shape';\nimport { useMemo } from 'react';\nimport { TApiaChartDefinition } from '../types';\nimport tinycolor from 'tinycolor2';\nimport { Box } from '@apia/theme';\n\nconst WaterfallBar = ({\n width,\n height,\n x,\n y,\n fill,\n x1,\n lineY,\n x2,\n stroke,\n strokeDashArray,\n textX,\n textY,\n textContent,\n isLast,\n step,\n columnName,\n chart,\n}: {\n width: number;\n height: number;\n x: string | number;\n y: string | number;\n fill: string;\n x1: string | number;\n x2: string | number;\n lineY: string | number;\n stroke: string;\n strokeDashArray: string | number;\n textX: string | number;\n textY: string | number;\n textContent: string;\n isLast: boolean;\n step: {\n x: string;\n y: string;\n start: number;\n end: number;\n color: string;\n };\n columnName: string;\n chart: TApiaChartDefinition;\n}) => {\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: step.color,\n }}\n >\n <strong>{columnName}</strong>\n </div>\n {chart.showValues && <div>{step.y}</div>}\n <div>{step.x}</div>\n </>\n ),\n });\n\n return (\n <>\n <Box\n as={'rect'}\n sx={useMemo(() => {\n return {\n width: `${width}px`,\n height: `${height}px`,\n x: `${x}px`,\n y: `${y}px`,\n fill: `${fill}`,\n '&:hover': {\n fill: `#${tinycolor(fill).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms',\n };\n }, [fill, height, width, x, y])}\n onMouseEnter={(ev) => {\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={() => {}}\n />\n\n {!isLast && (\n <Line\n x1={x1}\n x2={x2}\n y1={lineY}\n y2={lineY}\n stroke={stroke}\n strokeDasharray={strokeDashArray}\n />\n )}\n <text textAnchor=\"middle\" x={textX} y={textY}>\n {textContent}\n </text>\n </>\n );\n};\n\nexport { WaterfallBar };\n","import { Box } from '@apia/theme';\nimport { TChartRendererProps } from '../types';\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\nimport React, { useMemo, useLayoutEffect, useState } from 'react';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { extent } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { Group } from '@visx/group';\nimport { GridRows } from '@visx/grid';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { uniqueId } from 'lodash';\nimport ChartSelector from '../util/ChartSelector';\nimport { WaterfallBar } from './WaterfallBar';\nimport { LegendContainer } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\ntype TDatum = { key: string; value: string };\n\nconst calculateWaterfallSteps = ({\n data,\n xAccessor,\n yAccessor,\n showFinal,\n colors,\n}: {\n data: TDatum[];\n xAccessor: (d: TDatum) => string;\n yAccessor: (d: TDatum) => string;\n showFinal: boolean;\n colors: {\n positive: string;\n negative: string;\n total: string;\n stepConnector: string;\n };\n}) => {\n // Holds cumulative value\n let cumulativeTotal = 0;\n\n // Calculate bars for each data point\n const steps = data.map((datum) => {\n const xValue = xAccessor(datum);\n const yValue = yAccessor(datum);\n\n const prevTotal = cumulativeTotal;\n cumulativeTotal += Number(yValue);\n\n return {\n x: xValue,\n y: yValue,\n start: prevTotal,\n end: cumulativeTotal,\n color: Number(yValue) > 0 ? colors.positive : colors.negative,\n };\n });\n\n // Add final Total bar\n if (showFinal) {\n steps.push({\n x: 'Total',\n y: cumulativeTotal as unknown as string,\n start: 0,\n end: cumulativeTotal,\n color: colors.total,\n });\n }\n\n return steps;\n};\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\nexport const WaterfallBars = ({\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\n chart: {\n waterfallColors = {\n positive: '#49b86f',\n negative: '#c92e5b',\n total: '#434857',\n stepConnector: '#888d94',\n },\n ...chart\n },\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const getXValue = (d: TDatum) => d.key;\n const getYValue = (d: TDatum) => d.value;\n\n const charts = arrayOrArray(chart.dataSets?.data)\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n });\n const [currentPie, setCurrentPie] = useState('0');\n const chartNames = charts.map((piece) => {\n return piece.name;\n });\n const steps = useMemo(\n () =>\n calculateWaterfallSteps({\n data: arrayOrArray(chart.dataSets.data)[currentPie as unknown as number]\n .sets as TDatum[],\n xAccessor: getXValue,\n yAccessor: getYValue,\n showFinal: chart.showTotal ?? true,\n colors: waterfallColors,\n }),\n [chart.dataSets.data, chart.showTotal, currentPie, waterfallColors],\n );\n\n // Build scales\n const padding = 0.2;\n\n const xScale = scaleBand({\n domain: steps.map((step) => step.x),\n padding,\n range: [0, innerWidth],\n });\n\n const yDomain = useMemo(() => {\n const values = steps.flatMap((step) => [step.start, step.end]);\n const [min, max] = extent<number>(values);\n return min != null && max != null ? [min - 5, max + 5] : undefined;\n }, [steps]);\n\n const yScale = scaleLinear({\n domain: yDomain,\n nice: true,\n range: [innerHeight, 0],\n });\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n return (\n <>\n {charts.length > 1 && (\n <Box className=\"chart__combo__wrapper\">\n <ChartSelector\n chartId={chartId}\n pieces={chartNames}\n className=\"chartSelectorCombo\"\n current={currentPie}\n setCurrent={setCurrentPie}\n />\n </Box>\n )}\n <Box id={id} className={className} ref={boxRef}>\n <svg\n height={chart.ratio.height}\n width={chart.ratio.width}\n ref={elementRef}\n >\n <Group left={effectiveMargin.left} top={effectiveMargin.top}>\n <GridRows scale={yScale} width={innerWidth} strokeDasharray=\"5\" />\n {steps.map((step, index) => {\n const x = xScale(step.x);\n const y = yScale(Math.max(step.start, step.end));\n\n if (x == null || y == null) {\n return null;\n }\n\n const barHeight = Math.abs(yScale(step.start) - yScale(step.end));\n\n const isLast = index === steps.length - 1;\n const linePadding = 2;\n const x1 = x + xScale.bandwidth() + linePadding;\n const x2 = x + xScale.bandwidth() / (1 - padding) - linePadding;\n const lineY = step.end < step.start ? y + barHeight : y;\n\n const labelOffset = 10;\n const labelY =\n yScale(step.end) +\n ((step.y as unknown as number) < 0\n ? labelOffset\n : -labelOffset);\n\n let currentYValue = 0;\n steps\n .filter((_, i) => {\n if ((chart.showTotal ?? true) && !steps[i + 1]) {\n return false;\n }\n return i <= index;\n })\n .forEach((step) => {\n currentYValue += Number(step.y);\n });\n\n return (\n <WaterfallBar\n chart={chart}\n columnName={chartNames[currentPie as unknown as number]}\n fill={step.color}\n height={barHeight}\n isLast={isLast}\n key={index}\n lineY={lineY}\n step={step}\n stroke={waterfallColors.stepConnector}\n strokeDashArray={2}\n textContent={\n chart.showTotal ?? true\n ? step.y\n : (currentYValue as unknown as string)\n }\n textX={x + xScale.bandwidth() / 2}\n textY={labelY + 5}\n width={xScale.bandwidth()}\n x={x}\n y={y}\n x1={x1}\n x2={x2}\n />\n );\n })}\n <AxisLeft\n label={''}\n scale={yScale}\n hideAxisLine\n hideTicks\n tickLabelProps={() => ({\n textAnchor: 'end',\n verticalAnchor: 'middle',\n })}\n />\n <AxisBottom\n scale={xScale}\n top={innerHeight}\n tickLabelProps={() => ({\n textAnchor: 'middle',\n verticalAnchor: 'middle',\n className: 'tickLabel',\n })}\n />\n </Group>\n </svg>\n </Box>\n <LegendContainer\n id={chartId}\n avoidEvent\n references={[\n {\n title: arrayOrArray(chart.dataSets.data)[\n currentPie as unknown as number\n ].name,\n color: 'transparent',\n },\n ]}\n />\n </>\n );\n};\n","import { TApiaChartDefinition, TChartRendererProps } from './types';\nimport React, { useMemo, RefAttributes } from 'react';\nimport { Box } from '@apia/theme';\nimport { getVariant, makeStyledComponent, spacing } from '@apia/theme';\nimport { HorizontalBars } from './horizontalBars/HorizontalBars';\nimport { PieChart } from './pie/Pie';\nimport { getIndex, makeImperativeComponent } from '@apia/util';\nimport { VerticalBars } from './verticalBars/VerticalBars';\nimport { ChartContext } from './ChartContext';\nimport { LineChart } from './linear/LineChart';\nimport { WaterfallBars } from './waterfallBars/WaterfallBars';\n\nconst frontColor = 'hsl(196, 37%, 13%)';\n\nfunction useMultipleRefs<T extends HTMLElement | null>(\n ...refs: React.MutableRefObject<T>[]\n) {\n return React.useCallback(\n function setRef(element: T) {\n refs.forEach((current) => {\n // eslint-disable-next-line no-param-reassign\n if (current) current.current = element;\n });\n },\n [refs],\n );\n}\n\nexport type TChartEvents = {\n highlight: string;\n};\n\nexport const [, chartMethods, ChartRenderer] = makeImperativeComponent<\n {\n currentChart: TApiaChartDefinition;\n chartConfig?: Partial<Omit<TApiaChartDefinition, 'columns'>>;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n allowZoom?: boolean;\n } & RefAttributes<HTMLElement>,\n TChartEvents\n>()({\n Component: makeStyledComponent(\n 'ChartRenderer',\n 'layout.charts',\n {\n red: {\n schema: 'schemas.red',\n },\n orange: {\n schema: 'schemas.orange',\n },\n green: {\n schema: 'schemas.green',\n },\n blue: {\n schema: 'schemas.blue',\n },\n violet: {\n schema: 'schemas.violet',\n },\n turquoise: {\n schema: 'schemas.turquoise',\n },\n yellow: {\n schema: 'schemas.yellow',\n },\n grey: {\n schema: 'schemas.grey',\n },\n ocean: {\n schema: 'schemas.ocean',\n },\n sunset: {\n schema: 'schemas.sunset',\n },\n common: {\n axis: {\n stroke: frontColor,\n title: frontColor,\n },\n schema: frontColor,\n background: 'hsl(200deg 20% 98%)',\n grid: {\n stroke: frontColor,\n opacity: '0.1',\n },\n toolTip: {\n backgroundColor: 'rgb(232, 241, 255)',\n border: '1px solid #07c',\n color: frontColor,\n padding: '.3rem .5rem',\n borderRadius: '3px',\n fontSize: '18px',\n boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\n lineHeight: '1em',\n },\n },\n '.legendContainer': {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing(3),\n flexWrap: 'wrap',\n },\n\n '.chart__combo__wrapper': {\n position: 'absolute',\n },\n\n '.legendItem .button__content': {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n wordWrap: 'normal',\n },\n },\n // eslint-disable-next-line react/display-name\n React.forwardRef(\n (\n {\n currentChart,\n chartId,\n allowZoom,\n }: {\n currentChart: TApiaChartDefinition;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n allowModal?: boolean;\n allowZoom?: boolean;\n },\n ref,\n ) => {\n const innerRef = React.useRef<HTMLElement | null>(null);\n const setRefs = useMultipleRefs(\n ref as React.MutableRefObject<HTMLElement>,\n innerRef,\n );\n\n const contextValue = useMemo(() => ({ chartId }), [chartId]);\n const CurrentChart = getIndex(\n [PieChart, HorizontalBars, VerticalBars, LineChart, WaterfallBars],\n [\n currentChart.chartType === 'pie2D',\n currentChart.chartType === 'barH2D',\n currentChart.chartType === 'barV2D',\n currentChart.chartType === 'linear',\n currentChart.chartType === 'waterfall',\n ],\n 0,\n );\n\n return (\n <ChartContext.Provider value={contextValue}>\n <Box\n ref={setRefs}\n className=\"chart__chartRenderer\"\n {...getVariant('layout.charts')}\n >\n <CurrentChart\n chart={currentChart}\n chartId={chartId}\n parentRef={innerRef as React.MutableRefObject<HTMLElement>}\n allowZoom={allowZoom}\n />\n </Box>\n </ChartContext.Provider>\n );\n },\n ),\n true,\n ),\n});\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 90;\nconst END_ANGLE = 270;\n\nexport const Scale = ({\n currentValue,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter / 2 + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 90,\n endAngle: 270,\n })}\n stroke=\"gray\"\n opacity=\"0.2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n y={-diameter / 4 + 20}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 30;\nconst END_ANGLE = 330;\n\nexport const SpeedMeter = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = false;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: allTicks\n ? valueRanges[valueRanges.length - 1] - valueRanges[0] + 1\n : valueRanges[valueRanges.length - 1] / 10 + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"gray\"\n fill={backgroundColor ?? 'none'}\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n {valueRanges.map((innerValue, i) => {\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: -50,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n />\n {showText && (\n <text\n fill=\"black\"\n {...gauge.getLabelProps({ angle, offset: 20 })}\n style={{ fontSize: `${scaleValuesSize ?? 30}px` }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n y={diameter / 2}\n fill={currentValueColor}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { useCallback, useRef, useState, useEffect } from 'react';\nimport { addBoundary, noNaN, animate } from '@apia/util';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const TLight = ({\n addBorder = false,\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n currentValueColor,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue);\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n\n const hasRendered = useRef(false);\n\n const onRenderSvg = useCallback(\n (el: SVGSVGElement) => {\n if (!el || hasRendered.current) return;\n\n hasRendered.current = true;\n\n const svgElement = el;\n const pathElement = el.querySelector('#TLight_arcs');\n\n if (!(svgElement && pathElement)) {\n return;\n }\n\n const pathBox = pathElement.getBoundingClientRect();\n const svgBox = svgElement.getBoundingClientRect();\n const pathWidth = pathBox.width;\n const pathHeight = pathBox.height;\n const pathX = pathBox.x - svgBox.x;\n const pathY = pathBox.y - svgBox.y;\n\n const viewBox = `${pathX - diameter / 2} ${\n pathY - diameter / 2\n } ${pathWidth} ${pathHeight}`;\n\n svgElement.setAttribute('viewBox', viewBox);\n\n svgElement.style.visibility = 'visible';\n },\n [diameter],\n );\n\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n style={{ visibility: 'hidden' }}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n id=\"TLight_svg\"\n ref={onRenderSvg}\n viewBox={`-${diameter / 2} -${diameter / 2} ${diameter} ${diameter}`}\n >\n <g id=\"TLight_arcs\">\n <path\n {...gauge.getArcProps({\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n fill={getColor(value)}\n id=\"TLight_path\"\n style={{ transition: 'fill 0.3s' }}\n />\n {addBorder && (\n <path\n {...gauge.getArcProps({\n offset: -2.5,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke={'black'}\n fill={'transparent'}\n strokeLinecap=\"round\"\n strokeWidth={5}\n id=\"TLight_path\"\n />\n )}\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 100}pt` }}\n alignmentBaseline=\"central\"\n fill={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport tinycolor from 'tinycolor2';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { noNaN } from '@apia/util';\n\nconst START_ANGLE = 45;\nconst END_ANGLE = 315;\n\nexport const Oxford = ({\n backgroundColor,\n colorRanges,\n currentValue,\n currentValueColor,\n currentValueFontSize,\n height,\n maxValue,\n minValue,\n pointerColor,\n scaleValuesSize,\n valueRanges,\n width,\n}: TApiaWidgetProps) => {\n const allTicks = true;\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n\n const offset = 20;\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 10 + 1,\n diameter: diameter,\n });\n const gauge2 = useGauge({\n domain: [valueRanges[0], valueRanges[valueRanges.length - 1]],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: valueRanges[valueRanges.length - 1] - valueRanges[0] + 1,\n diameter: diameter,\n });\n\n const needle = gauge.getNeedleProps({\n value: 0,\n baseRadius: 12,\n tipRadius: 2,\n });\n\n const angle = ((END_ANGLE - START_ANGLE) * value) / (domainMax - domainMin);\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n }\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: 0,\n endAngle: 360,\n })}\n stroke=\"black\"\n opacity=\"1\"\n fill={\n backgroundColor !== '' && backgroundColor !== undefined\n ? tinycolor(backgroundColor)\n .setAlpha(0.5)\n .toPercentageRgbString()\n : 'none'\n }\n strokeLinecap=\"round\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n {valueRanges.map((innerValue, i) => {\n if (!valueRanges[i + 1]) {\n return null;\n }\n\n const valueToAngle = (value: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n const angle =\n START_ANGLE + ((value - domainMin) / valueRange) * angleRange;\n return Math.round(angle);\n };\n\n return (\n <g key={`${innerValue}_${i}`}>\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={'black'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"square\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -20,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n stroke={getColor(innerValue)}\n opacity=\"0.1\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={75}\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n {...gauge.getArcProps({\n offset: -55,\n startAngle:\n i === 0 ? START_ANGLE : valueToAngle(innerValue),\n endAngle:\n i === 0\n ? valueToAngle(valueRanges[1])\n : i === valueRanges.length - 1\n ? END_ANGLE\n : valueToAngle(valueRanges[i + 1]),\n })}\n key={`${innerValue}_${i}`}\n stroke={getColor(innerValue) || '#999'}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"butt\"\n strokeWidth={10}\n vectorEffect={'non-scaling-stroke'}\n />\n </g>\n );\n })}\n </g>\n <g id=\"ticks\">\n {gauge.ticks.map((angle, i) => {\n const angleToValue = (angle: number) => {\n const angleRange = END_ANGLE - START_ANGLE;\n const valueRange = domainMax - domainMin;\n\n const value =\n domainMin + ((angle - START_ANGLE) / angleRange) * valueRange;\n\n return Math.round(value);\n };\n const asValue = angleToValue(angle);\n\n const showText = asValue % 10 === 0;\n\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}`}>\n <line\n stroke=\"gray\"\n strokeWidth={showText ? 4 : 2}\n {...gauge.getTickProps({ angle, length: showText ? 12 : 3 })}\n vectorEffect={'non-scaling-stroke'}\n />\n {showText && (\n <text\n fill={'black'}\n {...gauge.getLabelProps({\n angle,\n offset: 20,\n })}\n style={{\n fontSize: `${scaleValuesSize ?? 30}px`,\n }}\n >\n {asValue}\n </text>\n )}\n </React.Fragment>\n );\n })}\n {allTicks &&\n gauge2.ticks.map((angle, i) => {\n return (\n <React.Fragment key={`tick-group-${angle}_ ${i}_2`}>\n <line\n stroke=\"gray\"\n strokeWidth={2}\n {...gauge.getTickProps({\n angle,\n length: 3,\n })}\n vectorEffect={'non-scaling-stroke'}\n />\n </React.Fragment>\n );\n })}\n </g>\n <g id=\"needle\">\n <circle fill={pointerColor} {...needle.base} r={20} />\n <circle fill={pointerColor} {...needle.base} />\n <circle\n fill={pointerColor}\n opacity=\"0.5\"\n {...needle.tip}\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n />\n <polyline\n style={{\n transform: `rotate(${angle}deg)`,\n transition: 'transform 500ms',\n }}\n fill={pointerColor}\n opacity=\"0.5\"\n points={needle.points}\n />\n <circle fill=\"white\" {...needle.base} r={4} />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n alignmentBaseline=\"text-before-edge\"\n y={diameter / 5}\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n fill={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { addBoundary, noNaN, animate } from '@apia/util';\nimport { useEffect, useRef, useState } from 'react';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const Counter = ({\n addBorder = false,\n colorRanges,\n currentValue,\n height,\n valueRanges,\n width,\n maxValue,\n minValue,\n currentValueFontSize,\n panelId,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue);\n const diameter = Math.min(height, width);\n const offset = 20;\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n const widgetContainer = document.querySelector('.widgetContainer__Counter');\n let actualWidth = width;\n if (widgetContainer) {\n const box = widgetContainer.getBoundingClientRect();\n if (box.width < actualWidth) {\n actualWidth = box.width;\n }\n }\n return (\n <Box sx={{ position: 'relative' }} className=\"widgetContainer__Counter\">\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={actualWidth}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n {addBorder && (\n <path\n {...gauge.getArcProps({\n offset: offset - 5,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke=\"gray\"\n opacity=\"0.2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={2}\n />\n )}\n </g>\n </svg>\n <svg\n height={Math.max(width, height)}\n width={actualWidth}\n style={{ position: 'absolute', left: 0, top: 0 }}\n >\n <text\n x={actualWidth / 2}\n y={Math.max(width, height) / 2}\n textAnchor=\"middle\"\n style={{\n fontSize: `${currentValueFontSize ?? 30}px`,\n transition: 'fill 0.5s',\n }}\n alignmentBaseline=\"central\"\n fill={getColor(value)}\n id={`text_${panelId}`}\n >\n {value}\n </text>\n </svg>\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\nimport { addBoundary, noNaN, animate } from '@apia/util';\nimport { useEffect, useRef, useState } from 'react';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const Ring = ({\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n ringEmptyColor,\n ringWidth,\n width,\n currentValueColor,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const [value, setValue] = useState(currentValue);\n const diameter = Math.min(height, width);\n const offset = 20;\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const domainMin = noNaN(minValue) ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n\n const lastCurrentValue = useRef(0);\n useEffect(() => {\n const difference = currentValue - lastCurrentValue.current;\n return animate(\n 500,\n (progress) => {\n const step = addBoundary(\n difference * progress + lastCurrentValue.current,\n domainMin,\n domainMax,\n );\n setValue(Math.round(step));\n },\n () => {\n lastCurrentValue.current = currentValue;\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue]);\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n\n const valueToAngle = (value: number) => {\n const angleRange = 360;\n const valueRange = domainMax - domainMin;\n const angle = ((value - domainMin) / valueRange) * angleRange;\n\n return Math.round(angle);\n };\n\n return (\n <Box>\n <svg\n {...gauge.getSVGProps()}\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n viewBox={`-${diameter / 2 + offset} -${diameter / 2 + offset} ${\n diameter + offset * 2\n } ${diameter + offset * 2}`}\n >\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke={ringEmptyColor ?? 'transparent'}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\n />\n <path\n {...gauge.getArcProps({\n offset: offset - (noNaN(ringWidth) ?? 0) * 100,\n startAngle: 180,\n endAngle:\n valueToAngle(value) === 360\n ? 179 + valueToAngle(value)\n : 180 + valueToAngle(value),\n })}\n stroke={getColor(value)}\n opacity=\"0.8\"\n fill=\"none\"\n strokeLinecap=\"square\"\n strokeWidth={(noNaN(ringWidth) ?? 0) * 100}\n style={{\n transition: 'stroke 0.5s',\n }}\n />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 30}px` }}\n alignmentBaseline=\"central\"\n color={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","const colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","const colorGetter = (\n valueRanges: number[],\n colorRanges: string[],\n innerValue: number,\n) => {\n let color = '';\n valueRanges.forEach((value, index) => {\n if (value >= innerValue && valueRanges[index - 1] <= innerValue) {\n color = colorRanges[index - 1];\n }\n });\n return color;\n};\n\nfunction getColor(valueRanges: number[], colorRanges: string[], value: number) {\n const index = valueRanges.findIndex((range) => value <= range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index];\n}\n\nfunction getInnerColor(\n valueRanges: number[],\n colorRanges: string[],\n value: number,\n) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n}\n\nconst valueToTickPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n\n return Math.round(percentage);\n};\n\nconst valueToPercent = (\n domainMax: number,\n baseValue: number,\n value: number,\n) => {\n const range = domainMax - (baseValue ?? 0);\n const percentage = 100 - ((value - (baseValue ?? 0)) / range) * 100;\n const test = (percentage * 69) / 100;\n\n return Math.round(test);\n};\n\nexport {\n colorGetter,\n getColor,\n getInnerColor,\n valueToPercent,\n valueToTickPercent,\n};\n","import { noNaN } from '@apia/util';\nimport { useState, useRef, useCallback } from 'react';\nimport { valueToPercent } from './util';\n\nexport const useCustomWidget = ({\n maxValue,\n minValue,\n currentValue,\n panelId,\n}: {\n maxValue: number;\n minValue: number;\n currentValue: number;\n panelId: string;\n}) => {\n const baseValue = minValue;\n const domainMax = maxValue;\n\n const [yDifference, setYDifference] = useState(0);\n const svgRect = useRef<DOMRect>({} as DOMRect);\n const pathRect = useRef<DOMRect>({} as DOMRect);\n\n const onRenderRect = useCallback(\n (el: SVGRectElement) => {\n if (!el) return;\n\n const svgElement = el.closest('svg');\n const pathElement = svgElement?.querySelector(`#path_${panelId}`);\n\n if (!svgElement) throw new Error('No svg');\n if (!pathElement) throw new Error('No path');\n\n const svgBox = svgElement.getBoundingClientRect();\n const pathBox = pathElement.getBoundingClientRect();\n\n const pathY = pathBox.y - svgBox.y;\n\n svgRect.current = svgBox;\n pathRect.current = pathBox;\n setYDifference(pathY);\n },\n [panelId],\n );\n\n const pathX = noNaN(pathRect.current.x - svgRect.current.x);\n const pathY = noNaN(pathRect.current.y - svgRect.current.y);\n const pathWidth = noNaN(pathRect.current.width);\n const pathHeight = noNaN(pathRect.current.height);\n\n const viewBox = `${pathX} ${pathY} ${pathWidth} ${pathHeight}`;\n\n const rectProps: React.SVGProps<SVGRectElement> = {\n y: noNaN(\n (valueToPercent(domainMax, baseValue, currentValue) * pathHeight) / 100 +\n yDifference,\n ),\n x: pathX,\n width: pathWidth,\n height: pathHeight,\n style: {\n visibility: 'visible',\n transition: 'y 0.5s, fill 0.5s',\n },\n };\n\n return {\n rectRef: onRenderRect,\n svgViewBox: viewBox,\n rectProps,\n pathX,\n pathY,\n pathRect,\n svgRect,\n };\n};\n","import { Box } from '@apia/theme';\nimport { TApiaWidgetProps } from '../types';\nimport {\n valueToTickPercent,\n colorGetter,\n getInnerColor,\n getColor,\n} from './util';\nimport { noNaN } from '@apia/util';\nimport { useCustomWidget } from '../custom/useCustomWidget';\n// Usar un segundo svg para los textos\nexport const Thermometer = ({\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n panelId,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const value = currentValue;\n const baseValue = noNaN(minValue) ?? valueRanges[0];\n const domainMax = noNaN(maxValue) ?? valueRanges[valueRanges.length - 1];\n const pathDValue = `m 179.6875,717.73633 c -0.45013,0 -0.8125,0.36237 -0.8125,0.8125 l 0,8.46289 a 2.3125,2.3125 0 0 0 -1.5,2.16211 2.3125,2.3125 0 0 0 2.3125,2.3125 2.3125,2.3125 0 0 0 2.3125,-2.3125 2.3125,2.3125 0 0 0 -1.5,-2.16211 l 0,-8.46289 c 0,-0.45013 -0.36237,-0.8125 -0.8125,-0.8125 z`;\n\n const { rectProps, rectRef, svgViewBox, pathX, pathY } = useCustomWidget({\n currentValue: value,\n maxValue: domainMax,\n minValue: baseValue,\n panelId,\n });\n\n const boxValues = {\n height: noNaN(Math.max(width, height) - Math.max(width, height) * 0.31),\n width: noNaN(Math.max(width, height)),\n x: pathX,\n y: pathY,\n };\n\n const tickArray = valueRanges.map((val, i) => {\n return {\n height:\n boxValues.height *\n (valueToTickPercent(domainMax, baseValue, val) / 100),\n color: !valueRanges[i + 1]\n ? 'black'\n : colorGetter(valueRanges, colorRanges, val),\n value: val,\n };\n });\n\n return (\n <Box sx={{ position: 'relative' }}>\n <svg\n height={Math.max(width, height)}\n width={Math.max(width, height)}\n id={`svg_${panelId}`}\n viewBox={svgViewBox}\n style={{ position: 'relative', top: '10px' }}\n >\n <clipPath id=\"clipPath\">\n <path d={pathDValue} />\n </clipPath>\n <mask id=\"myMask\">\n <path d={pathDValue} id=\"maskPath\" fill=\"white\" />\n </mask>\n\n <path d={pathDValue} id={`path_${panelId}`} fill=\"white\" />\n\n <rect\n fill={getInnerColor(valueRanges, colorRanges, value)}\n id={`rect_${panelId}`}\n mask=\"url(#myMask)\"\n ref={rectRef}\n {...rectProps}\n />\n\n <path\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={10}\n clipPath=\"url(#clipPath)\"\n vectorEffect={'non-scaling-stroke'}\n />\n <path\n clipPath=\"url(#clipPath)\"\n d={pathDValue}\n id=\"path\"\n fill=\"none\"\n stroke=\"black\"\n strokeWidth={5}\n vectorEffect={'non-scaling-stroke'}\n />\n </svg>\n <svg\n height={Math.max(width, height) + 10}\n width={Math.max(width, height)}\n style={{ position: 'absolute', left: 0, top: 0 }}\n >\n {boxValues.x && (\n <g>\n <text\n x={Math.max(width, height) / 2}\n y={Math.max(width, height) - Math.max(width, height) / 6 + 10}\n style={{\n fontSize: `${noNaN(currentValueFontSize) ?? 50}px`,\n }}\n textAnchor=\"middle\"\n alignmentBaseline={'central'}\n vectorEffect={'non-scaling-stroke'}\n >\n {value}\n </text>\n </g>\n )}\n {tickArray.map((tick, i) => {\n return (\n <g key={i}>\n <rect\n x={\n i === 0\n ? Math.max(width, height) / 2 + 30\n : Math.max(width, height) / 2 + 20\n }\n y={tick.height + 10}\n width={'15px'}\n height={'3px'}\n vectorEffect={'non-scaling-stroke'}\n fill={getColor(valueRanges, colorRanges, tick.value)}\n />\n <text\n x={\n i === 0\n ? Math.max(width, height) - Math.max(width, height) / 3 + 10\n : Math.max(width, height) - Math.max(width, height) / 3\n }\n y={tickArray[i + 1] ? tick.height + 16 : tick.height + 1.5}\n textAnchor=\"middle\"\n alignmentBaseline={\n tickArray[i + 1] ? 'auto' : 'text-before-edge'\n }\n >\n {tick.value}\n </text>\n </g>\n );\n })}\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { Scale } from './scale/Scale';\nimport { SpeedMeter } from './speedMeter/SpeedMeter';\nimport { TLight } from './tLight/TLight';\nimport { Oxford } from './oxford/Oxford';\nimport { Counter } from './counter/Counter';\nimport { Ring } from './ring/Ring';\nimport { Thermometer } from './thermometer/Thermometer';\n// import { Custom } from './custom/Custom';\nimport { TWidgetData } from './types';\nimport { arrayOrArray, getIndex } from '@apia/util';\nimport tinycolor from 'tinycolor2';\nimport { usePanelIdentity } from '@apia/dashboard';\n\nexport const WidgetContainer = ({ data }: { data: TWidgetData }) => {\n // const mockData: TWidgetData = {\n // border: true,\n // backgroundColor: 'white',\n // currentValue: 1010,\n // height: 400,\n // width: 400,\n // maxValue: 1050,\n // minValue: 1000,\n // noValueColor: '',\n // pointerColor: 'blue',\n // ringAnchor: 5,\n // scaleFontSize: 20,\n // valueColor: 'darkblue',\n // valueDecimals: 1,\n // valueFontSize: 50,\n // valueType: '',\n // widKpiType: 0,\n // zones: {\n // Zone: [\n // {\n // color: 'blue',\n // maximum: 1020,\n // minimum: 1000,\n // transparency: 230,\n // },\n // {\n // color: 'purple',\n // maximum: 1040,\n // minimum: 1020,\n // transparency: 150,\n // },\n // {\n // color: 'red',\n // maximum: 1050,\n // minimum: 1040,\n // transparency: 255,\n // },\n // ],\n // },\n // };\n\n const realData: TWidgetData = {\n ...data,\n };\n\n const valueRanges = Array.from(\n new Set(\n arrayOrArray(realData.zones.Zone)\n .map((zone) => {\n return [Number(zone.minimum), Number(zone.maximum)];\n })\n .flat()\n .sort((a, b) => a - b),\n ),\n );\n\n const colorRanges = arrayOrArray(realData.zones.Zone)\n .map((zone) => {\n return tinycolor(zone.color)\n .setAlpha(1 - (255 - zone.transparency) / 255)\n .toPercentageRgbString();\n })\n .flat();\n\n const CurrentWidget = getIndex(\n [SpeedMeter, Oxford, Counter, TLight, Thermometer, Scale, Ring],\n [\n realData.widKpiType === '1',\n realData.widKpiType === '2',\n realData.widKpiType === '3',\n realData.widKpiType === '4',\n realData.widKpiType === '5',\n realData.widKpiType === '6',\n realData.widKpiType === '7',\n ],\n 0,\n );\n const panelData = usePanelIdentity();\n\n return (\n <Box>\n <CurrentWidget\n addBorder={realData.border}\n backgroundColor={realData.backgroundColor}\n colorRanges={colorRanges}\n currentValue={Number(realData.currentValue)}\n decimals={realData.valueDecimals}\n currentValueColor={realData.valueColor}\n currentValueFontSize={realData.valueFontSize}\n forceProp={realData.forceProp}\n height={realData.height}\n panelId={panelData.panelId}\n maxValue={realData.maxValue}\n minValue={realData.minValue}\n pointerColor={realData.pointerColor}\n ringEmptyColor={realData.noValueColor}\n ringWidth={realData.ringAnchor}\n scaleValuesSize={realData.scaleFontSize}\n valueRanges={valueRanges}\n width={realData.width}\n />\n </Box>\n );\n};\n"],"names":["Bar","_a","__spreadProps","__spreadValues","adjustDimensions","_b","Fragment","step","START_ANGLE","END_ANGLE","angle","value","pathY"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEO,SAAS,YACd,MAAwC,GAAA;AAAA,EACtC,IAAM,EAAA,GAAA;AAAA,EACN,KAAO,EAAA,EAAA;AAAA,EACP,GAAK,EAAA,EAAA;AAAA,EACL,MAAQ,EAAA,EAAA;AACV,CACA,EAAA;AACA,EAAA,OAAO,OAAO,MAAA,KAAW,QACrB,GAAA,EAAE,IAAM,EAAA,MAAA,EAAQ,KAAO,EAAA,MAAA,EAAQ,GAAK,EAAA,MAAA,EAAQ,MAAQ,EAAA,MAAA,EACpD,GAAA,MAAA,CAAA;AACN;;ACPa,MAAA,YAAA,GAAe,aAA6B,CAAA,EAAmB,CAAA;;ACA5E,MAAM,aAAa,CAAC;AAAA,EAClB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AACF,CAQM,KAAA;AACJ,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAC3C,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,OAAO,CAAA,CAAA;AAAA,GACzC,EAAA,CAAC,UAAY,EAAA,OAAA,EAAS,OAAO,CAAC,CAAA,CAAA;AACjC,EAAM,MAAA,gBAAA,GAAmB,YAAY,MAAM;AACzC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AACA,IAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAAA,GACpC,EAAA,CAAC,UAAY,EAAA,OAAO,CAAC,CAAA,CAAA;AACxB,EACE,uBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,cAAA;AAAA,MACR,SAAW,EAAA,CAAA,EAAG,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,CAAA,EACzB,gBAAgB,WAAc,GAAA,EAAA,CAAA,WAAA,CAAA;AAAA,MAEhC,WAAW,KAAS,IAAA,OAAA;AAAA,MACpB,IAAM,EAAA,KAAA,KAAU,aAAgB,GAAA,KAAA,CAAA,GAAY,KAAM,CAAA,YAAA;AAAA,MAClD,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,MAAS,GAAA,GAAA;AAAA,OACzD;AAAA,MACA,KAAA;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACd,YAAc,EAAA,gBAAA;AAAA,MAEb,QAAA,EAAA,KAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,CAAA;;AC7CO,MAAM,CAAC,sBAAwB,IAAE,eAAe,CAAA,GACrD,yBAOI,CAAA;AAAA,EACF,YAAc,EAAA;AAAA,IACZ,mBAAqB,EAAA,EAAA;AAAA,GACvB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,SAAA,CAAU,UAAU,mBAA6B,EAAA;AAC/C,MAAS,QAAA,CAAA,EAAE,qBAAqB,CAAA,CAAA;AAAA,KAClC;AAAA,GACF;AAAA,EACA,WAAW,CAAC,EAAE,UAAY,EAAA,mBAAA,EAAqB,YAAiB,KAAA;AAC9D,IAAA,2BACG,GAAI,EAAA,EAAA,SAAA,EAAW,mBACb,QAAW,EAAA,UAAA,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACxB,MACE,uBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,KAAK,KAAU,KAAA,mBAAA;AAAA,UAC9B,kBAAkB,mBAAwB,KAAA,EAAA;AAAA,UAC1C,SAAS,IAAK,CAAA,KAAA;AAAA,UAEd,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,OAAO,IAAK,CAAA,KAAA;AAAA,UACZ,YAAY,UAAc,IAAA,IAAA,GAAA,UAAA,GAAA,KAAA;AAAA,SAAA;AAAA,QAHrB,IAAK,CAAA,KAAA;AAAA,OAIZ,CAAA;AAAA,KAEH,CACH,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF,CAAC,CAAA;;AC3BI,MAAMA,QAAM,CAAC;AAAA,EAClB,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AACF,CAOM,KAAA;AAjCN,EAAA,IAAA,EAAA,CAAA;AAkCE,EAAA,MAAM,SAAS,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAE,IAAI,KAAK,CAAA,CAAA;AAC1D,EAAA,MAAM,MAAM,YAAa,CAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,IAAI,CAAA,CAAE,SAAS,KAAK,CAAA,CAAA;AACrD,EAAA,MAAM,mBAAkB,EAAc,GAAA,aAAA,CAAA,IAAA;AAAA,IACpC,CAAC,aACC,QAAS,CAAA,UAAA,KAAe,OAAO,IAAQ,IAAA,QAAA,CAAS,QAAQ,GAAI,CAAA,GAAA;AAAA,QAFxC,IAGrB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACH,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE9D,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,UAAW,CAAA;AAAA,IAC1B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAO,EAAA;AAAA,YACL,KAAO,EAAA,eAAA;AAAA,WACT;AAAA,UAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,SAAA;AAAA,OACjD;AAAA,MACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,sBACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,KAChB,EAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,OAAS,EAAA;AACjB,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AACrC,QAAiB,gBAAA,CAAA,OAAA,KAAY,IAAI,GAAG,CAAA,CAAA;AACpC,QAAA,mBAAA,CAAoB,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,OAAA,KAAY,EAAE,CAAA,CAAA;AAAA,iBAChD,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AAC5C,QAAA,gBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,GAC9B,IAAA,OAAA,CAAQ,KAAM,CAAA,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA;AAAA,SACpC,CAAA;AACA,QAAA,mBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,KAAM,GAAI,CAAA,GAAA,IAAO,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,EAAA;AAAA,SACrE,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAC3C,EAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,IAAI,CAAI,GAAA,CAAA;AAAA,QACX,CAAA,EAAG,IAAI,CAAI,GAAA,CAAA;AAAA,QACX,OAAO,GAAI,CAAA,KAAA;AAAA,QACX,QAAQ,GAAI,CAAA,MAAA;AAAA,QACZ,UAAW,EAAA,OAAA;AAAA,QACX,KAAO,EAAA;AAAA,UACL,OAAA,EAAS,gBAAgB,OAAU,GAAA,MAAA;AAAA,UACnC,OAAA,EAAS,gBAAgB,CAAI,GAAA,CAAA;AAAA,UAC7B,UAAY,EAAA,eAAA;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA,UAAI,GAAA,CAAA,KAAA;AAAA,UAAM,KAAA;AAAA,UAAI,UAAA,CAAW,QAAS,CAAA,KAAK,CAAE,CAAA,UAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KAC5C;AAAA,oBAEA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,MAAA;AAAA,QACH,SAAU,EAAA,gBAAA;AAAA,QACV,EAAI,EAAA,OAAA;AAAA,UACF,OAAO;AAAA,YACL,IAAA,EAAM,gBACF,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,eAAe,EAAE,UAAW,CAAA,EAAE,CAAE,CAAA,KAAA,EAC9C,CAAA,CAAA,GAAA,eAAA;AAAA,YACJ,SAAW,EAAA;AAAA,cACT,IAAA,EAAM,IAAI,SAAU,CAAA,eAAe,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,aAC1D;AAAA,YACA,UAAY,EAAA,2BAAA;AAAA,YACZ,GAAG,GAAI,CAAA,CAAA;AAAA,YACP,GAAG,GAAI,CAAA,CAAA;AAAA,YACP,KAAA,EAAO,GAAI,CAAA,KAAA,GAAQ,eAAgB,CAAA,IAAA;AAAA,YACnC,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,IAAO,GAAA,CAAA;AAAA,YACrD,MAAQ,EAAA,GAAA,CAAI,MAAS,GAAA,CAAA,GAAI,IAAI,MAAS,GAAA,CAAA;AAAA,WACxC,CAAA;AAAA,UACA;AAAA,YACE,GAAI,CAAA,MAAA;AAAA,YACJ,GAAI,CAAA,KAAA;AAAA,YACJ,GAAI,CAAA,CAAA;AAAA,YACJ,GAAI,CAAA,CAAA;AAAA,YACJ,eAAA;AAAA,YACA,eAAgB,CAAA,IAAA;AAAA,YAChB,gBAAA;AAAA,YACA,aAAA;AAAA,WACF;AAAA,SACF;AAAA,QACA,YAAA,EAAc,CAAC,EAAO,KAAA;AA3H9B,UAAA,IAAAC,GAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA4HU,UAAA,IAAI,CAAC,QAAU,EAAA;AACb,YAAuB,sBAAA,CAAA,SAAA,CAAU,OAAS,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,WACnD;AACA,UAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,GAAI,CAAA,MAAA,CAAA,CAAA;AAC1C,UAAA,MAAM,KAAQ,GAAA;AAAA,YACZ,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,YACnB,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,WACrB,CAAA;AACA,UAAA,IAAI,CAAC,KAAA;AAAO,YAAA,OAAA;AAEZ,UAAK,IAAA,CAAA;AAAA,YACH,eAAA,EAAiB,MAAM,EAAG,CAAA,MAAA;AAAA,YAC1B,0BAA4B,EAAA,QAAA;AAAA,WAC7B,CAAA,CAAA;AAAA,SACH;AAAA,QACA,YAAA,EAAc,CAAC,EAAO,KAAA;AA3I9B,UAAAA,IAAAA,GAAAA,CAAAA;AA4IU,UAAA,IAAI,CAAC,QAAU,EAAA;AACb,YAAuB,sBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,CAAA,CAAA;AAAA,WAC9C;AAEA,UAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,MAAO,CAAA,MAAA,CAAA,CAAA;AAAA,SAC/C;AAAA,QAEA,QAAA,kBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,aAAc,EAAA,OAAA;AAAA,YACd,IAAM,EAAA,CAAA;AAAA,YACN,IAAI,GAAI,CAAA,KAAA;AAAA,YACR,GAAI,EAAA,MAAA;AAAA,YACJ,QAAU,EAAA,OAAA;AAAA,YACV,UAAY,EAAA,cAAA;AAAA,YACZ,QAAU,EAAA,MAAA;AAAA,WAAA;AAAA,SACZ;AAAA,OAAA;AAAA,KACF;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;AC7JO,SAAS,WACd,CAAA,MAAA,EACA,KACA,EAAA,YAAA,GAAe,KACf,EAAA;AACA,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA,CAAA;AACtB,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AACf,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA,CAAA;AAAA,KAClB,MAAA;AACL,MAAA,IAAI,UAAa,GAAA,KAAA,CAAA;AACjB,MAAA,OAAO,cAAc,MAAQ,EAAA;AAC3B,QAAA,UAAA,GAAa,KAAQ,GAAA,MAAA,CAAA;AACrB,QAAA,KAAA,EAAA,CAAA;AAAA,OACF;AACA,MAAW,QAAA,GAAA,SAAA,CAAU,MAAO,CAAA,KAAA,GAAQ,MAAM,CAAC,EACxC,UAAW,CAAA,KAAA,GAAQ,CAAC,CAAA,CACpB,KAAM,EAAA,CAAA;AAAA,KACX;AAAA,GACK,MAAA;AACL,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAA,QAAA,GAAW,OAAO,KAAK,CAAA,CAAA;AAAA,KAClB,MAAA;AACL,MAAA,QAAA,GAAW,UAAU,MAAO,CAAA,KAAA,GAAQ,MAAM,CAAC,EAAE,KAAM,EAAA,CAAA;AAAA,KACrD;AAAA,GACF;AACA,EAAO,OAAA,QAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;;;;AC3BO,SAAS,eACd,UACoC,EAAA;AANtC,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAOE,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,UAAW,EAAA,CAAA;AAE7B,EAAA,IAAI,CAAC,KAAM,CAAA,MAAA;AACT,IAAA,OAAA,CAAQ,MAAM,qDAAqD,CAAA,CAAA;AAErE,EAAA,MAAM,UAAW,EAAM,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,MAAA,KAAN,IACb,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KADa,YACH,EAAC,CAAA;AACf,EAAA,MAAM,gBAAgB,MAAO,CAAA,MAAA,CAAA;AAC7B,EAAA,MAAM,kBAAqB,GAAA;AAAA,IACzB,MAAQ,EAAA,cAAA;AAAA,MACN,KAAM,CAAA,MAAA;AAAA;AAAA,MAAA,CAEN,EAAO,GAAA,MAAA,CAAA,UAAA,IAAc,MAAM,CAAA,KAA3B,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA;AAAA,KAChC;AAAA,GACF,CAAA;AACA,EAAA,IACE,OAAO,kBAAA,CAAmB,MAAW,KAAA,QAAA,IACrC,mBAAmB,MACnB,EAAA;AACA,IAAA,MAAM,eAAyB,MAAO,CAAA,OAAA;AAAA,MACpC,kBAAmB,CAAA,MAAA;AAAA,KACrB,CAAE,GAAI,CAAA,CAAC,CAAM,KAAA;AACX,MAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AAC1C,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,IAAK,CAAE,CAAA,CAAC,CAAa,CAAA,UAAA,CAAW,MAAM,CAAG,EAAA;AACvC,UAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,OAAO,CACxB,CAAA,gBAAA,CAAkB,CAAE,CAAA,CAAC,CAAa,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,SACnD;AACA,QAAA,OAAO,OACJ,gBAAiB,CAAA,OAAO,EACxB,gBAAiB,CAAA,CAAA,CAAE,CAAC,CAAsB,CAAA,CAAA;AAAA,OAC/C;AAEA,MAAO,OAAA,MAAA,CACJ,gBAAiB,CAAA,QAAA,CAAS,aAAc,CAAA,GAAG,CAAY,CACvD,CAAA,gBAAA,CAAiB,CAAE,CAAA,CAAC,CAAsB,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AACD,IAAA,OAAOC,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,aAAA,CAAA,EAAL,EAAoB,MAAA,EAAQ,YAAa,EAAA,CAAA,CAAA;AAAA,GAClD;AAKF;;;;;;;;;;;;;;;;;;;;;AC7BA,SAASC,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAEA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB,CAAE,CAAA,UAAA,CAAA;AAe1C,MAAM,iBAAiB,CAAC;AAAA,EACtB,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,EAAI,EAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA;AAAA,EACrD,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AAhE3B,EAAA,IAAA,EAAA,CAAA;AAiEE,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAC1C,EAAI,IAAA,UAAA,GACF,MAAM,KAAM,CAAA,KAAA,GAAA,CAAS,CAAC,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AACxE,EAAI,IAAA,WAAA,GACF,MAAM,KAAM,CAAA,MAAA,GAAA,CAAU,CAAC,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AACzE,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYA,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,MAAM,WAAW,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAC/C,CAAA,MAAA,CAAO,CAAC,MAAA,KAAW,CAAC,CAAC,MAAA,CAAO,IAAI,CAChC,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACf,IAAA,OAAOF,qCACF,MADE,CAAA,EAAA;AAAA,MAEL,MAAM,MAAO,CAAA,IAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,MAAM,UAAU,YAAa,CAAA,QAAA,CAAS,CAAC,CAAA,CAAE,IAAI,CAAE,CAAA,GAAA;AAAA,IAC7C,CAAC,eAAe,UAAW,CAAA,GAAA;AAAA,GAC7B,CAAA;AACA,EAAA,MAAM,WAAc,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,GAAQ,KAAA;AACxC,IAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,UAA8B,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,CAAM,KAAA;AACrD,IAAA,MAAM,MAAqB,QAAS,CAAA,MAAA;AAAA,MAClC,CAAC,KAAK,MAAW,KAAA;AACf,QAAA,OAAOA,qCACF,GADE,CAAA,EAAA;AAAA,UAEL,CAAC,MAAO,CAAA,IAAI,GAAG,YAAA,CAAa,OAAO,IAAI,CAAA,CAAE,MAAO,CAAA,CAAC,KAAU,KAAA;AACzD,YAAA,OAAO,MAAM,GAAQ,KAAA,CAAA,CAAA;AAAA,WACtB,CAAE,CAAA,CAAC,CAAE,CAAA,KAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACF;AAAA,MACA,EAAE,YAAY,CAAE,EAAA;AAAA,KAClB,CAAA;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,SAAkB,CAAA;AAAA,IAC/B,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,GAAA;AAAA,MACpB,WAAA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,UAAW,CAAA,GAAA,CAAI,SAAS,CAAA;AAAA,IAChC,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AAED,EAAA,MAAM,mBAAmB,SAAkB,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,KAAO,EAAA,CAAC,CAAG,EAAA,MAAA,CAAO,WAAW,CAAA;AAAA,GAC9B,CAAA,CAAA;AAED,EAAA,MAAM,YAAY,QAAiB,CAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,UAAA;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,IACA,IAAM,EAAA,EAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAA,MAAM,aAAa,WAAoB,CAAA;AAAA,IACrC,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,UAAA;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,QAAQ,YAA6B,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,OAAO,QAAS,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,IAAI,KAAK,CAAA;AAAA,GACvC,CAAA,CAAA;AAED,EAAM,MAAA,UAAA,GAAa,0BAA2B,CAAA,CAAC,MAAW,KAAA;AACxD,IAAO,OAAA,MAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,QAAQ,UAAW,CAAA,gBAAA,CAAA;AAEzB,EAAA,MAAM,aAAa,KAAU,KAAA,GAAA,CAAA;AAE7B,EAAM,MAAA,MAAA,GAAS,QAAQ,MAAM;AAC3B,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAO,OAAA,UAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,SAAA,CAAA;AAAA,GACN,EAAA,CAAC,UAAY,EAAA,UAAA,EAAY,SAAS,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,eAAe,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AACxD,EAAA,eAAA,CAAgB,MAAM;AACpB,IACG,QAAA,CAAA,gBAAA;AAAA,MACC,CAAA,CAAA,EAAI,SAAU,OAAsB,IAAA,IAAA,GAAA,OAAA,GAAA,cAAA,CAAA,CAAA;AAAA,KACtC,CACC,OAAQ,CAAA,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,qBAAA,EAAwB,CAAA,KAAA,CAAA;AAE9C,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAQ,OAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,yBAAA,EAA4B,KAAQ,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AACD,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAC/C,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AACA,EAAM,MAAA,aAAA,GAAgB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAC3E,IAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,IAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,MACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,QACE,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACF;AAAA,KACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,MACE,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,KAEF,GAAA,EAAA,CAAA;AACN,IAAA,MAAM,qBAAmD,EAAC,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,kBAAA,CAAmB,KAAKA,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAL,EAAU,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAmB,kBAAA,CAAA,IAAA,CAAKD,qCACnB,GADmB,CAAA,EAAA;AAAA,UAEtB,KAAO,EAAA,SAAA;AAAA,UACP,YAAY,IAAK,CAAA,IAAA;AAAA,SAClB,CAAA,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,kBAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,cAAkC,GAAA,aAAA,CAAc,GAAI,CAAA,CAAC,MAAW,KAAA;AA3PxE,IAAAD,IAAAA,GAAAA,CAAAA;AA4PI,IAAO,OAAA;AAAA,MACL,QAAOA,GAAA,GAAA,MAAA,CAAO,CAAC,CAAE,CAAA,KAAA,KAAV,OAAAA,GAAmB,GAAA,EAAA;AAAA,MAC1B,KAAA,EAAO,MAAO,CAAA,CAAC,CAAE,CAAA,UAAA;AAAA,KACnB,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,YAAA,CAAa,MAAM,QAAS,CAAA,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAA,MAAM,cAAkD,EAAC,CAAA;AACzD,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,WAAA,CAAY,IAAK,CAAA;AAAA,UACf,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,KAAO,EAAA,IAAA,CAAK,IAAO,GAAA,KAAA,GAAQ,GAAI,CAAA,GAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,WAAA,CAAA;AAAA,GACR,CACA,CAAA,IAAA,EACA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA,cAAA,CAAe,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAElD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAW,EAAA,CAAA,EAAG,cAAkB,IAAA,IAAA,GAAA,cAAA,GAAA,EAAA,CAAA,CAAA,EAAM,WAAW,KAAM,CAAA,KAAA,CAAA,CAAA;AAAA,QACvD,EAAA,EAAI,KAAM,CAAA,OAAA,CAAQ,MAAM;AACtB,UAAO,OAAA;AAAA,YACL,CAAC,CAAA,GAAA,EAAO,OAAsB,IAAA,IAAA,GAAA,OAAA,GAAA,cAAA,CAAA,CAAgB,GAAG;AAAA,cAC/C,SAAW,EAAA,eAAA;AAAA,cACX,eAAiB,EAAA,cAAA;AAAA,aACnB;AAAA,YACA,QAAU,EAAA,MAAA;AAAA,YACV,QAAU,EAAA,UAAA;AAAA,YAEV,MAAA,EAAQ,CAAG,EAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA,EAAA,CAAA;AAAA,YACvB,KAAA,EAAO,CAAG,EAAA,KAAA,CAAM,KAAM,CAAA,KAAA,CAAA,EAAA,CAAA;AAAA,WACxB,CAAA;AAAA,SACF,EAAG,CAAC,KAAA,CAAM,KAAM,CAAA,MAAA,EAAQ,MAAM,KAAM,CAAA,KAAA,EAAO,OAAS,EAAA,cAAc,CAAC,CAAA;AAAA,QAEnE,QAAA,kBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,UAAA;AAAA,YACL,SAAW,EAAA,CAAA,CAAA,EAAI,OAAW,CAAA,CAAA,EAAA,SAAA,GAAY,SAAY,GAAA,EAAA,CAAA,WAAA,CAAA;AAAA,YAClD,MAAA,EAAQ,MAAM,KAAM,CAAA,MAAA;AAAA,YACpB,KAAA,EAAO,MAAM,KAAM,CAAA,KAAA;AAAA,YACnB,KAAO,EAAA;AAAA,cACL,QAAU,EAAA,UAAA;AAAA,aACZ;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,QACL,oBAAA,GAAA;AAAA,gBAAC,IAAK,CAAA,IAAA;AAAA,gBAAL;AAAA,kBACC,MAAA;AAAA,kBACA,MAAA;AAAA,kBACA,IAAM,EAAA,CAAA;AAAA,kBACN,KAAO,EAAA,UAAA;AAAA,kBACP,MAAQ,EAAA,WAAA;AAAA,kBACR,YAAc,EAAA,EAAA;AAAA,kBACd,eAAiB,EAAA,EAAA;AAAA,kBACjB,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,iBAAA;AAAA,eAE/B;AAAA,8BAEF,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,kBAE7B,MAAM,eAAgB,CAAA,IAAA;AAAA,kBAEtB,QAAA,kBAAA,GAAA;AAAA,oBAAC,kBAAA;AAAA,oBAAA;AAAA,sBACC,IAAM,EAAA,UAAA;AAAA,sBACN,IAAM,EAAA,WAAA;AAAA,sBACN,KAAO,EAAA,UAAA;AAAA,sBACP,EAAI,EAAA,SAAA;AAAA,sBACJ,OAAS,EAAA,MAAA;AAAA,sBACT,OAAS,EAAA,gBAAA;AAAA,sBACT,MAAA;AAAA,sBACA,KAAA;AAAA,sBAEC,QAAC,EAAA,CAAA,SAAA,KACA,SAAU,CAAA,GAAA,CAAI,CAAC,QAAa,KAAA;AAC1B,wBACE,uBAAA,GAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BAEC,KAAK,QAAS,CAAA,EAAA;AAAA,4BAEb,QAAS,EAAA,QAAA,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC1B,8BAAA,MAAM,MAAM,CAAG,EAAA,QAAA,CAAS,KAAS,CAAA,CAAA,EAAA,GAAA,CAAI,SAAS,GAAI,CAAA,GAAA,CAAA,CAAA,CAAA;AAClD,8BACE,uBAAA,GAAA;AAAA,gCAACD,KAAA;AAAA,gCAAA;AAAA,kCACC,QAAA,EAAU,QAAS,CAAA,IAAA,CAAK,MAAW,KAAA,CAAA;AAAA,kCAEnC,GAAA;AAAA,kCACA,QAAA;AAAA,kCACA,KAAA;AAAA,kCACA,UAAA;AAAA,kCACA,eAAA;AAAA,kCACA,aAAA,EAAe,cAAc,IAAK,EAAA;AAAA,iCAAA;AAAA,gCAN7B,GAAA;AAAA,+BAOP,CAAA;AAAA,6BAEH,CAAA;AAAA,2BAAA;AAAA,0BAjBI,CAAA,UAAA,EAAa,QAAS,CAAA,KAAA,CAAA,CAAA,EAAS,QAAS,CAAA,EAAA,CAAA,CAAA;AAAA,yBAkB/C,CAAA;AAAA,uBAEH,CAAA;AAAA,qBAAA;AAAA,mBAEL;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA,MAAA;AAAA,kBACP,MAAM,eAAgB,CAAA,IAAA;AAAA,kBACtB,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,kBAEN,gBAAgB,OAAO;AAAA,oBACrB,OAAS,EAAA,MAAA;AAAA,mBACX,CAAA;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,GAAK,EAAA,WAAA;AAAA,kBACL,KAAO,EAAA,MAAA;AAAA,kBACP,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,kBAEN,cAAgB,EAAA;AAAA,oBACd,SAAW,EAAA,WAAA;AAAA,mBACb;AAAA,kBACA,WAAa,EAAA,EAAA;AAAA,iBAAA;AAAA,eACf;AAAA,aAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KACF;AAAA,IACC,cAAA,CAAe,SAAS,CACvB,oBAAA,GAAA,CAAC,mBAAgB,EAAI,EAAA,OAAA,EAAS,YAAY,cAAgB,EAAA,CAAA;AAAA,GAE9D,EAAA,CAAA,CAAA;AAEJ,CAAA;;AClYO,MAAM,QAAQ,CAAC;AAAA,EACpB,GAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AACF,CAIM,KAAA;AACJ,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE9D,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,UAAW,CAAA;AAAA,IAC1B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAO,EAAA;AAAA,YACL,KAAO,EAAA,CAAA,CAAA,EAAI,SAAU,CAAA,WAAW,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,WAC1C;AAAA,UAEA,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAQ,QAAI,EAAA,GAAA,CAAA,IAAA,CAAK,GAAI,EAAA,CAAA;AAAA,SAAA;AAAA,OACxB;AAAA,MACC,MAAM,UACL,oBAAA,GAAA,CAAC,SAAK,QAAG,EAAA,CAAA,EAAA,GAAA,CAAI,SACX,GAAI,CAAA,IAAA,CAAK,aAAa,IAAO,GAAA,GAAA,CAAI,KAAK,UAAa,GAAA,EAAA,CAAA,EAClD,IAAI,IAAK,CAAA,UAAA,GAAa,MAAM,EAAK,CAAA,CAAA,EAAA,CAAA;AAAA,KAExC,EAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,OAAS,EAAA;AACjB,MAAiB,gBAAA,CAAA,OAAA,KAAY,GAAI,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACzC,MAAA,mBAAA,CAAoB,OAAY,KAAA,GAAA,CAAI,IAAK,CAAA,GAAA,IAAO,YAAY,EAAE,CAAA,CAAA;AAAA,KAMhE;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAC3C,EAAA,MAAM,OAAO,GAAI,CAAA,IAAA,CAAA;AAEjB,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAEC,EAAI,EAAA,CAAA,IAAA,EAAO,IAAK,CAAA,GAAA,CAAA,CAAA,EAAO,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,MAC5B,KAAO,EAAA,OAAA;AAAA,QACL,OAAO;AAAA,UACL,SAAW,EAAA;AAAA,YACT,IAAA,EAAM,IAAI,SAAU,CAAA,WAAW,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,WACtD;AAAA,UACA,UAAY,EAAA,2BAAA;AAAA,SACd,CAAA;AAAA,QACA,CAAC,WAAW,CAAA;AAAA,OACd;AAAA,MACA,IAAA,EACE,gBACI,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,WAAW,EAAE,UAAW,CAAA,EAAE,CAAE,CAAA,KAAA,EAC1C,CAAA,CAAA,GAAA,WAAA;AAAA,MAEN,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,IAAO,GAAA,CAAA;AAAA,MACrD,GAAG,OAAW,IAAA,IAAA,GAAA,OAAA,GAAA,EAAA;AAAA,MACd,YAAA,EAAc,CAAC,EAAO,KAAA;AA7E5B,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA8EQ,QAAA,sBAAA,CAAuB,SAAU,CAAA,OAAA,EAAS,GAAI,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACtD,QAAA,CAAC,EAAG,GAAA,EAAA,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqC,GAAI,CAAA,MAAA,CAAA,CAAA;AAC1C,QAAA,MAAM,KAAQ,GAAA;AAAA,UACZ,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,UACnB,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,SACrB,CAAA;AACA,QAAA,IAAI,CAAC,KAAA;AAAO,UAAA,OAAA;AACZ,QAAK,IAAA,CAAA;AAAA,UACH,eAAA,EAAiB,MAAM,EAAG,CAAA,MAAA;AAAA,UAC1B,0BAA4B,EAAA,QAAA;AAAA,SAC7B,CAAA,CAAA;AAAA,OACH;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AA1F5B,QAAA,IAAA,EAAA,CAAA;AA2FQ,QAAuB,sBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,CAAA,CAAA;AAE5C,QAAA,CAAC,EAAG,GAAA,EAAA,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqC,MAAO,CAAA,MAAA,CAAA,CAAA;AAAA,OAC/C;AAAA,KAAA;AAAA,IAnCK,CAAA,IAAA,EAAO,IAAK,CAAA,GAAA,CAAA,CAAA,EAAO,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,GAoC9B,CAAA;AAEL,CAAA;;AC3FO,MAAM,YAAY,CAAC;AAAA,EACxB,GAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,EAAA;AACF,CAKM,KAAA;AACJ,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAExD,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,OAAS,EAAA;AACjB,MAAiB,gBAAA,CAAA,OAAA,KAAY,GAAI,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,KAC3C;AAAA,GACD,CAAA,CAAA;AACD,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,UAAW,EAAA,QAAA;AAAA,MACX,KAAO,EAAA;AAAA,QACL,OAAA,EAAS,gBAAgB,CAAI,GAAA,CAAA;AAAA,QAC7B,OAAA,EAAS,gBAAgB,OAAU,GAAA,MAAA;AAAA,QACnC,UAAY,EAAA,eAAA;AAAA,OACd;AAAA,MACA,CAAA;AAAA,MACA,CAAA;AAAA,MACA,EAAA;AAAA,MAEC,QAAI,EAAA,GAAA,CAAA,KAAA;AAAA,KAAA;AAAA,GACP,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;AC9BO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,cAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AACF,CASM,KAAA;AACJ,EAAM,MAAA,iBAAA,GAAoB,OAOxB,KAAS,CAAA,CAAA,CAAA;AAEX,EAAM,MAAA,eAAA,GAAkB,OAOtB,KAAS,CAAA,CAAA,CAAA;AAEX,EAAM,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA,CAAA;AAEhC,EAAI,IAAA,iBAAA,CAAkB,WAAW,MAAQ,EAAA;AACvC,IAAA,MAAM,mBACJ,GAAA,WAAA,CAAY,OAAW,IAAA,eAAA,CAAgB,OACnC,GAAA,YAAA,CAAa,eAAgB,CAAA,OAAA,CAAQ,UAAU,CAAA,GAC/C,YAAa,CAAA,iBAAA,CAAkB,QAAQ,UAAU,CAAA,CAAA;AAEvD,IAAM,MAAA,kBAAA,GAAqB,YAAa,CAAA,cAAA,CAAe,IAAI,CAAA,CAAA;AAE3D,IAAA,MAAM,eAAkB,GAAA,mBAAA,CAAoB,IAAK,CAAA,CAAC,WAAW,KAAU,KAAA;AACrE,MAAM,MAAA,YAAA,GAAe,mBAAmB,KAAK,CAAA,CAAA;AAC7C,MAAO,OAAA,SAAA,CAAU,UAAU,YAAa,CAAA,KAAA,CAAA;AAAA,KACzC,CAAA,CAAA;AACD,IAAA,IAAI,eAAiB,EAAA;AACnB,MAAA,WAAA,CAAY,OAAU,GAAA,IAAA,CAAA;AACtB,MAAA,MAAM,aAAqC,EAAC,CAAA;AAC5C,MACM,KAAA,IAAA,CAAA,GAAI,CACR,EAAA,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,oBAAoB,MAAQ,EAAA,kBAAA,CAAmB,MAAM,CAAA,EAClE,CACA,EAAA,EAAA;AACA,QAAM,MAAA,MAAA,GAAS,oBAAoB,CAAC,CAAA,CAAA;AACpC,QAAM,MAAA,MAAA,GAAS,mBAAmB,CAAC,CAAA,CAAA;AAEnC,QAAA,IAAI,UAAU,MAAQ,EAAA;AACpB,UAAA,MAAM,WAAW,IAAK,CAAA,GAAA;AAAA,YACpB,SAAS,MAAO,CAAA,KAAK,CAAI,GAAA,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,YAC9C,QAAS,EAAA,CAAA;AACX,UAAA,MAAM,aAAsC,GAAA;AAAA,YAC1C,KAAK,MAAO,CAAA,GAAA;AAAA,YACZ,OAAO,MAAO,CAAA,KAAA;AAAA;AAAA,YACd,KAAO,EAAA,QAAA;AAAA,WACT,CAAA;AAEA,UAAA,UAAA,CAAW,KAAK,aAAa,CAAA,CAAA;AAAA,mBACpB,CAAC,MAAA,IAAU,MAAU,IAAA,mBAAA,CAAoB,SAAS,CAAG,EAAA;AAC9D,UAAM,MAAA,QAAA,GAAW,KAAK,GAAI,CAAA,CAAA,GAAI,SAAS,MAAO,CAAA,KAAK,CAAC,CAAA,CAAE,QAAS,EAAA,CAAA;AAC/D,UAAA,MAAM,aAAsC,GAAA;AAAA,YAC1C,KAAK,MAAO,CAAA,GAAA;AAAA,YACZ,OAAO,MAAO,CAAA,KAAA;AAAA;AAAA,YACd,KAAO,EAAA,QAAA;AAAA,WACT,CAAA;AAEA,UAAA,UAAA,CAAW,KAAK,aAAa,CAAA,CAAA;AAAA,SAC/B;AAAA,OACF;AAEA,MAAO,OAAA,OAAA;AAAA,QACL,GAAA;AAAA,QACA,CAAC,QAAa,KAAA;AACZ,UAAA,MAAM,IAAyB,GAAA;AAAA,YAC7B,OAAO,MAAO,CAAA,KAAA;AAAA,YACd,MAAM,cAAe,CAAA,IAAA;AAAA,YACrB,IAAM,EAAA,UAAA,CAAW,GAAI,CAAA,CAAC,OAAO,CAAM,KAAA;AACjC,cAAO,OAAA;AAAA,gBACL,KAAK,KAAM,CAAA,GAAA;AAAA,gBACX,OAAO,KAAM,CAAA,KAAA;AAAA,gBACb,YAAY,KAAM,CAAA,UAAA;AAAA,gBAClB,KAAO,EAAA,WAAA;AAAA,kBACL,MAAO,CAAA,kBAAA,CAAmB,CAAC,CAAA,CAAE,KAAK,CAChC,GAAA,MAAA;AAAA,oBACE,oBAAoB,CAAC,CAAA,GAAI,mBAAoB,CAAA,CAAC,EAAE,KAAQ,GAAA,CAAA;AAAA,mBAExD,GAAA,MAAA,CAAO,KAAM,CAAA,KAAK,IAAI,QACpB,GAAA,MAAA;AAAA,oBACE,oBAAoB,CAAC,CAAA,GACjB,mBAAoB,CAAA,CAAC,EAAE,KACvB,GAAA,CAAA;AAAA,mBAER,GAAA,MAAA;AAAA,oBACE,oBAAoB,CAAC,CAAA,GACjB,mBAAoB,CAAA,CAAC,EAAE,KACvB,GAAA,CAAA;AAAA,mBAEJ,GAAA,MAAA,CAAO,KAAM,CAAA,KAAK,CAAI,GAAA,QAAA;AAAA,kBAC5B,IAAK,CAAA,GAAA;AAAA,oBACH,MAAA;AAAA,sBACE,oBAAoB,CAAC,CAAA,GAAI,mBAAoB,CAAA,CAAC,EAAE,KAAQ,GAAA,CAAA;AAAA,qBAC1D;AAAA,oBACA,MAAO,CAAA,kBAAA,CAAmB,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,mBACpC;AAAA,kBACA,IAAK,CAAA,GAAA;AAAA,oBACH,MAAA;AAAA,sBACE,oBAAoB,CAAC,CAAA,GAAI,mBAAoB,CAAA,CAAC,EAAE,KAAQ,GAAA,CAAA;AAAA,qBAC1D;AAAA,oBACA,MAAO,CAAA,kBAAA,CAAmB,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,mBACpC;AAAA,kBACA,QAAS,EAAA;AAAA,eACb,CAAA;AAAA,aACD,CAAA;AAAA,WACH,CAAA;AACA,UAAA,eAAA,CAAgB,OAAU,GAAA;AAAA,YACxB,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,YAAY,IAAK,CAAA,IAAA;AAAA,YACjB,MAAM,IAAK,CAAA,IAAA;AAAA,WACb,CAAA;AACA,UAAW,UAAA,CAAA,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,SACnB;AAAA,QACA,MAAM;AACJ,UAAM,MAAA,OAAA,GAAUE,qCACX,cADW,CAAA,EAAA;AAAA,YAEd,YAAY,cAAe,CAAA,IAAA;AAAA,WAC7B,CAAA,CAAA;AACA,UAAA,iBAAA,CAAkB,OAAU,GAAA,OAAA,CAAA;AAC5B,UAAA,WAAA,CAAY,OAAU,GAAA,KAAA,CAAA;AAAA,SACxB;AAAA,OACF,CAAA;AAAA,KAEF;AAAA,GACF,MAAA,IAAW,CAAC,iBAAA,CAAkB,OAAS,EAAA;AACrC,IAAM,MAAA,OAAA,GAAUA,qCACX,cADW,CAAA,EAAA;AAAA,MAEd,YAAY,cAAe,CAAA,IAAA;AAAA,KAC7B,CAAA,CAAA;AACA,IAAA,iBAAA,CAAkB,OAAU,GAAA,OAAA,CAAA;AAC5B,IAAA,WAAA,CAAY,OAAU,GAAA,KAAA,CAAA;AAAA,GACxB;AACF,CAAA;;;;;;;;;;;;;;;;;;;;;AC7IA,SAASE,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAIA,MAAM,WAAW,CAAC;AAAA,EAChB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AA7C3B,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA8CE,EAAM,MAAA,CAAC,OAAS,EAAA,UAAU,CAAI,GAAA,QAAA;AAAA,IAC5B,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAAA;AAAA,GACnC,CAAA;AAEA,EAAM,MAAA,MAAA,GAAS,QAAQ,MAAM;AAC3B,IAAO,OAAA,OAAA,CACJ,MAAO,CAAA,CAAC,KAAU,KAAA,CAAC,CAAC,KAAA,CAAM,IAAI,CAAA,CAC9B,GAAI,CAAA,CAAC,KAAU,KAAA;AACd,MAAA,OAAOF,qCACF,KADE,CAAA,EAAA;AAAA,QAEL,YAAY,KAAM,CAAA,IAAA;AAAA,OACpB,CAAA,CAAA;AAAA,KACD,EAAE,CAAC,CAAA,CAAA;AAAA,GACR,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AAEZ,EAAgB,eAAA,CAAA;AAAA,IACd,gBAAgB,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,aAAN,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE,CAAC,CAAA;AAAA,IACpD,MAAA;AAAA,IACA,UAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAI,IAAA,UAAA,GACF,KAAM,CAAA,KAAA,CAAM,KAAQ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,GAC5B,KAAM,CAAA,KAAA,CAAM,KACZ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA;AAClB,EAAI,IAAA,WAAA,GACF,KAAM,CAAA,KAAA,CAAM,KAAQ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,GAC5B,KAAM,CAAA,KAAA,CAAM,KACZ,GAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA;AAClB,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYE,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,OAAO,WAAc,GAAA,GAAA,CAAA;AAAA,GACvB,EAAG,CAAC,WAAW,CAAC,CAAA,CAAA;AAChB,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,OAAO,UAAa,GAAA,GAAA,CAAA;AAAA,GACtB,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AACf,EAAA,MAAM,GAAM,GAAA,OAAA,CAAA;AACZ,EAAA,MAAM,IAAO,GAAA,OAAA,CAAA;AAEb,EAAA,MAAM,WAAW,CAAC,CAAA,KAChB,MAAO,CAAA,CAAA,CAAE,KAAK,CAAM,KAAA,CAAA,IAAK,YAAa,CAAA,MAAA,CAAO,UAAU,CAAE,CAAA,MAAA,KAAW,IAChE,GACA,GAAA,MAAA,CAAO,EAAE,KAAK,CAAA,CAAA;AACpB,EAAA,MAAM,MAAS,GAAA,IAAA,CAAK,GAAI,CAAA,WAAA,EAAa,UAAU,CAAI,GAAA,GAAA,CAAA;AAEnD,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAE/C,EAAM,MAAA,WAAA,GAAc,MAChB,GAAA,MAAA,CAAO,MACP,GAAA,CAAC,WAAW,SAAW,EAAA,SAAA,EAAW,SAAW,EAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AACrE,EAAM,MAAA,KAAA,GAAQ,aAAa,OAAQ,CAAA,CAAC,EAAE,IAAI,CAAA,CAAE,GAAI,CAAA,CAAC,KAAU,KAAA;AACzD,IAAA,OAAO,KAAM,CAAA,GAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAA,MAAM,cAAkC,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,MAAM,KAAU,KAAA;AACjE,IAAO,OAAA;AAAA,MACL,KAAO,EAAA,IAAA;AAAA,MACP,KAAO,EAAA,WAAA,CAAY,YAAa,CAAA,WAAW,GAAG,KAAK,CAAA;AAAA,KACrD,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AACA,EAAM,MAAA,aAAA,GAAgB,MAA0B,CAAA,EAAE,CAAA,CAAA;AAClD,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QAEL,SAAW,EAAA,CAAA,EAAG,SAAY,GAAA,SAAA,GAAY,EAAM,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;AAAA,QAC5C,IAAI,EAAE,SAAA,EAAW,UAAU,EAAI,EAAA,OAAA,CAAQ,CAAC,CAAE,EAAA;AAAA,QAE1C,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,UAAA;AAAA,YACL,QAAQ,MAAS,GAAA,CAAA;AAAA,YACjB,OAAO,MAAS,GAAA,CAAA;AAAA,YAChB,WAAW,CAAI,CAAA,EAAA,OAAA,CAAA,WAAA,CAAA;AAAA,YAEf,+BAAC,KAAM,EAAA,EAAA,GAAA,EAAK,oBAAO,CAAG,EAAA,IAAA,EAAM,sBAAQ,CAClC,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,YAAa,CAAA,MAAA,CAAO,UAAU,CAAA;AAAA,kBACpC,QAAU,EAAA,QAAA;AAAA,kBACV,OAAS,EAAA,IAAA;AAAA,kBACT,WAAa,EAAA,MAAA;AAAA,kBAEZ,WAAC,GAAQ,KAAA;AACR,oBAAA,MAAM,QAAQ,YAAa,CAAA,GAAA,CAAI,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AAChD,sBAAO,OAAA,GAAA,CAAI,KAAK,GAAG,CAAA,CAAA;AAAA,qBACpB,CAAA,CAAA;AAED,oBAAA,MAAM,MAAS,GAAA,GAAA,CAAI,IAAK,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AAtJrD,sBAAA,IAAAH,GAAAI,EAAAA,GAAAA,CAAAA;AAuJkB,sBAAA,MAAM,OAAO,GAAI,CAAA,IAAA,CAAA;AAEjB,sBAAM,MAAA,OAAA,GAAU,GAAI,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAC5B,sBACE,uBAAA,GAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACC,GAAA;AAAA,0BACA,OAAA;AAAA,0BACA,KAAA;AAAA,0BAEA,cACEA,GAAAJ,GAAAA,CAAAA,GAAAA,GAAA,cAAe,CAAA,IAAA,CAAK,CAAC,KAAU,KAAA;AAC7B,4BAAO,OAAA,KAAA,CAAM,UAAU,IAAK,CAAA,GAAA,CAAA;AAAA,2BAC7B,CAFD,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAEI,CAAA,KAAA,KAFJ,OAAAI,GAEa,GAAA,EAAA;AAAA,yBAAA;AAAA,wBAJV,CAAA,EAAG,IAAK,CAAA,GAAA,CAAA,CAAA,EAAO,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,uBAM3B,CAAA;AAAA,qBAEH,CAAA,CAAA;AACD,oBAAA,aAAA,CAAc,OAAU,GAAA,KAAA,CAAA;AAExB,oBAAO,OAAA,MAAA,CAAA;AAAA,mBACT;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,YAAa,CAAA,MAAA,CAAO,UAAU,CAAA;AAAA,kBACpC,QAAU,EAAA,QAAA;AAAA,kBACV,OAAS,EAAA,IAAA;AAAA,kBACT,WAAa,EAAA,MAAA;AAAA,kBAEZ,WAAC,GAAQ,KAAA;AACR,oBAAA,OAAO,GAAI,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC3B,sBAAA,MAAM,OAAO,GAAI,CAAA,IAAA,CAAA;AAEjB,sBAAA,MAAM,SAAS,GAAI,CAAA,UAAA,GAAa,IAAK,CAAA,EAAA,GAAK,IAAI,QAAY,IAAA,CAAA,CAAA;AAE1D,sBAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAK,KAAK,MAAS,GAAA,IAAA,CAAA,CAAA;AAEtC,sBAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAK,KAAK,MAAS,GAAA,IAAA,CAAA,CAAA;AAEtC,sBAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,wBAAC,SAAA;AAAA,wBAAA;AAAA,0BACC,GAAA;AAAA,0BACA,KAAA;AAAA,0BACA,EAAG,EAAA,QAAA;AAAA,0BACH,CAAA;AAAA,0BACA,CAAA;AAAA,yBAAA;AAAA,uBANI,EAAA,EAAA,CAAA,IAAA,EAAO,IAAK,CAAA,GAAA,CAAA,CAAA,EAAO,KAAK,KAQhC,CAAA,CAAA,CAAA,CAAA;AAAA,qBAEH,CAAA,CAAA;AAAA,mBACH;AAAA,iBAAA;AAAA,eACF;AAAA,aACF,EAAA,CAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,MA5EK,MAAO,CAAA,IAAA;AAAA,KA6Ed;AAAA,IACC,cAAA,CAAe,SAAS,CACvB,oBAAA,GAAA,CAAC,mBAAgB,EAAI,EAAA,OAAA,EAAS,YAAY,cAAgB,EAAA,CAAA;AAAA,GAE9D,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACtMO,MAAM,MAAM,CAAC;AAAA,EAClB,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AACF,CAMM,KAAA;AA1BN,EAAA,IAAA,EAAA,CAAA;AA2BE,EAAA,MAAM,SAAS,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAE,IAAI,KAAK,CAAA,CAAA;AAC1D,EAAA,MAAM,MAAM,YAAa,CAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,IAAI,CAAA,CAAE,SAAS,KAAK,CAAA,CAAA;AACrD,EAAA,MAAM,mBAAkB,EAAc,GAAA,aAAA,CAAA,IAAA;AAAA,IACpC,CAAC,aACC,QAAS,CAAA,UAAA,KAAe,OAAO,IAAQ,IAAA,QAAA,CAAS,QAAQ,GAAI,CAAA,GAAA;AAAA,QAFxC,IAGrB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACH,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE9D,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,UAAW,CAAA;AAAA,IAC1B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAO,EAAA;AAAA,YACL,KAAO,EAAA,eAAA;AAAA,WACT;AAAA,UAEA,8BAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAW,EAAA,CAAA;AAAA,SAAA;AAAA,OACjD;AAAA,MACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,sBACrC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,GAAI,EAAA,CAAA;AAAA,KAChB,EAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,OAAS,EAAA;AACjB,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AACrC,QAAiB,gBAAA,CAAA,OAAA,KAAY,IAAI,GAAG,CAAA,CAAA;AACpC,QAAA,mBAAA,CAAoB,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,OAAA,KAAY,EAAE,CAAA,CAAA;AAAA,iBAChD,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AAC5C,QAAA,gBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,GAC9B,IAAA,OAAA,CAAQ,KAAM,CAAA,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA;AAAA,SACpC,CAAA;AACA,QAAA,mBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,KAAM,GAAI,CAAA,GAAA,IAAO,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,EAAA;AAAA,SACrE,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAE3C,EAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,GAAA,CAAI,CAAI,GAAA,GAAA,CAAI,KAAQ,GAAA,CAAA;AAAA,QACvB,CAAA,EAAG,IAAI,CAAI,GAAA,CAAA;AAAA,QACX,OAAO,GAAI,CAAA,KAAA;AAAA,QACX,QAAQ,GAAI,CAAA,MAAA;AAAA,QACZ,UAAW,EAAA,QAAA;AAAA,QACX,KAAO,EAAA;AAAA,UACL,OAAA,EAAS,gBAAgB,OAAU,GAAA,MAAA;AAAA,UACnC,OAAA,EAAS,gBAAgB,CAAI,GAAA,CAAA;AAAA,UAC7B,UAAY,EAAA,eAAA;AAAA,SACd;AAAA,QAEC,QAAI,EAAA,GAAA,CAAA,KAAA;AAAA,OAAA;AAAA,KACP;AAAA,oBAEA,IAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,MAAA;AAAA,QACH,SAAU,EAAA,gBAAA;AAAA,QACV,EAAI,EAAA,OAAA;AAAA,UACF,OAAO;AAAA,YACL,IAAA,EAAM,gBACF,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,eAAe,EAAE,UAAW,CAAA,EAAE,CAAE,CAAA,KAAA,EAC9C,CAAA,CAAA,GAAA,eAAA;AAAA,YACJ,SAAW,EAAA;AAAA,cACT,IAAA,EAAM,IAAI,SAAU,CAAA,eAAe,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,aAC1D;AAAA,YACA,UAAY,EAAA,2BAAA;AAAA,YACZ,GAAG,GAAI,CAAA,CAAA;AAAA,YACP,GAAG,GAAI,CAAA,CAAA;AAAA,YACP,OAAO,GAAI,CAAA,KAAA;AAAA,YACX,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,IAAO,GAAA,CAAA;AAAA,YACrD,MAAQ,EAAA,GAAA,CAAI,MAAS,GAAA,CAAA,GAAI,IAAI,MAAS,GAAA,CAAA;AAAA,WACxC,CAAA;AAAA,UACA;AAAA,YACE,GAAI,CAAA,MAAA;AAAA,YACJ,GAAI,CAAA,KAAA;AAAA,YACJ,GAAI,CAAA,CAAA;AAAA,YACJ,GAAI,CAAA,CAAA;AAAA,YACJ,eAAA;AAAA,YACA,gBAAA;AAAA,YACA,aAAA;AAAA,WACF;AAAA,SACF;AAAA,QACA,YAAA,EAAc,CAAC,EAAO,KAAA;AAnH9B,UAAA,IAAAJ,GAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAoHU,UAAA,IAAI,CAAC,QAAU,EAAA;AACb,YAAuB,sBAAA,CAAA,SAAA,CAAU,OAAS,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,WACnD;AACA,UAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,GAAI,CAAA,MAAA,CAAA,CAAA;AAC1C,UAAA,MAAM,KAAQ,GAAA;AAAA,YACZ,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,YACnB,CAAG,EAAA,CAAA,EAAA,GAAA,UAAA,CAAW,EAAE,CAAA,KAAb,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAAA,WACrB,CAAA;AACA,UAAA,IAAI,CAAC,KAAA;AAAO,YAAA,OAAA;AAEZ,UAAK,IAAA,CAAA;AAAA,YACH,eAAA,EAAiB,MAAM,EAAG,CAAA,MAAA;AAAA,YAC1B,0BAA4B,EAAA,QAAA;AAAA,WAC7B,CAAA,CAAA;AAAA,SACH;AAAA,QACA,YAAA,EAAc,CAAC,EAAO,KAAA;AAnI9B,UAAAA,IAAAA,GAAAA,CAAAA;AAoIU,UAAA,IAAI,CAAC,QAAU,EAAA;AACb,YAAuB,sBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,CAAA,CAAA;AAAA,WAC9C;AAEA,UAAA,CAACA,MAAA,EAAG,CAAA,MAAA,CAAuB,SAA1B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAqC,MAAO,CAAA,MAAA,CAAA,CAAA;AAAA,SAC/C;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,aAAc,EAAA,QAAA;AAAA,cACd,IAAM,EAAA,CAAA;AAAA,cACN,IAAI,GAAI,CAAA,MAAA;AAAA,cACR,GAAI,EAAA,MAAA;AAAA,cACJ,QAAU,EAAA,OAAA;AAAA,cACV,UAAY,EAAA,cAAA;AAAA,cACZ,QAAU,EAAA,MAAA;AAAA,aAAA;AAAA,WACZ;AAAA,0BACA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,aAAc,EAAA,GAAA;AAAA,cACd,IAAA,EAAM,GAAI,CAAA,CAAA,GAAI,GAAI,CAAA,MAAA;AAAA,cAClB,IAAI,GAAI,CAAA,CAAA;AAAA,cACR,GAAI,EAAA,MAAA;AAAA,cACJ,QAAU,EAAA,OAAA;AAAA,cACV,UAAY,EAAA,cAAA;AAAA,cACZ,QAAU,EAAA,MAAA;AAAA,aAAA;AAAA,WACZ;AAAA,SAAA;AAAA,OAAA;AAAA,KACF;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;AC1IA,SAASG,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAEA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB,CAAE,CAAA,UAAA,CAAA;AAe1C,MAAM,eAAe,CAAC;AAAA,EACpB,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,GAAK,EAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA;AAAA,EACtD,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AA/D3B,EAAA,IAAA,EAAA,CAAA;AAgEE,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAC1C,EAAI,IAAA,CAAC,MAAM,cAAgB,EAAA;AACzB,IAAA,eAAA,CAAgB,IAAO,GAAA,EAAA,CAAA;AAAA,GACzB;AACA,EAAI,IAAA,UAAA,GACF,MAAM,KAAM,CAAA,KAAA,GAAA,CAAS,CAAC,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AACxE,EAAI,IAAA,WAAA,GACF,MAAM,KAAM,CAAA,MAAA,GAAA,CAAU,CAAC,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AACzE,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYA,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAE/C,EAAA,MAAM,WAAW,YAAa,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,IAAI,CAC/C,CAAA,MAAA,CAAO,CAAC,MAAA,KAAW,CAAC,CAAC,MAAA,CAAO,IAAI,CAChC,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACf,IAAA,OAAOF,qCACF,MADE,CAAA,EAAA;AAAA,MAEL,MAAM,MAAO,CAAA,IAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,MAAM,UAAU,YAAa,CAAA,QAAA,CAAS,CAAC,CAAA,CAAE,IAAI,CAAE,CAAA,GAAA;AAAA,IAC7C,CAAC,eAAe,UAAW,CAAA,GAAA;AAAA,GAC7B,CAAA;AACA,EAAA,MAAM,WAAc,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,GAAQ,KAAA;AACxC,IAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,UAA8B,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,CAAM,KAAA;AACrD,IAAA,MAAM,MAAqB,QAAS,CAAA,MAAA;AAAA,MAClC,CAAC,KAAK,MAAW,KAAA;AACf,QAAA,OAAOA,qCACF,GADE,CAAA,EAAA;AAAA,UAEL,CAAC,MAAO,CAAA,IAAI,GAAG,YAAA,CAAa,OAAO,IAAI,CAAA,CAAE,MAAO,CAAA,CAAC,KAAU,KAAA;AACzD,YAAA,OAAO,MAAM,GAAQ,KAAA,CAAA,CAAA;AAAA,WACtB,CAAE,CAAA,CAAC,CAAE,CAAA,KAAA;AAAA,SACR,CAAA,CAAA;AAAA,OACF;AAAA,MACA,EAAE,YAAY,CAAE,EAAA;AAAA,KAClB,CAAA;AACA,IAAO,OAAA,GAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,SAAS,SAAkB,CAAA;AAAA,IAC/B,KAAO,EAAA;AAAA,MACL,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,IAAA;AAAA,MACpB,UAAA;AAAA,KACF;AAAA,IACA,MAAA,EAAQ,UAAW,CAAA,GAAA,CAAI,SAAS,CAAA;AAAA,IAChC,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AAED,EAAA,MAAM,mBAAmB,SAAkB,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,KAAO,EAAA,CAAC,CAAG,EAAA,MAAA,CAAO,WAAW,CAAA;AAAA,GAC9B,CAAA,CAAA;AAED,EAAA,MAAM,YAAY,QAAiB,CAAA;AAAA,IACjC,KAAO,EAAA;AAAA,MACL,WAAA;AAAA,MACA,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,GAAA;AAAA,KACtB;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,IACA,IAAM,EAAA,EAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAA,MAAM,aAAa,WAAoB,CAAA;AAAA,IACrC,KAAO,EAAA;AAAA,MACL,WAAA;AAAA,MACA,OAAO,eAAA,KAAoB,QACvB,GAAA,eAAA,GACA,eAAgB,CAAA,GAAA;AAAA,KACtB;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,CAAA;AAAA,MACA,IAAK,CAAA,GAAA;AAAA,QACH,GAAG,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KACjB,IAAK,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,MAAO,CAAA,CAAA,CAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,QAAQ,YAA6B,CAAA;AAAA,IACzC,MAAQ,EAAA,WAAA;AAAA,IACR,OAAO,QAAS,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,IAAI,KAAK,CAAA;AAAA,GACvC,CAAA,CAAA;AAED,EAAM,MAAA,UAAA,GAAa,0BAA2B,CAAA,CAAC,MAAW,KAAA;AACxD,IAAO,OAAA,MAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAOD,EAAA,MAAM,QAAQ,UAAW,CAAA,gBAAA,CAAA;AAEzB,EAAA,MAAM,aAAa,KAAU,KAAA,GAAA,CAAA;AAE7B,EAAM,MAAA,MAAA,GAAS,QAAQ,MAAM;AAC3B,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAO,OAAA,UAAA,CAAA;AAAA,KACT;AACA,IAAO,OAAA,SAAA,CAAA;AAAA,GACN,EAAA,CAAC,UAAY,EAAA,UAAA,EAAY,SAAS,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,eAAe,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AACxD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CACG,iBAA8B,CAAI,CAAA,EAAA,EAAA,CAAA,WAAA,CAAe,CACjD,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,GAAA,GAAM,QAAQ,qBAAsB,EAAA,CAAA;AAC1C,MAAA,OAAA,CAAQ,IAAI,GAAG,CAAA,CAAA;AACf,MAAI,IAAA,GAAA,CAAI,QAAQ,GAAK,EAAA;AAEnB,QAAA,OAAA,CAAQ,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEtB,QAAA,OAAA,CAAQ,MAAM,QAAW,GAAA,QAAA,CAAA;AAEzB,QAAA,OAAA,CAAQ,MAAM,YAAe,GAAA,UAAA,CAAA;AAE7B,QAAA,OAAA,CAAQ,MAAM,UAAa,GAAA,QAAA,CAAA;AAAA,OAC7B;AAEA,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAA,OAAA,CAAQ,MAAM,SAAY,GAAA,CAAA,aAAA,CAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAC3E,IAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,IAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,MACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,QACE,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACF;AAAA,KACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,MACE,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,KAEF,GAAA,EAAA,CAAA;AACN,IAAA,MAAM,qBAAmD,EAAC,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,kBAAA,CAAmB,KAAKA,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAL,EAAU,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAmB,kBAAA,CAAA,IAAA,CAAKD,qCACnB,GADmB,CAAA,EAAA;AAAA,UAEtB,KAAO,EAAA,SAAA;AAAA,UACP,YAAY,IAAK,CAAA,IAAA;AAAA,SAClB,CAAA,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,kBAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,cAAkC,GAAA,YAAA,CAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA;AAAA,IACxE,CAAC,MAAM,KAAU,KAAA;AACf,MAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,MAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,QACE,YAAA;AAAA,UACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,YACE,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA;AAAA,WACF;AAAA,SACN;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,OAEF,GAAA,EAAA,CAAA;AACN,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,SAAA;AAAA,QACP,OAAO,IAAK,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,YAAA,CAAa,MAAM,QAAS,CAAA,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAA,MAAM,cAAkD,EAAC,CAAA;AACzD,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,WAAA,CAAY,IAAK,CAAA;AAAA,UACf,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,KAAO,EAAA,IAAA,CAAK,IAAO,GAAA,KAAA,GAAQ,GAAI,CAAA,GAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,WAAA,CAAA;AAAA,GACR,CACA,CAAA,IAAA,EACA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA,cAAA,CAAe,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAElD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QACL,EAAA;AAAA,QACA,SAAW,EAAA,CAAA,EAAG,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,CAAA,EAAM,KAAM,CAAA,KAAA,CAAA,CAAA;AAAA,QACvC,EAAI,EAAA;AAAA,UACF,QAAU,EAAA,QAAA;AAAA,SACZ;AAAA,QAEA,QAAA,kBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,UAAA;AAAA,YACL,WAAW,CAAI,CAAA,EAAA,OAAA,CAAA,WAAA,CAAA;AAAA,YACf,MAAA,EAAQ,MAAM,KAAM,CAAA,MAAA;AAAA,YACpB,KAAA,EAAO,MAAM,KAAM,CAAA,KAAA;AAAA,YAElB,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,QACL,oBAAA,GAAA;AAAA,gBAAC,IAAK,CAAA,IAAA;AAAA,gBAAL;AAAA,kBACC,MAAA;AAAA,kBACA,MAAA;AAAA,kBACA,IAAM,EAAA,CAAA;AAAA,kBACN,KAAO,EAAA,UAAA;AAAA,kBACP,MAAQ,EAAA,WAAA;AAAA,kBACR,YAAc,EAAA,EAAA;AAAA,kBACd,eAAiB,EAAA,EAAA;AAAA,kBACjB,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,iBAAA;AAAA,eAE/B;AAAA,8BAEF,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,kBAG7B,QAAA,kBAAA,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,IAAM,EAAA,UAAA;AAAA,sBACN,IAAM,EAAA,WAAA;AAAA,sBACN,MAAQ,EAAA,WAAA;AAAA,sBACR,EAAI,EAAA,SAAA;AAAA,sBACJ,OAAS,EAAA,MAAA;AAAA,sBACT,OAAS,EAAA,gBAAA;AAAA,sBACT,MAAA;AAAA,sBACA,KAAA;AAAA,sBAEC,QAAC,EAAA,CAAA,SAAA,KACA,SAAU,CAAA,GAAA,CAAI,CAAC,QAAa,KAAA;AAC1B,wBACE,uBAAA,GAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BAEC,MAAM,QAAS,CAAA,EAAA;AAAA,4BAEd,QAAS,EAAA,QAAA,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC1B,8BAAA,MAAM,MAAM,CAAG,EAAA,QAAA,CAAS,KAAS,CAAA,CAAA,EAAA,GAAA,CAAI,SAAS,GAAI,CAAA,GAAA,CAAA,CAAA,CAAA;AAElD,8BACE,uBAAA,GAAA;AAAA,gCAAC,GAAA;AAAA,gCAAA;AAAA,kCACC,QAAA,EAAU,QAAS,CAAA,IAAA,CAAK,MAAW,KAAA,CAAA;AAAA,kCAEnC,GAAA;AAAA,kCACA,QAAA;AAAA,kCACA,KAAA;AAAA,kCACA,UAAA;AAAA,kCACA,aAAA,EAAe,cAAc,IAAK,EAAA;AAAA,iCAAA;AAAA,gCAL7B,GAAA;AAAA,+BAMP,CAAA;AAAA,6BAEH,CAAA;AAAA,2BAAA;AAAA,0BAjBI,CAAA,UAAA,EAAa,QAAS,CAAA,KAAA,CAAA,CAAA,EAAS,QAAS,CAAA,EAAA,CAAA,CAAA;AAAA,yBAkB/C,CAAA;AAAA,uBAEH,CAAA;AAAA,qBAAA;AAAA,mBAEL;AAAA,iBAAA;AAAA,eACF;AAAA,8BACA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,KAAO,EAAA,MAAA;AAAA,kBACP,MAAM,eAAgB,CAAA,IAAA;AAAA,kBACtB,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,iBAAA;AAAA,eAER;AAAA,8BACA,GAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,GAAK,EAAA,WAAA;AAAA,kBACL,KAAO,EAAA,MAAA;AAAA,kBACP,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,kBAEN,cAAgB,EAAA;AAAA,oBACd,SAAW,EAAA,WAAA;AAAA,oBACX,UAAY,EAAA,OAAA;AAAA,mBACd;AAAA,kBACA,WAAa,EAAA,EAAA;AAAA,iBAAA;AAAA,eACf;AAAA,aAAA;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KACF;AAAA,IACC,cAAA,CAAe,SAAS,CACvB,oBAAA,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,OAAA;AAAA,QACJ,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAKE,cAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KAEJ;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACtbO,MAAM,OAAO,CAAC;AAAA,EACnB,aAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA;AAAA,EAEA,KAAA;AAAA,EACA,gBAAA;AACF,CAUM,KAAA;AACJ,EAAA,4BACGI,UACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAc,aAAA,CAAA,QAAA,CAAS,QAAQ,CAC9B,oBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAA,EAAQ,IAAI,SAAU,CAAA,KAAK,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,QAChD,IAAA,EAAM,IAAI,SAAU,CAAA,KAAK,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAChD;AAAA,oBAEF,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,CAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAA,EAAQ,IAAI,SAAU,CAAA,KAAK,EAAE,MAAO,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,QAC9C,IAAA,EAAM,IAAI,SAAU,CAAA,KAAK,EAAE,MAAO,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAC9C;AAAA,oBACA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,EAAA;AAAA,QACH,EAAA;AAAA,QACA,EAAA;AAAA,QACA,MAAO,EAAA,aAAA;AAAA,QACP,IAAK,EAAA,aAAA;AAAA,QACL,cAAc,MAAM;AAClB,UAAiB,gBAAA,CAAA,CAAC,QAAQ,CAAC,CAAA,CAAA;AAAA,SAC7B;AAAA,QACA,cAAc,MAAM;AAClB,UAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAAA,SACrB;AAAA,QACA,KAAA,EAAO,EAAE,MAAA,EAAQ,SAAU,EAAA;AAAA,OAAA;AAAA,KAC7B;AAAA,GAAA,EAAA,EA9Ba,QA+Bf,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;;AC7BA,SAASF,kBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AAEA,SAAS,KAAK,UAAkC,EAAA;AAC9C,EAAA,OAAO,UAAW,CAAA,GAAA,CAAA;AACpB,CAAA;AAEA,SAAS,KAAK,UAAkC,EAAA;AAC9C,EAAO,OAAA,MAAA,CAAO,WAAW,KAAK,CAAA,CAAA;AAChC,CAAA;AAEA,SAAS,UAAU,KAA6B,EAAA;AA1DhD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA2DE,EAAA,MAAM,OAAU,GAAA,YAAA,CAAA,CAAa,EAAM,GAAA,KAAA,CAAA,QAAA,KAAN,mBAAgB,IAAI,CAAA,CAAA;AACjD,EAAA,MAAM,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAA,KAAW,OAAO,IAAI,CAAA,CAAA;AAChD,EAAA,MAAM,UAAU,IAAK,CAAA,MAAA;AAAA,IACnB,CAAC,GAAK,EAAA,CAAA,KAAM,aAAa,GAAG,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IACtC,EAAC;AAAA,GACH,CAAA;AACA,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA,QAAQ,YAA6B,CAAA;AAAA,MACnC,MAAA,EAAQ,aAAa,OAAQ,CAAA,CAAC,EAAE,IAAI,CAAA,CAAE,IAAI,IAAI,CAAA;AAAA,KAC/C,CAAA;AAAA,IACD,QAAQ,WAAoB,CAAA;AAAA,MAC1B,MAAQ,EAAA;AAAA,QAAA,CAAA,CACN,EAAI,GAAA,GAAA,CAAA,OAAA,EAAS,IAAI,CAAA,KAAjB,IAAsB,GAAA,EAAA,GAAA,CAAA,GAAI,CAAI,IAAA,CAAA,EAAA,GAAA,GAAA,CAAI,OAAS,EAAA,IAAI,CAAjB,KAAA,IAAA,GAAA,EAAA,GAAsB,CAAI,GAAA,CAAA;AAAA,QAAA,CACxD,EAAI,GAAA,GAAA,CAAA,OAAA,EAAS,IAAI,CAAA,KAAjB,IAAsB,GAAA,EAAA,GAAA,CAAA;AAAA,OACxB;AAAA,KACD,CAAA;AAAA,IACD,WAAW,QAAiB,CAAA;AAAA,MAC1B,MAAQ,EAAA;AAAA,QAAA,CAAA,CACN,EAAI,GAAA,GAAA,CAAA,OAAA,EAAS,IAAI,CAAA,KAAjB,IAAsB,GAAA,EAAA,GAAA,CAAA,GAAI,CAAI,IAAA,CAAA,EAAA,GAAA,GAAA,CAAI,OAAS,EAAA,IAAI,CAAjB,KAAA,IAAA,GAAA,EAAA,GAAsB,CAAI,GAAA,CAAA;AAAA,QAAA,CACxD,EAAI,GAAA,GAAA,CAAA,OAAA,EAAS,IAAI,CAAA,KAAjB,IAAsB,GAAA,EAAA,GAAA,EAAA;AAAA,OACxB;AAAA,KACD,CAAA;AAAA,GACH,CAAA;AACF,CAAA;AAWA,MAAM,YAAY,CAAC;AAAA,EACjB,KAAA;AAAA,EACA,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,GAAK,EAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA;AAAA,EACtD,OAAA;AAAA,EACA,SAAA;AACF,CAA2B,KAAA;AACzB,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAC1C,EAAI,IAAA,CAAC,MAAM,cAAgB,EAAA;AACzB,IAAA,eAAA,CAAgB,IAAO,GAAA,EAAA,CAAA;AAAA,GACzB;AACA,EAAI,IAAA,UAAA,GAAa,MAAM,KAAM,CAAA,KAAA,CAAA;AAC7B,EAAA,IAAI,cACF,KAAM,CAAA,KAAA,CAAM,UAAU,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AACxE,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAYA,kBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,MAAM,EAAE,OAAS,EAAA,MAAA,EAAQ,QAAQ,SAAU,EAAA,GAAI,UAAU,KAAK,CAAA,CAAA;AAC9D,EAAM,MAAA,MAAA,GAAS,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAC/C,EAAA,MAAM,WAAc,GAAA,YAAA,CAAa,OAAQ,CAAA,CAAC,EAAE,IAAI,CAAA,CAAA;AAChD,EAAA,MAAM,gBAAmB,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAAQ,KAAA;AAC5C,IAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AACD,EAAM,MAAA,IAAA,GAAO,aAAa,WAAY,CAAA,MAAA,CAAA;AAEtC,EAAO,MAAA,CAAA,KAAA;AAAA,IACL,WAAY,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA;AACxB,MAAA,IAAI,MAAM,CAAG,EAAA;AACX,QAAA,OAAO,eAAgB,CAAA,IAAA,CAAA;AAAA,OACzB;AACA,MAAO,OAAA,CAAA,GAAI,OAAO,eAAgB,CAAA,IAAA,CAAA;AAAA,KACnC,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,MAAA,CAAO,KAAM,CAAA;AAAA,IACX,WAAe,GAAA,CAAA,eAAA,CAAgB,GAAM,GAAA,eAAA,CAAgB,MAAU,IAAA,CAAA;AAAA,IAC/D,OAAO,eAAA,KAAoB,QAAW,GAAA,eAAA,GAAkB,eAAgB,CAAA,GAAA;AAAA,GACzE,CAAA,CAAA;AACD,EAAA,SAAA,CAAU,KAAM,CAAA;AAAA,IACd,WAAA;AAAA,IACA,OAAO,eAAA,KAAoB,QAAW,GAAA,eAAA,GAAkB,eAAgB,CAAA,GAAA;AAAA,GACzE,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,aAAe,EAAA,gBAAgB,CAAI,GAAA,QAAA,CAAmB,EAAE,CAAA,CAAA;AAE/D,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AACX,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,eAAe,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AACxD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CACG,iBAA8B,CAAI,CAAA,EAAA,EAAA,CAAA,WAAA,CAAe,CACjD,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,qBAAA,EAAwB,CAAA,KAAA,CAAA;AAE9C,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAQ,OAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,yBAAA,EAA4B,KAAQ,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AACD,EAAS,SAAA,cAAA,CACP,KACA,EAAA,OAAA,EAMA,UACA,EAAA;AACA,IAAA,OAAO,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAU,KAAA;AACpC,MAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,UAAU,CAAA,CAAA;AAC/C,MAAM,MAAA,IAAA,GAAO,MAAM,SAAS,CAAA,CAAA;AAC5B,MAAA,OAAOF,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EAAL,EAAa,UAAA,EAAY,IAAK,EAAA,CAAA,CAAA;AAAA,KACtC,CAAA,CAAA;AAAA,GACH;AACA,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA,CAAuB,EAAE,CAAA,CAAA;AACnD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,SAAS,gBAAiB,CAAA,IAAA,EAAO,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACpD,MAAO,OAAA;AAAA,QACL,QAAQ,KAAM,CAAA,GAAA;AAAA,QACd,QAAQ,KAAM,CAAA,KAAA;AAAA,QACd,CAAG,EAAA,MAAA,CAAO,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,QACrB,CAAG,EAAA,YAAA,CAAa,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,OAC7B,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAM,WAAc,GAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAW,KAAA;AAC1C,MAAA,OAAO,MAAO,CAAA,IAAA,CAAA;AAAA,KACf,CAAA,CAAA;AACD,IAAA,MAAM,SAAY,GAAA,cAAA,CAAe,WAAa,EAAA,MAAA,EAAQ,YAAY,MAAM,CAAA,CAAA;AACxE,IAAA,QAAA,CAAS,SAAS,CAAA,CAAA;AAAA,GAGpB,EAAG,EAAE,CAAA,CAAA;AACL,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAA,QAAA,CAAuB,EAAE,CAAA,CAAA;AACrE,EAAM,MAAA,sBAAA,GAAyB,YAAY,cAAc,CAAA,CAAA;AACzD,EAAM,MAAA,aAAA,GAAgB,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAC3E,IAAA,MAAM,WAAW,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AAC9D,IAAM,MAAA,SAAA,GACJ,KAAK,KAAU,KAAA,EAAA,IAAM,KAAK,KAAU,KAAA,KAAA,CAAA,GAChC,KAAK,KACL,GAAA,YAAA;AAAA,MACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,QACE,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACF;AAAA,KACN,CAAE,SAAS,CACX,GAAA,WAAA;AAAA,MACE,YAAA;AAAA,QACE,MAAA,GACI,OAAO,MACP,GAAA;AAAA,UACE,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,OACN;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,KAEF,GAAA,EAAA,CAAA;AACN,IAAA,MAAM,qBAAmD,EAAC,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,kBAAA,CAAmB,KAAKD,eAAK,CAAAC,gBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAL,EAAU,UAAY,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAmB,kBAAA,CAAA,IAAA,CAAKD,qCACnB,GADmB,CAAA,EAAA;AAAA,UAEtB,KAAO,EAAA,SAAA;AAAA,UACP,YAAY,IAAK,CAAA,IAAA;AAAA,SAClB,CAAA,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,EAAE,kBAAoB,EAAA,WAAA,EAAa,SAAU,EAAA,CAAA;AAAA,GACrD,CAAA,CAAA;AAED,EAAA,MAAM,cAAkC,GAAA,aAAA,CAAc,GAAI,CAAA,CAAC,MAAW,KAAA;AAtPxE,IAAA,IAAA,EAAA,CAAA;AAuPI,IAAO,OAAA;AAAA,MACL,KAAA,EAAA,CAAO,EAAO,GAAA,MAAA,CAAA,WAAA,KAAP,IAAsB,GAAA,EAAA,GAAA,EAAA;AAAA,MAC7B,KAAO,EAAA,MAAA,CAAO,kBAAmB,CAAA,CAAC,CAAE,CAAA,UAAA;AAAA,KACtC,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,YAAA,CAAa,MAAM,QAAS,CAAA,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAA,MAAM,cAAkD,EAAC,CAAA;AACzD,IAAA,YAAA,CAAa,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,IAAI,GAAI,CAAA,KAAA,KAAU,EAAM,IAAA,GAAA,CAAI,UAAU,KAAW,CAAA,EAAA;AAC/C,QAAA,WAAA,CAAY,IAAK,CAAA;AAAA,UACf,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,KAAO,EAAA,IAAA,CAAK,IAAO,GAAA,KAAA,GAAQ,GAAI,CAAA,GAAA;AAAA,SAChC,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,WAAA,CAAA;AAAA,GACR,CACA,CAAA,IAAA,EACA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA,cAAA,CAAe,IAAK,CAAA,MAAM,CAAC,CAAA,CAAA;AAElD,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,UAAW,CAAA;AAAA,IAC1B,UAAU,cACP,CAAA,IAAA,CAAK,CAAC,CAAG,EAAA,CAAA,KAAM,OAAO,CAAE,CAAA,MAAM,CAAI,GAAA,MAAA,CAAO,EAAE,MAAM,CAAC,EAClD,GAAI,CAAA,CAAC,MAAM,CAAM,KAAA;AAChB,MAAA,MAAM,cAAc,cAAe,CAAA,IAAA;AAAA,QACjC,CAAC,GAAQ,KAAA,GAAA,CAAI,UAAU,IAAK,CAAA,UAAA,GAAa,QAAQ,IAAK,CAAA,MAAA;AAAA,OACxD,CAAA;AAEA,MAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAO,EAAA;AAAA,cACL,KACE,EAAA,cAAA,CACE,cAAe,CAAA,SAAA,CAAU,CAAC,GAAQ,KAAA;AAChC,gBACE,OAAA,GAAA,CAAI,WACH,WACG,GAAA,IAAA,CAAK,aAAa,KAAQ,GAAA,IAAA,CAAK,SAC/B,IAAK,CAAA,UAAA,CAAA,CAAA;AAAA,eAEZ,CACH,CAAE,CAAA,KAAA;AAAA,aACN;AAAA,YAEA,QAAA,kBAAA,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,UAAW,EAAA,CAAA;AAAA,WAAA;AAAA,SAC3B;AAAA,QACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,eAAK,MAAO,EAAA,CAAA;AAAA,wBACvC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,QACjB,cAAe,CAAA,CAAA,GAAI,CAAC,CAAA,wBAAM,IAAG,EAAA,EAAA,CAAA;AAAA,OAAA,EAAA,EApBtB,GAAG,IAAK,CAAA,UAAA,CAAA,CAAA,EAAc,IAAK,CAAA,MAAA,CAAA,CAAA,EAAU,KAAK,MAqBpD,CAAA,CAAA,CAAA,CAAA;AAAA,KAEH,CAAA;AAAA,GACJ,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AACvD,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,OAAS,EAAA;AACjB,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AACrC,QAAA,iBAAA,CAAkB,OAAO,CAAA,CAAA;AAAA,iBAChB,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AAC5C,QAAA,iBAAA,CAAkB,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AAAA,OAC3C;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AAEA,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,GAAA,EAAA,EAAI,EAAQ,EAAA,GAAA,EAAK,MAChB,EAAA,QAAA,kBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,UAAA;AAAA,QACL,KAAO,EAAA,UAAA;AAAA,QACP,MAAQ,EAAA,WAAA;AAAA,QACR,EAAG,EAAA,YAAA;AAAA,QACH,WAAW,CAAI,CAAA,EAAA,OAAA,CAAA,WAAA,CAAA;AAAA,QACf,WAAA,EAAa,CAAC,EAAO,KAAA;AAzU/B,UAAA,IAAA,EAAA,CAAA;AA0UY,UAAM,MAAA,IAAA,GAAA,CAAO,EAAW,GAAA,UAAA,CAAA,OAAA,KAAX,IAAoB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAA,EAAA,CAAA;AAEjC,UAAA,IAAI,UAAU,EAAG,CAAA,OAAA,CAAA;AACjB,UAAA,IAAI,UACF,EAAG,CAAA,OAAA,GAAA,CAAW,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AAEhE,UAAA,IAAI,IAAM,EAAA;AACR,YAAU,OAAA,GAAA,EAAA,CAAG,UAAU,IAAK,CAAA,IAAA,CAAA;AAC5B,YAAU,OAAA,GAAA,EAAA,CAAG,UAAU,IAAK,CAAA,GAAA,CAAA;AAAA,WAC9B;AACA,UAAA,MAAM,SAAY,GAAA,KAAA,CAAM,MAAO,CAAA,CAAC,IAAS,KAAA;AACvC,YACE,OAAA,IAAA,CAAK,IAAM,CAAA,KAAA,CAAA,IAAA,CAAK,CAAI,GAAA,OAAA,EAAY,KAAK,KAAK,CAAA,IAAA,CAAA,CAAA,GAAI,OAAY,EAAA,CAAA,CAAC,CAC3D,GAAA,EAAA,CAAA;AAAA,WAEH,CAAA,CAAA;AAED,UAAA,IAAI,sBAAuB,CAAA,OAAA,IAAW,SAAU,CAAA,MAAA,GAAS,CAAG,EAAA;AAC1D,YAAA,MAAM,cAAiB,GAAA,OAAA,CACpB,GAAI,CAAA,CAAC,GAAQ,KAAA;AACZ,cAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AACf,cAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC1B,gBAAI,IAAA,GAAA,CAAI,IAAS,KAAA,IAAA,CAAK,UAAY,EAAA;AAChC,kBAAA,QAAA,GAAW,IAAK,CAAA,UAAA,CAAA;AAAA,iBAClB;AAAA,eACD,CAAA,CAAA;AAED,cAAO,OAAA,QAAA,CAAA;AAAA,aACR,CACA,CAAA,MAAA,CAAO,CAAC,IAAA,KAAS,SAAS,EAAE,CAAA,CAAA;AAC/B,YAAA,MAAM,YAAe,GAAA,WAAA,CAAY,SAAU,CAAA,CAAC,KAAU,KAAA;AACpD,cAAA,OAAO,KAAM,CAAA,GAAA,KAAQ,SAAU,CAAA,CAAC,CAAE,CAAA,MAAA,CAAA;AAAA,aACnC,CAAA,CAAA;AAED,YAAI,IAAA,cAAA,IAAkB,iBAAiB,KAAW,CAAA,EAAA;AAChD,cAAA,MAAM,eAAkB,GAAA,cAAA,CAAe,GAAI,CAAA,CAAC,GAAQ,KAAA;AAClD,gBAAA,OAAO,GAAG,GAAM,CAAA,EAAA,YAAA,CAAA,CAAA,CAAA;AAAA,eACjB,CAAA,CAAA;AAED,cAAiB,gBAAA,CAAA,CAAC,GAAG,eAAe,CAAC,CAAA,CAAA;AAAA,aACvC;AACA,YAAA,iBAAA,CAAkB,SAAS,CAAA,CAAA;AAC3B,YAAK,IAAA,CAAA;AAAA,cACH,eAAA,EAAiB,MAAM,EAAG,CAAA,MAAA;AAAA,cAC1B,0BAA4B,EAAA,QAAA;AAAA,aAC7B,CAAA,CAAA;AAAA,WACH,MAAA,IAAW,SAAU,CAAA,MAAA,KAAW,CAAG,EAAA;AACjC,YAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAAA,WACrB;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,QACL,oBAAA,GAAA;AAAA,YAAC,IAAK,CAAA,IAAA;AAAA,YAAL;AAAA,cACC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,cAE7B,IAAM,EAAA,CAAA;AAAA,cACN,MAAA;AAAA,cACA,MAAQ,EAAA,YAAA;AAAA,cACR,KAAO,EAAA,UAAA;AAAA,cACP,MAAQ,EAAA,WAAA;AAAA,cACR,MAAA,EAAQ,iCAAQ,IAAK,CAAA,MAAA;AAAA,cACrB,aAAA,EAAe,iCAAQ,IAAK,CAAA,OAAA;AAAA,aAAA;AAAA,WAC9B;AAAA,UAED,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAM,KAAA;AA7YtC,YAAA,IAAA,EAAA,CAAA;AA8YY,YAAM,MAAA,kBAAA,GAAqB,YAAa,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACnD,YAAA,MAAM,YAAW,EAAc,GAAA,aAAA,CAAA,IAAA;AAAA,cAC7B,CAAC,IAAS,KAAA,IAAA,CAAK,mBAAmB,CAAC,CAAA,CAAE,eAAe,MAAO,CAAA,IAAA;AAAA,kBAD5C,IAEd,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA,CAAA;AAEH,YACE,uBAAA,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,MACG,OAAO,eAAA,KAAoB,QACxB,GAAA,eAAA,GACA,gBAAgB,GAAO,IAAA,EAAA;AAAA,gBAE7B,KAAO,EAAA;AAAA,kBACL,SACE,cAAmB,KAAA,EAAA,IAAM,cAAmB,KAAA,MAAA,CAAO,OAC/C,IACA,GAAA,CAAA;AAAA,kBACN,UAAY,EAAA,eAAA;AAAA,iBACd;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAO,SAAU,CAAA,cAAA;AAAA,sBACjB,IAAM,EAAA,kBAAA;AAAA,sBACN,CAAA,EAAG,CAAC,UAAe,KAAA;AAtarC,wBAAAD,IAAAA,GAAAA,CAAAA;AAuaoB,wBAAA,OAAA,CAAOA,MAAA,MAAO,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,KAAvB,OAAAA,GAA4B,GAAA,CAAA,CAAA;AAAA,uBACrC;AAAA,sBACA,CAAA,EAAG,CAAC,UAAY,KAAA;AAzalC,wBAAAA,IAAAA,GAAAA,CAAAA;AAyaqC,wBAAA,OAAA,CAAAA,MAAA,YAAa,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,KAA7B,OAAAA,GAAkC,GAAA,CAAA,CAAA;AAAA,uBAAA;AAAA,sBACrD,QAAQ,QAAY,IAAA,IAAA,GAAA,QAAA,GAAA,OAAA;AAAA,sBACpB,WAAa,EAAA,CAAA;AAAA,sBACb,aAAe,EAAA,CAAA;AAAA,sBACf,cAAe,EAAA,oBAAA;AAAA,qBAAA;AAAA,mBACjB;AAAA,kBACC,kBAAmB,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AA/a3D,oBAAAA,IAAAA,GAAAA,CAAAA;AAgbkB,oBAAA,MAAM,GAAM,GAAA,MAAA,CAAO,IAAO,GAAA,CAAA,CAAE,QAAS,EAAA,CAAA;AACrC,oBAAM,MAAA,SAAA,GAAA,CAAYA,GAAA,GAAA,aAAA,CACf,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,kBAAkB,CACrC,CAAA,IAAA,EACA,CAAA,IAAA;AAAA,sBACC,CAAC,QACC,GAAI,CAAA,UAAA,KAAe,OAAO,IAC1B,IAAA,GAAA,CAAI,QAAQ,UAAW,CAAA,GAAA;AAAA,qBAC3B,KAPgB,gBAAAA,GAOb,CAAA,KAAA,CAAA;AACL,oBAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,sCAAA,GAAA;AAAA,wBAAC,MAAA;AAAA,wBAAA;AAAA,0BACC,CAAG,EAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAC,CAAI,GAAA,EAAA;AAAA,0BAC9B,CAAG,EAAA,YAAA,CAAa,IAAK,CAAA,UAAU,CAAC,CAAI,GAAA,CAAA;AAAA,0BACpC,UAAW,EAAA,QAAA;AAAA,0BACX,KAAO,EAAA;AAAA,4BACL,OACE,EAAA,cAAA,KAAmB,MAAO,CAAA,IAAA,GAAO,OAAU,GAAA,MAAA;AAAA,4BAC7C,OAAS,EAAA,cAAA,KAAmB,MAAO,CAAA,IAAA,GAAO,CAAI,GAAA,CAAA;AAAA,4BAC9C,UAAY,EAAA,eAAA;AAAA,2BACd;AAAA,0BAEC,QAAW,EAAA,UAAA,CAAA,KAAA;AAAA,yBAAA;AAAA,uBACd;AAAA,sCACA,GAAA;AAAA,wBAAC,IAAA;AAAA,wBAAA;AAAA,0BACC,OAAO,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,OAAA;AAAA,0BACpB,UAAA;AAAA,0BACA,aAAA;AAAA,0BACA,EAAI,EAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAC,CAAA;AAAA,0BAC3B,EAAI,EAAA,YAAA,CAAa,IAAK,CAAA,UAAU,CAAC,CAAA;AAAA,0BACjC,gBAAA;AAAA,0BACA,QAAU,EAAA,GAAA;AAAA,0BACV,MAAA;AAAA,yBAAA;AAAA,uBACF;AAAA,qBAAA,EAAA,EAvBM,GAwBR,CAAA,CAAA;AAAA,mBAEH,CAAA;AAAA,iBAAA;AAAA,eAAA;AAAA,cA/DI,CAAS,MAAA,EAAA,MAAA,CAAO,IAAO,GAAA,CAAA,CAAE,QAAS,EAAA,CAAA,CAAA;AAAA,aAgEzC,CAAA;AAAA,WAEH,CAAA;AAAA,0BAED,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA,YAAA;AAAA,cACP,MAAM,eAAgB,CAAA,IAAA;AAAA,cACtB,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,aAAA;AAAA,WAER;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,GACE,EAAA,WAAA,GAAA,CAAe,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA;AAAA,cAEjE,KAAO,EAAA,MAAA;AAAA,cACP,OACE,KAAM,CAAA,SAAA,KAAc,WAAW,KAAM,CAAA,cAAA,GACjC,MAAM,UACN,GAAA,EAAA;AAAA,cAEN,cAAgB,EAAA;AAAA,gBACd,SAAW,EAAA,WAAA;AAAA,eACb;AAAA,cACA,WAAa,EAAA,EAAA;AAAA,aAAA;AAAA,WACf;AAAA,SAAA;AAAA,OAAA;AAAA,KAEJ,EAAA,CAAA;AAAA,IACC,cAAA,CAAe,SAAS,CACvB,oBAAA,GAAA,CAAC,mBAAgB,EAAI,EAAA,OAAA,EAAS,YAAY,cAAgB,EAAA,CAAA;AAAA,GAE9D,EAAA,CAAA,CAAA;AAEJ,CAAA;;ACtfA,SAAS,aAAc,CAAA;AAAA,EACrB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AACF,CAMG,EAAA;AACD,EACE,uBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,EAAE,KAAA,EAAO,MAAO,EAAA;AAAA,MACpB,MAAM,CAAiB,cAAA,EAAA,OAAA,CAAA,CAAA;AAAA,MACvB,SAAA,EAAW,CAAiB,cAAA,EAAA,OAAA,CAAA,CAAA,EAAW,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,CAAA;AAAA,MACpD,OAAO,OAAW,IAAA,IAAA,GAAA,OAAA,GAAA,GAAA;AAAA,MAClB,QAAA,EAAU,CAAC,EAAO,KAAA;AAChB,QAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,QAAW,UAAA,CAAA,EAAA,CAAG,OAAO,KAAK,CAAA,CAAA;AAAA,OAC5B;AAAA,MAEC,QAAA,EAAA;AAAA,QACE,MAAA,CAAA,GAAA,CAAI,CAAC,KAAA,EAAO,CAAM,KAAA;AACjB,UAAO,OAAA;AAAA,YACL,KAAO,EAAA,KAAA;AAAA,YACP,OAAO,CAAG,EAAA,CAAA,CAAA,CAAA;AAAA,WACZ,CAAA;AAAA,SACD,CAAA,CACA,GAAI,CAAA,CAAC,2BACH,GAAA,CAAA,QAAA,EAAA,EAA0B,KAAO,EAAA,MAAA,CAAO,KACtC,EAAA,QAAA,EAAA,MAAA,CAAO,KADG,EAAA,EAAA,MAAA,CAAO,KAEpB,CACD,CAAA;AAAA,QAAG,GAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACR,CAAA;AAEJ;;ACjCA,MAAM,eAAe,CAAC;AAAA,EACpB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,MAAA;AAAA,EACA,eAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AACF,CAwBM,KAAA;AACJ,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,UAAW,CAAA;AAAA,IAC1B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAO,EAAA;AAAA,YACL,OAAO,IAAK,CAAA,KAAA;AAAA,WACd;AAAA,UAEA,QAAA,kBAAA,GAAA,CAAC,YAAQ,QAAW,EAAA,UAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OACtB;AAAA,MACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,eAAK,CAAE,EAAA,CAAA;AAAA,sBAClC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,EAAA,CAAA;AAAA,KACf,EAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,MAAA;AAAA,QACJ,EAAA,EAAI,QAAQ,MAAM;AAChB,UAAO,OAAA;AAAA,YACL,OAAO,CAAG,EAAA,KAAA,CAAA,EAAA,CAAA;AAAA,YACV,QAAQ,CAAG,EAAA,MAAA,CAAA,EAAA,CAAA;AAAA,YACX,GAAG,CAAG,EAAA,CAAA,CAAA,EAAA,CAAA;AAAA,YACN,GAAG,CAAG,EAAA,CAAA,CAAA,EAAA,CAAA;AAAA,YACN,MAAM,CAAG,EAAA,IAAA,CAAA,CAAA;AAAA,YACT,SAAW,EAAA;AAAA,cACT,IAAA,EAAM,IAAI,SAAU,CAAA,IAAI,EAAE,QAAS,CAAA,EAAE,EAAE,KAAM,EAAA,CAAA,CAAA;AAAA,aAC/C;AAAA,YACA,UAAY,EAAA,YAAA;AAAA,WACd,CAAA;AAAA,WACC,CAAC,IAAA,EAAM,QAAQ,KAAO,EAAA,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,QAC9B,YAAA,EAAc,CAAC,EAAO,KAAA;AACpB,UAAK,IAAA,CAAA;AAAA,YACH,eAAA,EAAiB,MAAM,EAAG,CAAA,MAAA;AAAA,YAC1B,0BAA4B,EAAA,QAAA;AAAA,WAC7B,CAAA,CAAA;AAAA,SACH;AAAA,QACA,cAAc,MAAM;AAAA,SAAC;AAAA,OAAA;AAAA,KACvB;AAAA,IAEC,CAAC,MACA,oBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAI,EAAA,KAAA;AAAA,QACJ,EAAI,EAAA,KAAA;AAAA,QACJ,MAAA;AAAA,QACA,eAAiB,EAAA,eAAA;AAAA,OAAA;AAAA,KACnB;AAAA,oBAEF,GAAA,CAAC,UAAK,UAAW,EAAA,QAAA,EAAS,GAAG,KAAO,EAAA,CAAA,EAAG,OACpC,QACH,EAAA,WAAA,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrFA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,IAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AACF,CAWM,KAAA;AAEJ,EAAA,IAAI,eAAkB,GAAA,CAAA,CAAA;AAGtB,EAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,GAAI,CAAA,CAAC,KAAU,KAAA;AAChC,IAAM,MAAA,MAAA,GAAS,UAAU,KAAK,CAAA,CAAA;AAC9B,IAAM,MAAA,MAAA,GAAS,UAAU,KAAK,CAAA,CAAA;AAE9B,IAAA,MAAM,SAAY,GAAA,eAAA,CAAA;AAClB,IAAA,eAAA,IAAmB,OAAO,MAAM,CAAA,CAAA;AAEhC,IAAO,OAAA;AAAA,MACL,CAAG,EAAA,MAAA;AAAA,MACH,CAAG,EAAA,MAAA;AAAA,MACH,KAAO,EAAA,SAAA;AAAA,MACP,GAAK,EAAA,eAAA;AAAA,MACL,OAAO,MAAO,CAAA,MAAM,IAAI,CAAI,GAAA,MAAA,CAAO,WAAW,MAAO,CAAA,QAAA;AAAA,KACvD,CAAA;AAAA,GACD,CAAA,CAAA;AAGD,EAAA,IAAI,SAAW,EAAA;AACb,IAAA,KAAA,CAAM,IAAK,CAAA;AAAA,MACT,CAAG,EAAA,OAAA;AAAA,MACH,CAAG,EAAA,eAAA;AAAA,MACH,KAAO,EAAA,CAAA;AAAA,MACP,GAAK,EAAA,eAAA;AAAA,MACL,OAAO,MAAO,CAAA,KAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACH;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AACA,SAAS,gBAAiB,CAAA;AAAA,EACxB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAIG,EAAA;AACD,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA,EAAE,OAAO,MAAO,EAAA,CAAA;AAAA,GACzB;AAEA,EAAA,MAAM,QAAQ,KAAQ,GAAA,MAAA,CAAA;AACtB,EAAA,MAAM,QAAW,GAAA,QAAA,CAAA;AACjB,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAE7C,EAAA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,MAAA,EAAQ,SAAU,EAAA,CAAA;AAC9C,CAAA;AACa,MAAA,aAAA,GAAgB,CAAC,EAcH,KAAA;AAdG,EAErB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IADP,MAAA,GAAS,EAAE,GAAK,EAAA,EAAA,EAAI,MAAM,GAAK,EAAA,MAAA,EAAQ,GAAK,EAAA,KAAA,EAAO,EAAG,EAAA;AAAA,IACtD,KAAO,EAAA,EAAA;AAAA,GA9FT,GA4F8B,IAErB,EACL,GAAA,EAAA,EAAA;AAAA,IAAkB,eAAA,GAAA;AAAA,MAChB,QAAU,EAAA,SAAA;AAAA,MACV,QAAU,EAAA,SAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MACP,aAAe,EAAA,SAAA;AAAA,KACjB;AAAA,GApGJ,GA8FS,EAOF,EAAA,KAAA,GAAA,SAAA,CAPE,EAOF,EAAA;AAAA,IANH,iBAAA;AAAA,GADK,CAAA,EAAA;AAAA,IASP,SAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,GAb4B,GAAA,EAAA,CAAA;AA5F9B,EAAAA,IAAAA,GAAAA,CAAAA;AA2GE,EAAM,MAAA,eAAA,GAAkB,YAAY,MAAM,CAAA,CAAA;AAC1C,EAAI,IAAA,CAAC,MAAM,cAAgB,EAAA;AACzB,IAAA,eAAA,CAAgB,IAAO,GAAA,EAAA,CAAA;AAAA,GACzB;AACA,EAAI,IAAA,UAAA,GACF,MAAM,KAAM,CAAA,KAAA,GAAA,CAAS,CAAC,eAAgB,CAAA,IAAA,GAAO,gBAAgB,KAAS,IAAA,CAAA,CAAA;AACxE,EAAI,IAAA,WAAA,GACF,MAAM,KAAM,CAAA,MAAA,GAAA,CAAU,CAAC,eAAgB,CAAA,GAAA,GAAM,gBAAgB,MAAU,IAAA,CAAA,CAAA;AACzE,EAAI,IAAA,UAAA,GAAa,KAAM,CAAA,KAAA,CAAM,QAAU,EAAA;AACrC,IAAA,MAAM,YAAY,gBAAiB,CAAA;AAAA,MACjC,MAAQ,EAAA,WAAA;AAAA,MACR,KAAO,EAAA,UAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,UAAA,GAAa,SAAU,CAAA,KAAA,CAAA;AACvB,IAAA,WAAA,GAAc,SAAU,CAAA,MAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,SAAA,GAAY,CAAC,CAAA,KAAc,CAAE,CAAA,GAAA,CAAA;AACnC,EAAM,MAAA,SAAA,GAAY,CAAC,CAAA,KAAc,CAAE,CAAA,KAAA,CAAA;AAEnC,EAAA,MAAM,SAAS,YAAaA,CAAAA,CAAAA,GAAAA,GAAA,MAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAgB,IAAI,CAAA,CAC7C,OAAO,CAAC,KAAA,KAAU,CAAC,CAAC,KAAA,CAAM,IAAI,CAC9B,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACd,IAAA,OAAOC,qCACF,KADE,CAAA,EAAA;AAAA,MAEL,YAAY,KAAM,CAAA,IAAA;AAAA,KACpB,CAAA,CAAA;AAAA,GACD,CAAA,CAAA;AACH,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,GAAG,CAAA,CAAA;AAChD,EAAA,MAAM,UAAa,GAAA,MAAA,CAAO,GAAI,CAAA,CAAC,KAAU,KAAA;AACvC,IAAA,OAAO,KAAM,CAAA,IAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,MAAG;AA7IP,MAAAD,IAAAA,GAAAA,CAAAA;AA8IM,MAAwB,OAAA,uBAAA,CAAA;AAAA,QACtB,MAAM,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAE,UAA+B,CACpE,CAAA,IAAA;AAAA,QACH,SAAW,EAAA,SAAA;AAAA,QACX,SAAW,EAAA,SAAA;AAAA,QACX,SAAWA,EAAAA,CAAAA,GAAAA,GAAA,KAAM,CAAA,SAAA,KAAN,OAAAA,GAAmB,GAAA,IAAA;AAAA,QAC9B,MAAQ,EAAA,eAAA;AAAA,OACT,CAAA,CAAA;AAAA,KAAA;AAAA,IACH,CAAC,KAAM,CAAA,QAAA,CAAS,MAAM,KAAM,CAAA,SAAA,EAAW,YAAY,eAAe,CAAA;AAAA,GACpE,CAAA;AAGA,EAAA,MAAM,OAAU,GAAA,GAAA,CAAA;AAEhB,EAAA,MAAM,SAAS,SAAU,CAAA;AAAA,IACvB,QAAQ,KAAM,CAAA,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,CAAC,CAAA;AAAA,IAClC,OAAA;AAAA,IACA,KAAA,EAAO,CAAC,CAAA,EAAG,UAAU,CAAA;AAAA,GACtB,CAAA,CAAA;AAED,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,IAAA,KAAS,CAAC,IAAK,CAAA,KAAA,EAAO,IAAK,CAAA,GAAG,CAAC,CAAA,CAAA;AAC7D,IAAA,MAAM,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,OAAe,MAAM,CAAA,CAAA;AACxC,IAAO,OAAA,GAAA,IAAO,QAAQ,GAAO,IAAA,IAAA,GAAO,CAAC,GAAM,GAAA,CAAA,EAAG,GAAM,GAAA,CAAC,CAAI,GAAA,KAAA,CAAA,CAAA;AAAA,GAC3D,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AAEV,EAAA,MAAM,SAAS,WAAY,CAAA;AAAA,IACzB,MAAQ,EAAA,OAAA;AAAA,IACR,IAAM,EAAA,IAAA;AAAA,IACN,KAAA,EAAO,CAAC,WAAA,EAAa,CAAC,CAAA;AAAA,GACvB,CAAA,CAAA;AAED,EAAA,MAAM,KAAK,OAAQ,CAAA,MAAM,eAAe,QAAS,EAAA,CAAA,CAAA,EAAK,EAAE,CAAA,CAAA;AACxD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CACG,iBAA8B,CAAI,CAAA,EAAA,EAAA,CAAA,WAAA,CAAe,CACjD,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACpB,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,qBAAA,EAAwB,CAAA,KAAA,CAAA;AAE9C,MAAA,OAAA,CAAQ,KAAM,CAAA,eAAA,GACX,OAAQ,CAAA,YAAA,CAAa,GAAG,CAAe,GAAA,SAAA,CAAA;AAE1C,MAAQ,OAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,yBAAA,EAA4B,KAAQ,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KAC/D,CAAA,CAAA;AAAA,GACJ,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,MAAQ,EAAA,UAAA,EAAe,GAAA,aAAA;AAAA,IAC7B,KAAA,CAAA;AAAA,IACA,CAAC,SAAA;AAAA,GACH,CAAA;AACA,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,MAAS,GAAA,CAAA,oBACd,GAAA,CAAA,GAAA,EAAA,EAAI,WAAU,uBACb,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,MAAQ,EAAA,UAAA;AAAA,QACR,SAAU,EAAA,oBAAA;AAAA,QACV,OAAS,EAAA,UAAA;AAAA,QACT,UAAY,EAAA,aAAA;AAAA,OAAA;AAAA,KAEhB,EAAA,CAAA;AAAA,oBAED,GAAA,CAAA,GAAA,EAAA,EAAI,EAAQ,EAAA,SAAA,EAAsB,KAAK,MACtC,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,MAAM,KAAM,CAAA,MAAA;AAAA,QACpB,KAAA,EAAO,MAAM,KAAM,CAAA,KAAA;AAAA,QACnB,GAAK,EAAA,UAAA;AAAA,QAEL,+BAAC,KAAM,EAAA,EAAA,IAAA,EAAM,gBAAgB,IAAM,EAAA,GAAA,EAAK,gBAAgB,GACtD,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAS,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA,UAAA,EAAY,iBAAgB,GAAI,EAAA,CAAA;AAAA,UAC/D,KAAM,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AArNxC,YAAAA,IAAAA,GAAAA,CAAAA;AAsNc,YAAM,MAAA,CAAA,GAAI,MAAO,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AACvB,YAAM,MAAA,CAAA,GAAI,OAAO,IAAK,CAAA,GAAA,CAAI,KAAK,KAAO,EAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAE/C,YAAI,IAAA,CAAA,IAAK,IAAQ,IAAA,CAAA,IAAK,IAAM,EAAA;AAC1B,cAAO,OAAA,IAAA,CAAA;AAAA,aACT;AAEA,YAAM,MAAA,SAAA,GAAY,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAK,KAAK,CAAI,GAAA,MAAA,CAAO,IAAK,CAAA,GAAG,CAAC,CAAA,CAAA;AAEhE,YAAM,MAAA,MAAA,GAAS,KAAU,KAAA,KAAA,CAAM,MAAS,GAAA,CAAA,CAAA;AACxC,YAAA,MAAM,WAAc,GAAA,CAAA,CAAA;AACpB,YAAA,MAAM,EAAK,GAAA,CAAA,GAAI,MAAO,CAAA,SAAA,EAAc,GAAA,WAAA,CAAA;AACpC,YAAA,MAAM,KAAK,CAAI,GAAA,MAAA,CAAO,SAAU,EAAA,IAAK,IAAI,OAAW,CAAA,GAAA,WAAA,CAAA;AACpD,YAAA,MAAM,QAAQ,IAAK,CAAA,GAAA,GAAM,IAAK,CAAA,KAAA,GAAQ,IAAI,SAAY,GAAA,CAAA,CAAA;AAEtD,YAAA,MAAM,WAAc,GAAA,EAAA,CAAA;AACpB,YAAM,MAAA,MAAA,GACJ,OAAO,IAAK,CAAA,GAAG,KACb,IAAK,CAAA,CAAA,GAA0B,CAC7B,GAAA,WAAA,GACA,CAAC,WAAA,CAAA,CAAA;AAEP,YAAA,IAAI,aAAgB,GAAA,CAAA,CAAA;AACpB,YACG,KAAA,CAAA,MAAA,CAAO,CAAC,CAAA,EAAG,CAAM,KAAA;AA9OlC,cAAAA,IAAAA,GAAAA,CAAAA;AA+OkB,cAAKA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,KAAM,CAAA,SAAA,KAAN,IAAAA,GAAAA,GAAAA,GAAmB,SAAS,CAAC,KAAA,CAAM,CAAI,GAAA,CAAC,CAAG,EAAA;AAC9C,gBAAO,OAAA,KAAA,CAAA;AAAA,eACT;AACA,cAAA,OAAO,CAAK,IAAA,KAAA,CAAA;AAAA,aACb,CAAA,CACA,OAAQ,CAAA,CAACM,KAAS,KAAA;AACjB,cAAiB,aAAA,IAAA,MAAA,CAAOA,MAAK,CAAC,CAAA,CAAA;AAAA,aAC/B,CAAA,CAAA;AAEH,YACE,uBAAA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,KAAA;AAAA,gBACA,UAAA,EAAY,WAAW,UAA+B,CAAA;AAAA,gBACtD,MAAM,IAAK,CAAA,KAAA;AAAA,gBACX,MAAQ,EAAA,SAAA;AAAA,gBACR,MAAA;AAAA,gBAEA,KAAA;AAAA,gBACA,IAAA;AAAA,gBACA,QAAQ,eAAgB,CAAA,aAAA;AAAA,gBACxB,eAAiB,EAAA,CAAA;AAAA,gBACjB,WAAA,EAAA,CAAA,CACEN,MAAA,KAAM,CAAA,SAAA,KAAN,OAAAA,GAAmB,GAAA,IAAA,IACf,KAAK,CACJ,GAAA,aAAA;AAAA,gBAEP,KAAO,EAAA,CAAA,GAAI,MAAO,CAAA,SAAA,EAAc,GAAA,CAAA;AAAA,gBAChC,OAAO,MAAS,GAAA,CAAA;AAAA,gBAChB,KAAA,EAAO,OAAO,SAAU,EAAA;AAAA,gBACxB,CAAA;AAAA,gBACA,CAAA;AAAA,gBACA,EAAA;AAAA,gBACA,EAAA;AAAA,eAAA;AAAA,cAhBK,KAAA;AAAA,aAiBP,CAAA;AAAA,WAEH,CAAA;AAAA,0BACD,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA,EAAA;AAAA,cACP,KAAO,EAAA,MAAA;AAAA,cACP,YAAY,EAAA,IAAA;AAAA,cACZ,SAAS,EAAA,IAAA;AAAA,cACT,gBAAgB,OAAO;AAAA,gBACrB,UAAY,EAAA,KAAA;AAAA,gBACZ,cAAgB,EAAA,QAAA;AAAA,eAClB,CAAA;AAAA,aAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA,MAAA;AAAA,cACP,GAAK,EAAA,WAAA;AAAA,cACL,gBAAgB,OAAO;AAAA,gBACrB,UAAY,EAAA,QAAA;AAAA,gBACZ,cAAgB,EAAA,QAAA;AAAA,gBAChB,SAAW,EAAA,WAAA;AAAA,eACb,CAAA;AAAA,aAAA;AAAA,WACF;AAAA,SACF,EAAA,CAAA;AAAA,OAAA;AAAA,KAEJ,EAAA,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,OAAA;AAAA,QACJ,UAAU,EAAA,IAAA;AAAA,QACV,UAAY,EAAA;AAAA,UACV;AAAA,YACE,OAAO,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CACrC,UACF,CAAE,CAAA,IAAA;AAAA,YACF,KAAO,EAAA,aAAA;AAAA,WACT;AAAA,SACF;AAAA,OAAA;AAAA,KACF;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;AC3SA,MAAM,UAAa,GAAA,oBAAA,CAAA;AAEnB,SAAS,mBACJ,IACH,EAAA;AACA,EAAA,OAAO,KAAM,CAAA,WAAA;AAAA,IACX,SAAS,OAAO,OAAY,EAAA;AAC1B,MAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AAExB,QAAI,IAAA,OAAA;AAAS,UAAA,OAAA,CAAQ,OAAU,GAAA,OAAA,CAAA;AAAA,OAChC,CAAA,CAAA;AAAA,KACH;AAAA,IACA,CAAC,IAAI,CAAA;AAAA,GACP,CAAA;AACF,CAAA;AAMO,MAAM,GAAG,YAAA,EAAc,aAAa,CAAA,GAAI,yBAU3C,CAAA;AAAA,EACF,SAAW,EAAA,mBAAA;AAAA,IACT,eAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,MACE,GAAK,EAAA;AAAA,QACH,MAAQ,EAAA,aAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,KAAO,EAAA;AAAA,QACL,MAAQ,EAAA,eAAA;AAAA,OACV;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,MAAQ,EAAA,cAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,SAAW,EAAA;AAAA,QACT,MAAQ,EAAA,mBAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,MAAQ,EAAA,cAAA;AAAA,OACV;AAAA,MACA,KAAO,EAAA;AAAA,QACL,MAAQ,EAAA,eAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,gBAAA;AAAA,OACV;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ,MAAQ,EAAA,UAAA;AAAA,UACR,KAAO,EAAA,UAAA;AAAA,SACT;AAAA,QACA,MAAQ,EAAA,UAAA;AAAA,QACR,UAAY,EAAA,qBAAA;AAAA,QACZ,IAAM,EAAA;AAAA,UACJ,MAAQ,EAAA,UAAA;AAAA,UACR,OAAS,EAAA,KAAA;AAAA,SACX;AAAA,QACA,OAAS,EAAA;AAAA,UACP,eAAiB,EAAA,oBAAA;AAAA,UACjB,MAAQ,EAAA,gBAAA;AAAA,UACR,KAAO,EAAA,UAAA;AAAA,UACP,OAAS,EAAA,aAAA;AAAA,UACT,YAAc,EAAA,KAAA;AAAA,UACd,QAAU,EAAA,MAAA;AAAA,UACV,SAAW,EAAA,8BAAA;AAAA,UACX,UAAY,EAAA,KAAA;AAAA,SACd;AAAA,OACF;AAAA,MACA,kBAAoB,EAAA;AAAA,QAClB,OAAS,EAAA,MAAA;AAAA,QACT,aAAe,EAAA,KAAA;AAAA,QACf,GAAA,EAAK,QAAQ,CAAC,CAAA;AAAA,QACd,QAAU,EAAA,MAAA;AAAA,OACZ;AAAA,MAEA,wBAA0B,EAAA;AAAA,QACxB,QAAU,EAAA,UAAA;AAAA,OACZ;AAAA,MAEA,8BAAgC,EAAA;AAAA,QAC9B,QAAU,EAAA,QAAA;AAAA,QACV,YAAc,EAAA,UAAA;AAAA,QACd,QAAU,EAAA,QAAA;AAAA,OACZ;AAAA,KACF;AAAA;AAAA,IAEA,KAAM,CAAA,UAAA;AAAA,MACJ,CACE;AAAA,QACE,YAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,SASF,GACG,KAAA;AACH,QAAM,MAAA,QAAA,GAAW,KAAM,CAAA,MAAA,CAA2B,IAAI,CAAA,CAAA;AACtD,QAAA,MAAM,OAAU,GAAA,eAAA;AAAA,UACd,GAAA;AAAA,UACA,QAAA;AAAA,SACF,CAAA;AAEA,QAAM,MAAA,YAAA,GAAe,QAAQ,OAAO,EAAE,SAAY,CAAA,EAAA,CAAC,OAAO,CAAC,CAAA,CAAA;AAC3D,QAAA,MAAM,YAAe,GAAA,QAAA;AAAA,UACnB,CAAC,QAAA,EAAU,cAAgB,EAAA,YAAA,EAAc,WAAW,aAAa,CAAA;AAAA,UACjE;AAAA,YACE,aAAa,SAAc,KAAA,OAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,QAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,QAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,QAAA;AAAA,YAC3B,aAAa,SAAc,KAAA,WAAA;AAAA,WAC7B;AAAA,UACA,CAAA;AAAA,SACF,CAAA;AAEA,QAAA,uBACG,GAAA,CAAA,YAAA,CAAa,QAAb,EAAA,EAAsB,OAAO,YAC5B,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAAC,eAAA,CAAAC,gBAAA,CAAA;AAAA,YACC,GAAK,EAAA,OAAA;AAAA,YACL,SAAU,EAAA,sBAAA;AAAA,WACN,EAAA,UAAA,CAAW,eAAe,CAH/B,CAAA,EAAA;AAAA,YAKC,QAAA,kBAAA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,KAAO,EAAA,YAAA;AAAA,gBACP,OAAA;AAAA,gBACA,SAAW,EAAA,QAAA;AAAA,gBACX,SAAA;AAAA,eAAA;AAAA,aACF;AAAA,WAAA,CAAA;AAAA,SAEJ,EAAA,CAAA,CAAA;AAAA,OAEJ;AAAA,KACF;AAAA,IACA,IAAA;AAAA,GACF;AACF,CAAC;;;;;;;;;;;;;;;;;;;;;ACtKD,MAAMK,aAAc,GAAA,EAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,QAAQ,CAAC;AAAA,EACpB,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AACF,CAAwB,KAAA;AAnBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAoBE,EAAA,MAAM,QAAW,GAAA,KAAA,CAAA;AACjB,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAAU,EAAK,GAAA,CAAA;AAAA,IACf,QAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAe,QAAS,CAAA;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAY,CAAA,CAAC,GAAG,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,WAAA,CAAY,CAAC,CAAI,GAAA,CAAA;AAAA,IACjE,QAAA;AAAA,GACD,EAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,KAAU,GAAA,CAAAA,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA,CAAA;AAEjE,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKN,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,IAAI,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAE5B,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,YACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,YACjB,UAAY,EAAA,EAAA;AAAA,YACZ,QAAU,EAAA,GAAA;AAAA,WACX,CALF,CAAA,EAAA;AAAA,YAMC,MAAO,EAAA,MAAA;AAAA,YACP,OAAQ,EAAA,KAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA,YACL,aAAc,EAAA,OAAA;AAAA,YACd,WAAa,EAAA,CAAA;AAAA,WAAA,CAAA;AAAA,SAEjB,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,OACH,EAAA,QAAA,EAAA;AAAA,UAAM,KAAA,CAAA,KAAA,CAAM,GAAI,CAAA,CAACO,MAAU,KAAA;AAC1B,YAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAE/B,cAAA,MAAMG,MACJ,GAAA,SAAA,GAAA,CAAcD,MAAQ,GAAAF,aAAA,IAAe,UAAc,GAAA,UAAA,CAAA;AAErD,cAAO,OAAA,IAAA,CAAK,MAAMG,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AACA,YAAM,MAAA,OAAA,GAAU,aAAaD,MAAK,CAAA,CAAA;AAClC,YAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA,CAAA;AAElC,YACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAP,gBAAA,CAAA;AAAA,kBACC,MAAO,EAAA,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,iBACxB,EAAA,KAAA,CAAM,aAAa,EAAE,KAAA,EAAAO,QAAO,MAAQ,EAAA,QAAA,GAAW,EAAK,GAAA,CAAA,EAAG,CAAA,CAAA;AAAA,eAC7D;AAAA,cACC,QACC,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAR,eAAA,CAAAC,gBAAA,CAAA;AAAA,kBACC,IAAK,EAAA,OAAA;AAAA,iBACD,EAAA,KAAA,CAAM,cAAc,EAAE,KAAA,EAAAO,QAAO,MAAQ,EAAA,EAAA,EAAI,CAF9C,CAAA,EAAA;AAAA,kBAGC,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,4CAAmB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,kBAE/C,QAAA,EAAA,OAAA;AAAA,iBAAA,CAAA;AAAA,eACH;AAAA,aAAA,EAAA,EAbiB,cAAcA,MAenC,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,UACA,SAcE;AAAA,SACL,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,6CAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAtC,CAAA,EAAA,EAA4C,GAAG,EAAI,EAAA,CAAA,CAAA;AAAA,0BACnD,GAAA,CAAA,QAAA,EAAAP,gBAAA,CAAA,EAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAM,CAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,aAAA,EACJ,OAAO,GAHZ,CAAA,EAAA;AAAA,cAIC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,6CAAO,IAAK,EAAA,OAAA,EAAA,EAAY,OAAO,IAA/B,CAAA,EAAA,EAAqC,GAAG,CAAG,EAAA,CAAA,CAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YACrD,CAAA,EAAG,CAAC,QAAA,GAAW,CAAI,GAAA,EAAA;AAAA,YAElB,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACvJA,MAAMK,aAAc,GAAA,EAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,aAAa,CAAC;AAAA,EACzB,eAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AACF,CAAwB,KAAA;AAtBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAwBE,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAEI,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,IAAI,EAAK,GAAA,CAAA;AAAA,IAC/C,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,SAAS,SAASE,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUA,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAA,OAAO,YAAY,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,MAAM,KAAU,GAAA,CAAAF,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA,CAAA;AAEjE,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKN,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAExB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,cACjB,UAAY,EAAA,CAAA;AAAA,cACZ,QAAU,EAAA,GAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,MAAO,EAAA,MAAA;AAAA,cACP,MAAM,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,MAAA;AAAA,cACzB,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,aAAA,CAAA;AAAA,WACf;AAAA,UACC,WAAY,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AAClC,YAAM,MAAA,YAAA,GAAe,CAACQ,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaF,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAC/B,cAAA,MAAME,MACJ,GAAAF,aAAA,GAAA,CAAgBG,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA,CAAA;AACrD,cAAO,OAAA,IAAA,CAAK,MAAMD,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AAEA,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAR,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAK,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,OAAA;AAAA,kBACd,WAAa,EAAA,CAAA;AAAA,iBAAA,CAAA;AAAA,eACf;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAP,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAK,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,GAAA,EAAK,GAAG,UAAc,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,kBACtB,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,OAAA;AAAA,kBACd,WAAa,EAAA,CAAA;AAAA,iBAAA,CAAA;AAAA,eACf;AAAA,aArCM,EAAA,EAAA,CAAA,EAAG,cAAc,CAsCzB,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SACH,EAAA,CAAA;AAAA,wBACA,GAAA,CAAC,OAAE,EAAG,EAAA,OAAA,EACH,gBAAM,KAAM,CAAA,GAAA,CAAI,CAACC,MAAU,KAAA;AAC1B,UAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,YAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA,CAAA;AAC/B,YAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAE/B,YAAA,MAAMG,MACJ,GAAA,SAAA,GAAA,CAAcD,MAAQ,GAAAF,aAAA,IAAe,UAAc,GAAA,UAAA,CAAA;AAErD,YAAO,OAAA,IAAA,CAAK,MAAMG,MAAK,CAAA,CAAA;AAAA,WACzB,CAAA;AACA,UAAM,MAAA,OAAA,GAAU,aAAaD,MAAK,CAAA,CAAA;AAClC,UAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA,CAAA;AAElC,UACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAAP,gBAAA,CAAA;AAAA,gBACC,MAAO,EAAA,MAAA;AAAA,gBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,eACxB,EAAA,KAAA,CAAM,aAAa,EAAE,KAAA,EAAAO,QAAO,MAAQ,EAAA,QAAA,GAAW,EAAK,GAAA,CAAA,EAAG,CAAA,CAAA;AAAA,aAC7D;AAAA,YACC,QACC,oBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAAR,eAAA,CAAAC,gBAAA,CAAA;AAAA,gBACC,IAAK,EAAA,OAAA;AAAA,eACD,EAAA,KAAA,CAAM,cAAc,EAAE,KAAA,EAAAO,QAAO,MAAQ,EAAA,EAAA,EAAI,CAF9C,CAAA,EAAA;AAAA,gBAGC,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,4CAAmB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,gBAE/C,QAAA,EAAA,OAAA;AAAA,eAAA,CAAA;AAAA,aACH;AAAA,WAAA,EAAA,EAbiB,cAAcA,MAenC,CAAA,CAAA,CAAA,CAAA;AAAA,SAEH,CACH,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,6CAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAtC,CAAA,EAAA,EAA4C,GAAG,EAAI,EAAA,CAAA,CAAA;AAAA,0BACnD,GAAA,CAAA,QAAA,EAAAP,gBAAA,CAAA,EAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAM,CAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,aAAA,EACJ,OAAO,GAHZ,CAAA,EAAA;AAAA,cAIC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,6CAAO,IAAK,EAAA,OAAA,EAAA,EAAY,OAAO,IAA/B,CAAA,EAAA,EAAqC,GAAG,CAAG,EAAA,CAAA,CAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,GAAG,QAAW,GAAA,CAAA;AAAA,YACd,IAAM,EAAA,iBAAA;AAAA,YACN,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YAEpD,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACnMA,MAAMK,aAAc,GAAA,CAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,SAAS,CAAC;AAAA,EACrB,SAAY,GAAA,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AACF,CAAwB,KAAA;AApBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAqBE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,YAAY,CAAA,CAAA;AAC/C,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV,QAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAA,SAAS,SAASE,MAAe,EAAA;AAhCnC,IAAAV,IAAAA,GAAAA,CAAAA;AAiCI,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUU,SAAQ,KAAK,CAAA,CAAA;AAE5D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAOV,OAAAA,CAAAA,GAAAA,GAAA,YAAY,KAAQ,GAAA,CAAC,MAArB,IAAAA,GAAAA,GAAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AAAA,GACpD;AAEA,EAAM,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA,CAAA;AAEhC,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAClB,CAAC,EAAsB,KAAA;AACrB,MAAI,IAAA,CAAC,MAAM,WAAY,CAAA,OAAA;AAAS,QAAA,OAAA;AAEhC,MAAA,WAAA,CAAY,OAAU,GAAA,IAAA,CAAA;AAEtB,MAAA,MAAM,UAAa,GAAA,EAAA,CAAA;AACnB,MAAM,MAAA,WAAA,GAAc,EAAG,CAAA,aAAA,CAAc,cAAc,CAAA,CAAA;AAEnD,MAAI,IAAA,EAAE,cAAc,WAAc,CAAA,EAAA;AAChC,QAAA,OAAA;AAAA,OACF;AAEA,MAAM,MAAA,OAAA,GAAU,YAAY,qBAAsB,EAAA,CAAA;AAClD,MAAM,MAAA,MAAA,GAAS,WAAW,qBAAsB,EAAA,CAAA;AAChD,MAAA,MAAM,YAAY,OAAQ,CAAA,KAAA,CAAA;AAC1B,MAAA,MAAM,aAAa,OAAQ,CAAA,MAAA,CAAA;AAC3B,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA,CAAA;AACjC,MAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA,CAAA;AAEjC,MAAM,MAAA,OAAA,GAAU,GAAG,KAAQ,GAAA,QAAA,GAAW,KACpC,KAAQ,GAAA,QAAA,GAAW,KACjB,SAAa,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AAEjB,MAAW,UAAA,CAAA,YAAA,CAAa,WAAW,OAAO,CAAA,CAAA;AAE1C,MAAA,UAAA,CAAW,MAAM,UAAa,GAAA,SAAA,CAAA;AAAA,KAChC;AAAA,IACA,CAAC,QAAQ,CAAA;AAAA,GACX,CAAA;AAEA,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,UAAA,GAAa,eAAe,gBAAiB,CAAA,OAAA,CAAA;AACnD,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA,SAAA;AAAA,SACF,CAAA;AACA,QAAS,QAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAU,GAAA,YAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AACjB,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKC,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,KAAA,EAAO,EAAE,UAAA,EAAY,QAAS,EAAA;AAAA,MAC9B,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,EAAG,EAAA,YAAA;AAAA,MACH,GAAK,EAAA,WAAA;AAAA,MACL,SAAS,CAAI,CAAA,EAAA,QAAA,GAAW,CAAM,CAAA,EAAA,EAAA,QAAA,GAAW,KAAK,QAAY,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;AAAA,MAE1D,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,aACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,UAAY,EAAAK,aAAA;AAAA,cACZ,QAAU,EAAAC,WAAA;AAAA,aACX,CAJF,CAAA,EAAA;AAAA,cAKC,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,cACpB,EAAG,EAAA,aAAA;AAAA,cACH,KAAA,EAAO,EAAE,UAAA,EAAY,WAAY,EAAA;AAAA,aAAA,CAAA;AAAA,WACnC;AAAA,UACC,SACC,oBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAP,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,MAAQ,EAAA,CAAA,GAAA;AAAA,cACR,UAAY,EAAAK,aAAA;AAAA,cACZ,QAAU,EAAAC,WAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,MAAQ,EAAA,OAAA;AAAA,cACR,IAAM,EAAA,aAAA;AAAA,cACN,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,cACb,EAAG,EAAA,aAAA;AAAA,aAAA,CAAA;AAAA,WACL;AAAA,SAEJ,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,GAAQ,CAAA,EAAA,CAAA,EAAA;AAAA,YACtD,iBAAkB,EAAA,SAAA;AAAA,YAClB,IAAM,EAAA,iBAAA;AAAA,YAEL,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACxIA,MAAMD,aAAc,GAAA,EAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,SAAS,CAAC;AAAA,EACrB,eAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AACF,CAAwB,KAAA;AAvBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAyBE,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAElD,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,UAAU,EAAK,GAAA,CAAA;AAAA,IACf,QAAA;AAAA,GACD,CAAA,CAAA;AACD,EAAA,MAAM,SAAS,QAAS,CAAA;AAAA,IACtB,MAAA,EAAQ,CAAC,WAAY,CAAA,CAAC,GAAG,WAAY,CAAA,WAAA,CAAY,MAAS,GAAA,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAA,EAAU,YAAY,WAAY,CAAA,MAAA,GAAS,CAAC,CAAI,GAAA,WAAA,CAAY,CAAC,CAAI,GAAA,CAAA;AAAA,IACjE,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,MAAA,GAAS,MAAM,cAAe,CAAA;AAAA,IAClC,KAAO,EAAA,CAAA;AAAA,IACP,UAAY,EAAA,EAAA;AAAA,IACZ,SAAW,EAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAA,MAAM,KAAU,GAAA,CAAAA,WAAA,GAAYD,aAAe,IAAA,KAAA,IAAU,SAAY,GAAA,SAAA,CAAA,CAAA;AAEjE,EAAA,SAAS,SAASG,MAAe,EAAA;AAC/B,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUA,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAA,OAAO,YAAY,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACKT,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAExB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,cACjB,UAAY,EAAA,CAAA;AAAA,cACZ,QAAU,EAAA,GAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,MAAO,EAAA,OAAA;AAAA,cACP,OAAQ,EAAA,GAAA;AAAA,cACR,IACE,EAAA,eAAA,KAAoB,EAAM,IAAA,eAAA,KAAoB,KAC1C,CAAA,GAAA,SAAA,CAAU,eAAe,CAAA,CACtB,QAAS,CAAA,GAAG,CACZ,CAAA,qBAAA,EACH,GAAA,MAAA;AAAA,cAEN,aAAc,EAAA,OAAA;AAAA,cACd,WAAa,EAAA,CAAA;AAAA,cACb,YAAc,EAAA,oBAAA;AAAA,aAAA,CAAA;AAAA,WAChB;AAAA,UACC,WAAY,CAAA,GAAA,CAAI,CAAC,UAAA,EAAY,CAAM,KAAA;AAClC,YAAA,IAAI,CAAC,WAAA,CAAY,CAAI,GAAA,CAAC,CAAG,EAAA;AACvB,cAAO,OAAA,IAAA,CAAA;AAAA,aACT;AAEA,YAAM,MAAA,YAAA,GAAe,CAACQ,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaF,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAC/B,cAAA,MAAME,MACJ,GAAAF,aAAA,GAAA,CAAgBG,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA,CAAA;AACrD,cAAO,OAAA,IAAA,CAAK,MAAMD,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AAEA,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAR,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,kBACjB,UACE,EAAA,CAAA,KAAM,CAAI,GAAAK,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,MAAQ,EAAA,OAAA;AAAA,kBACR,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,QAAA;AAAA,kBACd,WAAa,EAAA,CAAA;AAAA,kBACb,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,8BACA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAP,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAK,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,MAAA,EAAQ,SAAS,UAAU,CAAA;AAAA,kBAC3B,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,MAAA;AAAA,kBACd,WAAa,EAAA,EAAA;AAAA,kBACb,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,8BACA,aAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAP,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,kBACpB,MAAQ,EAAA,CAAA,EAAA;AAAA,kBACR,UACE,EAAA,CAAA,KAAM,CAAI,GAAAK,aAAA,GAAc,aAAa,UAAU,CAAA;AAAA,kBACjD,UACE,CAAM,KAAA,CAAA,GACF,YAAa,CAAA,WAAA,CAAY,CAAC,CAAC,CAAA,GAC3B,CAAM,KAAA,WAAA,CAAY,SAAS,CAC3B,GAAAC,WAAA,GACA,aAAa,WAAY,CAAA,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,iBACtC,CAXF,CAAA,EAAA;AAAA,kBAYC,GAAA,EAAK,GAAG,UAAc,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,kBACtB,MAAA,EAAQ,QAAS,CAAA,UAAU,CAAK,IAAA,MAAA;AAAA,kBAChC,OAAQ,EAAA,KAAA;AAAA,kBACR,IAAK,EAAA,MAAA;AAAA,kBACL,aAAc,EAAA,MAAA;AAAA,kBACd,WAAa,EAAA,EAAA;AAAA,kBACb,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,aA1DM,EAAA,EAAA,CAAA,EAAG,cAAc,CA2DzB,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SACH,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,OACH,EAAA,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,KAAM,CAAA,GAAA,CAAI,CAACC,MAAAA,EAAO,CAAM,KAAA;AAC7B,YAAM,MAAA,YAAA,GAAe,CAACA,MAAkB,KAAA;AACtC,cAAA,MAAM,aAAaD,WAAY,GAAAD,aAAA,CAAA;AAC/B,cAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAE/B,cAAA,MAAMG,MACJ,GAAA,SAAA,GAAA,CAAcD,MAAQ,GAAAF,aAAA,IAAe,UAAc,GAAA,UAAA,CAAA;AAErD,cAAO,OAAA,IAAA,CAAK,MAAMG,MAAK,CAAA,CAAA;AAAA,aACzB,CAAA;AACA,YAAM,MAAA,OAAA,GAAU,aAAaD,MAAK,CAAA,CAAA;AAElC,YAAM,MAAA,QAAA,GAAW,UAAU,EAAO,KAAA,CAAA,CAAA;AAElC,YACE,uBAAA,IAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAR,eAAA,CAAAC,gBAAA,CAAA;AAAA,kBACC,MAAO,EAAA,MAAA;AAAA,kBACP,WAAA,EAAa,WAAW,CAAI,GAAA,CAAA;AAAA,iBACxB,EAAA,KAAA,CAAM,YAAa,CAAA,EAAE,KAAAO,EAAAA,MAAAA,EAAO,QAAQ,QAAW,GAAA,EAAA,GAAK,CAAE,EAAC,CAH5D,CAAA,EAAA;AAAA,kBAIC,YAAc,EAAA,oBAAA;AAAA,iBAAA,CAAA;AAAA,eAChB;AAAA,cACC,QACC,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAAR,eAAA,CAAAC,gBAAA,CAAA;AAAA,kBACC,IAAM,EAAA,OAAA;AAAA,iBAAA,EACF,MAAM,aAAc,CAAA;AAAA,kBACtB,KAAAO,EAAAA,MAAAA;AAAA,kBACA,MAAQ,EAAA,EAAA;AAAA,iBACT,CALF,CAAA,EAAA;AAAA,kBAMC,KAAO,EAAA;AAAA,oBACL,QAAA,EAAU,GAAG,eAAmB,IAAA,IAAA,GAAA,eAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA,mBAClC;AAAA,kBAEC,QAAA,EAAA,OAAA;AAAA,iBAAA,CAAA;AAAA,eACH;AAAA,aAnBiB,EAAA,EAAA,CAAA,WAAA,EAAcA,WAAU,CAqB7C,CAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,UAEC,MAAO,CAAA,KAAA,CAAM,GAAI,CAAA,CAACA,QAAO,CAAM,KAAA;AAC7B,YACE,uBAAA,GAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EACC,QAAA,kBAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAAR,eAAA,CAAAC,gBAAA,CAAA;AAAA,gBACC,MAAO,EAAA,MAAA;AAAA,gBACP,WAAa,EAAA,CAAA;AAAA,eAAA,EACT,MAAM,YAAa,CAAA;AAAA,gBACrB,KAAAO,EAAAA,MAAAA;AAAA,gBACA,MAAQ,EAAA,CAAA;AAAA,eACT,CANF,CAAA,EAAA;AAAA,gBAOC,YAAc,EAAA,oBAAA;AAAA,eAAA,CAAA;AAAA,aAChB,EAAA,EATmB,CAAcA,WAAAA,EAAAA,MAAAA,CAAAA,EAAAA,EAAU,CAU7C,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SACL,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,GAAE,EAAA,EAAA,EAAA,EAAG,QACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,6CAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAtC,CAAA,EAAA,EAA4C,GAAG,EAAI,EAAA,CAAA,CAAA;AAAA,0BACnD,GAAA,CAAA,QAAA,EAAAP,gBAAA,CAAA,EAAO,IAAM,EAAA,YAAA,EAAA,EAAkB,OAAO,IAAM,CAAA,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,QAAA;AAAA,YAAAD,eAAA,CAAAC,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,aAAA,EACJ,OAAO,GAHZ,CAAA,EAAA;AAAA,cAIC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAO,EAAA;AAAA,gBACL,WAAW,CAAU,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA;AAAA,gBACrB,UAAY,EAAA,iBAAA;AAAA,eACd;AAAA,cACA,IAAM,EAAA,YAAA;AAAA,cACN,OAAQ,EAAA,KAAA;AAAA,cACR,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAA;AAAA,WACjB;AAAA,0BACA,GAAA,CAAC,6CAAO,IAAK,EAAA,OAAA,EAAA,EAAY,OAAO,IAA/B,CAAA,EAAA,EAAqC,GAAG,CAAG,EAAA,CAAA,CAAA;AAAA,SAC9C,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,iBAAkB,EAAA,kBAAA;AAAA,YAClB,GAAG,QAAW,GAAA,CAAA;AAAA,YACd,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YACrD,IAAM,EAAA,iBAAA;AAAA,YAEL,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACnQA,MAAMK,aAAc,GAAA,CAAA,CAAA;AACpB,MAAMC,WAAY,GAAA,GAAA,CAAA;AAEX,MAAM,UAAU,CAAC;AAAA,EACtB,SAAY,GAAA,KAAA;AAAA,EACZ,WAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AACF,CAAwB,KAAA;AApBxB,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAqBE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,YAAY,CAAA,CAAA;AAC/C,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAAD,aAAA;AAAA,IACZ,QAAU,EAAAC,WAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,SAAS,SAASE,MAAe,EAAA;AAlCnC,IAAAV,IAAAA,GAAAA,CAAAA;AAmCI,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUU,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAOV,OAAAA,CAAAA,GAAAA,GAAA,YAAY,KAAQ,GAAA,CAAC,MAArB,IAAAA,GAAAA,GAAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AAAA,GACpD;AACA,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,UAAA,GAAa,eAAe,gBAAiB,CAAA,OAAA,CAAA;AACnD,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA,SAAA;AAAA,SACF,CAAA;AACA,QAAS,QAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAU,GAAA,YAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AACjB,EAAM,MAAA,eAAA,GAAkB,QAAS,CAAA,aAAA,CAAc,2BAA2B,CAAA,CAAA;AAC1E,EAAA,IAAI,WAAc,GAAA,KAAA,CAAA;AAClB,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAM,MAAA,GAAA,GAAM,gBAAgB,qBAAsB,EAAA,CAAA;AAClD,IAAI,IAAA,GAAA,CAAI,QAAQ,WAAa,EAAA;AAC3B,MAAA,WAAA,GAAc,GAAI,CAAA,KAAA,CAAA;AAAA,KACpB;AAAA,GACF;AACA,EACE,uBAAA,IAAA,CAAC,OAAI,EAAI,EAAA,EAAE,UAAU,UAAW,EAAA,EAAG,WAAU,0BAC3C,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MACKC,eAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,QAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAO,EAAA,WAAA;AAAA,QACP,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,QAExB,QAAC,kBAAA,GAAA,CAAA,GAAA,EAAA,EAAE,EAAG,EAAA,MAAA,EACH,QACC,EAAA,SAAA,oBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAAD,eAAA,CAAAC,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,YACpB,QAAQ,MAAS,GAAA,CAAA;AAAA,YACjB,UAAY,EAAAK,aAAA;AAAA,YACZ,QAAU,EAAAC,WAAA;AAAA,WACX,CALF,CAAA,EAAA;AAAA,YAMC,MAAO,EAAA,MAAA;AAAA,YACP,OAAQ,EAAA,KAAA;AAAA,YACR,IAAK,EAAA,MAAA;AAAA,YACL,aAAc,EAAA,OAAA;AAAA,YACd,WAAa,EAAA,CAAA;AAAA,WAAA,CAAA;AAAA,SAGnB,EAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAO,EAAA,WAAA;AAAA,QACP,OAAO,EAAE,QAAA,EAAU,YAAY,IAAM,EAAA,CAAA,EAAG,KAAK,CAAE,EAAA;AAAA,QAE/C,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,GAAG,WAAc,GAAA,CAAA;AAAA,YACjB,CAAG,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,YAC7B,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA;AAAA,cACL,QAAA,EAAU,GAAG,oBAAwB,IAAA,IAAA,GAAA,oBAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA,cACrC,UAAY,EAAA,WAAA;AAAA,aACd;AAAA,YACA,iBAAkB,EAAA,SAAA;AAAA,YAClB,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,YACpB,IAAI,CAAQ,KAAA,EAAA,OAAA,CAAA,CAAA;AAAA,YAEX,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SACH;AAAA,OAAA;AAAA,KACF;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;ACjHA,MAAM,WAAc,GAAA,CAAA,CAAA;AACpB,MAAM,SAAY,GAAA,GAAA,CAAA;AAEX,MAAM,OAAO,CAAC;AAAA,EACnB,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AACF,CAAwB,KAAA;AArBxB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAsBE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,YAAY,CAAA,CAAA;AAC/C,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AACvC,EAAA,MAAM,MAAS,GAAA,EAAA,CAAA;AACf,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAA,MAAM,QAAQ,QAAS,CAAA;AAAA,IACrB,MAAA,EAAQ,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC7B,UAAY,EAAA,WAAA;AAAA,IACZ,QAAU,EAAA,SAAA;AAAA,IACV,QAAU,EAAA,CAAA;AAAA,IACV,QAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,gBAAA,GAAmB,OAAO,CAAC,CAAA,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,UAAA,GAAa,eAAe,gBAAiB,CAAA,OAAA,CAAA;AACnD,IAAO,OAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACA,CAAC,QAAa,KAAA;AACZ,QAAA,MAAM,IAAO,GAAA,WAAA;AAAA,UACX,UAAA,GAAa,WAAW,gBAAiB,CAAA,OAAA;AAAA,UACzC,SAAA;AAAA,UACA,SAAA;AAAA,SACF,CAAA;AACA,QAAS,QAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,MAAM;AACJ,QAAA,gBAAA,CAAiB,OAAU,GAAA,YAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAAA,GAEF,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,EAAA,SAAS,SAASE,MAAe,EAAA;AAvDnC,IAAAV,IAAAA,GAAAA,CAAAA;AAwDI,IAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAUU,UAAS,KAAK,CAAA,CAAA;AAE7D,IAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,MAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,KACtB;AAEA,IAAOV,OAAAA,CAAAA,GAAAA,GAAA,YAAY,KAAQ,GAAA,CAAC,MAArB,IAAAA,GAAAA,GAAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AAAA,GACpD;AAEA,EAAM,MAAA,YAAA,GAAe,CAACU,MAAkB,KAAA;AACtC,IAAA,MAAM,UAAa,GAAA,GAAA,CAAA;AACnB,IAAA,MAAM,aAAa,SAAY,GAAA,SAAA,CAAA;AAC/B,IAAM,MAAA,KAAA,GAAA,CAAUA,MAAQ,GAAA,SAAA,IAAa,UAAc,GAAA,UAAA,CAAA;AAEnD,IAAO,OAAA,IAAA,CAAK,MAAM,KAAK,CAAA,CAAA;AAAA,GACzB,CAAA;AAEA,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IACK,aAAA,CAAAR,gBAAA,CAAA,EAAA,EAAA,KAAA,CAAM,aADX,CAAA,EAAA;AAAA,MAEC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,MAC7B,OAAS,EAAA,CAAA,CAAA,EAAI,QAAW,GAAA,CAAA,GAAI,MAAW,CAAA,EAAA,EAAA,QAAA,GAAW,CAAI,GAAA,MAAA,CAAA,CAAA,EACpD,QAAW,GAAA,MAAA,GAAS,CAClB,CAAA,CAAA,EAAA,QAAA,GAAW,MAAS,GAAA,CAAA,CAAA,CAAA;AAAA,MAExB,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,GAAA,EAAA,EAAE,IAAG,MACJ,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA,aAAA,CAAAA,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAU,GAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,cAC3C,UAAY,EAAA,WAAA;AAAA,cACZ,QAAU,EAAA,SAAA;AAAA,aACX,CALF,CAAA,EAAA;AAAA,cAMC,QAAQ,cAAkB,IAAA,IAAA,GAAA,cAAA,GAAA,aAAA;AAAA,cAC1B,IAAK,EAAA,MAAA;AAAA,cACL,aAAc,EAAA,OAAA;AAAA,cACd,WAAc,EAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,aAAA,CAAA;AAAA,WACzC;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA,aAAA,CAAAA,gBAAA,CAAA,EAAA,EACK,MAAM,WAAY,CAAA;AAAA,cACpB,QAAQ,MAAU,GAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,cAC3C,UAAY,EAAA,GAAA;AAAA,cACZ,QAAA,EACE,YAAa,CAAA,KAAK,CAAM,KAAA,GAAA,GACpB,GAAM,GAAA,YAAA,CAAa,KAAK,CAAA,GACxB,GAAM,GAAA,YAAA,CAAa,KAAK,CAAA;AAAA,aAC/B,CARF,CAAA,EAAA;AAAA,cASC,MAAA,EAAQ,SAAS,KAAK,CAAA;AAAA,cACtB,OAAQ,EAAA,KAAA;AAAA,cACR,IAAK,EAAA,MAAA;AAAA,cACL,aAAc,EAAA,QAAA;AAAA,cACd,WAAc,EAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAS,CAAA,KAAf,YAAoB,CAAK,IAAA,GAAA;AAAA,cACvC,KAAO,EAAA;AAAA,gBACL,UAAY,EAAA,aAAA;AAAA,eACd;AAAA,aAAA,CAAA;AAAA,WACF;AAAA,SACF,EAAA,CAAA;AAAA,4BACC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,UAAW,EAAA,QAAA;AAAA,YACX,KAAO,EAAA,EAAE,QAAU,EAAA,CAAA,EAAG,sDAAwB,EAAO,CAAA,EAAA,CAAA,EAAA;AAAA,YACrD,iBAAkB,EAAA,SAAA;AAAA,YAClB,KAAO,EAAA,iBAAA;AAAA,YAEN,QAAA,EAAA,KAAA;AAAA,WAAA;AAAA,SAEL,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,CAAA;;AC/HA,MAAM,WAAc,GAAA,CAClB,WACA,EAAA,WAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,KAAQ,GAAA,EAAA,CAAA;AACZ,EAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AACpC,IAAA,IAAI,SAAS,UAAc,IAAA,WAAA,CAAY,KAAQ,GAAA,CAAC,KAAK,UAAY,EAAA;AAC/D,MAAQ,KAAA,GAAA,WAAA,CAAY,QAAQ,CAAC,CAAA,CAAA;AAAA,KAC/B;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAEA,SAAS,QAAA,CAAS,WAAuB,EAAA,WAAA,EAAuB,KAAe,EAAA;AAC7E,EAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAU,SAAS,KAAK,CAAA,CAAA;AAE7D,EAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,GACtB;AAEA,EAAA,OAAO,YAAY,KAAK,CAAA,CAAA;AAC1B,CAAA;AAEA,SAAS,aAAA,CACP,WACA,EAAA,WAAA,EACA,KACA,EAAA;AA5BF,EAAA,IAAA,EAAA,CAAA;AA6BE,EAAA,MAAM,QAAQ,WAAY,CAAA,SAAA,CAAU,CAAC,KAAA,KAAU,QAAQ,KAAK,CAAA,CAAA;AAE5D,EAAA,IAAI,UAAU,CAAI,CAAA,EAAA;AAChB,IAAA,OAAO,YAAY,CAAC,CAAA,CAAA;AAAA,GACtB;AAEA,EAAA,OAAA,CAAO,iBAAY,KAAQ,GAAA,CAAC,CAArB,KAAA,IAAA,GAAA,EAAA,GAA0B,YAAY,KAAK,CAAA,CAAA;AACpD,CAAA;AAEA,MAAM,kBAAqB,GAAA,CACzB,SACA,EAAA,SAAA,EACA,KACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,aAAa,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,CAAA,CAAA,CAAA;AACxC,EAAA,MAAM,UAAa,GAAA,GAAA,GAAA,CAAQ,KAAS,IAAA,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,MAAM,KAAS,GAAA,GAAA,CAAA;AAEhE,EAAO,OAAA,IAAA,CAAK,MAAM,UAAU,CAAA,CAAA;AAC9B,CAAA;;ACEA,MAAM,cAAiB,GAAA,CACrB,SACA,EAAA,SAAA,EACA,KACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,aAAa,SAAa,IAAA,IAAA,GAAA,SAAA,GAAA,CAAA,CAAA,CAAA;AACxC,EAAA,MAAM,UAAa,GAAA,GAAA,GAAA,CAAQ,KAAS,IAAA,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,MAAM,KAAS,GAAA,GAAA,CAAA;AAChE,EAAM,MAAA,IAAA,GAAQ,aAAa,EAAM,GAAA,GAAA,CAAA;AAEjC,EAAO,OAAA,IAAA,CAAK,MAAM,IAAI,CAAA,CAAA;AACxB,CAAA;;ACvDO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AACF,CAKM,KAAA;AACJ,EAAA,MAAM,SAAY,GAAA,QAAA,CAAA;AAClB,EAAA,MAAM,SAAY,GAAA,QAAA,CAAA;AAElB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA;AAChD,EAAM,MAAA,OAAA,GAAU,MAAgB,CAAA,EAAa,CAAA,CAAA;AAC7C,EAAM,MAAA,QAAA,GAAW,MAAgB,CAAA,EAAa,CAAA,CAAA;AAE9C,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,EAAuB,KAAA;AACtB,MAAA,IAAI,CAAC,EAAA;AAAI,QAAA,OAAA;AAET,MAAM,MAAA,UAAA,GAAa,EAAG,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACnC,MAAM,MAAA,WAAA,GAAc,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,aAAA,CAAc,CAAS,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAEvD,MAAA,IAAI,CAAC,UAAA;AAAY,QAAM,MAAA,IAAI,MAAM,QAAQ,CAAA,CAAA;AACzC,MAAA,IAAI,CAAC,WAAA;AAAa,QAAM,MAAA,IAAI,MAAM,SAAS,CAAA,CAAA;AAE3C,MAAM,MAAA,MAAA,GAAS,WAAW,qBAAsB,EAAA,CAAA;AAChD,MAAM,MAAA,OAAA,GAAU,YAAY,qBAAsB,EAAA,CAAA;AAElD,MAAMS,MAAAA,MAAAA,GAAQ,OAAQ,CAAA,CAAA,GAAI,MAAO,CAAA,CAAA,CAAA;AAEjC,MAAA,OAAA,CAAQ,OAAU,GAAA,MAAA,CAAA;AAClB,MAAA,QAAA,CAAS,OAAU,GAAA,OAAA,CAAA;AACnB,MAAA,cAAA,CAAeA,MAAK,CAAA,CAAA;AAAA,KACtB;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACV,CAAA;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,QAAA,CAAS,QAAQ,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,CAAA;AAC1D,EAAA,MAAM,QAAQ,KAAM,CAAA,QAAA,CAAS,QAAQ,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,CAAA;AAC1D,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAC9C,EAAA,MAAM,UAAa,GAAA,KAAA,CAAM,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAEhD,EAAA,MAAM,OAAU,GAAA,CAAA,EAAG,KAAS,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,EAAS,SAAa,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AAElD,EAAA,MAAM,SAA4C,GAAA;AAAA,IAChD,CAAG,EAAA,KAAA;AAAA,MACA,eAAe,SAAW,EAAA,SAAA,EAAW,YAAY,CAAA,GAAI,aAAc,GAClE,GAAA,WAAA;AAAA,KACJ;AAAA,IACA,CAAG,EAAA,KAAA;AAAA,IACH,KAAO,EAAA,SAAA;AAAA,IACP,MAAQ,EAAA,UAAA;AAAA,IACR,KAAO,EAAA;AAAA,MACL,UAAY,EAAA,SAAA;AAAA,MACZ,UAAY,EAAA,mBAAA;AAAA,KACd;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,OAAS,EAAA,YAAA;AAAA,IACT,UAAY,EAAA,OAAA;AAAA,IACZ,SAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACF,CAAA;;;;;;;;;;;;;;;;;;AC/DO,MAAM,cAAc,CAAC;AAAA,EAC1B,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,oBAAA;AACF,CAAwB,KAAA;AArBxB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAsBE,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAA;AACd,EAAA,MAAM,aAAY,EAAM,GAAA,KAAA,CAAA,QAAQ,CAAd,KAAA,IAAA,GAAA,EAAA,GAAmB,YAAY,CAAC,CAAA,CAAA;AAClD,EAAM,MAAA,SAAA,GAAA,CAAY,WAAM,QAAQ,CAAA,KAAd,YAAmB,WAAY,CAAA,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AACvE,EAAA,MAAM,UAAa,GAAA,CAAA,mRAAA,CAAA,CAAA;AAEnB,EAAA,MAAM,EAAE,SAAW,EAAA,OAAA,EAAS,YAAY,KAAO,EAAA,KAAA,KAAU,eAAgB,CAAA;AAAA,IACvE,YAAc,EAAA,KAAA;AAAA,IACd,QAAU,EAAA,SAAA;AAAA,IACV,QAAU,EAAA,SAAA;AAAA,IACV,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,MAAQ,EAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA,GAAI,IAAI,CAAA;AAAA,IACtE,OAAO,KAAM,CAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,IACpC,CAAG,EAAA,KAAA;AAAA,IACH,CAAG,EAAA,KAAA;AAAA,GACL,CAAA;AAEA,EAAA,MAAM,SAAY,GAAA,WAAA,CAAY,GAAI,CAAA,CAAC,KAAK,CAAM,KAAA;AAC5C,IAAO,OAAA;AAAA,MACL,QACE,SAAU,CAAA,MAAA,IACT,mBAAmB,SAAW,EAAA,SAAA,EAAW,GAAG,CAAI,GAAA,GAAA,CAAA;AAAA,MACnD,KAAA,EAAO,CAAC,WAAA,CAAY,CAAI,GAAA,CAAC,IACrB,OACA,GAAA,WAAA,CAAY,WAAa,EAAA,WAAA,EAAa,GAAG,CAAA;AAAA,MAC7C,KAAO,EAAA,GAAA;AAAA,KACT,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,4BACG,GAAI,EAAA,EAAA,EAAA,EAAI,EAAE,QAAA,EAAU,YACnB,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC9B,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,IAAI,CAAO,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,QACX,OAAS,EAAA,UAAA;AAAA,QACT,KAAO,EAAA,EAAE,QAAU,EAAA,UAAA,EAAY,KAAK,MAAO,EAAA;AAAA,QAE3C,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,cAAS,EAAG,EAAA,UAAA,EACX,8BAAC,MAAK,EAAA,EAAA,CAAA,EAAG,YAAY,CACvB,EAAA,CAAA;AAAA,0BACC,GAAA,CAAA,MAAA,EAAA,EAAK,EAAG,EAAA,QAAA,EACP,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAK,CAAG,EAAA,UAAA,EAAY,EAAG,EAAA,UAAA,EAAW,IAAK,EAAA,OAAA,EAAQ,CAClD,EAAA,CAAA;AAAA,0BAEA,GAAA,CAAC,UAAK,CAAG,EAAA,UAAA,EAAY,IAAI,CAAQ,KAAA,EAAA,OAAA,CAAA,CAAA,EAAW,MAAK,OAAQ,EAAA,CAAA;AAAA,0BAEzD,GAAA;AAAA,YAAC,MAAA;AAAA,YAAAT,gBAAA,CAAA;AAAA,cACC,IAAM,EAAA,aAAA,CAAc,WAAa,EAAA,WAAA,EAAa,KAAK,CAAA;AAAA,cACnD,IAAI,CAAQ,KAAA,EAAA,OAAA,CAAA,CAAA;AAAA,cACZ,IAAK,EAAA,cAAA;AAAA,cACL,GAAK,EAAA,OAAA;AAAA,aACD,EAAA,SAAA,CAAA;AAAA,WACN;AAAA,0BAEA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAG,EAAA,UAAA;AAAA,cACH,EAAG,EAAA,MAAA;AAAA,cACH,IAAK,EAAA,MAAA;AAAA,cACL,MAAO,EAAA,OAAA;AAAA,cACP,WAAa,EAAA,EAAA;AAAA,cACb,QAAS,EAAA,gBAAA;AAAA,cACT,YAAc,EAAA,oBAAA;AAAA,aAAA;AAAA,WAChB;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAS,EAAA,gBAAA;AAAA,cACT,CAAG,EAAA,UAAA;AAAA,cACH,EAAG,EAAA,MAAA;AAAA,cACH,IAAK,EAAA,MAAA;AAAA,cACL,MAAO,EAAA,OAAA;AAAA,cACP,WAAa,EAAA,CAAA;AAAA,cACb,YAAc,EAAA,oBAAA;AAAA,aAAA;AAAA,WAChB;AAAA,SAAA;AAAA,OAAA;AAAA,KACF;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAQ,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,EAAA;AAAA,QAClC,KAAO,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA;AAAA,QAC7B,OAAO,EAAE,QAAA,EAAU,YAAY,IAAM,EAAA,CAAA,EAAG,KAAK,CAAE,EAAA;AAAA,QAE9C,QAAA,EAAA;AAAA,UAAU,SAAA,CAAA,CAAA,wBACR,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAG,EAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAI,GAAA,CAAA;AAAA,cAC7B,CAAA,EAAG,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,EAAO,MAAM,CAAA,GAAI,CAAI,GAAA,EAAA;AAAA,cAC3D,KAAO,EAAA;AAAA,gBACL,QAAU,EAAA,CAAA,EAAA,CAAG,EAAM,GAAA,KAAA,CAAA,oBAAoB,MAA1B,IAA+B,GAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAAA,eAC9C;AAAA,cACA,UAAW,EAAA,QAAA;AAAA,cACX,iBAAmB,EAAA,SAAA;AAAA,cACnB,YAAc,EAAA,oBAAA;AAAA,cAEb,QAAA,EAAA,KAAA;AAAA,aAAA;AAAA,WAEL,EAAA,CAAA;AAAA,UAED,SAAU,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,CAAM,KAAA;AAC1B,YAAA,4BACG,GACC,EAAA,EAAA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,CACE,EAAA,CAAA,KAAM,CACF,GAAA,IAAA,CAAK,IAAI,KAAO,EAAA,MAAM,CAAI,GAAA,CAAA,GAAI,KAC9B,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,EAAA;AAAA,kBAEpC,CAAA,EAAG,KAAK,MAAS,GAAA,EAAA;AAAA,kBACjB,KAAO,EAAA,MAAA;AAAA,kBACP,MAAQ,EAAA,KAAA;AAAA,kBACR,YAAc,EAAA,oBAAA;AAAA,kBACd,IAAM,EAAA,QAAA,CAAS,WAAa,EAAA,WAAA,EAAa,KAAK,KAAK,CAAA;AAAA,iBAAA;AAAA,eACrD;AAAA,8BACA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EACE,CAAM,KAAA,CAAA,GACF,IAAK,CAAA,GAAA,CAAI,OAAO,MAAM,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,CAAI,GAAA,EAAA,GACxD,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,IAAI,IAAK,CAAA,GAAA,CAAI,KAAO,EAAA,MAAM,CAAI,GAAA,CAAA;AAAA,kBAE1D,CAAA,EAAG,UAAU,CAAI,GAAA,CAAC,IAAI,IAAK,CAAA,MAAA,GAAS,EAAK,GAAA,IAAA,CAAK,MAAS,GAAA,GAAA;AAAA,kBACvD,UAAW,EAAA,QAAA;AAAA,kBACX,iBACE,EAAA,SAAA,CAAU,CAAI,GAAA,CAAC,IAAI,MAAS,GAAA,kBAAA;AAAA,kBAG7B,QAAK,EAAA,IAAA,CAAA,KAAA;AAAA,iBAAA;AAAA,eACR;AAAA,aAAA,EAAA,EA1BM,CA2BR,CAAA,CAAA;AAAA,WAEH,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;AC3IO,MAAM,eAAkB,GAAA,CAAC,EAAE,IAAA,EAAkC,KAAA;AA0ClE,EAAA,MAAM,WAAwB,cACzB,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;AAGL,EAAA,MAAM,cAAc,KAAM,CAAA,IAAA;AAAA,IACxB,IAAI,GAAA;AAAA,MACF,aAAa,QAAS,CAAA,KAAA,CAAM,IAAI,CAC7B,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,QAAO,OAAA,CAAC,OAAO,IAAK,CAAA,OAAO,GAAG,MAAO,CAAA,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA;AAAA,OACnD,EACA,IAAK,EAAA,CACL,KAAK,CAAC,CAAA,EAAG,CAAM,KAAA,CAAA,GAAI,CAAC,CAAA;AAAA,KACzB;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,aAAa,QAAS,CAAA,KAAA,CAAM,IAAI,CACjD,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AACb,IAAO,OAAA,SAAA,CAAU,IAAK,CAAA,KAAK,CACxB,CAAA,QAAA,CAAS,CAAK,GAAA,CAAA,GAAA,GAAM,IAAK,CAAA,YAAA,IAAgB,GAAG,CAAA,CAC5C,qBAAsB,EAAA,CAAA;AAAA,GAC1B,EACA,IAAK,EAAA,CAAA;AAER,EAAA,MAAM,aAAgB,GAAA,QAAA;AAAA,IACpB,CAAC,UAAY,EAAA,MAAA,EAAQ,SAAS,MAAQ,EAAA,WAAA,EAAa,OAAO,IAAI,CAAA;AAAA,IAC9D;AAAA,MACE,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,MACxB,SAAS,UAAe,KAAA,GAAA;AAAA,KAC1B;AAAA,IACA,CAAA;AAAA,GACF,CAAA;AACA,EAAA,MAAM,YAAY,gBAAiB,EAAA,CAAA;AAEnC,EAAA,2BACG,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,WAAW,QAAS,CAAA,MAAA;AAAA,MACpB,iBAAiB,QAAS,CAAA,eAAA;AAAA,MAC1B,WAAA;AAAA,MACA,YAAA,EAAc,MAAO,CAAA,QAAA,CAAS,YAAY,CAAA;AAAA,MAC1C,UAAU,QAAS,CAAA,aAAA;AAAA,MACnB,mBAAmB,QAAS,CAAA,UAAA;AAAA,MAC5B,sBAAsB,QAAS,CAAA,aAAA;AAAA,MAC/B,WAAW,QAAS,CAAA,SAAA;AAAA,MACpB,QAAQ,QAAS,CAAA,MAAA;AAAA,MACjB,SAAS,SAAU,CAAA,OAAA;AAAA,MACnB,UAAU,QAAS,CAAA,QAAA;AAAA,MACnB,UAAU,QAAS,CAAA,QAAA;AAAA,MACnB,cAAc,QAAS,CAAA,YAAA;AAAA,MACvB,gBAAgB,QAAS,CAAA,YAAA;AAAA,MACzB,WAAW,QAAS,CAAA,UAAA;AAAA,MACpB,iBAAiB,QAAS,CAAA,aAAA;AAAA,MAC1B,WAAA;AAAA,MACA,OAAO,QAAS,CAAA,KAAA;AAAA,KAAA;AAAA,GAEpB,EAAA,CAAA,CAAA;AAEJ;;;;"}
|