Your IP : 216.73.216.85


Current Path : /home/smartconb/www/armencom33/media/com_eventgallery/dist/
Upload File :
Current File : /home/smartconb/www/armencom33/media/com_eventgallery/dist/backend-debug.js.map

{"version":3,"file":"backend-debug.js","mappings":"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","sources":["webpack://eventgallery/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://eventgallery/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://eventgallery/./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack://eventgallery/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://eventgallery/./node_modules/async/asyncify.js","webpack://eventgallery/./node_modules/async/internal/DoublyLinkedList.js","webpack://eventgallery/./node_modules/async/internal/initialParams.js","webpack://eventgallery/./node_modules/async/internal/onlyOnce.js","webpack://eventgallery/./node_modules/async/internal/queue.js","webpack://eventgallery/./node_modules/async/internal/setImmediate.js","webpack://eventgallery/./node_modules/async/internal/wrapAsync.js","webpack://eventgallery/./node_modules/async/queue.js","webpack://eventgallery/./backend/js/Albumselector.js","webpack://eventgallery/./backend/js/EventgalleryBehavior.js","webpack://eventgallery/./backend/js/EventgalleryFlickr.js","webpack://eventgallery/./backend/js/EventgalleryGooglePhotos.js","webpack://eventgallery/./backend/js/EventgalleryInlineFormEdit.js","webpack://eventgallery/./backend/js/LocalizableText.js","webpack://eventgallery/./backend/vue/cacheclear/index.js","webpack://eventgallery/./backend/vue/filesync/index.js","webpack://eventgallery/./backend/vue/imagecontentpluginform/index.js","webpack://eventgallery/./backend/vue/scalepriceeditor/index.js","webpack://eventgallery/./backend/vue/thumbnailcreator/index.js","webpack://eventgallery/./backend/vue/uploader/index.js","webpack://eventgallery/./backend/vue/uploader/util/qrcode.js","webpack://eventgallery/./common/js/BatchCreator.js","webpack://eventgallery/./common/js/Helpers.js","webpack://eventgallery/./common/vue/helper/LocalizationMapper.js","webpack://eventgallery/./frontend/js/EventgalleryGooglePhotosProcessor.js","webpack://eventgallery/./frontend/js/Overlay.js","webpack://eventgallery/./frontend/js/SlideShow.js","webpack://eventgallery/./frontend/js/URLHelper.js","webpack://eventgallery/./frontend/js/photoswipe-video-plugin/default-options.js","webpack://eventgallery/./frontend/js/photoswipe-video-plugin/index.js","webpack://eventgallery/./frontend/js/photoswipe-video-plugin/video-content-setup.js","webpack://eventgallery/./frontend/js/photoswipe/HistoryHandler.js","webpack://eventgallery/./frontend/js/photoswipe/PhotoSwipeGallery.js","webpack://eventgallery/./frontend/js/photoswipe/PhotoSwipeGallerySlide.js","webpack://eventgallery/./frontend/js/photoswipe/SlideGenerator.js","webpack://eventgallery/./frontend/js/photoswipe/UrlHandling.js","webpack://eventgallery/./backend/vue/cacheclear/Cacheclear.vue","webpack://eventgallery/./backend/vue/cacheclear/Elements.vue","webpack://eventgallery/./backend/vue/cacheclear/Groups.vue","webpack://eventgallery/./backend/vue/components/ErrorPanel.vue","webpack://eventgallery/./backend/vue/components/Folder.vue","webpack://eventgallery/./backend/vue/components/Folders.vue","webpack://eventgallery/./backend/vue/components/ProcessSteps.vue","webpack://eventgallery/./backend/vue/components/Progress.vue","webpack://eventgallery/./backend/vue/filesync/Filesync.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageContentPluginForm.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageSelector.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/Input.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/Label.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/Radio.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/Select.vue","webpack://eventgallery/./backend/vue/scalepriceeditor/Scalepriceeditor.vue","webpack://eventgallery/./backend/vue/thumbnailcreator/Thumbnailcreator.vue","webpack://eventgallery/./backend/vue/uploader/Uploader.vue","webpack://eventgallery/./node_modules/list.js/src/add-async.js","webpack://eventgallery/./node_modules/list.js/src/filter.js","webpack://eventgallery/./node_modules/list.js/src/fuzzy-search.js","webpack://eventgallery/./node_modules/list.js/src/index.js","webpack://eventgallery/./node_modules/list.js/src/item.js","webpack://eventgallery/./node_modules/list.js/src/pagination.js","webpack://eventgallery/./node_modules/list.js/src/parse.js","webpack://eventgallery/./node_modules/list.js/src/search.js","webpack://eventgallery/./node_modules/list.js/src/sort.js","webpack://eventgallery/./node_modules/list.js/src/templater.js","webpack://eventgallery/./node_modules/list.js/src/utils/classes.js","webpack://eventgallery/./node_modules/list.js/src/utils/events.js","webpack://eventgallery/./node_modules/list.js/src/utils/extend.js","webpack://eventgallery/./node_modules/list.js/src/utils/fuzzy.js","webpack://eventgallery/./node_modules/list.js/src/utils/get-attribute.js","webpack://eventgallery/./node_modules/list.js/src/utils/get-by-class.js","webpack://eventgallery/./node_modules/list.js/src/utils/index-of.js","webpack://eventgallery/./node_modules/list.js/src/utils/to-array.js","webpack://eventgallery/./node_modules/list.js/src/utils/to-string.js","webpack://eventgallery/./node_modules/string-natural-compare/natural-compare.js","webpack://eventgallery/./backend/vue/uploader/types/GooglePhotosTypes.ts","webpack://eventgallery/./frontend/js/Polyfill.ts","webpack://eventgallery/./frontend/js/minicart/CartEvents.ts","webpack://eventgallery/./backend/vue/uploader/components/GoogleAccountSelector.vue?5ddf","webpack://eventgallery/./backend/vue/uploader/components/GoogleAccountSelector.vue","webpack://eventgallery/./backend/vue/uploader/components/GoogleFilePicker.vue?1487","webpack://eventgallery/./backend/vue/uploader/components/GoogleFilePicker.vue","webpack://eventgallery/./backend/vue/uploader/components/LocalFilePicker.vue?7c65","webpack://eventgallery/./backend/vue/uploader/components/LocalFilePicker.vue","webpack://eventgallery/./backend/vue/uploader/components/PagingBar.vue?134d","webpack://eventgallery/./backend/vue/uploader/components/PagingBar.vue","webpack://eventgallery/./backend/vue/uploader/components/QRCode.vue?481a","webpack://eventgallery/./backend/vue/uploader/components/QRCode.vue","webpack://eventgallery/./backend/vue/uploader/components/GoogleAccountSelector.vue?b885","webpack://eventgallery/./backend/vue/uploader/components/GoogleFilePicker.vue?3145","webpack://eventgallery/./backend/vue/uploader/components/LocalFilePicker.vue?06ea","webpack://eventgallery/./backend/vue/uploader/components/PagingBar.vue?1c68","webpack://eventgallery/./backend/vue/uploader/components/QRCode.vue?3c51","webpack://eventgallery/./node_modules/vue-loader/dist/exportHelper.js","webpack://eventgallery/./backend/vue/cacheclear/Cacheclear.vue?12c6","webpack://eventgallery/./backend/vue/cacheclear/Elements.vue?3889","webpack://eventgallery/./backend/vue/cacheclear/Groups.vue?3e0f","webpack://eventgallery/./backend/vue/components/ErrorPanel.vue?aa42","webpack://eventgallery/./backend/vue/components/Folder.vue?9d6e","webpack://eventgallery/./backend/vue/components/Folders.vue?7e84","webpack://eventgallery/./backend/vue/components/ProcessSteps.vue?8e8b","webpack://eventgallery/./backend/vue/components/Progress.vue?3857","webpack://eventgallery/./backend/vue/filesync/Filesync.vue?b1bd","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageContentPluginForm.vue?a151","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageSelector.vue?c36c","webpack://eventgallery/./backend/vue/imagecontentpluginform/Input.vue?c530","webpack://eventgallery/./backend/vue/imagecontentpluginform/Label.vue?d165","webpack://eventgallery/./backend/vue/imagecontentpluginform/Radio.vue?d09f","webpack://eventgallery/./backend/vue/imagecontentpluginform/Select.vue?aa2b","webpack://eventgallery/./backend/vue/scalepriceeditor/Scalepriceeditor.vue?d4a3","webpack://eventgallery/./backend/vue/thumbnailcreator/Thumbnailcreator.vue?f170","webpack://eventgallery/./backend/vue/uploader/Uploader.vue?6aee","webpack://eventgallery/./backend/vue/uploader/components/GoogleAccountSelector.vue?e200","webpack://eventgallery/./backend/vue/uploader/components/GoogleFilePicker.vue?ad73","webpack://eventgallery/./backend/vue/uploader/components/LocalFilePicker.vue?a556","webpack://eventgallery/./backend/vue/uploader/components/PagingBar.vue?d850","webpack://eventgallery/./backend/vue/uploader/components/QRCode.vue?31f9","webpack://eventgallery/./node_modules/vue/dist/vue.runtime.esm-bundler.js","webpack://eventgallery/./node_modules/photoswipe/dist/photoswipe.esm.js","webpack://eventgallery/webpack/bootstrap","webpack://eventgallery/webpack/runtime/compat get default export","webpack://eventgallery/webpack/runtime/define property getters","webpack://eventgallery/webpack/runtime/global","webpack://eventgallery/webpack/runtime/hasOwnProperty shorthand","webpack://eventgallery/webpack/runtime/make namespace object","webpack://eventgallery/./eventgallery-backend.js"],"sourcesContent":["/**\n* @vue/reactivity v3.5.12\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { hasChanged, extend, isArray, isIntegerKey, isSymbol, isMap, hasOwn, isObject, makeMap, toRawType, capitalize, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, NOOP, remove } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n  console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.detached = detached;\n    /**\n     * @internal\n     */\n    this._active = true;\n    /**\n     * @internal\n     */\n    this.effects = [];\n    /**\n     * @internal\n     */\n    this.cleanups = [];\n    this._isPaused = false;\n    this.parent = activeEffectScope;\n    if (!detached && activeEffectScope) {\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n        this\n      ) - 1;\n    }\n  }\n  get active() {\n    return this._active;\n  }\n  pause() {\n    if (this._active) {\n      this._isPaused = true;\n      let i, l;\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].pause();\n        }\n      }\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].pause();\n      }\n    }\n  }\n  /**\n   * Resumes the effect scope, including all child scopes and effects.\n   */\n  resume() {\n    if (this._active) {\n      if (this._isPaused) {\n        this._isPaused = false;\n        let i, l;\n        if (this.scopes) {\n          for (i = 0, l = this.scopes.length; i < l; i++) {\n            this.scopes[i].resume();\n          }\n        }\n        for (i = 0, l = this.effects.length; i < l; i++) {\n          this.effects[i].resume();\n        }\n      }\n    }\n  }\n  run(fn) {\n    if (this._active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`cannot run an inactive effect scope.`);\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  on() {\n    activeEffectScope = this;\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this._active) {\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n      }\n      if (!this.detached && this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.parent = void 0;\n      this._active = false;\n    }\n  }\n}\nfunction effectScope(detached) {\n  return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n  return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n  if (activeEffectScope) {\n    activeEffectScope.cleanups.push(fn);\n  } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n    warn(\n      `onScopeDispose() is called when there is no active effect scope to be associated with.`\n    );\n  }\n}\n\nlet activeSub;\nconst EffectFlags = {\n  \"ACTIVE\": 1,\n  \"1\": \"ACTIVE\",\n  \"RUNNING\": 2,\n  \"2\": \"RUNNING\",\n  \"TRACKING\": 4,\n  \"4\": \"TRACKING\",\n  \"NOTIFIED\": 8,\n  \"8\": \"NOTIFIED\",\n  \"DIRTY\": 16,\n  \"16\": \"DIRTY\",\n  \"ALLOW_RECURSE\": 32,\n  \"32\": \"ALLOW_RECURSE\",\n  \"PAUSED\": 64,\n  \"64\": \"PAUSED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n  constructor(fn) {\n    this.fn = fn;\n    /**\n     * @internal\n     */\n    this.deps = void 0;\n    /**\n     * @internal\n     */\n    this.depsTail = void 0;\n    /**\n     * @internal\n     */\n    this.flags = 1 | 4;\n    /**\n     * @internal\n     */\n    this.next = void 0;\n    /**\n     * @internal\n     */\n    this.cleanup = void 0;\n    this.scheduler = void 0;\n    if (activeEffectScope && activeEffectScope.active) {\n      activeEffectScope.effects.push(this);\n    }\n  }\n  pause() {\n    this.flags |= 64;\n  }\n  resume() {\n    if (this.flags & 64) {\n      this.flags &= ~64;\n      if (pausedQueueEffects.has(this)) {\n        pausedQueueEffects.delete(this);\n        this.trigger();\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  notify() {\n    if (this.flags & 2 && !(this.flags & 32)) {\n      return;\n    }\n    if (!(this.flags & 8)) {\n      batch(this);\n    }\n  }\n  run() {\n    if (!(this.flags & 1)) {\n      return this.fn();\n    }\n    this.flags |= 2;\n    cleanupEffect(this);\n    prepareDeps(this);\n    const prevEffect = activeSub;\n    const prevShouldTrack = shouldTrack;\n    activeSub = this;\n    shouldTrack = true;\n    try {\n      return this.fn();\n    } finally {\n      if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n        warn(\n          \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n        );\n      }\n      cleanupDeps(this);\n      activeSub = prevEffect;\n      shouldTrack = prevShouldTrack;\n      this.flags &= ~2;\n    }\n  }\n  stop() {\n    if (this.flags & 1) {\n      for (let link = this.deps; link; link = link.nextDep) {\n        removeSub(link);\n      }\n      this.deps = this.depsTail = void 0;\n      cleanupEffect(this);\n      this.onStop && this.onStop();\n      this.flags &= ~1;\n    }\n  }\n  trigger() {\n    if (this.flags & 64) {\n      pausedQueueEffects.add(this);\n    } else if (this.scheduler) {\n      this.scheduler();\n    } else {\n      this.runIfDirty();\n    }\n  }\n  /**\n   * @internal\n   */\n  runIfDirty() {\n    if (isDirty(this)) {\n      this.run();\n    }\n  }\n  get dirty() {\n    return isDirty(this);\n  }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n  sub.flags |= 8;\n  if (isComputed) {\n    sub.next = batchedComputed;\n    batchedComputed = sub;\n    return;\n  }\n  sub.next = batchedSub;\n  batchedSub = sub;\n}\nfunction startBatch() {\n  batchDepth++;\n}\nfunction endBatch() {\n  if (--batchDepth > 0) {\n    return;\n  }\n  if (batchedComputed) {\n    let e = batchedComputed;\n    batchedComputed = void 0;\n    while (e) {\n      const next = e.next;\n      e.next = void 0;\n      e.flags &= ~8;\n      e = next;\n    }\n  }\n  let error;\n  while (batchedSub) {\n    let e = batchedSub;\n    batchedSub = void 0;\n    while (e) {\n      const next = e.next;\n      e.next = void 0;\n      e.flags &= ~8;\n      if (e.flags & 1) {\n        try {\n          ;\n          e.trigger();\n        } catch (err) {\n          if (!error) error = err;\n        }\n      }\n      e = next;\n    }\n  }\n  if (error) throw error;\n}\nfunction prepareDeps(sub) {\n  for (let link = sub.deps; link; link = link.nextDep) {\n    link.version = -1;\n    link.prevActiveLink = link.dep.activeLink;\n    link.dep.activeLink = link;\n  }\n}\nfunction cleanupDeps(sub) {\n  let head;\n  let tail = sub.depsTail;\n  let link = tail;\n  while (link) {\n    const prev = link.prevDep;\n    if (link.version === -1) {\n      if (link === tail) tail = prev;\n      removeSub(link);\n      removeDep(link);\n    } else {\n      head = link;\n    }\n    link.dep.activeLink = link.prevActiveLink;\n    link.prevActiveLink = void 0;\n    link = prev;\n  }\n  sub.deps = head;\n  sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n  for (let link = sub.deps; link; link = link.nextDep) {\n    if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n      return true;\n    }\n  }\n  if (sub._dirty) {\n    return true;\n  }\n  return false;\n}\nfunction refreshComputed(computed) {\n  if (computed.flags & 4 && !(computed.flags & 16)) {\n    return;\n  }\n  computed.flags &= ~16;\n  if (computed.globalVersion === globalVersion) {\n    return;\n  }\n  computed.globalVersion = globalVersion;\n  const dep = computed.dep;\n  computed.flags |= 2;\n  if (dep.version > 0 && !computed.isSSR && computed.deps && !isDirty(computed)) {\n    computed.flags &= ~2;\n    return;\n  }\n  const prevSub = activeSub;\n  const prevShouldTrack = shouldTrack;\n  activeSub = computed;\n  shouldTrack = true;\n  try {\n    prepareDeps(computed);\n    const value = computed.fn(computed._value);\n    if (dep.version === 0 || hasChanged(value, computed._value)) {\n      computed._value = value;\n      dep.version++;\n    }\n  } catch (err) {\n    dep.version++;\n    throw err;\n  } finally {\n    activeSub = prevSub;\n    shouldTrack = prevShouldTrack;\n    cleanupDeps(computed);\n    computed.flags &= ~2;\n  }\n}\nfunction removeSub(link, soft = false) {\n  const { dep, prevSub, nextSub } = link;\n  if (prevSub) {\n    prevSub.nextSub = nextSub;\n    link.prevSub = void 0;\n  }\n  if (nextSub) {\n    nextSub.prevSub = prevSub;\n    link.nextSub = void 0;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n    dep.subsHead = nextSub;\n  }\n  if (dep.subs === link) {\n    dep.subs = prevSub;\n    if (!prevSub && dep.computed) {\n      dep.computed.flags &= ~4;\n      for (let l = dep.computed.deps; l; l = l.nextDep) {\n        removeSub(l, true);\n      }\n    }\n  }\n  if (!soft && !--dep.sc && dep.map) {\n    dep.map.delete(dep.key);\n  }\n}\nfunction removeDep(link) {\n  const { prevDep, nextDep } = link;\n  if (prevDep) {\n    prevDep.nextDep = nextDep;\n    link.prevDep = void 0;\n  }\n  if (nextDep) {\n    nextDep.prevDep = prevDep;\n    link.nextDep = void 0;\n  }\n}\nfunction effect(fn, options) {\n  if (fn.effect instanceof ReactiveEffect) {\n    fn = fn.effect.fn;\n  }\n  const e = new ReactiveEffect(fn);\n  if (options) {\n    extend(e, options);\n  }\n  try {\n    e.run();\n  } catch (err) {\n    e.stop();\n    throw err;\n  }\n  const runner = e.run.bind(e);\n  runner.effect = e;\n  return runner;\n}\nfunction stop(runner) {\n  runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction enableTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = true;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n  if (activeSub instanceof ReactiveEffect) {\n    activeSub.cleanup = fn;\n  } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n    warn(\n      `onEffectCleanup() was called when there was no active effect to associate with.`\n    );\n  }\n}\nfunction cleanupEffect(e) {\n  const { cleanup } = e;\n  e.cleanup = void 0;\n  if (cleanup) {\n    const prevSub = activeSub;\n    activeSub = void 0;\n    try {\n      cleanup();\n    } finally {\n      activeSub = prevSub;\n    }\n  }\n}\n\nlet globalVersion = 0;\nclass Link {\n  constructor(sub, dep) {\n    this.sub = sub;\n    this.dep = dep;\n    this.version = dep.version;\n    this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n  }\n}\nclass Dep {\n  constructor(computed) {\n    this.computed = computed;\n    this.version = 0;\n    /**\n     * Link between this dep and the current active effect\n     */\n    this.activeLink = void 0;\n    /**\n     * Doubly linked list representing the subscribing effects (tail)\n     */\n    this.subs = void 0;\n    /**\n     * For object property deps cleanup\n     */\n    this.map = void 0;\n    this.key = void 0;\n    /**\n     * Subscriber counter\n     */\n    this.sc = 0;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      this.subsHead = void 0;\n    }\n  }\n  track(debugInfo) {\n    if (!activeSub || !shouldTrack || activeSub === this.computed) {\n      return;\n    }\n    let link = this.activeLink;\n    if (link === void 0 || link.sub !== activeSub) {\n      link = this.activeLink = new Link(activeSub, this);\n      if (!activeSub.deps) {\n        activeSub.deps = activeSub.depsTail = link;\n      } else {\n        link.prevDep = activeSub.depsTail;\n        activeSub.depsTail.nextDep = link;\n        activeSub.depsTail = link;\n      }\n      addSub(link);\n    } else if (link.version === -1) {\n      link.version = this.version;\n      if (link.nextDep) {\n        const next = link.nextDep;\n        next.prevDep = link.prevDep;\n        if (link.prevDep) {\n          link.prevDep.nextDep = next;\n        }\n        link.prevDep = activeSub.depsTail;\n        link.nextDep = void 0;\n        activeSub.depsTail.nextDep = link;\n        activeSub.depsTail = link;\n        if (activeSub.deps === link) {\n          activeSub.deps = next;\n        }\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n      activeSub.onTrack(\n        extend(\n          {\n            effect: activeSub\n          },\n          debugInfo\n        )\n      );\n    }\n    return link;\n  }\n  trigger(debugInfo) {\n    this.version++;\n    globalVersion++;\n    this.notify(debugInfo);\n  }\n  notify(debugInfo) {\n    startBatch();\n    try {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (let head = this.subsHead; head; head = head.nextSub) {\n          if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n            head.sub.onTrigger(\n              extend(\n                {\n                  effect: head.sub\n                },\n                debugInfo\n              )\n            );\n          }\n        }\n      }\n      for (let link = this.subs; link; link = link.prevSub) {\n        if (link.sub.notify()) {\n          ;\n          link.sub.dep.notify();\n        }\n      }\n    } finally {\n      endBatch();\n    }\n  }\n}\nfunction addSub(link) {\n  link.dep.sc++;\n  if (link.sub.flags & 4) {\n    const computed = link.dep.computed;\n    if (computed && !link.dep.subs) {\n      computed.flags |= 4 | 16;\n      for (let l = computed.deps; l; l = l.nextDep) {\n        addSub(l);\n      }\n    }\n    const currentTail = link.dep.subs;\n    if (currentTail !== link) {\n      link.prevSub = currentTail;\n      if (currentTail) currentTail.nextSub = link;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n      link.dep.subsHead = link;\n    }\n    link.dep.subs = link;\n  }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(\n  !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = Symbol(\n  !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = Symbol(\n  !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n  if (shouldTrack && activeSub) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = new Dep());\n      dep.map = depsMap;\n      dep.key = key;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      dep.track({\n        target,\n        type,\n        key\n      });\n    } else {\n      dep.track();\n    }\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    globalVersion++;\n    return;\n  }\n  const run = (dep) => {\n    if (dep) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        dep.trigger({\n          target,\n          type,\n          key,\n          newValue,\n          oldValue,\n          oldTarget\n        });\n      } else {\n        dep.trigger();\n      }\n    }\n  };\n  startBatch();\n  if (type === \"clear\") {\n    depsMap.forEach(run);\n  } else {\n    const targetIsArray = isArray(target);\n    const isArrayIndex = targetIsArray && isIntegerKey(key);\n    if (targetIsArray && key === \"length\") {\n      const newLength = Number(newValue);\n      depsMap.forEach((dep, key2) => {\n        if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n          run(dep);\n        }\n      });\n    } else {\n      if (key !== void 0 || depsMap.has(void 0)) {\n        run(depsMap.get(key));\n      }\n      if (isArrayIndex) {\n        run(depsMap.get(ARRAY_ITERATE_KEY));\n      }\n      switch (type) {\n        case \"add\":\n          if (!targetIsArray) {\n            run(depsMap.get(ITERATE_KEY));\n            if (isMap(target)) {\n              run(depsMap.get(MAP_KEY_ITERATE_KEY));\n            }\n          } else if (isArrayIndex) {\n            run(depsMap.get(\"length\"));\n          }\n          break;\n        case \"delete\":\n          if (!targetIsArray) {\n            run(depsMap.get(ITERATE_KEY));\n            if (isMap(target)) {\n              run(depsMap.get(MAP_KEY_ITERATE_KEY));\n            }\n          }\n          break;\n        case \"set\":\n          if (isMap(target)) {\n            run(depsMap.get(ITERATE_KEY));\n          }\n          break;\n      }\n    }\n  }\n  endBatch();\n}\nfunction getDepFromReactive(object, key) {\n  const depMap = targetMap.get(object);\n  return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n  const raw = toRaw(array);\n  if (raw === array) return raw;\n  track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n  return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n  track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n  return arr;\n}\nconst arrayInstrumentations = {\n  __proto__: null,\n  [Symbol.iterator]() {\n    return iterator(this, Symbol.iterator, toReactive);\n  },\n  concat(...args) {\n    return reactiveReadArray(this).concat(\n      ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n    );\n  },\n  entries() {\n    return iterator(this, \"entries\", (value) => {\n      value[1] = toReactive(value[1]);\n      return value;\n    });\n  },\n  every(fn, thisArg) {\n    return apply(this, \"every\", fn, thisArg, void 0, arguments);\n  },\n  filter(fn, thisArg) {\n    return apply(this, \"filter\", fn, thisArg, (v) => v.map(toReactive), arguments);\n  },\n  find(fn, thisArg) {\n    return apply(this, \"find\", fn, thisArg, toReactive, arguments);\n  },\n  findIndex(fn, thisArg) {\n    return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n  },\n  findLast(fn, thisArg) {\n    return apply(this, \"findLast\", fn, thisArg, toReactive, arguments);\n  },\n  findLastIndex(fn, thisArg) {\n    return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n  },\n  // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n  forEach(fn, thisArg) {\n    return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n  },\n  includes(...args) {\n    return searchProxy(this, \"includes\", args);\n  },\n  indexOf(...args) {\n    return searchProxy(this, \"indexOf\", args);\n  },\n  join(separator) {\n    return reactiveReadArray(this).join(separator);\n  },\n  // keys() iterator only reads `length`, no optimisation required\n  lastIndexOf(...args) {\n    return searchProxy(this, \"lastIndexOf\", args);\n  },\n  map(fn, thisArg) {\n    return apply(this, \"map\", fn, thisArg, void 0, arguments);\n  },\n  pop() {\n    return noTracking(this, \"pop\");\n  },\n  push(...args) {\n    return noTracking(this, \"push\", args);\n  },\n  reduce(fn, ...args) {\n    return reduce(this, \"reduce\", fn, args);\n  },\n  reduceRight(fn, ...args) {\n    return reduce(this, \"reduceRight\", fn, args);\n  },\n  shift() {\n    return noTracking(this, \"shift\");\n  },\n  // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n  some(fn, thisArg) {\n    return apply(this, \"some\", fn, thisArg, void 0, arguments);\n  },\n  splice(...args) {\n    return noTracking(this, \"splice\", args);\n  },\n  toReversed() {\n    return reactiveReadArray(this).toReversed();\n  },\n  toSorted(comparer) {\n    return reactiveReadArray(this).toSorted(comparer);\n  },\n  toSpliced(...args) {\n    return reactiveReadArray(this).toSpliced(...args);\n  },\n  unshift(...args) {\n    return noTracking(this, \"unshift\", args);\n  },\n  values() {\n    return iterator(this, \"values\", toReactive);\n  }\n};\nfunction iterator(self, method, wrapValue) {\n  const arr = shallowReadArray(self);\n  const iter = arr[method]();\n  if (arr !== self && !isShallow(self)) {\n    iter._next = iter.next;\n    iter.next = () => {\n      const result = iter._next();\n      if (result.value) {\n        result.value = wrapValue(result.value);\n      }\n      return result;\n    };\n  }\n  return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n  const arr = shallowReadArray(self);\n  const needsWrap = arr !== self && !isShallow(self);\n  const methodFn = arr[method];\n  if (methodFn !== arrayProto[method]) {\n    const result2 = methodFn.apply(self, args);\n    return needsWrap ? toReactive(result2) : result2;\n  }\n  let wrappedFn = fn;\n  if (arr !== self) {\n    if (needsWrap) {\n      wrappedFn = function(item, index) {\n        return fn.call(this, toReactive(item), index, self);\n      };\n    } else if (fn.length > 2) {\n      wrappedFn = function(item, index) {\n        return fn.call(this, item, index, self);\n      };\n    }\n  }\n  const result = methodFn.call(arr, wrappedFn, thisArg);\n  return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n  const arr = shallowReadArray(self);\n  let wrappedFn = fn;\n  if (arr !== self) {\n    if (!isShallow(self)) {\n      wrappedFn = function(acc, item, index) {\n        return fn.call(this, acc, toReactive(item), index, self);\n      };\n    } else if (fn.length > 3) {\n      wrappedFn = function(acc, item, index) {\n        return fn.call(this, acc, item, index, self);\n      };\n    }\n  }\n  return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n  const arr = toRaw(self);\n  track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n  const res = arr[method](...args);\n  if ((res === -1 || res === false) && isProxy(args[0])) {\n    args[0] = toRaw(args[0]);\n    return arr[method](...args);\n  }\n  return res;\n}\nfunction noTracking(self, method, args = []) {\n  pauseTracking();\n  startBatch();\n  const res = toRaw(self)[method].apply(self, args);\n  endBatch();\n  resetTracking();\n  return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n  if (!isSymbol(key)) key = String(key);\n  const obj = toRaw(this);\n  track(obj, \"has\", key);\n  return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n  constructor(_isReadonly = false, _isShallow = false) {\n    this._isReadonly = _isReadonly;\n    this._isShallow = _isShallow;\n  }\n  get(target, key, receiver) {\n    const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return isShallow2;\n    } else if (key === \"__v_raw\") {\n      if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n      // this means the receiver is a user proxy of the reactive proxy\n      Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n        return target;\n      }\n      return;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly2) {\n      let fn;\n      if (targetIsArray && (fn = arrayInstrumentations[key])) {\n        return fn;\n      }\n      if (key === \"hasOwnProperty\") {\n        return hasOwnProperty;\n      }\n    }\n    const res = Reflect.get(\n      target,\n      key,\n      // if this is a proxy wrapping a ref, return methods using the raw ref\n      // as receiver so that we don't have to call `toRaw` on the ref in all\n      // its class methods\n      isRef(target) ? target : receiver\n    );\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (isShallow2) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(false, isShallow2);\n  }\n  set(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!this._isShallow) {\n      const isOldValueReadonly = isReadonly(oldValue);\n      if (!isShallow(value) && !isReadonly(value)) {\n        oldValue = toRaw(oldValue);\n        value = toRaw(value);\n      }\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        if (isOldValueReadonly) {\n          return false;\n        } else {\n          oldValue.value = value;\n          return true;\n        }\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(\n      target,\n      key,\n      value,\n      isRef(target) ? target : receiver\n    );\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  }\n  deleteProperty(target, key) {\n    const hadKey = hasOwn(target, key);\n    const oldValue = target[key];\n    const result = Reflect.deleteProperty(target, key);\n    if (result && hadKey) {\n      trigger(target, \"delete\", key, void 0, oldValue);\n    }\n    return result;\n  }\n  has(target, key) {\n    const result = Reflect.has(target, key);\n    if (!isSymbol(key) || !builtInSymbols.has(key)) {\n      track(target, \"has\", key);\n    }\n    return result;\n  }\n  ownKeys(target) {\n    track(\n      target,\n      \"iterate\",\n      isArray(target) ? \"length\" : ITERATE_KEY\n    );\n    return Reflect.ownKeys(target);\n  }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(true, isShallow2);\n  }\n  set(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n  deleteProperty(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n    !isReadonly2 && track(\n      rawTarget,\n      \"iterate\",\n      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n    );\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      warn(\n        `${capitalize(type)} operation ${key}failed: target is readonly.`,\n        toRaw(this)\n      );\n    }\n    return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n  };\n}\nfunction createInstrumentations(readonly, shallow) {\n  const instrumentations = {\n    get(key) {\n      const target = this[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const rawKey = toRaw(key);\n      if (!readonly) {\n        if (hasChanged(key, rawKey)) {\n          track(rawTarget, \"get\", key);\n        }\n        track(rawTarget, \"get\", rawKey);\n      }\n      const { has } = getProto(rawTarget);\n      const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n      if (has.call(rawTarget, key)) {\n        return wrap(target.get(key));\n      } else if (has.call(rawTarget, rawKey)) {\n        return wrap(target.get(rawKey));\n      } else if (target !== rawTarget) {\n        target.get(key);\n      }\n    },\n    get size() {\n      const target = this[\"__v_raw\"];\n      !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n      return Reflect.get(target, \"size\", target);\n    },\n    has(key) {\n      const target = this[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const rawKey = toRaw(key);\n      if (!readonly) {\n        if (hasChanged(key, rawKey)) {\n          track(rawTarget, \"has\", key);\n        }\n        track(rawTarget, \"has\", rawKey);\n      }\n      return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n    },\n    forEach(callback, thisArg) {\n      const observed = this;\n      const target = observed[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n      !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n      return target.forEach((value, key) => {\n        return callback.call(thisArg, wrap(value), wrap(key), observed);\n      });\n    }\n  };\n  extend(\n    instrumentations,\n    readonly ? {\n      add: createReadonlyMethod(\"add\"),\n      set: createReadonlyMethod(\"set\"),\n      delete: createReadonlyMethod(\"delete\"),\n      clear: createReadonlyMethod(\"clear\")\n    } : {\n      add(value) {\n        if (!shallow && !isShallow(value) && !isReadonly(value)) {\n          value = toRaw(value);\n        }\n        const target = toRaw(this);\n        const proto = getProto(target);\n        const hadKey = proto.has.call(target, value);\n        if (!hadKey) {\n          target.add(value);\n          trigger(target, \"add\", value, value);\n        }\n        return this;\n      },\n      set(key, value) {\n        if (!shallow && !isShallow(value) && !isReadonly(value)) {\n          value = toRaw(value);\n        }\n        const target = toRaw(this);\n        const { has, get } = getProto(target);\n        let hadKey = has.call(target, key);\n        if (!hadKey) {\n          key = toRaw(key);\n          hadKey = has.call(target, key);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkIdentityKeys(target, has, key);\n        }\n        const oldValue = get.call(target, key);\n        target.set(key, value);\n        if (!hadKey) {\n          trigger(target, \"add\", key, value);\n        } else if (hasChanged(value, oldValue)) {\n          trigger(target, \"set\", key, value, oldValue);\n        }\n        return this;\n      },\n      delete(key) {\n        const target = toRaw(this);\n        const { has, get } = getProto(target);\n        let hadKey = has.call(target, key);\n        if (!hadKey) {\n          key = toRaw(key);\n          hadKey = has.call(target, key);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkIdentityKeys(target, has, key);\n        }\n        const oldValue = get ? get.call(target, key) : void 0;\n        const result = target.delete(key);\n        if (hadKey) {\n          trigger(target, \"delete\", key, void 0, oldValue);\n        }\n        return result;\n      },\n      clear() {\n        const target = toRaw(this);\n        const hadItems = target.size !== 0;\n        const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n        const result = target.clear();\n        if (hadItems) {\n          trigger(\n            target,\n            \"clear\",\n            void 0,\n            void 0,\n            oldTarget\n          );\n        }\n        return result;\n      }\n    }\n  );\n  const iteratorMethods = [\n    \"keys\",\n    \"values\",\n    \"entries\",\n    Symbol.iterator\n  ];\n  iteratorMethods.forEach((method) => {\n    instrumentations[method] = createIterableMethod(method, readonly, shallow);\n  });\n  return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n  const instrumentations = createInstrumentations(isReadonly2, shallow);\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(\n      hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n      key,\n      receiver\n    );\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has.call(target, rawKey)) {\n    const type = toRawType(target);\n    warn(\n      `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n    );\n  }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1 /* COMMON */;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2 /* COLLECTION */;\n    default:\n      return 0 /* INVALID */;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(\n    target,\n    false,\n    mutableHandlers,\n    mutableCollectionHandlers,\n    reactiveMap\n  );\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(\n    target,\n    false,\n    shallowReactiveHandlers,\n    shallowCollectionHandlers,\n    shallowReactiveMap\n  );\n}\nfunction readonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    readonlyHandlers,\n    readonlyCollectionHandlers,\n    readonlyMap\n  );\n}\nfunction shallowReadonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    shallowReadonlyHandlers,\n    shallowReadonlyCollectionHandlers,\n    shallowReadonlyMap\n  );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n          target\n        )}`\n      );\n    }\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0 /* INVALID */) {\n    return target;\n  }\n  const proxy = new Proxy(\n    target,\n    targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n  );\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n    def(value, \"__v_skip\", true);\n  }\n  return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n  return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n  return createRef(value, false);\n}\nfunction shallowRef(value) {\n  return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n  if (isRef(rawValue)) {\n    return rawValue;\n  }\n  return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n  constructor(value, isShallow2) {\n    this.dep = new Dep();\n    this[\"__v_isRef\"] = true;\n    this[\"__v_isShallow\"] = false;\n    this._rawValue = isShallow2 ? value : toRaw(value);\n    this._value = isShallow2 ? value : toReactive(value);\n    this[\"__v_isShallow\"] = isShallow2;\n  }\n  get value() {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      this.dep.track({\n        target: this,\n        type: \"get\",\n        key: \"value\"\n      });\n    } else {\n      this.dep.track();\n    }\n    return this._value;\n  }\n  set value(newValue) {\n    const oldValue = this._rawValue;\n    const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n    newValue = useDirectValue ? newValue : toRaw(newValue);\n    if (hasChanged(newValue, oldValue)) {\n      this._rawValue = newValue;\n      this._value = useDirectValue ? newValue : toReactive(newValue);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        this.dep.trigger({\n          target: this,\n          type: \"set\",\n          key: \"value\",\n          newValue,\n          oldValue\n        });\n      } else {\n        this.dep.trigger();\n      }\n    }\n  }\n}\nfunction triggerRef(ref2) {\n  if (ref2.dep) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      ref2.dep.trigger({\n        target: ref2,\n        type: \"set\",\n        key: \"value\",\n        newValue: ref2._value\n      });\n    } else {\n      ref2.dep.trigger();\n    }\n  }\n}\nfunction unref(ref2) {\n  return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n  return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n  constructor(factory) {\n    this[\"__v_isRef\"] = true;\n    this._value = void 0;\n    const dep = this.dep = new Dep();\n    const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n    this._get = get;\n    this._set = set;\n  }\n  get value() {\n    return this._value = this._get();\n  }\n  set value(newVal) {\n    this._set(newVal);\n  }\n}\nfunction customRef(factory) {\n  return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n    warn(`toRefs() expects a reactive object but received a plain one.`);\n  }\n  const ret = isArray(object) ? new Array(object.length) : {};\n  for (const key in object) {\n    ret[key] = propertyToRef(object, key);\n  }\n  return ret;\n}\nclass ObjectRefImpl {\n  constructor(_object, _key, _defaultValue) {\n    this._object = _object;\n    this._key = _key;\n    this._defaultValue = _defaultValue;\n    this[\"__v_isRef\"] = true;\n    this._value = void 0;\n  }\n  get value() {\n    const val = this._object[this._key];\n    return this._value = val === void 0 ? this._defaultValue : val;\n  }\n  set value(newVal) {\n    this._object[this._key] = newVal;\n  }\n  get dep() {\n    return getDepFromReactive(toRaw(this._object), this._key);\n  }\n}\nclass GetterRefImpl {\n  constructor(_getter) {\n    this._getter = _getter;\n    this[\"__v_isRef\"] = true;\n    this[\"__v_isReadonly\"] = true;\n    this._value = void 0;\n  }\n  get value() {\n    return this._value = this._getter();\n  }\n}\nfunction toRef(source, key, defaultValue) {\n  if (isRef(source)) {\n    return source;\n  } else if (isFunction(source)) {\n    return new GetterRefImpl(source);\n  } else if (isObject(source) && arguments.length > 1) {\n    return propertyToRef(source, key, defaultValue);\n  } else {\n    return ref(source);\n  }\n}\nfunction propertyToRef(source, key, defaultValue) {\n  const val = source[key];\n  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n  constructor(fn, setter, isSSR) {\n    this.fn = fn;\n    this.setter = setter;\n    /**\n     * @internal\n     */\n    this._value = void 0;\n    /**\n     * @internal\n     */\n    this.dep = new Dep(this);\n    /**\n     * @internal\n     */\n    this.__v_isRef = true;\n    // TODO isolatedDeclarations \"__v_isReadonly\"\n    // A computed is also a subscriber that tracks other deps\n    /**\n     * @internal\n     */\n    this.deps = void 0;\n    /**\n     * @internal\n     */\n    this.depsTail = void 0;\n    /**\n     * @internal\n     */\n    this.flags = 16;\n    /**\n     * @internal\n     */\n    this.globalVersion = globalVersion - 1;\n    /**\n     * @internal\n     */\n    this.next = void 0;\n    // for backwards compat\n    this.effect = this;\n    this[\"__v_isReadonly\"] = !setter;\n    this.isSSR = isSSR;\n  }\n  /**\n   * @internal\n   */\n  notify() {\n    this.flags |= 16;\n    if (!(this.flags & 8) && // avoid infinite self recursion\n    activeSub !== this) {\n      batch(this, true);\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n  }\n  get value() {\n    const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n      target: this,\n      type: \"get\",\n      key: \"value\"\n    }) : this.dep.track();\n    refreshComputed(this);\n    if (link) {\n      link.version = this.dep.version;\n    }\n    return this._value;\n  }\n  set value(newValue) {\n    if (this.setter) {\n      this.setter(newValue);\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\"Write operation failed: computed value is readonly\");\n    }\n  }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  if (isFunction(getterOrOptions)) {\n    getter = getterOrOptions;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, isSSR);\n  if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n    cRef.onTrack = debugOptions.onTrack;\n    cRef.onTrigger = debugOptions.onTrigger;\n  }\n  return cRef;\n}\n\nconst TrackOpTypes = {\n  \"GET\": \"get\",\n  \"HAS\": \"has\",\n  \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n  \"SET\": \"set\",\n  \"ADD\": \"add\",\n  \"DELETE\": \"delete\",\n  \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n  \"SKIP\": \"__v_skip\",\n  \"IS_REACTIVE\": \"__v_isReactive\",\n  \"IS_READONLY\": \"__v_isReadonly\",\n  \"IS_SHALLOW\": \"__v_isShallow\",\n  \"RAW\": \"__v_raw\",\n  \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n  \"WATCH_GETTER\": 2,\n  \"2\": \"WATCH_GETTER\",\n  \"WATCH_CALLBACK\": 3,\n  \"3\": \"WATCH_CALLBACK\",\n  \"WATCH_CLEANUP\": 4,\n  \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n  return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n  if (owner) {\n    let cleanups = cleanupMap.get(owner);\n    if (!cleanups) cleanupMap.set(owner, cleanups = []);\n    cleanups.push(cleanupFn);\n  } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n    warn(\n      `onWatcherCleanup() was called when there was no active watcher to associate with.`\n    );\n  }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n  const { immediate, deep, once, scheduler, augmentJob, call } = options;\n  const warnInvalidSource = (s) => {\n    (options.onWarn || warn)(\n      `Invalid watch source: `,\n      s,\n      `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n    );\n  };\n  const reactiveGetter = (source2) => {\n    if (deep) return source2;\n    if (isShallow(source2) || deep === false || deep === 0)\n      return traverse(source2, 1);\n    return traverse(source2);\n  };\n  let effect;\n  let getter;\n  let cleanup;\n  let boundCleanup;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => reactiveGetter(source);\n    forceTrigger = true;\n  } else if (isArray(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return reactiveGetter(s);\n      } else if (isFunction(s)) {\n        return call ? call(s, 2) : s();\n      } else {\n        !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n      }\n    });\n  } else if (isFunction(source)) {\n    if (cb) {\n      getter = call ? () => call(source, 2) : source;\n    } else {\n      getter = () => {\n        if (cleanup) {\n          pauseTracking();\n          try {\n            cleanup();\n          } finally {\n            resetTracking();\n          }\n        }\n        const currentEffect = activeWatcher;\n        activeWatcher = effect;\n        try {\n          return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n        } finally {\n          activeWatcher = currentEffect;\n        }\n      };\n    }\n  } else {\n    getter = NOOP;\n    !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    const depth = deep === true ? Infinity : deep;\n    getter = () => traverse(baseGetter(), depth);\n  }\n  const scope = getCurrentScope();\n  const watchHandle = () => {\n    effect.stop();\n    if (scope) {\n      remove(scope.effects, effect);\n    }\n  };\n  if (once && cb) {\n    const _cb = cb;\n    cb = (...args) => {\n      _cb(...args);\n      watchHandle();\n    };\n  }\n  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n  const job = (immediateFirstRun) => {\n    if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n        if (cleanup) {\n          cleanup();\n        }\n        const currentWatcher = activeWatcher;\n        activeWatcher = effect;\n        try {\n          const args = [\n            newValue,\n            // pass undefined as the old value when it's changed for the first time\n            oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n            boundCleanup\n          ];\n          call ? call(cb, 3, args) : (\n            // @ts-expect-error\n            cb(...args)\n          );\n          oldValue = newValue;\n        } finally {\n          activeWatcher = currentWatcher;\n        }\n      }\n    } else {\n      effect.run();\n    }\n  };\n  if (augmentJob) {\n    augmentJob(job);\n  }\n  effect = new ReactiveEffect(getter);\n  effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n  boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n  cleanup = effect.onStop = () => {\n    const cleanups = cleanupMap.get(effect);\n    if (cleanups) {\n      if (call) {\n        call(cleanups, 4);\n      } else {\n        for (const cleanup2 of cleanups) cleanup2();\n      }\n      cleanupMap.delete(effect);\n    }\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    effect.onTrack = options.onTrack;\n    effect.onTrigger = options.onTrigger;\n  }\n  if (cb) {\n    if (immediate) {\n      job(true);\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (scheduler) {\n    scheduler(job.bind(null, true), true);\n  } else {\n    effect.run();\n  }\n  watchHandle.pause = effect.pause.bind(effect);\n  watchHandle.resume = effect.resume.bind(effect);\n  watchHandle.stop = watchHandle;\n  return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n  if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  depth--;\n  if (isRef(value)) {\n    traverse(value.value, depth, seen);\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], depth, seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, depth, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], depth, seen);\n    }\n    for (const key of Object.getOwnPropertySymbols(value)) {\n      if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n        traverse(value[key], depth, seen);\n      }\n    }\n  }\n  return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.12\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, shallowReadArray, toReactive, shallowReadonly, track, reactive, shallowReactive, trigger, ReactiveEffect, watch as watch$1, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, EMPTY_OBJ, NOOP, getGlobalThis, extend, isBuiltInDirective, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, capitalize, camelize, isSymbol, isGloballyAllowed, NO, hyphenate, EMPTY_ARR, toRawType, makeMap, hasChanged, looseToNumber, isModelListener, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n  stack.push(vnode);\n}\nfunction popWarningContext() {\n  stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n  if (isWarning) return;\n  isWarning = true;\n  pauseTracking();\n  const instance = stack.length ? stack[stack.length - 1].component : null;\n  const appWarnHandler = instance && instance.appContext.config.warnHandler;\n  const trace = getComponentTrace();\n  if (appWarnHandler) {\n    callWithErrorHandling(\n      appWarnHandler,\n      instance,\n      11,\n      [\n        // eslint-disable-next-line no-restricted-syntax\n        msg + args.map((a) => {\n          var _a, _b;\n          return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n        }).join(\"\"),\n        instance && instance.proxy,\n        trace.map(\n          ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n        ).join(\"\\n\"),\n        trace\n      ]\n    );\n  } else {\n    const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n    if (trace.length && // avoid spamming console during tests\n    true) {\n      warnArgs.push(`\n`, ...formatTrace(trace));\n    }\n    console.warn(...warnArgs);\n  }\n  resetTracking();\n  isWarning = false;\n}\nfunction getComponentTrace() {\n  let currentVNode = stack[stack.length - 1];\n  if (!currentVNode) {\n    return [];\n  }\n  const normalizedStack = [];\n  while (currentVNode) {\n    const last = normalizedStack[0];\n    if (last && last.vnode === currentVNode) {\n      last.recurseCount++;\n    } else {\n      normalizedStack.push({\n        vnode: currentVNode,\n        recurseCount: 0\n      });\n    }\n    const parentInstance = currentVNode.component && currentVNode.component.parent;\n    currentVNode = parentInstance && parentInstance.vnode;\n  }\n  return normalizedStack;\n}\nfunction formatTrace(trace) {\n  const logs = [];\n  trace.forEach((entry, i) => {\n    logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n  });\n  return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n  const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n  const isRoot = vnode.component ? vnode.component.parent == null : false;\n  const open = ` at <${formatComponentName(\n    vnode.component,\n    vnode.type,\n    isRoot\n  )}`;\n  const close = `>` + postfix;\n  return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n  const res = [];\n  const keys = Object.keys(props);\n  keys.slice(0, 3).forEach((key) => {\n    res.push(...formatProp(key, props[key]));\n  });\n  if (keys.length > 3) {\n    res.push(` ...`);\n  }\n  return res;\n}\nfunction formatProp(key, value, raw) {\n  if (isString(value)) {\n    value = JSON.stringify(value);\n    return raw ? value : [`${key}=${value}`];\n  } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n    return raw ? value : [`${key}=${value}`];\n  } else if (isRef(value)) {\n    value = formatProp(key, toRaw(value.value), true);\n    return raw ? value : [`${key}=Ref<`, value, `>`];\n  } else if (isFunction(value)) {\n    return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n  } else {\n    value = toRaw(value);\n    return raw ? value : [`${key}=`, value];\n  }\n}\nfunction assertNumber(val, type) {\n  if (!!!(process.env.NODE_ENV !== \"production\")) return;\n  if (val === void 0) {\n    return;\n  } else if (typeof val !== \"number\") {\n    warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n  } else if (isNaN(val)) {\n    warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n  }\n}\n\nconst ErrorCodes = {\n  \"SETUP_FUNCTION\": 0,\n  \"0\": \"SETUP_FUNCTION\",\n  \"RENDER_FUNCTION\": 1,\n  \"1\": \"RENDER_FUNCTION\",\n  \"NATIVE_EVENT_HANDLER\": 5,\n  \"5\": \"NATIVE_EVENT_HANDLER\",\n  \"COMPONENT_EVENT_HANDLER\": 6,\n  \"6\": \"COMPONENT_EVENT_HANDLER\",\n  \"VNODE_HOOK\": 7,\n  \"7\": \"VNODE_HOOK\",\n  \"DIRECTIVE_HOOK\": 8,\n  \"8\": \"DIRECTIVE_HOOK\",\n  \"TRANSITION_HOOK\": 9,\n  \"9\": \"TRANSITION_HOOK\",\n  \"APP_ERROR_HANDLER\": 10,\n  \"10\": \"APP_ERROR_HANDLER\",\n  \"APP_WARN_HANDLER\": 11,\n  \"11\": \"APP_WARN_HANDLER\",\n  \"FUNCTION_REF\": 12,\n  \"12\": \"FUNCTION_REF\",\n  \"ASYNC_COMPONENT_LOADER\": 13,\n  \"13\": \"ASYNC_COMPONENT_LOADER\",\n  \"SCHEDULER\": 14,\n  \"14\": \"SCHEDULER\",\n  \"COMPONENT_UPDATE\": 15,\n  \"15\": \"COMPONENT_UPDATE\",\n  \"APP_UNMOUNT_CLEANUP\": 16,\n  \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n  [\"sp\"]: \"serverPrefetch hook\",\n  [\"bc\"]: \"beforeCreate hook\",\n  [\"c\"]: \"created hook\",\n  [\"bm\"]: \"beforeMount hook\",\n  [\"m\"]: \"mounted hook\",\n  [\"bu\"]: \"beforeUpdate hook\",\n  [\"u\"]: \"updated\",\n  [\"bum\"]: \"beforeUnmount hook\",\n  [\"um\"]: \"unmounted hook\",\n  [\"a\"]: \"activated hook\",\n  [\"da\"]: \"deactivated hook\",\n  [\"ec\"]: \"errorCaptured hook\",\n  [\"rtc\"]: \"renderTracked hook\",\n  [\"rtg\"]: \"renderTriggered hook\",\n  [0]: \"setup function\",\n  [1]: \"render function\",\n  [2]: \"watcher getter\",\n  [3]: \"watcher callback\",\n  [4]: \"watcher cleanup function\",\n  [5]: \"native event handler\",\n  [6]: \"component event handler\",\n  [7]: \"vnode hook\",\n  [8]: \"directive hook\",\n  [9]: \"transition hook\",\n  [10]: \"app errorHandler\",\n  [11]: \"app warnHandler\",\n  [12]: \"ref function\",\n  [13]: \"async component loader\",\n  [14]: \"scheduler flush\",\n  [15]: \"component update\",\n  [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n  try {\n    return args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance, type);\n  }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n  if (isFunction(fn)) {\n    const res = callWithErrorHandling(fn, instance, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance, type);\n      });\n    }\n    return res;\n  }\n  if (isArray(fn)) {\n    const values = [];\n    for (let i = 0; i < fn.length; i++) {\n      values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n    }\n    return values;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n    );\n  }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n  const contextVNode = instance ? instance.vnode : null;\n  const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n  if (instance) {\n    let cur = instance.parent;\n    const exposedInstance = instance.proxy;\n    const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    if (errorHandler) {\n      pauseTracking();\n      callWithErrorHandling(errorHandler, null, 10, [\n        err,\n        exposedInstance,\n        errorInfo\n      ]);\n      resetTracking();\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const info = ErrorTypeStrings$1[type];\n    if (contextVNode) {\n      pushWarningContext(contextVNode);\n    }\n    warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n    if (contextVNode) {\n      popWarningContext();\n    }\n    if (throwInDev) {\n      throw err;\n    } else {\n      console.error(err);\n    }\n  } else if (throwInProd) {\n    throw err;\n  } else {\n    console.error(err);\n  }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n  const p = currentFlushPromise || resolvedPromise;\n  return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJob = queue[middle];\n    const middleJobId = getId(middleJob);\n    if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n      start = middle + 1;\n    } else {\n      end = middle;\n    }\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if (!(job.flags & 1)) {\n    const jobId = getId(job);\n    const lastJob = queue[queue.length - 1];\n    if (!lastJob || // fast path when the job id is larger than the tail\n    !(job.flags & 2) && jobId >= getId(lastJob)) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(jobId), 0, job);\n    }\n    job.flags |= 1;\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!currentFlushPromise) {\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction queuePostFlushCb(cb) {\n  if (!isArray(cb)) {\n    if (activePostFlushCbs && cb.id === -1) {\n      activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n    } else if (!(cb.flags & 1)) {\n      pendingPostFlushCbs.push(cb);\n      cb.flags |= 1;\n    }\n  } else {\n    pendingPostFlushCbs.push(...cb);\n  }\n  queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  for (; i < queue.length; i++) {\n    const cb = queue[i];\n    if (cb && cb.flags & 2) {\n      if (instance && cb.id !== instance.uid) {\n        continue;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      queue.splice(i, 1);\n      i--;\n      if (cb.flags & 4) {\n        cb.flags &= ~1;\n      }\n      cb();\n      if (!(cb.flags & 4)) {\n        cb.flags &= ~1;\n      }\n    }\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)].sort(\n      (a, b) => getId(a) - getId(b)\n    );\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      seen = seen || /* @__PURE__ */ new Map();\n    }\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      const cb = activePostFlushCbs[postFlushIndex];\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      if (cb.flags & 4) {\n        cb.flags &= ~1;\n      }\n      if (!(cb.flags & 8)) cb();\n      cb.flags &= ~1;\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && !(job.flags & 8)) {\n        if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n          continue;\n        }\n        if (job.flags & 4) {\n          job.flags &= ~1;\n        }\n        callWithErrorHandling(\n          job,\n          job.i,\n          job.i ? 15 : 14\n        );\n        if (!(job.flags & 4)) {\n          job.flags &= ~1;\n        }\n      }\n    }\n  } finally {\n    for (; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job) {\n        job.flags &= ~1;\n      }\n    }\n    flushIndex = -1;\n    queue.length = 0;\n    flushPostFlushCbs(seen);\n    currentFlushPromise = null;\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n  const count = seen.get(fn) || 0;\n  if (count > RECURSION_LIMIT) {\n    const instance = fn.i;\n    const componentName = instance && getComponentName(instance.type);\n    handleError(\n      `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n      null,\n      10\n    );\n    return true;\n  }\n  seen.set(fn, count + 1);\n  return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  getGlobalThis().__VUE_HMR_RUNTIME__ = {\n    createRecord: tryWrap(createRecord),\n    rerender: tryWrap(rerender),\n    reload: tryWrap(reload)\n  };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n  const id = instance.type.__hmrId;\n  let record = map.get(id);\n  if (!record) {\n    createRecord(id, instance.type);\n    record = map.get(id);\n  }\n  record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n  map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n  if (map.has(id)) {\n    return false;\n  }\n  map.set(id, {\n    initialDef: normalizeClassComponent(initialDef),\n    instances: /* @__PURE__ */ new Set()\n  });\n  return true;\n}\nfunction normalizeClassComponent(component) {\n  return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n  const record = map.get(id);\n  if (!record) {\n    return;\n  }\n  record.initialDef.render = newRender;\n  [...record.instances].forEach((instance) => {\n    if (newRender) {\n      instance.render = newRender;\n      normalizeClassComponent(instance.type).render = newRender;\n    }\n    instance.renderCache = [];\n    isHmrUpdating = true;\n    instance.update();\n    isHmrUpdating = false;\n  });\n}\nfunction reload(id, newComp) {\n  const record = map.get(id);\n  if (!record) return;\n  newComp = normalizeClassComponent(newComp);\n  updateComponentDef(record.initialDef, newComp);\n  const instances = [...record.instances];\n  for (let i = 0; i < instances.length; i++) {\n    const instance = instances[i];\n    const oldComp = normalizeClassComponent(instance.type);\n    let dirtyInstances = hmrDirtyComponents.get(oldComp);\n    if (!dirtyInstances) {\n      if (oldComp !== record.initialDef) {\n        updateComponentDef(oldComp, newComp);\n      }\n      hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n    }\n    dirtyInstances.add(instance);\n    instance.appContext.propsCache.delete(instance.type);\n    instance.appContext.emitsCache.delete(instance.type);\n    instance.appContext.optionsCache.delete(instance.type);\n    if (instance.ceReload) {\n      dirtyInstances.add(instance);\n      instance.ceReload(newComp.styles);\n      dirtyInstances.delete(instance);\n    } else if (instance.parent) {\n      queueJob(() => {\n        isHmrUpdating = true;\n        instance.parent.update();\n        isHmrUpdating = false;\n        dirtyInstances.delete(instance);\n      });\n    } else if (instance.appContext.reload) {\n      instance.appContext.reload();\n    } else if (typeof window !== \"undefined\") {\n      window.location.reload();\n    } else {\n      console.warn(\n        \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n      );\n    }\n    if (instance.root.ce && instance !== instance.root) {\n      instance.root.ce._removeChildStyle(oldComp);\n    }\n  }\n  queuePostFlushCb(() => {\n    hmrDirtyComponents.clear();\n  });\n}\nfunction updateComponentDef(oldComp, newComp) {\n  extend(oldComp, newComp);\n  for (const key in oldComp) {\n    if (key !== \"__file\" && !(key in newComp)) {\n      delete oldComp[key];\n    }\n  }\n}\nfunction tryWrap(fn) {\n  return (id, arg) => {\n    try {\n      return fn(id, arg);\n    } catch (e) {\n      console.error(e);\n      console.warn(\n        `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n      );\n    }\n  };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n  if (devtools$1) {\n    devtools$1.emit(event, ...args);\n  } else if (!devtoolsNotInstalled) {\n    buffer.push({ event, args });\n  }\n}\nfunction setDevtoolsHook$1(hook, target) {\n  var _a, _b;\n  devtools$1 = hook;\n  if (devtools$1) {\n    devtools$1.enabled = true;\n    buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n    buffer = [];\n  } else if (\n    // handle late devtools injection - only do this if we are in an actual\n    // browser environment to avoid the timer handle stalling test runner exit\n    // (#4815)\n    typeof window !== \"undefined\" && // some envs mock window but not fully\n    window.HTMLElement && // also exclude jsdom\n    // eslint-disable-next-line no-restricted-syntax\n    !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n  ) {\n    const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n    replay.push((newHook) => {\n      setDevtoolsHook$1(newHook, target);\n    });\n    setTimeout(() => {\n      if (!devtools$1) {\n        target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n        devtoolsNotInstalled = true;\n        buffer = [];\n      }\n    }, 3e3);\n  } else {\n    devtoolsNotInstalled = true;\n    buffer = [];\n  }\n}\nfunction devtoolsInitApp(app, version) {\n  emit$1(\"app:init\" /* APP_INIT */, app, version, {\n    Fragment,\n    Text,\n    Comment,\n    Static\n  });\n}\nfunction devtoolsUnmountApp(app) {\n  emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n  if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n  !devtools$1.cleanupBuffer(component)) {\n    _devtoolsComponentRemoved(component);\n  }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n  return (component) => {\n    emit$1(\n      hook,\n      component.appContext.app,\n      component.uid,\n      component.parent ? component.parent.uid : void 0,\n      component\n    );\n  };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n  return (component, type, time) => {\n    emit$1(hook, component.appContext.app, component.uid, component, type, time);\n  };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n  emit$1(\n    \"component:emit\" /* COMPONENT_EMIT */,\n    component.appContext.app,\n    component,\n    event,\n    params\n  );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance;\n  currentScopeId = instance && instance.type.__scopeId || null;\n  return prev;\n}\nfunction pushScopeId(id) {\n  currentScopeId = id;\n}\nfunction popScopeId() {\n  currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx) return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    let res;\n    try {\n      res = fn(...args);\n    } finally {\n      setCurrentRenderingInstance(prevInstance);\n      if (renderFnWithContext._d) {\n        setBlockTracking(1);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentUpdated(ctx);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n  if (isBuiltInDirective(name)) {\n    warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n  }\n}\nfunction withDirectives(vnode, directives) {\n  if (currentRenderingInstance === null) {\n    !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n    return vnode;\n  }\n  const instance = getComponentPublicInstance(currentRenderingInstance);\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (dir) {\n      if (isFunction(dir)) {\n        dir = {\n          mounted: dir,\n          updated: dir\n        };\n      }\n      if (dir.deep) {\n        traverse(value);\n      }\n      bindings.push({\n        dir,\n        instance,\n        value,\n        oldValue: void 0,\n        arg,\n        modifiers\n      });\n    }\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\n\nconst TeleportEndKey = Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n  const targetSelector = props && props.to;\n  if (isString(targetSelector)) {\n    if (!select) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n      );\n      return null;\n    } else {\n      const target = select(targetSelector);\n      if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n        warn$1(\n          `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n        );\n      }\n      return target;\n    }\n  } else {\n    if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n      warn$1(`Invalid Teleport target: ${targetSelector}`);\n    }\n    return targetSelector;\n  }\n};\nconst TeleportImpl = {\n  name: \"Teleport\",\n  __isTeleport: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n    const {\n      mc: mountChildren,\n      pc: patchChildren,\n      pbc: patchBlockChildren,\n      o: { insert, querySelector, createText, createComment }\n    } = internals;\n    const disabled = isTeleportDisabled(n2.props);\n    let { shapeFlag, children, dynamicChildren } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (n1 == null) {\n      const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n      const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n      insert(placeholder, container, anchor);\n      insert(mainAnchor, container, anchor);\n      const mount = (container2, anchor2) => {\n        if (shapeFlag & 16) {\n          if (parentComponent && parentComponent.isCE) {\n            parentComponent.ce._teleportTarget = container2;\n          }\n          mountChildren(\n            children,\n            container2,\n            anchor2,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      };\n      const mountToTarget = () => {\n        const target = n2.target = resolveTarget(n2.props, querySelector);\n        const targetAnchor = prepareAnchor(target, n2, createText, insert);\n        if (target) {\n          if (namespace !== \"svg\" && isTargetSVG(target)) {\n            namespace = \"svg\";\n          } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n            namespace = \"mathml\";\n          }\n          if (!disabled) {\n            mount(target, targetAnchor);\n            updateCssVars(n2, false);\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n          warn$1(\n            \"Invalid Teleport target on mount:\",\n            target,\n            `(${typeof target})`\n          );\n        }\n      };\n      if (disabled) {\n        mount(container, mainAnchor);\n        updateCssVars(n2, true);\n      }\n      if (isTeleportDeferred(n2.props)) {\n        queuePostRenderEffect(mountToTarget, parentSuspense);\n      } else {\n        mountToTarget();\n      }\n    } else {\n      n2.el = n1.el;\n      n2.targetStart = n1.targetStart;\n      const mainAnchor = n2.anchor = n1.anchor;\n      const target = n2.target = n1.target;\n      const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n      const wasDisabled = isTeleportDisabled(n1.props);\n      const currentContainer = wasDisabled ? container : target;\n      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n      if (namespace === \"svg\" || isTargetSVG(target)) {\n        namespace = \"svg\";\n      } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n        namespace = \"mathml\";\n      }\n      if (dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          currentContainer,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        traverseStaticChildren(n1, n2, true);\n      } else if (!optimized) {\n        patchChildren(\n          n1,\n          n2,\n          currentContainer,\n          currentAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          false\n        );\n      }\n      if (disabled) {\n        if (!wasDisabled) {\n          moveTeleport(\n            n2,\n            container,\n            mainAnchor,\n            internals,\n            1\n          );\n        } else {\n          if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n            n2.props.to = n1.props.to;\n          }\n        }\n      } else {\n        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n          const nextTarget = n2.target = resolveTarget(\n            n2.props,\n            querySelector\n          );\n          if (nextTarget) {\n            moveTeleport(\n              n2,\n              nextTarget,\n              null,\n              internals,\n              0\n            );\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Invalid Teleport target on update:\",\n              target,\n              `(${typeof target})`\n            );\n          }\n        } else if (wasDisabled) {\n          moveTeleport(\n            n2,\n            target,\n            targetAnchor,\n            internals,\n            1\n          );\n        }\n      }\n      updateCssVars(n2, disabled);\n    }\n  },\n  remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n    const {\n      shapeFlag,\n      children,\n      anchor,\n      targetStart,\n      targetAnchor,\n      target,\n      props\n    } = vnode;\n    if (target) {\n      hostRemove(targetStart);\n      hostRemove(targetAnchor);\n    }\n    doRemove && hostRemove(anchor);\n    if (shapeFlag & 16) {\n      const shouldRemove = doRemove || !isTeleportDisabled(props);\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        unmount(\n          child,\n          parentComponent,\n          parentSuspense,\n          shouldRemove,\n          !!child.dynamicChildren\n        );\n      }\n    }\n  },\n  move: moveTeleport,\n  hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n  if (moveType === 0) {\n    insert(vnode.targetAnchor, container, parentAnchor);\n  }\n  const { el, anchor, shapeFlag, children, props } = vnode;\n  const isReorder = moveType === 2;\n  if (isReorder) {\n    insert(el, container, parentAnchor);\n  }\n  if (!isReorder || isTeleportDisabled(props)) {\n    if (shapeFlag & 16) {\n      for (let i = 0; i < children.length; i++) {\n        move(\n          children[i],\n          container,\n          parentAnchor,\n          2\n        );\n      }\n    }\n  }\n  if (isReorder) {\n    insert(anchor, container, parentAnchor);\n  }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n  o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n  const target = vnode.target = resolveTarget(\n    vnode.props,\n    querySelector\n  );\n  if (target) {\n    const disabled = isTeleportDisabled(vnode.props);\n    const targetNode = target._lpa || target.firstChild;\n    if (vnode.shapeFlag & 16) {\n      if (disabled) {\n        vnode.anchor = hydrateChildren(\n          nextSibling(node),\n          vnode,\n          parentNode(node),\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        vnode.targetStart = targetNode;\n        vnode.targetAnchor = targetNode && nextSibling(targetNode);\n      } else {\n        vnode.anchor = nextSibling(node);\n        let targetAnchor = targetNode;\n        while (targetAnchor) {\n          if (targetAnchor && targetAnchor.nodeType === 8) {\n            if (targetAnchor.data === \"teleport start anchor\") {\n              vnode.targetStart = targetAnchor;\n            } else if (targetAnchor.data === \"teleport anchor\") {\n              vnode.targetAnchor = targetAnchor;\n              target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n              break;\n            }\n          }\n          targetAnchor = nextSibling(targetAnchor);\n        }\n        if (!vnode.targetAnchor) {\n          prepareAnchor(target, vnode, createText, insert);\n        }\n        hydrateChildren(\n          targetNode && nextSibling(targetNode),\n          vnode,\n          target,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n    updateCssVars(vnode, disabled);\n  }\n  return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n  const ctx = vnode.ctx;\n  if (ctx && ctx.ut) {\n    let node, anchor;\n    if (isDisabled) {\n      node = vnode.el;\n      anchor = vnode.anchor;\n    } else {\n      node = vnode.targetStart;\n      anchor = vnode.targetAnchor;\n    }\n    while (node && node !== anchor) {\n      if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n      node = node.nextSibling;\n    }\n    ctx.ut();\n  }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n  const targetStart = vnode.targetStart = createText(\"\");\n  const targetAnchor = vnode.targetAnchor = createText(\"\");\n  targetStart[TeleportEndKey] = targetAnchor;\n  if (target) {\n    insert(targetStart, target);\n    insert(targetAnchor, target);\n  }\n  return targetAnchor;\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n  mode: String,\n  appear: Boolean,\n  persisted: Boolean,\n  // enter\n  onBeforeEnter: TransitionHookValidator,\n  onEnter: TransitionHookValidator,\n  onAfterEnter: TransitionHookValidator,\n  onEnterCancelled: TransitionHookValidator,\n  // leave\n  onBeforeLeave: TransitionHookValidator,\n  onLeave: TransitionHookValidator,\n  onAfterLeave: TransitionHookValidator,\n  onLeaveCancelled: TransitionHookValidator,\n  // appear\n  onBeforeAppear: TransitionHookValidator,\n  onAppear: TransitionHookValidator,\n  onAfterAppear: TransitionHookValidator,\n  onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n  const subTree = instance.subTree;\n  return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: BaseTransitionPropsValidators,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      const child = findNonCommentChild(children);\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n        warn$1(`invalid <transition> mode: ${mode}`);\n      }\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getInnerChild$1(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      let enterHooks = resolveTransitionHooks(\n        innerChild,\n        rawProps,\n        state,\n        instance,\n        // #11061, ensure enterHooks is fresh after clone\n        (hooks) => enterHooks = hooks\n      );\n      if (innerChild.type !== Comment) {\n        setTransitionHooks(innerChild, enterHooks);\n      }\n      const oldChild = instance.subTree;\n      const oldInnerChild = oldChild && getInnerChild$1(oldChild);\n      if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {\n        const leavingHooks = resolveTransitionHooks(\n          oldInnerChild,\n          rawProps,\n          state,\n          instance\n        );\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\" && innerChild.type !== Comment) {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            if (!(instance.job.flags & 8)) {\n              instance.update();\n            }\n            delete leavingHooks.afterLeave;\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(\n              state,\n              oldInnerChild\n            );\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el[leaveCbKey] = () => {\n              earlyRemove();\n              el[leaveCbKey] = void 0;\n              delete enterHooks.delayedLeave;\n            };\n            enterHooks.delayedLeave = delayedLeave;\n          };\n        }\n      }\n      return child;\n    };\n  }\n};\nfunction findNonCommentChild(children) {\n  let child = children[0];\n  if (children.length > 1) {\n    let hasFound = false;\n    for (const c of children) {\n      if (c.type !== Comment) {\n        if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n          warn$1(\n            \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n          );\n          break;\n        }\n        child = c;\n        hasFound = true;\n        if (!!!(process.env.NODE_ENV !== \"production\")) break;\n      }\n    }\n  }\n  return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n  const {\n    appear,\n    mode,\n    persisted = false,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onEnterCancelled,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n    onLeaveCancelled,\n    onBeforeAppear,\n    onAppear,\n    onAfterAppear,\n    onAppearCancelled\n  } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook = (hook, args) => {\n    hook && callWithAsyncErrorHandling(\n      hook,\n      instance,\n      9,\n      args\n    );\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook(hook, args);\n    if (isArray(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1)) done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el[leaveCbKey]) {\n        el[leaveCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n        leavingVNode.el[leaveCbKey]();\n      }\n      callHook(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el[enterCbKey] = (cancelled) => {\n        if (called) return;\n        called = true;\n        if (cancelled) {\n          callHook(cancelHook, [el]);\n        } else {\n          callHook(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el[enterCbKey] = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove) {\n      const key2 = String(vnode.key);\n      if (el[enterCbKey]) {\n        el[enterCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      if (state.isUnmounting) {\n        return remove();\n      }\n      callHook(onBeforeLeave, [el]);\n      let called = false;\n      const done = el[leaveCbKey] = (cancelled) => {\n        if (called) return;\n        called = true;\n        remove();\n        if (cancelled) {\n          callHook(onLeaveCancelled, [el]);\n        } else {\n          callHook(onAfterLeave, [el]);\n        }\n        el[leaveCbKey] = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      const hooks2 = resolveTransitionHooks(\n        vnode2,\n        props,\n        state,\n        instance,\n        postClone\n      );\n      if (postClone) postClone(hooks2);\n      return hooks2;\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getInnerChild$1(vnode) {\n  if (!isKeepAlive(vnode)) {\n    if (isTeleport(vnode.type) && vnode.children) {\n      return findNonCommentChild(vnode.children);\n    }\n    return vnode;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n    return vnode.component.subTree;\n  }\n  const { shapeFlag, children } = vnode;\n  if (children) {\n    if (shapeFlag & 16) {\n      return children[0];\n    }\n    if (shapeFlag & 32 && isFunction(children.default)) {\n      return children.default();\n    }\n  }\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    vnode.transition = hooks;\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128) keyedFragmentCount++;\n      ret = ret.concat(\n        getTransitionRawChildren(child.children, keepComment, key)\n      );\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n  return isFunction(options) ? (\n    // #8236: extend call and options.name access are considered side-effects\n    // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n    /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n  ) : options;\n}\n\nfunction useId() {\n  const i = getCurrentInstance();\n  if (i) {\n    return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `useId() is called when there is no active component instance to be associated with.`\n    );\n  }\n  return \"\";\n}\nfunction markAsyncBoundary(instance) {\n  instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n  const i = getCurrentInstance();\n  const r = shallowRef(null);\n  if (i) {\n    const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n    let desc;\n    if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n      warn$1(`useTemplateRef('${key}') already exists.`);\n    } else {\n      Object.defineProperty(refs, key, {\n        enumerable: true,\n        get: () => r.value,\n        set: (val) => r.value = val\n      });\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `useTemplateRef() is called when there is no active component instance to be associated with.`\n    );\n  }\n  const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    knownTemplateRefs.add(ret);\n  }\n  return ret;\n}\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray(rawRef)) {\n    rawRef.forEach(\n      (r, i) => setRef(\n        r,\n        oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n        parentSuspense,\n        vnode,\n        isUnmount\n      )\n    );\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n    warn$1(\n      `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n    );\n    return;\n  }\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  const rawSetupState = toRaw(setupState);\n  const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n        warn$1(\n          `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n        );\n      }\n      if (knownTemplateRefs.has(rawSetupState[key])) {\n        return false;\n      }\n    }\n    return hasOwn(rawSetupState, key);\n  };\n  if (oldRef != null && oldRef !== ref) {\n    if (isString(oldRef)) {\n      refs[oldRef] = null;\n      if (canSetSetupRef(oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString(ref);\n    const _isRef = isRef(ref);\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (rawRef.f) {\n          const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (canSetSetupRef(ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k) refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (canSetSetupRef(ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k) refs[rawRef.k] = value;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n        }\n      };\n      if (value) {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      } else {\n        doSet();\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n    }\n  }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n  if (hasLoggedMismatchError) {\n    return;\n  }\n  console.error(\"Hydration completed but contains mismatches.\");\n  hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n  if (container.nodeType !== 1) return void 0;\n  if (isSVGContainer(container)) return \"svg\";\n  if (isMathMLContainer(container)) return \"mathml\";\n  return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n  const {\n    mt: mountComponent,\n    p: patch,\n    o: {\n      patchProp,\n      createText,\n      nextSibling,\n      parentNode,\n      remove,\n      insert,\n      createComment\n    }\n  } = rendererInternals;\n  const hydrate = (vnode, container) => {\n    if (!container.hasChildNodes()) {\n      (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n        `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n      );\n      patch(null, vnode, container);\n      flushPostFlushCbs();\n      container._vnode = vnode;\n      return;\n    }\n    hydrateNode(container.firstChild, vnode, null, null, null);\n    flushPostFlushCbs();\n    container._vnode = vnode;\n  };\n  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const isFragmentStart = isComment(node) && node.data === \"[\";\n    const onMismatch = () => handleMismatch(\n      node,\n      vnode,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      isFragmentStart\n    );\n    const { type, ref, shapeFlag, patchFlag } = vnode;\n    let domType = node.nodeType;\n    vnode.el = node;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      def(node, \"__vnode\", vnode, true);\n      def(node, \"__vueParentComponent\", parentComponent, true);\n    }\n    if (patchFlag === -2) {\n      optimized = false;\n      vnode.dynamicChildren = null;\n    }\n    let nextNode = null;\n    switch (type) {\n      case Text:\n        if (domType !== 3) {\n          if (vnode.children === \"\") {\n            insert(vnode.el = createText(\"\"), parentNode(node), node);\n            nextNode = node;\n          } else {\n            nextNode = onMismatch();\n          }\n        } else {\n          if (node.data !== vnode.children) {\n            (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n              `Hydration text mismatch in`,\n              node.parentNode,\n              `\n  - rendered on server: ${JSON.stringify(\n                node.data\n              )}\n  - expected on client: ${JSON.stringify(vnode.children)}`\n            );\n            logMismatchError();\n            node.data = vnode.children;\n          }\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Comment:\n        if (isTemplateNode(node)) {\n          nextNode = nextSibling(node);\n          replaceNode(\n            vnode.el = node.content.firstChild,\n            node,\n            parentComponent\n          );\n        } else if (domType !== 8 || isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Static:\n        if (isFragmentStart) {\n          node = nextSibling(node);\n          domType = node.nodeType;\n        }\n        if (domType === 1 || domType === 3) {\n          nextNode = node;\n          const needToAdoptContent = !vnode.children.length;\n          for (let i = 0; i < vnode.staticCount; i++) {\n            if (needToAdoptContent)\n              vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n            if (i === vnode.staticCount - 1) {\n              vnode.anchor = nextNode;\n            }\n            nextNode = nextSibling(nextNode);\n          }\n          return isFragmentStart ? nextSibling(nextNode) : nextNode;\n        } else {\n          onMismatch();\n        }\n        break;\n      case Fragment:\n        if (!isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = hydrateFragment(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            slotScopeIds,\n            optimized\n          );\n        }\n        break;\n      default:\n        if (shapeFlag & 1) {\n          if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = hydrateElement(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized\n            );\n          }\n        } else if (shapeFlag & 6) {\n          vnode.slotScopeIds = slotScopeIds;\n          const container = parentNode(node);\n          if (isFragmentStart) {\n            nextNode = locateClosingAnchor(node);\n          } else if (isComment(node) && node.data === \"teleport start\") {\n            nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n          } else {\n            nextNode = nextSibling(node);\n          }\n          mountComponent(\n            vnode,\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            getContainerType(container),\n            optimized\n          );\n          if (isAsyncWrapper(vnode)) {\n            let subTree;\n            if (isFragmentStart) {\n              subTree = createVNode(Fragment);\n              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n            } else {\n              subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n            }\n            subTree.el = node;\n            vnode.component.subTree = subTree;\n          }\n        } else if (shapeFlag & 64) {\n          if (domType !== 8) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = vnode.type.hydrate(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized,\n              rendererInternals,\n              hydrateChildren\n            );\n          }\n        } else if (shapeFlag & 128) {\n          nextNode = vnode.type.hydrate(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            getContainerType(parentNode(node)),\n            slotScopeIds,\n            optimized,\n            rendererInternals,\n            hydrateNode\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n          warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode);\n    }\n    return nextNode;\n  };\n  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n    const forcePatch = type === \"input\" || type === \"option\";\n    if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      let needCallTransitionHooks = false;\n      if (isTemplateNode(el)) {\n        needCallTransitionHooks = needTransition(\n          null,\n          // no need check parentSuspense in hydration\n          transition\n        ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n        const content = el.content.firstChild;\n        if (needCallTransitionHooks) {\n          transition.beforeEnter(content);\n        }\n        replaceNode(content, el, parentComponent);\n        vnode.el = el = content;\n      }\n      if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n      !(props && (props.innerHTML || props.textContent))) {\n        let next = hydrateChildren(\n          el.firstChild,\n          vnode,\n          el,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        let hasWarned = false;\n        while (next) {\n          if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n            if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n              warn$1(\n                `Hydration children mismatch on`,\n                el,\n                `\nServer rendered element contains more child nodes than client vdom.`\n              );\n              hasWarned = true;\n            }\n            logMismatchError();\n          }\n          const cur = next;\n          next = next.nextSibling;\n          remove(cur);\n        }\n      } else if (shapeFlag & 8) {\n        let clientText = vnode.children;\n        if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n          clientText = clientText.slice(1);\n        }\n        if (el.textContent !== clientText) {\n          if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n            (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n              `Hydration text content mismatch on`,\n              el,\n              `\n  - rendered on server: ${el.textContent}\n  - expected on client: ${vnode.children}`\n            );\n            logMismatchError();\n          }\n          el.textContent = vnode.children;\n        }\n      }\n      if (props) {\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n          const isCustomElement = el.tagName.includes(\"-\");\n          for (const key in props) {\n            if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n            // as it could have mutated the DOM in any possible way\n            !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n              logMismatchError();\n            }\n            if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n            key[0] === \".\" || isCustomElement) {\n              patchProp(el, key, null, props[key], void 0, parentComponent);\n            }\n          }\n        } else if (props.onClick) {\n          patchProp(\n            el,\n            \"onClick\",\n            null,\n            props.onClick,\n            void 0,\n            parentComponent\n          );\n        } else if (patchFlag & 4 && isReactive(props.style)) {\n          for (const key in props.style) props.style[key];\n        }\n      }\n      let vnodeHooks;\n      if (vnodeHooks = props && props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n      }\n      if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n        queueEffectWithSuspense(() => {\n          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n          needCallTransitionHooks && transition.enter(el);\n          dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n        }, parentSuspense);\n      }\n    }\n    return el.nextSibling;\n  };\n  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!parentVNode.dynamicChildren;\n    const children = parentVNode.children;\n    const l = children.length;\n    let hasWarned = false;\n    for (let i = 0; i < l; i++) {\n      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n      const isText = vnode.type === Text;\n      if (node) {\n        if (isText && !optimized) {\n          if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n            insert(\n              createText(\n                node.data.slice(vnode.children.length)\n              ),\n              container,\n              nextSibling(node)\n            );\n            node.data = vnode.children;\n          }\n        }\n        node = hydrateNode(\n          node,\n          vnode,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      } else if (isText && !vnode.children) {\n        insert(vnode.el = createText(\"\"), container);\n      } else {\n        if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n          if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n            warn$1(\n              `Hydration children mismatch on`,\n              container,\n              `\nServer rendered element contains fewer child nodes than client vdom.`\n            );\n            hasWarned = true;\n          }\n          logMismatchError();\n        }\n        patch(\n          null,\n          vnode,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          getContainerType(container),\n          slotScopeIds\n        );\n      }\n    }\n    return node;\n  };\n  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    const container = parentNode(node);\n    const next = hydrateChildren(\n      nextSibling(node),\n      vnode,\n      container,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      optimized\n    );\n    if (next && isComment(next) && next.data === \"]\") {\n      return nextSibling(vnode.anchor = next);\n    } else {\n      logMismatchError();\n      insert(vnode.anchor = createComment(`]`), container, next);\n      return next;\n    }\n  };\n  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n    if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n      (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n        `Hydration node mismatch:\n- rendered on server:`,\n        node,\n        node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n        `\n- expected on client:`,\n        vnode.type\n      );\n      logMismatchError();\n    }\n    vnode.el = null;\n    if (isFragment) {\n      const end = locateClosingAnchor(node);\n      while (true) {\n        const next2 = nextSibling(node);\n        if (next2 && next2 !== end) {\n          remove(next2);\n        } else {\n          break;\n        }\n      }\n    }\n    const next = nextSibling(node);\n    const container = parentNode(node);\n    remove(node);\n    patch(\n      null,\n      vnode,\n      container,\n      next,\n      parentComponent,\n      parentSuspense,\n      getContainerType(container),\n      slotScopeIds\n    );\n    return next;\n  };\n  const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n    let match = 0;\n    while (node) {\n      node = nextSibling(node);\n      if (node && isComment(node)) {\n        if (node.data === open) match++;\n        if (node.data === close) {\n          if (match === 0) {\n            return nextSibling(node);\n          } else {\n            match--;\n          }\n        }\n      }\n    }\n    return node;\n  };\n  const replaceNode = (newNode, oldNode, parentComponent) => {\n    const parentNode2 = oldNode.parentNode;\n    if (parentNode2) {\n      parentNode2.replaceChild(newNode, oldNode);\n    }\n    let parent = parentComponent;\n    while (parent) {\n      if (parent.vnode.el === oldNode) {\n        parent.vnode.el = parent.subTree.el = newNode;\n      }\n      parent = parent.parent;\n    }\n  };\n  const isTemplateNode = (node) => {\n    return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n  };\n  return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n  let mismatchType;\n  let mismatchKey;\n  let actual;\n  let expected;\n  if (key === \"class\") {\n    actual = el.getAttribute(\"class\");\n    expected = normalizeClass(clientValue);\n    if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n      mismatchType = 2 /* CLASS */;\n      mismatchKey = `class`;\n    }\n  } else if (key === \"style\") {\n    actual = el.getAttribute(\"style\") || \"\";\n    expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n    const actualMap = toStyleMap(actual);\n    const expectedMap = toStyleMap(expected);\n    if (vnode.dirs) {\n      for (const { dir, value } of vnode.dirs) {\n        if (dir.name === \"show\" && !value) {\n          expectedMap.set(\"display\", \"none\");\n        }\n      }\n    }\n    if (instance) {\n      resolveCssVars(instance, vnode, expectedMap);\n    }\n    if (!isMapEqual(actualMap, expectedMap)) {\n      mismatchType = 3 /* STYLE */;\n      mismatchKey = \"style\";\n    }\n  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n    if (isBooleanAttr(key)) {\n      actual = el.hasAttribute(key);\n      expected = includeBooleanAttr(clientValue);\n    } else if (clientValue == null) {\n      actual = el.hasAttribute(key);\n      expected = false;\n    } else {\n      if (el.hasAttribute(key)) {\n        actual = el.getAttribute(key);\n      } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n        actual = el.value;\n      } else {\n        actual = false;\n      }\n      expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n    }\n    if (actual !== expected) {\n      mismatchType = 4 /* ATTRIBUTE */;\n      mismatchKey = key;\n    }\n  }\n  if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n    const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n    const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n    const postSegment = `\n  - rendered on server: ${format(actual)}\n  - expected on client: ${format(expected)}\n  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n  You should fix the source of the mismatch.`;\n    {\n      warn$1(preSegment, el, postSegment);\n    }\n    return true;\n  }\n  return false;\n}\nfunction toClassSet(str) {\n  return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const s of a) {\n    if (!b.has(s)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction toStyleMap(str) {\n  const styleMap = /* @__PURE__ */ new Map();\n  for (const item of str.split(\";\")) {\n    let [key, value] = item.split(\":\");\n    key = key.trim();\n    value = value && value.trim();\n    if (key && value) {\n      styleMap.set(key, value);\n    }\n  }\n  return styleMap;\n}\nfunction isMapEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const [key, value] of a) {\n    if (value !== b.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n  const root = instance.subTree;\n  if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n    const cssVars = instance.getCssVars();\n    for (const key in cssVars) {\n      expectedMap.set(\n        `--${getEscapedCssVarName(key, false)}`,\n        String(cssVars[key])\n      );\n    }\n  }\n  if (vnode === root && instance.parent) {\n    resolveCssVars(instance.parent, instance.vnode, expectedMap);\n  }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n  [0 /* TEXT */]: \"text\",\n  [1 /* CHILDREN */]: \"children\",\n  [2 /* CLASS */]: \"class\",\n  [3 /* STYLE */]: \"style\",\n  [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n  if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n    while (el && !el.hasAttribute(allowMismatchAttr)) {\n      el = el.parentElement;\n    }\n  }\n  const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n  if (allowedAttr == null) {\n    return false;\n  } else if (allowedAttr === \"\") {\n    return true;\n  } else {\n    const list = allowedAttr.split(\",\");\n    if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n      return true;\n    }\n    return allowedAttr.split(\",\").includes(MismatchTypeString[allowedType]);\n  }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n  const id = requestIdleCallback(hydrate, { timeout });\n  return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n  const { top, left, bottom, right } = el.getBoundingClientRect();\n  const { innerHeight, innerWidth } = window;\n  return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n  const ob = new IntersectionObserver((entries) => {\n    for (const e of entries) {\n      if (!e.isIntersecting) continue;\n      ob.disconnect();\n      hydrate();\n      break;\n    }\n  }, opts);\n  forEach((el) => {\n    if (!(el instanceof Element)) return;\n    if (elementIsVisibleInViewport(el)) {\n      hydrate();\n      ob.disconnect();\n      return false;\n    }\n    ob.observe(el);\n  });\n  return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n  if (query) {\n    const mql = matchMedia(query);\n    if (mql.matches) {\n      hydrate();\n    } else {\n      mql.addEventListener(\"change\", hydrate, { once: true });\n      return () => mql.removeEventListener(\"change\", hydrate);\n    }\n  }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n  if (isString(interactions)) interactions = [interactions];\n  let hasHydrated = false;\n  const doHydrate = (e) => {\n    if (!hasHydrated) {\n      hasHydrated = true;\n      teardown();\n      hydrate();\n      e.target.dispatchEvent(new e.constructor(e.type, e));\n    }\n  };\n  const teardown = () => {\n    forEach((el) => {\n      for (const i of interactions) {\n        el.removeEventListener(i, doHydrate);\n      }\n    });\n  };\n  forEach((el) => {\n    for (const i of interactions) {\n      el.addEventListener(i, doHydrate, { once: true });\n    }\n  });\n  return teardown;\n};\nfunction forEachElement(node, cb) {\n  if (isComment(node) && node.data === \"[\") {\n    let depth = 1;\n    let next = node.nextSibling;\n    while (next) {\n      if (next.nodeType === 1) {\n        const result = cb(next);\n        if (result === false) {\n          break;\n        }\n      } else if (isComment(next)) {\n        if (next.data === \"]\") {\n          if (--depth === 0) break;\n        } else if (next.data === \"[\") {\n          depth++;\n        }\n      }\n      next = next.nextSibling;\n    }\n  } else {\n    cb(node);\n  }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n  if (isFunction(source)) {\n    source = { loader: source };\n  }\n  const {\n    loader,\n    loadingComponent,\n    errorComponent,\n    delay = 200,\n    hydrate: hydrateStrategy,\n    timeout,\n    // undefined = never times out\n    suspensible = true,\n    onError: userOnError\n  } = source;\n  let pendingRequest = null;\n  let resolvedComp;\n  let retries = 0;\n  const retry = () => {\n    retries++;\n    pendingRequest = null;\n    return load();\n  };\n  const load = () => {\n    let thisRequest;\n    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n      err = err instanceof Error ? err : new Error(String(err));\n      if (userOnError) {\n        return new Promise((resolve, reject) => {\n          const userRetry = () => resolve(retry());\n          const userFail = () => reject(err);\n          userOnError(err, userRetry, userFail, retries + 1);\n        });\n      } else {\n        throw err;\n      }\n    }).then((comp) => {\n      if (thisRequest !== pendingRequest && pendingRequest) {\n        return pendingRequest;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n        warn$1(\n          `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n        );\n      }\n      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n        comp = comp.default;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n        throw new Error(`Invalid async component load result: ${comp}`);\n      }\n      resolvedComp = comp;\n      return comp;\n    }));\n  };\n  return defineComponent({\n    name: \"AsyncComponentWrapper\",\n    __asyncLoader: load,\n    __asyncHydrate(el, instance, hydrate) {\n      const doHydrate = hydrateStrategy ? () => {\n        const teardown = hydrateStrategy(\n          hydrate,\n          (cb) => forEachElement(el, cb)\n        );\n        if (teardown) {\n          (instance.bum || (instance.bum = [])).push(teardown);\n        }\n      } : hydrate;\n      if (resolvedComp) {\n        doHydrate();\n      } else {\n        load().then(() => !instance.isUnmounted && doHydrate());\n      }\n    },\n    get __asyncResolved() {\n      return resolvedComp;\n    },\n    setup() {\n      const instance = currentInstance;\n      markAsyncBoundary(instance);\n      if (resolvedComp) {\n        return () => createInnerComp(resolvedComp, instance);\n      }\n      const onError = (err) => {\n        pendingRequest = null;\n        handleError(\n          err,\n          instance,\n          13,\n          !errorComponent\n        );\n      };\n      if (suspensible && instance.suspense || isInSSRComponentSetup) {\n        return load().then((comp) => {\n          return () => createInnerComp(comp, instance);\n        }).catch((err) => {\n          onError(err);\n          return () => errorComponent ? createVNode(errorComponent, {\n            error: err\n          }) : null;\n        });\n      }\n      const loaded = ref(false);\n      const error = ref();\n      const delayed = ref(!!delay);\n      if (delay) {\n        setTimeout(() => {\n          delayed.value = false;\n        }, delay);\n      }\n      if (timeout != null) {\n        setTimeout(() => {\n          if (!loaded.value && !error.value) {\n            const err = new Error(\n              `Async component timed out after ${timeout}ms.`\n            );\n            onError(err);\n            error.value = err;\n          }\n        }, timeout);\n      }\n      load().then(() => {\n        loaded.value = true;\n        if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n          instance.parent.update();\n        }\n      }).catch((err) => {\n        onError(err);\n        error.value = err;\n      });\n      return () => {\n        if (loaded.value && resolvedComp) {\n          return createInnerComp(resolvedComp, instance);\n        } else if (error.value && errorComponent) {\n          return createVNode(errorComponent, {\n            error: error.value\n          });\n        } else if (loadingComponent && !delayed.value) {\n          return createVNode(loadingComponent);\n        }\n      };\n    }\n  });\n}\nfunction createInnerComp(comp, parent) {\n  const { ref: ref2, props, children, ce } = parent.vnode;\n  const vnode = createVNode(comp, props, children);\n  vnode.ref = ref2;\n  vnode.ce = ce;\n  delete parent.vnode.ce;\n  return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n  name: `KeepAlive`,\n  // Marker for special handling inside the renderer. We are not using a ===\n  // check directly on KeepAlive in the renderer, because importing it directly\n  // would prevent it from being tree-shaken.\n  __isKeepAlive: true,\n  props: {\n    include: [String, RegExp, Array],\n    exclude: [String, RegExp, Array],\n    max: [String, Number]\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const sharedContext = instance.ctx;\n    if (!sharedContext.renderer) {\n      return () => {\n        const children = slots.default && slots.default();\n        return children && children.length === 1 ? children[0] : children;\n      };\n    }\n    const cache = /* @__PURE__ */ new Map();\n    const keys = /* @__PURE__ */ new Set();\n    let current = null;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.__v_cache = cache;\n    }\n    const parentSuspense = instance.suspense;\n    const {\n      renderer: {\n        p: patch,\n        m: move,\n        um: _unmount,\n        o: { createElement }\n      }\n    } = sharedContext;\n    const storageContainer = createElement(\"div\");\n    sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n      const instance2 = vnode.component;\n      move(vnode, container, anchor, 0, parentSuspense);\n      patch(\n        instance2.vnode,\n        vnode,\n        container,\n        anchor,\n        instance2,\n        parentSuspense,\n        namespace,\n        vnode.slotScopeIds,\n        optimized\n      );\n      queuePostRenderEffect(() => {\n        instance2.isDeactivated = false;\n        if (instance2.a) {\n          invokeArrayFns(instance2.a);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    sharedContext.deactivate = (vnode) => {\n      const instance2 = vnode.component;\n      invalidateMount(instance2.m);\n      invalidateMount(instance2.a);\n      move(vnode, storageContainer, null, 1, parentSuspense);\n      queuePostRenderEffect(() => {\n        if (instance2.da) {\n          invokeArrayFns(instance2.da);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n        instance2.isDeactivated = true;\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    function unmount(vnode) {\n      resetShapeFlag(vnode);\n      _unmount(vnode, instance, parentSuspense, true);\n    }\n    function pruneCache(filter) {\n      cache.forEach((vnode, key) => {\n        const name = getComponentName(vnode.type);\n        if (name && !filter(name)) {\n          pruneCacheEntry(key);\n        }\n      });\n    }\n    function pruneCacheEntry(key) {\n      const cached = cache.get(key);\n      if (cached && (!current || !isSameVNodeType(cached, current))) {\n        unmount(cached);\n      } else if (current) {\n        resetShapeFlag(current);\n      }\n      cache.delete(key);\n      keys.delete(key);\n    }\n    watch(\n      () => [props.include, props.exclude],\n      ([include, exclude]) => {\n        include && pruneCache((name) => matches(include, name));\n        exclude && pruneCache((name) => !matches(exclude, name));\n      },\n      // prune post-render after `current` has been updated\n      { flush: \"post\", deep: true }\n    );\n    let pendingCacheKey = null;\n    const cacheSubtree = () => {\n      if (pendingCacheKey != null) {\n        if (isSuspense(instance.subTree.type)) {\n          queuePostRenderEffect(() => {\n            cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n          }, instance.subTree.suspense);\n        } else {\n          cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n        }\n      }\n    };\n    onMounted(cacheSubtree);\n    onUpdated(cacheSubtree);\n    onBeforeUnmount(() => {\n      cache.forEach((cached) => {\n        const { subTree, suspense } = instance;\n        const vnode = getInnerChild(subTree);\n        if (cached.type === vnode.type && cached.key === vnode.key) {\n          resetShapeFlag(vnode);\n          const da = vnode.component.da;\n          da && queuePostRenderEffect(da, suspense);\n          return;\n        }\n        unmount(cached);\n      });\n    });\n    return () => {\n      pendingCacheKey = null;\n      if (!slots.default) {\n        return current = null;\n      }\n      const children = slots.default();\n      const rawVNode = children[0];\n      if (children.length > 1) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`KeepAlive should contain exactly one component child.`);\n        }\n        current = null;\n        return children;\n      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n        current = null;\n        return rawVNode;\n      }\n      let vnode = getInnerChild(rawVNode);\n      if (vnode.type === Comment) {\n        current = null;\n        return vnode;\n      }\n      const comp = vnode.type;\n      const name = getComponentName(\n        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n      );\n      const { include, exclude, max } = props;\n      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n        vnode.shapeFlag &= ~256;\n        current = vnode;\n        return rawVNode;\n      }\n      const key = vnode.key == null ? comp : vnode.key;\n      const cachedVNode = cache.get(key);\n      if (vnode.el) {\n        vnode = cloneVNode(vnode);\n        if (rawVNode.shapeFlag & 128) {\n          rawVNode.ssContent = vnode;\n        }\n      }\n      pendingCacheKey = key;\n      if (cachedVNode) {\n        vnode.el = cachedVNode.el;\n        vnode.component = cachedVNode.component;\n        if (vnode.transition) {\n          setTransitionHooks(vnode, vnode.transition);\n        }\n        vnode.shapeFlag |= 512;\n        keys.delete(key);\n        keys.add(key);\n      } else {\n        keys.add(key);\n        if (max && keys.size > parseInt(max, 10)) {\n          pruneCacheEntry(keys.values().next().value);\n        }\n      }\n      vnode.shapeFlag |= 256;\n      current = vnode;\n      return isSuspense(rawVNode.type) ? rawVNode : vnode;\n    };\n  }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n  if (isArray(pattern)) {\n    return pattern.some((p) => matches(p, name));\n  } else if (isString(pattern)) {\n    return pattern.split(\",\").includes(name);\n  } else if (isRegExp(pattern)) {\n    pattern.lastIndex = 0;\n    return pattern.test(name);\n  }\n  return false;\n}\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(\n    type,\n    hook,\n    keepAliveRoot,\n    true\n    /* prepend */\n  );\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction resetShapeFlag(vnode) {\n  vnode.shapeFlag &= ~256;\n  vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      pauseTracking();\n      const reset = setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      reset();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n    warn$1(\n      `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n    );\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n  if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n    injectHook(lifecycle, (...args) => hook(...args), target);\n  }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n  \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n  \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n  \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n  if (isString(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance = currentRenderingInstance || currentInstance;\n  if (instance) {\n    const Component = instance.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(\n        Component,\n        false\n      );\n      if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n        return Component;\n      }\n    }\n    const res = (\n      // local registration\n      // check instance[type] first which is resolved for options API\n      resolve(instance[type] || Component[type], name) || // global registration\n      resolve(instance.appContext[type], name)\n    );\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n      const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n      warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n    }\n    return res;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n    );\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  const sourceIsArray = isArray(source);\n  if (sourceIsArray || isString(source)) {\n    const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n    let needsWrap = false;\n    if (sourceIsReactiveArray) {\n      needsWrap = !isShallow(source);\n      source = shallowReadArray(source);\n    }\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(\n        needsWrap ? toReactive(source[i]) : source[i],\n        i,\n        void 0,\n        cached && cached[i]\n      );\n    }\n  } else if (typeof source === \"number\") {\n    if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n      warn$1(`The v-for range expect an integer value but got ${source}.`);\n    }\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(\n        source,\n        (item, i) => renderItem(item, i, void 0, cached && cached[i])\n      );\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.key ? (...args) => {\n        const res = slot.fn(...args);\n        if (res) res.key = slot.key;\n        return res;\n      } : slot.fn;\n    }\n  }\n  return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n    if (name !== \"default\") props.name = name;\n    return openBlock(), createBlock(\n      Fragment,\n      null,\n      [createVNode(\"slot\", props, fallback && fallback())],\n      64\n    );\n  }\n  let slot = slots[name];\n  if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n    warn$1(\n      `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n    );\n    slot = () => [];\n  }\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n  // key attached in the `createSlots` helper, respect that\n  validSlotContent && validSlotContent.key;\n  const rendered = createBlock(\n    Fragment,\n    {\n      key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n      (!validSlotContent && fallback ? \"_fb\" : \"\")\n    },\n    validSlotContent || (fallback ? fallback() : []),\n    validSlotContent && slots._ === 1 ? 64 : -2\n  );\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child)) return true;\n    if (child.type === Comment) return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n  const ret = {};\n  if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n    warn$1(`v-on with no argument expects an object value.`);\n    return ret;\n  }\n  for (const key in obj) {\n    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n  }\n  return ret;\n}\n\nconst getPublicInstance = (i) => {\n  if (!i) return null;\n  if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n  // Move PURE marker to new line to workaround compiler discarding it\n  // due to type annotation\n  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n    $: (i) => i,\n    $el: (i) => i.vnode.el,\n    $data: (i) => i.data,\n    $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n    $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n    $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n    $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n    $parent: (i) => getPublicInstance(i.parent),\n    $root: (i) => getPublicInstance(i.root),\n    $host: (i) => i.ce,\n    $emit: (i) => i.emit,\n    $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n    $forceUpdate: (i) => i.f || (i.f = () => {\n      queueJob(i.update);\n    }),\n    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n    $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n  })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance }, key) {\n    if (key === \"__v_skip\") {\n      return true;\n    }\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n    if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n      return true;\n    }\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1 /* SETUP */:\n            return setupState[key];\n          case 2 /* DATA */:\n            return data[key];\n          case 4 /* CONTEXT */:\n            return ctx[key];\n          case 3 /* PROPS */:\n            return props[key];\n        }\n      } else if (hasSetupBinding(setupState, key)) {\n        accessCache[key] = 1 /* SETUP */;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2 /* DATA */;\n        return data[key];\n      } else if (\n        // only cache other properties when instance has declared (thus stable)\n        // props\n        (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n      ) {\n        accessCache[key] = 3 /* PROPS */;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4 /* CONTEXT */;\n        return ctx[key];\n      } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n        accessCache[key] = 0 /* OTHER */;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance.attrs, \"get\", \"\");\n        !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n      } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n        track(instance, \"get\", key);\n      }\n      return publicGetter(instance);\n    } else if (\n      // css module (injected by vue-loader)\n      (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n    ) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4 /* CONTEXT */;\n      return ctx[key];\n    } else if (\n      // global properties\n      globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n    ) {\n      {\n        return globalProperties[key];\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n    // to infinite warning loop\n    key.indexOf(\"__v\") !== 0)) {\n      if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n        );\n      } else if (instance === currentRenderingInstance) {\n        warn$1(\n          `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n        );\n      }\n    }\n  },\n  set({ _: instance }, key, value) {\n    const { data, setupState, ctx } = instance;\n    if (hasSetupBinding(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n      warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n      return false;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance.props, key)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n      );\n      return false;\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          value\n        });\n      } else {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({\n    _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n  }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n  PublicInstanceProxyHandlers.ownKeys = (target) => {\n    warn$1(\n      `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n    );\n    return Reflect.ownKeys(target);\n  };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, {\n  get(target, key) {\n    if (key === Symbol.unscopables) {\n      return;\n    }\n    return PublicInstanceProxyHandlers.get(target, key, target);\n  },\n  has(_, key) {\n    const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n    if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n      warn$1(\n        `Property ${JSON.stringify(\n          key\n        )} should not start with _ which is a reserved prefix for Vue internals.`\n      );\n    }\n    return has;\n  }\n});\nfunction createDevRenderContext(instance) {\n  const target = {};\n  Object.defineProperty(target, `_`, {\n    configurable: true,\n    enumerable: false,\n    get: () => instance\n  });\n  Object.keys(publicPropertiesMap).forEach((key) => {\n    Object.defineProperty(target, key, {\n      configurable: true,\n      enumerable: false,\n      get: () => publicPropertiesMap[key](instance),\n      // intercepted by the proxy so no need for implementation,\n      // but needed to prevent set errors\n      set: NOOP\n    });\n  });\n  return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n  const {\n    ctx,\n    propsOptions: [propsOptions]\n  } = instance;\n  if (propsOptions) {\n    Object.keys(propsOptions).forEach((key) => {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => instance.props[key],\n        set: NOOP\n      });\n    });\n  }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n  const { ctx, setupState } = instance;\n  Object.keys(toRaw(setupState)).forEach((key) => {\n    if (!setupState.__isScriptSetup) {\n      if (isReservedPrefix(key[0])) {\n        warn$1(\n          `setup() return property ${JSON.stringify(\n            key\n          )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n        );\n        return;\n      }\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => setupState[key],\n        set: NOOP\n      });\n    }\n  });\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n  `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineProps`);\n  }\n  return null;\n}\nfunction defineEmits() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineEmits`);\n  }\n  return null;\n}\nfunction defineExpose(exposed) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineExpose`);\n  }\n}\nfunction defineOptions(options) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineOptions`);\n  }\n}\nfunction defineSlots() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineSlots`);\n  }\n  return null;\n}\nfunction defineModel() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(\"defineModel\");\n  }\n}\nfunction withDefaults(props, defaults) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`withDefaults`);\n  }\n  return null;\n}\nfunction useSlots() {\n  return getContext().slots;\n}\nfunction useAttrs() {\n  return getContext().attrs;\n}\nfunction getContext() {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useContext() called without active instance.`);\n  }\n  return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n  return isArray(props) ? props.reduce(\n    (normalized, p) => (normalized[p] = null, normalized),\n    {}\n  ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n  const props = normalizePropsOrEmits(raw);\n  for (const key in defaults) {\n    if (key.startsWith(\"__skip\")) continue;\n    let opt = props[key];\n    if (opt) {\n      if (isArray(opt) || isFunction(opt)) {\n        opt = props[key] = { type: opt, default: defaults[key] };\n      } else {\n        opt.default = defaults[key];\n      }\n    } else if (opt === null) {\n      opt = props[key] = { default: defaults[key] };\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n    }\n    if (opt && defaults[`__skip_${key}`]) {\n      opt.skipFactory = true;\n    }\n  }\n  return props;\n}\nfunction mergeModels(a, b) {\n  if (!a || !b) return a || b;\n  if (isArray(a) && isArray(b)) return a.concat(b);\n  return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n  const ret = {};\n  for (const key in props) {\n    if (!excludedKeys.includes(key)) {\n      Object.defineProperty(ret, key, {\n        enumerable: true,\n        get: () => props[key]\n      });\n    }\n  }\n  return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n  const ctx = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n    warn$1(\n      `withAsyncContext called without active current instance. This is likely a bug.`\n    );\n  }\n  let awaitable = getAwaitable();\n  unsetCurrentInstance();\n  if (isPromise(awaitable)) {\n    awaitable = awaitable.catch((e) => {\n      setCurrentInstance(ctx);\n      throw e;\n    });\n  }\n  return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (type, key) => {\n    if (cache[key]) {\n      warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n    } else {\n      cache[key] = type;\n    }\n  };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n  const options = resolveMergedOptions(instance);\n  const publicThis = instance.proxy;\n  const ctx = instance.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook(options.beforeCreate, instance, \"bc\");\n  }\n  const {\n    // state\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    // lifecycle\n    created,\n    beforeMount,\n    mounted,\n    beforeUpdate,\n    updated,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted,\n    render,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    // public API\n    expose,\n    inheritAttrs,\n    // assets\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const [propsOptions] = instance.propsOptions;\n    if (propsOptions) {\n      for (const key in propsOptions) {\n        checkDuplicateProperties(\"Props\" /* PROPS */, key);\n      }\n    }\n  }\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction(methodHandler)) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          Object.defineProperty(ctx, key, {\n            value: methodHandler.bind(publicThis),\n            configurable: true,\n            enumerable: true,\n            writable: true\n          });\n        } else {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(\n          `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n        );\n      }\n    }\n  }\n  if (dataOptions) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n      warn$1(\n        `The data option must be a function. Plain object usage is no longer supported.`\n      );\n    }\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n      warn$1(\n        `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n      );\n    }\n    if (!isObject(data)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n    } else {\n      instance.data = reactive(data);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (const key in data) {\n          checkDuplicateProperties(\"Data\" /* DATA */, key);\n          if (!isReservedPrefix(key[0])) {\n            Object.defineProperty(ctx, key, {\n              configurable: true,\n              enumerable: true,\n              get: () => data[key],\n              set: NOOP\n            });\n          }\n        }\n      }\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n        warn$1(`Computed property \"${key}\" has no getter.`);\n      }\n      const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n        warn$1(\n          `Write operation failed: computed property \"${key}\" is readonly.`\n        );\n      } : NOOP;\n      const c = computed({\n        get,\n        set\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n      }\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook(created, instance, \"c\");\n  }\n  function registerLifecycleHook(register, hook) {\n    if (isArray(hook)) {\n      hook.forEach((_hook) => register(_hook.bind(publicThis)));\n    } else if (hook) {\n      register(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  if (isArray(expose)) {\n    if (expose.length) {\n      const exposed = instance.exposed || (instance.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance.exposed) {\n      instance.exposed = {};\n    }\n  }\n  if (render && instance.render === NOOP) {\n    instance.render = render;\n  }\n  if (inheritAttrs != null) {\n    instance.inheritAttrs = inheritAttrs;\n  }\n  if (components) instance.components = components;\n  if (directives) instance.directives = directives;\n  if (serverPrefetch) {\n    markAsyncBoundary(instance);\n  }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n  if (isArray(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(\n          opt.from || key,\n          opt.default,\n          true\n        );\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => injected.value,\n        set: (v) => injected.value = v\n      });\n    } else {\n      ctx[key] = injected;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n    }\n  }\n}\nfunction callHook(hook, instance, type) {\n  callWithAsyncErrorHandling(\n    isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n    instance,\n    type\n  );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  let getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString(raw)) {\n    const handler = ctx[raw];\n    if (isFunction(handler)) {\n      {\n        watch(getter, handler);\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n    }\n  } else if (isFunction(raw)) {\n    {\n      watch(getter, raw.bind(publicThis));\n    }\n  } else if (isObject(raw)) {\n    if (isArray(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction(handler)) {\n        watch(getter, handler, raw);\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n      }\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid watch option: \"${key}\"`, raw);\n  }\n}\nfunction resolveMergedOptions(instance) {\n  const base = instance.type;\n  const { mixins, extends: extendsOptions } = base;\n  const {\n    mixins: globalMixins,\n    optionsCache: cache,\n    config: { optionMergeStrategies }\n  } = instance.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach(\n        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n      );\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  if (isObject(base)) {\n    cache.set(base, resolved);\n  }\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach(\n      (m) => mergeOptions(to, m, strats, true)\n    );\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\") {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n      );\n    } else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeEmitsOrPropsOptions,\n  emits: mergeEmitsOrPropsOptions,\n  // objects\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  // lifecycle\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  // assets\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  // watch\n  watch: mergeWatchOptions,\n  // provide / inject\n  provide: mergeDataFn,\n  inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return (extend)(\n      isFunction(to) ? to.call(this, this) : to,\n      isFunction(from) ? from.call(this, this) : from\n    );\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n  if (to) {\n    if (isArray(to) && isArray(from)) {\n      return [.../* @__PURE__ */ new Set([...to, ...from])];\n    }\n    return extend(\n      /* @__PURE__ */ Object.create(null),\n      normalizePropsOrEmits(to),\n      normalizePropsOrEmits(from != null ? from : {})\n    );\n  } else {\n    return from;\n  }\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to) return from;\n  if (!from) return to;\n  const merged = extend(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\n\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction(rootComponent)) {\n      rootComponent = extend({}, rootComponent);\n    }\n    if (rootProps != null && !isObject(rootProps)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new WeakSet();\n    const pluginCleanupFns = [];\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid$1++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `app.config cannot be replaced. Modify individual options instead.`\n          );\n        }\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin)) {\n          !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n        } else if (plugin && isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `A plugin must either be a function or an object with an \"install\" function.`\n          );\n        }\n        return app;\n      },\n      mixin(mixin) {\n        if (__VUE_OPTIONS_API__) {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n            );\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Mixins are only available in builds supporting Options API\");\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateComponentName(name, context.config);\n        }\n        if (!component) {\n          return context.components[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n          warn$1(`Component \"${name}\" has already been registered in target app.`);\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateDirectiveName(name);\n        }\n        if (!directive) {\n          return context.directives[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n          warn$1(`Directive \"${name}\" has already been registered in target app.`);\n        }\n        context.directives[name] = directive;\n        return app;\n      },\n      mount(rootContainer, isHydrate, namespace) {\n        if (!isMounted) {\n          if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n            warn$1(\n              `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n            );\n          }\n          const vnode = app._ceVNode || createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (namespace === true) {\n            namespace = \"svg\";\n          } else if (namespace === false) {\n            namespace = void 0;\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            context.reload = () => {\n              render(\n                cloneVNode(vnode),\n                rootContainer,\n                namespace\n              );\n            };\n          }\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render(vnode, rootContainer, namespace);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = vnode.component;\n            devtoolsInitApp(app, version);\n          }\n          return getComponentPublicInstance(vnode.component);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n          );\n        }\n      },\n      onUnmount(cleanupFn) {\n        if (!!(process.env.NODE_ENV !== \"production\") && typeof cleanupFn !== \"function\") {\n          warn$1(\n            `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}`\n          );\n        }\n        pluginCleanupFns.push(cleanupFn);\n      },\n      unmount() {\n        if (isMounted) {\n          callWithAsyncErrorHandling(\n            pluginCleanupFns,\n            app._instance,\n            16\n          );\n          render(null, app._container);\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = null;\n            devtoolsUnmountApp(app);\n          }\n          delete app._container.__vue_app__;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`Cannot unmount an app that is not mounted.`);\n        }\n      },\n      provide(key, value) {\n        if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n          warn$1(\n            `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n          );\n        }\n        context.provides[key] = value;\n        return app;\n      },\n      runWithContext(fn) {\n        const lastApp = currentApp;\n        currentApp = app;\n        try {\n          return fn();\n        } finally {\n          currentApp = lastApp;\n        }\n      }\n    };\n    return app;\n  };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n  if (!currentInstance) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`provide() can only be used inside setup().`);\n    }\n  } else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance = currentInstance || currentRenderingInstance;\n  if (instance || currentApp) {\n    const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`injection \"${String(key)}\" not found.`);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`inject() can only be used inside setup() or functional components.`);\n  }\n}\nfunction hasInjectionContext() {\n  return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\nconst internalObjectProto = {};\nconst createInternalObject = () => Object.create(internalObjectProto);\nconst isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = createInternalObject();\n  instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance, rawProps, props, attrs);\n  for (const key in instance.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n  if (isStateful) {\n    instance.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance.type.props) {\n      instance.props = attrs;\n    } else {\n      instance.props = props;\n    }\n  }\n  instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n  while (instance) {\n    if (instance.type.__hmrId) return true;\n    instance = instance.parent;\n  }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n  const {\n    props,\n    attrs,\n    vnode: { patchFlag }\n  } = instance;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  if (\n    // always force full diff in dev\n    // - #1942 if hmr is enabled with sfc component\n    // - vite#872 non-sfc component used by sfc component\n    !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n  ) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize(key);\n            props[camelizedKey] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              camelizedKey,\n              value,\n              instance,\n              false\n            );\n          }\n        } else {\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || // for camelCase\n      !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n      // and converted to camelCase (#955)\n      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && // for camelCase\n          (rawPrevProps[key] !== void 0 || // for kebab-case\n          rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              key,\n              void 0,\n              instance,\n              true\n            );\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && true) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance.attrs, \"set\", \"\");\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance.emitsOptions, key)) {\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(\n        options,\n        rawCurrentProps,\n        key,\n        castValues[key],\n        instance,\n        !hasOwn(castValues, key)\n      );\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n        const { propsDefaults } = instance;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          const reset = setCurrentInstance(instance);\n          value = propsDefaults[key] = defaultValue.call(\n            null,\n            props\n          );\n          reset();\n        }\n      } else {\n        value = defaultValue;\n      }\n      if (instance.ce) {\n        instance.ce._setProp(key, value);\n      }\n    }\n    if (opt[0 /* shouldCast */]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nconst mixinPropsCache = /* @__PURE__ */ new WeakMap();\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = __VUE_OPTIONS_API__ && asMixin ? mixinPropsCache : appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendProps = (raw2) => {\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend(normalized, props);\n      if (keys) needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, EMPTY_ARR);\n    }\n    return EMPTY_ARR;\n  }\n  if (isArray(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n        warn$1(`props must be strings when using array syntax.`, raw[i]);\n      }\n      const normalizedKey = camelize(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n      warn$1(`invalid props options`, raw);\n    }\n    for (const key in raw) {\n      const normalizedKey = camelize(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n        const propType = prop.type;\n        let shouldCast = false;\n        let shouldCastTrue = true;\n        if (isArray(propType)) {\n          for (let index = 0; index < propType.length; ++index) {\n            const type = propType[index];\n            const typeName = isFunction(type) && type.name;\n            if (typeName === \"Boolean\") {\n              shouldCast = true;\n              break;\n            } else if (typeName === \"String\") {\n              shouldCastTrue = false;\n            }\n          }\n        } else {\n          shouldCast = isFunction(propType) && propType.name === \"Boolean\";\n        }\n        prop[0 /* shouldCast */] = shouldCast;\n        prop[1 /* shouldCastTrue */] = shouldCastTrue;\n        if (shouldCast || hasOwn(prop, \"default\")) {\n          needCastKeys.push(normalizedKey);\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  if (isObject(comp)) {\n    cache.set(comp, res);\n  }\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\" && !isReservedProp(key)) {\n    return true;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n  }\n  return false;\n}\nfunction getType(ctor) {\n  if (ctor === null) {\n    return \"null\";\n  }\n  if (typeof ctor === \"function\") {\n    return ctor.name || \"\";\n  } else if (typeof ctor === \"object\") {\n    const name = ctor.constructor && ctor.constructor.name;\n    return name || \"\";\n  }\n  return \"\";\n}\nfunction validateProps(rawProps, props, instance) {\n  const resolvedValues = toRaw(props);\n  const options = instance.propsOptions[0];\n  const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key));\n  for (const key in options) {\n    let opt = options[key];\n    if (opt == null) continue;\n    validateProp(\n      key,\n      resolvedValues[key],\n      opt,\n      !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n      !camelizePropsKey.includes(key)\n    );\n  }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n  const { type, required, validator, skipCheck } = prop;\n  if (required && isAbsent) {\n    warn$1('Missing required prop: \"' + name + '\"');\n    return;\n  }\n  if (value == null && !required) {\n    return;\n  }\n  if (type != null && type !== true && !skipCheck) {\n    let isValid = false;\n    const types = isArray(type) ? type : [type];\n    const expectedTypes = [];\n    for (let i = 0; i < types.length && !isValid; i++) {\n      const { valid, expectedType } = assertType(value, types[i]);\n      expectedTypes.push(expectedType || \"\");\n      isValid = valid;\n    }\n    if (!isValid) {\n      warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n      return;\n    }\n  }\n  if (validator && !validator(value, props)) {\n    warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n  }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n  \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n  let valid;\n  const expectedType = getType(type);\n  if (expectedType === \"null\") {\n    valid = value === null;\n  } else if (isSimpleType(expectedType)) {\n    const t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    if (!valid && t === \"object\") {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === \"Object\") {\n    valid = isObject(value);\n  } else if (expectedType === \"Array\") {\n    valid = isArray(value);\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid,\n    expectedType\n  };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n  if (expectedTypes.length === 0) {\n    return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n  }\n  let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n  const expectedType = expectedTypes[0];\n  const receivedType = toRawType(value);\n  const expectedValue = styleValue(value, expectedType);\n  const receivedValue = styleValue(value, receivedType);\n  if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n    message += ` with value ${expectedValue}`;\n  }\n  message += `, got ${receivedType} `;\n  if (isExplicable(receivedType)) {\n    message += `with value ${receivedValue}.`;\n  }\n  return message;\n}\nfunction styleValue(value, type) {\n  if (type === \"String\") {\n    return `\"${value}\"`;\n  } else if (type === \"Number\") {\n    return `${Number(value)}`;\n  } else {\n    return `${value}`;\n  }\n}\nfunction isExplicable(type) {\n  const explicitTypes = [\"string\", \"number\", \"boolean\"];\n  return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n  return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && currentInstance && (!ctx || ctx.root === currentInstance.root)) {\n      warn$1(\n        `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n      );\n    }\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key)) continue;\n    const value = rawSlots[key];\n    if (isFunction(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      if (!!(process.env.NODE_ENV !== \"production\") && true) {\n        warn$1(\n          `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n        );\n      }\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && true) {\n    warn$1(\n      `Non-function value encountered for default slot. Prefer function slots for better performance.`\n    );\n  }\n  const normalized = normalizeSlotValue(children);\n  instance.slots.default = () => normalized;\n};\nconst assignSlots = (slots, children, optimized) => {\n  for (const key in children) {\n    if (optimized || key !== \"_\") {\n      slots[key] = children[key];\n    }\n  }\n};\nconst initSlots = (instance, children, optimized) => {\n  const slots = instance.slots = createInternalObject();\n  if (instance.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      assignSlots(slots, children, optimized);\n      if (optimized) {\n        def(slots, \"_\", type, true);\n      }\n    } else {\n      normalizeObjectSlots(children, slots);\n    }\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n  }\n};\nconst updateSlots = (instance, children, optimized) => {\n  const { vnode, slots } = instance;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n        assignSlots(slots, children, optimized);\n        trigger(instance, \"set\", \"$slots\");\n      } else if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        assignSlots(slots, children, optimized);\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n        delete slots[key];\n      }\n    }\n  }\n};\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    perf.mark(`vue-${type}-${instance.uid}`);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction endMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    const startTag = `vue-${type}-${instance.uid}`;\n    const endTag = startTag + `:end`;\n    perf.mark(endTag);\n    perf.measure(\n      `<${formatComponentName(instance, instance.type)}> ${type}`,\n      startTag,\n      endTag\n    );\n    perf.clearMarks(startTag);\n    perf.clearMarks(endTag);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction isSupported() {\n  if (supported !== void 0) {\n    return supported;\n  }\n  if (typeof window !== \"undefined\" && window.performance) {\n    supported = true;\n    perf = window.performance;\n  } else {\n    supported = false;\n  }\n  return supported;\n}\n\nfunction initFeatureFlags() {\n  const needWarn = [];\n  if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n    getGlobalThis().__VUE_OPTIONS_API__ = true;\n  }\n  if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n    getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n  }\n  if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n    getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n    const multi = needWarn.length > 1;\n    console.warn(\n      `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n    );\n  }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n  return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  {\n    initFeatureFlags();\n  }\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n  }\n  const {\n    insert: hostInsert,\n    remove: hostRemove,\n    patchProp: hostPatchProp,\n    createElement: hostCreateElement,\n    createText: hostCreateText,\n    createComment: hostCreateComment,\n    setText: hostSetText,\n    setElementText: hostSetElementText,\n    parentNode: hostParentNode,\n    nextSibling: hostNextSibling,\n    setScopeId: hostSetScopeId = NOOP,\n    insertStaticContent: hostInsertStaticContent\n  } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, namespace);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          patchStaticNode(n1, n2, container, namespace);\n        }\n        break;\n      case Fragment:\n        processFragment(\n          n1,\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 6) {\n          processComponent(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 64) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (shapeFlag & 128) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateText(n2.children),\n        container,\n        anchor\n      );\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateComment(n2.children || \"\"),\n        container,\n        anchor\n      );\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, namespace) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(\n      n2.children,\n      container,\n      anchor,\n      namespace,\n      n2.el,\n      n2.anchor\n    );\n  };\n  const patchStaticNode = (n1, n2, container, namespace) => {\n    if (n2.children !== n1.children) {\n      const anchor = hostNextSibling(n1.anchor);\n      removeStaticNode(n1);\n      [n2.el, n2.anchor] = hostInsertStaticContent(\n        n2.children,\n        container,\n        anchor,\n        namespace\n      );\n    } else {\n      n2.el = n1.el;\n      n2.anchor = n1.anchor;\n    }\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    if (n2.type === \"svg\") {\n      namespace = \"svg\";\n    } else if (n2.type === \"math\") {\n      namespace = \"mathml\";\n    }\n    if (n1 == null) {\n      mountElement(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      patchElement(\n        n1,\n        n2,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { props, shapeFlag, transition, dirs } = vnode;\n    el = vnode.el = hostCreateElement(\n      vnode.type,\n      namespace,\n      props && props.is,\n      props\n    );\n    if (shapeFlag & 8) {\n      hostSetElementText(el, vnode.children);\n    } else if (shapeFlag & 16) {\n      mountChildren(\n        vnode.children,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(vnode, namespace),\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n    }\n    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    if (props) {\n      for (const key in props) {\n        if (key !== \"value\" && !isReservedProp(key)) {\n          hostPatchProp(el, key, null, props[key], namespace, parentComponent);\n        }\n      }\n      if (\"value\" in props) {\n        hostPatchProp(el, \"value\", null, props.value, namespace);\n      }\n      if (vnodeHook = props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHook, parentComponent, vnode);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      def(el, \"__vnode\", vnode, true);\n      def(el, \"__vueParentComponent\", parentComponent, true);\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = needTransition(parentSuspense, transition);\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n        subTree = filterSingleRoot(subTree.children) || subTree;\n      }\n      if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(\n          el,\n          parentVNode,\n          parentVNode.scopeId,\n          parentVNode.slotScopeIds,\n          parentComponent.parent\n        );\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(\n        null,\n        child,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      el.__vnode = n2;\n    }\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {\n      hostSetElementText(el, \"\");\n    }\n    if (dynamicChildren) {\n      patchBlockChildren(\n        n1.dynamicChildren,\n        dynamicChildren,\n        el,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds\n      );\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        traverseStaticChildren(n1, n2);\n      }\n    } else if (!optimized) {\n      patchChildren(\n        n1,\n        n2,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds,\n        false\n      );\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(el, oldProps, newProps, parentComponent, namespace);\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, namespace);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(el, key, prev, next, namespace, parentComponent);\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(el, oldProps, newProps, parentComponent, namespace);\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = (\n        // oldVNode may be an errored async setup() component inside Suspense\n        // which will not have a mounted element\n        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n        // of the Fragment itself so it can move its children.\n        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n        // which also requires the correct parent container\n        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (\n          // In other cases, the parent container is not actually used so we\n          // just pass the block element here to avoid a DOM parentNode call.\n          fallbackContainer\n        )\n      );\n      patch(\n        oldVNode,\n        newVNode,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        true\n      );\n    }\n  };\n  const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {\n    if (oldProps !== newProps) {\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(\n              el,\n              key,\n              oldProps[key],\n              null,\n              namespace,\n              parentComponent\n            );\n          }\n        }\n      }\n      for (const key in newProps) {\n        if (isReservedProp(key)) continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(el, key, prev, next, namespace, parentComponent);\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n    (isHmrUpdating || patchFlag & 2048)) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(\n        // #10007\n        // such fragment like `<></>` will be compiled into\n        // a fragment which doesn't have a children.\n        // In this case fallback to an empty array\n        n2.children || [],\n        container,\n        fragmentEndAnchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n      // of renderSlot() with no valid children\n      n1.dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          container,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          traverseStaticChildren(n1, n2);\n        } else if (\n          // #2080 if the stable fragment has a key, it's a <template v-for> that may\n          //  get moved around. Make sure all root level vnodes inherit el.\n          // #2134 or if it's a component root, it may also get moved around\n          // as the component is being moved.\n          n2.key != null || parentComponent && n2 === parentComponent.subTree\n        ) {\n          traverseStaticChildren(\n            n1,\n            n2,\n            true\n            /* shallow */\n          );\n        }\n      } else {\n        patchChildren(\n          n1,\n          n2,\n          container,\n          fragmentEndAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(\n          n2,\n          container,\n          anchor,\n          namespace,\n          optimized\n        );\n      } else {\n        mountComponent(\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          optimized\n        );\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n    const instance = (initialVNode.component = createComponentInstance(\n      initialVNode,\n      parentComponent,\n      parentSuspense\n    ));\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      registerHMR(instance);\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      pushWarningContext(initialVNode);\n      startMeasure(instance, `mount`);\n    }\n    if (isKeepAlive(initialVNode)) {\n      instance.ctx.renderer = internals;\n    }\n    {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        startMeasure(instance, `init`);\n      }\n      setupComponent(instance, false, optimized);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        endMeasure(instance, `init`);\n      }\n    }\n    if (instance.asyncDep) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) initialVNode.el = null;\n      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);\n      if (!initialVNode.el) {\n        const placeholder = instance.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n    } else {\n      setupRenderEffect(\n        instance,\n        initialVNode,\n        container,\n        anchor,\n        parentSuspense,\n        namespace,\n        optimized\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      popWarningContext();\n      endMeasure(instance, `mount`);\n    }\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance.asyncDep && !instance.asyncResolved) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(n2);\n        }\n        updateComponentPreRender(instance, n2, optimized);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        return;\n      } else {\n        instance.next = n2;\n        instance.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent, root, type } = instance;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        toggleRecurse(instance, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `render`);\n            }\n            instance.subTree = renderComponentRoot(instance);\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `render`);\n            }\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `hydrate`);\n            }\n            hydrateNode(\n              el,\n              instance.subTree,\n              instance,\n              parentSuspense,\n              null\n            );\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `hydrate`);\n            }\n          };\n          if (isAsyncWrapperVNode && type.__asyncHydrate) {\n            type.__asyncHydrate(\n              el,\n              instance,\n              hydrateSubTree\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          if (root.ce) {\n            root.ce._injectChildStyle(type);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `render`);\n          }\n          const subTree = instance.subTree = renderComponentRoot(instance);\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `render`);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `patch`);\n          }\n          patch(\n            null,\n            subTree,\n            container,\n            anchor,\n            instance,\n            parentSuspense,\n            namespace\n          );\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `patch`);\n          }\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n            parentSuspense\n          );\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n        }\n        instance.isMounted = true;\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentAdded(instance);\n        }\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance;\n        {\n          const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n          if (nonHydratedAsyncRoot) {\n            if (next) {\n              next.el = vnode.el;\n              updateComponentPreRender(instance, next, optimized);\n            }\n            nonHydratedAsyncRoot.asyncDep.then(() => {\n              if (!instance.isUnmounted) {\n                componentUpdateFn();\n              }\n            });\n            return;\n          }\n        }\n        let originNext = next;\n        let vnodeHook;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(next || instance.vnode);\n        }\n        toggleRecurse(instance, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        toggleRecurse(instance, true);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `render`);\n        }\n        const nextTree = renderComponentRoot(instance);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `render`);\n        }\n        const prevTree = instance.subTree;\n        instance.subTree = nextTree;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `patch`);\n        }\n        patch(\n          prevTree,\n          nextTree,\n          // parent may have changed if it's in a teleport\n          hostParentNode(prevTree.el),\n          // anchor may have changed if it's in a fragment\n          getNextHostNode(prevTree),\n          instance,\n          parentSuspense,\n          namespace\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `patch`);\n        }\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n            parentSuspense\n          );\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentUpdated(instance);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n      }\n    };\n    instance.scope.on();\n    const effect = instance.effect = new ReactiveEffect(componentUpdateFn);\n    instance.scope.off();\n    const update = instance.update = effect.run.bind(effect);\n    const job = instance.job = effect.runIfDirty.bind(effect);\n    job.i = instance;\n    job.id = instance.uid;\n    effect.scheduler = () => queueJob(job);\n    toggleRecurse(instance, true);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n      effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n    }\n    update();\n  };\n  const updateComponentPreRender = (instance, nextVNode, optimized) => {\n    nextVNode.component = instance;\n    const prevProps = instance.vnode.props;\n    instance.vnode = nextVNode;\n    instance.next = null;\n    updateProps(instance, nextVNode.props, prevProps, optimized);\n    updateSlots(instance, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs(instance);\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(\n            c1,\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(\n        c1[i],\n        nextChild,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (oldLength > newLength) {\n      unmountChildren(\n        c1,\n        parentComponent,\n        parentSuspense,\n        true,\n        false,\n        commonLength\n      );\n    } else {\n      mountChildren(\n        c2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        commonLength\n      );\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(\n            null,\n            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n            warn$1(\n              `Duplicate keys found during update:`,\n              JSON.stringify(nextChild.key),\n              `Make sure keys are unique.`\n            );\n          }\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(\n            prevChild,\n            c2[newIndex],\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(\n            null,\n            nextChild,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition2) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove2 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove2();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove2, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const {\n      type,\n      props,\n      ref,\n      children,\n      dynamicChildren,\n      shapeFlag,\n      patchFlag,\n      dirs,\n      cacheIndex\n    } = vnode;\n    if (patchFlag === -2) {\n      optimized = false;\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (cacheIndex != null) {\n      parentComponent.renderCache[cacheIndex] = void 0;\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(\n          vnode,\n          parentComponent,\n          parentSuspense,\n          internals,\n          doRemove\n        );\n      } else if (dynamicChildren && // #5154\n      // when v-once is used inside a block, setBlockTracking(-1) marks the\n      // parent block with hasOnce: true\n      // so that it doesn't take the fast path during unmount - otherwise\n      // components nested in v-once are never unmounted.\n      !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments\n      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(\n          dynamicChildren,\n          parentComponent,\n          parentSuspense,\n          false,\n          true\n        );\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n        vnode.children.forEach((child) => {\n          if (child.type === Comment) {\n            hostRemove(child.el);\n          } else {\n            remove(child);\n          }\n        });\n      } else {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance, parentSuspense, doRemove) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      unregisterHMR(instance);\n    }\n    const { bum, scope, job, subTree, um, m, a } = instance;\n    invalidateMount(m);\n    invalidateMount(a);\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    scope.stop();\n    if (job) {\n      job.flags |= 8;\n      unmount(subTree, instance, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    queuePostRenderEffect(() => {\n      instance.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentRemoved(instance);\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    const el = hostNextSibling(vnode.anchor || vnode.el);\n    const teleportEnd = el && el[TeleportEndKey];\n    return teleportEnd ? hostNextSibling(teleportEnd) : el;\n  };\n  let isFlushing = false;\n  const render = (vnode, container, namespace) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(\n        container._vnode || null,\n        vnode,\n        container,\n        null,\n        null,\n        null,\n        namespace\n      );\n    }\n    container._vnode = vnode;\n    if (!isFlushing) {\n      isFlushing = true;\n      flushPreFlushCbs();\n      flushPostFlushCbs();\n      isFlushing = false;\n    }\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(\n      internals\n    );\n  }\n  return {\n    render,\n    hydrate,\n    createApp: createAppAPI(render, hydrate)\n  };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n  return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, job }, allowed) {\n  if (allowed) {\n    effect.flags |= 32;\n    job.flags |= 4;\n  } else {\n    effect.flags &= ~32;\n    job.flags &= ~4;\n  }\n}\nfunction needTransition(parentSuspense, transition) {\n  return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray(ch1) && isArray(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow && c2.patchFlag !== -2)\n          traverseStaticChildren(c1, c2);\n      }\n      if (c2.type === Text) {\n        c2.el = c1.el;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && c2.type === Comment && !c2.el) {\n        c2.el = c1.el;\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p[v];\n  }\n  return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n  const subComponent = instance.subTree.component;\n  if (subComponent) {\n    if (subComponent.asyncDep && !subComponent.asyncResolved) {\n      return subComponent;\n    } else {\n      return locateNonHydratedAsyncRoot(subComponent);\n    }\n  }\n}\nfunction invalidateMount(hooks) {\n  if (hooks) {\n    for (let i = 0; i < hooks.length; i++)\n      hooks[i].flags |= 8;\n  }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n  {\n    const ctx = inject(ssrContextKey);\n    if (!ctx) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n      );\n    }\n    return ctx;\n  }\n};\n\nfunction watchEffect(effect, options) {\n  return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n  );\n}\nfunction watchSyncEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n  );\n}\nfunction watch(source, cb, options) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n    warn$1(\n      `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n    );\n  }\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = EMPTY_OBJ) {\n  const { immediate, deep, flush, once } = options;\n  if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n    if (immediate !== void 0) {\n      warn$1(\n        `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (deep !== void 0) {\n      warn$1(\n        `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (once !== void 0) {\n      warn$1(\n        `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n  }\n  const baseWatchOptions = extend({}, options);\n  if (!!(process.env.NODE_ENV !== \"production\")) baseWatchOptions.onWarn = warn$1;\n  const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n  let ssrCleanup;\n  if (isInSSRComponentSetup) {\n    if (flush === \"sync\") {\n      const ctx = useSSRContext();\n      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n    } else if (!runsImmediately) {\n      const watchStopHandle = () => {\n      };\n      watchStopHandle.stop = NOOP;\n      watchStopHandle.resume = NOOP;\n      watchStopHandle.pause = NOOP;\n      return watchStopHandle;\n    }\n  }\n  const instance = currentInstance;\n  baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n  let isPre = false;\n  if (flush === \"post\") {\n    baseWatchOptions.scheduler = (job) => {\n      queuePostRenderEffect(job, instance && instance.suspense);\n    };\n  } else if (flush !== \"sync\") {\n    isPre = true;\n    baseWatchOptions.scheduler = (job, isFirstRun) => {\n      if (isFirstRun) {\n        job();\n      } else {\n        queueJob(job);\n      }\n    };\n  }\n  baseWatchOptions.augmentJob = (job) => {\n    if (cb) {\n      job.flags |= 4;\n    }\n    if (isPre) {\n      job.flags |= 2;\n      if (instance) {\n        job.id = instance.uid;\n        job.i = instance;\n      }\n    }\n  };\n  const watchHandle = watch$1(source, cb, baseWatchOptions);\n  if (isInSSRComponentSetup) {\n    if (ssrCleanup) {\n      ssrCleanup.push(watchHandle);\n    } else if (runsImmediately) {\n      watchHandle();\n    }\n  }\n  return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const reset = setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  reset();\n  return res;\n}\nfunction createPathGetter(ctx, path) {\n  const segments = path.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useModel() called without active instance.`);\n    return ref();\n  }\n  const camelizedName = camelize(name);\n  if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][camelizedName]) {\n    warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n    return ref();\n  }\n  const hyphenatedName = hyphenate(name);\n  const modifiers = getModelModifiers(props, camelizedName);\n  const res = customRef((track, trigger) => {\n    let localValue;\n    let prevSetValue = EMPTY_OBJ;\n    let prevEmittedValue;\n    watchSyncEffect(() => {\n      const propValue = props[camelizedName];\n      if (hasChanged(localValue, propValue)) {\n        localValue = propValue;\n        trigger();\n      }\n    });\n    return {\n      get() {\n        track();\n        return options.get ? options.get(localValue) : localValue;\n      },\n      set(value) {\n        const emittedValue = options.set ? options.set(value) : value;\n        if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) {\n          return;\n        }\n        const rawProps = i.vnode.props;\n        if (!(rawProps && // check if parent has passed v-model\n        (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {\n          localValue = value;\n          trigger();\n        }\n        i.emit(`update:${name}`, emittedValue);\n        if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {\n          trigger();\n        }\n        prevSetValue = value;\n        prevEmittedValue = emittedValue;\n      }\n    };\n  });\n  res[Symbol.iterator] = () => {\n    let i2 = 0;\n    return {\n      next() {\n        if (i2 < 2) {\n          return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false };\n        } else {\n          return { done: true };\n        }\n      }\n    };\n  };\n  return res;\n}\nconst getModelModifiers = (props, modelName) => {\n  return modelName === \"modelValue\" || modelName === \"model-value\" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`];\n};\n\nfunction emit(instance, event, ...rawArgs) {\n  if (instance.isUnmounted) return;\n  const props = instance.vnode.props || EMPTY_OBJ;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const {\n      emitsOptions,\n      propsOptions: [propsOptions]\n    } = instance;\n    if (emitsOptions) {\n      if (!(event in emitsOptions) && true) {\n        if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) {\n          warn$1(\n            `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(camelize(event))}\" prop.`\n          );\n        }\n      } else {\n        const validator = emitsOptions[event];\n        if (isFunction(validator)) {\n          const isValid = validator(...rawArgs);\n          if (!isValid) {\n            warn$1(\n              `Invalid event arguments: event validation failed for event \"${event}\".`\n            );\n          }\n        }\n      }\n    }\n  }\n  let args = rawArgs;\n  const isModelListener = event.startsWith(\"update:\");\n  const modifiers = isModelListener && getModelModifiers(props, event.slice(7));\n  if (modifiers) {\n    if (modifiers.trim) {\n      args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n    }\n    if (modifiers.number) {\n      args = rawArgs.map(looseToNumber);\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsComponentEmit(instance, event, args);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const lowerCaseEvent = event.toLowerCase();\n    if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n      warn$1(\n        `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n          instance,\n          instance.type\n        )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n          event\n        )}\" instead of \"${event}\".`\n      );\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n  props[handlerName = toHandlerKey(camelize(event))];\n  if (!handler && isModelListener) {\n    handler = props[handlerName = toHandlerKey(hyphenate(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(\n      handler,\n      instance,\n      6,\n      args\n    );\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance.emitted) {\n      instance.emitted = {};\n    } else if (instance.emitted[handlerName]) {\n      return;\n    }\n    instance.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(\n      onceHandler,\n      instance,\n      6,\n      args\n    );\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, null);\n    }\n    return null;\n  }\n  if (isArray(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend(normalized, raw);\n  }\n  if (isObject(comp)) {\n    cache.set(comp, normalized);\n  }\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn(key)) {\n    return false;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n  accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n  const {\n    type: Component,\n    vnode,\n    proxy,\n    withProxy,\n    propsOptions: [propsOptions],\n    slots,\n    attrs,\n    emit,\n    render,\n    renderCache,\n    props,\n    data,\n    setupState,\n    ctx,\n    inheritAttrs\n  } = instance;\n  const prev = setCurrentRenderingInstance(instance);\n  let result;\n  let fallthroughAttrs;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    accessedAttrs = false;\n  }\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n        get(target, key, receiver) {\n          warn$1(\n            `Property '${String(\n              key\n            )}' was accessed via 'this'. Avoid using 'this' in templates.`\n          );\n          return Reflect.get(target, key, receiver);\n        }\n      }) : proxyToUse;\n      result = normalizeVNode(\n        render.call(\n          thisProxy,\n          proxyToUse,\n          renderCache,\n          !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n          setupState,\n          data,\n          ctx\n        )\n      );\n      fallthroughAttrs = attrs;\n    } else {\n      const render2 = Component;\n      if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n        markAttrsAccessed();\n      }\n      result = normalizeVNode(\n        render2.length > 1 ? render2(\n          !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n          !!(process.env.NODE_ENV !== \"production\") ? {\n            get attrs() {\n              markAttrsAccessed();\n              return shallowReadonly(attrs);\n            },\n            slots,\n            emit\n          } : { attrs, slots, emit }\n        ) : render2(\n          !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n          null\n        )\n      );\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  let setRoot = void 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n    [root, setRoot] = getChildRoot(result);\n  }\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener)) {\n          fallthroughAttrs = filterModelListeners(\n            fallthroughAttrs,\n            propsOptions\n          );\n        }\n        root = cloneVNode(root, fallthroughAttrs, false, true);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n        const allAttrs = Object.keys(attrs);\n        const eventAttrs = [];\n        const extraAttrs = [];\n        for (let i = 0, l = allAttrs.length; i < l; i++) {\n          const key = allAttrs[i];\n          if (isOn(key)) {\n            if (!isModelListener(key)) {\n              eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n            }\n          } else {\n            extraAttrs.push(key);\n          }\n        }\n        if (extraAttrs.length) {\n          warn$1(\n            `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n          );\n        }\n        if (eventAttrs.length) {\n          warn$1(\n            `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n          );\n        }\n      }\n    }\n  }\n  if (vnode.dirs) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n      );\n    }\n    root = cloneVNode(root, null, false, true);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Component inside <Transition> renders non-element root node that cannot be animated.`\n      );\n    }\n    setTransitionHooks(root, vnode.transition);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n    setRoot(root);\n  } else {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getChildRoot = (vnode) => {\n  const rawChildren = vnode.children;\n  const dynamicChildren = vnode.dynamicChildren;\n  const childRoot = filterSingleRoot(rawChildren, false);\n  if (!childRoot) {\n    return [vnode, void 0];\n  } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n    return getChildRoot(childRoot);\n  }\n  const index = rawChildren.indexOf(childRoot);\n  const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n  const setRoot = (updatedRoot) => {\n    rawChildren[index] = updatedRoot;\n    if (dynamicChildren) {\n      if (dynamicIndex > -1) {\n        dynamicChildren[dynamicIndex] = updatedRoot;\n      } else if (updatedRoot.patchFlag > 0) {\n        vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n      }\n    }\n  };\n  return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n  let singleRoot;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (isVNode(child)) {\n      if (child.type !== Comment || child.children === \"v-if\") {\n        if (singleRoot) {\n          return;\n        } else {\n          singleRoot = child;\n          if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n            return filterSingleRoot(singleRoot.children);\n          }\n        }\n      }\n    } else {\n      return;\n    }\n  }\n  return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst isElementRoot = (vnode) => {\n  return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n    return true;\n  }\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent) {\n    const root = parent.subTree;\n    if (root.suspense && root.suspense.activeBranch === vnode) {\n      root.el = vnode.el;\n    }\n    if (root === vnode) {\n      (vnode = parent.vnode).el = el;\n      parent = parent.parent;\n    } else {\n      break;\n    }\n  }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n  name: \"Suspense\",\n  // In order to make Suspense tree-shakable, we need to avoid importing it\n  // directly in the renderer. The renderer checks for the __isSuspense flag\n  // on a vnode's type and calls the `process` method, passing in renderer\n  // internals.\n  __isSuspense: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n    if (n1 == null) {\n      mountSuspense(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    } else {\n      if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n        n2.suspense = n1.suspense;\n        n2.suspense.vnode = n2;\n        n2.el = n1.el;\n        return;\n      }\n      patchSuspense(\n        n1,\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    }\n  },\n  hydrate: hydrateSuspense,\n  normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n  const eventListener = vnode.props && vnode.props[name];\n  if (isFunction(eventListener)) {\n    eventListener();\n  }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n  const {\n    p: patch,\n    o: { createElement }\n  } = rendererInternals;\n  const hiddenContainer = createElement(\"div\");\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    container,\n    hiddenContainer,\n    anchor,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals\n  );\n  patch(\n    null,\n    suspense.pendingBranch = vnode.ssContent,\n    hiddenContainer,\n    null,\n    parentComponent,\n    suspense,\n    namespace,\n    slotScopeIds\n  );\n  if (suspense.deps > 0) {\n    triggerEvent(vnode, \"onPending\");\n    triggerEvent(vnode, \"onFallback\");\n    patch(\n      null,\n      vnode.ssFallback,\n      container,\n      anchor,\n      parentComponent,\n      null,\n      // fallback tree will not have suspense context\n      namespace,\n      slotScopeIds\n    );\n    setActiveBranch(suspense, vnode.ssFallback);\n  } else {\n    suspense.resolve(false, true);\n  }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n  const suspense = n2.suspense = n1.suspense;\n  suspense.vnode = n2;\n  n2.el = n1.el;\n  const newBranch = n2.ssContent;\n  const newFallback = n2.ssFallback;\n  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n  if (pendingBranch) {\n    suspense.pendingBranch = newBranch;\n    if (isSameVNodeType(newBranch, pendingBranch)) {\n      patch(\n        pendingBranch,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else if (isInFallback) {\n        if (!isHydrating) {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      }\n    } else {\n      suspense.pendingId = suspenseId++;\n      if (isHydrating) {\n        suspense.isHydrating = false;\n        suspense.activeBranch = pendingBranch;\n      } else {\n        unmount(pendingBranch, parentComponent, suspense);\n      }\n      suspense.deps = 0;\n      suspense.effects.length = 0;\n      suspense.hiddenContainer = createElement(\"div\");\n      if (isInFallback) {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        } else {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n        patch(\n          activeBranch,\n          newBranch,\n          container,\n          anchor,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        suspense.resolve(true);\n      } else {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        }\n      }\n    }\n  } else {\n    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n      patch(\n        activeBranch,\n        newBranch,\n        container,\n        anchor,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      setActiveBranch(suspense, newBranch);\n    } else {\n      triggerEvent(n2, \"onPending\");\n      suspense.pendingBranch = newBranch;\n      if (newBranch.shapeFlag & 512) {\n        suspense.pendingId = newBranch.component.suspenseId;\n      } else {\n        suspense.pendingId = suspenseId++;\n      }\n      patch(\n        null,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else {\n        const { timeout, pendingId } = suspense;\n        if (timeout > 0) {\n          setTimeout(() => {\n            if (suspense.pendingId === pendingId) {\n              suspense.fallback(newFallback);\n            }\n          }, timeout);\n        } else if (timeout === 0) {\n          suspense.fallback(newFallback);\n        }\n      }\n    }\n  }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n  if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n    hasWarned = true;\n    console[console.info ? \"info\" : \"log\"](\n      `<Suspense> is an experimental feature and its API will likely change.`\n    );\n  }\n  const {\n    p: patch,\n    m: move,\n    um: unmount,\n    n: next,\n    o: { parentNode, remove }\n  } = rendererInternals;\n  let parentSuspenseId;\n  const isSuspensible = isVNodeSuspensible(vnode);\n  if (isSuspensible) {\n    if (parentSuspense && parentSuspense.pendingBranch) {\n      parentSuspenseId = parentSuspense.pendingId;\n      parentSuspense.deps++;\n    }\n  }\n  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(timeout, `Suspense timeout`);\n  }\n  const initialAnchor = anchor;\n  const suspense = {\n    vnode,\n    parent: parentSuspense,\n    parentComponent,\n    namespace,\n    container,\n    hiddenContainer,\n    deps: 0,\n    pendingId: suspenseId++,\n    timeout: typeof timeout === \"number\" ? timeout : -1,\n    activeBranch: null,\n    pendingBranch: null,\n    isInFallback: !isHydrating,\n    isHydrating,\n    isUnmounted: false,\n    effects: [],\n    resolve(resume = false, sync = false) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (!resume && !suspense.pendingBranch) {\n          throw new Error(\n            `suspense.resolve() is called without a pending branch.`\n          );\n        }\n        if (suspense.isUnmounted) {\n          throw new Error(\n            `suspense.resolve() is called on an already unmounted suspense boundary.`\n          );\n        }\n      }\n      const {\n        vnode: vnode2,\n        activeBranch,\n        pendingBranch,\n        pendingId,\n        effects,\n        parentComponent: parentComponent2,\n        container: container2\n      } = suspense;\n      let delayEnter = false;\n      if (suspense.isHydrating) {\n        suspense.isHydrating = false;\n      } else if (!resume) {\n        delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n        if (delayEnter) {\n          activeBranch.transition.afterLeave = () => {\n            if (pendingId === suspense.pendingId) {\n              move(\n                pendingBranch,\n                container2,\n                anchor === initialAnchor ? next(activeBranch) : anchor,\n                0\n              );\n              queuePostFlushCb(effects);\n            }\n          };\n        }\n        if (activeBranch) {\n          if (parentNode(activeBranch.el) === container2) {\n            anchor = next(activeBranch);\n          }\n          unmount(activeBranch, parentComponent2, suspense, true);\n        }\n        if (!delayEnter) {\n          move(pendingBranch, container2, anchor, 0);\n        }\n      }\n      setActiveBranch(suspense, pendingBranch);\n      suspense.pendingBranch = null;\n      suspense.isInFallback = false;\n      let parent = suspense.parent;\n      let hasUnresolvedAncestor = false;\n      while (parent) {\n        if (parent.pendingBranch) {\n          parent.effects.push(...effects);\n          hasUnresolvedAncestor = true;\n          break;\n        }\n        parent = parent.parent;\n      }\n      if (!hasUnresolvedAncestor && !delayEnter) {\n        queuePostFlushCb(effects);\n      }\n      suspense.effects = [];\n      if (isSuspensible) {\n        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n          parentSuspense.deps--;\n          if (parentSuspense.deps === 0 && !sync) {\n            parentSuspense.resolve();\n          }\n        }\n      }\n      triggerEvent(vnode2, \"onResolve\");\n    },\n    fallback(fallbackVNode) {\n      if (!suspense.pendingBranch) {\n        return;\n      }\n      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n      triggerEvent(vnode2, \"onFallback\");\n      const anchor2 = next(activeBranch);\n      const mountFallback = () => {\n        if (!suspense.isInFallback) {\n          return;\n        }\n        patch(\n          null,\n          fallbackVNode,\n          container2,\n          anchor2,\n          parentComponent2,\n          null,\n          // fallback tree will not have suspense context\n          namespace2,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, fallbackVNode);\n      };\n      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n      if (delayEnter) {\n        activeBranch.transition.afterLeave = mountFallback;\n      }\n      suspense.isInFallback = true;\n      unmount(\n        activeBranch,\n        parentComponent2,\n        null,\n        // no suspense so unmount hooks fire now\n        true\n        // shouldRemove\n      );\n      if (!delayEnter) {\n        mountFallback();\n      }\n    },\n    move(container2, anchor2, type) {\n      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n      suspense.container = container2;\n    },\n    next() {\n      return suspense.activeBranch && next(suspense.activeBranch);\n    },\n    registerDep(instance, setupRenderEffect, optimized2) {\n      const isInPendingSuspense = !!suspense.pendingBranch;\n      if (isInPendingSuspense) {\n        suspense.deps++;\n      }\n      const hydratedEl = instance.vnode.el;\n      instance.asyncDep.catch((err) => {\n        handleError(err, instance, 0);\n      }).then((asyncSetupResult) => {\n        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n          return;\n        }\n        instance.asyncResolved = true;\n        const { vnode: vnode2 } = instance;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(vnode2);\n        }\n        handleSetupResult(instance, asyncSetupResult, false);\n        if (hydratedEl) {\n          vnode2.el = hydratedEl;\n        }\n        const placeholder = !hydratedEl && instance.subTree.el;\n        setupRenderEffect(\n          instance,\n          vnode2,\n          // component may have been moved before resolve.\n          // if this is not a hydration, instance.subTree will be the comment\n          // placeholder.\n          parentNode(hydratedEl || instance.subTree.el),\n          // anchor will not be used if this is hydration, so only need to\n          // consider the comment placeholder case.\n          hydratedEl ? null : next(instance.subTree),\n          suspense,\n          namespace,\n          optimized2\n        );\n        if (placeholder) {\n          remove(placeholder);\n        }\n        updateHOCHostEl(instance, vnode2.el);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        if (isInPendingSuspense && --suspense.deps === 0) {\n          suspense.resolve();\n        }\n      });\n    },\n    unmount(parentSuspense2, doRemove) {\n      suspense.isUnmounted = true;\n      if (suspense.activeBranch) {\n        unmount(\n          suspense.activeBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n      if (suspense.pendingBranch) {\n        unmount(\n          suspense.pendingBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n    }\n  };\n  return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    node.parentNode,\n    // eslint-disable-next-line no-restricted-globals\n    document.createElement(\"div\"),\n    null,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals,\n    true\n  );\n  const result = hydrateNode(\n    node,\n    suspense.pendingBranch = vnode.ssContent,\n    parentComponent,\n    suspense,\n    slotScopeIds,\n    optimized\n  );\n  if (suspense.deps === 0) {\n    suspense.resolve(false, true);\n  }\n  return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n  const { shapeFlag, children } = vnode;\n  const isSlotChildren = shapeFlag & 32;\n  vnode.ssContent = normalizeSuspenseSlot(\n    isSlotChildren ? children.default : children\n  );\n  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n  let block;\n  if (isFunction(s)) {\n    const trackBlock = isBlockTreeEnabled && s._c;\n    if (trackBlock) {\n      s._d = false;\n      openBlock();\n    }\n    s = s();\n    if (trackBlock) {\n      s._d = true;\n      block = currentBlock;\n      closeBlock();\n    }\n  }\n  if (isArray(s)) {\n    const singleChild = filterSingleRoot(s);\n    if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n      warn$1(`<Suspense> slots expect a single root node.`);\n    }\n    s = singleChild;\n  }\n  s = normalizeVNode(s);\n  if (block && !s.dynamicChildren) {\n    s.dynamicChildren = block.filter((c) => c !== s);\n  }\n  return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction setActiveBranch(suspense, branch) {\n  suspense.activeBranch = branch;\n  const { vnode, parentComponent } = suspense;\n  let el = branch.el;\n  while (!el && branch.component) {\n    branch = branch.component.subTree;\n    el = branch.el;\n  }\n  vnode.el = el;\n  if (parentComponent && parentComponent.subTree === vnode) {\n    parentComponent.vnode.el = el;\n    updateHOCHostEl(parentComponent, el);\n  }\n}\nfunction isVNodeSuspensible(vnode) {\n  const suspensible = vnode.props && vnode.props.suspensible;\n  return suspensible != null && suspensible !== false;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n  isBlockTreeEnabled += value;\n  if (value < 0 && currentBlock) {\n    currentBlock.hasOnce = true;\n  }\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(\n    createBaseVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      shapeFlag,\n      true\n    )\n  );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(\n    createVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      true\n    )\n  );\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && n1.component) {\n    const dirtyInstances = hmrDirtyComponents.get(n2.type);\n    if (dirtyInstances && dirtyInstances.has(n1.component)) {\n      n1.shapeFlag &= ~256;\n      n2.shapeFlag &= ~512;\n      return false;\n    }\n  }\n  return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n  vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n  return _createVNode(\n    ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n  );\n};\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n  ref,\n  ref_key,\n  ref_for\n}) => {\n  if (typeof ref === \"number\") {\n    ref = \"\" + ref;\n  }\n  return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetStart: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null,\n    ctx: currentRenderingInstance\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString(children) ? 8 : 16;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n    warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n  }\n  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n  !isBlockNode && // has current parent block\n  currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n  // component nodes also should always be patched, because even if the\n  // component doesn't need to update, it needs to persist the instance on to\n  // the next vnode so that it can be properly unmounted later.\n  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n  // vnode should not be considered dynamic due to handler caching.\n  vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n      warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n    }\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(\n      type,\n      props,\n      true\n      /* mergeRef: true */\n    );\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag = -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject(style)) {\n      if (isProxy(style) && !isArray(style)) {\n        style = extend({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n    type = toRaw(type);\n    warn$1(\n      `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n      `\nComponent that was made reactive: `,\n      type\n    );\n  }\n  return createBaseVNode(\n    type,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    shapeFlag,\n    isBlockNode,\n    true\n  );\n}\nfunction guardReactiveProps(props) {\n  if (!props) return null;\n  return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {\n  const { props, ref, patchFlag, children, transition } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? (\n      // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n      // if the vnode itself already has a ref, cloneVNode will need to merge\n      // the refs so the single vnode can be set on multiple refs\n      mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n    ) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n    target: vnode.target,\n    targetStart: vnode.targetStart,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    // if the vnode is cloned with extra props, we can no longer assume its\n    // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n    // note: preserve flag for fragments since they use the flag for children\n    // fast paths only.\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition,\n    // These should technically only be non-null on mounted VNodes. However,\n    // they *should* be copied for kept-alive vnodes. So we just always copy\n    // them since them being non-null during a mount doesn't affect the logic as\n    // they will simply be overwritten.\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor,\n    ctx: vnode.ctx,\n    ce: vnode.ce\n  };\n  if (transition && cloneTransition) {\n    setTransitionHooks(\n      cloned,\n      transition.clone(cloned)\n    );\n  }\n  return cloned;\n}\nfunction deepCloneVNode(vnode) {\n  const cloned = cloneVNode(vnode);\n  if (isArray(vnode.children)) {\n    cloned.children = vnode.children.map(deepCloneVNode);\n  }\n  return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n  return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n  const vnode = createVNode(Static, null, content);\n  vnode.staticCount = numberOfNodes;\n  return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      // #3666, avoid reference pollution when reusing vnode\n      child.slice()\n    );\n  } else if (isVNode(child)) {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !isInternalObject(children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance = {\n    uid: uid++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    // to be immediately set\n    next: null,\n    subTree: null,\n    // will be set synchronously right after creation\n    effect: null,\n    update: null,\n    // will be set synchronously right after creation\n    job: null,\n    scope: new EffectScope(\n      true\n      /* detached */\n    ),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    ids: parent ? parent.ids : [\"\", 0, 0],\n    accessCache: null,\n    renderCache: [],\n    // local resolved assets\n    components: null,\n    directives: null,\n    // resolved props and emits options\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    // emit\n    emit: null,\n    // to be set immediately\n    emitted: null,\n    // props default value\n    propsDefaults: EMPTY_OBJ,\n    // inheritAttrs\n    inheritAttrs: type.inheritAttrs,\n    // state\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    // suspense related\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    // lifecycle hooks\n    // not using enums here because it results in computed properties\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.ctx = createDevRenderContext(instance);\n  } else {\n    instance.ctx = { _: instance };\n  }\n  instance.root = parent ? parent.root : instance;\n  instance.emit = emit.bind(null, instance);\n  if (vnode.ce) {\n    vnode.ce(instance);\n  }\n  return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n  const g = getGlobalThis();\n  const registerGlobalSetter = (key, setter) => {\n    let setters;\n    if (!(setters = g[key])) setters = g[key] = [];\n    setters.push(setter);\n    return (v) => {\n      if (setters.length > 1) setters.forEach((set) => set(v));\n      else setters[0](v);\n    };\n  };\n  internalSetCurrentInstance = registerGlobalSetter(\n    `__VUE_INSTANCE_SETTERS__`,\n    (v) => currentInstance = v\n  );\n  setInSSRSetupState = registerGlobalSetter(\n    `__VUE_SSR_SETTERS__`,\n    (v) => isInSSRComponentSetup = v\n  );\n}\nconst setCurrentInstance = (instance) => {\n  const prev = currentInstance;\n  internalSetCurrentInstance(instance);\n  instance.scope.on();\n  return () => {\n    instance.scope.off();\n    internalSetCurrentInstance(prev);\n  };\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, { isNativeTag }) {\n  if (isBuiltInTag(name) || isNativeTag(name)) {\n    warn$1(\n      \"Do not use built-in or reserved HTML elements as component id: \" + name\n    );\n  }\n}\nfunction isStatefulComponent(instance) {\n  return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false, optimized = false) {\n  isSSR && setInSSRSetupState(isSSR);\n  const { props, children } = instance.vnode;\n  const isStateful = isStatefulComponent(instance);\n  initProps(instance, props, isStateful, isSSR);\n  initSlots(instance, children, optimized);\n  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n  isSSR && setInSSRSetupState(false);\n  return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n  var _a;\n  const Component = instance.type;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    if (Component.name) {\n      validateComponentName(Component.name, instance.appContext.config);\n    }\n    if (Component.components) {\n      const names = Object.keys(Component.components);\n      for (let i = 0; i < names.length; i++) {\n        validateComponentName(names[i], instance.appContext.config);\n      }\n    }\n    if (Component.directives) {\n      const names = Object.keys(Component.directives);\n      for (let i = 0; i < names.length; i++) {\n        validateDirectiveName(names[i]);\n      }\n    }\n    if (Component.compilerOptions && isRuntimeOnly()) {\n      warn$1(\n        `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n      );\n    }\n  }\n  instance.accessCache = /* @__PURE__ */ Object.create(null);\n  instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    exposePropsOnRenderContext(instance);\n  }\n  const { setup } = Component;\n  if (setup) {\n    pauseTracking();\n    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n    const reset = setCurrentInstance(instance);\n    const setupResult = callWithErrorHandling(\n      setup,\n      instance,\n      0,\n      [\n        !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n        setupContext\n      ]\n    );\n    const isAsyncSetup = isPromise(setupResult);\n    resetTracking();\n    reset();\n    if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {\n      markAsyncBoundary(instance);\n    }\n    if (isAsyncSetup) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance, 0);\n        });\n      } else {\n        instance.asyncDep = setupResult;\n        if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n          const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n          warn$1(\n            `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n          );\n        }\n      }\n    } else {\n      handleSetupResult(instance, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance, isSSR);\n  }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n  if (isFunction(setupResult)) {\n    if (instance.type.__ssrInlineRender) {\n      instance.ssrRender = setupResult;\n    } else {\n      instance.render = setupResult;\n    }\n  } else if (isObject(setupResult)) {\n    if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n      warn$1(\n        `setup() should not return VNodes directly - return a render function instead.`\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.devtoolsRawSetupState = setupResult;\n    }\n    instance.setupState = proxyRefs(setupResult);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      exposeSetupStateOnRenderContext(instance);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n    warn$1(\n      `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n    );\n  }\n  finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n  compile = _compile;\n  installWithProxy = (i) => {\n    if (i.render._rc) {\n      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n    }\n  };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n  const Component = instance.type;\n  if (!instance.render) {\n    if (!isSSR && compile && !Component.render) {\n      const template = Component.template || resolveMergedOptions(instance).template;\n      if (template) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `compile`);\n        }\n        const { isCustomElement, compilerOptions } = instance.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend(\n          extend(\n            {\n              isCustomElement,\n              delimiters\n            },\n            compilerOptions\n          ),\n          componentCompilerOptions\n        );\n        Component.render = compile(template, finalCompilerOptions);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `compile`);\n        }\n      }\n    }\n    instance.render = Component.render || NOOP;\n    if (installWithProxy) {\n      installWithProxy(instance);\n    }\n  }\n  if (__VUE_OPTIONS_API__ && true) {\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    try {\n      applyOptions(instance);\n    } finally {\n      resetTracking();\n      reset();\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n    if (!compile && Component.template) {\n      warn$1(\n        `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n      );\n    } else {\n      warn$1(`Component is missing template or render function: `, Component);\n    }\n  }\n}\nconst attrsProxyHandlers = !!(process.env.NODE_ENV !== \"production\") ? {\n  get(target, key) {\n    markAttrsAccessed();\n    track(target, \"get\", \"\");\n    return target[key];\n  },\n  set() {\n    warn$1(`setupContext.attrs is readonly.`);\n    return false;\n  },\n  deleteProperty() {\n    warn$1(`setupContext.attrs is readonly.`);\n    return false;\n  }\n} : {\n  get(target, key) {\n    track(target, \"get\", \"\");\n    return target[key];\n  }\n};\nfunction getSlotsProxy(instance) {\n  return new Proxy(instance.slots, {\n    get(target, key) {\n      track(instance, \"get\", \"$slots\");\n      return target[key];\n    }\n  });\n}\nfunction createSetupContext(instance) {\n  const expose = (exposed) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (instance.exposed) {\n        warn$1(`expose() should be called only once per setup().`);\n      }\n      if (exposed != null) {\n        let exposedType = typeof exposed;\n        if (exposedType === \"object\") {\n          if (isArray(exposed)) {\n            exposedType = \"array\";\n          } else if (isRef(exposed)) {\n            exposedType = \"ref\";\n          }\n        }\n        if (exposedType !== \"object\") {\n          warn$1(\n            `expose() should be passed a plain object, received ${exposedType}.`\n          );\n        }\n      }\n    }\n    instance.exposed = exposed || {};\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    let attrsProxy;\n    let slotsProxy;\n    return Object.freeze({\n      get attrs() {\n        return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers));\n      },\n      get slots() {\n        return slotsProxy || (slotsProxy = getSlotsProxy(instance));\n      },\n      get emit() {\n        return (event, ...args) => instance.emit(event, ...args);\n      },\n      expose\n    });\n  } else {\n    return {\n      attrs: new Proxy(instance.attrs, attrsProxyHandlers),\n      slots: instance.slots,\n      emit: instance.emit,\n      expose\n    };\n  }\n}\nfunction getComponentPublicInstance(instance) {\n  if (instance.exposed) {\n    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance);\n        }\n      },\n      has(target, key) {\n        return key in target || key in publicPropertiesMap;\n      }\n    }));\n  } else {\n    return instance.proxy;\n  }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n  let name = getComponentName(Component);\n  if (!name && Component.__file) {\n    const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n  if (!name && instance && instance.parent) {\n    const inferFromRegistry = (registry) => {\n      for (const key in registry) {\n        if (registry[key] === Component) {\n          return key;\n        }\n      }\n    };\n    name = inferFromRegistry(\n      instance.components || instance.parent.type.components\n    ) || inferFromRegistry(instance.appContext.components);\n  }\n  return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n  return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n  const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const i = getCurrentInstance();\n    if (i && i.appContext.config.warnRecursiveComputed) {\n      c._warnRecursive = true;\n    }\n  }\n  return c;\n};\n\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\n\nfunction initCustomFormatter() {\n  if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n    return;\n  }\n  const vueStyle = { style: \"color:#3ba776\" };\n  const numberStyle = { style: \"color:#1677ff\" };\n  const stringStyle = { style: \"color:#f5222d\" };\n  const keywordStyle = { style: \"color:#eb2f96\" };\n  const formatter = {\n    __vue_custom_formatter: true,\n    header(obj) {\n      if (!isObject(obj)) {\n        return null;\n      }\n      if (obj.__isVue) {\n        return [\"div\", vueStyle, `VueInstance`];\n      } else if (isRef(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, genRefFlag(obj)],\n          \"<\",\n          // avoid debugger accessing value affecting behavior\n          formatValue(\"_value\" in obj ? obj._value : obj),\n          `>`\n        ];\n      } else if (isReactive(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n          \"<\",\n          formatValue(obj),\n          `>${isReadonly(obj) ? ` (readonly)` : ``}`\n        ];\n      } else if (isReadonly(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n          \"<\",\n          formatValue(obj),\n          \">\"\n        ];\n      }\n      return null;\n    },\n    hasBody(obj) {\n      return obj && obj.__isVue;\n    },\n    body(obj) {\n      if (obj && obj.__isVue) {\n        return [\n          \"div\",\n          {},\n          ...formatInstance(obj.$)\n        ];\n      }\n    }\n  };\n  function formatInstance(instance) {\n    const blocks = [];\n    if (instance.type.props && instance.props) {\n      blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n    }\n    if (instance.setupState !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n    }\n    if (instance.data !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n    }\n    const computed = extractKeys(instance, \"computed\");\n    if (computed) {\n      blocks.push(createInstanceBlock(\"computed\", computed));\n    }\n    const injected = extractKeys(instance, \"inject\");\n    if (injected) {\n      blocks.push(createInstanceBlock(\"injected\", injected));\n    }\n    blocks.push([\n      \"div\",\n      {},\n      [\n        \"span\",\n        {\n          style: keywordStyle.style + \";opacity:0.66\"\n        },\n        \"$ (internal): \"\n      ],\n      [\"object\", { object: instance }]\n    ]);\n    return blocks;\n  }\n  function createInstanceBlock(type, target) {\n    target = extend({}, target);\n    if (!Object.keys(target).length) {\n      return [\"span\", {}];\n    }\n    return [\n      \"div\",\n      { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n      [\n        \"div\",\n        {\n          style: \"color:#476582\"\n        },\n        type\n      ],\n      [\n        \"div\",\n        {\n          style: \"padding-left:1.25em\"\n        },\n        ...Object.keys(target).map((key) => {\n          return [\n            \"div\",\n            {},\n            [\"span\", keywordStyle, key + \": \"],\n            formatValue(target[key], false)\n          ];\n        })\n      ]\n    ];\n  }\n  function formatValue(v, asRaw = true) {\n    if (typeof v === \"number\") {\n      return [\"span\", numberStyle, v];\n    } else if (typeof v === \"string\") {\n      return [\"span\", stringStyle, JSON.stringify(v)];\n    } else if (typeof v === \"boolean\") {\n      return [\"span\", keywordStyle, v];\n    } else if (isObject(v)) {\n      return [\"object\", { object: asRaw ? toRaw(v) : v }];\n    } else {\n      return [\"span\", stringStyle, String(v)];\n    }\n  }\n  function extractKeys(instance, type) {\n    const Comp = instance.type;\n    if (isFunction(Comp)) {\n      return;\n    }\n    const extracted = {};\n    for (const key in instance.ctx) {\n      if (isKeyOfType(Comp, key, type)) {\n        extracted[key] = instance.ctx[key];\n      }\n    }\n    return extracted;\n  }\n  function isKeyOfType(Comp, key, type) {\n    const opts = Comp[type];\n    if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n      return true;\n    }\n    if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n      return true;\n    }\n    if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n      return true;\n    }\n  }\n  function genRefFlag(v) {\n    if (isShallow(v)) {\n      return `ShallowRef`;\n    }\n    if (v.effect) {\n      return `ComputedRef`;\n    }\n    return `Ref`;\n  }\n  if (window.devtoolsFormatters) {\n    window.devtoolsFormatters.push(formatter);\n  } else {\n    window.devtoolsFormatters = [formatter];\n  }\n}\n\nfunction withMemo(memo, render, cache, index) {\n  const cached = cache[index];\n  if (cached && isMemoSame(cached, memo)) {\n    return cached;\n  }\n  const ret = render();\n  ret.memo = memo.slice();\n  ret.cacheIndex = index;\n  return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n  const prev = cached.memo;\n  if (prev.length != memo.length) {\n    return false;\n  }\n  for (let i = 0; i < prev.length; i++) {\n    if (hasChanged(prev[i], memo[i])) {\n      return false;\n    }\n  }\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(cached);\n  }\n  return true;\n}\n\nconst version = \"3.5.12\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || true ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n  createComponentInstance,\n  setupComponent,\n  renderComponentRoot,\n  setCurrentRenderingInstance,\n  isVNode: isVNode,\n  normalizeVNode,\n  getComponentPublicInstance,\n  ensureValidVNode,\n  pushWarningContext,\n  popWarningContext\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = null;\nconst compatUtils = null;\nconst DeprecationTypes = null;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useId, useModel, useSSRContext, useSlots, useTemplateRef, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","/**\n* @vue/runtime-dom v3.5.12\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { warn, h, BaseTransition, assertNumber, BaseTransitionPropsValidators, getCurrentInstance, onBeforeMount, watchPostEffect, onMounted, onUnmounted, Fragment, Static, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, unref, createVNode, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, Text, isRuntimeOnly, createRenderer, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { extend, isObject, toNumber, isArray, isString, hyphenate, capitalize, includeBooleanAttr, isSymbol, isSpecialBooleanAttr, isFunction, NOOP, isOn, isModelListener, camelize as camelize$1, isPlainObject, hasOwn, EMPTY_OBJ, looseToNumber, looseIndexOf, isSet, looseEqual, invokeArrayFns, isHTMLTag, isSVGTag, isMathMLTag } from '@vue/shared';\n\nlet policy = void 0;\nconst tt = typeof window !== \"undefined\" && window.trustedTypes;\nif (tt) {\n  try {\n    policy = /* @__PURE__ */ tt.createPolicy(\"vue\", {\n      createHTML: (val) => val\n    });\n  } catch (e) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(`Error creating trusted types policy: ${e}`);\n  }\n}\nconst unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, namespace, is, props) => {\n    const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text) => doc.createTextNode(text),\n  createComment: (text) => doc.createComment(text),\n  setText: (node, text) => {\n    node.nodeValue = text;\n  },\n  setElementText: (el, text) => {\n    el.textContent = text;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  // __UNSAFE__\n  // Reason: innerHTML.\n  // Static content here can only come from compiled templates.\n  // As long as the user only uses trusted templates, this is safe.\n  insertStaticContent(content, parent, anchor, namespace, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling)) break;\n      }\n    } else {\n      templateContainer.innerHTML = unsafeToTrustedHTML(\n        namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content\n      );\n      const template = templateContainer.content;\n      if (namespace === \"svg\" || namespace === \"mathml\") {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      // first\n      before ? before.nextSibling : parent.firstChild,\n      // last\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = /* @__PURE__ */ extend(\n  {},\n  BaseTransitionPropsValidators,\n  DOMTransitionPropsValidators\n);\nconst decorate$1 = (t) => {\n  t.displayName = \"Transition\";\n  t.props = TransitionPropsValidators;\n  return t;\n};\nconst Transition = /* @__PURE__ */ decorate$1(\n  (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots)\n);\nconst callHook = (hook, args = []) => {\n  if (isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const {\n    name = \"v\",\n    type,\n    duration,\n    enterFromClass = `${name}-enter-from`,\n    enterActiveClass = `${name}-enter-active`,\n    enterToClass = `${name}-enter-to`,\n    appearFromClass = enterFromClass,\n    appearActiveClass = enterActiveClass,\n    appearToClass = enterToClass,\n    leaveFromClass = `${name}-leave-from`,\n    leaveActiveClass = `${name}-leave-active`,\n    leaveToClass = `${name}-leave-to`\n  } = rawProps;\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const {\n    onBeforeEnter,\n    onEnter,\n    onEnterCancelled,\n    onLeave,\n    onLeaveCancelled,\n    onBeforeAppear = onBeforeEnter,\n    onAppear = onEnter,\n    onAppearCancelled = onEnterCancelled\n  } = baseProps;\n  const finishEnter = (el, isAppear, done) => {\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve);\n        }\n      });\n    };\n  };\n  return extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      addTransitionClass(el, leaveActiveClass);\n      forceReflow();\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve);\n        }\n      });\n      callHook(onLeave, [el, resolve]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = toNumber(val);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(res, \"<transition> explicit duration\");\n  }\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el[vtcKey] = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve();\n    }\n  };\n  if (explicitTimeout != null) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n  const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n    propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n    getStyleProperties(`${TRANSITION}Property`).toString()\n  );\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  if (s === \"auto\") return 0;\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el[vtcKey];\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\n\nconst vShowOriginalDisplay = Symbol(\"_vod\");\nconst vShowHidden = Symbol(\"_vsh\");\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el[vShowOriginalDisplay] = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue) return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  vShow.name = \"show\";\n}\nfunction setDisplay(el, value) {\n  el.style.display = value ? el[vShowOriginalDisplay] : \"none\";\n  el[vShowHidden] = !value;\n}\nfunction initVShowForSSR() {\n  vShow.getSSRProps = ({ value }) => {\n    if (!value) {\n      return { style: { display: \"none\" } };\n    }\n  };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n  const instance = getCurrentInstance();\n  if (!instance) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n    return;\n  }\n  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n    Array.from(\n      document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n    ).forEach((node) => setVarsOnNode(node, vars));\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.getCssVars = () => getter(instance.proxy);\n  }\n  const setVars = () => {\n    const vars = getter(instance.proxy);\n    if (instance.ce) {\n      setVarsOnNode(instance.ce, vars);\n    } else {\n      setVarsOnVNode(instance.subTree, vars);\n    }\n    updateTeleports(vars);\n  };\n  onBeforeMount(() => {\n    watchPostEffect(setVars);\n  });\n  onMounted(() => {\n    const ob = new MutationObserver(setVars);\n    ob.observe(instance.subTree.el.parentNode, { childList: true });\n    onUnmounted(() => ob.disconnect());\n  });\n}\nfunction setVarsOnVNode(vnode, vars) {\n  if (vnode.shapeFlag & 128) {\n    const suspense = vnode.suspense;\n    vnode = suspense.activeBranch;\n    if (suspense.pendingBranch && !suspense.isHydrating) {\n      suspense.effects.push(() => {\n        setVarsOnVNode(suspense.activeBranch, vars);\n      });\n    }\n  }\n  while (vnode.component) {\n    vnode = vnode.component.subTree;\n  }\n  if (vnode.shapeFlag & 1 && vnode.el) {\n    setVarsOnNode(vnode.el, vars);\n  } else if (vnode.type === Fragment) {\n    vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n  } else if (vnode.type === Static) {\n    let { el, anchor } = vnode;\n    while (el) {\n      setVarsOnNode(el, vars);\n      if (el === anchor) break;\n      el = el.nextSibling;\n    }\n  }\n}\nfunction setVarsOnNode(el, vars) {\n  if (el.nodeType === 1) {\n    const style = el.style;\n    let cssText = \"\";\n    for (const key in vars) {\n      style.setProperty(`--${key}`, vars[key]);\n      cssText += `--${key}: ${vars[key]};`;\n    }\n    style[CSS_VAR_TEXT] = cssText;\n  }\n}\n\nconst displayRE = /(^|;)\\s*display\\s*:/;\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const isCssString = isString(next);\n  let hasControlledDisplay = false;\n  if (next && !isCssString) {\n    if (prev) {\n      if (!isString(prev)) {\n        for (const key in prev) {\n          if (next[key] == null) {\n            setStyle(style, key, \"\");\n          }\n        }\n      } else {\n        for (const prevStyle of prev.split(\";\")) {\n          const key = prevStyle.slice(0, prevStyle.indexOf(\":\")).trim();\n          if (next[key] == null) {\n            setStyle(style, key, \"\");\n          }\n        }\n      }\n    }\n    for (const key in next) {\n      if (key === \"display\") {\n        hasControlledDisplay = true;\n      }\n      setStyle(style, key, next[key]);\n    }\n  } else {\n    if (isCssString) {\n      if (prev !== next) {\n        const cssVarText = style[CSS_VAR_TEXT];\n        if (cssVarText) {\n          next += \";\" + cssVarText;\n        }\n        style.cssText = next;\n        hasControlledDisplay = displayRE.test(next);\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n  }\n  if (vShowOriginalDisplay in el) {\n    el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : \"\";\n    if (el[vShowHidden]) {\n      style.display = \"none\";\n    }\n  }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null) val = \"\";\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (semicolonRE.test(val)) {\n        warn(\n          `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n        );\n      }\n    }\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(\n          hyphenate(prefixed),\n          val.replace(importantRE, \"\"),\n          \"important\"\n        );\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = camelize(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    if (value == null || isBoolean && !includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(\n        key,\n        isBoolean ? \"\" : isSymbol(value) ? String(value) : value\n      );\n    }\n  }\n}\n\nfunction patchDOMProp(el, key, value, parentComponent, attrName) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (value != null) {\n      el[key] = key === \"innerHTML\" ? unsafeToTrustedHTML(value) : value;\n    }\n    return;\n  }\n  const tag = el.tagName;\n  if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n  !tag.includes(\"-\")) {\n    const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") || \"\" : el.value;\n    const newValue = value == null ? (\n      // #11647: value should be set as empty string for null and undefined,\n      // but <input type=\"checkbox\"> should be set as 'on'.\n      el.type === \"checkbox\" ? \"on\" : \"\"\n    ) : String(value);\n    if (oldValue !== newValue || !(\"_value\" in el)) {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    el._value = value;\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n      warn(\n        `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n        e\n      );\n    }\n  }\n  needRemove && el.removeAttribute(attrName || key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n  const invokers = el[veiKey] || (el[veiKey] = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(\n        !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue,\n        instance\n      );\n      addEventListener(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n  return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n  const invoker = (e) => {\n    if (!e._vts) {\n      e._vts = Date.now();\n    } else if (e._vts <= invoker.attached) {\n      return;\n    }\n    callWithAsyncErrorHandling(\n      patchStopImmediatePropagation(e, invoker.value),\n      instance,\n      5,\n      [e]\n    );\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction sanitizeEventValue(value, propName) {\n  if (isFunction(value) || isArray(value)) {\n    return value;\n  }\n  warn(\n    `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop?\nExpected function or array of functions, received type ${typeof value}.`\n  );\n  return NOOP;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map(\n      (fn) => (e2) => !e2._stopped && fn && fn(e2)\n    );\n  } else {\n    return value;\n  }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {\n  const isSVG = namespace === \"svg\";\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (isOn(key)) {\n    if (!isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(el, key, nextValue);\n    if (!el.tagName.includes(\"-\") && (key === \"value\" || key === \"checked\" || key === \"selected\")) {\n      patchAttr(el, key, nextValue, isSVG, parentComponent, key !== \"value\");\n    }\n  } else if (\n    // #11081 force set props for possible async custom element\n    el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue))\n  ) {\n    patchDOMProp(el, camelize$1(key), nextValue, parentComponent, key);\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && isNativeOn(key) && isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (key === \"width\" || key === \"height\") {\n    const tag = el.tagName;\n    if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n      return false;\n    }\n  }\n  if (isNativeOn(key) && isString(value)) {\n    return false;\n  }\n  return key in el;\n}\n\nconst REMOVAL = {};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, extraOptions, _createApp) {\n  const Comp = defineComponent(options, extraOptions);\n  if (isPlainObject(Comp)) extend(Comp, extraOptions);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, _createApp);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\n/*! #__NO_SIDE_EFFECTS__ */\nconst defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => {\n  return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, _createApp = createApp) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    this._createApp = _createApp;\n    this._isVueCE = true;\n    /**\n     * @internal\n     */\n    this._instance = null;\n    /**\n     * @internal\n     */\n    this._app = null;\n    /**\n     * @internal\n     */\n    this._nonce = this._def.nonce;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    this._styleChildren = /* @__PURE__ */ new WeakSet();\n    this._ob = null;\n    if (this.shadowRoot && _createApp !== createApp) {\n      this._root = this.shadowRoot;\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n        warn(\n          `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n        );\n      }\n      if (_def.shadowRoot !== false) {\n        this.attachShadow({ mode: \"open\" });\n        this._root = this.shadowRoot;\n      } else {\n        this._root = this;\n      }\n    }\n    if (!this._def.__asyncLoader) {\n      this._resolveProps(this._def);\n    }\n  }\n  connectedCallback() {\n    if (!this.isConnected) return;\n    if (!this.shadowRoot) {\n      this._parseSlots();\n    }\n    this._connected = true;\n    let parent = this;\n    while (parent = parent && (parent.parentNode || parent.host)) {\n      if (parent instanceof VueElement) {\n        this._parent = parent;\n        break;\n      }\n    }\n    if (!this._instance) {\n      if (this._resolved) {\n        this._setParent();\n        this._update();\n      } else {\n        if (parent && parent._pendingResolve) {\n          this._pendingResolve = parent._pendingResolve.then(() => {\n            this._pendingResolve = void 0;\n            this._resolveDef();\n          });\n        } else {\n          this._resolveDef();\n        }\n      }\n    }\n  }\n  _setParent(parent = this._parent) {\n    if (parent) {\n      this._instance.parent = parent._instance;\n      this._instance.provides = parent._instance.provides;\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    nextTick(() => {\n      if (!this._connected) {\n        if (this._ob) {\n          this._ob.disconnect();\n          this._ob = null;\n        }\n        this._app && this._app.unmount();\n        if (this._instance) this._instance.ce = void 0;\n        this._app = this._instance = null;\n      }\n    });\n  }\n  /**\n   * resolve inner component definition (handle possible async component)\n   */\n  _resolveDef() {\n    if (this._pendingResolve) {\n      return;\n    }\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    this._ob = new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    });\n    this._ob.observe(this, { attributes: true });\n    const resolve = (def, isAsync = false) => {\n      this._resolved = true;\n      this._pendingResolve = void 0;\n      const { props, styles } = def;\n      let numberProps;\n      if (props && !isArray(props)) {\n        for (const key in props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            if (key in this._props) {\n              this._props[key] = toNumber(this._props[key]);\n            }\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize$1(key)] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      if (isAsync) {\n        this._resolveProps(def);\n      }\n      if (this.shadowRoot) {\n        this._applyStyles(styles);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && styles) {\n        warn(\n          \"Custom element style injection is not supported when using shadowRoot: false\"\n        );\n      }\n      this._mount(def);\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      this._pendingResolve = asyncDef().then(\n        (def) => resolve(this._def = def, true)\n      );\n    } else {\n      resolve(this._def);\n    }\n  }\n  _mount(def) {\n    if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) && !def.name) {\n      def.name = \"VueElement\";\n    }\n    this._app = this._createApp(def);\n    if (def.configureApp) {\n      def.configureApp(this._app);\n    }\n    this._app._ceVNode = this._createVNode();\n    this._app.mount(this._root);\n    const exposed = this._instance && this._instance.exposed;\n    if (!exposed) return;\n    for (const key in exposed) {\n      if (!hasOwn(this, key)) {\n        Object.defineProperty(this, key, {\n          // unwrap ref to be consistent with public instance behavior\n          get: () => unref(exposed[key])\n        });\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn(`Exposed property \"${key}\" already exists on custom element.`);\n      }\n    }\n  }\n  _resolveProps(def) {\n    const { props } = def;\n    const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n    for (const key of Object.keys(this)) {\n      if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n        this._setProp(key, this[key]);\n      }\n    }\n    for (const key of declaredPropKeys.map(camelize$1)) {\n      Object.defineProperty(this, key, {\n        get() {\n          return this._getProp(key);\n        },\n        set(val) {\n          this._setProp(key, val, true, true);\n        }\n      });\n    }\n  }\n  _setAttr(key) {\n    if (key.startsWith(\"data-v-\")) return;\n    const has = this.hasAttribute(key);\n    let value = has ? this.getAttribute(key) : REMOVAL;\n    const camelKey = camelize$1(key);\n    if (has && this._numberProps && this._numberProps[camelKey]) {\n      value = toNumber(value);\n    }\n    this._setProp(camelKey, value, false, true);\n  }\n  /**\n   * @internal\n   */\n  _getProp(key) {\n    return this._props[key];\n  }\n  /**\n   * @internal\n   */\n  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {\n    if (val !== this._props[key]) {\n      if (val === REMOVAL) {\n        delete this._props[key];\n      } else {\n        this._props[key] = val;\n        if (key === \"key\" && this._app) {\n          this._app._ceVNode.key = val;\n        }\n      }\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        if (val === true) {\n          this.setAttribute(hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(hyphenate(key));\n        }\n      }\n    }\n  }\n  _update() {\n    render(this._createVNode(), this._root);\n  }\n  _createVNode() {\n    const baseProps = {};\n    if (!this.shadowRoot) {\n      baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);\n    }\n    const vnode = createVNode(this._def, extend(baseProps, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance) => {\n        this._instance = instance;\n        instance.ce = this;\n        instance.isCE = true;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          instance.ceReload = (newStyles) => {\n            if (this._styles) {\n              this._styles.forEach((s) => this._root.removeChild(s));\n              this._styles.length = 0;\n            }\n            this._applyStyles(newStyles);\n            this._instance = null;\n            this._update();\n          };\n        }\n        const dispatch = (event, args) => {\n          this.dispatchEvent(\n            new CustomEvent(\n              event,\n              isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args }\n            )\n          );\n        };\n        instance.emit = (event, ...args) => {\n          dispatch(event, args);\n          if (hyphenate(event) !== event) {\n            dispatch(hyphenate(event), args);\n          }\n        };\n        this._setParent();\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles, owner) {\n    if (!styles) return;\n    if (owner) {\n      if (owner === this._def || this._styleChildren.has(owner)) {\n        return;\n      }\n      this._styleChildren.add(owner);\n    }\n    const nonce = this._nonce;\n    for (let i = styles.length - 1; i >= 0; i--) {\n      const s = document.createElement(\"style\");\n      if (nonce) s.setAttribute(\"nonce\", nonce);\n      s.textContent = styles[i];\n      this.shadowRoot.prepend(s);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (owner) {\n          if (owner.__hmrId) {\n            if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map();\n            let entry = this._childStyles.get(owner.__hmrId);\n            if (!entry) {\n              this._childStyles.set(owner.__hmrId, entry = []);\n            }\n            entry.push(s);\n          }\n        } else {\n          (this._styles || (this._styles = [])).push(s);\n        }\n      }\n    }\n  }\n  /**\n   * Only called when shadowRoot is false\n   */\n  _parseSlots() {\n    const slots = this._slots = {};\n    let n;\n    while (n = this.firstChild) {\n      const slotName = n.nodeType === 1 && n.getAttribute(\"slot\") || \"default\";\n      (slots[slotName] || (slots[slotName] = [])).push(n);\n      this.removeChild(n);\n    }\n  }\n  /**\n   * Only called when shadowRoot is false\n   */\n  _renderSlots() {\n    const outlets = (this._teleportTarget || this).querySelectorAll(\"slot\");\n    const scopeId = this._instance.type.__scopeId;\n    for (let i = 0; i < outlets.length; i++) {\n      const o = outlets[i];\n      const slotName = o.getAttribute(\"name\") || \"default\";\n      const content = this._slots[slotName];\n      const parent = o.parentNode;\n      if (content) {\n        for (const n of content) {\n          if (scopeId && n.nodeType === 1) {\n            const id = scopeId + \"-s\";\n            const walker = document.createTreeWalker(n, 1);\n            n.setAttribute(id, \"\");\n            let child;\n            while (child = walker.nextNode()) {\n              child.setAttribute(id, \"\");\n            }\n          }\n          parent.insertBefore(n, o);\n        }\n      } else {\n        while (o.firstChild) parent.insertBefore(o.firstChild, o);\n      }\n      parent.removeChild(o);\n    }\n  }\n  /**\n   * @internal\n   */\n  _injectChildStyle(comp) {\n    this._applyStyles(comp.styles, comp);\n  }\n  /**\n   * @internal\n   */\n  _removeChildStyle(comp) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      this._styleChildren.delete(comp);\n      if (this._childStyles && comp.__hmrId) {\n        const oldStyles = this._childStyles.get(comp.__hmrId);\n        if (oldStyles) {\n          oldStyles.forEach((s) => this._root.removeChild(s));\n          oldStyles.length = 0;\n        }\n      }\n    }\n  }\n}\nfunction useHost(caller) {\n  const instance = getCurrentInstance();\n  const el = instance && instance.ce;\n  if (el) {\n    return el;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    if (!instance) {\n      warn(\n        `${caller || \"useHost\"} called without an active component instance.`\n      );\n    } else {\n      warn(\n        `${caller || \"useHost\"} can only be used in components defined via defineCustomElement.`\n      );\n    }\n  }\n  return null;\n}\nfunction useShadowRoot() {\n  const el = !!(process.env.NODE_ENV !== \"production\") ? useHost(\"useShadowRoot\") : useHost();\n  return el && el.shadowRoot;\n}\n\nfunction useCssModule(name = \"$style\") {\n  {\n    const instance = getCurrentInstance();\n    if (!instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n      return EMPTY_OBJ;\n    }\n    const modules = instance.type.__cssModules;\n    if (!modules) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n      return EMPTY_OBJ;\n    }\n    const mod = modules[name];\n    if (!mod) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n      return EMPTY_OBJ;\n    }\n    return mod;\n  }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst decorate = (t) => {\n  delete t.props.mode;\n  return t;\n};\nconst TransitionGroupImpl = /* @__PURE__ */ decorate({\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevChildren;\n    let children;\n    onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(\n        prevChildren[0].el,\n        instance.vnode.el,\n        moveClass\n      )) {\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el[moveCbKey] = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el[moveCbKey] = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n    });\n    return () => {\n      const rawProps = toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || Fragment;\n      prevChildren = [];\n      if (children) {\n        for (let i = 0; i < children.length; i++) {\n          const child = children[i];\n          if (child.el && child.el instanceof Element) {\n            prevChildren.push(child);\n            setTransitionHooks(\n              child,\n              resolveTransitionHooks(\n                child,\n                cssTransitionProps,\n                state,\n                instance\n              )\n            );\n            positionMap.set(\n              child,\n              child.el.getBoundingClientRect()\n            );\n          }\n        }\n      }\n      children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\") && child.type !== Text) {\n          warn(`<TransitionGroup> children must be keyed.`);\n        }\n      }\n      return createVNode(tag, null, children);\n    };\n  }\n});\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el[moveCbKey]) {\n    el[moveCbKey]();\n  }\n  if (el[enterCbKey]) {\n    el[enterCbKey]();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n  const fn = vnode.props[\"onUpdate:modelValue\"] || false;\n  return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n  e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n  const target = e.target;\n  if (target.composing) {\n    target.composing = false;\n    target.dispatchEvent(new Event(\"input\"));\n  }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n  created(el, { modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n    addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n      if (e.target.composing) return;\n      let domValue = el.value;\n      if (trim) {\n        domValue = domValue.trim();\n      }\n      if (castToNumber) {\n        domValue = looseToNumber(domValue);\n      }\n      el[assignKey](domValue);\n    });\n    if (trim) {\n      addEventListener(el, \"change\", () => {\n        el.value = el.value.trim();\n      });\n    }\n    if (!lazy) {\n      addEventListener(el, \"compositionstart\", onCompositionStart);\n      addEventListener(el, \"compositionend\", onCompositionEnd);\n      addEventListener(el, \"change\", onCompositionEnd);\n    }\n  },\n  // set value on mounted so it's after min/max for type=\"range\"\n  mounted(el, { value }) {\n    el.value = value == null ? \"\" : value;\n  },\n  beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (el.composing) return;\n    const elValue = (number || el.type === \"number\") && !/^0\\d/.test(el.value) ? looseToNumber(el.value) : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (elValue === newValue) {\n      return;\n    }\n    if (document.activeElement === el && el.type !== \"range\") {\n      if (lazy && value === oldValue) {\n        return;\n      }\n      if (trim && el.value.trim() === newValue) {\n        return;\n      }\n    }\n    el.value = newValue;\n  }\n};\nconst vModelCheckbox = {\n  // #4096 array checkboxes need to be deep traversed\n  deep: true,\n  created(el, _, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      const modelValue = el._modelValue;\n      const elementValue = getValue(el);\n      const checked = el.checked;\n      const assign = el[assignKey];\n      if (isArray(modelValue)) {\n        const index = looseIndexOf(modelValue, elementValue);\n        const found = index !== -1;\n        if (checked && !found) {\n          assign(modelValue.concat(elementValue));\n        } else if (!checked && found) {\n          const filtered = [...modelValue];\n          filtered.splice(index, 1);\n          assign(filtered);\n        }\n      } else if (isSet(modelValue)) {\n        const cloned = new Set(modelValue);\n        if (checked) {\n          cloned.add(elementValue);\n        } else {\n          cloned.delete(elementValue);\n        }\n        assign(cloned);\n      } else {\n        assign(getCheckboxValue(el, checked));\n      }\n    });\n  },\n  // set initial checked on mount to wait for true-value/false-value\n  mounted: setChecked,\n  beforeUpdate(el, binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    setChecked(el, binding, vnode);\n  }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n  el._modelValue = value;\n  let checked;\n  if (isArray(value)) {\n    checked = looseIndexOf(value, vnode.props.value) > -1;\n  } else if (isSet(value)) {\n    checked = value.has(vnode.props.value);\n  } else {\n    if (value === oldValue) return;\n    checked = looseEqual(value, getCheckboxValue(el, true));\n  }\n  if (el.checked !== checked) {\n    el.checked = checked;\n  }\n}\nconst vModelRadio = {\n  created(el, { value }, vnode) {\n    el.checked = looseEqual(value, vnode.props.value);\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      el[assignKey](getValue(el));\n    });\n  },\n  beforeUpdate(el, { value, oldValue }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (value !== oldValue) {\n      el.checked = looseEqual(value, vnode.props.value);\n    }\n  }\n};\nconst vModelSelect = {\n  // <select multiple> value need to be deep traversed\n  deep: true,\n  created(el, { value, modifiers: { number } }, vnode) {\n    const isSetModel = isSet(value);\n    addEventListener(el, \"change\", () => {\n      const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n        (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n      );\n      el[assignKey](\n        el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n      );\n      el._assigning = true;\n      nextTick(() => {\n        el._assigning = false;\n      });\n    });\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  // set value in mounted & updated because <select> relies on its children\n  // <option>s.\n  mounted(el, { value }) {\n    setSelected(el, value);\n  },\n  beforeUpdate(el, _binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  updated(el, { value }) {\n    if (!el._assigning) {\n      setSelected(el, value);\n    }\n  }\n};\nfunction setSelected(el, value) {\n  const isMultiple = el.multiple;\n  const isArrayValue = isArray(value);\n  if (isMultiple && !isArrayValue && !isSet(value)) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(\n      `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n    );\n    return;\n  }\n  for (let i = 0, l = el.options.length; i < l; i++) {\n    const option = el.options[i];\n    const optionValue = getValue(option);\n    if (isMultiple) {\n      if (isArrayValue) {\n        const optionType = typeof optionValue;\n        if (optionType === \"string\" || optionType === \"number\") {\n          option.selected = value.some((v) => String(v) === String(optionValue));\n        } else {\n          option.selected = looseIndexOf(value, optionValue) > -1;\n        }\n      } else {\n        option.selected = value.has(optionValue);\n      }\n    } else if (looseEqual(getValue(option), value)) {\n      if (el.selectedIndex !== i) el.selectedIndex = i;\n      return;\n    }\n  }\n  if (!isMultiple && el.selectedIndex !== -1) {\n    el.selectedIndex = -1;\n  }\n}\nfunction getValue(el) {\n  return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n  const key = checked ? \"_trueValue\" : \"_falseValue\";\n  return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n  created(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"created\");\n  },\n  mounted(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"mounted\");\n  },\n  beforeUpdate(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n  },\n  updated(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"updated\");\n  }\n};\nfunction resolveDynamicModel(tagName, type) {\n  switch (tagName) {\n    case \"SELECT\":\n      return vModelSelect;\n    case \"TEXTAREA\":\n      return vModelText;\n    default:\n      switch (type) {\n        case \"checkbox\":\n          return vModelCheckbox;\n        case \"radio\":\n          return vModelRadio;\n        default:\n          return vModelText;\n      }\n  }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n  const modelToUse = resolveDynamicModel(\n    el.tagName,\n    vnode.props && vnode.props.type\n  );\n  const fn = modelToUse[hook];\n  fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n  vModelText.getSSRProps = ({ value }) => ({ value });\n  vModelRadio.getSSRProps = ({ value }, vnode) => {\n    if (vnode.props && looseEqual(vnode.props.value, value)) {\n      return { checked: true };\n    }\n  };\n  vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n    if (isArray(value)) {\n      if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n        return { checked: true };\n      }\n    } else if (isSet(value)) {\n      if (vnode.props && value.has(vnode.props.value)) {\n        return { checked: true };\n      }\n    } else if (value) {\n      return { checked: true };\n    }\n  };\n  vModelDynamic.getSSRProps = (binding, vnode) => {\n    if (typeof vnode.type !== \"string\") {\n      return;\n    }\n    const modelToUse = resolveDynamicModel(\n      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n      vnode.type.toUpperCase(),\n      vnode.props && vnode.props.type\n    );\n    if (modelToUse.getSSRProps) {\n      return modelToUse.getSSRProps(binding, vnode);\n    }\n  };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  const cache = fn._withMods || (fn._withMods = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers)) return;\n    }\n    return fn(event, ...args);\n  });\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  const cache = fn._withKeys || (fn._withKeys = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = hyphenate(event.key);\n    if (modifiers.some(\n      (k) => k === eventKey || keyNames[k] === eventKey\n    )) {\n      return fn(event);\n    }\n  });\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n  return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n  renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n  enabledHydration = true;\n  return renderer;\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n  ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n  const app = ensureRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (!container) return;\n    const component = app._component;\n    if (!isFunction(component) && !component.render && !component.template) {\n      component.template = container.innerHTML;\n    }\n    if (container.nodeType === 1) {\n      container.textContent = \"\";\n    }\n    const proxy = mount(container, false, resolveRootNamespace(container));\n    if (container instanceof Element) {\n      container.removeAttribute(\"v-cloak\");\n      container.setAttribute(\"data-v-app\", \"\");\n    }\n    return proxy;\n  };\n  return app;\n};\nconst createSSRApp = (...args) => {\n  const app = ensureHydrationRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (container) {\n      return mount(container, true, resolveRootNamespace(container));\n    }\n  };\n  return app;\n};\nfunction resolveRootNamespace(container) {\n  if (container instanceof SVGElement) {\n    return \"svg\";\n  }\n  if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n    return \"mathml\";\n  }\n}\nfunction injectNativeTagCheck(app) {\n  Object.defineProperty(app.config, \"isNativeTag\", {\n    value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n    writable: false\n  });\n}\nfunction injectCompilerOptionsCheck(app) {\n  if (isRuntimeOnly()) {\n    const isCustomElement = app.config.isCustomElement;\n    Object.defineProperty(app.config, \"isCustomElement\", {\n      get() {\n        return isCustomElement;\n      },\n      set() {\n        warn(\n          `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n        );\n      }\n    });\n    const compilerOptions = app.config.compilerOptions;\n    const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n    Object.defineProperty(app.config, \"compilerOptions\", {\n      get() {\n        warn(msg);\n        return compilerOptions;\n      },\n      set() {\n        warn(msg);\n      }\n    });\n  }\n}\nfunction normalizeContainer(container) {\n  if (isString(container)) {\n    const res = document.querySelector(container);\n    if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n      warn(\n        `Failed to mount app: mount target selector \"${container}\" returned null.`\n      );\n    }\n    return res;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n    warn(\n      `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n    );\n  }\n  return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n  if (!ssrDirectiveInitialized) {\n    ssrDirectiveInitialized = true;\n    initVModelForSSR();\n    initVShowForSSR();\n  }\n} ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, useHost, useShadowRoot, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","/**\n* @vue/shared v3.5.12\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n  const map = /* @__PURE__ */ Object.create(null);\n  for (const key of str.split(\",\")) map[key] = 1;\n  return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction(\n  (str) => {\n    return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n  }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n  (str) => {\n    const s = str ? `on${capitalize(str)}` : ``;\n    return s;\n  }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](...arg);\n  }\n};\nconst def = (obj, key, value, writable = false) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    writable,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n  return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n  return source + JSON.stringify(\n    options,\n    (_, val) => typeof val === \"function\" ? val.toString() : val\n  );\n}\n\nconst PatchFlags = {\n  \"TEXT\": 1,\n  \"1\": \"TEXT\",\n  \"CLASS\": 2,\n  \"2\": \"CLASS\",\n  \"STYLE\": 4,\n  \"4\": \"STYLE\",\n  \"PROPS\": 8,\n  \"8\": \"PROPS\",\n  \"FULL_PROPS\": 16,\n  \"16\": \"FULL_PROPS\",\n  \"NEED_HYDRATION\": 32,\n  \"32\": \"NEED_HYDRATION\",\n  \"STABLE_FRAGMENT\": 64,\n  \"64\": \"STABLE_FRAGMENT\",\n  \"KEYED_FRAGMENT\": 128,\n  \"128\": \"KEYED_FRAGMENT\",\n  \"UNKEYED_FRAGMENT\": 256,\n  \"256\": \"UNKEYED_FRAGMENT\",\n  \"NEED_PATCH\": 512,\n  \"512\": \"NEED_PATCH\",\n  \"DYNAMIC_SLOTS\": 1024,\n  \"1024\": \"DYNAMIC_SLOTS\",\n  \"DEV_ROOT_FRAGMENT\": 2048,\n  \"2048\": \"DEV_ROOT_FRAGMENT\",\n  \"CACHED\": -1,\n  \"-1\": \"CACHED\",\n  \"BAIL\": -2,\n  \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n  [1]: `TEXT`,\n  [2]: `CLASS`,\n  [4]: `STYLE`,\n  [8]: `PROPS`,\n  [16]: `FULL_PROPS`,\n  [32]: `NEED_HYDRATION`,\n  [64]: `STABLE_FRAGMENT`,\n  [128]: `KEYED_FRAGMENT`,\n  [256]: `UNKEYED_FRAGMENT`,\n  [512]: `NEED_PATCH`,\n  [1024]: `DYNAMIC_SLOTS`,\n  [2048]: `DEV_ROOT_FRAGMENT`,\n  [-1]: `HOISTED`,\n  [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n  \"ELEMENT\": 1,\n  \"1\": \"ELEMENT\",\n  \"FUNCTIONAL_COMPONENT\": 2,\n  \"2\": \"FUNCTIONAL_COMPONENT\",\n  \"STATEFUL_COMPONENT\": 4,\n  \"4\": \"STATEFUL_COMPONENT\",\n  \"TEXT_CHILDREN\": 8,\n  \"8\": \"TEXT_CHILDREN\",\n  \"ARRAY_CHILDREN\": 16,\n  \"16\": \"ARRAY_CHILDREN\",\n  \"SLOTS_CHILDREN\": 32,\n  \"32\": \"SLOTS_CHILDREN\",\n  \"TELEPORT\": 64,\n  \"64\": \"TELEPORT\",\n  \"SUSPENSE\": 128,\n  \"128\": \"SUSPENSE\",\n  \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n  \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n  \"COMPONENT_KEPT_ALIVE\": 512,\n  \"512\": \"COMPONENT_KEPT_ALIVE\",\n  \"COMPONENT\": 6,\n  \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n  \"STABLE\": 1,\n  \"1\": \"STABLE\",\n  \"DYNAMIC\": 2,\n  \"2\": \"DYNAMIC\",\n  \"FORWARDED\": 3,\n  \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n  [1]: \"STABLE\",\n  [2]: \"DYNAMIC\",\n  [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n  start = Math.max(0, Math.min(start, source.length));\n  end = Math.max(0, Math.min(end, source.length));\n  if (start > end) return \"\";\n  let lines = source.split(/(\\r?\\n)/);\n  const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n  lines = lines.filter((_, idx) => idx % 2 === 0);\n  let count = 0;\n  const res = [];\n  for (let i = 0; i < lines.length; i++) {\n    count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n    if (count >= start) {\n      for (let j = i - range; j <= i + range || end > count; j++) {\n        if (j < 0 || j >= lines.length) continue;\n        const line = j + 1;\n        res.push(\n          `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`\n        );\n        const lineLength = lines[j].length;\n        const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n        if (j === i) {\n          const pad = start - (count - (lineLength + newLineSeqLength));\n          const length = Math.max(\n            1,\n            end > count ? lineLength - pad : end - start\n          );\n          res.push(`   |  ` + \" \".repeat(pad) + \"^\".repeat(length));\n        } else if (j > i) {\n          if (end > count) {\n            const length = Math.max(Math.min(end - count, lineLength), 1);\n            res.push(`   |  ` + \"^\".repeat(length));\n          }\n          count += lineLength + newLineSeqLength;\n        }\n      }\n      break;\n    }\n  }\n  return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value) || isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction stringifyStyle(styles) {\n  let ret = \"\";\n  if (!styles || isString(styles)) {\n    return ret;\n  }\n  for (const key in styles) {\n    const value = styles[key];\n    if (isString(value) || typeof value === \"number\") {\n      const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n      ret += `${normalizedKey}:${value};`;\n    }\n  }\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props) return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n  if (attrValidationCache.hasOwnProperty(name)) {\n    return attrValidationCache[name];\n  }\n  const isUnsafe = unsafeAttrCharRE.test(name);\n  if (isUnsafe) {\n    console.error(`unsafe attribute name: ${name}`);\n  }\n  return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n  acceptCharset: \"accept-charset\",\n  className: \"class\",\n  htmlFor: \"for\",\n  httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n  `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n  `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n  `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n  if (value == null) {\n    return false;\n  }\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n  const str = \"\" + string;\n  const match = escapeRE.exec(str);\n  if (!match) {\n    return str;\n  }\n  let html = \"\";\n  let escaped;\n  let index;\n  let lastIndex = 0;\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        escaped = \"&quot;\";\n        break;\n      case 38:\n        escaped = \"&amp;\";\n        break;\n      case 39:\n        escaped = \"&#39;\";\n        break;\n      case 60:\n        escaped = \"&lt;\";\n        break;\n      case 62:\n        escaped = \"&gt;\";\n        break;\n      default:\n        continue;\n    }\n    if (lastIndex !== index) {\n      html += str.slice(lastIndex, index);\n    }\n    lastIndex = index + 1;\n    html += escaped;\n  }\n  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n  return src.replace(commentStripRE, \"\");\n}\nconst cssVarNameEscapeSymbolsRE = /[ !\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n  return key.replace(\n    cssVarNameEscapeSymbolsRE,\n    (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n  );\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length) return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b) return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n  return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (isRef(val)) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce(\n        (entries, [key, val2], i) => {\n          entries[stringifySymbol(key, i) + \" =>\"] = val2;\n          return entries;\n        },\n        {}\n      )\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n    };\n  } else if (isSymbol(val)) {\n    return stringifySymbol(val);\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n  var _a;\n  return (\n    // Symbol.description in es2019+ so we need to cast here to pass\n    // the lib: es2016 check\n    isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n  );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = asyncify;\n\nvar _initialParams = require('./internal/initialParams.js');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(JSON.parse),\n *     function (data, next) {\n *         // data is the result of parsing the text.\n *         // If there was a parsing error, it would have been caught.\n *     }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(function (contents) {\n *         return db.model.create(contents);\n *     }),\n *     function (model, next) {\n *         // `model` is the instantiated model object.\n *         // If there was an error, this function would be skipped.\n *     }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n *     var intermediateStep = await processFile(file);\n *     return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n    if ((0, _wrapAsync.isAsync)(func)) {\n        return function (...args /*, callback*/) {\n            const callback = args.pop();\n            const promise = func.apply(this, args);\n            return handlePromise(promise, callback);\n        };\n    }\n\n    return (0, _initialParams2.default)(function (args, callback) {\n        var result;\n        try {\n            result = func.apply(this, args);\n        } catch (e) {\n            return callback(e);\n        }\n        // if result is Promise object\n        if (result && typeof result.then === 'function') {\n            return handlePromise(result, callback);\n        } else {\n            callback(null, result);\n        }\n    });\n}\n\nfunction handlePromise(promise, callback) {\n    return promise.then(value => {\n        invokeCallback(callback, null, value);\n    }, err => {\n        invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err));\n    });\n}\n\nfunction invokeCallback(callback, error, value) {\n    try {\n        callback(error, value);\n    } catch (err) {\n        (0, _setImmediate2.default)(e => {\n            throw e;\n        }, err);\n    }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation\n// used for queues. This implementation assumes that the node provided by the user can be modified\n// to adjust the next and last properties. We implement only the minimal functionality\n// for queue support.\nclass DLL {\n    constructor() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n\n    removeLink(node) {\n        if (node.prev) node.prev.next = node.next;else this.head = node.next;\n        if (node.next) node.next.prev = node.prev;else this.tail = node.prev;\n\n        node.prev = node.next = null;\n        this.length -= 1;\n        return node;\n    }\n\n    empty() {\n        while (this.head) this.shift();\n        return this;\n    }\n\n    insertAfter(node, newNode) {\n        newNode.prev = node;\n        newNode.next = node.next;\n        if (node.next) node.next.prev = newNode;else this.tail = newNode;\n        node.next = newNode;\n        this.length += 1;\n    }\n\n    insertBefore(node, newNode) {\n        newNode.prev = node.prev;\n        newNode.next = node;\n        if (node.prev) node.prev.next = newNode;else this.head = newNode;\n        node.prev = newNode;\n        this.length += 1;\n    }\n\n    unshift(node) {\n        if (this.head) this.insertBefore(this.head, node);else setInitial(this, node);\n    }\n\n    push(node) {\n        if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node);\n    }\n\n    shift() {\n        return this.head && this.removeLink(this.head);\n    }\n\n    pop() {\n        return this.tail && this.removeLink(this.tail);\n    }\n\n    toArray() {\n        return [...this];\n    }\n\n    *[Symbol.iterator]() {\n        var cur = this.head;\n        while (cur) {\n            yield cur.data;\n            cur = cur.next;\n        }\n    }\n\n    remove(testFn) {\n        var curr = this.head;\n        while (curr) {\n            var { next } = curr;\n            if (testFn(curr)) {\n                this.removeLink(curr);\n            }\n            curr = next;\n        }\n        return this;\n    }\n}\n\nexports.default = DLL;\nfunction setInitial(dll, node) {\n    dll.length = 1;\n    dll.head = dll.tail = node;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (fn) {\n    return function (...args /*, callback*/) {\n        var callback = args.pop();\n        return fn.call(this, args, callback);\n    };\n};\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n    return function (...args) {\n        if (fn === null) throw new Error(\"Callback was already called.\");\n        var callFn = fn;\n        fn = null;\n        callFn.apply(this, args);\n    };\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = queue;\n\nvar _onlyOnce = require('./onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _setImmediate = require('./setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _DoublyLinkedList = require('./DoublyLinkedList.js');\n\nvar _DoublyLinkedList2 = _interopRequireDefault(_DoublyLinkedList);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction queue(worker, concurrency, payload) {\n    if (concurrency == null) {\n        concurrency = 1;\n    } else if (concurrency === 0) {\n        throw new RangeError('Concurrency must not be zero');\n    }\n\n    var _worker = (0, _wrapAsync2.default)(worker);\n    var numRunning = 0;\n    var workersList = [];\n    const events = {\n        error: [],\n        drain: [],\n        saturated: [],\n        unsaturated: [],\n        empty: []\n    };\n\n    function on(event, handler) {\n        events[event].push(handler);\n    }\n\n    function once(event, handler) {\n        const handleAndRemove = (...args) => {\n            off(event, handleAndRemove);\n            handler(...args);\n        };\n        events[event].push(handleAndRemove);\n    }\n\n    function off(event, handler) {\n        if (!event) return Object.keys(events).forEach(ev => events[ev] = []);\n        if (!handler) return events[event] = [];\n        events[event] = events[event].filter(ev => ev !== handler);\n    }\n\n    function trigger(event, ...args) {\n        events[event].forEach(handler => handler(...args));\n    }\n\n    var processingScheduled = false;\n    function _insert(data, insertAtFront, rejectOnError, callback) {\n        if (callback != null && typeof callback !== 'function') {\n            throw new Error('task callback must be a function');\n        }\n        q.started = true;\n\n        var res, rej;\n        function promiseCallback(err, ...args) {\n            // we don't care about the error, let the global error handler\n            // deal with it\n            if (err) return rejectOnError ? rej(err) : res();\n            if (args.length <= 1) return res(args[0]);\n            res(args);\n        }\n\n        var item = q._createTaskItem(data, rejectOnError ? promiseCallback : callback || promiseCallback);\n\n        if (insertAtFront) {\n            q._tasks.unshift(item);\n        } else {\n            q._tasks.push(item);\n        }\n\n        if (!processingScheduled) {\n            processingScheduled = true;\n            (0, _setImmediate2.default)(() => {\n                processingScheduled = false;\n                q.process();\n            });\n        }\n\n        if (rejectOnError || !callback) {\n            return new Promise((resolve, reject) => {\n                res = resolve;\n                rej = reject;\n            });\n        }\n    }\n\n    function _createCB(tasks) {\n        return function (err, ...args) {\n            numRunning -= 1;\n\n            for (var i = 0, l = tasks.length; i < l; i++) {\n                var task = tasks[i];\n\n                var index = workersList.indexOf(task);\n                if (index === 0) {\n                    workersList.shift();\n                } else if (index > 0) {\n                    workersList.splice(index, 1);\n                }\n\n                task.callback(err, ...args);\n\n                if (err != null) {\n                    trigger('error', err, task.data);\n                }\n            }\n\n            if (numRunning <= q.concurrency - q.buffer) {\n                trigger('unsaturated');\n            }\n\n            if (q.idle()) {\n                trigger('drain');\n            }\n            q.process();\n        };\n    }\n\n    function _maybeDrain(data) {\n        if (data.length === 0 && q.idle()) {\n            // call drain immediately if there are no tasks\n            (0, _setImmediate2.default)(() => trigger('drain'));\n            return true;\n        }\n        return false;\n    }\n\n    const eventMethod = name => handler => {\n        if (!handler) {\n            return new Promise((resolve, reject) => {\n                once(name, (err, data) => {\n                    if (err) return reject(err);\n                    resolve(data);\n                });\n            });\n        }\n        off(name);\n        on(name, handler);\n    };\n\n    var isProcessing = false;\n    var q = {\n        _tasks: new _DoublyLinkedList2.default(),\n        _createTaskItem(data, callback) {\n            return {\n                data,\n                callback\n            };\n        },\n        *[Symbol.iterator]() {\n            yield* q._tasks[Symbol.iterator]();\n        },\n        concurrency,\n        payload,\n        buffer: concurrency / 4,\n        started: false,\n        paused: false,\n        push(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, false, false, callback));\n            }\n            return _insert(data, false, false, callback);\n        },\n        pushAsync(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, false, true, callback));\n            }\n            return _insert(data, false, true, callback);\n        },\n        kill() {\n            off();\n            q._tasks.empty();\n        },\n        unshift(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, true, false, callback));\n            }\n            return _insert(data, true, false, callback);\n        },\n        unshiftAsync(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, true, true, callback));\n            }\n            return _insert(data, true, true, callback);\n        },\n        remove(testFn) {\n            q._tasks.remove(testFn);\n        },\n        process() {\n            // Avoid trying to start too many processing operations. This can occur\n            // when callbacks resolve synchronously (#1267).\n            if (isProcessing) {\n                return;\n            }\n            isProcessing = true;\n            while (!q.paused && numRunning < q.concurrency && q._tasks.length) {\n                var tasks = [],\n                    data = [];\n                var l = q._tasks.length;\n                if (q.payload) l = Math.min(l, q.payload);\n                for (var i = 0; i < l; i++) {\n                    var node = q._tasks.shift();\n                    tasks.push(node);\n                    workersList.push(node);\n                    data.push(node.data);\n                }\n\n                numRunning += 1;\n\n                if (q._tasks.length === 0) {\n                    trigger('empty');\n                }\n\n                if (numRunning === q.concurrency) {\n                    trigger('saturated');\n                }\n\n                var cb = (0, _onlyOnce2.default)(_createCB(tasks));\n                _worker(data, cb);\n            }\n            isProcessing = false;\n        },\n        length() {\n            return q._tasks.length;\n        },\n        running() {\n            return numRunning;\n        },\n        workersList() {\n            return workersList;\n        },\n        idle() {\n            return q._tasks.length + numRunning === 0;\n        },\n        pause() {\n            q.paused = true;\n        },\n        resume() {\n            if (q.paused === false) {\n                return;\n            }\n            q.paused = false;\n            (0, _setImmediate2.default)(q.process);\n        }\n    };\n    // define these as fixed properties, so people get useful errors when updating\n    Object.defineProperties(q, {\n        saturated: {\n            writable: false,\n            value: eventMethod('saturated')\n        },\n        unsaturated: {\n            writable: false,\n            value: eventMethod('unsaturated')\n        },\n        empty: {\n            writable: false,\n            value: eventMethod('empty')\n        },\n        drain: {\n            writable: false,\n            value: eventMethod('drain')\n        },\n        error: {\n            writable: false,\n            value: eventMethod('error')\n        }\n    });\n    return q;\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.fallback = fallback;\nexports.wrap = wrap;\n/* istanbul ignore file */\n\nvar hasQueueMicrotask = exports.hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n    setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n    return (fn, ...args) => defer(() => fn(...args));\n}\n\nvar _defer;\n\nif (hasQueueMicrotask) {\n    _defer = queueMicrotask;\n} else if (hasSetImmediate) {\n    _defer = setImmediate;\n} else if (hasNextTick) {\n    _defer = process.nextTick;\n} else {\n    _defer = fallback;\n}\n\nexports.default = wrap(_defer);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify.js');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAsync(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction isAsyncGenerator(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncGenerator';\n}\n\nfunction isAsyncIterable(obj) {\n    return typeof obj[Symbol.asyncIterator] === 'function';\n}\n\nfunction wrapAsync(asyncFn) {\n    if (typeof asyncFn !== 'function') throw new Error('expected a function');\n    return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;\nexports.isAsyncGenerator = isAsyncGenerator;\nexports.isAsyncIterable = isAsyncIterable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (worker, concurrency) {\n    var _worker = (0, _wrapAsync2.default)(worker);\n    return (0, _queue2.default)((items, cb) => {\n        _worker(items[0], cb);\n    }, concurrency, 1);\n};\n\nvar _queue = require('./internal/queue.js');\n\nvar _queue2 = _interopRequireDefault(_queue);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports.default;","const template = document.createElement('template');\r\ntemplate.innerHTML = `\r\n  <style>\r\n    .list {\r\n      font-family:sans-serif;\r\n      margin:0;\r\n      padding:20px 0 0;\r\n    }\r\n    \r\n    table {\r\n    width: 100%;\r\n    }\r\n    \r\n    tr:nth-child(even) {background: #EEE}\r\n    tr:nth-child(odd) {}\r\n    \r\n    img {\r\n      max-width: 100%;\r\n    }\r\n    input {\r\n      border:solid 1px #ccc;\r\n      border-radius: 5px;\r\n      padding:7px 14px;\r\n      margin-bottom:10px\r\n    }\r\n    input:focus {\r\n      outline:none;\r\n      border-color:#aaa;\r\n    }\r\n    .sort {\r\n      padding:8px 30px;\r\n      border-radius: 6px;\r\n      border:none;\r\n      display:inline-block;\r\n      color:#fff;\r\n      text-decoration: none;\r\n      background-color: #28a8e0;\r\n    }\r\n    .sort:hover {\r\n      text-decoration: none;\r\n      background-color:#1b8aba;\r\n    }\r\n    .sort:focus {\r\n      outline:none;\r\n    }\r\n    .sort:after {\r\n      width: 0;\r\n      height: 0;\r\n      border-left: 5px solid transparent;\r\n      border-right: 5px solid transparent;\r\n      border-bottom: 5px solid transparent;\r\n      content:\"\";\r\n      position: relative;\r\n      top:-10px;\r\n      right:-5px;\r\n    }\r\n    .sort.asc:after {\r\n      width: 0;\r\n      height: 0;\r\n      border-left: 5px solid transparent;\r\n      border-right: 5px solid transparent;\r\n      border-top: 5px solid #fff;\r\n      content:\"\";\r\n      position: relative;\r\n      top:13px;\r\n      right:-5px;\r\n    }\r\n    .sort.desc:after {\r\n      width: 0;\r\n      height: 0;\r\n      border-left: 5px solid transparent;\r\n      border-right: 5px solid transparent;\r\n      border-bottom: 5px solid #fff;\r\n      content:\"\";\r\n      position: relative;\r\n      top:-10px;\r\n      right:-5px;\r\n    }\r\n  </style>\r\n \r\n    <div id=\"albumlist\">\r\n    \r\n      <input class=\"search\" />\r\n      <span class=\"sort\" data-sort=\"title\">Sort by title</span>\r\n      <span class=\"sort\" data-sort=\"mediaItemsCount\">Sort by count</span>\r\n    \r\n      <table class=\"list\">\r\n      </table>\r\n      \r\n    </div>\r\n\r\n    <div id=\"loading\" class=\"well\">\r\n        <p id=\"loading_label\"></p>\r\n    </div>\r\n    <div id=\"empty\" class=\"well\" style=\"display:none\"></div>\r\n  \r\n`;\r\n\r\n\r\nimport List from 'list.js';\r\n\r\nclass Albumselector extends HTMLElement {\r\n    constructor() {\r\n        super();\r\n        this._shadowRoot = this.attachShadow({mode: 'open'});\r\n        this._shadowRoot.appendChild(template.content.cloneNode(true));\r\n        this.$loadingLabel = this._shadowRoot.querySelector('#loading_label');\r\n        this.$loading = this._shadowRoot.querySelector('#loading');\r\n        this.$empty = this._shadowRoot.querySelector('#empty');\r\n        this.$albumlist = this._shadowRoot.querySelector('#albumlist');\r\n\r\n        this['accountid'] = 1;\r\n    }\r\n\r\n    getData() {\r\n\r\n        const xhr = new XMLHttpRequest();\r\n\r\n        xhr.onreadystatechange = () => {\r\n            if (xhr.readyState === 4) {\r\n                if(xhr.status === 200) {\r\n                    let data = JSON.parse(xhr.response);\r\n                    this.createTable(data.albums);\r\n                } else {\r\n                    this.createTable([]);\r\n                }\r\n            } else {\r\n\r\n            }\r\n        };\r\n\r\n        xhr.open('GET', this.url +'&id=' + this.accountid, true);\r\n        xhr.send('');\r\n    }\r\n\r\n    createTable(albums) {\r\n\r\n\r\n        const options = {\r\n            page: 5000,\r\n            valueNames: [\r\n                    {name: 'previewThumbnail', attr: 'src'},\r\n                    {name: 'encodedTitle', attr: 'data-title'},\r\n                    {name: 'albumid', attr: 'data-albumid'},\r\n                    'title',\r\n                    'mediaItemsCount',\r\n                    {name: 'link', attr: 'href'}\r\n                ],\r\n            item: '<tr>' +\r\n                '<td><button class=\"encodedTitle albumid\" data-title=\"\" data-albumid=\"\">Select</button></td>' +\r\n                '<td><img class=\"previewThumbnail\" src=\"\"></td>' +\r\n                '<td><span class=\"title\"></span></td>'+\r\n                '<td><span class=\"mediaItemsCount\"></span></td>'+\r\n                '<td><a class=\"link\" href=\"\" target=\"_blank\">Link</a></td>'+\r\n                '</tr>'\r\n        };\r\n\r\n        let values = [];\r\n\r\n        if (!!albums) {\r\n            for (let i = 0; i < albums.length; i++) {\r\n                let album = albums[i];\r\n\r\n                values.push(\r\n                    {\r\n                        previewThumbnail: album.coverPhotoBaseUrl + '=w200-h200',\r\n                        encodedTitle: encodeURI(album.title),\r\n                        title: album.title,\r\n                        mediaItemsCount: album.mediaItemsCount,\r\n                        albumid: album.id,\r\n                        link: album.productUrl\r\n                    }\r\n                );\r\n            }\r\n        }\r\n\r\n        let myList = new List(this.$albumlist, options);\r\n\r\n        myList.add(values, () => {\r\n            let buttons = this._shadowRoot.querySelectorAll('button.albumid');\r\n            for(let i=0; i<buttons.length;i++) {\r\n                let button = buttons[i];\r\n                button.addEventListener('click', (e)=> {\r\n                    e.preventDefault();\r\n                    e.stopPropagation();\r\n\r\n                    let data = {\r\n                        albumid: button.getAttribute(\"data-albumid\"),\r\n                        title: decodeURI(button.getAttribute(\"data-title\"))\r\n                    };\r\n\r\n                    parent.postMessage(this.post_message_prefix + JSON.stringify(data), '*');\r\n                })\r\n            }\r\n        });\r\n\r\n        this.$loading.style.display = 'none';\r\n\r\n        if (myList.items.length === 0 ) {\r\n            this.$empty.style.display = 'block';\r\n        }\r\n    }\r\n\r\n    static get observedAttributes() {\r\n        return ['label', 'url', 'label_empty', 'account_field_id', 'post_message_prefix'];\r\n    }\r\n\r\n    attributeChangedCallback(name, oldVal, newVal) {\r\n        this[name] = newVal;\r\n    }\r\n\r\n    connectedCallback() {\r\n        this.$loadingLabel.innerHTML = this.label;\r\n        this.$empty.innerHTML = this.label_empty;\r\n\r\n        //the url for the iframe can't be changed dynamically, so we need to grab this from the parent.\r\n        const element = parent.document.getElementById(this.account_field_id);\r\n\r\n        if (element) {\r\n            this['accountid'] = element.value;\r\n        }\r\n\r\n        this.getData();\r\n    }\r\n\r\n}\r\n\r\n\r\nwindow.customElements.define('album-selector', Albumselector);\r\n","import GooglePhotosProcessor from \"../../frontend/js/EventgalleryGooglePhotosProcessor\";\r\nimport PhotoSwipeGallery from \"../../frontend/js/photoswipe/PhotoSwipeGallery\";\r\n\r\n(function(Eventgallery) {\r\n    \"use strict\";\r\n    document.addEventListener('DOMContentLoaded', () => {\r\n\r\n        let googlePhotosProcessor = new GooglePhotosProcessor();\r\n        googlePhotosProcessor.processImages();\r\n\r\n        /**\r\n         * Lightbox init\r\n         * @type {PhotoSwipeGallery}\r\n         */\r\n        Eventgallery.lightbox = new PhotoSwipeGallery();\r\n        Eventgallery.lightbox.initPhotoSwipe();\r\n    });\r\n})(Eventgallery);\r\n\r\n","(function(){\r\n    \"use strict\";\r\n\r\n    /**\r\n     * process selector input\r\n     */\r\n    window.addEventListener('message', function(e) {\r\n        if (!e.data) return;\r\n\r\n        let dataStr = e.data;\r\n\r\n        if (typeof dataStr !== 'string') {\r\n            return;\r\n        }\r\n        if (dataStr.startsWith('eventgalleryFlickrAlbum_')) {\r\n            var data = JSON.parse(dataStr.replace('eventgalleryFlickrAlbum_',''));\r\n\r\n            let albumField = document.getElementById('foldertype-2-photosetid')\r\n            albumField.value = data.albumid;\r\n\r\n            let titleField = document.getElementById('foldertype-2-title');\r\n            titleField.value = data.title;\r\n\r\n            albumField.onchange();\r\n            titleField.onchange();\r\n\r\n            //Joomla 4 button\r\n            let closeBtn = document.querySelector('#flickr-album-selector-modal .modal-header button.btn-close');\r\n            if (!closeBtn) {\r\n                // Joomla 3 button\r\n                closeBtn = document.querySelector('#flickr-album-selector-modal .modal-header button.close');\r\n            }\r\n            closeBtn.click();\r\n        }\r\n    });\r\n\r\n\r\n})();\r\n","(function(){\r\n    \"use strict\";\r\n\r\n    /**\r\n     * process selector input\r\n     */\r\n    window.addEventListener('message', function(e) {\r\n        if (!e.data) return;\r\n\r\n        let dataStr = e.data;\r\n\r\n        if (typeof dataStr !== 'string') {\r\n            return;\r\n        }\r\n        if (dataStr.startsWith('eventgalleryGooglePhotosAlbum_')) {\r\n            var data = JSON.parse(dataStr.replace('eventgalleryGooglePhotosAlbum_',''));\r\n\r\n            let albumField = document.getElementById('foldertype-4-album')\r\n            albumField.value = data.albumid;\r\n\r\n            let titleField = document.getElementById('foldertype-4-title');\r\n            titleField.value = data.title;\r\n\r\n            albumField.onchange();\r\n\r\n            //Joomla 4 button\r\n            let closeBtn = document.querySelector('#google-photos-album-selector-modal .modal-header button.btn-close');\r\n            if (!closeBtn) {\r\n                // Joomla 3 button\r\n                closeBtn = document.querySelector('#google-photos-album-selector-modal .modal-header button.close');\r\n            }\r\n            closeBtn.click();\r\n        }\r\n    });\r\n\r\n    document.addEventListener('DOMContentLoaded', () =>{\r\n\r\n        let button = document.querySelector('.google-photos-api-oauth-trigger-button');\r\n        if (button) {\r\n            button.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                let id = e.target.getAttribute('data-id');\r\n\r\n                let oauthWindow = window.open(\"index.php?option=com_eventgallery&view=googlephotos&layout=getauthtoken&tmpl=component&id=\" + id, \"_blank\", \"width=700,height=550\");\r\n                if (!oauthWindow || oauthWindow.closed || typeof oauthWindow.closed === 'undefined') {\r\n                    alert('Failed');\r\n                }\r\n            });\r\n        }\r\n\r\n    });\r\n\r\n})();\r\n","import {serializeForm} from \"../../common/js/Helpers\";\r\n\r\n(function(){\r\n    \"use strict\";\r\n\r\n    let fireDomLoadEvent = function() {\r\n        window.document.dispatchEvent(new Event(\"eventgallery.localizableContentLoaded\", {\r\n            bubbles: true,\r\n            cancelable: true\r\n        }));\r\n    };\r\n\r\n    document.addEventListener('DOMContentLoaded', () =>{\r\n        assignClickEvents();\r\n    });\r\n\r\n    let assignClickEvents = function() {\r\n        assignClickEvent('.openInlineForm', openInlineForm);\r\n        assignClickEvent('.saveInlineForm', saveInlineForm);\r\n        assignClickEvent('.closeInlineForm', closeInlineForm);\r\n    };\r\n\r\n    let assignClickEvent = function(querySelector, callback) {\r\n        let elements = document.querySelectorAll(querySelector);\r\n        for(let i=0; i<elements.length; i++) {\r\n            let element = elements[i];\r\n            element.removeEventListener('click', callback);\r\n            element.addEventListener('click', callback);\r\n        }\r\n    };\r\n\r\n    let openInlineForm = function(e) {\r\n        e.preventDefault();\r\n        let currentContainer = e.target.closest('div[data-id]');\r\n\r\n        currentContainer.innerHTML='Loading...';\r\n\r\n        let xhttp = new XMLHttpRequest();\r\n        xhttp.onreadystatechange = function() {\r\n            if (this.readyState === 4 && this.status === 200) {\r\n                currentContainer.innerHTML = this.responseText;\r\n                fireDomLoadEvent();\r\n                assignClickEvents();\r\n            }\r\n        };\r\n        xhttp.open(\"GET\", currentContainer.getAttribute('data-editlink'), true);\r\n        xhttp.send();\r\n    };\r\n\r\n    let saveInlineForm = function(e) {\r\n        e.preventDefault();\r\n\r\n        let id = e.target.getAttribute('data-id');\r\n        let form = e.target.closest('div[data-action]');\r\n        let currentContainer = document.querySelector('div[data-id=\"' + id + '\"]');\r\n        let url = form.getAttribute('data-action');\r\n        form.querySelector('input[name=\"task\"]').value = e.target.getAttribute('data-task');\r\n\r\n        currentContainer.innerHTML = 'Loading.. ';\r\n\r\n        let xhttp = new XMLHttpRequest();\r\n        xhttp.onreadystatechange = function() {\r\n            if (this.readyState === 4 && this.status === 200) {\r\n                currentContainer.innerHTML = this.responseText;\r\n                fireDomLoadEvent();\r\n                assignClickEvents();\r\n            }\r\n        };\r\n\r\n        xhttp.open(\"POST\", url, true);\r\n        xhttp.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n        xhttp.send(serializeForm(form));\r\n    };\r\n\r\n    let closeInlineForm = function(e) {\r\n        e.preventDefault();\r\n        let id = e.target.getAttribute('data-id');\r\n        let currentContainer = document.querySelector('div[data-id=\"' + id + '\"]');\r\n        let url = e.target.getAttribute('data-href');\r\n\r\n        currentContainer.innerHTML = 'Loading.. ';\r\n\r\n        let xhttp = new XMLHttpRequest();\r\n        xhttp.onreadystatechange = function() {\r\n            if (this.readyState === 4 && this.status === 200) {\r\n                currentContainer.innerHTML = this.responseText;\r\n                assignClickEvents();\r\n            }\r\n        };\r\n\r\n        xhttp.open(\"GET\", url, true);\r\n        xhttp.send();\r\n    };\r\n\r\n})();","(function(){\r\n    \"use strict\";\r\n\r\n    document.addEventListener(\"DOMContentLoaded\", (event) => {\r\n        window.document.dispatchEvent(new Event(\"eventgallery.localizableContentLoaded\", {\r\n            bubbles: true,\r\n            cancelable: true\r\n        }));\r\n    }, {once: true});\r\n\r\n    /**\r\n     * the event eventgallery.localizableContentLoaded is fired and the editor will start\r\n     * initializing.\r\n     */\r\n    document.addEventListener(\"eventgallery.localizableContentLoaded\", (event) => {\r\n\r\n        let elements = document.querySelectorAll('input[data-localizabletext]');\r\n\r\n        for (let i=0; i<elements.length; i++) {\r\n            let element = elements[i];\r\n\r\n            if (element.getAttribute('data-localizedtext-enabled')) {\r\n                continue;\r\n            }\r\n            element.setAttribute('data-localizedtext-enabled', true);\r\n\r\n            let container = element.closest(\".localizabletext\");\r\n            let inputFields = container.getElementsByClassName('lc_' + element.id);\r\n\r\n            for (let i=0; i<inputFields.length; i++) {\r\n                inputFields[i].addEventListener('blur', () => collectData(element));\r\n            }\r\n        }\r\n    });\r\n\r\n\r\n    let collectData = function (element) {\r\n        let data = {};\r\n        let container = element.closest(\".localizabletext\");\r\n        let inputFields = container.getElementsByClassName('lc_' + element.id);\r\n\r\n        for (let i=0; i<inputFields.length; i++) {\r\n               let field = inputFields[i];\r\n            let value = field.value;\r\n            let languageTag = field.getAttribute(\"data-tag\");\r\n\r\n            if (value.trim().length > 0) {\r\n                data[languageTag] = value;\r\n            }\r\n        }\r\n\r\n        let jsonData = JSON.stringify(data);\r\n        if (jsonData.length < 3) {\r\n            jsonData = \"\";\r\n        }\r\n\r\n        element.value = jsonData;\r\n    }\r\n\r\n})();","import { createApp } from 'vue'\r\nimport Cacheclear from './Cacheclear.vue';\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'cacheclear';\r\n    let rootElement = document.getElementById(rootId);\r\n    if (rootElement) {\r\n\r\n        let app = createApp(Cacheclear, {\r\n                        cacheClearUrl: rootElement.getAttribute('data-cache-clear-url'),\r\n                        elementsJson: decodeURI(rootElement.getAttribute('data-elements-json')),\r\n                        groupsJson: decodeURI(rootElement.getAttribute('data-groups-json')),\r\n                        csrfToken: rootElement.getAttribute('data-csrf-token'),\r\n                        i18n: mapLocalizationData(rootElement),\r\n                    });\r\n        app.mount(rootElement);\r\n    }\r\n});\r\n","import { createApp } from 'vue'\r\nimport Filesync from './Filesync.vue';\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'filesync';\r\n    let rootElement = document.getElementById(rootId);\r\n\r\n    if (rootElement) {\r\n        let app = createApp(Filesync, {\r\n                        loadFoldersUrl: rootElement.getAttribute('data-load-folders-url'),\r\n                        fileSyncUrl: rootElement.getAttribute('data-file-sync-url'),\r\n                        folderSyncUrl: rootElement.getAttribute('data-folder-sync-url'),\r\n                        csrfToken: rootElement.getAttribute('data-csrf-token'),\r\n                        fileBatchSize: parseInt(rootElement.getAttribute('data-file-batch-size')),\r\n                        maxParallelRequests: parseInt(rootElement.getAttribute('data-max-parallel-requests')),\r\n                        i18n: mapLocalizationData(rootElement),\r\n                    });\r\n        app.mount(rootElement);\r\n    }\r\n});\r\n","import { createApp } from 'vue'\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\nimport ImageContentPluginForm from \"./ImageContentPluginForm.vue\";\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'imagecontentpluginform';\r\n    let rootElement = document.getElementById(rootId);\r\n\r\n    if (rootElement) {\r\n        let app = createApp(ImageContentPluginForm, {\r\n                        editorName: rootElement.getAttribute('data-editor-name'),\r\n                        loadFoldersUrl: rootElement.getAttribute('data-load-folders-url'),\r\n                        loadFilesUrl: rootElement.getAttribute('data-load-files-url'),\r\n                        formId: rootElement.getAttribute('data-form-id'),\r\n                        formDefinitionJson: rootElement.getAttribute('data-form-definition-json'),\r\n                        csrfToken: rootElement.getAttribute('data-csrf-token'),\r\n                        i18n: mapLocalizationData(rootElement),\r\n            }\r\n        );\r\n        app.mount(rootElement);\r\n    }\r\n\r\n});\r\n","import { createApp } from 'vue'\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\nimport ImageContentPluginForm from \"./Scalepriceeditor.vue\";\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootSelector = '.scale-price-editor';\r\n    let nodes = document.querySelectorAll(rootSelector);\r\n\r\n    for (let i=0; i<nodes.length;i++) {\r\n        let node = nodes[i];\r\n        let inputField = node.getElementsByTagName('INPUT')[0];\r\n\r\n        let app = createApp(ImageContentPluginForm, {\r\n                        inputName: inputField.getAttribute('name'),\r\n                        inputId: inputField.getAttribute('id'),\r\n                        inputValue: inputField.getAttribute('value'),\r\n                        i18n: mapLocalizationData(inputField),\r\n                    }\r\n        );\r\n        app.mount(node);\r\n    }\r\n});\r\n","import { createApp } from 'vue'\r\nimport Thumbnailcreator from \"./Thumbnailcreator.vue\";\r\nimport {mapLocalizationData} from \"../../../common/vue/helper/LocalizationMapper\";\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'thumbnailcreator';\r\n    let rootElement = document.getElementById(rootId);\r\n    if (rootElement) {\r\n        let app = createApp(Thumbnailcreator, {\r\n                        loadFoldersUrl: rootElement.getAttribute('data-load-folders-url'),\r\n                        fileSyncUrl: rootElement.getAttribute('data-file-sync-url'),\r\n                        folderSyncUrl: rootElement.getAttribute('data-folder-sync-url'),\r\n                        csrfToken: rootElement.getAttribute('data-csrf-token'),\r\n                        fileBatchSize: parseInt(rootElement.getAttribute('data-file-batch-size')),\r\n                        maxParallelRequests: parseInt(rootElement.getAttribute('data-max-parallel-requests')),\r\n                        i18n: mapLocalizationData(rootElement)\r\n                    }\r\n        );\r\n\r\n        app.mount(rootElement);\r\n    }\r\n\r\n});\r\n","import { createApp } from 'vue';\r\nimport Uploader from './Uploader.vue';\r\nrequire('./_Uploader.less');\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'uploader';\r\n    let rootElement = document.getElementById(rootId)\r\n\r\n    if (rootElement) {\r\n\r\n        let app = createApp(Uploader, {\r\n                maxFileSize: parseInt(rootElement.getAttribute('data-max-file-size')),\r\n                maxImageSize: parseInt(rootElement.getAttribute('data-max-image-size')),\r\n                uploadUrl: rootElement.getAttribute('data-upload-url'),\r\n                initDoResize: rootElement.getAttribute('data-do-resize') === 'true',\r\n                googlePickerUrls: {\r\n                    googlePickerUrlManageAccounts: rootElement.getAttribute('data-google-picker-url-manage-accounts'),\r\n                    googlePickerUrlGetAccounts: rootElement.getAttribute('data-google-picker-url-get-accounts'),\r\n                    googlePickerUrlNewSession: rootElement.getAttribute('data-google-picker-url-new-session'),\r\n                    googlePickerUrlGetSession: rootElement.getAttribute('data-google-picker-url-get-session'),\r\n                    googlePickerUrlGetImages: rootElement.getAttribute('data-google-picker-url-get-images'),\r\n                    googlePickerUrlGetImage: rootElement.getAttribute('data-google-picker-url-get-image'),\r\n                    googlePickerUrlGetVideo: rootElement.getAttribute('data-google-picker-url-get-video'),\r\n                },\r\n                i18n: JSON.parse(rootElement.getAttribute('data-i18n')),\r\n            }\r\n        );\r\n        app.mount(rootElement);\r\n    }\r\n});\r\n","//---------------------------------------------------------------------\r\n//\r\n// QR Code Generator for JavaScript\r\n//\r\n// Copyright (c) 2009 Kazuhiko Arase\r\n//\r\n// URL: http://www.d-project.com/\r\n//\r\n// Licensed under the MIT license:\r\n//  http://www.opensource.org/licenses/mit-license.php\r\n//\r\n// The word 'QR Code' is registered trademark of\r\n// DENSO WAVE INCORPORATED\r\n//  http://www.denso-wave.com/qrcode/faqpatent-e.html\r\n//\r\n//---------------------------------------------------------------------\r\n\r\nexport const qrcode = function() {\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrcode\r\n\t//---------------------------------------------------------------------\r\n\r\n\t/**\r\n\t * qrcode\r\n\t * @param typeNumber 1 to 40\r\n\t * @param errorCorrectionLevel 'L','M','Q','H'\r\n\t */\r\n\tvar qrcode = function(typeNumber, errorCorrectionLevel) {\r\n\r\n\t\tvar PAD0 = 0xEC;\r\n\t\tvar PAD1 = 0x11;\r\n\r\n\t\tvar _typeNumber = typeNumber;\r\n\t\tvar _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\r\n\t\tvar _modules = null;\r\n\t\tvar _moduleCount = 0;\r\n\t\tvar _dataCache = null;\r\n\t\tvar _dataList = [];\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\tvar makeImpl = function(test, maskPattern) {\r\n\r\n\t\t\t_moduleCount = _typeNumber * 4 + 17;\r\n\t\t\t_modules = function(moduleCount) {\r\n\t\t\t\tvar modules = new Array(moduleCount);\r\n\t\t\t\tfor (var row = 0; row < moduleCount; row += 1) {\r\n\t\t\t\t\tmodules[row] = new Array(moduleCount);\r\n\t\t\t\t\tfor (var col = 0; col < moduleCount; col += 1) {\r\n\t\t\t\t\t\tmodules[row][col] = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn modules;\r\n\t\t\t}(_moduleCount);\r\n\r\n\t\t\tsetupPositionProbePattern(0, 0);\r\n\t\t\tsetupPositionProbePattern(_moduleCount - 7, 0);\r\n\t\t\tsetupPositionProbePattern(0, _moduleCount - 7);\r\n\t\t\tsetupPositionAdjustPattern();\r\n\t\t\tsetupTimingPattern();\r\n\t\t\tsetupTypeInfo(test, maskPattern);\r\n\r\n\t\t\tif (_typeNumber >= 7) {\r\n\t\t\t\tsetupTypeNumber(test);\r\n\t\t\t}\r\n\r\n\t\t\tif (_dataCache == null) {\r\n\t\t\t\t_dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\r\n\t\t\t}\r\n\r\n\t\t\tmapData(_dataCache, maskPattern);\r\n\t\t};\r\n\r\n\t\tvar setupPositionProbePattern = function(row, col) {\r\n\r\n\t\t\tfor (var r = -1; r <= 7; r += 1) {\r\n\r\n\t\t\t\tif (row + r <= -1 || _moduleCount <= row + r) continue;\r\n\r\n\t\t\t\tfor (var c = -1; c <= 7; c += 1) {\r\n\r\n\t\t\t\t\tif (col + c <= -1 || _moduleCount <= col + c) continue;\r\n\r\n\t\t\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\r\n\t\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\r\n\t\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\r\n\t\t\t\t\t\t_modules[row + r][col + c] = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t_modules[row + r][col + c] = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar getBestMaskPattern = function() {\r\n\r\n\t\t\tvar minLostPoint = 0;\r\n\t\t\tvar pattern = 0;\r\n\r\n\t\t\tfor (var i = 0; i < 8; i += 1) {\r\n\r\n\t\t\t\tmakeImpl(true, i);\r\n\r\n\t\t\t\tvar lostPoint = QRUtil.getLostPoint(_this);\r\n\r\n\t\t\t\tif (i == 0 || minLostPoint > lostPoint) {\r\n\t\t\t\t\tminLostPoint = lostPoint;\r\n\t\t\t\t\tpattern = i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn pattern;\r\n\t\t};\r\n\r\n\t\tvar setupTimingPattern = function() {\r\n\r\n\t\t\tfor (var r = 8; r < _moduleCount - 8; r += 1) {\r\n\t\t\t\tif (_modules[r][6] != null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t_modules[r][6] = (r % 2 == 0);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var c = 8; c < _moduleCount - 8; c += 1) {\r\n\t\t\t\tif (_modules[6][c] != null) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t_modules[6][c] = (c % 2 == 0);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar setupPositionAdjustPattern = function() {\r\n\r\n\t\t\tvar pos = QRUtil.getPatternPosition(_typeNumber);\r\n\r\n\t\t\tfor (var i = 0; i < pos.length; i += 1) {\r\n\r\n\t\t\t\tfor (var j = 0; j < pos.length; j += 1) {\r\n\r\n\t\t\t\t\tvar row = pos[i];\r\n\t\t\t\t\tvar col = pos[j];\r\n\r\n\t\t\t\t\tif (_modules[row][col] != null) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (var r = -2; r <= 2; r += 1) {\r\n\r\n\t\t\t\t\t\tfor (var c = -2; c <= 2; c += 1) {\r\n\r\n\t\t\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\r\n\t\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\r\n\t\t\t\t\t\t\t\t_modules[row + r][col + c] = true;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_modules[row + r][col + c] = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar setupTypeNumber = function(test) {\r\n\r\n\t\t\tvar bits = QRUtil.getBCHTypeNumber(_typeNumber);\r\n\r\n\t\t\tfor (var i = 0; i < 18; i += 1) {\r\n\t\t\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\r\n\t\t\t\t_modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0; i < 18; i += 1) {\r\n\t\t\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\r\n\t\t\t\t_modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar setupTypeInfo = function(test, maskPattern) {\r\n\r\n\t\t\tvar data = (_errorCorrectionLevel << 3) | maskPattern;\r\n\t\t\tvar bits = QRUtil.getBCHTypeInfo(data);\r\n\r\n\t\t\t// vertical\r\n\t\t\tfor (var i = 0; i < 15; i += 1) {\r\n\r\n\t\t\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\r\n\r\n\t\t\t\tif (i < 6) {\r\n\t\t\t\t\t_modules[i][8] = mod;\r\n\t\t\t\t} else if (i < 8) {\r\n\t\t\t\t\t_modules[i + 1][8] = mod;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_modules[_moduleCount - 15 + i][8] = mod;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// horizontal\r\n\t\t\tfor (var i = 0; i < 15; i += 1) {\r\n\r\n\t\t\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\r\n\r\n\t\t\t\tif (i < 8) {\r\n\t\t\t\t\t_modules[8][_moduleCount - i - 1] = mod;\r\n\t\t\t\t} else if (i < 9) {\r\n\t\t\t\t\t_modules[8][15 - i - 1 + 1] = mod;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_modules[8][15 - i - 1] = mod;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fixed module\r\n\t\t\t_modules[_moduleCount - 8][8] = (!test);\r\n\t\t};\r\n\r\n\t\tvar mapData = function(data, maskPattern) {\r\n\r\n\t\t\tvar inc = -1;\r\n\t\t\tvar row = _moduleCount - 1;\r\n\t\t\tvar bitIndex = 7;\r\n\t\t\tvar byteIndex = 0;\r\n\t\t\tvar maskFunc = QRUtil.getMaskFunction(maskPattern);\r\n\r\n\t\t\tfor (var col = _moduleCount - 1; col > 0; col -= 2) {\r\n\r\n\t\t\t\tif (col == 6) col -= 1;\r\n\r\n\t\t\t\twhile (true) {\r\n\r\n\t\t\t\t\tfor (var c = 0; c < 2; c += 1) {\r\n\r\n\t\t\t\t\t\tif (_modules[row][col - c] == null) {\r\n\r\n\t\t\t\t\t\t\tvar dark = false;\r\n\r\n\t\t\t\t\t\t\tif (byteIndex < data.length) {\r\n\t\t\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar mask = maskFunc(row, col - c);\r\n\r\n\t\t\t\t\t\t\tif (mask) {\r\n\t\t\t\t\t\t\t\tdark = !dark;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t_modules[row][col - c] = dark;\r\n\t\t\t\t\t\t\tbitIndex -= 1;\r\n\r\n\t\t\t\t\t\t\tif (bitIndex == -1) {\r\n\t\t\t\t\t\t\t\tbyteIndex += 1;\r\n\t\t\t\t\t\t\t\tbitIndex = 7;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow += inc;\r\n\r\n\t\t\t\t\tif (row < 0 || _moduleCount <= row) {\r\n\t\t\t\t\t\trow -= inc;\r\n\t\t\t\t\t\tinc = -inc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar createBytes = function(buffer, rsBlocks) {\r\n\r\n\t\t\tvar offset = 0;\r\n\r\n\t\t\tvar maxDcCount = 0;\r\n\t\t\tvar maxEcCount = 0;\r\n\r\n\t\t\tvar dcdata = new Array(rsBlocks.length);\r\n\t\t\tvar ecdata = new Array(rsBlocks.length);\r\n\r\n\t\t\tfor (var r = 0; r < rsBlocks.length; r += 1) {\r\n\r\n\t\t\t\tvar dcCount = rsBlocks[r].dataCount;\r\n\t\t\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\r\n\r\n\t\t\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\r\n\t\t\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\r\n\r\n\t\t\t\tdcdata[r] = new Array(dcCount);\r\n\r\n\t\t\t\tfor (var i = 0; i < dcdata[r].length; i += 1) {\r\n\t\t\t\t\tdcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\r\n\t\t\t\t}\r\n\t\t\t\toffset += dcCount;\r\n\r\n\t\t\t\tvar rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\r\n\t\t\t\tvar rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\r\n\r\n\t\t\t\tvar modPoly = rawPoly.mod(rsPoly);\r\n\t\t\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\r\n\t\t\t\tfor (var i = 0; i < ecdata[r].length; i += 1) {\r\n\t\t\t\t\tvar modIndex = i + modPoly.getLength() - ecdata[r].length;\r\n\t\t\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar totalCodeCount = 0;\r\n\t\t\tfor (var i = 0; i < rsBlocks.length; i += 1) {\r\n\t\t\t\ttotalCodeCount += rsBlocks[i].totalCount;\r\n\t\t\t}\r\n\r\n\t\t\tvar data = new Array(totalCodeCount);\r\n\t\t\tvar index = 0;\r\n\r\n\t\t\tfor (var i = 0; i < maxDcCount; i += 1) {\r\n\t\t\t\tfor (var r = 0; r < rsBlocks.length; r += 1) {\r\n\t\t\t\t\tif (i < dcdata[r].length) {\r\n\t\t\t\t\t\tdata[index] = dcdata[r][i];\r\n\t\t\t\t\t\tindex += 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0; i < maxEcCount; i += 1) {\r\n\t\t\t\tfor (var r = 0; r < rsBlocks.length; r += 1) {\r\n\t\t\t\t\tif (i < ecdata[r].length) {\r\n\t\t\t\t\t\tdata[index] = ecdata[r][i];\r\n\t\t\t\t\t\tindex += 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t};\r\n\r\n\t\tvar createData = function(typeNumber, errorCorrectionLevel, dataList) {\r\n\r\n\t\t\tvar rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\r\n\r\n\t\t\tvar buffer = qrBitBuffer();\r\n\r\n\t\t\tfor (var i = 0; i < dataList.length; i += 1) {\r\n\t\t\t\tvar data = dataList[i];\r\n\t\t\t\tbuffer.put(data.getMode(), 4);\r\n\t\t\t\tbuffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\r\n\t\t\t\tdata.write(buffer);\r\n\t\t\t}\r\n\r\n\t\t\t// calc num max data.\r\n\t\t\tvar totalDataCount = 0;\r\n\t\t\tfor (var i = 0; i < rsBlocks.length; i += 1) {\r\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\r\n\t\t\t}\r\n\r\n\t\t\tif (buffer.getLengthInBits() > totalDataCount * 8) {\r\n\t\t\t\tthrow 'code length overflow. ('\r\n\t\t\t\t+ buffer.getLengthInBits()\r\n\t\t\t\t+ '>'\r\n\t\t\t\t+ totalDataCount * 8\r\n\t\t\t\t+ ')';\r\n\t\t\t}\r\n\r\n\t\t\t// end code\r\n\t\t\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\r\n\t\t\t\tbuffer.put(0, 4);\r\n\t\t\t}\r\n\r\n\t\t\t// padding\r\n\t\t\twhile (buffer.getLengthInBits() % 8 != 0) {\r\n\t\t\t\tbuffer.putBit(false);\r\n\t\t\t}\r\n\r\n\t\t\t// padding\r\n\t\t\twhile (true) {\r\n\r\n\t\t\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tbuffer.put(PAD0, 8);\r\n\r\n\t\t\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tbuffer.put(PAD1, 8);\r\n\t\t\t}\r\n\r\n\t\t\treturn createBytes(buffer, rsBlocks);\r\n\t\t};\r\n\r\n\t\t_this.addData = function(data, mode) {\r\n\r\n\t\t\tmode = mode || 'Byte';\r\n\r\n\t\t\tvar newData = null;\r\n\r\n\t\t\tswitch(mode) {\r\n\t\t\t\tcase 'Numeric' :\r\n\t\t\t\t\tnewData = qrNumber(data);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'Alphanumeric' :\r\n\t\t\t\t\tnewData = qrAlphaNum(data);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'Byte' :\r\n\t\t\t\t\tnewData = qr8BitByte(data);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'Kanji' :\r\n\t\t\t\t\tnewData = qrKanji(data);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault :\r\n\t\t\t\t\tthrow 'mode:' + mode;\r\n\t\t\t}\r\n\r\n\t\t\t_dataList.push(newData);\r\n\t\t\t_dataCache = null;\r\n\t\t};\r\n\r\n\t\t_this.isDark = function(row, col) {\r\n\t\t\tif (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\r\n\t\t\t\tthrow row + ',' + col;\r\n\t\t\t}\r\n\t\t\treturn _modules[row][col];\r\n\t\t};\r\n\r\n\t\t_this.getModuleCount = function() {\r\n\t\t\treturn _moduleCount;\r\n\t\t};\r\n\r\n\t\t_this.make = function() {\r\n\t\t\tif (_typeNumber < 1) {\r\n\t\t\t\tvar typeNumber = 1;\r\n\r\n\t\t\t\tfor (; typeNumber < 40; typeNumber++) {\r\n\t\t\t\t\tvar rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\r\n\t\t\t\t\tvar buffer = qrBitBuffer();\r\n\r\n\t\t\t\t\tfor (var i = 0; i < _dataList.length; i++) {\r\n\t\t\t\t\t\tvar data = _dataList[i];\r\n\t\t\t\t\t\tbuffer.put(data.getMode(), 4);\r\n\t\t\t\t\t\tbuffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\r\n\t\t\t\t\t\tdata.write(buffer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar totalDataCount = 0;\r\n\t\t\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\r\n\t\t\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_typeNumber = typeNumber;\r\n\t\t\t}\r\n\r\n\t\t\tmakeImpl(false, getBestMaskPattern() );\r\n\t\t};\r\n\r\n\t\t_this.createTableTag = function(cellSize, margin) {\r\n\r\n\t\t\tcellSize = cellSize || 2;\r\n\t\t\tmargin = (typeof margin == 'undefined')? cellSize * 4 : margin;\r\n\r\n\t\t\tvar qrHtml = '';\r\n\r\n\t\t\tqrHtml += '<table style=\"';\r\n\t\t\tqrHtml += ' border-width: 0px; border-style: none;';\r\n\t\t\tqrHtml += ' border-collapse: collapse;';\r\n\t\t\tqrHtml += ' padding: 0px; margin: ' + margin + 'px;';\r\n\t\t\tqrHtml += '\">';\r\n\t\t\tqrHtml += '<tbody>';\r\n\r\n\t\t\tfor (var r = 0; r < _this.getModuleCount(); r += 1) {\r\n\r\n\t\t\t\tqrHtml += '<tr>';\r\n\r\n\t\t\t\tfor (var c = 0; c < _this.getModuleCount(); c += 1) {\r\n\t\t\t\t\tqrHtml += '<td style=\"';\r\n\t\t\t\t\tqrHtml += ' border-width: 0px; border-style: none;';\r\n\t\t\t\t\tqrHtml += ' border-collapse: collapse;';\r\n\t\t\t\t\tqrHtml += ' padding: 0px; margin: 0px;';\r\n\t\t\t\t\tqrHtml += ' width: ' + cellSize + 'px;';\r\n\t\t\t\t\tqrHtml += ' height: ' + cellSize + 'px;';\r\n\t\t\t\t\tqrHtml += ' background-color: ';\r\n\t\t\t\t\tqrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\r\n\t\t\t\t\tqrHtml += ';';\r\n\t\t\t\t\tqrHtml += '\"/>';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqrHtml += '</tr>';\r\n\t\t\t}\r\n\r\n\t\t\tqrHtml += '</tbody>';\r\n\t\t\tqrHtml += '</table>';\r\n\r\n\t\t\treturn qrHtml;\r\n\t\t};\r\n\r\n\t\t_this.createSvgTag = function(cellSize, margin, alt, title) {\r\n\r\n\t\t\tvar opts = {};\r\n\t\t\tif (typeof arguments[0] == 'object') {\r\n\t\t\t\t// Called by options.\r\n\t\t\t\topts = arguments[0];\r\n\t\t\t\t// overwrite cellSize and margin.\r\n\t\t\t\tcellSize = opts.cellSize;\r\n\t\t\t\tmargin = opts.margin;\r\n\t\t\t\talt = opts.alt;\r\n\t\t\t\ttitle = opts.title;\r\n\t\t\t}\r\n\r\n\t\t\tcellSize = cellSize || 2;\r\n\t\t\tmargin = (typeof margin == 'undefined')? cellSize * 4 : margin;\r\n\r\n\t\t\t// Compose alt property surrogate\r\n\t\t\talt = (typeof alt === 'string') ? {text: alt} : alt || {};\r\n\t\t\talt.text = alt.text || null;\r\n\t\t\talt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\r\n\r\n\t\t\t// Compose title property surrogate\r\n\t\t\ttitle = (typeof title === 'string') ? {text: title} : title || {};\r\n\t\t\ttitle.text = title.text || null;\r\n\t\t\ttitle.id = (title.text) ? title.id || 'qrcode-title' : null;\r\n\r\n\t\t\tvar size = _this.getModuleCount() * cellSize + margin * 2;\r\n\t\t\tvar c, mc, r, mr, qrSvg='', rect;\r\n\r\n\t\t\trect = 'l' + cellSize + ',0 0,' + cellSize +\r\n\t\t\t\t' -' + cellSize + ',0 0,-' + cellSize + 'z ';\r\n\r\n\t\t\tqrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\r\n\t\t\tqrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\r\n\t\t\tqrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\r\n\t\t\tqrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\r\n\t\t\tqrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\r\n\t\t\t\tescapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\r\n\t\t\tqrSvg += '>';\r\n\t\t\tqrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\r\n\t\t\t\tescapeXml(title.text) + '</title>' : '';\r\n\t\t\tqrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\r\n\t\t\t\tescapeXml(alt.text) + '</description>' : '';\r\n\t\t\tqrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\r\n\t\t\tqrSvg += '<path d=\"';\r\n\r\n\t\t\tfor (r = 0; r < _this.getModuleCount(); r += 1) {\r\n\t\t\t\tmr = r * cellSize + margin;\r\n\t\t\t\tfor (c = 0; c < _this.getModuleCount(); c += 1) {\r\n\t\t\t\t\tif (_this.isDark(r, c) ) {\r\n\t\t\t\t\t\tmc = c*cellSize+margin;\r\n\t\t\t\t\t\tqrSvg += 'M' + mc + ',' + mr + rect;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tqrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\r\n\t\t\tqrSvg += '</svg>';\r\n\r\n\t\t\treturn qrSvg;\r\n\t\t};\r\n\r\n\t\t_this.createDataURL = function(cellSize, margin) {\r\n\r\n\t\t\tcellSize = cellSize || 2;\r\n\t\t\tmargin = (typeof margin == 'undefined')? cellSize * 4 : margin;\r\n\r\n\t\t\tvar size = _this.getModuleCount() * cellSize + margin * 2;\r\n\t\t\tvar min = margin;\r\n\t\t\tvar max = size - margin;\r\n\r\n\t\t\treturn createDataURL(size, size, function(x, y) {\r\n\t\t\t\tif (min <= x && x < max && min <= y && y < max) {\r\n\t\t\t\t\tvar c = Math.floor( (x - min) / cellSize);\r\n\t\t\t\t\tvar r = Math.floor( (y - min) / cellSize);\r\n\t\t\t\t\treturn _this.isDark(r, c)? 0 : 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t};\r\n\r\n\t\t_this.createImgTag = function(cellSize, margin, alt) {\r\n\r\n\t\t\tcellSize = cellSize || 2;\r\n\t\t\tmargin = (typeof margin == 'undefined')? cellSize * 4 : margin;\r\n\r\n\t\t\tvar size = _this.getModuleCount() * cellSize + margin * 2;\r\n\r\n\t\t\tvar img = '';\r\n\t\t\timg += '<img';\r\n\t\t\timg += '\\u0020src=\"';\r\n\t\t\timg += _this.createDataURL(cellSize, margin);\r\n\t\t\timg += '\"';\r\n\t\t\timg += '\\u0020width=\"';\r\n\t\t\timg += size;\r\n\t\t\timg += '\"';\r\n\t\t\timg += '\\u0020height=\"';\r\n\t\t\timg += size;\r\n\t\t\timg += '\"';\r\n\t\t\tif (alt) {\r\n\t\t\t\timg += '\\u0020alt=\"';\r\n\t\t\t\timg += escapeXml(alt);\r\n\t\t\t\timg += '\"';\r\n\t\t\t}\r\n\t\t\timg += '/>';\r\n\r\n\t\t\treturn img;\r\n\t\t};\r\n\r\n\t\tvar escapeXml = function(s) {\r\n\t\t\tvar escaped = '';\r\n\t\t\tfor (var i = 0; i < s.length; i += 1) {\r\n\t\t\t\tvar c = s.charAt(i);\r\n\t\t\t\tswitch(c) {\r\n\t\t\t\t\tcase '<': escaped += '&lt;'; break;\r\n\t\t\t\t\tcase '>': escaped += '&gt;'; break;\r\n\t\t\t\t\tcase '&': escaped += '&amp;'; break;\r\n\t\t\t\t\tcase '\"': escaped += '&quot;'; break;\r\n\t\t\t\t\tdefault : escaped += c; break;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn escaped;\r\n\t\t};\r\n\r\n\t\tvar _createHalfASCII = function(margin) {\r\n\t\t\tvar cellSize = 1;\r\n\t\t\tmargin = (typeof margin == 'undefined')? cellSize * 2 : margin;\r\n\r\n\t\t\tvar size = _this.getModuleCount() * cellSize + margin * 2;\r\n\t\t\tvar min = margin;\r\n\t\t\tvar max = size - margin;\r\n\r\n\t\t\tvar y, x, r1, r2, p;\r\n\r\n\t\t\tvar blocks = {\r\n\t\t\t\t'██': '█',\r\n\t\t\t\t'█ ': '▀',\r\n\t\t\t\t' █': '▄',\r\n\t\t\t\t'  ': ' '\r\n\t\t\t};\r\n\r\n\t\t\tvar blocksLastLineNoMargin = {\r\n\t\t\t\t'██': '▀',\r\n\t\t\t\t'█ ': '▀',\r\n\t\t\t\t' █': ' ',\r\n\t\t\t\t'  ': ' '\r\n\t\t\t};\r\n\r\n\t\t\tvar ascii = '';\r\n\t\t\tfor (y = 0; y < size; y += 2) {\r\n\t\t\t\tr1 = Math.floor((y - min) / cellSize);\r\n\t\t\t\tr2 = Math.floor((y + 1 - min) / cellSize);\r\n\t\t\t\tfor (x = 0; x < size; x += 1) {\r\n\t\t\t\t\tp = '█';\r\n\r\n\t\t\t\t\tif (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\r\n\t\t\t\t\t\tp = ' ';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\r\n\t\t\t\t\t\tp += ' ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tp += '█';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\r\n\t\t\t\t\tascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tascii += '\\n';\r\n\t\t\t}\r\n\r\n\t\t\tif (size % 2 && margin > 0) {\r\n\t\t\t\treturn ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\r\n\t\t\t}\r\n\r\n\t\t\treturn ascii.substring(0, ascii.length-1);\r\n\t\t};\r\n\r\n\t\t_this.createASCII = function(cellSize, margin) {\r\n\t\t\tcellSize = cellSize || 1;\r\n\r\n\t\t\tif (cellSize < 2) {\r\n\t\t\t\treturn _createHalfASCII(margin);\r\n\t\t\t}\r\n\r\n\t\t\tcellSize -= 1;\r\n\t\t\tmargin = (typeof margin == 'undefined')? cellSize * 2 : margin;\r\n\r\n\t\t\tvar size = _this.getModuleCount() * cellSize + margin * 2;\r\n\t\t\tvar min = margin;\r\n\t\t\tvar max = size - margin;\r\n\r\n\t\t\tvar y, x, r, p;\r\n\r\n\t\t\tvar white = Array(cellSize+1).join('██');\r\n\t\t\tvar black = Array(cellSize+1).join('  ');\r\n\r\n\t\t\tvar ascii = '';\r\n\t\t\tvar line = '';\r\n\t\t\tfor (y = 0; y < size; y += 1) {\r\n\t\t\t\tr = Math.floor( (y - min) / cellSize);\r\n\t\t\t\tline = '';\r\n\t\t\t\tfor (x = 0; x < size; x += 1) {\r\n\t\t\t\t\tp = 1;\r\n\r\n\t\t\t\t\tif (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\r\n\t\t\t\t\t\tp = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\r\n\t\t\t\t\tline += p ? white : black;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (r = 0; r < cellSize; r += 1) {\r\n\t\t\t\t\tascii += line + '\\n';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ascii.substring(0, ascii.length-1);\r\n\t\t};\r\n\r\n\t\t_this.renderTo2dContext = function(context, cellSize) {\r\n\t\t\tcellSize = cellSize || 2;\r\n\t\t\tvar length = _this.getModuleCount();\r\n\t\t\tfor (var row = 0; row < length; row++) {\r\n\t\t\t\tfor (var col = 0; col < length; col++) {\r\n\t\t\t\t\tcontext.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\r\n\t\t\t\t\tcontext.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrcode.stringToBytes\r\n\t//---------------------------------------------------------------------\r\n\r\n\tqrcode.stringToBytesFuncs = {\r\n\t\t'default' : function(s) {\r\n\t\t\tvar bytes = [];\r\n\t\t\tfor (var i = 0; i < s.length; i += 1) {\r\n\t\t\t\tvar c = s.charCodeAt(i);\r\n\t\t\t\tbytes.push(c & 0xff);\r\n\t\t\t}\r\n\t\t\treturn bytes;\r\n\t\t}\r\n\t};\r\n\r\n\tqrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrcode.createStringToBytes\r\n\t//---------------------------------------------------------------------\r\n\r\n\t/**\r\n\t * @param unicodeData base64 string of byte array.\r\n\t * [16bit Unicode],[16bit Bytes], ...\r\n\t * @param numChars\r\n\t */\r\n\tqrcode.createStringToBytes = function(unicodeData, numChars) {\r\n\r\n\t\t// create conversion map.\r\n\r\n\t\tvar unicodeMap = function() {\r\n\r\n\t\t\tvar bin = base64DecodeInputStream(unicodeData);\r\n\t\t\tvar read = function() {\r\n\t\t\t\tvar b = bin.read();\r\n\t\t\t\tif (b == -1) throw 'eof';\r\n\t\t\t\treturn b;\r\n\t\t\t};\r\n\r\n\t\t\tvar count = 0;\r\n\t\t\tvar unicodeMap = {};\r\n\t\t\twhile (true) {\r\n\t\t\t\tvar b0 = bin.read();\r\n\t\t\t\tif (b0 == -1) break;\r\n\t\t\t\tvar b1 = read();\r\n\t\t\t\tvar b2 = read();\r\n\t\t\t\tvar b3 = read();\r\n\t\t\t\tvar k = String.fromCharCode( (b0 << 8) | b1);\r\n\t\t\t\tvar v = (b2 << 8) | b3;\r\n\t\t\t\tunicodeMap[k] = v;\r\n\t\t\t\tcount += 1;\r\n\t\t\t}\r\n\t\t\tif (count != numChars) {\r\n\t\t\t\tthrow count + ' != ' + numChars;\r\n\t\t\t}\r\n\r\n\t\t\treturn unicodeMap;\r\n\t\t}();\r\n\r\n\t\tvar unknownChar = '?'.charCodeAt(0);\r\n\r\n\t\treturn function(s) {\r\n\t\t\tvar bytes = [];\r\n\t\t\tfor (var i = 0; i < s.length; i += 1) {\r\n\t\t\t\tvar c = s.charCodeAt(i);\r\n\t\t\t\tif (c < 128) {\r\n\t\t\t\t\tbytes.push(c);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar b = unicodeMap[s.charAt(i)];\r\n\t\t\t\t\tif (typeof b == 'number') {\r\n\t\t\t\t\t\tif ( (b & 0xff) == b) {\r\n\t\t\t\t\t\t\t// 1byte\r\n\t\t\t\t\t\t\tbytes.push(b);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// 2bytes\r\n\t\t\t\t\t\t\tbytes.push(b >>> 8);\r\n\t\t\t\t\t\t\tbytes.push(b & 0xff);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbytes.push(unknownChar);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn bytes;\r\n\t\t};\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// QRMode\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar QRMode = {\r\n\t\tMODE_NUMBER :    1 << 0,\r\n\t\tMODE_ALPHA_NUM : 1 << 1,\r\n\t\tMODE_8BIT_BYTE : 1 << 2,\r\n\t\tMODE_KANJI :     1 << 3\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// QRErrorCorrectionLevel\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar QRErrorCorrectionLevel = {\r\n\t\tL : 1,\r\n\t\tM : 0,\r\n\t\tQ : 3,\r\n\t\tH : 2\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// QRMaskPattern\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar QRMaskPattern = {\r\n\t\tPATTERN000 : 0,\r\n\t\tPATTERN001 : 1,\r\n\t\tPATTERN010 : 2,\r\n\t\tPATTERN011 : 3,\r\n\t\tPATTERN100 : 4,\r\n\t\tPATTERN101 : 5,\r\n\t\tPATTERN110 : 6,\r\n\t\tPATTERN111 : 7\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// QRUtil\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar QRUtil = function() {\r\n\r\n\t\tvar PATTERN_POSITION_TABLE = [\r\n\t\t\t[],\r\n\t\t\t[6, 18],\r\n\t\t\t[6, 22],\r\n\t\t\t[6, 26],\r\n\t\t\t[6, 30],\r\n\t\t\t[6, 34],\r\n\t\t\t[6, 22, 38],\r\n\t\t\t[6, 24, 42],\r\n\t\t\t[6, 26, 46],\r\n\t\t\t[6, 28, 50],\r\n\t\t\t[6, 30, 54],\r\n\t\t\t[6, 32, 58],\r\n\t\t\t[6, 34, 62],\r\n\t\t\t[6, 26, 46, 66],\r\n\t\t\t[6, 26, 48, 70],\r\n\t\t\t[6, 26, 50, 74],\r\n\t\t\t[6, 30, 54, 78],\r\n\t\t\t[6, 30, 56, 82],\r\n\t\t\t[6, 30, 58, 86],\r\n\t\t\t[6, 34, 62, 90],\r\n\t\t\t[6, 28, 50, 72, 94],\r\n\t\t\t[6, 26, 50, 74, 98],\r\n\t\t\t[6, 30, 54, 78, 102],\r\n\t\t\t[6, 28, 54, 80, 106],\r\n\t\t\t[6, 32, 58, 84, 110],\r\n\t\t\t[6, 30, 58, 86, 114],\r\n\t\t\t[6, 34, 62, 90, 118],\r\n\t\t\t[6, 26, 50, 74, 98, 122],\r\n\t\t\t[6, 30, 54, 78, 102, 126],\r\n\t\t\t[6, 26, 52, 78, 104, 130],\r\n\t\t\t[6, 30, 56, 82, 108, 134],\r\n\t\t\t[6, 34, 60, 86, 112, 138],\r\n\t\t\t[6, 30, 58, 86, 114, 142],\r\n\t\t\t[6, 34, 62, 90, 118, 146],\r\n\t\t\t[6, 30, 54, 78, 102, 126, 150],\r\n\t\t\t[6, 24, 50, 76, 102, 128, 154],\r\n\t\t\t[6, 28, 54, 80, 106, 132, 158],\r\n\t\t\t[6, 32, 58, 84, 110, 136, 162],\r\n\t\t\t[6, 26, 54, 82, 110, 138, 166],\r\n\t\t\t[6, 30, 58, 86, 114, 142, 170]\r\n\t\t];\r\n\t\tvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\r\n\t\tvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\r\n\t\tvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\tvar getBCHDigit = function(data) {\r\n\t\t\tvar digit = 0;\r\n\t\t\twhile (data != 0) {\r\n\t\t\t\tdigit += 1;\r\n\t\t\t\tdata >>>= 1;\r\n\t\t\t}\r\n\t\t\treturn digit;\r\n\t\t};\r\n\r\n\t\t_this.getBCHTypeInfo = function(data) {\r\n\t\t\tvar d = data << 10;\r\n\t\t\twhile (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\r\n\t\t\t\td ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\r\n\t\t\t}\r\n\t\t\treturn ( (data << 10) | d) ^ G15_MASK;\r\n\t\t};\r\n\r\n\t\t_this.getBCHTypeNumber = function(data) {\r\n\t\t\tvar d = data << 12;\r\n\t\t\twhile (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\r\n\t\t\t\td ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\r\n\t\t\t}\r\n\t\t\treturn (data << 12) | d;\r\n\t\t};\r\n\r\n\t\t_this.getPatternPosition = function(typeNumber) {\r\n\t\t\treturn PATTERN_POSITION_TABLE[typeNumber - 1];\r\n\t\t};\r\n\r\n\t\t_this.getMaskFunction = function(maskPattern) {\r\n\r\n\t\t\tswitch (maskPattern) {\r\n\r\n\t\t\t\tcase QRMaskPattern.PATTERN000 :\r\n\t\t\t\t\treturn function(i, j) { return (i + j) % 2 == 0; };\r\n\t\t\t\tcase QRMaskPattern.PATTERN001 :\r\n\t\t\t\t\treturn function(i, j) { return i % 2 == 0; };\r\n\t\t\t\tcase QRMaskPattern.PATTERN010 :\r\n\t\t\t\t\treturn function(i, j) { return j % 3 == 0; };\r\n\t\t\t\tcase QRMaskPattern.PATTERN011 :\r\n\t\t\t\t\treturn function(i, j) { return (i + j) % 3 == 0; };\r\n\t\t\t\tcase QRMaskPattern.PATTERN100 :\r\n\t\t\t\t\treturn function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\r\n\t\t\t\tcase QRMaskPattern.PATTERN101 :\r\n\t\t\t\t\treturn function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\r\n\t\t\t\tcase QRMaskPattern.PATTERN110 :\r\n\t\t\t\t\treturn function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\r\n\t\t\t\tcase QRMaskPattern.PATTERN111 :\r\n\t\t\t\t\treturn function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\r\n\r\n\t\t\t\tdefault :\r\n\t\t\t\t\tthrow 'bad maskPattern:' + maskPattern;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.getErrorCorrectPolynomial = function(errorCorrectLength) {\r\n\t\t\tvar a = qrPolynomial([1], 0);\r\n\t\t\tfor (var i = 0; i < errorCorrectLength; i += 1) {\r\n\t\t\t\ta = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\r\n\t\t\t}\r\n\t\t\treturn a;\r\n\t\t};\r\n\r\n\t\t_this.getLengthInBits = function(mode, type) {\r\n\r\n\t\t\tif (1 <= type && type < 10) {\r\n\r\n\t\t\t\t// 1 - 9\r\n\r\n\t\t\t\tswitch(mode) {\r\n\t\t\t\t\tcase QRMode.MODE_NUMBER    : return 10;\r\n\t\t\t\t\tcase QRMode.MODE_ALPHA_NUM : return 9;\r\n\t\t\t\t\tcase QRMode.MODE_8BIT_BYTE : return 8;\r\n\t\t\t\t\tcase QRMode.MODE_KANJI     : return 8;\r\n\t\t\t\t\tdefault :\r\n\t\t\t\t\t\tthrow 'mode:' + mode;\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if (type < 27) {\r\n\r\n\t\t\t\t// 10 - 26\r\n\r\n\t\t\t\tswitch(mode) {\r\n\t\t\t\t\tcase QRMode.MODE_NUMBER    : return 12;\r\n\t\t\t\t\tcase QRMode.MODE_ALPHA_NUM : return 11;\r\n\t\t\t\t\tcase QRMode.MODE_8BIT_BYTE : return 16;\r\n\t\t\t\t\tcase QRMode.MODE_KANJI     : return 10;\r\n\t\t\t\t\tdefault :\r\n\t\t\t\t\t\tthrow 'mode:' + mode;\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if (type < 41) {\r\n\r\n\t\t\t\t// 27 - 40\r\n\r\n\t\t\t\tswitch(mode) {\r\n\t\t\t\t\tcase QRMode.MODE_NUMBER    : return 14;\r\n\t\t\t\t\tcase QRMode.MODE_ALPHA_NUM : return 13;\r\n\t\t\t\t\tcase QRMode.MODE_8BIT_BYTE : return 16;\r\n\t\t\t\t\tcase QRMode.MODE_KANJI     : return 12;\r\n\t\t\t\t\tdefault :\r\n\t\t\t\t\t\tthrow 'mode:' + mode;\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthrow 'type:' + type;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.getLostPoint = function(qrcode) {\r\n\r\n\t\t\tvar moduleCount = qrcode.getModuleCount();\r\n\r\n\t\t\tvar lostPoint = 0;\r\n\r\n\t\t\t// LEVEL1\r\n\r\n\t\t\tfor (var row = 0; row < moduleCount; row += 1) {\r\n\t\t\t\tfor (var col = 0; col < moduleCount; col += 1) {\r\n\r\n\t\t\t\t\tvar sameCount = 0;\r\n\t\t\t\t\tvar dark = qrcode.isDark(row, col);\r\n\r\n\t\t\t\t\tfor (var r = -1; r <= 1; r += 1) {\r\n\r\n\t\t\t\t\t\tif (row + r < 0 || moduleCount <= row + r) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (var c = -1; c <= 1; c += 1) {\r\n\r\n\t\t\t\t\t\t\tif (col + c < 0 || moduleCount <= col + c) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (r == 0 && c == 0) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (dark == qrcode.isDark(row + r, col + c) ) {\r\n\t\t\t\t\t\t\t\tsameCount += 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (sameCount > 5) {\r\n\t\t\t\t\t\tlostPoint += (3 + sameCount - 5);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// LEVEL2\r\n\r\n\t\t\tfor (var row = 0; row < moduleCount - 1; row += 1) {\r\n\t\t\t\tfor (var col = 0; col < moduleCount - 1; col += 1) {\r\n\t\t\t\t\tvar count = 0;\r\n\t\t\t\t\tif (qrcode.isDark(row, col) ) count += 1;\r\n\t\t\t\t\tif (qrcode.isDark(row + 1, col) ) count += 1;\r\n\t\t\t\t\tif (qrcode.isDark(row, col + 1) ) count += 1;\r\n\t\t\t\t\tif (qrcode.isDark(row + 1, col + 1) ) count += 1;\r\n\t\t\t\t\tif (count == 0 || count == 4) {\r\n\t\t\t\t\t\tlostPoint += 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// LEVEL3\r\n\r\n\t\t\tfor (var row = 0; row < moduleCount; row += 1) {\r\n\t\t\t\tfor (var col = 0; col < moduleCount - 6; col += 1) {\r\n\t\t\t\t\tif (qrcode.isDark(row, col)\r\n\t\t\t\t\t\t&& !qrcode.isDark(row, col + 1)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row, col + 2)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row, col + 3)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row, col + 4)\r\n\t\t\t\t\t\t&& !qrcode.isDark(row, col + 5)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row, col + 6) ) {\r\n\t\t\t\t\t\tlostPoint += 40;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (var col = 0; col < moduleCount; col += 1) {\r\n\t\t\t\tfor (var row = 0; row < moduleCount - 6; row += 1) {\r\n\t\t\t\t\tif (qrcode.isDark(row, col)\r\n\t\t\t\t\t\t&& !qrcode.isDark(row + 1, col)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row + 2, col)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row + 3, col)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row + 4, col)\r\n\t\t\t\t\t\t&& !qrcode.isDark(row + 5, col)\r\n\t\t\t\t\t\t&&  qrcode.isDark(row + 6, col) ) {\r\n\t\t\t\t\t\tlostPoint += 40;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// LEVEL4\r\n\r\n\t\t\tvar darkCount = 0;\r\n\r\n\t\t\tfor (var col = 0; col < moduleCount; col += 1) {\r\n\t\t\t\tfor (var row = 0; row < moduleCount; row += 1) {\r\n\t\t\t\t\tif (qrcode.isDark(row, col) ) {\r\n\t\t\t\t\t\tdarkCount += 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\r\n\t\t\tlostPoint += ratio * 10;\r\n\r\n\t\t\treturn lostPoint;\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t}();\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// QRMath\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar QRMath = function() {\r\n\r\n\t\tvar EXP_TABLE = new Array(256);\r\n\t\tvar LOG_TABLE = new Array(256);\r\n\r\n\t\t// initialize tables\r\n\t\tfor (var i = 0; i < 8; i += 1) {\r\n\t\t\tEXP_TABLE[i] = 1 << i;\r\n\t\t}\r\n\t\tfor (var i = 8; i < 256; i += 1) {\r\n\t\t\tEXP_TABLE[i] = EXP_TABLE[i - 4]\r\n\t\t\t\t^ EXP_TABLE[i - 5]\r\n\t\t\t\t^ EXP_TABLE[i - 6]\r\n\t\t\t\t^ EXP_TABLE[i - 8];\r\n\t\t}\r\n\t\tfor (var i = 0; i < 255; i += 1) {\r\n\t\t\tLOG_TABLE[EXP_TABLE[i] ] = i;\r\n\t\t}\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.glog = function(n) {\r\n\r\n\t\t\tif (n < 1) {\r\n\t\t\t\tthrow 'glog(' + n + ')';\r\n\t\t\t}\r\n\r\n\t\t\treturn LOG_TABLE[n];\r\n\t\t};\r\n\r\n\t\t_this.gexp = function(n) {\r\n\r\n\t\t\twhile (n < 0) {\r\n\t\t\t\tn += 255;\r\n\t\t\t}\r\n\r\n\t\t\twhile (n >= 256) {\r\n\t\t\t\tn -= 255;\r\n\t\t\t}\r\n\r\n\t\t\treturn EXP_TABLE[n];\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t}();\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrPolynomial\r\n\t//---------------------------------------------------------------------\r\n\r\n\tfunction qrPolynomial(num, shift) {\r\n\r\n\t\tif (typeof num.length == 'undefined') {\r\n\t\t\tthrow num.length + '/' + shift;\r\n\t\t}\r\n\r\n\t\tvar _num = function() {\r\n\t\t\tvar offset = 0;\r\n\t\t\twhile (offset < num.length && num[offset] == 0) {\r\n\t\t\t\toffset += 1;\r\n\t\t\t}\r\n\t\t\tvar _num = new Array(num.length - offset + shift);\r\n\t\t\tfor (var i = 0; i < num.length - offset; i += 1) {\r\n\t\t\t\t_num[i] = num[i + offset];\r\n\t\t\t}\r\n\t\t\treturn _num;\r\n\t\t}();\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.getAt = function(index) {\r\n\t\t\treturn _num[index];\r\n\t\t};\r\n\r\n\t\t_this.getLength = function() {\r\n\t\t\treturn _num.length;\r\n\t\t};\r\n\r\n\t\t_this.multiply = function(e) {\r\n\r\n\t\t\tvar num = new Array(_this.getLength() + e.getLength() - 1);\r\n\r\n\t\t\tfor (var i = 0; i < _this.getLength(); i += 1) {\r\n\t\t\t\tfor (var j = 0; j < e.getLength(); j += 1) {\r\n\t\t\t\t\tnum[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn qrPolynomial(num, 0);\r\n\t\t};\r\n\r\n\t\t_this.mod = function(e) {\r\n\r\n\t\t\tif (_this.getLength() - e.getLength() < 0) {\r\n\t\t\t\treturn _this;\r\n\t\t\t}\r\n\r\n\t\t\tvar ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\r\n\r\n\t\t\tvar num = new Array(_this.getLength() );\r\n\t\t\tfor (var i = 0; i < _this.getLength(); i += 1) {\r\n\t\t\t\tnum[i] = _this.getAt(i);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0; i < e.getLength(); i += 1) {\r\n\t\t\t\tnum[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\r\n\t\t\t}\r\n\r\n\t\t\t// recursive call\r\n\t\t\treturn qrPolynomial(num, 0).mod(e);\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// QRRSBlock\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar QRRSBlock = function() {\r\n\r\n\t\tvar RS_BLOCK_TABLE = [\r\n\r\n\t\t\t// L\r\n\t\t\t// M\r\n\t\t\t// Q\r\n\t\t\t// H\r\n\r\n\t\t\t// 1\r\n\t\t\t[1, 26, 19],\r\n\t\t\t[1, 26, 16],\r\n\t\t\t[1, 26, 13],\r\n\t\t\t[1, 26, 9],\r\n\r\n\t\t\t// 2\r\n\t\t\t[1, 44, 34],\r\n\t\t\t[1, 44, 28],\r\n\t\t\t[1, 44, 22],\r\n\t\t\t[1, 44, 16],\r\n\r\n\t\t\t// 3\r\n\t\t\t[1, 70, 55],\r\n\t\t\t[1, 70, 44],\r\n\t\t\t[2, 35, 17],\r\n\t\t\t[2, 35, 13],\r\n\r\n\t\t\t// 4\r\n\t\t\t[1, 100, 80],\r\n\t\t\t[2, 50, 32],\r\n\t\t\t[2, 50, 24],\r\n\t\t\t[4, 25, 9],\r\n\r\n\t\t\t// 5\r\n\t\t\t[1, 134, 108],\r\n\t\t\t[2, 67, 43],\r\n\t\t\t[2, 33, 15, 2, 34, 16],\r\n\t\t\t[2, 33, 11, 2, 34, 12],\r\n\r\n\t\t\t// 6\r\n\t\t\t[2, 86, 68],\r\n\t\t\t[4, 43, 27],\r\n\t\t\t[4, 43, 19],\r\n\t\t\t[4, 43, 15],\r\n\r\n\t\t\t// 7\r\n\t\t\t[2, 98, 78],\r\n\t\t\t[4, 49, 31],\r\n\t\t\t[2, 32, 14, 4, 33, 15],\r\n\t\t\t[4, 39, 13, 1, 40, 14],\r\n\r\n\t\t\t// 8\r\n\t\t\t[2, 121, 97],\r\n\t\t\t[2, 60, 38, 2, 61, 39],\r\n\t\t\t[4, 40, 18, 2, 41, 19],\r\n\t\t\t[4, 40, 14, 2, 41, 15],\r\n\r\n\t\t\t// 9\r\n\t\t\t[2, 146, 116],\r\n\t\t\t[3, 58, 36, 2, 59, 37],\r\n\t\t\t[4, 36, 16, 4, 37, 17],\r\n\t\t\t[4, 36, 12, 4, 37, 13],\r\n\r\n\t\t\t// 10\r\n\t\t\t[2, 86, 68, 2, 87, 69],\r\n\t\t\t[4, 69, 43, 1, 70, 44],\r\n\t\t\t[6, 43, 19, 2, 44, 20],\r\n\t\t\t[6, 43, 15, 2, 44, 16],\r\n\r\n\t\t\t// 11\r\n\t\t\t[4, 101, 81],\r\n\t\t\t[1, 80, 50, 4, 81, 51],\r\n\t\t\t[4, 50, 22, 4, 51, 23],\r\n\t\t\t[3, 36, 12, 8, 37, 13],\r\n\r\n\t\t\t// 12\r\n\t\t\t[2, 116, 92, 2, 117, 93],\r\n\t\t\t[6, 58, 36, 2, 59, 37],\r\n\t\t\t[4, 46, 20, 6, 47, 21],\r\n\t\t\t[7, 42, 14, 4, 43, 15],\r\n\r\n\t\t\t// 13\r\n\t\t\t[4, 133, 107],\r\n\t\t\t[8, 59, 37, 1, 60, 38],\r\n\t\t\t[8, 44, 20, 4, 45, 21],\r\n\t\t\t[12, 33, 11, 4, 34, 12],\r\n\r\n\t\t\t// 14\r\n\t\t\t[3, 145, 115, 1, 146, 116],\r\n\t\t\t[4, 64, 40, 5, 65, 41],\r\n\t\t\t[11, 36, 16, 5, 37, 17],\r\n\t\t\t[11, 36, 12, 5, 37, 13],\r\n\r\n\t\t\t// 15\r\n\t\t\t[5, 109, 87, 1, 110, 88],\r\n\t\t\t[5, 65, 41, 5, 66, 42],\r\n\t\t\t[5, 54, 24, 7, 55, 25],\r\n\t\t\t[11, 36, 12, 7, 37, 13],\r\n\r\n\t\t\t// 16\r\n\t\t\t[5, 122, 98, 1, 123, 99],\r\n\t\t\t[7, 73, 45, 3, 74, 46],\r\n\t\t\t[15, 43, 19, 2, 44, 20],\r\n\t\t\t[3, 45, 15, 13, 46, 16],\r\n\r\n\t\t\t// 17\r\n\t\t\t[1, 135, 107, 5, 136, 108],\r\n\t\t\t[10, 74, 46, 1, 75, 47],\r\n\t\t\t[1, 50, 22, 15, 51, 23],\r\n\t\t\t[2, 42, 14, 17, 43, 15],\r\n\r\n\t\t\t// 18\r\n\t\t\t[5, 150, 120, 1, 151, 121],\r\n\t\t\t[9, 69, 43, 4, 70, 44],\r\n\t\t\t[17, 50, 22, 1, 51, 23],\r\n\t\t\t[2, 42, 14, 19, 43, 15],\r\n\r\n\t\t\t// 19\r\n\t\t\t[3, 141, 113, 4, 142, 114],\r\n\t\t\t[3, 70, 44, 11, 71, 45],\r\n\t\t\t[17, 47, 21, 4, 48, 22],\r\n\t\t\t[9, 39, 13, 16, 40, 14],\r\n\r\n\t\t\t// 20\r\n\t\t\t[3, 135, 107, 5, 136, 108],\r\n\t\t\t[3, 67, 41, 13, 68, 42],\r\n\t\t\t[15, 54, 24, 5, 55, 25],\r\n\t\t\t[15, 43, 15, 10, 44, 16],\r\n\r\n\t\t\t// 21\r\n\t\t\t[4, 144, 116, 4, 145, 117],\r\n\t\t\t[17, 68, 42],\r\n\t\t\t[17, 50, 22, 6, 51, 23],\r\n\t\t\t[19, 46, 16, 6, 47, 17],\r\n\r\n\t\t\t// 22\r\n\t\t\t[2, 139, 111, 7, 140, 112],\r\n\t\t\t[17, 74, 46],\r\n\t\t\t[7, 54, 24, 16, 55, 25],\r\n\t\t\t[34, 37, 13],\r\n\r\n\t\t\t// 23\r\n\t\t\t[4, 151, 121, 5, 152, 122],\r\n\t\t\t[4, 75, 47, 14, 76, 48],\r\n\t\t\t[11, 54, 24, 14, 55, 25],\r\n\t\t\t[16, 45, 15, 14, 46, 16],\r\n\r\n\t\t\t// 24\r\n\t\t\t[6, 147, 117, 4, 148, 118],\r\n\t\t\t[6, 73, 45, 14, 74, 46],\r\n\t\t\t[11, 54, 24, 16, 55, 25],\r\n\t\t\t[30, 46, 16, 2, 47, 17],\r\n\r\n\t\t\t// 25\r\n\t\t\t[8, 132, 106, 4, 133, 107],\r\n\t\t\t[8, 75, 47, 13, 76, 48],\r\n\t\t\t[7, 54, 24, 22, 55, 25],\r\n\t\t\t[22, 45, 15, 13, 46, 16],\r\n\r\n\t\t\t// 26\r\n\t\t\t[10, 142, 114, 2, 143, 115],\r\n\t\t\t[19, 74, 46, 4, 75, 47],\r\n\t\t\t[28, 50, 22, 6, 51, 23],\r\n\t\t\t[33, 46, 16, 4, 47, 17],\r\n\r\n\t\t\t// 27\r\n\t\t\t[8, 152, 122, 4, 153, 123],\r\n\t\t\t[22, 73, 45, 3, 74, 46],\r\n\t\t\t[8, 53, 23, 26, 54, 24],\r\n\t\t\t[12, 45, 15, 28, 46, 16],\r\n\r\n\t\t\t// 28\r\n\t\t\t[3, 147, 117, 10, 148, 118],\r\n\t\t\t[3, 73, 45, 23, 74, 46],\r\n\t\t\t[4, 54, 24, 31, 55, 25],\r\n\t\t\t[11, 45, 15, 31, 46, 16],\r\n\r\n\t\t\t// 29\r\n\t\t\t[7, 146, 116, 7, 147, 117],\r\n\t\t\t[21, 73, 45, 7, 74, 46],\r\n\t\t\t[1, 53, 23, 37, 54, 24],\r\n\t\t\t[19, 45, 15, 26, 46, 16],\r\n\r\n\t\t\t// 30\r\n\t\t\t[5, 145, 115, 10, 146, 116],\r\n\t\t\t[19, 75, 47, 10, 76, 48],\r\n\t\t\t[15, 54, 24, 25, 55, 25],\r\n\t\t\t[23, 45, 15, 25, 46, 16],\r\n\r\n\t\t\t// 31\r\n\t\t\t[13, 145, 115, 3, 146, 116],\r\n\t\t\t[2, 74, 46, 29, 75, 47],\r\n\t\t\t[42, 54, 24, 1, 55, 25],\r\n\t\t\t[23, 45, 15, 28, 46, 16],\r\n\r\n\t\t\t// 32\r\n\t\t\t[17, 145, 115],\r\n\t\t\t[10, 74, 46, 23, 75, 47],\r\n\t\t\t[10, 54, 24, 35, 55, 25],\r\n\t\t\t[19, 45, 15, 35, 46, 16],\r\n\r\n\t\t\t// 33\r\n\t\t\t[17, 145, 115, 1, 146, 116],\r\n\t\t\t[14, 74, 46, 21, 75, 47],\r\n\t\t\t[29, 54, 24, 19, 55, 25],\r\n\t\t\t[11, 45, 15, 46, 46, 16],\r\n\r\n\t\t\t// 34\r\n\t\t\t[13, 145, 115, 6, 146, 116],\r\n\t\t\t[14, 74, 46, 23, 75, 47],\r\n\t\t\t[44, 54, 24, 7, 55, 25],\r\n\t\t\t[59, 46, 16, 1, 47, 17],\r\n\r\n\t\t\t// 35\r\n\t\t\t[12, 151, 121, 7, 152, 122],\r\n\t\t\t[12, 75, 47, 26, 76, 48],\r\n\t\t\t[39, 54, 24, 14, 55, 25],\r\n\t\t\t[22, 45, 15, 41, 46, 16],\r\n\r\n\t\t\t// 36\r\n\t\t\t[6, 151, 121, 14, 152, 122],\r\n\t\t\t[6, 75, 47, 34, 76, 48],\r\n\t\t\t[46, 54, 24, 10, 55, 25],\r\n\t\t\t[2, 45, 15, 64, 46, 16],\r\n\r\n\t\t\t// 37\r\n\t\t\t[17, 152, 122, 4, 153, 123],\r\n\t\t\t[29, 74, 46, 14, 75, 47],\r\n\t\t\t[49, 54, 24, 10, 55, 25],\r\n\t\t\t[24, 45, 15, 46, 46, 16],\r\n\r\n\t\t\t// 38\r\n\t\t\t[4, 152, 122, 18, 153, 123],\r\n\t\t\t[13, 74, 46, 32, 75, 47],\r\n\t\t\t[48, 54, 24, 14, 55, 25],\r\n\t\t\t[42, 45, 15, 32, 46, 16],\r\n\r\n\t\t\t// 39\r\n\t\t\t[20, 147, 117, 4, 148, 118],\r\n\t\t\t[40, 75, 47, 7, 76, 48],\r\n\t\t\t[43, 54, 24, 22, 55, 25],\r\n\t\t\t[10, 45, 15, 67, 46, 16],\r\n\r\n\t\t\t// 40\r\n\t\t\t[19, 148, 118, 6, 149, 119],\r\n\t\t\t[18, 75, 47, 31, 76, 48],\r\n\t\t\t[34, 54, 24, 34, 55, 25],\r\n\t\t\t[20, 45, 15, 61, 46, 16]\r\n\t\t];\r\n\r\n\t\tvar qrRSBlock = function(totalCount, dataCount) {\r\n\t\t\tvar _this = {};\r\n\t\t\t_this.totalCount = totalCount;\r\n\t\t\t_this.dataCount = dataCount;\r\n\t\t\treturn _this;\r\n\t\t};\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\tvar getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\r\n\r\n\t\t\tswitch(errorCorrectionLevel) {\r\n\t\t\t\tcase QRErrorCorrectionLevel.L :\r\n\t\t\t\t\treturn RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\r\n\t\t\t\tcase QRErrorCorrectionLevel.M :\r\n\t\t\t\t\treturn RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\r\n\t\t\t\tcase QRErrorCorrectionLevel.Q :\r\n\t\t\t\t\treturn RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\r\n\t\t\t\tcase QRErrorCorrectionLevel.H :\r\n\t\t\t\t\treturn RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\r\n\t\t\t\tdefault :\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\r\n\r\n\t\t\tvar rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\r\n\r\n\t\t\tif (typeof rsBlock == 'undefined') {\r\n\t\t\t\tthrow 'bad rs block @ typeNumber:' + typeNumber +\r\n\t\t\t\t'/errorCorrectionLevel:' + errorCorrectionLevel;\r\n\t\t\t}\r\n\r\n\t\t\tvar length = rsBlock.length / 3;\r\n\r\n\t\t\tvar list = [];\r\n\r\n\t\t\tfor (var i = 0; i < length; i += 1) {\r\n\r\n\t\t\t\tvar count = rsBlock[i * 3 + 0];\r\n\t\t\t\tvar totalCount = rsBlock[i * 3 + 1];\r\n\t\t\t\tvar dataCount = rsBlock[i * 3 + 2];\r\n\r\n\t\t\t\tfor (var j = 0; j < count; j += 1) {\r\n\t\t\t\t\tlist.push(qrRSBlock(totalCount, dataCount) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn list;\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t}();\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrBitBuffer\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar qrBitBuffer = function() {\r\n\r\n\t\tvar _buffer = [];\r\n\t\tvar _length = 0;\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.getBuffer = function() {\r\n\t\t\treturn _buffer;\r\n\t\t};\r\n\r\n\t\t_this.getAt = function(index) {\r\n\t\t\tvar bufIndex = Math.floor(index / 8);\r\n\t\t\treturn ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\r\n\t\t};\r\n\r\n\t\t_this.put = function(num, length) {\r\n\t\t\tfor (var i = 0; i < length; i += 1) {\r\n\t\t\t\t_this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.getLengthInBits = function() {\r\n\t\t\treturn _length;\r\n\t\t};\r\n\r\n\t\t_this.putBit = function(bit) {\r\n\r\n\t\t\tvar bufIndex = Math.floor(_length / 8);\r\n\t\t\tif (_buffer.length <= bufIndex) {\r\n\t\t\t\t_buffer.push(0);\r\n\t\t\t}\r\n\r\n\t\t\tif (bit) {\r\n\t\t\t\t_buffer[bufIndex] |= (0x80 >>> (_length % 8) );\r\n\t\t\t}\r\n\r\n\t\t\t_length += 1;\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrNumber\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar qrNumber = function(data) {\r\n\r\n\t\tvar _mode = QRMode.MODE_NUMBER;\r\n\t\tvar _data = data;\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.getMode = function() {\r\n\t\t\treturn _mode;\r\n\t\t};\r\n\r\n\t\t_this.getLength = function(buffer) {\r\n\t\t\treturn _data.length;\r\n\t\t};\r\n\r\n\t\t_this.write = function(buffer) {\r\n\r\n\t\t\tvar data = _data;\r\n\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\twhile (i + 2 < data.length) {\r\n\t\t\t\tbuffer.put(strToNum(data.substring(i, i + 3) ), 10);\r\n\t\t\t\ti += 3;\r\n\t\t\t}\r\n\r\n\t\t\tif (i < data.length) {\r\n\t\t\t\tif (data.length - i == 1) {\r\n\t\t\t\t\tbuffer.put(strToNum(data.substring(i, i + 1) ), 4);\r\n\t\t\t\t} else if (data.length - i == 2) {\r\n\t\t\t\t\tbuffer.put(strToNum(data.substring(i, i + 2) ), 7);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar strToNum = function(s) {\r\n\t\t\tvar num = 0;\r\n\t\t\tfor (var i = 0; i < s.length; i += 1) {\r\n\t\t\t\tnum = num * 10 + chatToNum(s.charAt(i) );\r\n\t\t\t}\r\n\t\t\treturn num;\r\n\t\t};\r\n\r\n\t\tvar chatToNum = function(c) {\r\n\t\t\tif ('0' <= c && c <= '9') {\r\n\t\t\t\treturn c.charCodeAt(0) - '0'.charCodeAt(0);\r\n\t\t\t}\r\n\t\t\tthrow 'illegal char :' + c;\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrAlphaNum\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar qrAlphaNum = function(data) {\r\n\r\n\t\tvar _mode = QRMode.MODE_ALPHA_NUM;\r\n\t\tvar _data = data;\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.getMode = function() {\r\n\t\t\treturn _mode;\r\n\t\t};\r\n\r\n\t\t_this.getLength = function(buffer) {\r\n\t\t\treturn _data.length;\r\n\t\t};\r\n\r\n\t\t_this.write = function(buffer) {\r\n\r\n\t\t\tvar s = _data;\r\n\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\twhile (i + 1 < s.length) {\r\n\t\t\t\tbuffer.put(\r\n\t\t\t\t\tgetCode(s.charAt(i) ) * 45 +\r\n\t\t\t\t\tgetCode(s.charAt(i + 1) ), 11);\r\n\t\t\t\ti += 2;\r\n\t\t\t}\r\n\r\n\t\t\tif (i < s.length) {\r\n\t\t\t\tbuffer.put(getCode(s.charAt(i) ), 6);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar getCode = function(c) {\r\n\r\n\t\t\tif ('0' <= c && c <= '9') {\r\n\t\t\t\treturn c.charCodeAt(0) - '0'.charCodeAt(0);\r\n\t\t\t} else if ('A' <= c && c <= 'Z') {\r\n\t\t\t\treturn c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\r\n\t\t\t} else {\r\n\t\t\t\tswitch (c) {\r\n\t\t\t\t\tcase ' ' : return 36;\r\n\t\t\t\t\tcase '$' : return 37;\r\n\t\t\t\t\tcase '%' : return 38;\r\n\t\t\t\t\tcase '*' : return 39;\r\n\t\t\t\t\tcase '+' : return 40;\r\n\t\t\t\t\tcase '-' : return 41;\r\n\t\t\t\t\tcase '.' : return 42;\r\n\t\t\t\t\tcase '/' : return 43;\r\n\t\t\t\t\tcase ':' : return 44;\r\n\t\t\t\t\tdefault :\r\n\t\t\t\t\t\tthrow 'illegal char :' + c;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qr8BitByte\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar qr8BitByte = function(data) {\r\n\r\n\t\tvar _mode = QRMode.MODE_8BIT_BYTE;\r\n\t\tvar _data = data;\r\n\t\tvar _bytes = qrcode.stringToBytes(data);\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.getMode = function() {\r\n\t\t\treturn _mode;\r\n\t\t};\r\n\r\n\t\t_this.getLength = function(buffer) {\r\n\t\t\treturn _bytes.length;\r\n\t\t};\r\n\r\n\t\t_this.write = function(buffer) {\r\n\t\t\tfor (var i = 0; i < _bytes.length; i += 1) {\r\n\t\t\t\tbuffer.put(_bytes[i], 8);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// qrKanji\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar qrKanji = function(data) {\r\n\r\n\t\tvar _mode = QRMode.MODE_KANJI;\r\n\t\tvar _data = data;\r\n\r\n\t\tvar stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\r\n\t\tif (!stringToBytes) {\r\n\t\t\tthrow 'sjis not supported.';\r\n\t\t}\r\n\t\t!function(c, code) {\r\n\t\t\t// self test for sjis support.\r\n\t\t\tvar test = stringToBytes(c);\r\n\t\t\tif (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\r\n\t\t\t\tthrow 'sjis not supported.';\r\n\t\t\t}\r\n\t\t}('\\u53cb', 0x9746);\r\n\r\n\t\tvar _bytes = stringToBytes(data);\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.getMode = function() {\r\n\t\t\treturn _mode;\r\n\t\t};\r\n\r\n\t\t_this.getLength = function(buffer) {\r\n\t\t\treturn ~~(_bytes.length / 2);\r\n\t\t};\r\n\r\n\t\t_this.write = function(buffer) {\r\n\r\n\t\t\tvar data = _bytes;\r\n\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\twhile (i + 1 < data.length) {\r\n\r\n\t\t\t\tvar c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\r\n\r\n\t\t\t\tif (0x8140 <= c && c <= 0x9FFC) {\r\n\t\t\t\t\tc -= 0x8140;\r\n\t\t\t\t} else if (0xE040 <= c && c <= 0xEBBF) {\r\n\t\t\t\t\tc -= 0xC140;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow 'illegal char at ' + (i + 1) + '/' + c;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tc = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\r\n\r\n\t\t\t\tbuffer.put(c, 13);\r\n\r\n\t\t\t\ti += 2;\r\n\t\t\t}\r\n\r\n\t\t\tif (i < data.length) {\r\n\t\t\t\tthrow 'illegal char at ' + (i + 1);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//=====================================================================\r\n\t// GIF Support etc.\r\n\t//\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// byteArrayOutputStream\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar byteArrayOutputStream = function() {\r\n\r\n\t\tvar _bytes = [];\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.writeByte = function(b) {\r\n\t\t\t_bytes.push(b & 0xff);\r\n\t\t};\r\n\r\n\t\t_this.writeShort = function(i) {\r\n\t\t\t_this.writeByte(i);\r\n\t\t\t_this.writeByte(i >>> 8);\r\n\t\t};\r\n\r\n\t\t_this.writeBytes = function(b, off, len) {\r\n\t\t\toff = off || 0;\r\n\t\t\tlen = len || b.length;\r\n\t\t\tfor (var i = 0; i < len; i += 1) {\r\n\t\t\t\t_this.writeByte(b[i + off]);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.writeString = function(s) {\r\n\t\t\tfor (var i = 0; i < s.length; i += 1) {\r\n\t\t\t\t_this.writeByte(s.charCodeAt(i) );\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.toByteArray = function() {\r\n\t\t\treturn _bytes;\r\n\t\t};\r\n\r\n\t\t_this.toString = function() {\r\n\t\t\tvar s = '';\r\n\t\t\ts += '[';\r\n\t\t\tfor (var i = 0; i < _bytes.length; i += 1) {\r\n\t\t\t\tif (i > 0) {\r\n\t\t\t\t\ts += ',';\r\n\t\t\t\t}\r\n\t\t\t\ts += _bytes[i];\r\n\t\t\t}\r\n\t\t\ts += ']';\r\n\t\t\treturn s;\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// base64EncodeOutputStream\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar base64EncodeOutputStream = function() {\r\n\r\n\t\tvar _buffer = 0;\r\n\t\tvar _buflen = 0;\r\n\t\tvar _length = 0;\r\n\t\tvar _base64 = '';\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\tvar writeEncoded = function(b) {\r\n\t\t\t_base64 += String.fromCharCode(encode(b & 0x3f) );\r\n\t\t};\r\n\r\n\t\tvar encode = function(n) {\r\n\t\t\tif (n < 0) {\r\n\t\t\t\t// error.\r\n\t\t\t} else if (n < 26) {\r\n\t\t\t\treturn 0x41 + n;\r\n\t\t\t} else if (n < 52) {\r\n\t\t\t\treturn 0x61 + (n - 26);\r\n\t\t\t} else if (n < 62) {\r\n\t\t\t\treturn 0x30 + (n - 52);\r\n\t\t\t} else if (n == 62) {\r\n\t\t\t\treturn 0x2b;\r\n\t\t\t} else if (n == 63) {\r\n\t\t\t\treturn 0x2f;\r\n\t\t\t}\r\n\t\t\tthrow 'n:' + n;\r\n\t\t};\r\n\r\n\t\t_this.writeByte = function(n) {\r\n\r\n\t\t\t_buffer = (_buffer << 8) | (n & 0xff);\r\n\t\t\t_buflen += 8;\r\n\t\t\t_length += 1;\r\n\r\n\t\t\twhile (_buflen >= 6) {\r\n\t\t\t\twriteEncoded(_buffer >>> (_buflen - 6) );\r\n\t\t\t\t_buflen -= 6;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.flush = function() {\r\n\r\n\t\t\tif (_buflen > 0) {\r\n\t\t\t\twriteEncoded(_buffer << (6 - _buflen) );\r\n\t\t\t\t_buffer = 0;\r\n\t\t\t\t_buflen = 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (_length % 3 != 0) {\r\n\t\t\t\t// padding\r\n\t\t\t\tvar padlen = 3 - _length % 3;\r\n\t\t\t\tfor (var i = 0; i < padlen; i += 1) {\r\n\t\t\t\t\t_base64 += '=';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t_this.toString = function() {\r\n\t\t\treturn _base64;\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// base64DecodeInputStream\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar base64DecodeInputStream = function(str) {\r\n\r\n\t\tvar _str = str;\r\n\t\tvar _pos = 0;\r\n\t\tvar _buffer = 0;\r\n\t\tvar _buflen = 0;\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.read = function() {\r\n\r\n\t\t\twhile (_buflen < 8) {\r\n\r\n\t\t\t\tif (_pos >= _str.length) {\r\n\t\t\t\t\tif (_buflen == 0) {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthrow 'unexpected end of file./' + _buflen;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar c = _str.charAt(_pos);\r\n\t\t\t\t_pos += 1;\r\n\r\n\t\t\t\tif (c == '=') {\r\n\t\t\t\t\t_buflen = 0;\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else if (c.match(/^\\s$/) ) {\r\n\t\t\t\t\t// ignore if whitespace.\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\r\n\t\t\t\t_buflen += 6;\r\n\t\t\t}\r\n\r\n\t\t\tvar n = (_buffer >>> (_buflen - 8) ) & 0xff;\r\n\t\t\t_buflen -= 8;\r\n\t\t\treturn n;\r\n\t\t};\r\n\r\n\t\tvar decode = function(c) {\r\n\t\t\tif (0x41 <= c && c <= 0x5a) {\r\n\t\t\t\treturn c - 0x41;\r\n\t\t\t} else if (0x61 <= c && c <= 0x7a) {\r\n\t\t\t\treturn c - 0x61 + 26;\r\n\t\t\t} else if (0x30 <= c && c <= 0x39) {\r\n\t\t\t\treturn c - 0x30 + 52;\r\n\t\t\t} else if (c == 0x2b) {\r\n\t\t\t\treturn 62;\r\n\t\t\t} else if (c == 0x2f) {\r\n\t\t\t\treturn 63;\r\n\t\t\t} else {\r\n\t\t\t\tthrow 'c:' + c;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// gifImage (B/W)\r\n\t//---------------------------------------------------------------------\r\n\r\n\tvar gifImage = function(width, height) {\r\n\r\n\t\tvar _width = width;\r\n\t\tvar _height = height;\r\n\t\tvar _data = new Array(width * height);\r\n\r\n\t\tvar _this = {};\r\n\r\n\t\t_this.setPixel = function(x, y, pixel) {\r\n\t\t\t_data[y * _width + x] = pixel;\r\n\t\t};\r\n\r\n\t\t_this.write = function(out) {\r\n\r\n\t\t\t//---------------------------------\r\n\t\t\t// GIF Signature\r\n\r\n\t\t\tout.writeString('GIF87a');\r\n\r\n\t\t\t//---------------------------------\r\n\t\t\t// Screen Descriptor\r\n\r\n\t\t\tout.writeShort(_width);\r\n\t\t\tout.writeShort(_height);\r\n\r\n\t\t\tout.writeByte(0x80); // 2bit\r\n\t\t\tout.writeByte(0);\r\n\t\t\tout.writeByte(0);\r\n\r\n\t\t\t//---------------------------------\r\n\t\t\t// Global Color Map\r\n\r\n\t\t\t// black\r\n\t\t\tout.writeByte(0x00);\r\n\t\t\tout.writeByte(0x00);\r\n\t\t\tout.writeByte(0x00);\r\n\r\n\t\t\t// white\r\n\t\t\tout.writeByte(0xff);\r\n\t\t\tout.writeByte(0xff);\r\n\t\t\tout.writeByte(0xff);\r\n\r\n\t\t\t//---------------------------------\r\n\t\t\t// Image Descriptor\r\n\r\n\t\t\tout.writeString(',');\r\n\t\t\tout.writeShort(0);\r\n\t\t\tout.writeShort(0);\r\n\t\t\tout.writeShort(_width);\r\n\t\t\tout.writeShort(_height);\r\n\t\t\tout.writeByte(0);\r\n\r\n\t\t\t//---------------------------------\r\n\t\t\t// Local Color Map\r\n\r\n\t\t\t//---------------------------------\r\n\t\t\t// Raster Data\r\n\r\n\t\t\tvar lzwMinCodeSize = 2;\r\n\t\t\tvar raster = getLZWRaster(lzwMinCodeSize);\r\n\r\n\t\t\tout.writeByte(lzwMinCodeSize);\r\n\r\n\t\t\tvar offset = 0;\r\n\r\n\t\t\twhile (raster.length - offset > 255) {\r\n\t\t\t\tout.writeByte(255);\r\n\t\t\t\tout.writeBytes(raster, offset, 255);\r\n\t\t\t\toffset += 255;\r\n\t\t\t}\r\n\r\n\t\t\tout.writeByte(raster.length - offset);\r\n\t\t\tout.writeBytes(raster, offset, raster.length - offset);\r\n\t\t\tout.writeByte(0x00);\r\n\r\n\t\t\t//---------------------------------\r\n\t\t\t// GIF Terminator\r\n\t\t\tout.writeString(';');\r\n\t\t};\r\n\r\n\t\tvar bitOutputStream = function(out) {\r\n\r\n\t\t\tvar _out = out;\r\n\t\t\tvar _bitLength = 0;\r\n\t\t\tvar _bitBuffer = 0;\r\n\r\n\t\t\tvar _this = {};\r\n\r\n\t\t\t_this.write = function(data, length) {\r\n\r\n\t\t\t\tif ( (data >>> length) != 0) {\r\n\t\t\t\t\tthrow 'length over';\r\n\t\t\t\t}\r\n\r\n\t\t\t\twhile (_bitLength + length >= 8) {\r\n\t\t\t\t\t_out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\r\n\t\t\t\t\tlength -= (8 - _bitLength);\r\n\t\t\t\t\tdata >>>= (8 - _bitLength);\r\n\t\t\t\t\t_bitBuffer = 0;\r\n\t\t\t\t\t_bitLength = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_bitBuffer = (data << _bitLength) | _bitBuffer;\r\n\t\t\t\t_bitLength = _bitLength + length;\r\n\t\t\t};\r\n\r\n\t\t\t_this.flush = function() {\r\n\t\t\t\tif (_bitLength > 0) {\r\n\t\t\t\t\t_out.writeByte(_bitBuffer);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\treturn _this;\r\n\t\t};\r\n\r\n\t\tvar getLZWRaster = function(lzwMinCodeSize) {\r\n\r\n\t\t\tvar clearCode = 1 << lzwMinCodeSize;\r\n\t\t\tvar endCode = (1 << lzwMinCodeSize) + 1;\r\n\t\t\tvar bitLength = lzwMinCodeSize + 1;\r\n\r\n\t\t\t// Setup LZWTable\r\n\t\t\tvar table = lzwTable();\r\n\r\n\t\t\tfor (var i = 0; i < clearCode; i += 1) {\r\n\t\t\t\ttable.add(String.fromCharCode(i) );\r\n\t\t\t}\r\n\t\t\ttable.add(String.fromCharCode(clearCode) );\r\n\t\t\ttable.add(String.fromCharCode(endCode) );\r\n\r\n\t\t\tvar byteOut = byteArrayOutputStream();\r\n\t\t\tvar bitOut = bitOutputStream(byteOut);\r\n\r\n\t\t\t// clear code\r\n\t\t\tbitOut.write(clearCode, bitLength);\r\n\r\n\t\t\tvar dataIndex = 0;\r\n\r\n\t\t\tvar s = String.fromCharCode(_data[dataIndex]);\r\n\t\t\tdataIndex += 1;\r\n\r\n\t\t\twhile (dataIndex < _data.length) {\r\n\r\n\t\t\t\tvar c = String.fromCharCode(_data[dataIndex]);\r\n\t\t\t\tdataIndex += 1;\r\n\r\n\t\t\t\tif (table.contains(s + c) ) {\r\n\r\n\t\t\t\t\ts = s + c;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tbitOut.write(table.indexOf(s), bitLength);\r\n\r\n\t\t\t\t\tif (table.size() < 0xfff) {\r\n\r\n\t\t\t\t\t\tif (table.size() == (1 << bitLength) ) {\r\n\t\t\t\t\t\t\tbitLength += 1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttable.add(s + c);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ts = c;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tbitOut.write(table.indexOf(s), bitLength);\r\n\r\n\t\t\t// end code\r\n\t\t\tbitOut.write(endCode, bitLength);\r\n\r\n\t\t\tbitOut.flush();\r\n\r\n\t\t\treturn byteOut.toByteArray();\r\n\t\t};\r\n\r\n\t\tvar lzwTable = function() {\r\n\r\n\t\t\tvar _map = {};\r\n\t\t\tvar _size = 0;\r\n\r\n\t\t\tvar _this = {};\r\n\r\n\t\t\t_this.add = function(key) {\r\n\t\t\t\tif (_this.contains(key) ) {\r\n\t\t\t\t\tthrow 'dup key:' + key;\r\n\t\t\t\t}\r\n\t\t\t\t_map[key] = _size;\r\n\t\t\t\t_size += 1;\r\n\t\t\t};\r\n\r\n\t\t\t_this.size = function() {\r\n\t\t\t\treturn _size;\r\n\t\t\t};\r\n\r\n\t\t\t_this.indexOf = function(key) {\r\n\t\t\t\treturn _map[key];\r\n\t\t\t};\r\n\r\n\t\t\t_this.contains = function(key) {\r\n\t\t\t\treturn typeof _map[key] != 'undefined';\r\n\t\t\t};\r\n\r\n\t\t\treturn _this;\r\n\t\t};\r\n\r\n\t\treturn _this;\r\n\t};\r\n\r\n\tvar createDataURL = function(width, height, getPixel) {\r\n\t\tvar gif = gifImage(width, height);\r\n\t\tfor (var y = 0; y < height; y += 1) {\r\n\t\t\tfor (var x = 0; x < width; x += 1) {\r\n\t\t\t\tgif.setPixel(x, y, getPixel(x, y) );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar b = byteArrayOutputStream();\r\n\t\tgif.write(b);\r\n\r\n\t\tvar base64 = base64EncodeOutputStream();\r\n\t\tvar bytes = b.toByteArray();\r\n\t\tfor (var i = 0; i < bytes.length; i += 1) {\r\n\t\t\tbase64.writeByte(bytes[i]);\r\n\t\t}\r\n\t\tbase64.flush();\r\n\r\n\t\treturn 'data:image/gif;base64,' + base64;\r\n\t};\r\n\r\n\t//---------------------------------------------------------------------\r\n\t// returns qrcode function.\r\n\r\n\treturn qrcode;\r\n}();\r\n\r\n// multibyte support\r\n!function() {\r\n\r\n\tqrcode.stringToBytesFuncs['UTF-8'] = function(s) {\r\n\t\t// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\r\n\t\tfunction toUTF8Array(str) {\r\n\t\t\tvar utf8 = [];\r\n\t\t\tfor (var i=0; i < str.length; i++) {\r\n\t\t\t\tvar charcode = str.charCodeAt(i);\r\n\t\t\t\tif (charcode < 0x80) utf8.push(charcode);\r\n\t\t\t\telse if (charcode < 0x800) {\r\n\t\t\t\t\tutf8.push(0xc0 | (charcode >> 6),\r\n\t\t\t\t\t\t0x80 | (charcode & 0x3f));\r\n\t\t\t\t}\r\n\t\t\t\telse if (charcode < 0xd800 || charcode >= 0xe000) {\r\n\t\t\t\t\tutf8.push(0xe0 | (charcode >> 12),\r\n\t\t\t\t\t\t0x80 | ((charcode>>6) & 0x3f),\r\n\t\t\t\t\t\t0x80 | (charcode & 0x3f));\r\n\t\t\t\t}\r\n\t\t\t\t// surrogate pair\r\n\t\t\t\telse {\r\n\t\t\t\t\ti++;\r\n\t\t\t\t\t// UTF-16 encodes 0x10000-0x10FFFF by\r\n\t\t\t\t\t// subtracting 0x10000 and splitting the\r\n\t\t\t\t\t// 20 bits of 0x0-0xFFFFF into two halves\r\n\t\t\t\t\tcharcode = 0x10000 + (((charcode & 0x3ff)<<10)\r\n\t\t\t\t\t\t| (str.charCodeAt(i) & 0x3ff));\r\n\t\t\t\t\tutf8.push(0xf0 | (charcode >>18),\r\n\t\t\t\t\t\t0x80 | ((charcode>>12) & 0x3f),\r\n\t\t\t\t\t\t0x80 | ((charcode>>6) & 0x3f),\r\n\t\t\t\t\t\t0x80 | (charcode & 0x3f));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn utf8;\r\n\t\t}\r\n\t\treturn toUTF8Array(s);\r\n\t};\r\n\r\n}();\r\n\r\n","export function createBatches(items, max_items_per_batch) {\r\n\r\n    let batches = [],\r\n        currentBatch = [],\r\n        i;\r\n\r\n    for(i = 0; i < items.length; i++) {\r\n        if (currentBatch.length === max_items_per_batch) {\r\n            batches.push(currentBatch);\r\n            currentBatch = [];\r\n        }\r\n\r\n        currentBatch.push(items[i]);\r\n    }\r\n\r\n    batches.push(currentBatch);\r\n\r\n    return batches;\r\n}","function removeElement(array, elm) {\r\n    const index = array.indexOf(elm);\r\n    if (index > -1) {\r\n        array.splice(index, 1);\r\n    }\r\n}\r\n\r\nfunction mergeObjects(defaults, options) {\r\n    if (options === null || defaults === null) {\r\n        return defaults;\r\n    }\r\n\r\n    for (let key in options) {\r\n        defaults[key] = options[key];\r\n    }\r\n\r\n    return defaults;\r\n}\r\n\r\n/**\r\n * returns the width of an element.\r\n * @param el HTMLElement\r\n * @return {number}\r\n */\r\nfunction  getElementWidth(el) {\r\n    if (!el) return 0;\r\n    return parseFloat(getComputedStyle(el, null).width.replace(\"px\", \"\"));\r\n}\r\n\r\n/**\r\n * returns the height of an element.\r\n * @param el HTMLElement\r\n * @return {number}\r\n */\r\nfunction  getElementHeight(el) {\r\n    if (!el) return 0;\r\n    return parseFloat(getComputedStyle(el, null).height.replace(\"px\", \"\"));\r\n}\r\n\r\n/**\r\n * calculates the border of the given elements with the given properties\r\n */\r\nfunction calcBorderWidth(elements, properties) {\r\n    let sum = 0;\r\n\r\n    for (let i=0; i<elements.length; i++) {\r\n        let cSSStyleDeclaration = getComputedStyle(elements[i], null);\r\n        for (let j=0; j<properties.length; j++) {\r\n            let value = parseFloat( cSSStyleDeclaration[properties[j]] );\r\n            if (!isNaN(value)) {\r\n                sum += value;\r\n            }\r\n        }\r\n    }\r\n\r\n    return sum;\r\n}\r\n\r\nfunction addUrlHashParameter(initialUrl, key, value) {\r\n    let url = removeUrlHashParameter(initialUrl, key),\r\n        fragments = url.split('#'),\r\n        urlpart = fragments[0],\r\n        hashparts = fragments.length>1? fragments[1].split(\"&\") : [],\r\n        result;\r\n\r\n    hashparts.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(value));\r\n\r\n    if (hashparts.length>0) {\r\n        result = urlpart + '#' + hashparts.join('&');\r\n    } else {\r\n        result = urlpart;\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction getUrlHashParameterValue(url, key) {\r\n    let fragments=url.split('#'),\r\n        hashparts = fragments.length>1? fragments[1].split(\"&\") : [],\r\n        result;\r\n\r\n    if (hashparts.length>0)\r\n    {\r\n        let prefix= encodeURIComponent(key)+'=';\r\n\r\n        for (let i=0; i<hashparts.length; i++) {\r\n            if (hashparts[i].indexOf(prefix, 0) === 0) {\r\n                result = hashparts[i].replace(prefix, '');\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction removeUrlHashParameter(url, key) {\r\n    let fragments=url.split('#'),\r\n        urlpart= fragments[0],\r\n        hashparts = fragments.length>1? fragments[1].split(\"&\") : [],\r\n        result;\r\n\r\n    if (hashparts.length>0)\r\n    {\r\n        let prefix= encodeURIComponent(key)+'=',\r\n            newHashParts = [];\r\n\r\n        for (let i=0; i<hashparts.length; i++) {\r\n            if (hashparts[i].indexOf(prefix, 0) === 0) {\r\n\r\n            } else {\r\n                newHashParts.push(hashparts[i]);\r\n            }\r\n        }\r\n        hashparts = newHashParts;\r\n    }\r\n\r\n    if (hashparts.length>0) {\r\n        result = urlpart + '#' + hashparts.join('&');\r\n    } else {\r\n        result = urlpart;\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction addUrlParameter(initialUrl, key, value) {\r\n    let url = removeUrlParameter(initialUrl, key),\r\n        fragments = url.split('#'),\r\n        urlparts= fragments[0].split('?'),\r\n        result;\r\n\r\n    if (urlparts.length === 1) {\r\n        result = urlparts[0] + '?' + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\r\n    } else {\r\n        result = urlparts.join('?') + '&' + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\r\n    }\r\n\r\n    if (fragments.length>1) {\r\n        return result + '#' + fragments[1];\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction removeUrlParameter(url, key) {\r\n    let fragments=url.split('#'),\r\n        urlparts= fragments[0].split('?'),\r\n        result;\r\n\r\n    if (urlparts.length>1)\r\n    {\r\n        let prefix= encodeURIComponent(key)+'=';\r\n        let pars= urlparts[1].split('&');\r\n\r\n        for (let i=0; i<pars.length; i++) {\r\n            if (pars[i].indexOf(prefix, 0) === 0) {\r\n                pars.splice(i, 1);\r\n            }\r\n        }\r\n        if (pars.length > 0) {\r\n            result = urlparts[0] + '?' + pars.join('&');\r\n        }\r\n        else {\r\n            result = urlparts[0];\r\n        }\r\n    }\r\n    else {\r\n        result =  urlparts[0];\r\n    }\r\n\r\n    if (fragments.length>1) {\r\n        return result + '#' + fragments[1];\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction setCSSStyle (nodes, style, value) {\r\n    for (let i=0; i<nodes.length; i++) {\r\n        nodes[i].style[style] = value;\r\n    }\r\n}\r\n\r\nfunction getOuterHeight(el) {\r\n    let height = el.offsetHeight;\r\n    let style = getComputedStyle(el);\r\n\r\n    height += parseInt(style.marginTop) + parseInt(style.marginBottom);\r\n    return height;\r\n}\r\n\r\n/**\r\n *\r\n * @param node HTMLElement\r\n * @return HTMLElement[]\r\n */\r\nfunction getParents(node) {\r\n    let parents = [];\r\n\r\n    if (node === null) {\r\n        return parents;\r\n    }\r\n\r\n    while(node.parentElement != null) {\r\n        let parent = node.parentElement;\r\n        parents.push(parent);\r\n        node = parent;\r\n    }\r\n    return parents;\r\n}\r\n\r\n/**\r\n * Search the parent matching a selector and return it.\r\n *\r\n * @param node HTMLElement\r\n * @param query string\r\n */\r\nfunction getParent(node, query) {\r\n    let nodes = getParents(node);\r\n    for (let i = 0; i < nodes.length; i++) {\r\n        if (nodes[i].matches(query)) {\r\n            return nodes[i];\r\n        }\r\n    }\r\n    return null;\r\n}\r\n\r\n/**\r\n * set the content as innerHTML and executes the includes Script-Tags\r\n *\r\n * @param htmlElement HTMLElement\r\n * @param newContent string\r\n */\r\nfunction insertAndExecute(htmlElement, newContent) {\r\n    htmlElement.innerHTML = newContent;\r\n    //we need a clone of that array.\r\n    let scripts = Array.prototype.slice.call(htmlElement.getElementsByTagName(\"script\"));\r\n    for (let i = 0; i < scripts.length; i++) {\r\n        if (scripts[i].src !== \"\") {\r\n            let tag = document.createElement(\"script\");\r\n            tag.src = scripts[i].src;\r\n            document.getElementsByTagName(\"head\")[0].appendChild(tag);\r\n        }\r\n        else {\r\n            try {\r\n                eval(scripts[i].innerHTML);\r\n            } catch (err) {\r\n                console.error(err);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * Loops over an array and executes the callback with it.\r\n *\r\n * @param elements array\r\n * @param callback Function\r\n * @return int number of executions of the callback method.\r\n */\r\nfunction forEach(elements, callback) {\r\n    if (!elements) {\r\n        return 0;\r\n    }\r\n    for(let i=0; i<elements.length; i++) {\r\n        callback(elements[i], i);\r\n    }\r\n\r\n    return elements.length\r\n}\r\n/*!\r\n * Serialize all form data into a query string\r\n * (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com\r\n * Modified to use any HTML element instead of a form element.\r\n * @param  {Node}   form The form container to serialize\r\n * @return {String}      The serialized form data\r\n */\r\nvar serializeForm = function (form) {\r\n\r\n    // Setup our serialized data\r\n    var serialized = [];\r\n\r\n    let inputElements = form.querySelectorAll('input,select,textarea');\r\n    // Loop through each field in the form\r\n    for (var i = 0; i < inputElements.length; i++) {\r\n\r\n        var field = inputElements[i];\r\n\r\n        // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields\r\n        if (!field.name || field.disabled || field.type === 'file' || field.type === 'reset' || field.type === 'submit' || field.type === 'button') continue;\r\n\r\n        // If a multi-select, get all selections\r\n        if (field.type === 'select-multiple') {\r\n            for (var n = 0; n < field.options.length; n++) {\r\n                if (!field.options[n].selected) continue;\r\n                serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.options[n].value));\r\n            }\r\n        }\r\n\r\n        // Convert field data to a query string\r\n        else if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {\r\n            serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.value));\r\n        }\r\n    }\r\n\r\n    return serialized.join('&');\r\n\r\n};\r\n\r\nexport { getOuterHeight, removeElement, addUrlHashParameter, calcBorderWidth, mergeObjects, getElementWidth, getElementHeight, addUrlParameter, getUrlHashParameterValue, removeUrlHashParameter, removeUrlParameter, setCSSStyle, getParents, serializeForm, getParent, insertAndExecute, forEach };\r\n","/**\r\n * Prefix for the data attribute if we want to identify it as a localization key/value pair\r\n * @type {string}\r\n */\r\nconst dataI18n = 'data-i18n-';\r\n\r\n/**\r\n * Creates a class which can translate things.\r\n *\r\n * @param hmltElement\r\n * @returns {{t: (function(*): *)}}\r\n */\r\nexport let mapLocalizationData = function(hmltElement) {\r\n\r\n    let _elements = [];\r\n\r\n    for (var i = 0; i < hmltElement.attributes.length; i++) {\r\n        var attrib = hmltElement.attributes[i];\r\n        if (attrib.name.indexOf(dataI18n) === 0) {\r\n            _elements[attrib.name.replace(dataI18n,'').toUpperCase()] = attrib.value;\r\n        }\r\n    }\r\n\r\n    return {\r\n        /**\r\n         * Performs a translation using the given localization key\r\n         *\r\n         * @param localizationKey\r\n         * @returns {*}\r\n         */\r\n        t: (localizationKey) => {\r\n            let lookup = localizationKey.toUpperCase();\r\n            return _elements[lookup] ? _elements[lookup] : localizationKey;\r\n        }\r\n    };\r\n};\r\n\r\n","import URLHelper from \"./URLHelper\";\r\n\r\nconst LOADING_MATCHER = 'gp.svg';\r\nconst MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE = 'data-eg-gp-processing';\r\n\r\nexport default class GooglePhotosProcessor {\r\n\r\n\r\n\r\n    constructor() {\r\n\r\n        this.albumUrl = \"\";\r\n        this.albumsUrl = \"\";\r\n\r\n        // noinspection JSUnresolvedVariable\r\n        if (window.EventGalleryGooglePhotosConfiguration) {\r\n            this.albumUrl = window.EventGalleryGooglePhotosConfiguration.albumUrl;\r\n            this.albumsUrl = window.EventGalleryGooglePhotosConfiguration.albumsUrl;\r\n        }\r\n\r\n        this.imageAddedCallback = (e) => this.processImages(e);\r\n        document.addEventListener(\"eventgallery-images-added\", this.imageAddedCallback, true);\r\n    };\r\n\r\n    destroy() {\r\n        document.removeEventListener(\"eventgallery-images-added\", this.imageAddedCallback, true);\r\n    }\r\n\r\n    // noinspection JSUnusedGlobalSymbols\r\n    processImages(e) {\r\n        let doReloadLightbox = true;\r\n        if (e?.detail?.isOverlay) {\r\n            doReloadLightbox = false;\r\n        }\r\n        let albums = this._groupByAlbum(this._collectHTMLElements());\r\n        this._markImagesAsInProgress(albums);\r\n        this._getMainImageDataFromServer(albums, doReloadLightbox);\r\n    }\r\n\r\n    // noinspection JSMethodCanBeStatic\r\n    /**\r\n     * Grabs IMG tag items from the DOM for Google Photos image placeholder.\r\n     *\r\n     * @returns <Element>[]\r\n     * @private\r\n     */\r\n     _collectHTMLElements() {\r\n        let htmlCollection = document.getElementsByTagName('IMG');\r\n\r\n        let foundImageHTMLElements = /** @type {HTMLElement} */[...htmlCollection];\r\n\r\n        let result = foundImageHTMLElements.filter(img => {\r\n            let imageSrcSet = img.getAttribute('srcset');\r\n            let dataSrc = img.getAttribute('data-src');\r\n            let src = img.src;\r\n\r\n            if (img.getAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE) === '1') {\r\n                return false;\r\n            }\r\n\r\n            return (imageSrcSet && imageSrcSet.indexOf(LOADING_MATCHER)>0)\r\n                || (dataSrc && dataSrc.indexOf(LOADING_MATCHER)>0)\r\n                || (src && src.indexOf(LOADING_MATCHER)>0);\r\n        });\r\n\r\n        htmlCollection = document.getElementsByTagName('A');\r\n        let foundLinkHTMLElements = /** @type {HTMLElement} */[...htmlCollection];\r\n        result = result.concat(foundLinkHTMLElements.filter(a => {\r\n            let dataSrc = a.getAttribute('data-src');\r\n            let rel = a.getAttribute('rel');\r\n            let href = a.getAttribute('href');\r\n\r\n            if (a.getAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE) === '1') {\r\n                return false;\r\n            }\r\n            return (href && href.indexOf(LOADING_MATCHER)>0)\r\n                || (dataSrc && dataSrc.indexOf(LOADING_MATCHER)>0)\r\n                || (rel && rel.indexOf(LOADING_MATCHER)>0);\r\n        }));\r\n\r\n        return result;\r\n\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param albums {Map<any, any>}\r\n     * @private\r\n     */\r\n    _markImagesAsInProgress(albums) {\r\n        for (let [foldername, album] of albums) {\r\n            /**\r\n             * @var ParsedHTMLElement parsedHTMLElement\r\n             */\r\n            album.forEach(parsedHTMLElement => {\r\n              parsedHTMLElement.getHTMLElement().setAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE, 1);\r\n            })\r\n        }\r\n    }\r\n\r\n    /**\r\n     * sorts all found images into a map: key=folder, value=array of\r\n     *\r\n     * @param htmlElements\r\n     * @returns {Map<any, any>}\r\n     * @private\r\n     */\r\n    _groupByAlbum(htmlElements) {\r\n        let albums = new Map();\r\n        htmlElements.forEach((imageHTMLElement) => {\r\n           let parsedHTMLElement = this._parseHTMLElement(imageHTMLElement);\r\n            parsedHTMLElement.updateParameters();\r\n           let folder = parsedHTMLElement.parameters.get('folder');\r\n\r\n           if (!albums.get(folder)) {\r\n             albums.set(folder, []);\r\n           }\r\n\r\n           albums.get(folder).push(parsedHTMLElement);\r\n        });\r\n\r\n        return albums;\r\n    }\r\n\r\n    // noinspection JSMethodCanBeStatic\r\n    /**\r\n     *\r\n     * @param htmlElement\r\n     * @returns {ParsedHTMLElement}\r\n     * @private\r\n     */\r\n    _parseHTMLElement(htmlElement) {\r\n        if (htmlElement.tagName === 'IMG') {\r\n            return new ParsedImageHTMLElement(htmlElement);\r\n        }\r\n        return new ParsedLinkHTMLElement(htmlElement);\r\n    }\r\n\r\n\r\n    /**\r\n     * starts several requests to the server to determine\r\n     *\r\n     * @param albums\r\n     * @private\r\n     */\r\n    _getAlbumDataFromServer(albums, doReloadLightbox) {\r\n        for (let [foldername, album] of albums) {\r\n            this._doAlbumRequest(foldername, album, doReloadLightbox);\r\n        }\r\n    }\r\n\r\n    _doAlbumRequest(foldername, album, doReloadLightbox) {\r\n        if (!this.albumUrl || !foldername) return;\r\n        fetch(this.albumUrl + '&folder=' + foldername)\r\n            .then(response => response.json())\r\n            .then(data => this._processAlbumResult(album, data, doReloadLightbox));\r\n    }\r\n\r\n    _processAlbumResult(album, data, doReloadLightbox) {\r\n        this._replaceImages(album, data, doReloadLightbox);\r\n    }\r\n\r\n    _getMainImageDataFromServer(albums, doReloadLightbox) {\r\n        let albumsWithMainImagesOnly = this._filterForAlbumsWithMainImageOnly(albums);\r\n\r\n        if (albumsWithMainImagesOnly.size > 0) {\r\n            this._doAlbumsRequest(albumsWithMainImagesOnly, albums, doReloadLightbox);\r\n            for (let [foldername, album] of albumsWithMainImagesOnly) {\r\n                albums.delete(foldername);\r\n            }\r\n        }\r\n\r\n        this._getAlbumDataFromServer(albums, doReloadLightbox);\r\n    }\r\n\r\n    _doAlbumsRequest(albumsWithMainImagesOnly, albums, doReloadLightbox) {\r\n        if (!this.albumsUrl) return;\r\n        fetch(this.albumsUrl)\r\n            .then(response => response.json())\r\n            .then(data => this._processAlbumsResult(albumsWithMainImagesOnly, albums, data, doReloadLightbox));\r\n    }\r\n\r\n    _processAlbumsResult(albumsWithMainImagesOnly, albums, data, doReloadLightbox) {\r\n        for (let [key, album] of albumsWithMainImagesOnly) {\r\n            this._replaceImages(album, data[key], doReloadLightbox);\r\n        }\r\n        this._getAlbumDataFromServer(albums, doReloadLightbox);\r\n    }\r\n\r\n    // noinspection JSMethodCanBeStatic\r\n    _filterForAlbumsWithMainImageOnly(albums) {\r\n        let newAlbums = new Map();\r\n        for(let [key, album] of albums) {\r\n            let mainImages = album.filter(image => image.isMainImage());\r\n\r\n            if (mainImages.length> 0 && mainImages.length === album.length) {\r\n                newAlbums.set(key, album);\r\n            }\r\n        }\r\n        return newAlbums;\r\n    }\r\n\r\n    _replaceImages(album, serverResult, doReloadLightbox) {\r\n        if (album === undefined || serverResult === undefined) {\r\n            return;\r\n        }\r\n\r\n        album.forEach(parsedImageHTMLElement => {\r\n            let imageUrl = serverResult[parsedImageHTMLElement.getFile()];\r\n            if (imageUrl === undefined) {\r\n                return false;\r\n            }\r\n\r\n            parsedImageHTMLElement.updateParameters();\r\n            parsedImageHTMLElement.replaceElementLinks(imageUrl);\r\n            parsedImageHTMLElement.getHTMLElement().setAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE, 0);\r\n\r\n        });\r\n\r\n        if (doReloadLightbox && window.Eventgallery?.lightbox) {\r\n            if (Eventgallery.lightbox.isOpen()) {\r\n                let link = Eventgallery.lightbox.getCurrentSlide().thumbEl;\r\n                Eventgallery.lightbox._gallery.close();\r\n                setTimeout(()=>link.click(),500);\r\n            }\r\n        }\r\n    }\r\n};\r\n\r\nclass ParsedHTMLElement {\r\n    constructor(htmlElement) {\r\n        this.htmlElement = htmlElement;\r\n        this.parameters = null;\r\n        this.attributeNames = new Set();\r\n    }\r\n\r\n    updateParametersWithUrl(url) {\r\n        let parameterString = url.substring(url.indexOf('#')+1);\r\n        this.parameters = URLHelper.parseURLParameter(parameterString);\r\n    }\r\n\r\n    updateParameters() {\r\n        for(let n of this.attributeNames) {\r\n            let url = this.getHTMLElement().getAttribute(n);\r\n            if (url && url.indexOf(LOADING_MATCHER)>0) {\r\n                this.updateParametersWithUrl(url);\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    replaceElementLinks(imageUrl) {\r\n\r\n        for(let n of this.attributeNames) {\r\n            let url = this.getHTMLElement().getAttribute(n);\r\n            if (url && url.indexOf(LOADING_MATCHER)>0) {\r\n                this.getHTMLElement().setAttribute(n, this.getImageUrl(imageUrl, this.getWidth(url)));\r\n            }\r\n        }\r\n    }\r\n\r\n    getHTMLElement() {\r\n        return this.htmlElement;\r\n    }\r\n\r\n    getFolder() {\r\n        return this.parameters.get('folder');\r\n    }\r\n\r\n    getFile() {\r\n        return this.parameters.get('file');\r\n    }\r\n\r\n\r\n    getWidth(url) {\r\n        return URLHelper.parseURLParameter(url).get('width');\r\n    }\r\n\r\n    getImageUrl(imageUrl, width) {\r\n        return imageUrl + '=w' + width;\r\n    }\r\n\r\n    isMainImage() {\r\n        return this.parameters.get('m') === '1';\r\n    }\r\n}\r\n\r\nclass ParsedLinkHTMLElement extends ParsedHTMLElement {\r\n\r\n    constructor(htmlElement) {\r\n        super(htmlElement);\r\n        this.attributeNames = new Set(['href', 'data-src', 'rel']);\r\n    }\r\n\r\n}\r\n\r\nclass ParsedImageHTMLElement extends ParsedHTMLElement{\r\n\r\n    constructor(htmlElement) {\r\n        super(htmlElement);\r\n        this.attributeNames = new Set(['src', 'data-src', 'srcset']);\r\n    }\r\n}\r\n","import Polyfill from \"./Polyfill\";\r\nimport {insertAndExecute} from \"../../common/js/Helpers\";\r\n\r\n\r\n/**\r\n * this class is the basic modal of Event Gallery.\r\n */\r\nexport default class Overlay {\r\n\r\n    /**\r\n     * @param parent HTML element to append the modal to.\r\n     */\r\n    constructor(parent = document.body) {\r\n        this.isOpen = false;\r\n        this.myDiv = null;\r\n        this.background = null;\r\n        this.parent = parent\r\n        this.onClosed = undefined;\r\n        this.onLoad = undefined;\r\n        this.repositionTimer = null;\r\n        this.windowWidth = 0;\r\n        this.onResizeOverlay = () => {\r\n            this._setRositionTimer(false);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * opens an overlay. The content can be a url or content.\r\n     * Url start with http or /\r\n     *\r\n     * @param dataUrl\r\n     */\r\n    openOverlay(dataUrl) {\r\n\r\n        this.isOpen = true;\r\n        this.myDiv = document.createElement('div');\r\n        this.myDiv.id = 'eventgallery-overlay';\r\n        this.myDiv.innerHTML = '<i class=\"egfa egfa-2x egfa-cog egfa-spin\"></i>';\r\n        this.myDiv.style.opacity = '1 !important';\r\n        this.myDiv.style.position = 'absolute';\r\n        this.myDiv.style.maxWidth = '100%';\r\n\r\n        this.background = document.createElement('div');\r\n        this.background.id = 'eventgallery-overlay-background';\r\n        this.background.addEventListener('click', () => {\r\n            this.closeOverlay()\r\n        });\r\n\r\n        this.parent.append(this.background);\r\n        this.parent.append(this.myDiv);\r\n\r\n        this.reposition(true);\r\n\r\n        if (dataUrl.startsWith('http') || dataUrl.startsWith('/')) {\r\n            Overlay._getRemoteData(dataUrl, (data) => {\r\n                this._addContent(data);\r\n            })\r\n        } else {\r\n            this._addContent(`<button class=\"btn-close-overlay eventgallery-close-overlay\"><i class=\"egfa egfa-2x egfa-times-circle\"></i></button>` + dataUrl);\r\n        }\r\n\r\n        window.addEventListener('resize', this.onResizeOverlay);\r\n    }\r\n\r\n    /**\r\n     * triggers a timeout for the repositioning. This will avoid too much flickering.\r\n     *\r\n     * @param force\r\n     * @private\r\n     */\r\n    _setRositionTimer(force) {\r\n        if (this.repositionTimer) {\r\n            clearTimeout(this.repositionTimer)\r\n        }\r\n        this.repositionTimer = setTimeout(() => this.reposition(force), 500);\r\n    }\r\n\r\n    static _getRemoteData(url, callback) {\r\n        fetch(url)\r\n            .then(response => response.text())\r\n            .then(data => callback(data));\r\n    }\r\n\r\n    /**\r\n     * moves the given content into the content overlay. Executes the onload method when finished.\r\n     *\r\n     * @param content\r\n     * @private\r\n     */\r\n    _addContent(content) {\r\n        insertAndExecute(this.myDiv, content);\r\n\r\n        let elements = this.myDiv.getElementsByClassName('eventgallery-close-overlay');\r\n        for(let i=0; i<elements.length;i++) {\r\n            elements[i].addEventListener('click', (e) => {\r\n                e.preventDefault();\r\n                this.closeOverlay()\r\n            });\r\n        }\r\n\r\n        this.reposition(true);\r\n\r\n        if (this.onLoad !== undefined) {\r\n            this.onLoad();\r\n        }\r\n\r\n        document.dispatchEvent(Polyfill.createNewEvent('eventgallery-images-added', {isOverlay: true}));\r\n    }\r\n\r\n    /**\r\n     * Closes the overlay and fires the onclose method if defined.\r\n     */\r\n    closeOverlay() {\r\n        this.isOpen = false;\r\n\r\n        window.removeEventListener('resize', this.onResizeOverlay);\r\n\r\n        Polyfill.removeHtmlElementNode(this.myDiv);\r\n        Polyfill.removeHtmlElementNode(this.background);\r\n        if (this.onClosed !== undefined) {\r\n            this.onClosed();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Move the overlay to a good position.\r\n     *\r\n     * @param force defines if we force the reposition. If set to false, we do it only in case the width of the window changed.\r\n     */\r\n    reposition(force) {\r\n\r\n        if (this.repositionTimer !== null) {\r\n            clearTimeout(this.repositionTimer);\r\n        }\r\n\r\n        let maxWidth = document.body.clientWidth;\r\n\r\n        if (!force) {\r\n            if (this.windowWidth === maxWidth) {\r\n                return;\r\n            }\r\n        }\r\n\r\n        this.windowWidth = maxWidth;\r\n\r\n        this.myDiv.style.opacity = 0;\r\n        this.myDiv.style.top = 0;\r\n        this.myDiv.style.left = 0;\r\n\r\n\r\n        let maxHeight = window.innerHeight,\r\n            width = this.myDiv.offsetWidth,\r\n            height = this.myDiv.offsetHeight,\r\n            scrollTop = 0,\r\n            left = 0;\r\n\r\n        // this allows the overlay to support two different containers:\r\n        // 1. the body (which is the default)\r\n        // 2. a full page html element which is positioned absolute\r\n        // we can make this more complicated later\r\n\r\n        if (this.parent == document.body) {\r\n            scrollTop = window.pageYOffset\r\n        }\r\n\r\n        let top = scrollTop;\r\n\r\n        if (maxWidth - width > 0) {\r\n            left = (maxWidth - width) / 2;\r\n        }\r\n\r\n        if (maxHeight - height > 0) {\r\n            top = scrollTop + (maxHeight - height) / 2;\r\n        }\r\n\r\n        this.myDiv.style.top = top + 'px';\r\n        // there is a margin of 3px in overlay.less => we should not set this more to the left.\r\n        if (left > 3) {\r\n            this.myDiv.style.left = left + 'px';\r\n        }\r\n\r\n        this.myDiv.style.opacity = 1;\r\n    };\r\n}\r\n","import PhotoSwipeGallery from \"./photoswipe/PhotoSwipeGallery\";\r\n\r\n/**\r\n * Builds a slide show on top of PhotoSwipe.\r\n */\r\nexport default class SlideShow {\r\n\r\n    /**\r\n     *\r\n     * @param photoSwipeGallery PhotoSwipe\r\n     */\r\n    constructor(photoSwipe) {\r\n        if (!window.EventGalleryLightboxConfiguration) {\r\n            return;\r\n        }\r\n\r\n        if (!window.EventGalleryLightboxConfiguration.doUseSlideshow) {\r\n            return;\r\n        }\r\n\r\n        this._photoSwipe = photoSwipe;\r\n        this._SlideShow_Running = false;\r\n        this._currentTimer = null;\r\n        this._SlideShow_Delay = window?.EventGalleryLightboxConfiguration?.slideshowSpeed || 2000 /*ms*/;\r\n        this._SlideShow_Button = null;\r\n        this._photoSwipe.ui.registerElement({\r\n            name: 'playpause-button',\r\n            order: 9,\r\n            isButton: true,\r\n            html: '',\r\n            onInit: (el) => {\r\n                this._SlideShow_Button = el;\r\n                this._adjustNavigation();\r\n            },\r\n            onClick: (event, el) => {\r\n                //console.log('slideshow click')\r\n                return this.toggleSlideShowState();\r\n            }\r\n        });\r\n\r\n        this._photoSwipe.on('change', () => {\r\n            this._planNextSwitch(false);\r\n        });\r\n\r\n        this._photoSwipe.on('destroy', () => this._photoSwipeGallery=null);\r\n        this._photoSwipe.on('keydown',     (e) => {if (e.originalEvent.target !== this._SlideShow_Button) this._stopSlideshow()} )\r\n        this._photoSwipe.on('pointerDown', (e) => {if (e.originalEvent.target !== this._SlideShow_Button) this._stopSlideshow()} )\r\n\r\n        if (window.EventGalleryLightboxConfiguration.doUseAutoplay) {\r\n            this.toggleSlideShowState();\r\n        }\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param delay int\r\n     */\r\n    setDelay(delay) {\r\n        this._SlideShow_Delay = delay;\r\n    }\r\n\r\n    /**\r\n     * switches the slide show on/off depending on the current state\r\n     */\r\n    toggleSlideShowState() {\r\n\r\n        if (this._SlideShow_Running) {\r\n            this._stopSlideshow();\r\n        } else {\r\n            this._startSlideshow();\r\n        }\r\n    }\r\n\r\n    _stopSlideshow() {\r\n        this._SlideShow_Running = false;\r\n        this._adjustNavigation();\r\n    }\r\n\r\n    _startSlideshow() {\r\n        this._SlideShow_Running = true;\r\n        this._planNextSwitch(true);\r\n        this._adjustNavigation();\r\n    }\r\n\r\n    /**\r\n     * make sure the navigation displays the current slide show state.\r\n     */\r\n    _adjustNavigation() {\r\n        if (this._SlideShow_Button) {\r\n            this._SlideShow_Button.classList.remove(this._SlideShow_Running ? \"play\" : \"pause\");\r\n            this._SlideShow_Button.classList.add(this._SlideShow_Running ? \"pause\" : \"play\");\r\n            //this._SlideShow_Button.setAttribute('title', this._SlideShow_Running ? this._SlideShow_Button.getAttribute('data-title-pause') : this._SlideShow_Button.getAttribute('data-title-play'));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * create the timeout for the next switch.\r\n     *\r\n     * @param isForTheFirstSwitch Boolean changes the switch time so the first switch can be faster\r\n     */\r\n    _planNextSwitch(isForTheFirstSwitch)  {\r\n        clearTimeout(this._currentTimer);\r\n        this._currentTimer = setTimeout(() => this._nextSlide(), isForTheFirstSwitch ? this._SlideShow_Delay / 2.0 :this._SlideShow_Delay);\r\n    }\r\n\r\n    /**\r\n     * change to the next slide\r\n     */\r\n    _nextSlide() {\r\n        if (this._photoSwipe === null) {\r\n            return;\r\n        }\r\n\r\n        if (!this._SlideShow_Running) {\r\n            return;\r\n        }\r\n\r\n        this._photoSwipe.next();\r\n    }\r\n}\r\n","export default class URLHelper {\r\n\r\n    constructor() {\r\n    }\r\n\r\n    /**\r\n     * splits a URL parameter like foo=bar&1=2 into a parameter map\r\n     *\r\n     * @param urlParameterString\r\n     * @returns {Map<any, any>}\r\n     */\r\n    static parseURLParameter(urlParameterString) {\r\n        let pairs = urlParameterString.split('&');\r\n        let parameters = new Map();\r\n\r\n        pairs.forEach(pair => {\r\n            let splittedPair = pair.split('=');\r\n            if (splittedPair.length === 2) {\r\n                parameters.set(splittedPair[0], splittedPair[1]);\r\n            }\r\n        });\r\n\r\n        return parameters;\r\n    }\r\n\r\n    /**\r\n     * returns a map of the query string of an full url\r\n     *\r\n     * @param urlSring\r\n     * @returns {URLSearchParams}\r\n     */\r\n    static getParameters(urlSring) {\r\n        let parts = urlSring.split('?');\r\n        if (parts.length < 2) {\r\n            return new Map();\r\n        }\r\n        let queryParts = parts[1].split('#');\r\n        return URLHelper.parseURLParameter(queryParts[0]);\r\n    }\r\n\r\n    /**\r\n     * returns the url from strings like \"url ('foobar.jpg')\"\r\n     *\r\n     * @param urlString\r\n     * @returns {*}\r\n     */\r\n    static extractBackgroudUrl(urlString) {\r\n        return urlString.replace(/(url\\(|\\)|\"|')/g, '');\r\n    }\r\n};\r\n\r\n\r\n","export const defaultOptions = {\n  videoAttributes: { controls: '', playsinline: '', preload: 'auto' },\n  autoplay: true,\n\n  // prevent drag/swipe gesture over the bottom part of video\n  // set to 0 to disable\n  preventDragOffset: 40\n};\n","import { defaultOptions } from './default-options.js';\nimport VideoContentSetup from './video-content-setup.js';\n\nclass PhotoSwipeVideoPlugin {\n  constructor(lightbox, options) {\n    new VideoContentSetup(lightbox, {\n      ...defaultOptions,\n      ...options\n    });\n  }\n}\n\nexport default PhotoSwipeVideoPlugin;\n","/**\n * Check if slide has video content\n *\n * @param {Slide|Content} content Slide or Content object\n * @returns Boolean\n */\nfunction isVideoContent(content) {\n  return (content && content.data && content.data.type === 'video');\n}\n\nclass VideoContentSetup {\n  constructor(lightbox, options) {\n    this.options = options;\n\n    this.initLightboxEvents(lightbox);\n    lightbox.on('init', () => {\n      this.initPswpEvents(lightbox);\n    });\n  }\n\n  initLightboxEvents(lightbox) {\n    lightbox.on('contentLoad', this.onContentLoad.bind(this));\n    lightbox.on('contentDestroy', this.onContentDestroy.bind(this));\n    lightbox.on('contentActivate', this.onContentActivate.bind(this));\n    lightbox.on('contentDeactivate', this.onContentDeactivate.bind(this));\n    lightbox.on('contentAppend', this.onContentAppend.bind(this));\n    lightbox.on('contentResize', this.onContentResize.bind(this));\n\n    lightbox.addFilter('isKeepingPlaceholder', this.isKeepingPlaceholder.bind(this));\n    lightbox.addFilter('isContentZoomable', this.isContentZoomable.bind(this));\n    lightbox.addFilter('useContentPlaceholder', this.useContentPlaceholder.bind(this));\n\n    lightbox.addFilter('domItemData', (itemData, element, linkEl) => {\n      if (itemData.type === 'video' && linkEl) {\n        if (linkEl.dataset.pswpVideoSources) {\n          itemData.videoSources = JSON.parse(pswpVideoSources);\n        } else if (linkEl.dataset.pswpVideoSrc) {\n          itemData.videoSrc = linkEl.dataset.pswpVideoSrc;\n        } else {\n          itemData.videoSrc = linkEl.href;\n        }\n      }\n      return itemData;\n    });\n  }\n\n  initPswpEvents(pswp) {\n    // Prevent draggin when pointer is in bottom part of the video\n    // todo: add option for this\n    pswp.on('pointerDown', (e) => {\n      const slide = pswp.currSlide;\n      if (isVideoContent(slide) && this.options.preventDragOffset) {\n        const origEvent = e.originalEvent;\n        if (origEvent.type === 'pointerdown') {\n          const videoHeight = Math.ceil(slide.height * slide.currZoomLevel);\n          const verticalEnding = videoHeight + slide.bounds.center.y;\n          const pointerYPos = origEvent.pageY - pswp.offset.y;\n          if (pointerYPos > verticalEnding - this.options.preventDragOffset\n              && pointerYPos < verticalEnding) {\n            e.preventDefault();\n          }\n        }\n      }\n    });\n\n    // do not append video on nearby slides\n    pswp.on('appendHeavy', (e) => {\n      if (isVideoContent(e.slide) && !e.slide.isActive) {\n        e.preventDefault();\n      }\n    });\n\n    pswp.on('close', () => {\n      if (isVideoContent(pswp.currSlide.content)) {\n        // Switch from zoom to fade closing transition,\n        // as zoom transition is choppy for videos\n        if (!pswp.options.showHideAnimationType\n          || pswp.options.showHideAnimationType === 'zoom') {\n          pswp.options.showHideAnimationType = 'fade';\n        }\n\n        // pause video when closing\n        this.pauseVideo(pswp.currSlide.content);\n      }\n    });\n  }\n\n  onContentDestroy({ content }) {\n    if (isVideoContent(content)) {\n      if (content._videoPosterImg) {\n        content._videoPosterImg.onload =  content._videoPosterImg.onerror = null;\n        content._videoPosterImg = null;\n      }\n    }\n  }\n\n  onContentResize(e) {\n    if (isVideoContent(e.content)) {\n      e.preventDefault();\n\n      const width = e.width;\n      const height = e.height;\n      const content = e.content;\n\n      if (content.element) {\n        content.element.style.width = width + 'px';\n        content.element.style.height = height + 'px';\n      }\n\n      if (content.slide && content.slide.placeholder) {\n        // override placeholder size, so it more accurately matches the video\n        const placeholderElStyle = content.slide.placeholder.element.style;\n        placeholderElStyle.transform = 'none';\n        placeholderElStyle.width = width + 'px';\n        placeholderElStyle.height = height + 'px';\n      }\n    }\n  }\n\n\n  isKeepingPlaceholder(isZoomable, content) {\n    if (isVideoContent(content)) {\n      return false;\n    }\n    return isZoomable;\n  }\n\n  isContentZoomable(isZoomable, content) {\n    if (isVideoContent(content)) {\n      return false;\n    }\n    return isZoomable;\n  }\n\n  onContentActivate({ content }) {\n    if (isVideoContent(content) && this.options.autoplay) {\n      this.playVideo(content);\n    }\n  }\n\n  onContentDeactivate({ content }) {\n    if (isVideoContent(content)) {\n      this.pauseVideo(content);\n    }\n  }\n\n  onContentAppend(e) {\n    if (isVideoContent(e.content)) {\n      e.preventDefault();\n      e.content.isAttached = true;\n      e.content.appendImage();\n    }\n  }\n\n  onContentLoad(e) {\n    const content = e.content; // todo: videocontent\n\n    if (!isVideoContent(e.content)) {\n      return;\n    }\n\n    // stop default content load\n    e.preventDefault();\n\n    if (content.element) {\n      return;\n    }\n\n    content.state = 'loading';\n    content.type = 'video'; // TODO: move this to pswp core?\n\n    content.element = document.createElement('video');\n\n    if (this.options.videoAttributes) {\n      for(let key in this.options.videoAttributes) {\n        content.element.setAttribute(key, this.options.videoAttributes[key] || '');\n      }\n    }\n\n    if (content.data.msrc) {\n      content.element.setAttribute('poster', content.data.msrc);\n    }\n\n    this.preloadVideoPoster(content, content.data.msrc);\n\n    content.element.style.position = 'absolute';\n    content.element.style.left = 0;\n    content.element.style.top = 0;\n\n    if (content.data.videoSources) {\n      content.data.videoSources.forEach((source) => {\n        let sourceEl = document.createElement('source');\n        sourceEl.src = source.src;\n        sourceEl.type = source.type;\n        content.element.appendChild(sourceEl);\n      });\n    } else if (content.data.videoSrc) {\n      // Force video preload\n      // https://muffinman.io/blog/hack-for-ios-safari-to-display-html-video-thumbnail/\n      // this.element.src = this.data.videoSrc + '#t=0.001';\n      content.element.src = content.data.videoSrc;\n    }\n  }\n\n  preloadVideoPoster(content, src) {\n    if (!content._videoPosterImg && src) {\n      content._videoPosterImg = new Image();\n      content._videoPosterImg.src = src;\n      if (content._videoPosterImg.complete) {\n        content.onLoaded();\n      } else {\n        content._videoPosterImg.onload =  content._videoPosterImg.onerror = () => {\n          content.onLoaded();\n        };\n      }\n    }\n  }\n\n\n  playVideo(content) {\n    if (content.element) {\n      content.element.play();\n    }\n  }\n\n  pauseVideo(content) {\n    if (content.element) {\n      content.element.pause();\n    }\n  }\n\n  useContentPlaceholder(usePlaceholder, content) {\n    if (isVideoContent(content)) {\n      return true;\n    }\n    return usePlaceholder;\n  }\n\n}\n\nexport default VideoContentSetup;\n","import {addUrlHashParameter, mergeObjects, removeUrlHashParameter} from \"../../../common/js/Helpers\";\r\n\r\nexport default class HistoryHandler {\r\n\r\n    constructor(newOptions) {\r\n        this.options = {\r\n            onClose: () => {},\r\n            window: window,\r\n            history: history\r\n        }\r\n        this.options = mergeObjects(this.options, newOptions);\r\n    }\r\n\r\n    browserBackHappened = false;\r\n\r\n    _close = () => {\r\n        this.browserBackHappened = true;\r\n        this.options.onClose();\r\n    }\r\n\r\n    /**\r\n     * Add a cleaned history item on the stack,\r\n     * watch for browser back\r\n     */\r\n    startUrlHistory() {\r\n        if (!this.options.history) return;\r\n\r\n        this.options.window.addEventListener('popstate', this._close)\r\n        this.browserBackHappened = false;\r\n        let url = this.options.window.location.href;\r\n\r\n        url = removeUrlHashParameter(url, 'gid');\r\n        url = removeUrlHashParameter(url, 'pid')\r\n\r\n        this.options.history.replaceState(null, '', url);\r\n        this.options.history.pushState(null,'', null);\r\n    }\r\n\r\n    /**\r\n     * remove the listener\r\n     * go one step back in the history if NO browser-back detected\r\n     */\r\n    endUrlHistory() {\r\n        if (!this.options.history) return;\r\n        this.options.window.removeEventListener('popstate', this._close)\r\n        if (!this.browserBackHappened) this.options.history.go(-1);\r\n    }\r\n\r\n    /**\r\n     * set the URL for the current slide\r\n     * @param slide PhotoSwipeGallerySlide\r\n     */\r\n    adjustUrlHistory(slide) {\r\n        if (!this.options.history) return;\r\n        let url = this.options.window.location.href;\r\n\r\n        url = addUrlHashParameter(url, 'gid', slide.gid);\r\n        url = addUrlHashParameter(url, 'pid', slide.pid)\r\n\r\n        this.options.history.replaceState(null, '', url);\r\n    }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import PhotoSwipe from 'photoswipe';\r\nimport 'photoswipe/style.css';\r\nimport PhotoSwipeVideoPlugin from '../photoswipe-video-plugin/index';\r\nimport {getElementHeight, getParent, mergeObjects, removeElement} from \"../../../common/js/Helpers\";\r\nimport Polyfill from \"../Polyfill\";\r\nimport Overlay from \"../Overlay\";\r\nimport SlideShow from \"../SlideShow\";\r\nimport {parseHash} from \"./UrlHandling\";\r\nimport {closest, getThumbnailContainers, parseThumbnailElement} from \"./SlideGenerator\";\r\nimport {Events} from \"../minicart/CartEvents\";\r\nimport HistoryHandler from \"./HistoryHandler\";\r\n\r\n\r\n\r\nexport default class PhotoSwipeGallery {\r\n\r\n    constructor(options) {\r\n        this._isOpen = false;\r\n        this._gallery = null;\r\n        this._videoPlugin = null;\r\n        this.options = mergeObjects({\r\n            doOverlapToolbar: false,\r\n            imagePadding: 0,\r\n            doOverlapImageWithCaption: false,\r\n            showHideAnimationType: 'zoom',\r\n        }, options);\r\n    }\r\n\r\n    initPhotoSwipe() {\r\n        this.translations = this._translate();\r\n        this._registerClickEvents();\r\n\r\n        // Parse URL and open gallery if it contains #&pid=3&gid=1\r\n        let hashData = parseHash();\r\n        if(hashData.pid && hashData.gid) {\r\n            this.openPhotoSwipe( hashData.pid ,  this.getGalleries().get(hashData.gid), true, true );\r\n        }\r\n    };\r\n\r\n    _translate() {\r\n        if (!window.EventGalleryLightboxConfiguration) {\r\n            return {};\r\n        }\r\n\r\n        return {\r\n            closeTitle: EventGalleryLightboxConfiguration.KEY_CLOSE,\r\n            zoomTitle: EventGalleryLightboxConfiguration.KEY_ZOOM,\r\n            arrowPrevTitle: EventGalleryLightboxConfiguration.KEY_PREVIOUS,\r\n            arrowNextTitle: EventGalleryLightboxConfiguration.KEY_NEXT,\r\n            errorMsg: 'The image cannot be loaded',\r\n            indexIndicatorSep: ' / ',\r\n            share: EventGalleryLightboxConfiguration.KEY_SHARE,\r\n            download: EventGalleryLightboxConfiguration.KEY_DOWNLOAD,\r\n            buy: EventGalleryLightboxConfiguration.KEY_BUY,\r\n            'playpause-buttonTitle': EventGalleryLightboxConfiguration.KEY_PLAYSLIDESHOW,\r\n            pause: EventGalleryLightboxConfiguration.KEY_PAUSESLIDESHOW,\r\n        }\r\n    }\r\n\r\n    onThumbnailsClick(e) {\r\n        e = e || window.event;\r\n        e.preventDefault ? e.preventDefault() : e.returnValue = false;\r\n\r\n        let eTarget = e.target || e.srcElement;\r\n\r\n        // leave the icons for cart&sharing alone\r\n        let iconContainer = closest(eTarget, function(el) {\r\n            return (el.classList && el.classList.contains('eventgallery-icon-container'));\r\n        });\r\n        if (iconContainer !== null) {\r\n            return;\r\n        }\r\n\r\n        // find root element of slide\r\n        let clickedListItem = closest(eTarget, function(el) {\r\n            return (el.tagName && el.tagName.toUpperCase() === 'A');\r\n        });\r\n\r\n        if(!clickedListItem) {\r\n            return;\r\n        }\r\n\r\n        let slide = this.getSlideBy(clickedListItem);\r\n        let index = this.getIndexOfSlide(slide);\r\n        let slides = this.getGalleries().get(slide.gid);\r\n\r\n        if(index >= 0) {\r\n            // open PhotoSwipe if valid index found\r\n            this.openPhotoSwipe( index, slides );\r\n        }\r\n        return false;\r\n    };\r\n\r\n    /**\r\n     *\r\n     * @param index\r\n     * @param slides\r\n     * @param disableAnimation\r\n     * @param fromURL\r\n     */\r\n    openPhotoSwipe(index, slides, disableAnimation, fromURL, useHistory = true) {\r\n        if (slides === undefined || slides.length === 0 ) {\r\n            return;\r\n        }\r\n\r\n        // define options (if needed)\r\n        let options = mergeObjects({\r\n            pswpModule: PhotoSwipe,\r\n\r\n            galleryPIDs:true,\r\n            bgOpacity: 1,\r\n            trapFocus: false,\r\n            showHideAnimationType: this.options.showHideAnimationType,\r\n\r\n            // define gallery index (for URL)\r\n            galleryUID: slides[0].gid,\r\n\r\n            'tapAction': () => {\r\n                this._gallery.element.classList.toggle('pswp--ui-visible');\r\n                if (this._gallery.element.classList.contains('pswp--ui-visible')) {\r\n                    this._gallery.element.classList.remove('pswp--ui-invisible');\r\n                } else {\r\n                    this._gallery.element.classList.add('pswp--ui-invisible');\r\n                }\r\n\r\n                this._gallery.updateSize(true);\r\n            },\r\n\r\n\r\n            paddingFn: (viewportSize, itemData, index) => {\r\n\r\n                let top = 0;\r\n                let bottom = 0;\r\n                let captionHeight = 0;\r\n\r\n                if (!this._gallery.element.classList.contains('pswp--ui-invisible')) {\r\n\r\n                    if (this.options.doOverlapToolbar === false) {\r\n                        top = getElementHeight(document.querySelector('.pswp__top-bar'))\r\n                    }\r\n\r\n                    top += this.options.imagePadding;\r\n\r\n                    if (!this.options.doOverlapImageWithCaption) {\r\n                        if (itemData.title) {\r\n                            const el = document.createElement('div');\r\n                            el.className = 'pswp__custom-caption';\r\n                            el.innerHTML = itemData.title;\r\n                            this._gallery.element.appendChild(el);\r\n                            captionHeight = getElementHeight(el);\r\n                            let cSSStyleDeclaration = getComputedStyle(el);\r\n\r\n                            if (cSSStyleDeclaration['bottom']) {\r\n                                let captionBottom = parseInt(cSSStyleDeclaration['bottom'], 10)\r\n                                captionHeight += captionBottom;\r\n                                captionHeight += Math.max(0, 4 - this.options.imagePadding);\r\n                            }\r\n\r\n                            Polyfill.removeHtmlElementNode(el);\r\n                        }\r\n                    }\r\n                }\r\n\r\n                return {\r\n                    top,\r\n                    bottom: bottom +  captionHeight,\r\n                    left: 0,\r\n                    right: 0\r\n                };\r\n            },\r\n        }, this.translations);\r\n\r\n        // disable close gestures to avoid trouble with the add2cart dialog.\r\n        options.pinchToClose = !options.add2cartEl;\r\n        options.closeOnVerticalDrag = !options.add2cartEl;\r\n        options.closeOnScroll = !options.add2cartEl;\r\n\r\n        if (window.EventGalleryLightboxConfiguration) {\r\n            if (parseInt(window.EventGalleryLightboxConfiguration.navigationFadeDelay) > 0) {\r\n                options.timeToIdle = parseInt(window.EventGalleryLightboxConfiguration.navigationFadeDelay);\r\n                options.timeToIdleOutside = parseInt(window.EventGalleryLightboxConfiguration.navigationFadeDelay);\r\n            }\r\n        }\r\n\r\n        // PhotoSwipe opened from URL\r\n        if(fromURL) {\r\n            if(options.galleryPIDs) {\r\n                index = parseInt(index, 10);\r\n                // parse real index when custom PIDs are used\r\n                // http://photoswipe.com/documentation/faq.html#custom-pid-in-url\r\n                for(let j = 0; j < slides.length; j++) {\r\n                    if(slides[j].pid === index) {\r\n                        options.index = j;\r\n                        break;\r\n                    }\r\n                }\r\n            } else {\r\n                // in URL indexes start from 1\r\n                options.index = parseInt(index, 10) - 1;\r\n            }\r\n        } else {\r\n            options.index = parseInt(index, 10);\r\n        }\r\n\r\n        // exit if index not found\r\n        if( isNaN(options.index) ) {\r\n            return;\r\n        }\r\n\r\n        if(disableAnimation) {\r\n            options.showAnimationDuration = 0;\r\n        }\r\n\r\n        // Pass data to PhotoSwipe and initialize it\r\n\r\n        options.dataSource = slides;\r\n\r\n\r\n        this._gallery = new PhotoSwipe(options);\r\n\r\n\r\n        /** allows the zoom closing */\r\n        this._gallery.addFilter('thumbEl', (thumbEl, data, index) => {\r\n            if (data.thumbEl) {\r\n                const el = data.thumbEl.querySelector('img');\r\n                if (el) {\r\n                    return el;\r\n                }\r\n            }\r\n            return thumbEl;\r\n        });\r\n\r\n        /** get a placeholder */\r\n        /*this._gallery.addFilter('placeholderSrc', (placeholderSrc, slide) => {\r\n            const el = slide.data.thumbEl.querySelector('img');\r\n            if (el) {\r\n                return el.src;\r\n            }\r\n            return placeholderSrc;\r\n        });*/\r\n\r\n        this._gallery.on('close', () => {\r\n            return this._isOpen = false;\r\n        });\r\n\r\n        this._gallery.on('change', () => {\r\n            this.overlay?.closeOverlay();\r\n        })\r\n\r\n        // HISTORY\r\n\r\n        let historyHandler = new HistoryHandler({\r\n            onClose: () => this._gallery.close(),\r\n            history: useHistory ? history : null\r\n        })\r\n\r\n        this._gallery.on('afterInit', () => {\r\n            historyHandler.startUrlHistory();\r\n            historyHandler.adjustUrlHistory(this.getCurrentSlide());\r\n        });\r\n\r\n        this._gallery.on('change', () => {\r\n            historyHandler.adjustUrlHistory(this.getCurrentSlide());\r\n        })\r\n\r\n        this._gallery.on('close', () => {\r\n            historyHandler.endUrlHistory();\r\n        })\r\n        // END HISTORY\r\n\r\n        this._gallery.on('keydown', (e) => {\r\n            // prevent photoswipe to react on keypresses\r\n            if (this.overlay?.isOpen) {\r\n                e.defaultPrevented = true;\r\n            }\r\n        })\r\n\r\n        this._gallery.on('close', () => {\r\n            this.overlay?.closeOverlay();\r\n        })\r\n\r\n        this._gallery.on('change', () => {\r\n            document.dispatchEvent(Polyfill.createNewEvent('eventgallery-lightbox-changed'));\r\n        });\r\n\r\n        this._registerUIElements();\r\n\r\n        this._videoPlugin = new PhotoSwipeVideoPlugin(this._gallery, {\r\n            // options\r\n        });\r\n\r\n        this._gallery.init();\r\n\r\n        this._isOpen = true;\r\n\r\n        document.dispatchEvent(Polyfill.createNewEvent('eventgallery-lightbox-opened'));\r\n\r\n    };\r\n\r\n    _registerUIElements() {\r\n        this._gallery.on('uiRegister', () => {\r\n\r\n            this._gallery.ui.registerElement({\r\n                name: 'custom-caption',\r\n                order: 9,\r\n                isButton: false,\r\n                appendTo: 'root',\r\n                html: 'Caption text',\r\n                onInit: (el, pswp) => {\r\n                    pswp.on('change', () => {\r\n                        const currSlideElement = this.getCurrentSlide();\r\n                        let captionHTML = '';\r\n                        if (currSlideElement) {\r\n                            captionHTML = currSlideElement.title;\r\n                        }\r\n\r\n                        el.innerHTML = captionHTML || '';\r\n                        if (captionHTML.length > 0 ) {\r\n                            el.style.display = 'block';\r\n                        } else {\r\n                            el.style.display = 'none';\r\n                        }\r\n\r\n                    });\r\n                }\r\n            });\r\n\r\n            this._gallery.ui.registerElement({\r\n                name: 'share-button',\r\n                ariaLabel: this.translations.share,\r\n                title: this.translations.share,\r\n                order: 10,\r\n                isButton: true,\r\n                html: '',\r\n                onInit: (el, pswp) => {\r\n                    pswp.on('change', (a,) => {\r\n                        if (this.getCurrentSlide().shareUrl) {\r\n                            el.style.display = 'block';\r\n                        } else {\r\n                            el.style.display = 'none';\r\n                        }\r\n                    });\r\n                },\r\n                onClick: (event, el, pswp) => {\r\n                    this.overlay = new Overlay();\r\n                    let url = this.getCurrentSlide().shareUrl\r\n                    this.overlay.openOverlay(url);\r\n                    return false;\r\n                }\r\n            });\r\n\r\n            this._gallery.ui.registerElement({\r\n                name: 'add2cart-button',\r\n                ariaLabel: this.translations.buy,\r\n                title: this.translations.buy,\r\n                order: 11,\r\n                isButton: true,\r\n                html: '',\r\n                onInit: (el, pswp) => {\r\n                    pswp.on('change', (a,) => {\r\n                        if (this.getCurrentSlide().add2cartUrl) {\r\n                            el.style.display = 'block';\r\n                        } else {\r\n                            el.style.display = 'none';\r\n                        }\r\n\r\n                    });\r\n                },\r\n                onClick: (event, el, pswp) => {\r\n                    this.overlay = new Overlay();\r\n\r\n                    this.overlay.onLoad = () => {\r\n                        document.dispatchEvent(Polyfill.createNewEvent(Events.prepareAdd2cartDialogContent, null));\r\n                    };\r\n\r\n                    let url = this.getCurrentSlide().add2cartUrl;\r\n                    this.overlay.openOverlay(url);\r\n\r\n                    return false;\r\n                }\r\n\r\n            });\r\n\r\n            this._gallery.ui.registerElement({\r\n                name: 'download-button',\r\n                ariaLabel: this.translations.download,\r\n                title: this.translations.download,\r\n                order: 12,\r\n                isButton: true,\r\n                html: '',\r\n                onInit: (el, pswp) => {\r\n                    pswp.on('change', (a,) => {\r\n                        if (this.getCurrentSlide().directDownloadButton) {\r\n                            el.style.display = 'block';\r\n                        } else {\r\n                            el.style.display = 'none';\r\n                        }\r\n\r\n                    });\r\n                },\r\n                onClick: (event, el) => {\r\n                    this.getCurrentSlide().directDownloadButton?.click();\r\n                    return false;\r\n                }\r\n            });\r\n\r\n            new SlideShow(this._gallery);\r\n        })\r\n\r\n\r\n    }\r\n\r\n    _registerClickEvents() {\r\n        // loop through all gallery elements and bind events\r\n        let galleries = this.getGalleries();\r\n\r\n        for(let gallery of galleries.values()) {\r\n            for (let i = 0, l = gallery.length; i < l; i++) {\r\n                gallery[i].thumbEl.onclick = (e) => {this.onThumbnailsClick(e)};\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * searches the galleries for a thumbnail container and returns the\r\n     * Slide object\r\n     *\r\n     * @param thumbEl\r\n     * @returns PhotoSwipeGallerySlide\r\n     */\r\n    getSlideBy(thumbEl) {\r\n        let galleries = this.getGalleries();\r\n\r\n        for(let gallery of galleries.values()) {\r\n            for (let i = 0, l = gallery.length; i < l; i++) {\r\n                if (gallery[i].thumbEl === thumbEl) {\r\n                    return gallery[i];\r\n                }\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n\r\n    /**\r\n     *\r\n     * @param slide PhotoSwipeGallerySlide\r\n     * @returns {*|number}\r\n     */\r\n    getIndexOfSlide(slide) {\r\n        let slides = this.getGalleries().get(slide.gid);\r\n        return slides.map(function(e) { return e.hash(); }).indexOf(slide.hash());\r\n    }\r\n\r\n    /**\r\n     * Parses all elements on the page so we know which triggers for a lightbox exist.\r\n     * Returns a mal containing the gallery and all elements\r\n     * @returns {Map<String, Array>}\r\n     */\r\n    getGalleries() {\r\n        let galleries = new Map(),\r\n            thumbnails = getThumbnailContainers();\r\n\r\n        for(let i=0; i<thumbnails.length; i++) {\r\n            let thumbEl = thumbnails[i];\r\n            let gallery;\r\n\r\n            let item = parseThumbnailElement(thumbEl);\r\n            if (item !== null) {\r\n                if (galleries.get(item.gid) === undefined) {\r\n                    galleries.set(item.gid, []);\r\n                }\r\n                gallery = galleries.get(item.gid);\r\n                gallery.push(item);\r\n                galleries.set(item.gid, gallery);\r\n            }\r\n        }\r\n\r\n        return galleries;\r\n    }\r\n\r\n    /**\r\n     * grabs the current slide from the lightbox\r\n     * @returns PhotoSwipeGallerySlide\r\n     */\r\n    getCurrentSlide() {\r\n        return this._gallery.currSlide.data;\r\n    }\r\n\r\n    /**\r\n     * Returns the index if the current item in the lightbox\r\n     *\r\n     * @returns integer\r\n     */\r\n    getCurrentIndex() {\r\n        return this._gallery.currIndex;\r\n    }\r\n\r\n    /**\r\n     * reinitiate the lightbox. Register the click events for existing and new elements.\r\n     */\r\n    reload() {\r\n        this._registerClickEvents();\r\n    }\r\n\r\n    /**\r\n     * reports back if the lightbox is currently open\r\n     * @returns {boolean}\r\n     */\r\n    isOpen() {\r\n        return this._isOpen;\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param afterChangeFunction\r\n     */\r\n    setAfterChangeEventListener(afterChangeFunction) {\r\n        this._gallery.on('change', afterChangeFunction);\r\n    }\r\n\r\n    /**\r\n     * jump to a specific slide.\r\n     * @param index\r\n     */\r\n    gotoSlide(index) {\r\n        this._gallery.goTo(index);\r\n    }\r\n\r\n}\r\n\r\n","\r\nexport default class PhotoSwipeGallerySlide {\r\n    constructor() {\r\n        this.width = 0;\r\n        this.height = 0;\r\n        this.src = '';\r\n        this.alt = '';\r\n        this.title = '';\r\n        this.pid = '';\r\n        this.gid = '';\r\n        this.thumbEl = null;\r\n        this.msrc= '';\r\n        this.shareUrl = '';\r\n        this.add2cartUrl = '';\r\n        this.directDownloadButton = '';\r\n        this.type = '';\r\n        this.videoSrc = '';\r\n        this.videoSources = null;\r\n    }\r\n\r\n    hash() {\r\n        return this.gid + this.src;\r\n    }\r\n}\r\n","/**\r\n * Finds all thumbnail containers on the page\r\n * @returns {NodeListOf<Element>}\r\n */\r\nimport {getParents} from \"../../../common/js/Helpers\";\r\nimport PhotoSwipeGallerySlide from \"./PhotoSwipeGallerySlide\";\r\n\r\n/**\r\n *\r\n * @returns {Element[]}\r\n */\r\nexport function getThumbnailContainers() {\r\n    let thumbEl = document.querySelectorAll( 'a[data-eg-lightbox]' );\r\n\r\n    // don't add images from the clone slides. They are not clickable but will add duplicates to the lightbox => #818\r\n    return Array.from(thumbEl).filter((tc => {\r\n        let parents = getParents(tc);\r\n        let thumbElIsAllowed = true;\r\n        parents.forEach(parent => {\r\n            if (thumbElIsAllowed && parent.classList.contains('glide__slide--clone')) {\r\n                thumbElIsAllowed = false;\r\n            }\r\n        });\r\n        return thumbElIsAllowed;\r\n    }))\r\n}\r\n\r\n/**\r\n *\r\n * @param el\r\n * @param fn\r\n * @returns {Element}\r\n */\r\nexport function  closest(el, fn) {\r\n    return el && ( fn(el) ? el : closest(el.parentNode, fn) );\r\n}\r\n\r\n/**\r\n *\r\n * @param thumbEl Node\r\n * @returns PhotoSwipeGallerySlide\r\n */\r\nexport function  parseThumbnailElement(thumbEl) {\r\n    let item,\r\n        imgEl,\r\n        height,\r\n        width,\r\n        pid,\r\n        gid;\r\n\r\n    // include only element nodes\r\n    if(thumbEl.nodeType !== 1) {\r\n        return null;\r\n    }\r\n\r\n    imgEl = thumbEl.getElementsByTagName('IMG')[0];\r\n\r\n    if (imgEl === undefined) {\r\n        return null;\r\n    }\r\n\r\n    height = thumbEl.getAttribute('data-height');\r\n    width = thumbEl.getAttribute('data-width');\r\n    pid = thumbEl.getAttribute('data-pid');\r\n    gid = thumbEl.getAttribute('data-gid');\r\n\r\n    if (height === null || width === null || pid === null) {\r\n        return null;\r\n    }\r\n\r\n    // create slide object\r\n    item = new PhotoSwipeGallerySlide();\r\n    item.type = thumbEl.getAttribute('data-type')\r\n\r\n    if (item.type === 'video' && thumbEl) {\r\n        if (thumbEl.dataset.pswpVideoSources) {\r\n            item.videoSources = JSON.parse(pswpVideoSources);\r\n        } else if (thumbEl.dataset.pswpVideoSrc) {\r\n            item.videoSrc = thumbEl.dataset.pswpVideoSrc;\r\n        } else {\r\n            item.videoSrc = thumbEl.href;\r\n        }\r\n    }\r\n\r\n    item.src = thumbEl.getAttribute('href');\r\n    item.width = parseInt(width, 10);\r\n    item.height = parseInt(height, 10);\r\n\r\n    // prevent null entry\r\n    item.title = decodeURIComponent(thumbEl.getAttribute('data-bs-title') || thumbEl.getAttribute('data-title') || '');\r\n\r\n    item.pid = parseInt(pid, 10);\r\n\r\n    item.gid = gid;\r\n\r\n    item.thumbEl  = thumbEl; // save link to element for getThumbBoundsFn\r\n\r\n\r\n    let shareButton = thumbEl.querySelector('.social-share-button');\r\n    if (shareButton) {\r\n        item.shareUrl = shareButton.getAttribute('data-href');\r\n    }\r\n\r\n    item.directDownloadButton = thumbEl.querySelector('.eg-download');\r\n\r\n    let add2cartButton = thumbEl.querySelector('.eventgallery-add2cart');\r\n    if (add2cartButton) {\r\n        item.add2cartUrl = window.EventGalleryCartConfiguration?.add2cartdialogurl + '&' + add2cartButton.getAttribute('data-id');\r\n    }\r\n\r\n    return item;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","/**\r\n * splits a hash value into its elements. returns an empty object if there is nothing in\r\n */\r\nexport function _parseHashString(hash) {\r\n    let params = {};\r\n\r\n    if(hash.length < 5) {\r\n        return params;\r\n    }\r\n\r\n    let vars = hash.split('&');\r\n    for (let i = 0; i < vars.length; i++) {\r\n        if(!vars[i]) {\r\n            continue;\r\n        }\r\n        let pair = vars[i].split('=');\r\n        if(pair.length < 2) {\r\n            continue;\r\n        }\r\n        params[pair[0]] = pair[1];\r\n    }\r\n\r\n    return params;\r\n}\r\n\r\nexport function parseHash() {\r\n    return _parseHashString(window.location.hash.substring(1));\r\n}\r\n\r\n\r\n","<style scoped lang=\"less\">\r\n</style>\r\n\r\n<template>\r\n    <div id=\"Cacheclear\">\r\n\r\n        <div>{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_START_DESC')}}</div>\r\n\r\n        <div class=\"control-group\">\r\n            <div class=\"controls\">\r\n                <div class=\"btn-group sync-buttons\">\r\n                    <button class=\"btn btn-light checkall\" v-on:click=\"checkAll\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_CHECK_ALL')}}</button>\r\n                    <button class=\"btn btn-light\" v-on:click=\"uncheckAll\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_CHECK_NONE')}}</button>\r\n                    <button class=\"btn btn-warning\" :disabled=\"!running\" v-on:click=\"stopQueue\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_STOP_QUEUE')}}</button>\r\n                    <button class=\"btn btn-danger\" :disabled=\"running || !isReadyForCacheDeletion\" v-on:click=\"clearCache\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_START')}}</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <Progress v-if=\"numberOfTasks>0\"\r\n                  :remaining=\"numberOfTasks\"\r\n                  :total=\"numberOfLastQueuePush\"></Progress>\r\n\r\n        <Groups :groups=\"groups\" :elements=\"elements\" :blocked=\"running\"></Groups>\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n\r\n    import queue from 'async/queue';\r\n    import Groups from \"./Groups.vue\";\r\n    import ProcessSteps from \"../components/ProcessSteps.vue\";\r\n    import Progress from \"../components/Progress.vue\";\r\n    import ErrorPanel from \"../components/ErrorPanel.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Groups, Progress, ErrorPanel, ProcessSteps\r\n        },\r\n        props: {\r\n            i18n: null,\r\n            elementsJson: null,\r\n            groupsJson: null,\r\n            cacheClearUrl: null,\r\n            csrfToken: null,\r\n        },\r\n        data() {\r\n            return {\r\n                elements: [],\r\n                groups: [],\r\n                failedElements: [],\r\n                errorMessages: [],\r\n                queue: null,\r\n                numberOfRunningTasks: 0,\r\n                numberOfTasks: 0,\r\n                numberOfLastQueuePush: 0,\r\n                running: false\r\n            };\r\n        },\r\n        created: function() {\r\n            this.queue = queue((task, callback) => {\r\n                task(callback);\r\n            }, 1);\r\n            this.queue.drain(()=>{\r\n                this.updateQueueStatus();\r\n                this.running = false;\r\n            });\r\n        },\r\n        mounted: function() {\r\n            this.elements = JSON.parse(this.elementsJson);\r\n            this.groups = JSON.parse(this.groupsJson);\r\n        },\r\n        computed: {\r\n            selectedElements: function() {\r\n                return this.elements.filter((element)=> {\r\n                    return element.checked;\r\n                });\r\n            },\r\n            isReadyForCacheDeletion: function() {\r\n                return this.selectedElements.filter(element => {\r\n                    return !element.removed;\r\n                }).length > 0;\r\n            }\r\n        },\r\n        methods: {\r\n            checkAll: function() {\r\n                this.elements.forEach(element=>{element.checked=true})\r\n            },\r\n            uncheckAll: function() {\r\n                this.elements.forEach(element=>{element.checked=false})\r\n            },\r\n            stopQueue: function(){\r\n                this.queue.remove(() => {return true});\r\n            },\r\n            updateQueueStatus: function() {\r\n                this.numberOfRunningTasks = this.queue.running();\r\n                this.numberOfTasks = this.queue.length() + this.numberOfRunningTasks;\r\n            },\r\n            clearCache: function() {\r\n                this.running = true;\r\n                this.selectedElements.forEach((element) => {\r\n                        this.queue.push((done) => { this.clearCacheForElement(element, () => {done(); this.updateQueueStatus(); })});\r\n                });\r\n                this.numberOfLastQueuePush = this.selectedElements.length;\r\n            },\r\n            clearCacheForElement: function(element, done) {\r\n\r\n                let data = element.group + '=' + element.value + '&' + this.csrfToken + '=1';\r\n                let xhr = new XMLHttpRequest();\r\n\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if(xhr.status === 200) {\r\n                            try {\r\n                                element['removed'] = true;\r\n                            } catch(e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.cacheClearUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n\r\n        }\r\n    };\r\n</script>\r\n","<style lang=\"less\" scoped>\r\n\r\n    .elements {\r\n        list-style: none;\r\n\r\n\r\n        li {\r\n            padding: 10px;\r\n          &:hover {\r\n            background-color: silver;\r\n          }\r\n        }\r\n\r\n        li div  {\r\n            display: inline-block;\r\n            cursor: pointer;\r\n        }\r\n\r\n        li .checkbox {\r\n           padding-right: 20px;\r\n        }\r\n    }\r\n</style>\r\n\r\n<template>\r\n    <div v-if=\"sortedElements.length>0\"><h2>{{group.displayname}}</h2>\r\n\r\n    <ul class=\"elements\">\r\n        <template v-for=\"element in sortedElements\" v-bind:key=\"element.value\">\r\n            <li @click=\"element.checked = !element.checked\" >\r\n                <div class=\"checkbox\"><input type=\"checkbox\" v-model=\"element.checked\" ></div>\r\n                <div class=\"description\">\r\n                    {{element.name}} <span class=\"filecount\">({{element.count}} / {{element.size}})</span>\r\n                </div>\r\n            </li>\r\n        </template>\r\n    </ul>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        props: {\r\n            group: null,\r\n            elements: null,\r\n        },\r\n        computed: {\r\n            sortedElements: function(){\r\n                return this.elements.slice().filter(a => {\r\n                    return !a.removed && a.group === this.group.name && a.count > 0;\r\n                }).sort((a, b) => {\r\n                    return a.name.localeCompare(b.name);\r\n                });\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<style lang=\"less\" scoped>\r\n    .blocked {\r\n        opacity: 0.4;\r\n    }\r\n</style>\r\n\r\n<template>\r\n    <div class=\"groups\" v-bind:class=\"{blocked: blocked}\">\r\n        <Elements v-for=\"group in groups\" v-bind:key=\"group.value\" :group=\"group\" :elements=\"elements\"></Elements>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import Elements from \"./Elements.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Elements\r\n        },\r\n        props: {\r\n            groups: null,\r\n            elements: null,\r\n            blocked: null\r\n        },\r\n        computed: {\r\n        }\r\n\r\n    };\r\n</script>\r\n","<style scoped lang=\"less\">\r\n    #errorMessages {\r\n        pre {\r\n            max-height: 50vh;\r\n            overflow-y: scroll;\r\n        }\r\n        div {\r\n            color: #D8000C;\r\n            background-color: #FFD2D2;\r\n            padding: 12px;\r\n            margin: 10px 0;\r\n        }\r\n    }\r\n</style>\r\n\r\n<template>\r\n    <div id=\"errorMessages\" v-if=\"errorMessages?.length || failedFolders?.length || failedFiles?.length\">\r\n        <h2>{{headline}}</h2>\r\n        <pre v-if=\"errorMessages.length>0\"><template v-for=\"message in reversedErrorMessages\">{{message}}</template></pre>\r\n        <div v-for=\"failedFolder in failedFolders\">\r\n            {{failedFolder.error}}\r\n        </div>\r\n      <div v-for=\"failedFile in failedFiles\">\r\n        <div>\r\n          {{failedFile.foldername}}/{{failedFile.filename}}<br>\r\n          <small>\r\n            {{failedFile.error}}\r\n          </small>\r\n        </div>\r\n      </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        props: {\r\n            headline: null,\r\n            errorMessages: null,\r\n            failedFolders: null,\r\n            failedFiles: null,\r\n        },\r\n        computed: {\r\n            reversedErrorMessages: function() {\r\n                return this.errorMessages.slice().reverse();\r\n            }\r\n        }\r\n\r\n    };\r\n</script>\r\n","<style scoped>\r\n    li {\r\n        display: flex;\r\n        align-items: center;\r\n    }\r\n\r\n    input[type=checkbox] {\r\n        transform: scale(1.5);\r\n    }\r\n\r\n    .description {\r\n        margin: 10px;\r\n    }\r\n\r\n    .filecount {\r\n        width: 100%;\r\n        text-align: center;\r\n        font-size: 1.2em;\r\n        padding: 5px;\r\n    }\r\n\r\n</style>\r\n\r\n<template>\r\n    <li @click=\"folder.checked = !folder.checked\" :style=\"{backgroundColor: backgroundColor}\">\r\n        <div><input type=\"checkbox\" v-model=\"folder.checked\" ></div>\r\n        <div class=\"description\">\r\n            <div>{{folder.foldername}}</div>\r\n            <div><strong>{{status}}</strong></div>\r\n            <div class=\"filecount\" v-if=\"folder.files\">({{numberOfFilesLeft}} / {{folder.files.length}} {{i18n_labelNeedSync}})</div>\r\n        </div>\r\n    </li>\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        props: {\r\n            folder: null,\r\n            i18n_labelNeedSync: String\r\n        },\r\n        methods: {\r\n\r\n        },\r\n        computed: {\r\n            folderid: function() {\r\n                return 'folder_' + this.folder.foldername;\r\n            },\r\n            numberOfFilesLeft: function () {\r\n                return this.folder.files.filter((file => {return file.status !== 'sync'})).length;\r\n            },\r\n            status: function() {\r\n                return this.folder.status;\r\n            },\r\n            backgroundColor: function() {\r\n                if (!this.folder || !this.folder.status) return \"\";\r\n\r\n                if (this.folder.status === 'sync') {\r\n                    //console.log(this.numberOfFilesLeft)\r\n                    if (this.numberOfFilesLeft === 0 ) {\r\n                        return \"lightgreen\";\r\n                    }\r\n                    return '#FAFAD2'\r\n                }\r\n                if (this.folder.status === 'nosync') {\r\n                    return \"#DDD\";\r\n                }\r\n                if (this.folder.status === 'deleted') {\r\n                    return 'orange';\r\n                }\r\n\r\n            }\r\n        }\r\n\r\n    };\r\n</script>\r\n","<style lang=\"less\" scoped>\r\n\r\n    .folders {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n        justify-content: space-between;\r\n        list-style: none;\r\n\r\n        li {\r\n            padding: 10px;\r\n            margin: 10px;\r\n            border: 5px solid #EEE;\r\n        }\r\n    }\r\n\r\n    .blocked {\r\n        opacity: 0.5;\r\n    }\r\n</style>\r\n\r\n<template>\r\n    <ul class=\"folders\" v-bind:class=\"{blocked: blocked}\">\r\n        <folder v-for=\"folder in sortedFolders\"  v-bind:key=\"folder.foldername\" :folder=\"folder\" :i18n_label-need-sync=\"i18n_labelNeedSync\"></folder>\r\n    </ul>\r\n</template>\r\n\r\n<script>\r\n\r\n    import Folder from \"./Folder.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Folder\r\n        },\r\n        props: {\r\n            folders: null,\r\n            blocked: null,\r\n            i18n_labelNeedSync: String\r\n        },\r\n        computed: {\r\n            sortedFolders: function(){\r\n                return this.folders.slice().sort((a, b) => {\r\n                    return a.foldername.localeCompare(b.foldername);\r\n                });\r\n            }\r\n        }\r\n\r\n    };\r\n</script>\r\n","<style scoped>\r\n    .container {\r\n        width: 100%;\r\n        margin: 20px auto;\r\n    }\r\n    .progressbar {\r\n        counter-reset: step;\r\n        display: flex;\r\n    }\r\n    .progressbar li {\r\n        list-style-type: none;\r\n        width: 33.333%;\r\n        font-size: 12px;\r\n        position: relative;\r\n        text-align: center;\r\n        color: #7d7d7d;\r\n    }\r\n\r\n    .progressbar li span.title {\r\n        text-transform: uppercase;\r\n    }\r\n\r\n    .progressbar li:before {\r\n        width: 30px;\r\n        height: 30px;\r\n        content: counter(step);\r\n        counter-increment: step;\r\n        line-height: 30px;\r\n        border: 2px solid #7d7d7d;\r\n        display: block;\r\n        text-align: center;\r\n        margin: 0 auto 10px auto;\r\n        border-radius: 50%;\r\n        background-color: white;\r\n    }\r\n    .progressbar li:after {\r\n        width: 100%;\r\n        height: 2px;\r\n        content: '';\r\n        position: absolute;\r\n        background-color: #7d7d7d;\r\n        top: 15px;\r\n        left: -50%;\r\n        z-index: -1;\r\n    }\r\n    .progressbar li:first-child:after {\r\n        content: none;\r\n    }\r\n    .progressbar li.active {\r\n        color: green;\r\n    }\r\n    .progressbar li.active:before {\r\n        border-color: #55b776;\r\n    }\r\n    .progressbar li.active + li:after {\r\n        background-color: #55b776;\r\n    }\r\n\r\n    .progressbar span {\r\n        display: block;\r\n        margin-bottom: 10px;\r\n    }\r\n\r\n</style>\r\n\r\n<template>\r\n    <div class=\"container\">\r\n        <ul class=\"progressbar\">\r\n            <li v-bind:class=\"{active: true}\">\r\n                <span class=\"title\">{{i18n_labelStep1}}</span>\r\n            </li>\r\n            <li v-bind:class=\"{active: numberOfSelectedFolders > 0}\">\r\n                <span class=\"title\">{{i18n_labelStep2}}</span>\r\n                <span v-if=\"numberOfSelectedFolders === 0\">{{i18n_hintStep2}}</span>\r\n                <button class=\"btn btn-primary sync-folders\" :disabled=\"running || numberOfSelectedFolders===0\" v-on:click=\"$emit('sync-folders')\">{{i18n_labelButtonStep2}} ({{numberOfSelectedFolders}} {{i18n_labelItemsStep2}})</button>\r\n            </li>\r\n            <li v-bind:class=\"{active: isReadyForSyncFiles > 0}\">\r\n                <span class=\"title\">{{i18n_labelStep3}}</span>\r\n                <span v-if=\"isReadyForSyncFiles\">{{i18n_hintStep3}}</span>\r\n                <button class=\"btn btn-primary sync-files\" :disabled=\"running || !isReadyForSyncFiles\" v-on:click=\"$emit('sync-files')\">{{i18n_labelButtonStep3}} ({{numberOfSelectedFiles}} {{i18n_labelItemsStep3}})</button>\r\n            </li>\r\n        </ul>\r\n\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        props: {\r\n            running: null,\r\n            isReadyForSyncFiles: null,\r\n            numberOfSelectedFolders: null,\r\n            numberOfSelectedFiles: null,\r\n            i18n_labelStep1: String,\r\n            i18n_labelStep2: String,\r\n            i18n_hintStep2: String,\r\n            i18n_labelButtonStep2: String,\r\n            i18n_labelStep3: String,\r\n            i18n_hintStep3: String,\r\n            i18n_labelButtonStep3: String,\r\n            i18n_labelItemsStep2: String,\r\n            i18n_labelItemsStep3: String\r\n        }\r\n    };\r\n</script>\r\n","<style scoped>\r\n    .eg-progressbar-state {\r\n        height: 20px;\r\n        text-align: center;\r\n    }\r\n</style>\r\n\r\n<template>\r\n       <div class=\"eg-progressbar\" >\r\n            <div class=\"eg-progressbar-state\" v-bind:style=\"{width: progress + '%'}\">\r\n                <template v-if=\"remaining>0\"></template>\r\n            </div>\r\n        </div>\r\n\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        props: {\r\n            remaining: null,\r\n            total: null,\r\n        },\r\n        computed: {\r\n            progress: function() {\r\n                return (this.total-this.remaining) / this.total * 100;\r\n            }\r\n        }\r\n\r\n    };\r\n</script>\r\n","<style scoped lang=\"less\">\r\n</style>\r\n\r\n<template>\r\n    <div id=\"Filesync\">\r\n\r\n        <ErrorPanel :error-messages=\"errorMessages\" :failed-folders=\"failedFolders\" :failed-files=\"failedFiles\" :headline=\"i18n.t('COM_EVENTGALLERY_SYNC_ERROR_HEADLINE')\"></ErrorPanel>\r\n\r\n        <ProcessSteps :i18n=\"i18n\"\r\n                      :number-of-selected-files=\"numberOfSyncableFiles\"\r\n                      :number-of-selected-folders=\"selectedFolders.length\"\r\n                      :is-ready-for-sync-files=\"isSyncFilesProcessReadyToStart\"\r\n                      :running=\"running\"\r\n                      :i18n_label-step1=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP1')\"\r\n                      :i18n_label-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2')\"\r\n                      :i18n_label-items-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2_ITEMS')\"\r\n                      :i18n_label-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3')\"\r\n                      :i18n_label-items-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3_ITEMS')\"\r\n                      :i18n_hint-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2_HINT')\"\r\n                      :i18n_hint-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3_HINT')\"\r\n                      :i18n_label-button-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2_BUTTON_LABEL')\"\r\n                      :i18n_label-button-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3_BUTTON_LABEL')\"\r\n                      v-on:sync-files=\"syncFiles\"\r\n                      v-on:sync-folders=\"syncFolders\">\r\n        </ProcessSteps>\r\n\r\n        <div class=\"control-group\">\r\n            <div class=\"controls\">\r\n                <div class=\"btn-group sync-buttons\">\r\n                    <button class=\"btn btn-light checkall\" v-on:click=\"checkAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_ALL')}}</button>\r\n                    <button class=\"btn btn-light\" v-on:click=\"uncheckAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_NONE')}}</button>\r\n                    <button class=\"btn btn-warning\" :disabled=\"!running\" v-on:click=\"stopQueue\">{{i18n.t('COM_EVENTGALLERY_SYNC_STOP_QUEUE')}}</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <Progress v-if=\"numberOfTasks>0\"\r\n                  :remaining=\"numberOfTasks\"\r\n                  :total=\"numberOfLastQueuePush\"></Progress>\r\n        <Folders :folders=\"folders\" :blocked=\"running\" :i18n_label-need-sync=\"i18n.t('COM_EVENTGALLERY_SYNC_OPEN_IMAGES_NEEDS_SYNC')\"></Folders>\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n\r\n    import queue from 'async/queue';\r\n    import { createBatches } from \"../../../common/js/BatchCreator\";\r\n    import Folders from \"../components/Folders.vue\";\r\n    import ProcessSteps from \"../components/ProcessSteps.vue\";\r\n    import Progress from \"../components/Progress.vue\";\r\n    import ErrorPanel from \"../components/ErrorPanel.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Folders, Progress, ErrorPanel, ProcessSteps\r\n        },\r\n        props: {\r\n            i18n: null,\r\n            loadFoldersUrl: null,\r\n            fileSyncUrl: null,\r\n            folderSyncUrl: null,\r\n            csrfToken: null,\r\n            fileBatchSize: null,\r\n            maxParallelRequests: null,\r\n        },\r\n        data() {\r\n            return {\r\n                folders: [],\r\n                failedFolders: [],\r\n                failedFiles: [],\r\n                errorMessages: [],\r\n                queue: null,\r\n                numberOfRunningTasks: 0,\r\n                numberOfTasks: 0,\r\n                numberOfLastQueuePush: 0,\r\n                running: false\r\n            };\r\n        },\r\n        created: function() {\r\n            this.queue = queue((task, callback) => {\r\n                task(callback);\r\n            }, this.maxParallelRequests);\r\n            this.queue.drain(()=>{\r\n                this.updateQueueStatus();\r\n                this.running = false;\r\n            });\r\n        },\r\n        mounted: function() {\r\n            this.loadFolders();\r\n        },\r\n        computed: {\r\n            numberOfSyncableFiles: function() {\r\n                let number = 0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (folder.files) {\r\n                        number +=folder.files.length\r\n                    }\r\n                });\r\n                return number;\r\n            },\r\n            selectedFolders: function() {\r\n                return this.folders.filter((folder)=> {\r\n                    return folder.checked;\r\n                });\r\n            },\r\n            isSyncFilesProcessReadyToStart: function() {\r\n                let isReady = this.selectedFolders.length>0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (!folder.files) {\r\n                        isReady = false;\r\n                    }\r\n                });\r\n                return isReady;\r\n            }\r\n        },\r\n        methods: {\r\n            checkAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=true})\r\n            },\r\n            uncheckAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=false})\r\n            },\r\n            stopQueue: function(){\r\n                this.queue.remove(() => {return true});\r\n            },\r\n            updateQueueStatus: function() {\r\n                this.numberOfRunningTasks = this.queue.running();\r\n                this.numberOfTasks = this.queue.length() + this.numberOfRunningTasks;\r\n            },\r\n            syncFolders: function() {\r\n                this.running = true;\r\n                this.selectedFolders.forEach((folder) => {\r\n                        this.queue.push((done) => { this.syncFolder(folder, () => {done(); this.updateQueueStatus(); })});\r\n                });\r\n                this.numberOfLastQueuePush = this.selectedFolders.length;\r\n            },\r\n            syncFolder: function(folder, done) {\r\n\r\n                let data = 'folder=' + folder.foldername + \"&foldertype=\" + folder.foldertype + '&' + this.csrfToken + '=1';\r\n                let xhr = new XMLHttpRequest();\r\n\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if(xhr.status === 200) {\r\n                            try {\r\n                                let responseJSON = JSON.parse(xhr.responseText);\r\n                                let files = [];\r\n                                responseJSON.files.forEach(file => {\r\n                                    files.push({foldername: folder.foldername, filename: file, status: 'new'})\r\n                                });\r\n\r\n                                folder.files = files;\r\n                                folder.status = responseJSON.status;\r\n                            } catch(e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.folderSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            syncFiles: function() {\r\n                this.running = true;\r\n\r\n                let files = [];\r\n\r\n                this.folders.forEach((folder) => {\r\n                    if (folder.checked) {\r\n                        folder.files.forEach((file)=>{\r\n                            files.push(file);\r\n                        })\r\n                    }\r\n                });\r\n\r\n                let batches = createBatches(files, this.fileBatchSize);\r\n                batches.forEach((fileBatch) => {\r\n                    this.queue.push((done) => { this.syncFileBatch(fileBatch, () => {done(); this.updateQueueStatus();})});\r\n                });\r\n                this.numberOfLastQueuePush = files.length>0 ? batches.length : 0;\r\n            },\r\n            syncFileBatch: function(fileBatch, done) {\r\n                let data = this.csrfToken + '=1';\r\n\r\n                fileBatch.forEach(file =>  {\r\n                    data +='&folder[]=' + encodeURIComponent(file.foldername) + '&file[]=' + encodeURIComponent(file.filename)\r\n                });\r\n\r\n                let xhr = new XMLHttpRequest();\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if (xhr.status === 200) {\r\n                            try {\r\n                                let resultFiles = JSON.parse(xhr.responseText);\r\n                                fileBatch.forEach(file => {\r\n\r\n                                    resultFiles.forEach(resultFile => {\r\n                                        if (file.foldername === resultFile.foldername && file.filename === resultFile.filename) {\r\n                                            file.status = resultFile.sync;\r\n                                            file.error = resultFile.error;\r\n                                            if (file.status !== 'sync') {\r\n                                                this.failedFiles.push(file);\r\n                                            }\r\n                                        }\r\n                                    });\r\n                                })\r\n                            } catch (e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.fileSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            loadFolders: function() {\r\n                let xhr = new XMLHttpRequest();\r\n                let data = this.csrfToken + '=1';\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4 && xhr.status === 200) {\r\n                        try {\r\n                            let folders = JSON.parse(xhr.responseText);\r\n\r\n                            folders.forEach(folder => {\r\n                                if (folder.error != null) {\r\n                                    this.failedFolders.push(folder);\r\n                                } else {\r\n                                    folder.checked = folder.isNew;\r\n                                    this.folders.push(folder);\r\n                                }\r\n                            });\r\n                        } catch(e) {\r\n                            console.log(e);\r\n                            this.errorMessages.push(xhr.responseText);\r\n                        }\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.loadFoldersUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<template>\r\n    <div>\r\n        <form>\r\n            <div class=\"adminform form-horizontal\">\r\n                <template v-for=\"field in formDefinition.form.fieldset.field\">\r\n                    <Input v-if=\"field.type==='text'\"       :value=\"data[field.name]\" @update:value=\"data[field.name] = $event\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\" :default-value=\"field.default\"></Input>\r\n                    <Select v-else-if=\"field.type==='list'\" :value=\"data[field.name]\" @update:value=\"data[field.name] = $event\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\" :options=\"field.option\" :default-value=\"field.default\"></Select>\r\n                    <Radio v-else-if=\"field.type==='radio'\" :value=\"data[field.name]\" @update:value=\"data[field.name] = $event\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\" :options=\"field.option\" :default-value=\"field.default\"></Radio>\r\n                    <ImageSelector v-else-if=\"field.type==='imageselector'\" :value=\"data.image\" @update:value=\"data.image = $event\" :load-folders-url=\"loadFoldersUrl\" :load-files-url=\"loadFilesUrl\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\"></ImageSelector>\r\n                    <div v-else>Unsupported form element {{field}}</div>\r\n                </template>\r\n            </div>\r\n\r\n            <div id=\"imagetagfield\">{{tagContent}}</div>\r\n\r\n            <button class=\"pull-right btn btn-primary\" v-on:click=\"insertImageContentTag\">{{i18n.t('COM_EVENTGALLERY_CONTENTPLUGINBUTTON_BUTTON_INSERT')}}</button>\r\n\r\n        </form>\r\n\r\n    </div>\r\n</template>\r\n<style>\r\n#imagetagfield {\r\n  font-family: \"Courier New\", Courier, monospace;\r\n  padding: 10px;\r\n  border-radius: 5px;\r\n  background-color: #DDDCDC;\r\n  margin-bottom: 10px;\r\n}\r\n</style>\r\n<script>\r\n\r\n    import ImageSelector from \"./ImageSelector.vue\";\r\n    import Input from \"./Input.vue\";\r\n    import Select from \"./Select.vue\";\r\n    import Radio from \"./Radio.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            ImageSelector, Input, Select, Radio\r\n        },\r\n        props: {\r\n            editorName: null,\r\n            loadFoldersUrl: null,\r\n            loadFilesUrl: null,\r\n            formId: null,\r\n            formDefinitionJson: null,\r\n            i18n: null\r\n        },\r\n        data() {\r\n            return {\r\n                data: {\r\n                    attr: null,\r\n                    image_crop: null,\r\n                    image_mode: null,\r\n                    image_width: null,\r\n                    cssclass: null,\r\n                    use_cart: null,\r\n                    image: {\r\n                        file: null,\r\n                        folder: null,\r\n                        thumb: null\r\n                    },\r\n                },\r\n                formDefinition: JSON.parse(this.formDefinitionJson),\r\n            };\r\n        },\r\n        computed: {\r\n            tagContent: function() {\r\n                let tag = \"{eventgallery-image \";\r\n\r\n                tag = tag + \"event='\" + this.data.image.folder + \"' \";\r\n                tag = tag + \"file='\" + this.data.image.file + \"' \";\r\n\r\n                tag = tag + \"attr='\"+ this.data.attr +\"' \";\r\n\r\n                if (this.data.attr === \"image\" || this.data.attr === \"figure\") {\r\n                    tag = tag + \"mode='\"+ this.data.image_mode +\"' \";\r\n                    tag = tag + \"crop='\"+ this.data.image_crop +\"' \";\r\n                    if (this.data.image_width) tag = tag + \"thumb_width='\"+ this.data.image_width + \"' \";\r\n                    if (this.data.cssclass) tag = tag + \"cssclass='\"+ this.data.cssclass + \"' \";\r\n                    if (this.data.use_cart) tag = tag + \"use_cart='\"+ this.data.use_cart + \"' \";\r\n                }\r\n\r\n                tag = tag + \"}\";\r\n\r\n                return tag\r\n            }\r\n        },\r\n        methods: {\r\n            insertImageContentTag: function() {\r\n                console.log(this.tagContent);\r\n\r\n                window.parent.Joomla.editors.instances[this.editorName].replaceSelection(this.tagContent);\r\n                window.parent.Joomla.Modal.getCurrent().close();\r\n\r\n\r\n                return false;\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<style scoped>\r\n    .fullscreenOverlay {\r\n        /* Height & width depends on how you want to reveal the overlay (see JS below) */\r\n        height: 100%;\r\n        width: 100%;\r\n        position: absolute;\r\n        z-index: 1; /* Sit on top */\r\n        left: 0;\r\n        top: 0;\r\n        background-color: white;\r\n        padding: 10px;\r\n        box-sizing: border-box;\r\n    }\r\n\r\n    .ImageSelector {\r\n        display: flex;\r\n        width: 100%;\r\n    }\r\n\r\n    .folders {\r\n        width: 250px;\r\n        margin-right: 20px;\r\n        flex: 1;\r\n    }\r\n\r\n    ul {\r\n        margin: 0;\r\n    }\r\n\r\n    li {\r\n        cursor: pointer;\r\n    }\r\n\r\n    li:hover{\r\n        background-color: #eee;\r\n    }\r\n\r\n    li.active {\r\n        background-color: orange;\r\n    }\r\n\r\n    .folders ul {\r\n        list-style: none;\r\n    }\r\n\r\n    .folders li {\r\n        margin: 5px 0;\r\n        padding: 5px;\r\n    }\r\n\r\n\r\n\r\n    .files {\r\n        flex: 3;\r\n        width: 100%;\r\n        display: flex;\r\n        flex-flow: row wrap;\r\n        list-style: none;\r\n        padding: 0;\r\n    }\r\n\r\n    .files ul {\r\n        display: flex;\r\n        flex-flow: row wrap;\r\n    }\r\n\r\n    .files li {\r\n        display: block;\r\n        box-sizing: border-box;\r\n        width: 25%;\r\n        flex-grow: 0;\r\n        padding: 10px;\r\n    }\r\n\r\n    .files li img {\r\n        width: 100%;\r\n    }\r\n\r\n    label {\r\n        word-break: break-all;\r\n    }\r\n\r\n    .lds-dual-ring {\r\n        display: inline-block;\r\n        width: 80px;\r\n        height: 80px;\r\n    }\r\n    .lds-dual-ring:after {\r\n        content: \" \";\r\n        display: block;\r\n        width: 64px;\r\n        height: 64px;\r\n        margin: 8px;\r\n        border-radius: 50%;\r\n        border: 6px solid #000;\r\n        border-color: #000 transparent #000 transparent;\r\n        animation: lds-dual-ring 1.2s linear infinite;\r\n    }\r\n    @keyframes lds-dual-ring {\r\n        0% {\r\n            transform: rotate(0deg);\r\n        }\r\n        100% {\r\n            transform: rotate(360deg);\r\n        }\r\n    }\r\n</style>\r\n<template>\r\n    <div>\r\n        <div v-show=\"!showImageSelectorState\">\r\n            <div class=\"control-group\">\r\n                <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\r\n                <div class=\"controls\">\r\n                    <p v-show=\"value.thumb\">\r\n                    <img :src=\"value.thumb\" style=\"max-height: 150px;\">\r\n                    </p>\r\n                    <button class=\"btn btn-secondary\" v-on:click.prevent=\"showImageSelector\">{{label}}</button>\r\n                </div>\r\n            </div>\r\n\r\n        </div>\r\n        <div v-show=\"showImageSelectorState\" class=\"fullscreenOverlay\">\r\n            <div class=\"overlay-content\">\r\n                <div class=\"ImageSelector\">\r\n                    <div class=\"folders\">\r\n                        <button v-on:click.prevent=\"hideImageSelector\">&lt;&lt;</button>\r\n                        <input type=\"text\" v-model=\"folderFilter\">\r\n                        <ul>\r\n                            <li v-for=\"myFolder in filteredFolders\" :key=\"myFolder.folder\" :class=\"{active: (myFolder.folder === folder)}\" v-on:click=\"loadFiles(myFolder.folder)\">{{myFolder.name}}</li>\r\n                        </ul>\r\n                    </div>\r\n                    <div class=\"files\">\r\n                        <div v-show=\"isLoading\"><div class=\"lds-dual-ring\"></div></div>\r\n                        <ul v-show=\"!isLoading\">\r\n                            <li v-for=\"file in files\" :key=\"file.id \" v-on:click=\"setImage(file)\">\r\n                                <label>{{file.file}}</label>\r\n                                <img :src=\"file.thumb\">\r\n                            </li>\r\n                        </ul>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import Label from \"./Label\";\r\n\r\n    export default {\r\n        components: {\r\n            Label\r\n        },\r\n        props: {\r\n            name: null,\r\n            label: null,\r\n            description: null,\r\n            loadFoldersUrl: null,\r\n            loadFilesUrl: null,\r\n            value: null\r\n        },\r\n        data() {\r\n            return {\r\n                file: \"\",\r\n                thumb: \"\",\r\n                folder: \"\",\r\n                folders: [],\r\n                files: [],\r\n                isLoading: false,\r\n                folderFilter: \"\",\r\n                showImageSelectorState: false\r\n            };\r\n        },\r\n        computed: {\r\n            filteredFolders: function() {\r\n                if (this.folderFilter === \"\") return this.folders;\r\n                let filter = this.folderFilter.toLowerCase();\r\n\r\n                return this.folders.filter((folder)=>{\r\n                    if (folder.folder.toLowerCase().includes(filter)) {\r\n                        return true;\r\n                    }\r\n                    if (folder.name.toLowerCase().includes(filter)) {\r\n                        return true;\r\n                    }\r\n                    return false;\r\n                })\r\n            },\r\n            image: function() {\r\n                let imageObject = {\r\n                    file: this.file,\r\n                    folder: this.folder,\r\n                    thumb: this.thumb\r\n                };\r\n                return imageObject;\r\n            }\r\n        },\r\n        created() {\r\n            let xhr = new XMLHttpRequest();\r\n            xhr.onreadystatechange = () => {\r\n                if (xhr.readyState === 4) {\r\n                    if (xhr.status === 200) {\r\n                        try {\r\n                            this.folders = JSON.parse(xhr.responseText);\r\n                        } catch (e) {\r\n                            console.log(e);\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n\r\n            xhr.open(\"GET\", this.loadFoldersUrl);\r\n            xhr.send();\r\n        },\r\n        methods: {\r\n            loadFiles: function(folder) {\r\n                if (this.isLoading) return;\r\n                this.folder = folder;\r\n                this.isLoading = true;\r\n                let xhr = new XMLHttpRequest();\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if (xhr.status === 200) {\r\n                            try {\r\n                                this.files = JSON.parse(xhr.responseText);\r\n                                setTimeout(this.sendCustomEvent,500);\r\n\r\n                            } catch (e) {\r\n                                console.log(e);\r\n                            }\r\n                            this.isLoading = false;\r\n                        }\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"GET\", this.loadFilesUrl + '&folder=' + folder);\r\n                xhr.send();\r\n            },\r\n            setImage: function(file) {\r\n                if (file) {\r\n                    this.folder = file.folder;\r\n                    this.file = file.file;\r\n                    this.thumb = file.thumb;\r\n                }\r\n                this.$emit('update:value', this.image)\r\n                if (this.callback) this.callback();\r\n                this.hideImageSelector();\r\n                setTimeout(this.sendCustomEvent, 500);\r\n\r\n            },\r\n            sendCustomEvent: function() {\r\n                let event = new CustomEvent('eventgallery-images-added');\r\n                document.dispatchEvent(event);\r\n            },\r\n            showImageSelector: function() {\r\n                this.showImageSelectorState = true;\r\n            },\r\n            hideImageSelector: function() {\r\n                this.showImageSelectorState = false;\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<template>\r\n    <div class=\"control-group\">\r\n        <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\r\n        <div class=\"controls\">\r\n            <input class=\"form-control\"\r\n                    :name=\"name\"\r\n                    v-bind:value=\"value\"\r\n                    v-on:input=\"$emit('update:value', $event.target.value)\"\r\n            >\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import Label from \"./Label\";\r\n\r\n    export default {\r\n        components: {\r\n            Label\r\n        },\r\n        props: {\r\n            name: null,\r\n            label: null,\r\n            description: null,\r\n            value: null,\r\n            defaultValue: null\r\n        },\r\n        data() {\r\n            return {\r\n            };\r\n        },\r\n        mounted() {\r\n            this.$emit('update:value', this.defaultValue)\r\n        },\r\n        methods: {\r\n        }\r\n    };\r\n</script>\r\n","<style scoped>\r\n    /* Tooltip container */\r\n    .eg-tooltip {\r\n        position: relative;\r\n        display: inline-block;\r\n        padding-right: 10px;\r\n    }\r\n\r\n    /* Tooltip text */\r\n    .eg-tooltip .eg-tooltiptext {\r\n        visibility: hidden;\r\n        width: 170px;\r\n        background-color: #EEE;\r\n        color: #000;\r\n        text-align: center;\r\n        padding: 5px;\r\n        border-radius: 6px;\r\n        border: 1px solid #CCC;\r\n        position: absolute;\r\n        z-index: 1;\r\n    }\r\n\r\n    .eg-tooltip:hover .eg-tooltiptext,\r\n    .eg-tooltip:active .eg-tooltiptext{\r\n        visibility: visible;\r\n    }\r\n\r\n    .eg-tooltip-right {\r\n        top: -50%;\r\n        left: 100%;\r\n    }\r\n</style>\r\n\r\n<template>\r\n    <label class=\"eg-tooltip\"><span class=\"eg-tooltiptext eg-tooltip-right\">{{description}}</span>{{label}}</label>\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        props: {\r\n            label: String,\r\n            description: String\r\n        }\r\n    };\r\n</script>\r\n","<template>\r\n    <div class=\"control-group\">\r\n        <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\r\n        <div class=\"controls\">\r\n\r\n              <div class=\"form-check\" v-for=\"item in options\">\r\n                <input type=\"radio\" class=\"pull-left form-check-input\" :id=\"item.name + item.value\"\r\n                       v-model=\"currentOption\" :value=\"item.value\" :key=\"item.Id\" :selected=\"value === item.value\" @input=\"$emit('update:value', $event.target.value)\" />\r\n                <label class=\"radio form-check-label\" :for=\"item.name + item.value\">\r\n                    {{item.text}}\r\n                </label>\r\n              </div>\r\n\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import Label from \"./Label\";\r\n\r\n    export default {\r\n        components: {\r\n            Label\r\n        },\r\n        props: {\r\n            name: null,\r\n            label: null,\r\n            description: null,\r\n            value: null,\r\n            options: null,\r\n            defaultValue: null,\r\n        },\r\n        data() {\r\n            return {\r\n                currentOption: \"\"\r\n            };\r\n        },\r\n        watch: {\r\n            value: function(newValue){\r\n                this.currentOption = newValue;\r\n            }\r\n        },\r\n        mounted() {\r\n            if (this.defaultValue) {\r\n                this.currentOption = this.defaultValue;\r\n            } else {\r\n                this.currentOption = this.options[0].value;\r\n            }\r\n            this.$emit('update:value', this.currentOption);\r\n        },\r\n        methods: {\r\n\r\n        }\r\n    };\r\n</script>\r\n","<template>\r\n    <div class=\"control-group\">\r\n        <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\r\n        <div class=\"controls\">\r\n            <select class=\"form-control\" v-model=\"currentOption\" @input=\"$emit('update:value', $event.target.value)\">\r\n                <option v-for=\"item in options\" :value=\"item.value\" :key=\"item.value\" :selected=\"value === item.value\">{{ item.text }}</option>\r\n            </select>\r\n        </div>\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import Label from \"./Label\";\r\n\r\n    export default {\r\n        components: {\r\n            Label\r\n        },\r\n        props: {\r\n            name: null,\r\n            label: null,\r\n            description: null,\r\n            value: null,\r\n            options: null,\r\n            defaultValue: null,\r\n        },\r\n        data() {\r\n            return {\r\n                currentOption: \"\"\r\n            };\r\n        },\r\n        watch: {\r\n            value: function(newValue){\r\n                this.currentOption = newValue;\r\n            }\r\n        },\r\n        mounted() {\r\n            this.currentOption = this.defaultValue;\r\n            this.$emit('update:value', this.currentOption)\r\n        },\r\n        methods: {\r\n\r\n        }\r\n    };\r\n</script>\r\n","<style scoped>\r\n    table {\r\n        min-width: 200px;\r\n        margin-top: 20px;\r\n    }\r\n\r\n    th{\r\n        text-align: left;\r\n    }\r\n\r\n    td {\r\n        padding: 10px;\r\n    }\r\n\r\n    td.action {\r\n        text-align: right;\r\n    }\r\n\r\n    input {\r\n        width: 75px;\r\n    }\r\n\r\n    tr:nth-child(even) {\r\n        background-color: #eee;\r\n    }\r\n\r\n    tr:hover {\r\n        background-color: orange;\r\n    }\r\n\r\n    .form-control {\r\n        display: inline-block;\r\n        margin: 0 10px;\r\n    }\r\n</style>\r\n<template>\r\n    <div>\r\n        <input type=\"hidden\" :name=\"inputName\" :value=\"currentInputValue\" :id=\"inputId\">\r\n\r\n        <div class=\"input-append\">\r\n            <span class=\"add-on\">Quantity</span><input class=\"form-control\" v-model=\"newQuantity\" type=\"number\" min=\"2\">\r\n            <span class=\"add-on\">Price</span><input class=\"form-control\" v-model=\"newPrice\" type=\"text\" >\r\n            <button class=\"btn btn-success\" v-on:click.prevent=\"addScalePrice\">+</button>\r\n        </div>\r\n\r\n        <table>\r\n            <tbody>\r\n                <tr>\r\n                    <th>Quantity</th>\r\n                    <th>Price</th>\r\n                    <th>&nbsp;</th>\r\n                </tr>\r\n\r\n                <tr v-for=\"scalePrice in sortedScalePrices\" :key=\"scalePrice.id\">\r\n                    <td>{{scalePrice.quantity}}</td>\r\n                    <td>{{scalePrice.price}}</td>\r\n                    <td class=\"action\"><button class=\"btn btn-danger\" v-on:click.prevent=\"deleteQuantity(scalePrice.quantity)\">-</button></td>\r\n                </tr>\r\n            </tbody>\r\n        </table>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        props: {\r\n            inputName: null,\r\n            inputId: null,\r\n            inputValue: null,\r\n            i18n: null,\r\n        },\r\n        data() {\r\n            return {\r\n                scalePrices: [],\r\n                newQuantity: '',\r\n                newPrice: '',\r\n                currentId: 0\r\n            };\r\n        },\r\n        computed: {\r\n            sortedScalePrices: function() {\r\n                return this.scalePrices.sort((sp1, sp2) => {\r\n                    let n1 = parseInt(sp1.quantity);\r\n                    let n2 = parseInt(sp2.quantity);\r\n                    if (n1 > n2) return 1;\r\n                    if (n1 < n2) return -1;\r\n                    return 0;\r\n                })\r\n            },\r\n            currentInputValue: function() {\r\n                let simpleDataStructure = this.sortedScalePrices.map((scalePrice) => {\r\n                    return {\r\n                        quantity: scalePrice.quantity,\r\n                        price: scalePrice.price\r\n                    }\r\n                });\r\n                return JSON.stringify(simpleDataStructure);\r\n            },\r\n        },\r\n        mounted() {\r\n            let data = JSON.parse(this.inputValue);\r\n            this.scalePrices = [];\r\n            data.forEach((entry) => {\r\n                this.createEntry(entry.quantity, entry.price);\r\n            })\r\n        },\r\n        methods: {\r\n            addScalePrice: function() {\r\n                if (this.newQuantity>1 && this.newPrice.length>0) {\r\n                    this.deleteQuantity(this.newQuantity);\r\n                    this.createEntry(this.newQuantity, this.newPrice);\r\n                    this.newPrice = '';\r\n                    this.newQuantity = '';\r\n                }\r\n            },\r\n            deleteQuantity: function(quantity) {\r\n                this.scalePrices = this.scalePrices.filter((scalePrice)=> {\r\n                    return scalePrice.quantity !== quantity;\r\n                })\r\n            },\r\n            createEntry: function(quantity, price) {\r\n                this.scalePrices.push({price: price, quantity: quantity, id: this.getNextId()})\r\n            },\r\n            getNextId: function() {\r\n                return this.currentId++;\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<style scoped lang=\"less\">\r\n\r\n</style>\r\n\r\n<template>\r\n    <div id=\"Thumbnailcreator\">\r\n\r\n\r\n        <p class=\"well\">\r\n            <span v-html=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START2_DESC')\"></span>\r\n            <br><br>\r\n            <label class=\"checkbox\">\r\n                <input v-model=\"refreshetags\" type=\"checkbox\">  {{i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_REFRESHETAGS_DESC')}}\r\n            </label>\r\n\r\n        </p>\r\n\r\n        <ErrorPanel :error-messages=\"errorMessages\" :failed-folders=\"failedFolders\" :headline=\"i18n.t('COM_EVENTGALLERY_SYNC_ERROR_HEADLINE')\"></ErrorPanel>\r\n\r\n        <ProcessSteps :i18n=\"i18n\"\r\n                      :number-of-selected-files=\"numberOfSyncableFiles\"\r\n                      :number-of-selected-folders=\"selectedFolders.length\"\r\n                      :is-ready-for-sync-files=\"isSyncFilesProcessReadyToStart\"\r\n                      :running=\"running\"\r\n                      :i18n_label-step1=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP1')\"\r\n                      :i18n_label-step2=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_GETMISSINGTHUMBNAILS')\"\r\n                      :i18n_label-step3=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START_THUMBNAILCREATION')\"\r\n                      :i18n_hint-step2=\"i18n.t('')\"\r\n                      :i18n_hint-step3=\"i18n.t('')\"\r\n                      :i18n_label-button-step2=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START')\"\r\n                      :i18n_label-button-step3=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START')\"\r\n                      :i18n_label-items-step2=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_STEP2_ITEMS')\"\r\n                      :i18n_label-items-step3=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_STEP3_ITEMS')\"\r\n                      v-on:sync-files=\"syncFiles\"\r\n                      v-on:sync-folders=\"syncFolders\">\r\n        </ProcessSteps>\r\n\r\n        <div class=\"control-group\">\r\n            <div class=\"controls\">\r\n                <div class=\"btn-group sync-buttons\">\r\n                    <button class=\"btn btn-light checkall\" v-on:click=\"checkAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_ALL')}}</button>\r\n                    <button class=\"btn btn-light\" v-on:click=\"uncheckAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_NONE')}}</button>\r\n                    <button class=\"btn btn-warning\" :disabled=\"!running\" v-on:click=\"stopQueue\">{{i18n.t('COM_EVENTGALLERY_SYNC_STOP_QUEUE')}}</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <Progress v-if=\"numberOfTasks>0\"\r\n                  :remaining=\"numberOfTasks\"\r\n                  :total=\"numberOfLastQueuePush\"></Progress>\r\n\r\n        <Folders :folders=\"folders\" :blocked=\"running\" :i18n_label-need-sync=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_OPEN_IMAGES_NEEDS_SYNC')\"></Folders>\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import queue from 'async/queue';\r\n    import { createBatches } from \"../../../common/js/BatchCreator\";\r\n    import Folders from \"../components/Folders.vue\";\r\n    import ProcessSteps from \"../components/ProcessSteps.vue\";\r\n    import Progress from \"../components/Progress.vue\";\r\n    import ErrorPanel from \"../components/ErrorPanel.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Folders, Progress, ErrorPanel, ProcessSteps\r\n        },\r\n        props: {\r\n            i18n: null,\r\n            loadFoldersUrl: null,\r\n            fileSyncUrl: null,\r\n            folderSyncUrl: null,\r\n            csrfToken: null,\r\n            fileBatchSize: null,\r\n            maxParallelRequests: null,\r\n        },\r\n        data() {\r\n            return {\r\n                folders: [],\r\n                failedFolders: [],\r\n                errorMessages: [],\r\n                queue: null,\r\n                numberOfRunningTasks: 0,\r\n                numberOfTasks: 0,\r\n                numberOfLastQueuePush: 0,\r\n                running: false,\r\n                refreshetags: true\r\n\r\n            };\r\n        },\r\n        created: function() {\r\n            this.queue = queue((task, callback) => {\r\n                task(callback);\r\n            }, this.maxParallelRequests);\r\n            this.queue.drain(()=>{\r\n                this.updateQueueStatus();\r\n                this.running = false;\r\n            });\r\n        },\r\n        mounted: function() {\r\n            this.loadFolders();\r\n        },\r\n        computed: {\r\n            numberOfSyncableFiles: function() {\r\n                let number = 0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (folder.files) {\r\n                        number += folder.files.filter(file => {return file.status !== 'synced'}).length;\r\n                        //number +=folder.files.length\r\n                    }\r\n                });\r\n                return number;\r\n            },\r\n            selectedFolders: function() {\r\n                return this.folders.filter((folder)=> {\r\n                    return folder.checked;\r\n                });\r\n            },\r\n            isSyncFilesProcessReadyToStart: function() {\r\n                let isReady = this.selectedFolders.length>0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (!folder.files) {\r\n                        isReady = false;\r\n                    }\r\n                });\r\n                return isReady;\r\n            }\r\n        },\r\n        methods: {\r\n            checkAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=true})\r\n            },\r\n            uncheckAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=false})\r\n            },\r\n            stopQueue: function(){\r\n                this.queue.remove(() => {return true});\r\n            },\r\n            updateQueueStatus: function() {\r\n                this.numberOfRunningTasks = this.queue.running();\r\n                this.numberOfTasks = this.queue.length() + this.numberOfRunningTasks;\r\n            },\r\n            syncFolders: function() {\r\n                this.running = true;\r\n                this.selectedFolders.forEach((folder) => {\r\n                        this.queue.push((done) => { this.syncFolder(folder, () => {done(); this.updateQueueStatus(); })});\r\n                });\r\n                this.numberOfLastQueuePush = this.selectedFolders.length;\r\n            },\r\n            syncFolder: function(folder, done) {\r\n\r\n                let data = 'folder=' + folder.foldername + \"&foldertype=\" + folder.foldertype + '&refreshetags=' + this.refreshetags + '&' + this.csrfToken + '=1';\r\n                let xhr = new XMLHttpRequest();\r\n\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if(xhr.status === 200) {\r\n                            try {\r\n                                let responseJSON = JSON.parse(xhr.responseText);\r\n                                let files = [];\r\n                                responseJSON.files.forEach(file => {\r\n                                    files.push({foldername: folder.foldername, filename: file, status: 'new'})\r\n                                });\r\n\r\n                                folder.files = files;\r\n                                folder.status = responseJSON.status;\r\n                            } catch(e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.folderSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            syncFiles: function() {\r\n                this.running = true;\r\n\r\n                let files = [];\r\n\r\n                this.folders.forEach((folder) => {\r\n                    if (folder.checked) {\r\n                        folder.files.forEach((file)=>{\r\n                            files.push(file);\r\n                        })\r\n                    }\r\n                });\r\n\r\n                let batches = createBatches(files, this.fileBatchSize);\r\n                batches.forEach((fileBatch) => {\r\n                    this.queue.push((done) => { this.syncFileBatch(fileBatch, () => {done(); this.updateQueueStatus();})});\r\n                });\r\n                this.numberOfLastQueuePush = files.length>0 ? batches.length : 0;\r\n            },\r\n            syncFileBatch: function(fileBatch, done) {\r\n                let data = this.csrfToken + '=1';\r\n\r\n                fileBatch.forEach(file =>  {\r\n                    data +='&folder[]=' + encodeURIComponent(file.foldername) + '&file[]=' + encodeURIComponent(file.filename)\r\n                });\r\n\r\n                let xhr = new XMLHttpRequest();\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if (xhr.status === 200) {\r\n                            try {\r\n                                let resultFiles = JSON.parse(xhr.responseText);\r\n                                fileBatch.forEach(file => {\r\n                                    resultFiles.forEach(resultFile => {\r\n                                        if (file.foldername === resultFile.foldername && file.filename === resultFile.filename) {\r\n                                            file.status = 'sync';\r\n                                        }\r\n                                    });\r\n                                })\r\n                            } catch (e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.fileSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            loadFolders: function() {\r\n                let xhr = new XMLHttpRequest();\r\n                let data = this.csrfToken + '=1';\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4 && xhr.status === 200) {\r\n                        try {\r\n                            let folders = JSON.parse(xhr.responseText);\r\n\r\n                            folders.forEach(folder => {\r\n                                if (folder.error != null) {\r\n                                    this.failedFolders.push(folder);\r\n                                } else {\r\n                                    folder.checked = folder.isNew;\r\n                                    this.folders.push(folder);\r\n                                }\r\n                            });\r\n                        } catch(e) {\r\n                            console.log(e);\r\n                            this.errorMessages.push(xhr.responseText);\r\n                        }\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.loadFoldersUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<style scoped lang=\"less\">\r\n    @import \"_Uploader.less\";\r\n\r\n\r\n\r\n    .eg-progressbar {\r\n        margin: 0;\r\n        background-color: rgba(243, 156, 18, 0.15);\r\n        .eg-progressbar-state {\r\n            height: 20px;\r\n        }\r\n    }\r\n\r\n    .upload-type-select {\r\n        --color-primary: #8fcbf3; /* any format you want here */\r\n        --color-primary-darker: hsl(from var(--color-primary) h s calc(l - 5));\r\n        --color-primary-darkest: hsl(from var(--color-primary) h s calc(l - 10));\r\n\r\n        --color-secondary: #CFCFCF; /* any format you want here */\r\n        --color-secondary-darker: hsl(from var(--color-secondary) h s calc(l - 5));\r\n        --color-secondary-darkest: hsl(from var(--color-secondary) h s calc(l - 10));\r\n\r\n        display: flex;\r\n        flex-wrap: nowrap;\r\n        justify-content: space-evenly;\r\n        margin-bottom: 20px;\r\n        cursor: pointer;\r\n\r\n        div:first-child {\r\n            border-top-left-radius: 5px;\r\n        }\r\n\r\n        div:last-child {\r\n            border-top-right-radius: 5px;\r\n        }\r\n\r\n        div {\r\n            background-color: var(--color-secondary);\r\n            padding: 10px;\r\n            width: 100%;\r\n        }\r\n\r\n        div:hover {\r\n            background-color: var(--color-secondary-darker);\r\n            font-weight: bold;\r\n        }\r\n        div.active {\r\n            background-color: var(--color-primary);\r\n            font-weight: bolder;\r\n        }\r\n        div.active:hover {\r\n            background-color: var(--color-primary-darker);\r\n        }\r\n    }\r\n</style>\r\n\r\n<template>\r\n    <div class=\"Uploader\">\r\n        <div class=\"card mb-2\">\r\n            <div class=\"card-body\">\r\n\r\n                <div class=\"upload-type-select\">\r\n                    <div :class=\"{active: fileselectMode ==='FILE' }\" @click=\"fileselectMode = 'FILE'\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_SELECT_LOCAL_FILES}}</div>\r\n                    <div :class=\"{active: fileselectMode ==='GOOGLE' }\" @click=\"fileselectMode = 'GOOGLE'\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_SELECT_GOOGLE_PHOTOS}}</div>\r\n                </div>\r\n\r\n                <div>\r\n                    <label for=\"doresize\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_DO_RESIZE_LABEL.replace('%s', maxImageSize)}}:</label>\r\n                    <input type=\"checkbox\" id=\"doresize\" name=\"doresize\" v-model=\"doResize\">\r\n                </div>\r\n\r\n                <GoogleFilePicker v-if=\"fileselectMode === 'GOOGLE'\" :maxImageSize=\"maxImageSize\" :googlePickerUrls=\"googlePickerUrls\" :i18n=\"i18n\" :doResize=\"doResize\" @addFileCallback=\"addFile\"></GoogleFilePicker>\r\n                <LocaLFilePicker v-if=\"fileselectMode === 'FILE'\" :i18n=\"i18n\" :doResize=\"doResize\" @addFileCallback=\"addFile\"></LocaLFilePicker>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"card mb-2\" v-if=\"pendingFiles.length + inProgressFiles.length > 0\">\r\n            <div class=\"card-body\">\r\n                <div class=\"eg-progressbar\">\r\n                    <div class=\"eg-progressbar-state\" v-bind:style=\"{width: progress + '%'}\"></div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"card mb-2\">\r\n            <div class=\"eg-bo-row card-body\">\r\n                <div v-if=\"pendingFiles.length > 0\" class=\"eg-bo-column3\">\r\n                    <h2 >{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_PENDING}}</h2>\r\n                    <ul id=\"pending\">\r\n                        <li v-for=\"pendingFile in revertedPendingFiles\">\r\n                            {{ pendingFile.name }}\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n\r\n                <div v-if=\"finishedFilesContent.length > 0 || inProgressFiles.length > 0 || failedFilesContent.length > 0\" class=\"eg-bo-column9\">\r\n                    <h2>{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_FINISHED}}</h2>\r\n                    <ul id=\"finished\" class=\"eg-bo-row\" style=\"flex-wrap: wrap; align-items: baseline;\">\r\n                        <li v-for=\"inProgressFile in inProgressFiles\" class=\"eg-bo-column3\">\r\n                            <div>{{ inProgressFile.name }}</div>\r\n                            <div class=\"lds-ring\"><div></div><div></div><div></div><div></div></div>\r\n                        </li>\r\n                        <li v-for=\"failedFileContent in failedFilesContent\" class=\"eg-bo-column3\" v-html=\"failedFileContent.content\" v-bind:key=\"failedFileContent.id\">\r\n                        </li>\r\n                        <li v-for=\"finishedFileContent in revertedFinishedFilesContent\" v-html=\"finishedFileContent.content\" v-bind:key=\"finishedFileContent.id\" class=\"eg-bo-column3\">\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import {removeElement} from '../../../common/js/Helpers';\r\n    import GoogleFilePicker from \"./components/GoogleFilePicker.vue\";\r\n    import LocaLFilePicker from \"./components/LocalFilePicker.vue\";\r\n\r\n    export default {\r\n        components: {LocaLFilePicker, GoogleFilePicker},\r\n        props: {\r\n            i18n: null,\r\n            uploadUrl: null,\r\n            maxFileSize: null,\r\n            maxImageSize: null,\r\n            initDoResize: null,\r\n            googlePickerUrls: null,\r\n        },\r\n        computed: {\r\n            progress: function() {\r\n                const total = this.pendingFiles.length + this.inProgressFiles.length + this.finishedFilesContent.length + this.failedFilesContent.length;\r\n                return (total - this.pendingFiles.length) / total * 100;\r\n            },\r\n            revertedPendingFiles: function() {\r\n                  return this.pendingFiles.slice().reverse();\r\n            },\r\n            revertedFinishedFilesContent: function() {\r\n                return this.finishedFilesContent.slice().reverse();\r\n            }\r\n        },\r\n        watch: {\r\n            fileselectMode(newVal, oldVal) {\r\n                localStorage.setItem('eg-fileupload-mode', newVal)\r\n            }\r\n        },\r\n        data() {\r\n            return {\r\n                pendingFiles: [],\r\n                inProgressFiles: [],\r\n                finishedFilesContent: [],\r\n                failedFilesContent: [],\r\n                doResize: this.initDoResize,\r\n                fileselectMode: localStorage.getItem('eg-fileupload-mode') ?? 'FILE'\r\n            };\r\n        },\r\n        methods: {\r\n            addFile: function (file) {\r\n                console.log('adding file', file)\r\n                this.pendingFiles.push(file);\r\n                this.upload();\r\n            },\r\n            upload: function() {\r\n                if (this.pendingFiles.length === 0 || this.inProgressFiles.length > 0) {\r\n                    return;\r\n                }\r\n\r\n                let uploadFile = this.pendingFiles.pop();\r\n                let localFile = uploadFile.localFile;\r\n                let data = new FormData();\r\n                let xhr = new XMLHttpRequest();\r\n\r\n                if (xhr.upload && localFile.size <= this.maxFileSize) {\r\n\r\n                    this.inProgressFiles.push(uploadFile);\r\n\r\n                    // file received/failed\r\n                    xhr.onreadystatechange = () => {\r\n                        if (xhr.readyState === 4) {\r\n                            if (xhr.status === 200) {\r\n                                this.finishedFilesContent.push({id: this.finishedFilesContent.length,'content':xhr.responseText});\r\n                            } else {\r\n                                this.failedFilesContent.push({id: this.failedFilesContent.length,'content': xhr.responseText});\r\n                            }\r\n                            removeElement(this.inProgressFiles, uploadFile);\r\n                            this.upload();\r\n                        }\r\n                    };\r\n\r\n                    data.append('file', localFile, uploadFile.name);\r\n                    data.append('doresize', uploadFile.doResize?'true':'false')\r\n\r\n                    xhr.open(\"POST\", this.uploadUrl, true);\r\n                    xhr.send(data);\r\n\r\n                } else {\r\n                    console.log(\"invalid file, will not try to upload it\");\r\n                    this.upload();\r\n                }\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","module.exports = function (list) {\n  var addAsync = function (values, callback, items) {\n    var valuesToAdd = values.splice(0, 50)\n    items = items || []\n    items = items.concat(list.add(valuesToAdd))\n    if (values.length > 0) {\n      setTimeout(function () {\n        addAsync(values, callback, items)\n      }, 1)\n    } else {\n      list.update()\n      callback(items)\n    }\n  }\n  return addAsync\n}\n","module.exports = function (list) {\n  // Add handlers\n  list.handlers.filterStart = list.handlers.filterStart || []\n  list.handlers.filterComplete = list.handlers.filterComplete || []\n\n  return function (filterFunction) {\n    list.trigger('filterStart')\n    list.i = 1 // Reset paging\n    list.reset.filter()\n    if (filterFunction === undefined) {\n      list.filtered = false\n    } else {\n      list.filtered = true\n      var is = list.items\n      for (var i = 0, il = is.length; i < il; i++) {\n        var item = is[i]\n        if (filterFunction(item)) {\n          item.filtered = true\n        } else {\n          item.filtered = false\n        }\n      }\n    }\n    list.update()\n    list.trigger('filterComplete')\n    return list.visibleItems\n  }\n}\n","var classes = require('./utils/classes'),\n  events = require('./utils/events'),\n  extend = require('./utils/extend'),\n  toString = require('./utils/to-string'),\n  getByClass = require('./utils/get-by-class'),\n  fuzzy = require('./utils/fuzzy')\n\nmodule.exports = function (list, options) {\n  options = options || {}\n\n  options = extend(\n    {\n      location: 0,\n      distance: 100,\n      threshold: 0.4,\n      multiSearch: true,\n      searchClass: 'fuzzy-search',\n    },\n    options\n  )\n\n  var fuzzySearch = {\n    search: function (searchString, columns) {\n      // Substract arguments from the searchString or put searchString as only argument\n      var searchArguments = options.multiSearch ? searchString.replace(/ +$/, '').split(/ +/) : [searchString]\n\n      for (var k = 0, kl = list.items.length; k < kl; k++) {\n        fuzzySearch.item(list.items[k], columns, searchArguments)\n      }\n    },\n    item: function (item, columns, searchArguments) {\n      var found = true\n      for (var i = 0; i < searchArguments.length; i++) {\n        var foundArgument = false\n        for (var j = 0, jl = columns.length; j < jl; j++) {\n          if (fuzzySearch.values(item.values(), columns[j], searchArguments[i])) {\n            foundArgument = true\n          }\n        }\n        if (!foundArgument) {\n          found = false\n        }\n      }\n      item.found = found\n    },\n    values: function (values, value, searchArgument) {\n      if (values.hasOwnProperty(value)) {\n        var text = toString(values[value]).toLowerCase()\n\n        if (fuzzy(text, searchArgument, options)) {\n          return true\n        }\n      }\n      return false\n    },\n  }\n\n  events.bind(\n    getByClass(list.listContainer, options.searchClass),\n    'keyup',\n    list.utils.events.debounce(function (e) {\n      var target = e.target || e.srcElement // IE have srcElement\n      list.search(target.value, fuzzySearch.search)\n    }, list.searchDelay)\n  )\n\n  return function (str, columns) {\n    list.search(str, columns, fuzzySearch.search)\n  }\n}\n","var naturalSort = require('string-natural-compare'),\n  getByClass = require('./utils/get-by-class'),\n  extend = require('./utils/extend'),\n  indexOf = require('./utils/index-of'),\n  events = require('./utils/events'),\n  toString = require('./utils/to-string'),\n  classes = require('./utils/classes'),\n  getAttribute = require('./utils/get-attribute'),\n  toArray = require('./utils/to-array')\n\nmodule.exports = function (id, options, values) {\n  var self = this,\n    init,\n    Item = require('./item')(self),\n    addAsync = require('./add-async')(self),\n    initPagination = require('./pagination')(self)\n\n  init = {\n    start: function () {\n      self.listClass = 'list'\n      self.searchClass = 'search'\n      self.sortClass = 'sort'\n      self.page = 10000\n      self.i = 1\n      self.items = []\n      self.visibleItems = []\n      self.matchingItems = []\n      self.searched = false\n      self.filtered = false\n      self.searchColumns = undefined\n      self.searchDelay = 0\n      self.handlers = { updated: [] }\n      self.valueNames = []\n      self.utils = {\n        getByClass: getByClass,\n        extend: extend,\n        indexOf: indexOf,\n        events: events,\n        toString: toString,\n        naturalSort: naturalSort,\n        classes: classes,\n        getAttribute: getAttribute,\n        toArray: toArray,\n      }\n\n      self.utils.extend(self, options)\n\n      self.listContainer = typeof id === 'string' ? document.getElementById(id) : id\n      if (!self.listContainer) {\n        return\n      }\n      self.list = getByClass(self.listContainer, self.listClass, true)\n\n      self.parse = require('./parse')(self)\n      self.templater = require('./templater')(self)\n      self.search = require('./search')(self)\n      self.filter = require('./filter')(self)\n      self.sort = require('./sort')(self)\n      self.fuzzySearch = require('./fuzzy-search')(self, options.fuzzySearch)\n\n      this.handlers()\n      this.items()\n      this.pagination()\n\n      self.update()\n    },\n    handlers: function () {\n      for (var handler in self.handlers) {\n        if (self[handler] && self.handlers.hasOwnProperty(handler)) {\n          self.on(handler, self[handler])\n        }\n      }\n    },\n    items: function () {\n      self.parse(self.list)\n      if (values !== undefined) {\n        self.add(values)\n      }\n    },\n    pagination: function () {\n      if (options.pagination !== undefined) {\n        if (options.pagination === true) {\n          options.pagination = [{}]\n        }\n        if (options.pagination[0] === undefined) {\n          options.pagination = [options.pagination]\n        }\n        for (var i = 0, il = options.pagination.length; i < il; i++) {\n          initPagination(options.pagination[i])\n        }\n      }\n    },\n  }\n\n  /*\n   * Re-parse the List, use if html have changed\n   */\n  this.reIndex = function () {\n    self.items = []\n    self.visibleItems = []\n    self.matchingItems = []\n    self.searched = false\n    self.filtered = false\n    self.parse(self.list)\n  }\n\n  this.toJSON = function () {\n    var json = []\n    for (var i = 0, il = self.items.length; i < il; i++) {\n      json.push(self.items[i].values())\n    }\n    return json\n  }\n\n  /*\n   * Add object to list\n   */\n  this.add = function (values, callback) {\n    if (values.length === 0) {\n      return\n    }\n    if (callback) {\n      addAsync(values.slice(0), callback)\n      return\n    }\n    var added = [],\n      notCreate = false\n    if (values[0] === undefined) {\n      values = [values]\n    }\n    for (var i = 0, il = values.length; i < il; i++) {\n      var item = null\n      notCreate = self.items.length > self.page ? true : false\n      item = new Item(values[i], undefined, notCreate)\n      self.items.push(item)\n      added.push(item)\n    }\n    self.update()\n    return added\n  }\n\n  this.show = function (i, page) {\n    this.i = i\n    this.page = page\n    self.update()\n    return self\n  }\n\n  /* Removes object from list.\n   * Loops through the list and removes objects where\n   * property \"valuename\" === value\n   */\n  this.remove = function (valueName, value, options) {\n    var found = 0\n    for (var i = 0, il = self.items.length; i < il; i++) {\n      if (self.items[i].values()[valueName] == value) {\n        self.templater.remove(self.items[i], options)\n        self.items.splice(i, 1)\n        il--\n        i--\n        found++\n      }\n    }\n    self.update()\n    return found\n  }\n\n  /* Gets the objects in the list which\n   * property \"valueName\" === value\n   */\n  this.get = function (valueName, value) {\n    var matchedItems = []\n    for (var i = 0, il = self.items.length; i < il; i++) {\n      var item = self.items[i]\n      if (item.values()[valueName] == value) {\n        matchedItems.push(item)\n      }\n    }\n    return matchedItems\n  }\n\n  /*\n   * Get size of the list\n   */\n  this.size = function () {\n    return self.items.length\n  }\n\n  /*\n   * Removes all items from the list\n   */\n  this.clear = function () {\n    self.templater.clear()\n    self.items = []\n    return self\n  }\n\n  this.on = function (event, callback) {\n    self.handlers[event].push(callback)\n    return self\n  }\n\n  this.off = function (event, callback) {\n    var e = self.handlers[event]\n    var index = indexOf(e, callback)\n    if (index > -1) {\n      e.splice(index, 1)\n    }\n    return self\n  }\n\n  this.trigger = function (event) {\n    var i = self.handlers[event].length\n    while (i--) {\n      self.handlers[event][i](self)\n    }\n    return self\n  }\n\n  this.reset = {\n    filter: function () {\n      var is = self.items,\n        il = is.length\n      while (il--) {\n        is[il].filtered = false\n      }\n      return self\n    },\n    search: function () {\n      var is = self.items,\n        il = is.length\n      while (il--) {\n        is[il].found = false\n      }\n      return self\n    },\n  }\n\n  this.update = function () {\n    var is = self.items,\n      il = is.length\n\n    self.visibleItems = []\n    self.matchingItems = []\n    self.templater.clear()\n    for (var i = 0; i < il; i++) {\n      if (is[i].matching() && self.matchingItems.length + 1 >= self.i && self.visibleItems.length < self.page) {\n        is[i].show()\n        self.visibleItems.push(is[i])\n        self.matchingItems.push(is[i])\n      } else if (is[i].matching()) {\n        self.matchingItems.push(is[i])\n        is[i].hide()\n      } else {\n        is[i].hide()\n      }\n    }\n    self.trigger('updated')\n    return self\n  }\n\n  init.start()\n}\n","module.exports = function (list) {\n  return function (initValues, element, notCreate) {\n    var item = this\n\n    this._values = {}\n\n    this.found = false // Show if list.searched == true and this.found == true\n    this.filtered = false // Show if list.filtered == true and this.filtered == true\n\n    var init = function (initValues, element, notCreate) {\n      if (element === undefined) {\n        if (notCreate) {\n          item.values(initValues, notCreate)\n        } else {\n          item.values(initValues)\n        }\n      } else {\n        item.elm = element\n        var values = list.templater.get(item, initValues)\n        item.values(values)\n      }\n    }\n\n    this.values = function (newValues, notCreate) {\n      if (newValues !== undefined) {\n        for (var name in newValues) {\n          item._values[name] = newValues[name]\n        }\n        if (notCreate !== true) {\n          list.templater.set(item, item.values())\n        }\n      } else {\n        return item._values\n      }\n    }\n\n    this.show = function () {\n      list.templater.show(item)\n    }\n\n    this.hide = function () {\n      list.templater.hide(item)\n    }\n\n    this.matching = function () {\n      return (\n        (list.filtered && list.searched && item.found && item.filtered) ||\n        (list.filtered && !list.searched && item.filtered) ||\n        (!list.filtered && list.searched && item.found) ||\n        (!list.filtered && !list.searched)\n      )\n    }\n\n    this.visible = function () {\n      return item.elm && item.elm.parentNode == list.list ? true : false\n    }\n\n    init(initValues, element, notCreate)\n  }\n}\n","var classes = require('./utils/classes'),\n  events = require('./utils/events'),\n  List = require('./index')\n\nmodule.exports = function (list) {\n  var isHidden = false\n\n  var refresh = function (pagingList, options) {\n    if (list.page < 1) {\n      list.listContainer.style.display = 'none'\n      isHidden = true\n      return\n    } else if (isHidden) {\n      list.listContainer.style.display = 'block'\n    }\n\n    var item,\n      l = list.matchingItems.length,\n      index = list.i,\n      page = list.page,\n      pages = Math.ceil(l / page),\n      currentPage = Math.ceil(index / page),\n      innerWindow = options.innerWindow || 2,\n      left = options.left || options.outerWindow || 0,\n      right = options.right || options.outerWindow || 0\n\n    right = pages - right\n    pagingList.clear()\n    for (var i = 1; i <= pages; i++) {\n      var className = currentPage === i ? 'active' : ''\n\n      //console.log(i, left, right, currentPage, (currentPage - innerWindow), (currentPage + innerWindow), className);\n\n      if (is.number(i, left, right, currentPage, innerWindow)) {\n        item = pagingList.add({\n          page: i,\n          dotted: false,\n        })[0]\n        if (className) {\n          classes(item.elm).add(className)\n        }\n        item.elm.firstChild.setAttribute('data-i', i)\n        item.elm.firstChild.setAttribute('data-page', page)\n      } else if (is.dotted(pagingList, i, left, right, currentPage, innerWindow, pagingList.size())) {\n        item = pagingList.add({\n          page: '...',\n          dotted: true,\n        })[0]\n        classes(item.elm).add('disabled')\n      }\n    }\n  }\n\n  var is = {\n    number: function (i, left, right, currentPage, innerWindow) {\n      return this.left(i, left) || this.right(i, right) || this.innerWindow(i, currentPage, innerWindow)\n    },\n    left: function (i, left) {\n      return i <= left\n    },\n    right: function (i, right) {\n      return i > right\n    },\n    innerWindow: function (i, currentPage, innerWindow) {\n      return i >= currentPage - innerWindow && i <= currentPage + innerWindow\n    },\n    dotted: function (pagingList, i, left, right, currentPage, innerWindow, currentPageItem) {\n      return (\n        this.dottedLeft(pagingList, i, left, right, currentPage, innerWindow) ||\n        this.dottedRight(pagingList, i, left, right, currentPage, innerWindow, currentPageItem)\n      )\n    },\n    dottedLeft: function (pagingList, i, left, right, currentPage, innerWindow) {\n      return i == left + 1 && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right)\n    },\n    dottedRight: function (pagingList, i, left, right, currentPage, innerWindow, currentPageItem) {\n      if (pagingList.items[currentPageItem - 1].values().dotted) {\n        return false\n      } else {\n        return i == right && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right)\n      }\n    },\n  }\n\n  return function (options) {\n    var pagingList = new List(list.listContainer.id, {\n      listClass: options.paginationClass || 'pagination',\n      item: options.item || \"<li><a class='page' href='#'></a></li>\",\n      valueNames: ['page', 'dotted'],\n      searchClass: 'pagination-search-that-is-not-supposed-to-exist',\n      sortClass: 'pagination-sort-that-is-not-supposed-to-exist',\n    })\n\n    events.bind(pagingList.listContainer, 'click', function (e) {\n      var target = e.target || e.srcElement,\n        page = list.utils.getAttribute(target, 'data-page'),\n        i = list.utils.getAttribute(target, 'data-i')\n      if (i) {\n        list.show((i - 1) * page + 1, page)\n      }\n    })\n\n    list.on('updated', function () {\n      refresh(pagingList, options)\n    })\n    refresh(pagingList, options)\n  }\n}\n","module.exports = function (list) {\n  var Item = require('./item')(list)\n\n  var getChildren = function (parent) {\n    var nodes = parent.childNodes,\n      items = []\n    for (var i = 0, il = nodes.length; i < il; i++) {\n      // Only textnodes have a data attribute\n      if (nodes[i].data === undefined) {\n        items.push(nodes[i])\n      }\n    }\n    return items\n  }\n\n  var parse = function (itemElements, valueNames) {\n    for (var i = 0, il = itemElements.length; i < il; i++) {\n      list.items.push(new Item(valueNames, itemElements[i]))\n    }\n  }\n  var parseAsync = function (itemElements, valueNames) {\n    var itemsToIndex = itemElements.splice(0, 50) // TODO: If < 100 items, what happens in IE etc?\n    parse(itemsToIndex, valueNames)\n    if (itemElements.length > 0) {\n      setTimeout(function () {\n        parseAsync(itemElements, valueNames)\n      }, 1)\n    } else {\n      list.update()\n      list.trigger('parseComplete')\n    }\n  }\n\n  list.handlers.parseComplete = list.handlers.parseComplete || []\n\n  return function () {\n    var itemsToIndex = getChildren(list.list),\n      valueNames = list.valueNames\n\n    if (list.indexAsync) {\n      parseAsync(itemsToIndex, valueNames)\n    } else {\n      parse(itemsToIndex, valueNames)\n    }\n  }\n}\n","module.exports = function (list) {\n  var item, text, columns, searchString, customSearch\n\n  var prepare = {\n    resetList: function () {\n      list.i = 1\n      list.templater.clear()\n      customSearch = undefined\n    },\n    setOptions: function (args) {\n      if (args.length == 2 && args[1] instanceof Array) {\n        columns = args[1]\n      } else if (args.length == 2 && typeof args[1] == 'function') {\n        columns = undefined\n        customSearch = args[1]\n      } else if (args.length == 3) {\n        columns = args[1]\n        customSearch = args[2]\n      } else {\n        columns = undefined\n      }\n    },\n    setColumns: function () {\n      if (list.items.length === 0) return\n      if (columns === undefined) {\n        columns = list.searchColumns === undefined ? prepare.toArray(list.items[0].values()) : list.searchColumns\n      }\n    },\n    setSearchString: function (s) {\n      s = list.utils.toString(s).toLowerCase()\n      s = s.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, '\\\\$&') // Escape regular expression characters\n      searchString = s\n    },\n    toArray: function (values) {\n      var tmpColumn = []\n      for (var name in values) {\n        tmpColumn.push(name)\n      }\n      return tmpColumn\n    },\n  }\n  var search = {\n    list: function () {\n      // Extract quoted phrases \"word1 word2\" from original searchString\n      // searchString is converted to lowercase by List.js\n      var words = [],\n        phrase,\n        ss = searchString\n      while ((phrase = ss.match(/\"([^\"]+)\"/)) !== null) {\n        words.push(phrase[1])\n        ss = ss.substring(0, phrase.index) + ss.substring(phrase.index + phrase[0].length)\n      }\n      // Get remaining space-separated words (if any)\n      ss = ss.trim()\n      if (ss.length) words = words.concat(ss.split(/\\s+/))\n      for (var k = 0, kl = list.items.length; k < kl; k++) {\n        var item = list.items[k]\n        item.found = false\n        if (!words.length) continue\n        for (var i = 0, il = words.length; i < il; i++) {\n          var word_found = false\n          for (var j = 0, jl = columns.length; j < jl; j++) {\n            var values = item.values(),\n              column = columns[j]\n            if (values.hasOwnProperty(column) && values[column] !== undefined && values[column] !== null) {\n              var text = typeof values[column] !== 'string' ? values[column].toString() : values[column]\n              if (text.toLowerCase().indexOf(words[i]) !== -1) {\n                // word found, so no need to check it against any other columns\n                word_found = true\n                break\n              }\n            }\n          }\n          // this word not found? no need to check any other words, the item cannot match\n          if (!word_found) break\n        }\n        item.found = word_found\n      }\n    },\n    // Removed search.item() and search.values()\n    reset: function () {\n      list.reset.search()\n      list.searched = false\n    },\n  }\n\n  var searchMethod = function (str) {\n    list.trigger('searchStart')\n\n    prepare.resetList()\n    prepare.setSearchString(str)\n    prepare.setOptions(arguments) // str, cols|searchFunction, searchFunction\n    prepare.setColumns()\n\n    if (searchString === '') {\n      search.reset()\n    } else {\n      list.searched = true\n      if (customSearch) {\n        customSearch(searchString, columns)\n      } else {\n        search.list()\n      }\n    }\n\n    list.update()\n    list.trigger('searchComplete')\n    return list.visibleItems\n  }\n\n  list.handlers.searchStart = list.handlers.searchStart || []\n  list.handlers.searchComplete = list.handlers.searchComplete || []\n\n  list.utils.events.bind(\n    list.utils.getByClass(list.listContainer, list.searchClass),\n    'keyup',\n    list.utils.events.debounce(function (e) {\n      var target = e.target || e.srcElement, // IE have srcElement\n        alreadyCleared = target.value === '' && !list.searched\n      if (!alreadyCleared) {\n        // If oninput already have resetted the list, do nothing\n        searchMethod(target.value)\n      }\n    }, list.searchDelay)\n  )\n\n  // Used to detect click on HTML5 clear button\n  list.utils.events.bind(list.utils.getByClass(list.listContainer, list.searchClass), 'input', function (e) {\n    var target = e.target || e.srcElement\n    if (target.value === '') {\n      searchMethod('')\n    }\n  })\n\n  return searchMethod\n}\n","module.exports = function (list) {\n  var buttons = {\n    els: undefined,\n    clear: function () {\n      for (var i = 0, il = buttons.els.length; i < il; i++) {\n        list.utils.classes(buttons.els[i]).remove('asc')\n        list.utils.classes(buttons.els[i]).remove('desc')\n      }\n    },\n    getOrder: function (btn) {\n      var predefinedOrder = list.utils.getAttribute(btn, 'data-order')\n      if (predefinedOrder == 'asc' || predefinedOrder == 'desc') {\n        return predefinedOrder\n      } else if (list.utils.classes(btn).has('desc')) {\n        return 'asc'\n      } else if (list.utils.classes(btn).has('asc')) {\n        return 'desc'\n      } else {\n        return 'asc'\n      }\n    },\n    getInSensitive: function (btn, options) {\n      var insensitive = list.utils.getAttribute(btn, 'data-insensitive')\n      if (insensitive === 'false') {\n        options.insensitive = false\n      } else {\n        options.insensitive = true\n      }\n    },\n    setOrder: function (options) {\n      for (var i = 0, il = buttons.els.length; i < il; i++) {\n        var btn = buttons.els[i]\n        if (list.utils.getAttribute(btn, 'data-sort') !== options.valueName) {\n          continue\n        }\n        var predefinedOrder = list.utils.getAttribute(btn, 'data-order')\n        if (predefinedOrder == 'asc' || predefinedOrder == 'desc') {\n          if (predefinedOrder == options.order) {\n            list.utils.classes(btn).add(options.order)\n          }\n        } else {\n          list.utils.classes(btn).add(options.order)\n        }\n      }\n    },\n  }\n\n  var sort = function () {\n    list.trigger('sortStart')\n    var options = {}\n\n    var target = arguments[0].currentTarget || arguments[0].srcElement || undefined\n\n    if (target) {\n      options.valueName = list.utils.getAttribute(target, 'data-sort')\n      buttons.getInSensitive(target, options)\n      options.order = buttons.getOrder(target)\n    } else {\n      options = arguments[1] || options\n      options.valueName = arguments[0]\n      options.order = options.order || 'asc'\n      options.insensitive = typeof options.insensitive == 'undefined' ? true : options.insensitive\n    }\n\n    buttons.clear()\n    buttons.setOrder(options)\n\n    // caseInsensitive\n    // alphabet\n    var customSortFunction = options.sortFunction || list.sortFunction || null,\n      multi = options.order === 'desc' ? -1 : 1,\n      sortFunction\n\n    if (customSortFunction) {\n      sortFunction = function (itemA, itemB) {\n        return customSortFunction(itemA, itemB, options) * multi\n      }\n    } else {\n      sortFunction = function (itemA, itemB) {\n        var sort = list.utils.naturalSort\n        sort.alphabet = list.alphabet || options.alphabet || undefined\n        if (!sort.alphabet && options.insensitive) {\n          sort = list.utils.naturalSort.caseInsensitive\n        }\n        return sort(itemA.values()[options.valueName], itemB.values()[options.valueName]) * multi\n      }\n    }\n\n    list.items.sort(sortFunction)\n    list.update()\n    list.trigger('sortComplete')\n  }\n\n  // Add handlers\n  list.handlers.sortStart = list.handlers.sortStart || []\n  list.handlers.sortComplete = list.handlers.sortComplete || []\n\n  buttons.els = list.utils.getByClass(list.listContainer, list.sortClass)\n  list.utils.events.bind(buttons.els, 'click', sort)\n  list.on('searchStart', buttons.clear)\n  list.on('filterStart', buttons.clear)\n\n  return sort\n}\n","var Templater = function (list) {\n  var createItem,\n    templater = this\n\n  var init = function () {\n    var itemSource\n\n    if (typeof list.item === 'function') {\n      createItem = function (values) {\n        var item = list.item(values)\n        return getItemSource(item)\n      }\n      return\n    }\n\n    if (typeof list.item === 'string') {\n      if (list.item.indexOf('<') === -1) {\n        itemSource = document.getElementById(list.item)\n      } else {\n        itemSource = getItemSource(list.item)\n      }\n    } else {\n      /* If item source does not exists, use the first item in list as\n      source for new items */\n      itemSource = getFirstListItem()\n    }\n\n    if (!itemSource) {\n      throw new Error(\"The list needs to have at least one item on init otherwise you'll have to add a template.\")\n    }\n\n    itemSource = createCleanTemplateItem(itemSource, list.valueNames)\n\n    createItem = function () {\n      return itemSource.cloneNode(true)\n    }\n  }\n\n  var createCleanTemplateItem = function (templateNode, valueNames) {\n    var el = templateNode.cloneNode(true)\n    el.removeAttribute('id')\n\n    for (var i = 0, il = valueNames.length; i < il; i++) {\n      var elm = undefined,\n        valueName = valueNames[i]\n      if (valueName.data) {\n        for (var j = 0, jl = valueName.data.length; j < jl; j++) {\n          el.setAttribute('data-' + valueName.data[j], '')\n        }\n      } else if (valueName.attr && valueName.name) {\n        elm = list.utils.getByClass(el, valueName.name, true)\n        if (elm) {\n          elm.setAttribute(valueName.attr, '')\n        }\n      } else {\n        elm = list.utils.getByClass(el, valueName, true)\n        if (elm) {\n          elm.innerHTML = ''\n        }\n      }\n    }\n    return el\n  }\n\n  var getFirstListItem = function () {\n    var nodes = list.list.childNodes\n\n    for (var i = 0, il = nodes.length; i < il; i++) {\n      // Only textnodes have a data attribute\n      if (nodes[i].data === undefined) {\n        return nodes[i].cloneNode(true)\n      }\n    }\n    return undefined\n  }\n\n  var getItemSource = function (itemHTML) {\n    if (typeof itemHTML !== 'string') return undefined\n    if (/<tr[\\s>]/g.exec(itemHTML)) {\n      var tbody = document.createElement('tbody')\n      tbody.innerHTML = itemHTML\n      return tbody.firstElementChild\n    } else if (itemHTML.indexOf('<') !== -1) {\n      var div = document.createElement('div')\n      div.innerHTML = itemHTML\n      return div.firstElementChild\n    }\n    return undefined\n  }\n\n  var getValueName = function (name) {\n    for (var i = 0, il = list.valueNames.length; i < il; i++) {\n      var valueName = list.valueNames[i]\n      if (valueName.data) {\n        var data = valueName.data\n        for (var j = 0, jl = data.length; j < jl; j++) {\n          if (data[j] === name) {\n            return { data: name }\n          }\n        }\n      } else if (valueName.attr && valueName.name && valueName.name == name) {\n        return valueName\n      } else if (valueName === name) {\n        return name\n      }\n    }\n  }\n\n  var setValue = function (item, name, value) {\n    var elm = undefined,\n      valueName = getValueName(name)\n    if (!valueName) return\n    if (valueName.data) {\n      item.elm.setAttribute('data-' + valueName.data, value)\n    } else if (valueName.attr && valueName.name) {\n      elm = list.utils.getByClass(item.elm, valueName.name, true)\n      if (elm) {\n        elm.setAttribute(valueName.attr, value)\n      }\n    } else {\n      elm = list.utils.getByClass(item.elm, valueName, true)\n      if (elm) {\n        elm.innerHTML = value\n      }\n    }\n  }\n\n  this.get = function (item, valueNames) {\n    templater.create(item)\n    var values = {}\n    for (var i = 0, il = valueNames.length; i < il; i++) {\n      var elm = undefined,\n        valueName = valueNames[i]\n      if (valueName.data) {\n        for (var j = 0, jl = valueName.data.length; j < jl; j++) {\n          values[valueName.data[j]] = list.utils.getAttribute(item.elm, 'data-' + valueName.data[j])\n        }\n      } else if (valueName.attr && valueName.name) {\n        elm = list.utils.getByClass(item.elm, valueName.name, true)\n        values[valueName.name] = elm ? list.utils.getAttribute(elm, valueName.attr) : ''\n      } else {\n        elm = list.utils.getByClass(item.elm, valueName, true)\n        values[valueName] = elm ? elm.innerHTML : ''\n      }\n    }\n    return values\n  }\n\n  this.set = function (item, values) {\n    if (!templater.create(item)) {\n      for (var v in values) {\n        if (values.hasOwnProperty(v)) {\n          setValue(item, v, values[v])\n        }\n      }\n    }\n  }\n\n  this.create = function (item) {\n    if (item.elm !== undefined) {\n      return false\n    }\n    item.elm = createItem(item.values())\n    templater.set(item, item.values())\n    return true\n  }\n  this.remove = function (item) {\n    if (item.elm.parentNode === list.list) {\n      list.list.removeChild(item.elm)\n    }\n  }\n  this.show = function (item) {\n    templater.create(item)\n    list.list.appendChild(item.elm)\n  }\n  this.hide = function (item) {\n    if (item.elm !== undefined && item.elm.parentNode === list.list) {\n      list.list.removeChild(item.elm)\n    }\n  }\n  this.clear = function () {\n    /* .innerHTML = ''; fucks up IE */\n    if (list.list.hasChildNodes()) {\n      while (list.list.childNodes.length >= 1) {\n        list.list.removeChild(list.list.firstChild)\n      }\n    }\n  }\n\n  init()\n}\n\nmodule.exports = function (list) {\n  return new Templater(list)\n}\n","/**\n * Module dependencies.\n */\n\nvar index = require('./index-of')\n\n/**\n * Whitespace regexp.\n */\n\nvar re = /\\s+/\n\n/**\n * toString reference.\n */\n\nvar toString = Object.prototype.toString\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\n\nmodule.exports = function (el) {\n  return new ClassList(el)\n}\n\n/**\n * Initialize a new ClassList for `el`.\n *\n * @param {Element} el\n * @api private\n */\n\nfunction ClassList(el) {\n  if (!el || !el.nodeType) {\n    throw new Error('A DOM element reference is required')\n  }\n  this.el = el\n  this.list = el.classList\n}\n\n/**\n * Add class `name` if not already present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.add = function (name) {\n  // classList\n  if (this.list) {\n    this.list.add(name)\n    return this\n  }\n\n  // fallback\n  var arr = this.array()\n  var i = index(arr, name)\n  if (!~i) arr.push(name)\n  this.el.className = arr.join(' ')\n  return this\n}\n\n/**\n * Remove class `name` when present, or\n * pass a regular expression to remove\n * any which match.\n *\n * @param {String|RegExp} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.remove = function (name) {\n  // classList\n  if (this.list) {\n    this.list.remove(name)\n    return this\n  }\n\n  // fallback\n  var arr = this.array()\n  var i = index(arr, name)\n  if (~i) arr.splice(i, 1)\n  this.el.className = arr.join(' ')\n  return this\n}\n\n/**\n * Toggle class `name`, can force state via `force`.\n *\n * For browsers that support classList, but do not support `force` yet,\n * the mistake will be detected and corrected.\n *\n * @param {String} name\n * @param {Boolean} force\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.toggle = function (name, force) {\n  // classList\n  if (this.list) {\n    if ('undefined' !== typeof force) {\n      if (force !== this.list.toggle(name, force)) {\n        this.list.toggle(name) // toggle again to correct\n      }\n    } else {\n      this.list.toggle(name)\n    }\n    return this\n  }\n\n  // fallback\n  if ('undefined' !== typeof force) {\n    if (!force) {\n      this.remove(name)\n    } else {\n      this.add(name)\n    }\n  } else {\n    if (this.has(name)) {\n      this.remove(name)\n    } else {\n      this.add(name)\n    }\n  }\n\n  return this\n}\n\n/**\n * Return an array of classes.\n *\n * @return {Array}\n * @api public\n */\n\nClassList.prototype.array = function () {\n  var className = this.el.getAttribute('class') || ''\n  var str = className.replace(/^\\s+|\\s+$/g, '')\n  var arr = str.split(re)\n  if ('' === arr[0]) arr.shift()\n  return arr\n}\n\n/**\n * Check if class `name` is present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.has = ClassList.prototype.contains = function (name) {\n  return this.list ? this.list.contains(name) : !!~index(this.array(), name)\n}\n","var bind = window.addEventListener ? 'addEventListener' : 'attachEvent',\n  unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent',\n  prefix = bind !== 'addEventListener' ? 'on' : '',\n  toArray = require('./to-array')\n\n/**\n * Bind `el` event `type` to `fn`.\n *\n * @param {Element} el, NodeList, HTMLCollection or Array\n * @param {String} type\n * @param {Function} fn\n * @param {Boolean} capture\n * @api public\n */\n\nexports.bind = function (el, type, fn, capture) {\n  el = toArray(el)\n  for (var i = 0, il = el.length; i < il; i++) {\n    el[i][bind](prefix + type, fn, capture || false)\n  }\n}\n\n/**\n * Unbind `el` event `type`'s callback `fn`.\n *\n * @param {Element} el, NodeList, HTMLCollection or Array\n * @param {String} type\n * @param {Function} fn\n * @param {Boolean} capture\n * @api public\n */\n\nexports.unbind = function (el, type, fn, capture) {\n  el = toArray(el)\n  for (var i = 0, il = el.length; i < il; i++) {\n    el[i][unbind](prefix + type, fn, capture || false)\n  }\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * `wait` milliseconds. If `immediate` is true, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * @param {Function} fn\n * @param {Integer} wait\n * @param {Boolean} immediate\n * @api public\n */\n\nexports.debounce = function (fn, wait, immediate) {\n  var timeout\n  return wait\n    ? function () {\n        var context = this,\n          args = arguments\n        var later = function () {\n          timeout = null\n          if (!immediate) fn.apply(context, args)\n        }\n        var callNow = immediate && !timeout\n        clearTimeout(timeout)\n        timeout = setTimeout(later, wait)\n        if (callNow) fn.apply(context, args)\n      }\n    : fn\n}\n","/*\n * Source: https://github.com/segmentio/extend\n */\n\nmodule.exports = function extend(object) {\n  // Takes an unlimited number of extenders.\n  var args = Array.prototype.slice.call(arguments, 1)\n\n  // For each extender, copy their properties on our object.\n  for (var i = 0, source; (source = args[i]); i++) {\n    if (!source) continue\n    for (var property in source) {\n      object[property] = source[property]\n    }\n  }\n\n  return object\n}\n","module.exports = function (text, pattern, options) {\n  // Aproximately where in the text is the pattern expected to be found?\n  var Match_Location = options.location || 0\n\n  //Determines how close the match must be to the fuzzy location (specified above). An exact letter match which is 'distance' characters away from the fuzzy location would score as a complete mismatch. A distance of '0' requires the match be at the exact location specified, a threshold of '1000' would require a perfect match to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  var Match_Distance = options.distance || 100\n\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match (of both letters and location), a threshold of '1.0' would match anything.\n  var Match_Threshold = options.threshold || 0.4\n\n  if (pattern === text) return true // Exact match\n  if (pattern.length > 32) return false // This algorithm cannot be used\n\n  // Set starting location at beginning text and initialise the alphabet.\n  var loc = Match_Location,\n    s = (function () {\n      var q = {},\n        i\n\n      for (i = 0; i < pattern.length; i++) {\n        q[pattern.charAt(i)] = 0\n      }\n\n      for (i = 0; i < pattern.length; i++) {\n        q[pattern.charAt(i)] |= 1 << (pattern.length - i - 1)\n      }\n\n      return q\n    })()\n\n  // Compute and return the score for a match with e errors and x location.\n  // Accesses loc and pattern through being a closure.\n\n  function match_bitapScore_(e, x) {\n    var accuracy = e / pattern.length,\n      proximity = Math.abs(loc - x)\n\n    if (!Match_Distance) {\n      // Dodge divide by zero error.\n      return proximity ? 1.0 : accuracy\n    }\n    return accuracy + proximity / Match_Distance\n  }\n\n  var score_threshold = Match_Threshold, // Highest score beyond which we give up.\n    best_loc = text.indexOf(pattern, loc) // Is there a nearby exact match? (speedup)\n\n  if (best_loc != -1) {\n    score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold)\n    // What about in the other direction? (speedup)\n    best_loc = text.lastIndexOf(pattern, loc + pattern.length)\n\n    if (best_loc != -1) {\n      score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold)\n    }\n  }\n\n  // Initialise the bit arrays.\n  var matchmask = 1 << (pattern.length - 1)\n  best_loc = -1\n\n  var bin_min, bin_mid\n  var bin_max = pattern.length + text.length\n  var last_rd\n  for (var d = 0; d < pattern.length; d++) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from 'loc' we can stray at this\n    // error level.\n    bin_min = 0\n    bin_mid = bin_max\n    while (bin_min < bin_mid) {\n      if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n        bin_min = bin_mid\n      } else {\n        bin_max = bin_mid\n      }\n      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min)\n    }\n    // Use the result from this iteration as the maximum for the next.\n    bin_max = bin_mid\n    var start = Math.max(1, loc - bin_mid + 1)\n    var finish = Math.min(loc + bin_mid, text.length) + pattern.length\n\n    var rd = Array(finish + 2)\n    rd[finish + 1] = (1 << d) - 1\n    for (var j = finish; j >= start; j--) {\n      // The alphabet (s) is a sparse hash, so the following line generates\n      // warnings.\n      var charMatch = s[text.charAt(j - 1)]\n      if (d === 0) {\n        // First pass: exact match.\n        rd[j] = ((rd[j + 1] << 1) | 1) & charMatch\n      } else {\n        // Subsequent passes: fuzzy match.\n        rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) | (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | last_rd[j + 1]\n      }\n      if (rd[j] & matchmask) {\n        var score = match_bitapScore_(d, j - 1)\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (score <= score_threshold) {\n          // Told you so.\n          score_threshold = score\n          best_loc = j - 1\n          if (best_loc > loc) {\n            // When passing loc, don't exceed our current distance from loc.\n            start = Math.max(1, 2 * loc - best_loc)\n          } else {\n            // Already passed loc, downhill from here on in.\n            break\n          }\n        }\n      }\n    }\n    // No hope for a (better) match at greater error levels.\n    if (match_bitapScore_(d + 1, loc) > score_threshold) {\n      break\n    }\n    last_rd = rd\n  }\n\n  return best_loc < 0 ? false : true\n}\n","/**\n * A cross-browser implementation of getAttribute.\n * Source found here: http://stackoverflow.com/a/3755343/361337 written by Vivin Paliath\n *\n * Return the value for `attr` at `element`.\n *\n * @param {Element} el\n * @param {String} attr\n * @api public\n */\n\nmodule.exports = function (el, attr) {\n  var result = (el.getAttribute && el.getAttribute(attr)) || null\n  if (!result) {\n    var attrs = el.attributes\n    var length = attrs.length\n    for (var i = 0; i < length; i++) {\n      if (attrs[i] !== undefined) {\n        if (attrs[i].nodeName === attr) {\n          result = attrs[i].nodeValue\n        }\n      }\n    }\n  }\n  return result\n}\n","/**\n * A cross-browser implementation of getElementsByClass.\n * Heavily based on Dustin Diaz's function: http://dustindiaz.com/getelementsbyclass.\n *\n * Find all elements with class `className` inside `container`.\n * Use `single = true` to increase performance in older browsers\n * when only one element is needed.\n *\n * @param {String} className\n * @param {Element} container\n * @param {Boolean} single\n * @api public\n */\n\nvar getElementsByClassName = function (container, className, single) {\n  if (single) {\n    return container.getElementsByClassName(className)[0]\n  } else {\n    return container.getElementsByClassName(className)\n  }\n}\n\nvar querySelector = function (container, className, single) {\n  className = '.' + className\n  if (single) {\n    return container.querySelector(className)\n  } else {\n    return container.querySelectorAll(className)\n  }\n}\n\nvar polyfill = function (container, className, single) {\n  var classElements = [],\n    tag = '*'\n\n  var els = container.getElementsByTagName(tag)\n  var elsLen = els.length\n  var pattern = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\n  for (var i = 0, j = 0; i < elsLen; i++) {\n    if (pattern.test(els[i].className)) {\n      if (single) {\n        return els[i]\n      } else {\n        classElements[j] = els[i]\n        j++\n      }\n    }\n  }\n  return classElements\n}\n\nmodule.exports = (function () {\n  return function (container, className, single, options) {\n    options = options || {}\n    if ((options.test && options.getElementsByClassName) || (!options.test && document.getElementsByClassName)) {\n      return getElementsByClassName(container, className, single)\n    } else if ((options.test && options.querySelector) || (!options.test && document.querySelector)) {\n      return querySelector(container, className, single)\n    } else {\n      return polyfill(container, className, single)\n    }\n  }\n})()\n","var indexOf = [].indexOf\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0, il = arr.length; i < il; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1\n}\n","/**\n * Source: https://github.com/timoxley/to-array\n *\n * Convert an array-like object into an `Array`.\n * If `collection` is already an `Array`, then will return a clone of `collection`.\n *\n * @param {Array | Mixed} collection An `Array` or array-like object to convert e.g. `arguments` or `NodeList`\n * @return {Array} Naive conversion of `collection` to a new `Array`.\n * @api public\n */\n\nmodule.exports = function toArray(collection) {\n  if (typeof collection === 'undefined') return []\n  if (collection === null) return [null]\n  if (collection === window) return [window]\n  if (typeof collection === 'string') return [collection]\n  if (isArray(collection)) return collection\n  if (typeof collection.length != 'number') return [collection]\n  if (typeof collection === 'function' && collection instanceof Function) return [collection]\n\n  var arr = [];\n  for (var i = 0, il = collection.length; i < il; i++) {\n    if (Object.prototype.hasOwnProperty.call(collection, i) || i in collection) {\n      arr.push(collection[i])\n    }\n  }\n  if (!arr.length) return []\n  return arr\n}\n\nfunction isArray(arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n","module.exports = function (s) {\n  s = s === undefined ? '' : s\n  s = s === null ? '' : s\n  s = s.toString()\n  return s\n}\n","'use strict';\n\nvar alphabet;\nvar alphabetIndexMap;\nvar alphabetIndexMapLength = 0;\n\nfunction isNumberCode(code) {\n  return code >= 48 && code <= 57;\n}\n\nfunction naturalCompare(a, b) {\n  var lengthA = (a += '').length;\n  var lengthB = (b += '').length;\n  var aIndex = 0;\n  var bIndex = 0;\n\n  while (aIndex < lengthA && bIndex < lengthB) {\n    var charCodeA = a.charCodeAt(aIndex);\n    var charCodeB = b.charCodeAt(bIndex);\n\n    if (isNumberCode(charCodeA)) {\n      if (!isNumberCode(charCodeB)) {\n        return charCodeA - charCodeB;\n      }\n\n      var numStartA = aIndex;\n      var numStartB = bIndex;\n\n      while (charCodeA === 48 && ++numStartA < lengthA) {\n        charCodeA = a.charCodeAt(numStartA);\n      }\n      while (charCodeB === 48 && ++numStartB < lengthB) {\n        charCodeB = b.charCodeAt(numStartB);\n      }\n\n      var numEndA = numStartA;\n      var numEndB = numStartB;\n\n      while (numEndA < lengthA && isNumberCode(a.charCodeAt(numEndA))) {\n        ++numEndA;\n      }\n      while (numEndB < lengthB && isNumberCode(b.charCodeAt(numEndB))) {\n        ++numEndB;\n      }\n\n      var difference = numEndA - numStartA - numEndB + numStartB; // numA length - numB length\n      if (difference) {\n        return difference;\n      }\n\n      while (numStartA < numEndA) {\n        difference = a.charCodeAt(numStartA++) - b.charCodeAt(numStartB++);\n        if (difference) {\n          return difference;\n        }\n      }\n\n      aIndex = numEndA;\n      bIndex = numEndB;\n      continue;\n    }\n\n    if (charCodeA !== charCodeB) {\n      if (\n        charCodeA < alphabetIndexMapLength &&\n        charCodeB < alphabetIndexMapLength &&\n        alphabetIndexMap[charCodeA] !== -1 &&\n        alphabetIndexMap[charCodeB] !== -1\n      ) {\n        return alphabetIndexMap[charCodeA] - alphabetIndexMap[charCodeB];\n      }\n\n      return charCodeA - charCodeB;\n    }\n\n    ++aIndex;\n    ++bIndex;\n  }\n\n  if (aIndex >= lengthA && bIndex < lengthB && lengthA >= lengthB) {\n    return -1;\n  }\n\n  if (bIndex >= lengthB && aIndex < lengthA && lengthB >= lengthA) {\n    return 1;\n  }\n\n  return lengthA - lengthB;\n}\n\nnaturalCompare.caseInsensitive = naturalCompare.i = function(a, b) {\n  return naturalCompare(('' + a).toLowerCase(), ('' + b).toLowerCase());\n};\n\nObject.defineProperties(naturalCompare, {\n  alphabet: {\n    get: function() {\n      return alphabet;\n    },\n\n    set: function(value) {\n      alphabet = value;\n      alphabetIndexMap = [];\n\n      var i = 0;\n\n      if (alphabet) {\n        for (; i < alphabet.length; i++) {\n          alphabetIndexMap[alphabet.charCodeAt(i)] = i;\n        }\n      }\n\n      alphabetIndexMapLength = alphabetIndexMap.length;\n\n      for (i = 0; i < alphabetIndexMapLength; i++) {\n        if (alphabetIndexMap[i] === undefined) {\n          alphabetIndexMap[i] = -1;\n        }\n      }\n    },\n  },\n});\n\nmodule.exports = naturalCompare;\n","export enum MediaType {\r\n    photo = 'PHOTO',\r\n    video = 'VIDEO',\r\n    undefined = 'TYPE_UNSPECIFIED'\r\n}\r\n\r\nexport enum VideoProcessingStatus {\r\n    UNSPECIFIED = 'UNSPECIFIED',\r\n    PROCESSING = 'PROCESSING',\r\n    READY = 'READY',\r\n    FAILED = 'FAILED'\r\n}\r\nexport interface MediaItem {\r\n    id: string\r\n    createTime: string\r\n    type: MediaType\r\n    mediaFile: GooglePhotosTypes\r\n    imageBlobThumbnail: string\r\n    imageBlobThumbnailReqested: boolean\r\n}\r\n\r\nexport interface GooglePhotosTypes {\r\n    baseUrl: string\r\n    mimeType: string\r\n    filename: string\r\n    mediaFileMetadata: MediaFileMetadata\r\n}\r\n\r\nexport interface MediaFileMetadata {\r\n    width: bigint\r\n    height: bigint\r\n    cameraMake: string\r\n    cameraModel: string\r\n\r\n    // Union field metadata can be only one of the following:\r\n    photoMetadata?: PhotoMetadata\r\n    videoMetadata?: VideoMetadata\r\n}\r\n\r\nexport interface PhotoMetadata {\r\n    focalLength: number\r\n    apertureFNumber: number\r\n    isoEquivalent: bigint\r\n    exposureTime: string\r\n}\r\n\r\nexport interface VideoMetadata {\r\n    fps: number\r\n    processingStatus: VideoProcessingStatus\r\n}","export default class Polyfill {\r\n    static removeHtmlElementNode(element:any) {\r\n            if (element.parentNode !== null)\r\n                element.parentNode.removeChild(element);\r\n    }\r\n\r\n    static createNewEvent(eventName:string, data:any) {\r\n        let event = null;\r\n\r\n        if(typeof(CustomEvent) === 'function') {\r\n            event = new CustomEvent(eventName, {detail: data});\r\n        }else{\r\n            event = document.createEvent('Event');\r\n            event.initEvent(eventName, true, true);\r\n            // @ts-ignore\r\n            event.detail = data;\r\n        }\r\n        return event;\r\n    }\r\n}\r\n","export enum Events {\r\n    reload = 'eventgallery-minicart-reload',\r\n    prepareAdd2cartDialogContent = 'eventgallery-prepare-add2cartdialogcontent',\r\n    rebindAdd2CartButtons = 'eventgallery-rebind-add2cart-buttons'\r\n}","import { defineComponent as _defineComponent } from 'vue'\nimport {onMounted, ref} from \"vue\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'GoogleAccountSelector',\n  props: ['googlePickerUrlGetAccounts', 'googlePickerUrlManageAccounts', 'i18n'],\n  emits: ['setActiveGoogleAccount'],\n  setup(__props, { expose: __expose, emit: __emit }) {\n  __expose();\n\r\nconst props = __props\r\nconst emit = __emit\r\nconst activeGoogleAccount = ref(0)\r\nconst googleAccounts = ref([])\r\n\r\nfunction changeGoogleAccount() {\r\n    localStorage.setItem('eg-fileupload-googlephotosaccount-id', activeGoogleAccount.value)\r\n    emit('setActiveGoogleAccount',activeGoogleAccount.value)\r\n}\r\n\r\nonMounted(async () => {\r\n    await fetch(props.googlePickerUrlGetAccounts)\r\n        .then((response) => response.json())\r\n        .then((responseData) => {\r\n            googleAccounts.value = responseData\r\n        })\r\n    const oldid = parseInt(localStorage.getItem('eg-fileupload-googlephotosaccount-id'));\r\n    if (googleAccounts.value.some( account => account.id == oldid)) {\r\n        activeGoogleAccount.value = oldid\r\n    } else {\r\n        activeGoogleAccount.value = googleAccounts.value[0].id\r\n    }\r\n    changeGoogleAccount()\r\n})\r\n\r\n\nconst __returned__ = { props, emit, activeGoogleAccount, googleAccounts, changeGoogleAccount }\nObject.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })\nreturn __returned__\n}\n\n})","<script setup lang=\"ts\">\r\nimport {onMounted, ref} from \"vue\";\r\n\r\nconst props = defineProps(['googlePickerUrlGetAccounts', 'googlePickerUrlManageAccounts', 'i18n'])\r\nconst emit = defineEmits(['setActiveGoogleAccount'])\r\nconst activeGoogleAccount = ref(0)\r\nconst googleAccounts = ref([])\r\n\r\nfunction changeGoogleAccount() {\r\n    localStorage.setItem('eg-fileupload-googlephotosaccount-id', activeGoogleAccount.value)\r\n    emit('setActiveGoogleAccount',activeGoogleAccount.value)\r\n}\r\n\r\nonMounted(async () => {\r\n    await fetch(props.googlePickerUrlGetAccounts)\r\n        .then((response) => response.json())\r\n        .then((responseData) => {\r\n            googleAccounts.value = responseData\r\n        })\r\n    const oldid = parseInt(localStorage.getItem('eg-fileupload-googlephotosaccount-id'));\r\n    if (googleAccounts.value.some( account => account.id == oldid)) {\r\n        activeGoogleAccount.value = oldid\r\n    } else {\r\n        activeGoogleAccount.value = googleAccounts.value[0].id\r\n    }\r\n    changeGoogleAccount()\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n    <select v-if=\"googleAccounts.length > 0\" class=\"form-select\" v-model=\"activeGoogleAccount\" @change=\"changeGoogleAccount\">\r\n        <option v-for=\"value in googleAccounts\" :key=\"value.id\" :value=\"value.id\">\r\n            {{ value.name }}\r\n        </option>\r\n    </select>\r\n    <p v-else>{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_NO_GOOGLE_ACCOUNTS}} <a :href=\"googlePickerUrlManageAccounts\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_MANAGE_GOOGLE_ACCOUNTS}}</a></p>\r\n</template>\r\n\r\n<style scoped lang=\"less\">\r\n    p {\r\n        margin: 20px;\r\n    }\r\n</style>","import { defineComponent as _defineComponent } from 'vue'\nimport {computed, onMounted, PropType, ref, watch} from \"vue\";\r\nimport {UploaderI18n} from \"../types/I18n\";\r\nimport {GooglePickerUrls} from \"../types/GooglePickerUrls\";\r\nimport {MediaItem, MediaType, VideoProcessingStatus} from \"../types/GooglePhotosTypes\";\r\nimport PagingBar from \"./PagingBar.vue\";\r\nimport GoogleAccountSelector from \"./GoogleAccountSelector.vue\";\r\nimport QRCode from \"./QRCode.vue\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'GoogleFilePicker',\n  props: {\r\n    i18n: {\r\n        type: Object as PropType<UploaderI18n>,\r\n        required: true\r\n    },\r\n    googlePickerUrls: {\r\n        type: Object as PropType<GooglePickerUrls>,\r\n        require: true\r\n    },\r\n    doResize: Boolean,\r\n    maxImageSize: Number\r\n},\n  emits: ['addFileCallback'],\n  setup(__props, { expose: __expose, emit: __emit }) {\n  __expose();\n\r\nconst props = __props\r\n\r\nconst emit = __emit\r\n\r\nconst session = ref(null)\r\nconst responseError = ref(null)\r\nconst imagesData = ref({mediaItems: [], pageSize: 5})\r\nconst currentPageNumber = ref(0)\r\nconst doDownloadResizedImage = ref( 0)\r\ndoDownloadResizedImage.value = localStorage.getItem('eg-fileupload-dodownloadresizedimages')\r\nwatch(doDownloadResizedImage, (newVal: boolean, oldVal: boolean) => {\r\n    localStorage.setItem('eg-fileupload-dodownloadresizedimages', newVal)\r\n})\r\nconst pagingData = computed(() => {\r\n    if (!imagesData.value.mediaItems) return\r\n\r\n    const pageSize = imagesData.value.pageSize\r\n    const pagesCount = Math.ceil(imagesData.value.mediaItems.length / pageSize)\r\n    const currentPageContent = imagesData.value.mediaItems.slice(currentPageNumber.value*pageSize, (currentPageNumber.value+1)*pageSize)\r\n\r\n    // load the missing thumbnails\r\n    currentPageContent.forEach((mediaItem: MediaItem) => {\r\n        if (!mediaItem.imageBlobThumbnailReqested) {\r\n            mediaItem.imageBlobThumbnailReqested = true\r\n            if (mediaItem.type === MediaType.photo || mediaItem.type === MediaType.video) {\r\n                getImage(mediaItem).then((blob) => {\r\n                    mediaItem.imageBlobThumbnail = URL.createObjectURL(blob)\r\n                })\r\n            }\r\n        }\r\n    })\r\n\r\n    return  {\r\n        pagesCount,\r\n        currentPage: currentPageNumber.value,\r\n        mediaItems: currentPageContent\r\n    }\r\n})\r\n\r\nlet mounted = false;\r\nonMounted(() => {\r\n    gameLoop(false)\r\n    mounted = true\r\n})\r\n\r\nfunction goToPage(index: bigint) {\r\n    currentPageNumber.value = index\r\n}\r\n\r\nfunction addGoogleAccountToUrl(url: string): string {\r\n    return url + '&id=' + activeGoogleAccount.value\r\n}\r\n\r\nlet pollTimeout: any = null\r\nconst gameLoop = (doNewSession: boolean) => {\r\n    if (activeGoogleAccount.value === null) return\r\n    responseError.value = null\r\n    session.value = null\r\n    imagesData.value = {mediaItems: [], pageSize: 5}\r\n    if (clearTimeout) clearTimeout(pollTimeout)\r\n\r\n    const response = fetch(addGoogleAccountToUrl(doNewSession? props.googlePickerUrls.googlePickerUrlNewSession : props.googlePickerUrls.googlePickerUrlGetSession), {\r\n        method: 'GET',\r\n        headers: {\r\n            'Content-Type': 'application/json',\r\n        }\r\n    }).then((response) => response.json())\r\n        .then((responseData) => {\r\n            if (responseData[\"error\"]) {\r\n                console.log(\"ERROR: \", responseData)\r\n                responseError.value = responseData.error\r\n                return\r\n            }\r\n\r\n            session.value = responseData\r\n\r\n            if (responseData.mediaItemsSet) {\r\n                listImages()\r\n                return\r\n            }\r\n\r\n            const pollForImages = () => {\r\n                if (clearTimeout) clearTimeout(pollTimeout)\r\n                pollTimeout = setTimeout(() => {\r\n                    fetch(addGoogleAccountToUrl(props.googlePickerUrls.googlePickerUrlGetSession))\r\n                        .then((response) => response.json())\r\n                        .then((responseData) => {\r\n                            session.value = responseData\r\n                            if (responseData.mediaItemsSet) {\r\n                                listImages()\r\n                            } else {\r\n                                pollForImages()\r\n                            }\r\n                        })\r\n                }, 5000) // default to poll every 5 seconds\r\n            }\r\n            pollForImages()\r\n        })\r\n}\r\n\r\nconst getImage = async (mediaItem: MediaItem, sizeParams:string = \"=w128-h128\") => {\r\n    const response = await fetch(addGoogleAccountToUrl(props.googlePickerUrls.googlePickerUrlGetImage), {\r\n        method: 'POST',\r\n        headers: {\r\n            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\r\n        },\r\n        body: `baseUrl=${mediaItem.mediaFile.baseUrl}${sizeParams}`\r\n    })\r\n    return await response.blob()\r\n}\r\n\r\nconst listImages = () => {\r\n    fetch(addGoogleAccountToUrl(props.googlePickerUrls.googlePickerUrlGetImages))\r\n        .then((response) => response.json())\r\n        .then((responseData) => {\r\n            imagesData.value = responseData\r\n        })\r\n}\r\n\r\nconst startNewSession = (doNewSession: boolean) => {\r\n    gameLoop(true)\r\n}\r\n\r\nlet activeGoogleAccount = ref(null)\r\nconst setActiveGoogleAccount = (accountId: bigint) => {\r\n    if (accountId !== activeGoogleAccount.value) {\r\n        activeGoogleAccount.value = accountId\r\n        if (mounted) {\r\n            gameLoop(false)\r\n        }\r\n    }\r\n}\r\n\r\nconst addSelectedFilesToUpload = () => {\r\n\r\n    imagesData.value.mediaItems.forEach(async (mediaItem: MediaItem) => {\r\n        let queryParameter = ''\r\n\r\n        if (mediaItem.type === MediaType.photo) {\r\n            queryParameter = '=d'\r\n            if (doDownloadResizedImage) {\r\n                queryParameter = `=w${props.maxImageSize}-h${props.maxImageSize}`\r\n            }\r\n        }\r\n        if (mediaItem.type === MediaType.video && mediaItem.mediaFile.mediaFileMetadata.videoMetadata.processingStatus === VideoProcessingStatus.READY) {\r\n            queryParameter = '=dv'\r\n        }\r\n\r\n        if (queryParameter === '') return\r\n\r\n        const blob = await getImage(mediaItem, queryParameter)\r\n        const uploadFile: UploadFile = {\r\n            localFile: new File([blob], mediaItem.mediaFile.filename, {type: mediaItem.mediaFile.mimeType}),\r\n            name: mediaItem.mediaFile.filename,\r\n            doResize: false\r\n        }\r\n        emit('addFileCallback', uploadFile)\r\n    })\r\n}\r\n\r\n\nconst __returned__ = { props, emit, session, responseError, imagesData, currentPageNumber, doDownloadResizedImage, pagingData, get mounted() { return mounted }, set mounted(v) { mounted = v }, goToPage, addGoogleAccountToUrl, get pollTimeout() { return pollTimeout }, set pollTimeout(v) { pollTimeout = v }, gameLoop, getImage, listImages, startNewSession, get activeGoogleAccount() { return activeGoogleAccount }, set activeGoogleAccount(v) { activeGoogleAccount = v }, setActiveGoogleAccount, addSelectedFilesToUpload, PagingBar, GoogleAccountSelector, QRCode }\nObject.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })\nreturn __returned__\n}\n\n})","<script setup lang=\"ts\">\r\nimport {computed, onMounted, PropType, ref, watch} from \"vue\";\r\nimport {UploaderI18n} from \"../types/I18n\";\r\nimport {GooglePickerUrls} from \"../types/GooglePickerUrls\";\r\nimport {MediaItem, MediaType, VideoProcessingStatus} from \"../types/GooglePhotosTypes\";\r\nimport PagingBar from \"./PagingBar.vue\";\r\nimport GoogleAccountSelector from \"./GoogleAccountSelector.vue\";\r\nimport QRCode from \"./QRCode.vue\";\r\n\r\nconst props = defineProps({\r\n    i18n: {\r\n        type: Object as PropType<UploaderI18n>,\r\n        required: true\r\n    },\r\n    googlePickerUrls: {\r\n        type: Object as PropType<GooglePickerUrls>,\r\n        require: true\r\n    },\r\n    doResize: Boolean,\r\n    maxImageSize: Number\r\n})\r\n\r\nconst emit = defineEmits(['addFileCallback'])\r\n\r\nconst session = ref(null)\r\nconst responseError = ref(null)\r\nconst imagesData = ref({mediaItems: [], pageSize: 5})\r\nconst currentPageNumber = ref(0)\r\nconst doDownloadResizedImage = ref( 0)\r\ndoDownloadResizedImage.value = localStorage.getItem('eg-fileupload-dodownloadresizedimages')\r\nwatch(doDownloadResizedImage, (newVal: boolean, oldVal: boolean) => {\r\n    localStorage.setItem('eg-fileupload-dodownloadresizedimages', newVal)\r\n})\r\nconst pagingData = computed(() => {\r\n    if (!imagesData.value.mediaItems) return\r\n\r\n    const pageSize = imagesData.value.pageSize\r\n    const pagesCount = Math.ceil(imagesData.value.mediaItems.length / pageSize)\r\n    const currentPageContent = imagesData.value.mediaItems.slice(currentPageNumber.value*pageSize, (currentPageNumber.value+1)*pageSize)\r\n\r\n    // load the missing thumbnails\r\n    currentPageContent.forEach((mediaItem: MediaItem) => {\r\n        if (!mediaItem.imageBlobThumbnailReqested) {\r\n            mediaItem.imageBlobThumbnailReqested = true\r\n            if (mediaItem.type === MediaType.photo || mediaItem.type === MediaType.video) {\r\n                getImage(mediaItem).then((blob) => {\r\n                    mediaItem.imageBlobThumbnail = URL.createObjectURL(blob)\r\n                })\r\n            }\r\n        }\r\n    })\r\n\r\n    return  {\r\n        pagesCount,\r\n        currentPage: currentPageNumber.value,\r\n        mediaItems: currentPageContent\r\n    }\r\n})\r\n\r\nlet mounted = false;\r\nonMounted(() => {\r\n    gameLoop(false)\r\n    mounted = true\r\n})\r\n\r\nfunction goToPage(index: bigint) {\r\n    currentPageNumber.value = index\r\n}\r\n\r\nfunction addGoogleAccountToUrl(url: string): string {\r\n    return url + '&id=' + activeGoogleAccount.value\r\n}\r\n\r\nlet pollTimeout: any = null\r\nconst gameLoop = (doNewSession: boolean) => {\r\n    if (activeGoogleAccount.value === null) return\r\n    responseError.value = null\r\n    session.value = null\r\n    imagesData.value = {mediaItems: [], pageSize: 5}\r\n    if (clearTimeout) clearTimeout(pollTimeout)\r\n\r\n    const response = fetch(addGoogleAccountToUrl(doNewSession? props.googlePickerUrls.googlePickerUrlNewSession : props.googlePickerUrls.googlePickerUrlGetSession), {\r\n        method: 'GET',\r\n        headers: {\r\n            'Content-Type': 'application/json',\r\n        }\r\n    }).then((response) => response.json())\r\n        .then((responseData) => {\r\n            if (responseData[\"error\"]) {\r\n                console.log(\"ERROR: \", responseData)\r\n                responseError.value = responseData.error\r\n                return\r\n            }\r\n\r\n            session.value = responseData\r\n\r\n            if (responseData.mediaItemsSet) {\r\n                listImages()\r\n                return\r\n            }\r\n\r\n            const pollForImages = () => {\r\n                if (clearTimeout) clearTimeout(pollTimeout)\r\n                pollTimeout = setTimeout(() => {\r\n                    fetch(addGoogleAccountToUrl(props.googlePickerUrls.googlePickerUrlGetSession))\r\n                        .then((response) => response.json())\r\n                        .then((responseData) => {\r\n                            session.value = responseData\r\n                            if (responseData.mediaItemsSet) {\r\n                                listImages()\r\n                            } else {\r\n                                pollForImages()\r\n                            }\r\n                        })\r\n                }, 5000) // default to poll every 5 seconds\r\n            }\r\n            pollForImages()\r\n        })\r\n}\r\n\r\nconst getImage = async (mediaItem: MediaItem, sizeParams:string = \"=w128-h128\") => {\r\n    const response = await fetch(addGoogleAccountToUrl(props.googlePickerUrls.googlePickerUrlGetImage), {\r\n        method: 'POST',\r\n        headers: {\r\n            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\r\n        },\r\n        body: `baseUrl=${mediaItem.mediaFile.baseUrl}${sizeParams}`\r\n    })\r\n    return await response.blob()\r\n}\r\n\r\nconst listImages = () => {\r\n    fetch(addGoogleAccountToUrl(props.googlePickerUrls.googlePickerUrlGetImages))\r\n        .then((response) => response.json())\r\n        .then((responseData) => {\r\n            imagesData.value = responseData\r\n        })\r\n}\r\n\r\nconst startNewSession = (doNewSession: boolean) => {\r\n    gameLoop(true)\r\n}\r\n\r\nlet activeGoogleAccount = ref(null)\r\nconst setActiveGoogleAccount = (accountId: bigint) => {\r\n    if (accountId !== activeGoogleAccount.value) {\r\n        activeGoogleAccount.value = accountId\r\n        if (mounted) {\r\n            gameLoop(false)\r\n        }\r\n    }\r\n}\r\n\r\nconst addSelectedFilesToUpload = () => {\r\n\r\n    imagesData.value.mediaItems.forEach(async (mediaItem: MediaItem) => {\r\n        let queryParameter = ''\r\n\r\n        if (mediaItem.type === MediaType.photo) {\r\n            queryParameter = '=d'\r\n            if (doDownloadResizedImage) {\r\n                queryParameter = `=w${props.maxImageSize}-h${props.maxImageSize}`\r\n            }\r\n        }\r\n        if (mediaItem.type === MediaType.video && mediaItem.mediaFile.mediaFileMetadata.videoMetadata.processingStatus === VideoProcessingStatus.READY) {\r\n            queryParameter = '=dv'\r\n        }\r\n\r\n        if (queryParameter === '') return\r\n\r\n        const blob = await getImage(mediaItem, queryParameter)\r\n        const uploadFile: UploadFile = {\r\n            localFile: new File([blob], mediaItem.mediaFile.filename, {type: mediaItem.mediaFile.mimeType}),\r\n            name: mediaItem.mediaFile.filename,\r\n            doResize: false\r\n        }\r\n        emit('addFileCallback', uploadFile)\r\n    })\r\n}\r\n\r\n</script>\r\n\r\n<template>\r\n    <div>\r\n        <label for=\"dodownloadresizedimages\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_DO_DOWNLOAD_RESIZED_IMAGES_LABEL}}:</label>\r\n        <input type=\"checkbox\" id=\"dodownloadresizedimages\" name=\"dodownloadresizedimages\" v-model=\"doDownloadResizedImage\">\r\n    </div>\r\n    <div class=\"google-photos-toolbar\">\r\n        <button v-if=\"activeGoogleAccount\" class=\"btn btn-warning\" @click=\"startNewSession(true)\">{{ i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_START_NEW_SELECTION }}</button>\r\n        <GoogleAccountSelector v-if=\"imagesData.mediaItems.length === 0\"\r\n                               :i18n=\"i18n\"\r\n                               :google-picker-url-get-accounts=\"googlePickerUrls.googlePickerUrlGetAccounts\"\r\n                               :google-picker-url-manage-accounts=\"googlePickerUrls.googlePickerUrlManageAccounts\"\r\n                               @setActiveGoogleAccount=\"setActiveGoogleAccount\"></GoogleAccountSelector>\r\n    </div>\r\n    <template v-if=\"activeGoogleAccount\">\r\n        <div v-if=\"!session && !responseError\">{{ i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_LOADING_SESSION }}</div>\r\n        <template v-else>\r\n            <div v-if=\"imagesData.mediaItems.length === 0\">\r\n\r\n\r\n                <div v-if=\"responseError\" class=\"error\">{{ responseError }}</div>\r\n\r\n                <div v-if=\"responseError == null\" class=\"google-photos-picker-urls\">\r\n                    <h1>{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_HEADLINE}}</h1>\r\n\r\n                    <p v-if=\"session?.pollingConfig\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_SESSION_RUNTIME.replace('%s', Math.round(parseInt(session.pollingConfig.timeoutIn)))}}</p>\r\n\r\n                    <div v-if=\"session?.pickerUri\" class=\"links\">\r\n                        <a target=\"_blank\" class=\"\" :href=\"session.pickerUri\">{{ i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_LINK_DESC }}</a>\r\n                        <a target=\"_blank\" class=\"\" :href=\"session.pickerUri\">\r\n                            <QRCode :text=\"session.pickerUri\" :alt=\"i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_LINK_DESC\"></QRCode>\r\n                        </a>\r\n                    </div>\r\n\r\n                    <div class=\"\">\r\n                        <p class=\"\">{{ i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_RELOAD_DESC }}</p>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div v-if=\"imagesData.mediaItems.length > 0\" id=\"google-picker-result\">\r\n                <h3>{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_SELECTED_IMAGES_DESC.replace('%s', imagesData.mediaItems.length)}}</h3>\r\n                <PagingBar :pagingData=\"pagingData\" @goToPage=\"goToPage\"></PagingBar>\r\n\r\n                <div class=\"image-container\">\r\n                    <div v-for=\"value in pagingData?.mediaItems\" :key=\"value.id\" :value=\"value.id\">\r\n                        <img :src=\"value.imageBlobThumbnail || 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='\" :alt=\"value.mediaFile.filename\">\r\n                    </div>\r\n                </div>\r\n\r\n                <PagingBar :pagingData=\"pagingData\" @goToPage=\"goToPage\"></PagingBar>\r\n\r\n                <button class=\"btn btn-primary\" @click=\"addSelectedFilesToUpload\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_UPLOAD_BUTTON_LABEL.replace('%s', imagesData.mediaItems.length)}}</button>\r\n            </div>\r\n        </template>\r\n    </template>\r\n</template>\r\n\r\n<style scoped lang=\"less\">\r\n    a {\r\n        cursor: pointer;\r\n    }\r\n\r\n    .google-photos-toolbar {\r\n        display: flex;\r\n        margin-bottom: 20px;\r\n    }\r\n\r\n    .google-photos-picker-urls {\r\n        h1,p {\r\n            text-align: center;\r\n        }\r\n    }\r\n\r\n    .links {\r\n        display: flex;\r\n        align-items: baseline;\r\n        justify-content: space-evenly;\r\n    }\r\n\r\n    .image-container {\r\n        display: flex;\r\n        flex-wrap: wrap;\r\n        align-items: baseline;\r\n        justify-content: space-between;\r\n\r\n        div {\r\n            height: 128px;\r\n            width: 128px;\r\n            margin: 10px;\r\n        }\r\n        img {\r\n            border-radius: 5px;\r\n            max-width: 100%;\r\n            max-height: 100%;\r\n            object-fit: contain;\r\n        }\r\n    }\r\n\r\n    .error {\r\n        border: 1px solid red;\r\n        padding: 10px;\r\n    }\r\n</style>","import { defineComponent as _defineComponent } from 'vue'\nimport {UploaderI18n} from \"../types/I18n\";\r\n    import { type PropType } from 'vue'\r\n\r\n    \nexport default /*@__PURE__*/_defineComponent({\n  __name: 'LocalFilePicker',\n  props: {\r\n        i18n: {\r\n            type: Object as PropType<UploaderI18n>,\r\n            required: true\r\n        },\r\n        doResize: Boolean\r\n    },\n  emits: ['addFileCallback'],\n  setup(__props, { expose: __expose, emit: __emit }) {\n  __expose();\n\r\n    const props = __props\r\n\r\n    const emit = __emit\r\n\r\n    const addFiles = (event: InputEvent) => {\r\n        const target = event.target as HTMLInputElement\r\n        let newFiles = target.files || event.dataTransfer.files;\r\n        for (let i = 0; i<newFiles.length; i++) {\r\n            let uploadFile : UploadFile  =  {\r\n                localFile: newFiles[i],\r\n                name: newFiles[i].name,\r\n                doResize: props.doResize\r\n            }\r\n            emit('addFileCallback', uploadFile);\r\n        }\r\n    }\r\n\nconst __returned__ = { props, emit, addFiles }\nObject.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })\nreturn __returned__\n}\n\n})","<script setup lang=\"ts\">\r\n    import {UploaderI18n} from \"../types/I18n\";\r\n    import { type PropType } from 'vue'\r\n\r\n    const props = defineProps({\r\n        i18n: {\r\n            type: Object as PropType<UploaderI18n>,\r\n            required: true\r\n        },\r\n        doResize: Boolean\r\n    })\r\n\r\n    const emit = defineEmits(['addFileCallback'])\r\n\r\n    const addFiles = (event: InputEvent) => {\r\n        const target = event.target as HTMLInputElement\r\n        let newFiles = target.files || event.dataTransfer.files;\r\n        for (let i = 0; i<newFiles.length; i++) {\r\n            let uploadFile : UploadFile  =  {\r\n                localFile: newFiles[i],\r\n                name: newFiles[i].name,\r\n                doResize: props.doResize\r\n            }\r\n            emit('addFileCallback', uploadFile);\r\n        }\r\n    }\r\n</script>\r\n\r\n<template>\r\n    <label for=\"fileselect\">{{props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD}}:</label>\r\n    <br />\r\n    <input id=\"fileselect\" type=\"file\" multiple=\"multiple\" @change=\"addFiles\">\r\n</template>\r\n\r\n<style scoped lang=\"less\">\r\n\r\n</style>","import { defineComponent as _defineComponent } from 'vue'\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'PagingBar',\n  props: ['pagingData'],\n  emits: ['goToPage'],\n  setup(__props, { expose: __expose, emit: __emit }) {\n  __expose();\n\r\n    const props = __props\r\n    const emits = __emit\r\n\nconst __returned__ = { props, emits }\nObject.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })\nreturn __returned__\n}\n\n})","<script setup lang=\"ts\">\r\n    const props = defineProps(['pagingData'])\r\n    const emits = defineEmits(['goToPage'])\r\n</script>\r\n\r\n<template>\r\n    <div class=\"paging-bar\">\r\n        <button v-if=\"pagingData?.pagesCount>1\" v-for=\"(numberOfPage, index) in pagingData?.pagesCount\"\r\n            :key=\"index\"\r\n                @click=\"$emit('goToPage', index)\"\r\n                :class=\" { active: index == pagingData.currentPage }\"\r\n        >\r\n            {{ index + 1 }}\r\n        </button>\r\n    </div>\r\n</template>\r\n\r\n<style scoped lang=\"less\">\r\n    .paging-bar {\r\n        button {\r\n            padding: 0 10px;\r\n            background-color: transparent;\r\n            min-height: 32px;\r\n            min-width: 32px;\r\n            border-width: 1px;\r\n        }\r\n\r\n        button:hover {\r\n            background-color: #DDDDDD;\r\n        }\r\n\r\n        button.active {\r\n            background-color: #bbbbbb;\r\n        }\r\n\r\n        button.active:hover {\r\n            background-color: #999999;\r\n        }\r\n\r\n        button:first-child {\r\n            border-top-left-radius: 5px;\r\n            border-bottom-left-radius: 5px;\r\n        }\r\n\r\n        button:last-child {\r\n            border-top-right-radius: 5px;\r\n            border-bottom-right-radius: 5px;\r\n        }\r\n    }\r\n</style>","import { defineComponent as _defineComponent } from 'vue'\nimport {computed} from \"vue\";\r\n    import {qrcode} from \"../util/qrcode\";\r\n\r\n    \nexport default /*@__PURE__*/_defineComponent({\n  __name: 'QRCode',\n  props: ['text', 'typeNumber', 'errorCorrectionLevel', 'alt'],\n  setup(__props, { expose: __expose }) {\n  __expose();\n\r\n    const props = __props\r\n\r\n    const imgSrc = computed(() => {\r\n        const code = qrcode(props.typeNumber || 0, props.errorCorrectionLevel || 'M')\r\n        code.addData(props.text)\r\n        code.make()\r\n        return code.createDataURL(4 )\r\n    })\r\n\r\n\nconst __returned__ = { props, imgSrc }\nObject.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true })\nreturn __returned__\n}\n\n})","<script setup lang=\"ts\">\r\n    import {computed} from \"vue\";\r\n    import {qrcode} from \"../util/qrcode\";\r\n\r\n    const props = defineProps(['text', 'typeNumber', 'errorCorrectionLevel', 'alt'])\r\n\r\n    const imgSrc = computed(() => {\r\n        const code = qrcode(props.typeNumber || 0, props.errorCorrectionLevel || 'M')\r\n        code.addData(props.text)\r\n        code.make()\r\n        return code.createDataURL(4 )\r\n    })\r\n\r\n</script>\r\n\r\n<template>\r\n    <img :src=\"imgSrc\" :alt=\"alt\"></img>\r\n</template>\r\n\r\n<style scoped lang=\"less\">\r\n\r\n</style>","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, vModelSelect as _vModelSelect, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = [\"value\"]\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = [\"href\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return ($setup.googleAccounts.length > 0)\n    ? _withDirectives((_openBlock(), _createElementBlock(\"select\", {\n        key: 0,\n        class: \"form-select\",\n        \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($setup.activeGoogleAccount) = $event)),\n        onChange: $setup.changeGoogleAccount\n      }, [\n        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.googleAccounts, (value) => {\n          return (_openBlock(), _createElementBlock(\"option\", {\n            key: value.id,\n            value: value.id\n          }, _toDisplayString(value.name), 9 /* TEXT, PROPS */, _hoisted_1))\n        }), 128 /* KEYED_FRAGMENT */))\n      ], 544 /* NEED_HYDRATION, NEED_PATCH */)), [\n        [_vModelSelect, $setup.activeGoogleAccount]\n      ])\n    : (_openBlock(), _createElementBlock(\"p\", _hoisted_2, [\n        _createTextVNode(_toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_NO_GOOGLE_ACCOUNTS) + \" \", 1 /* TEXT */),\n        _createElementVNode(\"a\", { href: $props.googlePickerUrlManageAccounts }, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_MANAGE_GOOGLE_ACCOUNTS), 9 /* TEXT, PROPS */, _hoisted_3)\n      ]))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vModelCheckbox as _vModelCheckbox, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { for: \"dodownloadresizedimages\" }\nconst _hoisted_2 = { class: \"google-photos-toolbar\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n  key: 0,\n  class: \"error\"\n}\nconst _hoisted_6 = {\n  key: 1,\n  class: \"google-photos-picker-urls\"\n}\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = {\n  key: 1,\n  class: \"links\"\n}\nconst _hoisted_9 = [\"href\"]\nconst _hoisted_10 = [\"href\"]\nconst _hoisted_11 = { class: \"\" }\nconst _hoisted_12 = { class: \"\" }\nconst _hoisted_13 = {\n  key: 1,\n  id: \"google-picker-result\"\n}\nconst _hoisted_14 = { class: \"image-container\" }\nconst _hoisted_15 = [\"value\"]\nconst _hoisted_16 = [\"src\", \"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(_Fragment, null, [\n    _createElementVNode(\"div\", null, [\n      _createElementVNode(\"label\", _hoisted_1, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_DO_DOWNLOAD_RESIZED_IMAGES_LABEL) + \":\", 1 /* TEXT */),\n      _withDirectives(_createElementVNode(\"input\", {\n        type: \"checkbox\",\n        id: \"dodownloadresizedimages\",\n        name: \"dodownloadresizedimages\",\n        \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($setup.doDownloadResizedImage) = $event))\n      }, null, 512 /* NEED_PATCH */), [\n        [_vModelCheckbox, $setup.doDownloadResizedImage]\n      ])\n    ]),\n    _createElementVNode(\"div\", _hoisted_2, [\n      ($setup.activeGoogleAccount)\n        ? (_openBlock(), _createElementBlock(\"button\", {\n            key: 0,\n            class: \"btn btn-warning\",\n            onClick: _cache[1] || (_cache[1] = ($event: any) => ($setup.startNewSession(true)))\n          }, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_START_NEW_SELECTION), 1 /* TEXT */))\n        : _createCommentVNode(\"v-if\", true),\n      ($setup.imagesData.mediaItems.length === 0)\n        ? (_openBlock(), _createBlock($setup[\"GoogleAccountSelector\"], {\n            key: 1,\n            i18n: $props.i18n,\n            \"google-picker-url-get-accounts\": $props.googlePickerUrls.googlePickerUrlGetAccounts,\n            \"google-picker-url-manage-accounts\": $props.googlePickerUrls.googlePickerUrlManageAccounts,\n            onSetActiveGoogleAccount: $setup.setActiveGoogleAccount\n          }, null, 8 /* PROPS */, [\"i18n\", \"google-picker-url-get-accounts\", \"google-picker-url-manage-accounts\"]))\n        : _createCommentVNode(\"v-if\", true)\n    ]),\n    ($setup.activeGoogleAccount)\n      ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n          (!$setup.session && !$setup.responseError)\n            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_LOADING_SESSION), 1 /* TEXT */))\n            : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n                ($setup.imagesData.mediaItems.length === 0)\n                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n                      ($setup.responseError)\n                        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString($setup.responseError), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true),\n                      ($setup.responseError == null)\n                        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n                            _createElementVNode(\"h1\", null, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_HEADLINE), 1 /* TEXT */),\n                            ($setup.session?.pollingConfig)\n                              ? (_openBlock(), _createElementBlock(\"p\", _hoisted_7, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_SESSION_RUNTIME.replace('%s', Math.round(parseInt($setup.session.pollingConfig.timeoutIn)))), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true),\n                            ($setup.session?.pickerUri)\n                              ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n                                  _createElementVNode(\"a\", {\n                                    target: \"_blank\",\n                                    class: \"\",\n                                    href: $setup.session.pickerUri\n                                  }, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_LINK_DESC), 9 /* TEXT, PROPS */, _hoisted_9),\n                                  _createElementVNode(\"a\", {\n                                    target: \"_blank\",\n                                    class: \"\",\n                                    href: $setup.session.pickerUri\n                                  }, [\n                                    _createVNode($setup[\"QRCode\"], {\n                                      text: $setup.session.pickerUri,\n                                      alt: $props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_LINK_DESC\n                                    }, null, 8 /* PROPS */, [\"text\", \"alt\"])\n                                  ], 8 /* PROPS */, _hoisted_10)\n                                ]))\n                              : _createCommentVNode(\"v-if\", true),\n                            _createElementVNode(\"div\", _hoisted_11, [\n                              _createElementVNode(\"p\", _hoisted_12, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_RELOAD_DESC), 1 /* TEXT */)\n                            ])\n                          ]))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]))\n                  : _createCommentVNode(\"v-if\", true),\n                ($setup.imagesData.mediaItems.length > 0)\n                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n                      _createElementVNode(\"h3\", null, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_SELECTED_IMAGES_DESC.replace('%s', $setup.imagesData.mediaItems.length)), 1 /* TEXT */),\n                      _createVNode($setup[\"PagingBar\"], {\n                        pagingData: $setup.pagingData,\n                        onGoToPage: $setup.goToPage\n                      }, null, 8 /* PROPS */, [\"pagingData\"]),\n                      _createElementVNode(\"div\", _hoisted_14, [\n                        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.pagingData?.mediaItems, (value) => {\n                          return (_openBlock(), _createElementBlock(\"div\", {\n                            key: value.id,\n                            value: value.id\n                          }, [\n                            _createElementVNode(\"img\", {\n                              src: value.imageBlobThumbnail || 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==',\n                              alt: value.mediaFile.filename\n                            }, null, 8 /* PROPS */, _hoisted_16)\n                          ], 8 /* PROPS */, _hoisted_15))\n                        }), 128 /* KEYED_FRAGMENT */))\n                      ]),\n                      _createVNode($setup[\"PagingBar\"], {\n                        pagingData: $setup.pagingData,\n                        onGoToPage: $setup.goToPage\n                      }, null, 8 /* PROPS */, [\"pagingData\"]),\n                      _createElementVNode(\"button\", {\n                        class: \"btn btn-primary\",\n                        onClick: $setup.addSelectedFilesToUpload\n                      }, _toDisplayString($props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_UPLOAD_BUTTON_LABEL.replace('%s', $setup.imagesData.mediaItems.length)), 1 /* TEXT */)\n                    ]))\n                  : _createCommentVNode(\"v-if\", true)\n              ], 64 /* STABLE_FRAGMENT */))\n        ], 64 /* STABLE_FRAGMENT */))\n      : _createCommentVNode(\"v-if\", true)\n  ], 64 /* STABLE_FRAGMENT */))\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { for: \"fileselect\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(_Fragment, null, [\n    _createElementVNode(\"label\", _hoisted_1, _toDisplayString($setup.props.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD) + \":\", 1 /* TEXT */),\n    _cache[0] || (_cache[0] = _createElementVNode(\"br\", null, null, -1 /* HOISTED */)),\n    _createElementVNode(\"input\", {\n      id: \"fileselect\",\n      type: \"file\",\n      multiple: \"multiple\",\n      onChange: $setup.addFiles\n    }, null, 32 /* NEED_HYDRATION */)\n  ], 64 /* STABLE_FRAGMENT */))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"paging-bar\" }\nconst _hoisted_2 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    ($props.pagingData?.pagesCount>1)\n      ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList($props.pagingData?.pagesCount, (numberOfPage, index) => {\n          return (_openBlock(), _createElementBlock(\"button\", {\n            key: index,\n            onClick: ($event: any) => (_ctx.$emit('goToPage', index)),\n            class: _normalizeClass( { active: index == $props.pagingData.currentPage })\n          }, _toDisplayString(index + 1), 11 /* TEXT, CLASS, PROPS */, _hoisted_2))\n        }), 128 /* KEYED_FRAGMENT */))\n      : _createCommentVNode(\"v-if\", true)\n  ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"src\", \"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n  return (_openBlock(), _createElementBlock(\"img\", {\n    src: $setup.imgSrc,\n    alt: $props.alt\n  }, null, 8 /* PROPS */, _hoisted_1))\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n    const target = sfc.__vccOpts || sfc;\n    for (const [key, val] of props) {\n        target[key] = val;\n    }\n    return target;\n};\n","import { render } from \"./Cacheclear.vue?vue&type=template&id=50807fe6\"\nimport script from \"./Cacheclear.vue?vue&type=script&lang=js\"\nexport * from \"./Cacheclear.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/cacheclear/Cacheclear.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"50807fe6\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('50807fe6', __exports__)) {\n    api.reload('50807fe6', __exports__)\n  }\n  \n  module.hot.accept(\"./Cacheclear.vue?vue&type=template&id=50807fe6\", () => {\n    api.rerender('50807fe6', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Elements.vue?vue&type=template&id=5d3d150e&scoped=true\"\nimport script from \"./Elements.vue?vue&type=script&lang=js\"\nexport * from \"./Elements.vue?vue&type=script&lang=js\"\n\nimport \"./Elements.vue?vue&type=style&index=0&id=5d3d150e&lang=less&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5d3d150e\"],['__file',\"backend/vue/cacheclear/Elements.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"5d3d150e\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('5d3d150e', __exports__)) {\n    api.reload('5d3d150e', __exports__)\n  }\n  \n  module.hot.accept(\"./Elements.vue?vue&type=template&id=5d3d150e&scoped=true\", () => {\n    api.rerender('5d3d150e', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Groups.vue?vue&type=template&id=ef71ab54&scoped=true\"\nimport script from \"./Groups.vue?vue&type=script&lang=js\"\nexport * from \"./Groups.vue?vue&type=script&lang=js\"\n\nimport \"./Groups.vue?vue&type=style&index=0&id=ef71ab54&lang=less&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ef71ab54\"],['__file',\"backend/vue/cacheclear/Groups.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"ef71ab54\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('ef71ab54', __exports__)) {\n    api.reload('ef71ab54', __exports__)\n  }\n  \n  module.hot.accept(\"./Groups.vue?vue&type=template&id=ef71ab54&scoped=true\", () => {\n    api.rerender('ef71ab54', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./ErrorPanel.vue?vue&type=template&id=462fe1f3&scoped=true\"\nimport script from \"./ErrorPanel.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorPanel.vue?vue&type=script&lang=js\"\n\nimport \"./ErrorPanel.vue?vue&type=style&index=0&id=462fe1f3&scoped=true&lang=less\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-462fe1f3\"],['__file',\"backend/vue/components/ErrorPanel.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"462fe1f3\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('462fe1f3', __exports__)) {\n    api.reload('462fe1f3', __exports__)\n  }\n  \n  module.hot.accept(\"./ErrorPanel.vue?vue&type=template&id=462fe1f3&scoped=true\", () => {\n    api.rerender('462fe1f3', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Folder.vue?vue&type=template&id=1ec29ff6&scoped=true\"\nimport script from \"./Folder.vue?vue&type=script&lang=js\"\nexport * from \"./Folder.vue?vue&type=script&lang=js\"\n\nimport \"./Folder.vue?vue&type=style&index=0&id=1ec29ff6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1ec29ff6\"],['__file',\"backend/vue/components/Folder.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"1ec29ff6\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('1ec29ff6', __exports__)) {\n    api.reload('1ec29ff6', __exports__)\n  }\n  \n  module.hot.accept(\"./Folder.vue?vue&type=template&id=1ec29ff6&scoped=true\", () => {\n    api.rerender('1ec29ff6', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Folders.vue?vue&type=template&id=26e2f1be&scoped=true\"\nimport script from \"./Folders.vue?vue&type=script&lang=js\"\nexport * from \"./Folders.vue?vue&type=script&lang=js\"\n\nimport \"./Folders.vue?vue&type=style&index=0&id=26e2f1be&lang=less&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-26e2f1be\"],['__file',\"backend/vue/components/Folders.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"26e2f1be\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('26e2f1be', __exports__)) {\n    api.reload('26e2f1be', __exports__)\n  }\n  \n  module.hot.accept(\"./Folders.vue?vue&type=template&id=26e2f1be&scoped=true\", () => {\n    api.rerender('26e2f1be', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./ProcessSteps.vue?vue&type=template&id=269a1562&scoped=true\"\nimport script from \"./ProcessSteps.vue?vue&type=script&lang=js\"\nexport * from \"./ProcessSteps.vue?vue&type=script&lang=js\"\n\nimport \"./ProcessSteps.vue?vue&type=style&index=0&id=269a1562&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-269a1562\"],['__file',\"backend/vue/components/ProcessSteps.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"269a1562\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('269a1562', __exports__)) {\n    api.reload('269a1562', __exports__)\n  }\n  \n  module.hot.accept(\"./ProcessSteps.vue?vue&type=template&id=269a1562&scoped=true\", () => {\n    api.rerender('269a1562', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Progress.vue?vue&type=template&id=15a54af8&scoped=true\"\nimport script from \"./Progress.vue?vue&type=script&lang=js\"\nexport * from \"./Progress.vue?vue&type=script&lang=js\"\n\nimport \"./Progress.vue?vue&type=style&index=0&id=15a54af8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-15a54af8\"],['__file',\"backend/vue/components/Progress.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"15a54af8\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('15a54af8', __exports__)) {\n    api.reload('15a54af8', __exports__)\n  }\n  \n  module.hot.accept(\"./Progress.vue?vue&type=template&id=15a54af8&scoped=true\", () => {\n    api.rerender('15a54af8', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Filesync.vue?vue&type=template&id=c4440ce6\"\nimport script from \"./Filesync.vue?vue&type=script&lang=js\"\nexport * from \"./Filesync.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/filesync/Filesync.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"c4440ce6\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('c4440ce6', __exports__)) {\n    api.reload('c4440ce6', __exports__)\n  }\n  \n  module.hot.accept(\"./Filesync.vue?vue&type=template&id=c4440ce6\", () => {\n    api.rerender('c4440ce6', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./ImageContentPluginForm.vue?vue&type=template&id=4c7c98ed\"\nimport script from \"./ImageContentPluginForm.vue?vue&type=script&lang=js\"\nexport * from \"./ImageContentPluginForm.vue?vue&type=script&lang=js\"\n\nimport \"./ImageContentPluginForm.vue?vue&type=style&index=0&id=4c7c98ed&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/imagecontentpluginform/ImageContentPluginForm.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"4c7c98ed\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('4c7c98ed', __exports__)) {\n    api.reload('4c7c98ed', __exports__)\n  }\n  \n  module.hot.accept(\"./ImageContentPluginForm.vue?vue&type=template&id=4c7c98ed\", () => {\n    api.rerender('4c7c98ed', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./ImageSelector.vue?vue&type=template&id=f64e921c&scoped=true\"\nimport script from \"./ImageSelector.vue?vue&type=script&lang=js\"\nexport * from \"./ImageSelector.vue?vue&type=script&lang=js\"\n\nimport \"./ImageSelector.vue?vue&type=style&index=0&id=f64e921c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f64e921c\"],['__file',\"backend/vue/imagecontentpluginform/ImageSelector.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"f64e921c\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('f64e921c', __exports__)) {\n    api.reload('f64e921c', __exports__)\n  }\n  \n  module.hot.accept(\"./ImageSelector.vue?vue&type=template&id=f64e921c&scoped=true\", () => {\n    api.rerender('f64e921c', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Input.vue?vue&type=template&id=622b6062\"\nimport script from \"./Input.vue?vue&type=script&lang=js\"\nexport * from \"./Input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/imagecontentpluginform/Input.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"622b6062\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('622b6062', __exports__)) {\n    api.reload('622b6062', __exports__)\n  }\n  \n  module.hot.accept(\"./Input.vue?vue&type=template&id=622b6062\", () => {\n    api.rerender('622b6062', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Label.vue?vue&type=template&id=4f983ae8&scoped=true\"\nimport script from \"./Label.vue?vue&type=script&lang=js\"\nexport * from \"./Label.vue?vue&type=script&lang=js\"\n\nimport \"./Label.vue?vue&type=style&index=0&id=4f983ae8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f983ae8\"],['__file',\"backend/vue/imagecontentpluginform/Label.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"4f983ae8\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('4f983ae8', __exports__)) {\n    api.reload('4f983ae8', __exports__)\n  }\n  \n  module.hot.accept(\"./Label.vue?vue&type=template&id=4f983ae8&scoped=true\", () => {\n    api.rerender('4f983ae8', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Radio.vue?vue&type=template&id=7acec7da\"\nimport script from \"./Radio.vue?vue&type=script&lang=js\"\nexport * from \"./Radio.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/imagecontentpluginform/Radio.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"7acec7da\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('7acec7da', __exports__)) {\n    api.reload('7acec7da', __exports__)\n  }\n  \n  module.hot.accept(\"./Radio.vue?vue&type=template&id=7acec7da\", () => {\n    api.rerender('7acec7da', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Select.vue?vue&type=template&id=30861e94\"\nimport script from \"./Select.vue?vue&type=script&lang=js\"\nexport * from \"./Select.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/imagecontentpluginform/Select.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"30861e94\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('30861e94', __exports__)) {\n    api.reload('30861e94', __exports__)\n  }\n  \n  module.hot.accept(\"./Select.vue?vue&type=template&id=30861e94\", () => {\n    api.rerender('30861e94', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Scalepriceeditor.vue?vue&type=template&id=eacbcba6&scoped=true\"\nimport script from \"./Scalepriceeditor.vue?vue&type=script&lang=js\"\nexport * from \"./Scalepriceeditor.vue?vue&type=script&lang=js\"\n\nimport \"./Scalepriceeditor.vue?vue&type=style&index=0&id=eacbcba6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eacbcba6\"],['__file',\"backend/vue/scalepriceeditor/Scalepriceeditor.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"eacbcba6\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('eacbcba6', __exports__)) {\n    api.reload('eacbcba6', __exports__)\n  }\n  \n  module.hot.accept(\"./Scalepriceeditor.vue?vue&type=template&id=eacbcba6&scoped=true\", () => {\n    api.rerender('eacbcba6', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Thumbnailcreator.vue?vue&type=template&id=9fc9a6a6\"\nimport script from \"./Thumbnailcreator.vue?vue&type=script&lang=js\"\nexport * from \"./Thumbnailcreator.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/thumbnailcreator/Thumbnailcreator.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"9fc9a6a6\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('9fc9a6a6', __exports__)) {\n    api.reload('9fc9a6a6', __exports__)\n  }\n  \n  module.hot.accept(\"./Thumbnailcreator.vue?vue&type=template&id=9fc9a6a6\", () => {\n    api.rerender('9fc9a6a6', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./Uploader.vue?vue&type=template&id=3d2e0926&scoped=true\"\nimport script from \"./Uploader.vue?vue&type=script&lang=js\"\nexport * from \"./Uploader.vue?vue&type=script&lang=js\"\n\nimport \"./Uploader.vue?vue&type=style&index=0&id=3d2e0926&scoped=true&lang=less\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3d2e0926\"],['__file',\"backend/vue/uploader/Uploader.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"3d2e0926\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('3d2e0926', __exports__)) {\n    api.reload('3d2e0926', __exports__)\n  }\n  \n  module.hot.accept(\"./Uploader.vue?vue&type=template&id=3d2e0926&scoped=true\", () => {\n    api.rerender('3d2e0926', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./GoogleAccountSelector.vue?vue&type=template&id=a2db158e&scoped=true&ts=true\"\nimport script from \"./GoogleAccountSelector.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./GoogleAccountSelector.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./GoogleAccountSelector.vue?vue&type=style&index=0&id=a2db158e&scoped=true&lang=less\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a2db158e\"],['__file',\"backend/vue/uploader/components/GoogleAccountSelector.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"a2db158e\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('a2db158e', __exports__)) {\n    api.reload('a2db158e', __exports__)\n  }\n  \n  module.hot.accept(\"./GoogleAccountSelector.vue?vue&type=template&id=a2db158e&scoped=true&ts=true\", () => {\n    api.rerender('a2db158e', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./GoogleFilePicker.vue?vue&type=template&id=97b1fba6&scoped=true&ts=true\"\nimport script from \"./GoogleFilePicker.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./GoogleFilePicker.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./GoogleFilePicker.vue?vue&type=style&index=0&id=97b1fba6&scoped=true&lang=less\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-97b1fba6\"],['__file',\"backend/vue/uploader/components/GoogleFilePicker.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"97b1fba6\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('97b1fba6', __exports__)) {\n    api.reload('97b1fba6', __exports__)\n  }\n  \n  module.hot.accept(\"./GoogleFilePicker.vue?vue&type=template&id=97b1fba6&scoped=true&ts=true\", () => {\n    api.rerender('97b1fba6', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./LocalFilePicker.vue?vue&type=template&id=535bd00a&ts=true\"\nimport script from \"./LocalFilePicker.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LocalFilePicker.vue?vue&type=script&setup=true&lang=ts\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/uploader/components/LocalFilePicker.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"535bd00a\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('535bd00a', __exports__)) {\n    api.reload('535bd00a', __exports__)\n  }\n  \n  module.hot.accept(\"./LocalFilePicker.vue?vue&type=template&id=535bd00a&ts=true\", () => {\n    api.rerender('535bd00a', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./PagingBar.vue?vue&type=template&id=a3e58926&scoped=true&ts=true\"\nimport script from \"./PagingBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PagingBar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./PagingBar.vue?vue&type=style&index=0&id=a3e58926&scoped=true&lang=less\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a3e58926\"],['__file',\"backend/vue/uploader/components/PagingBar.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"a3e58926\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('a3e58926', __exports__)) {\n    api.reload('a3e58926', __exports__)\n  }\n  \n  module.hot.accept(\"./PagingBar.vue?vue&type=template&id=a3e58926&scoped=true&ts=true\", () => {\n    api.rerender('a3e58926', render)\n  })\n\n}\n\n\nexport default __exports__","import { render } from \"./QRCode.vue?vue&type=template&id=30947310&ts=true\"\nimport script from \"./QRCode.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./QRCode.vue?vue&type=script&setup=true&lang=ts\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__file',\"backend/vue/uploader/components/QRCode.vue\"]])\n/* hot reload */\nif (module.hot) {\n  __exports__.__hmrId = \"30947310\"\n  const api = __VUE_HMR_RUNTIME__\n  module.hot.accept()\n  if (!api.createRecord('30947310', __exports__)) {\n    api.reload('30947310', __exports__)\n  }\n  \n  module.hot.accept(\"./QRCode.vue?vue&type=template&id=30947310&ts=true\", () => {\n    api.rerender('30947310', render)\n  })\n\n}\n\n\nexport default __exports__","/**\n* vue v3.5.12\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\n\nfunction initDev() {\n  {\n    initCustomFormatter();\n  }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  initDev();\n}\nconst compile = () => {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(\n      `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n    );\n  }\n};\n\nexport { compile };\n","/*!\n  * PhotoSwipe 5.4.4 - https://photoswipe.com\n  * (c) 2024 Dmytro Semenov\n  */\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/**\r\n * @template {keyof HTMLElementTagNameMap} T\r\n * @param {string} className\r\n * @param {T} tagName\r\n * @param {Node} [appendToEl]\r\n * @returns {HTMLElementTagNameMap[T]}\r\n */\nfunction createElement(className, tagName, appendToEl) {\n  const el = document.createElement(tagName);\n\n  if (className) {\n    el.className = className;\n  }\n\n  if (appendToEl) {\n    appendToEl.appendChild(el);\n  }\n\n  return el;\n}\n/**\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {Point}\r\n */\n\nfunction equalizePoints(p1, p2) {\n  p1.x = p2.x;\n  p1.y = p2.y;\n\n  if (p2.id !== undefined) {\n    p1.id = p2.id;\n  }\n\n  return p1;\n}\n/**\r\n * @param {Point} p\r\n */\n\nfunction roundPoint(p) {\n  p.x = Math.round(p.x);\n  p.y = Math.round(p.y);\n}\n/**\r\n * Returns distance between two points.\r\n *\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {number}\r\n */\n\nfunction getDistanceBetween(p1, p2) {\n  const x = Math.abs(p1.x - p2.x);\n  const y = Math.abs(p1.y - p2.y);\n  return Math.sqrt(x * x + y * y);\n}\n/**\r\n * Whether X and Y positions of points are equal\r\n *\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {boolean}\r\n */\n\nfunction pointsEqual(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\n/**\r\n * The float result between the min and max values.\r\n *\r\n * @param {number} val\r\n * @param {number} min\r\n * @param {number} max\r\n * @returns {number}\r\n */\n\nfunction clamp(val, min, max) {\n  return Math.min(Math.max(val, min), max);\n}\n/**\r\n * Get transform string\r\n *\r\n * @param {number} x\r\n * @param {number} [y]\r\n * @param {number} [scale]\r\n * @returns {string}\r\n */\n\nfunction toTransformString(x, y, scale) {\n  let propValue = `translate3d(${x}px,${y || 0}px,0)`;\n\n  if (scale !== undefined) {\n    propValue += ` scale3d(${scale},${scale},1)`;\n  }\n\n  return propValue;\n}\n/**\r\n * Apply transform:translate(x, y) scale(scale) to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {number} x\r\n * @param {number} [y]\r\n * @param {number} [scale]\r\n */\n\nfunction setTransform(el, x, y, scale) {\n  el.style.transform = toTransformString(x, y, scale);\n}\nconst defaultCSSEasing = 'cubic-bezier(.4,0,.22,1)';\n/**\r\n * Apply CSS transition to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {string} [prop] CSS property to animate\r\n * @param {number} [duration] in ms\r\n * @param {string} [ease] CSS easing function\r\n */\n\nfunction setTransitionStyle(el, prop, duration, ease) {\n  // inOut: 'cubic-bezier(.4, 0, .22, 1)', // for \"toggle state\" transitions\n  // out: 'cubic-bezier(0, 0, .22, 1)', // for \"show\" transitions\n  // in: 'cubic-bezier(.4, 0, 1, 1)'// for \"hide\" transitions\n  el.style.transition = prop ? `${prop} ${duration}ms ${ease || defaultCSSEasing}` : 'none';\n}\n/**\r\n * Apply width and height CSS properties to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {string | number} w\r\n * @param {string | number} h\r\n */\n\nfunction setWidthHeight(el, w, h) {\n  el.style.width = typeof w === 'number' ? `${w}px` : w;\n  el.style.height = typeof h === 'number' ? `${h}px` : h;\n}\n/**\r\n * @param {HTMLElement} el\r\n */\n\nfunction removeTransitionStyle(el) {\n  setTransitionStyle(el);\n}\n/**\r\n * @param {HTMLImageElement} img\r\n * @returns {Promise<HTMLImageElement | void>}\r\n */\n\nfunction decodeImage(img) {\n  if ('decode' in img) {\n    return img.decode().catch(() => {});\n  }\n\n  if (img.complete) {\n    return Promise.resolve(img);\n  }\n\n  return new Promise((resolve, reject) => {\n    img.onload = () => resolve(img);\n\n    img.onerror = reject;\n  });\n}\n/** @typedef {LOAD_STATE[keyof LOAD_STATE]} LoadState */\n\n/** @type {{ IDLE: 'idle'; LOADING: 'loading'; LOADED: 'loaded'; ERROR: 'error' }} */\n\nconst LOAD_STATE = {\n  IDLE: 'idle',\n  LOADING: 'loading',\n  LOADED: 'loaded',\n  ERROR: 'error'\n};\n/**\r\n * Check if click or keydown event was dispatched\r\n * with a special key or via mouse wheel.\r\n *\r\n * @param {MouseEvent | KeyboardEvent} e\r\n * @returns {boolean}\r\n */\n\nfunction specialKeyUsed(e) {\n  return 'button' in e && e.button === 1 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey;\n}\n/**\r\n * Parse `gallery` or `children` options.\r\n *\r\n * @param {import('../photoswipe.js').ElementProvider} [option]\r\n * @param {string} [legacySelector]\r\n * @param {HTMLElement | Document} [parent]\r\n * @returns HTMLElement[]\r\n */\n\nfunction getElementsFromOption(option, legacySelector, parent = document) {\n  /** @type {HTMLElement[]} */\n  let elements = [];\n\n  if (option instanceof Element) {\n    elements = [option];\n  } else if (option instanceof NodeList || Array.isArray(option)) {\n    elements = Array.from(option);\n  } else {\n    const selector = typeof option === 'string' ? option : legacySelector;\n\n    if (selector) {\n      elements = Array.from(parent.querySelectorAll(selector));\n    }\n  }\n\n  return elements;\n}\n/**\r\n * Check if browser is Safari\r\n *\r\n * @returns {boolean}\r\n */\n\nfunction isSafari() {\n  return !!(navigator.vendor && navigator.vendor.match(/apple/i));\n}\n\n// Detect passive event listener support\nlet supportsPassive = false;\n/* eslint-disable */\n\ntry {\n  /* @ts-ignore */\n  window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n    get: () => {\n      supportsPassive = true;\n    }\n  }));\n} catch (e) {}\n/* eslint-enable */\n\n/**\r\n * @typedef {Object} PoolItem\r\n * @prop {HTMLElement | Window | Document | undefined | null} target\r\n * @prop {string} type\r\n * @prop {EventListenerOrEventListenerObject} listener\r\n * @prop {boolean} [passive]\r\n */\n\n\nclass DOMEvents {\n  constructor() {\n    /**\r\n     * @type {PoolItem[]}\r\n     * @private\r\n     */\n    this._pool = [];\n  }\n  /**\r\n   * Adds event listeners\r\n   *\r\n   * @param {PoolItem['target']} target\r\n   * @param {PoolItem['type']} type Can be multiple, separated by space.\r\n   * @param {PoolItem['listener']} listener\r\n   * @param {PoolItem['passive']} [passive]\r\n   */\n\n\n  add(target, type, listener, passive) {\n    this._toggleListener(target, type, listener, passive);\n  }\n  /**\r\n   * Removes event listeners\r\n   *\r\n   * @param {PoolItem['target']} target\r\n   * @param {PoolItem['type']} type\r\n   * @param {PoolItem['listener']} listener\r\n   * @param {PoolItem['passive']} [passive]\r\n   */\n\n\n  remove(target, type, listener, passive) {\n    this._toggleListener(target, type, listener, passive, true);\n  }\n  /**\r\n   * Removes all bound events\r\n   */\n\n\n  removeAll() {\n    this._pool.forEach(poolItem => {\n      this._toggleListener(poolItem.target, poolItem.type, poolItem.listener, poolItem.passive, true, true);\n    });\n\n    this._pool = [];\n  }\n  /**\r\n   * Adds or removes event\r\n   *\r\n   * @private\r\n   * @param {PoolItem['target']} target\r\n   * @param {PoolItem['type']} type\r\n   * @param {PoolItem['listener']} listener\r\n   * @param {PoolItem['passive']} [passive]\r\n   * @param {boolean} [unbind] Whether the event should be added or removed\r\n   * @param {boolean} [skipPool] Whether events pool should be skipped\r\n   */\n\n\n  _toggleListener(target, type, listener, passive, unbind, skipPool) {\n    if (!target) {\n      return;\n    }\n\n    const methodName = unbind ? 'removeEventListener' : 'addEventListener';\n    const types = type.split(' ');\n    types.forEach(eType => {\n      if (eType) {\n        // Events pool is used to easily unbind all events when PhotoSwipe is closed,\n        // so developer doesn't need to do this manually\n        if (!skipPool) {\n          if (unbind) {\n            // Remove from the events pool\n            this._pool = this._pool.filter(poolItem => {\n              return poolItem.type !== eType || poolItem.listener !== listener || poolItem.target !== target;\n            });\n          } else {\n            // Add to the events pool\n            this._pool.push({\n              target,\n              type: eType,\n              listener,\n              passive\n            });\n          }\n        } // most PhotoSwipe events call preventDefault,\n        // and we do not need browser to scroll the page\n\n\n        const eventOptions = supportsPassive ? {\n          passive: passive || false\n        } : false;\n        target[methodName](eType, listener, eventOptions);\n      }\n    });\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/**\r\n * @param {PhotoSwipeOptions} options\r\n * @param {PhotoSwipeBase} pswp\r\n * @returns {Point}\r\n */\nfunction getViewportSize(options, pswp) {\n  if (options.getViewportSizeFn) {\n    const newViewportSize = options.getViewportSizeFn(options, pswp);\n\n    if (newViewportSize) {\n      return newViewportSize;\n    }\n  }\n\n  return {\n    x: document.documentElement.clientWidth,\n    // TODO: height on mobile is very incosistent due to toolbar\n    // find a way to improve this\n    //\n    // document.documentElement.clientHeight - doesn't seem to work well\n    y: window.innerHeight\n  };\n}\n/**\r\n * Parses padding option.\r\n * Supported formats:\r\n *\r\n * // Object\r\n * padding: {\r\n *  top: 0,\r\n *  bottom: 0,\r\n *  left: 0,\r\n *  right: 0\r\n * }\r\n *\r\n * // A function that returns the object\r\n * paddingFn: (viewportSize, itemData, index) => {\r\n *  return {\r\n *    top: 0,\r\n *    bottom: 0,\r\n *    left: 0,\r\n *    right: 0\r\n *  };\r\n * }\r\n *\r\n * // Legacy variant\r\n * paddingLeft: 0,\r\n * paddingRight: 0,\r\n * paddingTop: 0,\r\n * paddingBottom: 0,\r\n *\r\n * @param {'left' | 'top' | 'bottom' | 'right'} prop\r\n * @param {PhotoSwipeOptions} options PhotoSwipe options\r\n * @param {Point} viewportSize PhotoSwipe viewport size, for example: { x:800, y:600 }\r\n * @param {SlideData} itemData Data about the slide\r\n * @param {number} index Slide index\r\n * @returns {number}\r\n */\n\nfunction parsePaddingOption(prop, options, viewportSize, itemData, index) {\n  let paddingValue = 0;\n\n  if (options.paddingFn) {\n    paddingValue = options.paddingFn(viewportSize, itemData, index)[prop];\n  } else if (options.padding) {\n    paddingValue = options.padding[prop];\n  } else {\n    const legacyPropName = 'padding' + prop[0].toUpperCase() + prop.slice(1); // @ts-expect-error\n\n    if (options[legacyPropName]) {\n      // @ts-expect-error\n      paddingValue = options[legacyPropName];\n    }\n  }\n\n  return Number(paddingValue) || 0;\n}\n/**\r\n * @param {PhotoSwipeOptions} options\r\n * @param {Point} viewportSize\r\n * @param {SlideData} itemData\r\n * @param {number} index\r\n * @returns {Point}\r\n */\n\nfunction getPanAreaSize(options, viewportSize, itemData, index) {\n  return {\n    x: viewportSize.x - parsePaddingOption('left', options, viewportSize, itemData, index) - parsePaddingOption('right', options, viewportSize, itemData, index),\n    y: viewportSize.y - parsePaddingOption('top', options, viewportSize, itemData, index) - parsePaddingOption('bottom', options, viewportSize, itemData, index)\n  };\n}\n\n/** @typedef {import('./slide.js').default} Slide */\n\n/** @typedef {Record<Axis, number>} Point */\n\n/** @typedef {'x' | 'y'} Axis */\n\n/**\r\n * Calculates minimum, maximum and initial (center) bounds of a slide\r\n */\n\nclass PanBounds {\n  /**\r\n   * @param {Slide} slide\r\n   */\n  constructor(slide) {\n    this.slide = slide;\n    this.currZoomLevel = 1;\n    this.center =\n    /** @type {Point} */\n    {\n      x: 0,\n      y: 0\n    };\n    this.max =\n    /** @type {Point} */\n    {\n      x: 0,\n      y: 0\n    };\n    this.min =\n    /** @type {Point} */\n    {\n      x: 0,\n      y: 0\n    };\n  }\n  /**\r\n   * _getItemBounds\r\n   *\r\n   * @param {number} currZoomLevel\r\n   */\n\n\n  update(currZoomLevel) {\n    this.currZoomLevel = currZoomLevel;\n\n    if (!this.slide.width) {\n      this.reset();\n    } else {\n      this._updateAxis('x');\n\n      this._updateAxis('y');\n\n      this.slide.pswp.dispatch('calcBounds', {\n        slide: this.slide\n      });\n    }\n  }\n  /**\r\n   * _calculateItemBoundsForAxis\r\n   *\r\n   * @param {Axis} axis\r\n   */\n\n\n  _updateAxis(axis) {\n    const {\n      pswp\n    } = this.slide;\n    const elSize = this.slide[axis === 'x' ? 'width' : 'height'] * this.currZoomLevel;\n    const paddingProp = axis === 'x' ? 'left' : 'top';\n    const padding = parsePaddingOption(paddingProp, pswp.options, pswp.viewportSize, this.slide.data, this.slide.index);\n    const panAreaSize = this.slide.panAreaSize[axis]; // Default position of element.\n    // By default, it is center of viewport:\n\n    this.center[axis] = Math.round((panAreaSize - elSize) / 2) + padding; // maximum pan position\n\n    this.max[axis] = elSize > panAreaSize ? Math.round(panAreaSize - elSize) + padding : this.center[axis]; // minimum pan position\n\n    this.min[axis] = elSize > panAreaSize ? padding : this.center[axis];\n  } // _getZeroBounds\n\n\n  reset() {\n    this.center.x = 0;\n    this.center.y = 0;\n    this.max.x = 0;\n    this.max.y = 0;\n    this.min.x = 0;\n    this.min.y = 0;\n  }\n  /**\r\n   * Correct pan position if it's beyond the bounds\r\n   *\r\n   * @param {Axis} axis x or y\r\n   * @param {number} panOffset\r\n   * @returns {number}\r\n   */\n\n\n  correctPan(axis, panOffset) {\n    // checkPanBounds\n    return clamp(panOffset, this.max[axis], this.min[axis]);\n  }\n\n}\n\nconst MAX_IMAGE_WIDTH = 4000;\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/** @typedef {'fit' | 'fill' | number | ((zoomLevelObject: ZoomLevel) => number)} ZoomLevelOption */\n\n/**\r\n * Calculates zoom levels for specific slide.\r\n * Depends on viewport size and image size.\r\n */\n\nclass ZoomLevel {\n  /**\r\n   * @param {PhotoSwipeOptions} options PhotoSwipe options\r\n   * @param {SlideData} itemData Slide data\r\n   * @param {number} index Slide index\r\n   * @param {PhotoSwipe} [pswp] PhotoSwipe instance, can be undefined if not initialized yet\r\n   */\n  constructor(options, itemData, index, pswp) {\n    this.pswp = pswp;\n    this.options = options;\n    this.itemData = itemData;\n    this.index = index;\n    /** @type { Point | null } */\n\n    this.panAreaSize = null;\n    /** @type { Point | null } */\n\n    this.elementSize = null;\n    this.fit = 1;\n    this.fill = 1;\n    this.vFill = 1;\n    this.initial = 1;\n    this.secondary = 1;\n    this.max = 1;\n    this.min = 1;\n  }\n  /**\r\n   * Calculate initial, secondary and maximum zoom level for the specified slide.\r\n   *\r\n   * It should be called when either image or viewport size changes.\r\n   *\r\n   * @param {number} maxWidth\r\n   * @param {number} maxHeight\r\n   * @param {Point} panAreaSize\r\n   */\n\n\n  update(maxWidth, maxHeight, panAreaSize) {\n    /** @type {Point} */\n    const elementSize = {\n      x: maxWidth,\n      y: maxHeight\n    };\n    this.elementSize = elementSize;\n    this.panAreaSize = panAreaSize;\n    const hRatio = panAreaSize.x / elementSize.x;\n    const vRatio = panAreaSize.y / elementSize.y;\n    this.fit = Math.min(1, hRatio < vRatio ? hRatio : vRatio);\n    this.fill = Math.min(1, hRatio > vRatio ? hRatio : vRatio); // zoom.vFill defines zoom level of the image\n    // when it has 100% of viewport vertical space (height)\n\n    this.vFill = Math.min(1, vRatio);\n    this.initial = this._getInitial();\n    this.secondary = this._getSecondary();\n    this.max = Math.max(this.initial, this.secondary, this._getMax());\n    this.min = Math.min(this.fit, this.initial, this.secondary);\n\n    if (this.pswp) {\n      this.pswp.dispatch('zoomLevelsUpdate', {\n        zoomLevels: this,\n        slideData: this.itemData\n      });\n    }\n  }\n  /**\r\n   * Parses user-defined zoom option.\r\n   *\r\n   * @private\r\n   * @param {'initial' | 'secondary' | 'max'} optionPrefix Zoom level option prefix (initial, secondary, max)\r\n   * @returns { number | undefined }\r\n   */\n\n\n  _parseZoomLevelOption(optionPrefix) {\n    const optionName =\n    /** @type {'initialZoomLevel' | 'secondaryZoomLevel' | 'maxZoomLevel'} */\n    optionPrefix + 'ZoomLevel';\n    const optionValue = this.options[optionName];\n\n    if (!optionValue) {\n      return;\n    }\n\n    if (typeof optionValue === 'function') {\n      return optionValue(this);\n    }\n\n    if (optionValue === 'fill') {\n      return this.fill;\n    }\n\n    if (optionValue === 'fit') {\n      return this.fit;\n    }\n\n    return Number(optionValue);\n  }\n  /**\r\n   * Get zoom level to which image will be zoomed after double-tap gesture,\r\n   * or when user clicks on zoom icon,\r\n   * or mouse-click on image itself.\r\n   * If you return 1 image will be zoomed to its original size.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getSecondary() {\n    let currZoomLevel = this._parseZoomLevelOption('secondary');\n\n    if (currZoomLevel) {\n      return currZoomLevel;\n    } // 3x of \"fit\" state, but not larger than original\n\n\n    currZoomLevel = Math.min(1, this.fit * 3);\n\n    if (this.elementSize && currZoomLevel * this.elementSize.x > MAX_IMAGE_WIDTH) {\n      currZoomLevel = MAX_IMAGE_WIDTH / this.elementSize.x;\n    }\n\n    return currZoomLevel;\n  }\n  /**\r\n   * Get initial image zoom level.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getInitial() {\n    return this._parseZoomLevelOption('initial') || this.fit;\n  }\n  /**\r\n   * Maximum zoom level when user zooms\r\n   * via zoom/pinch gesture,\r\n   * via cmd/ctrl-wheel or via trackpad.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getMax() {\n    // max zoom level is x4 from \"fit state\",\n    // used for zoom gesture and ctrl/trackpad zoom\n    return this._parseZoomLevelOption('max') || Math.max(1, this.fit * 4);\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n/**\r\n * Renders and allows to control a single slide\r\n */\n\nclass Slide {\n  /**\r\n   * @param {SlideData} data\r\n   * @param {number} index\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(data, index, pswp) {\n    this.data = data;\n    this.index = index;\n    this.pswp = pswp;\n    this.isActive = index === pswp.currIndex;\n    this.currentResolution = 0;\n    /** @type {Point} */\n\n    this.panAreaSize = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.pan = {\n      x: 0,\n      y: 0\n    };\n    this.isFirstSlide = this.isActive && !pswp.opener.isOpen;\n    this.zoomLevels = new ZoomLevel(pswp.options, data, index, pswp);\n    this.pswp.dispatch('gettingData', {\n      slide: this,\n      data: this.data,\n      index\n    });\n    this.content = this.pswp.contentLoader.getContentBySlide(this);\n    this.container = createElement('pswp__zoom-wrap', 'div');\n    /** @type {HTMLElement | null} */\n\n    this.holderElement = null;\n    this.currZoomLevel = 1;\n    /** @type {number} */\n\n    this.width = this.content.width;\n    /** @type {number} */\n\n    this.height = this.content.height;\n    this.heavyAppended = false;\n    this.bounds = new PanBounds(this);\n    this.prevDisplayedWidth = -1;\n    this.prevDisplayedHeight = -1;\n    this.pswp.dispatch('slideInit', {\n      slide: this\n    });\n  }\n  /**\r\n   * If this slide is active/current/visible\r\n   *\r\n   * @param {boolean} isActive\r\n   */\n\n\n  setIsActive(isActive) {\n    if (isActive && !this.isActive) {\n      // slide just became active\n      this.activate();\n    } else if (!isActive && this.isActive) {\n      // slide just became non-active\n      this.deactivate();\n    }\n  }\n  /**\r\n   * Appends slide content to DOM\r\n   *\r\n   * @param {HTMLElement} holderElement\r\n   */\n\n\n  append(holderElement) {\n    this.holderElement = holderElement;\n    this.container.style.transformOrigin = '0 0'; // Slide appended to DOM\n\n    if (!this.data) {\n      return;\n    }\n\n    this.calculateSize();\n    this.load();\n    this.updateContentSize();\n    this.appendHeavy();\n    this.holderElement.appendChild(this.container);\n    this.zoomAndPanToInitial();\n    this.pswp.dispatch('firstZoomPan', {\n      slide: this\n    });\n    this.applyCurrentZoomPan();\n    this.pswp.dispatch('afterSetContent', {\n      slide: this\n    });\n\n    if (this.isActive) {\n      this.activate();\n    }\n  }\n\n  load() {\n    this.content.load(false);\n    this.pswp.dispatch('slideLoad', {\n      slide: this\n    });\n  }\n  /**\r\n   * Append \"heavy\" DOM elements\r\n   *\r\n   * This may depend on a type of slide,\r\n   * but generally these are large images.\r\n   */\n\n\n  appendHeavy() {\n    const {\n      pswp\n    } = this;\n    const appendHeavyNearby = true; // todo\n    // Avoid appending heavy elements during animations\n\n    if (this.heavyAppended || !pswp.opener.isOpen || pswp.mainScroll.isShifted() || !this.isActive && !appendHeavyNearby) {\n      return;\n    }\n\n    if (this.pswp.dispatch('appendHeavy', {\n      slide: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.heavyAppended = true;\n    this.content.append();\n    this.pswp.dispatch('appendHeavyContent', {\n      slide: this\n    });\n  }\n  /**\r\n   * Triggered when this slide is active (selected).\r\n   *\r\n   * If it's part of opening/closing transition -\r\n   * activate() will trigger after the transition is ended.\r\n   */\n\n\n  activate() {\n    this.isActive = true;\n    this.appendHeavy();\n    this.content.activate();\n    this.pswp.dispatch('slideActivate', {\n      slide: this\n    });\n  }\n  /**\r\n   * Triggered when this slide becomes inactive.\r\n   *\r\n   * Slide can become inactive only after it was active.\r\n   */\n\n\n  deactivate() {\n    this.isActive = false;\n    this.content.deactivate();\n\n    if (this.currZoomLevel !== this.zoomLevels.initial) {\n      // allow filtering\n      this.calculateSize();\n    } // reset zoom level\n\n\n    this.currentResolution = 0;\n    this.zoomAndPanToInitial();\n    this.applyCurrentZoomPan();\n    this.updateContentSize();\n    this.pswp.dispatch('slideDeactivate', {\n      slide: this\n    });\n  }\n  /**\r\n   * The slide should destroy itself, it will never be used again.\r\n   * (unbind all events and destroy internal components)\r\n   */\n\n\n  destroy() {\n    this.content.hasSlide = false;\n    this.content.remove();\n    this.container.remove();\n    this.pswp.dispatch('slideDestroy', {\n      slide: this\n    });\n  }\n\n  resize() {\n    if (this.currZoomLevel === this.zoomLevels.initial || !this.isActive) {\n      // Keep initial zoom level if it was before the resize,\n      // as well as when this slide is not active\n      // Reset position and scale to original state\n      this.calculateSize();\n      this.currentResolution = 0;\n      this.zoomAndPanToInitial();\n      this.applyCurrentZoomPan();\n      this.updateContentSize();\n    } else {\n      // readjust pan position if it's beyond the bounds\n      this.calculateSize();\n      this.bounds.update(this.currZoomLevel);\n      this.panTo(this.pan.x, this.pan.y);\n    }\n  }\n  /**\r\n   * Apply size to current slide content,\r\n   * based on the current resolution and scale.\r\n   *\r\n   * @param {boolean} [force] if size should be updated even if dimensions weren't changed\r\n   */\n\n\n  updateContentSize(force) {\n    // Use initial zoom level\n    // if resolution is not defined (user didn't zoom yet)\n    const scaleMultiplier = this.currentResolution || this.zoomLevels.initial;\n\n    if (!scaleMultiplier) {\n      return;\n    }\n\n    const width = Math.round(this.width * scaleMultiplier) || this.pswp.viewportSize.x;\n    const height = Math.round(this.height * scaleMultiplier) || this.pswp.viewportSize.y;\n\n    if (!this.sizeChanged(width, height) && !force) {\n      return;\n    }\n\n    this.content.setDisplayedSize(width, height);\n  }\n  /**\r\n   * @param {number} width\r\n   * @param {number} height\r\n   */\n\n\n  sizeChanged(width, height) {\n    if (width !== this.prevDisplayedWidth || height !== this.prevDisplayedHeight) {\n      this.prevDisplayedWidth = width;\n      this.prevDisplayedHeight = height;\n      return true;\n    }\n\n    return false;\n  }\n  /** @returns {HTMLImageElement | HTMLDivElement | null | undefined} */\n\n\n  getPlaceholderElement() {\n    var _this$content$placeho;\n\n    return (_this$content$placeho = this.content.placeholder) === null || _this$content$placeho === void 0 ? void 0 : _this$content$placeho.element;\n  }\n  /**\r\n   * Zoom current slide image to...\r\n   *\r\n   * @param {number} destZoomLevel Destination zoom level.\r\n   * @param {Point} [centerPoint]\r\n   * Transform origin center point, or false if viewport center should be used.\r\n   * @param {number | false} [transitionDuration] Transition duration, may be set to 0.\r\n   * @param {boolean} [ignoreBounds] Minimum and maximum zoom levels will be ignored.\r\n   */\n\n\n  zoomTo(destZoomLevel, centerPoint, transitionDuration, ignoreBounds) {\n    const {\n      pswp\n    } = this;\n\n    if (!this.isZoomable() || pswp.mainScroll.isShifted()) {\n      return;\n    }\n\n    pswp.dispatch('beforeZoomTo', {\n      destZoomLevel,\n      centerPoint,\n      transitionDuration\n    }); // stop all pan and zoom transitions\n\n    pswp.animations.stopAllPan(); // if (!centerPoint) {\n    //   centerPoint = pswp.getViewportCenterPoint();\n    // }\n\n    const prevZoomLevel = this.currZoomLevel;\n\n    if (!ignoreBounds) {\n      destZoomLevel = clamp(destZoomLevel, this.zoomLevels.min, this.zoomLevels.max);\n    } // if (transitionDuration === undefined) {\n    //   transitionDuration = this.pswp.options.zoomAnimationDuration;\n    // }\n\n\n    this.setZoomLevel(destZoomLevel);\n    this.pan.x = this.calculateZoomToPanOffset('x', centerPoint, prevZoomLevel);\n    this.pan.y = this.calculateZoomToPanOffset('y', centerPoint, prevZoomLevel);\n    roundPoint(this.pan);\n\n    const finishTransition = () => {\n      this._setResolution(destZoomLevel);\n\n      this.applyCurrentZoomPan();\n    };\n\n    if (!transitionDuration) {\n      finishTransition();\n    } else {\n      pswp.animations.startTransition({\n        isPan: true,\n        name: 'zoomTo',\n        target: this.container,\n        transform: this.getCurrentTransform(),\n        onComplete: finishTransition,\n        duration: transitionDuration,\n        easing: pswp.options.easing\n      });\n    }\n  }\n  /**\r\n   * @param {Point} [centerPoint]\r\n   */\n\n\n  toggleZoom(centerPoint) {\n    this.zoomTo(this.currZoomLevel === this.zoomLevels.initial ? this.zoomLevels.secondary : this.zoomLevels.initial, centerPoint, this.pswp.options.zoomAnimationDuration);\n  }\n  /**\r\n   * Updates zoom level property and recalculates new pan bounds,\r\n   * unlike zoomTo it does not apply transform (use applyCurrentZoomPan)\r\n   *\r\n   * @param {number} currZoomLevel\r\n   */\n\n\n  setZoomLevel(currZoomLevel) {\n    this.currZoomLevel = currZoomLevel;\n    this.bounds.update(this.currZoomLevel);\n  }\n  /**\r\n   * Get pan position after zoom at a given `point`.\r\n   *\r\n   * Always call setZoomLevel(newZoomLevel) beforehand to recalculate\r\n   * pan bounds according to the new zoom level.\r\n   *\r\n   * @param {'x' | 'y'} axis\r\n   * @param {Point} [point]\r\n   * point based on which zoom is performed, usually refers to the current mouse position,\r\n   * if false - viewport center will be used.\r\n   * @param {number} [prevZoomLevel] Zoom level before new zoom was applied.\r\n   * @returns {number}\r\n   */\n\n\n  calculateZoomToPanOffset(axis, point, prevZoomLevel) {\n    const totalPanDistance = this.bounds.max[axis] - this.bounds.min[axis];\n\n    if (totalPanDistance === 0) {\n      return this.bounds.center[axis];\n    }\n\n    if (!point) {\n      point = this.pswp.getViewportCenterPoint();\n    }\n\n    if (!prevZoomLevel) {\n      prevZoomLevel = this.zoomLevels.initial;\n    }\n\n    const zoomFactor = this.currZoomLevel / prevZoomLevel;\n    return this.bounds.correctPan(axis, (this.pan[axis] - point[axis]) * zoomFactor + point[axis]);\n  }\n  /**\r\n   * Apply pan and keep it within bounds.\r\n   *\r\n   * @param {number} panX\r\n   * @param {number} panY\r\n   */\n\n\n  panTo(panX, panY) {\n    this.pan.x = this.bounds.correctPan('x', panX);\n    this.pan.y = this.bounds.correctPan('y', panY);\n    this.applyCurrentZoomPan();\n  }\n  /**\r\n   * If the slide in the current state can be panned by the user\r\n   * @returns {boolean}\r\n   */\n\n\n  isPannable() {\n    return Boolean(this.width) && this.currZoomLevel > this.zoomLevels.fit;\n  }\n  /**\r\n   * If the slide can be zoomed\r\n   * @returns {boolean}\r\n   */\n\n\n  isZoomable() {\n    return Boolean(this.width) && this.content.isZoomable();\n  }\n  /**\r\n   * Apply transform and scale based on\r\n   * the current pan position (this.pan) and zoom level (this.currZoomLevel)\r\n   */\n\n\n  applyCurrentZoomPan() {\n    this._applyZoomTransform(this.pan.x, this.pan.y, this.currZoomLevel);\n\n    if (this === this.pswp.currSlide) {\n      this.pswp.dispatch('zoomPanUpdate', {\n        slide: this\n      });\n    }\n  }\n\n  zoomAndPanToInitial() {\n    this.currZoomLevel = this.zoomLevels.initial; // pan according to the zoom level\n\n    this.bounds.update(this.currZoomLevel);\n    equalizePoints(this.pan, this.bounds.center);\n    this.pswp.dispatch('initialZoomPan', {\n      slide: this\n    });\n  }\n  /**\r\n   * Set translate and scale based on current resolution\r\n   *\r\n   * @param {number} x\r\n   * @param {number} y\r\n   * @param {number} zoom\r\n   * @private\r\n   */\n\n\n  _applyZoomTransform(x, y, zoom) {\n    zoom /= this.currentResolution || this.zoomLevels.initial;\n    setTransform(this.container, x, y, zoom);\n  }\n\n  calculateSize() {\n    const {\n      pswp\n    } = this;\n    equalizePoints(this.panAreaSize, getPanAreaSize(pswp.options, pswp.viewportSize, this.data, this.index));\n    this.zoomLevels.update(this.width, this.height, this.panAreaSize);\n    pswp.dispatch('calcSlideSize', {\n      slide: this\n    });\n  }\n  /** @returns {string} */\n\n\n  getCurrentTransform() {\n    const scale = this.currZoomLevel / (this.currentResolution || this.zoomLevels.initial);\n    return toTransformString(this.pan.x, this.pan.y, scale);\n  }\n  /**\r\n   * Set resolution and re-render the image.\r\n   *\r\n   * For example, if the real image size is 2000x1500,\r\n   * and resolution is 0.5 - it will be rendered as 1000x750.\r\n   *\r\n   * Image with zoom level 2 and resolution 0.5 is\r\n   * the same as image with zoom level 1 and resolution 1.\r\n   *\r\n   * Used to optimize animations and make\r\n   * sure that browser renders image in the highest quality.\r\n   * Also used by responsive images to load the correct one.\r\n   *\r\n   * @param {number} newResolution\r\n   */\n\n\n  _setResolution(newResolution) {\n    if (newResolution === this.currentResolution) {\n      return;\n    }\n\n    this.currentResolution = newResolution;\n    this.updateContentSize();\n    this.pswp.dispatch('resolutionChanged');\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('./gestures.js').default} Gestures */\n\nconst PAN_END_FRICTION = 0.35;\nconst VERTICAL_DRAG_FRICTION = 0.6; // 1 corresponds to the third of viewport height\n\nconst MIN_RATIO_TO_CLOSE = 0.4; // Minimum speed required to navigate\n// to next or previous slide\n\nconst MIN_NEXT_SLIDE_SPEED = 0.5;\n/**\r\n * @param {number} initialVelocity\r\n * @param {number} decelerationRate\r\n * @returns {number}\r\n */\n\nfunction project(initialVelocity, decelerationRate) {\n  return initialVelocity * decelerationRate / (1 - decelerationRate);\n}\n/**\r\n * Handles single pointer dragging\r\n */\n\n\nclass DragHandler {\n  /**\r\n   * @param {Gestures} gestures\r\n   */\n  constructor(gestures) {\n    this.gestures = gestures;\n    this.pswp = gestures.pswp;\n    /** @type {Point} */\n\n    this.startPan = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  start() {\n    if (this.pswp.currSlide) {\n      equalizePoints(this.startPan, this.pswp.currSlide.pan);\n    }\n\n    this.pswp.animations.stopAll();\n  }\n\n  change() {\n    const {\n      p1,\n      prevP1,\n      dragAxis\n    } = this.gestures;\n    const {\n      currSlide\n    } = this.pswp;\n\n    if (dragAxis === 'y' && this.pswp.options.closeOnVerticalDrag && currSlide && currSlide.currZoomLevel <= currSlide.zoomLevels.fit && !this.gestures.isMultitouch) {\n      // Handle vertical drag to close\n      const panY = currSlide.pan.y + (p1.y - prevP1.y);\n\n      if (!this.pswp.dispatch('verticalDrag', {\n        panY\n      }).defaultPrevented) {\n        this._setPanWithFriction('y', panY, VERTICAL_DRAG_FRICTION);\n\n        const bgOpacity = 1 - Math.abs(this._getVerticalDragRatio(currSlide.pan.y));\n        this.pswp.applyBgOpacity(bgOpacity);\n        currSlide.applyCurrentZoomPan();\n      }\n    } else {\n      const mainScrollChanged = this._panOrMoveMainScroll('x');\n\n      if (!mainScrollChanged) {\n        this._panOrMoveMainScroll('y');\n\n        if (currSlide) {\n          roundPoint(currSlide.pan);\n          currSlide.applyCurrentZoomPan();\n        }\n      }\n    }\n  }\n\n  end() {\n    const {\n      velocity\n    } = this.gestures;\n    const {\n      mainScroll,\n      currSlide\n    } = this.pswp;\n    let indexDiff = 0;\n    this.pswp.animations.stopAll(); // Handle main scroll if it's shifted\n\n    if (mainScroll.isShifted()) {\n      // Position of the main scroll relative to the viewport\n      const mainScrollShiftDiff = mainScroll.x - mainScroll.getCurrSlideX(); // Ratio between 0 and 1:\n      // 0 - slide is not visible at all,\n      // 0.5 - half of the slide is visible\n      // 1 - slide is fully visible\n\n      const currentSlideVisibilityRatio = mainScrollShiftDiff / this.pswp.viewportSize.x; // Go next slide.\n      //\n      // - if velocity and its direction is matched,\n      //   and we see at least tiny part of the next slide\n      //\n      // - or if we see less than 50% of the current slide\n      //   and velocity is close to 0\n      //\n\n      if (velocity.x < -MIN_NEXT_SLIDE_SPEED && currentSlideVisibilityRatio < 0 || velocity.x < 0.1 && currentSlideVisibilityRatio < -0.5) {\n        // Go to next slide\n        indexDiff = 1;\n        velocity.x = Math.min(velocity.x, 0);\n      } else if (velocity.x > MIN_NEXT_SLIDE_SPEED && currentSlideVisibilityRatio > 0 || velocity.x > -0.1 && currentSlideVisibilityRatio > 0.5) {\n        // Go to prev slide\n        indexDiff = -1;\n        velocity.x = Math.max(velocity.x, 0);\n      }\n\n      mainScroll.moveIndexBy(indexDiff, true, velocity.x);\n    } // Restore zoom level\n\n\n    if (currSlide && currSlide.currZoomLevel > currSlide.zoomLevels.max || this.gestures.isMultitouch) {\n      this.gestures.zoomLevels.correctZoomPan(true);\n    } else {\n      // we run two animations instead of one,\n      // as each axis has own pan boundaries and thus different spring function\n      // (correctZoomPan does not have this functionality,\n      //  it animates all properties with single timing function)\n      this._finishPanGestureForAxis('x');\n\n      this._finishPanGestureForAxis('y');\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   */\n\n\n  _finishPanGestureForAxis(axis) {\n    const {\n      velocity\n    } = this.gestures;\n    const {\n      currSlide\n    } = this.pswp;\n\n    if (!currSlide) {\n      return;\n    }\n\n    const {\n      pan,\n      bounds\n    } = currSlide;\n    const panPos = pan[axis];\n    const restoreBgOpacity = this.pswp.bgOpacity < 1 && axis === 'y'; // 0.995 means - scroll view loses 0.5% of its velocity per millisecond\n    // Increasing this number will reduce travel distance\n\n    const decelerationRate = 0.995; // 0.99\n    // Pan position if there is no bounds\n\n    const projectedPosition = panPos + project(velocity[axis], decelerationRate);\n\n    if (restoreBgOpacity) {\n      const vDragRatio = this._getVerticalDragRatio(panPos);\n\n      const projectedVDragRatio = this._getVerticalDragRatio(projectedPosition); // If we are above and moving upwards,\n      // or if we are below and moving downwards\n\n\n      if (vDragRatio < 0 && projectedVDragRatio < -MIN_RATIO_TO_CLOSE || vDragRatio > 0 && projectedVDragRatio > MIN_RATIO_TO_CLOSE) {\n        this.pswp.close();\n        return;\n      }\n    } // Pan position with corrected bounds\n\n\n    const correctedPanPosition = bounds.correctPan(axis, projectedPosition); // Exit if pan position should not be changed\n    // or if speed it too low\n\n    if (panPos === correctedPanPosition) {\n      return;\n    } // Overshoot if the final position is out of pan bounds\n\n\n    const dampingRatio = correctedPanPosition === projectedPosition ? 1 : 0.82;\n    const initialBgOpacity = this.pswp.bgOpacity;\n    const totalPanDist = correctedPanPosition - panPos;\n    this.pswp.animations.startSpring({\n      name: 'panGesture' + axis,\n      isPan: true,\n      start: panPos,\n      end: correctedPanPosition,\n      velocity: velocity[axis],\n      dampingRatio,\n      onUpdate: pos => {\n        // Animate opacity of background relative to Y pan position of an image\n        if (restoreBgOpacity && this.pswp.bgOpacity < 1) {\n          // 0 - start of animation, 1 - end of animation\n          const animationProgressRatio = 1 - (correctedPanPosition - pos) / totalPanDist; // We clamp opacity to keep it between 0 and 1.\n          // As progress ratio can be larger than 1 due to overshoot,\n          // and we do not want to bounce opacity.\n\n          this.pswp.applyBgOpacity(clamp(initialBgOpacity + (1 - initialBgOpacity) * animationProgressRatio, 0, 1));\n        }\n\n        pan[axis] = Math.floor(pos);\n        currSlide.applyCurrentZoomPan();\n      }\n    });\n  }\n  /**\r\n   * Update position of the main scroll,\r\n   * or/and update pan position of the current slide.\r\n   *\r\n   * Should return true if it changes (or can change) main scroll.\r\n   *\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @returns {boolean}\r\n   */\n\n\n  _panOrMoveMainScroll(axis) {\n    const {\n      p1,\n      dragAxis,\n      prevP1,\n      isMultitouch\n    } = this.gestures;\n    const {\n      currSlide,\n      mainScroll\n    } = this.pswp;\n    const delta = p1[axis] - prevP1[axis];\n    const newMainScrollX = mainScroll.x + delta;\n\n    if (!delta || !currSlide) {\n      return false;\n    } // Always move main scroll if image can not be panned\n\n\n    if (axis === 'x' && !currSlide.isPannable() && !isMultitouch) {\n      mainScroll.moveTo(newMainScrollX, true);\n      return true; // changed main scroll\n    }\n\n    const {\n      bounds\n    } = currSlide;\n    const newPan = currSlide.pan[axis] + delta;\n\n    if (this.pswp.options.allowPanToNext && dragAxis === 'x' && axis === 'x' && !isMultitouch) {\n      const currSlideMainScrollX = mainScroll.getCurrSlideX(); // Position of the main scroll relative to the viewport\n\n      const mainScrollShiftDiff = mainScroll.x - currSlideMainScrollX;\n      const isLeftToRight = delta > 0;\n      const isRightToLeft = !isLeftToRight;\n\n      if (newPan > bounds.min[axis] && isLeftToRight) {\n        // Panning from left to right, beyond the left edge\n        // Wether the image was at minimum pan position (or less)\n        // when this drag gesture started.\n        // Minimum pan position refers to the left edge of the image.\n        const wasAtMinPanPosition = bounds.min[axis] <= this.startPan[axis];\n\n        if (wasAtMinPanPosition) {\n          mainScroll.moveTo(newMainScrollX, true);\n          return true;\n        } else {\n          this._setPanWithFriction(axis, newPan); //currSlide.pan[axis] = newPan;\n\n        }\n      } else if (newPan < bounds.max[axis] && isRightToLeft) {\n        // Paning from right to left, beyond the right edge\n        // Maximum pan position refers to the right edge of the image.\n        const wasAtMaxPanPosition = this.startPan[axis] <= bounds.max[axis];\n\n        if (wasAtMaxPanPosition) {\n          mainScroll.moveTo(newMainScrollX, true);\n          return true;\n        } else {\n          this._setPanWithFriction(axis, newPan); //currSlide.pan[axis] = newPan;\n\n        }\n      } else {\n        // If main scroll is shifted\n        if (mainScrollShiftDiff !== 0) {\n          // If main scroll is shifted right\n          if (mainScrollShiftDiff > 0\n          /*&& isRightToLeft*/\n          ) {\n            mainScroll.moveTo(Math.max(newMainScrollX, currSlideMainScrollX), true);\n            return true;\n          } else if (mainScrollShiftDiff < 0\n          /*&& isLeftToRight*/\n          ) {\n            // Main scroll is shifted left (Position is less than 0 comparing to the viewport 0)\n            mainScroll.moveTo(Math.min(newMainScrollX, currSlideMainScrollX), true);\n            return true;\n          }\n        } else {\n          // We are within pan bounds, so just pan\n          this._setPanWithFriction(axis, newPan);\n        }\n      }\n    } else {\n      if (axis === 'y') {\n        // Do not pan vertically if main scroll is shifted o\n        if (!mainScroll.isShifted() && bounds.min.y !== bounds.max.y) {\n          this._setPanWithFriction(axis, newPan);\n        }\n      } else {\n        this._setPanWithFriction(axis, newPan);\n      }\n    }\n\n    return false;\n  } // If we move above - the ratio is negative\n  // If we move below the ratio is positive\n\n  /**\r\n   * Relation between pan Y position and third of viewport height.\r\n   *\r\n   * When we are at initial position (center bounds) - the ratio is 0,\r\n   * if position is shifted upwards - the ratio is negative,\r\n   * if position is shifted downwards - the ratio is positive.\r\n   *\r\n   * @private\r\n   * @param {number} panY The current pan Y position.\r\n   * @returns {number}\r\n   */\n\n\n  _getVerticalDragRatio(panY) {\n    var _this$pswp$currSlide$, _this$pswp$currSlide;\n\n    return (panY - ((_this$pswp$currSlide$ = (_this$pswp$currSlide = this.pswp.currSlide) === null || _this$pswp$currSlide === void 0 ? void 0 : _this$pswp$currSlide.bounds.center.y) !== null && _this$pswp$currSlide$ !== void 0 ? _this$pswp$currSlide$ : 0)) / (this.pswp.viewportSize.y / 3);\n  }\n  /**\r\n   * Set pan position of the current slide.\r\n   * Apply friction if the position is beyond the pan bounds,\r\n   * or if custom friction is defined.\r\n   *\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @param {number} potentialPan\r\n   * @param {number} [customFriction] (0.1 - 1)\r\n   */\n\n\n  _setPanWithFriction(axis, potentialPan, customFriction) {\n    const {\n      currSlide\n    } = this.pswp;\n\n    if (!currSlide) {\n      return;\n    }\n\n    const {\n      pan,\n      bounds\n    } = currSlide;\n    const correctedPan = bounds.correctPan(axis, potentialPan); // If we are out of pan bounds\n\n    if (correctedPan !== potentialPan || customFriction) {\n      const delta = Math.round(potentialPan - pan[axis]);\n      pan[axis] += delta * (customFriction || PAN_END_FRICTION);\n    } else {\n      pan[axis] = potentialPan;\n    }\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('./gestures.js').default} Gestures */\n\nconst UPPER_ZOOM_FRICTION = 0.05;\nconst LOWER_ZOOM_FRICTION = 0.15;\n/**\r\n * Get center point between two points\r\n *\r\n * @param {Point} p\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {Point}\r\n */\n\nfunction getZoomPointsCenter(p, p1, p2) {\n  p.x = (p1.x + p2.x) / 2;\n  p.y = (p1.y + p2.y) / 2;\n  return p;\n}\n\nclass ZoomHandler {\n  /**\r\n   * @param {Gestures} gestures\r\n   */\n  constructor(gestures) {\n    this.gestures = gestures;\n    /**\r\n     * @private\r\n     * @type {Point}\r\n     */\n\n    this._startPan = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * @private\r\n     * @type {Point}\r\n     */\n\n    this._startZoomPoint = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * @private\r\n     * @type {Point}\r\n     */\n\n    this._zoomPoint = {\n      x: 0,\n      y: 0\n    };\n    /** @private */\n\n    this._wasOverFitZoomLevel = false;\n    /** @private */\n\n    this._startZoomLevel = 1;\n  }\n\n  start() {\n    const {\n      currSlide\n    } = this.gestures.pswp;\n\n    if (currSlide) {\n      this._startZoomLevel = currSlide.currZoomLevel;\n      equalizePoints(this._startPan, currSlide.pan);\n    }\n\n    this.gestures.pswp.animations.stopAllPan();\n    this._wasOverFitZoomLevel = false;\n  }\n\n  change() {\n    const {\n      p1,\n      startP1,\n      p2,\n      startP2,\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n\n    if (!currSlide) {\n      return;\n    }\n\n    const minZoomLevel = currSlide.zoomLevels.min;\n    const maxZoomLevel = currSlide.zoomLevels.max;\n\n    if (!currSlide.isZoomable() || pswp.mainScroll.isShifted()) {\n      return;\n    }\n\n    getZoomPointsCenter(this._startZoomPoint, startP1, startP2);\n    getZoomPointsCenter(this._zoomPoint, p1, p2);\n\n    let currZoomLevel = 1 / getDistanceBetween(startP1, startP2) * getDistanceBetween(p1, p2) * this._startZoomLevel; // slightly over the zoom.fit\n\n\n    if (currZoomLevel > currSlide.zoomLevels.initial + currSlide.zoomLevels.initial / 15) {\n      this._wasOverFitZoomLevel = true;\n    }\n\n    if (currZoomLevel < minZoomLevel) {\n      if (pswp.options.pinchToClose && !this._wasOverFitZoomLevel && this._startZoomLevel <= currSlide.zoomLevels.initial) {\n        // fade out background if zooming out\n        const bgOpacity = 1 - (minZoomLevel - currZoomLevel) / (minZoomLevel / 1.2);\n\n        if (!pswp.dispatch('pinchClose', {\n          bgOpacity\n        }).defaultPrevented) {\n          pswp.applyBgOpacity(bgOpacity);\n        }\n      } else {\n        // Apply the friction if zoom level is below the min\n        currZoomLevel = minZoomLevel - (minZoomLevel - currZoomLevel) * LOWER_ZOOM_FRICTION;\n      }\n    } else if (currZoomLevel > maxZoomLevel) {\n      // Apply the friction if zoom level is above the max\n      currZoomLevel = maxZoomLevel + (currZoomLevel - maxZoomLevel) * UPPER_ZOOM_FRICTION;\n    }\n\n    currSlide.pan.x = this._calculatePanForZoomLevel('x', currZoomLevel);\n    currSlide.pan.y = this._calculatePanForZoomLevel('y', currZoomLevel);\n    currSlide.setZoomLevel(currZoomLevel);\n    currSlide.applyCurrentZoomPan();\n  }\n\n  end() {\n    const {\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n\n    if ((!currSlide || currSlide.currZoomLevel < currSlide.zoomLevels.initial) && !this._wasOverFitZoomLevel && pswp.options.pinchToClose) {\n      pswp.close();\n    } else {\n      this.correctZoomPan();\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @param {number} currZoomLevel\r\n   * @returns {number}\r\n   */\n\n\n  _calculatePanForZoomLevel(axis, currZoomLevel) {\n    const zoomFactor = currZoomLevel / this._startZoomLevel;\n    return this._zoomPoint[axis] - (this._startZoomPoint[axis] - this._startPan[axis]) * zoomFactor;\n  }\n  /**\r\n   * Correct currZoomLevel and pan if they are\r\n   * beyond minimum or maximum values.\r\n   * With animation.\r\n   *\r\n   * @param {boolean} [ignoreGesture]\r\n   * Wether gesture coordinates should be ignored when calculating destination pan position.\r\n   */\n\n\n  correctZoomPan(ignoreGesture) {\n    const {\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n\n    if (!(currSlide !== null && currSlide !== void 0 && currSlide.isZoomable())) {\n      return;\n    }\n\n    if (this._zoomPoint.x === 0) {\n      ignoreGesture = true;\n    }\n\n    const prevZoomLevel = currSlide.currZoomLevel;\n    /** @type {number} */\n\n    let destinationZoomLevel;\n    let currZoomLevelNeedsChange = true;\n\n    if (prevZoomLevel < currSlide.zoomLevels.initial) {\n      destinationZoomLevel = currSlide.zoomLevels.initial; // zoom to min\n    } else if (prevZoomLevel > currSlide.zoomLevels.max) {\n      destinationZoomLevel = currSlide.zoomLevels.max; // zoom to max\n    } else {\n      currZoomLevelNeedsChange = false;\n      destinationZoomLevel = prevZoomLevel;\n    }\n\n    const initialBgOpacity = pswp.bgOpacity;\n    const restoreBgOpacity = pswp.bgOpacity < 1;\n    const initialPan = equalizePoints({\n      x: 0,\n      y: 0\n    }, currSlide.pan);\n    let destinationPan = equalizePoints({\n      x: 0,\n      y: 0\n    }, initialPan);\n\n    if (ignoreGesture) {\n      this._zoomPoint.x = 0;\n      this._zoomPoint.y = 0;\n      this._startZoomPoint.x = 0;\n      this._startZoomPoint.y = 0;\n      this._startZoomLevel = prevZoomLevel;\n      equalizePoints(this._startPan, initialPan);\n    }\n\n    if (currZoomLevelNeedsChange) {\n      destinationPan = {\n        x: this._calculatePanForZoomLevel('x', destinationZoomLevel),\n        y: this._calculatePanForZoomLevel('y', destinationZoomLevel)\n      };\n    } // set zoom level, so pan bounds are updated according to it\n\n\n    currSlide.setZoomLevel(destinationZoomLevel);\n    destinationPan = {\n      x: currSlide.bounds.correctPan('x', destinationPan.x),\n      y: currSlide.bounds.correctPan('y', destinationPan.y)\n    }; // return zoom level and its bounds to initial\n\n    currSlide.setZoomLevel(prevZoomLevel);\n    const panNeedsChange = !pointsEqual(destinationPan, initialPan);\n\n    if (!panNeedsChange && !currZoomLevelNeedsChange && !restoreBgOpacity) {\n      // update resolution after gesture\n      currSlide._setResolution(destinationZoomLevel);\n\n      currSlide.applyCurrentZoomPan(); // nothing to animate\n\n      return;\n    }\n\n    pswp.animations.stopAllPan();\n    pswp.animations.startSpring({\n      isPan: true,\n      start: 0,\n      end: 1000,\n      velocity: 0,\n      dampingRatio: 1,\n      naturalFrequency: 40,\n      onUpdate: now => {\n        now /= 1000; // 0 - start, 1 - end\n\n        if (panNeedsChange || currZoomLevelNeedsChange) {\n          if (panNeedsChange) {\n            currSlide.pan.x = initialPan.x + (destinationPan.x - initialPan.x) * now;\n            currSlide.pan.y = initialPan.y + (destinationPan.y - initialPan.y) * now;\n          }\n\n          if (currZoomLevelNeedsChange) {\n            const newZoomLevel = prevZoomLevel + (destinationZoomLevel - prevZoomLevel) * now;\n            currSlide.setZoomLevel(newZoomLevel);\n          }\n\n          currSlide.applyCurrentZoomPan();\n        } // Restore background opacity\n\n\n        if (restoreBgOpacity && pswp.bgOpacity < 1) {\n          // We clamp opacity to keep it between 0 and 1.\n          // As progress ratio can be larger than 1 due to overshoot,\n          // and we do not want to bounce opacity.\n          pswp.applyBgOpacity(clamp(initialBgOpacity + (1 - initialBgOpacity) * now, 0, 1));\n        }\n      },\n      onComplete: () => {\n        // update resolution after transition ends\n        currSlide._setResolution(destinationZoomLevel);\n\n        currSlide.applyCurrentZoomPan();\n      }\n    });\n  }\n\n}\n\n/**\r\n * @template {string} T\r\n * @template {string} P\r\n * @typedef {import('../types.js').AddPostfix<T, P>} AddPostfix<T, P>\r\n */\n\n/** @typedef {import('./gestures.js').default} Gestures */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {'imageClick' | 'bgClick' | 'tap' | 'doubleTap'} Actions */\n\n/**\r\n * Whether the tap was performed on the main slide\r\n * (rather than controls or caption).\r\n *\r\n * @param {PointerEvent} event\r\n * @returns {boolean}\r\n */\nfunction didTapOnMainContent(event) {\n  return !!\n  /** @type {HTMLElement} */\n  event.target.closest('.pswp__container');\n}\n/**\r\n * Tap, double-tap handler.\r\n */\n\n\nclass TapHandler {\n  /**\r\n   * @param {Gestures} gestures\r\n   */\n  constructor(gestures) {\n    this.gestures = gestures;\n  }\n  /**\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  click(point, originalEvent) {\n    const targetClassList =\n    /** @type {HTMLElement} */\n    originalEvent.target.classList;\n    const isImageClick = targetClassList.contains('pswp__img');\n    const isBackgroundClick = targetClassList.contains('pswp__item') || targetClassList.contains('pswp__zoom-wrap');\n\n    if (isImageClick) {\n      this._doClickOrTapAction('imageClick', point, originalEvent);\n    } else if (isBackgroundClick) {\n      this._doClickOrTapAction('bgClick', point, originalEvent);\n    }\n  }\n  /**\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  tap(point, originalEvent) {\n    if (didTapOnMainContent(originalEvent)) {\n      this._doClickOrTapAction('tap', point, originalEvent);\n    }\n  }\n  /**\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  doubleTap(point, originalEvent) {\n    if (didTapOnMainContent(originalEvent)) {\n      this._doClickOrTapAction('doubleTap', point, originalEvent);\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {Actions} actionName\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  _doClickOrTapAction(actionName, point, originalEvent) {\n    var _this$gestures$pswp$e;\n\n    const {\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n    const actionFullName =\n    /** @type {AddPostfix<Actions, 'Action'>} */\n    actionName + 'Action';\n    const optionValue = pswp.options[actionFullName];\n\n    if (pswp.dispatch(actionFullName, {\n      point,\n      originalEvent\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (typeof optionValue === 'function') {\n      optionValue.call(pswp, point, originalEvent);\n      return;\n    }\n\n    switch (optionValue) {\n      case 'close':\n      case 'next':\n        pswp[optionValue]();\n        break;\n\n      case 'zoom':\n        currSlide === null || currSlide === void 0 || currSlide.toggleZoom(point);\n        break;\n\n      case 'zoom-or-close':\n        // by default click zooms current image,\n        // if it can not be zoomed - gallery will be closed\n        if (currSlide !== null && currSlide !== void 0 && currSlide.isZoomable() && currSlide.zoomLevels.secondary !== currSlide.zoomLevels.initial) {\n          currSlide.toggleZoom(point);\n        } else if (pswp.options.clickToCloseNonZoomable) {\n          pswp.close();\n        }\n\n        break;\n\n      case 'toggle-controls':\n        (_this$gestures$pswp$e = this.gestures.pswp.element) === null || _this$gestures$pswp$e === void 0 || _this$gestures$pswp$e.classList.toggle('pswp--ui-visible'); // if (_controlsVisible) {\n        //   _ui.hideControls();\n        // } else {\n        //   _ui.showControls();\n        // }\n\n        break;\n    }\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n// How far should user should drag\n// until we can determine that the gesture is swipe and its direction\n\nconst AXIS_SWIPE_HYSTERISIS = 10; //const PAN_END_FRICTION = 0.35;\n\nconst DOUBLE_TAP_DELAY = 300; // ms\n\nconst MIN_TAP_DISTANCE = 25; // px\n\n/**\r\n * Gestures class bind touch, pointer or mouse events\r\n * and emits drag to drag-handler and zoom events zoom-handler.\r\n *\r\n * Drag and zoom events are emited in requestAnimationFrame,\r\n * and only when one of pointers was actually changed.\r\n */\n\nclass Gestures {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    /** @type {'x' | 'y' | null} */\n\n    this.dragAxis = null; // point objects are defined once and reused\n    // PhotoSwipe keeps track only of two pointers, others are ignored\n\n    /** @type {Point} */\n\n    this.p1 = {\n      x: 0,\n      y: 0\n    }; // the first pressed pointer\n\n    /** @type {Point} */\n\n    this.p2 = {\n      x: 0,\n      y: 0\n    }; // the second pressed pointer\n\n    /** @type {Point} */\n\n    this.prevP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.prevP2 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.startP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.startP2 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.velocity = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point}\r\n     * @private\r\n     */\n\n    this._lastStartP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point}\r\n     * @private\r\n     */\n\n    this._intervalP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @private */\n\n    this._numActivePoints = 0;\n    /** @type {Point[]}\r\n     * @private\r\n     */\n\n    this._ongoingPointers = [];\n    /** @private */\n\n    this._touchEventEnabled = 'ontouchstart' in window;\n    /** @private */\n\n    this._pointerEventEnabled = !!window.PointerEvent;\n    this.supportsTouch = this._touchEventEnabled || this._pointerEventEnabled && navigator.maxTouchPoints > 1;\n    /** @private */\n\n    this._numActivePoints = 0;\n    /** @private */\n\n    this._intervalTime = 0;\n    /** @private */\n\n    this._velocityCalculated = false;\n    this.isMultitouch = false;\n    this.isDragging = false;\n    this.isZooming = false;\n    /** @type {number | null} */\n\n    this.raf = null;\n    /** @type {NodeJS.Timeout | null}\r\n     * @private\r\n     */\n\n    this._tapTimer = null;\n\n    if (!this.supportsTouch) {\n      // disable pan to next slide for non-touch devices\n      pswp.options.allowPanToNext = false;\n    }\n\n    this.drag = new DragHandler(this);\n    this.zoomLevels = new ZoomHandler(this);\n    this.tapHandler = new TapHandler(this);\n    pswp.on('bindEvents', () => {\n      pswp.events.add(pswp.scrollWrap, 'click',\n      /** @type EventListener */\n      this._onClick.bind(this));\n\n      if (this._pointerEventEnabled) {\n        this._bindEvents('pointer', 'down', 'up', 'cancel');\n      } else if (this._touchEventEnabled) {\n        this._bindEvents('touch', 'start', 'end', 'cancel'); // In previous versions we also bound mouse event here,\n        // in case device supports both touch and mouse events,\n        // but newer versions of browsers now support PointerEvent.\n        // on iOS10 if you bind touchmove/end after touchstart,\n        // and you don't preventDefault touchstart (which PhotoSwipe does),\n        // preventDefault will have no effect on touchmove and touchend.\n        // Unless you bind it previously.\n\n\n        if (pswp.scrollWrap) {\n          pswp.scrollWrap.ontouchmove = () => {};\n\n          pswp.scrollWrap.ontouchend = () => {};\n        }\n      } else {\n        this._bindEvents('mouse', 'down', 'up');\n      }\n    });\n  }\n  /**\r\n   * @private\r\n   * @param {'mouse' | 'touch' | 'pointer'} pref\r\n   * @param {'down' | 'start'} down\r\n   * @param {'up' | 'end'} up\r\n   * @param {'cancel'} [cancel]\r\n   */\n\n\n  _bindEvents(pref, down, up, cancel) {\n    const {\n      pswp\n    } = this;\n    const {\n      events\n    } = pswp;\n    const cancelEvent = cancel ? pref + cancel : '';\n    events.add(pswp.scrollWrap, pref + down,\n    /** @type EventListener */\n    this.onPointerDown.bind(this));\n    events.add(window, pref + 'move',\n    /** @type EventListener */\n    this.onPointerMove.bind(this));\n    events.add(window, pref + up,\n    /** @type EventListener */\n    this.onPointerUp.bind(this));\n\n    if (cancelEvent) {\n      events.add(pswp.scrollWrap, cancelEvent,\n      /** @type EventListener */\n      this.onPointerUp.bind(this));\n    }\n  }\n  /**\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  onPointerDown(e) {\n    // We do not call preventDefault for touch events\n    // to allow browser to show native dialog on longpress\n    // (the one that allows to save image or open it in new tab).\n    //\n    // Desktop Safari allows to drag images when preventDefault isn't called on mousedown,\n    // even though preventDefault IS called on mousemove. That's why we preventDefault mousedown.\n    const isMousePointer = e.type === 'mousedown' || e.pointerType === 'mouse'; // Allow dragging only via left mouse button.\n    // http://www.quirksmode.org/js/events_properties.html\n    // https://developer.mozilla.org/en-US/docs/Web/API/event.button\n\n    if (isMousePointer && e.button > 0) {\n      return;\n    }\n\n    const {\n      pswp\n    } = this; // if PhotoSwipe is opening or closing\n\n    if (!pswp.opener.isOpen) {\n      e.preventDefault();\n      return;\n    }\n\n    if (pswp.dispatch('pointerDown', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (isMousePointer) {\n      pswp.mouseDetected(); // preventDefault mouse event to prevent\n      // browser image drag feature\n\n      this._preventPointerEventBehaviour(e, 'down');\n    }\n\n    pswp.animations.stopAll();\n\n    this._updatePoints(e, 'down');\n\n    if (this._numActivePoints === 1) {\n      this.dragAxis = null; // we need to store initial point to determine the main axis,\n      // drag is activated only after the axis is determined\n\n      equalizePoints(this.startP1, this.p1);\n    }\n\n    if (this._numActivePoints > 1) {\n      // Tap or double tap should not trigger if more than one pointer\n      this._clearTapTimer();\n\n      this.isMultitouch = true;\n    } else {\n      this.isMultitouch = false;\n    }\n  }\n  /**\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  onPointerMove(e) {\n    this._preventPointerEventBehaviour(e, 'move');\n\n    if (!this._numActivePoints) {\n      return;\n    }\n\n    this._updatePoints(e, 'move');\n\n    if (this.pswp.dispatch('pointerMove', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this._numActivePoints === 1 && !this.isDragging) {\n      if (!this.dragAxis) {\n        this._calculateDragDirection();\n      } // Drag axis was detected, emit drag.start\n\n\n      if (this.dragAxis && !this.isDragging) {\n        if (this.isZooming) {\n          this.isZooming = false;\n          this.zoomLevels.end();\n        }\n\n        this.isDragging = true;\n\n        this._clearTapTimer(); // Tap can not trigger after drag\n        // Adjust starting point\n\n\n        this._updateStartPoints();\n\n        this._intervalTime = Date.now(); //this._startTime = this._intervalTime;\n\n        this._velocityCalculated = false;\n        equalizePoints(this._intervalP1, this.p1);\n        this.velocity.x = 0;\n        this.velocity.y = 0;\n        this.drag.start();\n\n        this._rafStopLoop();\n\n        this._rafRenderLoop();\n      }\n    } else if (this._numActivePoints > 1 && !this.isZooming) {\n      this._finishDrag();\n\n      this.isZooming = true; // Adjust starting points\n\n      this._updateStartPoints();\n\n      this.zoomLevels.start();\n\n      this._rafStopLoop();\n\n      this._rafRenderLoop();\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _finishDrag() {\n    if (this.isDragging) {\n      this.isDragging = false; // Try to calculate velocity,\n      // if it wasn't calculated yet in drag.change\n\n      if (!this._velocityCalculated) {\n        this._updateVelocity(true);\n      }\n\n      this.drag.end();\n      this.dragAxis = null;\n    }\n  }\n  /**\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  onPointerUp(e) {\n    if (!this._numActivePoints) {\n      return;\n    }\n\n    this._updatePoints(e, 'up');\n\n    if (this.pswp.dispatch('pointerUp', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this._numActivePoints === 0) {\n      this._rafStopLoop();\n\n      if (this.isDragging) {\n        this._finishDrag();\n      } else if (!this.isZooming && !this.isMultitouch) {\n        //this.zoomLevels.correctZoomPan();\n        this._finishTap(e);\n      }\n    }\n\n    if (this._numActivePoints < 2 && this.isZooming) {\n      this.isZooming = false;\n      this.zoomLevels.end();\n\n      if (this._numActivePoints === 1) {\n        // Since we have 1 point left, we need to reinitiate drag\n        this.dragAxis = null;\n\n        this._updateStartPoints();\n      }\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _rafRenderLoop() {\n    if (this.isDragging || this.isZooming) {\n      this._updateVelocity();\n\n      if (this.isDragging) {\n        // make sure that pointer moved since the last update\n        if (!pointsEqual(this.p1, this.prevP1)) {\n          this.drag.change();\n        }\n      } else\n        /* if (this.isZooming) */\n        {\n          if (!pointsEqual(this.p1, this.prevP1) || !pointsEqual(this.p2, this.prevP2)) {\n            this.zoomLevels.change();\n          }\n        }\n\n      this._updatePrevPoints();\n\n      this.raf = requestAnimationFrame(this._rafRenderLoop.bind(this));\n    }\n  }\n  /**\r\n   * Update velocity at 50ms interval\r\n   *\r\n   * @private\r\n   * @param {boolean} [force]\r\n   */\n\n\n  _updateVelocity(force) {\n    const time = Date.now();\n    const duration = time - this._intervalTime;\n\n    if (duration < 50 && !force) {\n      return;\n    }\n\n    this.velocity.x = this._getVelocity('x', duration);\n    this.velocity.y = this._getVelocity('y', duration);\n    this._intervalTime = time;\n    equalizePoints(this._intervalP1, this.p1);\n    this._velocityCalculated = true;\n  }\n  /**\r\n   * @private\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  _finishTap(e) {\n    const {\n      mainScroll\n    } = this.pswp; // Do not trigger tap events if main scroll is shifted\n\n    if (mainScroll.isShifted()) {\n      // restore main scroll position\n      // (usually happens if stopped in the middle of animation)\n      mainScroll.moveIndexBy(0, true);\n      return;\n    } // Do not trigger tap for touchcancel or pointercancel\n\n\n    if (e.type.indexOf('cancel') > 0) {\n      return;\n    } // Trigger click instead of tap for mouse events\n\n\n    if (e.type === 'mouseup' || e.pointerType === 'mouse') {\n      this.tapHandler.click(this.startP1, e);\n      return;\n    } // Disable delay if there is no doubleTapAction\n\n\n    const tapDelay = this.pswp.options.doubleTapAction ? DOUBLE_TAP_DELAY : 0; // If tapTimer is defined - we tapped recently,\n    // check if the current tap is close to the previous one,\n    // if yes - trigger double tap\n\n    if (this._tapTimer) {\n      this._clearTapTimer(); // Check if two taps were more or less on the same place\n\n\n      if (getDistanceBetween(this._lastStartP1, this.startP1) < MIN_TAP_DISTANCE) {\n        this.tapHandler.doubleTap(this.startP1, e);\n      }\n    } else {\n      equalizePoints(this._lastStartP1, this.startP1);\n      this._tapTimer = setTimeout(() => {\n        this.tapHandler.tap(this.startP1, e);\n\n        this._clearTapTimer();\n      }, tapDelay);\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _clearTapTimer() {\n    if (this._tapTimer) {\n      clearTimeout(this._tapTimer);\n      this._tapTimer = null;\n    }\n  }\n  /**\r\n   * Get velocity for axis\r\n   *\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @param {number} duration\r\n   * @returns {number}\r\n   */\n\n\n  _getVelocity(axis, duration) {\n    // displacement is like distance, but can be negative.\n    const displacement = this.p1[axis] - this._intervalP1[axis];\n\n    if (Math.abs(displacement) > 1 && duration > 5) {\n      return displacement / duration;\n    }\n\n    return 0;\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _rafStopLoop() {\n    if (this.raf) {\n      cancelAnimationFrame(this.raf);\n      this.raf = null;\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {PointerEvent} e\r\n   * @param {'up' | 'down' | 'move'} pointerType Normalized pointer type\r\n   */\n\n\n  _preventPointerEventBehaviour(e, pointerType) {\n    const preventPointerEvent = this.pswp.applyFilters('preventPointerEvent', true, e, pointerType);\n\n    if (preventPointerEvent) {\n      e.preventDefault();\n    }\n  }\n  /**\r\n   * Parses and normalizes points from the touch, mouse or pointer event.\r\n   * Updates p1 and p2.\r\n   *\r\n   * @private\r\n   * @param {PointerEvent | TouchEvent} e\r\n   * @param {'up' | 'down' | 'move'} pointerType Normalized pointer type\r\n   */\n\n\n  _updatePoints(e, pointerType) {\n    if (this._pointerEventEnabled) {\n      const pointerEvent =\n      /** @type {PointerEvent} */\n      e; // Try to find the current pointer in ongoing pointers by its ID\n\n      const pointerIndex = this._ongoingPointers.findIndex(ongoingPointer => {\n        return ongoingPointer.id === pointerEvent.pointerId;\n      });\n\n      if (pointerType === 'up' && pointerIndex > -1) {\n        // release the pointer - remove it from ongoing\n        this._ongoingPointers.splice(pointerIndex, 1);\n      } else if (pointerType === 'down' && pointerIndex === -1) {\n        // add new pointer\n        this._ongoingPointers.push(this._convertEventPosToPoint(pointerEvent, {\n          x: 0,\n          y: 0\n        }));\n      } else if (pointerIndex > -1) {\n        // update existing pointer\n        this._convertEventPosToPoint(pointerEvent, this._ongoingPointers[pointerIndex]);\n      }\n\n      this._numActivePoints = this._ongoingPointers.length; // update points that PhotoSwipe uses\n      // to calculate position and scale\n\n      if (this._numActivePoints > 0) {\n        equalizePoints(this.p1, this._ongoingPointers[0]);\n      }\n\n      if (this._numActivePoints > 1) {\n        equalizePoints(this.p2, this._ongoingPointers[1]);\n      }\n    } else {\n      const touchEvent =\n      /** @type {TouchEvent} */\n      e;\n      this._numActivePoints = 0;\n\n      if (touchEvent.type.indexOf('touch') > -1) {\n        // Touch Event\n        // https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent\n        if (touchEvent.touches && touchEvent.touches.length > 0) {\n          this._convertEventPosToPoint(touchEvent.touches[0], this.p1);\n\n          this._numActivePoints++;\n\n          if (touchEvent.touches.length > 1) {\n            this._convertEventPosToPoint(touchEvent.touches[1], this.p2);\n\n            this._numActivePoints++;\n          }\n        }\n      } else {\n        // Mouse Event\n        this._convertEventPosToPoint(\n        /** @type {PointerEvent} */\n        e, this.p1);\n\n        if (pointerType === 'up') {\n          // clear all points on mouseup\n          this._numActivePoints = 0;\n        } else {\n          this._numActivePoints++;\n        }\n      }\n    }\n  }\n  /** update points that were used during previous rAF tick\r\n   * @private\r\n   */\n\n\n  _updatePrevPoints() {\n    equalizePoints(this.prevP1, this.p1);\n    equalizePoints(this.prevP2, this.p2);\n  }\n  /** update points at the start of gesture\r\n   * @private\r\n   */\n\n\n  _updateStartPoints() {\n    equalizePoints(this.startP1, this.p1);\n    equalizePoints(this.startP2, this.p2);\n\n    this._updatePrevPoints();\n  }\n  /** @private */\n\n\n  _calculateDragDirection() {\n    if (this.pswp.mainScroll.isShifted()) {\n      // if main scroll position is shifted – direction is always horizontal\n      this.dragAxis = 'x';\n    } else {\n      // calculate delta of the last touchmove tick\n      const diff = Math.abs(this.p1.x - this.startP1.x) - Math.abs(this.p1.y - this.startP1.y);\n\n      if (diff !== 0) {\n        // check if pointer was shifted horizontally or vertically\n        const axisToCheck = diff > 0 ? 'x' : 'y';\n\n        if (Math.abs(this.p1[axisToCheck] - this.startP1[axisToCheck]) >= AXIS_SWIPE_HYSTERISIS) {\n          this.dragAxis = axisToCheck;\n        }\n      }\n    }\n  }\n  /**\r\n   * Converts touch, pointer or mouse event\r\n   * to PhotoSwipe point.\r\n   *\r\n   * @private\r\n   * @param {Touch | PointerEvent} e\r\n   * @param {Point} p\r\n   * @returns {Point}\r\n   */\n\n\n  _convertEventPosToPoint(e, p) {\n    p.x = e.pageX - this.pswp.offset.x;\n    p.y = e.pageY - this.pswp.offset.y;\n\n    if ('pointerId' in e) {\n      p.id = e.pointerId;\n    } else if (e.identifier !== undefined) {\n      p.id = e.identifier;\n    }\n\n    return p;\n  }\n  /**\r\n   * @private\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  _onClick(e) {\n    // Do not allow click event to pass through after drag\n    if (this.pswp.mainScroll.isShifted()) {\n      e.preventDefault();\n      e.stopPropagation();\n    }\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('./slide/slide.js').default} Slide */\n\n/** @typedef {{ el: HTMLDivElement; slide?: Slide }} ItemHolder */\n\nconst MAIN_SCROLL_END_FRICTION = 0.35; // const MIN_SWIPE_TRANSITION_DURATION = 250;\n// const MAX_SWIPE_TRABSITION_DURATION = 500;\n// const DEFAULT_SWIPE_TRANSITION_DURATION = 333;\n\n/**\r\n * Handles movement of the main scrolling container\r\n * (for example, it repositions when user swipes left or right).\r\n *\r\n * Also stores its state.\r\n */\n\nclass MainScroll {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    this.x = 0;\n    this.slideWidth = 0;\n    /** @private */\n\n    this._currPositionIndex = 0;\n    /** @private */\n\n    this._prevPositionIndex = 0;\n    /** @private */\n\n    this._containerShiftIndex = -1;\n    /** @type {ItemHolder[]} */\n\n    this.itemHolders = [];\n  }\n  /**\r\n   * Position the scroller and slide containers\r\n   * according to viewport size.\r\n   *\r\n   * @param {boolean} [resizeSlides] Whether slides content should resized\r\n   */\n\n\n  resize(resizeSlides) {\n    const {\n      pswp\n    } = this;\n    const newSlideWidth = Math.round(pswp.viewportSize.x + pswp.viewportSize.x * pswp.options.spacing); // Mobile browsers might trigger a resize event during a gesture.\n    // (due to toolbar appearing or hiding).\n    // Avoid re-adjusting main scroll position if width wasn't changed\n\n    const slideWidthChanged = newSlideWidth !== this.slideWidth;\n\n    if (slideWidthChanged) {\n      this.slideWidth = newSlideWidth;\n      this.moveTo(this.getCurrSlideX());\n    }\n\n    this.itemHolders.forEach((itemHolder, index) => {\n      if (slideWidthChanged) {\n        setTransform(itemHolder.el, (index + this._containerShiftIndex) * this.slideWidth);\n      }\n\n      if (resizeSlides && itemHolder.slide) {\n        itemHolder.slide.resize();\n      }\n    });\n  }\n  /**\r\n   * Reset X position of the main scroller to zero\r\n   */\n\n\n  resetPosition() {\n    // Position on the main scroller (offset)\n    // it is independent from slide index\n    this._currPositionIndex = 0;\n    this._prevPositionIndex = 0; // This will force recalculation of size on next resize()\n\n    this.slideWidth = 0; // _containerShiftIndex*viewportSize will give you amount of transform of the current slide\n\n    this._containerShiftIndex = -1;\n  }\n  /**\r\n   * Create and append array of three items\r\n   * that hold data about slides in DOM\r\n   */\n\n\n  appendHolders() {\n    this.itemHolders = []; // append our three slide holders -\n    // previous, current, and next\n\n    for (let i = 0; i < 3; i++) {\n      const el = createElement('pswp__item', 'div', this.pswp.container);\n      el.setAttribute('role', 'group');\n      el.setAttribute('aria-roledescription', 'slide');\n      el.setAttribute('aria-hidden', 'true'); // hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)\n\n      el.style.display = i === 1 ? 'block' : 'none';\n      this.itemHolders.push({\n        el //index: -1\n\n      });\n    }\n  }\n  /**\r\n   * Whether the main scroll can be horizontally swiped to the next or previous slide.\r\n   * @returns {boolean}\r\n   */\n\n\n  canBeSwiped() {\n    return this.pswp.getNumItems() > 1;\n  }\n  /**\r\n   * Move main scroll by X amount of slides.\r\n   * For example:\r\n   *   `-1` will move to the previous slide,\r\n   *    `0` will reset the scroll position of the current slide,\r\n   *    `3` will move three slides forward\r\n   *\r\n   * If loop option is enabled - index will be automatically looped too,\r\n   * (for example `-1` will move to the last slide of the gallery).\r\n   *\r\n   * @param {number} diff\r\n   * @param {boolean} [animate]\r\n   * @param {number} [velocityX]\r\n   * @returns {boolean} whether index was changed or not\r\n   */\n\n\n  moveIndexBy(diff, animate, velocityX) {\n    const {\n      pswp\n    } = this;\n    let newIndex = pswp.potentialIndex + diff;\n    const numSlides = pswp.getNumItems();\n\n    if (pswp.canLoop()) {\n      newIndex = pswp.getLoopedIndex(newIndex);\n      const distance = (diff + numSlides) % numSlides;\n\n      if (distance <= numSlides / 2) {\n        // go forward\n        diff = distance;\n      } else {\n        // go backwards\n        diff = distance - numSlides;\n      }\n    } else {\n      if (newIndex < 0) {\n        newIndex = 0;\n      } else if (newIndex >= numSlides) {\n        newIndex = numSlides - 1;\n      }\n\n      diff = newIndex - pswp.potentialIndex;\n    }\n\n    pswp.potentialIndex = newIndex;\n    this._currPositionIndex -= diff;\n    pswp.animations.stopMainScroll();\n    const destinationX = this.getCurrSlideX();\n\n    if (!animate) {\n      this.moveTo(destinationX);\n      this.updateCurrItem();\n    } else {\n      pswp.animations.startSpring({\n        isMainScroll: true,\n        start: this.x,\n        end: destinationX,\n        velocity: velocityX || 0,\n        naturalFrequency: 30,\n        dampingRatio: 1,\n        //0.7,\n        onUpdate: x => {\n          this.moveTo(x);\n        },\n        onComplete: () => {\n          this.updateCurrItem();\n          pswp.appendHeavy();\n        }\n      });\n      let currDiff = pswp.potentialIndex - pswp.currIndex;\n\n      if (pswp.canLoop()) {\n        const currDistance = (currDiff + numSlides) % numSlides;\n\n        if (currDistance <= numSlides / 2) {\n          // go forward\n          currDiff = currDistance;\n        } else {\n          // go backwards\n          currDiff = currDistance - numSlides;\n        }\n      } // Force-append new slides during transition\n      // if difference between slides is more than 1\n\n\n      if (Math.abs(currDiff) > 1) {\n        this.updateCurrItem();\n      }\n    }\n\n    return Boolean(diff);\n  }\n  /**\r\n   * X position of the main scroll for the current slide\r\n   * (ignores position during dragging)\r\n   * @returns {number}\r\n   */\n\n\n  getCurrSlideX() {\n    return this.slideWidth * this._currPositionIndex;\n  }\n  /**\r\n   * Whether scroll position is shifted.\r\n   * For example, it will return true if the scroll is being dragged or animated.\r\n   * @returns {boolean}\r\n   */\n\n\n  isShifted() {\n    return this.x !== this.getCurrSlideX();\n  }\n  /**\r\n   * Update slides X positions and set their content\r\n   */\n\n\n  updateCurrItem() {\n    var _this$itemHolders$;\n\n    const {\n      pswp\n    } = this;\n    const positionDifference = this._prevPositionIndex - this._currPositionIndex;\n\n    if (!positionDifference) {\n      return;\n    }\n\n    this._prevPositionIndex = this._currPositionIndex;\n    pswp.currIndex = pswp.potentialIndex;\n    let diffAbs = Math.abs(positionDifference);\n    /** @type {ItemHolder | undefined} */\n\n    let tempHolder;\n\n    if (diffAbs >= 3) {\n      this._containerShiftIndex += positionDifference + (positionDifference > 0 ? -3 : 3);\n      diffAbs = 3; // If slides are changed by 3 screens or more - clean up previous slides\n\n      this.itemHolders.forEach(itemHolder => {\n        var _itemHolder$slide;\n\n        (_itemHolder$slide = itemHolder.slide) === null || _itemHolder$slide === void 0 || _itemHolder$slide.destroy();\n        itemHolder.slide = undefined;\n      });\n    }\n\n    for (let i = 0; i < diffAbs; i++) {\n      if (positionDifference > 0) {\n        tempHolder = this.itemHolders.shift();\n\n        if (tempHolder) {\n          this.itemHolders[2] = tempHolder; // move first to last\n\n          this._containerShiftIndex++;\n          setTransform(tempHolder.el, (this._containerShiftIndex + 2) * this.slideWidth);\n          pswp.setContent(tempHolder, pswp.currIndex - diffAbs + i + 2);\n        }\n      } else {\n        tempHolder = this.itemHolders.pop();\n\n        if (tempHolder) {\n          this.itemHolders.unshift(tempHolder); // move last to first\n\n          this._containerShiftIndex--;\n          setTransform(tempHolder.el, this._containerShiftIndex * this.slideWidth);\n          pswp.setContent(tempHolder, pswp.currIndex + diffAbs - i - 2);\n        }\n      }\n    } // Reset transfrom every 50ish navigations in one direction.\n    //\n    // Otherwise transform will keep growing indefinitely,\n    // which might cause issues as browsers have a maximum transform limit.\n    // I wasn't able to reach it, but just to be safe.\n    // This should not cause noticable lag.\n\n\n    if (Math.abs(this._containerShiftIndex) > 50 && !this.isShifted()) {\n      this.resetPosition();\n      this.resize();\n    } // Pan transition might be running (and consntantly updating pan position)\n\n\n    pswp.animations.stopAllPan();\n    this.itemHolders.forEach((itemHolder, i) => {\n      if (itemHolder.slide) {\n        // Slide in the 2nd holder is always active\n        itemHolder.slide.setIsActive(i === 1);\n      }\n    });\n    pswp.currSlide = (_this$itemHolders$ = this.itemHolders[1]) === null || _this$itemHolders$ === void 0 ? void 0 : _this$itemHolders$.slide;\n    pswp.contentLoader.updateLazy(positionDifference);\n\n    if (pswp.currSlide) {\n      pswp.currSlide.applyCurrentZoomPan();\n    }\n\n    pswp.dispatch('change');\n  }\n  /**\r\n   * Move the X position of the main scroll container\r\n   *\r\n   * @param {number} x\r\n   * @param {boolean} [dragging]\r\n   */\n\n\n  moveTo(x, dragging) {\n    if (!this.pswp.canLoop() && dragging) {\n      // Apply friction\n      let newSlideIndexOffset = (this.slideWidth * this._currPositionIndex - x) / this.slideWidth;\n      newSlideIndexOffset += this.pswp.currIndex;\n      const delta = Math.round(x - this.x);\n\n      if (newSlideIndexOffset < 0 && delta > 0 || newSlideIndexOffset >= this.pswp.getNumItems() - 1 && delta < 0) {\n        x = this.x + delta * MAIN_SCROLL_END_FRICTION;\n      }\n    }\n\n    this.x = x;\n\n    if (this.pswp.container) {\n      setTransform(this.pswp.container, x);\n    }\n\n    this.pswp.dispatch('moveMainScroll', {\n      x,\n      dragging: dragging !== null && dragging !== void 0 ? dragging : false\n    });\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/**\r\n * @template T\r\n * @typedef {import('./types.js').Methods<T>} Methods<T>\r\n */\n\nconst KeyboardKeyCodesMap = {\n  Escape: 27,\n  z: 90,\n  ArrowLeft: 37,\n  ArrowUp: 38,\n  ArrowRight: 39,\n  ArrowDown: 40,\n  Tab: 9\n};\n/**\r\n * @template {keyof KeyboardKeyCodesMap} T\r\n * @param {T} key\r\n * @param {boolean} isKeySupported\r\n * @returns {T | number | undefined}\r\n */\n\nconst getKeyboardEventKey = (key, isKeySupported) => {\n  return isKeySupported ? key : KeyboardKeyCodesMap[key];\n};\n/**\r\n * - Manages keyboard shortcuts.\r\n * - Helps trap focus within photoswipe.\r\n */\n\n\nclass Keyboard {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    /** @private */\n\n    this._wasFocused = false;\n    pswp.on('bindEvents', () => {\n      if (pswp.options.trapFocus) {\n        // Dialog was likely opened by keyboard if initial point is not defined\n        if (!pswp.options.initialPointerPos) {\n          // focus causes layout,\n          // which causes lag during the animation,\n          // that's why we delay it until the opener transition ends\n          this._focusRoot();\n        }\n\n        pswp.events.add(document, 'focusin',\n        /** @type EventListener */\n        this._onFocusIn.bind(this));\n      }\n\n      pswp.events.add(document, 'keydown',\n      /** @type EventListener */\n      this._onKeyDown.bind(this));\n    });\n    const lastActiveElement =\n    /** @type {HTMLElement} */\n    document.activeElement;\n    pswp.on('destroy', () => {\n      if (pswp.options.returnFocus && lastActiveElement && this._wasFocused) {\n        lastActiveElement.focus();\n      }\n    });\n  }\n  /** @private */\n\n\n  _focusRoot() {\n    if (!this._wasFocused && this.pswp.element) {\n      this.pswp.element.focus();\n      this._wasFocused = true;\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {KeyboardEvent} e\r\n   */\n\n\n  _onKeyDown(e) {\n    const {\n      pswp\n    } = this;\n\n    if (pswp.dispatch('keydown', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (specialKeyUsed(e)) {\n      // don't do anything if special key pressed\n      // to prevent from overriding default browser actions\n      // for example, in Chrome on Mac cmd+arrow-left returns to previous page\n      return;\n    }\n    /** @type {Methods<PhotoSwipe> | undefined} */\n\n\n    let keydownAction;\n    /** @type {'x' | 'y' | undefined} */\n\n    let axis;\n    let isForward = false;\n    const isKeySupported = ('key' in e);\n\n    switch (isKeySupported ? e.key : e.keyCode) {\n      case getKeyboardEventKey('Escape', isKeySupported):\n        if (pswp.options.escKey) {\n          keydownAction = 'close';\n        }\n\n        break;\n\n      case getKeyboardEventKey('z', isKeySupported):\n        keydownAction = 'toggleZoom';\n        break;\n\n      case getKeyboardEventKey('ArrowLeft', isKeySupported):\n        axis = 'x';\n        break;\n\n      case getKeyboardEventKey('ArrowUp', isKeySupported):\n        axis = 'y';\n        break;\n\n      case getKeyboardEventKey('ArrowRight', isKeySupported):\n        axis = 'x';\n        isForward = true;\n        break;\n\n      case getKeyboardEventKey('ArrowDown', isKeySupported):\n        isForward = true;\n        axis = 'y';\n        break;\n\n      case getKeyboardEventKey('Tab', isKeySupported):\n        this._focusRoot();\n\n        break;\n    } // if left/right/top/bottom key\n\n\n    if (axis) {\n      // prevent page scroll\n      e.preventDefault();\n      const {\n        currSlide\n      } = pswp;\n\n      if (pswp.options.arrowKeys && axis === 'x' && pswp.getNumItems() > 1) {\n        keydownAction = isForward ? 'next' : 'prev';\n      } else if (currSlide && currSlide.currZoomLevel > currSlide.zoomLevels.fit) {\n        // up/down arrow keys pan the image vertically\n        // left/right arrow keys pan horizontally.\n        // Unless there is only one image,\n        // or arrowKeys option is disabled\n        currSlide.pan[axis] += isForward ? -80 : 80;\n        currSlide.panTo(currSlide.pan.x, currSlide.pan.y);\n      }\n    }\n\n    if (keydownAction) {\n      e.preventDefault(); // @ts-ignore\n\n      pswp[keydownAction]();\n    }\n  }\n  /**\r\n   * Trap focus inside photoswipe\r\n   *\r\n   * @private\r\n   * @param {FocusEvent} e\r\n   */\n\n\n  _onFocusIn(e) {\n    const {\n      template\n    } = this.pswp;\n\n    if (template && document !== e.target && template !== e.target && !template.contains(\n    /** @type {Node} */\n    e.target)) {\n      // focus root element\n      template.focus();\n    }\n  }\n\n}\n\nconst DEFAULT_EASING = 'cubic-bezier(.4,0,.22,1)';\n/** @typedef {import('./animations.js').SharedAnimationProps} SharedAnimationProps */\n\n/** @typedef {Object} DefaultCssAnimationProps\r\n *\r\n * @prop {HTMLElement} target\r\n * @prop {number} [duration]\r\n * @prop {string} [easing]\r\n * @prop {string} [transform]\r\n * @prop {string} [opacity]\r\n * */\n\n/** @typedef {SharedAnimationProps & DefaultCssAnimationProps} CssAnimationProps */\n\n/**\r\n * Runs CSS transition.\r\n */\n\nclass CSSAnimation {\n  /**\r\n   * onComplete can be unpredictable, be careful about current state\r\n   *\r\n   * @param {CssAnimationProps} props\r\n   */\n  constructor(props) {\n    var _props$prop;\n\n    this.props = props;\n    const {\n      target,\n      onComplete,\n      transform,\n      onFinish = () => {},\n      duration = 333,\n      easing = DEFAULT_EASING\n    } = props;\n    this.onFinish = onFinish; // support only transform and opacity\n\n    const prop = transform ? 'transform' : 'opacity';\n    const propValue = (_props$prop = props[prop]) !== null && _props$prop !== void 0 ? _props$prop : '';\n    /** @private */\n\n    this._target = target;\n    /** @private */\n\n    this._onComplete = onComplete;\n    /** @private */\n\n    this._finished = false;\n    /** @private */\n\n    this._onTransitionEnd = this._onTransitionEnd.bind(this); // Using timeout hack to make sure that animation\n    // starts even if the animated property was changed recently,\n    // otherwise transitionend might not fire or transition won't start.\n    // https://drafts.csswg.org/css-transitions/#starting\n    //\n    // ¯\\_(ツ)_/¯\n\n    /** @private */\n\n    this._helperTimeout = setTimeout(() => {\n      setTransitionStyle(target, prop, duration, easing);\n      this._helperTimeout = setTimeout(() => {\n        target.addEventListener('transitionend', this._onTransitionEnd, false);\n        target.addEventListener('transitioncancel', this._onTransitionEnd, false); // Safari occasionally does not emit transitionend event\n        // if element property was modified during the transition,\n        // which may be caused by resize or third party component,\n        // using timeout as a safety fallback\n\n        this._helperTimeout = setTimeout(() => {\n          this._finalizeAnimation();\n        }, duration + 500);\n        target.style[prop] = propValue;\n      }, 30); // Do not reduce this number\n    }, 0);\n  }\n  /**\r\n   * @private\r\n   * @param {TransitionEvent} e\r\n   */\n\n\n  _onTransitionEnd(e) {\n    if (e.target === this._target) {\n      this._finalizeAnimation();\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _finalizeAnimation() {\n    if (!this._finished) {\n      this._finished = true;\n      this.onFinish();\n\n      if (this._onComplete) {\n        this._onComplete();\n      }\n    }\n  } // Destroy is called automatically onFinish\n\n\n  destroy() {\n    if (this._helperTimeout) {\n      clearTimeout(this._helperTimeout);\n    }\n\n    removeTransitionStyle(this._target);\n\n    this._target.removeEventListener('transitionend', this._onTransitionEnd, false);\n\n    this._target.removeEventListener('transitioncancel', this._onTransitionEnd, false);\n\n    if (!this._finished) {\n      this._finalizeAnimation();\n    }\n  }\n\n}\n\nconst DEFAULT_NATURAL_FREQUENCY = 12;\nconst DEFAULT_DAMPING_RATIO = 0.75;\n/**\r\n * Spring easing helper\r\n */\n\nclass SpringEaser {\n  /**\r\n   * @param {number} initialVelocity Initial velocity, px per ms.\r\n   *\r\n   * @param {number} [dampingRatio]\r\n   * Determines how bouncy animation will be.\r\n   * From 0 to 1, 0 - always overshoot, 1 - do not overshoot.\r\n   * \"overshoot\" refers to part of animation that\r\n   * goes beyond the final value.\r\n   *\r\n   * @param {number} [naturalFrequency]\r\n   * Determines how fast animation will slow down.\r\n   * The higher value - the stiffer the transition will be,\r\n   * and the faster it will slow down.\r\n   * Recommended value from 10 to 50\r\n   */\n  constructor(initialVelocity, dampingRatio, naturalFrequency) {\n    this.velocity = initialVelocity * 1000; // convert to \"pixels per second\"\n    // https://en.wikipedia.org/wiki/Damping_ratio\n\n    this._dampingRatio = dampingRatio || DEFAULT_DAMPING_RATIO; // https://en.wikipedia.org/wiki/Natural_frequency\n\n    this._naturalFrequency = naturalFrequency || DEFAULT_NATURAL_FREQUENCY;\n    this._dampedFrequency = this._naturalFrequency;\n\n    if (this._dampingRatio < 1) {\n      this._dampedFrequency *= Math.sqrt(1 - this._dampingRatio * this._dampingRatio);\n    }\n  }\n  /**\r\n   * @param {number} deltaPosition Difference between current and end position of the animation\r\n   * @param {number} deltaTime Frame duration in milliseconds\r\n   *\r\n   * @returns {number} Displacement, relative to the end position.\r\n   */\n\n\n  easeFrame(deltaPosition, deltaTime) {\n    // Inspired by Apple Webkit and Android spring function implementation\n    // https://en.wikipedia.org/wiki/Oscillation\n    // https://en.wikipedia.org/wiki/Damping_ratio\n    // we ignore mass (assume that it's 1kg)\n    let displacement = 0;\n    let coeff;\n    deltaTime /= 1000;\n    const naturalDumpingPow = Math.E ** (-this._dampingRatio * this._naturalFrequency * deltaTime);\n\n    if (this._dampingRatio === 1) {\n      coeff = this.velocity + this._naturalFrequency * deltaPosition;\n      displacement = (deltaPosition + coeff * deltaTime) * naturalDumpingPow;\n      this.velocity = displacement * -this._naturalFrequency + coeff * naturalDumpingPow;\n    } else if (this._dampingRatio < 1) {\n      coeff = 1 / this._dampedFrequency * (this._dampingRatio * this._naturalFrequency * deltaPosition + this.velocity);\n      const dumpedFCos = Math.cos(this._dampedFrequency * deltaTime);\n      const dumpedFSin = Math.sin(this._dampedFrequency * deltaTime);\n      displacement = naturalDumpingPow * (deltaPosition * dumpedFCos + coeff * dumpedFSin);\n      this.velocity = displacement * -this._naturalFrequency * this._dampingRatio + naturalDumpingPow * (-this._dampedFrequency * deltaPosition * dumpedFSin + this._dampedFrequency * coeff * dumpedFCos);\n    } // Overdamped (>1) damping ratio is not supported\n\n\n    return displacement;\n  }\n\n}\n\n/** @typedef {import('./animations.js').SharedAnimationProps} SharedAnimationProps */\n\n/**\r\n * @typedef {Object} DefaultSpringAnimationProps\r\n *\r\n * @prop {number} start\r\n * @prop {number} end\r\n * @prop {number} velocity\r\n * @prop {number} [dampingRatio]\r\n * @prop {number} [naturalFrequency]\r\n * @prop {(end: number) => void} onUpdate\r\n */\n\n/** @typedef {SharedAnimationProps & DefaultSpringAnimationProps} SpringAnimationProps */\n\nclass SpringAnimation {\n  /**\r\n   * @param {SpringAnimationProps} props\r\n   */\n  constructor(props) {\n    this.props = props;\n    this._raf = 0;\n    const {\n      start,\n      end,\n      velocity,\n      onUpdate,\n      onComplete,\n      onFinish = () => {},\n      dampingRatio,\n      naturalFrequency\n    } = props;\n    this.onFinish = onFinish;\n    const easer = new SpringEaser(velocity, dampingRatio, naturalFrequency);\n    let prevTime = Date.now();\n    let deltaPosition = start - end;\n\n    const animationLoop = () => {\n      if (this._raf) {\n        deltaPosition = easer.easeFrame(deltaPosition, Date.now() - prevTime); // Stop the animation if velocity is low and position is close to end\n\n        if (Math.abs(deltaPosition) < 1 && Math.abs(easer.velocity) < 50) {\n          // Finalize the animation\n          onUpdate(end);\n\n          if (onComplete) {\n            onComplete();\n          }\n\n          this.onFinish();\n        } else {\n          prevTime = Date.now();\n          onUpdate(deltaPosition + end);\n          this._raf = requestAnimationFrame(animationLoop);\n        }\n      }\n    };\n\n    this._raf = requestAnimationFrame(animationLoop);\n  } // Destroy is called automatically onFinish\n\n\n  destroy() {\n    if (this._raf >= 0) {\n      cancelAnimationFrame(this._raf);\n    }\n\n    this._raf = 0;\n  }\n\n}\n\n/** @typedef {import('./css-animation.js').CssAnimationProps} CssAnimationProps */\n\n/** @typedef {import('./spring-animation.js').SpringAnimationProps} SpringAnimationProps */\n\n/** @typedef {Object} SharedAnimationProps\r\n * @prop {string} [name]\r\n * @prop {boolean} [isPan]\r\n * @prop {boolean} [isMainScroll]\r\n * @prop {VoidFunction} [onComplete]\r\n * @prop {VoidFunction} [onFinish]\r\n */\n\n/** @typedef {SpringAnimation | CSSAnimation} Animation */\n\n/** @typedef {SpringAnimationProps | CssAnimationProps} AnimationProps */\n\n/**\r\n * Manages animations\r\n */\n\nclass Animations {\n  constructor() {\n    /** @type {Animation[]} */\n    this.activeAnimations = [];\n  }\n  /**\r\n   * @param {SpringAnimationProps} props\r\n   */\n\n\n  startSpring(props) {\n    this._start(props, true);\n  }\n  /**\r\n   * @param {CssAnimationProps} props\r\n   */\n\n\n  startTransition(props) {\n    this._start(props);\n  }\n  /**\r\n   * @private\r\n   * @param {AnimationProps} props\r\n   * @param {boolean} [isSpring]\r\n   * @returns {Animation}\r\n   */\n\n\n  _start(props, isSpring) {\n    const animation = isSpring ? new SpringAnimation(\n    /** @type SpringAnimationProps */\n    props) : new CSSAnimation(\n    /** @type CssAnimationProps */\n    props);\n    this.activeAnimations.push(animation);\n\n    animation.onFinish = () => this.stop(animation);\n\n    return animation;\n  }\n  /**\r\n   * @param {Animation} animation\r\n   */\n\n\n  stop(animation) {\n    animation.destroy();\n    const index = this.activeAnimations.indexOf(animation);\n\n    if (index > -1) {\n      this.activeAnimations.splice(index, 1);\n    }\n  }\n\n  stopAll() {\n    // _stopAllAnimations\n    this.activeAnimations.forEach(animation => {\n      animation.destroy();\n    });\n    this.activeAnimations = [];\n  }\n  /**\r\n   * Stop all pan or zoom transitions\r\n   */\n\n\n  stopAllPan() {\n    this.activeAnimations = this.activeAnimations.filter(animation => {\n      if (animation.props.isPan) {\n        animation.destroy();\n        return false;\n      }\n\n      return true;\n    });\n  }\n\n  stopMainScroll() {\n    this.activeAnimations = this.activeAnimations.filter(animation => {\n      if (animation.props.isMainScroll) {\n        animation.destroy();\n        return false;\n      }\n\n      return true;\n    });\n  }\n  /**\r\n   * Returns true if main scroll transition is running\r\n   */\n  // isMainScrollRunning() {\n  //   return this.activeAnimations.some((animation) => {\n  //     return animation.props.isMainScroll;\n  //   });\n  // }\n\n  /**\r\n   * Returns true if any pan or zoom transition is running\r\n   */\n\n\n  isPanRunning() {\n    return this.activeAnimations.some(animation => {\n      return animation.props.isPan;\n    });\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/**\r\n * Handles scroll wheel.\r\n * Can pan and zoom current slide image.\r\n */\nclass ScrollWheel {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    pswp.events.add(pswp.element, 'wheel',\n    /** @type EventListener */\n    this._onWheel.bind(this));\n  }\n  /**\r\n   * @private\r\n   * @param {WheelEvent} e\r\n   */\n\n\n  _onWheel(e) {\n    e.preventDefault();\n    const {\n      currSlide\n    } = this.pswp;\n    let {\n      deltaX,\n      deltaY\n    } = e;\n\n    if (!currSlide) {\n      return;\n    }\n\n    if (this.pswp.dispatch('wheel', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (e.ctrlKey || this.pswp.options.wheelToZoom) {\n      // zoom\n      if (currSlide.isZoomable()) {\n        let zoomFactor = -deltaY;\n\n        if (e.deltaMode === 1\n        /* DOM_DELTA_LINE */\n        ) {\n          zoomFactor *= 0.05;\n        } else {\n          zoomFactor *= e.deltaMode ? 1 : 0.002;\n        }\n\n        zoomFactor = 2 ** zoomFactor;\n        const destZoomLevel = currSlide.currZoomLevel * zoomFactor;\n        currSlide.zoomTo(destZoomLevel, {\n          x: e.clientX,\n          y: e.clientY\n        });\n      }\n    } else {\n      // pan\n      if (currSlide.isPannable()) {\n        if (e.deltaMode === 1\n        /* DOM_DELTA_LINE */\n        ) {\n          // 18 - average line height\n          deltaX *= 18;\n          deltaY *= 18;\n        }\n\n        currSlide.panTo(currSlide.pan.x - deltaX, currSlide.pan.y - deltaY);\n      }\n    }\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/**\r\n * @template T\r\n * @typedef {import('../types.js').Methods<T>} Methods<T>\r\n */\n\n/**\r\n * @typedef {Object} UIElementMarkupProps\r\n * @prop {boolean} [isCustomSVG]\r\n * @prop {string} inner\r\n * @prop {string} [outlineID]\r\n * @prop {number | string} [size]\r\n */\n\n/**\r\n * @typedef {Object} UIElementData\r\n * @prop {DefaultUIElements | string} [name]\r\n * @prop {string} [className]\r\n * @prop {UIElementMarkup} [html]\r\n * @prop {boolean} [isButton]\r\n * @prop {keyof HTMLElementTagNameMap} [tagName]\r\n * @prop {string} [title]\r\n * @prop {string} [ariaLabel]\r\n * @prop {(element: HTMLElement, pswp: PhotoSwipe) => void} [onInit]\r\n * @prop {Methods<PhotoSwipe> | ((e: MouseEvent, element: HTMLElement, pswp: PhotoSwipe) => void)} [onClick]\r\n * @prop {'bar' | 'wrapper' | 'root'} [appendTo]\r\n * @prop {number} [order]\r\n */\n\n/** @typedef {'arrowPrev' | 'arrowNext' | 'close' | 'zoom' | 'counter'} DefaultUIElements */\n\n/** @typedef {string | UIElementMarkupProps} UIElementMarkup */\n\n/**\r\n * @param {UIElementMarkup} [htmlData]\r\n * @returns {string}\r\n */\n\nfunction addElementHTML(htmlData) {\n  if (typeof htmlData === 'string') {\n    // Allow developers to provide full svg,\n    // For example:\n    // <svg viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" aria-hidden=\"true\" class=\"pswp__icn\">\n    //   <path d=\"...\" />\n    //   <circle ... />\n    // </svg>\n    // Can also be any HTML string.\n    return htmlData;\n  }\n\n  if (!htmlData || !htmlData.isCustomSVG) {\n    return '';\n  }\n\n  const svgData = htmlData;\n  let out = '<svg aria-hidden=\"true\" class=\"pswp__icn\" viewBox=\"0 0 %d %d\" width=\"%d\" height=\"%d\">'; // replace all %d with size\n\n  out = out.split('%d').join(\n  /** @type {string} */\n  svgData.size || 32); // Icons may contain outline/shadow,\n  // to make it we \"clone\" base icon shape and add border to it.\n  // Icon itself and border are styled via CSS.\n  //\n  // Property shadowID defines ID of element that should be cloned.\n\n  if (svgData.outlineID) {\n    out += '<use class=\"pswp__icn-shadow\" xlink:href=\"#' + svgData.outlineID + '\"/>';\n  }\n\n  out += svgData.inner;\n  out += '</svg>';\n  return out;\n}\n\nclass UIElement {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   * @param {UIElementData} data\r\n   */\n  constructor(pswp, data) {\n    var _container;\n\n    const name = data.name || data.className;\n    let elementHTML = data.html; // @ts-expect-error lookup only by `data.name` maybe?\n\n    if (pswp.options[name] === false) {\n      // exit if element is disabled from options\n      return;\n    } // Allow to override SVG icons from options\n    // @ts-expect-error lookup only by `data.name` maybe?\n\n\n    if (typeof pswp.options[name + 'SVG'] === 'string') {\n      // arrowPrevSVG\n      // arrowNextSVG\n      // closeSVG\n      // zoomSVG\n      // @ts-expect-error lookup only by `data.name` maybe?\n      elementHTML = pswp.options[name + 'SVG'];\n    }\n\n    pswp.dispatch('uiElementCreate', {\n      data\n    });\n    let className = '';\n\n    if (data.isButton) {\n      className += 'pswp__button ';\n      className += data.className || `pswp__button--${data.name}`;\n    } else {\n      className += data.className || `pswp__${data.name}`;\n    }\n\n    let tagName = data.isButton ? data.tagName || 'button' : data.tagName || 'div';\n    tagName =\n    /** @type {keyof HTMLElementTagNameMap} */\n    tagName.toLowerCase();\n    /** @type {HTMLElement} */\n\n    const element = createElement(className, tagName);\n\n    if (data.isButton) {\n      if (tagName === 'button') {\n        /** @type {HTMLButtonElement} */\n        element.type = 'button';\n      }\n\n      let {\n        title\n      } = data;\n      const {\n        ariaLabel\n      } = data; // @ts-expect-error lookup only by `data.name` maybe?\n\n      if (typeof pswp.options[name + 'Title'] === 'string') {\n        // @ts-expect-error lookup only by `data.name` maybe?\n        title = pswp.options[name + 'Title'];\n      }\n\n      if (title) {\n        element.title = title;\n      }\n\n      const ariaText = ariaLabel || title;\n\n      if (ariaText) {\n        element.setAttribute('aria-label', ariaText);\n      }\n    }\n\n    element.innerHTML = addElementHTML(elementHTML);\n\n    if (data.onInit) {\n      data.onInit(element, pswp);\n    }\n\n    if (data.onClick) {\n      element.onclick = e => {\n        if (typeof data.onClick === 'string') {\n          // @ts-ignore\n          pswp[data.onClick]();\n        } else if (typeof data.onClick === 'function') {\n          data.onClick(e, element, pswp);\n        }\n      };\n    } // Top bar is default position\n\n\n    const appendTo = data.appendTo || 'bar';\n    /** @type {HTMLElement | undefined} root element by default */\n\n    let container = pswp.element;\n\n    if (appendTo === 'bar') {\n      if (!pswp.topBar) {\n        pswp.topBar = createElement('pswp__top-bar pswp__hide-on-close', 'div', pswp.scrollWrap);\n      }\n\n      container = pswp.topBar;\n    } else {\n      // element outside of top bar gets a secondary class\n      // that makes element fade out on close\n      element.classList.add('pswp__hide-on-close');\n\n      if (appendTo === 'wrapper') {\n        container = pswp.scrollWrap;\n      }\n    }\n\n    (_container = container) === null || _container === void 0 || _container.appendChild(pswp.applyFilters('uiElement', element, data));\n  }\n\n}\n\n/*\r\n  Backward and forward arrow buttons\r\n */\n\n/** @typedef {import('./ui-element.js').UIElementData} UIElementData */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/**\r\n *\r\n * @param {HTMLElement} element\r\n * @param {PhotoSwipe} pswp\r\n * @param {boolean} [isNextButton]\r\n */\nfunction initArrowButton(element, pswp, isNextButton) {\n  element.classList.add('pswp__button--arrow'); // TODO: this should point to a unique id for this instance\n\n  element.setAttribute('aria-controls', 'pswp__items');\n  pswp.on('change', () => {\n    if (!pswp.options.loop) {\n      if (isNextButton) {\n        /** @type {HTMLButtonElement} */\n        element.disabled = !(pswp.currIndex < pswp.getNumItems() - 1);\n      } else {\n        /** @type {HTMLButtonElement} */\n        element.disabled = !(pswp.currIndex > 0);\n      }\n    }\n  });\n}\n/** @type {UIElementData} */\n\n\nconst arrowPrev = {\n  name: 'arrowPrev',\n  className: 'pswp__button--arrow--prev',\n  title: 'Previous',\n  order: 10,\n  isButton: true,\n  appendTo: 'wrapper',\n  html: {\n    isCustomSVG: true,\n    size: 60,\n    inner: '<path d=\"M29 43l-3 3-16-16 16-16 3 3-13 13 13 13z\" id=\"pswp__icn-arrow\"/>',\n    outlineID: 'pswp__icn-arrow'\n  },\n  onClick: 'prev',\n  onInit: initArrowButton\n};\n/** @type {UIElementData} */\n\nconst arrowNext = {\n  name: 'arrowNext',\n  className: 'pswp__button--arrow--next',\n  title: 'Next',\n  order: 11,\n  isButton: true,\n  appendTo: 'wrapper',\n  html: {\n    isCustomSVG: true,\n    size: 60,\n    inner: '<use xlink:href=\"#pswp__icn-arrow\"/>',\n    outlineID: 'pswp__icn-arrow'\n  },\n  onClick: 'next',\n  onInit: (el, pswp) => {\n    initArrowButton(el, pswp, true);\n  }\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst closeButton = {\n  name: 'close',\n  title: 'Close',\n  order: 20,\n  isButton: true,\n  html: {\n    isCustomSVG: true,\n    inner: '<path d=\"M24 10l-2-2-6 6-6-6-2 2 6 6-6 6 2 2 6-6 6 6 2-2-6-6z\" id=\"pswp__icn-close\"/>',\n    outlineID: 'pswp__icn-close'\n  },\n  onClick: 'close'\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst zoomButton = {\n  name: 'zoom',\n  title: 'Zoom',\n  order: 10,\n  isButton: true,\n  html: {\n    isCustomSVG: true,\n    // eslint-disable-next-line max-len\n    inner: '<path d=\"M17.426 19.926a6 6 0 1 1 1.5-1.5L23 22.5 21.5 24l-4.074-4.074z\" id=\"pswp__icn-zoom\"/>' + '<path fill=\"currentColor\" class=\"pswp__zoom-icn-bar-h\" d=\"M11 16v-2h6v2z\"/>' + '<path fill=\"currentColor\" class=\"pswp__zoom-icn-bar-v\" d=\"M13 12h2v6h-2z\"/>',\n    outlineID: 'pswp__icn-zoom'\n  },\n  onClick: 'toggleZoom'\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst loadingIndicator = {\n  name: 'preloader',\n  appendTo: 'bar',\n  order: 7,\n  html: {\n    isCustomSVG: true,\n    // eslint-disable-next-line max-len\n    inner: '<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.2 16a5.2 5.2 0 1 1-5.2-5.2V8a8 8 0 1 0 8 8h-2.8Z\" id=\"pswp__icn-loading\"/>',\n    outlineID: 'pswp__icn-loading'\n  },\n  onInit: (indicatorElement, pswp) => {\n    /** @type {boolean | undefined} */\n    let isVisible;\n    /** @type {NodeJS.Timeout | null} */\n\n    let delayTimeout = null;\n    /**\r\n     * @param {string} className\r\n     * @param {boolean} add\r\n     */\n\n    const toggleIndicatorClass = (className, add) => {\n      indicatorElement.classList.toggle('pswp__preloader--' + className, add);\n    };\n    /**\r\n     * @param {boolean} visible\r\n     */\n\n\n    const setIndicatorVisibility = visible => {\n      if (isVisible !== visible) {\n        isVisible = visible;\n        toggleIndicatorClass('active', visible);\n      }\n    };\n\n    const updatePreloaderVisibility = () => {\n      var _pswp$currSlide;\n\n      if (!((_pswp$currSlide = pswp.currSlide) !== null && _pswp$currSlide !== void 0 && _pswp$currSlide.content.isLoading())) {\n        setIndicatorVisibility(false);\n\n        if (delayTimeout) {\n          clearTimeout(delayTimeout);\n          delayTimeout = null;\n        }\n\n        return;\n      }\n\n      if (!delayTimeout) {\n        // display loading indicator with delay\n        delayTimeout = setTimeout(() => {\n          var _pswp$currSlide2;\n\n          setIndicatorVisibility(Boolean((_pswp$currSlide2 = pswp.currSlide) === null || _pswp$currSlide2 === void 0 ? void 0 : _pswp$currSlide2.content.isLoading()));\n          delayTimeout = null;\n        }, pswp.options.preloaderDelay);\n      }\n    };\n\n    pswp.on('change', updatePreloaderVisibility);\n    pswp.on('loadComplete', e => {\n      if (pswp.currSlide === e.slide) {\n        updatePreloaderVisibility();\n      }\n    }); // expose the method\n\n    if (pswp.ui) {\n      pswp.ui.updatePreloaderVisibility = updatePreloaderVisibility;\n    }\n  }\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst counterIndicator = {\n  name: 'counter',\n  order: 5,\n  onInit: (counterElement, pswp) => {\n    pswp.on('change', () => {\n      counterElement.innerText = pswp.currIndex + 1 + pswp.options.indexIndicatorSep + pswp.getNumItems();\n    });\n  }\n};\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('./ui-element.js').UIElementData} UIElementData */\n\n/**\r\n * Set special class on element when image is zoomed.\r\n *\r\n * By default, it is used to adjust\r\n * zoom icon and zoom cursor via CSS.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {boolean} isZoomedIn\r\n */\n\nfunction setZoomedIn(el, isZoomedIn) {\n  el.classList.toggle('pswp--zoomed-in', isZoomedIn);\n}\n\nclass UI {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    this.isRegistered = false;\n    /** @type {UIElementData[]} */\n\n    this.uiElementsData = [];\n    /** @type {(UIElement | UIElementData)[]} */\n\n    this.items = [];\n    /** @type {() => void} */\n\n    this.updatePreloaderVisibility = () => {};\n    /**\r\n     * @private\r\n     * @type {number | undefined}\r\n     */\n\n\n    this._lastUpdatedZoomLevel = undefined;\n  }\n\n  init() {\n    const {\n      pswp\n    } = this;\n    this.isRegistered = false;\n    this.uiElementsData = [closeButton, arrowPrev, arrowNext, zoomButton, loadingIndicator, counterIndicator];\n    pswp.dispatch('uiRegister'); // sort by order\n\n    this.uiElementsData.sort((a, b) => {\n      // default order is 0\n      return (a.order || 0) - (b.order || 0);\n    });\n    this.items = [];\n    this.isRegistered = true;\n    this.uiElementsData.forEach(uiElementData => {\n      this.registerElement(uiElementData);\n    });\n    pswp.on('change', () => {\n      var _pswp$element;\n\n      (_pswp$element = pswp.element) === null || _pswp$element === void 0 || _pswp$element.classList.toggle('pswp--one-slide', pswp.getNumItems() === 1);\n    });\n    pswp.on('zoomPanUpdate', () => this._onZoomPanUpdate());\n  }\n  /**\r\n   * @param {UIElementData} elementData\r\n   */\n\n\n  registerElement(elementData) {\n    if (this.isRegistered) {\n      this.items.push(new UIElement(this.pswp, elementData));\n    } else {\n      this.uiElementsData.push(elementData);\n    }\n  }\n  /**\r\n   * Fired each time zoom or pan position is changed.\r\n   * Update classes that control visibility of zoom button and cursor icon.\r\n   *\r\n   * @private\r\n   */\n\n\n  _onZoomPanUpdate() {\n    const {\n      template,\n      currSlide,\n      options\n    } = this.pswp;\n\n    if (this.pswp.opener.isClosing || !template || !currSlide) {\n      return;\n    }\n\n    let {\n      currZoomLevel\n    } = currSlide; // if not open yet - check against initial zoom level\n\n    if (!this.pswp.opener.isOpen) {\n      currZoomLevel = currSlide.zoomLevels.initial;\n    }\n\n    if (currZoomLevel === this._lastUpdatedZoomLevel) {\n      return;\n    }\n\n    this._lastUpdatedZoomLevel = currZoomLevel;\n    const currZoomLevelDiff = currSlide.zoomLevels.initial - currSlide.zoomLevels.secondary; // Initial and secondary zoom levels are almost equal\n\n    if (Math.abs(currZoomLevelDiff) < 0.01 || !currSlide.isZoomable()) {\n      // disable zoom\n      setZoomedIn(template, false);\n      template.classList.remove('pswp--zoom-allowed');\n      return;\n    }\n\n    template.classList.add('pswp--zoom-allowed');\n    const potentialZoomLevel = currZoomLevel === currSlide.zoomLevels.initial ? currSlide.zoomLevels.secondary : currSlide.zoomLevels.initial;\n    setZoomedIn(template, potentialZoomLevel <= currZoomLevel);\n\n    if (options.imageClickAction === 'zoom' || options.imageClickAction === 'zoom-or-close') {\n      template.classList.add('pswp--click-to-zoom');\n    }\n  }\n\n}\n\n/** @typedef {import('./slide.js').SlideData} SlideData */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {{ x: number; y: number; w: number; innerRect?: { w: number; h: number; x: number; y: number } }} Bounds */\n\n/**\r\n * @param {HTMLElement} el\r\n * @returns Bounds\r\n */\nfunction getBoundsByElement(el) {\n  const thumbAreaRect = el.getBoundingClientRect();\n  return {\n    x: thumbAreaRect.left,\n    y: thumbAreaRect.top,\n    w: thumbAreaRect.width\n  };\n}\n/**\r\n * @param {HTMLElement} el\r\n * @param {number} imageWidth\r\n * @param {number} imageHeight\r\n * @returns Bounds\r\n */\n\n\nfunction getCroppedBoundsByElement(el, imageWidth, imageHeight) {\n  const thumbAreaRect = el.getBoundingClientRect(); // fill image into the area\n  // (do they same as object-fit:cover does to retrieve coordinates)\n\n  const hRatio = thumbAreaRect.width / imageWidth;\n  const vRatio = thumbAreaRect.height / imageHeight;\n  const fillZoomLevel = hRatio > vRatio ? hRatio : vRatio;\n  const offsetX = (thumbAreaRect.width - imageWidth * fillZoomLevel) / 2;\n  const offsetY = (thumbAreaRect.height - imageHeight * fillZoomLevel) / 2;\n  /**\r\n   * Coordinates of the image,\r\n   * as if it was not cropped,\r\n   * height is calculated automatically\r\n   *\r\n   * @type {Bounds}\r\n   */\n\n  const bounds = {\n    x: thumbAreaRect.left + offsetX,\n    y: thumbAreaRect.top + offsetY,\n    w: imageWidth * fillZoomLevel\n  }; // Coordinates of inner crop area\n  // relative to the image\n\n  bounds.innerRect = {\n    w: thumbAreaRect.width,\n    h: thumbAreaRect.height,\n    x: offsetX,\n    y: offsetY\n  };\n  return bounds;\n}\n/**\r\n * Get dimensions of thumbnail image\r\n * (click on which opens photoswipe or closes photoswipe to)\r\n *\r\n * @param {number} index\r\n * @param {SlideData} itemData\r\n * @param {PhotoSwipe} instance PhotoSwipe instance\r\n * @returns {Bounds | undefined}\r\n */\n\n\nfunction getThumbBounds(index, itemData, instance) {\n  // legacy event, before filters were introduced\n  const event = instance.dispatch('thumbBounds', {\n    index,\n    itemData,\n    instance\n  }); // @ts-expect-error\n\n  if (event.thumbBounds) {\n    // @ts-expect-error\n    return event.thumbBounds;\n  }\n\n  const {\n    element\n  } = itemData;\n  /** @type {Bounds | undefined} */\n\n  let thumbBounds;\n  /** @type {HTMLElement | null | undefined} */\n\n  let thumbnail;\n\n  if (element && instance.options.thumbSelector !== false) {\n    const thumbSelector = instance.options.thumbSelector || 'img';\n    thumbnail = element.matches(thumbSelector) ? element :\n    /** @type {HTMLElement | null} */\n    element.querySelector(thumbSelector);\n  }\n\n  thumbnail = instance.applyFilters('thumbEl', thumbnail, itemData, index);\n\n  if (thumbnail) {\n    if (!itemData.thumbCropped) {\n      thumbBounds = getBoundsByElement(thumbnail);\n    } else {\n      thumbBounds = getCroppedBoundsByElement(thumbnail, itemData.width || itemData.w || 0, itemData.height || itemData.h || 0);\n    }\n  }\n\n  return instance.applyFilters('thumbBounds', thumbBounds, itemData, index);\n}\n\n/** @typedef {import('../lightbox/lightbox.js').default} PhotoSwipeLightbox */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../photoswipe.js').DataSource} DataSource */\n\n/** @typedef {import('../ui/ui-element.js').UIElementData} UIElementData */\n\n/** @typedef {import('../slide/content.js').default} ContentDefault */\n\n/** @typedef {import('../slide/slide.js').default} Slide */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/** @typedef {import('../slide/zoom-level.js').default} ZoomLevel */\n\n/** @typedef {import('../slide/get-thumb-bounds.js').Bounds} Bounds */\n\n/**\r\n * Allow adding an arbitrary props to the Content\r\n * https://photoswipe.com/custom-content/#using-webp-image-format\r\n * @typedef {ContentDefault & Record<string, any>} Content\r\n */\n\n/** @typedef {{ x?: number; y?: number }} Point */\n\n/**\r\n * @typedef {Object} PhotoSwipeEventsMap https://photoswipe.com/events/\r\n *\r\n *\r\n * https://photoswipe.com/adding-ui-elements/\r\n *\r\n * @prop {undefined} uiRegister\r\n * @prop {{ data: UIElementData }} uiElementCreate\r\n *\r\n *\r\n * https://photoswipe.com/events/#initialization-events\r\n *\r\n * @prop {undefined} beforeOpen\r\n * @prop {undefined} firstUpdate\r\n * @prop {undefined} initialLayout\r\n * @prop {undefined} change\r\n * @prop {undefined} afterInit\r\n * @prop {undefined} bindEvents\r\n *\r\n *\r\n * https://photoswipe.com/events/#opening-or-closing-transition-events\r\n *\r\n * @prop {undefined} openingAnimationStart\r\n * @prop {undefined} openingAnimationEnd\r\n * @prop {undefined} closingAnimationStart\r\n * @prop {undefined} closingAnimationEnd\r\n *\r\n *\r\n * https://photoswipe.com/events/#closing-events\r\n *\r\n * @prop {undefined} close\r\n * @prop {undefined} destroy\r\n *\r\n *\r\n * https://photoswipe.com/events/#pointer-and-gesture-events\r\n *\r\n * @prop {{ originalEvent: PointerEvent }} pointerDown\r\n * @prop {{ originalEvent: PointerEvent }} pointerMove\r\n * @prop {{ originalEvent: PointerEvent }} pointerUp\r\n * @prop {{ bgOpacity: number }} pinchClose can be default prevented\r\n * @prop {{ panY: number }} verticalDrag can be default prevented\r\n *\r\n *\r\n * https://photoswipe.com/events/#slide-content-events\r\n *\r\n * @prop {{ content: Content }} contentInit\r\n * @prop {{ content: Content; isLazy: boolean }} contentLoad can be default prevented\r\n * @prop {{ content: Content; isLazy: boolean }} contentLoadImage can be default prevented\r\n * @prop {{ content: Content; slide: Slide; isError?: boolean }} loadComplete\r\n * @prop {{ content: Content; slide: Slide }} loadError\r\n * @prop {{ content: Content; width: number; height: number }} contentResize can be default prevented\r\n * @prop {{ content: Content; width: number; height: number; slide: Slide }} imageSizeChange\r\n * @prop {{ content: Content }} contentLazyLoad can be default prevented\r\n * @prop {{ content: Content }} contentAppend can be default prevented\r\n * @prop {{ content: Content }} contentActivate can be default prevented\r\n * @prop {{ content: Content }} contentDeactivate can be default prevented\r\n * @prop {{ content: Content }} contentRemove can be default prevented\r\n * @prop {{ content: Content }} contentDestroy can be default prevented\r\n *\r\n *\r\n * undocumented\r\n *\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} imageClickAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} bgClickAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} tapAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} doubleTapAction can be default prevented\r\n *\r\n * @prop {{ originalEvent: KeyboardEvent }} keydown can be default prevented\r\n * @prop {{ x: number; dragging: boolean }} moveMainScroll\r\n * @prop {{ slide: Slide }} firstZoomPan\r\n * @prop {{ slide: Slide | undefined, data: SlideData, index: number }} gettingData\r\n * @prop {undefined} beforeResize\r\n * @prop {undefined} resize\r\n * @prop {undefined} viewportSize\r\n * @prop {undefined} updateScrollOffset\r\n * @prop {{ slide: Slide }} slideInit\r\n * @prop {{ slide: Slide }} afterSetContent\r\n * @prop {{ slide: Slide }} slideLoad\r\n * @prop {{ slide: Slide }} appendHeavy can be default prevented\r\n * @prop {{ slide: Slide }} appendHeavyContent\r\n * @prop {{ slide: Slide }} slideActivate\r\n * @prop {{ slide: Slide }} slideDeactivate\r\n * @prop {{ slide: Slide }} slideDestroy\r\n * @prop {{ destZoomLevel: number, centerPoint: Point | undefined, transitionDuration: number | false | undefined }} beforeZoomTo\r\n * @prop {{ slide: Slide }} zoomPanUpdate\r\n * @prop {{ slide: Slide }} initialZoomPan\r\n * @prop {{ slide: Slide }} calcSlideSize\r\n * @prop {undefined} resolutionChanged\r\n * @prop {{ originalEvent: WheelEvent }} wheel can be default prevented\r\n * @prop {{ content: Content }} contentAppendImage can be default prevented\r\n * @prop {{ index: number; itemData: SlideData }} lazyLoadSlide can be default prevented\r\n * @prop {undefined} lazyLoad\r\n * @prop {{ slide: Slide }} calcBounds\r\n * @prop {{ zoomLevels: ZoomLevel, slideData: SlideData }} zoomLevelsUpdate\r\n *\r\n *\r\n * legacy\r\n *\r\n * @prop {undefined} init\r\n * @prop {undefined} initialZoomIn\r\n * @prop {undefined} initialZoomOut\r\n * @prop {undefined} initialZoomInEnd\r\n * @prop {undefined} initialZoomOutEnd\r\n * @prop {{ dataSource: DataSource | undefined, numItems: number }} numItems\r\n * @prop {{ itemData: SlideData; index: number }} itemData\r\n * @prop {{ index: number, itemData: SlideData, instance: PhotoSwipe }} thumbBounds\r\n */\n\n/**\r\n * @typedef {Object} PhotoSwipeFiltersMap https://photoswipe.com/filters/\r\n *\r\n * @prop {(numItems: number, dataSource: DataSource | undefined) => number} numItems\r\n * Modify the total amount of slides. Example on Data sources page.\r\n * https://photoswipe.com/filters/#numitems\r\n *\r\n * @prop {(itemData: SlideData, index: number) => SlideData} itemData\r\n * Modify slide item data. Example on Data sources page.\r\n * https://photoswipe.com/filters/#itemdata\r\n *\r\n * @prop {(itemData: SlideData, element: HTMLElement, linkEl: HTMLAnchorElement) => SlideData} domItemData\r\n * Modify item data when it's parsed from DOM element. Example on Data sources page.\r\n * https://photoswipe.com/filters/#domitemdata\r\n *\r\n * @prop {(clickedIndex: number, e: MouseEvent, instance: PhotoSwipeLightbox) => number} clickedIndex\r\n * Modify clicked gallery item index.\r\n * https://photoswipe.com/filters/#clickedindex\r\n *\r\n * @prop {(placeholderSrc: string | false, content: Content) => string | false} placeholderSrc\r\n * Modify placeholder image source.\r\n * https://photoswipe.com/filters/#placeholdersrc\r\n *\r\n * @prop {(isContentLoading: boolean, content: Content) => boolean} isContentLoading\r\n * Modify if the content is currently loading.\r\n * https://photoswipe.com/filters/#iscontentloading\r\n *\r\n * @prop {(isContentZoomable: boolean, content: Content) => boolean} isContentZoomable\r\n * Modify if the content can be zoomed.\r\n * https://photoswipe.com/filters/#iscontentzoomable\r\n *\r\n * @prop {(useContentPlaceholder: boolean, content: Content) => boolean} useContentPlaceholder\r\n * Modify if the placeholder should be used for the content.\r\n * https://photoswipe.com/filters/#usecontentplaceholder\r\n *\r\n * @prop {(isKeepingPlaceholder: boolean, content: Content) => boolean} isKeepingPlaceholder\r\n * Modify if the placeholder should be kept after the content is loaded.\r\n * https://photoswipe.com/filters/#iskeepingplaceholder\r\n *\r\n *\r\n * @prop {(contentErrorElement: HTMLElement, content: Content) => HTMLElement} contentErrorElement\r\n * Modify an element when the content has error state (for example, if image cannot be loaded).\r\n * https://photoswipe.com/filters/#contenterrorelement\r\n *\r\n * @prop {(element: HTMLElement, data: UIElementData) => HTMLElement} uiElement\r\n * Modify a UI element that's being created.\r\n * https://photoswipe.com/filters/#uielement\r\n *\r\n * @prop {(thumbnail: HTMLElement | null | undefined, itemData: SlideData, index: number) => HTMLElement} thumbEl\r\n * Modify the thumbnail element from which opening zoom animation starts or ends.\r\n * https://photoswipe.com/filters/#thumbel\r\n *\r\n * @prop {(thumbBounds: Bounds | undefined, itemData: SlideData, index: number) => Bounds} thumbBounds\r\n * Modify the thumbnail bounds from which opening zoom animation starts or ends.\r\n * https://photoswipe.com/filters/#thumbbounds\r\n *\r\n * @prop {(srcsetSizesWidth: number, content: Content) => number} srcsetSizesWidth\r\n *\r\n * @prop {(preventPointerEvent: boolean, event: PointerEvent, pointerType: string) => boolean} preventPointerEvent\r\n *\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeFiltersMap} T\r\n * @typedef {{ fn: PhotoSwipeFiltersMap[T], priority: number }} Filter\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {PhotoSwipeEventsMap[T] extends undefined ? PhotoSwipeEvent<T> : PhotoSwipeEvent<T> & PhotoSwipeEventsMap[T]} AugmentedEvent\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {(event: AugmentedEvent<T>) => void} EventCallback\r\n */\n\n/**\r\n * Base PhotoSwipe event object\r\n *\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n */\nclass PhotoSwipeEvent {\n  /**\r\n   * @param {T} type\r\n   * @param {PhotoSwipeEventsMap[T]} [details]\r\n   */\n  constructor(type, details) {\n    this.type = type;\n    this.defaultPrevented = false;\n\n    if (details) {\n      Object.assign(this, details);\n    }\n  }\n\n  preventDefault() {\n    this.defaultPrevented = true;\n  }\n\n}\n/**\r\n * PhotoSwipe base class that can listen and dispatch for events.\r\n * Shared by PhotoSwipe Core and PhotoSwipe Lightbox, extended by base.js\r\n */\n\n\nclass Eventable {\n  constructor() {\n    /**\r\n     * @type {{ [T in keyof PhotoSwipeEventsMap]?: ((event: AugmentedEvent<T>) => void)[] }}\r\n     */\n    this._listeners = {};\n    /**\r\n     * @type {{ [T in keyof PhotoSwipeFiltersMap]?: Filter<T>[] }}\r\n     */\n\n    this._filters = {};\n    /** @type {PhotoSwipe | undefined} */\n\n    this.pswp = undefined;\n    /** @type {PhotoSwipeOptions | undefined} */\n\n    this.options = undefined;\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeFiltersMap[T]} fn\r\n   * @param {number} priority\r\n   */\n\n\n  addFilter(name, fn, priority = 100) {\n    var _this$_filters$name, _this$_filters$name2, _this$pswp;\n\n    if (!this._filters[name]) {\n      this._filters[name] = [];\n    }\n\n    (_this$_filters$name = this._filters[name]) === null || _this$_filters$name === void 0 || _this$_filters$name.push({\n      fn,\n      priority\n    });\n    (_this$_filters$name2 = this._filters[name]) === null || _this$_filters$name2 === void 0 || _this$_filters$name2.sort((f1, f2) => f1.priority - f2.priority);\n    (_this$pswp = this.pswp) === null || _this$pswp === void 0 || _this$pswp.addFilter(name, fn, priority);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeFiltersMap[T]} fn\r\n   */\n\n\n  removeFilter(name, fn) {\n    if (this._filters[name]) {\n      // @ts-expect-error\n      this._filters[name] = this._filters[name].filter(filter => filter.fn !== fn);\n    }\n\n    if (this.pswp) {\n      this.pswp.removeFilter(name, fn);\n    }\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {Parameters<PhotoSwipeFiltersMap[T]>} args\r\n   * @returns {Parameters<PhotoSwipeFiltersMap[T]>[0]}\r\n   */\n\n\n  applyFilters(name, ...args) {\n    var _this$_filters$name3;\n\n    (_this$_filters$name3 = this._filters[name]) === null || _this$_filters$name3 === void 0 || _this$_filters$name3.forEach(filter => {\n      // @ts-expect-error\n      args[0] = filter.fn.apply(this, args);\n    });\n    return args[0];\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {EventCallback<T>} fn\r\n   */\n\n\n  on(name, fn) {\n    var _this$_listeners$name, _this$pswp2;\n\n    if (!this._listeners[name]) {\n      this._listeners[name] = [];\n    }\n\n    (_this$_listeners$name = this._listeners[name]) === null || _this$_listeners$name === void 0 || _this$_listeners$name.push(fn); // When binding events to lightbox,\n    // also bind events to PhotoSwipe Core,\n    // if it's open.\n\n    (_this$pswp2 = this.pswp) === null || _this$pswp2 === void 0 || _this$pswp2.on(name, fn);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {EventCallback<T>} fn\r\n   */\n\n\n  off(name, fn) {\n    var _this$pswp3;\n\n    if (this._listeners[name]) {\n      // @ts-expect-error\n      this._listeners[name] = this._listeners[name].filter(listener => fn !== listener);\n    }\n\n    (_this$pswp3 = this.pswp) === null || _this$pswp3 === void 0 || _this$pswp3.off(name, fn);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeEventsMap[T]} [details]\r\n   * @returns {AugmentedEvent<T>}\r\n   */\n\n\n  dispatch(name, details) {\n    var _this$_listeners$name2;\n\n    if (this.pswp) {\n      return this.pswp.dispatch(name, details);\n    }\n\n    const event =\n    /** @type {AugmentedEvent<T>} */\n    new PhotoSwipeEvent(name, details);\n    (_this$_listeners$name2 = this._listeners[name]) === null || _this$_listeners$name2 === void 0 || _this$_listeners$name2.forEach(listener => {\n      listener.call(this, event);\n    });\n    return event;\n  }\n\n}\n\nclass Placeholder {\n  /**\r\n   * @param {string | false} imageSrc\r\n   * @param {HTMLElement} container\r\n   */\n  constructor(imageSrc, container) {\n    // Create placeholder\n    // (stretched thumbnail or simple div behind the main image)\n\n    /** @type {HTMLImageElement | HTMLDivElement | null} */\n    this.element = createElement('pswp__img pswp__img--placeholder', imageSrc ? 'img' : 'div', container);\n\n    if (imageSrc) {\n      const imgEl =\n      /** @type {HTMLImageElement} */\n      this.element;\n      imgEl.decoding = 'async';\n      imgEl.alt = '';\n      imgEl.src = imageSrc;\n      imgEl.setAttribute('role', 'presentation');\n    }\n\n    this.element.setAttribute('aria-hidden', 'true');\n  }\n  /**\r\n   * @param {number} width\r\n   * @param {number} height\r\n   */\n\n\n  setDisplayedSize(width, height) {\n    if (!this.element) {\n      return;\n    }\n\n    if (this.element.tagName === 'IMG') {\n      // Use transform scale() to modify img placeholder size\n      // (instead of changing width/height directly).\n      // This helps with performance, specifically in iOS15 Safari.\n      setWidthHeight(this.element, 250, 'auto');\n      this.element.style.transformOrigin = '0 0';\n      this.element.style.transform = toTransformString(0, 0, width / 250);\n    } else {\n      setWidthHeight(this.element, width, height);\n    }\n  }\n\n  destroy() {\n    var _this$element;\n\n    if ((_this$element = this.element) !== null && _this$element !== void 0 && _this$element.parentNode) {\n      this.element.remove();\n    }\n\n    this.element = null;\n  }\n\n}\n\n/** @typedef {import('./slide.js').default} Slide */\n\n/** @typedef {import('./slide.js').SlideData} SlideData */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../util/util.js').LoadState} LoadState */\n\nclass Content {\n  /**\r\n   * @param {SlideData} itemData Slide data\r\n   * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox instance\r\n   * @param {number} index\r\n   */\n  constructor(itemData, instance, index) {\n    this.instance = instance;\n    this.data = itemData;\n    this.index = index;\n    /** @type {HTMLImageElement | HTMLDivElement | undefined} */\n\n    this.element = undefined;\n    /** @type {Placeholder | undefined} */\n\n    this.placeholder = undefined;\n    /** @type {Slide | undefined} */\n\n    this.slide = undefined;\n    this.displayedImageWidth = 0;\n    this.displayedImageHeight = 0;\n    this.width = Number(this.data.w) || Number(this.data.width) || 0;\n    this.height = Number(this.data.h) || Number(this.data.height) || 0;\n    this.isAttached = false;\n    this.hasSlide = false;\n    this.isDecoding = false;\n    /** @type {LoadState} */\n\n    this.state = LOAD_STATE.IDLE;\n\n    if (this.data.type) {\n      this.type = this.data.type;\n    } else if (this.data.src) {\n      this.type = 'image';\n    } else {\n      this.type = 'html';\n    }\n\n    this.instance.dispatch('contentInit', {\n      content: this\n    });\n  }\n\n  removePlaceholder() {\n    if (this.placeholder && !this.keepPlaceholder()) {\n      // With delay, as image might be loaded, but not rendered\n      setTimeout(() => {\n        if (this.placeholder) {\n          this.placeholder.destroy();\n          this.placeholder = undefined;\n        }\n      }, 1000);\n    }\n  }\n  /**\r\n   * Preload content\r\n   *\r\n   * @param {boolean} isLazy\r\n   * @param {boolean} [reload]\r\n   */\n\n\n  load(isLazy, reload) {\n    if (this.slide && this.usePlaceholder()) {\n      if (!this.placeholder) {\n        const placeholderSrc = this.instance.applyFilters('placeholderSrc', // use  image-based placeholder only for the first slide,\n        // as rendering (even small stretched thumbnail) is an expensive operation\n        this.data.msrc && this.slide.isFirstSlide ? this.data.msrc : false, this);\n        this.placeholder = new Placeholder(placeholderSrc, this.slide.container);\n      } else {\n        const placeholderEl = this.placeholder.element; // Add placeholder to DOM if it was already created\n\n        if (placeholderEl && !placeholderEl.parentElement) {\n          this.slide.container.prepend(placeholderEl);\n        }\n      }\n    }\n\n    if (this.element && !reload) {\n      return;\n    }\n\n    if (this.instance.dispatch('contentLoad', {\n      content: this,\n      isLazy\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this.isImageContent()) {\n      this.element = createElement('pswp__img', 'img'); // Start loading only after width is defined, as sizes might depend on it.\n      // Due to Safari feature, we must define sizes before srcset.\n\n      if (this.displayedImageWidth) {\n        this.loadImage(isLazy);\n      }\n    } else {\n      this.element = createElement('pswp__content', 'div');\n      this.element.innerHTML = this.data.html || '';\n    }\n\n    if (reload && this.slide) {\n      this.slide.updateContentSize(true);\n    }\n  }\n  /**\r\n   * Preload image\r\n   *\r\n   * @param {boolean} isLazy\r\n   */\n\n\n  loadImage(isLazy) {\n    var _this$data$src, _this$data$alt;\n\n    if (!this.isImageContent() || !this.element || this.instance.dispatch('contentLoadImage', {\n      content: this,\n      isLazy\n    }).defaultPrevented) {\n      return;\n    }\n\n    const imageElement =\n    /** @type HTMLImageElement */\n    this.element;\n    this.updateSrcsetSizes();\n\n    if (this.data.srcset) {\n      imageElement.srcset = this.data.srcset;\n    }\n\n    imageElement.src = (_this$data$src = this.data.src) !== null && _this$data$src !== void 0 ? _this$data$src : '';\n    imageElement.alt = (_this$data$alt = this.data.alt) !== null && _this$data$alt !== void 0 ? _this$data$alt : '';\n    this.state = LOAD_STATE.LOADING;\n\n    if (imageElement.complete) {\n      this.onLoaded();\n    } else {\n      imageElement.onload = () => {\n        this.onLoaded();\n      };\n\n      imageElement.onerror = () => {\n        this.onError();\n      };\n    }\n  }\n  /**\r\n   * Assign slide to content\r\n   *\r\n   * @param {Slide} slide\r\n   */\n\n\n  setSlide(slide) {\n    this.slide = slide;\n    this.hasSlide = true;\n    this.instance = slide.pswp; // todo: do we need to unset slide?\n  }\n  /**\r\n   * Content load success handler\r\n   */\n\n\n  onLoaded() {\n    this.state = LOAD_STATE.LOADED;\n\n    if (this.slide && this.element) {\n      this.instance.dispatch('loadComplete', {\n        slide: this.slide,\n        content: this\n      }); // if content is reloaded\n\n      if (this.slide.isActive && this.slide.heavyAppended && !this.element.parentNode) {\n        this.append();\n        this.slide.updateContentSize(true);\n      }\n\n      if (this.state === LOAD_STATE.LOADED || this.state === LOAD_STATE.ERROR) {\n        this.removePlaceholder();\n      }\n    }\n  }\n  /**\r\n   * Content load error handler\r\n   */\n\n\n  onError() {\n    this.state = LOAD_STATE.ERROR;\n\n    if (this.slide) {\n      this.displayError();\n      this.instance.dispatch('loadComplete', {\n        slide: this.slide,\n        isError: true,\n        content: this\n      });\n      this.instance.dispatch('loadError', {\n        slide: this.slide,\n        content: this\n      });\n    }\n  }\n  /**\r\n   * @returns {Boolean} If the content is currently loading\r\n   */\n\n\n  isLoading() {\n    return this.instance.applyFilters('isContentLoading', this.state === LOAD_STATE.LOADING, this);\n  }\n  /**\r\n   * @returns {Boolean} If the content is in error state\r\n   */\n\n\n  isError() {\n    return this.state === LOAD_STATE.ERROR;\n  }\n  /**\r\n   * @returns {boolean} If the content is image\r\n   */\n\n\n  isImageContent() {\n    return this.type === 'image';\n  }\n  /**\r\n   * Update content size\r\n   *\r\n   * @param {Number} width\r\n   * @param {Number} height\r\n   */\n\n\n  setDisplayedSize(width, height) {\n    if (!this.element) {\n      return;\n    }\n\n    if (this.placeholder) {\n      this.placeholder.setDisplayedSize(width, height);\n    }\n\n    if (this.instance.dispatch('contentResize', {\n      content: this,\n      width,\n      height\n    }).defaultPrevented) {\n      return;\n    }\n\n    setWidthHeight(this.element, width, height);\n\n    if (this.isImageContent() && !this.isError()) {\n      const isInitialSizeUpdate = !this.displayedImageWidth && width;\n      this.displayedImageWidth = width;\n      this.displayedImageHeight = height;\n\n      if (isInitialSizeUpdate) {\n        this.loadImage(false);\n      } else {\n        this.updateSrcsetSizes();\n      }\n\n      if (this.slide) {\n        this.instance.dispatch('imageSizeChange', {\n          slide: this.slide,\n          width,\n          height,\n          content: this\n        });\n      }\n    }\n  }\n  /**\r\n   * @returns {boolean} If the content can be zoomed\r\n   */\n\n\n  isZoomable() {\n    return this.instance.applyFilters('isContentZoomable', this.isImageContent() && this.state !== LOAD_STATE.ERROR, this);\n  }\n  /**\r\n   * Update image srcset sizes attribute based on width and height\r\n   */\n\n\n  updateSrcsetSizes() {\n    // Handle srcset sizes attribute.\n    //\n    // Never lower quality, if it was increased previously.\n    // Chrome does this automatically, Firefox and Safari do not,\n    // so we store largest used size in dataset.\n    if (!this.isImageContent() || !this.element || !this.data.srcset) {\n      return;\n    }\n\n    const image =\n    /** @type HTMLImageElement */\n    this.element;\n    const sizesWidth = this.instance.applyFilters('srcsetSizesWidth', this.displayedImageWidth, this);\n\n    if (!image.dataset.largestUsedSize || sizesWidth > parseInt(image.dataset.largestUsedSize, 10)) {\n      image.sizes = sizesWidth + 'px';\n      image.dataset.largestUsedSize = String(sizesWidth);\n    }\n  }\n  /**\r\n   * @returns {boolean} If content should use a placeholder (from msrc by default)\r\n   */\n\n\n  usePlaceholder() {\n    return this.instance.applyFilters('useContentPlaceholder', this.isImageContent(), this);\n  }\n  /**\r\n   * Preload content with lazy-loading param\r\n   */\n\n\n  lazyLoad() {\n    if (this.instance.dispatch('contentLazyLoad', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.load(true);\n  }\n  /**\r\n   * @returns {boolean} If placeholder should be kept after content is loaded\r\n   */\n\n\n  keepPlaceholder() {\n    return this.instance.applyFilters('isKeepingPlaceholder', this.isLoading(), this);\n  }\n  /**\r\n   * Destroy the content\r\n   */\n\n\n  destroy() {\n    this.hasSlide = false;\n    this.slide = undefined;\n\n    if (this.instance.dispatch('contentDestroy', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.remove();\n\n    if (this.placeholder) {\n      this.placeholder.destroy();\n      this.placeholder = undefined;\n    }\n\n    if (this.isImageContent() && this.element) {\n      this.element.onload = null;\n      this.element.onerror = null;\n      this.element = undefined;\n    }\n  }\n  /**\r\n   * Display error message\r\n   */\n\n\n  displayError() {\n    if (this.slide) {\n      var _this$instance$option, _this$instance$option2;\n\n      let errorMsgEl = createElement('pswp__error-msg', 'div');\n      errorMsgEl.innerText = (_this$instance$option = (_this$instance$option2 = this.instance.options) === null || _this$instance$option2 === void 0 ? void 0 : _this$instance$option2.errorMsg) !== null && _this$instance$option !== void 0 ? _this$instance$option : '';\n      errorMsgEl =\n      /** @type {HTMLDivElement} */\n      this.instance.applyFilters('contentErrorElement', errorMsgEl, this);\n      this.element = createElement('pswp__content pswp__error-msg-container', 'div');\n      this.element.appendChild(errorMsgEl);\n      this.slide.container.innerText = '';\n      this.slide.container.appendChild(this.element);\n      this.slide.updateContentSize(true);\n      this.removePlaceholder();\n    }\n  }\n  /**\r\n   * Append the content\r\n   */\n\n\n  append() {\n    if (this.isAttached || !this.element) {\n      return;\n    }\n\n    this.isAttached = true;\n\n    if (this.state === LOAD_STATE.ERROR) {\n      this.displayError();\n      return;\n    }\n\n    if (this.instance.dispatch('contentAppend', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    const supportsDecode = ('decode' in this.element);\n\n    if (this.isImageContent()) {\n      // Use decode() on nearby slides\n      //\n      // Nearby slide images are in DOM and not hidden via display:none.\n      // However, they are placed offscreen (to the left and right side).\n      //\n      // Some browsers do not composite the image until it's actually visible,\n      // using decode() helps.\n      //\n      // You might ask \"why dont you just decode() and then append all images\",\n      // that's because I want to show image before it's fully loaded,\n      // as browser can render parts of image while it is loading.\n      // We do not do this in Safari due to partial loading bug.\n      if (supportsDecode && this.slide && (!this.slide.isActive || isSafari())) {\n        this.isDecoding = true; // purposefully using finally instead of then,\n        // as if srcset sizes changes dynamically - it may cause decode error\n\n        /** @type {HTMLImageElement} */\n\n        this.element.decode().catch(() => {}).finally(() => {\n          this.isDecoding = false;\n          this.appendImage();\n        });\n      } else {\n        this.appendImage();\n      }\n    } else if (this.slide && !this.element.parentNode) {\n      this.slide.container.appendChild(this.element);\n    }\n  }\n  /**\r\n   * Activate the slide,\r\n   * active slide is generally the current one,\r\n   * meaning the user can see it.\r\n   */\n\n\n  activate() {\n    if (this.instance.dispatch('contentActivate', {\n      content: this\n    }).defaultPrevented || !this.slide) {\n      return;\n    }\n\n    if (this.isImageContent() && this.isDecoding && !isSafari()) {\n      // add image to slide when it becomes active,\n      // even if it's not finished decoding\n      this.appendImage();\n    } else if (this.isError()) {\n      this.load(false, true); // try to reload\n    }\n\n    if (this.slide.holderElement) {\n      this.slide.holderElement.setAttribute('aria-hidden', 'false');\n    }\n  }\n  /**\r\n   * Deactivate the content\r\n   */\n\n\n  deactivate() {\n    this.instance.dispatch('contentDeactivate', {\n      content: this\n    });\n\n    if (this.slide && this.slide.holderElement) {\n      this.slide.holderElement.setAttribute('aria-hidden', 'true');\n    }\n  }\n  /**\r\n   * Remove the content from DOM\r\n   */\n\n\n  remove() {\n    this.isAttached = false;\n\n    if (this.instance.dispatch('contentRemove', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this.element && this.element.parentNode) {\n      this.element.remove();\n    }\n\n    if (this.placeholder && this.placeholder.element) {\n      this.placeholder.element.remove();\n    }\n  }\n  /**\r\n   * Append the image content to slide container\r\n   */\n\n\n  appendImage() {\n    if (!this.isAttached) {\n      return;\n    }\n\n    if (this.instance.dispatch('contentAppendImage', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    } // ensure that element exists and is not already appended\n\n\n    if (this.slide && this.element && !this.element.parentNode) {\n      this.slide.container.appendChild(this.element);\n    }\n\n    if (this.state === LOAD_STATE.LOADED || this.state === LOAD_STATE.ERROR) {\n      this.removePlaceholder();\n    }\n  }\n\n}\n\n/** @typedef {import('./content.js').default} Content */\n\n/** @typedef {import('./slide.js').default} Slide */\n\n/** @typedef {import('./slide.js').SlideData} SlideData */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\nconst MIN_SLIDES_TO_CACHE = 5;\n/**\r\n * Lazy-load an image\r\n * This function is used both by Lightbox and PhotoSwipe core,\r\n * thus it can be called before dialog is opened.\r\n *\r\n * @param {SlideData} itemData Data about the slide\r\n * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox instance\r\n * @param {number} index\r\n * @returns {Content} Image that is being decoded or false.\r\n */\n\nfunction lazyLoadData(itemData, instance, index) {\n  const content = instance.createContentFromData(itemData, index);\n  /** @type {ZoomLevel | undefined} */\n\n  let zoomLevel;\n  const {\n    options\n  } = instance; // We need to know dimensions of the image to preload it,\n  // as it might use srcset, and we need to define sizes\n\n  if (options) {\n    zoomLevel = new ZoomLevel(options, itemData, -1);\n    let viewportSize;\n\n    if (instance.pswp) {\n      viewportSize = instance.pswp.viewportSize;\n    } else {\n      viewportSize = getViewportSize(options, instance);\n    }\n\n    const panAreaSize = getPanAreaSize(options, viewportSize, itemData, index);\n    zoomLevel.update(content.width, content.height, panAreaSize);\n  }\n\n  content.lazyLoad();\n\n  if (zoomLevel) {\n    content.setDisplayedSize(Math.ceil(content.width * zoomLevel.initial), Math.ceil(content.height * zoomLevel.initial));\n  }\n\n  return content;\n}\n/**\r\n * Lazy-loads specific slide.\r\n * This function is used both by Lightbox and PhotoSwipe core,\r\n * thus it can be called before dialog is opened.\r\n *\r\n * By default, it loads image based on viewport size and initial zoom level.\r\n *\r\n * @param {number} index Slide index\r\n * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox eventable instance\r\n * @returns {Content | undefined}\r\n */\n\nfunction lazyLoadSlide(index, instance) {\n  const itemData = instance.getItemData(index);\n\n  if (instance.dispatch('lazyLoadSlide', {\n    index,\n    itemData\n  }).defaultPrevented) {\n    return;\n  }\n\n  return lazyLoadData(itemData, instance, index);\n}\n\nclass ContentLoader {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp; // Total amount of cached images\n\n    this.limit = Math.max(pswp.options.preload[0] + pswp.options.preload[1] + 1, MIN_SLIDES_TO_CACHE);\n    /** @type {Content[]} */\n\n    this._cachedItems = [];\n  }\n  /**\r\n   * Lazy load nearby slides based on `preload` option.\r\n   *\r\n   * @param {number} [diff] Difference between slide indexes that was changed recently, or 0.\r\n   */\n\n\n  updateLazy(diff) {\n    const {\n      pswp\n    } = this;\n\n    if (pswp.dispatch('lazyLoad').defaultPrevented) {\n      return;\n    }\n\n    const {\n      preload\n    } = pswp.options;\n    const isForward = diff === undefined ? true : diff >= 0;\n    let i; // preload[1] - num items to preload in forward direction\n\n    for (i = 0; i <= preload[1]; i++) {\n      this.loadSlideByIndex(pswp.currIndex + (isForward ? i : -i));\n    } // preload[0] - num items to preload in backward direction\n\n\n    for (i = 1; i <= preload[0]; i++) {\n      this.loadSlideByIndex(pswp.currIndex + (isForward ? -i : i));\n    }\n  }\n  /**\r\n   * @param {number} initialIndex\r\n   */\n\n\n  loadSlideByIndex(initialIndex) {\n    const index = this.pswp.getLoopedIndex(initialIndex); // try to get cached content\n\n    let content = this.getContentByIndex(index);\n\n    if (!content) {\n      // no cached content, so try to load from scratch:\n      content = lazyLoadSlide(index, this.pswp); // if content can be loaded, add it to cache:\n\n      if (content) {\n        this.addToCache(content);\n      }\n    }\n  }\n  /**\r\n   * @param {Slide} slide\r\n   * @returns {Content}\r\n   */\n\n\n  getContentBySlide(slide) {\n    let content = this.getContentByIndex(slide.index);\n\n    if (!content) {\n      // create content if not found in cache\n      content = this.pswp.createContentFromData(slide.data, slide.index);\n      this.addToCache(content);\n    } // assign slide to content\n\n\n    content.setSlide(slide);\n    return content;\n  }\n  /**\r\n   * @param {Content} content\r\n   */\n\n\n  addToCache(content) {\n    // move to the end of array\n    this.removeByIndex(content.index);\n\n    this._cachedItems.push(content);\n\n    if (this._cachedItems.length > this.limit) {\n      // Destroy the first content that's not attached\n      const indexToRemove = this._cachedItems.findIndex(item => {\n        return !item.isAttached && !item.hasSlide;\n      });\n\n      if (indexToRemove !== -1) {\n        const removedItem = this._cachedItems.splice(indexToRemove, 1)[0];\n\n        removedItem.destroy();\n      }\n    }\n  }\n  /**\r\n   * Removes an image from cache, does not destroy() it, just removes.\r\n   *\r\n   * @param {number} index\r\n   */\n\n\n  removeByIndex(index) {\n    const indexToRemove = this._cachedItems.findIndex(item => item.index === index);\n\n    if (indexToRemove !== -1) {\n      this._cachedItems.splice(indexToRemove, 1);\n    }\n  }\n  /**\r\n   * @param {number} index\r\n   * @returns {Content | undefined}\r\n   */\n\n\n  getContentByIndex(index) {\n    return this._cachedItems.find(content => content.index === index);\n  }\n\n  destroy() {\n    this._cachedItems.forEach(content => content.destroy());\n\n    this._cachedItems = [];\n  }\n\n}\n\n/** @typedef {import(\"../photoswipe.js\").default} PhotoSwipe */\n\n/** @typedef {import(\"../slide/slide.js\").SlideData} SlideData */\n\n/**\r\n * PhotoSwipe base class that can retrieve data about every slide.\r\n * Shared by PhotoSwipe Core and PhotoSwipe Lightbox\r\n */\n\nclass PhotoSwipeBase extends Eventable {\n  /**\r\n   * Get total number of slides\r\n   *\r\n   * @returns {number}\r\n   */\n  getNumItems() {\n    var _this$options;\n\n    let numItems = 0;\n    const dataSource = (_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.dataSource;\n\n    if (dataSource && 'length' in dataSource) {\n      // may be an array or just object with length property\n      numItems = dataSource.length;\n    } else if (dataSource && 'gallery' in dataSource) {\n      // query DOM elements\n      if (!dataSource.items) {\n        dataSource.items = this._getGalleryDOMElements(dataSource.gallery);\n      }\n\n      if (dataSource.items) {\n        numItems = dataSource.items.length;\n      }\n    } // legacy event, before filters were introduced\n\n\n    const event = this.dispatch('numItems', {\n      dataSource,\n      numItems\n    });\n    return this.applyFilters('numItems', event.numItems, dataSource);\n  }\n  /**\r\n   * @param {SlideData} slideData\r\n   * @param {number} index\r\n   * @returns {Content}\r\n   */\n\n\n  createContentFromData(slideData, index) {\n    return new Content(slideData, this, index);\n  }\n  /**\r\n   * Get item data by index.\r\n   *\r\n   * \"item data\" should contain normalized information that PhotoSwipe needs to generate a slide.\r\n   * For example, it may contain properties like\r\n   * `src`, `srcset`, `w`, `h`, which will be used to generate a slide with image.\r\n   *\r\n   * @param {number} index\r\n   * @returns {SlideData}\r\n   */\n\n\n  getItemData(index) {\n    var _this$options2;\n\n    const dataSource = (_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.dataSource;\n    /** @type {SlideData | HTMLElement} */\n\n    let dataSourceItem = {};\n\n    if (Array.isArray(dataSource)) {\n      // Datasource is an array of elements\n      dataSourceItem = dataSource[index];\n    } else if (dataSource && 'gallery' in dataSource) {\n      // dataSource has gallery property,\n      // thus it was created by Lightbox, based on\n      // gallery and children options\n      // query DOM elements\n      if (!dataSource.items) {\n        dataSource.items = this._getGalleryDOMElements(dataSource.gallery);\n      }\n\n      dataSourceItem = dataSource.items[index];\n    }\n\n    let itemData = dataSourceItem;\n\n    if (itemData instanceof Element) {\n      itemData = this._domElementToItemData(itemData);\n    } // Dispatching the itemData event,\n    // it's a legacy verion before filters were introduced\n\n\n    const event = this.dispatch('itemData', {\n      itemData: itemData || {},\n      index\n    });\n    return this.applyFilters('itemData', event.itemData, index);\n  }\n  /**\r\n   * Get array of gallery DOM elements,\r\n   * based on childSelector and gallery element.\r\n   *\r\n   * @param {HTMLElement} galleryElement\r\n   * @returns {HTMLElement[]}\r\n   */\n\n\n  _getGalleryDOMElements(galleryElement) {\n    var _this$options3, _this$options4;\n\n    if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.children || (_this$options4 = this.options) !== null && _this$options4 !== void 0 && _this$options4.childSelector) {\n      return getElementsFromOption(this.options.children, this.options.childSelector, galleryElement) || [];\n    }\n\n    return [galleryElement];\n  }\n  /**\r\n   * Converts DOM element to item data object.\r\n   *\r\n   * @param {HTMLElement} element DOM element\r\n   * @returns {SlideData}\r\n   */\n\n\n  _domElementToItemData(element) {\n    /** @type {SlideData} */\n    const itemData = {\n      element\n    };\n    const linkEl =\n    /** @type {HTMLAnchorElement} */\n    element.tagName === 'A' ? element : element.querySelector('a');\n\n    if (linkEl) {\n      // src comes from data-pswp-src attribute,\n      // if it's empty link href is used\n      itemData.src = linkEl.dataset.pswpSrc || linkEl.href;\n\n      if (linkEl.dataset.pswpSrcset) {\n        itemData.srcset = linkEl.dataset.pswpSrcset;\n      }\n\n      itemData.width = linkEl.dataset.pswpWidth ? parseInt(linkEl.dataset.pswpWidth, 10) : 0;\n      itemData.height = linkEl.dataset.pswpHeight ? parseInt(linkEl.dataset.pswpHeight, 10) : 0; // support legacy w & h properties\n\n      itemData.w = itemData.width;\n      itemData.h = itemData.height;\n\n      if (linkEl.dataset.pswpType) {\n        itemData.type = linkEl.dataset.pswpType;\n      }\n\n      const thumbnailEl = element.querySelector('img');\n\n      if (thumbnailEl) {\n        var _thumbnailEl$getAttri;\n\n        // msrc is URL to placeholder image that's displayed before large image is loaded\n        // by default it's displayed only for the first slide\n        itemData.msrc = thumbnailEl.currentSrc || thumbnailEl.src;\n        itemData.alt = (_thumbnailEl$getAttri = thumbnailEl.getAttribute('alt')) !== null && _thumbnailEl$getAttri !== void 0 ? _thumbnailEl$getAttri : '';\n      }\n\n      if (linkEl.dataset.pswpCropped || linkEl.dataset.cropped) {\n        itemData.thumbCropped = true;\n      }\n    }\n\n    return this.applyFilters('domItemData', itemData, element, linkEl);\n  }\n  /**\r\n   * Lazy-load by slide data\r\n   *\r\n   * @param {SlideData} itemData Data about the slide\r\n   * @param {number} index\r\n   * @returns {Content} Image that is being decoded or false.\r\n   */\n\n\n  lazyLoadData(itemData, index) {\n    return lazyLoadData(itemData, this, index);\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('./slide/get-thumb-bounds.js').Bounds} Bounds */\n\n/** @typedef {import('./util/animations.js').AnimationProps} AnimationProps */\n// some browsers do not paint\n// elements which opacity is set to 0,\n// since we need to pre-render elements for the animation -\n// we set it to the minimum amount\n\nconst MIN_OPACITY = 0.003;\n/**\r\n * Manages opening and closing transitions of the PhotoSwipe.\r\n *\r\n * It can perform zoom, fade or no transition.\r\n */\n\nclass Opener {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    this.isClosed = true;\n    this.isOpen = false;\n    this.isClosing = false;\n    this.isOpening = false;\n    /**\r\n     * @private\r\n     * @type {number | false | undefined}\r\n     */\n\n    this._duration = undefined;\n    /** @private */\n\n    this._useAnimation = false;\n    /** @private */\n\n    this._croppedZoom = false;\n    /** @private */\n\n    this._animateRootOpacity = false;\n    /** @private */\n\n    this._animateBgOpacity = false;\n    /**\r\n     * @private\r\n     * @type { HTMLDivElement | HTMLImageElement | null | undefined }\r\n     */\n\n    this._placeholder = undefined;\n    /**\r\n     * @private\r\n     * @type { HTMLDivElement | undefined }\r\n     */\n\n    this._opacityElement = undefined;\n    /**\r\n     * @private\r\n     * @type { HTMLDivElement | undefined }\r\n     */\n\n    this._cropContainer1 = undefined;\n    /**\r\n     * @private\r\n     * @type { HTMLElement | null | undefined }\r\n     */\n\n    this._cropContainer2 = undefined;\n    /**\r\n     * @private\r\n     * @type {Bounds | undefined}\r\n     */\n\n    this._thumbBounds = undefined;\n    this._prepareOpen = this._prepareOpen.bind(this); // Override initial zoom and pan position\n\n    pswp.on('firstZoomPan', this._prepareOpen);\n  }\n\n  open() {\n    this._prepareOpen();\n\n    this._start();\n  }\n\n  close() {\n    if (this.isClosed || this.isClosing || this.isOpening) {\n      // if we close during opening animation\n      // for now do nothing,\n      // browsers aren't good at changing the direction of the CSS transition\n      return;\n    }\n\n    const slide = this.pswp.currSlide;\n    this.isOpen = false;\n    this.isOpening = false;\n    this.isClosing = true;\n    this._duration = this.pswp.options.hideAnimationDuration;\n\n    if (slide && slide.currZoomLevel * slide.width >= this.pswp.options.maxWidthToAnimate) {\n      this._duration = 0;\n    }\n\n    this._applyStartProps();\n\n    setTimeout(() => {\n      this._start();\n    }, this._croppedZoom ? 30 : 0);\n  }\n  /** @private */\n\n\n  _prepareOpen() {\n    this.pswp.off('firstZoomPan', this._prepareOpen);\n\n    if (!this.isOpening) {\n      const slide = this.pswp.currSlide;\n      this.isOpening = true;\n      this.isClosing = false;\n      this._duration = this.pswp.options.showAnimationDuration;\n\n      if (slide && slide.zoomLevels.initial * slide.width >= this.pswp.options.maxWidthToAnimate) {\n        this._duration = 0;\n      }\n\n      this._applyStartProps();\n    }\n  }\n  /** @private */\n\n\n  _applyStartProps() {\n    const {\n      pswp\n    } = this;\n    const slide = this.pswp.currSlide;\n    const {\n      options\n    } = pswp;\n\n    if (options.showHideAnimationType === 'fade') {\n      options.showHideOpacity = true;\n      this._thumbBounds = undefined;\n    } else if (options.showHideAnimationType === 'none') {\n      options.showHideOpacity = false;\n      this._duration = 0;\n      this._thumbBounds = undefined;\n    } else if (this.isOpening && pswp._initialThumbBounds) {\n      // Use initial bounds if defined\n      this._thumbBounds = pswp._initialThumbBounds;\n    } else {\n      this._thumbBounds = this.pswp.getThumbBounds();\n    }\n\n    this._placeholder = slide === null || slide === void 0 ? void 0 : slide.getPlaceholderElement();\n    pswp.animations.stopAll(); // Discard animations when duration is less than 50ms\n\n    this._useAnimation = Boolean(this._duration && this._duration > 50);\n    this._animateZoom = Boolean(this._thumbBounds) && (slide === null || slide === void 0 ? void 0 : slide.content.usePlaceholder()) && (!this.isClosing || !pswp.mainScroll.isShifted());\n\n    if (!this._animateZoom) {\n      this._animateRootOpacity = true;\n\n      if (this.isOpening && slide) {\n        slide.zoomAndPanToInitial();\n        slide.applyCurrentZoomPan();\n      }\n    } else {\n      var _options$showHideOpac;\n\n      this._animateRootOpacity = (_options$showHideOpac = options.showHideOpacity) !== null && _options$showHideOpac !== void 0 ? _options$showHideOpac : false;\n    }\n\n    this._animateBgOpacity = !this._animateRootOpacity && this.pswp.options.bgOpacity > MIN_OPACITY;\n    this._opacityElement = this._animateRootOpacity ? pswp.element : pswp.bg;\n\n    if (!this._useAnimation) {\n      this._duration = 0;\n      this._animateZoom = false;\n      this._animateBgOpacity = false;\n      this._animateRootOpacity = true;\n\n      if (this.isOpening) {\n        if (pswp.element) {\n          pswp.element.style.opacity = String(MIN_OPACITY);\n        }\n\n        pswp.applyBgOpacity(1);\n      }\n\n      return;\n    }\n\n    if (this._animateZoom && this._thumbBounds && this._thumbBounds.innerRect) {\n      var _this$pswp$currSlide;\n\n      // Properties are used when animation from cropped thumbnail\n      this._croppedZoom = true;\n      this._cropContainer1 = this.pswp.container;\n      this._cropContainer2 = (_this$pswp$currSlide = this.pswp.currSlide) === null || _this$pswp$currSlide === void 0 ? void 0 : _this$pswp$currSlide.holderElement;\n\n      if (pswp.container) {\n        pswp.container.style.overflow = 'hidden';\n        pswp.container.style.width = pswp.viewportSize.x + 'px';\n      }\n    } else {\n      this._croppedZoom = false;\n    }\n\n    if (this.isOpening) {\n      // Apply styles before opening transition\n      if (this._animateRootOpacity) {\n        if (pswp.element) {\n          pswp.element.style.opacity = String(MIN_OPACITY);\n        }\n\n        pswp.applyBgOpacity(1);\n      } else {\n        if (this._animateBgOpacity && pswp.bg) {\n          pswp.bg.style.opacity = String(MIN_OPACITY);\n        }\n\n        if (pswp.element) {\n          pswp.element.style.opacity = '1';\n        }\n      }\n\n      if (this._animateZoom) {\n        this._setClosedStateZoomPan();\n\n        if (this._placeholder) {\n          // tell browser that we plan to animate the placeholder\n          this._placeholder.style.willChange = 'transform'; // hide placeholder to allow hiding of\n          // elements that overlap it (such as icons over the thumbnail)\n\n          this._placeholder.style.opacity = String(MIN_OPACITY);\n        }\n      }\n    } else if (this.isClosing) {\n      // hide nearby slides to make sure that\n      // they are not painted during the transition\n      if (pswp.mainScroll.itemHolders[0]) {\n        pswp.mainScroll.itemHolders[0].el.style.display = 'none';\n      }\n\n      if (pswp.mainScroll.itemHolders[2]) {\n        pswp.mainScroll.itemHolders[2].el.style.display = 'none';\n      }\n\n      if (this._croppedZoom) {\n        if (pswp.mainScroll.x !== 0) {\n          // shift the main scroller to zero position\n          pswp.mainScroll.resetPosition();\n          pswp.mainScroll.resize();\n        }\n      }\n    }\n  }\n  /** @private */\n\n\n  _start() {\n    if (this.isOpening && this._useAnimation && this._placeholder && this._placeholder.tagName === 'IMG') {\n      // To ensure smooth animation\n      // we wait till the current slide image placeholder is decoded,\n      // but no longer than 250ms,\n      // and no shorter than 50ms\n      // (just using requestanimationframe is not enough in Firefox,\n      // for some reason)\n      new Promise(resolve => {\n        let decoded = false;\n        let isDelaying = true;\n        decodeImage(\n        /** @type {HTMLImageElement} */\n        this._placeholder).finally(() => {\n          decoded = true;\n\n          if (!isDelaying) {\n            resolve(true);\n          }\n        });\n        setTimeout(() => {\n          isDelaying = false;\n\n          if (decoded) {\n            resolve(true);\n          }\n        }, 50);\n        setTimeout(resolve, 250);\n      }).finally(() => this._initiate());\n    } else {\n      this._initiate();\n    }\n  }\n  /** @private */\n\n\n  _initiate() {\n    var _this$pswp$element, _this$pswp$element2;\n\n    (_this$pswp$element = this.pswp.element) === null || _this$pswp$element === void 0 || _this$pswp$element.style.setProperty('--pswp-transition-duration', this._duration + 'ms');\n    this.pswp.dispatch(this.isOpening ? 'openingAnimationStart' : 'closingAnimationStart'); // legacy event\n\n    this.pswp.dispatch(\n    /** @type {'initialZoomIn' | 'initialZoomOut'} */\n    'initialZoom' + (this.isOpening ? 'In' : 'Out'));\n    (_this$pswp$element2 = this.pswp.element) === null || _this$pswp$element2 === void 0 || _this$pswp$element2.classList.toggle('pswp--ui-visible', this.isOpening);\n\n    if (this.isOpening) {\n      if (this._placeholder) {\n        // unhide the placeholder\n        this._placeholder.style.opacity = '1';\n      }\n\n      this._animateToOpenState();\n    } else if (this.isClosing) {\n      this._animateToClosedState();\n    }\n\n    if (!this._useAnimation) {\n      this._onAnimationComplete();\n    }\n  }\n  /** @private */\n\n\n  _onAnimationComplete() {\n    const {\n      pswp\n    } = this;\n    this.isOpen = this.isOpening;\n    this.isClosed = this.isClosing;\n    this.isOpening = false;\n    this.isClosing = false;\n    pswp.dispatch(this.isOpen ? 'openingAnimationEnd' : 'closingAnimationEnd'); // legacy event\n\n    pswp.dispatch(\n    /** @type {'initialZoomInEnd' | 'initialZoomOutEnd'} */\n    'initialZoom' + (this.isOpen ? 'InEnd' : 'OutEnd'));\n\n    if (this.isClosed) {\n      pswp.destroy();\n    } else if (this.isOpen) {\n      var _pswp$currSlide;\n\n      if (this._animateZoom && pswp.container) {\n        pswp.container.style.overflow = 'visible';\n        pswp.container.style.width = '100%';\n      }\n\n      (_pswp$currSlide = pswp.currSlide) === null || _pswp$currSlide === void 0 || _pswp$currSlide.applyCurrentZoomPan();\n    }\n  }\n  /** @private */\n\n\n  _animateToOpenState() {\n    const {\n      pswp\n    } = this;\n\n    if (this._animateZoom) {\n      if (this._croppedZoom && this._cropContainer1 && this._cropContainer2) {\n        this._animateTo(this._cropContainer1, 'transform', 'translate3d(0,0,0)');\n\n        this._animateTo(this._cropContainer2, 'transform', 'none');\n      }\n\n      if (pswp.currSlide) {\n        pswp.currSlide.zoomAndPanToInitial();\n\n        this._animateTo(pswp.currSlide.container, 'transform', pswp.currSlide.getCurrentTransform());\n      }\n    }\n\n    if (this._animateBgOpacity && pswp.bg) {\n      this._animateTo(pswp.bg, 'opacity', String(pswp.options.bgOpacity));\n    }\n\n    if (this._animateRootOpacity && pswp.element) {\n      this._animateTo(pswp.element, 'opacity', '1');\n    }\n  }\n  /** @private */\n\n\n  _animateToClosedState() {\n    const {\n      pswp\n    } = this;\n\n    if (this._animateZoom) {\n      this._setClosedStateZoomPan(true);\n    } // do not animate opacity if it's already at 0\n\n\n    if (this._animateBgOpacity && pswp.bgOpacity > 0.01 && pswp.bg) {\n      this._animateTo(pswp.bg, 'opacity', '0');\n    }\n\n    if (this._animateRootOpacity && pswp.element) {\n      this._animateTo(pswp.element, 'opacity', '0');\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {boolean} [animate]\r\n   */\n\n\n  _setClosedStateZoomPan(animate) {\n    if (!this._thumbBounds) return;\n    const {\n      pswp\n    } = this;\n    const {\n      innerRect\n    } = this._thumbBounds;\n    const {\n      currSlide,\n      viewportSize\n    } = pswp;\n\n    if (this._croppedZoom && innerRect && this._cropContainer1 && this._cropContainer2) {\n      const containerOnePanX = -viewportSize.x + (this._thumbBounds.x - innerRect.x) + innerRect.w;\n      const containerOnePanY = -viewportSize.y + (this._thumbBounds.y - innerRect.y) + innerRect.h;\n      const containerTwoPanX = viewportSize.x - innerRect.w;\n      const containerTwoPanY = viewportSize.y - innerRect.h;\n\n      if (animate) {\n        this._animateTo(this._cropContainer1, 'transform', toTransformString(containerOnePanX, containerOnePanY));\n\n        this._animateTo(this._cropContainer2, 'transform', toTransformString(containerTwoPanX, containerTwoPanY));\n      } else {\n        setTransform(this._cropContainer1, containerOnePanX, containerOnePanY);\n        setTransform(this._cropContainer2, containerTwoPanX, containerTwoPanY);\n      }\n    }\n\n    if (currSlide) {\n      equalizePoints(currSlide.pan, innerRect || this._thumbBounds);\n      currSlide.currZoomLevel = this._thumbBounds.w / currSlide.width;\n\n      if (animate) {\n        this._animateTo(currSlide.container, 'transform', currSlide.getCurrentTransform());\n      } else {\n        currSlide.applyCurrentZoomPan();\n      }\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {HTMLElement} target\r\n   * @param {'transform' | 'opacity'} prop\r\n   * @param {string} propValue\r\n   */\n\n\n  _animateTo(target, prop, propValue) {\n    if (!this._duration) {\n      target.style[prop] = propValue;\n      return;\n    }\n\n    const {\n      animations\n    } = this.pswp;\n    /** @type {AnimationProps} */\n\n    const animProps = {\n      duration: this._duration,\n      easing: this.pswp.options.easing,\n      onComplete: () => {\n        if (!animations.activeAnimations.length) {\n          this._onAnimationComplete();\n        }\n      },\n      target\n    };\n    animProps[prop] = propValue;\n    animations.startTransition(animProps);\n  }\n\n}\n\n/**\r\n * @template T\r\n * @typedef {import('./types.js').Type<T>} Type<T>\r\n */\n\n/** @typedef {import('./slide/slide.js').SlideData} SlideData */\n\n/** @typedef {import('./slide/zoom-level.js').ZoomLevelOption} ZoomLevelOption */\n\n/** @typedef {import('./ui/ui-element.js').UIElementData} UIElementData */\n\n/** @typedef {import('./main-scroll.js').ItemHolder} ItemHolder */\n\n/** @typedef {import('./core/eventable.js').PhotoSwipeEventsMap} PhotoSwipeEventsMap */\n\n/** @typedef {import('./core/eventable.js').PhotoSwipeFiltersMap} PhotoSwipeFiltersMap */\n\n/** @typedef {import('./slide/get-thumb-bounds').Bounds} Bounds */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {import('./core/eventable.js').EventCallback<T>} EventCallback<T>\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {import('./core/eventable.js').AugmentedEvent<T>} AugmentedEvent<T>\r\n */\n\n/** @typedef {{ x: number; y: number; id?: string | number }} Point */\n\n/** @typedef {{ top: number; bottom: number; left: number; right: number }} Padding */\n\n/** @typedef {SlideData[]} DataSourceArray */\n\n/** @typedef {{ gallery: HTMLElement; items?: HTMLElement[] }} DataSourceObject */\n\n/** @typedef {DataSourceArray | DataSourceObject} DataSource */\n\n/** @typedef {(point: Point, originalEvent: PointerEvent) => void} ActionFn */\n\n/** @typedef {'close' | 'next' | 'zoom' | 'zoom-or-close' | 'toggle-controls'} ActionType */\n\n/** @typedef {Type<PhotoSwipe> | { default: Type<PhotoSwipe> }} PhotoSwipeModule */\n\n/** @typedef {PhotoSwipeModule | Promise<PhotoSwipeModule> | (() => Promise<PhotoSwipeModule>)} PhotoSwipeModuleOption */\n\n/**\r\n * @typedef {string | NodeListOf<HTMLElement> | HTMLElement[] | HTMLElement} ElementProvider\r\n */\n\n/** @typedef {Partial<PreparedPhotoSwipeOptions>} PhotoSwipeOptions https://photoswipe.com/options/ */\n\n/**\r\n * @typedef {Object} PreparedPhotoSwipeOptions\r\n *\r\n * @prop {DataSource} [dataSource]\r\n * Pass an array of any items via dataSource option. Its length will determine amount of slides\r\n * (which may be modified further from numItems event).\r\n *\r\n * Each item should contain data that you need to generate slide\r\n * (for image slide it would be src (image URL), width (image width), height, srcset, alt).\r\n *\r\n * If these properties are not present in your initial array, you may \"pre-parse\" each item from itemData filter.\r\n *\r\n * @prop {number} bgOpacity\r\n * Background backdrop opacity, always define it via this option and not via CSS rgba color.\r\n *\r\n * @prop {number} spacing\r\n * Spacing between slides. Defined as ratio relative to the viewport width (0.1 = 10% of viewport).\r\n *\r\n * @prop {boolean} allowPanToNext\r\n * Allow swipe navigation to the next slide when the current slide is zoomed. Does not apply to mouse events.\r\n *\r\n * @prop {boolean} loop\r\n * If set to true you'll be able to swipe from the last to the first image.\r\n * Option is always false when there are less than 3 slides.\r\n *\r\n * @prop {boolean} [wheelToZoom]\r\n * By default PhotoSwipe zooms image with ctrl-wheel, if you enable this option - image will zoom just via wheel.\r\n *\r\n * @prop {boolean} pinchToClose\r\n * Pinch touch gesture to close the gallery.\r\n *\r\n * @prop {boolean} closeOnVerticalDrag\r\n * Vertical drag gesture to close the PhotoSwipe.\r\n *\r\n * @prop {Padding} [padding]\r\n * Slide area padding (in pixels).\r\n *\r\n * @prop {(viewportSize: Point, itemData: SlideData, index: number) => Padding} [paddingFn]\r\n * The option is checked frequently, so make sure it's performant. Overrides padding option if defined. For example:\r\n *\r\n * @prop {number | false} hideAnimationDuration\r\n * Transition duration in milliseconds, can be 0.\r\n *\r\n * @prop {number | false} showAnimationDuration\r\n * Transition duration in milliseconds, can be 0.\r\n *\r\n * @prop {number | false} zoomAnimationDuration\r\n * Transition duration in milliseconds, can be 0.\r\n *\r\n * @prop {string} easing\r\n * String, 'cubic-bezier(.4,0,.22,1)'. CSS easing function for open/close/zoom transitions.\r\n *\r\n * @prop {boolean} escKey\r\n * Esc key to close.\r\n *\r\n * @prop {boolean} arrowKeys\r\n * Left/right arrow keys for navigation.\r\n *\r\n * @prop {boolean} trapFocus\r\n * Trap focus within PhotoSwipe element while it's open.\r\n *\r\n * @prop {boolean} returnFocus\r\n * Restore focus the last active element after PhotoSwipe is closed.\r\n *\r\n * @prop {boolean} clickToCloseNonZoomable\r\n * If image is not zoomable (for example, smaller than viewport) it can be closed by clicking on it.\r\n *\r\n * @prop {ActionType | ActionFn | false} imageClickAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {ActionType | ActionFn | false} bgClickAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {ActionType | ActionFn | false} tapAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {ActionType | ActionFn | false} doubleTapAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {number} preloaderDelay\r\n * Delay before the loading indicator will be displayed,\r\n * if image is loaded during it - the indicator will not be displayed at all. Can be zero.\r\n *\r\n * @prop {string} indexIndicatorSep\r\n * Used for slide count indicator (\"1 of 10 \").\r\n *\r\n * @prop {(options: PhotoSwipeOptions, pswp: PhotoSwipeBase) => Point} [getViewportSizeFn]\r\n * A function that should return slide viewport width and height, in format {x: 100, y: 100}.\r\n *\r\n * @prop {string} errorMsg\r\n * Message to display when the image wasn't able to load. If you need to display HTML - use contentErrorElement filter.\r\n *\r\n * @prop {[number, number]} preload\r\n * Lazy loading of nearby slides based on direction of movement. Should be an array with two integers,\r\n * first one - number of items to preload before the current image, second one - after the current image.\r\n * Two nearby images are always loaded.\r\n *\r\n * @prop {string} [mainClass]\r\n * Class that will be added to the root element of PhotoSwipe, may contain multiple separated by space.\r\n * Example on Styling page.\r\n *\r\n * @prop {HTMLElement} [appendToEl]\r\n * Element to which PhotoSwipe dialog will be appended when it opens.\r\n *\r\n * @prop {number} maxWidthToAnimate\r\n * Maximum width of image to animate, if initial rendered image width\r\n * is larger than this value - the opening/closing transition will be automatically disabled.\r\n *\r\n * @prop {string} [closeTitle]\r\n * Translating\r\n *\r\n * @prop {string} [zoomTitle]\r\n * Translating\r\n *\r\n * @prop {string} [arrowPrevTitle]\r\n * Translating\r\n *\r\n * @prop {string} [arrowNextTitle]\r\n * Translating\r\n *\r\n * @prop {'zoom' | 'fade' | 'none'} [showHideAnimationType]\r\n * To adjust opening or closing transition type use lightbox option `showHideAnimationType` (`String`).\r\n * It supports three values - `zoom` (default), `fade` (default if there is no thumbnail) and `none`.\r\n *\r\n * Animations are automatically disabled if user `(prefers-reduced-motion: reduce)`.\r\n *\r\n * @prop {number} index\r\n * Defines start slide index.\r\n *\r\n * @prop {(e: MouseEvent) => number} [getClickedIndexFn]\r\n *\r\n * @prop {boolean} [arrowPrev]\r\n * @prop {boolean} [arrowNext]\r\n * @prop {boolean} [zoom]\r\n * @prop {boolean} [close]\r\n * @prop {boolean} [counter]\r\n *\r\n * @prop {string} [arrowPrevSVG]\r\n * @prop {string} [arrowNextSVG]\r\n * @prop {string} [zoomSVG]\r\n * @prop {string} [closeSVG]\r\n * @prop {string} [counterSVG]\r\n *\r\n * @prop {string} [arrowPrevTitle]\r\n * @prop {string} [arrowNextTitle]\r\n * @prop {string} [zoomTitle]\r\n * @prop {string} [closeTitle]\r\n * @prop {string} [counterTitle]\r\n *\r\n * @prop {ZoomLevelOption} [initialZoomLevel]\r\n * @prop {ZoomLevelOption} [secondaryZoomLevel]\r\n * @prop {ZoomLevelOption} [maxZoomLevel]\r\n *\r\n * @prop {boolean} [mouseMovePan]\r\n * @prop {Point | null} [initialPointerPos]\r\n * @prop {boolean} [showHideOpacity]\r\n *\r\n * @prop {PhotoSwipeModuleOption} [pswpModule]\r\n * @prop {() => Promise<any>} [openPromise]\r\n * @prop {boolean} [preloadFirstSlide]\r\n * @prop {ElementProvider} [gallery]\r\n * @prop {string} [gallerySelector]\r\n * @prop {ElementProvider} [children]\r\n * @prop {string} [childSelector]\r\n * @prop {string | false} [thumbSelector]\r\n */\n\n/** @type {PreparedPhotoSwipeOptions} */\n\nconst defaultOptions = {\n  allowPanToNext: true,\n  spacing: 0.1,\n  loop: true,\n  pinchToClose: true,\n  closeOnVerticalDrag: true,\n  hideAnimationDuration: 333,\n  showAnimationDuration: 333,\n  zoomAnimationDuration: 333,\n  escKey: true,\n  arrowKeys: true,\n  trapFocus: true,\n  returnFocus: true,\n  maxWidthToAnimate: 4000,\n  clickToCloseNonZoomable: true,\n  imageClickAction: 'zoom-or-close',\n  bgClickAction: 'close',\n  tapAction: 'toggle-controls',\n  doubleTapAction: 'zoom',\n  indexIndicatorSep: ' / ',\n  preloaderDelay: 2000,\n  bgOpacity: 0.8,\n  index: 0,\n  errorMsg: 'The image cannot be loaded',\n  preload: [1, 2],\n  easing: 'cubic-bezier(.4,0,.22,1)'\n};\n/**\r\n * PhotoSwipe Core\r\n */\n\nclass PhotoSwipe extends PhotoSwipeBase {\n  /**\r\n   * @param {PhotoSwipeOptions} [options]\r\n   */\n  constructor(options) {\n    super();\n    this.options = this._prepareOptions(options || {});\n    /**\r\n     * offset of viewport relative to document\r\n     *\r\n     * @type {Point}\r\n     */\n\n    this.offset = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * @type {Point}\r\n     * @private\r\n     */\n\n    this._prevViewportSize = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * Size of scrollable PhotoSwipe viewport\r\n     *\r\n     * @type {Point}\r\n     */\n\n    this.viewportSize = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * background (backdrop) opacity\r\n     */\n\n    this.bgOpacity = 1;\n    this.currIndex = 0;\n    this.potentialIndex = 0;\n    this.isOpen = false;\n    this.isDestroying = false;\n    this.hasMouse = false;\n    /**\r\n     * @private\r\n     * @type {SlideData}\r\n     */\n\n    this._initialItemData = {};\n    /** @type {Bounds | undefined} */\n\n    this._initialThumbBounds = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.topBar = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.element = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.template = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.container = undefined;\n    /** @type {HTMLElement | undefined} */\n\n    this.scrollWrap = undefined;\n    /** @type {Slide | undefined} */\n\n    this.currSlide = undefined;\n    this.events = new DOMEvents();\n    this.animations = new Animations();\n    this.mainScroll = new MainScroll(this);\n    this.gestures = new Gestures(this);\n    this.opener = new Opener(this);\n    this.keyboard = new Keyboard(this);\n    this.contentLoader = new ContentLoader(this);\n  }\n  /** @returns {boolean} */\n\n\n  init() {\n    if (this.isOpen || this.isDestroying) {\n      return false;\n    }\n\n    this.isOpen = true;\n    this.dispatch('init'); // legacy\n\n    this.dispatch('beforeOpen');\n\n    this._createMainStructure(); // add classes to the root element of PhotoSwipe\n\n\n    let rootClasses = 'pswp--open';\n\n    if (this.gestures.supportsTouch) {\n      rootClasses += ' pswp--touch';\n    }\n\n    if (this.options.mainClass) {\n      rootClasses += ' ' + this.options.mainClass;\n    }\n\n    if (this.element) {\n      this.element.className += ' ' + rootClasses;\n    }\n\n    this.currIndex = this.options.index || 0;\n    this.potentialIndex = this.currIndex;\n    this.dispatch('firstUpdate'); // starting index can be modified here\n    // initialize scroll wheel handler to block the scroll\n\n    this.scrollWheel = new ScrollWheel(this); // sanitize index\n\n    if (Number.isNaN(this.currIndex) || this.currIndex < 0 || this.currIndex >= this.getNumItems()) {\n      this.currIndex = 0;\n    }\n\n    if (!this.gestures.supportsTouch) {\n      // enable mouse features if no touch support detected\n      this.mouseDetected();\n    } // causes forced synchronous layout\n\n\n    this.updateSize();\n    this.offset.y = window.pageYOffset;\n    this._initialItemData = this.getItemData(this.currIndex);\n    this.dispatch('gettingData', {\n      index: this.currIndex,\n      data: this._initialItemData,\n      slide: undefined\n    }); // *Layout* - calculate size and position of elements here\n\n    this._initialThumbBounds = this.getThumbBounds();\n    this.dispatch('initialLayout');\n    this.on('openingAnimationEnd', () => {\n      const {\n        itemHolders\n      } = this.mainScroll; // Add content to the previous and next slide\n\n      if (itemHolders[0]) {\n        itemHolders[0].el.style.display = 'block';\n        this.setContent(itemHolders[0], this.currIndex - 1);\n      }\n\n      if (itemHolders[2]) {\n        itemHolders[2].el.style.display = 'block';\n        this.setContent(itemHolders[2], this.currIndex + 1);\n      }\n\n      this.appendHeavy();\n      this.contentLoader.updateLazy();\n      this.events.add(window, 'resize', this._handlePageResize.bind(this));\n      this.events.add(window, 'scroll', this._updatePageScrollOffset.bind(this));\n      this.dispatch('bindEvents');\n    }); // set content for center slide (first time)\n\n    if (this.mainScroll.itemHolders[1]) {\n      this.setContent(this.mainScroll.itemHolders[1], this.currIndex);\n    }\n\n    this.dispatch('change');\n    this.opener.open();\n    this.dispatch('afterInit');\n    return true;\n  }\n  /**\r\n   * Get looped slide index\r\n   * (for example, -1 will return the last slide)\r\n   *\r\n   * @param {number} index\r\n   * @returns {number}\r\n   */\n\n\n  getLoopedIndex(index) {\n    const numSlides = this.getNumItems();\n\n    if (this.options.loop) {\n      if (index > numSlides - 1) {\n        index -= numSlides;\n      }\n\n      if (index < 0) {\n        index += numSlides;\n      }\n    }\n\n    return clamp(index, 0, numSlides - 1);\n  }\n\n  appendHeavy() {\n    this.mainScroll.itemHolders.forEach(itemHolder => {\n      var _itemHolder$slide;\n\n      (_itemHolder$slide = itemHolder.slide) === null || _itemHolder$slide === void 0 || _itemHolder$slide.appendHeavy();\n    });\n  }\n  /**\r\n   * Change the slide\r\n   * @param {number} index New index\r\n   */\n\n\n  goTo(index) {\n    this.mainScroll.moveIndexBy(this.getLoopedIndex(index) - this.potentialIndex);\n  }\n  /**\r\n   * Go to the next slide.\r\n   */\n\n\n  next() {\n    this.goTo(this.potentialIndex + 1);\n  }\n  /**\r\n   * Go to the previous slide.\r\n   */\n\n\n  prev() {\n    this.goTo(this.potentialIndex - 1);\n  }\n  /**\r\n   * @see slide/slide.js zoomTo\r\n   *\r\n   * @param {Parameters<Slide['zoomTo']>} args\r\n   */\n\n\n  zoomTo(...args) {\n    var _this$currSlide;\n\n    (_this$currSlide = this.currSlide) === null || _this$currSlide === void 0 || _this$currSlide.zoomTo(...args);\n  }\n  /**\r\n   * @see slide/slide.js toggleZoom\r\n   */\n\n\n  toggleZoom() {\n    var _this$currSlide2;\n\n    (_this$currSlide2 = this.currSlide) === null || _this$currSlide2 === void 0 || _this$currSlide2.toggleZoom();\n  }\n  /**\r\n   * Close the gallery.\r\n   * After closing transition ends - destroy it\r\n   */\n\n\n  close() {\n    if (!this.opener.isOpen || this.isDestroying) {\n      return;\n    }\n\n    this.isDestroying = true;\n    this.dispatch('close');\n    this.events.removeAll();\n    this.opener.close();\n  }\n  /**\r\n   * Destroys the gallery:\r\n   * - instantly closes the gallery\r\n   * - unbinds events,\r\n   * - cleans intervals and timeouts\r\n   * - removes elements from DOM\r\n   */\n\n\n  destroy() {\n    var _this$element;\n\n    if (!this.isDestroying) {\n      this.options.showHideAnimationType = 'none';\n      this.close();\n      return;\n    }\n\n    this.dispatch('destroy');\n    this._listeners = {};\n\n    if (this.scrollWrap) {\n      this.scrollWrap.ontouchmove = null;\n      this.scrollWrap.ontouchend = null;\n    }\n\n    (_this$element = this.element) === null || _this$element === void 0 || _this$element.remove();\n    this.mainScroll.itemHolders.forEach(itemHolder => {\n      var _itemHolder$slide2;\n\n      (_itemHolder$slide2 = itemHolder.slide) === null || _itemHolder$slide2 === void 0 || _itemHolder$slide2.destroy();\n    });\n    this.contentLoader.destroy();\n    this.events.removeAll();\n  }\n  /**\r\n   * Refresh/reload content of a slide by its index\r\n   *\r\n   * @param {number} slideIndex\r\n   */\n\n\n  refreshSlideContent(slideIndex) {\n    this.contentLoader.removeByIndex(slideIndex);\n    this.mainScroll.itemHolders.forEach((itemHolder, i) => {\n      var _this$currSlide$index, _this$currSlide3;\n\n      let potentialHolderIndex = ((_this$currSlide$index = (_this$currSlide3 = this.currSlide) === null || _this$currSlide3 === void 0 ? void 0 : _this$currSlide3.index) !== null && _this$currSlide$index !== void 0 ? _this$currSlide$index : 0) - 1 + i;\n\n      if (this.canLoop()) {\n        potentialHolderIndex = this.getLoopedIndex(potentialHolderIndex);\n      }\n\n      if (potentialHolderIndex === slideIndex) {\n        // set the new slide content\n        this.setContent(itemHolder, slideIndex, true); // activate the new slide if it's current\n\n        if (i === 1) {\n          var _itemHolder$slide3;\n\n          this.currSlide = itemHolder.slide;\n          (_itemHolder$slide3 = itemHolder.slide) === null || _itemHolder$slide3 === void 0 || _itemHolder$slide3.setIsActive(true);\n        }\n      }\n    });\n    this.dispatch('change');\n  }\n  /**\r\n   * Set slide content\r\n   *\r\n   * @param {ItemHolder} holder mainScroll.itemHolders array item\r\n   * @param {number} index Slide index\r\n   * @param {boolean} [force] If content should be set even if index wasn't changed\r\n   */\n\n\n  setContent(holder, index, force) {\n    if (this.canLoop()) {\n      index = this.getLoopedIndex(index);\n    }\n\n    if (holder.slide) {\n      if (holder.slide.index === index && !force) {\n        // exit if holder already contains this slide\n        // this could be common when just three slides are used\n        return;\n      } // destroy previous slide\n\n\n      holder.slide.destroy();\n      holder.slide = undefined;\n    } // exit if no loop and index is out of bounds\n\n\n    if (!this.canLoop() && (index < 0 || index >= this.getNumItems())) {\n      return;\n    }\n\n    const itemData = this.getItemData(index);\n    holder.slide = new Slide(itemData, index, this); // set current slide\n\n    if (index === this.currIndex) {\n      this.currSlide = holder.slide;\n    }\n\n    holder.slide.append(holder.el);\n  }\n  /** @returns {Point} */\n\n\n  getViewportCenterPoint() {\n    return {\n      x: this.viewportSize.x / 2,\n      y: this.viewportSize.y / 2\n    };\n  }\n  /**\r\n   * Update size of all elements.\r\n   * Executed on init and on page resize.\r\n   *\r\n   * @param {boolean} [force] Update size even if size of viewport was not changed.\r\n   */\n\n\n  updateSize(force) {\n    // let item;\n    // let itemIndex;\n    if (this.isDestroying) {\n      // exit if PhotoSwipe is closed or closing\n      // (to avoid errors, as resize event might be delayed)\n      return;\n    } //const newWidth = this.scrollWrap.clientWidth;\n    //const newHeight = this.scrollWrap.clientHeight;\n\n\n    const newViewportSize = getViewportSize(this.options, this);\n\n    if (!force && pointsEqual(newViewportSize, this._prevViewportSize)) {\n      // Exit if dimensions were not changed\n      return;\n    } //this._prevViewportSize.x = newWidth;\n    //this._prevViewportSize.y = newHeight;\n\n\n    equalizePoints(this._prevViewportSize, newViewportSize);\n    this.dispatch('beforeResize');\n    equalizePoints(this.viewportSize, this._prevViewportSize);\n\n    this._updatePageScrollOffset();\n\n    this.dispatch('viewportSize'); // Resize slides only after opener animation is finished\n    // and don't re-calculate size on inital size update\n\n    this.mainScroll.resize(this.opener.isOpen);\n\n    if (!this.hasMouse && window.matchMedia('(any-hover: hover)').matches) {\n      this.mouseDetected();\n    }\n\n    this.dispatch('resize');\n  }\n  /**\r\n   * @param {number} opacity\r\n   */\n\n\n  applyBgOpacity(opacity) {\n    this.bgOpacity = Math.max(opacity, 0);\n\n    if (this.bg) {\n      this.bg.style.opacity = String(this.bgOpacity * this.options.bgOpacity);\n    }\n  }\n  /**\r\n   * Whether mouse is detected\r\n   */\n\n\n  mouseDetected() {\n    if (!this.hasMouse) {\n      var _this$element2;\n\n      this.hasMouse = true;\n      (_this$element2 = this.element) === null || _this$element2 === void 0 || _this$element2.classList.add('pswp--has_mouse');\n    }\n  }\n  /**\r\n   * Page resize event handler\r\n   *\r\n   * @private\r\n   */\n\n\n  _handlePageResize() {\n    this.updateSize(); // In iOS webview, if element size depends on document size,\n    // it'll be measured incorrectly in resize event\n    //\n    // https://bugs.webkit.org/show_bug.cgi?id=170595\n    // https://hackernoon.com/onresize-event-broken-in-mobile-safari-d8469027bf4d\n\n    if (/iPhone|iPad|iPod/i.test(window.navigator.userAgent)) {\n      setTimeout(() => {\n        this.updateSize();\n      }, 500);\n    }\n  }\n  /**\r\n   * Page scroll offset is used\r\n   * to get correct coordinates\r\n   * relative to PhotoSwipe viewport.\r\n   *\r\n   * @private\r\n   */\n\n\n  _updatePageScrollOffset() {\n    this.setScrollOffset(0, window.pageYOffset);\n  }\n  /**\r\n   * @param {number} x\r\n   * @param {number} y\r\n   */\n\n\n  setScrollOffset(x, y) {\n    this.offset.x = x;\n    this.offset.y = y;\n    this.dispatch('updateScrollOffset');\n  }\n  /**\r\n   * Create main HTML structure of PhotoSwipe,\r\n   * and add it to DOM\r\n   *\r\n   * @private\r\n   */\n\n\n  _createMainStructure() {\n    // root DOM element of PhotoSwipe (.pswp)\n    this.element = createElement('pswp', 'div');\n    this.element.setAttribute('tabindex', '-1');\n    this.element.setAttribute('role', 'dialog'); // template is legacy prop\n\n    this.template = this.element; // Background is added as a separate element,\n    // as animating opacity is faster than animating rgba()\n\n    this.bg = createElement('pswp__bg', 'div', this.element);\n    this.scrollWrap = createElement('pswp__scroll-wrap', 'section', this.element);\n    this.container = createElement('pswp__container', 'div', this.scrollWrap); // aria pattern: carousel\n\n    this.scrollWrap.setAttribute('aria-roledescription', 'carousel');\n    this.container.setAttribute('aria-live', 'off');\n    this.container.setAttribute('id', 'pswp__items');\n    this.mainScroll.appendHolders();\n    this.ui = new UI(this);\n    this.ui.init(); // append to DOM\n\n    (this.options.appendToEl || document.body).appendChild(this.element);\n  }\n  /**\r\n   * Get position and dimensions of small thumbnail\r\n   *   {x:,y:,w:}\r\n   *\r\n   * Height is optional (calculated based on the large image)\r\n   *\r\n   * @returns {Bounds | undefined}\r\n   */\n\n\n  getThumbBounds() {\n    return getThumbBounds(this.currIndex, this.currSlide ? this.currSlide.data : this._initialItemData, this);\n  }\n  /**\r\n   * If the PhotoSwipe can have continuous loop\r\n   * @returns Boolean\r\n   */\n\n\n  canLoop() {\n    return this.options.loop && this.getNumItems() > 2;\n  }\n  /**\r\n   * @private\r\n   * @param {PhotoSwipeOptions} options\r\n   * @returns {PreparedPhotoSwipeOptions}\r\n   */\n\n\n  _prepareOptions(options) {\n    if (window.matchMedia('(prefers-reduced-motion), (update: slow)').matches) {\n      options.showHideAnimationType = 'none';\n      options.zoomAnimationDuration = 0;\n    }\n    /** @type {PreparedPhotoSwipeOptions} */\n\n\n    return { ...defaultOptions,\n      ...options\n    };\n  }\n\n}\n\nexport { PhotoSwipe as default };\n//# sourceMappingURL=photoswipe.esm.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * Created by sven.bluege on 04.04.2017.\r\n */\r\nwindow.Eventgallery = window.Eventgallery || {};\r\n\r\n\r\nrequire('./backend/vue/uploader/index.js');\r\nrequire('./backend/vue/filesync/index.js');\r\nrequire('./backend/vue/thumbnailcreator/index.js');\r\nrequire('./backend/vue/cacheclear/index.js');\r\nrequire('./backend/vue/imagecontentpluginform/index.js');\r\nrequire('./backend/vue/scalepriceeditor/index.js');\r\n\r\n\r\nrequire('./backend/js/EventgalleryBehavior.js');\r\nrequire('./backend/js/EventgalleryInlineFormEdit.js');\r\nrequire('./backend/js/EventgalleryGooglePhotos.js');\r\nrequire('./backend/js/EventgalleryFlickr.js');\r\nrequire('./backend/js/Albumselector.js');\r\nrequire('./backend/js/LocalizableText.js');\r\n\r\nrequire('./backend/css/eventgallery.css');\r\nrequire('./frontend/less/font-awesome/font-awesome.less');\r\n\r\nrequire('./frontend/js/photoswipe/PhotoSwipeGallery.js');\r\nrequire('./frontend/js/photoswipe/PhotoSwipeGallerySlide.js');\r\n\r\n\r\n"],"names":["warn","msg","args","console","activeEffectScope","activeSub","EffectScope","constructor","detached","this","_active","effects","cleanups","_isPaused","parent","index","scopes","push","active","pause","i","l","length","resume","run","fn","currentEffectScope","on","off","stop","fromParent","last","pop","effectScope","getCurrentScope","onScopeDispose","failSilently","EffectFlags","pausedQueueEffects","WeakSet","ReactiveEffect","deps","depsTail","flags","next","cleanup","scheduler","has","delete","trigger","notify","batch","cleanupEffect","prepareDeps","prevEffect","prevShouldTrack","shouldTrack","cleanupDeps","link","nextDep","removeSub","onStop","add","runIfDirty","isDirty","dirty","batchedSub","batchedComputed","batchDepth","sub","isComputed","startBatch","endBatch","e","error","err","version","prevActiveLink","dep","activeLink","head","tail","prev","prevDep","removeDep","computed","refreshComputed","_dirty","globalVersion","isSSR","prevSub","value","_value","hasChanged","soft","nextSub","subsHead","subs","sc","map","key","effect","options","extend","runner","bind","trackStack","pauseTracking","enableTracking","resetTracking","onEffectCleanup","Link","Dep","track","debugInfo","addSub","onTrack","onTrigger","currentTail","targetMap","WeakMap","ITERATE_KEY","Symbol","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","target","type","depsMap","get","set","Map","newValue","oldValue","oldTarget","forEach","targetIsArray","isArray","isArrayIndex","isIntegerKey","newLength","Number","key2","isSymbol","isMap","reactiveReadArray","array","raw","toRaw","isShallow","toReactive","shallowReadArray","arr","arrayInstrumentations","__proto__","iterator","concat","x","entries","every","thisArg","apply","arguments","filter","v","find","findIndex","findLast","findLastIndex","includes","searchProxy","indexOf","join","separator","lastIndexOf","noTracking","reduce","reduceRight","shift","some","splice","toReversed","toSorted","comparer","toSpliced","unshift","values","self","method","wrapValue","iter","_next","result","arrayProto","Array","prototype","wrappedRetFn","needsWrap","methodFn","result2","wrappedFn","item","call","acc","res","isProxy","isNonTrackableKeys","makeMap","builtInSymbols","Set","Object","getOwnPropertyNames","hasOwnProperty","String","obj","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","getPrototypeOf","Reflect","isRef","isObject","readonly","reactive","MutableReactiveHandler","super","isOldValueReadonly","isReadonly","hadKey","hasOwn","deleteProperty","ownKeys","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","createReadonlyMethod","capitalize","createInstrumentationGetter","shallow","instrumentations","rawTarget","rawKey","wrap","toReadonly","size","callback","observed","clear","checkIdentityKeys","hadItems","targetIsMap","isPair","isKeyOnly","innerIterator","done","createIterableMethod","createInstrumentations","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","toRawType","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","targetTypeMap","proxy","Proxy","isReactive","markRaw","def","r","ref","createRef","shallowRef","rawValue","RefImpl","_rawValue","useDirectValue","triggerRef","ref2","unref","toValue","source","isFunction","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","_get","_set","newVal","customRef","toRefs","object","ret","propertyToRef","ObjectRefImpl","_object","_key","_defaultValue","val","depMap","getDepFromReactive","GetterRefImpl","_getter","toRef","defaultValue","ComputedRefImpl","setter","__v_isRef","getterOrOptions","debugOptions","getter","cRef","TrackOpTypes","TriggerOpTypes","ReactiveFlags","WatchErrorCodes","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","getCurrentWatcher","onWatcherCleanup","cleanupFn","owner","watch","cb","EMPTY_OBJ","immediate","deep","once","augmentJob","warnInvalidSource","s","onWarn","reactiveGetter","source2","traverse","boundCleanup","forceTrigger","isMultiSource","currentEffect","NOOP","baseGetter","depth","Infinity","scope","watchHandle","remove","_cb","fill","job","immediateFirstRun","currentWatcher","cleanup2","seen","isSet","isPlainObject","getOwnPropertySymbols","propertyIsEnumerable","stack","pushWarningContext","vnode","popWarningContext","isWarning","warn$1","instance","component","appWarnHandler","appContext","config","warnHandler","trace","currentVNode","normalizedStack","recurseCount","parentInstance","getComponentTrace","callWithErrorHandling","a","_a","_b","toString","JSON","stringify","formatComponentName","warnArgs","logs","entry","postfix","isRoot","open","close","props","formatProps","formatTraceEntry","formatTrace","keys","slice","formatProp","isString","name","assertNumber","isNaN","ErrorCodes","ErrorTypeStrings$1","handleError","callWithAsyncErrorHandling","isPromise","catch","throwInDev","contextVNode","errorHandler","throwUnhandledErrorInProduction","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","info","logError","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","Promise","resolve","currentFlushPromise","RECURSION_LIMIT","nextTick","p","then","queueJob","jobId","getId","lastJob","id","start","end","middle","middleJob","middleJobId","findInsertionIndex","queueFlush","flushJobs","queuePostFlushCb","flushPreFlushCbs","uid","checkRecursiveUpdates","flushPostFlushCbs","deduped","sort","b","check","count","componentName","getComponentName","isHmrUpdating","hmrDirtyComponents","getGlobalThis","__VUE_HMR_RUNTIME__","createRecord","tryWrap","rerender","newRender","record","initialDef","render","instances","normalizeClassComponent","renderCache","update","reload","newComp","updateComponentDef","oldComp","dirtyInstances","propsCache","emitsCache","optionsCache","ceReload","styles","window","location","root","ce","_removeChildStyle","isClassComponent","__vccOpts","arg","devtools$1","buffer","devtoolsNotInstalled","emit$1","event","emit","setDevtoolsHook$1","hook","enabled","HTMLElement","navigator","userAgent","__VUE_DEVTOOLS_HOOK_REPLAY__","newHook","setTimeout","devtoolsComponentAdded","createDevtoolsComponentHook","devtoolsComponentUpdated","_devtoolsComponentRemoved","devtoolsComponentRemoved","cleanupBuffer","app","devtoolsPerfStart","createDevtoolsPerformanceHook","devtoolsPerfEnd","time","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","__scopeId","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","validateDirectiveName","isBuiltInDirective","withDirectives","directives","getComponentPublicInstance","bindings","dirs","dir","modifiers","mounted","updated","invokeDirectiveHook","prevVNode","oldBindings","binding","el","TeleportEndKey","isTeleport","__isTeleport","isTeleportDisabled","disabled","isTargetSVG","SVGElement","isTargetMathML","MathMLElement","resolveTarget","select","targetSelector","to","moveTeleport","container","parentAnchor","o","insert","m","move","moveType","targetAnchor","anchor","shapeFlag","children","isReorder","Teleport","process","n1","n2","parentComponent","parentSuspense","namespace","slotScopeIds","optimized","internals","mc","mountChildren","pc","patchChildren","pbc","patchBlockChildren","querySelector","createText","createComment","dynamicChildren","placeholder","mainAnchor","mount","container2","anchor2","isCE","_teleportTarget","mountToTarget","prepareAnchor","updateCssVars","defer","queuePostRenderEffect","targetStart","wasDisabled","currentContainer","currentAnchor","traverseStaticChildren","nextTarget","um","unmount","hostRemove","doRemove","shouldRemove","child","hydrate","node","nextSibling","parentNode","hydrateChildren","targetNode","_lpa","firstChild","nodeType","data","isDisabled","ut","setAttribute","leaveCbKey","enterCbKey","useTransitionState","state","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","Function","BaseTransitionPropsValidators","mode","appear","Boolean","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","recursiveGetSubtree","subTree","findNonCommentChild","hasFound","c","Comment","BaseTransition","setup","slots","getCurrentInstance","default","getTransitionRawChildren","rawProps","emptyPlaceholder","innerChild","getInnerChild$1","enterHooks","resolveTransitionHooks","hooks","setTransitionHooks","oldChild","oldInnerChild","isSameVNodeType","leavingHooks","afterLeave","delayLeave","earlyRemove","delayedLeave","getLeavingNodesForType","leavingVNodesCache","create","postClone","callHook","callAsyncHook","hook2","beforeEnter","leavingVNode","enter","afterHook","cancelHook","called","cancelled","leave","clone","vnode2","hooks2","isKeepAlive","cloneVNode","transition","ssContent","ssFallback","keepComment","parentKey","keyedFragmentCount","Fragment","patchFlag","defineComponent","extraOptions","useId","idPrefix","ids","markAsyncBoundary","knownTemplateRefs","useTemplateRef","refs","desc","getOwnPropertyDescriptor","configurable","defineProperty","enumerable","setRef","rawRef","oldRawRef","isUnmount","isAsyncWrapper","refValue","oldRef","setupState","rawSetupState","canSetSetupRef","_isString","_isRef","doSet","f","existing","k","hasLoggedMismatchError","logMismatchError","getContainerType","namespaceURI","tagName","isSVGContainer","isMathMLContainer","isComment","createHydrationFunctions","rendererInternals","mt","mountComponent","patch","patchProp","hydrateNode","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","Text","isTemplateNode","replaceNode","content","Static","needToAdoptContent","staticCount","outerHTML","hydrateFragment","toLowerCase","hydrateElement","locateClosingAnchor","createVNode","previousSibling","lastChild","createTextVNode","forcePatch","vnodeHooks","needCallTransitionHooks","needTransition","innerHTML","textContent","hasWarned","isMismatchAllowed","clientText","isCustomElement","d","created","propHasMismatch","endsWith","isOn","isReservedProp","onVnodeBeforeMount","invokeVNodeHook","onVnodeMounted","queueEffectWithSuspense","parentVNode","normalizeVNode","isText","fragmentSlotScopeIds","isFragment","parentElement","next2","match","newNode","oldNode","parentNode2","replaceChild","hasChildNodes","_vnode","clientValue","mismatchType","mismatchKey","actual","expected","getAttribute","normalizeClass","isSetEqual","toClassSet","stringifyStyle","normalizeStyle","actualMap","toStyleMap","expectedMap","resolveCssVars","isMapEqual","isKnownSvgAttr","isBooleanAttr","isKnownHtmlAttr","hasAttribute","includeBooleanAttr","isRenderableAttrValue","format","MismatchTypeString","str","trim","split","styleMap","getCssVars","cssVars","getEscapedCssVarName","allowMismatchAttr","allowedType","allowedAttr","list","requestIdleCallback","cancelIdleCallback","clearTimeout","hydrateOnIdle","timeout","hydrateOnVisible","opts","ob","IntersectionObserver","isIntersecting","disconnect","Element","top","left","bottom","right","getBoundingClientRect","innerHeight","innerWidth","elementIsVisibleInViewport","observe","hydrateOnMediaQuery","query","mql","matchMedia","matches","addEventListener","removeEventListener","hydrateOnInteraction","interactions","hasHydrated","doHydrate","teardown","dispatchEvent","__asyncLoader","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","hydrateStrategy","suspensible","onError","userOnError","resolvedComp","pendingRequest","retries","load","thisRequest","Error","reject","comp","__esModule","toStringTag","__asyncHydrate","forEachElement","bum","isUnmounted","__asyncResolved","currentInstance","createInnerComp","suspense","isInSSRComponentSetup","loaded","delayed","__isKeepAlive","KeepAlive","include","RegExp","exclude","max","sharedContext","renderer","cache","current","__v_cache","_unmount","createElement","storageContainer","resetShapeFlag","pruneCache","pruneCacheEntry","cached","activate","instance2","isDeactivated","invokeArrayFns","vnodeHook","deactivate","invalidateMount","da","onVnodeUnmounted","flush","pendingCacheKey","cacheSubtree","isSuspense","getInnerChild","onUpdated","rawVNode","isVNode","cachedVNode","parseInt","pattern","isRegExp","lastIndex","test","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","__weh","reset","setCurrentInstance","toHandlerKey","replace","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","for","resolveDynamicComponent","resolveDirective","warnMissing","Component","selfName","camelize","extra","registry","renderList","renderItem","sourceIsArray","isInteger","from","createSlots","dynamicSlots","slot","j","renderSlot","fallback","noSlotted","openBlock","createBlock","validSlotContent","ensureValidVNode","slotKey","rendered","_","scopeId","vnodes","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","$","$el","$data","$props","$attrs","attrs","$slots","$refs","$parent","$root","$host","$emit","$options","__VUE_OPTIONS_API__","resolveMergedOptions","$forceUpdate","$nextTick","n","$watch","instanceWatch","isReservedPrefix","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","propsOptions","shouldCacheAccess","publicGetter","cssModule","globalProperties","markAttrsAccessed","__cssModules","descriptor","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","isGloballyAllowed","warnRuntimeUsage","defineProps","defineEmits","defineExpose","exposed","defineOptions","defineSlots","defineModel","withDefaults","defaults","useSlots","getContext","useAttrs","setupContext","createSetupContext","normalizePropsOrEmits","normalized","mergeDefaults","startsWith","opt","skipFactory","mergeModels","createPropsRestProxy","excludedKeys","withAsyncContext","getAwaitable","awaitable","unsetCurrentInstance","h","createWatcher","publicThis","createPathGetter","handler","base","mixins","extends","extendsOptions","globalMixins","optionMergeStrategies","resolved","mergeOptions","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","emits","methods","mergeObjectOptions","beforeCreate","mergeAsArray","beforeMount","beforeUpdate","beforeDestroy","beforeUnmount","destroyed","unmounted","activated","deactivated","errorCaptured","serverPrefetch","components","merged","provide","inject","normalizeInject","createAppContext","isNativeTag","NO","performance","compilerOptions","provides","uid$1","createAppAPI","rootComponent","rootProps","context","installedPlugins","pluginCleanupFns","_uid","_component","_props","_container","_context","_instance","use","plugin","install","mixin","validateComponentName","directive","rootContainer","isHydrate","__vue_app__","_ceVNode","devtoolsInitApp","onUnmount","devtoolsUnmountApp","runWithContext","lastApp","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","internalObjectProto","createInternalObject","isInternalObject","setFullProps","needCastKeys","rawCastValues","hasAttrsChanged","camelKey","isEmitListener","emitsOptions","rawCurrentProps","castValues","resolvePropValue","isAbsent","hasDefault","propsDefaults","_setProp","hyphenate","mixinPropsCache","normalizePropsOptions","hasExtends","extendProps","raw2","EMPTY_ARR","normalizedKey","validatePropName","prop","propType","shouldCast","shouldCastTrue","typeName","validateProps","resolvedValues","camelizePropsKey","validateProp","required","validator","skipCheck","isValid","types","expectedTypes","valid","expectedType","assertType","message","receivedType","expectedValue","styleValue","receivedValue","isExplicable","elem","isBoolean","getInvalidTypeMessage","isSimpleType","ctor","t","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","assignSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","$stable","supported","perf","startMeasure","isSupported","mark","now","Date","endMeasure","startTag","endTag","measure","clearMarks","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","needWarn","__VUE_PROD_DEVTOOLS__","__VUE_PROD_HYDRATION_MISMATCH_DETAILS__","multi","initFeatureFlags","__VUE__","__VUE_DEVTOOLS_GLOBAL_HOOK__","hostInsert","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","patchStaticNode","processFragment","processElement","processComponent","removeStaticNode","mountElement","patchElement","is","resolveChildrenNamespace","filterSingleRoot","cloneIfMounted","__vnode","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","patchProps","class","style","propsToUpdate","dynamicProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","updateComponent","initialVNode","createComponentInstance","__hmrId","registerHMR","setupComponent","asyncDep","registerDep","setupRenderEffect","nextVNode","prevProps","prevChildren","nextProps","nextChildren","hasPropsChanged","shouldUpdateComponent","asyncResolved","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","renderComponentRoot","prevTree","updateHOCHostEl","bm","isAsyncWrapperVNode","hydrateSubTree","_injectChildStyle","scopedInitialVNode","rtc","rtg","rawPrevProps","isInHmrContext","kebabKey","camelizedKey","updateProps","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","commonLength","Math","min","nextChild","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","len","arrI","getSequence","nextIndex","remove2","performLeave","moveStaticNode","cacheIndex","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","hasOnce","removeFragment","performRemove","unregisterHMR","pendingBranch","suspenseId","pendingId","teleportEnd","isFlushing","createApp","currentNamespace","encoding","allowed","ch1","ch2","subComponent","ssrContextKey","useSSRContext","watchEffect","doWatch","watchPostEffect","watchSyncEffect","baseWatchOptions","runsImmediately","ssrCleanup","__watcherHandles","watchStopHandle","isPre","isFirstRun","path","segments","useModel","camelizedName","hyphenatedName","getModelModifiers","localValue","prevEmittedValue","prevSetValue","propValue","emittedValue","i2","modelName","modelModifiers","rawArgs","isModelListener","number","looseToNumber","params","devtoolsComponentEmit","lowerCaseEvent","handlerName","onceHandler","emitted","normalizeEmitsOptions","extendEmits","normalizedFromExtend","accessedAttrs","withProxy","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","render2","getFunctionalFallthrough","blockStack","setRoot","getChildRoot","filterModelListeners","allAttrs","eventAttrs","extraAttrs","isElementRoot","rawChildren","childRoot","dynamicIndex","updatedRoot","recurse","singleRoot","nextKeys","activeBranch","__isSuspense","Suspense","hiddenContainer","createSuspenseBoundary","triggerEvent","setActiveBranch","mountSuspense","isInFallback","newBranch","newFallback","isHydrating","patchSuspense","document","normalize","isSlotChildren","normalizeSuspenseSlot","eventListener","parentSuspenseId","isSuspensible","isVNodeSuspensible","toNumber","initialAnchor","sync","parentComponent2","delayEnter","hasUnresolvedAncestor","fallbackVNode","namespace2","mountFallback","optimized2","isInPendingSuspense","hydratedEl","asyncSetupResult","handleSetupResult","parentSuspense2","block","trackBlock","isBlockTreeEnabled","currentBlock","closeBlock","singleChild","branch","disableTracking","vnodeArgsTransformer","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","normalizeChildren","cloned","guardReactiveProps","klass","_createVNode","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","deepCloneVNode","text","flag","createStaticVNode","numberOfNodes","createCommentVNode","asBlock","memo","slotFlag","toMerge","incoming","emptyAppContext","exposeProxy","bc","sp","createDevRenderContext","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setters","isBuiltInTag","compile","installWithProxy","isStateful","initProps","setupResult","names","isRuntimeOnly","exposePropsOnRenderContext","isAsyncSetup","resolvedResult","finishComponentSetup","setupStatefulComponent","__ssrInlineRender","ssrRender","devtoolsRawSetupState","exposeSetupStateOnRenderContext","registerRuntimeCompiler","_compile","_rc","skipOptions","template","delimiters","componentCompilerOptions","finalCompilerOptions","dataOptions","computedOptions","watchOptions","provideOptions","injectOptions","renderTracked","renderTriggered","expose","filters","checkDuplicateProperties","createDuplicateChecker","resolveInjections","methodHandler","writable","registerLifecycleHook","register","_hook","applyOptions","attrsProxyHandlers","exposedType","attrsProxy","slotsProxy","freeze","getSlotsProxy","classifyRE","classify","toUpperCase","includeInferred","displayName","__name","__file","inferFromRegistry","warnRecursiveComputed","_warnRecursive","propsOrChildren","initCustomFormatter","vueStyle","numberStyle","stringStyle","keywordStyle","formatter","__vue_custom_formatter","header","__isVue","formatValue","hasBody","body","formatInstance","blocks","createInstanceBlock","extractKeys","asRaw","Comp","extracted","isKeyOfType","devtoolsFormatters","withMemo","isMemoSame","ErrorTypeStrings","devtools","setDevtoolsHook","ssrUtils","resolveFilter","compatUtils","DeprecationTypes","policy","tt","trustedTypes","createPolicy","createHTML","unsafeToTrustedHTML","doc","templateContainer","nodeOps","insertBefore","removeChild","tag","createElementNS","multiple","createTextNode","nodeValue","selector","before","cloneNode","wrapper","appendChild","TRANSITION","ANIMATION","vtcKey","DOMTransitionPropsValidators","css","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","Transition","decorate$1","resolveTransitionProps","h2","hasExplicitCallback","baseProps","durations","NumberOf","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","cls","classList","_vtc","requestAnimationFrame","endId","explicitTimeout","_endId","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","onEnd","getComputedStyle","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","offsetHeight","vShowOriginalDisplay","vShowHidden","vShow","display","setDisplay","CSS_VAR_TEXT","useCssVars","updateTeleports","vars","querySelectorAll","setVarsOnNode","setVars","setVarsOnVNode","MutationObserver","childList","cssText","setProperty","displayRE","semicolonRE","importantRE","setStyle","prefixed","rawName","prefixCache","prefixes","autoPrefix","xlinkNS","patchAttr","isSVG","isSpecialBooleanAttr","removeAttributeNS","setAttributeNS","removeAttribute","patchDOMProp","attrName","needRemove","veiKey","optionsModifierRE","cachedNow","getNow","sanitizeEventValue","propName","isNativeOn","charCodeAt","REMOVAL","defineCustomElement","_createApp","VueCustomElement","VueElement","initialProps","defineSSRCustomElement","createSSRApp","BaseClass","_def","_isVueCE","_app","_nonce","nonce","_connected","_resolved","_numberProps","_styleChildren","_ob","shadowRoot","_root","attachShadow","_resolveProps","connectedCallback","isConnected","_parseSlots","host","_parent","_setParent","_update","_pendingResolve","_resolveDef","disconnectedCallback","attributes","_setAttr","mutations","attributeName","isAsync","numberProps","_applyStyles","_mount","asyncDef","configureApp","declaredPropKeys","_getProp","shouldReflect","shouldUpdate","_renderSlots","newStyles","_styles","dispatch","CustomEvent","detail","_childStyles","_slots","slotName","outlets","walker","createTreeWalker","oldStyles","useHost","caller","useShadowRoot","useCssModule","modules","positionMap","newPositionMap","moveCbKey","TransitionGroup","decorate","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","transform","webkitTransform","transitionDuration","propertyName","cssTransitionProps","oldPos","newPos","dx","dy","getModelAssigner","onCompositionStart","composing","onCompositionEnd","Event","assignKey","vModelText","lazy","castToNumber","domValue","activeElement","vModelCheckbox","modelValue","_modelValue","elementValue","getValue","checked","assign","looseIndexOf","found","filtered","getCheckboxValue","setChecked","looseEqual","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","_assigning","setSelected","_binding","isMultiple","isArrayValue","option","optionValue","optionType","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","systemModifiers","modifierGuards","stopPropagation","prevent","preventDefault","currentTarget","ctrl","ctrlKey","shiftKey","alt","altKey","meta","metaKey","button","exact","withModifiers","_withMods","cacheKey","guard","keyNames","esc","space","up","down","withKeys","_withKeys","eventKey","rendererOptions","prevValue","nextValue","transitionClasses","className","patchClass","isCssString","hasControlledDisplay","prevStyle","cssVarText","patchStyle","invokers","existingInvoker","parseName","invoker","initialValue","_vts","attached","originalStop","stopImmediatePropagation","_stopped","patchStopImmediatePropagation","createInvoker","patchEvent","shouldSetAsProp","_trueValue","_falseValue","enabledHydration","ensureRenderer","ensureHydrationRenderer","injectNativeTagCheck","injectCompilerOptionsCheck","containerOrSelector","normalizeContainer","resolveRootNamespace","isHTMLTag","isSVGTag","isMathMLTag","ShadowRoot","ssrDirectiveInitialized","initDirectivesForSSR","getSSRProps","modelToUse","toTypeString","isDate","objectToString","cacheStringFunction","camelizeRE","hyphenateRE","charAt","fns","parseFloat","NaN","_globalThis","globalThis","identRE","genPropsAccessExp","genCacheKey","PatchFlags","PatchFlagNames","ShapeFlags","SlotFlags","slotFlagsText","isGloballyWhitelisted","range","generateCodeFrame","lines","newlineSequences","idx","line","repeat","lineLength","newLineSeqLength","pad","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","tmp","normalizeProps","isVoidTag","specialBooleanAttrs","unsafeAttrCharRE","attrValidationCache","isSSRSafeAttrName","isUnsafe","propsToAttrMap","acceptCharset","htmlFor","httpEquiv","isKnownMathMLAttr","escapeRE","escapeHtml","string","exec","escaped","html","commentStripRE","escapeHtmlComment","src","cssVarNameEscapeSymbolsRE","doubleEscape","aValidType","bValidType","getTime","equal","looseCompareArrays","aHasKey","bHasKey","toDisplayString","replacer","val2","stringifySymbol","description","exports","func","_wrapAsync","handlePromise","_initialParams2","_interopRequireDefault","_setImmediate2","promise","invokeCallback","module","DLL","removeLink","empty","insertAfter","setInitial","toArray","testFn","curr","dll","callFn","worker","concurrency","payload","RangeError","_worker","_wrapAsync2","numRunning","workersList","events","drain","saturated","unsaturated","ev","processingScheduled","_insert","insertAtFront","rejectOnError","rej","promiseCallback","q","started","_createTaskItem","_tasks","_createCB","tasks","task","idle","_maybeDrain","eventMethod","handleAndRemove","isProcessing","_DoublyLinkedList2","paused","datum","pushAsync","kill","unshiftAsync","_onlyOnce2","running","defineProperties","_defer","hasQueueMicrotask","queueMicrotask","hasSetImmediate","setImmediate","hasNextTick","isAsyncIterable","isAsyncGenerator","undefined","_asyncify2","asyncFn","asyncIterator","_queue2","items","Albumselector","_HTMLElement","_this","_classCallCheck","_callSuper","_shadowRoot","$loadingLabel","$loading","$empty","$albumlist","_inherits","_this2","xhr","XMLHttpRequest","onreadystatechange","readyState","status","parse","response","createTable","albums","url","accountid","send","_this3","album","previewThumbnail","coverPhotoBaseUrl","encodedTitle","encodeURI","title","mediaItemsCount","albumid","productUrl","myList","List","page","valueNames","attr","buttons","_loop","decodeURI","postMessage","post_message_prefix","oldVal","label","label_empty","element","getElementById","account_field_id","getData","_wrapNativeSuper","customElements","define","Eventgallery","GooglePhotosProcessor","processImages","lightbox","PhotoSwipeGallery","initPhotoSwipe","dataStr","albumField","titleField","onchange","closeBtn","click","oauthWindow","closed","alert","fireDomLoadEvent","bubbles","cancelable","assignClickEvents","assignClickEvent","openInlineForm","saveInlineForm","closeInlineForm","elements","closest","xhttp","responseText","form","setRequestHeader","serializeForm","inputFields","getElementsByClassName","collectData","field","languageTag","jsonData","rootElement","Cacheclear","cacheClearUrl","elementsJson","groupsJson","csrfToken","i18n","mapLocalizationData","Filesync","loadFoldersUrl","fileSyncUrl","folderSyncUrl","fileBatchSize","maxParallelRequests","ImageContentPluginForm","editorName","loadFilesUrl","formId","formDefinitionJson","nodes","inputField","getElementsByTagName","inputName","inputId","inputValue","Thumbnailcreator","require","Uploader","maxFileSize","maxImageSize","uploadUrl","initDoResize","googlePickerUrls","googlePickerUrlManageAccounts","googlePickerUrlGetAccounts","googlePickerUrlNewSession","googlePickerUrlGetSession","googlePickerUrlGetImages","googlePickerUrlGetImage","googlePickerUrlGetVideo","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","makeImpl","maskPattern","moduleCount","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","pos","QRUtil","getPatternPosition","bits","getBCHTypeNumber","mod","floor","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","createBytes","addData","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","isDark","getModuleCount","make","minLostPoint","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","_typeof","mr","rect","qrSvg","scalable","escapeXml","createDataURL","y","createImgTag","img","createASCII","r1","r2","blocksLastLineNoMargin","ascii","substring","_createHalfASCII","white","black","renderTo2dContext","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","bytes","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b0","b1","fromCharCode","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","L","M","Q","H","digit","errorCorrectLength","multiply","QRMath","gexp","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","num","_num","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","_buffer","_length","bufIndex","bit","_data","strToNum","chatToNum","getCode","_bytes","byteArrayOutputStream","writeByte","_str","_pos","_buflen","decode","width","height","getPixel","gif","_width","_height","pixel","out","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","contains","toByteArray","_map","_size","gifImage","setPixel","base64","_base64","writeEncoded","encode","padlen","base64EncodeOutputStream","utf8","charcode","toUTF8Array","createBatches","max_items_per_batch","batches","currentBatch","removeElement","elm","mergeObjects","getElementWidth","getElementHeight","calcBorderWidth","properties","sum","cSSStyleDeclaration","addUrlHashParameter","initialUrl","fragments","removeUrlHashParameter","urlpart","hashparts","encodeURIComponent","getUrlHashParameterValue","prefix","newHashParts","addUrlParameter","removeUrlParameter","urlparts","pars","setCSSStyle","getOuterHeight","marginTop","marginBottom","getParents","parents","getParent","insertAndExecute","htmlElement","newContent","scripts","eval","serialized","inputElements","dataI18n","hmltElement","_elements","attrib","localizationKey","lookup","LOADING_MATCHER","MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE","_createClass","albumUrl","albumsUrl","EventGalleryGooglePhotosConfiguration","imageAddedCallback","_e$detail","doReloadLightbox","isOverlay","_groupByAlbum","_collectHTMLElements","_markImagesAsInProgress","_getMainImageDataFromServer","htmlCollection","_toConsumableArray","imageSrcSet","dataSrc","foundLinkHTMLElements","rel","href","_step","_iterator","_createForOfIteratorHelper","_step$value","_slicedToArray","parsedHTMLElement","getHTMLElement","htmlElements","imageHTMLElement","_parseHTMLElement","updateParameters","folder","parameters","ParsedImageHTMLElement","ParsedLinkHTMLElement","_step2","_iterator2","_step2$value","foldername","_doAlbumRequest","fetch","json","_processAlbumResult","_replaceImages","albumsWithMainImagesOnly","_filterForAlbumsWithMainImageOnly","_doAlbumsRequest","_step3","_iterator3","_step3$value","_getAlbumDataFromServer","_this4","_processAlbumsResult","_step4","_iterator4","_step4$value","_step5","newAlbums","_iterator5","_step5$value","mainImages","image","isMainImage","serverResult","_window$Eventgallery","parsedImageHTMLElement","imageUrl","getFile","replaceElementLinks","isOpen","getCurrentSlide","thumbEl","_gallery","ParsedHTMLElement","attributeNames","parameterString","URLHelper","parseURLParameter","_step6","_iterator6","updateParametersWithUrl","_step7","_iterator7","getImageUrl","getWidth","_ParsedHTMLElement","_this5","_ParsedHTMLElement2","_this6","Overlay","myDiv","background","onClosed","onLoad","repositionTimer","windowWidth","onResizeOverlay","_setRositionTimer","dataUrl","opacity","position","maxWidth","closeOverlay","append","reposition","_getRemoteData","_addContent","force","Polyfill","createNewEvent","removeHtmlElementNode","clientWidth","maxHeight","offsetWidth","scrollTop","pageYOffset","SlideShow","photoSwipe","_window","EventGalleryLightboxConfiguration","doUseSlideshow","_photoSwipe","_SlideShow_Running","_currentTimer","_SlideShow_Delay","slideshowSpeed","_SlideShow_Button","ui","registerElement","order","isButton","onInit","_adjustNavigation","onClick","toggleSlideShowState","_planNextSwitch","_photoSwipeGallery","originalEvent","_stopSlideshow","doUseAutoplay","_startSlideshow","isForTheFirstSwitch","_nextSlide","urlParameterString","pairs","pair","splittedPair","urlSring","parts","queryParts","urlString","defaultOptions","videoAttributes","controls","playsinline","preload","autoplay","preventDragOffset","PhotoSwipeVideoPlugin","VideoContentSetup","_objectSpread","isVideoContent","initLightboxEvents","initPswpEvents","onContentLoad","onContentDestroy","onContentActivate","onContentDeactivate","onContentAppend","onContentResize","addFilter","isKeepingPlaceholder","isContentZoomable","useContentPlaceholder","itemData","linkEl","dataset","pswpVideoSources","videoSources","pswpVideoSrc","videoSrc","pswp","slide","currSlide","origEvent","verticalEnding","ceil","currZoomLevel","bounds","center","pointerYPos","pageY","isActive","showHideAnimationType","pauseVideo","_ref","_videoPosterImg","onload","onerror","placeholderElStyle","isZoomable","_ref2","playVideo","_ref3","isAttached","appendImage","msrc","preloadVideoPoster","sourceEl","Image","complete","onLoaded","play","usePlaceholder","HistoryHandler","newOptions","_defineProperty","browserBackHappened","onClose","history","_close","replaceState","pushState","go","gid","pid","_isOpen","_videoPlugin","doOverlapToolbar","imagePadding","doOverlapImageWithCaption","translations","_translate","_registerClickEvents","hashData","parseHash","openPhotoSwipe","getGalleries","closeTitle","KEY_CLOSE","zoomTitle","KEY_ZOOM","arrowPrevTitle","KEY_PREVIOUS","arrowNextTitle","KEY_NEXT","errorMsg","indexIndicatorSep","share","KEY_SHARE","download","KEY_DOWNLOAD","buy","KEY_BUY","KEY_PLAYSLIDESHOW","KEY_PAUSESLIDESHOW","returnValue","eTarget","srcElement","clickedListItem","getSlideBy","getIndexOfSlide","slides","disableAnimation","fromURL","useHistory","pswpModule","PhotoSwipe","galleryPIDs","bgOpacity","trapFocus","galleryUID","toggle","updateSize","paddingFn","viewportSize","captionHeight","pinchToClose","add2cartEl","closeOnVerticalDrag","closeOnScroll","navigationFadeDelay","timeToIdle","timeToIdleOutside","showAnimationDuration","dataSource","_this$overlay","overlay","historyHandler","startUrlHistory","adjustUrlHistory","endUrlHistory","_this$overlay2","defaultPrevented","_this$overlay3","_registerUIElements","init","appendTo","currSlideElement","captionHTML","ariaLabel","shareUrl","openOverlay","add2cartUrl","Events","prepareAdd2cartDialogContent","directDownloadButton","_this2$getCurrentSlid","gallery","onclick","onThumbnailsClick","hash","galleries","thumbnails","getThumbnailContainers","parseThumbnailElement","currIndex","afterChangeFunction","goTo","PhotoSwipeGallerySlide","tc","thumbElIsAllowed","decodeURIComponent","shareButton","_window$EventGalleryC","add2cartButton","EventGalleryCartConfiguration","add2cartdialogurl","_parseHashString","Groups","Progress","ErrorPanel","ProcessSteps","groups","failedElements","errorMessages","numberOfRunningTasks","numberOfTasks","numberOfLastQueuePush","updateQueueStatus","selectedElements","isReadyForCacheDeletion","removed","checkAll","uncheckAll","stopQueue","clearCache","clearCacheForElement","group","log","sortedElements","localeCompare","Elements","blocked","headline","failedFolders","failedFiles","reversedErrorMessages","reverse","i18n_labelNeedSync","folderid","numberOfFilesLeft","files","file","backgroundColor","Folder","folders","sortedFolders","isReadyForSyncFiles","numberOfSelectedFolders","numberOfSelectedFiles","i18n_labelStep1","i18n_labelStep2","i18n_hintStep2","i18n_labelButtonStep2","i18n_labelStep3","i18n_hintStep3","i18n_labelButtonStep3","i18n_labelItemsStep2","i18n_labelItemsStep3","remaining","total","progress","Folders","loadFolders","numberOfSyncableFiles","selectedFolders","isSyncFilesProcessReadyToStart","isReady","syncFolders","syncFolder","foldertype","responseJSON","filename","syncFiles","fileBatch","syncFileBatch","resultFiles","resultFile","isNew","ImageSelector","Input","Select","Radio","image_crop","image_mode","image_width","cssclass","use_cart","thumb","formDefinition","tagContent","insertImageContentTag","Joomla","editors","replaceSelection","Modal","getCurrent","Label","isLoading","folderFilter","showImageSelectorState","filteredFolders","loadFiles","sendCustomEvent","setImage","hideImageSelector","showImageSelector","currentOption","scalePrices","newQuantity","newPrice","currentId","sortedScalePrices","sp1","sp2","quantity","currentInputValue","simpleDataStructure","scalePrice","price","createEntry","addScalePrice","deleteQuantity","getNextId","refreshetags","LocaLFilePicker","GoogleFilePicker","pendingFiles","inProgressFiles","finishedFilesContent","failedFilesContent","revertedPendingFiles","revertedFinishedFilesContent","fileselectMode","localStorage","setItem","_localStorage$getItem","doResize","getItem","addFile","upload","uploadFile","localFile","FormData","_createElementBlock","_hoisted_1","_createElementVNode","_toDisplayString","_hoisted_2","_hoisted_3","_hoisted_4","_cache","_hoisted_5","_hoisted_6","_createBlock","_component_Progress","_createCommentVNode","_component_Groups","displayname","_Fragment","_renderList","$event","_createTextVNode","_hoisted_7","_normalizeClass","_component_Elements","_$props$errorMessages","_$props$failedFolders","_$props$failedFiles","failedFolder","failedFile","_normalizeStyle","_component_folder","_hoisted_8","_hoisted_9","_hoisted_10","_component_ErrorPanel","_component_ProcessSteps","onSyncFiles","onSyncFolders","_component_Folders","fieldset","_component_Input","_component_Select","_component_Radio","_component_ImageSelector","_component_Label","_withModifiers","myFolder","_hoisted_12","_hoisted_11","onInput","Id","COM_EVENTGALLERY_EVENT_UPLOAD_SELECT_LOCAL_FILES","COM_EVENTGALLERY_EVENT_UPLOAD_SELECT_GOOGLE_PHOTOS","COM_EVENTGALLERY_EVENT_UPLOAD_DO_RESIZE_LABEL","_component_GoogleFilePicker","onAddFileCallback","_component_LocaLFilePicker","COM_EVENTGALLERY_EVENT_UPLOAD_PENDING","pendingFile","_hoisted_13","COM_EVENTGALLERY_EVENT_UPLOAD_FINISHED","_hoisted_14","inProgressFile","_hoisted_15","failedFileContent","_hoisted_16","finishedFileContent","_hoisted_17","addAsync","valuesToAdd","handlers","filterStart","filterComplete","filterFunction","il","visibleItems","getByClass","fuzzy","distance","threshold","multiSearch","searchClass","fuzzySearch","search","searchString","columns","searchArguments","kl","foundArgument","jl","searchArgument","listContainer","utils","debounce","searchDelay","naturalSort","classes","Item","initPagination","listClass","sortClass","matchingItems","searched","searchColumns","templater","pagination","reIndex","toJSON","added","notCreate","show","valueName","matchedItems","matching","hide","initValues","_values","newValues","visible","isHidden","refresh","pagingList","pages","currentPage","innerWindow","outerWindow","dotted","currentPageItem","dottedLeft","dottedRight","paginationClass","itemElements","parseAsync","itemsToIndex","parseComplete","childNodes","getChildren","indexAsync","customSearch","prepare","resetList","setOptions","setColumns","setSearchString","tmpColumn","searchMethod","phrase","words","ss","word_found","column","searchStart","searchComplete","els","getOrder","btn","predefinedOrder","getInSensitive","insensitive","setOrder","sortFunction","customSortFunction","itemA","itemB","alphabet","caseInsensitive","sortStart","sortComplete","Templater","createItem","getItemSource","itemHTML","tbody","firstElementChild","div","setValue","getValueName","itemSource","getFirstListItem","templateNode","createCleanTemplateItem","re","ClassList","unbind","capture","wait","callNow","property","Match_Location","Match_Distance","Match_Threshold","loc","match_bitapScore_","accuracy","proximity","score_threshold","best_loc","bin_min","bin_mid","matchmask","last_rd","bin_max","finish","rd","charMatch","score","nodeName","single","classElements","elsLen","polyfill","collection","alphabetIndexMap","alphabetIndexMapLength","isNumberCode","code","naturalCompare","lengthA","lengthB","aIndex","bIndex","charCodeA","charCodeB","numStartA","numStartB","numEndA","numEndB","difference","MediaType","VideoProcessingStatus","eventName","createEvent","initEvent","__props","__expose","__emit","activeGoogleAccount","googleAccounts","changeGoogleAccount","responseData","oldid","account","__returned__","session","responseError","imagesData","mediaItems","pageSize","currentPageNumber","doDownloadResizedImage","pagingData","pagesCount","currentPageContent","mediaItem","imageBlobThumbnailReqested","photo","video","getImage","blob","imageBlobThumbnail","URL","createObjectURL","addGoogleAccountToUrl","gameLoop","pollTimeout","doNewSession","headers","mediaItemsSet","listImages","pollForImages","sizeParams","mediaFile","baseUrl","goToPage","startNewSession","setActiveGoogleAccount","accountId","addSelectedFilesToUpload","queryParameter","mediaFileMetadata","videoMetadata","processingStatus","READY","File","mimeType","PagingBar","GoogleAccountSelector","QRCode","addFiles","newFiles","dataTransfer","imgSrc","$setup","COM_EVENTGALLERY_EVENT_UPLOAD_NO_GOOGLE_ACCOUNTS","COM_EVENTGALLERY_EVENT_UPLOAD_MANAGE_GOOGLE_ACCOUNTS","COM_EVENTGALLERY_EVENT_UPLOAD_DO_DOWNLOAD_RESIZED_IMAGES_LABEL","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_START_NEW_SELECTION","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_HEADLINE","pollingConfig","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_SESSION_RUNTIME","round","timeoutIn","pickerUri","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_LINK_DESC","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_RELOAD_DESC","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_SELECTED_IMAGES_DESC","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_PICKER_UPLOAD_BUTTON_LABEL","COM_EVENTGALLERY_EVENT_UPLOAD_GOOGLE_PHOTOS_LOADING_SESSION","COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD","numberOfPage","sfc","__exports__","appendToEl","equalizePoints","p1","p2","roundPoint","getDistanceBetween","sqrt","pointsEqual","clamp","toTransformString","scale","setTransform","setTransitionStyle","ease","setWidthHeight","w","LOAD_STATE","isSafari","vendor","supportsPassive","DOMEvents","_pool","listener","passive","_toggleListener","removeAll","poolItem","skipPool","methodName","eType","eventOptions","getViewportSize","getViewportSizeFn","newViewportSize","documentElement","parsePaddingOption","paddingValue","padding","legacyPropName","getPanAreaSize","PanBounds","_updateAxis","axis","elSize","panAreaSize","correctPan","panOffset","ZoomLevel","elementSize","fit","vFill","initial","secondary","hRatio","vRatio","_getInitial","_getSecondary","_getMax","zoomLevels","slideData","_parseZoomLevelOption","optionPrefix","optionName","Slide","currentResolution","pan","isFirstSlide","opener","contentLoader","getContentBySlide","holderElement","heavyAppended","prevDisplayedWidth","prevDisplayedHeight","setIsActive","transformOrigin","calculateSize","updateContentSize","appendHeavy","zoomAndPanToInitial","applyCurrentZoomPan","mainScroll","isShifted","destroy","hasSlide","resize","panTo","scaleMultiplier","sizeChanged","setDisplayedSize","getPlaceholderElement","_this$content$placeho","zoomTo","destZoomLevel","centerPoint","ignoreBounds","animations","stopAllPan","prevZoomLevel","setZoomLevel","calculateZoomToPanOffset","finishTransition","_setResolution","startTransition","isPan","getCurrentTransform","onComplete","easing","toggleZoom","zoomAnimationDuration","point","getViewportCenterPoint","zoomFactor","panX","panY","isPannable","_applyZoomTransform","zoom","newResolution","DragHandler","gestures","startPan","stopAll","change","prevP1","dragAxis","isMultitouch","_setPanWithFriction","_getVerticalDragRatio","applyBgOpacity","_panOrMoveMainScroll","velocity","indexDiff","currentSlideVisibilityRatio","getCurrSlideX","moveIndexBy","correctZoomPan","_finishPanGestureForAxis","panPos","restoreBgOpacity","projectedPosition","vDragRatio","projectedVDragRatio","correctedPanPosition","dampingRatio","initialBgOpacity","totalPanDist","startSpring","onUpdate","animationProgressRatio","delta","newMainScrollX","moveTo","newPan","allowPanToNext","currSlideMainScrollX","mainScrollShiftDiff","isLeftToRight","isRightToLeft","_this$pswp$currSlide$","_this$pswp$currSlide","potentialPan","customFriction","getZoomPointsCenter","ZoomHandler","_startPan","_startZoomPoint","_zoomPoint","_wasOverFitZoomLevel","_startZoomLevel","startP1","startP2","minZoomLevel","maxZoomLevel","_calculatePanForZoomLevel","ignoreGesture","destinationZoomLevel","currZoomLevelNeedsChange","initialPan","destinationPan","panNeedsChange","naturalFrequency","newZoomLevel","didTapOnMainContent","TapHandler","targetClassList","isImageClick","isBackgroundClick","_doClickOrTapAction","tap","doubleTap","actionName","_this$gestures$pswp$e","actionFullName","clickToCloseNonZoomable","Gestures","prevP2","_lastStartP1","_intervalP1","_numActivePoints","_ongoingPointers","_touchEventEnabled","_pointerEventEnabled","PointerEvent","supportsTouch","maxTouchPoints","_intervalTime","_velocityCalculated","isDragging","isZooming","raf","_tapTimer","drag","tapHandler","scrollWrap","_onClick","_bindEvents","ontouchmove","ontouchend","pref","cancel","cancelEvent","onPointerDown","onPointerMove","onPointerUp","isMousePointer","pointerType","mouseDetected","_preventPointerEventBehaviour","_updatePoints","_clearTapTimer","_finishDrag","_updateStartPoints","_rafStopLoop","_rafRenderLoop","_calculateDragDirection","_updateVelocity","_finishTap","_updatePrevPoints","_getVelocity","tapDelay","doubleTapAction","displacement","cancelAnimationFrame","applyFilters","pointerEvent","pointerIndex","ongoingPointer","pointerId","_convertEventPosToPoint","touchEvent","touches","diff","axisToCheck","pageX","identifier","MainScroll","slideWidth","_currPositionIndex","_prevPositionIndex","_containerShiftIndex","itemHolders","resizeSlides","newSlideWidth","spacing","slideWidthChanged","itemHolder","resetPosition","appendHolders","canBeSwiped","getNumItems","animate","velocityX","potentialIndex","numSlides","canLoop","getLoopedIndex","stopMainScroll","destinationX","isMainScroll","updateCurrItem","currDiff","currDistance","_this$itemHolders$","positionDifference","tempHolder","diffAbs","_itemHolder$slide","setContent","updateLazy","dragging","newSlideIndexOffset","KeyboardKeyCodesMap","Escape","z","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Tab","getKeyboardEventKey","isKeySupported","Keyboard","_wasFocused","initialPointerPos","_focusRoot","_onFocusIn","_onKeyDown","lastActiveElement","returnFocus","focus","specialKeyUsed","keydownAction","isForward","keyCode","escKey","arrowKeys","DEFAULT_EASING","CSSAnimation","_props$prop","onFinish","_target","_onComplete","_finished","_onTransitionEnd","_helperTimeout","_finalizeAnimation","SpringEaser","initialVelocity","_dampingRatio","_naturalFrequency","_dampedFrequency","easeFrame","deltaPosition","deltaTime","coeff","naturalDumpingPow","E","dumpedFCos","cos","dumpedFSin","sin","SpringAnimation","_raf","easer","prevTime","animationLoop","Animations","activeAnimations","_start","isSpring","animation","isPanRunning","ScrollWheel","_onWheel","deltaX","deltaY","wheelToZoom","deltaMode","clientX","clientY","UIElement","elementHTML","ariaText","htmlData","isCustomSVG","svgData","outlineID","inner","addElementHTML","topBar","initArrowButton","isNextButton","loop","arrowPrev","arrowNext","closeButton","zoomButton","loadingIndicator","indicatorElement","isVisible","delayTimeout","setIndicatorVisibility","updatePreloaderVisibility","_pswp$currSlide","_pswp$currSlide2","preloaderDelay","counterIndicator","counterElement","innerText","setZoomedIn","isZoomedIn","UI","isRegistered","uiElementsData","_lastUpdatedZoomLevel","uiElementData","_pswp$element","_onZoomPanUpdate","elementData","isClosing","currZoomLevelDiff","imageClickAction","PhotoSwipeEvent","details","Eventable","_listeners","_filters","priority","_this$_filters$name","_this$_filters$name2","_this$pswp","f1","f2","removeFilter","_this$_filters$name3","_this$_listeners$name","_this$pswp2","_this$pswp3","_this$_listeners$name2","Placeholder","imageSrc","imgEl","decoding","_this$element","Content","displayedImageWidth","displayedImageHeight","isDecoding","removePlaceholder","keepPlaceholder","isLazy","placeholderEl","placeholderSrc","isImageContent","loadImage","_this$data$src","_this$data$alt","imageElement","updateSrcsetSizes","srcset","setSlide","displayError","isError","isInitialSizeUpdate","sizesWidth","largestUsedSize","sizes","lazyLoad","_this$instance$option","_this$instance$option2","errorMsgEl","supportsDecode","finally","lazyLoadData","createContentFromData","zoomLevel","ContentLoader","limit","_cachedItems","loadSlideByIndex","initialIndex","getContentByIndex","getItemData","lazyLoadSlide","addToCache","removeByIndex","indexToRemove","PhotoSwipeBase","_this$options","numItems","_getGalleryDOMElements","_this$options2","dataSourceItem","_domElementToItemData","galleryElement","_this$options3","_this$options4","childSelector","legacySelector","NodeList","getElementsFromOption","pswpSrc","pswpSrcset","pswpWidth","pswpHeight","pswpType","thumbnailEl","_thumbnailEl$getAttri","currentSrc","pswpCropped","cropped","thumbCropped","MIN_OPACITY","Opener","isClosed","isOpening","_duration","_useAnimation","_croppedZoom","_animateRootOpacity","_animateBgOpacity","_placeholder","_opacityElement","_cropContainer1","_cropContainer2","_thumbBounds","_prepareOpen","hideAnimationDuration","maxWidthToAnimate","_applyStartProps","_options$showHideOpac","showHideOpacity","_initialThumbBounds","getThumbBounds","_animateZoom","bg","innerRect","overflow","_setClosedStateZoomPan","willChange","decoded","isDelaying","_initiate","_this$pswp$element","_this$pswp$element2","_animateToOpenState","_animateToClosedState","_onAnimationComplete","_animateTo","containerOnePanX","containerOnePanY","containerTwoPanX","containerTwoPanY","animProps","bgClickAction","tapAction","_prepareOptions","_prevViewportSize","isDestroying","hasMouse","_initialItemData","keyboard","_createMainStructure","rootClasses","mainClass","scrollWheel","_handlePageResize","_updatePageScrollOffset","_this$currSlide","_this$currSlide2","_itemHolder$slide2","refreshSlideContent","slideIndex","_this$currSlide$index","_this$currSlide3","potentialHolderIndex","_itemHolder$slide3","holder","_this$element2","setScrollOffset","thumbBounds","thumbnail","thumbSelector","imageWidth","imageHeight","thumbAreaRect","fillZoomLevel","offsetX","offsetY","getCroppedBoundsByElement","getBoundsByElement","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition"],"sourceRoot":""}