UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 23.2 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/zoom-control/index.ts"],"sourcesContent":["import type { CSSProperties, VNode } from 'vue'\nimport { computed, defineComponent, getCurrentInstance, nextTick, ref, createCommentVNode, h, reactive, watch } from 'vue'\nimport type {\n VcCamera,\n VcComponentInternalInstance,\n VcZoomEvt,\n VcBtnTooltipProps,\n VcReadyObject,\n VcComponentPublicInstance\n} from 'casc-cesium-utils/types'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { $, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport { setViewerCamera } from 'casc-cesium-utils/cesium-helpers'\nimport { hMergeSlot } from 'casc-cesium-utils/private/render'\nimport { defaultProps, defaultOptions } from './defaultProps'\nimport type { VcBtnRef } from 'casc-cesium-components/ui'\nimport { VcBtn, VcIcon, VcTooltip } from 'casc-cesium-components/ui'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport useZoomControl from './use-zoom-control'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\n\nconst emits = {\n ...commonEmits,\n zoomEvt: (evt: VcZoomEvt) => true\n}\nexport const zoomControlProps = defaultProps\nexport default defineComponent({\n name: 'VcZoomControl',\n props: zoomControlProps,\n emits: emits,\n setup(props: VcZoomControlProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcZoomControl'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === undefined) {\n return\n }\n const { t } = useLocale()\n const { $services } = commonState\n const zoomControlState = useZoomControl(props, ctx, instance, $services)\n const positionState = usePosition(props, $services)\n const rootRef = ref<HTMLElement>(null)\n const zoomInRef = ref<VcBtnRef>(null)\n const zoomResetRef = ref<VcBtnRef>(null)\n const zoomOutRef = ref<VcBtnRef>(null)\n const parentInstance = getVcParentInstance(instance)\n const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n const canRender = ref(hasVcNavigation)\n const rootStyle = reactive<CSSProperties>({})\n\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 // computed\n const zoomOutOptions = computed(() => Object.assign({}, defaultOptions.zoomOutOptions, props.zoomOutOptions))\n const zoomInOptions = computed(() => Object.assign({}, defaultOptions.zoomInOptions, props.zoomInOptions))\n const zoomResetOptions = computed(() => Object.assign({}, defaultOptions.zoomResetOptions, props.zoomResetOptions))\n // methods\n instance.createCesiumObject = async () => {\n return new Promise((resolve, reject) => {\n canRender.value = true\n nextTick(() => {\n const { viewer } = $services\n if (props.overrideViewerCamera) {\n const resetView: VcCamera = props.defaultResetView\n setViewerCamera(viewer, resetView)\n }\n\n if (!hasVcNavigation && props.teleportToViewer) {\n const viewerElement = (viewer as any)._element\n viewerElement.appendChild($(rootRef))\n resolve($(rootRef))\n } else {\n resolve($(rootRef))\n }\n })\n })\n }\n instance.mount = async () => {\n updateRootStyle()\n const { viewer } = $services\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'mounted',\n target: $(rootRef)\n })\n return true\n }\n instance.unmount = async () => {\n const { viewer } = $services\n if (!hasVcNavigation) {\n const viewerElement = (viewer as any)._element\n viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n }\n\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'unmounted',\n target: $(rootRef)\n })\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.flexDirection = props.direction === 'vertical' ? 'column' : 'row'\n css.background = props.background\n css.borderRadius = props.borderRadius\n css.border = props.border\n\n if (!hasVcNavigation) {\n const zoomInTarget = $(zoomInRef)?.$el as HTMLElement\n const zoomResetTarget = $(zoomResetRef)?.$el as HTMLElement\n const zoomOutTarget = $(zoomOutRef)?.$el as HTMLElement\n let width = 0\n let height = 0\n\n if (zoomInTarget !== void 0) {\n const zoomInClientRect = zoomInTarget.getBoundingClientRect()\n if (props.direction === 'horizontal') {\n width += zoomInClientRect.width\n height = zoomInClientRect.height > height ? zoomInClientRect.height : height\n } else {\n height += zoomInClientRect.height\n width = zoomInClientRect.width > width ? zoomInClientRect.width : width\n }\n }\n\n if (zoomResetTarget !== void 0) {\n const zoomResetClientRect = zoomResetTarget.getBoundingClientRect()\n if (props.direction === 'horizontal') {\n width += zoomResetClientRect.width\n height = zoomResetClientRect.height > height ? zoomResetClientRect.height : height\n } else {\n height += zoomResetClientRect.height\n width = zoomResetClientRect.width > width ? zoomResetClientRect.width : width\n }\n }\n\n if (zoomOutTarget !== void 0) {\n const zoomOutClientRect = zoomOutTarget.getBoundingClientRect()\n if (props.direction === 'horizontal') {\n width += zoomOutClientRect.width\n height = zoomOutClientRect.height > height ? zoomOutClientRect.height : height\n } else {\n height += zoomOutClientRect.height\n width = zoomOutClientRect.width > width ? zoomOutClientRect.width : width\n }\n }\n\n css.width = `${width + 4}px`\n css.height = `${height + 4}px`\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 getContent = (options: VcBtnTooltipProps, type) => {\n let btnRef\n let tooltipRef\n let tip\n let onClick\n if (type === 'zoomIn') {\n btnRef = zoomInRef\n tooltipRef = zoomControlState.zoomInTooltipRef\n tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomInTip')\n onClick = zoomControlState.zoomIn\n } else if (type === 'zoomOut') {\n btnRef = zoomOutRef\n tooltipRef = zoomControlState.zoomOutTooltipRef\n tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomOutTip')\n onClick = zoomControlState.zoomOut\n } else if (type === 'zoomReset') {\n btnRef = zoomResetRef\n tooltipRef = zoomControlState.resetTooltipRef\n tip = options.tooltip?.tip || t('vc.navigation.zoomCotrol.zoomResetTip')\n onClick = zoomControlState.zoomReset\n }\n const inner: Array<VNode> = []\n\n inner.push(\n h(VcIcon, {\n name: options.icon,\n size: options.size\n })\n )\n inner.push(h('div', null, options.label))\n if (options.tooltip) {\n inner.push(\n h(\n VcTooltip,\n {\n ref: tooltipRef,\n ...(options.tooltip as any)\n },\n () => h('strong', null, tip)\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n const content = h(\n VcBtn,\n {\n class: `vc-${kebabCase(type)}`,\n ref: btnRef,\n size: options.size,\n flat: options.flat,\n stack: options.stack,\n round: options.round,\n dense: true,\n style: { color: options.color, background: options.background },\n onClick: onClick\n },\n () => hMergeSlot(ctx.slots.default, inner)\n )\n\n return content\n }\n\n Object.assign(instance.proxy, {\n zoomIn: () => zoomControlState.zoomIn,\n zoomOut: () => zoomControlState.zoomOut,\n zoomReset: () => zoomControlState.zoomReset\n })\n\n return () => {\n if (canRender.value) {\n const children: Array<VNode> = []\n children.push(h('li', null, getContent(zoomInOptions.value, 'zoomIn')))\n if (props.enableResetButton) {\n children.push(h('li', null, getContent(zoomResetOptions.value, 'zoomReset')))\n } else {\n children.push(createCommentVNode('v-if'))\n }\n children.push(h('li', null, getContent(zoomOutOptions.value, 'zoomOut')))\n\n return h(\n 'div',\n {\n ref: rootRef,\n class: `vc-zoom-control ${positionState.classes.value} ${props.customClass}`,\n style: rootStyle\n },\n h(\n 'ul',\n {\n class: 'vc-list'\n },\n children\n )\n )\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\nexport type VcZoomControlEmits = typeof emits\n\nexport type VcZoomControlProps = {\n /**\n * Specify the position of the VcZoomControl.\n * Default value: top-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 VcZoomControl horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify whether to enable the reset button.\n * Default value: true\n */\n enableResetButton?: boolean\n /**\n * Specify the zoom amount of zoom in and zoom out.\n * Default value: 2\n */\n zoomAmount?: number\n /**\n * Specify the time of the zoom-in and zoom-out process, in seconds.\n * Default value: 0.5\n */\n duration?: number\n /**\n * Specify the time to reset to the default camera position, in seconds.\n * Default value: 1.5\n */\n durationReset?: number\n /**\n * Specify the reset camera view.\n * Default value:\n * {\n * position: {\n * lng: 105,\n * lat: 30,\n * height: 19059568.5\n * }\n * }\n */\n defaultResetView?: VcCamera\n /**\n * Specify whether to override the camera attribute on the vc-viewer during initialization.\n * Default value: false\n */\n overrideViewerCamera?: boolean\n /**\n * Specifies the css background of the VcZoomControl.\n * Default value: #3f4854\n */\n background?: string\n /**\n * Specifies the css border of the VcZoomControl.\n * Default value: solid 1px rgba(255, 255, 255, 0.2)\n */\n border?: string\n /**\n * Specifies the css border radius of the VcZoomControl.\n * Default value: 100px\n */\n borderRadius?: string\n /**\n * Specify the direction of the VcZoomControl.\n * Default value: vertical\n */\n direction?: 'vertical' | 'horizontal'\n /**\n * Specify the zoom in parameters.\n */\n zoomInOptions?: VcBtnTooltipProps\n /**\n * Specify the zoom out parameters.\n */\n zoomOutOptions?: VcBtnTooltipProps\n /**\n * Specify the reset button parameters.\n */\n zoomResetOptions?: VcBtnTooltipProps\n /**\n * Specify the customClass of the vc-zoom-control.\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 VcZoomControl is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcZoomControl 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 VcZoomControl is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * \tTriggers when the VcZoomControl is operated.\n */\n onZoomEvt?: (evt: VcZoomEvt) => void\n}\n\nexport type VcZoomControlRef = VcComponentPublicInstance<VcZoomControlProps>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAWA,MAAM,KAAK,GAAG;AACd,EAAE,GAAG,WAAW;AAChB,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,IAAI;AACxB,CAAC,CAAC;AACU,MAAC,gBAAgB,GAAG,aAAa;AAC7C,kBAAe,eAAe,CAAC;AAC/B,EAAE,IAAI,EAAE,eAAe;AACvB,EAAE,KAAK,EAAE,gBAAgB;AACzB,EAAE,KAAK;AACP,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AACpB,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;AAC1C,IAAI,QAAQ,CAAC,WAAW,GAAG,eAAe,CAAC;AAC3C,IAAI,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxD,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;AAC9B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;AACtC,IAAI,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC7E,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxD,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACzD,IAAI,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAM,cAAc,CAAC;AACjH,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;AAC3C,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,KAAK;AAChC,MAAM,QAAQ,CAAC,MAAM;AACrB,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC/B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,KAAK,EAAE;AACP,MAAM,IAAI,EAAE,IAAI;AAChB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAClH,IAAI,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AAC/G,IAAI,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxH,IAAI,QAAQ,CAAC,kBAAkB,GAAG,YAAY;AAC9C,MAAM,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC9C,QAAQ,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,QAAQ,QAAQ,CAAC,MAAM;AACvB,UAAU,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACvC,UAAU,IAAI,KAAK,CAAC,oBAAoB,EAAE;AAC1C,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACrD,YAAY,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/C,WAAW;AACX,UAAU,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,gBAAgB,EAAE;AAC1D,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAClD,YAAY,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,WAAW,MAAM;AACjB,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,KAAK,GAAG,YAAY;AACjC,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,mBAAmB,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;AAC3E,QAAQ,IAAI,EAAE,QAAQ,CAAC,WAAW;AAClC,QAAQ,MAAM,EAAE,SAAS;AACzB,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,OAAO,GAAG,YAAY;AACnC,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5B,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC9C,QAAQ,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpF,OAAO;AACP,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,mBAAmB,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;AAC3E,QAAQ,IAAI,EAAE,QAAQ,CAAC,WAAW;AAClC,QAAQ,MAAM,EAAE,WAAW;AAC3B,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,MAAM,eAAe,GAAG,MAAM;AAClC,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACtB,MAAM,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5C,MAAM,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC,MAAM,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAC9B,MAAM,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,MAAM,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,KAAK,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC5E,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AACxC,MAAM,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAC5C,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5B,QAAQ,MAAM,YAAY,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7E,QAAQ,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AACjF,QAAQ,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAC7E,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC;AACvB,QAAQ,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE;AACrC,UAAU,MAAM,gBAAgB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;AACxE,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE;AAChD,YAAY,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC;AAC5C,YAAY,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;AACzF,WAAW,MAAM;AACjB,YAAY,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC;AAC9C,YAAY,KAAK,GAAG,gBAAgB,CAAC,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;AACpF,WAAW;AACX,SAAS;AACT,QAAQ,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE;AACxC,UAAU,MAAM,mBAAmB,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;AAC9E,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE;AAChD,YAAY,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC;AAC/C,YAAY,MAAM,GAAG,mBAAmB,CAAC,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/F,WAAW,MAAM;AACjB,YAAY,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC;AACjD,YAAY,KAAK,GAAG,mBAAmB,CAAC,KAAK,GAAG,KAAK,GAAG,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1F,WAAW;AACX,SAAS;AACT,QAAQ,IAAI,aAAa,KAAK,KAAK,CAAC,EAAE;AACtC,UAAU,MAAM,iBAAiB,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC1E,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE;AAChD,YAAY,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC;AAC7C,YAAY,MAAM,GAAG,iBAAiB,CAAC,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3F,WAAW,MAAM;AACjB,YAAY,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC;AAC/C,YAAY,KAAK,GAAG,iBAAiB,CAAC,KAAK,GAAG,KAAK,GAAG,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;AACtF,WAAW;AACX,SAAS;AACT,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACvC,QAAQ,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,WAAW,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACrF,UAAU,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAClD,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACtE,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;AAC7B,YAAY,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC;AACjD,WAAW;AACX,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtE,YAAY,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC;AAC5B,YAAY,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC;AACjD,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK;AAC1C,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACtB,MAAM,IAAI,MAAM,CAAC;AACjB,MAAM,IAAI,UAAU,CAAC;AACrB,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,IAAI,OAAO,CAAC;AAClB,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC7B,QAAQ,MAAM,GAAG,SAAS,CAAC;AAC3B,QAAQ,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;AACvD,QAAQ,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,oCAAoC,CAAC,CAAC;AAC9G,QAAQ,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC1C,OAAO,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;AACrC,QAAQ,MAAM,GAAG,UAAU,CAAC;AAC5B,QAAQ,UAAU,GAAG,gBAAgB,CAAC,iBAAiB,CAAC;AACxD,QAAQ,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,qCAAqC,CAAC,CAAC;AAC7G,QAAQ,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC3C,OAAO,MAAM,IAAI,IAAI,KAAK,WAAW,EAAE;AACvC,QAAQ,MAAM,GAAG,YAAY,CAAC;AAC9B,QAAQ,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC;AACtD,QAAQ,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,uCAAuC,CAAC,CAAC;AAC/G,QAAQ,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAC7C,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,EAAE,CAAC;AACvB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,OAAO,CAAC,CAAC,CAAC;AACV,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;AAChC,UAAU,GAAG,EAAE,UAAU;AACzB,UAAU,GAAG,OAAO,CAAC,OAAO;AAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1C,OAAO,MAAM;AACb,QAAQ,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE;AAC/B,QAAQ,KAAK,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,EAAE,MAAM;AACnB,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK;AAC5B,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK;AAC5B,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;AACvE,QAAQ,OAAO;AACf,OAAO,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACrD,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;AAClC,MAAM,MAAM,EAAE,MAAM,gBAAgB,CAAC,MAAM;AAC3C,MAAM,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO;AAC7C,MAAM,SAAS,EAAE,MAAM,gBAAgB,CAAC,SAAS;AACjD,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM;AACjB,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChF,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACrC,UAAU,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AACxF,SAAS,MAAM;AACf,UAAU,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAClF,QAAQ,OAAO,CAAC,CAAC,KAAK,EAAE;AACxB,UAAU,GAAG,EAAE,OAAO;AACtB,UAAU,KAAK,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AACtF,UAAU,KAAK,EAAE,SAAS;AAC1B,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;AACnB,UAAU,KAAK,EAAE,SAAS;AAC1B,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtB,OAAO,MAAM;AACb,QAAQ,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC1C,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;;;;"}