stormcloud-video-player 0.8.60 → 0.8.61
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/stormcloud-vp.min.js +1 -1
- package/lib/Player.cjs.map +1 -1
- package/lib/StormcloudPlayer.cjs +83 -29
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +87 -31
- package/lib/index.cjs.map +1 -1
- package/lib/patterns.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +3 -2
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +53 -11
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdTimingService.cjs.map +1 -1
- package/lib/player/HlsEngine.cjs.map +1 -1
- package/lib/player/PlaceholderLayer.cjs.map +1 -1
- package/lib/player/PlayerControls.cjs.map +1 -1
- package/lib/player/Scte35CueManager.cjs.map +1 -1
- package/lib/player/Scte35Parser.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +83 -29
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/playerTypes.cjs.map +1 -1
- package/lib/players/FilePlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +83 -29
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +83 -29
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/pal.cjs +9 -5
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/sdk/pal.d.cts +1 -0
- package/lib/types.cjs.map +1 -1
- package/lib/types.d.cts +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +87 -31
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.cjs +25 -4
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/devUrl.cjs.map +1 -1
- package/lib/utils/polyfills.cjs.map +1 -1
- package/lib/utils/tracking.cjs +3 -2
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/trackingIngest.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +27 -5
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.d.cts +1 -1
- package/lib/utils/vastMacros.cjs +24 -4
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +2 -0
- package/lib/utils/vastTrackingMacros.cjs.map +1 -1
- package/lib/utils.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\Scte35CueManager.cjs"],"names":[],"mappings":"AAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager_exports = {};\n__export(Scte35CueManager_exports, {\n Scte35CueManager: () => Scte35CueManager\n});\nmodule.exports = __toCommonJS(Scte35CueManager_exports);\n\n// src/player/Scte35Parser.ts\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Scte35CueManager\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\Scte35CueManager.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","Scte35CueManager_exports","Scte35CueManager","module","exports","getFragmentStartSeconds","frag","candidates","start","startPTS","candidate","Number","isFinite","debug","callbacks","pendingScte35Cues","Map","recentScte35CueKeys","recentScte35CueLimit","tsScte35Pids","Set","pmtPids","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","source","readiness","context","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","marker","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","set","trimRecentScte35CueMaps","type","onEarlyStartCue","shouldAcceptScte35EndCue","console","log","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","delete","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","Array","entries","filter","forEach","getScte35CueKey","raw","getScte35MarkerRaw","spliceEventId","toIdentityString","splice_event_id","segmentationEventId","segmentation_event_id","daterangeId","attrs","ID","scteValue","ptsSeconds","Math","round","floor","Date","now","String","trim","length","isStrongScte35CueKey","startsWith","recentKey","has","size","firstKey","keys","next"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager_exports = {};\n__export(Scte35CueManager_exports, {\n Scte35CueManager: () => Scte35CueManager\n});\nmodule.exports = __toCommonJS(Scte35CueManager_exports);\n\n// src/player/Scte35Parser.ts\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Scte35CueManager\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\Scte35Parser.cjs"],"names":["Object","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","Scte35Parser_exports","decodeId3ValueToText","detectTsPacketFormat","isManifestBasedMarker","getFragmentStartSeconds","normalizeFragmentPayload","parseAttributeList","parseCueOutCont","parseCueOutDuration","parseScte35Binary","parseScte35FromId3","parseScte35FromTsPackets","toNumber","module","exports","match","num","parseFloat","trim","Number","isNaN","dStr","d","res","elapsedMatch","durationMatch","e","elapsed","duration","slashMatch","regex","exec","rawVal","startsWith","endsWith","slice","attrs","val","n","raw","marker","tag","String","includes","id3","decoder","TextDecoder","fatal","text","decode","test","out","i","length","fromCharCode","frag","candidates","start","startPTS","candidate","isFinite","cueOutMatch","arg","dur","type","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/Scte35Parser.ts\nvar Scte35Parser_exports = {};\n__export(Scte35Parser_exports, {\n decodeId3ValueToText: () => decodeId3ValueToText,\n detectTsPacketFormat: () => detectTsPacketFormat,\n getFragmentStartSeconds: () => getFragmentStartSeconds,\n isManifestBasedMarker: () => isManifestBasedMarker,\n normalizeFragmentPayload: () => normalizeFragmentPayload,\n parseAttributeList: () => parseAttributeList,\n parseCueOutCont: () => parseCueOutCont,\n parseCueOutDuration: () => parseCueOutDuration,\n parseScte35Binary: () => parseScte35Binary,\n parseScte35FromId3: () => parseScte35FromId3,\n parseScte35FromTsPackets: () => parseScte35FromTsPackets,\n toNumber: () => toNumber\n});\nmodule.exports = __toCommonJS(Scte35Parser_exports);\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n decodeId3ValueToText,\n detectTsPacketFormat,\n getFragmentStartSeconds,\n isManifestBasedMarker,\n normalizeFragmentPayload,\n parseAttributeList,\n parseCueOutCont,\n parseCueOutDuration,\n parseScte35Binary,\n parseScte35FromId3,\n parseScte35FromTsPackets,\n toNumber\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\Scte35Parser.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","Scte35Parser_exports","decodeId3ValueToText","detectTsPacketFormat","getFragmentStartSeconds","isManifestBasedMarker","normalizeFragmentPayload","parseAttributeList","parseCueOutCont","parseCueOutDuration","parseScte35Binary","parseScte35FromId3","parseScte35FromTsPackets","toNumber","module","exports","num","parseFloat","trim","Number","isNaN","match","dStr","d","res","elapsedMatch","durationMatch","e","elapsed","duration","slashMatch","attrs","regex","exec","rawVal","startsWith","endsWith","slice","val","n","marker","raw","tag","String","includes","id3","splice_command_type","decoder","TextDecoder","fatal","text","decode","test","out","i","length","fromCharCode","frag","candidates","start","startPTS","candidate","isFinite","cueOutMatch","arg","dur","type","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","Uint8Array","bin","payload","ArrayBuffer","isView","view","buffer","byteOffset","byteLength","data","packetSizes","packetSize","tsPayloadOffset","offset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","Math","min","programNumber","pid","add","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","has","size","firstKey","values","next","delete","addScte35SectionMarker","markers","source","push","appendScte35Bytes","bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","set","Array","packetInfo","sectionAssemblers","Map","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","buf","bytePos","bitPos","readBits","numBits","result","remainingInByte","toRead","currentByte","shift","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","flags","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAIA,YAAYC,OAAOC,cAAc;AACrC,IAAIC,mBAAmBF,OAAOG,wBAAwB;AACtD,IAAIC,oBAAoBJ,OAAOK,mBAAmB;AAClD,IAAIC,eAAeN,OAAOO,SAAS,CAACC,cAAc;AAClD,IAAIC,WAAW,kBAACC,QAAQC;IACtB,IAAK,IAAIC,QAAQD,IACfZ,UAAUW,QAAQE,MAAM;QAAEC,KAAKF,GAAG,CAACC,KAAK;QAAEE,YAAY;IAAK;AAC/D;AACA,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCnB,UAAUiB,IAAII,KAAK;oBAAEP,KAAK,SAALA;+BAAWI,IAAI,CAACG,IAAI;;oBAAEN,YAAY,CAAEK,CAAAA,OAAOjB,iBAAiBe,MAAMG,IAAG,KAAMD,KAAKL,UAAU;gBAAC;;YAFpH,QAAK,YAAWV,kBAAkBa,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIM,eAAe,sBAACC;WAAQR,YAAYhB,UAAU,CAAC,GAAG,cAAc;QAAEyB,OAAO;IAAK,IAAID;;AAEtF,6BAA6B;AAC7B,IAAIE,uBAAuB,CAAC;AAC5BhB,SAASgB,sBAAsB;IAC7BC,sBAAsB,SAAtBA;eAA4BA;;IAC5BC,sBAAsB,SAAtBA;eAA4BA;;IAC5BC,yBAAyB,SAAzBA;eAA+BA;;IAC/BC,uBAAuB,SAAvBA;eAA6BA;;IAC7BC,0BAA0B,SAA1BA;eAAgCA;;IAChCC,oBAAoB,SAApBA;eAA0BA;;IAC1BC,iBAAiB,SAAjBA;eAAuBA;;IACvBC,qBAAqB,SAArBA;eAA2BA;;IAC3BC,mBAAmB,SAAnBA;eAAyBA;;IACzBC,oBAAoB,SAApBA;eAA0BA;;IAC1BC,0BAA0B,SAA1BA;eAAgCA;;IAChCC,UAAU,SAAVA;eAAgBA;;AAClB;AACAC,OAAOC,OAAO,GAAGjB,aAAaG;AAC9B,SAASQ,oBAAoBT,KAAK;IAChC,IAAMgB,MAAMC,WAAWjB,MAAMkB,IAAI;IACjC,IAAI,CAACC,OAAOC,KAAK,CAACJ,MAAM,OAAOA;IAC/B,IAAMK,QAAQrB,MAAMqB,KAAK,CAAC,2CAA2CrB,MAAMqB,KAAK,CAAC;IACjF,IAAIA,SAASA,KAAK,CAAC,EAAE,IAAI,MAAM;QAC7B,IAAMC,OAAOD,KAAK,CAAC,EAAE;QACrB,IAAME,IAAIN,WAAWK;QACrB,OAAOH,OAAOC,KAAK,CAACG,KAAK,KAAK,IAAIA;IACpC;IACA,OAAO,KAAK;AACd;AACA,SAASf,gBAAgBR,KAAK;IAC5B,IAAMwB,MAAM,CAAC;IACb,IAAMC,eAAezB,MAAMqB,KAAK,CAAC;IACjC,IAAMK,gBAAgB1B,MAAMqB,KAAK,CAAC;IAClC,IAAII,gBAAgBA,YAAY,CAAC,EAAE,IAAI,MAAM;QAC3C,IAAME,IAAIV,WAAWQ,YAAY,CAAC,EAAE;QACpC,IAAI,CAACN,OAAOC,KAAK,CAACO,IAAIH,IAAII,OAAO,GAAGD;IACtC;IACA,IAAID,iBAAiBA,aAAa,CAAC,EAAE,IAAI,MAAM;QAC7C,IAAMH,IAAIN,WAAWS,aAAa,CAAC,EAAE;QACrC,IAAI,CAACP,OAAOC,KAAK,CAACG,IAAIC,IAAIK,QAAQ,GAAGN;IACvC;IACA,IAAI,CAAE,CAAA,aAAaC,GAAE,KAAM,CAAE,CAAA,cAAcA,GAAE,GAAI;QAC/C,IAAMM,aAAa9B,MAAMqB,KAAK,CAAC;QAC/B,IAAIS,cAAcA,UAAU,CAAC,EAAE,IAAIA,UAAU,CAAC,EAAE,EAAE;YAChD,IAAMF,UAAUX,WAAWa,UAAU,CAAC,EAAE;YACxC,IAAMD,WAAWZ,WAAWa,UAAU,CAAC,EAAE;YACzC,IAAI,CAACX,OAAOC,KAAK,CAACQ,YAAY,CAAE,CAAA,aAAaJ,GAAE,GAAIA,IAAII,OAAO,GAAGA;YACjE,IAAI,CAACT,OAAOC,KAAK,CAACS,aAAa,CAAE,CAAA,cAAcL,GAAE,GAAIA,IAAIK,QAAQ,GAAGA;QACtE;IACF;IACA,IAAI,aAAaL,OAAO,cAAcA,KAAK,OAAOA;IAClD,OAAO,KAAK;AACd;AACA,SAASjB,mBAAmBP,KAAK;IAC/B,IAAM+B,QAAQ,CAAC;IACf,IAAMC,QAAQ;IACd,IAAIX;IACJ,MAAO,AAACA,CAAAA,QAAQW,MAAMC,IAAI,CAACjC,MAAK,MAAO,KAAM;YAC/BqB,SACCA,MAAAA;QADb,IAAMzB,OAAMyB,UAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;QACxB,IAAIa,UAASb,QAAAA,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAYA,KAAK,CAAC,EAAE,cAApBA,kBAAAA,OAAwB;QACrC,IAAIa,OAAOC,UAAU,CAAC,QAAQD,OAAOE,QAAQ,CAAC,MAAM;YAClDF,SAASA,OAAOG,KAAK,CAAC,GAAG,CAAC;QAC5B;QACA,IAAIzC,KAAK;YACPmC,KAAK,CAACnC,IAAI,GAAGsC;QACf;IACF;IACA,OAAOH;AACT;AACA,SAASlB,SAASyB,GAAG;IACnB,IAAIA,OAAO,MAAM,OAAO,KAAK;IAC7B,IAAMC,IAAI,OAAOD,QAAQ,WAAWrB,WAAWqB,OAAOnB,OAAOmB;IAC7D,OAAOnB,OAAOC,KAAK,CAACmB,KAAK,KAAK,IAAIA;AACpC;AACA,SAASlC,sBAAsBmC,MAAM;IACnC,IAAMC,MAAMD,OAAOC,GAAG;IACtB,IAAI,CAACA,KAAK,OAAO;IACjB,IAAIA,IAAIC,GAAG,EAAE;QACX,IAAMA,MAAMC,OAAOF,IAAIC,GAAG;QAC1B,OAAOA,IAAIE,QAAQ,CAAC,oBAAoBF,IAAIE,QAAQ,CAAC,mBAAmBF,IAAIE,QAAQ,CAAC;IACvF;IACA,IAAIH,IAAII,GAAG,EAAE,OAAO;IACpB,IAAIJ,IAAIK,mBAAmB,EAAE,OAAO;IACpC,OAAO;AACT;AACA,SAAS5C,qBAAqBF,KAAK;IACjC,IAAI;QACF,IAAI,OAAOA,UAAU,UAAU,OAAOA;QACtC,IAAM+C,UAAU,IAAIC,YAAY,SAAS;YAAEC,OAAO;QAAM;QACxD,IAAMC,OAAOH,QAAQI,MAAM,CAACnD;QAC5B,IAAIkD,QAAQ,cAAcE,IAAI,CAACF,OAAO,OAAOA;QAC7C,IAAIG,MAAM;QACV,IAAK,IAAIC,IAAI,GAAGA,IAAItD,MAAMuD,MAAM,EAAED,IAChCD,OAAOV,OAAOa,YAAY,CAACxD,KAAK,CAACsD,EAAE;QACrC,OAAOD;IACT,EAAE,eAAM;QACN,OAAO,KAAK;IACd;AACF;AACA,SAASjD,wBAAwBqD,IAAI;IACnC,IAAMC,aAAa;QAACD,iBAAAA,2BAAAA,KAAME,KAAK;QAAEF,iBAAAA,2BAAAA,KAAMG,QAAQ;KAAC;QAC3C,kCAAA,2BAAA;;QAAL,QAAK,YAAmBF,+BAAnB,SAAA,6BAAA,QAAA,yBAAA,iCAA+B;YAA/B,IAAMG,YAAN;YACH,IAAI,OAAOA,cAAc,YAAY1C,OAAO2C,QAAQ,CAACD,YAAY;gBAC/D,OAAOA;YACT;QACF;;QAJK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAKL,OAAO,KAAK;AACd;AACA,SAASlD,mBAAmB+B,GAAG;IAC7B,IAAMQ,OAAOhD,qBAAqBwC,IAAI1C,KAAK;IAC3C,IAAI,CAACkD,MAAM,OAAO,KAAK;IACvB,IAAMa,cAAcb,KAAK7B,KAAK,CAAC,qCAAqC6B,KAAK7B,KAAK,CAAC;IAC/E,IAAI0C,aAAa;YACFA;QAAb,IAAMC,MAAM,EAACD,gBAAAA,WAAW,CAAC,EAAE,cAAdA,2BAAAA,gBAAkB,IAAI7C,IAAI;QACvC,IAAM+C,MAAMxD,oBAAoBuD;QAChC,IAAMxB,SAAS;YACb0B,MAAM;WACHxB,IAAIyB,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYzB,IAAIyB,UAAU;QAAC,IAAI,CAAC,GAC9DF,QAAQ,KAAK,IAAI;YAAEG,iBAAiBH;QAAI,IAAI,CAAC;YAChDxB,KAAK;gBAAEI,KAAKK;YAAK;;QAEnB,OAAOV;IACT;IACA,IAAM6B,kBAAkBnB,KAAK7B,KAAK,CAAC;IACnC,IAAIgD,iBAAiB;YACNA;QAAb,IAAML,OAAM,EAACK,oBAAAA,eAAe,CAAC,EAAE,cAAlBA,+BAAAA,oBAAsB,IAAInD,IAAI;QAC3C,IAAMoD,OAAO9D,gBAAgBwD;QAC7B,IAAMxB,UAAS;YACb0B,MAAM;WACHxB,IAAIyB,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYzB,IAAIyB,UAAU;QAAC,IAAI,CAAC,GAC9DG,CAAAA,iBAAAA,2BAAAA,KAAMzC,QAAQ,MAAK,KAAK,IAAI;YAAEuC,iBAAiBE,KAAKzC,QAAQ;QAAC,IAAI,CAAC;YACrEY,KAAK;gBAAEI,KAAKK;YAAK;;QAEnB,OAAOV;IACT;IACA,IAAM+B,aAAarB,KAAK7B,KAAK,CAAC,sBAAsB6B,KAAK7B,KAAK,CAAC;IAC/D,IAAIkD,YAAY;QACd,IAAM/B,UAAS;YACb0B,MAAM;WACHxB,IAAIyB,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYzB,IAAIyB,UAAU;QAAC,IAAI,CAAC;YACjE1B,KAAK;gBAAEI,KAAKK;YAAK;;QAEnB,OAAOV;IACT;IACA,IAAMgC,iBAAiBtB,KAAK7B,KAAK,CAAC;IAClC,IAAImD,gBAAgB;YACeA,kBAGZzC;QAHrB,IAAMA,QAAQxB,oBAAmBiE,mBAAAA,cAAc,CAAC,EAAE,cAAjBA,8BAAAA,mBAAqB;QACtD,IAAMC,aAAa,gBAAgB1C,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;QACzE,IAAM2C,YAAY,eAAe3C,SAASA,KAAK,CAAC,YAAY,KAAK,KAAK;QACtE,IAAM4C,QAAQhC,QAAOZ,eAAAA,KAAK,CAAC,QAAQ,cAAdA,0BAAAA,eAAkB;QACvC,IAAMF,WAAWhB,SAASkB,KAAK,CAAC,WAAW;QAC3C,IAAI0C,cAAc,wBAAwBrB,IAAI,CAACuB,QAAQ;YACrD,IAAMnC,UAAS;gBACb0B,MAAM;eACHxB,IAAIyB,UAAU,KAAK,KAAK,IAAI;gBAAEA,YAAYzB,IAAIyB,UAAU;YAAC,IAAI,CAAC,GAC9DtC,aAAa,KAAK,IAAI;gBAAEuC,iBAAiBvC;YAAS,IAAI,CAAC;gBAC1DY,KAAK;oBAAEI,KAAKK;oBAAMnB,OAAAA;gBAAM;;YAE1B,OAAOS;QACT;QACA,IAAIkC,WAAW;YACb,IAAMlC,UAAS;gBACb0B,MAAM;eACHxB,IAAIyB,UAAU,KAAK,KAAK,IAAI;gBAAEA,YAAYzB,IAAIyB,UAAU;YAAC,IAAI,CAAC;gBACjE1B,KAAK;oBAAEI,KAAKK;oBAAMnB,OAAAA;gBAAM;;YAE1B,OAAOS;QACT;IACF;IACA,IAAI,cAAcY,IAAI,CAACF,OAAO;QAC5B,IAAMV,UAAS;YACb0B,MAAM;WACHxB,IAAIyB,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYzB,IAAIyB,UAAU;QAAC,IAAI,CAAC;YACjE1B,KAAK;gBAAEI,KAAKK;YAAK;;QAEnB,OAAOV;IACT;IACA,IAAI,aAAaY,IAAI,CAACF,OAAO;QAC3B,IAAMV,UAAS;YACb0B,MAAM;WACHxB,IAAIyB,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYzB,IAAIyB,UAAU;QAAC,IAAI,CAAC;YACjE1B,KAAK;gBAAEI,KAAKK;YAAK;;QAEnB,OAAOV;IACT;IACA,IAAIE,AAAS,YAATA,IAAI1C,KAAK,EAAY4E,aAAY;QACnC,IAAMC,MAAMnE,kBAAkBgC,IAAI1C,KAAK;QACvC,IAAI6E,KAAK,OAAOA;IAClB;IACA,OAAO,KAAK;AACd;AACA,SAASvE,yBAAyBwE,OAAO;IACvC,IAAIA,AAAO,YAAPA,SAAmBF,aAAY;QACjC,OAAOE;IACT;IACA,IAAIA,AAAO,YAAPA,SAAmBC,cAAa;QAClC,OAAO,IAAIH,WAAWE;IACxB;IACA,IAAIC,YAAYC,MAAM,CAACF,UAAU;QAC/B,IAAMG,OAAOH;QACb,OAAO,IAAIF,WAAWK,KAAKC,MAAM,EAAED,KAAKE,UAAU,EAAEF,KAAKG,UAAU;IACrE;IACA,OAAO,KAAK;AACd;AACA,SAASjF,qBAAqBkF,IAAI;IAChC,IAAMC,cAAc;QAAC;QAAK;QAAK;KAAI;QAC9B,kCAAA,2BAAA;;QAAL,QAAK,YAAoBA,gCAApB,SAAA,6BAAA,QAAA,yBAAA,iCAAiC;YAAjC,IAAMC,aAAN;YACH,IAAMC,kBAAkBD,eAAe,MAAM,IAAI;YACjD,IAAK,IAAIE,SAAS,GAAGA,SAASF,YAAYE,SAAU;gBAClD,IAAIC,iBAAiB;gBACrB,IAAK,IAAIC,cAAcF,QAAQE,cAAcH,kBAAkBH,KAAK9B,MAAM,IAAImC,iBAAiB,GAAGC,eAAeJ,WAAY;oBAC3H,IAAIF,IAAI,CAACM,cAAcH,gBAAgB,KAAK,IAAI;wBAC9C;oBACF;oBACAE;gBACF;gBACA,IAAIA,kBAAkB,GAAG;oBACvB,OAAO;wBAAED,QAAAA;wBAAQF,YAAAA;wBAAYC,iBAAAA;oBAAgB;gBAC/C;YACF;QACF;;QAdK;QAAA;;;iBAAA,6BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAeL,OAAO,KAAK;AACd;AACA,SAASI,mBAAmBd,OAAO,EAAEe,gBAAgB;IACnD,IAAI,CAACA,kBAAkB;QACrB,OAAO,KAAK;IACd;IACA,IAAMC,eAAehB,OAAO,CAAC,EAAE;IAC/B,IAAIgB,gBAAgB,MAAM;QACxB,OAAO,KAAK;IACd;IACA,IAAMC,eAAe,IAAID;IACzB,OAAOC,eAAejB,QAAQvB,MAAM,GAAGwC,eAAe,KAAK;AAC7D;AACA,SAASC,oBAAoBX,IAAI,EAAEI,MAAM;QAC9BJ,QAAqCA;IAA9C,OAAO,AAAC,CAAA,EAACA,SAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,oBAAAA,SAAoB,KAAK,EAAC,KAAM,MAAKA,UAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,qBAAAA,UAAoB;AACpE;AACA,SAASY,gBAAgBnB,OAAO,EAAEe,gBAAgB,EAAEK,OAAO;IACzD,IAAMH,eAAeH,mBAAmBd,SAASe;IACjD,IAAIE,gBAAgB,QAAQA,eAAe,KAAKjB,QAAQvB,MAAM,EAAE;QAC9D;IACF;IACA,IAAIuB,OAAO,CAACiB,aAAa,KAAK,GAAG;QAC/B;IACF;IACA,IAAMI,gBAAgBH,oBAAoBlB,SAASiB;IACnD,IAAMK,aAAaC,KAAKC,GAAG,CACzBxB,QAAQvB,MAAM,EACdwC,eAAe,IAAII;IAErB,IAAK,IAAIV,SAASM,eAAe,GAAGN,SAAS,KAAKW,aAAa,GAAGX,UAAU,EAAG;YACtDX,iBAA8BA,WACvCA,YAAwCA;QADtD,IAAMyB,gBAAgB,EAACzB,kBAAAA,OAAO,CAACW,OAAO,cAAfX,6BAAAA,kBAAmB,MAAM,MAAKA,YAAAA,OAAO,CAACW,SAAS,EAAE,cAAnBX,uBAAAA,YAAuB;QAC5E,IAAM0B,MAAM,AAAC,CAAA,EAAC1B,aAAAA,OAAO,CAACW,SAAS,EAAE,cAAnBX,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACW,SAAS,EAAE,cAAnBX,wBAAAA,aAAuB;QAC7E,IAAIyB,kBAAkB,GAAG;YACvBL,QAAQO,GAAG,CAACD;QACd;IACF;AACF;AACA,SAASE,0BAA0BrB,IAAI,EAAE1B,KAAK,EAAEgD,GAAG;IACjD,IAAIlB,SAAS9B;IACb,MAAO8B,SAAS,KAAKkB,IAAK;YACZtB,cACGA,QAObA,uBACAA,SACAA,SACAA;QAXF,IAAM3C,OAAM2C,eAAAA,IAAI,CAACI,OAAO,cAAZJ,0BAAAA,eAAgB;QAC5B,IAAM9B,UAAS8B,SAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,oBAAAA,SAAoB;QACnC,IAAMuB,kBAAkBnB,SAAS;QACjC,IAAMoB,gBAAgBD,kBAAkBrD;QACxC,IAAIsD,gBAAgBF,KAAK;YACvB,OAAO;QACT;QACA,IAAMG,eAAevD,UAAU,IAAIZ,OAAOa,YAAY,EACpD6B,wBAAAA,IAAI,CAACuB,gBAAgB,cAArBvB,mCAAAA,wBAAyB,IACzBA,UAAAA,IAAI,CAACuB,kBAAkB,EAAE,cAAzBvB,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAACuB,kBAAkB,EAAE,cAAzBvB,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAACuB,kBAAkB,EAAE,cAAzBvB,qBAAAA,UAA6B,KAC3B;QACJ,IAAI3C,QAAQ,OAAOoE,iBAAiB,UAAUA,iBAAiB,QAAQ;YACrE,OAAO;QACT;QACArB,SAASoB;IACX;IACA,OAAO;AACT;AACA,SAASE,gBAAgBjC,OAAO,EAAEe,gBAAgB,EAAEmB,YAAY;QAalClC,WAA+CA;IAZ3E,IAAMiB,eAAeH,mBAAmBd,SAASe;IACjD,IAAIE,gBAAgB,QAAQA,eAAe,MAAMjB,QAAQvB,MAAM,EAAE;QAC/D;IACF;IACA,IAAIuB,OAAO,CAACiB,aAAa,KAAK,GAAG;QAC/B;IACF;IACA,IAAMI,gBAAgBH,oBAAoBlB,SAASiB;IACnD,IAAMK,aAAaC,KAAKC,GAAG,CACzBxB,QAAQvB,MAAM,EACdwC,eAAe,IAAII;IAErB,IAAMc,oBAAoB,AAAC,CAAA,EAACnC,YAAAA,OAAO,CAACiB,eAAe,GAAG,cAA1BjB,uBAAAA,YAA8B,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACiB,eAAe,GAAG,cAA1BjB,wBAAAA,aAA8B;IACzG,IAAIW,SAASM,eAAe,KAAKkB;IACjC,MAAOxB,SAAS,KAAKW,aAAa,EAAG;YAChBtB,iBACKA,YAAwCA,YACzCA,YAAwCA;QAF/D,IAAMoC,cAAapC,kBAAAA,OAAO,CAACW,OAAO,cAAfX,6BAAAA,kBAAmB;QACtC,IAAMqC,gBAAgB,AAAC,CAAA,EAACrC,aAAAA,OAAO,CAACW,SAAS,EAAE,cAAnBX,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACW,SAAS,EAAE,cAAnBX,wBAAAA,aAAuB;QACvF,IAAMsC,eAAe,AAAC,CAAA,EAACtC,aAAAA,OAAO,CAACW,SAAS,EAAE,cAAnBX,wBAAAA,aAAuB,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAACW,SAAS,EAAE,cAAnBX,wBAAAA,aAAuB;QACtF,IAAM8B,kBAAkBnB,SAAS;QACjC,IAAMoB,gBAAgBR,KAAKC,GAAG,CAACM,kBAAkBQ,cAAchB,aAAa;QAC5E,IAAIc,eAAe,OAAOA,eAAe,KAAKR,0BAA0B5B,SAAS8B,iBAAiBC,gBAAgB;YAChHG,aAAaP,GAAG,CAACU;QACnB;QACA1B,SAASmB,kBAAkBQ;IAC7B;AACF;AACA,SAASC,4BAA4BC,OAAO,EAAEC,iBAAiB;IAC7D,IAAIC,WAAW;IACf,IAAK,IAAIlE,IAAI,GAAGA,IAAIgE,QAAQ/D,MAAM,EAAED,IAAK;YACXgE;QAA5BE,WAAWA,WAAW,OAAMF,aAAAA,OAAO,CAAChE,EAAE,cAAVgE,wBAAAA,aAAc,OAAO;IACnD;IACA,IAAM1H,MAAM,AAAC,GAAoB4H,OAAlBF,QAAQ/D,MAAM,EAAC,KAAY,OAATiE;IACjC,IAAID,kBAAkBE,GAAG,CAAC7H,MAAM;QAC9B,OAAO;IACT;IACA2H,kBAAkBd,GAAG,CAAC7G;IACtB,IAAI2H,kBAAkBG,IAAI,GAAG,KAAK;QAChC,IAAMC,WAAWJ,kBAAkBK,MAAM,GAAGC,IAAI,GAAG7H,KAAK;QACxD,IAAI2H,UAAU;YACZJ,kBAAkBO,MAAM,CAACH;QAC3B;IACF;IACA,OAAO;AACT;AACA,SAASI,uBAAuBT,OAAO,EAAEU,OAAO,EAAET,iBAAiB;IACjE,IAAID,OAAO,CAAC,EAAE,KAAK,OAAOD,4BAA4BC,SAASC,oBAAoB;QACjF;IACF;IACA,IAAM/E,SAAS9B,kBAAkB4G;IACjC,IAAI,CAAC9E,QAAQ;QACX;IACF;IACAA,OAAOC,GAAG,GAAG,wCACR,SAAOD,OAAOC,GAAG,MAAK,YAAYD,OAAOC,GAAG,GAAGD,OAAOC,GAAG,GAAG,CAAC;QAChEwF,QAAQ;;IAEVD,QAAQE,IAAI,CAAC1F;AACf;AACA,SAAS2F,kBAAkB3B,GAAG,EAAE4B,KAAK,EAAEC,UAAU,EAAEL,OAAO,EAAET,iBAAiB;IAC3E,IAAMe,YAAYD,WAAWhJ,GAAG,CAACmH;IACjC,IAAI,CAAC8B,WAAW;QACd;IACF;IACA,IAAK,IAAIhF,IAAI,GAAGA,IAAI8E,MAAM7E,MAAM,IAAI+E,UAAUF,KAAK,CAAC7E,MAAM,GAAG+E,UAAUC,cAAc,EAAEjF,IAAK;YACrE8E;QAArBE,UAAUF,KAAK,CAACF,IAAI,EAACE,WAAAA,KAAK,CAAC9E,EAAE,cAAR8E,sBAAAA,WAAY;IACnC;IACA,IAAIE,UAAUF,KAAK,CAAC7E,MAAM,IAAI+E,UAAUC,cAAc,EAAE;QACtDF,WAAWP,MAAM,CAACtB;QAClBuB,uBAAuB,IAAInD,WAAW0D,UAAUF,KAAK,GAAGJ,SAAST;IACnE;AACF;AACA,SAASiB,iCAAiChC,GAAG,EAAE1B,OAAO,EAAEe,gBAAgB,EAAEwC,UAAU,EAAEL,OAAO,EAAET,iBAAiB;IAC9G,IAAIzC,QAAQvB,MAAM,KAAK,GAAG;QACxB;IACF;IACA,IAAIkC,SAAS;IACb,IAAII,kBAAkB;YACCf;QAArB,IAAMgB,gBAAehB,YAAAA,OAAO,CAAC,EAAE,cAAVA,uBAAAA,YAAc;QACnC,IAAM2D,oBAAoBJ,WAAWhJ,GAAG,CAACmH;QACzC,IAAIiC,qBAAqB3C,eAAe,GAAG;YACzCqC,kBACE3B,KACA1B,QAAQ4D,QAAQ,CAAC,GAAGrC,KAAKC,GAAG,CAAC,IAAIR,cAAchB,QAAQvB,MAAM,IAC7D8E,YACAL,SACAT;QAEJ;QACAc,WAAWP,MAAM,CAACtB;QAClBf,SAAS,IAAIK;IACf,OAAO;QACLqC,kBAAkB3B,KAAK1B,SAASuD,YAAYL,SAAST;QACrD;IACF;IACA,MAAO9B,SAAS,KAAKX,QAAQvB,MAAM,CAAE;QACnC,IAAMoF,UAAU7D,OAAO,CAACW,OAAO;QAC/B,IAAIkD,WAAW,QAAQA,YAAY,KAAK;YACtC;QACF;QACA,IAAMxC,gBAAgBH,oBAAoBlB,SAASW;QACnD,IAAMmD,cAAc,IAAIzC;QACxB,IAAIA,iBAAiB,KAAKyC,eAAe,GAAG;YAC1C;QACF;QACA,IAAInD,SAASmD,eAAe9D,QAAQvB,MAAM,EAAE;YAC1CwE,uBACEjD,QAAQ4D,QAAQ,CAACjD,QAAQA,SAASmD,cAClCZ,SACAT;YAEF9B,UAAUmD;QACZ,OAAO;YACLP,WAAWQ,GAAG,CAACrC,KAAK;gBAClB4B,OAAOU,MAAMrJ,IAAI,CAACqF,QAAQ4D,QAAQ,CAACjD;gBACnC8C,gBAAgBK;YAClB;YACA;QACF;IACF;AACF;AACA,SAAShI,yBAAyByE,IAAI,EAAE2B,YAAY,EAAEd,OAAO,EAAEqB,iBAAiB;IAC9E,IAAMwB,aAAa5I,qBAAqBkF;IACxC,IAAI,CAAC0D,YAAY;QACf,OAAO,EAAE;IACX;IACA,IAAMf,UAAU,EAAE;IAClB,IAAMgB,oBAAoB,aAAa,GAAG,IAAIC;IAC9C,IAAK,IAAItD,cAAcoD,WAAWtD,MAAM,EAAEE,cAAcoD,WAAWxD,UAAU,IAAIF,KAAK9B,MAAM,EAAEoC,eAAeoD,WAAWxD,UAAU,CAAE;QAClI,IAAM2D,UAAUvD,cAAcoD,WAAWvD,eAAe;QACxD,IAAIH,IAAI,CAAC6D,QAAQ,KAAK,IAAI;YACxB;QACF;QACA,IAAMC,aAAa9D,IAAI,CAAC6D,UAAU,EAAE;QACpC,IAAME,YAAY/D,IAAI,CAAC6D,UAAU,EAAE;QACnC,IAAMG,aAAahE,IAAI,CAAC6D,UAAU,EAAE;QACpC,IAAIC,cAAc,QAAQC,aAAa,QAAQC,cAAc,QAAQ,AAACF,CAAAA,aAAa,GAAE,MAAO,GAAG;YAC7F;QACF;QACA,IAAMtD,mBAAmB,AAACsD,CAAAA,aAAa,EAAC,MAAO;QAC/C,IAAM3C,MAAM,AAAC2C,CAAAA,aAAa,EAAC,KAAM,IAAIC;QACrC,IAAME,yBAAyBD,cAAc,IAAI;QACjD,IAAME,aAAaD,2BAA2B,KAAKA,2BAA2B;QAC9E,IAAI,CAACC,YAAY;YACf;QACF;QACA,IAAIC,eAAeN,UAAU;QAC7B,IAAII,2BAA2B,GAAG;YAChC,IAAMG,mBAAmBpE,IAAI,CAACmE,aAAa;YAC3C,IAAIC,oBAAoB,MAAM;gBAC5B;YACF;YACAD,gBAAgB,IAAIC;QACtB;QACA,IAAMC,aAAarD,KAAKC,GAAG,CAAC4C,UAAU,KAAK7D,KAAK9B,MAAM;QACtD,IAAIiG,gBAAgBE,cAAcF,gBAAgBnE,KAAK9B,MAAM,EAAE;YAC7D;QACF;QACA,IAAMuB,UAAUO,KAAKqD,QAAQ,CAACc,cAAcE;QAC5C,IAAIlD,QAAQ,GAAG;YACbP,gBAAgBnB,SAASe,kBAAkBK;QAC7C,OAAO,IAAIA,QAAQuB,GAAG,CAACjB,MAAM;YAC3BO,gBAAgBjC,SAASe,kBAAkBmB;QAC7C,OAAO,IAAIA,aAAaS,GAAG,CAACjB,MAAM;YAChCgC,iCACEhC,KACA1B,SACAe,kBACAmD,mBACAhB,SACAT;QAEJ;IACF;IACA,OAAOS;AACT;AACA,IAAI2B,0BAAY;aAAZA,UACUC,GAAG;gCADbD;QAEA,IAAI,CAACC,GAAG,GAAGA;QACX,IAAI,CAACC,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAG;;;;YAEhBC,KAAAA;mBAAAA,SAAAA,SAASC,OAAO;gBACd,IAAIC,SAAS;gBACb,MAAOD,UAAU,EAAG;oBAClB,IAAI,IAAI,CAACH,OAAO,IAAI,IAAI,CAACD,GAAG,CAACrG,MAAM,EAAE,OAAO0G;oBAC5C,IAAMC,kBAAkB,IAAI,IAAI,CAACJ,MAAM;oBACvC,IAAMK,SAAS9D,KAAKC,GAAG,CAAC0D,SAASE;oBACjC,IAAME,cAAc,IAAI,CAACR,GAAG,CAAC,IAAI,CAACC,OAAO,CAAC;oBAC1C,IAAMQ,QAAQH,kBAAkBC;oBAChC,IAAMG,OAAO,AAAC,CAAA,KAAKH,MAAK,IAAK,IAAI;oBACjC,IAAMI,OAAOH,eAAeC,QAAQC;oBACpCL,SAASA,UAAUE,SAASI;oBAC5B,IAAI,CAACT,MAAM,IAAIK;oBACf,IAAI,IAAI,CAACL,MAAM,IAAI,GAAG;wBACpB,IAAI,CAACA,MAAM,GAAG;wBACd,IAAI,CAACD,OAAO,IAAI;oBAClB;oBACAG,WAAWG;gBACb;gBACA,OAAOF,WAAW;YACpB;;;YACAO,KAAAA;mBAAAA,SAAAA,SAASjI,CAAC;gBACR,IAAI,CAACwH,QAAQ,CAACxH;YAChB;;;YACIkI,KAAAA;iBAAJ;gBACE,OAAO,IAAI,CAACX,MAAM,KAAK,IAAI,IAAI,CAACD,OAAO,GAAG,IAAI,CAACA,OAAO,GAAG;YAC3D;;;;;AAEF,SAASa,eAAeC,CAAC,EAAEC,kBAAkB;IAC3C,IAAMC,oBAAoBF,EAAEZ,QAAQ,CAAC,OAAO;IAC5C,IAAI,CAACc,mBAAmB;QACtBF,EAAEZ,QAAQ,CAAC;QACX,OAAO,KAAK;IACd;IACAY,EAAEZ,QAAQ,CAAC;IACX,IAAMe,OAAOH,EAAEZ,QAAQ,CAAC;IACxB,IAAMgB,MAAMJ,EAAEZ,QAAQ,CAAC;IACvB,IAAMiB,WAAW,AAACF,CAAAA,OAAO,aAAaC,MAAMH,kBAAiB,IAAK;IAClE,OAAOI,WAAW;AACpB;AACA,SAASC,iCAAiCC,kBAAkB;IAC1D,OAAQA;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO;QACT;YACE,OAAO,KAAK;IAChB;AACF;AACA,SAASC,kCAAkCC,UAAU;QAKjDA,cACAA,eACAA,eACAA,eAK2BA,eAAmCA,eAA+BA,eAA6BA,eAClGA,eAIZA,eAwBiBA,oBAKJA;IA9C3B,IAAIA,WAAW7H,MAAM,GAAG,IAAI;QAC1B,OAAO,KAAK;IACd;IACA,IAAM8H,aAAa1I,OAAOa,YAAY,EACpC4H,eAAAA,UAAU,CAAC,EAAE,cAAbA,0BAAAA,eAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,IACjBA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAEnB,IAAIC,eAAe,QAAQ;QACzB,OAAO,KAAK;IACd;IACA,IAAMC,sBAAsB,EAACF,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,KAAK,WAAY,CAAA,EAACA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,MAAM,EAAC,IAAM,CAAA,EAACA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,MAAM,CAAA,MAAMA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAC7I,IAAMG,kBAAkB,AAAC,CAAA,EAACH,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,KAAK,GAAE,MAAO;IACzD,IAAIG,iBAAiB;QACnB,OAAO,KAAK;IACd;IACA,IAAMC,SAAQJ,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;IAC/B,IAAMK,0BAA0B,AAACD,CAAAA,QAAQ,GAAE,MAAO;IAClD,IAAME,2BAA2B,AAACF,CAAAA,QAAQ,EAAC,MAAO;IAClD,IAAI/F,SAAS;IACb,IAAI,CAACgG,yBAAyB;YACLL;QAAvB,IAAMO,kBAAiBP,sBAAAA,UAAU,CAAC3F,OAAO,cAAlB2F,iCAAAA,sBAAsB;QAC7C3F,UAAU,IAAIkG,iBAAiB;QAC/B,IAAIlG,SAAS2F,WAAW7H,MAAM,EAAE;YAC9B,OAAO,KAAK;QACd;IACF;IACA,IAAIa,kBAAkB,KAAK;IAC3B,IAAIsH,0BAA0B;YAILN,qBAAyCA,gBAA4CA,gBAAwCA,gBAAsCA;QAH1L,IAAI3F,SAAS,IAAI2F,WAAW7H,MAAM,EAAE;YAClC,OAAO,KAAK;QACd;QACA,IAAMqI,gBAAgB,EAACR,sBAAAA,UAAU,CAAC3F,OAAO,cAAlB2F,iCAAAA,sBAAsB,KAAK,aAAa,EAACA,iBAAAA,UAAU,CAAC3F,SAAS,EAAE,cAAtB2F,4BAAAA,iBAA0B,KAAK,WAAY,CAAA,EAACA,iBAAAA,UAAU,CAAC3F,SAAS,EAAE,cAAtB2F,4BAAAA,iBAA0B,MAAM,EAAC,IAAM,CAAA,EAACA,iBAAAA,UAAU,CAAC3F,SAAS,EAAE,cAAtB2F,4BAAAA,iBAA0B,MAAM,CAAA,MAAMA,iBAAAA,UAAU,CAAC3F,SAAS,EAAE,cAAtB2F,4BAAAA,iBAA0B;QACpNhH,kBAAkBwH,gBAAgB;QAClCnG,UAAU;IACZ;IACA,IAAIA,SAAS,IAAI2F,WAAW7H,MAAM,EAAE;QAClC,OAAO,KAAK;IACd;IACAkC,UAAU;IACV,IAAMoG,0BAAyBT,qBAAAA,UAAU,CAAC3F,OAAO,cAAlB2F,gCAAAA,qBAAsB;IACrD3F,UAAU,IAAIoG;IACd,IAAIpG,UAAU2F,WAAW7H,MAAM,EAAE;QAC/B,OAAO,KAAK;IACd;IACA,IAAM2H,sBAAqBE,sBAAAA,UAAU,CAAC3F,OAAO,cAAlB2F,iCAAAA,sBAAsB;IACjD,IAAMU,aAAab,iCAAiCC;IACpD,IAAI,CAACY,YAAY;QACf,OAAO,KAAK;IACd;IACA,OAAO;QACL5H,MAAM4H;OACH1H,oBAAoB,KAAK,IAAI;QAAEA,iBAAAA;IAAgB,IAAI,CAAC;QACvDkH,qBAAAA;;AAEJ;AACA,SAASS,mCAAmC1G,IAAI,EAAEI,MAAM;QAIxBJ,cAA2BA;IAHzD,IAAII,SAAS,IAAIJ,KAAK9B,MAAM,EAAE;QAC5B,OAAO,KAAK;IACd;IACA,IAAMyI,uBAAuB,EAAC3G,eAAAA,IAAI,CAACI,OAAO,cAAZJ,0BAAAA,eAAgB,MAAM,MAAKA,SAAAA,IAAI,CAACI,SAAS,EAAE,cAAhBJ,oBAAAA,SAAoB;IAC7E,IAAI4G,mBAAmBxG,SAAS;IAChC,IAAMoB,gBAAgBR,KAAKC,GAAG,CAC5BjB,KAAK9B,MAAM,EACX0I,mBAAmBD;IAErB,MAAOC,mBAAmB,KAAKpF,cAAe;YACtBxB,wBACGA;QADzB,IAAM6G,iBAAgB7G,yBAAAA,IAAI,CAAC4G,iBAAiB,cAAtB5G,oCAAAA,yBAA0B;QAChD,IAAM8G,oBAAmB9G,UAAAA,IAAI,CAAC4G,mBAAmB,EAAE,cAA1B5G,qBAAAA,UAA8B;QACvD,IAAM+G,sBAAsBH,mBAAmB;QAC/C,IAAMI,oBAAoBD,sBAAsBD;QAChD,IAAIE,oBAAoBxF,eAAe;YACrC,OAAO,KAAK;QACd;QACA,IAAIqF,kBAAkB,GAAG;YACvB,IAAMI,mBAAmBnB,kCACvB9F,KAAKqD,QAAQ,CAAC0D,qBAAqBC;YAErC,IAAIC,kBAAkB;gBACpB,OAAOA;YACT;QACF;QACAL,mBAAmBI;IACrB;IACA,OAAO,KAAK;AACd;AACA,SAAS3L,kBAAkB2E,IAAI;IAC7B,IAAMsF,IAAI,IAAIhB,UAAUtE;IACxB,IAAMsD,UAAUgC,EAAEZ,QAAQ,CAAC;IAC3B,IAAIpB,YAAY,KAAK,OAAO,KAAK;IACjCgC,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACX,IAAM5D,gBAAgBwE,EAAEZ,QAAQ,CAAC;IACjC,IAAI5D,iBAAiB,KAAKd,KAAK9B,MAAM,GAAG,IAAI4C,eAAe;QACzD,OAAO,KAAK;IACd;IACAwE,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACX,IAAMwC,aAAa5B,EAAEZ,QAAQ,CAAC;IAC9B,IAAMyC,YAAY7B,EAAEZ,QAAQ,CAAC;IAC7B,IAAMa,qBAAqB2B,aAAa,aAAaC;IACrD7B,EAAEZ,QAAQ,CAAC;IACXY,EAAEZ,QAAQ,CAAC;IACX,IAAM0C,sBAAsB9B,EAAEZ,QAAQ,CAAC;IACvC,IAAM2C,oBAAoB/B,EAAEZ,QAAQ,CAAC;IACrC,IAAI+B;IACJ,IAAI1H,kBAAkB,KAAK;IAC3B,IAAID,aAAa,KAAK;IACtB,IAAIwI,gBAAgB,KAAK;IACzB,IAAMC,mBAAmBjC,EAAEF,YAAY;IACvC,IAAIiC,sBAAsB,GAAG;QAC3BC,gBAAgBhC,EAAEZ,QAAQ,CAAC;QAC3B,IAAM8C,SAASlC,EAAEZ,QAAQ,CAAC,OAAO;QACjCY,EAAEZ,QAAQ,CAAC;QACX,IAAI8C,QAAQ,OAAO,KAAK;QACxB,IAAMC,eAAenC,EAAEZ,QAAQ,CAAC,OAAO;QACvC,IAAMgD,oBAAoBpC,EAAEZ,QAAQ,CAAC,OAAO;QAC5C,IAAMiD,eAAerC,EAAEZ,QAAQ,CAAC,OAAO;QACvC,IAAMkD,sBAAsBtC,EAAEZ,QAAQ,CAAC,OAAO;QAC9CY,EAAEZ,QAAQ,CAAC;QACX+B,aAAagB,eAAe,UAAU;QACtC,IAAIC,qBAAqB,CAACE,qBAAqB;YAC7C9I,aAAauG,eAAeC,GAAGC;QACjC,OAAO,IAAI,CAACmC,mBAAmB;YAC7B,IAAMpB,iBAAiBhB,EAAEZ,QAAQ,CAAC;YAClC,IAAK,IAAIzG,IAAI,GAAGA,IAAIqI,gBAAgBrI,IAAK;gBACvCqH,EAAEZ,QAAQ,CAAC;gBACX,IAAI,CAACkD,qBAAqB;oBACxB,IAAMC,sBAAsBxC,eAAeC,GAAGC;oBAC9C,IAAIzG,eAAe,KAAK,GAAG;wBACzBA,aAAa+I;oBACf;gBACF;YACF;QACF;QACA,IAAIF,cAAc;YAChBrC,EAAEZ,QAAQ,CAAC;YACXY,EAAEZ,QAAQ,CAAC;YACX,IAAMe,OAAOH,EAAEZ,QAAQ,CAAC;YACxB,IAAMgB,MAAMJ,EAAEZ,QAAQ,CAAC;YACvB,IAAM6B,gBAAgBd,OAAO,aAAaC;YAC1C3G,kBAAkBwH,gBAAgB;QACpC;QACAjB,EAAEZ,QAAQ,CAAC;QACXY,EAAEZ,QAAQ,CAAC;QACXY,EAAEZ,QAAQ,CAAC;IACb,OAAO,IAAI2C,sBAAsB,GAAG;QAClCvI,aAAauG,eAAeC,GAAGC;IACjC,OAAO;QACL,OAAO,KAAK;IACd;IACA,IAAMuC,2BAA2BV,wBAAwB,OAAO9B,EAAEF,YAAY,GAAGmC,mBAAmBH;IACpG,IAAMH,mBAAmBP,mCACvB1G,MACA8H;IAEF,IAAIb,kBAAkB;QACpBR,aAAaQ,iBAAiBpI,IAAI;QAClC,IAAIE,oBAAoB,KAAK,GAAG;YAC9BA,kBAAkBkI,iBAAiBlI,eAAe;QACpD;IACF;IACA,IAAI,CAAC0H,YAAY;QACf,OAAO,KAAK;IACd;IACA,IAAMtJ,SAAS;QACb0B,MAAM4H;OACH3H,eAAe,KAAK,IAAI;QAAEA,YAAAA;IAAW,IAAI,CAAC,GAC1CC,oBAAoB,KAAK,IAAI;QAAEA,iBAAAA;IAAgB,IAAI,CAAC;QACvD3B,KAAK;YACHK,qBAAqB4J;WAClBC,kBAAkB,KAAK,IAAI;YAAES,iBAAiBT;QAAc,IAAI,CAAC,GACjEL,CAAAA,6BAAAA,uCAAAA,iBAAkBhB,mBAAmB,MAAK,KAAK,IAAI;YAAE+B,uBAAuBf,iBAAiBhB,mBAAmB;QAAC,IAAI,CAAC;;IAG7H,OAAO9I;AACT;AACA,6DAA6D;AAC7D,KAAM1B,CAAAA,OAAOC,OAAO,GAAG;IACrBb,sBAAAA;IACAC,sBAAAA;IACAC,yBAAAA;IACAC,uBAAAA;IACAC,0BAAAA;IACAC,oBAAAA;IACAC,iBAAAA;IACAC,qBAAAA;IACAC,mBAAAA;IACAC,oBAAAA;IACAC,0BAAAA;IACAC,UAAAA;AACF,CAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/Scte35Parser.ts\nvar Scte35Parser_exports = {};\n__export(Scte35Parser_exports, {\n decodeId3ValueToText: () => decodeId3ValueToText,\n detectTsPacketFormat: () => detectTsPacketFormat,\n getFragmentStartSeconds: () => getFragmentStartSeconds,\n isManifestBasedMarker: () => isManifestBasedMarker,\n normalizeFragmentPayload: () => normalizeFragmentPayload,\n parseAttributeList: () => parseAttributeList,\n parseCueOutCont: () => parseCueOutCont,\n parseCueOutDuration: () => parseCueOutDuration,\n parseScte35Binary: () => parseScte35Binary,\n parseScte35FromId3: () => parseScte35FromId3,\n parseScte35FromTsPackets: () => parseScte35FromTsPackets,\n toNumber: () => toNumber\n});\nmodule.exports = __toCommonJS(Scte35Parser_exports);\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n decodeId3ValueToText,\n detectTsPacketFormat,\n getFragmentStartSeconds,\n isManifestBasedMarker,\n normalizeFragmentPayload,\n parseAttributeList,\n parseCueOutCont,\n parseCueOutDuration,\n parseScte35Binary,\n parseScte35FromId3,\n parseScte35FromTsPackets,\n toNumber\n});\n"]}
|
|
@@ -2815,6 +2815,7 @@ function toDevSafeUrl(rawUrl) {
|
|
|
2815
2815
|
// src/sdk/pal.ts
|
|
2816
2816
|
var PAL_SDK_URL = "https://imasdk.googleapis.com/pal/sdkloader/pal.js";
|
|
2817
2817
|
var _nonceLoader;
|
|
2818
|
+
var _nonceLoaderAllowStorage;
|
|
2818
2819
|
var _palLoadPromise;
|
|
2819
2820
|
function loadPalSdk() {
|
|
2820
2821
|
var _window_goog;
|
|
@@ -2857,12 +2858,15 @@ function loadPalSdk() {
|
|
|
2857
2858
|
});
|
|
2858
2859
|
return _palLoadPromise;
|
|
2859
2860
|
}
|
|
2860
|
-
function getOrCreateNonceLoader() {
|
|
2861
|
-
if (_nonceLoader)
|
|
2861
|
+
function getOrCreateNonceLoader(allowStorage) {
|
|
2862
|
+
if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {
|
|
2863
|
+
return _nonceLoader;
|
|
2864
|
+
}
|
|
2862
2865
|
var goog = window.goog;
|
|
2863
2866
|
var consentSettings = new goog.pal.ConsentSettings();
|
|
2864
|
-
consentSettings.allowStorage =
|
|
2867
|
+
consentSettings.allowStorage = allowStorage;
|
|
2865
2868
|
_nonceLoader = new goog.pal.NonceLoader(consentSettings);
|
|
2869
|
+
_nonceLoaderAllowStorage = allowStorage;
|
|
2866
2870
|
return _nonceLoader;
|
|
2867
2871
|
}
|
|
2868
2872
|
function createPalNonceManager() {
|
|
@@ -2871,7 +2875,7 @@ function createPalNonceManager() {
|
|
|
2871
2875
|
return {
|
|
2872
2876
|
generateNonce: function generateNonce() {
|
|
2873
2877
|
return _async_to_generator(function() {
|
|
2874
|
-
var options, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2878
|
+
var options, _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2875
2879
|
var _arguments = arguments;
|
|
2876
2880
|
return _ts_generator(this, function(_state) {
|
|
2877
2881
|
switch(_state.label){
|
|
@@ -2891,7 +2895,7 @@ function createPalNonceManager() {
|
|
|
2891
2895
|
];
|
|
2892
2896
|
case 2:
|
|
2893
2897
|
_state.sent();
|
|
2894
|
-
loader = getOrCreateNonceLoader();
|
|
2898
|
+
loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
|
|
2895
2899
|
goog = window.goog;
|
|
2896
2900
|
request = new goog.pal.NonceRequest();
|
|
2897
2901
|
request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
|
|
@@ -3076,6 +3080,8 @@ function ingestPlayerTracking(licenseKey, channel, body) {
|
|
|
3076
3080
|
}
|
|
3077
3081
|
// src/utils/vastEnvironmentSignals.ts
|
|
3078
3082
|
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
3083
|
+
var WEB_SESSION_STORAGE_KEY = "stormcloud.web.sid";
|
|
3084
|
+
var inMemoryWebSessionId;
|
|
3079
3085
|
var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
|
|
3080
3086
|
var DEVICE_ID_STORAGE_KEYS = [
|
|
3081
3087
|
"rdid",
|
|
@@ -3097,7 +3103,7 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3097
3103
|
var _ref;
|
|
3098
3104
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3099
3105
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3100
|
-
var realDeviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3106
|
+
var realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3101
3107
|
var deviceId = realDeviceId;
|
|
3102
3108
|
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType();
|
|
3103
3109
|
var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
|
|
@@ -3126,9 +3132,12 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3126
3132
|
deviceTypeHint: deviceTypeHint
|
|
3127
3133
|
});
|
|
3128
3134
|
}
|
|
3135
|
+
var webSessionId = getOrCreateWebSessionId();
|
|
3129
3136
|
return _object_spread_props(_object_spread({
|
|
3130
3137
|
isCtv: false
|
|
3131
|
-
},
|
|
3138
|
+
}, webSessionId ? {
|
|
3139
|
+
sessionId: webSessionId
|
|
3140
|
+
} : {}, deviceId ? {
|
|
3132
3141
|
deviceId: deviceId
|
|
3133
3142
|
} : {}, deviceId && deviceIdType ? {
|
|
3134
3143
|
deviceIdType: deviceIdType
|
|
@@ -3169,7 +3178,7 @@ var GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;
|
|
|
3169
3178
|
var CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\bTV\b/i;
|
|
3170
3179
|
var FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;
|
|
3171
3180
|
function resolveDeviceTypeHint(isCtv) {
|
|
3172
|
-
var override = readDeviceTypeHintOverride();
|
|
3181
|
+
var override = readDeviceTypeHintOverride(isCtv);
|
|
3173
3182
|
if (override != null) return override;
|
|
3174
3183
|
return inferDeviceTypeHint(isCtv);
|
|
3175
3184
|
}
|
|
@@ -3196,7 +3205,7 @@ function inferDeviceTypeHint(isCtv) {
|
|
|
3196
3205
|
if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;
|
|
3197
3206
|
return fallback;
|
|
3198
3207
|
}
|
|
3199
|
-
function readDeviceTypeHintOverride() {
|
|
3208
|
+
function readDeviceTypeHintOverride(isCtv) {
|
|
3200
3209
|
if (typeof window === "undefined") return void 0;
|
|
3201
3210
|
var keys = [
|
|
3202
3211
|
"dth",
|
|
@@ -3245,6 +3254,7 @@ function readDeviceTypeHintOverride() {
|
|
|
3245
3254
|
}
|
|
3246
3255
|
}
|
|
3247
3256
|
}
|
|
3257
|
+
if (!isCtv) return void 0;
|
|
3248
3258
|
for(var _i = 0, _iter = [
|
|
3249
3259
|
"stormcloud.dth",
|
|
3250
3260
|
"dth"
|
|
@@ -3293,9 +3303,10 @@ function isEquivalentDeviceIdType(tagType, runtimeType) {
|
|
|
3293
3303
|
return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
|
|
3294
3304
|
}
|
|
3295
3305
|
function resolveNativeDeviceId() {
|
|
3306
|
+
var includeStored = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
3296
3307
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3297
3308
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3298
|
-
var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3309
|
+
var deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3299
3310
|
if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {
|
|
3300
3311
|
return void 0;
|
|
3301
3312
|
}
|
|
@@ -3324,6 +3335,21 @@ function getOrCreateCtvSessionId() {
|
|
|
3324
3335
|
writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);
|
|
3325
3336
|
return sessionId;
|
|
3326
3337
|
}
|
|
3338
|
+
function getOrCreateWebSessionId() {
|
|
3339
|
+
if (typeof window === "undefined") return void 0;
|
|
3340
|
+
try {
|
|
3341
|
+
var _window_sessionStorage;
|
|
3342
|
+
var existing = (_window_sessionStorage = window.sessionStorage) === null || _window_sessionStorage === void 0 ? void 0 : _window_sessionStorage.getItem(WEB_SESSION_STORAGE_KEY);
|
|
3343
|
+
if (existing && !isMacroPlaceholder(existing)) return existing;
|
|
3344
|
+
} catch (unused) {}
|
|
3345
|
+
var sessionId = inMemoryWebSessionId || createUuid();
|
|
3346
|
+
inMemoryWebSessionId = sessionId;
|
|
3347
|
+
try {
|
|
3348
|
+
var _window_sessionStorage1;
|
|
3349
|
+
(_window_sessionStorage1 = window.sessionStorage) === null || _window_sessionStorage1 === void 0 ? void 0 : _window_sessionStorage1.setItem(WEB_SESSION_STORAGE_KEY, sessionId);
|
|
3350
|
+
} catch (unused) {}
|
|
3351
|
+
return sessionId;
|
|
3352
|
+
}
|
|
3327
3353
|
function readPersistentId(storageKey) {
|
|
3328
3354
|
return readStoredString(storageKey) || readCookie(storageKey);
|
|
3329
3355
|
}
|
|
@@ -3925,7 +3951,7 @@ function sha256Hex(input) {
|
|
|
3925
3951
|
})();
|
|
3926
3952
|
}
|
|
3927
3953
|
function resolvePlayerIdentitySeed(clientInfo) {
|
|
3928
|
-
var nativeDeviceId = resolveNativeDeviceId();
|
|
3954
|
+
var nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);
|
|
3929
3955
|
if (nativeDeviceId) {
|
|
3930
3956
|
return "device:".concat(nativeDeviceId);
|
|
3931
3957
|
}
|
|
@@ -4694,6 +4720,12 @@ function applyDeviceIdentityParams(params, ctx) {
|
|
|
4694
4720
|
params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : isMacroPlaceholder2(tagLat) ? "0" : tagLat);
|
|
4695
4721
|
return;
|
|
4696
4722
|
}
|
|
4723
|
+
if (!ctx.isCtv) {
|
|
4724
|
+
params.delete("rdid");
|
|
4725
|
+
params.delete("idtype");
|
|
4726
|
+
params.delete("is_lat");
|
|
4727
|
+
return;
|
|
4728
|
+
}
|
|
4697
4729
|
var tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));
|
|
4698
4730
|
var tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));
|
|
4699
4731
|
if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {
|
|
@@ -4848,15 +4880,24 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4848
4880
|
if (ctx.podMaxAds != null) {
|
|
4849
4881
|
params.set("pmad", String(Math.max(1, Math.round(ctx.podMaxAds))));
|
|
4850
4882
|
}
|
|
4851
|
-
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4852
|
-
params.set("url", ctx.pageUrl);
|
|
4853
|
-
params.set("description_url", ctx.pageUrl);
|
|
4854
|
-
}
|
|
4855
4883
|
var existingUrl = params.get("url") || "";
|
|
4856
4884
|
if (EXAMPLE_COM_URL.test(existingUrl)) {
|
|
4857
4885
|
params.delete("url");
|
|
4858
4886
|
params.delete("description_url");
|
|
4859
4887
|
}
|
|
4888
|
+
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4889
|
+
if (isMacroPlaceholder2(params.get("url"))) {
|
|
4890
|
+
params.set("url", ctx.pageUrl);
|
|
4891
|
+
}
|
|
4892
|
+
if (isMacroPlaceholder2(params.get("description_url"))) {
|
|
4893
|
+
params.set("description_url", params.get("url") || ctx.pageUrl);
|
|
4894
|
+
}
|
|
4895
|
+
}
|
|
4896
|
+
if (!ctx.isCtv) {
|
|
4897
|
+
params.delete("an");
|
|
4898
|
+
params.delete("msid");
|
|
4899
|
+
params.delete("sid");
|
|
4900
|
+
}
|
|
4860
4901
|
if (ctx.adWillPlayMuted != null) {
|
|
4861
4902
|
params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
|
|
4862
4903
|
}
|
|
@@ -4890,6 +4931,9 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4890
4931
|
if (ctx.programTitle) {
|
|
4891
4932
|
params.set("ct_ti", ctx.programTitle);
|
|
4892
4933
|
}
|
|
4934
|
+
if (ctx.channelName) {
|
|
4935
|
+
params.set("ct_ch", ctx.channelName);
|
|
4936
|
+
}
|
|
4893
4937
|
var staleKeys = [];
|
|
4894
4938
|
params.forEach(function(value, key) {
|
|
4895
4939
|
if (isMacroPlaceholder2(value)) {
|
|
@@ -4942,8 +4986,10 @@ function fetchConsentSignals() {
|
|
|
4942
4986
|
tcfApi("addEventListener", 2, function(tcData, success) {
|
|
4943
4987
|
if (settled) return;
|
|
4944
4988
|
if (success && tcData && (tcData.eventStatus === "tcloaded" || tcData.eventStatus === "useractioncomplete")) {
|
|
4989
|
+
var _tcData_purpose_consents, _tcData_purpose;
|
|
4945
4990
|
settled = true;
|
|
4946
4991
|
signals.gdpr = tcData.gdprApplies ? "1" : "0";
|
|
4992
|
+
signals.storageAllowed = tcData.gdprApplies ? ((_tcData_purpose = tcData.purpose) === null || _tcData_purpose === void 0 ? void 0 : (_tcData_purpose_consents = _tcData_purpose.consents) === null || _tcData_purpose_consents === void 0 ? void 0 : _tcData_purpose_consents[1]) === true : true;
|
|
4947
4993
|
if (typeof tcData.tcString === "string" && tcData.tcString) {
|
|
4948
4994
|
signals.gdprConsent = tcData.tcString;
|
|
4949
4995
|
}
|
|
@@ -6476,7 +6522,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6476
6522
|
pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? toDevSafeUrl(window.location.href) : void 0,
|
|
6477
6523
|
adWillPlayMuted: adWillPlayMuted,
|
|
6478
6524
|
adWillAutoPlay: !!this.config.autoplay,
|
|
6479
|
-
sessionId: envSignals.sessionId,
|
|
6525
|
+
sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,
|
|
6480
6526
|
deviceId: envSignals.deviceId,
|
|
6481
6527
|
deviceIdType: envSignals.deviceIdType,
|
|
6482
6528
|
limitAdTracking: envSignals.limitAdTracking,
|
|
@@ -6484,6 +6530,8 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6484
6530
|
adTest: this.config.adTest
|
|
6485
6531
|
}, this.config.programTitle ? {
|
|
6486
6532
|
programTitle: this.config.programTitle
|
|
6533
|
+
} : {}, this.config.channelName ? {
|
|
6534
|
+
channelName: this.config.channelName
|
|
6487
6535
|
} : {}), {
|
|
6488
6536
|
consent: this.consentSignals
|
|
6489
6537
|
}));
|
|
@@ -9604,7 +9652,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9604
9652
|
// ───────────────────────────────────────────────────────────────
|
|
9605
9653
|
function load() {
|
|
9606
9654
|
return _async_to_generator(function() {
|
|
9607
|
-
var _this,
|
|
9655
|
+
var _this, error, palDescriptionUrl, continueLiveStreamDuringAds;
|
|
9608
9656
|
return _ts_generator(this, function(_state) {
|
|
9609
9657
|
switch(_state.label){
|
|
9610
9658
|
case 0:
|
|
@@ -9640,19 +9688,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9640
9688
|
4
|
|
9641
9689
|
];
|
|
9642
9690
|
case 4:
|
|
9643
|
-
palDescriptionUrl = this.adConfig.getPalDescriptionUrl();
|
|
9644
|
-
|
|
9645
|
-
|
|
9646
|
-
|
|
9647
|
-
|
|
9648
|
-
adWillPlayMuted: true,
|
|
9649
|
-
playerVolume: 0,
|
|
9650
|
-
continuousPlayback: (_this_config_lowLatencyMode = this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9651
|
-
}, palDescriptionUrl ? {
|
|
9652
|
-
descriptionUrl: palDescriptionUrl
|
|
9653
|
-
} : {})).catch(function() {});
|
|
9654
|
-
fetchConsentSignals().then(function(signals) {
|
|
9691
|
+
palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
|
|
9692
|
+
fetchConsentSignals().catch(function() {
|
|
9693
|
+
return {};
|
|
9694
|
+
}).then(function(signals) {
|
|
9695
|
+
var _this_config_lowLatencyMode;
|
|
9655
9696
|
_this.adConfig.consentSignals = signals;
|
|
9697
|
+
var muted = _this.video.muted;
|
|
9698
|
+
return _this.palNonce.generateNonce(_object_spread({
|
|
9699
|
+
videoWidth: _this.video.offsetWidth || _this.video.clientWidth || 640,
|
|
9700
|
+
videoHeight: _this.video.offsetHeight || _this.video.clientHeight || 480,
|
|
9701
|
+
adWillAutoPlay: !!_this.config.autoplay,
|
|
9702
|
+
adWillPlayMuted: muted,
|
|
9703
|
+
playerVolume: muted ? 0 : _this.video.volume,
|
|
9704
|
+
continuousPlayback: (_this_config_lowLatencyMode = _this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9705
|
+
}, palDescriptionUrl ? {
|
|
9706
|
+
descriptionUrl: palDescriptionUrl
|
|
9707
|
+
} : {}, signals.storageAllowed != null ? {
|
|
9708
|
+
allowStorage: signals.storageAllowed
|
|
9709
|
+
} : {}));
|
|
9656
9710
|
}).catch(function() {});
|
|
9657
9711
|
this.adConfig.initializeTracking();
|
|
9658
9712
|
if (!this.hlsEngine.shouldUseNativeHls(function() {
|