vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 34.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/status-bar/index.ts"],"sourcesContent":["import { VNode, CSSProperties, Teleport } from 'vue'\nimport { defineComponent, getCurrentInstance, nextTick, ref, reactive, h, createCommentVNode, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport type { VcStatusBarEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport MouseCoords, { extendForMouseCoords } from './MouseCoords'\nimport throttle from '@vue-cesium/utils/private/throttle'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport type { VcBtnRef, VcTooltipRef } from '@vue-cesium/components/ui'\nimport { VcBtn, VcTooltip, VcTooltipProps } from '@vue-cesium/components/ui'\nimport defaultProps from './defaultProps'\nimport { isPlainObject } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { heightToLevel } from '@vue-cesium/utils/cesium-helpers'\n\nconst emits = {\n ...commonEmits,\n statusBarEvt: (evt: VcStatusBarEvt) => true\n}\nexport const statusBarProps = defaultProps\nexport default defineComponent({\n name: 'VcStatusBar',\n props: statusBarProps,\n emits: emits,\n setup(props: VcStatusBarProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcStatusBar'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const parentInstance = getVcParentInstance(instance)\n const { $services } = commonState\n const rootRef = ref<VcBtnRef>(null)\n const tooltipRef = ref<VcTooltipRef>(null)\n const { t } = useLocale()\n\n let lastMouseX = -1\n let lastMouseY = -1\n const cameraInfo = reactive({\n heading: 'NaN',\n pitch: 'NaN',\n roll: 'NaN',\n height: 'NaN',\n level: 'NaN'\n })\n const performanceInfo = reactive({\n fps: 'NaN',\n ms: 'NaN'\n })\n const mouseCoordsInfo = ref<MouseCoords>()\n const positionState = usePosition(props, $services)\n const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n const canRender = ref(hasVcNavigation)\n const rootStyle = reactive<CSSProperties>({})\n let debugShowFramesPerSecond = false\n // watch\n watch(\n () => props,\n val => {\n nextTick(() => {\n if (!instance.mounted) {\n return\n }\n updateRootStyle()\n })\n },\n {\n deep: true\n }\n )\n // methods\n instance.createCesiumObject = async () => {\n const { viewer } = $services\n\n const viewerElement = (viewer as any)._element as HTMLElement\n\n if (props.showMouseInfo) {\n mouseCoordsInfo.value = new MouseCoords({\n gridFileUrl: props.gridFileUrl,\n proj4Projection: props.proj4Projection,\n projectionUnits: props.projectionUnits,\n proj4longlat: props.proj4longlat,\n decimal: props.decimal,\n rangeType: props.rangeType\n })\n\n viewerElement.addEventListener('wheel', onMouseMove, false)\n viewerElement.addEventListener('mousemove', onMouseMove, false)\n viewerElement.addEventListener('touchmove', onMouseMove, false)\n extendForMouseCoords()\n }\n\n if (props.showCameraInfo) {\n viewer.camera.changed.addEventListener(onCameraChanged)\n onCameraChanged()\n }\n\n if (props.showPerformanceInfo) {\n debugShowFramesPerSecond = viewer.scene.debugShowFramesPerSecond\n viewer.scene.debugShowFramesPerSecond = true\n viewer.scene.postRender.addEventListener(onScenePostRender)\n }\n\n return rootRef\n }\n\n instance.mount = async () => {\n canRender.value = true\n nextTick(() => {\n updateRootStyle()\n })\n const { viewer } = $services\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'mounted',\n target: $(rootRef)?.$el\n })\n return true\n }\n\n instance.unmount = async () => {\n canRender.value = false\n const { viewer } = $services\n const viewerElement = (viewer as any)._element as HTMLElement\n if (props.showMouseInfo) {\n mouseCoordsInfo.value = undefined\n viewerElement.removeEventListener('wheel', onMouseMove)\n viewerElement.removeEventListener('mousemove', onMouseMove)\n viewerElement.removeEventListener('touchmove', onMouseMove)\n }\n\n if (props.showCameraInfo) {\n viewer.camera.changed.removeEventListener(onCameraChanged)\n }\n\n if (props.showPerformanceInfo) {\n if (debugShowFramesPerSecond) {\n viewer.scene._performanceDisplay._container.style.display = 'block'\n } else {\n viewer.scene.debugShowFramesPerSecond = false\n }\n\n viewer.scene.postRender.removeEventListener(onScenePostRender)\n }\n\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'unmounted',\n target: $(rootRef)?.$el\n })\n return true\n }\n\n const updateRootStyle = () => {\n const css: CSSProperties = positionState.style.value\n rootStyle.left = css.left\n rootStyle.top = css.top\n rootStyle.transform = css.transform\n\n css.background = props.background\n css.color = props.color\n\n if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\n const side = positionState.attach.value\n if ((side.bottom || side.top) && !side.left && !side.right) {\n css.left = '50%'\n css.transform = 'translate(-50%, 0)'\n }\n\n if ((side.left || side.right) && !side.top && !side.bottom) {\n css.top = '50%'\n css.transform = 'translate(0, -50%)'\n }\n }\n\n Object.assign(rootStyle, css)\n }\n\n const onScenePostRender = throttle(scene => {\n performanceInfo.fps = scene._performanceDisplay?._fpsText.nodeValue\n performanceInfo.ms = scene._performanceDisplay?._msText.nodeValue\n scene._performanceDisplay._container.style.display = 'none'\n }, 250)\n\n const onCameraChanged = () => {\n const { viewer } = $services\n const scene = viewer.scene\n const sscc = scene.screenSpaceCameraController\n if (scene.mode === Cesium.SceneMode.MORPHING || !sscc.enableInputs) {\n return\n }\n\n const { Math: CesiumMath } = Cesium\n cameraInfo.heading = CesiumMath.toDegrees(viewer.camera.heading).toFixed(1)\n cameraInfo.pitch = CesiumMath.toDegrees(viewer.camera.pitch).toFixed(1)\n cameraInfo.roll = CesiumMath.toDegrees(viewer.camera.roll).toFixed(1)\n cameraInfo.height = viewer.camera.positionCartographic.height.toFixed(2)\n cameraInfo.level = heightToLevel(Number(cameraInfo.height)).toFixed(0)\n\n\n const listener = getInstanceListener(instance, 'statusBarEvt')\n listener &&\n ctx.emit('statusBarEvt', {\n type: 'statusBar',\n mouseCoordsInfo: mouseCoordsInfo.value,\n cameraInfo: cameraInfo,\n performanceInfo: performanceInfo\n })\n }\n\n const onMouseMove = e => {\n const { Cartesian2, SceneMode } = Cesium\n const { viewer } = $services\n\n if (viewer.scene.mode === SceneMode.MORPHING) return\n\n const clientX = e.type === 'mousemove' || e.type === 'wheel' ? e.clientX : e.changedTouches[0].clientX\n const clientY = e.type === 'mousemove' || e.type === 'wheel' ? e.clientY : e.changedTouches[0].clientY\n\n if (clientX === lastMouseX && clientY === lastMouseY) {\n return\n }\n\n lastMouseX = clientX\n lastMouseY = clientY\n\n const viewerElement = (viewer as any)._element as HTMLElement\n\n if (viewer) {\n if (props.showMouseInfo) {\n const rect = viewerElement.getBoundingClientRect()\n const position = new Cartesian2(clientX - rect.left, clientY - rect.top)\n mouseCoordsInfo.value?.updateCoordinatesFromCesium(viewer, position)\n }\n const listener = getInstanceListener(instance, 'statusBarEvt')\n listener &&\n ctx.emit('statusBarEvt', {\n type: 'statusBar',\n mouseCoordsInfo: mouseCoordsInfo.value,\n cameraInfo: cameraInfo,\n performanceInfo: performanceInfo\n })\n }\n }\n\n const toggleUseProjection = () => {\n if (!props.useProjection) {\n return\n }\n $(tooltipRef)?.hide()\n if (props.showMouseInfo) {\n mouseCoordsInfo.value?.toggleUseProjection()\n }\n }\n\n // expose public methods\n Object.assign(instance.proxy, {\n getMouseCoordsInfo: () => mouseCoordsInfo.value,\n getCameraInfo: () => cameraInfo,\n getPerformanceInfo: () => performanceInfo\n })\n\n return () => {\n if (canRender.value) {\n const inner: Array<VNode> = []\n if (props.showMouseInfo) {\n if (!mouseCoordsInfo.value?.useProjection) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.lng')\n ),\n h('span', {}, mouseCoordsInfo.value?.longitude)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [h('span', {}, t('vc.navigation.statusBar.lat')), h('span', {}, mouseCoordsInfo.value?.latitude)]\n )\n )\n } else {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.zone')\n ),\n h('span', null, mouseCoordsInfo.value?.utmZone)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.e')\n ),\n h('span', null, mouseCoordsInfo.value?.east)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.n')\n ),\n h('span', null, mouseCoordsInfo.value?.north)\n ]\n )\n )\n }\n\n if (mouseCoordsInfo.value?.elevation) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.elev')\n ),\n h('span', {}, mouseCoordsInfo.value?.elevation)\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n if (props.showCameraInfo) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section-short-mini ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.level')\n ),\n h('span', null, cameraInfo.level)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.heading')\n ),\n h('span', null, `${cameraInfo.heading}°`)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.pitch')\n ),\n h('span', null, `${cameraInfo.pitch}°`)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.roll')\n ),\n h('span', null, `${cameraInfo.roll}°`)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.cameraHeight')\n ),\n h('span', null, `${cameraInfo.height}m`)\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n if (props.showPerformanceInfo) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section-short-mini ellipsis'\n },\n [h('span', null, performanceInfo.ms)]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short-mini ellipsis'\n },\n [h('span', null, performanceInfo.fps)]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n if (isPlainObject(props.tooltip) && props.showMouseInfo && props.useProjection) {\n inner.push(\n h(\n VcTooltip,\n {\n ref: tooltipRef,\n ...props.tooltip\n },\n () => h('strong', null, (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.statusBar.tip'))\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n const renderContent = h(\n VcBtn,\n {\n ref: rootRef,\n class: `vc-status-bar ${positionState.classes.value} ${props.customClass}`,\n style: rootStyle,\n noCaps: true,\n onClick: toggleUseProjection\n },\n () => inner\n )\n\n return !hasVcNavigation && props.teleportToViewer ? h(Teleport, { to: $services.viewer._element }, renderContent) : renderContent\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\nexport type VcStatusBarEmits = typeof emits\n\nexport interface VcStatusBarProps {\n /**\n * Specify the position of the VcStatusBar.\n * Default value: bottom-right\n */\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n /**\n * An array of two numbers to offset the VcStatusBar horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify the mouse to pick up the height model, use this to improve the accuracy of the height obtained.\n * Default value: https://zouyaoji.top/vue-cesium/statics/SampleData/WW15MGH.DAC\n */\n gridFileUrl?: string\n /**\n * Specify the proj4 projection.\n * Default value: +proj=utm +ellps=GRS80 +units=m +no_defs\n */\n proj4Projection?: string\n /**\n * Specify the projection units.\n * Default value: m\n */\n projectionUnits?: string\n /**\n * Specify the proj4 longlat.\n * Default value: +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees +no_defs\n */\n proj4longlat?: string\n /**\n * Specify the css color of the information bar.\n * Default value: #fff\n */\n color?: string\n /**\n * Specify the latitude and longitude display range. 0: 0-180, distinguish between East and West; 1: -180-180; 2: 0-360.\n * Default value: 1\n */\n rangeType?: number\n /**\n * Specify the number of decimal places for latitude and longitude.\n * Default value: 5\n */\n decimal?: number\n /**\n * Specify the background of the information bar.\n * Default value: #3f4854\n */\n background?: string\n /**\n * Specify whether to display camera information in the information bar.\n * Default value: true\n */\n showCameraInfo?: boolean\n /**\n * Specify whether to display mouse coords information in the information bar.\n * Default value: true\n */\n showMouseInfo?: boolean\n /**\n * Specify whether to display frame rate information in the information bar.\n * Default value: true\n */\n showPerformanceInfo?: boolean\n /**\n * Specify whether the latitude and longitude coordinates on the information bar can be switched to UTM projected coordinates.\n * Default value: true\n */\n useProjection?: boolean\n /**\n * The tooltip parameter.\n */\n tooltip?: false | VcTooltipProps\n /**\n * Specify the customClass of the vc-status-bar.\n */\n customClass?: string\n /**\n * Specify whether to add to the cesium-viewer node.\n * Default value: true\n */\n teleportToViewer?: boolean\n /**\n * Triggers before the VcStatusBar is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcStatusBar is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the VcStatusBar is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the information changed.\n */\n onStatusBarEvt?: (evt: VcStatusBarEvt) => void\n}\n\nexport interface VcStatusBarRef extends VcComponentPublicInstance<VcStatusBarProps> {\n /**\n * Get the mouseCoords info.\n */\n getMouseCoordsInfo: () => MouseCoords\n /**\n * Get the camera info.\n */\n getCameraInfo: () => {\n heading: string\n pitch: string\n roll: string\n height: string\n level: string\n }\n /**\n * Get the performance info.\n */\n getPerformanceInfo: () => { fps: string; ms: string }\n}\n"],"names":["defaultProps","_a"],"mappings":";;;;;;;;;;;;;;;;AAeA,MAAM,KAAQ,GAAA;AAAA,EACZ,GAAG,WAAA;AAAA,EACH,YAAA,EAAc,CAAC,GAAwB,KAAA,IAAA;AACzC,CAAA,CAAA;AACO,MAAM,cAAiB,GAAAA,sBAAA;AAC9B,gBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,aAAA;AAAA,EACN,KAAO,EAAA,cAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA,CAAM,OAAyB,GAAK,EAAA;AAxBtC,IAAA,IAAA,EAAA,CAAA;AA0BI,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,IAAA,QAAA,CAAS,WAAc,GAAA,aAAA,CAAA;AACvB,IAAA,QAAA,CAAS,eAAe,EAAC,CAAA;AACzB,IAAA,MAAM,WAAc,GAAA,SAAA,CAAU,KAAO,EAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAClD,IAAA,IAAI,gBAAgB,KAAQ,CAAA,EAAA;AAC1B,MAAA,OAAA;AAAA,KACF;AACA,IAAM,MAAA,cAAA,GAAiB,oBAAoB,QAAQ,CAAA,CAAA;AACnD,IAAM,MAAA,EAAE,WAAc,GAAA,WAAA,CAAA;AACtB,IAAM,MAAA,OAAA,GAAU,IAAc,IAAI,CAAA,CAAA;AAClC,IAAM,MAAA,UAAA,GAAa,IAAkB,IAAI,CAAA,CAAA;AACzC,IAAM,MAAA,EAAE,CAAE,EAAA,GAAI,SAAU,EAAA,CAAA;AAExB,IAAA,IAAI,UAAa,GAAA,CAAA,CAAA,CAAA;AACjB,IAAA,IAAI,UAAa,GAAA,CAAA,CAAA,CAAA;AACjB,IAAA,MAAM,aAAa,QAAS,CAAA;AAAA,MAC1B,OAAS,EAAA,KAAA;AAAA,MACT,KAAO,EAAA,KAAA;AAAA,MACP,IAAM,EAAA,KAAA;AAAA,MACN,MAAQ,EAAA,KAAA;AAAA,MACR,KAAO,EAAA,KAAA;AAAA,KACR,CAAA,CAAA;AACD,IAAA,MAAM,kBAAkB,QAAS,CAAA;AAAA,MAC/B,GAAK,EAAA,KAAA;AAAA,MACL,EAAI,EAAA,KAAA;AAAA,KACL,CAAA,CAAA;AACD,IAAA,MAAM,kBAAkB,GAAiB,EAAA,CAAA;AACzC,IAAM,MAAA,aAAA,GAAgB,WAAY,CAAA,KAAA,EAAO,SAAS,CAAA,CAAA;AAClD,IAAA,MAAM,eAAkB,GAAA,CAAA,CAAA,EAAA,GAAA,cAAA,CAAe,KAAf,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAsB,SAAS,IAAS,MAAA,cAAA,CAAA;AAChE,IAAM,MAAA,SAAA,GAAY,IAAI,eAAe,CAAA,CAAA;AACrC,IAAM,MAAA,SAAA,GAAY,QAAwB,CAAA,EAAE,CAAA,CAAA;AAC5C,IAAA,IAAI,wBAA2B,GAAA,KAAA,CAAA;AAE/B,IAAA,KAAA;AAAA,MACE,MAAM,KAAA;AAAA,MACN,CAAO,GAAA,KAAA;AACL,QAAA,QAAA,CAAS,MAAM;AACb,UAAI,IAAA,CAAC,SAAS,OAAS,EAAA;AACrB,YAAA,OAAA;AAAA,WACF;AACA,UAAgB,eAAA,EAAA,CAAA;AAAA,SACjB,CAAA,CAAA;AAAA,OACH;AAAA,MACA;AAAA,QACE,IAAM,EAAA,IAAA;AAAA,OACR;AAAA,KACF,CAAA;AAEA,IAAA,QAAA,CAAS,qBAAqB,YAAY;AACxC,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AAEnB,MAAA,MAAM,gBAAiB,MAAe,CAAA,QAAA,CAAA;AAEtC,MAAA,IAAI,MAAM,aAAe,EAAA;AACvB,QAAgB,eAAA,CAAA,KAAA,GAAQ,IAAI,WAAY,CAAA;AAAA,UACtC,aAAa,KAAM,CAAA,WAAA;AAAA,UACnB,iBAAiB,KAAM,CAAA,eAAA;AAAA,UACvB,iBAAiB,KAAM,CAAA,eAAA;AAAA,UACvB,cAAc,KAAM,CAAA,YAAA;AAAA,UACpB,SAAS,KAAM,CAAA,OAAA;AAAA,UACf,WAAW,KAAM,CAAA,SAAA;AAAA,SAClB,CAAA,CAAA;AAED,QAAc,aAAA,CAAA,gBAAA,CAAiB,OAAS,EAAA,WAAA,EAAa,KAAK,CAAA,CAAA;AAC1D,QAAc,aAAA,CAAA,gBAAA,CAAiB,WAAa,EAAA,WAAA,EAAa,KAAK,CAAA,CAAA;AAC9D,QAAc,aAAA,CAAA,gBAAA,CAAiB,WAAa,EAAA,WAAA,EAAa,KAAK,CAAA,CAAA;AAC9D,QAAqB,oBAAA,EAAA,CAAA;AAAA,OACvB;AAEA,MAAA,IAAI,MAAM,cAAgB,EAAA;AACxB,QAAO,MAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,gBAAA,CAAiB,eAAe,CAAA,CAAA;AACtD,QAAgB,eAAA,EAAA,CAAA;AAAA,OAClB;AAEA,MAAA,IAAI,MAAM,mBAAqB,EAAA;AAC7B,QAAA,wBAAA,GAA2B,OAAO,KAAM,CAAA,wBAAA,CAAA;AACxC,QAAA,MAAA,CAAO,MAAM,wBAA2B,GAAA,IAAA,CAAA;AACxC,QAAO,MAAA,CAAA,KAAA,CAAM,UAAW,CAAA,gBAAA,CAAiB,iBAAiB,CAAA,CAAA;AAAA,OAC5D;AAEA,MAAO,OAAA,OAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,QAAA,CAAS,QAAQ,YAAY;AA7GjC,MAAA,IAAAC,GAAA,EAAA,EAAA,CAAA;AA8GM,MAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAClB,MAAA,QAAA,CAAS,MAAM;AACb,QAAgB,eAAA,EAAA,CAAA;AAAA,OACjB,CAAA,CAAA;AACD,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAO,CAAA,EAAA,GAAA,MAAA,CAAA,mBAAA,KAAP,mBAA4B,UAAW,CAAA;AAAA,QACrC,MAAM,QAAS,CAAA,WAAA;AAAA,QACf,MAAQ,EAAA,SAAA;AAAA,QACR,SAAQA,GAAA,GAAA,CAAA,CAAE,OAAO,CAAA,KAAT,gBAAAA,GAAY,CAAA,GAAA;AAAA,OACtB,CAAA,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,QAAA,CAAS,UAAU,YAAY;AA3HnC,MAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AA4HM,MAAA,SAAA,CAAU,KAAQ,GAAA,KAAA,CAAA;AAClB,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,MAAM,gBAAiB,MAAe,CAAA,QAAA,CAAA;AACtC,MAAA,IAAI,MAAM,aAAe,EAAA;AACvB,QAAA,eAAA,CAAgB,KAAQ,GAAA,KAAA,CAAA,CAAA;AACxB,QAAc,aAAA,CAAA,mBAAA,CAAoB,SAAS,WAAW,CAAA,CAAA;AACtD,QAAc,aAAA,CAAA,mBAAA,CAAoB,aAAa,WAAW,CAAA,CAAA;AAC1D,QAAc,aAAA,CAAA,mBAAA,CAAoB,aAAa,WAAW,CAAA,CAAA;AAAA,OAC5D;AAEA,MAAA,IAAI,MAAM,cAAgB,EAAA;AACxB,QAAO,MAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,mBAAA,CAAoB,eAAe,CAAA,CAAA;AAAA,OAC3D;AAEA,MAAA,IAAI,MAAM,mBAAqB,EAAA;AAC7B,QAAA,IAAI,wBAA0B,EAAA;AAC5B,UAAA,MAAA,CAAO,KAAM,CAAA,mBAAA,CAAoB,UAAW,CAAA,KAAA,CAAM,OAAU,GAAA,OAAA,CAAA;AAAA,SACvD,MAAA;AACL,UAAA,MAAA,CAAO,MAAM,wBAA2B,GAAA,KAAA,CAAA;AAAA,SAC1C;AAEA,QAAO,MAAA,CAAA,KAAA,CAAM,UAAW,CAAA,mBAAA,CAAoB,iBAAiB,CAAA,CAAA;AAAA,OAC/D;AAEA,MAAO,CAAA,EAAA,GAAA,MAAA,CAAA,mBAAA,KAAP,mBAA4B,UAAW,CAAA;AAAA,QACrC,MAAM,QAAS,CAAA,WAAA;AAAA,QACf,MAAQ,EAAA,WAAA;AAAA,QACR,SAAQA,GAAA,GAAA,CAAA,CAAE,OAAO,CAAA,KAAT,gBAAAA,GAAY,CAAA,GAAA;AAAA,OACtB,CAAA,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAM,MAAA,GAAA,GAAqB,cAAc,KAAM,CAAA,KAAA,CAAA;AAC/C,MAAA,SAAA,CAAU,OAAO,GAAI,CAAA,IAAA,CAAA;AACrB,MAAA,SAAA,CAAU,MAAM,GAAI,CAAA,GAAA,CAAA;AACpB,MAAA,SAAA,CAAU,YAAY,GAAI,CAAA,SAAA,CAAA;AAE1B,MAAA,GAAA,CAAI,aAAa,KAAM,CAAA,UAAA,CAAA;AACvB,MAAA,GAAA,CAAI,QAAQ,KAAM,CAAA,KAAA,CAAA;AAElB,MAAA,IAAI,OAAO,KAAA,CAAM,gBAAqB,KAAA,WAAA,IAAe,MAAM,gBAAkB,EAAA;AAC3E,QAAM,MAAA,IAAA,GAAO,cAAc,MAAO,CAAA,KAAA,CAAA;AAClC,QAAK,IAAA,CAAA,IAAA,CAAK,UAAU,IAAK,CAAA,GAAA,KAAQ,CAAC,IAAK,CAAA,IAAA,IAAQ,CAAC,IAAA,CAAK,KAAO,EAAA;AAC1D,UAAA,GAAA,CAAI,IAAO,GAAA,KAAA,CAAA;AACX,UAAA,GAAA,CAAI,SAAY,GAAA,oBAAA,CAAA;AAAA,SAClB;AAEA,QAAK,IAAA,CAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,KAAU,CAAC,IAAK,CAAA,GAAA,IAAO,CAAC,IAAA,CAAK,MAAQ,EAAA;AAC1D,UAAA,GAAA,CAAI,GAAM,GAAA,KAAA,CAAA;AACV,UAAA,GAAA,CAAI,SAAY,GAAA,oBAAA,CAAA;AAAA,SAClB;AAAA,OACF;AAEA,MAAO,MAAA,CAAA,MAAA,CAAO,WAAW,GAAG,CAAA,CAAA;AAAA,KAC9B,CAAA;AAEA,IAAM,MAAA,iBAAA,GAAoB,SAAS,CAAS,KAAA,KAAA;AArLhD,MAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AAsLM,MAAA,eAAA,CAAgB,OAAMA,GAAA,GAAA,KAAA,CAAM,mBAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAA2B,QAAS,CAAA,SAAA,CAAA;AAC1D,MAAA,eAAA,CAAgB,EAAK,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,mBAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA2B,OAAQ,CAAA,SAAA,CAAA;AACxD,MAAM,KAAA,CAAA,mBAAA,CAAoB,UAAW,CAAA,KAAA,CAAM,OAAU,GAAA,MAAA,CAAA;AAAA,OACpD,GAAG,CAAA,CAAA;AAEN,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,MAAM,QAAQ,MAAO,CAAA,KAAA,CAAA;AACrB,MAAA,MAAM,OAAO,KAAM,CAAA,2BAAA,CAAA;AACnB,MAAA,IAAI,MAAM,IAAS,KAAA,MAAA,CAAO,UAAU,QAAY,IAAA,CAAC,KAAK,YAAc,EAAA;AAClE,QAAA,OAAA;AAAA,OACF;AAEA,MAAM,MAAA,EAAE,IAAM,EAAA,UAAA,EAAe,GAAA,MAAA,CAAA;AAC7B,MAAW,UAAA,CAAA,OAAA,GAAU,WAAW,SAAU,CAAA,MAAA,CAAO,OAAO,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAA,CAAA;AAC1E,MAAW,UAAA,CAAA,KAAA,GAAQ,WAAW,SAAU,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAE,QAAQ,CAAC,CAAA,CAAA;AACtE,MAAW,UAAA,CAAA,IAAA,GAAO,WAAW,SAAU,CAAA,MAAA,CAAO,OAAO,IAAI,CAAA,CAAE,QAAQ,CAAC,CAAA,CAAA;AACpE,MAAA,UAAA,CAAW,SAAS,MAAO,CAAA,MAAA,CAAO,oBAAqB,CAAA,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA;AACvE,MAAW,UAAA,CAAA,KAAA,GAAQ,cAAc,MAAO,CAAA,UAAA,CAAW,MAAM,CAAC,CAAA,CAAE,QAAQ,CAAC,CAAA,CAAA;AAGrE,MAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,cAAc,CAAA,CAAA;AAC7D,MACE,QAAA,IAAA,GAAA,CAAI,KAAK,cAAgB,EAAA;AAAA,QACvB,IAAM,EAAA,WAAA;AAAA,QACN,iBAAiB,eAAgB,CAAA,KAAA;AAAA,QACjC,UAAA;AAAA,QACA,eAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACL,CAAA;AAEA,IAAA,MAAM,cAAc,CAAK,CAAA,KAAA;AArN7B,MAAAA,IAAAA,GAAAA,CAAAA;AAsNM,MAAM,MAAA,EAAE,UAAY,EAAA,SAAA,EAAc,GAAA,MAAA,CAAA;AAClC,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AAEnB,MAAI,IAAA,MAAA,CAAO,KAAM,CAAA,IAAA,KAAS,SAAU,CAAA,QAAA;AAAU,QAAA,OAAA;AAE9C,MAAA,MAAM,OAAU,GAAA,CAAA,CAAE,IAAS,KAAA,WAAA,IAAe,CAAE,CAAA,IAAA,KAAS,OAAU,GAAA,CAAA,CAAE,OAAU,GAAA,CAAA,CAAE,cAAe,CAAA,CAAC,CAAE,CAAA,OAAA,CAAA;AAC/F,MAAA,MAAM,OAAU,GAAA,CAAA,CAAE,IAAS,KAAA,WAAA,IAAe,CAAE,CAAA,IAAA,KAAS,OAAU,GAAA,CAAA,CAAE,OAAU,GAAA,CAAA,CAAE,cAAe,CAAA,CAAC,CAAE,CAAA,OAAA,CAAA;AAE/F,MAAI,IAAA,OAAA,KAAY,UAAc,IAAA,OAAA,KAAY,UAAY,EAAA;AACpD,QAAA,OAAA;AAAA,OACF;AAEA,MAAa,UAAA,GAAA,OAAA,CAAA;AACb,MAAa,UAAA,GAAA,OAAA,CAAA;AAEb,MAAA,MAAM,gBAAiB,MAAe,CAAA,QAAA,CAAA;AAEtC,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,IAAI,MAAM,aAAe,EAAA;AACvB,UAAM,MAAA,IAAA,GAAO,cAAc,qBAAsB,EAAA,CAAA;AACjD,UAAM,MAAA,QAAA,GAAW,IAAI,UAAW,CAAA,OAAA,GAAU,KAAK,IAAM,EAAA,OAAA,GAAU,KAAK,GAAG,CAAA,CAAA;AACvE,UAAA,CAAAA,MAAA,eAAgB,CAAA,KAAA,KAAhB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAuB,4BAA4B,MAAQ,EAAA,QAAA,CAAA,CAAA;AAAA,SAC7D;AACA,QAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,cAAc,CAAA,CAAA;AAC7D,QACE,QAAA,IAAA,GAAA,CAAI,KAAK,cAAgB,EAAA;AAAA,UACvB,IAAM,EAAA,WAAA;AAAA,UACN,iBAAiB,eAAgB,CAAA,KAAA;AAAA,UACjC,UAAA;AAAA,UACA,eAAA;AAAA,SACD,CAAA,CAAA;AAAA,OACL;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,sBAAsB,MAAM;AAxPtC,MAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AAyPM,MAAI,IAAA,CAAC,MAAM,aAAe,EAAA;AACxB,QAAA,OAAA;AAAA,OACF;AACA,MAAA,CAAAA,GAAA,GAAA,CAAA,CAAE,UAAU,CAAA,KAAZ,gBAAAA,GAAe,CAAA,IAAA,EAAA,CAAA;AACf,MAAA,IAAI,MAAM,aAAe,EAAA;AACvB,QAAA,CAAA,EAAA,GAAA,eAAA,CAAgB,UAAhB,IAAuB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,mBAAA,EAAA,CAAA;AAAA,OACzB;AAAA,KACF,CAAA;AAGA,IAAO,MAAA,CAAA,MAAA,CAAO,SAAS,KAAO,EAAA;AAAA,MAC5B,kBAAA,EAAoB,MAAM,eAAgB,CAAA,KAAA;AAAA,MAC1C,eAAe,MAAM,UAAA;AAAA,MACrB,oBAAoB,MAAM,eAAA;AAAA,KAC3B,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AAzQjB,MAAA,IAAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA0QM,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,MAAM,QAAsB,EAAC,CAAA;AAC7B,QAAA,IAAI,MAAM,aAAe,EAAA;AACvB,UAAA,IAAI,GAACA,GAAA,GAAA,eAAA,CAAgB,KAAhB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAuB,aAAe,CAAA,EAAA;AACzC,YAAM,KAAA,CAAA,IAAA;AAAA,cACJ,CAAA;AAAA,gBACE,KAAA;AAAA,gBACA;AAAA,kBACE,KAAO,EAAA,qBAAA;AAAA,iBACT;AAAA,gBACA;AAAA,kBACE,CAAA;AAAA,oBACE,MAAA;AAAA,oBACA;AAAA,sBACE,GAAG,GAAI,CAAA,KAAA;AAAA,qBACT;AAAA,oBACA,EAAE,6BAA6B,CAAA;AAAA,mBACjC;AAAA,kBACA,EAAE,MAAQ,EAAA,KAAI,EAAgB,GAAA,eAAA,CAAA,KAAA,KAAhB,mBAAuB,SAAS,CAAA;AAAA,iBAChD;AAAA,eACF;AAAA,cACA,CAAA;AAAA,gBACE,KAAA;AAAA,gBACA;AAAA,kBACE,KAAO,EAAA,qBAAA;AAAA,iBACT;AAAA,gBACA,CAAC,CAAE,CAAA,MAAA,EAAQ,EAAC,EAAG,EAAE,6BAA6B,CAAC,CAAG,EAAA,CAAA,CAAE,QAAQ,EAAC,EAAA,CAAG,qBAAgB,KAAhB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,QAAQ,CAAC,CAAA;AAAA,eAClG;AAAA,aACF,CAAA;AAAA,WACK,MAAA;AACL,YAAM,KAAA,CAAA,IAAA;AAAA,cACJ,CAAA;AAAA,gBACE,KAAA;AAAA,gBACA;AAAA,kBACE,KAAO,EAAA,2BAAA;AAAA,iBACT;AAAA,gBACA;AAAA,kBACE,CAAA;AAAA,oBACE,MAAA;AAAA,oBACA;AAAA,sBACE,GAAG,GAAI,CAAA,KAAA;AAAA,qBACT;AAAA,oBACA,EAAE,8BAA8B,CAAA;AAAA,mBAClC;AAAA,kBACA,EAAE,MAAQ,EAAA,IAAA,EAAA,CAAM,EAAgB,GAAA,eAAA,CAAA,KAAA,KAAhB,mBAAuB,OAAO,CAAA;AAAA,iBAChD;AAAA,eACF;AAAA,cACA,CAAA;AAAA,gBACE,KAAA;AAAA,gBACA;AAAA,kBACE,KAAO,EAAA,qBAAA;AAAA,iBACT;AAAA,gBACA;AAAA,kBACE,CAAA;AAAA,oBACE,MAAA;AAAA,oBACA;AAAA,sBACE,GAAG,GAAI,CAAA,KAAA;AAAA,qBACT;AAAA,oBACA,EAAE,2BAA2B,CAAA;AAAA,mBAC/B;AAAA,kBACA,EAAE,MAAQ,EAAA,IAAA,EAAA,CAAM,EAAgB,GAAA,eAAA,CAAA,KAAA,KAAhB,mBAAuB,IAAI,CAAA;AAAA,iBAC7C;AAAA,eACF;AAAA,cACA,CAAA;AAAA,gBACE,KAAA;AAAA,gBACA;AAAA,kBACE,KAAO,EAAA,qBAAA;AAAA,iBACT;AAAA,gBACA;AAAA,kBACE,CAAA;AAAA,oBACE,MAAA;AAAA,oBACA;AAAA,sBACE,GAAG,GAAI,CAAA,KAAA;AAAA,qBACT;AAAA,oBACA,EAAE,2BAA2B,CAAA;AAAA,mBAC/B;AAAA,kBACA,EAAE,MAAQ,EAAA,IAAA,EAAA,CAAM,EAAgB,GAAA,eAAA,CAAA,KAAA,KAAhB,mBAAuB,KAAK,CAAA;AAAA,iBAC9C;AAAA,eACF;AAAA,aACF,CAAA;AAAA,WACF;AAEA,UAAI,IAAA,CAAA,EAAA,GAAA,eAAA,CAAgB,KAAhB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,SAAW,EAAA;AACpC,YAAM,KAAA,CAAA,IAAA;AAAA,cACJ,CAAA;AAAA,gBACE,KAAA;AAAA,gBACA;AAAA,kBACE,KAAO,EAAA,qBAAA;AAAA,iBACT;AAAA,gBACA;AAAA,kBACE,CAAA;AAAA,oBACE,MAAA;AAAA,oBACA;AAAA,sBACE,GAAG,GAAI,CAAA,KAAA;AAAA,qBACT;AAAA,oBACA,EAAE,8BAA8B,CAAA;AAAA,mBAClC;AAAA,kBACA,EAAE,MAAQ,EAAA,KAAI,EAAgB,GAAA,eAAA,CAAA,KAAA,KAAhB,mBAAuB,SAAS,CAAA;AAAA,iBAChD;AAAA,eACF;AAAA,aACF,CAAA;AAAA,WACK,MAAA;AACL,YAAM,KAAA,CAAA,IAAA,CAAK,kBAAmB,CAAA,MAAM,CAAC,CAAA,CAAA;AAAA,WACvC;AAAA,SACK,MAAA;AACL,UAAM,KAAA,CAAA,IAAA,CAAK,kBAAmB,CAAA,MAAM,CAAC,CAAA,CAAA;AAAA,SACvC;AAEA,QAAA,IAAI,MAAM,cAAgB,EAAA;AACxB,UAAM,KAAA,CAAA,IAAA;AAAA,YACJ,CAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAO,EAAA,gCAAA;AAAA,eACT;AAAA,cACA;AAAA,gBACE,CAAA;AAAA,kBACE,MAAA;AAAA,kBACA;AAAA,oBACE,GAAG,GAAI,CAAA,KAAA;AAAA,mBACT;AAAA,kBACA,EAAE,+BAA+B,CAAA;AAAA,iBACnC;AAAA,gBACA,CAAE,CAAA,MAAA,EAAQ,IAAM,EAAA,UAAA,CAAW,KAAK,CAAA;AAAA,eAClC;AAAA,aACF;AAAA,YACA,CAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAO,EAAA,2BAAA;AAAA,eACT;AAAA,cACA;AAAA,gBACE,CAAA;AAAA,kBACE,MAAA;AAAA,kBACA;AAAA,oBACE,GAAG,GAAI,CAAA,KAAA;AAAA,mBACT;AAAA,kBACA,EAAE,iCAAiC,CAAA;AAAA,iBACrC;AAAA,gBACA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAG,EAAA,UAAA,CAAW,OAAO,CAAG,IAAA,CAAA,CAAA;AAAA,eAC1C;AAAA,aACF;AAAA,YACA,CAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAO,EAAA,2BAAA;AAAA,eACT;AAAA,cACA;AAAA,gBACE,CAAA;AAAA,kBACE,MAAA;AAAA,kBACA;AAAA,oBACE,GAAG,GAAI,CAAA,KAAA;AAAA,mBACT;AAAA,kBACA,EAAE,+BAA+B,CAAA;AAAA,iBACnC;AAAA,gBACA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAG,EAAA,UAAA,CAAW,KAAK,CAAG,IAAA,CAAA,CAAA;AAAA,eACxC;AAAA,aACF;AAAA,YACA,CAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAO,EAAA,2BAAA;AAAA,eACT;AAAA,cACA;AAAA,gBACE,CAAA;AAAA,kBACE,MAAA;AAAA,kBACA;AAAA,oBACE,GAAG,GAAI,CAAA,KAAA;AAAA,mBACT;AAAA,kBACA,EAAE,8BAA8B,CAAA;AAAA,iBAClC;AAAA,gBACA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAG,EAAA,UAAA,CAAW,IAAI,CAAG,IAAA,CAAA,CAAA;AAAA,eACvC;AAAA,aACF;AAAA,YACA,CAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAO,EAAA,qBAAA;AAAA,eACT;AAAA,cACA;AAAA,gBACE,CAAA;AAAA,kBACE,MAAA;AAAA,kBACA;AAAA,oBACE,GAAG,GAAI,CAAA,KAAA;AAAA,mBACT;AAAA,kBACA,EAAE,sCAAsC,CAAA;AAAA,iBAC1C;AAAA,gBACA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAG,EAAA,UAAA,CAAW,MAAM,CAAG,CAAA,CAAA,CAAA;AAAA,eACzC;AAAA,aACF;AAAA,WACF,CAAA;AAAA,SACK,MAAA;AACL,UAAM,KAAA,CAAA,IAAA,CAAK,kBAAmB,CAAA,MAAM,CAAC,CAAA,CAAA;AAAA,SACvC;AAEA,QAAA,IAAI,MAAM,mBAAqB,EAAA;AAC7B,UAAM,KAAA,CAAA,IAAA;AAAA,YACJ,CAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAO,EAAA,gCAAA;AAAA,eACT;AAAA,cACA,CAAC,CAAE,CAAA,MAAA,EAAQ,IAAM,EAAA,eAAA,CAAgB,EAAE,CAAC,CAAA;AAAA,aACtC;AAAA,YACA,CAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAO,EAAA,gCAAA;AAAA,eACT;AAAA,cACA,CAAC,CAAE,CAAA,MAAA,EAAQ,IAAM,EAAA,eAAA,CAAgB,GAAG,CAAC,CAAA;AAAA,aACvC;AAAA,WACF,CAAA;AAAA,SACK,MAAA;AACL,UAAM,KAAA,CAAA,IAAA,CAAK,kBAAmB,CAAA,MAAM,CAAC,CAAA,CAAA;AAAA,SACvC;AAEA,QAAA,IAAI,cAAc,KAAM,CAAA,OAAO,KAAK,KAAM,CAAA,aAAA,IAAiB,MAAM,aAAe,EAAA;AAC9E,UAAM,KAAA,CAAA,IAAA;AAAA,YACJ,CAAA;AAAA,cACE,SAAA;AAAA,cACA;AAAA,gBACE,GAAK,EAAA,UAAA;AAAA,gBACL,GAAG,KAAM,CAAA,OAAA;AAAA,eACX;AAAA,cACA,MAAM,CAAA,CAAE,QAAU,EAAA,IAAA,EAAO,aAAc,CAAA,KAAA,CAAM,OAAO,CAAA,IAAK,KAAM,CAAA,OAAA,CAAQ,GAAQ,IAAA,CAAA,CAAE,6BAA6B,CAAC,CAAA;AAAA,aACjH;AAAA,WACF,CAAA;AAAA,SACK,MAAA;AACL,UAAM,KAAA,CAAA,IAAA,CAAK,kBAAmB,CAAA,MAAM,CAAC,CAAA,CAAA;AAAA,SACvC;AAEA,QAAA,MAAM,aAAgB,GAAA,CAAA;AAAA,UACpB,KAAA;AAAA,UACA;AAAA,YACE,GAAK,EAAA,OAAA;AAAA,YACL,OAAO,CAAiB,cAAA,EAAA,aAAA,CAAc,QAAQ,KAAK,CAAA,CAAA,EAAI,MAAM,WAAW,CAAA,CAAA;AAAA,YACxE,KAAO,EAAA,SAAA;AAAA,YACP,MAAQ,EAAA,IAAA;AAAA,YACR,OAAS,EAAA,mBAAA;AAAA,WACX;AAAA,UACA,MAAM,KAAA;AAAA,SACR,CAAA;AAEA,QAAA,OAAO,CAAC,eAAA,IAAmB,KAAM,CAAA,gBAAA,GAAmB,CAAE,CAAA,QAAA,EAAU,EAAE,EAAA,EAAI,SAAU,CAAA,MAAA,CAAO,QAAS,EAAA,EAAG,aAAa,CAAI,GAAA,aAAA,CAAA;AAAA,OAC/G,MAAA;AACL,QAAA,OAAO,mBAAmB,MAAM,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}