stormcloud-video-player 0.8.72 → 0.8.74
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/README.md +10 -70
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/Player.d.cts +1 -0
- package/lib/StormcloudPlayer.cjs +992 -276
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/StormcloudPlayer.d.cts +1 -0
- package/lib/index.cjs +1005 -281
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -0
- package/lib/index.d.ts +40 -3
- package/lib/index.js +998 -282
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +772 -70
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +7 -9
- package/lib/player/AdConfigManager.cjs +314 -62
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +7 -12
- package/lib/player/AdTimingService.cjs +37 -1
- package/lib/player/AdTimingService.cjs.map +1 -1
- package/lib/player/AdTimingService.d.cts +8 -1
- package/lib/player/EdgePodRequest.d.cts +1 -0
- package/lib/player/FloorLadder.d.cts +1 -0
- package/lib/player/HlsEngine.d.cts +1 -0
- package/lib/player/OptimizedPodRequest.cjs +719 -0
- package/lib/player/OptimizedPodRequest.cjs.map +1 -0
- package/lib/player/OptimizedPodRequest.d.cts +101 -0
- package/lib/player/PlayerControls.d.cts +1 -0
- package/lib/player/Scte35CueManager.d.cts +1 -0
- package/lib/player/Scte35Parser.d.cts +1 -0
- package/lib/player/StormcloudVideoPlayer.cjs +992 -276
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/player/playerTypes.d.cts +1 -0
- package/lib/players/HlsPlayer.cjs +992 -276
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -0
- package/lib/players/index.cjs +992 -276
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.d.cts +1 -0
- package/lib/sdk/hlsAdPlayer.cjs +316 -51
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +3 -1
- package/lib/sdk/pal.cjs +108 -83
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/sdk/pal.d.cts +1 -0
- package/lib/types.d.cts +9 -2
- package/lib/ui/StormcloudVideoPlayer.cjs +997 -281
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/utils/ctvVastSignals.cjs +9 -7
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/tracking.cjs +17 -3
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +2 -1
- package/lib/utils/vastEnvironmentSignals.cjs +9 -7
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +250 -10
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +13 -4
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\players\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","players_exports","default","players_default","module","exports","import_react","require","lazy","IS_BROWSER","window","document","IS_GLOBAL","globalThis","IS_IOS","test","navigator","userAgent","IS_SAFARI","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","hls","url","dash","video","audio","file","import_react2","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","deviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","ua","maxTouchPoints","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","max","round","podMaxDurationMs","podMaxAds","existingUrl","pageUrl","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","DEFAULT_WEB_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","generateFloorLevels","levels","cents","resolveFloorLadderBounds","overrides","validateFloorCents","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","Array","isArray","validateFloorLadderConfig","errors","check","selected","fixedFloorSelector","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","decoded","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","update","next","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","import_hls","getChromeVersion","match","getWebKitVersion","getPlatform","userAgentData","platform","detectBrowser","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","Map","URLSearchParams","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","allowNativeHls","pauseContentDuringAds","logBrowserInfo","debug","log","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","mm","ss","ms","resolveMacroValues","values","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","clientUa","podSequence","adServingId","substituteVastTrackingMacros","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","min","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","add","timeoutId","release","outcome","clearTimeout","onload","onerror","src","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","abort","creds","fetch","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","sentinelCount","catch","shift","createAdVideoElement","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","e","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","cachedBrowserId","buildAnalyticsContext","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","append","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","assign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","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","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","isDateRange","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","enableEdgePodRequest","edgePodUrl","encodedKey","hasPlaceholder","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","currentPodSource","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","edgeUrl","podPlayed","getEdgePodBaseUrl","vastUrls","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","podUrl","prefetched","requestToken","requestUrl","podCount","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","callController","recordRequestFailure","edgeRequests","remainingAds","adsInBreak","getMinRemainingMsToRequestAd","trigger","classification","diag","endpoint","pmxd","pmad","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","decision","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmnd","vastAdCount","impressionFired","impressionCount","requestFloorFields","gamRequestSent","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","minMs","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","budgetedUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","maxAttempts","onReady","backoffMs","playResult","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","floorBounds","adFloorMinCents","adFloorMaxCents","adFloorStepCents","floorLadder","adFloorLadder","floorLadderEnabled","adFloorLadderEnabled","warnOnInvalidFloorLadder","edgePodBaseUrl","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","isCtvEnvironment","adMediaStartTimeoutMs","hint","setAdFloorLadder","report","setAdFloorLadderEnabled","isAdFloorLadderEnabled","setEdgePodRequest","getEdgePodUrl","getAdFloorLadder","getAdFloorBounds","setAdFloorSelector","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxAdBreakExtensionMs","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","HlsPlayer","arguments","player","mounted","props","onVolumeToggle","onFullscreenToggle","onControlClick","onMount","hasValidSource","seekTo","keepPlaying","setPlaybackRate","rate","playbackRate","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","render","Component","displayName","import_react3","FilePlayer","handleLoadedMetadata","handlePlay","handlePause","handleEnded","handleError","handleLoadedData","onLoaded","loop","controls","preload","poster","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/players/index.ts\nvar players_exports = {};\n__export(players_exports, {\n default: () => players_default\n});\nmodule.exports = __toCommonJS(players_exports);\n\n// src/utils.ts\nvar import_react = require(\"react\");\nvar lazy = import_react.lazy;\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react2 = require(\"react\");\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (context.isCtv) return skipped(\"ctv_excluded\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar FloorLadderController = class {\n constructor(initial, bounds, selector = fixedFloorSelector) {\n this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);\n this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));\n this.selector = selector;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n update(update) {\n this.config = mergeDefined(this.config, update);\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\") {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const requestVast = async (creds) => {\n attempt++;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\" && !controller?.signal.aborted) {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n logFunnel(\"vast_credentials_retry\", {\n errorMessage: error?.message\n });\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\") {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(vastTagUrl, isEdge ? \"omit\" : \"include\", source);\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\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 getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\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\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\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(ensureVideoAdType(urlWithMacros));\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\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 = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && (!hasPrefetchedUrl || edgeConfigured)) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl, adBreakDurationMs);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl, breakDurationMs) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n const requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n /**\n * Builds the next Edge request from the budget left right now, or marks Edge\n * exhausted for this break. Synchronous on purpose: callers must reach the\n * REQUESTING state in the same tick so a second completion event cannot race\n * in a parallel request.\n */\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak\n )\n );\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n pmad: params?.get(\"pmad\") ?? void 0,\n pmnd: params?.get(\"pmnd\") ?? void 0,\n pmxd: params?.get(\"pmxd\") ?? void 0,\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(vastTagUrl);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n withCurrentPodBudget(rawVastTagUrl) {\n const vastTagUrl = ensureVideoAdType(rawVastTagUrl);\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (!(remaining > 0)) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n if (!url.searchParams.has(\"pmxd\")) return vastTagUrl;\n const maxMs = Math.round(remaining);\n url.searchParams.set(\"pmxd\", String(maxMs));\n const minMs = Number(url.searchParams.get(\"pmnd\"));\n if (Number.isFinite(minMs) && minMs > maxMs) {\n url.searchParams.set(\"pmnd\", String(maxMs));\n }\n return url.toString();\n } catch {\n return vastTagUrl;\n }\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n const budgetedUrl = this.withCurrentPodBudget(vastTagUrl);\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n const requestUrl = this.applyOpportunityFloor(budgetedUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => ap.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsRetries: count(\"vast_credentials_retry\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n const floorBounds = {};\n if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;\n if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;\n if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;\n this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);\n this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;\n this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadderEnabled ? this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n isCtvEnvironment() {\n if (this.config.ctvAdRequest) return true;\n const hint = inferDeviceTypeHint(false);\n return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;\n }\n setAdFloorLadder(update) {\n const report = this.floorLadder.update(update);\n this.warnOnInvalidFloorLadder(report);\n return report;\n }\n setAdFloorLadderEnabled(enabled) {\n this.floorLadderEnabled = enabled;\n if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n }\n isAdFloorLadderEnabled() {\n return this.floorLadderEnabled;\n }\n setEdgePodRequest(update) {\n if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {\n return;\n }\n if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;\n else this.config.enableEdgePodRequest = update.enableEdgePodRequest;\n if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;\n else this.config.edgePodUrl = update.edgePodUrl;\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !this.floorLadderEnabled || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar HlsPlayer = class extends import_react2.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react3 = require(\"react\");\nvar FilePlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\players\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","players_exports","default","players_default","module","exports","import_react","require","lazy","IS_BROWSER","window","document","IS_GLOBAL","globalThis","IS_IOS","test","navigator","userAgent","IS_SAFARI","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","hls","url","dash","video","audio","file","import_react2","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","ua","maxTouchPoints","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","stripScvpMacros","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","DEFAULT_WEB_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","generateFloorLevels","levels","cents","resolveFloorLadderBounds","overrides","validateFloorCents","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","isArray","validateFloorLadderConfig","errors","check","selected","fixedFloorSelector","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","update","next","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","import_hls","getChromeVersion","getWebKitVersion","getPlatform","userAgentData","platform","detectBrowser","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","allowNativeHls","pauseContentDuringAds","logBrowserInfo","debug","log","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","mm","ss","ms","resolveMacroValues","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","round","clientUa","podSequence","adServingId","substituteVastTrackingMacros","DEFAULT_REQUEST_SAFETY_MS","GAM_AD_OPPORTUNITY_DURATION_MS","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","nonNegativeInt","positiveInt","resolveAdPodConfig","adPodConfig","requestSafetyMs","minPodDurationMs","maxAdsPerBreak","podMaxAds","maxPodDurationMs","podMaxDurationMs","exactDuration","podExactDuration","measureBreakCapacity","timing","nowMonoMs","scheduled","scheduledBreakDurationMs","breakStartMonoMs","endMonoMs","breakEndMonoMs","untilEnd","min","unplayed","max","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","resolvePodParams","input","capacity","pmxd","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","pmad","podRequestAborted","message","diagnostics","error","Error","isPodRequestAbortedError","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","finalizeGamRequestUrl","nowEpochMs","optimizedPod","breakId","scteBreakDurationMs","safetyReserveMs","decision","substituted","finalUrl","problems","validateGamRequestUrl","remainingMs","givn","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","gamRequestDispatchTimestamp","strippedMacros","expect","leftover","concat","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","code","gamCredentialsMode","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","timeoutId","release","outcome","clearTimeout","onload","onerror","src","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","firstEmpty","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","finalizeRequestUrl","controller","startedAt","attempt","resolveDispatchUrl","requestVast","response","AbortController","abort","creds","pending","fetch","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","statusText","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","sentinelCount","catch","shift","createAdVideoElement","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","e","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","pendingNonce","generateNonce","run","generate","settle","getCurrentNonce","waitForNonce","maxWaitMs","timer","nonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","cachedBrowserId","buildAnalyticsContext","contentNetwork","contentChannel","contentTitle","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","assign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","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","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","withDeferredPodParams","deferNonce","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","envSignals","ctvAdRequest","autoplay","nonceReady","completeDeferredRequestSignals","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","monotonicNow","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","beginBreakTiming","startWallClockMs","currentAdBreakStartWallClockMs","markBreakEndedNow","scteAdBreakEndWallClockMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","getBreakTimingSnapshot","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","isDateRange","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","enableEdgePodRequest","edgePodUrl","encodedKey","hasPlaceholder","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","remaining","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","currentPodSource","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","podPlayed","getEdgePodBaseUrl","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","deadline","waitedForMs","podUrl","prefetched","requestToken","requestUrl","podCount","vastUrls","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","completeGamRequestSignals","createGamDispatchFinalizer","callController","recordPodResponseDiagnostics","recordRequestFailure","handlePodRequestNotSent","edgeRequests","remainingAds","adsInBreak","getMinRemainingMsToRequestAd","trigger","overrunAllowanceMs","classification","diag","endpoint","maxAdBreakExtensionMs","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","impressionFired","failureKey","dispatchedUrl","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","_dispatchedUrl","podDispatchLogged","_logged","fields","podResponse","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsModeChanges","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","net","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","maxAttempts","onReady","backoffMs","playResult","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","floorBounds","adFloorMinCents","adFloorMaxCents","adFloorStepCents","floorLadder","adFloorLadder","floorLadderEnabled","adFloorLadderEnabled","warnOnInvalidFloorLadder","edgePodBaseUrl","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","isCtvEnvironment","adMediaStartTimeoutMs","hint","setAdFloorLadder","report","setAdFloorLadderEnabled","isAdFloorLadderEnabled","setEdgePodRequest","getEdgePodUrl","getAdFloorLadder","getAdFloorBounds","setAdFloorSelector","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","HlsPlayer","arguments","player","mounted","props","onVolumeToggle","onFullscreenToggle","onControlClick","onMount","hasValidSource","seekTo","keepPlaying","setPlaybackRate","rate","playbackRate","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","render","Component","displayName","import_react3","FilePlayer","handleLoadedMetadata","handlePlay","handlePause","handleEnded","handleError","handleLoadedData","onLoaded","loop","controls","preload","poster","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/players/index.ts\nvar players_exports = {};\n__export(players_exports, {\n default: () => players_default\n});\nmodule.exports = __toCommonJS(players_exports);\n\n// src/utils.ts\nvar import_react = require(\"react\");\nvar lazy = import_react.lazy;\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react2 = require(\"react\");\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking();\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking));\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (context.isCtv) return skipped(\"ctv_excluded\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar FloorLadderController = class {\n constructor(initial, bounds, selector = fixedFloorSelector) {\n this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);\n this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));\n this.selector = selector;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n update(update) {\n this.config = mergeDefined(this.config, update);\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\n };\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nvar gamCredentialsMode = \"include\";\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\", finalizeRequestUrl) {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const resolveDispatchUrl = () => {\n if (kind === \"wrapper\") return vastTagUrl;\n if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);\n const { url, unresolved } = stripScvpMacros(vastTagUrl);\n if (unresolved.length > 0) {\n console.warn(\"[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:\", unresolved.join(\", \"));\n }\n return url;\n };\n const requestVast = async (creds) => {\n attempt++;\n const pending = fetch(resolveDispatchUrl(), {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await pending;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (kind === \"gam\" && !controller?.signal.aborted && !isPodRequestAbortedError(error)) {\n gamCredentialsMode = credentials === \"include\" ? \"omit\" : \"include\";\n console.warn(\n `[HlsAdPlayer] GAM fetch failed with credentials=\"${credentials}\"; next GAM request will use credentials=\"${gamCredentialsMode}\":`,\n error\n );\n logFunnel(\"gam_credentials_mode_changed\", {\n from: credentials,\n to: gamCredentialsMode,\n errorMessage: error?.message\n });\n }\n throw error;\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\", finalizeRequestUrl) {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(\n vastTagUrl,\n isEdge ? \"omit\" : gamCredentialsMode,\n source,\n finalizeRequestUrl\n );\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source, requestOptions?.finalizeRequestUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n pendingNonce = void 0;\n }\n };\n async function generate(options) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n }\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\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 getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\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\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\n// src/player/AdConfigManager.ts\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://edge.stormcloudhub.com/api/v1/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals,\n palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n beginBreakTiming(startWallClockMs) {\n this.currentAdBreakStartWallClockMs = startWallClockMs;\n this.breakStartMonoMs = monotonicNow() + (startWallClockMs - Date.now());\n this.breakEndMonoMs = void 0;\n }\n markBreakEndedNow() {\n this.scteAdBreakEndWallClockMs = Date.now();\n this.breakEndMonoMs = monotonicNow();\n }\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n this.breakEndMonoMs = durationMs != null && this.breakStartMonoMs != null ? this.breakStartMonoMs + durationMs : void 0;\n }\n getBreakTimingSnapshot() {\n return {\n scheduledBreakDurationMs: this.expectedAdBreakDurationMs,\n breakStartMonoMs: this.breakStartMonoMs,\n breakEndMonoMs: this.breakEndMonoMs,\n playedDurationMs: this.adBreakPlayedDurationMs\n };\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.breakStartMonoMs = void 0;\n this.breakEndMonoMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\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 = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n return this.host.generatePodVastUrl(baseVastUrl);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n if (adBreakDurationMs == null) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n if (this.handlePodRequestNotSent(error)) throw error;\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n const floorBounds = {};\n if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;\n if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;\n if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;\n this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);\n this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;\n this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base) => this.generatePodVastUrl(base),\n completeGamRequestSignals: (url) => this.adConfig.completeDeferredRequestSignals(url, this.palNonce),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadderEnabled ? this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n isCtvEnvironment() {\n if (this.config.ctvAdRequest) return true;\n const hint = inferDeviceTypeHint(false);\n return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;\n }\n setAdFloorLadder(update) {\n const report = this.floorLadder.update(update);\n this.warnOnInvalidFloorLadder(report);\n return report;\n }\n setAdFloorLadderEnabled(enabled) {\n this.floorLadderEnabled = enabled;\n if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n }\n isAdFloorLadderEnabled() {\n return this.floorLadderEnabled;\n }\n setEdgePodRequest(update) {\n if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {\n return;\n }\n if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;\n else this.config.enableEdgePodRequest = update.enableEdgePodRequest;\n if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;\n else this.config.edgePodUrl = update.edgePodUrl;\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !this.floorLadderEnabled || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl) {\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.markBreakEndedNow();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.beginBreakTiming(this.timing.resolveScteBreakStartWallClockMs(marker));\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.beginBreakTiming(Date.now());\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar HlsPlayer = class extends import_react2.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react3 = require(\"react\");\nvar FilePlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n"]}
|