{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/dynamic/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 11:38:18\n * @LastEditTime: 2023-06-30 16:50:14\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\dynamic\\index.ts\n */\nimport { WatchStopHandle, PropType, toRaw, ComponentPublicInstance } from 'vue'\nimport { defineComponent, getCurrentInstance, createCommentVNode, onUnmounted, ref, watch } from 'vue'\nimport {\n  DynamicOverlayOpts,\n  SampledPosition,\n  TrackViewOpts,\n  VcComponentInternalInstance,\n  VcHeadingPitchRange,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables'\nimport { show } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, kebabCase } from '@vue-cesium/utils/util'\nimport DynamicOverlay from '@vue-cesium/shared/src/DynamicOverlay'\nimport {\n  getPolylineSegmentHeading,\n  getPolylineSegmentPitch,\n  makeCartesian3,\n  makeHeadingPitchRang,\n  makeJulianDate\n} from '@vue-cesium/utils/cesium-helpers'\nimport { cloneDeep, differenceBy, remove, find } from 'lodash-unified'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const dynamicOverlayProps = {\n  ...show,\n  name: {\n    type: String,\n    default: '__vc__overlay__dynamic__'\n  },\n  startTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  stopTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  currentTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  clockRange: {\n    type: Number as PropType<number | Cesium.ClockRange>,\n    default: 0\n  },\n  clockStep: {\n    type: Number as PropType<number | Cesium.ClockStep>,\n    default: 1\n  },\n  shouldAnimate: {\n    type: Boolean,\n    default: true\n  },\n  canAnimate: {\n    type: Boolean,\n    default: true\n  },\n  multiplier: {\n    type: Number,\n    default: 1.0\n  },\n  dynamicOverlays: {\n    type: Array as PropType<DynamicOverlayOpts[]>,\n    default: () => []\n  },\n  defaultInterval: {\n    type: Number,\n    default: 3\n  },\n  stopArrivedFlag: {\n    type: String as PropType<'time' | 'position' | 'both' | 'or'>,\n    default: 'time'\n  },\n  positionPrecision: {\n    type: Number,\n    default: 0.0000001\n  },\n  timePrecision: {\n    type: Number,\n    default: 0.01\n  }\n}\nconst emits = {\n  ...commonEmits,\n  'update:currentTime': (currentTime: Cesium.JulianDate) => true,\n  'update:shouldAnimate': (shouldAnimate: boolean) => true,\n  'update:canAnimate': (canAnimate: boolean) => true,\n  'update:clockRange': (clockRange: number | Cesium.ClockRange) => true,\n  'update:clockStep': (clockStep: number | Cesium.ClockStep) => true,\n  'update:multiplier': (multiplier: number) => true,\n  'update:startTime': (startTime: Cesium.JulianDate) => true,\n  'update:stopTime': (stopTime: Cesium.JulianDate) => true,\n  onStop: (clock: Cesium.Clock) => true,\n  stopArrived: (e: {\n    overlay: DynamicOverlay\n    position: SampledPosition\n    offset: Cesium.HeadingPitchRange\n    clock: Cesium.Clock\n    indexOverlay: number\n    indexPosition: number\n  }) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayDynamic',\n  props: dynamicOverlayProps,\n  emits: emits,\n  setup(props: VcOverlayDynamicProps, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayDynamic'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const overlays = ref<Array<DynamicOverlay>>([])\n    const restoreClockOpts = ref<any>({})\n    const { emit } = ctx\n    const trackingOverlay = ref<DynamicOverlay>(null)\n    const trackView = ref<TrackViewOpts>(null)\n    let lastOffset\n    let lastPosition\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.show = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.name,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.name = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.startTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.startTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.stopTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.stopTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.currentTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.currentTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.multiplier,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.multiplier = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.clockStep,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockStep = val\n          }\n        }\n      )\n    )\n    unwatchFns.push(\n      watch(\n        () => props.clockRange,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockRange = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.canAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.canAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.shouldAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.shouldAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.dynamicOverlays),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              // 忽略 model 的 nodeTransformations\n              // 该属性不支持动态响应\n              const testReplace = (key, value) => {\n                if (key !== 'nodeTransformations' && key !== '_definitionChanged') {\n                  return value\n                }\n              }\n\n              if (JSON.stringify(options, testReplace) !== JSON.stringify(oldOptions, testReplace)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(v => {\n              const modifyEntity = datasource.entities.getById(v.oldOptions.id)\n              if (Cesium.defined(modifyEntity)) {\n                if (v.oldOptions.id === v.newOptions.id) {\n                  modifyEntity &&\n                    Object.keys(v.newOptions).forEach(prop => {\n                      if (v.oldOptions[prop] !== v.newOptions[prop]) {\n                        modifyEntity[prop] = commonState.transformProp(prop, v.newOptions[prop])\n                      }\n                    })\n                } else {\n                  // 改了 id\n                  if (modifyEntity) {\n                    datasource.entities.remove(modifyEntity)\n                    remove(overlays.value, overlay => overlay.id === modifyEntity.id)\n                    const entityOptions = v.newOptions\n                    addDynamicOverlays(datasource, [entityOptions])\n                  }\n                }\n\n                const dynamicOverlay = find(overlays.value, v => v.id === modifyEntity.id)\n                if (Cesium.defined(dynamicOverlay)) {\n                  const oldSampledPositions = v.oldOptions.sampledPositions\n                  const newSampledPositions = v.newOptions.sampledPositions\n                  const sampledPositionAdds: any = differenceBy(newSampledPositions, oldSampledPositions, 'id')\n                  const sampledPositionDeletes: any = differenceBy(oldSampledPositions, newSampledPositions, 'id')\n\n                  sampledPositionDeletes.forEach(sampledPosition => {\n                    sampledPosition.time && dynamicOverlay._sampledPosition.removeSample(sampledPosition.time)\n                  })\n\n                  sampledPositionAdds.forEach((sampledPosition: SampledPosition) => {\n                    if (sampledPosition.time) {\n                      dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n                    } else if (sampledPosition.interval) {\n                      dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n                    }\n                  })\n                }\n              }\n            })\n          } else {\n            const adds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deletedEntities: Array<Cesium.Entity> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deleteEntity = datasource.entities.getById(deletes[i].id)\n              deletedEntities.push(deleteEntity!)\n            }\n            deletedEntities.forEach(v => {\n              datasource.entities.remove(v)\n              remove(overlays.value, overlay => overlay.id === v.id)\n            })\n\n            addDynamicOverlays(datasource, adds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Cesium.CustomDataSource(props.name)\n    }\n\n    const onClockTick = (clock: Cesium.Clock) => {\n      let listener = getInstanceListener(instance, 'update:currentTime')\n      !makeJulianDate(props.currentTime).equalsEpsilon(clock.currentTime, 0.001) && listener && emit('update:currentTime', clock.currentTime)\n\n      listener = getInstanceListener(instance, 'update:shouldAnimate')\n      props.shouldAnimate !== clock.shouldAnimate && listener && emit('update:shouldAnimate', clock.shouldAnimate)\n\n      listener = getInstanceListener(instance, 'update:canAnimate')\n      props.canAnimate !== clock.canAnimate && listener && emit('update:canAnimate', clock.canAnimate)\n\n      listener = getInstanceListener(instance, 'update:clockRange')\n      props.clockRange !== clock.clockRange && listener && emit('update:clockRange', clock.clockRange)\n\n      listener = getInstanceListener(instance, 'update:clockStep')\n      props.clockStep !== clock.clockStep && listener && emit('update:clockStep', clock.clockStep)\n\n      listener = getInstanceListener(instance, 'update:multiplier')\n      props.multiplier !== clock.multiplier && listener && emit('update:multiplier', clock.multiplier)\n\n      listener = getInstanceListener(instance, 'update:startTime')\n      !makeJulianDate(props.startTime).equalsEpsilon(clock.startTime, 0.001) && listener && emit('update:startTime', clock.startTime)\n\n      listener = getInstanceListener(instance, 'update:stopTime')\n      !makeJulianDate(props.stopTime).equalsEpsilon(clock.stopTime, 0.001) && listener && emit('update:stopTime', clock.stopTime)\n\n      setTrackView(clock)\n\n      const { JulianDate, Cartesian3 } = Cesium\n      listener = getInstanceListener(instance, 'stopArrived')\n      if (listener && props.shouldAnimate) {\n        for (let i = 0; i < overlays.value.length; i++) {\n          const overlay: DynamicOverlay = overlays.value[i]\n          const currentPosition = overlay._sampledPosition.getValue(clock.currentTime)\n\n          const dynamicOverlayOpts = props.dynamicOverlays[i]\n          for (let j = 0; j < dynamicOverlayOpts.sampledPositions.length; j++) {\n            const sampledPosition = dynamicOverlayOpts.sampledPositions[j]\n            const stopPostion = makeCartesian3(sampledPosition.position) as Cesium.Cartesian3\n            const stopTime = makeJulianDate(sampledPosition.time)\n\n            const positionFlag = Cartesian3.equalsEpsilon(currentPosition, stopPostion, props.positionPrecision)\n            const timeFlag = JulianDate.equalsEpsilon(clock.currentTime, stopTime, props.timePrecision)\n            let arrivedFlag = false\n            switch (props.stopArrivedFlag) {\n              case 'time':\n                arrivedFlag = timeFlag\n                break\n              case 'position':\n                arrivedFlag = positionFlag\n                break\n              case 'both':\n                arrivedFlag = timeFlag && positionFlag\n                break\n              case 'or':\n                arrivedFlag = timeFlag || positionFlag\n                break\n            }\n\n            if (arrivedFlag) {\n              emit('stopArrived', {\n                overlay,\n                position: sampledPosition,\n                offset: lastOffset,\n                clock,\n                indexOverlay: i,\n                indexPosition: j\n              })\n              break\n            }\n          }\n        }\n      }\n    }\n\n    const addDynamicOverlays = (datasource: Cesium.CustomDataSource, dynamicOverlays: Array<DynamicOverlayOpts>) => {\n      for (let i = 0; i < dynamicOverlays.length; i++) {\n        const entityOptions = dynamicOverlays[i] as any\n        const entityOptionsTransform = commonState.transformProps<DynamicOverlayOpts>(entityOptions)\n        const dynamicOverlay = new DynamicOverlay(entityOptionsTransform)\n        overlays.value.push(dynamicOverlay)\n        const entity = datasource.entities.add(dynamicOverlay._entity)\n        entityOptionsTransform.sampledPositions.forEach((sampledPosition: SampledPosition) => {\n          if (sampledPosition.time) {\n            dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n          } else if (sampledPosition.interval) {\n            sampledPosition.time = dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n          }\n        })\n        entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n        addCustomProperty(entity, entityOptionsTransform, ['id'])\n      }\n    }\n\n    instance.mount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      datasource.show = props.show\n      addDynamicOverlays(datasource, props.dynamicOverlays)\n\n      return viewer.dataSources.add(datasource).then(() => {\n        restoreClockOpts.value.startTime = viewer.clock.startTime\n        restoreClockOpts.value.stopTime = viewer.clock.stopTime\n        restoreClockOpts.value.currentTime = viewer.clock.currentTime\n        restoreClockOpts.value.multiplier = viewer.clock.multiplier\n        restoreClockOpts.value.clockStep = viewer.clock.clockStep\n        restoreClockOpts.value.clockRange = viewer.clock.clockRange\n        restoreClockOpts.value.canAnimate = viewer.clock.canAnimate\n        restoreClockOpts.value.shouldAnimate = viewer.clock.shouldAnimate\n\n        if (props.startTime) {\n          viewer.clock.startTime = makeJulianDate(props.startTime)\n        }\n        if (props.stopTime) {\n          viewer.clock.stopTime = makeJulianDate(props.stopTime)\n        }\n        if (props.currentTime) {\n          viewer.clock.currentTime = makeJulianDate(props.currentTime)\n        }\n\n        viewer.clock.multiplier = props.multiplier\n        viewer.clock.clockStep = props.clockStep\n        viewer.clock.clockRange = props.clockRange\n        viewer.clock.canAnimate = false\n        viewer.clock.shouldAnimate = props.shouldAnimate\n\n        viewer.clock.onTick.addEventListener(onClockTick)\n        const listener = getInstanceListener(instance, 'onStop')\n        listener && viewer.clock.onStop.addEventListener(listener)\n        return true\n      })\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      viewer.dataSources.remove(datasource, true)\n\n      viewer.clock.startTime = restoreClockOpts.value.startTime\n      viewer.clock.stopTime = restoreClockOpts.value.stopTime\n      viewer.clock.multiplier = restoreClockOpts.value.multiplier\n      viewer.clock.clockStep = restoreClockOpts.value.clockStep\n      viewer.clock.clockRange = restoreClockOpts.value.clockRange\n      viewer.clock.canAnimate = restoreClockOpts.value.canAnimate\n      viewer.clock.shouldAnimate = restoreClockOpts.value.shouldAnimate\n      overlays.value.length = 0\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      const listener = getInstanceListener(instance, 'onStop')\n      listener && viewer.clock.onStop.removeEventListener(listener)\n      trackingOverlay.value && (viewer.trackedEntity = undefined)\n      return true\n    }\n\n    const setTrackView = (clock: Cesium.Clock) => {\n      if (trackView.value && trackingOverlay.value) {\n        const { viewer } = $services\n\n        if (Cesium.JulianDate.greaterThan(clock.currentTime, clock.stopTime)) {\n          // viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n          // if (lastOffset && lastPosition) {\n          //   viewer.camera.lookAt(lastPosition, lastOffset)\n          // }\n          trackingOverlay.value = null\n          return\n        }\n        const position = trackingOverlay.value._sampledPosition.getValue(clock.currentTime)\n        let offset: Cesium.HeadingPitchRange = new Cesium.HeadingPitchRange()\n        switch (trackView.value.mode) {\n          case 'TP':\n            offset.heading = 0\n            offset.pitch = trackView.value?.offset?.pitch || Cesium.Math.toRadians(-90)\n            offset.range = trackView.value?.offset?.range || 1000\n            break\n          case 'FP': {\n            const nextTickTime = Cesium.JulianDate.addSeconds(clock.currentTime, 1 / 60, new Cesium.JulianDate())\n            const nextTickPosition = trackingOverlay.value._sampledPosition.getValue(nextTickTime) || position\n\n            if (position.equals(nextTickPosition) && lastOffset) {\n              offset = lastOffset\n            } else {\n              offset.heading = Cesium.Math.toRadians(getPolylineSegmentHeading(position, nextTickPosition))\n              offset.pitch = (trackView.value?.offset?.pitch || Cesium.Math.toRadians(-45.0)) + getPolylineSegmentPitch(position, nextTickPosition)\n              offset.range = trackView.value?.offset?.range || 500\n            }\n\n            break\n          }\n          case 'CUSTOM':\n            offset = makeHeadingPitchRang(trackView.value.offset)\n        }\n        lastOffset = offset\n        lastPosition = position\n        viewer.camera.lookAt(position, offset)\n      }\n    }\n\n    const trackOverlay = (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => {\n      const { viewer } = $services\n      trackViewOpts = trackViewOpts || {\n        mode: trackView.value === null ? 'FP' : 'FREE'\n      }\n\n      if (trackViewOpts.mode === 'FREE') {\n        viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n        if (trackingOverlay.value) {\n          viewer.trackedEntity = undefined\n          trackingOverlay.value = null\n          trackView.value = null\n        }\n        return\n      }\n\n      trackingOverlay.value = getOverlay(trackOverlay)\n\n      viewer.trackedEntity = toRaw(trackingOverlay.value._entity)\n      if (trackViewOpts.mode === 'TRACKED') {\n        if (trackViewOpts?.viewFrom?.length) {\n          viewer.trackedEntity.viewFrom = new Cesium.Cartesian3(\n            trackViewOpts.viewFrom[0],\n            trackViewOpts.viewFrom[1],\n            trackViewOpts.viewFrom[2]\n          ) as any\n        }\n        trackView.value = null\n      } else {\n        trackView.value = trackViewOpts\n      }\n    }\n\n    const getOverlay = (e: number | string | DynamicOverlay) => {\n      if (e instanceof DynamicOverlay) {\n        return e\n      } else if (typeof e === 'string') {\n        return find(overlays.value, v => v.id === e)\n      } else if (typeof e === 'number') {\n        return overlays.value[e]\n      } else {\n        return overlays.value[0]\n      }\n    }\n\n    const flyToOverlay = (\n      overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n      options?: {\n        duration?: number\n        maximumHeight?: number\n        offset?: VcHeadingPitchRange\n      }\n    ) => {\n      const { viewer } = $services\n      if (trackingOverlay.value) {\n        viewer.trackedEntity = undefined\n        trackingOverlay.value = null\n      }\n      let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n      if (Cesium.defined(overlays)) {\n        if (Array.isArray(overlays)) {\n          if (overlays.length) {\n            const targets: Array<Cesium.Entity> = []\n            overlays.forEach(viewOverlay => {\n              const target = toRaw(getOverlay(viewOverlay)._entity)\n              targets.push(target)\n            })\n            target = targets\n          } else {\n            target = instance.cesiumObject as Cesium.CustomDataSource\n          }\n        } else {\n          target = toRaw(getOverlay(overlays)._entity)\n        }\n      } else {\n        target = instance.cesiumObject as Cesium.CustomDataSource\n      }\n\n      options = options || {\n        duration: 3.0\n      }\n\n      if (Cesium.defined(options.offset)) {\n        options.offset = makeHeadingPitchRang(options.offset)\n      }\n\n      return viewer.flyTo(target, options as any)\n    }\n\n    const zoomToOverlay = (overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>, offset?: VcHeadingPitchRange) => {\n      const { viewer } = $services\n      if (trackingOverlay.value) {\n        viewer.trackedEntity = undefined\n        trackingOverlay.value = null\n      }\n      let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n      if (Cesium.defined(overlays)) {\n        if (Array.isArray(overlays)) {\n          if (overlays.length) {\n            const targets: Array<Cesium.Entity> = []\n            overlays.forEach(viewOverlay => {\n              const target = toRaw(getOverlay(viewOverlay)._entity)\n              targets.push(target)\n            })\n            target = targets\n          } else {\n            target = instance.cesiumObject as Cesium.CustomDataSource\n          }\n        } else {\n          target = toRaw(getOverlay(overlays)._entity)\n        }\n      } else {\n        target = instance.cesiumObject as Cesium.CustomDataSource\n      }\n\n      return viewer.zoomTo(target, Cesium.defined(offset) ? makeHeadingPitchRang(offset) : undefined)\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    // expose public methods\n    Object.assign(instance.proxy, { getOverlays: () => overlays.value, getOverlay, trackOverlay, zoomToOverlay, flyToOverlay })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport interface VcOverlayDynamicProps {\n  /**\n   * Specify whether to display the CustomDataSource that hosts the dynamic overlays.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the name of the CustomDataSource.\n   * Default value: __vc__overlay__dynamic__\n   */\n  name?: string\n  /**\n   * Specify the start time of the clock.\n   */\n  startTime?: Cesium.JulianDate | string | Date\n  /**\n   * Specify the stop time of the clock.\n   */\n  stopTime?: Cesium.JulianDate | string | Date\n  /**\n   * Specify the current time.\n   */\n  currentTime?: Cesium.JulianDate | string | Date\n  /**\n   * Determines how the clock should behave when Clock#startTime or Clock#stopTime is reached.\n   * Default value: 0\n   */\n  clockRange?: number | Cesium.ClockRange\n  /**\n   * Determines if calls to Clock#tick are frame dependent or system clock dependent.\n   * Default value: 1\n   */\n  clockStep?: number | Cesium.ClockStep\n  /**\n   * Indicates whether Clock#tick should attempt to advance time. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n   * Default value: true\n   */\n  shouldAnimate?: boolean\n  /**\n   * Indicates whether Clock#tick can advance time. This could be false if data is being buffered, for example. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n   * Default value: true\n   */\n  canAnimate?: boolean\n  /**\n   * Determines how much time advances when Clock#tick is called, negative values allow for advancing backwards.\n   * Default value: 1.0\n   */\n  multiplier?: number\n  /**\n   * Specify the dynamicOverlays array.\n   */\n  dynamicOverlays?: Array<DynamicOverlayOpts>\n  /**\n   * Specify the default refresh interval of the default position information, and it is available to change the position of the dynamic overlays in real time.\n   * Default value: 3.0\n   */\n  defaultInterval?: number\n  /**\n   * Specify the decision flag for the stopArrived event.\n   * Default value: time\n   */\n  stopArrivedFlag?: 'time' | 'position' | 'both' | 'or'\n  /**\n   * Specify position accuracy.\n   * Default value: 0.0000001\n   */\n  positionPrecision?: number\n  /**\n   * Specify time accuracy.\n   * 0.01\n   */\n  timePrecision?: number\n  /**\n   * Triggers before the VcOverlayDynamic is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayDynamic 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 VcOverlayDynamic is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when Clock#stopTime is reached.\n   */\n  onOnStop?: (clock: Cesium.Clock) => void\n  /**\n   * Triggers when a stop is reached.\n   */\n  onStopArrived?: (e: {\n    overlay: DynamicOverlay\n    position: SampledPosition\n    offset: Cesium.HeadingPitchRange\n    clock: Cesium.Clock\n    indexOverlay: number\n    indexPosition: number\n  }) => void\n  /**\n   * Triggers when currentTime changed.\n   */\n  'onUpdate:currentTime'?: (currentTime: Cesium.JulianDate) => void\n  /**\n   * Triggers when shouldAnimate changed.\n   */\n  'onUpdate:shouldAnimate'?: (shouldAnimate: boolean) => void\n  /**\n   * Triggers when canAnimate changed.\n   */\n  'onUpdate:canAnimate'?: (canAnimate: boolean) => void\n  /**\n   * Triggers when clockRange changed.\n   */\n  'onUpdate:clockRange'?: (clockRange: number | Cesium.ClockRange) => void\n  /**\n   * Triggers when clockStep changed.\n   */\n  'onUpdate:clockStep'?: (clockStep: number | Cesium.ClockStep) => void\n  /**\n   * Triggers when multiplier changed.\n   */\n  'onUpdate:multiplier'?: (multiplier: number) => void\n  /**\n   * Triggers when startTime changed.\n   */\n  'onUpdate:startTime'?: (startTime: Cesium.JulianDate) => void\n  /**\n   * Triggers when stopTime changed.\n   */\n  'onUpdate:stopTime'?: (stopTime: Cesium.JulianDate) => void\n}\n\nexport type VcOverlayDynamicEmits = typeof emits\n\nexport interface VcOverlayDynamicRef extends ComponentPublicInstance<VcOverlayDynamicProps> {\n  /**\n   * Get overlay by id or index.\n   * @param e id or index.\n   */\n  getOverlay: (e: number | string | DynamicOverlay) => DynamicOverlay\n  /**\n   * Get overlays.\n   */\n  getOverlays: () => Array<DynamicOverlay>\n  /**\n   * Track dynamic overlay.\n   * @param trackOverlay tracked overlay or tracked overlay's id or index. If not passed, the first overlay is tracked by default.\n   * @param trackViewOpts view parameters.\n   */\n  trackOverlay: (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => void\n  /**\n   * Zoom to dynamic overlay(s).\n   * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n   * @param offset The camera offset to zoom to the overlay.\n   */\n  zoomToOverlay: (\n    overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n    offset?: VcHeadingPitchRange\n  ) => Promise<boolean>\n\n  /**\n   * Fly to dynamic overlay(s).\n   * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n   * @param offset The camera offset to zoom to the overlay.\n   */\n  flyToOverlay: (\n    overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n    options?: {\n      duration?: number\n      maximumHeight?: number\n      offset?: VcHeadingPitchRange\n    }\n  ) => Promise<boolean>\n}\n"],"names":["v","trackOverlay","overlays","target"],"mappings":";;;;;;;;;;;;AAiCO,MAAM,mBAAsB,GAAA;AAAA,EACjC,GAAG,IAAA;AAAA,EACH,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,0BAAA;AAAA,GACX;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,CAAC,MAAQ,EAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,GAC7B;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,CAAC,MAAQ,EAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,GAC7B;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,CAAC,MAAQ,EAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,GAC7B;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AACF,EAAA;AACA,MAAM,KAAQ,GAAA;AAAA,EACZ,GAAG,WAAA;AAAA,EACH,oBAAA,EAAsB,CAAC,WAAmC,KAAA,IAAA;AAAA,EAC1D,sBAAA,EAAwB,CAAC,aAA2B,KAAA,IAAA;AAAA,EACpD,mBAAA,EAAqB,CAAC,UAAwB,KAAA,IAAA;AAAA,EAC9C,mBAAA,EAAqB,CAAC,UAA2C,KAAA,IAAA;AAAA,EACjE,kBAAA,EAAoB,CAAC,SAAyC,KAAA,IAAA;AAAA,EAC9D,mBAAA,EAAqB,CAAC,UAAuB,KAAA,IAAA;AAAA,EAC7C,kBAAA,EAAoB,CAAC,SAAiC,KAAA,IAAA;AAAA,EACtD,iBAAA,EAAmB,CAAC,QAAgC,KAAA,IAAA;AAAA,EACpD,MAAA,EAAQ,CAAC,KAAwB,KAAA,IAAA;AAAA,EACjC,WAAA,EAAa,CAAC,CAOR,KAAA,IAAA;AACR,CAAA,CAAA;AACA,qBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,kBAAA;AAAA,EACN,KAAO,EAAA,mBAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA,CAAM,OAA8B,GAAK,EAAA;AAEvC,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,IAAA,QAAA,CAAS,WAAc,GAAA,kBAAA,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,EAAE,WAAc,GAAA,WAAA,CAAA;AACtB,IAAM,MAAA,QAAA,GAAW,GAA2B,CAAA,EAAE,CAAA,CAAA;AAC9C,IAAM,MAAA,gBAAA,GAAmB,GAAS,CAAA,EAAE,CAAA,CAAA;AACpC,IAAM,MAAA,EAAE,MAAS,GAAA,GAAA,CAAA;AACjB,IAAM,MAAA,eAAA,GAAkB,IAAoB,IAAI,CAAA,CAAA;AAChD,IAAM,MAAA,SAAA,GAAY,IAAmB,IAAI,CAAA,CAAA;AACzC,IAAI,IAAA,UAAA,CAAA;AACJ,IAAI,IAAA,YAAA,CAAA;AAEJ,IAAA,IAAI,aAAqC,EAAC,CAAA;AAC1C,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAA,MAAM,aAAa,QAAS,CAAA,YAAA,CAAA;AAC5B,UAAA,UAAA,KAAe,WAAW,IAAO,GAAA,GAAA,CAAA,CAAA;AAAA,SACnC;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAA,MAAM,aAAa,QAAS,CAAA,YAAA,CAAA;AAC5B,UAAA,UAAA,KAAe,WAAW,IAAO,GAAA,GAAA,CAAA,CAAA;AAAA,SACnC;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,SAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAA,IAAI,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAA,IAAK,GAAK,EAAA;AACjC,YAAO,MAAA,CAAA,KAAA,CAAM,SAAY,GAAA,cAAA,CAAe,GAAG,CAAA,CAAA;AAAA,WAC7C;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,QAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAA,IAAI,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAA,IAAK,GAAK,EAAA;AACjC,YAAO,MAAA,CAAA,KAAA,CAAM,QAAW,GAAA,cAAA,CAAe,GAAG,CAAA,CAAA;AAAA,WAC5C;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,WAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAA,IAAI,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAA,IAAK,GAAK,EAAA;AACjC,YAAO,MAAA,CAAA,KAAA,CAAM,WAAc,GAAA,cAAA,CAAe,GAAG,CAAA,CAAA;AAAA,WAC/C;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,UAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAI,IAAA,MAAA,CAAO,OAAQ,CAAA,MAAM,CAAG,EAAA;AAC1B,YAAA,MAAA,CAAO,MAAM,UAAa,GAAA,GAAA,CAAA;AAAA,WAC5B;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,SAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAI,IAAA,MAAA,CAAO,OAAQ,CAAA,MAAM,CAAG,EAAA;AAC1B,YAAA,MAAA,CAAO,MAAM,SAAY,GAAA,GAAA,CAAA;AAAA,WAC3B;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,UAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAI,IAAA,MAAA,CAAO,OAAQ,CAAA,MAAM,CAAG,EAAA;AAC1B,YAAA,MAAA,CAAO,MAAM,UAAa,GAAA,GAAA,CAAA;AAAA,WAC5B;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,UAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAI,IAAA,MAAA,CAAO,OAAQ,CAAA,MAAM,CAAG,EAAA;AAC1B,YAAA,MAAA,CAAO,MAAM,UAAa,GAAA,GAAA,CAAA;AAAA,WAC5B;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,aAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,UAAI,IAAA,MAAA,CAAO,OAAQ,CAAA,MAAM,CAAG,EAAA;AAC1B,YAAA,MAAA,CAAO,MAAM,aAAgB,GAAA,GAAA,CAAA;AAAA,WAC/B;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAW,UAAA,CAAA,IAAA;AAAA,MACT,KAAA;AAAA,QACE,MAAM,SAAU,CAAA,KAAA,CAAM,eAAe,CAAA;AAAA,QACrC,CAAC,QAAQ,MAAW,KAAA;AAClB,UAAI,IAAA,CAAC,SAAS,OAAS,EAAA;AACrB,YAAA,OAAA;AAAA,WACF;AACA,UAAA,MAAM,aAAa,QAAS,CAAA,YAAA,CAAA;AAC5B,UAAI,IAAA,MAAA,CAAO,MAAW,KAAA,MAAA,CAAO,MAAQ,EAAA;AAGnC,YAAA,MAAM,WAAuB,EAAC,CAAA;AAC9B,YAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,CAAO,QAAQ,CAAK,EAAA,EAAA;AACtC,cAAM,MAAA,OAAA,GAAU,OAAO,CAAC,CAAA,CAAA;AACxB,cAAM,MAAA,UAAA,GAAa,OAAO,CAAC,CAAA,CAAA;AAI3B,cAAM,MAAA,WAAA,GAAc,CAAC,GAAA,EAAK,KAAU,KAAA;AAClC,gBAAI,IAAA,GAAA,KAAQ,qBAAyB,IAAA,GAAA,KAAQ,oBAAsB,EAAA;AACjE,kBAAO,OAAA,KAAA,CAAA;AAAA,iBACT;AAAA,eACF,CAAA;AAEA,cAAI,IAAA,IAAA,CAAK,UAAU,OAAS,EAAA,WAAW,MAAM,IAAK,CAAA,SAAA,CAAU,UAAY,EAAA,WAAW,CAAG,EAAA;AACpF,gBAAA,QAAA,CAAS,IAAK,CAAA;AAAA,kBACZ,UAAY,EAAA,OAAA;AAAA,kBACZ,UAAA;AAAA,iBACD,CAAA,CAAA;AAAA,eACH;AAAA,aACF;AAEA,YAAA,QAAA,CAAS,QAAQ,CAAK,CAAA,KAAA;AACpB,cAAA,MAAM,eAAe,UAAW,CAAA,QAAA,CAAS,OAAQ,CAAA,CAAA,CAAE,WAAW,EAAE,CAAA,CAAA;AAChE,cAAI,IAAA,MAAA,CAAO,OAAQ,CAAA,YAAY,CAAG,EAAA;AAChC,gBAAA,IAAI,CAAE,CAAA,UAAA,CAAW,EAAO,KAAA,CAAA,CAAE,WAAW,EAAI,EAAA;AACvC,kBAAA,YAAA,IACE,OAAO,IAAK,CAAA,CAAA,CAAE,UAAU,CAAA,CAAE,QAAQ,CAAQ,IAAA,KAAA;AACxC,oBAAA,IAAI,EAAE,UAAW,CAAA,IAAI,MAAM,CAAE,CAAA,UAAA,CAAW,IAAI,CAAG,EAAA;AAC7C,sBAAa,YAAA,CAAA,IAAI,IAAI,WAAY,CAAA,aAAA,CAAc,MAAM,CAAE,CAAA,UAAA,CAAW,IAAI,CAAC,CAAA,CAAA;AAAA,qBACzE;AAAA,mBACD,CAAA,CAAA;AAAA,iBACE,MAAA;AAEL,kBAAA,IAAI,YAAc,EAAA;AAChB,oBAAW,UAAA,CAAA,QAAA,CAAS,OAAO,YAAY,CAAA,CAAA;AACvC,oBAAA,MAAA,CAAO,SAAS,KAAO,EAAA,CAAA,OAAA,KAAW,OAAQ,CAAA,EAAA,KAAO,aAAa,EAAE,CAAA,CAAA;AAChE,oBAAA,MAAM,gBAAgB,CAAE,CAAA,UAAA,CAAA;AACxB,oBAAmB,kBAAA,CAAA,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA,CAAA;AAAA,mBAChD;AAAA,iBACF;AAEA,gBAAM,MAAA,cAAA,GAAiB,KAAK,QAAS,CAAA,KAAA,EAAO,CAAAA,EAAKA,KAAAA,EAAAA,CAAE,EAAO,KAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACzE,gBAAI,IAAA,MAAA,CAAO,OAAQ,CAAA,cAAc,CAAG,EAAA;AAClC,kBAAM,MAAA,mBAAA,GAAsB,EAAE,UAAW,CAAA,gBAAA,CAAA;AACzC,kBAAM,MAAA,mBAAA,GAAsB,EAAE,UAAW,CAAA,gBAAA,CAAA;AACzC,kBAAA,MAAM,mBAA2B,GAAA,YAAA,CAAa,mBAAqB,EAAA,mBAAA,EAAqB,IAAI,CAAA,CAAA;AAC5F,kBAAA,MAAM,sBAA8B,GAAA,YAAA,CAAa,mBAAqB,EAAA,mBAAA,EAAqB,IAAI,CAAA,CAAA;AAE/F,kBAAA,sBAAA,CAAuB,QAAQ,CAAmB,eAAA,KAAA;AAChD,oBAAA,eAAA,CAAgB,IAAQ,IAAA,cAAA,CAAe,gBAAiB,CAAA,YAAA,CAAa,gBAAgB,IAAI,CAAA,CAAA;AAAA,mBAC1F,CAAA,CAAA;AAED,kBAAoB,mBAAA,CAAA,OAAA,CAAQ,CAAC,eAAqC,KAAA;AAChE,oBAAA,IAAI,gBAAgB,IAAM,EAAA;AACxB,sBAAA,cAAA,CAAe,WAAY,CAAA,eAAA,CAAgB,QAAU,EAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AAAA,qBAC3E,MAAA,IAAW,gBAAgB,QAAU,EAAA;AACnC,sBAAA,cAAA,CAAe,YAAY,eAAgB,CAAA,QAAA,EAAU,eAAgB,CAAA,QAAA,IAAY,MAAM,eAAe,CAAA,CAAA;AAAA,qBACxG;AAAA,mBACD,CAAA,CAAA;AAAA,iBACH;AAAA,eACF;AAAA,aACD,CAAA,CAAA;AAAA,WACI,MAAA;AACL,YAAA,MAAM,IAAY,GAAA,YAAA,CAAa,MAAQ,EAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AACnD,YAAA,MAAM,OAAe,GAAA,YAAA,CAAa,MAAQ,EAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AACtD,YAAA,MAAM,kBAAwC,EAAC,CAAA;AAC/C,YAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAK,EAAA,EAAA;AACvC,cAAA,MAAM,eAAe,UAAW,CAAA,QAAA,CAAS,QAAQ,OAAQ,CAAA,CAAC,EAAE,EAAE,CAAA,CAAA;AAC9D,cAAA,eAAA,CAAgB,KAAK,YAAa,CAAA,CAAA;AAAA,aACpC;AACA,YAAA,eAAA,CAAgB,QAAQ,CAAK,CAAA,KAAA;AAC3B,cAAW,UAAA,CAAA,QAAA,CAAS,OAAO,CAAC,CAAA,CAAA;AAC5B,cAAA,MAAA,CAAO,SAAS,KAAO,EAAA,CAAA,OAAA,KAAW,OAAQ,CAAA,EAAA,KAAO,EAAE,EAAE,CAAA,CAAA;AAAA,aACtD,CAAA,CAAA;AAED,YAAA,kBAAA,CAAmB,YAAY,IAAI,CAAA,CAAA;AAAA,WACrC;AAAA,SACF;AAAA,QACA;AAAA,UACE,IAAM,EAAA,IAAA;AAAA,SACR;AAAA,OACF;AAAA,KACF,CAAA;AAGA,IAAA,QAAA,CAAS,qBAAqB,YAAY;AACxC,MAAA,OAAO,IAAI,MAAA,CAAO,gBAAiB,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,KAC/C,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,CAAC,KAAwB,KAAA;AAC3C,MAAI,IAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,oBAAoB,CAAA,CAAA;AACjE,MAAA,CAAC,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAE,aAAc,CAAA,KAAA,CAAM,WAAa,EAAA,IAAK,CAAK,IAAA,QAAA,IAAY,IAAK,CAAA,oBAAA,EAAsB,MAAM,WAAW,CAAA,CAAA;AAEtI,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,sBAAsB,CAAA,CAAA;AAC/D,MAAA,KAAA,CAAM,kBAAkB,KAAM,CAAA,aAAA,IAAiB,YAAY,IAAK,CAAA,sBAAA,EAAwB,MAAM,aAAa,CAAA,CAAA;AAE3G,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,mBAAmB,CAAA,CAAA;AAC5D,MAAA,KAAA,CAAM,eAAe,KAAM,CAAA,UAAA,IAAc,YAAY,IAAK,CAAA,mBAAA,EAAqB,MAAM,UAAU,CAAA,CAAA;AAE/F,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,mBAAmB,CAAA,CAAA;AAC5D,MAAA,KAAA,CAAM,eAAe,KAAM,CAAA,UAAA,IAAc,YAAY,IAAK,CAAA,mBAAA,EAAqB,MAAM,UAAU,CAAA,CAAA;AAE/F,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,kBAAkB,CAAA,CAAA;AAC3D,MAAA,KAAA,CAAM,cAAc,KAAM,CAAA,SAAA,IAAa,YAAY,IAAK,CAAA,kBAAA,EAAoB,MAAM,SAAS,CAAA,CAAA;AAE3F,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,mBAAmB,CAAA,CAAA;AAC5D,MAAA,KAAA,CAAM,eAAe,KAAM,CAAA,UAAA,IAAc,YAAY,IAAK,CAAA,mBAAA,EAAqB,MAAM,UAAU,CAAA,CAAA;AAE/F,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,kBAAkB,CAAA,CAAA;AAC3D,MAAA,CAAC,cAAe,CAAA,KAAA,CAAM,SAAS,CAAA,CAAE,aAAc,CAAA,KAAA,CAAM,SAAW,EAAA,IAAK,CAAK,IAAA,QAAA,IAAY,IAAK,CAAA,kBAAA,EAAoB,MAAM,SAAS,CAAA,CAAA;AAE9H,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,iBAAiB,CAAA,CAAA;AAC1D,MAAA,CAAC,cAAe,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAE,aAAc,CAAA,KAAA,CAAM,QAAU,EAAA,IAAK,CAAK,IAAA,QAAA,IAAY,IAAK,CAAA,iBAAA,EAAmB,MAAM,QAAQ,CAAA,CAAA;AAE1H,MAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAElB,MAAM,MAAA,EAAE,UAAY,EAAA,UAAA,EAAe,GAAA,MAAA,CAAA;AACnC,MAAW,QAAA,GAAA,mBAAA,CAAoB,UAAU,aAAa,CAAA,CAAA;AACtD,MAAI,IAAA,QAAA,IAAY,MAAM,aAAe,EAAA;AACnC,QAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,QAAS,CAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AAC9C,UAAM,MAAA,OAAA,GAA0B,QAAS,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAChD,UAAA,MAAM,eAAkB,GAAA,OAAA,CAAQ,gBAAiB,CAAA,QAAA,CAAS,MAAM,WAAW,CAAA,CAAA;AAE3E,UAAM,MAAA,kBAAA,GAAqB,KAAM,CAAA,eAAA,CAAgB,CAAC,CAAA,CAAA;AAClD,UAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,kBAAmB,CAAA,gBAAA,CAAiB,QAAQ,CAAK,EAAA,EAAA;AACnE,YAAM,MAAA,eAAA,GAAkB,kBAAmB,CAAA,gBAAA,CAAiB,CAAC,CAAA,CAAA;AAC7D,YAAM,MAAA,WAAA,GAAc,cAAe,CAAA,eAAA,CAAgB,QAAQ,CAAA,CAAA;AAC3D,YAAM,MAAA,QAAA,GAAW,cAAe,CAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AAEpD,YAAA,MAAM,eAAe,UAAW,CAAA,aAAA,CAAc,eAAiB,EAAA,WAAA,EAAa,MAAM,iBAAiB,CAAA,CAAA;AACnG,YAAA,MAAM,WAAW,UAAW,CAAA,aAAA,CAAc,MAAM,WAAa,EAAA,QAAA,EAAU,MAAM,aAAa,CAAA,CAAA;AAC1F,YAAA,IAAI,WAAc,GAAA,KAAA,CAAA;AAClB,YAAA,QAAQ,MAAM,eAAiB;AAAA,cAC7B,KAAK,MAAA;AACH,gBAAc,WAAA,GAAA,QAAA,CAAA;AACd,gBAAA,MAAA;AAAA,cACF,KAAK,UAAA;AACH,gBAAc,WAAA,GAAA,YAAA,CAAA;AACd,gBAAA,MAAA;AAAA,cACF,KAAK,MAAA;AACH,gBAAA,WAAA,GAAc,QAAY,IAAA,YAAA,CAAA;AAC1B,gBAAA,MAAA;AAAA,cACF,KAAK,IAAA;AACH,gBAAA,WAAA,GAAc,QAAY,IAAA,YAAA,CAAA;AAC1B,gBAAA,MAAA;AAAA,aACJ;AAEA,YAAA,IAAI,WAAa,EAAA;AACf,cAAA,IAAA,CAAK,aAAe,EAAA;AAAA,gBAClB,OAAA;AAAA,gBACA,QAAU,EAAA,eAAA;AAAA,gBACV,MAAQ,EAAA,UAAA;AAAA,gBACR,KAAA;AAAA,gBACA,YAAc,EAAA,CAAA;AAAA,gBACd,aAAe,EAAA,CAAA;AAAA,eAChB,CAAA,CAAA;AACD,cAAA,MAAA;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,kBAAA,GAAqB,CAAC,UAAA,EAAqC,eAA+C,KAAA;AAC9G,MAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,eAAA,CAAgB,QAAQ,CAAK,EAAA,EAAA;AAC/C,QAAM,MAAA,aAAA,GAAgB,gBAAgB,CAAC,CAAA,CAAA;AACvC,QAAM,MAAA,sBAAA,GAAyB,WAAY,CAAA,cAAA,CAAmC,aAAa,CAAA,CAAA;AAC3F,QAAM,MAAA,cAAA,GAAiB,IAAI,cAAA,CAAe,sBAAsB,CAAA,CAAA;AAChE,QAAS,QAAA,CAAA,KAAA,CAAM,KAAK,cAAc,CAAA,CAAA;AAClC,QAAA,MAAM,MAAS,GAAA,UAAA,CAAW,QAAS,CAAA,GAAA,CAAI,eAAe,OAAO,CAAA,CAAA;AAC7D,QAAuB,sBAAA,CAAA,gBAAA,CAAiB,OAAQ,CAAA,CAAC,eAAqC,KAAA;AACpF,UAAA,IAAI,gBAAgB,IAAM,EAAA;AACxB,YAAA,cAAA,CAAe,WAAY,CAAA,eAAA,CAAgB,QAAU,EAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AAAA,WAC3E,MAAA,IAAW,gBAAgB,QAAU,EAAA;AACnC,YAAgB,eAAA,CAAA,IAAA,GAAO,eAAe,WAAY,CAAA,eAAA,CAAgB,UAAU,eAAgB,CAAA,QAAA,IAAY,MAAM,eAAe,CAAA,CAAA;AAAA,WAC/H;AAAA,SACD,CAAA,CAAA;AACD,QAAA,aAAA,CAAc,EAAO,KAAA,MAAA,CAAO,EAAO,KAAA,aAAA,CAAc,KAAK,MAAO,CAAA,EAAA,CAAA,CAAA;AAC7D,QAAA,iBAAA,CAAkB,MAAQ,EAAA,sBAAA,EAAwB,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,OAC1D;AAAA,KACF,CAAA;AAEA,IAAA,QAAA,CAAS,QAAQ,YAAY;AAC3B,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,MAAM,aAAa,QAAS,CAAA,YAAA,CAAA;AAC5B,MAAA,UAAA,CAAW,OAAO,KAAM,CAAA,IAAA,CAAA;AACxB,MAAmB,kBAAA,CAAA,UAAA,EAAY,MAAM,eAAe,CAAA,CAAA;AAEpD,MAAA,OAAO,OAAO,WAAY,CAAA,GAAA,CAAI,UAAU,CAAA,CAAE,KAAK,MAAM;AACnD,QAAiB,gBAAA,CAAA,KAAA,CAAM,SAAY,GAAA,MAAA,CAAO,KAAM,CAAA,SAAA,CAAA;AAChD,QAAiB,gBAAA,CAAA,KAAA,CAAM,QAAW,GAAA,MAAA,CAAO,KAAM,CAAA,QAAA,CAAA;AAC/C,QAAiB,gBAAA,CAAA,KAAA,CAAM,WAAc,GAAA,MAAA,CAAO,KAAM,CAAA,WAAA,CAAA;AAClD,QAAiB,gBAAA,CAAA,KAAA,CAAM,UAAa,GAAA,MAAA,CAAO,KAAM,CAAA,UAAA,CAAA;AACjD,QAAiB,gBAAA,CAAA,KAAA,CAAM,SAAY,GAAA,MAAA,CAAO,KAAM,CAAA,SAAA,CAAA;AAChD,QAAiB,gBAAA,CAAA,KAAA,CAAM,UAAa,GAAA,MAAA,CAAO,KAAM,CAAA,UAAA,CAAA;AACjD,QAAiB,gBAAA,CAAA,KAAA,CAAM,UAAa,GAAA,MAAA,CAAO,KAAM,CAAA,UAAA,CAAA;AACjD,QAAiB,gBAAA,CAAA,KAAA,CAAM,aAAgB,GAAA,MAAA,CAAO,KAAM,CAAA,aAAA,CAAA;AAEpD,QAAA,IAAI,MAAM,SAAW,EAAA;AACnB,UAAA,MAAA,CAAO,KAAM,CAAA,SAAA,GAAY,cAAe,CAAA,KAAA,CAAM,SAAS,CAAA,CAAA;AAAA,SACzD;AACA,QAAA,IAAI,MAAM,QAAU,EAAA;AAClB,UAAA,MAAA,CAAO,KAAM,CAAA,QAAA,GAAW,cAAe,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAAA,SACvD;AACA,QAAA,IAAI,MAAM,WAAa,EAAA;AACrB,UAAA,MAAA,CAAO,KAAM,CAAA,WAAA,GAAc,cAAe,CAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAAA,SAC7D;AAEA,QAAO,MAAA,CAAA,KAAA,CAAM,aAAa,KAAM,CAAA,UAAA,CAAA;AAChC,QAAO,MAAA,CAAA,KAAA,CAAM,YAAY,KAAM,CAAA,SAAA,CAAA;AAC/B,QAAO,MAAA,CAAA,KAAA,CAAM,aAAa,KAAM,CAAA,UAAA,CAAA;AAChC,QAAA,MAAA,CAAO,MAAM,UAAa,GAAA,KAAA,CAAA;AAC1B,QAAO,MAAA,CAAA,KAAA,CAAM,gBAAgB,KAAM,CAAA,aAAA,CAAA;AAEnC,QAAO,MAAA,CAAA,KAAA,CAAM,MAAO,CAAA,gBAAA,CAAiB,WAAW,CAAA,CAAA;AAChD,QAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,QAAQ,CAAA,CAAA;AACvD,QAAA,QAAA,IAAY,MAAO,CAAA,KAAA,CAAM,MAAO,CAAA,gBAAA,CAAiB,QAAQ,CAAA,CAAA;AACzD,QAAO,OAAA,IAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,QAAA,CAAS,UAAU,YAAY;AAC7B,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,MAAM,aAAa,QAAS,CAAA,YAAA,CAAA;AAC5B,MAAO,MAAA,CAAA,WAAA,CAAY,MAAO,CAAA,UAAA,EAAY,IAAI,CAAA,CAAA;AAE1C,MAAO,MAAA,CAAA,KAAA,CAAM,SAAY,GAAA,gBAAA,CAAiB,KAAM,CAAA,SAAA,CAAA;AAChD,MAAO,MAAA,CAAA,KAAA,CAAM,QAAW,GAAA,gBAAA,CAAiB,KAAM,CAAA,QAAA,CAAA;AAC/C,MAAO,MAAA,CAAA,KAAA,CAAM,UAAa,GAAA,gBAAA,CAAiB,KAAM,CAAA,UAAA,CAAA;AACjD,MAAO,MAAA,CAAA,KAAA,CAAM,SAAY,GAAA,gBAAA,CAAiB,KAAM,CAAA,SAAA,CAAA;AAChD,MAAO,MAAA,CAAA,KAAA,CAAM,UAAa,GAAA,gBAAA,CAAiB,KAAM,CAAA,UAAA,CAAA;AACjD,MAAO,MAAA,CAAA,KAAA,CAAM,UAAa,GAAA,gBAAA,CAAiB,KAAM,CAAA,UAAA,CAAA;AACjD,MAAO,MAAA,CAAA,KAAA,CAAM,aAAgB,GAAA,gBAAA,CAAiB,KAAM,CAAA,aAAA,CAAA;AACpD,MAAA,QAAA,CAAS,MAAM,MAAS,GAAA,CAAA,CAAA;AACxB,MAAO,MAAA,CAAA,KAAA,CAAM,MAAO,CAAA,mBAAA,CAAoB,WAAW,CAAA,CAAA;AACnD,MAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,QAAQ,CAAA,CAAA;AACvD,MAAA,QAAA,IAAY,MAAO,CAAA,KAAA,CAAM,MAAO,CAAA,mBAAA,CAAoB,QAAQ,CAAA,CAAA;AAC5D,MAAgB,eAAA,CAAA,KAAA,KAAU,OAAO,aAAgB,GAAA,KAAA,CAAA,CAAA,CAAA;AACjD,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CAAC,KAAwB,KAAA;AAnflD,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAofM,MAAI,IAAA,SAAA,CAAU,KAAS,IAAA,eAAA,CAAgB,KAAO,EAAA;AAC5C,QAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AAEnB,QAAA,IAAI,OAAO,UAAW,CAAA,WAAA,CAAY,MAAM,WAAa,EAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AAKpE,UAAA,eAAA,CAAgB,KAAQ,GAAA,IAAA,CAAA;AACxB,UAAA,OAAA;AAAA,SACF;AACA,QAAA,MAAM,WAAW,eAAgB,CAAA,KAAA,CAAM,gBAAiB,CAAA,QAAA,CAAS,MAAM,WAAW,CAAA,CAAA;AAClF,QAAI,IAAA,MAAA,GAAmC,IAAI,MAAA,CAAO,iBAAkB,EAAA,CAAA;AACpE,QAAQ,QAAA,SAAA,CAAU,MAAM,IAAM;AAAA,UAC5B,KAAK,IAAA;AACH,YAAA,MAAA,CAAO,OAAU,GAAA,CAAA,CAAA;AACjB,YAAO,MAAA,CAAA,KAAA,GAAA,CAAA,CAAQ,EAAU,GAAA,CAAA,EAAA,GAAA,SAAA,CAAA,KAAA,KAAV,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KAAjB,mBAAyB,KAAS,KAAA,MAAA,CAAO,IAAK,CAAA,SAAA,CAAU,CAAG,EAAA,CAAA,CAAA;AAC1E,YAAA,MAAA,CAAO,UAAQ,EAAU,GAAA,CAAA,EAAA,GAAA,SAAA,CAAA,KAAA,KAAV,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KAAjB,mBAAyB,KAAS,KAAA,GAAA,CAAA;AACjD,YAAA,MAAA;AAAA,UACF,KAAK,IAAM,EAAA;AACT,YAAM,MAAA,YAAA,GAAe,MAAO,CAAA,UAAA,CAAW,UAAW,CAAA,KAAA,CAAM,WAAa,EAAA,CAAA,GAAI,EAAI,EAAA,IAAI,MAAO,CAAA,UAAA,EAAY,CAAA,CAAA;AACpG,YAAA,MAAM,mBAAmB,eAAgB,CAAA,KAAA,CAAM,gBAAiB,CAAA,QAAA,CAAS,YAAY,CAAK,IAAA,QAAA,CAAA;AAE1F,YAAA,IAAI,QAAS,CAAA,MAAA,CAAO,gBAAgB,CAAA,IAAK,UAAY,EAAA;AACnD,cAAS,MAAA,GAAA,UAAA,CAAA;AAAA,aACJ,MAAA;AACL,cAAA,MAAA,CAAO,UAAU,MAAO,CAAA,IAAA,CAAK,UAAU,yBAA0B,CAAA,QAAA,EAAU,gBAAgB,CAAC,CAAA,CAAA;AAC5F,cAAA,MAAA,CAAO,KAAS,GAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAA,CAAU,KAAV,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,WAAjB,IAAyB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,KAAS,MAAO,CAAA,IAAA,CAAK,SAAU,CAAA,CAAA,EAAK,CAAK,IAAA,uBAAA,CAAwB,UAAU,gBAAgB,CAAA,CAAA;AACpI,cAAA,MAAA,CAAO,UAAQ,EAAU,GAAA,CAAA,EAAA,GAAA,SAAA,CAAA,KAAA,KAAV,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,KAAjB,mBAAyB,KAAS,KAAA,GAAA,CAAA;AAAA,aACnD;AAEA,YAAA,MAAA;AAAA,WACF;AAAA,UACA,KAAK,QAAA;AACH,YAAS,MAAA,GAAA,oBAAA,CAAqB,SAAU,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAAA,SACxD;AACA,QAAa,UAAA,GAAA,MAAA,CAAA;AACb,QAAe,YAAA,GAAA,QAAA,CAAA;AACf,QAAO,MAAA,CAAA,MAAA,CAAO,MAAO,CAAA,QAAA,EAAU,MAAM,CAAA,CAAA;AAAA,OACvC;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CAACC,aAAAA,EAAiD,aAAkC,KAAA;AA9hB7G,MAAA,IAAA,EAAA,CAAA;AA+hBM,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,aAAA,GAAgB,aAAiB,IAAA;AAAA,QAC/B,IAAM,EAAA,SAAA,CAAU,KAAU,KAAA,IAAA,GAAO,IAAO,GAAA,MAAA;AAAA,OAC1C,CAAA;AAEA,MAAI,IAAA,aAAA,CAAc,SAAS,MAAQ,EAAA;AACjC,QAAA,MAAA,CAAO,MAAO,CAAA,eAAA,CAAgB,MAAO,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AACrD,QAAA,IAAI,gBAAgB,KAAO,EAAA;AACzB,UAAA,MAAA,CAAO,aAAgB,GAAA,KAAA,CAAA,CAAA;AACvB,UAAA,eAAA,CAAgB,KAAQ,GAAA,IAAA,CAAA;AACxB,UAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAAA,SACpB;AACA,QAAA,OAAA;AAAA,OACF;AAEA,MAAgB,eAAA,CAAA,KAAA,GAAQ,WAAWA,aAAY,CAAA,CAAA;AAE/C,MAAA,MAAA,CAAO,aAAgB,GAAA,KAAA,CAAM,eAAgB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAC1D,MAAI,IAAA,aAAA,CAAc,SAAS,SAAW,EAAA;AACpC,QAAI,IAAA,CAAA,EAAA,GAAA,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAe,QAAf,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAyB,MAAQ,EAAA;AACnC,UAAO,MAAA,CAAA,aAAA,CAAc,QAAW,GAAA,IAAI,MAAO,CAAA,UAAA;AAAA,YACzC,aAAA,CAAc,SAAS,CAAC,CAAA;AAAA,YACxB,aAAA,CAAc,SAAS,CAAC,CAAA;AAAA,YACxB,aAAA,CAAc,SAAS,CAAC,CAAA;AAAA,WAC1B,CAAA;AAAA,SACF;AACA,QAAA,SAAA,CAAU,KAAQ,GAAA,IAAA,CAAA;AAAA,OACb,MAAA;AACL,QAAA,SAAA,CAAU,KAAQ,GAAA,aAAA,CAAA;AAAA,OACpB;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,UAAA,GAAa,CAAC,CAAwC,KAAA;AAC1D,MAAA,IAAI,aAAa,cAAgB,EAAA;AAC/B,QAAO,OAAA,CAAA,CAAA;AAAA,OACT,MAAA,IAAW,OAAO,CAAA,KAAM,QAAU,EAAA;AAChC,QAAA,OAAO,KAAK,QAAS,CAAA,KAAA,EAAO,CAAK,CAAA,KAAA,CAAA,CAAE,OAAO,CAAC,CAAA,CAAA;AAAA,OAC7C,MAAA,IAAW,OAAO,CAAA,KAAM,QAAU,EAAA;AAChC,QAAO,OAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,OAClB,MAAA;AACL,QAAO,OAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AAAA,OACzB;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CACnBC,SAAAA,EACA,OAKG,KAAA;AACH,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,IAAI,gBAAgB,KAAO,EAAA;AACzB,QAAA,MAAA,CAAO,aAAgB,GAAA,KAAA,CAAA,CAAA;AACvB,QAAA,eAAA,CAAgB,KAAQ,GAAA,IAAA,CAAA;AAAA,OAC1B;AACA,MAAI,IAAA,MAAA,CAAA;AACJ,MAAI,IAAA,MAAA,CAAO,OAAQA,CAAAA,SAAQ,CAAG,EAAA;AAC5B,QAAI,IAAA,KAAA,CAAM,OAAQA,CAAAA,SAAQ,CAAG,EAAA;AAC3B,UAAA,IAAIA,UAAS,MAAQ,EAAA;AACnB,YAAA,MAAM,UAAgC,EAAC,CAAA;AACvC,YAAAA,SAAAA,CAAS,QAAQ,CAAe,WAAA,KAAA;AAC9B,cAAA,MAAMC,OAAS,GAAA,KAAA,CAAM,UAAW,CAAA,WAAW,EAAE,OAAO,CAAA,CAAA;AACpD,cAAA,OAAA,CAAQ,KAAKA,OAAM,CAAA,CAAA;AAAA,aACpB,CAAA,CAAA;AACD,YAAS,MAAA,GAAA,OAAA,CAAA;AAAA,WACJ,MAAA;AACL,YAAA,MAAA,GAAS,QAAS,CAAA,YAAA,CAAA;AAAA,WACpB;AAAA,SACK,MAAA;AACL,UAAA,MAAA,GAAS,KAAM,CAAA,UAAA,CAAWD,SAAQ,CAAA,CAAE,OAAO,CAAA,CAAA;AAAA,SAC7C;AAAA,OACK,MAAA;AACL,QAAA,MAAA,GAAS,QAAS,CAAA,YAAA,CAAA;AAAA,OACpB;AAEA,MAAA,OAAA,GAAU,OAAW,IAAA;AAAA,QACnB,QAAU,EAAA,CAAA;AAAA,OACZ,CAAA;AAEA,MAAA,IAAI,MAAO,CAAA,OAAA,CAAQ,OAAQ,CAAA,MAAM,CAAG,EAAA;AAClC,QAAQ,OAAA,CAAA,MAAA,GAAS,oBAAqB,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAAA,OACtD;AAEA,MAAO,OAAA,MAAA,CAAO,KAAM,CAAA,MAAA,EAAQ,OAAc,CAAA,CAAA;AAAA,KAC5C,CAAA;AAEA,IAAM,MAAA,aAAA,GAAgB,CAACA,SAAAA,EAAuF,MAAiC,KAAA;AAC7I,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,IAAI,gBAAgB,KAAO,EAAA;AACzB,QAAA,MAAA,CAAO,aAAgB,GAAA,KAAA,CAAA,CAAA;AACvB,QAAA,eAAA,CAAgB,KAAQ,GAAA,IAAA,CAAA;AAAA,OAC1B;AACA,MAAI,IAAA,MAAA,CAAA;AACJ,MAAI,IAAA,MAAA,CAAO,OAAQA,CAAAA,SAAQ,CAAG,EAAA;AAC5B,QAAI,IAAA,KAAA,CAAM,OAAQA,CAAAA,SAAQ,CAAG,EAAA;AAC3B,UAAA,IAAIA,UAAS,MAAQ,EAAA;AACnB,YAAA,MAAM,UAAgC,EAAC,CAAA;AACvC,YAAAA,SAAAA,CAAS,QAAQ,CAAe,WAAA,KAAA;AAC9B,cAAA,MAAMC,OAAS,GAAA,KAAA,CAAM,UAAW,CAAA,WAAW,EAAE,OAAO,CAAA,CAAA;AACpD,cAAA,OAAA,CAAQ,KAAKA,OAAM,CAAA,CAAA;AAAA,aACpB,CAAA,CAAA;AACD,YAAS,MAAA,GAAA,OAAA,CAAA;AAAA,WACJ,MAAA;AACL,YAAA,MAAA,GAAS,QAAS,CAAA,YAAA,CAAA;AAAA,WACpB;AAAA,SACK,MAAA;AACL,UAAA,MAAA,GAAS,KAAM,CAAA,UAAA,CAAWD,SAAQ,CAAA,CAAE,OAAO,CAAA,CAAA;AAAA,SAC7C;AAAA,OACK,MAAA;AACL,QAAA,MAAA,GAAS,QAAS,CAAA,YAAA,CAAA;AAAA,OACpB;AAEA,MAAO,OAAA,MAAA,CAAO,MAAO,CAAA,MAAA,EAAQ,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAI,GAAA,oBAAA,CAAqB,MAAM,CAAA,GAAI,KAAS,CAAA,CAAA,CAAA;AAAA,KAChG,CAAA;AAGA,IAAA,WAAA,CAAY,MAAM;AAChB,MAAW,UAAA,CAAA,OAAA,CAAQ,CAAQ,IAAA,KAAA,IAAA,EAAM,CAAA,CAAA;AACjC,MAAA,UAAA,GAAa,EAAC,CAAA;AAAA,KACf,CAAA,CAAA;AAGD,IAAA,MAAA,CAAO,MAAO,CAAA,QAAA,CAAS,KAAO,EAAA,EAAE,WAAa,EAAA,MAAM,QAAS,CAAA,KAAA,EAAO,UAAY,EAAA,YAAA,EAAc,aAAe,EAAA,YAAA,EAAc,CAAA,CAAA;AAE1H,IAAA,OAAO,MAAG;AA7pBd,MAAA,IAAA,EAAA,CAAA;AA6pBiB,MAAA,OAAA,kBAAA,CAAmB,YAAU,EAAS,GAAA,QAAA,CAAA,KAAA,KAAT,mBAAgB,QAAS,CAAA,IAAA,KAAQ,EAAE,CAAC,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAChF;AACF,CAAC,CAAA;;;;"}