@ix_waterford/lib 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.html +1 -1
- package/dist/index.js +121113 -5092
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/async/reactPlayerDash.js +0 -350
- package/dist/async/reactPlayerDash.js.map +0 -1
- package/dist/async/reactPlayerHls.js +0 -429
- package/dist/async/reactPlayerHls.js.map +0 -1
- package/dist/async/reactPlayerMux.js +0 -16075
- package/dist/async/reactPlayerMux.js.map +0 -1
- package/dist/async/reactPlayerPreview.js +0 -111
- package/dist/async/reactPlayerPreview.js.map +0 -1
- package/dist/async/reactPlayerSpotify.js +0 -518
- package/dist/async/reactPlayerSpotify.js.map +0 -1
- package/dist/async/reactPlayerTiktok.js +0 -488
- package/dist/async/reactPlayerTiktok.js.map +0 -1
- package/dist/async/reactPlayerTwitch.js +0 -586
- package/dist/async/reactPlayerTwitch.js.map +0 -1
- package/dist/async/reactPlayerVimeo.js +0 -4264
- package/dist/async/reactPlayerVimeo.js.map +0 -1
- package/dist/async/reactPlayerWistia.js +0 -767
- package/dist/async/reactPlayerWistia.js.map +0 -1
- package/dist/async/reactPlayerYouTube.js +0 -738
- package/dist/async/reactPlayerYouTube.js.map +0 -1
- package/dist/async/vendors-node_modules_custom-media-element_dist_custom-media-element_js-node_modules_media-tra-835023.js +0 -1253
- package/dist/async/vendors-node_modules_custom-media-element_dist_custom-media-element_js-node_modules_media-tra-835023.js.map +0 -1
- package/dist/async/vendors-node_modules_dashjs_dist_modern_esm_dash_all_min_js.js +0 -21
- package/dist/async/vendors-node_modules_dashjs_dist_modern_esm_dash_all_min_js.js.map +0 -1
- package/dist/async/vendors-node_modules_hls_js_dist_hls_mjs.js +0 -36691
- package/dist/async/vendors-node_modules_hls_js_dist_hls_mjs.js.map +0 -1
- package/dist/lib-react.js +0 -1462
- package/dist/lib-react.js.map +0 -1
- package/dist/vendors-node_modules_rspack_core_dist_cssExtractHmr_js-node_modules_dayjs_plugin_utc_js-node_-5eb95d.js +0 -53062
- package/dist/vendors-node_modules_rspack_core_dist_cssExtractHmr_js-node_modules_dayjs_plugin_utc_js-node_-5eb95d.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async/vendors-node_modules_custom-media-element_dist_custom-media-element_js-node_modules_media-tra-835023.js","sources":["/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/custom-media-element/dist/custom-media-element.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/audio-rendition-list.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/audio-rendition.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/audio-track-list.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/audio-track.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/change-event.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/index.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/mixin.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/rendition-event.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/utils.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/video-rendition-list.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/video-rendition.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/video-track-list.js","/Users/kirubakaran.r/Documents/projects/hub/components/waterford_library/node_modules/media-tracks/dist/video-track.js"],"sourcesContent":["const Events = [\n \"abort\",\n \"canplay\",\n \"canplaythrough\",\n \"durationchange\",\n \"emptied\",\n \"encrypted\",\n \"ended\",\n \"error\",\n \"loadeddata\",\n \"loadedmetadata\",\n \"loadstart\",\n \"pause\",\n \"play\",\n \"playing\",\n \"progress\",\n \"ratechange\",\n \"seeked\",\n \"seeking\",\n \"stalled\",\n \"suspend\",\n \"timeupdate\",\n \"volumechange\",\n \"waiting\",\n \"waitingforkey\",\n \"resize\",\n \"enterpictureinpicture\",\n \"leavepictureinpicture\",\n \"webkitbeginfullscreen\",\n \"webkitendfullscreen\",\n \"webkitpresentationmodechanged\"\n];\nconst Attributes = [\n \"autopictureinpicture\",\n \"disablepictureinpicture\",\n \"disableremoteplayback\",\n \"autoplay\",\n \"controls\",\n \"controlslist\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\"\n];\nfunction getAudioTemplateHTML(attrs) {\n return (\n /*html*/\n `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n audio {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <audio${serializeAttributes(attrs)}></audio>\n </slot>\n <slot></slot>\n `\n );\n}\nfunction getVideoTemplateHTML(attrs) {\n return (\n /*html*/\n `\n <style>\n :host {\n display: inline-block;\n line-height: 0;\n }\n\n video {\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, 50% 50%);\n }\n\n video::-webkit-media-text-track-container {\n transform: var(--media-webkit-text-track-transform);\n transition: var(--media-webkit-text-track-transition);\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `\n );\n}\nfunction CustomMediaMixin(superclass, { tag, is }) {\n const nativeElTest = globalThis.document?.createElement?.(tag, { is });\n const nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];\n return class CustomMedia extends superclass {\n static getTemplateHTML = tag.endsWith(\"audio\") ? getAudioTemplateHTML : getVideoTemplateHTML;\n static shadowRootOptions = { mode: \"open\" };\n static Events = Events;\n static #isDefined = false;\n static get observedAttributes() {\n CustomMedia.#define();\n const natAttrs = nativeElTest?.constructor?.observedAttributes ?? [];\n return [\n ...natAttrs,\n ...Attributes\n ];\n }\n static #define() {\n if (this.#isDefined) return;\n this.#isDefined = true;\n const propsToAttrs = new Set(this.observedAttributes);\n propsToAttrs.delete(\"muted\");\n for (const prop of nativeElProps) {\n if (prop in this.prototype) continue;\n if (typeof nativeElTest[prop] === \"function\") {\n this.prototype[prop] = function(...args) {\n this.#init();\n const fn = () => {\n if (this.call) return this.call(prop, ...args);\n const nativeFn = this.nativeEl?.[prop];\n return nativeFn?.apply(this.nativeEl, args);\n };\n return fn();\n };\n } else {\n const config = {\n get() {\n this.#init();\n const attr = prop.toLowerCase();\n if (propsToAttrs.has(attr)) {\n const val = this.getAttribute(attr);\n return val === null ? false : val === \"\" ? true : val;\n }\n return this.get?.(prop) ?? this.nativeEl?.[prop];\n }\n };\n if (prop !== prop.toUpperCase()) {\n config.set = function(val) {\n this.#init();\n const attr = prop.toLowerCase();\n if (propsToAttrs.has(attr)) {\n if (val === true || val === false || val == null) {\n this.toggleAttribute(attr, Boolean(val));\n } else {\n this.setAttribute(attr, val);\n }\n return;\n }\n if (this.set) {\n this.set(prop, val);\n return;\n }\n if (this.nativeEl) {\n this.nativeEl[prop] = val;\n }\n };\n }\n Object.defineProperty(this.prototype, prop, config);\n }\n }\n }\n // Private fields\n #isInit = false;\n #nativeEl = null;\n #childMap = /* @__PURE__ */ new Map();\n #childObserver;\n get;\n set;\n call;\n // If the custom element is defined before the custom element's HTML is parsed\n // no attributes will be available in the constructor (construction process).\n // Wait until initializing in the attributeChangedCallback or\n // connectedCallback or accessing any properties.\n get nativeEl() {\n this.#init();\n return this.#nativeEl ?? this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n }\n set nativeEl(val) {\n this.#nativeEl = val;\n }\n get defaultMuted() {\n return this.hasAttribute(\"muted\");\n }\n set defaultMuted(val) {\n this.toggleAttribute(\"muted\", val);\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(val) {\n this.setAttribute(\"src\", `${val}`);\n }\n get preload() {\n return this.getAttribute(\"preload\") ?? this.nativeEl?.preload;\n }\n set preload(val) {\n this.setAttribute(\"preload\", `${val}`);\n }\n #init() {\n if (this.#isInit) return;\n this.#isInit = true;\n this.init();\n }\n init() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: \"open\" });\n const attrs = namedNodeMapToObject(this.attributes);\n if (is) attrs.is = is;\n if (tag) attrs.part = tag;\n this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n }\n this.nativeEl.muted = this.hasAttribute(\"muted\");\n for (const prop of nativeElProps) {\n this.#upgradeProperty(prop);\n }\n this.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n this.shadowRoot.addEventListener(\"slotchange\", () => this.#syncMediaChildren());\n this.#syncMediaChildren();\n for (const type of this.constructor.Events) {\n this.shadowRoot.addEventListener(type, this, true);\n }\n }\n handleEvent(event) {\n if (event.target === this.nativeEl) {\n this.dispatchEvent(new CustomEvent(event.type, { detail: event.detail }));\n }\n }\n #syncMediaChildren() {\n const removeNativeChildren = new Map(this.#childMap);\n const defaultSlot = this.shadowRoot?.querySelector(\"slot:not([name])\");\n const mediaChildren = defaultSlot?.assignedElements({ flatten: true }).filter((el) => [\"track\", \"source\"].includes(el.localName));\n mediaChildren.forEach((el) => {\n removeNativeChildren.delete(el);\n let clone = this.#childMap.get(el);\n if (!clone) {\n clone = el.cloneNode();\n this.#childMap.set(el, clone);\n this.#childObserver?.observe(el, { attributes: true });\n }\n this.nativeEl?.append(clone);\n this.#enableDefaultTrack(clone);\n });\n removeNativeChildren.forEach((clone, el) => {\n clone.remove();\n this.#childMap.delete(el);\n });\n }\n #syncMediaChildAttribute(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\") {\n const { target, attributeName } = mutation;\n const clone = this.#childMap.get(target);\n if (clone && attributeName) {\n clone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n this.#enableDefaultTrack(clone);\n }\n }\n }\n }\n #enableDefaultTrack(trackEl) {\n if (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") {\n trackEl.track.mode = \"hidden\";\n }\n }\n #upgradeProperty(prop) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n const value = this[prop];\n delete this[prop];\n this[prop] = value;\n }\n }\n attributeChangedCallback(attrName, oldValue, newValue) {\n this.#init();\n this.#forwardAttribute(attrName, oldValue, newValue);\n }\n #forwardAttribute(attrName, _oldValue, newValue) {\n if ([\"id\", \"class\"].includes(attrName)) return;\n if (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) {\n return;\n }\n if (newValue === null) {\n this.nativeEl?.removeAttribute(attrName);\n } else if (this.nativeEl?.getAttribute(attrName) !== newValue) {\n this.nativeEl?.setAttribute(attrName, newValue);\n }\n }\n connectedCallback() {\n this.#init();\n }\n };\n}\nfunction getNativeElProps(nativeElTest) {\n const nativeElProps = [];\n for (let proto = Object.getPrototypeOf(nativeElTest); proto && proto !== HTMLElement.prototype; proto = Object.getPrototypeOf(proto)) {\n const props = Object.getOwnPropertyNames(proto);\n nativeElProps.push(...props);\n }\n return nativeElProps;\n}\nfunction serializeAttributes(attrs) {\n let html = \"\";\n for (const key in attrs) {\n if (!Attributes.includes(key)) continue;\n const value = attrs[key];\n if (value === \"\") html += ` ${key}`;\n else html += ` ${key}=\"${value}\"`;\n }\n return html;\n}\nfunction namedNodeMapToObject(namedNodeMap) {\n const obj = {};\n for (const attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\n}\nconst CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {\n}, {\n tag: \"video\"\n});\nconst CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {\n}, {\n tag: \"audio\"\n});\nexport {\n Attributes,\n CustomAudioElement,\n CustomMediaMixin,\n CustomVideoElement,\n Events\n};\n","import { RenditionEvent } from \"./rendition-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addRendition(track, rendition) {\n const renditionList = getPrivate(track).media.audioRenditions;\n getPrivate(rendition).media = getPrivate(track).media;\n getPrivate(rendition).track = track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.add(rendition);\n const index = renditionSet.size - 1;\n if (!(index in AudioRenditionList.prototype)) {\n Object.defineProperty(AudioRenditionList.prototype, index, {\n get() {\n return getCurrentRenditions(this)[index];\n }\n });\n }\n queueMicrotask(() => {\n if (!track.enabled) return;\n renditionList.dispatchEvent(new RenditionEvent(\"addrendition\", { rendition }));\n });\n}\nfunction removeRendition(rendition) {\n const renditionList = getPrivate(rendition).media.audioRenditions;\n const track = getPrivate(rendition).track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.delete(rendition);\n queueMicrotask(() => {\n const track2 = getPrivate(rendition).track;\n if (!track2.enabled) return;\n renditionList.dispatchEvent(new RenditionEvent(\"removerendition\", { rendition }));\n });\n}\nfunction selectedChanged(rendition) {\n const renditionList = getPrivate(rendition).media.audioRenditions;\n if (!renditionList || getPrivate(renditionList).changeRequested) return;\n getPrivate(renditionList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(renditionList).changeRequested;\n const track = getPrivate(rendition).track;\n if (!track.enabled) return;\n renditionList.dispatchEvent(new Event(\"change\"));\n });\n}\nfunction getCurrentRenditions(renditionList) {\n const media = getPrivate(renditionList).media;\n return [...media.audioTracks].filter((track) => track.enabled).flatMap((track) => [...getPrivate(track).renditionSet]);\n}\nclass AudioRenditionList extends EventTarget {\n #addRenditionCallback;\n #removeRenditionCallback;\n #changeCallback;\n [Symbol.iterator]() {\n return getCurrentRenditions(this).values();\n }\n get length() {\n return getCurrentRenditions(this).length;\n }\n getRenditionById(id) {\n return getCurrentRenditions(this).find((rendition) => `${rendition.id}` === `${id}`) ?? null;\n }\n get selectedIndex() {\n return getCurrentRenditions(this).findIndex((rendition) => rendition.selected);\n }\n set selectedIndex(index) {\n for (const [i, rendition] of getCurrentRenditions(this).entries()) {\n rendition.selected = i === index;\n }\n }\n get onaddrendition() {\n return this.#addRenditionCallback;\n }\n set onaddrendition(callback) {\n if (this.#addRenditionCallback) {\n this.removeEventListener(\"addrendition\", this.#addRenditionCallback);\n this.#addRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addRenditionCallback = callback;\n this.addEventListener(\"addrendition\", callback);\n }\n }\n get onremoverendition() {\n return this.#removeRenditionCallback;\n }\n set onremoverendition(callback) {\n if (this.#removeRenditionCallback) {\n this.removeEventListener(\"removerendition\", this.#removeRenditionCallback);\n this.#removeRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeRenditionCallback = callback;\n this.addEventListener(\"removerendition\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n AudioRenditionList,\n addRendition,\n removeRendition,\n selectedChanged\n};\n","import { selectedChanged } from \"./audio-rendition-list.js\";\nclass AudioRendition {\n src;\n id;\n bitrate;\n codec;\n #selected = false;\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n selectedChanged(this);\n }\n}\nexport {\n AudioRendition\n};\n","import { TrackEvent } from \"./change-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addAudioTrack(media, track) {\n const trackList = media.audioTracks;\n getPrivate(track).media = media;\n if (!getPrivate(track).renditionSet) {\n getPrivate(track).renditionSet = /* @__PURE__ */ new Set();\n }\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.add(track);\n const index = trackSet.size - 1;\n if (!(index in AudioTrackList.prototype)) {\n Object.defineProperty(AudioTrackList.prototype, index, {\n get() {\n return [...getPrivate(this).trackSet][index];\n }\n });\n }\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"addtrack\", { track }));\n });\n}\nfunction removeAudioTrack(track) {\n const trackList = getPrivate(track).media?.audioTracks;\n if (!trackList) return;\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.delete(track);\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"removetrack\", { track }));\n });\n}\nfunction enabledChanged(track) {\n const trackList = getPrivate(track).media.audioTracks;\n if (!trackList || getPrivate(trackList).changeRequested) return;\n getPrivate(trackList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(trackList).changeRequested;\n trackList.dispatchEvent(new Event(\"change\"));\n });\n}\nclass AudioTrackList extends EventTarget {\n #addTrackCallback;\n #removeTrackCallback;\n #changeCallback;\n constructor() {\n super();\n getPrivate(this).trackSet = /* @__PURE__ */ new Set();\n }\n get #tracks() {\n return getPrivate(this).trackSet;\n }\n [Symbol.iterator]() {\n return this.#tracks.values();\n }\n get length() {\n return this.#tracks.size;\n }\n getTrackById(id) {\n return [...this.#tracks].find((track) => track.id === id) ?? null;\n }\n get onaddtrack() {\n return this.#addTrackCallback;\n }\n set onaddtrack(callback) {\n if (this.#addTrackCallback) {\n this.removeEventListener(\"addtrack\", this.#addTrackCallback);\n this.#addTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addTrackCallback = callback;\n this.addEventListener(\"addtrack\", callback);\n }\n }\n get onremovetrack() {\n return this.#removeTrackCallback;\n }\n set onremovetrack(callback) {\n if (this.#removeTrackCallback) {\n this.removeEventListener(\"removetrack\", this.#removeTrackCallback);\n this.#removeTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeTrackCallback = callback;\n this.addEventListener(\"removetrack\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n AudioTrackList,\n addAudioTrack,\n enabledChanged,\n removeAudioTrack\n};\n","import { AudioRendition } from \"./audio-rendition.js\";\nimport { enabledChanged } from \"./audio-track-list.js\";\nimport { addRendition, removeRendition } from \"./audio-rendition-list.js\";\nconst AudioTrackKind = {\n alternative: \"alternative\",\n descriptions: \"descriptions\",\n main: \"main\",\n \"main-desc\": \"main-desc\",\n translation: \"translation\",\n commentary: \"commentary\"\n};\nclass AudioTrack {\n id;\n kind;\n label = \"\";\n language = \"\";\n sourceBuffer;\n #enabled = false;\n addRendition(src, codec, bitrate) {\n const rendition = new AudioRendition();\n rendition.src = src;\n rendition.codec = codec;\n rendition.bitrate = bitrate;\n addRendition(this, rendition);\n return rendition;\n }\n removeRendition(rendition) {\n removeRendition(rendition);\n }\n get enabled() {\n return this.#enabled;\n }\n set enabled(val) {\n if (this.#enabled === val) return;\n this.#enabled = val;\n enabledChanged(this);\n }\n}\nexport {\n AudioTrack,\n AudioTrackKind\n};\n","class TrackEvent extends Event {\n track;\n constructor(type, init) {\n super(type);\n this.track = init.track;\n }\n}\nexport {\n TrackEvent\n};\n","export * from \"./mixin.js\";\nimport { VideoTrack } from \"./video-track.js\";\nimport { VideoTrackList } from \"./video-track-list.js\";\nimport { VideoRendition } from \"./video-rendition.js\";\nimport { VideoRenditionList } from \"./video-rendition-list.js\";\nimport { AudioTrack } from \"./audio-track.js\";\nimport { AudioTrackList } from \"./audio-track-list.js\";\nimport { AudioRendition } from \"./audio-rendition.js\";\nimport { AudioRenditionList } from \"./audio-rendition-list.js\";\nimport { TrackEvent } from \"./change-event.js\";\nimport { RenditionEvent } from \"./rendition-event.js\";\nexport {\n AudioRendition,\n AudioRenditionList,\n AudioTrack,\n AudioTrackList,\n RenditionEvent,\n TrackEvent,\n VideoRendition,\n VideoRenditionList,\n VideoTrack,\n VideoTrackList\n};\n","import { VideoTrack } from \"./video-track.js\";\nimport { VideoTrackList, addVideoTrack, removeVideoTrack } from \"./video-track-list.js\";\nimport { AudioTrack } from \"./audio-track.js\";\nimport { AudioTrackList, addAudioTrack, removeAudioTrack } from \"./audio-track-list.js\";\nimport { VideoRenditionList } from \"./video-rendition-list.js\";\nimport { AudioRenditionList } from \"./audio-rendition-list.js\";\nimport { getPrivate } from \"./utils.js\";\nconst nativeVideoTracksFn = getBaseMediaTracksFn(globalThis.HTMLMediaElement, \"video\");\nconst nativeAudioTracksFn = getBaseMediaTracksFn(globalThis.HTMLMediaElement, \"audio\");\nfunction MediaTracksMixin(MediaElementClass) {\n if (!MediaElementClass?.prototype) return MediaElementClass;\n const videoTracksFn = getBaseMediaTracksFn(MediaElementClass, \"video\");\n if (!videoTracksFn || `${videoTracksFn}`.includes(\"[native code]\")) {\n Object.defineProperty(MediaElementClass.prototype, \"videoTracks\", {\n get() {\n return getVideoTracks(this);\n }\n });\n }\n const audioTracksFn = getBaseMediaTracksFn(MediaElementClass, \"audio\");\n if (!audioTracksFn || `${audioTracksFn}`.includes(\"[native code]\")) {\n Object.defineProperty(MediaElementClass.prototype, \"audioTracks\", {\n get() {\n return getAudioTracks(this);\n }\n });\n }\n if (!(\"addVideoTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.addVideoTrack = function(kind, label = \"\", language = \"\") {\n const track = new VideoTrack();\n track.kind = kind;\n track.label = label;\n track.language = language;\n addVideoTrack(this, track);\n return track;\n };\n }\n if (!(\"removeVideoTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.removeVideoTrack = removeVideoTrack;\n }\n if (!(\"addAudioTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.addAudioTrack = function(kind, label = \"\", language = \"\") {\n const track = new AudioTrack();\n track.kind = kind;\n track.label = label;\n track.language = language;\n addAudioTrack(this, track);\n return track;\n };\n }\n if (!(\"removeAudioTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.removeAudioTrack = removeAudioTrack;\n }\n if (!(\"videoRenditions\" in MediaElementClass.prototype)) {\n Object.defineProperty(MediaElementClass.prototype, \"videoRenditions\", {\n get() {\n return initVideoRenditions(this);\n }\n });\n }\n const initVideoRenditions = (media) => {\n let renditions = getPrivate(media).videoRenditions;\n if (!renditions) {\n renditions = new VideoRenditionList();\n getPrivate(renditions).media = media;\n getPrivate(media).videoRenditions = renditions;\n }\n return renditions;\n };\n if (!(\"audioRenditions\" in MediaElementClass.prototype)) {\n Object.defineProperty(MediaElementClass.prototype, \"audioRenditions\", {\n get() {\n return initAudioRenditions(this);\n }\n });\n }\n const initAudioRenditions = (media) => {\n let renditions = getPrivate(media).audioRenditions;\n if (!renditions) {\n renditions = new AudioRenditionList();\n getPrivate(renditions).media = media;\n getPrivate(media).audioRenditions = renditions;\n }\n return renditions;\n };\n return MediaElementClass;\n}\nfunction getBaseMediaTracksFn(MediaElementClass, type) {\n if (MediaElementClass?.prototype) {\n return Object.getOwnPropertyDescriptor(MediaElementClass.prototype, `${type}Tracks`)?.get;\n }\n}\nfunction getVideoTracks(media) {\n let tracks = getPrivate(media).videoTracks;\n if (!tracks) {\n tracks = new VideoTrackList();\n getPrivate(media).videoTracks = tracks;\n if (nativeVideoTracksFn) {\n const nativeTracks = nativeVideoTracksFn.call(media.nativeEl ?? media);\n for (const nativeTrack of nativeTracks) {\n addVideoTrack(media, nativeTrack);\n }\n nativeTracks.addEventListener(\"change\", () => {\n tracks.dispatchEvent(new Event(\"change\"));\n });\n nativeTracks.addEventListener(\"addtrack\", (event) => {\n if ([...tracks].some((t) => t instanceof VideoTrack)) {\n for (const nativeTrack of nativeTracks) {\n removeVideoTrack(nativeTrack);\n }\n return;\n }\n addVideoTrack(media, event.track);\n });\n nativeTracks.addEventListener(\"removetrack\", (event) => {\n removeVideoTrack(event.track);\n });\n }\n }\n return tracks;\n}\nfunction getAudioTracks(media) {\n let tracks = getPrivate(media).audioTracks;\n if (!tracks) {\n tracks = new AudioTrackList();\n getPrivate(media).audioTracks = tracks;\n if (nativeAudioTracksFn) {\n const nativeTracks = nativeAudioTracksFn.call(media.nativeEl ?? media);\n for (const nativeTrack of nativeTracks) {\n addAudioTrack(media, nativeTrack);\n }\n nativeTracks.addEventListener(\"change\", () => {\n tracks.dispatchEvent(new Event(\"change\"));\n });\n nativeTracks.addEventListener(\"addtrack\", (event) => {\n if ([...tracks].some((t) => t instanceof AudioTrack)) {\n for (const nativeTrack of nativeTracks) {\n removeAudioTrack(nativeTrack);\n }\n return;\n }\n addAudioTrack(media, event.track);\n });\n nativeTracks.addEventListener(\"removetrack\", (event) => {\n removeAudioTrack(event.track);\n });\n }\n }\n return tracks;\n}\nexport {\n MediaTracksMixin\n};\n","class RenditionEvent extends Event {\n rendition;\n constructor(type, init) {\n super(type);\n this.rendition = init.rendition;\n }\n}\nexport {\n RenditionEvent\n};\n","const privateProps = /* @__PURE__ */ new WeakMap();\nfunction getPrivate(instance) {\n return privateProps.get(instance) ?? setPrivate(instance, {});\n}\nfunction setPrivate(instance, props) {\n let saved = privateProps.get(instance);\n if (!saved) privateProps.set(instance, saved = {});\n return Object.assign(saved, props);\n}\nexport {\n getPrivate,\n setPrivate\n};\n","import { RenditionEvent } from \"./rendition-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addRendition(track, rendition) {\n const renditionList = getPrivate(track).media.videoRenditions;\n getPrivate(rendition).media = getPrivate(track).media;\n getPrivate(rendition).track = track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.add(rendition);\n const index = renditionSet.size - 1;\n if (!(index in VideoRenditionList.prototype)) {\n Object.defineProperty(VideoRenditionList.prototype, index, {\n get() {\n return getCurrentRenditions(this)[index];\n }\n });\n }\n queueMicrotask(() => {\n if (!track.selected) return;\n renditionList.dispatchEvent(new RenditionEvent(\"addrendition\", { rendition }));\n });\n}\nfunction removeRendition(rendition) {\n const renditionList = getPrivate(rendition).media.videoRenditions;\n const track = getPrivate(rendition).track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.delete(rendition);\n queueMicrotask(() => {\n const track2 = getPrivate(rendition).track;\n if (!track2.selected) return;\n renditionList.dispatchEvent(new RenditionEvent(\"removerendition\", { rendition }));\n });\n}\nfunction selectedChanged(rendition) {\n const renditionList = getPrivate(rendition).media.videoRenditions;\n if (!renditionList || getPrivate(renditionList).changeRequested) return;\n getPrivate(renditionList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(renditionList).changeRequested;\n const track = getPrivate(rendition).track;\n if (!track.selected) return;\n renditionList.dispatchEvent(new Event(\"change\"));\n });\n}\nfunction getCurrentRenditions(renditionList) {\n const media = getPrivate(renditionList).media;\n return [...media.videoTracks].filter((track) => track.selected).flatMap((track) => [...getPrivate(track).renditionSet]);\n}\nclass VideoRenditionList extends EventTarget {\n #addRenditionCallback;\n #removeRenditionCallback;\n #changeCallback;\n [Symbol.iterator]() {\n return getCurrentRenditions(this).values();\n }\n get length() {\n return getCurrentRenditions(this).length;\n }\n getRenditionById(id) {\n return getCurrentRenditions(this).find((rendition) => `${rendition.id}` === `${id}`) ?? null;\n }\n get selectedIndex() {\n return getCurrentRenditions(this).findIndex((rendition) => rendition.selected);\n }\n set selectedIndex(index) {\n for (const [i, rendition] of getCurrentRenditions(this).entries()) {\n rendition.selected = i === index;\n }\n }\n get onaddrendition() {\n return this.#addRenditionCallback;\n }\n set onaddrendition(callback) {\n if (this.#addRenditionCallback) {\n this.removeEventListener(\"addrendition\", this.#addRenditionCallback);\n this.#addRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addRenditionCallback = callback;\n this.addEventListener(\"addrendition\", callback);\n }\n }\n get onremoverendition() {\n return this.#removeRenditionCallback;\n }\n set onremoverendition(callback) {\n if (this.#removeRenditionCallback) {\n this.removeEventListener(\"removerendition\", this.#removeRenditionCallback);\n this.#removeRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeRenditionCallback = callback;\n this.addEventListener(\"removerendition\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n VideoRenditionList,\n addRendition,\n removeRendition,\n selectedChanged\n};\n","import { selectedChanged } from \"./video-rendition-list.js\";\nclass VideoRendition {\n src;\n id;\n width;\n height;\n bitrate;\n frameRate;\n codec;\n #selected = false;\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n selectedChanged(this);\n }\n}\nexport {\n VideoRendition\n};\n","import { TrackEvent } from \"./change-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addVideoTrack(media, track) {\n const trackList = media.videoTracks;\n getPrivate(track).media = media;\n if (!getPrivate(track).renditionSet) {\n getPrivate(track).renditionSet = /* @__PURE__ */ new Set();\n }\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.add(track);\n const index = trackSet.size - 1;\n if (!(index in VideoTrackList.prototype)) {\n Object.defineProperty(VideoTrackList.prototype, index, {\n get() {\n return [...getPrivate(this).trackSet][index];\n }\n });\n }\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"addtrack\", { track }));\n });\n}\nfunction removeVideoTrack(track) {\n const trackList = getPrivate(track).media?.videoTracks;\n if (!trackList) return;\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.delete(track);\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"removetrack\", { track }));\n });\n}\nfunction selectedChanged(selected) {\n const trackList = getPrivate(selected).media.videoTracks ?? [];\n let hasUnselected = false;\n for (const track of trackList) {\n if (track === selected) continue;\n track.selected = false;\n hasUnselected = true;\n }\n if (hasUnselected) {\n if (getPrivate(trackList).changeRequested) return;\n getPrivate(trackList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(trackList).changeRequested;\n trackList.dispatchEvent(new Event(\"change\"));\n });\n }\n}\nclass VideoTrackList extends EventTarget {\n #addTrackCallback;\n #removeTrackCallback;\n #changeCallback;\n constructor() {\n super();\n getPrivate(this).trackSet = /* @__PURE__ */ new Set();\n }\n get #tracks() {\n return getPrivate(this).trackSet;\n }\n [Symbol.iterator]() {\n return this.#tracks.values();\n }\n get length() {\n return this.#tracks.size;\n }\n getTrackById(id) {\n return [...this.#tracks].find((track) => track.id === id) ?? null;\n }\n get selectedIndex() {\n return [...this.#tracks].findIndex((track) => track.selected);\n }\n get onaddtrack() {\n return this.#addTrackCallback;\n }\n set onaddtrack(callback) {\n if (this.#addTrackCallback) {\n this.removeEventListener(\"addtrack\", this.#addTrackCallback);\n this.#addTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addTrackCallback = callback;\n this.addEventListener(\"addtrack\", callback);\n }\n }\n get onremovetrack() {\n return this.#removeTrackCallback;\n }\n set onremovetrack(callback) {\n if (this.#removeTrackCallback) {\n this.removeEventListener(\"removetrack\", this.#removeTrackCallback);\n this.#removeTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeTrackCallback = callback;\n this.addEventListener(\"removetrack\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n VideoTrackList,\n addVideoTrack,\n removeVideoTrack,\n selectedChanged\n};\n","import { selectedChanged } from \"./video-track-list.js\";\nimport { VideoRendition } from \"./video-rendition.js\";\nimport { addRendition, removeRendition } from \"./video-rendition-list.js\";\nconst VideoTrackKind = {\n alternative: \"alternative\",\n captions: \"captions\",\n main: \"main\",\n sign: \"sign\",\n subtitles: \"subtitles\",\n commentary: \"commentary\"\n};\nclass VideoTrack {\n id;\n kind;\n label = \"\";\n language = \"\";\n sourceBuffer;\n #selected = false;\n addRendition(src, width, height, codec, bitrate, frameRate) {\n const rendition = new VideoRendition();\n rendition.src = src;\n rendition.width = width;\n rendition.height = height;\n rendition.frameRate = frameRate;\n rendition.bitrate = bitrate;\n rendition.codec = codec;\n addRendition(this, rendition);\n return rendition;\n }\n removeRendition(rendition) {\n removeRendition(rendition);\n }\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n if (val !== true) return;\n selectedChanged(this);\n }\n}\nexport {\n VideoTrack,\n VideoTrackKind\n};\n"],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;;;;;;;ACpVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA"}
|