PageSourceSearch

https://operadepot.com/cdn/shop/t/186/assets/opera-depot-player.js…=act-intro-ring-rules-2026-09-17-02

js operadepot.com collected 2026-09-25 01:07:15 UTC 322,918 bytes, 233 lines download raw bytes

1var ei=Object.defineProperty,ti=(n,e,t)=>e in n?ei(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,c=(n,e,t)=>ti(n,typeof e!="symbol"?e+"":e,t);function ni(n){const e=ri();if(!e)return{m4a:!1,alac:!1,flac:!1,details:{aacMp4:"",alacMp4:"",alacXM4a:"",flac:"",flacCanPlayAudioFlac:"",flacCanPlayAudioXFlac:"",flacCanPlayMp4Flac:"",flacX:"",flacMp4:"",mp4Container:"",xM4a:"",userAgent:Vn()}};const t=me(e,"audio/flac"),r=me(e,"audio/x-flac"),a=me(e,'audio/mp4; codecs="flac"'),i={aacMp4:me(e,'audio/mp4; codecs="mp4a.40.2"'),alacMp4:me(e,'audio/mp4; codecs="alac"'),alacXM4a:me(e,'audio/x-m4a; codecs="alac"'),flac:t,flacCanPlayAudioFlac:t,flacCanPlayAudioXFlac:r,flacCanPlayMp4Flac:a,flacX:r,flacMp4:a,mp4Container:me(e,"audio/mp4"),xM4a:me(e,"audio/x-m4a"),userAgent:Vn()};return{m4a:he(i.aacMp4)||he(i.xM4a)||he(i.mp4Container),alac:he(i.alacMp4)||he(i.alacXM4a),flac:he(i.flacCanPlayAudioFlac)||he(i.flacCanPlayAudioXFlac)||he(i.flacCanPlayMp4Flac),details:i}}function ri(){return typeof Audio>"u"?null:new Audio}function me(n,e){return n.canPlayType(e)}function he(n){return n.trim()!==""&&n.toLowerCase()!=="no"}function Vn(){return typeof navigator>"u"?null:navigator.userAgent}const ai=1,ii=!0,si="/analytics/events",oi=15e3,li=5e3,ui=50,ci=2e3,di="32kb",pi=1e4,mi=5,hi=1e3,gi=3e4,fi=!1,yi="od_analytics_debug",ki="operaDepot.analytics.debug",bi="operaDepot.analytics.outbox.v1",Si={schemaVersion:ai,enabled:ii,endpointPath:si,heartbeatIntervalMs:oi,flushIntervalMs:li,maximumBatchSize:ui,maximumOutboxSize:ci,requestBodyLimit:di,requestTimeoutMs:pi,retryLimit:mi,retryBaseDelayMs:hi,retryMaximumDelayMs:gi,debugMode:fi,debugQueryParameter:yi,debugStorageKey:ki,storageKey:bi},x=Object.freeze({...Si});function Ti(n){return{debugMode:n.debugMode??wi(),endpoint:new URL(n.endpoint||x.endpointPath,n.apiBaseUrl).href}}function wi(){try{const n=new URLSearchParams(window.location.search).get(x.debugQueryParameter);return n==="1"||n==="true"?(window.localStorage.setItem(x.debugStorageKey,"1"),!0):n==="0"||n==="false"?(window.localStorage.removeItem(x.debugStorageKey),!1):window.localStorage.getItem(x.debugStorageKey)==="1"||x.debugMode}catch{return x.debugMode}}class Ci{constructor(e){c(this,"debug"),c(this,"endpoint"),c(this,"fetchImpl"),c(this,"storage"),c(this,"events",[]),c(this,"flushTimer",null),c(this,"requestInFlight",!1),c(this,"retryAttempt",0),c(this,"handleOnline",()=>{this.retryAttempt=0,this.flushSoon()}),this.debug=e.debug??x.debugMode,this.endpoint=e.endpoint,this.fetchImpl=e.fetchImpl??window.fetch.bind(window),this.storage=e.storage===void 0?vi():e.storage,this.events=this.restoreEvents(),window.addEventListener("online",this.handleOnline),this.events.length>0&&this.scheduleFlush(0)}enqueue(e){if(this.makeOutboxSpace(e),this.events.length>=x.maximumOutboxSize){this.warn("outbox full; event could not be queued",e);return}this.events.push(e),this.persistEvents(),this.log("event queued",{contentCategory:e.contentCategory,eventId:e.eventId,eventType:e.eventType,playbackPosition:e.playbackPosition,playbackType:e.playbackType,queueSize:this.events.length,sessionId:e.sessionId,sku:e.sku}),this.events.length>=x.maximumBatchSize?this.scheduleFlush(0):this.scheduleFlush(x.flushIntervalMs)}flushSoon(){this.events.length>0&&this.scheduleFlush(0)}flushKeepalive(){const e=this.events.slice(0,x.maximumBatchSize);e.length!==0&&this.submitBatch(e,!0).catch(t=>{this.warn("keepalive submission failed; events remain persisted",{message:yt(t)})})}getQueuedEventCount(){return this.events.length}async flush(){if(this.requestInFlight||this.events.length===0)return;const e=this.events.slice(0,x.maximumBatchSize);this.requestInFlight=!0;try{const t=await this.submitBatch(e,!1),r=new Set(e.map(a=>a.eventId));this.events=this.events.filter(a=>!r.has(a.eventId)),this.persistEvents(),this.retryAttempt=0,this.log("batch accepted",{accepted:t.accepted??e.length,duplicates:t.duplicates??0,remaining:this.events.length,submitted:e.length}),this.events.length>0&&this.scheduleFlush(0)}catch(t){this.retryAttempt+=1;const r=Math.min(this.retryAttempt,x.retryLimit),a=Math.min(x.retryMaximumDelayMs,x.retryBaseDelayMs*2**Math.max(0,r-1)),i=Math.round(a*(.75+Math.random()*.5));this.warn("batch submission failed; events remain persisted",{attempt:this.retryAttempt,message:yt(t),retryInMs:this.retryAttempt<x.retryLimit?i:null}),this.retryAttempt<x.retryLimit?this.scheduleFlush(i):this.warn("retry limit reached; waiting for a new event, online signal, or page reload",{queueSize:this.events.length})}finally{this.requestInFlight=!1}}async submitBatch(e,t){const r=t?null:new AbortController,a=r?window.setTimeout(()=>r.abort(),x.requestTimeoutMs):null;try{const i=await this.fetchImpl(this.endpoint,{body:JSON.stringify({sc
1hemaVersion:x.schemaVersion,events:e}),headers:{"Content-Type":"application/json"},keepalive:t,method:"POST",signal:r?.signal});if(!i.ok)throw new Error(`Analytics API returned ${i.status}.`);const s=await i.json();if(s.ok!==!0)throw new Error("Analytics API did not acknowledge the batch.");return s}finally{a!==null&&window.clearTimeout(a)}}scheduleFlush(e){if(this.flushTimer!==null){if(e>0)return;window.clearTimeout(this.flushTimer)}this.flushTimer=window.setTimeout(()=>{this.flushTimer=null,this.flush()},e)}makeOutboxSpace(e){if(this.events.length<x.maximumOutboxSize)return;const t=this.events.findIndex(r=>r.eventType==="heartbeat");if(t>=0){this.events.splice(t,1),this.persistEvents(),this.warn("outbox capacity reached; oldest heartbeat was discarded",{queueSize:this.events.length});return}e.eventType!=="heartbeat"&&(this.events.shift(),this.persistEvents(),this.warn("outbox capacity reached; oldest lifecycle event was discarded",{queueSize:this.events.length}))}restoreEvents(){if(!this.storage)return[];try{const e=this.storage.getItem(x.storageKey);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.slice(-x.maximumOutboxSize):[]}catch(e){return this.warn("stored outbox could not be restored",{message:yt(e)}),[]}}persistEvents(){if(this.storage)try{this.events.length===0?this.storage.removeItem(x.storageKey):this.storage.setItem(x.storageKey,JSON.stringify(this.events))}catch(e){this.warn("outbox persistence failed",{message:yt(e)})}}log(e,t){this.debug&&console.info("[OperaDepotAnalytics]",e,t)}warn(e,t){console.warn("[OperaDepotAnalytics]",e,t)}}function vi(){try{return window.localStorage}catch{return null}}function yt(n){return n instanceof Error?n.message:String(n)}class xi{constructor(e){c(this,"activeSession",null),c(this,"debug"),c(this,"getCustomerId"),c(this,"heartbeatTimer",null),c(this,"heartbeatIntervalMs"),c(this,"productContentCategory","standard"),c(this,"productPlaybackType","full"),c(this,"transport"),c(this,"handlePageHide",()=>{this.endActiveSession("pagehide"),this.transport.flushKeepalive()}),this.debug=e.debug??x.debugMode,this.getCustomerId=e.getCustomerId,this.heartbeatIntervalMs=e.heartbeatIntervalMs??x.heartbeatIntervalMs,this.transport=e.transport,window.addEventListener("pagehide",this.handlePageHide),window.addEventListener("pageshow",()=>this.transport.flushSoon())}prepareProduct(e,t="standard"){this.endActiveSession("product-selected"),this.productPlaybackType=e,this.productContentCategory=t}prepareRadio(){var e;((e=this.activeSession)==null?void 0:e.source)!=="radio"&&this.endActiveSession("radio-selected")}observeProduct(e){var r,a,i;const t=Yn(((r=e.currentCatalogue)==null?void 0:r.catalogueNumber)||((i=(a=e.currentCatalogue)==null?void 0:a.product)==null?void 0:i.sku));this.observeState({activelyPlaying:e.status==="playing"&&e.isPlaying,contentCategory:this.productContentCategory,playbackPosition:Ai(e),playbackType:this.productPlaybackType,shouldEnd:e.status==="ended"||e.status==="error"||e.status==="idle",shouldPause:e.status==="paused",sku:t,source:"product",track:Ri(e.currentTrack,e.queue.length)})}observeRadio(e){var t;this.observeState({activelyPlaying:e.status==="playing"&&e.isPlaying,contentCategory:"standard",playbackPosition:e.currentTimeSeconds,playbackType:"radio",shouldEnd:e.status==="error"||e.status==="unavailable",shouldPause:e.status==="paused",sku:Yn((t=e.currentItem)==null?void 0:t.catalogueNumber),source:"radio",track:null})}endActiveSession(e="explicit-end"){const t=this.activeSession;
1t&&(this.emit("playback_ended",t),this.log("session ended",{reason:e,sessionId:t.sessionId,source:t.source}),this.activeSession=null,this.clearHeartbeatTimer())}observeState(e){var r,a,i;const t=this.activeSession;if(t?.source===e.source&&(e.source==="product"&&e.sku&&t.sku!==e.sku?this.endActiveSession("product-changed"):(t.playbackPosition=kt(e.playbackPosition),e.track&&(t.track=e.track),e.sku&&(t.sku=e.sku))),e.shouldEnd&&((r=this.activeSession)==null?void 0:r.source)===e.source){this.endActiveSession("terminal-state");return}if(e.shouldPause&&((a=this.activeSession)==null?void 0:a.source)===e.source){const s=this.activeSession;s.activelyPlaying=!1,this.clearHeartbeatTimer(),s.paused||(s.paused=!0,this.emit("playback_paused",s));return}if(!e.activelyPlaying){((i=this.activeSession)==null?void 0:i.source)===e.source&&(this.activeSession.activelyPlaying=!1,this.clearHeartbeatTimer());return}if(!e.sku){this.log("active playback ignored because SKU is missing",{source:e.source});return}if(!this.activeSession){this.activeSession={activelyPlaying:!0,contentCategory:e.contentCategory,paused:!1,playbackPosition:kt(e.playbackPosition),playbackType:e.playbackType,sessionId:Xn(),sku:e.sku,source:e.source,track:e.track},this.emit("playback_started",this.activeSession),this.scheduleHeartbeat();return}if(this.activeSession.source!==e.source){this.endActiveSession("source-changed"),this.observeState(e);return}this.activeSession.activelyPlaying=!0,this.activeSession.playbackPosition=kt(e.playbackPosition),this.activeSession.paused&&(this.activeSession.paused=!1,this.emit("playback_resumed",this.activeSession)),this.scheduleHeartbeat()}emitHeartbeat(){var e;this.heartbeatTimer=null,!(!((e=this.activeSession)!=null&&e.activelyPlaying)||this.activeSession.paused)&&(this.emit("heartbeat",this.activeSession),this.scheduleHeartbeat())}scheduleHeartbeat(){var e;this.heartbeatTimer!==null||!((e=this.activeSession)!=null&&e.activelyPlaying)||this.activeSession.paused||(this.heartbeatTimer=window.setTimeout(()=>this.emitHeartbeat(),this.heartbeatIntervalMs))}clearHeartbeatTimer(){this.heartbeatTimer!==null&&(window.clearTimeout(this.heartbeatTimer),this.heartbeatTimer=null)}emit(e,t){var a,i,s,o,l,u;const r={contentCategory:t.contentCategory,customerId:Pi(this.getCustomerId()),eventId:Xn(),eventType:e,playbackPosition:kt(t.playbackPosition),playbackType:t.playbackType,sessionId:t.sessionId,sku:t.sku,timestamp:new Date().toISOString(),trackId:((a=t.track)==null?void 0:a.trackId)??null,trackNumber:((i=t.track)==null?void 0:i.trackNumber)??null,trackTitle:((s=t.track)==null?void 0:s.trackTitle)??null,trackAlbum:((o=t.track)==null?void 0:o.trackAlbum)??null,trackDurationSeconds:((l=t.track)==null?void 0:l.trackDurationSeconds)??null,trackCount:((u=t.track)==null?void 0:u.trackCount)??null};this.transport.enqueue(r),this.log("event emitted",{contentCategory:r.contentCategory,eventId:r.eventId,eventType:e,playbackPosition:r.playbackPosition,playbackType:r.playbackType,sessionId:r.sessionId,sku:r.sku,trackTitle:r.trackTitle})}log(e,t){this.debug&&console.info("[OperaDepotAnalytics]",e,t)}}function kt(n){return Number.isFinite(n)?Math.max(0,n):0}function Ai(n){if(n.engine.engineName!=="continuous-cue"||!n.currentTrack)return n.currentTimeSeconds;const e=Ii(n.currentTrack);if(e===null)return n.currentTimeSeconds;const t=Math.max(0,n.currentTimeSeconds-e),r=n.currentTrack.durationSeconds;return typeof r=="number"&&Number.isFinite(r)&&r>0?Math.min(t,r):t}function Ii(n){for(const e of["startTimeSeconds","continuousCurrentCueStart"]){const t=n.metadata[e];if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return t;if(typeof t=="string"&&t.trim()){const r=Number(t);if(Number.isFinite(r)&&r>=0)return r}}return null}function Yn(n){return(typeof n=="string"?n.trim():"")||null}function Pi(n){return(typeof n=="string"?n.trim():"")||null}function Ri(n,e){if(!n)return null;const t=typeof n.id=="string"?n.id.trim():"",r=typeof n.displayTitle=="string"&&n.displayTitle.trim()||typeof n.title=="string"&&n.title.trim()||"";return!t||!r||!Number.isFinite(n.trackNumber)?null:{trackId:t,trackNumber:n.trackNumber,trackTitle:r,trackAlbum:typeof n.album=="string"&&n.album.trim()||null,trackDurationSeconds:typeof n.durationSeconds=="number"&&Number.isFinite(n.durationSeconds)&&n.durationSeconds>0?n.durationSeconds:null,trackCount:Number.isInteger(e)&&e>0?e:null}}function Xn(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const n=crypto.getRandomValues(new Uint8Array(16));n[6]=n[6]&15|64,n[8]=n[8]&63|128;const e=Array.from(n,t=>t.toString(16).padStart(2,"0"));return[e.slice(0,4).join(""),e.slice(4,6).join(""),e.slice(6,8).join(""),e.slice(8,10).join(""),e.slice(10,16).join("")].join("-")}const Ei=/\b(?:CriOS|FxiOS|EdgiOS|OPiOS|DuckDuckGo|GSA)\b/i;function zr(){if(typeof navigator>"u")return{isIphoneSafari:!1,isIos:!1,isIosSafari:!1,isSafari:!1,maxTouchPoints:null,navigatorPlatform:null,rawUserAgent:null,resolvedBrowserFamily:null,
1standaloneMode:null};const n=navigator,e=n.userAgent||"",t=n.platform||"",r=typeof n.maxTouchPoints=="number"?n.maxTouchPoints:null,a=typeof n.standalone=="boolean"?n.standalone:null,i=n.vendor||"",s=/\biPhone\b/i.test(e),o=/\biPad\b/i.test(e),l=/\biPod\b/i.test(e),u=/\biPhone\b/i.test(t),d=/\biPad\b/i.test(t),h=/\biPod\b/i.test(t),p=t==="MacIntel"&&(r??0)>1,g=/\bCPU (?:iPhone )?OS\b/i.test(e)||/\bCPU OS\b/i.test(e),k=s||u,T=k||o||l||d||h||p||g,w=/\bSafari\b/i.test(e),f=/\bAppleWebKit\b/i.test(e),C=/Apple/i.test(i)||i==="",I=Ei.test(e),v=C&&!I&&(w&&f||T&&a===!0&&f);return{isIphoneSafari:k&&v,isIos:T,isIosSafari:T&&v,isSafari:v,maxTouchPoints:r,navigatorPlatform:t,rawUserAgent:e,resolvedBrowserFamily:Mi({isIphone:k,isIos:T,isSafari:v,modernIpadOS:p,rawUserAgent:e,standaloneMode:a}),standaloneMode:a}}function Mi(n){const{isIphone:e,isIos:t,isSafari:r,modernIpadOS:a,rawUserAgent:i,standaloneMode:s}=n;return r&&e?s?"iphone-safari-standalone":"iphone-safari":r&&a?s?"ipados-safari-standalone":"ipados-safari":r&&t?s?"ios-safari-standalone":"ios-safari":/\bCriOS\b/i.test(i)?"ios-chrome":/\bFxiOS\b/i.test(i)?"ios-firefox":/\bEdgiOS\b/i.test(i)?"ios-edge":/\bOPiOS\b/i.test(i)?"ios-opera":/\bDuckDuckGo\b/i.test(i)?"ios-duckduckgo":t?"ios-webkit":/\bEdg(?:e|A|iOS)?\//i.test(i)?"edge":/\bOPR\//i.test(i)||/\bOpera\b/i.test(i)?"opera":/\bFirefox\//i.test(i)?"firefox":/\bChromium\//i.test(i)?"chromium":/\bChrome\//i.test(i)?"chrome":r?"safari":"unknown"}function Fi(n){const{audioFormatSupport:e,browserEnvironment:t}=n;return t.isSafari||t.isIos?"continuous-alac":e.flac?"continuous-flac":"continuous-aac"}function Oi(n){return n==="continuous-alac"?"alac":n==="continuous-flac"?"flac":"aac"}const We="https://d3ehd4tdywukgy.cloudfront.net",rn=[{audioFile:"audio.m4a",folderSuffix:"CONTINUOUS",format:"continuous-aac",label:"AAC",playbackFormat:"m4a"},{audioFile:"audio.m4a",folderSuffix:"CONT-ALAC",format:"continuous-alac",label:"ALAC",playbackFormat:"alac"},{audioFile:"audio.flac",folderSuffix:"CONT-FLAC",format:"continuous-flac",label:"FLAC",playbackFormat:"flac"}],Ft=[{index:1,slug:"das-rheingold",title:"Das Rheingold",audioFile:null,cueFile:"cues.json",artworkFile:"cover.jpg",nextOperaSlug:"die-walkure",previousOperaSlug:null},{index:2,slug:"die-walkure",title:"Die Walk\xFCre",audioFile:null,cueFile:"cues.json",artworkFile:"cover.jpg",nextOperaSlug:"siegfried",previousOperaSlug:"das-rheingold"},{index:3,slug:"siegfried",title:"Siegfried",audioFile:null,cueFile:"cues.json",artworkFile:"cover.jpg",nextOperaSlug:"gotterdammerung",previousOperaSlug:"die-walkure"},{index:4,slug:"gotterdammerung",title:"G\xF6tterd\xE4mmerung",audioFile:null,cueFile:"cues.json",artworkFile:"cover.jpg",nextOperaSlug:null,previousOperaSlug:"siegfried"}],Ni=250,_i="opera-depot-player:audio-startup-timing";class Li{constructor(e={}){if(c(this,"name","continuous-cue"),c(this,"audio"),c(this,"defaultMediaBaseUrl"),c(this,"fetchImpl"),c(this,"listeners",new Map),c(this,"audioError",null),c(this,"audioUrl",null),c(this,"cleanupAudioListeners",null),c(this,"cueDocument",null),c(this,"cueUrl",null),c(this,"currentContext",null),c(this,"currentCueIndex",null),c(this,"continuousAvailableFormats",[]),c(this,"continuousBaseUrlDefaulted",null),c(this,"continuousBrowserRecommendationReason",null),c(this,"continuousBrowserRecommendedFormat",null),c(this,"continuousFallbackReason",null),c(this,"continuousHttpStatus",null),c(this,"continuousCueSource",null),c(this,"continuousResolvedAudioFile",null),c(this,"continuousResolvedAudioUrl",null),c(this,"continuousResolvedCueUrl",null),c(this,"continuousResolvedFolder",null),c(this,"continuousResolvedFormat",null),c(this,"continuousSelectedFolder",null),c(this,"continuousSelectedFormat",null),c(this,"continuousTopLevelArtworkUrl",null),c(this,"continuousCurrentCueArtworkUrl",null),c(this,"continuousResolvedArtworkUrl",null),c(this,"continuousRingCycle",!1),c(this,"continuousRingIndexUrl",null),c(this,"continuousRingIndexHttpStatus",null),c(this,"continuousDetectedAsRingFromIndex",!1),c(this,"continuousRootCueUrl",null),c(this,"continuousRootCueHttpStatus",null),c(this,"continuousSelectedOperaSlug",null),c(this,"continuousSelectedOperaCueFileRaw",null),c(this,"continuousSelectedOperaAudioFileRaw",null),c(this,"continuousSelectedOperaCuePathResolved",null),c(this,"continuousSelectedOperaAudioPathResolved",null),c(this,"continuousSelectedOperaCueUrl",null),c(this,"continuousSelectedOperaAudioUrl",null),c(this,"continuousRingIndexLoaded",!1),c(this,"continuousRingOperaCount",null),c(this,"continuousRingOperas",[]),c(this,"continuousCurrentOperaIndex",null),c(this,"continuousCurrentOperaSlug",null),c(this,"continuousCurrentOperaTitle",null),c(this,"continuousNextOperaSlug",null),c(this,"continuousPreviousOperaSlug",null),c(this,"continuousAutoPlayNextOpera",!0),c(this,"continuousRingLoadError",null),c(this,"continuousTrackNumberOffset",0),c(this,"currentQueueTracks",[]),c(this,"resolvedUrls",null),c(this,"ringIndex",null),c(this,"explicitAudioUrl",!1),c(this,"fetchError",null),c(this,"lastCueChangeAt",null),c(this,"lastCueSeekReason",null),c(this,"lastCueSeekTarget",null),c(this,"loadToken",0),c(this,"audioElementId"),c(this,"audioOwnerId"),c(this,"activePlayRequestToken",0),c(this,"playPending",!1),c(this,"playRequestToken",0),c(this,"progressTimer",null),c(this,"startupLastTimeupdateSeconds",null),c(this,"startupFirstAdvancingTimeupdateEmitted",!1),c(this,"seekTarget",null),this.defaultMediaBaseUrl=Ke(e.mediaBaseUrl,We),this.fetchImpl=e.fetchImpl??fetch.bind(globalThis),this.audioElementId=Gi(),this.audioOwnerId=e.audioOwnerId??null,e.audio)this.audio=e.audio;else if(typeof Audio<"u")this.audio=new Audio;else throw new Error("Continuous cue playback requires a browser runtime.");this.audio.preload="auto",this.audio.dataset.operaDepotAudioElementId=this.audioElementId,this.audioOwnerId&&(this.audio.dataset.operaDepotAudioOwnerId=this.audioOwnerId),Vi(this.audio,this.audioElementId,this.audioOwnerId),this.cleanupAudioListeners=this.bindAudioEvents()}async load(e,t={}){await this.loadQueue([{streamSource:e,context:t}],0)}async loadQueue(e,t){var d;if(e.length===0)throw new Error("Continuous cue playback requires at least one cue track.");const r=this.loadToken+1;this.loadToken=r,this.stopProgressTimer(),this.startupLastTimeupdateSeconds=null,this.startupFirstAdvancingTimeupdateEmitted=!1,this.currentQueueTracks=e,this.currentContext=((d=e[t])==null?void 0:d.context)??e[0].context;let a=this.resolveUrls(e[t]??e[0]);if(this.audioUrl=a.audioUrl,this.cueUrl=a.cueUrl,this.continuousSelectedFormat=a.selectedFormat,this.continuousResolvedFormat=a.format,this.continuousSelectedFolder=a.selectedFolder,this.continuousAvailableFormats=a.availableFormats,this.continuousBaseUrlDefaulted=a.baseUrlDefaulted,this.continuousBrowserRecommendationReason=a.browserRecommendationReason,this.continuousBrowserRecommendedFormat=a.browserRecommendedFormat,this.continuousFallbackReason=a.fallbackReason,this.continuousResolvedAudioFile=a.resolvedAudioFile,this.continuousResolvedAudioUrl=a.resolvedAudioUrl,this.continuousResolvedCueUrl=a.resolvedCueUrl,this.continuousResolvedFolder=a.resolvedFolder,this.continuousTopLevelArtworkUrl=null,this.continuousCurrentCueArtworkUrl=null,this.continuousResolvedArtworkUrl=null,this.continuousRingCycle=a.continuousRingCycle,this.continuousRingIndexUrl=a.continuousRingIndexUrl,this.continuousRingIndexHttpStatus=a.continuousRingIndexHttpStatus,this.continuousDetectedAsRingFromIndex=a.continuousDetectedAsRingFromIndex,this.continuousRootCueUrl=a.continuousRootCueUrl,this.continuousRootCueHttpStatus=a.continuousRootCueHttpStatus,this.continuousSelectedOperaSlug=a.continuousSelectedOperaSlug,this.continuousSelectedOperaCueFileRaw=a.continuousSelectedOperaCueFileRaw,this.continuousSelectedOperaAudioFileRaw=a.continuousSelectedOperaAudioFileRaw,this.continuousSelectedOperaCuePathResolved=a.continuousSelectedOperaCuePathResolved,this.continuousSelectedOperaAudioPathResolved=a.continuousSelectedOperaAudioPathResolved,this.continuousSelectedOperaCueUrl=a.continuousSelectedOperaCueUrl,this.continuousSelectedOperaAudioUrl=a.continuousSelectedOperaAudioUrl,this.continuousRingIndexLoaded=a.continuousRingIndexLoaded,this.continuousRingOperaCount=a.continuousRingOperaCount,this.continuousRingOperas=a.continuousRingOperas,this.continuousCurrentOperaIndex=a.continuousCurrentOperaIndex,this.continuousCurrentOperaSlug=a.continuousCurrentOperaSlug,this.continuousCurrentOperaTitle=a.continuousCurrentOperaTitle,this.continuousNextOperaSlug=a.continuousNextOperaSlug,this.continuousPreviousOperaSlug=a.continuousPreviousOperaSlug,this.continuousAutoPlayNextOpera=a.continuousAutoPlayNextOpera,this.continuousTrackNumberOffset=a.continuousTrackNumberOffset,this.continuousRingLoadError=null,this.explicitAudioUrl=a.explicitAudioUrl,this.resolvedUrls=a,this.fetchError=null,this.continuousHttpStatus=null,this.continuousCueSource=null,this.audioError=null,this.seekTarget=null,this.emitDiagnostics(),a.continuousRingCycle){if(a=await this.resolveRingUrlsBeforeCueLoad(a),r!==this.loadToken)return;this.applyResolvedUrls(a)}const i=this.findPreloadedCueDocument(e,t,a),s=i?.cueDocument??await this.fetchCueDocument(a.cueUrl,a.format,a.audioFile,{operaIndex:a.continuousCurrentOperaIndex,operaSlug:
1a.continuousCurrentOperaSlug,operaTitle:a.continuousCurrentOperaTitle,trackNumberOffset:a.continuousTrackNumberOffset});if(r!==this.loadToken)return;if(i&&(this.continuousHttpStatus=i.httpStatus??a.continuousRootCueHttpStatus,this.continuousCueSource="preloaded",this.fetchError=null),this.cueDocument=s,this.continuousTopLevelArtworkUrl=Kt(s),!a.explicitAudioUrl&&!a.continuousRingCycle){const h=Rt(s.catalogueNumber||a.catalogueNumber||zt(this.currentContext??{})||"",this.defaultMediaBaseUrl,a.format,s.audioFile);this.audioUrl=h.audioUrl,this.continuousResolvedAudioFile=h.audioFile,this.continuousResolvedAudioUrl=h.audioUrl,this.continuousResolvedCueUrl=h.cueUrl,this.continuousResolvedFolder=h.folderName}const o=this.resolveInitialCueIndex(s,e,t),l=s.tracks[o]??null,u=l?.startTimeSeconds??0;await this.loadAudio(this.audioUrl??a.audioUrl),r===this.loadToken&&(this.currentCueIndex=o,this.lastCueChangeAt=new Date().toISOString(),this.seekAudio(u),this.updateActiveContextFromCue(o),this.emit("durationchange",{durationSeconds:this.getDuration()}),this.emit("timeupdate",{currentTimeSeconds:this.getCurrentTime()}),this.emit("canplay",{}),this.emitDiagnostics())}async play(){const e=++this.playRequestToken;this.activePlayRequestToken=e,this.playPending=!0;try{await this.audio.play()}catch(t){if(e!==this.playRequestToken)return;throw t}finally{e===this.playRequestToken&&(this.playPending=!1)}if(e!==this.playRequestToken||this.audio.paused){this.emitDiagnostics();return}this.startProgressTimer(),this.emit("mediasessionrefresh",{reason:"continuous-cue:play-resolved"}),this.emitDiagnostics()}pause(){this.playRequestToken+=1,this.playPending=!1,this.audio.pause(),this.stopProgressTimer(),this.emitDiagnostics()}getPlaybackActivity(){return{...this.getAudioElementSnapshot(),activePlayRequestToken:this.activePlayRequestToken,playRequestToken:this.playRequestToken,playPending:this.playPending,trackedAudioElements:Xi()}}getAudioElementSnapshot(){return{audioElementId:this.audioElementId,audioOwnerId:this.audioOwnerId,currentSrc:this.audio.currentSrc||this.audio.src||null,networkState:this.audio.networkState,paused:this.audio.paused,readyState:this.audio.readyState}}seek(e){const t=er(e,this.getDuration());this.seekTarget=t,this.lastCueSeekReason="absolute-seek",this.lastCueSeekTarget=t,this.seekAudio(t),this.emit("timeupdate",{currentTimeSeconds:t}),this.updateCurrentCueForTime(t,"seek"),this.emitDiagnostics()}async navigateTrackMarker(e,t={}){var h;const r=((h=this.cueDocument)==null?void 0:h.tracks)??[];if(r.length===0)return null;const a=this.findCueIndexForTime(this.getCurrentTime())??this.currentCueIndex??0,i=this.getCurrentTime();if(e==="next"&&a>=r.length-1&&this.continuousRingCycle&&this.continuousNextOperaSlug)return this.transitionToRingOpera(this.continuousNextOperaSlug,"first",t.autoPlay===!0,"next-ring-opera",!1);const s=r[0];if(e==="previous"&&a<=0&&s&&i-s.startTimeSeconds<=3&&this.continuousRingCycle&&this.continuousPreviousOperaSlug)return this.transitionToRingOpera(this.continuousPreviousOperaSlug,"last",t.autoPlay===!0,"previous-ring-opera",!1);const o=this.resolveNavigationTargetIndex(e,a,i);if(o===null)return null;const l=r[o],u=l.startTimeSeconds,d=this.resolveNavigationSeekReason(e,a,o);return this.seekTarget=u,this.lastCueSeekReason=d,this.lastCueSeekTarget=u,this.currentCueIndex=o,this.lastCueChangeAt=new Date().toISOString(),this.updateActiveContextFromCue(o),this.seekAudio(u),this.emit("timeupdate",{currentTimeSeconds:u}),this.emitDiagnostics(),{action:e,previousMarkerIndex:a,targetMarkerIndex:o,targetTimeSeconds:u,targetTrackId:l.id,targetTrackNumber:l.trackNumber}}async preloadNext(){}clearPreload(){}setVolume(e){this.audio.volume=Math.max(0,Math.min(e,1))}getCurrentTime(){return this.audio.currentTime||0}getDuration(){return tr(this.audio.duration)??this.getCueDuration()}getDiagnostics(){var a,i,s,o,l,u;const e=this.currentCueIndex===null?null:((a=this.cueDocument)==null?void 0:a.tracks[this.currentCueIndex])??null,t=this.getBufferedRanges(),r=this.getActMarkers();return{engineName:this.name,activeElementId:"continuous-cue-audio",standbyElementId:null,activeTrackId:e?.id??((i=this.currentContext)==null?void 0:i.trackId)??null,activeKey:((s=this.currentContext)==null?void 0:s.key)??null,standbyTrackId:null,
1standbyReadyState:null,standbyNetworkState:null,standbyBufferedRanges:[],activeBufferedRanges:t,currentBufferLoaded:this.audio.readyState>=2,nextBufferLoaded:null,nextPreloadStatus:"unsupported",nextTrackPreloadStatus:"unsupported",nextTrackPreloadTrackId:null,nextTrackPreloadKey:null,scheduledStartTime:e?.startTimeSeconds??null,scheduledEndTime:e?.endTimeSeconds??null,nextScheduledStartTime:this.currentCueIndex===null?null:((l=(o=this.cueDocument)==null?void 0:o.tracks[this.currentCueIndex+1])==null?void 0:l.startTimeSeconds)??null,standbyStartLeadMs:null,overlapMs:null,transitionOverlapMs:null,crossfadeMode:null,overlapAppliedMs:null,schedulingLeadTimeSeconds:null,lastScheduledGapMs:null,secondsBeforeEndWhenStandbyStarted:null,standbyPlayCallAt:null,standbyPlayResolvedAt:null,standbyPlayingEventAt:null,activeEndedEventAt:null,measuredSilentGapMs:null,transitionModeUsed:null,mediaSessionOwnerElement:"continuous-cue-audio",iosHtmlAudioMode:!0,iosTransitionMode:"single-audio-element",mediaOwnerElementId:"continuous-cue-audio",activeElementStillOwnerAfterLock:null,standbyPreloadPolicy:"none",standbyPreplayAttempted:!1,standbyPreplaySucceeded:!1,standbyPreplayBlocked:!1,standbyPreplayMuted:!1,ownerLostAfterStandbyPreplay:!1,mediaSessionStillControllableAfterTransition:null,userGestureTrackUnlockCount:null,tracksPreloadedForIos:null,transitionGapMs:0,lastTransitionGapMs:0,lastTransitionAt:this.lastCueChangeAt,longTrackDetected:null,recommendedEngine:null,gapless5Loaded:null,gapless5UseWebAudio:null,gapless5LoadLimit:null,gapless5LoadLimitRequested:null,gapless5LoadLimitResolved:null,gapless5LoadLimitApplied:null,gapless5Crossfade:null,gapless5CrossfadeShape:null,gapless5CrossfadeShapeCode:null,gapless5SetCrossfadeShapeCalled:null,gapless5MinimalMode:null,gapless5NativeOwnerMode:null,gapless5NativeOwnerElementId:null,gapless5NativeOwnerReadyState:null,gapless5NativeOwnerNetworkState:null,gapless5NativeOwnerPaused:null,gapless5NativeOwnerMuted:null,gapless5NativeOwnerCurrentTime:null,gapless5NativeOwnerDuration:null,gapless5NativeOwnerStatus:null,gapless5NativeOwnerPlayAttemptedAt:null,gapless5NativeOwnerPlayResolvedAt:null,gapless5NativeOwnerError:null,gapless5Options:null,gapless5RequestedUseWebAudio:null,gapless5ResolvedUseWebAudio:null,gapless5CrossfadeMs:null,gapless5SetCrossfadeCalled:null,gapless5AutoDecisionReason:null,gapless5InstanceSnapshot:null,gapless5TrackChangeMirroredOnly:null,gapless5PlaybackServiceReloadDuringTransition:null,gapless5EngineRecreatedDuringTransition:null,gapless5PauseCalledDuringTransition:null,gapless5PlayCalledDuringTransition:null,gapless5ImportStarted:null,gapless5ImportSucceeded:null,gapless5ImportFailed:null,gapless5ImportError:null,gapless5ImportShape:null,gapless5ConstructorStarted:null,gapless5ConstructorSucceeded:null,gapless5ConstructorFailed:null,gapless5ConstructorError:null,gapless5InstanceCreated:null,gapless5LoadQueueStarted:null,gapless5LoadQueueSucceeded:null,gapless5LoadQueueFailed:null,gapless5LoadQueueError:null,gapless5PlaylistLength:null,gapless5CurrentIndex:null,gapless5AdvanceEventReceived:null,gapless5EndedEventReceived:null,gapless5FinishedEventReceived:null,gapless5GlobalQueueIndex:null,gapless5InternalPlayerState:null,gapless5UrlCount:null,currentTrackIndex:this.currentCueIndex,lastGapless5Event:null,lastGapless5Error:null,audioContextState:null,audioContextBaseLatency:null,audioContextOutputLatency:null,destinationMaxChannelCount:null,destinationChannelCount:null,masterGainValue:null,sourceGainValue:null,sourceStartedAt:null,sourceStopScheduledAt:null,activeSourceConnected:null,sourceConnectedToGain:null,gainConnectedToDestination:null,decodedBufferNumberOfChannels:null,decodedBufferDuration:null,decodedBufferSampleRate:null,currentOutputMode:null,lastUserGestureAt:null,lastContextResumeResult:null,lastPlayCallResult:null,lastAudioContextResumeAt:null,mediaSessionSupported:null,mediaSessionHandlersRegistered:[],lastMediaSessionAction:null,selectedArtworkUrl:null,documentVisibilityState:null,lastVisibilityChangeAt:null,backgroundPlaybackObserved:null,webAudioBackgroun
1dPlaybackObserved:null,lockScreenControlActionReceived:null,isIos:null,isSafari:null,isIphoneSafari:null,isIosSafari:null,rawUserAgent:null,navigatorPlatform:null,maxTouchPoints:null,standaloneMode:null,resolvedBrowserFamily:null,decodeError:this.fetchError??this.audioError,mseSupported:null,mediaSourceReadyState:null,sourceBufferUpdating:null,appendedSegmentCount:null,bufferedRanges:t,currentSegmentIndex:null,mseAppendError:null,mseFetchError:null,mseManifestUrl:null,mseManifestLoaded:null,mseMimeType:null,mseCurrentTrackId:null,mseCurrentTrackNumber:null,restoredPositionApplied:null,restoredPositionSeconds:null,initialTrackMarkerIndex:null,reasonForInitialSeek:null,targetForwardBufferSeconds:null,maxForwardBufferSeconds:null,keepBehindSeconds:null,bufferedAheadSeconds:null,bufferedBehindSeconds:null,nextSegmentToAppend:null,evictionCount:null,lastEvictedRange:null,appendQueueLength:null,sourceBufferQuotaError:null,lastMseNavigationAction:null,previousMarkerIndex:null,targetMarkerIndex:this.currentCueIndex,targetTimeSeconds:this.seekTarget,startupDiagnostics:null,lastDebugMessage:null,continuousCueLoaded:this.cueDocument!==null,continuousSelectedFormat:this.continuousSelectedFormat,continuousResolvedFormat:this.continuousResolvedFormat,continuousSelectedFolder:this.continuousSelectedFolder,continuousAvailableFormats:this.continuousAvailableFormats,continuousBrowserRecommendedFormat:this.continuousBrowserRecommendedFormat,continuousBrowserRecommendationReason:this.continuousBrowserRecommendationReason,continuousResolvedFolder:this.continuousResolvedFolder,continuousResolvedAudioFile:this.continuousResolvedAudioFile,continuousResolvedCueUrl:this.continuousResolvedCueUrl,continuousResolvedAudioUrl:this.continuousResolvedAudioUrl,continuousBaseUrlDefaulted:this.continuousBaseUrlDefaulted,continuousFallbackReason:this.continuousFallbackReason,continuousAudioUrl:this.audioUrl,continuousCueUrl:this.cueUrl,continuousCueCount:((u=this.cueDocument)==null?void 0:u.tracks.length)??0,continuousHttpStatus:this.continuousHttpStatus,continuousCueSource:this.continuousCueSource,continuousCurrentCueIndex:this.currentCueIndex,continuousCurrentCueTitle:e?.displayTitle??e?.title??null,continuousCurrentCueStart:e?.startTimeSeconds??null,continuousCurrentCueEnd:e?.endTimeSeconds??null,continuousAudioReadyState:this.audio.readyState,continuousAudioNetworkState:this.audio.networkState,continuousBufferedRanges:t,continuousSeekTarget:this.seekTarget,continuousLastCueChangeAt:this.lastCueChangeAt,continuousFetchError:this.fetchError,continuousAudioError:this.audioError,continuousLastMediaSessionAction:null,continuousTopLevelArtworkUrl:this.continuousTopLevelArtworkUrl,continuousCurrentCueArtworkUrl:this.continuousCurrentCueArtworkUrl,continuousResolvedArtworkUrl:this.continuousResolvedArtworkUrl,continuousActMarkerCount:r.length,continuousActMarkers:r,continuousLastCueSeekReason:this.lastCueSeekReason,continuousLastCueSeekTarget:this.lastCueSeekTarget,continuousRootCueUrl:this.continuousRootCueUrl,continuousRootCueHttpStatus:this.continuousRootCueHttpStatus,continuousRingCycle:this.continuousRingCycle,continuousRingIndexUrl:this.continuousRingIndexUrl,continuousRingIndexHttpStatus:this.continuousRingIndexHttpStatus,continuousRingIndexLoaded:this.continuousRingIndexLoaded,continuousDetectedAsRingFromIndex:this.continuousDetectedAsRingFromIndex,continuousRingOperaCount:this.continuousRingOperaCount,continuousRingOperas:this.continuousRingOperas,continuousSelectedOperaSlug:this.continuousSelectedOperaSlug,continuousSelectedOperaCueFileRaw:this.continuousSelectedOperaCueFileRaw,continuousSelectedOperaAudioFileRaw:this.continuousSelectedOperaAudioFileRaw,continuousSelectedOperaCuePathResolved:this.continuousSelectedOperaCuePathResolved,continuousSelectedOperaAudioPathResolved:this.continuousSelectedOperaAudioPathResolved,continuousSelectedOperaCueUrl:this.continuousSelectedOperaCueUrl,continuousSelectedOperaAudioUrl:this.continuousSelectedOperaAudioUrl,continuousCurrentOperaIndex:this.continuousCurrentOperaIndex,continuousCurrentOperaSlug:this.continuousCurrentOperaSlug,continuousCurrentOperaTitle:this.continuousCurrentOperaTitle,continuousNextOperaSlug:this.continuousNextOperaSlug,continuousPreviousOperaSlug:this.continuousPreviousOperaSlug,continuousAutoPlayNextOpera:this.continuousAutoPlayNextOpera,continuousRingLoadError:this.continuousRingLoadError}}on(e,t){const r=this.listeners.get(e)??new Set;return r.add(t),this.listeners.set(e,r),()=>{r.delete(t),r.size===0&&this.listeners.delete(e)}}destroy(){var e;this.stopProgressTimer(),(e=this.cleanupAudioListeners)==null||e.call(this),this.listeners.clear(),this.audio.pause(),this.audio.removeAttribute("src"),this.audio.load(),Yi(this.audioElementId)}findPreloadedCueDocument(e,t,r){const a=e[t]??e[0]??null;return a?this.readPreloadedCueDocumentFromTrack(a,r)||(e.map(s=>this.readPreloadedCueDocumentFromTrack(s,r)).find(s=>s!==null)??null):null}readPreloadedCueDocumentFromTrack(e,t){const r=re(e.streamSource.metadata),a=b(r.continuousCueUrl)??b(r.cueUrl);if(!a||!zi(a,t.cueUrl))return null;const i=Hi(r.continuousCueDocument,t.format);return i?{cueDocument:i,httpStatus:W(r.continuousHttpStatus)??t.continuousRootCueHttpStatus}:null}async fetchCueDocument(e,t,r,a={}){try{const i=await this.fetchImpl(e,{mode:"cors"});if(this.continuousHttpStatus=i.status,!i.ok)throw new Error(`Continuous cue fetch failed with HTTP ${i.status}.`);const s=Wr(await i.json(),{audioFile:r,cueUrl:e,format:t,operaIndex:a.operaIndex,operaSlug:
1a.operaSlug,operaTitle:a.operaTitle,trackNumberOffset:a.trackNumberOffset});if(s.tracks.length===0)throw new Error("Continuous cue file does not contain any tracks.");return this.fetchError=null,this.continuousCueSource="fetched",this.emitDiagnostics(),s}catch(i){throw this.fetchError=bt(i),this.emitDiagnostics(),i}}async loadAudio(e){await new Promise((t,r)=>{const a=()=>{this.audio.removeEventListener("loadstart",i),this.audio.removeEventListener("loadedmetadata",s),this.audio.removeEventListener("canplay",s),this.audio.removeEventListener("error",o)},i=()=>{this.emitStartupAudioTiming("audio-loadstart",e)},s=l=>{a(),this.audioError=null,this.emitStartupAudioTiming(l.type==="canplay"?"audio-canplay":"audio-loadedmetadata",e),t()},o=()=>{a();const l=this.audio.error,u=l?`Continuous audio failed to load with media error ${l.code}.`:"Continuous audio failed to load.";this.audioError=u,r(new Error(u))};this.audio.addEventListener("loadstart",i),this.audio.addEventListener("loadedmetadata",s),this.audio.addEventListener("canplay",s),this.audio.addEventListener("error",o),this.emitStartupAudioTiming("audio-src-assigned",e),this.audio.src=e,this.audio.load()})}bindAudioEvents(){const e=[["timeupdate",()=>this.handleTimeUpdate("timeupdate")],["seeked",()=>this.handleTimeUpdate("seeked")],["durationchange",()=>
1this.emit("durationchange",{durationSeconds:this.getDuration()})],["ended",()=>{this.handleAudioEnded()}],["playing",()=>{this.audio.paused||this.activePlayRequestToken!==0&&this.activePlayRequestToken!==this.playRequestToken||(this.startProgressTimer(),this.emitStartupAudioTiming("audio-playing",this.audio.currentSrc||this.audio.src),this.emit("playing",{}),this.emit("mediasessionrefresh",{reason:"continuous-cue:audio-playing"}),this.emitDiagnostics())}],["pause",()=>{this.stopProgressTimer(),this.emit("pause",{}),this.emitDiagnostics()}],["waiting",()=>this.emit("waiting",{})],["loadedmetadata",()=>this.emitStartupAudioTiming("audio-loadedmetadata",this.audio.currentSrc||this.audio.src)],["canplay",()=>{this.emitStartupAudioTiming("audio-canplay",this.audio.currentSrc||this.audio.src),this.emit("canplay",{})}],["error",()=>{const t=this.audio.error;this.audioError=t?`Continuous audio element error ${t.code}.`:"Continuous audio element error.",this.emit("error",{message:this.audioError,error:t}),this.emitDiagnostics()}]];for(const[t,r]of e)this.audio.addEventListener(t,r);return()=>{for(const[t,r]of e)this.audio.removeEventListener(t,r)}}async handleAudioEnded(){if(this.stopProgressTimer(),this.updateCurrentCueForTime(this.getDuration()??this.getCurrentTime(),"ended"),this.continuousRingCycle&&this.continuousAutoPlayNextOpera&&this.continuousNextOperaSlug)try{await this.transitionToRingOpera(this.continuousNextOperaSlug,"first",!0,"ring-auto-next-opera",!0);return}catch(e){this.continuousRingLoadError=bt(e),this.emit("error",{message:this.continuousRingLoadError,error:e}),this.emitDiagnostics();return}this.emit("ended",{transitionedToPreload:!1}),this.emitDiagnostics()}handleTimeUpdate(e){const t=this.getCurrentTime();this.emitFirstAdvancingTimeupdate(t),this.emit("timeupdate",{currentTimeSeconds:t}),this.updateCurrentCueForTime(t,e),this.emitDiagnostics()}emitFirstAdvancingTimeupdate(e){if(this.startupFirstAdvancingTimeupdateEmitted)return;const t=this.startupLastTimeupdateSeconds;this.startupLastTimeupdateSeconds=e,t!==null&&e>t+.05&&(this.startupFirstAdvancingTimeupdateEmitted=!0,this.emitStartupAudioTiming("first-advancing-timeupdate",this.audio.currentSrc||this.audio.src,{currentTimeSeconds:e,previousTimeSeconds:t}))}emitStartupAudioTiming(e,t,r={}){typeof window>"u"||typeof CustomEvent>"u"||window.dispatchEvent(new CustomEvent(_i,{detail:{...r,audioUrl:Zi(t),eventName:e,readyState:this.audio.readyState,networkState:this.audio.networkState}}))}updateCurrentCueForTime(e,t){var i;const r=this.findCueIndexForTime(e);if(r===null||r===this.currentCueIndex)return;const a=(i=this.cueDocument)==null?void 0:i.tracks[r];a&&(this.currentCueIndex=r,this.lastCueChangeAt=new Date().toISOString(),this.updateActiveContextFromCue(r),this.emit("trackchange",{currentTimeSeconds:e,reason:t,targetIndex:r,targetTrackId:a.id,targetTrackNumber:a.trackNumber}))}resolveInitialCueIndex(e,t,r){var s;const a=(s=t[r])==null?void 0:s.context;if(!a)return 0;const i=e.tracks.findIndex(o=>a.trackId&&o.id===a.trackId?!0:typeof a.trackNumber=="number"&&o.trackNumber===a.trackNumber);return i===-1?Math.max(0,Math.min(r,e.tracks.length-1)):i}resolveNavigationTargetIndex(e,t,r){var s;const a=((s=this.cueDocument)==null?void 0:s.tracks)??[];if(a.length===0)return null;if(e==="next")return t>=a.length-1?null:t+1;const i=a[t];return i&&r-i.startTimeSeconds>3?t:t<=0?0:t-1}resolveNavigationSeekReason(e,t,r){return e==="next"?"next-cue-start":t===r?"current-cue-start":"previous-cue-start"}async transitionToRingOpera(e,t,r,a,i){const s=this.currentCueIndex,o=this.findRingOpera(e);if(!o||!this.resolvedUrls)return null;const l=this.loadToken+1;this.loadToken=l,this.stopProgressTimer(),this.fetchError=null,this.audioError=null,this.continuousRingLoadError=null;const u=this.buildResolvedRingOperaUrls(o);this.applyResolvedUrls(u),this.emitDiagnostics();try{const d=await this.fetchCueDocument(u.cueUrl,u.format,u.audioFile,{operaIndex:o.index,operaSlug:o.slug,operaTitle:o.title,trackNumberOffset:u.continuousTrackNumberOffset});if(l!==this.loadToken||(await this.loadAudio(u.audioUrl),l!==this.loadToken))return null;this.cueDocument=d,this.continuousTopLevelArtworkUrl=Kt(d);const h=t==="last"?Math.max(0,d.tracks.length-1):0,p=d.tracks[h]??null,g=p?.startTimeSeconds??0;return this.currentCueIndex=h,this.lastCueChangeAt=new Date().toISOString(),this.lastCueSeekReason=a,this.lastCueSeekTarget=g,this.seekTarget=g,this.seekAudio(g),this.updateActiveContextFromCue(h),this.emit
1("durationchange",{durationSeconds:this.getDuration()}),this.emit("timeupdate",{currentTimeSeconds:g}),i&&p&&this.emit("trackchange",{currentTimeSeconds:g,reason:a,targetIndex:null,targetTrackId:p.id,targetTrackNumber:p.trackNumber}),this.emit("canplay",{}),r&&(await this.audio.play(),this.startProgressTimer()),this.emitDiagnostics(),{action:t==="last"?"previous":"next",previousMarkerIndex:s,targetMarkerIndex:h,targetTimeSeconds:g,targetTrackId:p?.id??null,targetTrackNumber:p?.trackNumber??null}}catch(d){throw this.continuousRingLoadError=bt(d),this.emitDiagnostics(),d}}async resolveRingUrlsBeforeCueLoad(e){if(!e.continuousRingIndexUrl)throw new Error("Continuous Ring playback is missing ring-index.json URL.");const t=this.getPreloadedRingIndex(e)??await this.fetchRingIndex(e.continuousRingIndexUrl);this.ringIndex=t,this.continuousRingIndexLoaded=!0,this.continuousRingOperas=t.operas,this.continuousRingOperaCount=t.operas.length;const r=Jn(t,e.continuousCurrentOperaSlug,e.continuousCurrentOperaIndex)??t.operas[0]??null;if(!r)throw new Error("Continuous Ring index does not list any operas.");const a=e.explicitAudioUrl?an(e.catalogueNumber,this.defaultMediaBaseUrl,e.format,r,r.audioFile??e.resolvedAudioFile,e.resolvedFolder):null;return e.explicitAudioUrl?{...e,continuousCurrentOperaIndex:r.index,continuousCurrentOperaSlug:r.slug,continuousCurrentOperaTitle:r.title,continuousNextOperaSlug:r.nextOperaSlug,continuousPreviousOperaSlug:r.previousOperaSlug,continuousSelectedOperaSlug:r.slug,continuousSelectedOperaCueFileRaw:a?.cueFileRaw??e.continuousSelectedOperaCueFileRaw,continuousSelectedOperaAudioFileRaw:a?.audioFileRaw??e.continuousSelectedOperaAudioFileRaw,continuousSelectedOperaCuePathResolved:a?.cuePathResolved??e.continuousSelectedOperaCuePathResolved,continuousSelectedOperaAudioPathResolved:a?.audioPathResolved??e.continuousSelectedOperaAudioPathResolved,continuousSelectedOperaCueUrl:e.cueUrl,continuousSelectedOperaAudioUrl:e.audioUrl,continuousRingIndexLoaded:!0,continuousRingOperaCount:t.operas.length,continuousRingOperas:t.operas}:this.buildResolvedRingOperaUrls(r,e)}getPreloadedRingIndex(e){return e.continuousRingOperas.length===0?null:{catalogueNumber:e.catalogueNumber||null,operas:e.continuousRingOperas}}async fetchRingIndex(e){try{const t=await this.fetchImpl(e,{mode:"cors"});if(!t.ok)throw new Error(`Continuous Ring index fetch failed with HTTP ${t.status}.`);const r=Kr(await t.json());return this.continuousRingLoadError=null,this.emitDiagnostics(),r}catch(t){throw this.continuousRingLoadError=bt(t),this.emitDiagnostics(),t}}buildResolvedRingOperaUrls(e,t=this.resolvedUrls){var s,o;if(!t)throw new Error("Continuous Ring playback has no resolved folder.");const r=this.findRingOperaQueueMetadata(e.slug),a=W(r.continuousTrackNumberOffset)??t.continuousTrackNumberOffset,i=an(t.catalogueNumber,this.defaultMediaBaseUrl,t.format,e,e.audioFile??t.resolvedAudioFile,t.resolvedFolder);return{...t,audioFile:i.audioFile,audioUrl:i.audioUrl,continuousCurrentOperaIndex:e.index,continuousCurrentOperaSlug:e.slug,continuousCurrentOperaTitle:e.title,continuousNextOperaSlug:e.nextOperaSlug,continuousPreviousOperaSlug:e.previousOperaSlug,continuousSelectedOperaSlug:e.slug,continuousSelectedOperaCueFileRaw:i.cueFileRaw,continuousSelectedOperaAudioFileRaw:i.audioFileRaw,continuousSelectedOperaCuePathResolved:i.cuePathResolved,continuousSelectedOperaAudioPathResolved:i.audioPathResolved,continuousSelectedOperaCueUrl:i.cueUrl,continuousSelectedOperaAudioUrl:i.audioUrl,continuousRingIndexLoaded:this.continuousRingIndexLoaded,continuousRingOperaCount:((s=this.ringIndex)==null?void 0:s.operas.length)??t.continuousRingOperaCount,continuousRingOperas:((o=this.ringIndex)==null?void 0:o.operas)??t.continuousRingOperas,continuousTrackNumberOffset:a,cueUrl:i.cueUrl,explicitAudioUrl:!1,folderName:i.folderName,resolvedAudioFile:i.audioFile,resolvedAudioUrl:i.audioUrl,resolvedCueUrl:i.cueUrl,resolvedFolder:i.folderName}}applyResolvedUrls(e){this.resolvedUrls=e,this.audioUrl=e.audioUrl,this.cueUrl=e.cueUrl,this.continuousResolvedAudioFile=e.resolvedAudioFile,this.continuousResolvedAudioUrl=e.resolvedAudioUrl,this.continuousResolvedCueUrl=e.resolvedCueUrl,this.continuousResolvedFolder=e.resolvedFolder,this.continuousRootCueUrl=e.continuousRootCueUrl,this.continuousRootCueHttpStatus=e.continuousRootCueHttpStatus,this.continuousRingIndexHttpStatus=e.continuousRingIndexHttpStatus,this.continuousDetectedAsRingFromIndex=e.continuousDetectedAsRingFromIndex,this.continuousSelectedOperaSlug=e.continuousSelectedOperaSlug,this.continuousSelectedOperaCueFileRaw=e.continuousSelectedOperaCueFileRaw,this.continuousSelectedOperaAudioFileRaw=e.continuousSelectedOperaAudioFileRaw,this.continuousSelectedOperaCuePathResolved=e.continuousSelectedOperaCuePathResolved,this.continuousSelectedOperaAudioPathResolved=e.continuousSelectedOperaAudioPathResolved,this.continuousSelectedOperaCueUrl=e.continuousSelectedOperaCueUrl,this.continuousSelectedOperaAudioUrl=e.continuousSelectedOperaAudioUrl,this.continuousCurrentOperaIndex=e.continuousCurrentOperaIndex,this.continuousCurrentOperaSlug=e.continuousCurrentOperaSlug,this.continuousCurrentOperaTitle=e.continuousCurrentOperaTitle,this.continuousNextOperaSlug=e.continuousNextOperaSlug,this.continuousPreviousOperaSlug=e.continuousPreviousOperaSlug,this.continuousRingIndexLoaded=e.continuousRingIndexLoaded,this.continuousRingOperaCount=e.continuousRingOperaCount,this.continuousRingOperas=e.continuousRingOperas,this.continuousTrackNumberOffset=e.continuousTrackNumberOffset,this.explicitAudioUrl=e.explicitAudioUrl}findRingOpera(e){const t=this.ringIndex??(this.continuousRingOperas.length>0?{operas:this.continuousRingOperas}:null);return Jn(t,e,null)}findRingOperaQueueMetadata(e){for(const t of this.currentQueueTracks){const r=re(t.streamSource.metadata);if(b(r.continuousCurrentOperaSlug)===e)return r}return{}}
1findCueIndexForTime(e){var i;const t=((i=this.cueDocument)==null?void 0:i.tracks)??[];if(t.length===0)return null;const r=t.findIndex((s,o)=>{const l=t[o+1],u=l?.startTimeSeconds??s.endTimeSeconds;return e>=s.startTimeSeconds&&e<u});if(r!==-1)return r;const a=t[t.length-1];return e>=a.endTimeSeconds?t.length-1:null}updateActiveContextFromCue(e){var r;const t=e===null?null:(r=this.cueDocument)==null?void 0:r.tracks[e];if(!t){this.continuousCurrentCueArtworkUrl=null,this.continuousResolvedArtworkUrl=this.continuousTopLevelArtworkUrl;return}this.continuousCurrentCueArtworkUrl=Kt(t),this.continuousResolvedArtworkUrl=this.continuousCurrentCueArtworkUrl??this.continuousTopLevelArtworkUrl,this.currentContext={...this.currentContext,key:t.id,label:t.displayTitle||t.title,trackId:t.id,trackNumber:t.trackNumber}}resolveUrls(e){const t=re(e.streamSource.metadata),r=b(t.continuousAudioUrl)??b(t.audioUrl),a=b(t.continuousCueUrl)??b(t.cueUrl),i=Z(t.continuousSelectedFormat)??Z(t.continuousFormat)??Z(t.format)??"continuous-aac",s=Z(t.continuousResolvedFormat)??Z(t.continuousFormat)??i,o=de(s),l=de(i),u=$i(t.continuousAvailableFormats),d=Z(t.continuousBrowserRecommendedFormat),h=b(t.continuousBrowserRecommendationReason),p=b(t.continuousResolvedFolder),g=b(t.continuousResolvedAudioFile),k=b(t.continuousResolvedCueUrl),T=b(t.continuousResolvedAudioUrl),w=Le(t.continuousBaseUrlDefaulted),f=b(t.continuousFallbackReason),C=b(t.continuousRootCueUrl),I=W(t.continuousRootCueHttpStatus),v=W(t.continuousRingIndexHttpStatus),_=Le(t.continuousDetectedAsRingFromIndex)??!1,q=b(t.continuousSelectedOperaSlug),Q=b(t.continuousSelectedOperaCueFileRaw),_e=b(t.continuousSelectedOperaAudioFileRaw),F=b(t.continuousSelectedOperaCuePathResolved),pe=b(t.continuousSelectedOperaAudioPathResolved),je=b(t.continuousSelectedOperaCueUrl),gt=b(t.continuousSelectedOperaAudioUrl),Ge=Le(t.continuousRingCycle)===!0,Mn=b(t.continuousRingIndexUrl)??(Ge?Ui(b(t.continuousCatalogueNumber)??b(t.catalogueNumber)??zt(e.context)??"",this.defaultMediaBaseUrl,s).ringIndexUrl:null),Qt=b(t.continuousCurrentOperaSlug)??b(t.continuousOperaSlug),Fn=W(t.continuousCurrentOperaIndex),On=b(t.continuousCurrentOperaTitle)??b(t.continuousOperaTitle),ft=Wi(t.continuousRingOperas),Nn=W(t.continuousRingOperaCount)??(ft.length>0?ft.length:null),_n=W(t.continuousTrackNumberOffset)??0,Ln=Le(t.continuousAutoPlayNextOpera)??!0,Un=b(t.continuousNextOperaSlug),Dn=b(t.continuousPreviousOperaSlug),we=b(t.continuousCatalogueNumber)??b(t.catalogueNumber)??zt(e.context)??Wt(e.streamSource.url)??(r?Wt(r):null)??(a?Wt(a):null)??"";if(!we&&!(r&&a))throw new Error("Continuous cue playback could not determine the catalogue number.");const qn=b(t.continuousSelectedFolder)??`${we}${l.folderSuffix}`,Bn=p??`${we}${o.folderSuffix}`,$n=C??Rt(we,this.defaultMediaBaseUrl,s).cueUrl,Hn=q??Qt,Qn=Q??null,zn=_e??null,Wn=F??null,Kn=pe??null,jn=je??(Ge?k??a??null:null),Gn=gt??(Ge?T??r??null:null);if(r&&a)return{audioFile:g??o.audioFile,audioUrl:r,availableFormats:u.length>0?u:[s],baseUrlDefaulted:w,browserRecommendationReason:h,browserRecommendedFormat:d,catalogueNumber:we,continuousAutoPlayNextOpera:Ln,continuousCurrentOperaIndex:Fn,continuousCurrentOperaSlug:Qt,continuousCurrentOperaTitle:On,continuousDetectedAsRingFromIndex:_,continuousNextOperaSlug:Un,continuousPreviousOperaSlug:Dn,continuousRingCycle:Ge,continuousRingIndexHttpStatus:v,continuousRingIndexLoaded:Le(t.continuousRingIndexLoaded)??!1,continuousRingIndexUrl:Mn,continuousRingOperaCount:Nn,continuousRingOperas:ft,continuousRootCueHttpStatus:I,continuousRootCueUrl:$n,continuousSelectedOperaAudioFileRaw:zn,continuousSelectedOperaAudioPathResolved:Kn,continuousSelectedOperaAudioUrl:Gn,continuousSelectedOperaCueFileRaw:Qn,continuousSelectedOperaCuePathResolved:Wn,continuousSelectedOperaCueUrl:jn,continuousSelectedOperaSlug:Hn,continuousTrackNumberOffset:_n,cueUrl:a,explicitAudioUrl:!0,fallbackReason:f,folderName:Bn,format:s,resolvedAudioFile:g??o.audioFile,resolvedAudioUrl:T??r,resolvedCueUrl:k??a,resolvedFolder:Bn,selectedFolder:qn,selectedFormat:i};const se=Rt(we,this.defaultMediaBaseUrl,s);return{audioUrl:r??se.audioUrl,audioFile:se.audioFile,availableFormats:u.length>0?u:[s],baseUrlDefaulted:w,browserRecommendationReason:h,browserRecommendedFormat:d,catalogueNumber:we,continuousAutoPlayNextOpera:Ln,continuousCurrentOperaIndex:Fn,continuousCurrentOperaSlug:Qt,continuousCurrentOperaTitle:On,continuousDetectedAsRingFromIndex:_,continuousNextOperaSlug:Un,continuousPreviousOperaSlug:Dn,continuousRingCycle:Ge,continuousRingIndexHttpStatus:v,continuousRingIndexLoaded:Le(t.continuousRingIndexLoaded)??!1,continuousRingIndexUrl:Mn,continuousRingOperaCount:Nn,continuousRingOperas:ft,continuousRootCueHttpStatus:I,continuousRootCueUrl:$n,continuousSelectedOperaAudioFileRaw:zn,continuousSelectedOperaAudioPathResolved:Kn,continuousSelectedOperaAudioUrl:Gn,continuousSelectedOperaCueFileRaw:Qn,continuousSelectedOperaCuePathResolved:Wn,continuousSelectedOperaCueUrl:jn,continuousSelectedOperaSlug:Hn,continuousTrackNumberOffset:_n,cueUrl:a??se.cueUrl,explicitAudioUrl:!!r,fallbackReason:f,folderName:se.folderName,format:se.format,resolvedAudioFile:g??se.audioFile,resolvedAudioUrl:T??r??se.audioUrl,resolvedCueUrl:k??a??se.cueUrl,resolvedFolder:p??se.folderName,selectedFolder:qn,selectedFormat:i}}seekAudio(e){try{this.audio.currentTime=er(e,this.getDuration())}catch{this.audio.currentTime=Math.max(0,e)}}startProgressTimer(){typeof window>"u"||this.progressTimer!==null||(this.progressTimer=window.setInterval(()=>this.handleTimeUpdate("timer"),Ni))}stopProgressTimer(){this.progressTimer===null||typeof window>"u"||(window.clearInterval(this.progressTimer),this.progressTimer=null)}getBufferedRanges(){const e=[];for(let t=0;t<this.audio.buffered.length;t+=1)e.push(`${this.audio.buffered.start(t).toFixed(2)}-${this.audio.buffered.end(t).toFixed(2)}`);return e}getActMarkers(){if(!this.cueDocument)return[];const e=tr(this.cueDocument.totalDurationSeconds??0)??this.getCueDuration();if(!e||e<=0)return[];const t=new Set,r=[];for(const a of this.cueDocument.tracks){const i=ce(a.act);if(!i)continue;const s=i.toLocaleLowerCase(),o=!t.has(s);if(t.add(s),!a.startsNewAct&&!o)continue;const l=Math.max(0,a.startTimeSeconds);
1r.push({act:i,label:Ki(i),position:Bi(l/e),startTimeSeconds:l,trackId:a.id,trackNumber:a.trackNumber})}return r}getCueDuration(){var r,a;if((r=this.cueDocument)!=null&&r.totalDurationSeconds&&this.cueDocument.totalDurationSeconds>0)return this.cueDocument.totalDurationSeconds;const e=((a=this.cueDocument)==null?void 0:a.tracks)??[],t=e[e.length-1];return t?t.endTimeSeconds:null}emitDiagnostics(){this.emit("diagnostics",this.getDiagnostics())}emit(e,t){const r=this.listeners.get(e);if(r)for(const a of r)a(t)}}function Rt(n,e=We,t="continuous-aac",r){const a=de(t),i=r||a.audioFile,s=`${n}${a.folderSuffix}`,o=Ke(e),l=encodeURIComponent(s),u=sn(i);return{audioUrl:`${o}/${l}/${u}`,audioFile:i,cueUrl:`${o}/${l}/cues.json`,format:a.format,folderName:s}}function Ui(n,e=We,t="continuous-aac"){const r=de(t),a=`${n}${r.folderSuffix}`,i=Ke(e);return{folderName:a,ringIndexUrl:`${i}/${encodeURIComponent(a)}/ring-index.json`}}function an(n,e=We,t="continuous-aac",r,a,i){const s=de(t),o=i||`${n}${s.folderSuffix}`,l=Ke(e),u=a||r.audioFile||s.audioFile,d=r.cueFile,h=u,p=Zn(r.slug,d),g=Zn(r.slug,h),k=encodeURIComponent(o);return{audioUrl:`${l}/${k}/${sn(g)}`,audioFile:u,audioFileRaw:h,audioPathResolved:g,cueFileRaw:d,cuePathResolved:p,cueUrl:`${l}/${k}/${sn(p)}`,folderName:o,format:s.format,operaIndex:r.index,operaSlug:r.slug,operaTitle:r.title,ringIndexUrl:`${l}/${k}/ring-index.json`}}function Zn(n,e){const t=e.trim().replace(/^\/+/,"");return t.includes("/")?t:`${n}/${t}`}function de(n){return rn.find(e=>e.format===n)??rn[0]}function Z(n){return n==="continuous-aac"||n==="continuous-alac"||n==="continuous-flac"?n:n==="m4a"||n==="aac"?"continuous-aac":n==="alac"?"continuous-alac":n==="flac"?"continuous-flac":null}function Ke(n,e=We){return((typeof n=="string"?n.trim():"")||e).replace(/\/+$/,"")}function Wr(n,e={}){const t=re(n),r=Z(t.format)??e.format??"continuous-aac",a=de(r),i=Xr(Yr(t),e.cueUrl),s=Pe(t.tracks).map((l,u,d)=>qi(l,u,d,{cueUrl:e.cueUrl,operaIndex:e.operaIndex??null,operaSlug:e.operaSlug??null,operaTitle:e.operaTitle??null,trackNumberOffset:e.trackNumberOffset??0})).filter(l=>l.endTimeSeconds>=l.startTimeSeconds),o=s[s.length-1]??null;return{catalogueNumber:Ie(t.catalogueNumber,""),albumTitle:ce(t.albumTitle),artist:ce(t.artist),composer:ce(t.composer),format:r,audioFile:Ie(t.audioFile,e.audioFile??a.audioFile),artworkUrl:i,imageUrl:i,totalDurationSeconds:ji(t.totalDurationSeconds,o?.endTimeSeconds??null),tracks:s}}function Kr(n,e={}){const t=re(n),a=Di(t).map((s,o)=>jr(s,o,e.defaultAudioFile??null)).filter(s=>s!==null),i=a.length>0?Gr(a):Ft.map(s=>({...s,audioFile:e.defaultAudioFile??s.audioFile}));return{catalogueNumber:ce(t.catalogueNumber)??e.catalogueNumber??null,operas:i}}function Di(n){const e=Pe(n.operas).length>0?Pe(n.operas):Pe(n.operaOrder);if(e.length>0)return e;const t=Pe(n.operaSlugs);return t.length>0?t:Ft}function jr(n,e,t){const r=Ft[e]??null,a=typeof n=="string"?{slug:n}:re(n),i=Vr(b(a.slug)??b(a.operaSlug)??b(a.folder)??b(a.folderName)??r?.slug??"");if(!i)return null;const s=Ft.find(o=>o.slug===i)??r;return{index:e+1,slug:i,title:b(a.title)??b(a.name)??s?.title??i,audioFile:b(a.audioFile)??b(a.file)??t,cueFile:b(a.cueFile)??b(a.cuesFile)??"cues.json",artworkFile:b(a.artworkFile)??b(a.coverFile)??b(a.imageFile)??"cover.jpg",nextOperaSlug:b(a.nextOperaSlug),previousOperaSlug:b(a.previousOperaSlug)}}function Gr(n){return n.map((e,t)=>{var r,a;return{...e,index:t+1,nextOperaSlug:e.nextOperaSlug??((r=n[t+1])==null?void 0:r.slug)??null,previousOperaSlug:e.previousOperaSlug??((a=n[t-1])==null?void 0:a.slug)??null}})}function Jn(n,e,t){const r=n?.operas??[];if(e){const a=Vr(e),i=r.find(s=>s.slug===a);if(i)return i}return typeof t=="number"&&Number.isFinite(t)?r.find(a=>a.index===t)??null:r[0]??null}function qi(n,e,t,r){const a=re(n),i=e>0?re(t[e-1]):{},s=Ve(i.endTimeSeconds,0),o=Ve(a.startTimeSeconds,s),l=Ve(a.durationSeconds,0),u=Ve(a.endTimeSeconds,o+l),d=Ve(a.trackNumber,e+1),p=W(a.globalTrackNumber)??W(a.continuousGlobalTrackNumber)??d+r.trackNumberOffset,g=Ie(a.title,`Track ${p}`),k=Xr(Yr(a),r.cueUrl),T=Ie(a.id,`track${String(d).padStart(3,"0")}`);return{id:r.operaSlug?`${r.operaSlug}:${T}`:T,trackNumber:p,globalTrackNumber:p,localOperaTrackNumber:d,title:g,displayTitle:Ie(a.displayTitle,g),act:ce(a.act),startsNewAct:a.startsNewAct===!0,composer:ce(a.composer),artist:ce(a.artist),album:ce(a.album),artworkUrl:k,imageUrl:k,sourceFilename:Ie(a.sourceFilename,""),originalFilename:Ie(a.originalFilename,""),startTimeSeconds:o,endTimeSeconds:u,durationSeconds:l>0?l:Math.max(0,u-o),operaIndex:r.operaIndex,operaSlug:r.operaSlug,operaTitle:r.operaTitle}}function zt(n){if(!n.key)return null;const[e]=n.key.split(":");return e||null}function Wt(n){try{const t=new URL(n,window.location.href).pathname.match(/\/([^/]+)(?:CONTINUOUS|CONT
1-ALAC|CONT-FLAC)\//i);return t?.[1]??null}catch{return null}}function er(n,e){const t=e??Number.MAX_SAFE_INTEGER;return Math.max(0,Math.min(n,t))}function Bi(n){return Math.min(1,Math.max(0,n))}function tr(n){return Number.isFinite(n)&&n>0?n:null}function re(n){return n&&typeof n=="object"?n:{}}function Pe(n){return Array.isArray(n)?n:[]}function $i(n){return Pe(n).map(e=>Z(e)).filter(e=>e!==null)}function Hi(n,e){const t=re(n),r=Z(t.format),a=Pe(t.tracks);return r!==e||a.length===0||!a.every(Qi)?null:t}function Qi(n){const e=re(n),t=W(e.startTimeSeconds),r=W(e.endTimeSeconds);return b(e.id)!==null&&b(e.title)!==null&&W(e.trackNumber)!==null&&t!==null&&r!==null&&r>=t}function zi(n,e){const t=nr(n),r=nr(e);return t!==null&&r!==null?t===r:n.split(/[?#]/)[0]===e.split(/[?#]/)[0]}function nr(n){try{const e=new URL(n,Zr());return`${e.origin}${e.pathname}`}catch{return null}}function Wi(n){return Array.isArray(n)?Gr(n.map((e,t)=>jr(e,t,null)).filter(e=>e!==null)):[]}function sn(n){return n.split("/").filter(Boolean).map(e=>encodeURIComponent(e)).join("/")}function Ie(n,e){return typeof n=="string"&&n.trim()?n.trim():e}function b(n){return typeof n=="string"&&n.trim()?n.trim():null}function W(n){if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&n.trim()){const e=Number(n);return Number.isFinite(e)?e:null}return null}function Vr(n){const e=n.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return{rheingold:"das-rheingold",walkure:"die-walkure","die-walkuere":"die-walkure",gotterdammerung:"gotterdammerung",goetterdaemmerung:"gotterdammerung"}[e]??e}function Yr(n){return b(n.artworkUrl)??b(n.imageUrl)}function Kt(n){return n.artworkUrl??n.imageUrl??null}function Xr(n,e){if(!n)return null;try{return new URL(n,e??Zr()).href}catch{return n}}function Zr(){return typeof window>"u"?"https://local.invalid/":window.location.href}function Le(n){return typeof n=="boolean"?n:null}function ce(n){return typeof n=="string"&&n.trim()?n.trim():null}function Ki(n){return n.toLocaleUpperCase()}function Ve(n,e){if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&n.trim()){const t=Number(n);if(Number.isFinite(t))return t}return e}function ji(n,e){if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&n.trim()){const t=Number(n);if(Number.isFinite(t))return t}return e}function Gi(){return`continuous-cue-audio:${typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2)}`}function vn(){if(typeof window>"u")return[];const n=window;return n.__OperaDepotContinuousCueAudioElements??(n.__OperaDepotContinuousCueAudioElements=[]),n.__OperaDepotContinuousCueAudioElements}function Vi(n,e,t){vn().push({audio:n,audioElementId:e,audioOwnerId:t,createdAt:new Date().toISOString(),destroyedAt:null})}function Yi(n){const t=vn().find(r=>r.audioElementId===n);t&&(t.destroyedAt=new Date().toISOString())}function Xi(){return vn().map(n=>({audioElementId:n.audioElementId,audioOwnerId:n.audioOwnerId,currentSrc:n.audio.currentSrc||n.audio.src||null,destroyedAt:n.destroyedAt,networkState:n.audio.networkState,paused:n.audio.paused,readyState:n.audio.readyState}))}function Zi(n){if(!n)return null;try{const e=new URL(n,typeof window<"u"?window.location.href:void 0);return e.search="",e.hash="",e.href}catch{return n.split(/[?#]/)[0]||null}}function bt(n){return n instanceof Error?n.message:String(n)}const Ji=20;class es{constructor(e){if(c(this,"name","dual-audio"),c(this,"listeners",new Map),c(this,"slots"),c(this,"activeIndex",0),c(this,"cleanupAudioListeners",[]),c(this,"lastDebugMessage",null),c(this,"lastTransitionAt",null),c(this,"lastTransitionGapMs",null),c(this,"volume",1),e)this.slots=[this.createSlot(e[0]),this.createSlot(e[1])];else if(typeof Audio<"u")this.slots=[this.createSlot(new Audio),this.createSlot(new Audio)];else throw new Error("Dual audio playback requires a browser runtime.");this.cleanupAudioListeners=this.slots.map((t,r)=>this.bindAudioEvents(t,r)),this.emitDiagnostics()}async load(e,t={}){const r=this.standbySlot;if(this.isSameContext(r.context,t)&&r.source){this.emitDebug("Promoting preloaded audio for requested track",{key:t.key??null,trackId:t.trackId??null,status:r.status});try{await r.preloadPromise,this.promoteStandbyToActive(),this.emit
1("durationchange",{durationSeconds:this.getDuration()}),this.emit("canplay",{});return}catch(a){this.emitDebug("Preloaded audio promotion failed; loading normally",{key:t.key??null,trackId:t.trackId??null,message:a instanceof Error?a.message:String(a)}),this.clearPreload()}}this.clearPreload(),await this.loadSlot(this.activeSlot,e,t,"loading")}async preloadNext(e,t={}){if(this.isSameContext(this.activeSlot.context,t))return;const r=this.standbySlot;return this.isSameContext(r.context,t)&&r.preloadPromise||(this.resetSlot(r),this.emitDebug("Next track preload started",{key:t.key??null,trackId:t.trackId??null,label:t.label??null}),r.preloadPromise=this.loadSlot(r,e,t,"preloading").catch(a=>{throw r.status="failed",this.emitDebug("Next track preload failed",{key:t.key??null,trackId:t.trackId??null,message:a instanceof Error?a.message:String(a)}),this.emitDiagnostics(),a})),r.preloadPromise}clearPreload(){this.resetSlot(this.standbySlot),this.emitDiagnostics()}async play(){var t,r;const e=St();await this.activeSlot.audio.play(),this.emitDebug("Playback start resolved",{key:((t=this.activeSlot.context)==null?void 0:t.key)??null,trackId:((r=this.activeSlot.context)==null?void 0:r.trackId)??null,startMs:Math.round(St()-e)})}pause(){this.activeSlot.audio.pause()}seek(e){const r=this.normalizeDuration(this.activeSlot.audio.duration)??Number.MAX_SAFE_INTEGER;this.activeSlot.audio.currentTime=Math.max(0,Math.min(e,r))}setVolume(e){this.volume=Math.max(0,Math.min(e,1));for(const t of this.slots)t.audio.volume=this.volume}getCurrentTime(){return this.activeSlot.audio.currentTime}getDuration(){return this.normalizeDuration(this.activeSlot.audio.duration)}getDiagnostics(){var t,r,a,i,s;const e=this.standbySlot;return{engineName:this.name,activeElementId:null,standbyElementId:null,activeTrackId:((t=this.activeSlot.context)==null?void 0:t.trackId)??null,activeKey:((r=this.activeSlot.context)==null?void 0:r.key)??null,standbyTrackId:((a=e.context)==null?void 0:a.trackId)??null,standbyReadyState:e.audio.readyState,standbyNetworkState:e.audio.networkState,standbyBufferedRanges:[],activeBufferedRanges:[],currentBufferLoaded:null,nextBufferLoaded:null,nextPreloadStatus:this.toPreloadStatus(e.status),nextTrackPreloadStatus:this.toPreloadStatus(e.status),nextTrackPreloadTrackId:((i=e.context)==null?void 0:i.trackId)??null,nextTrackPreloadKey:((s=e.context)==null?void 0:s.key)??null,scheduledStartTime:null,scheduledEndTime:null,nextScheduledStartTime:null,standbyStartLeadMs:null,overlapMs:null,transitionOverlapMs:null,crossfadeMode:null,overlapAppliedMs:null,schedulingLeadTimeSeconds:null,lastScheduledGapMs:null,secondsBeforeEndWhenStandbyStarted:null,standbyPlayCallAt:null,standbyPlayResolvedAt:null,standbyPlayingEventAt:null,activeEndedEventAt:null,measuredSilentGapMs:null,transitionModeUsed:null,mediaSessionOwnerElement:null,iosHtmlAudioMode:null,iosTransitionMode:null,mediaOwnerElementId:null,activeElementStillOwnerAfterLock:null,standbyPreloadPolicy:null,standbyPreplayAttempted:null,standbyPreplaySucceeded:null,standbyPreplayBlocked:null,standbyPreplayMuted:null,ownerLostAfterStandbyPreplay:null,mediaSessionStillControllableAfterTransition:null,userGestureTrackUnlockCount:null,tracksPreloadedForIos:null,transitionGapMs:this.lastTransitionGapMs,lastTransitionGapMs:this.lastTransitionGapMs,lastTransitionAt:this.lastTransitionAt,longTrackDetected:null,recommendedEngine:null,gapless5Loaded:null,gapless5UseWebAudio:null,gapless5LoadLimit:null,gapless5LoadLimitRequested:null,gapless5LoadLimitResolved:null,gapless5LoadLimitApplied:null,gapless5Crossfade:null,gapless5CrossfadeShape:null,gapless5CrossfadeShapeCode:null,gapless5SetCrossfadeShapeCalled:null,gapless5MinimalMode:null,gapless5NativeOwnerMode:null,gapless5NativeOwnerElementId:null,gapless5NativeOwnerReadyState:null,gapless5NativeOwnerNetworkState:null,gapless5NativeOwnerPaused:null,gapless5NativeOwnerMuted:null,gapless5NativeOwnerCurrentTime:null,gapless5NativeOwnerDuration:null,gapless5NativeOwnerStatus:null,gapless5NativeOwnerPlayAttemptedAt:null,gapless5NativeOwnerPlayResolvedAt:null,gapless5NativeOwnerError:null,gapless5Options:null,gapless5RequestedUseWebAudio:null,gapless5ResolvedUseWebAudio:null,gapless5CrossfadeMs:null,gapless5SetCrossfadeCalled:null,gapless5AutoDecisionReason:null,gapless5InstanceSnapshot:null,gapless5TrackChangeMirroredOnly:null,gapless5PlaybackServiceReloadDuringTransition:null,gapless5EngineRecreatedDuringTransition:null,gapless5PauseCalledDuringTransition:null,gapless5PlayCalledDuringTransition:null,gapless5ImportStarted:null,gapless5ImportSucceeded:null,gapless5ImportFailed:null,gapless5ImportError:null,gapless5ImportShape:null,gapless5ConstructorStarted:null,gapless5ConstructorSucceeded:null,gapless5ConstructorFailed:null,gapless5ConstructorError:null,gapless5InstanceCreated:null,gapless5LoadQueueStarted:null,gapless5LoadQueueSucceeded:null,gapless5LoadQueueFailed:null,gapless5LoadQueueError:null,gapless5PlaylistLength:null,gapless5CurrentIndex:null,gapless5AdvanceEventReceived:null,gapless5EndedEventReceived:null,gapless5FinishedEventReceived:null,gapless5GlobalQueueIndex:null,gapless5InternalPlayerState:null,gapless5UrlCount:null,currentTrackIndex:null,lastGapless5Event:null,lastGapless5Error:null,audioContextState:null,audioContextBaseLatency:null,audioContextOutputLatency:null,destinationMaxChannelCount:null,destinationChannelCount:null,masterGainValue:null,sourceGainValue:null,sourceStartedAt:null,sourceStopScheduledAt:null,activeSourceConnected:null,sourceConnectedToGain:null,gainConnectedToDestination:null,decodedBufferNumberOfChannels:null,decodedBufferDuration:null,decodedBufferSampleRate:null,currentOutputMode:null,lastUserGestureAt:null,lastContextResumeResult:null,lastPlayCallResult:null,lastAudioContextResumeAt:null,mediaSessionSupported:null,mediaSessionHandlersRegistered:[],lastMediaSessionAction:null,selectedArtworkUrl:null,documentVisibilityState:null,lastVisibilityChangeAt:null,backgroundPlaybackObserved:null,webAudioBackgroun
1dPlaybackObserved:null,lockScreenControlActionReceived:null,isIos:null,isSafari:null,isIphoneSafari:null,isIosSafari:null,rawUserAgent:null,navigatorPlatform:null,maxTouchPoints:null,standaloneMode:null,resolvedBrowserFamily:null,decodeError:null,mseSupported:null,mediaSourceReadyState:null,sourceBufferUpdating:null,appendedSegmentCount:null,bufferedRanges:[],currentSegmentIndex:null,mseAppendError:null,mseFetchError:null,mseManifestUrl:null,mseManifestLoaded:null,mseMimeType:null,mseCurrentTrackId:null,mseCurrentTrackNumber:null,restoredPositionApplied:null,restoredPositionSeconds:null,initialTrackMarkerIndex:null,reasonForInitialSeek:null,targetForwardBufferSeconds:null,maxForwardBufferSeconds:null,keepBehindSeconds:null,bufferedAheadSeconds:null,bufferedBehindSeconds:null,nextSegmentToAppend:null,evictionCount:null,lastEvictedRange:null,appendQueueLength:null,sourceBufferQuotaError:null,lastMseNavigationAction:null,previousMarkerIndex:null,targetMarkerIndex:null,targetTimeSeconds:null,startupDiagnostics:null,lastDebugMessage:this.lastDebugMessage}}on(e,t){const r=this.listeners.get(e)??new Set;return r.add(t),this.listeners.set(e,r),()=>{r.delete(t),r.size===0&&this.listeners.delete(e)}}destroy(){for(const e of this.cleanupAudioListeners)e();this.cleanupAudioListeners=[],this.listeners.clear();for(const e of this.slots)this.resetSlot(e)}get activeSlot(){return this.slots[this.activeIndex]}get standbyIndex(){return this.activeIndex===0?1:0}get standbySlot(){return this.slots[this.standbyIndex]}createSlot(e){return e.preload="auto",e.volume=this.volume,{audio:e,context:null,preloadPromise:null,source:null,status:"idle",token:0}}async loadSlot(e,t,r,a){const i=e.token+1;e.token=i,e.context=r,e.source=t,e.status=a,e.audio.preload="auto",this.emitDiagnostics();const s=new Promise((o,l)=>{const u=()=>{e.audio.removeEventListener("canplay",d),e.audio.removeEventListener("canplaythrough",d),e.audio.removeEventListener("error",h)},d=()=>{if(e.token!==i){u(),o();return}
1u(),e.status="canplay",e===this.activeSlot?(this.emit("durationchange",{durationSeconds:this.normalizeDuration(e.audio.duration)}),this.emit("canplay",{})):this.emitDebug("Next track canplay",{key:r.key??null,trackId:r.trackId??null}),this.emitDiagnostics(),o()},h=()=>{if(e.token!==i){u(),o();return}u(),e.status="failed";const p=e.audio.error;l(new Error(p?`Audio failed to load with media error ${p.code}.`:"Audio failed to load."))};e.audio.addEventListener("canplay",d),e.audio.addEventListener("canplaythrough",d),e.audio.addEventListener("error",h)});e.audio.src=t.url,e.audio.load(),await s}bindAudioEvents(e,t){const r=()=>this.activeIndex===t,a=[["timeupdate",()=>{r()&&(this.emit("timeupdate",{currentTimeSeconds:e.audio.currentTime}),this.logNearEndPreloadCheck(e))}],["durationchange",()=>{r()&&this.emit("durationchange",{durationSeconds:this.normalizeDuration(e.audio.duration)})}],["ended",()=>{r()&&this.handleActiveEnded()}],["playing",()=>{r()&&this.emit("playing",{})}],["pause",()=>{r()&&this.emit("pause",{})}],["waiting",()=>{r()&&this.emit("waiting",{})}],["canplay",()=>{this.handleSlotCanPlay(e,r(),"canplay")}],["canplaythrough",()=>{this.handleSlotCanPlay(e,r(),"canplaythrough")}],["error",()=>{var i,s,o;e.status="failed",r()?this.emit("error",{message:"Audio playback error.",error:e.audio.error}):(this.emitDebug("Next track preload media error",{key:((i=e.context)==null?void 0:i.key)??null,trackId:((s=e.context)==null?void 0:s.trackId)??null,errorCode:((o=e.audio.error)==null?void 0:o.code)??null}),this.emitDiagnostics())}]];for(const[i,s]of a)e.audio.addEventListener(i,s);return()=>{for(const[i,s]of a)e.audio.removeEventListener(i,s)}}handleSlotCanPlay(e,t,r){var a,i;e.status==="idle"||e.status==="failed"||(e.status=r,t?(this.emit("canplay",{}),this.emit("durationchange",{durationSeconds:this.normalizeDuration(e.audio.duration)})):this.emitDebug(`Next track ${r}`,{key:((a=e.context)==null?void 0:a.key)??null,trackId:((i=e.context)==null?void 0:i.trackId)??null,readyState:e.audio.readyState}),this.emitDiagnostics())}async handleActiveEnded(){var a,i;const e=St(),t=this.standbySlot;if(this.emitDebug("Ended event received",{activeKey:((a=this.activeSlot.context)==null?void 0:a.key)??null,standbyKey:((i=t.context)==null?void 0:i.key)??null,standbyStatus:t.status}),!this.isStandbyReady()){this.emit("ended",{transitionedToPreload:!1});return}const r=t.context;this.emitDebug("Swapping to preloaded next audio",{nextKey:r?.key??null,nextTrackId:r?.trackId??null}),this.promoteStandbyToActive();try{await this.activeSlot.audio.play();const s=Math.max(0,St()-e);this.lastTransitionGapMs=Math.round(s),this.lastTransitionAt=new Date().toISOString(),this.emitDebug("Preloaded playback start resolved",{gapMs:this.lastTransitionGapMs,nextKey:r?.key??null,nextTrackId:r?.trackId??null}),this.emitDiagnostics(),this.emit("ended",{transitionedToPreload:!0,nextKey:r?.key,nextTrackId:r?.trackId,gapMs:this.lastTransitionGapMs})}catch(s){this.emitDebug("Preloaded transition playback failed; service fallback needed",{nextKey:r?.key??null,nextTrackId:r?.trackId??null,message:s instanceof Error?s.message:String(s)}),this.emit("ended",{transitionedToPreload:!1})}}promoteStandbyToActive(){const e=this.activeIndex;this.activeIndex=this.standbyIndex;const t=this.slots[e];t.audio.pause(),this.resetSlot(t),this.emitDiagnostics()}resetSlot(e){e.token+=1,e.audio.pause(),e.audio.removeAttribute("src"),e.audio.load(),e.context=null,e.preloadPromise=null,e.source=null,e.status="idle"}isStandbyReady(){const e=this.standbySlot;return e.source!==null&&e.context!==null&&(e.status==="canplay"||e.status==="canplaythrough"||e.audio.readyState>=3)}logNearEndPreloadCheck(e){var a,i;const t=this.normalizeDuration(e.audio.duration);if(!t)return;const r=t-e.audio.currentTime;r<=Ji&&this.standbySlot.source&&this.standbySlot.status==="preloading"&&this.emitDebug("Current track near end while next preload is pending",{remainingSeconds:Math.round(r),nextKey:((a=this.standbySlot.context)==null?void 0:a.key)??null,nextTrackId:((i=this.standbySlot.context)==null?void 0:i.trackId)??null})}
1isSameContext(e,t){return!e||!t?!1:e.key&&t.key?e.key===t.key:!!(e.trackId&&t.trackId&&e.trackId===t.trackId)}toPreloadStatus(e){return e==="loading"?"idle":e==="preloading"?"preloading":e==="canplay"||e==="canplaythrough"||e==="failed"?e:"idle"}emitDebug(e,t){this.lastDebugMessage=e,this.emit("debug",{message:e,data:t}),this.emitDiagnostics()}emitDiagnostics(){this.emit("diagnostics",this.getDiagnostics())}emit(e,t){const r=this.listeners.get(e);if(r)for(const a of r)a(t)}normalizeDuration(e){return Number.isFinite(e)?e:null}}function St(){return typeof performance>"u"?Date.now():performance.now()}class ts{constructor(){c(this,"registeredHandlers",new Set),c(this,"lastMediaSessionAction",null),c(this,"lastMetadataKey",null),c(this,"continuousSkipControlsPreferred",!1),c(this,"seekHandlersDisabledForTest",!1),c(this,"mediaSessionArtworkDisabledForTest",!1),c(this,"simplifiedSafariIosMediaSession",!1),c(this,"mediaSessionPayloadMode",null),c(this,"mediaSessionArtworkSizeUsed",null),c(this,"mediaSessionHandlersSimplifiedForSafariIos",!1),c(this,"mediaSessionMetadataSetAttempted",null),c(this,"mediaSessionMetadataSetSucceeded",null),c(this,"mediaSessionMetadataSetError",null),c(this,"mediaSessionMetadataSetAt",null),c(this,"mediaSessionMetadataPayload",null)}configure(e,t={}){const r=t.engineName??null,a=r==="continuous-cue";this.continuousSkipControlsPreferred=a&&t.continuousSkipControlsPreferred===!0,this.seekHandlersDisabledForTest=a&&this.continuousSkipControlsPreferred||t.seekHandlersDisabledForTest===!0;const i=this.mediaSessionArtworkDisabledForTest,s=this.simplifiedSafariIosMediaSession;this.mediaSessionArtworkDisabledForTest=t.mediaSessionArtworkDisabledForTest===!0,this.simplifiedSafariIosMediaSession=a&&t.simplifiedSafariIosMediaSession===!0,this.mediaSessionPayloadMode=this.simplifiedSafariIosMediaSession?"simplified-safari-ios":"standard",this.mediaSessionHandlersSimplifiedForSafariIos=this.simplifiedSafariIosMediaSession,(i!==this.mediaSessionArtworkDisabledForTest||s!==this.simplifiedSafariIosMediaSession)&&(this.lastMetadataKey=null);const o=this.getMediaSession();if(!o){this.logHandlerRegistration(r);return}this.registerHandler(o,"play",()=>{var l;this.recordAction("play"),(l=e.onAction)==null||l.call(e,"play"),e.play()}),this.registerHandler(o,"pause",()=>{var l;this.recordAction("pause"),(l=e.onAction)==null||l.call(e,"pause"),e.pause()}),this.registerHandler(o,"nexttrack",()=>{var l;this.recordAction("nexttrack"),(l=e.onAction)==null||l.call(e,"nexttrack"),e.next()}),this.registerHandler(o,"previoustrack",()=>{var l;this.recordAction("previoustrack"),(l=e.onAction)==null||l.call(e,"previoustrack"),e.previous()}),this.seekHandlersDisabledForTest||this.mediaSessionHandlersSimplifiedForSafariIos?(this.unregisterHandler(o,"seekbackward"),this.unregisterHandler(o,"seekforward")):(this.registerHandler(o,"seekbackward",l=>{var u;this.recordAction("seekbackward"),(u=e.onAction)==null||u.call(e,"seekbackward"),e.seekBy(-ar(l))}),this.registerHandler(o,"seekforward",l=>{var u;this.recordAction("seekforward"),(u=e.onAction)==null||u.call(e,"seekforward"),e.seekBy(ar(l))})),this.registerHandler(o,"seekto",l=>{var u;this.recordAction("seekto"),(u=e.onAction)==null||u.call(e,"seekto"),typeof l.seekTime=="number"&&e.seek(l.seekTime)}),this.logHandlerRegistration(r)}update(e,t={}){const r=this.getMediaSession(),a=e.currentTrack;if(!(!r||!a)){if(typeof MediaMetadata<"u"){if(this.simplifiedSafariIosMediaSession&&!this.shouldApplySimplifiedSafariIosMetadata(t)){this.updatePositionState(r,e),r.playbackState=e.isPlaying?"playing":e.status==="paused"||e.status==="ready"?"paused":"none";return}const i=this.buildMetadataPayload(e,t.reason??null),s=[a.id,i.title,i.artist,i.album,i.artworkUrl??"",String(i.artworkDisabledForTest),i.mediaSessionPayloadMode,i.mediaSessionArtworkSizeUsed??""].join("|");if(t.forceMetadata===!0||s!==this.lastMetadataKey){this.lastMetadataKey=s,this.mediaSessionMetadataSetAttempted=!0,this.mediaSessionMetadataPayload=i,this.mediaSessionMetadataSetAt=new Date().toISOString();try{r.metadata=new MediaMetadata({title:i.title,artist:i.artist,album:i.album,artwork:i.artwork??void 0}),this.mediaSessionMetadataSetSucceeded=!0,this.mediaSessionMetadataSetError=null}catch(o){this.mediaSessionMetadataSetSucceeded=!1,this.mediaSessionMetadataSetError=cs(o)}}}this.updatePositionState(r,e),r.playbackState=e.isPlaying?"playing":e.status==="paused"||e.status==="ready"?"paused":"none"}}clear(){const e=this.getMediaSession();e&&(e.metadata=null,e.playbackState="none",this.lastMetadataKey=null)}getDiagnostics(){return{mediaSessionSupported:this.getMediaSession()!==null,mediaSessionHandlersRegistered:[...this.registeredHandlers],lastMediaSessionAction:this.lastMediaSessionAction,continuousSkipControl
1sPreferred:this.continuousSkipControlsPreferred,seekHandlersDisabledForTest:this.seekHandlersDisabledForTest,mediaSessionMetadataSetAttempted:this.mediaSessionMetadataSetAttempted,mediaSessionMetadataSetSucceeded:this.mediaSessionMetadataSetSucceeded,mediaSessionMetadataSetError:this.mediaSessionMetadataSetError,mediaSessionMetadataSetAt:this.mediaSessionMetadataSetAt,mediaSessionMetadataPayload:this.mediaSessionMetadataPayload,mediaSessionArtworkDisabledForTest:this.mediaSessionArtworkDisabledForTest,simplifiedSafariIosMediaSession:this.simplifiedSafariIosMediaSession,mediaSessionPayloadMode:this.mediaSessionPayloadMode,mediaSessionArtworkSizeUsed:this.mediaSessionArtworkSizeUsed,mediaSessionHandlersSimplifiedForSafariIos:this.mediaSessionHandlersSimplifiedForSafariIos}}shouldApplySimplifiedSafariIosMetadata(e){return e.forceMetadata!==!0?!1:e.reason==="continuous-cue:play-resolved"||e.reason==="continuous-cue:audio-playing"||e.reason==="dev-force-button"}buildMetadataPayload(e,t){var d,h,p,g;const r=e.currentTrack,a=jt(r?.displayTitle||r?.title,r?.id??"Untitled track"),i=jt(ns(e),((h=(d=e.currentCatalogue)==null?void 0:d.product)==null?void 0:h.vendor)??r?.composer??"Unknown artist"),s=jt(rs(e),((p=e.currentCatalogue)==null?void 0:p.catalogueNumber)??r?.album??"Unknown album"),o=this.mediaSessionArtworkDisabledForTest?null:Je(e),l=o===null?null:ls(o),u=this.createArtworkEntriesForMode(o,l);return this.mediaSessionArtworkSizeUsed=((g=u?.[0])==null?void 0:g.sizes)??null,{album:s,artist:i,artwork:u,artworkDisabledForTest:this.mediaSessionArtworkDisabledForTest,artworkUrl:o,artworkUrlAbsoluteHttps:l,mediaSessionPayloadMode:this.mediaSessionPayloadMode??"standard",mediaSessionArtworkSizeUsed:this.mediaSessionArtworkSizeUsed,reason:t,title:a,titleNonEmpty:a.length>0,artistNonEmpty:i.length>0,albumNonEmpty:s.length>0}}createArtworkEntriesForMode(e,t){return!e||t!==!0?null:this.simplifiedSafariIosMediaSession?us(e)?[{src:e,sizes:"128x128",type:"image/jpeg"}]:null:as(e)}getMediaSession(){return typeof navigator>"u"?null:navigator.mediaSession??null}registerHandler(e,t,r){try{e.setActionHandler(t,r),this.registeredHandlers.add(t)}catch{this.registeredHandlers.delete(t)}}unregisterHandler(e,t){try{e.setActionHandler(t,null)}catch{}finally{this.registeredHandlers.delete(t)}}recordAction(e){this.lastMediaSessionAction=e}logHandlerRegistration(e){}updatePositionState(e,t){var i;const r=ds(t);if(r){if(typeof e.setPositionState!="function")return;try{e.setPositionState({duration:r.durationSeconds,playbackRate:1,position:r.elapsedSeconds})}catch{}return}const a=t.durationSeconds??((i=t.currentTrack)==null?void 0:i.durationSeconds)??null;if(!(typeof e.setPositionState!="function"||typeof a!="number"||!Number.isFinite(a)||a<=0))try{e.setPositionState({duration:a,playbackRate:1,position:Math.max(0,Math.min(t.currentTimeSeconds,a))})}catch{}}}function Je(n){var t,r;if(is(n)){const a=et(n.currentTrack,["continuousCurrentCueArtworkUrl","imageUrl","imageURL","artworkUrl","artworkURL"])??et(n.currentTrack,["continuousTopLevelArtworkUrl","continuousResolvedArtworkUrl","selectedArtworkUrl"])??null;if(a)return a}return(((r=(t=n.currentCatalogue)==null?void 0:t.product)==null?void 0:r.imageUrl)??null)||et(n.currentTrack,["imageUrl","imageURL","artworkUrl","artworkURL","coverUrl","coverURL"])}function ns(n){var e,t,r,a;return((e=n.currentTrack)==null?void 0:e.artist)??et(n.currentTrack,["primaryPerformer","performers","performer","cast","artist","composer"])??((t=n.currentTrack)==null?void 0:t.composer)??((a=(r=n.currentCatalogue)==null?void 0:r.product)==null?void 0:a.vendor)??null}function rs(n){var e,t,r,a;return((t=(e=n.currentCatalogue)==null?void 0:e.product)==null?void 0:t.title)??((r=n.currentCatalogue)==null?void 0:r.catalogueNumber)??((a=n.currentTrack)==null?void 0:a.album)??null}function as(n){const e=ss(n);return[{src:n,sizes:"512x512",type:e}]}function is(n){return n.engine.engineName==="continuous-cue"||et(n.currentTrack,["continuousFormat"])!==null}function ss(n){try{const e=new URL(n,os()).pathname.toLowerCase();if(e.endsWith(".png"))return"image/png";if(e.endsWith(".webp"))return"image/webp"}catch{const t=n.toLowerCase();if(t.endsWith(".png"))return"image/png";if(t.endsWith(".webp"))return"image/webp"}return"image/jpeg"}function os(){return typeof window>"u"?"https://local.invalid/":window.location.href}function ls(n){try{return new URL(n).protocol==="https:"}catch{return!1}}function us(n){try{const e=new URL(n).pathname.toLowerCase();return e.endsWith("/cover.jpg")||e.endsWith("/cover.jpeg")}catch{const t=n.toLowerCase();return t.endsWith("/cover.jpg")||t.endsWith("/cover.jpeg")}}function jt(n,e){return(typeof n=="string"?n.trim():"")||e.trim()||"Opera Depot"}function cs(n){return n instanceof Error?n.message:String(n)}function et(n,e){if(!n)return null;for(const t of e){const r=n.metadata[t];if(typeof r=="string"&&r.trim())return r.trim();if(Array.isArray(r)){const a=r.map(i=>
1typeof i=="string"?i.trim():"").filter(Boolean).join(", ");if(a)return a}}return null}function ds(n){if(n.engine.engineName!=="continuous-cue"||!n.currentTrack)return null;const e=n.currentTrack,t=rr(e,["startTimeSeconds","continuousCurrentCueStart"]);if(t===null)return null;const r=rr(e,["endTimeSeconds","continuousCurrentCueEnd"]),a=typeof e.durationSeconds=="number"&&Number.isFinite(e.durationSeconds)?e.durationSeconds:null,i=r!==null&&r>t?r-t:a!==null&&a>0?a:null;return i===null||i<=0?null:{durationSeconds:i,elapsedSeconds:ps(n.currentTimeSeconds-t,i),startTimeSeconds:t}}function rr(n,e){if(!n)return null;for(const t of e){const r=n.metadata[t];if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"&&r.trim()){const a=Number(r);if(Number.isFinite(a))return a}}return null}function ps(n,e){return Number.isFinite(n)?Math.min(e,Math.max(0,n)):0}function ar(n){return typeof n.seekOffset=="number"&&Number.isFinite(n.seekOffset)?n.seekOffset:10}class ms{constructor(){c(this,"queue",[]),c(this,"currentIndex",-1)}load(e,t={}){return this.queue=e.tracks.map(r=>({id:`${e.catalogueNumber}:${e.resolvedFormat}:${r.id}`,catalogueNumber:e.catalogueNumber,playbackId:`${e.catalogueNumber}:${e.resolvedFormat}`,format:e.resolvedFormat,trackId:r.id,trackNumber:r.trackNumber,track:r,streamSource:r.streamSource})),this.currentIndex=this.resolveInitialIndex(t),this.getQueue()}restore(e,t){this.queue=[...e],this.currentIndex=this.clampIndex(t)}getQueue(){return[...this.queue]}getCurrentIndex(){return this.currentIndex}getCurrent(){return this.queue[this.currentIndex]??null}peekNext(){return this.queue[this.currentIndex+1]??null}hasNext(){return this.currentIndex>=0&&this.currentIndex<this.queue.length-1}hasPrevious(){return this.currentIndex>0}next(){return this.hasNext()?(this.currentIndex+=1,this.getCurrent()):null}previous(){return this.hasPrevious()?(this.currentIndex-=1,this.getCurrent()):null}setCurrentByTrackId(e){const t=this.queue.findIndex(r=>r.trackId===e);return t===-1?null:(this.currentIndex=t,this.getCurrent())}setCurrentByTrackNumber(e){const t=this.queue.findIndex(r=>r.trackNumber===e);return t===-1?null:(this.currentIndex=t,this.getCurrent())}setCurrentIndex(e){return e<0||e>=this.queue.length?null:(this.currentIndex=e,this.getCurrent())}resolveInitialIndex(e){if(this.queue.length===0)return-1;if(e.startTrackId){const t=this.queue.findIndex(r=>r.trackId===e.startTrackId);if(t!==-1)return t}if(typeof e.startTrackNumber=="number"){const t=this.queue.findIndex(r=>r.trackNumber===e.startTrackNumber);if(t!==-1)return t}return 0}clampIndex(e){return this.queue.length===0?-1:Math.max(0,Math.min(e,this.queue.length-1))}}const xn="operaDepot.webPlayer.playback.v1",ir=2,Ot={storageQuotaExceeded:!1,storageLastError:null,storedSettingsBytesApprox:null,staleRuntimeStateClearedAt:null};function hs(){if(typeof window>"u")return null;try{return gs(window.localStorage)}catch{return null}}function gs(n){return{getItem(e){try{return n.getItem(e)}catch(t){return tt(t),null}},setItem(e,t){try{n.setItem(e,t)}catch(r){tt(r)}},removeItem(e){try{n.removeItem(e)}catch(t){tt(t)}}}}function fs(n,e=xn){if(!n)return null;const t=n.getItem(e);if(!t)return null;try{const r=JSON.parse(t);return r.version!==ir?((r.currentCatalogue||Array.isArray(r.queue))&&(bs(n,e),Jr()),null):{version:ir,selectedFormat:ys(r.selectedFormat),selectedEngineName:typeof r.selectedEngineName=="string"?r.selectedEngineName:null,currentCatalogueNumber:typeof r.currentCatalogueNumber=="string"?r.currentCatalogueNumber:null,currentTrackId:typeof r.currentTrackId=="string"?r.currentTrackId:null,currentPositionSeconds:typeof r.currentPositionSeconds=="number"?r.currentPositionSeconds:0,savedAt:typeof r.savedAt=="string"?r.savedAt:new Date().toISOString()}}catch{return null}}function ys(n){return n==="alac"||n==="flac"?n:"m4a"}function ks(n,e,t=xn){if(n)try{n.setItem(t,JSON.stringify(e))}catch(r){tt(r)}}function bs(n,e=xn){try{n?.removeItem(e),Jr()}catch(t){tt(t)}}function tt(n){const e=ws(n);Ot.storageLastError=e,Ts(n)&&(Ot.storageQuotaExceeded=!0),typeof console<"u"&&console.warn("Web player storage access failed",n)}function Jr(n=new Date){const e=n.toISOString();return Ot.staleRuntimeStateClearedAt=e,e}function Ss(){return{...Ot}}function Ts(n){if(typeof DOMException<"u"&&n instanceof DOMException)return n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED"||n.code===22||n.code===1014;if(n===null||typeof n!="object")return!1;const e=n;return e.name==="QuotaExceededError"||e.name==="NS_ERROR_DOM_QUOTA_REACHED"||e.code===22||e.code===1014}function ws(n){return n instanceof Error?`${n.name}: ${n.message}`:String(n)}const Cs=86400;function ze(n,e="m4a"){return n==="m4a"||n==="alac"||n==="flac"?n:e}function vs(n){const e=M(n.catalogueNumber,""),t=ze(n.requestedFormat),r=ze(n.resolvedFormat,t),a=M(n.generatedAt,new Date().toISOString()),i=at(n.streamUrlExpiresInSeconds,Cs),s=Oe(n.tracks).map((o,l)=>xs(o,{catalogueNumber:e,generatedAt:a,resolvedFormat:r,streamUrlExpiresInSeconds:i,fallbackTrackNumber:l+1}));return{catalogueNumber:e,requestedFormat:t,resolvedFormat:r,sourceFolder:M(n.sourceFolder,""),availableFormats:sr(n.availableFormats),playableFormats:sr(n.playableFormats),formatAvailability:Ps(n.formatAvailability),formatWarnings:Rs(n.formatWarnings),formatFallback:Es(n.formatFallback),product:Ms(n.product),trackCount:at(n.trackCount,s.length),generatedAt:a,streamUrlExpiresInSeconds:i,tracks:s}}function xs(n,e){const t=ra(n)?n:{},r=at(t.trackNumber,e.fallbackTrackNumber),a=M(t.title,`Track ${r}`),i=M(t.displayTitle,a),s=Is(t),o=M(t.sourceFilename,s.filename),l=M(t.sourceFolder,s.folder),u=As(t.streamSource,{generatedAt:e.generatedAt,expires
1InSeconds:e.streamUrlExpiresInSeconds});return{id:M(t.id,`${e.catalogueNumber}:${e.resolvedFormat}:${r}`),trackNumber:r,title:a,displayTitle:i,act:O(t.act),startsNewAct:t.startsNewAct===!0,composer:O(t.composer),artist:O(t.artist),album:O(t.album),durationSeconds:Ds(t.durationSeconds),sourceFilename:o,sourceFolder:l,source:{...s,filename:o,folder:l},streamSource:u,metadata:ee(t.metadata)}}function As(n,e){const t=ee(n);return{url:M(t.url,""),expiresInSeconds:at(t.expiresInSeconds,e.expiresInSeconds),generatedAt:M(t.generatedAt,e.generatedAt),metadata:t}}function Is(n){const e=ee(n.source);return{...e,filename:M(e.filename,M(n.sourceFilename,"")),folder:M(e.folder,M(n.sourceFolder,""))}}function sr(n){return Oe(n).map(e=>ze(e,"m4a")).filter((e,t,r)=>r.indexOf(e)===t)}function Ps(n){const e=ee(n),t={};for(const r of["m4a","alac","flac"]){const a=ee(e[r]);Object.keys(a).length!==0&&(t[r]={available:a.available===!0,playable:a.playable===!0,sourceFolder:O(a.sourceFolder),trackCount:at(a.trackCount,0)})}return t}function Rs(n){return Oe(n).map(e=>{const t=ee(e);return{code:M(t.code,""),message:M(t.message,"")}}).filter(e=>e.code!==""||e.message!=="")}function Es(n){const e=ee(n);return Object.keys(e).length===0?null:{from:ze(e.from),to:ze(e.to),reason:M(e.reason,"")}}function Ms(n){if(n==null)return null;const e=ee(n);if(Object.keys(e).length===0)return null;const t=ea(e),r=Os(e);return{sku:M(e.sku,""),title:M(e.title,""),handle:O(e.handle),vendor:O(e.vendor),productType:O(e.productType),productUrl:or(e),url:or(e),imageUrl:Fs(e)??t[0]??null,images:t,backCoverImages:r,shopifyProductId:O(e.shopifyProductId),shopifyVariantId:O(e.shopifyVariantId),tags:Oe(e.tags).map(a=>M(a,"")),collections:Oe(e.collections).map(a=>M(a,""))}}function or(n){const e=O(n.handle);return O(n.url)??O(n.onlineStoreUrl)??(e?`/products/${e}`:null)}function Fs(n){return ea(n)[0]??null}function ea(n){const e=ee(n.featuredImage),t=ee(n.image),r=[O(n.imageUrl),O(n.imageURL),O(e.url),O(t.url),...Oe(n.images).map(ta)];return Ns(r.filter(na))}function Os(n){return _s(Oe(n.images).map(ta).filter(na))}function ta(n){if(typeof n=="string"&&n.length>0)return n;const e=ee(n);return O(e.url)??O(e.src)}function Ns(n){return n.filter((e,t)=>n.indexOf(e)===t)}function _s(n){const e=lr(n[0]??null),t=new Set(e?[e.key]:[]),r=new Set,a=[];for(const i of n.slice(1,5)){const s=lr(i);!s||t.has(s.key)||r.has(s.key)||(r.add(s.key),a.push(s.url))}return a}function lr(n){if(!(n!=null&&n.trim()))return null;const e=n.trim(),t=e.startsWith("//")?`https:${e}`:e;if(!/^https?:\/\//i.test(t))return null;try{const r=new URL(t);return r.protocol!=="http:"&&r.protocol!=="https:"||(r.hash="",Us(r))?null:{key:Ls(r),url:r.href}}catch{return null}}function Ls(n){const e=n.pathname.toLowerCase().replace(/_(?:pico|icon|thumb|small|compact|medium|large|grande|master|\d+x\d*|\d*x\d+)(?=\.[a-z0-9]+$)/,"");return`${n.protocol.toLowerCase()}//${n.hostname.toLowerCase()}${e}`}function Us(n){const e=n.pathname.toLowerCase();return["imagenotfound","image-not-found","image_not_found","missingimage","missing-image","missing_image","noimage","no-image","no_image","placeholder","questionmark","question-mark","question_mark","fallback","default-image","default_image"].some(t=>e.includes(t))}function na(n){return typeof n=="string"&&n.length>0}function ee(n){return ra(n)?n:{}}function ra(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Oe(n){return Array.isArray(n)?n:[]}function M(n,e){return typeof n=="string"&&n.length>0?n:e}function O(n){return typeof n=="string"&&n.length>0?n:null}function at(n,e){return typeof n=="number"&&Number.isFinite(n)?n:e}function Ds(n){return typeof n=="number"&&Number.isFinite(n)?n:null}const on={engineName:"uninitialized",activeElementId:null,standbyElementId:null,activeTrackId:null,activeKey:null,standbyTrackId:null,
1standbyReadyState:null,standbyNetworkState:null,standbyBufferedRanges:[],activeBufferedRanges:[],currentBufferLoaded:null,nextBufferLoaded:null,nextPreloadStatus:"idle",nextTrackPreloadStatus:"idle",nextTrackPreloadTrackId:null,nextTrackPreloadKey:null,scheduledStartTime:null,scheduledEndTime:null,nextScheduledStartTime:null,standbyStartLeadMs:null,overlapMs:null,transitionOverlapMs:null,crossfadeMode:null,overlapAppliedMs:null,schedulingLeadTimeSeconds:null,lastScheduledGapMs:null,secondsBeforeEndWhenStandbyStarted:null,standbyPlayCallAt:null,standbyPlayResolvedAt:null,standbyPlayingEventAt:null,activeEndedEventAt:null,measuredSilentGapMs:null,transitionModeUsed:null,mediaSessionOwnerElement:null,iosHtmlAudioMode:null,iosTransitionMode:null,mediaOwnerElementId:null,activeElementStillOwnerAfterLock:null,standbyPreloadPolicy:null,standbyPreplayAttempted:null,standbyPreplaySucceeded:null,standbyPreplayBlocked:null,standbyPreplayMuted:null,ownerLostAfterStandbyPreplay:null,mediaSessionStillControllableAfterTransition:null,userGestureTrackUnlockCount:null,tracksPreloadedForIos:null,transitionGapMs:null,lastTransitionGapMs:null,lastTransitionAt:null,longTrackDetected:null,recommendedEngine:null,gapless5Loaded:null,gapless5UseWebAudio:null,gapless5LoadLimit:null,gapless5LoadLimitRequested:null,gapless5LoadLimitResolved:null,gapless5LoadLimitApplied:null,loadLimitConstructorValue:null,loadLimitRuntimeValue:null,loadedCountAfterLoad:null,loadedCountAfterTrackAdvance:null,loadLimitActuallyEnforced:null,gapless5Crossfade:null,gapless5CrossfadeShape:null,gapless5CrossfadeShapeCode:null,gapless5SetCrossfadeShapeCalled:null,gapless5MinimalMode:null,transitionQuietMode:null,transitionWorkDeferred:null,transitionUiUpdatesSkipped:null,gapless5NativeOwnerMode:null,gapless5NativeOwnerElementId:null,gapless5NativeOwnerReadyState:null,gapless5NativeOwnerNetworkState:null,gapless5NativeOwnerPaused:null,gapless5NativeOwnerMuted:null,gapless5NativeOwnerCurrentTime:null,gapless5NativeOwnerDuration:null,gapless5NativeOwnerStatus:null,gapless5NativeOwnerPlayAttemptedAt:null,gapless5NativeOwnerPlayResolvedAt:null,gapless5NativeOwnerError:null,gapless5Options:null,gapless5RequestedUseWebAudio:null,gapless5ResolvedUseWebAudio:null,gapless5CrossfadeMs:null,gapless5SetCrossfadeCalled:null,gapless5AutoDecisionReason:null,gapless5InstanceSnapshot:null,gapless5TrackChangeMirroredOnly:null,gapless5PlaybackServiceReloadDuringTransition:null,gapless5EngineRecreatedDuringTransition:null,gapless5PauseCalledDuringTransition:null,gapless5PlayCalledDuringTransition:null,gapless5StopCalledDuringTransition:null,gapless5PauseCalledByWrapperDuringTransition:null,gapless5FinishedAllCallbackDuringTransition:null,gapless5TrackEndedButNotFinal:null,gapless5SourceStoppedByLibrary:null,gapless5SourceStoppedByWrapper:null,gapless5ImportStarted:null,gapless5ImportSucceeded:null,gapless5ImportFailed:null,gapless5ImportError:null,gapless5ImportShape:null,gapless5ConstructorStarted:null,gapless5ConstructorSucceeded:null,gapless5ConstructorFailed:null,gapless5ConstructorError:null,gapless5InstanceCreated:null,gapless5LoadQueueStarted:null,gapless5LoadQueueSucceeded:null,gapless5LoadQueueFailed:null,gapless5LoadQueueError:null,gapless5PlaylistLength:null,gapless5CurrentIndex:null,gapless5AdvanceEventReceived:null,gapless5EndedEventReceived:null,gapless5FinishedEventReceived:null,gapless5GlobalQueueIndex:null,gapless5InternalPlayerState:null,gapless5UrlCount:null,currentTrackIndex:null,lastGapless5Event:null,lastGapless5Error:null,audioContextState:null,audioContextBaseLatency:null,audioContextOutputLatency:null,destinationMaxChannelCount:null,destinationChannelCount:null,masterGainValue:null,sourceGainValue:null,sourceStartedAt:null,sourceStopScheduledAt:null,activeSourceConnected:null,sourceConnectedToGain:null,gainConnectedToDestination:null,decodedBufferNumberOfChannels:null,decodedBufferDuration:null,decodedBufferSampleRate:null,currentOutputMode:null,lastUserGestureAt:null,lastContextResumeResult:null,lastPlayCallResult:null,lastAudioContextResumeAt:null,mediaSessionSupported:null,mediaSessionHandlersRegistered:[],lastMediaSessionAction:null,selectedArtworkUrl:null,mediaSessionMetadataSetAttempted:null,mediaSessionMetadataSetSucceeded:null,mediaSessionMetadataSetError:null,mediaSessionMetadataSetAt:null,mediaSessionMetadataPayload:null,mediaSessionArtworkDisabledForTest:null,simplifiedSafariIosMediaSession:null,mediaSessionPayloadMode:null,mediaSessionArtworkSizeUsed:null,mediaSessionHandlersSimplifiedForSafariIos:null,documentVisibilityState:null,lastVisibilityChangeAt:null,backgroundPlaybackObserved:null,webAudioBackgroun
1dPlaybackObserved:null,lockScreenControlActionReceived:null,isIos:null,isSafari:null,isIphoneSafari:null,isIosSafari:null,rawUserAgent:null,navigatorPlatform:null,maxTouchPoints:null,standaloneMode:null,resolvedBrowserFamily:null,decodeError:null,mseSupported:null,mediaSourceReadyState:null,sourceBufferUpdating:null,appendedSegmentCount:null,bufferedRanges:[],currentSegmentIndex:null,mseAppendError:null,mseFetchError:null,mseManifestUrl:null,mseManifestLoaded:null,mseMimeType:null,mseCurrentTrackId:null,mseCurrentTrackNumber:null,restoredPositionApplied:null,restoredPositionSeconds:null,initialTrackMarkerIndex:null,reasonForInitialSeek:null,targetForwardBufferSeconds:null,maxForwardBufferSeconds:null,keepBehindSeconds:null,bufferedAheadSeconds:null,bufferedBehindSeconds:null,nextSegmentToAppend:null,evictionCount:null,lastEvictedRange:null,appendQueueLength:null,sourceBufferQuotaError:null,lastMseNavigationAction:null,previousMarkerIndex:null,targetMarkerIndex:null,targetTimeSeconds:null,tracklistDrawerOpen:!1,tracklistCueCount:0,tracklistRingCueCount:0,tracklistSelectedTrackId:null,tracklistSelectedOperaSlug:null,tracklistLastAction:null,storageQuotaExceeded:!1,storageLastError:null,storedSettingsBytesApprox:null,staleRuntimeStateClearedAt:null,startupDiagnostics:null,lastDebugMessage:null},qs={status:"idle",isLoading:!1,isPlaying:!1,selectedFormat:"m4a",currentCatalogue:null,currentTrack:null,currentQueueItem:null,queue:[],queueIndex:-1,currentTimeSeconds:0,durationSeconds:null,error:null,engine:on},Bs=1500,$s=750,Hs=1e4,ue=class ue2{constructor(e={}){c(this,"apiBaseUrl"),c(this,"debugEnabled"),c(this,"engineFactory"),c(this,"configuredEngineName"),c(this,"listeners",new Set),c(this,"logger"),c(this,"mediaSessionManager"),c(this,"mediaSessionConfiguration"),c(this,"queueManager",new ms),c(this,"storage"),c(this,"engine"),c(this,"engineUnsubscribers",[]),c(this,"backgroundPlaybackObserved",null),c(this,"backgroundPlaybackProbe",null),c(this,"lastVisibilityChangeAt",null),c(this,"pendingInterruptionResume",!1),c(this,"lastExplicitPauseAt",0),c(this,"interruptionFadeToken",0),c(this,"lockScreenControlActionReceived",!1),c(this,"loadedQueueItemId",null),c(this,"gapless5TrackChangeMirrorActive",!1),c(this,"gapless5TrackChangeMirroredOnly",null),c(this,"gapless5PlaybackServiceReloadDuringTransition",!1),c(this,"gapless5EngineRecreatedDuringTransition",!1),c(this,"gapless5PauseCalledDuringTransition",!1),c(this,"gapless5PlayCalledDuringTransition",!1),c(this,"gapless5TransitionQuietMode",!1),c(this,"gapless5TransitionQuietTimer",null),c(this,"gapless5TransitionWorkDeferred",!1),c(this,"gapless5TransitionUiUpdatesSkipped",0),c(this,"tracklistDrawerOpen",!1),c(this,"tracklistLastAction",null),c(this,"lastProgressSnapshotSavedAtMs",0),c(this,"state",{...qs}),c(this,"visibilityChangeHandler",null),c(this,"webAudioBackgroundPlaybackObserved",null);var t;this.apiBaseUrl=e.apiBaseUrl??"",this.debugEnabled=e.debug??!0,this.engine=e.engine??null,this.configuredEngineName=((t=e.engine)==null?void 0:t.name)??e.engineName??null,this.engineFactory=e.engineFactory??(()=>new es),this.logger=e.logger??console,this.mediaSessionManager=e.mediaSessionManager??new ts,this.mediaSessionConfiguration=e.mediaSession??{},this.storage=e.storage===void 0?hs():e.storage,this.configuredEngineName!=="mse"?this.restoreFromStorage():this.debug("Skipping persisted playback snapshot for MSE engine"),this.configureMediaSessionActions(),this.state={...this.state,engine:this.withSharedDiagnostics(this.state.engine)},this.engine&&this.bindEngineEvents(this.engine),this.bindDocumentVisibility()}static getInstance(e={}){return ue2.instance||(ue2.instance=new ue2(e)),ue2.instance}static resetInstance(){var e;(e=ue2.instance)==null||e.destroy(),ue2.instance=null}getState(){return{...this.state,engine:{...this.state.engine},queue:[...this.state.queue]}}updateMediaSessionConfiguration(e){this.mediaSessionConfiguration=e,this.configureMediaSessionActions(),this.setState({engine:this.getEngineDiagnostics()},"media-session:configured")}forceMediaSessionRefresh(e="manual"){this.refreshMediaSessionMetadata(e)}restoreMediaSessionHandlers(e="manual"){this.configureMediaSessionActions(),this.refreshMediaSessionMetadata(`media-session:${e}`)}subscribe(e){return this.listeners.add(e),e(this.getState()),()=>{this.listeners.delete(e)}}async loadPlaylist(e,t={}){const r=ze(t.format,this.state.selectedFormat);this.setState({error:null,isLoading:!0,selectedFormat:r,status:"loading"},"load-playlist:start");try{const a=await fetch(this.buildPlaylistUrl(e,r));if(!a.ok)throw new Error(`Playlist request failed with HTTP ${a.status}.`);const i=await a.json(),s=vs(i);return await this.loadSession(s,t),s}catch(a){throw this.handleError(a,"PLAYLIST_LOAD_FAILED"),a}
1}async loadSession(e,t={}){const r=typeof t.startTrackId=="string"||typeof t.startTrackNumber=="number",a=typeof t.startPositionSeconds=="number",i=this.normalizeInitialStartPosition(t.startPositionSeconds,e),s=this.queueManager.load(e,{startTrackId:t.startTrackId,startTrackNumber:t.startTrackNumber}),o=this.queueManager.getCurrent(),l=this.toEngineStartPositionSeconds(i,o);this.debug("Queue loaded",{catalogueNumber:e.catalogueNumber,resolvedFormat:e.resolvedFormat,trackCount:s.length}),this.setState({currentCatalogue:e,currentQueueItem:o,currentTimeSeconds:l??0,currentTrack:o?.track??null,durationSeconds:o?.track.durationSeconds??null,error:null,isLoading:o!==null,isPlaying:!1,queue:s,queueIndex:this.queueManager.getCurrentIndex(),selectedFormat:e.resolvedFormat,status:o?"loading":"idle"},"load-session"),o&&await this.loadCurrentQueueItem({allowTrackMarkerSeek:r,autoPlay:t.autoPlay===!0,initialSeekReason:r?"explicit-start-track":a?"explicit-start-position":"fresh-playlist-load",restoredPositionApplied:!1,restoredPositionSeconds:0,startPositionSeconds:l})}async play(){this.gapless5TrackChangeMirrorActive&&(this.gapless5PlayCalledDuringTransition=!0);const e=this.queueManager.getCurrent();if(e)try{this.loadedQueueItemId!==e.id&&await this.loadCurrentQueueItem({initialSeekReason:"service-current-time",startPositionSeconds:this.state.currentTimeSeconds}),await this.getEngine().play(),this.setState({isLoading:!1,isPlaying:!0,status:"playing"},"play"),this.getEngine().name==="continuous-cue"&&this.refreshMediaSessionMetadata("continuous-cue:play-resolved")}catch(t){throw this.handleError(t,"PLAY_FAILED"),t}}pause(){var e;this.gapless5TrackChangeMirrorActive&&(this.gapless5PauseCalledDuringTransition=!0),this.lastExplicitPauseAt=Date.now(),this.pendingInterruptionResume=!1,this.interruptionFadeToken+=1,(e=this.engine)==null||e.pause(),this.setState({isPlaying:!1,status:this.state.currentQueueItem?"paused":"idle"},"pause")}async togglePlayPause(){if(this.state.isPlaying){this.pause();return}await this.play()}async next(e={}){var r;const t=e.autoPlay??this.state.isPlaying;if(((r=this.engine)==null?void 0:r.name)==="continuous-cue"){await this.advanceToNextQueueItem(t);return}await this.navigateEngineTrack("next",{autoPlay:t})||await this.advanceToNextQueueItem(t)}async advanceToNextQueueItem(e){const t=this.queueManager.next();if(!t){this.setState({isLoading:!1,isPlaying:!1,status:"ended"},"queue-ended");return}if(this.debugTrackTransition("next",t),this.canSeekWithinLoadedContinuousCueFile(t)){await this.seekWithinLoadedContinuousCueFile(t,e);return}await this.activateQueueItem(t,e)}async previous(e={}){const t=e.autoPlay??this.state.isPlaying;if(await this.navigateEngineTrack("previous",{autoPlay:t}))return;if(this.state.currentTimeSeconds>3){this.seek(0);return}const r=this.queueManager.previous();if(!r){this.seek(0);return}this.debugTrackTransition("previous",r),await this.activateQueueItem(r,t)}seek(e){var r;const t=Math.max(0,e);(r=this.engine)==null||r.seek(t),this.setState({currentTimeSeconds:t,...this.getMseQueueSyncState()},"seek")}setTracklistDrawerOpen(e,t){this.tracklistDrawerOpen=e,this.tracklistLastAction=t,this.setState({engine:this.getEngineDiagnostics()},"tracklist:drawer",{forceSideEffects:!0})}async playTrack(e,t={}){const r=this.queueManager.setCurrentByTrackId(e);if(!r)return;const a=t.autoPlay??!0;if(this.tracklistLastAction="select-track",this.canSeekWithinLoadedContinuousCueFile(r)){await this.seekWithinLoadedContinuousCueFile(r,a);return}this.debugTrackTransition("tracklist",r),await this.loadCurrentQueueItem({allowTrackMarkerSeek:!0,autoPlay:a,initialSeekReason:"tracklist-selection"})}canSeekWithinLoadedContinuousCueFile(e){const t=this.engine;if(t?.name!=="continuous-cue"||this.loadedQueueItemId===null||ur(e.track)===null)return!1;if(!(this.state.engine.continuousRingCycle===!0||Vs(e.track,"continuousRingCycle")))return!0;const a=Tt(e.track,["continuousCurrentOperaSlug","continuousOperaSlug"]),i=this.state.engine.continuousCurrentOperaSlug??Tt(this.state.currentTrack,["continuousCurrentOperaSlug","continuousOperaSlug"]);return!!(a&&i&&a===i)}async seekWithinLoadedContinuousCueFile(e,t){const r=this.getEngine(),a=ur(e.track)??0;this.loadedQueueItemId=e.id,this.setState({currentQueueItem:e,currentTimeSeconds:a,currentTrack:e.track,durationSeconds:r.getDuration()??this.state.durationSeconds??e.track.durationSeconds,isLoading:!1,queue:this.queueManager.getQueue(),queueIndex:this.queueManager.getCurrentIndex(),status:t?"loading":"ready"},"tracklist:select"),r.seek(a),this.setState({currentQueueItem:e,currentTimeSeconds:a,currentTrack:e.track,durationSeconds:r.getDuration()??this.state.durationSeconds??e.track.durationSeconds,engine:this.getEngineDiagnostics(),isLoading:!1,queue:this.queueManager.getQueue(),queueIndex:this.queueManager.getCurrentIndex(),status:t?"loading":"ready"},"tracklist:seek"),t&&(await r.play(),this.setState({engine:this.getEngineDiagnostics(),isLoading:!1,isPlaying:!0,status:"playing"},"tracklist:play"),this.refreshMediaSessionMetadata("tracklist:play"))}setVolume(e){this.getEngine().setVolume(e)}async playDiagnosticTone(){const e=this.getEngine();if(!e.playDiagnosticTone)throw new Error(`Diagnostic tone is not available for ${e.name}. Select web-audio-scheduled.`);await e.playDiagnosticTone(),this.setState({engine:this.getEngineDiagnostics()},"engine:diagnostic-tone")}destroy(){var e;this.persistState(),this.gapless5TransitionQuietTimer!==null&&typeof window<"u"&&(window.clearTimeout(this.gapless5TransitionQuietTimer),this.gapless5TransitionQuietTimer=null);for(const t of this.engineUnsubscribers)t();this.engineUnsubscribers=[],(e=this.engine)==null||e.destroy(),this.engine=null,this.mediaSessionManager.clear(),this.unbindDocumentVisibility(),this.listeners.clear()}async navigateEngineTrack(e,t={}){const r=this.engine;if(!(r!=null&&r.navigateTrackMarker))return!1;const a=t.autoPlay??this.state.isPlaying,i=await r.navigateTrackMarker(e,{autoPlay:a});return i&&this.syncQueueToEngineNavigation(i,a),!0}syncQueueToEngineNavigation(e,t){var s;const r=typeof e.targetTrackNumber=="number"?this.queueManager.setCurrentByTrackNumber(e.targetTrackNumber):e.targetTrackId?this.queueManager.setCurrentByTrackId(e.targetTrackId):null;if(!r){this.setState({currentTimeSeconds:e.targetTimeSeconds,engine:this.getEngineDiagnostics()},"mse:navigation");return}this.loadedQueueItemId=r.id;const a=((s=this.engine)==null?void 0:s.name)==="continuous-cue",i=a&&typeof t=="boolean"?t:this.state.isPlaying;this.setState({currentQueueItem:r,currentTimeSeconds:e.targetTimeSeconds,currentTrack:r.track,durationSeconds:this.getEngine().getDuration()??this.state.durationSeconds??r.track.durationSeconds,engine:this.getEngineDiagnostics(),...a?{isPlaying:i}:{},isLoading:!1,queue:this.queueManager.getQueue(),queueIndex:this.queueManager.getCurrentIndex(),status:i?"playing":"ready"},"mse:navigation")}getMseQueueSyncState(){const e=this.engine;if(e?.name!=="mse")return{};const t=this.getEngineDiagnostics();if(typeof t.mseCurrentTrackNumber!="number")return{engine:t};const r=this.queueManager.setCurrentByTrackNumber(t.mseCurrentTrackNumber);return r?(this.loadedQueueItemId=r.id,{currentQueueItem:r,currentTrack:r.track,durationSeconds:e.getDuration()??this.state.durationSeconds??r.track.durationSeconds,engine:t,queue:this.queueManager.getQueue(),queueIndex:this.queueManager.getCurrentIndex()}):{engine:t}}async activateQueueItem(e,t){this.setState({currentQueueItem:e,currentTimeSeconds:0,currentTrack:e.track,durationSeconds:e.track.durationSeconds,isLoading:!0,queue:this.queueManager.getQueue(),queueIndex:this.queueManager.getCurrentIndex(),status:"loading"},"track-transition"),await this.loadCurrentQueueItem({allowTrackMarkerSeek:!0,autoPlay:t,initialSeekReason:"queue-transition"})}async loadCurrentQueueItem(e={}){this.gapless5TrackChangeMirrorActive&&(this.gapless5PlaybackServiceReloadDuringTransition=!0);const t=this.queueManager.getCurrent();if(t)try{this.setState({currentQueueItem:t,currentTrack:t.track,durationSeconds:t.track.durationSeconds,isLoading:!0,queueIndex:this.queueManager.getCurrentIndex(),status:"loading"},"track-load:start");const r=this.getEngine();if(r.loadQueue){const i=this.queueManager.getQueue();await r.loadQueue(i.map(s=>({context:this.getEngineContext(s,s.id===t.id?e:{}),streamSource:s.streamSource})),this.queueManager.getCurrentIndex())}else await r.load(t.streamSource,this.getEngineContext(t,e));this.loadedQueueItemId=t.id,typeof e.startPositionSeconds=="number"&&r.name!=="mse"&&r.seek(e.startPositionSeconds);const a=r.name==="mse"||r.name==="continuous-cue"?r.getCurrentTime():e.startPositionSeconds??0;this.setState({currentTimeSeconds:a,durationSeconds:r.getDuration()??t.track.durationSeconds,engine:this.getEngineDiagnostics(),isLoading:e.autoPlay===!0,isPlaying:!1,status:e.autoPlay?"loading":"ready"},"track-load:ready"),e.autoPlay&&await r.play(),this.setState({currentTimeSeconds:r.name==="mse"||r.name==="continuous-cue"?r.getCurrentTime():e.startPositionSeconds??0,durationSeconds:r.getDuration()??t.track.durationSeconds,isLoading:!1,isPlaying:e.autoPlay===!0,status:e.autoPlay?"playing":"ready"},"track-load:complete"),e.autoPlay===!0&&r.name==="continuous-cue"&&this.refreshMediaSessionMetadata("continuous-cue:autoplay-resolved"),this.prepareNextQueueItem()}catch(r){throw this.handleError(r,"TRACK_LOAD_FAILED"),r}}getEngine(){return this.engine||(this.gapless5TrackChangeMirrorActive&&(this.gapless5EngineRecreatedDuringTransition=!0),this.engine=this.engineFactory(),this.bindEngineEvents(this.engine)),this.engine}bindEngineEvents(e){this.engineUnsubscribers=[e.on("timeupdate",({currentTimeSeconds:t})=>{this.setState({currentTimeSeconds:t},"progress")}),e.on("trackchange",t=>{this.syncQueueToEngineTrackChange(t)}
1),e.on("durationchange",({durationSeconds:t})=>{this.setState({durationSeconds:t},"durationchange")}),e.on("ended",t=>{this.handleTrackEnded(t)}),e.on("playing",()=>{this.setState({isLoading:!1,isPlaying:!0,status:"playing"},"engine:playing"),e.name==="continuous-cue"&&this.refreshMediaSessionMetadata("continuous-cue:audio-playing")}),e.on("mediasessionrefresh",({reason:t})=>{this.refreshMediaSessionMetadata(t)}),e.on("pause",()=>{if(this.state.status==="loading"||this.state.status==="ended")return;const t=this.state.isPlaying;this.setState({isPlaying:!1,status:this.state.currentQueueItem?"paused":"idle"},"engine:pause"),t&&Ue()==="hidden"&&Date.now()-this.lastExplicitPauseAt>1e3&&(this.pendingInterruptionResume=!0,this.debug("Playback interrupted while hidden; will resume on return"))}),e.on("waiting",()=>{this.setState({isLoading:!0,status:"loading"},"engine:waiting")}),e.on("canplay",()=>{this.setState({isLoading:!1,status:this.state.isPlaying?"playing":"ready"},"engine:canplay")}),e.on("error",({message:t,error:r})=>{this.handleError({message:t,cause:r},"ENGINE_ERROR")}),e.on("debug",({message:t,data:r})=>{this.debug(`Engine: ${t}`,r)}),e.on("diagnostics",t=>{this.setState({engine:this.withSharedDiagnostics(t)},"engine:diagnostics")})],this.setState({engine:this.getEngineDiagnostics()},"engine:ready")}syncQueueToEngineTrackChange(e){var i,s,o;const t=((i=this.engine)==null?void 0:i.name)==="gapless-5",r=((s=this.engine)==null?void 0:s.name)==="continuous-cue";t&&(this.gapless5TrackChangeMirrorActive=!0,this.gapless5TrackChangeMirroredOnly=!1,this.gapless5PlaybackServiceReloadDuringTransition=!1,this.gapless5EngineRecreatedDuringTransition=!1,this.gapless5PauseCalledDuringTransition=!1,this.gapless5PlayCalledDuringTransition=!1,this.startGapless5TransitionQuietWindow());const a=r?typeof e.targetTrackNumber=="number"?this.queueManager.setCurrentByTrackNumber(e.targetTrackNumber):e.targetTrackId?this.queueManager.setCurrentByTrackId(e.targetTrackId):typeof e.targetIndex=="number"?this.queueManager.setCurrentIndex(e.targetIndex):null:typeof e.targetIndex=="number"?this.queueManager.setCurrentIndex(e.targetIndex):typeof e.targetTrackNumber=="number"?this.queueManager.setCurrentByTrackNumber(e.targetTrackNumber):e.targetTrackId?this.queueManager.setCurrentByTrackId(e.targetTrackId):null;if(!a){t&&(this.gapless5TrackChangeMirroredOnly=!1,this.gapless5TrackChangeMirrorActive=!1),this.setState({currentTimeSeconds:e.currentTimeSeconds,engine:this.getEngineDiagnostics()},"engine:trackchange-unmatched");return}this.loadedQueueItemId=a.id,t&&(this.gapless5TrackChangeMirroredOnly=!this.gapless5PlaybackServiceReloadDuringTransition&&!this.gapless5EngineRecreatedDuringTransition&&!this.gapless5PauseCalledDuringTransition&&!this.gapless5PlayCalledDuringTransition),t||this.debug("Engine track change mirrored",{reason:e.reason,queueIndex:this.queueManager.getCurrentIndex(),targetTrackId:a.trackId,targetTrackNumber:a.trackNumber}),this.setState({currentQueueItem:a,currentTimeSeconds:e.currentTimeSeconds,currentTrack:a.track,durationSeconds:t?a.track.durationSeconds:((o=this.engine)==null?void 0:o.getDuration())??a.track.durationSeconds,engine:t?this.withTransitionQuietDiagnostics(this.state.engine):this.getEngineDiagnostics(),isLoading:!1,isPlaying:r?this.state.isPlaying:!0,queue:this.queueManager.getQueue(),queueIndex:this.queueManager.getCurrentIndex(),status:r?this.state.isPlaying?"playing":"ready":"playing"},"engine:trackchange"),t&&(this.gapless5TrackChangeMirrorActive=!1)}async handleTrackEnded(e){var t;if(this.debug("Engine ended event",{transitionedToPreload:e.transitionedToPreload,nextKey:e.nextKey??null,nextTrackId:e.nextTrackId??null,gapMs:e.gapMs??null}),e.transitionedToPreload){const r=this.queueManager.next();if(!r){this.setState({currentTimeSeconds:this.state.durationSeconds??this.state.currentTimeSeconds,isLoading:!1,isPlaying:!1,status:"ended"},"engine-transition-without-next");return}const a=this.getEngine();this.loadedQueueItemId=r.id,this.debugTrackTransition("preloaded-ended",r),this.setState({currentQueueItem:r,currentTimeSeconds:a.getCurrentTime(),currentTrack:r.track,durationSeconds:a.getDuration()??r.track.durationSeconds,engine:this.getEngineDiagnostics(),isLoading:!1,isPlaying:!0,queue:this.queueManager.getQueue(),queueIndex:this.queueManager.getCurrentIndex(),status:"playing"},"engine:preloaded-transition"),this.prepareNextQueueItem();return}if(((t=this.engine)==null?void 0:t.name)==="gapless-5"){this.setState({currentTimeSeconds:this.engine.getCurrentTime(),engine:this.getEngineDiagnostics(),isLoading:!1,isPlaying:!1,status:"ended"},"gapless5-ended");return}if(this.queueManager.hasNext()){await this.next({autoPlay:!0});return}this.setState({currentTimeSeconds:this.state.durationSeconds??this.state.currentTimeSeconds,isLoading:!1,isPlaying:!1,status:"ended"},"track-ended")}buildPlaylistUrl(e,t){const r=`/v1/catalogues/${encodeURIComponent(e)}/playlist`;if(!this.apiBaseUrl&&typeof window>"u")return`${r}?format=${encodeURIComponent(t)}`;const a=new URL(r,this.apiBaseUrl||window.location.origin);return a.searchParams.set("format",t),a.toString()}normalizeInitialStartPosition(e,t){if(typeof e!="number"||!Number.isFinite(e))return;const r=Math.max(0,e);if(this.configuredEngineName!=="mse")return r;const a=zs(t);return a!==null&&r>=Math.max(0,a-.5)?0:r}toEngineStartPositionSeconds(e,t){if(typeof e!="number"||this.configuredEngineName!=="continuous-cue"||!t)return e;const r=Qs(t.track);if(r===null)return e;const a=t.track.durationSeconds;return typeof a=="number"&&Number.isFinite(a)&&a>0&&e>a?e:r+e}restoreFromStorage(){const e=fs(this.storage);e&&(this.state={...this.state,currentTimeSeconds:e.currentPositionSeconds,selectedFormat:e.selectedFormat,status:"idle",engine:on},this.debug("Playback snapshot restored",{currentCatalogueNumber:e.currentCatalogueNumber,currentTrackId:e.currentTrackId}))}persistState(){var e,t;!this.state.currentCatalogue||!this.state.currentTrack||(ks(this.storage,{version:2,selectedFormat:this.state.selectedFormat,selectedEngineName:this.configuredEngineName??this.state.engine.engineName??null,currentCatalogueNumber:((e=this.state.currentCatalogue)==null?void 0:e.catalogueNumber)??null,currentTrackId:((t=this.state.currentTrack)==null?void 0:t.id)??null,currentPositionSeconds:this.state.currentTimeSeconds,savedAt:new Date().toISOString()}),this.lastProgressSnapshotSavedAtMs=Date.now())}shouldPersistProgressState(){return!this.state.currentCatalogue||!this.state.currentTrack?!1:Date.now()-this.lastProgressSnapshotSavedAtMs>=Hs}setState(e,t,r={}){var i;const a=r.forceSideEffects!==!0&&this.shouldDeferGapless5TransitionSideEffects(t);if(this.state={...this.state,...e},this.state=a?{...this.state,engine:this.withTransitionQuietDiagnostics(this.state.engine)}:{...this.state,engine:this.withSharedDiagnostics(this.state.engine)},a){this.gapless5TransitionWorkDeferred=!0,this.gapless5TransitionUiUpdatesSkipped+=1,this.state={...this.state,engine:this.withTransitionQuietDiagnostics(this.state.engine)};return}(t!=="progress"||this.shouldPersistProgressState())&&this.persistState(),this.mediaSessionManager.update(this.state),this.emitState(),t!=="progress"&&this.debug("Playback state changed",{reason:t,status:this.state.status,queueIndex:this.state.queueIndex,trackId:((i=this.state.currentTrack)==null?void 0:i.id)??null})}emitState(){const e=this.getState();for(const t of this.listeners)t(e)}refreshMediaSessionMetadata(e){this.mediaSessionManager.update(this.state,{forceMetadata:!0,reason:e}),this.state={...this.state,engine:this.withSharedDiagnostics(this.state.engine)},this.emitState()}configureMediaSessionActions(){this.mediaSessionManager.configure({onAction:e=>
1{this.recordMediaSessionControlAction(e)},play:()=>{this.playFromMediaSession()},pause:()=>this.pauseFromMediaSession(),next:()=>{this.nextFromMediaSession()},previous:()=>{this.previousFromMediaSession()},seek:e=>this.seekFromMediaSession(e),seekBy:e=>{this.seek(this.state.currentTimeSeconds+e)}},this.mediaSessionConfiguration)}recordMediaSessionControlAction(e){this.lockScreenControlActionReceived=!0,this.debug("Media Session action received",{action:e,visibilityState:Ue()}),this.setState({engine:this.getEngineDiagnostics()},"media-session:action")}async playFromMediaSession(){var e;if(((e=this.engine)==null?void 0:e.name)==="gapless-5"&&this.state.currentQueueItem){await this.engine.play(),this.setState({isLoading:!1,isPlaying:!0,status:"playing"},"media-session:gapless5-play");return}await this.play()}pauseFromMediaSession(){var e;if(((e=this.engine)==null?void 0:e.name)==="gapless-5"){this.engine.pause(),this.setState({isPlaying:!1,status:this.state.currentQueueItem?"paused":"idle"},"media-session:gapless5-pause");return}this.pause()}seekFromMediaSession(e){const t=Gs(this.state);if(t){const r=aa(e,t.durationSeconds);this.seek(t.startTimeSeconds+r);return}this.seek(e)}async nextFromMediaSession(){var e,t;if(((e=this.engine)==null?void 0:e.name)==="gapless-5"||((t=this.engine)==null?void 0:t.name)==="continuous-cue"){await this.navigateEngineTrack("next");return}await this.next()}async previousFromMediaSession(){var e,t;if(((e=this.engine)==null?void 0:e.name)==="gapless-5"||((t=this.engine)==null?void 0:t.name)==="continuous-cue"){await this.navigateEngineTrack("previous");return}await this.previous()}handleError(e,t){const r=e instanceof Error?{code:t,message:e.message,cause:e}:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?{code:t,message:e.message,cause:e}:{code:t,message:"Playback error.",cause:e};this.logger.error("[PlaybackService]",r.message,e),this.setState({error:r,isLoading:!1,isPlaying:!1,status:"error"},"error")}debug(e,t){this.debugEnabled&&this.logger.debug("[PlaybackService]",e,t??{})}debugTrackTransition(e,t){this.debug("Track transition",{direction:e,queueIndex:this.queueManager.getCurrentIndex(),trackId:t.trackId,trackNumber:t.trackNumber})}async prepareNextQueueItem(){var r;const e=this.engine,t=this.queueManager.peekNext();if(e!=null&&e.preloadNext){if(!t){(r=e.clearPreload)==null||r.call(e),this.setState({engine:this.getEngineDiagnostics()},"engine:preload-clear");return}this.debug("Preparing next track preload",{queueIndex:this.queueManager.getCurrentIndex(),nextTrackId:t.trackId,nextTrackNumber:t.trackNumber});try{await e.preloadNext(t.streamSource,this.getEngineContext(t))}catch(a){this.debug("Next track preload failed; normal load fallback will be used",{message:a instanceof Error?a.message:String(a),nextTrackId:t.trackId})}finally{this.setState({engine:this.getEngineDiagnostics()},"engine:preload")}}}getEngineContext(e,t={}){return{allowTrackMarkerSeek:t.allowTrackMarkerSeek,catalogueNumber:e.catalogueNumber,initialSeekReason:t.initialSeekReason,key:e.id,label:e.track.displayTitle||e.track.title,durationSeconds:e.track.durationSeconds,restoredPositionApplied:t.restoredPositionApplied,restoredPositionSeconds:t.restoredPositionSeconds,startPositionSeconds:t.startPositionSeconds,trackId:e.trackId,trackNumber:e.trackNumber}}getEngineDiagnostics(){var e,t;return this.withSharedDiagnostics(((t=(e=this.engine)==null?void 0:e.getDiagnostics)==null?void 0:t.call(e))??on)}withSharedDiagnostics(e){const t=Ys(),r=Ws(this.state.currentCatalogue,{isIphoneSafari:t.isIphoneSafari,isIosSafari:t.isIosSafari,webAudioBackgroundPlaybackObserved:this.webAudioBackgroundPlaybackObserved}),a=this.mediaSessionManager.getDiagnostics(),i=this.getTracklistDiagnostics(e),s=Ss();return{...e,longTrackDetected:r.longTrackDetected,recommendedEngine:r.recommendedEngine,mediaSessionSupported:a.mediaSessionSupported,mediaSessionHandlersRegistered:a.mediaSessionHandlersRegistered,lastMediaSessionAction:a.lastMediaSessionAction,continuousSkipControlsPreferred:a.continuousSkipControlsPreferred,seekHandlersDisabledForTest:a.seekHandlersDisabledForTest,continuousLastMediaSessionAction:e.engineName==="continuous-cue"?a.lastMediaSessionAction:e.continuousLastMediaSessionAction,mediaSessionMetadataSetAttempted:a.mediaSessionMetadataSetAttempted,mediaSessionMetadataSetSucceeded:a.mediaSessionMetadataSetSucceeded,mediaSessionMetadataSetError:a.mediaSessionMetadataSetError,mediaSessionMetadataSetAt:a.mediaSessionMetadataSetAt,mediaSessionMetadataPayload:a.mediaSessionMetadataPayload,mediaSessionArtworkDisabledForTest:a.mediaSessionArtworkDisabledForTest,simplifiedSafariIosMediaSession:a.simplifiedSafariIosMediaSession,mediaSessionPayloadMode:a.mediaSessionPayloadMode,mediaSessionArtworkSizeUsed:a.mediaSessionArtworkSizeUsed,mediaSessionHandlersSimplifiedForSafariIos:a.mediaSessionHandlersSimplifiedForSafariIos,selectedArtworkUrl:Je(this.state),documentVisibilityState:Ue(),lastVisibilityChangeAt:this.lastVisibilityChangeAt,backgroundPlaybackObserved:this.backgroundPlaybackObserved,webAudioBackgroun
1dPlaybackObserved:this.webAudioBackgroundPlaybackObserved,lockScreenControlActionReceived:this.lockScreenControlActionReceived,activeElementStillOwnerAfterLock:e.iosHtmlAudioMode===!0&&this.backgroundPlaybackObserved!==null?e.mediaOwnerElementId===e.activeElementId:e.activeElementStillOwnerAfterLock,ownerLostAfterStandbyPreplay:e.iosHtmlAudioMode===!0&&e.standbyPreplayAttempted===!0&&this.backgroundPlaybackObserved===!1?!0:e.ownerLostAfterStandbyPreplay,mediaSessionStillControllableAfterTransition:e.engineName==="hybrid-gapless"&&e.lastTransitionAt!==null?this.lockScreenControlActionReceived:e.mediaSessionStillControllableAfterTransition,isIos:t.isIos,isSafari:t.isSafari,isIphoneSafari:t.isIphoneSafari,isIosSafari:t.isIosSafari,rawUserAgent:t.rawUserAgent,navigatorPlatform:t.navigatorPlatform,maxTouchPoints:t.maxTouchPoints,standaloneMode:t.standaloneMode,resolvedBrowserFamily:t.resolvedBrowserFamily,gapless5TrackChangeMirroredOnly:e.engineName==="gapless-5"?this.gapless5TrackChangeMirroredOnly:e.gapless5TrackChangeMirroredOnly,gapless5PlaybackServiceReloadDuringTransition:e.engineName==="gapless-5"?this.gapless5PlaybackServiceReloadDuringTransition:e.gapless5PlaybackServiceReloadDuringTransition,gapless5EngineRecreatedDuringTransition:e.engineName==="gapless-5"?this.gapless5EngineRecreatedDuringTransition:e.gapless5EngineRecreatedDuringTransition,gapless5PauseCalledDuringTransition:e.engineName==="gapless-5"?this.gapless5PauseCalledDuringTransition:e.gapless5PauseCalledDuringTransition,gapless5PlayCalledDuringTransition:e.engineName==="gapless-5"?this.gapless5PlayCalledDuringTransition:e.gapless5PlayCalledDuringTransition,...i,...s,...this.withTransitionQuietDiagnosticFields(e)}}getTracklistDiagnostics(e){var i,s;const r=e.engineName==="continuous-cue"?this.state.queue:[],a=r.filter(o=>Tt(o.track,["continuousCurrentOperaSlug","continuousOperaSlug"])).length;return{tracklistDrawerOpen:this.tracklistDrawerOpen,tracklistCueCount:r.length,tracklistRingCueCount:e.continuousRingCycle===!0||a>0?a:0,tracklistSelectedTrackId:((i=this.state.currentQueueItem)==null?void 0:i.trackId)??((s=this.state.currentTrack)==null?void 0:s.id)??null,tracklistSelectedOperaSlug:Tt(this.state.currentTrack,["continuousCurrentOperaSlug","continuousOperaSlug"]),tracklistLastAction:this.tracklistLastAction}}withTransitionQuietDiagnostics(e){return{...e,...this.withTransitionQuietDiagnosticFields(e)}}withTransitionQuietDiagnosticFields(e){return e.engineName!=="gapless-5"?{transitionQuietMode:e.transitionQuietMode??null,transitionWorkDeferred:e.transitionWorkDeferred??null,transitionUiUpdatesSkipped:e.transitionUiUpdatesSkipped??null}:{transitionQuietMode:this.gapless5TransitionQuietMode,transitionWorkDeferred:e.transitionWorkDeferred===!0||this.gapless5TransitionWorkDeferred,transitionUiUpdatesSkipped:(e.transitionUiUpdatesSkipped??0)+this.gapless5TransitionUiUpdatesSkipped}}shouldDeferGapless5TransitionSideEffects(e){return!this.gapless5TransitionQuietMode||!this.isGapless5Active()?!1:["durationchange","engine:canplay","engine:diagnostics","engine:playing","engine:trackchange","engine:trackchange-unmatched","progress"].includes(e)}isGapless5Active(){var e;return((e=this.engine)==null?void 0:e.name)==="gapless-5"||this.state.engine.engineName==="gapless-5"}startGapless5TransitionQuietWindow(){if(this.gapless5TransitionQuietMode=!0,this.gapless5TransitionWorkDeferred=!0,this.gapless5TransitionQuietTimer!==null&&typeof window<"u"&&window.clearTimeout(this.gapless5TransitionQuietTimer),typeof window>"u"){this.gapless5TransitionQuietMode=!1;return}this.gapless5TransitionQuietTimer=window.setTimeout(()=>{this.flushGapless5TransitionQuietWindow()},$s)}flushGapless5TransitionQuietWindow(){var e,t,r;this.gapless5TransitionQuietTimer=null,this.gapless5TransitionQuietMode=!1,this.setState({currentTimeSeconds:((e=this.engine)==null?void 0:e.getCurrentTime())??this.state.currentTimeSeconds,durationSeconds:((t=this.engine)==null?void 0:t.getDuration())??((r=this.state.currentTrack)==null?void 0:r.durationSeconds)??this.state.durationSeconds,engine:this.getEngineDiagnostics()},"gapless5:transition-quiet-flush",{forceSideEffects:!0})}bindDocumentVisibility(){typeof document>"u"||(this.visibilityChangeHandler=()=>{var e,t;this.lastVisibilityChangeAt=new Date().toISOString(),this.updateBackgroun
1dPlaybackObservation(),this.setState({currentTimeSeconds:((e=this.engine)==null?void 0:e.getCurrentTime())??this.state.currentTimeSeconds,engine:this.getEngineDiagnostics()},"document:visibility"),Ue()==="visible"&&((t=this.engine)==null?void 0:t.name)==="continuous-cue"&&this.mediaSessionConfiguration.simplifiedSafariIosMediaSession!==!0&&this.refreshMediaSessionMetadata("continuous-cue:visible"),Ue()==="visible"&&this.pendingInterruptionResume&&(this.pendingInterruptionResume=!1,this.resumeAfterInterruption())},document.addEventListener("visibilitychange",this.visibilityChangeHandler))}async resumeAfterInterruption(){const e=this.engine;if(!e||this.state.isPlaying)return;const t=++this.interruptionFadeToken;try{e.setVolume(0),await this.play();const r=12;for(let a=1;a<=r;a+=1){if(await new Promise(i=>setTimeout(i,100)),t!==this.interruptionFadeToken||!this.state.isPlaying){e.setVolume(1);return}e.setVolume(a/r)}}catch(r){e.setVolume(1),this.debug("Interruption resume failed",r)}}updateBackgroundPlaybackObservation(){const e=Ue(),t=this.engine,r=t?.getCurrentTime()??this.state.currentTimeSeconds;if(e==="hidden"&&this.state.isPlaying){this.backgroundPlaybackProbe={engineName:t?.name??this.state.engine.engineName,startedAt:cr(),timeSeconds:r};return}if(e!=="visible"||!this.backgroundPlaybackProbe)return;const a=this.backgroundPlaybackProbe,i=cr()-a.startedAt,s=r-a.timeSeconds;if(!(i>=1e3)){this.backgroundPlaybackProbe=null;return}this.backgroundPlaybackObserved=this.state.isPlaying&&s>=.5,a.engineName==="web-audio-scheduled"&&(this.webAudioBackgroundPlaybackObserved=this.backgroundPlaybackObserved),this.backgroundPlaybackProbe=null,this.debug("Background playback observation updated",{advancedSeconds:s,engineName:a.engineName,elapsedHiddenMs:Math.round(i),observed:this.backgroundPlaybackObserved,webAudioObserved:this.webAudioBackgroundPlaybackObserved})}unbindDocumentVisibility(){typeof document>"u"||this.visibilityChangeHandler===null||(document.removeEventListener("visibilitychange",this.visibilityChangeHandler),this.visibilityChangeHandler=null)}};c(ue,"instance",null);let ln=ue;function Qs(n){for(const e of["startTimeSeconds","continuousCurrentCueStart"]){const t=n.metadata[e];if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return t;if(typeof t=="string"&&t.trim()){const r=Number(t);if(Number.isFinite(r)&&r>=0)return r}}return null}function zs(n){const e=n.tracks.reduce((t,r)=>typeof r.durationSeconds=="number"?t+r.durationSeconds:t,0);return e>0?e:null}function Ws(n,e={}){if(Ks(n))return{longTrackDetected:!1,recommendedEngine:"continuous-cue"};const t=n?.tracks.some(a=>typeof a.durationSeconds=="number"&&a.durationSeconds>Bs)??!1,r=e.isIphoneSafari===!0||e.isIosSafari===!0;return{longTrackDetected:t,recommendedEngine:t?"html-audio":r?"gapless-5":"web-audio-scheduled"}}function Ks(n){return n?js(n.sourceFolder)||n.tracks.some(e=>e.metadata.continuousCueUrl||e.metadata.continuousAudioUrl):!1}function js(n){return/(?:CONTINUOUS|CONT-ALAC|CONT-FLAC)$/i.test(n)}function Gs(n){if(n.engine.engineName!=="continuous-cue"||!n.currentTrack)return null;const e=n.currentTrack,t=un(e,["startTimeSeconds","continuousCurrentCueStart"]);if(t===null)return null;const r=un(e,["endTimeSeconds","continuousCurrentCueEnd"]),a=typeof e.durationSeconds=="number"&&Number.isFinite(e.durationSeconds)?e.durationSeconds:null,i=r!==null&&r>t?r-t:a!==null&&a>0?a:null;return i===null||i<=0?null:{durationSeconds:i,elapsedSeconds:aa(n.currentTimeSeconds-t,i),startTimeSeconds:t}}function ur(n){return un(n,["startTimeSeconds","continuousCurrentCueStart"])}function un(n,e){if(!n)return null;for(const t of e){const r=n.metadata[t];if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"&&r.trim()){const a=Number(r);if(Number.isFinite(a))return a}}return null}function Tt(n,e){if(!n)return null;for(const t of e){const r=n.metadata[t];if(typeof r=="string"&&r.trim())return r.trim()}return null}function Vs(n,e){return n?.metadata[e]===!0}function Ue(){return typeof document>"u"?null:document.visibilityState}function Ys(){return zr()}function cr(){return typeof performance>"u"?Date.now():performance.now()}function aa(n,e){return Number.isFinite(n)?Math.min(e,Math.max(0,n)):0}class Xs{constructor(e){c(this,"endpoint"),c(this,"fetchImpl"),c(this,"format"),this.endpoint=e.endpoint,this.fetchImpl=e.fetchImpl??fetch,this.format=e.format??null}async fetchQueue(e={}
1){const t=e.format??this.format,r=await this.fetchImpl(this.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({count:e.count??10,currentRadioId:e.currentRadioId??void 0,format:t??void 0,previousRadioIds:e.previousRadioIds??[],upcomingRadioIds:e.upcomingRadioIds??[]})});if(!r.ok)throw new Error(`Radio queue request failed with HTTP ${r.status}.`);const a=await r.json();return(Array.isArray(a)?a:ia(a)&&Array.isArray(a.items)?a.items:[]).map(Zs).filter(s=>s!==null)}}function Zs(n){if(!ia(n))return null;const e=De(n.radioId),t=De(n.displayTitle)||De(n.title),r=De(n.audioUrl);return!e||!t||!r?null:{radioId:e,catalogueNumber:te(n.catalogueNumber),displayTitle:t,title:te(n.title),artist:te(n.artist),composer:te(n.composer),albumTitle:te(n.albumTitle),productHandle:te(n.productHandle),productUrl:te(n.productUrl),artworkUrl:te(n.artworkUrl),backCoverUrl:te(n.backCoverUrl),backCoverImages:Js(n.backCoverImages).slice(0,4),audioUrl:r,durationSeconds:eo(n.durationSeconds),format:De(n.format)||"aac"}}function ia(n){return typeof n=="object"&&n!==null}function te(n){return De(n)||null}function De(n){return typeof n=="string"?n.trim():""}function Js(n){return Array.isArray(n)?n.map(te).filter(e=>e!==null).filter((e,t,r)=>r.indexOf(e)===t):[]}function eo(n){if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&n.trim()){const e=Number(n);return Number.isFinite(e)?e:null}return null}const to=3,no=10;class ro{constructor(e){c(this,"audio"),c(this,"client"),c(this,"previousLimit"),c(this,"listeners",new Set),c(this,"logger"),c(this,"upcomingTarget"),c(this,"active",!1),c(this,"currentAudioRadioId",null),c(this,"currentAudioUrl",null),c(this,"itemFailureInProgress",!1),c(this,"loadingAudio",!1),c(this,"loadToken",0),c(this,"initializePromise",null),c(this,"replenishPromise",null),c(this,"state",{currentItem:null,currentTimeSeconds:0,durationSeconds:null,errorMessage:null,isInitialized:!1,isLoading:!1,isPlaying:!1,previousItems:[],status:"idle",upcomingItems:[]}),c(this,"pendingInterruptionResume",!1),c(this,"lastExplicitPauseAt",0),c(this,"interruptionFadeToken",0),this.client=e.client,this.previousLimit=e.historyLimit??to,this.logger=e.logger??console,this.upcomingTarget=e.upcomingTarget??e.initialCount??no,this.audio=new Audio,this.audio.preload="metadata",this.bindAudioEvents(),this.bindDocumentVisibility()}bindDocumentVisibility(){typeof document>"u"||document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&this.pendingInterruptionResume&&(this.pendingInterruptionResume=!1,this.resumeAfterInterruption())})}async resumeAfterInterruption(){if(!this.active||this.state.isPlaying)return;const e=++this.interruptionFadeToken;try{this.audio.volume=0,await this.play();const t=12;for(let r=1;r<=t;r+=1){if(await new Promise(a=>setTimeout(a,100)),e!==this.interruptionFadeToken||!this.state.isPlaying){this.audio.volume=1;return}this.audio.volume=r/t}}catch{this.audio.volume=1}}subscribe(e){return this.listeners.add(e),e(this.getState()),()=>{this.listeners.delete(e)}}getState(){return{...this.state,previousItems:[...this.state.previousItems],upcomingItems:[...this.state.upcomingItems]}}async initialize(e={}){if(this.initializePromise)return this.initializePromise;this.initializePromise=this.fetchInitialQueue({replenish:e.replenish!==!1});try{await this.initializePromise}finally{this.initializePromise=null}}activate(){this.active=!0,this.configureMediaSession(),this.updateMediaSession(),this.emitState()}deactivate(e={}){this.active=!1,e.pause!==!1&&this.pause()}async togglePlayPause(){if(this.state.isPlaying){this.pause();return}await this.play()}async play(){this.activate(),this.state.currentItem||await this.initialize();const e=this.state.currentItem;if(e)try{this.setState({errorMessage:null,isLoading:!0,status:"loading"},"play:start"),await this.ensureAudioLoaded(e),await this.audio.play(),this.setState({isLoading:!1,isPlaying:!0,status:"playing"},"play")}catch(t){await this.handleItemFailure(t,"play")}}pause(){this.lastExplicitPauseAt=Date.now(),this.pendingInterruptionResume=!1,this.interruptionFadeToken+=1,this.audio.pause(),this.setState({isLoading:!1,isPlaying:!1,status:this.state.currentItem?"paused":"idle"},"pause")}seek(e){const r=this.getDurationSeconds()??Number.MAX_SAFE_INTEGER,a=Math.max(0,Math.min(e,r));this.audio.currentTime=a,this.setState({currentTimeSeconds:a},"seek")}async next(e={}){const t=e.autoPlay??this.state.isPlaying;await this.advanceToNext(t,"next")}async previous(e={}){const t=e.autoPlay??this.state.isPlaying,r=this.state.previousItems.at(-1)??null;if(!r){this.seek(0),t&&await this.play();return}const a=this.state.currentItem,i=Ce(this.state.previousItems.slice(0,-1),new Set([r.radioId])).slice(-this.previousLimit),s=Ce(a?[a,...this.state.upcomingItems]:this.state.upcomingItems,new Set([r.radioId,...i.map(o=>o.radioId)])).slice(0,this.upcomingTarget);this.currentAudioRadioId=null,this.currentAudioUrl=null,this.setState({currentItem:r,currentTimeSeconds:0,durationSeconds:r.durationSeconds,errorMessage:null,isLoading:t,previousItems:i,status:t?"loading":"ready",upcomingItems:s},"previous"),t&&await this.play()}async playUpcoming(e){const t=this.state.upcomingItems.findIndex(u=>u.radioId===e);if(t<0)return;const r=this.state.currentItem,a=this.state.upcomingItems.slice(0,t),i=this.state.upcomingItems[t],s=Ce(this.state.upcomingItems.slice(t+1),new Set([i.radioId])).slice(0,this.upcomingTarget),o=[...this.state.previousItems,...r?[r]:[],...a],l=Ce(o,new Set([i.radioId,...s.map(u=>u.radioId)])).slice(-this.previousLimit);this.currentAudioRadioId=null,this.currentAudioUrl=null,this.setState({currentItem:i,currentTimeSeconds:0,durationSeconds:i.durationSeconds,errorMessage:null,isLoading:!0,previousItems:l,status:"loading",upcomingItems:s},"queue-select"),await this.play(),this.replenishIfNeeded("queue-select")}destroy(){this.listeners.clear(),this.audio.pause(),this.audio.removeAttribute("src"),this.audio.load()}async fetchInitialQueue(e){this.setState({errorMessage:null,isLoading:!0,status:"loading"},"initialize:start");try{const t=await this.client.fetchQueue({count:this.upcomingTarget+1});if(t.length===0)throw new Error("Radio queue is empty.");const[r,...a]=t,i=Ce(a,new Set([r.radioId])).slice(0,this.upcomingTarget);this.setState({currentItem:r,currentTimeSeconds:0,durationSeconds:r.durationSeconds,errorMessage:null,isInitialized:!0,isLoading:!1,previousItems:[],status:"ready",upcomingItems:i},"initialize:complete"),e.replenish&&this.replenishIfNeeded("initialize")}catch(t){this.logger.warn("[RadioQueueController] Radio queue unavailable",{message:Gt(t)}),this.setState({currentItem:null,currentTimeSeconds:0,durationSeconds:null,errorMessage:"Opera Depot Radio is unavailable.",isInitialized:!0,isLoading:!1,isPlaying:!1,status:"unavailable",upcomingItems:[]},"initialize:error")}}async advanceToNext(e,t){this.state.upcomingItems.length===0&&await this.replenishQueue(`${t}:empty`);const r=this.state.upcomingItems[0]??null,a=this.state.currentItem;if(!r){this.setState({currentTimeSeconds:this.state.durationSeconds??this.state.currentTimeSeconds,isLoading:!1,isPlaying:!1,status:"paused"},`${t}:no-next`);return}this.audio.pause(),this.audio.removeAttribute("src"),this.audio.load(),this.currentAudioRadioId=null,this.currentAudioUrl=null;const i=Ce(this.state.upcomingItems.slice(1),new Set([r.radioId])).slice(0,this.upcomingTarget),s=Ce(a?[...this.state.previousItems,a]:this.state.previousItems,new Set([r.radioId,...i.map(o=>o.radioId)])).slice(-this.previousLimit);this.setState({currentItem:r,currentTimeSeconds:0,durationSeconds:r.durationSeconds,errorMessage:null,isLoading:e,isPlaying:!1,previousItems:s,status:e?"loading":"ready",upcomingItems:i},t),this.replenishIfNeeded(t),e&&await this.play()}async replenishIfNeeded(e){this.getUpcomingNeededCount()<=0||await this.replenishQueue(e)}async replenishQueue(e){for(;this.getUpcomingNeededCount()>0;){if(this.replenishPromise){if(await this.replenishPromise<=0)return;continue}this.replenishPromise=this.fetchAndAppendQueue(e);let t=0;try{t=await this.replenishPromise}finally{this.replenishPromise=null}if(t<=0)return}}async fetchAndAppendQueue(e){var r;const t=this.getUpcomingNeededCount();if(t<=0)return 0;try{const a=await this.client.fetchQueue({count:this.state.currentItem?t:t+1,currentRadioId:((r=this.state.currentItem)==null?void 0:r.radioId)??null,previousRadioIds:this.state.previousItems.map(u=>
1u.radioId),upcomingRadioIds:this.state.upcomingItems.map(u=>u.radioId)}),i=new Set([...this.state.previousItems.map(u=>u.radioId),...this.state.currentItem?[this.state.currentItem.radioId]:[],...this.state.upcomingItems.map(u=>u.radioId)]),s=a.filter(u=>i.has(u.radioId)?!1:(i.add(u.radioId),!0));if(s.length===0)return 0;if(!this.state.currentItem){const[u,...d]=s,h=d.slice(0,this.upcomingTarget);return this.setState({currentItem:u,currentTimeSeconds:0,durationSeconds:u.durationSeconds,errorMessage:null,status:"ready",upcomingItems:h},`${e}:replenish-prime`),1+h.length}const o=this.getUpcomingNeededCount();if(o<=0)return 0;const l=s.slice(0,o);return l.length===0?0:(this.setState({errorMessage:null,upcomingItems:[...this.state.upcomingItems,...l].slice(0,this.upcomingTarget)},`${e}:replenish`),l.length)}catch(a){return this.logger.warn("[RadioQueueController] Radio replenish failed",{message:Gt(a),reason:e}),this.setState({errorMessage:this.state.currentItem?null:"Opera Depot Radio is unavailable.",status:this.state.currentItem?this.state.status:"unavailable"},`${e}:replenish-error`),0}}getUpcomingNeededCount(){return Math.max(0,this.upcomingTarget-this.state.upcomingItems.length)}async ensureAudioLoaded(e){if(this.currentAudioRadioId===e.radioId&&this.currentAudioUrl===e.audioUrl&&this.audio.readyState>=this.audio.HAVE_METADATA)return;const t=this.loadToken+1;this.loadToken=t,this.loadingAudio=!0,await new Promise((r,a)=>{const i=()=>{this.audio.removeEventListener("loadedmetadata",s),this.audio.removeEventListener("canplay",s),this.audio.removeEventListener("error",o)},s=()=>
1{if(i(),t!==this.loadToken){a(new Error("Radio audio load was superseded."));return}this.currentAudioRadioId=e.radioId,this.currentAudioUrl=e.audioUrl,this.setState({durationSeconds:this.getDurationSeconds()??e.durationSeconds,isLoading:!1},"audio:ready"),r()},o=()=>{i(),a(new Error("Radio audio failed to load."))};this.audio.addEventListener("loadedmetadata",s),this.audio.addEventListener("canplay",s),this.audio.addEventListener("error",o),this.audio.src=e.audioUrl,this.audio.load()}).finally(()=>{this.loadingAudio=!1})}async handleItemFailure(e,t){if(!this.itemFailureInProgress){this.itemFailureInProgress=!0;try{const r=this.state.currentItem;this.logger.warn("[RadioQueueController] Radio item skipped",{catalogueNumber:r?.catalogueNumber??null,message:Gt(e),radioId:r?.radioId??null,reason:t}),this.setState({errorMessage:null,isLoading:!1,isPlaying:!1,status:this.state.upcomingItems.length>0?"ready":"loading"},`${t}:item-error`),await this.replenishQueue(`${t}:item-error`),await this.advanceToNext(!0,`${t}:skip`)}finally{this.itemFailureInProgress=!1}}}bindAudioEvents(){this.audio.addEventListener("timeupdate",()=>{this.setState({currentTimeSeconds:this.audio.currentTime},"audio:timeupdate")}),this.audio.addEventListener("durationchange",()=>{this.setState({durationSeconds:this.getDurationSeconds()},"audio:durationchange")}),this.audio.addEventListener("ended",()=>{this.advanceToNext(!0,"audio:ended")}),this.audio.addEventListener("playing",()=>{this.setState({isLoading:!1,isPlaying:!0,status:"playing"},"audio:playing")}),this.audio.addEventListener("pause",()=>{if(this.state.status==="loading")return;const e=this.state.isPlaying;this.setState({isPlaying:!1,status:this.state.currentItem?"paused":"idle"},"audio:pause"),e&&typeof document<"u"&&document.visibilityState==="hidden"&&Date.now()-this.lastExplicitPauseAt>1e3&&(this.pendingInterruptionResume=!0)}),this.audio.addEventListener("waiting",()=>{this.setState({isLoading:!0,status:"loading"},"audio:waiting")}),this.audio.addEventListener("error",()=>{this.loadingAudio||this.handleItemFailure(new Error("Radio audio playback error."),"audio")})}configureMediaSession(){const e=dr();e&&(ve(e,"play",()=>{this.play()}),ve(e,"pause",()=>{this.pause()}),ve(e,"nexttrack",()=>{this.next()}),ve(e,"previoustrack",()=>{this.previous()}),ve(e,"seekto",t=>{typeof t.seekTime=="number"&&this.seek(t.seekTime)}),ve(e,"seekbackward",t=>{this.seek(this.state.currentTimeSeconds-pr(t))}),ve(e,"seekforward",t=>{this.seek(this.state.currentTimeSeconds+pr(t))}))}updateMediaSession(){if(!this.active)return;const e=dr(),t=this.state.currentItem;if(!(!e||!t)){if(typeof MediaMetadata<"u")try{e.metadata=new MediaMetadata({title:t.displayTitle||"Opera Depot Radio",artist:t.artist??t.composer??"Opera Depot",album:t.albumTitle??"Opera Depot Radio",artwork:ao(t.artworkUrl)??void 0})}catch{}if(typeof e.setPositionState=="function"&&typeof this.state.durationSeconds=="number"&&this.state.durationSeconds>0)try{e.setPositionState({duration:this.state.durationSeconds,playbackRate:1,position:Math.max(0,Math.min(this.state.currentTimeSeconds,this.state.durationSeconds))})}catch{}e.playbackState=this.state.isPlaying?"playing":this.state.status==="ready"||this.state.status==="paused"?"paused":"none"}}getDurationSeconds(){var e;return oo(this.audio.duration)??((e=this.state.currentItem)==null?void 0:e.durationSeconds)??null}setState(e,t){var r,a,i;this.state={...this.state,...e},this.updateMediaSession(),this.emitState(),(i=(a=this.logger).debug)==null||i.call(a,"[RadioQueueController] state changed",{currentRadioId:((r=this.state.currentItem)==null?void 0:r.radioId)??null,reason:t,status:this.state.status,upcomingCount:this.state.upcomingItems.length})}emitState(){const e=this.getState();for(const t of this.listeners)t(e)}}function Ce(n,e=new Set){const t=new Set(e),r=[];for(const a of n)t.has(a.radioId)||(t.add(a.radioId),r.push(a));return r}function dr(){return typeof navigator>"u"?null:navigator.mediaSession??null}function ve(n,e,t){try{n.setActionHandler(e,t)}catch{}}function ao(n){return!n||!so(n)?null:[{src:n,sizes:"512x512",type:io(n)}]}function io(n){try{const e=new URL(n).pathname.toLowerCase();if(e.endsWith(".png"))return"image/png";if(e.endsWith(".webp"))return"image/webp"}catch{const t=n.toLowerCase();if(t.endsWith(".png"))return"image/png";if(t.endsWith(".webp"))return"image/webp"}return"image/jpeg"}function so(n){try{return new URL(n).protocol==="https:"}catch{return!1}}function oo(n){return Number.isFinite(n)&&n>0?n:null}function pr(n){return typeof n.seekOffset=="number"&&Number.isFinite(n.seekOffset)?n.seekOffset:10}function Gt(n){return n instanceof Error?n.message:String(n)}function fe(n){return typeof n=="object"&&n!==null}function xe(n){return typeof n=="string"&&n.trim()?n.trim():typeof n=="number"&&Number.isFinite(n)?String(n):null}function mr(){try{const n=window.Alpine;if(!fe(n)||typeof n.store!="function")return null;const e=n.store("wishlist");return!fe(e)||typeof e.has!="function"?null:e}catch{return null}}function hr(n,e){if(!n||typeof n.has!="function"||!e)return!1;try{return n.has(String(e))===!0}catch{return!1}}function lo(n){if(n&&typeof n.loggedIn=="boolean")return n.loggedIn;const e=window;try{const t=e.ODMembershipAccess;if(fe(t)&&fe(t.state)&&t.state.loggedIn===!0)return!0}catch{}try{const t=e.Shopify;if(fe(t)&&fe(t.customer)&&t.customer.id)return!0}catch{}return!1}const Vt=new Map;function uo(n){const e=Vt.get(n);if(e)return e;const t=fetch(`/products/${encodeURIComponent(n)}.js`,{headers:{Accept:"application/json"},credentials:"same-origin"}).then(r=>{if(!r.ok)throw new Error(`Product JSON request failed (${r.status})`);return r.json()}).then(r=>co(r)).catch(()=>(Vt.delete(n),null));return Vt.set(n,t),t}function co(n){if(!fe(n))return null;const e=xe(n.id);if(!e)return null;const t=Array.isArray(n.variants)?n.variants:[],r=[];for(const s of t){if(!fe(s))continue;const o=xe(s.id);if(!o)continue;const l=Number(s.price);r.push({available:s.available===!0,id:o,price:Number.isFinite(l)?l:0,sku:xe(s.sku)??"",title:xe(s.title)??""})}if(r.length===0)return null;const a=Array.isArray(n.images)?n.images:[],i=xe(n.featured_image)??xe(a[0])??null;return{available:n.available===!0,featuredImage:i,id:e,title:xe(n.title)??"",variants:r}}function po(n,e){if(!n.available)return n.variants[0];const t=e?.trim().toLocaleLowerCase()??null;if(t){const r=n.variants.find(a=>a.sku.trim().toLocaleLowerCase()===t);if(r)return r}return n.variants.find(r=>r.available)??n.variants[0]}async function mo(n,e){const t=await uo(n);return t?{comingSoon:!t.available,handle:n,imageUrl:t.featuredImage,productId:t.id,productTitle:t.title,variant:po(t,e)}:null}const wt=240,Yt=2.5,ho=2.5,go=18,fo=2500,yo="Added to Wishlist.",ko="We will let you know 
1when this recording is available for purchase",bo="Log in and we'll email you when it's available",z=class z2{constructor(e){c(this,"mount"),c(this,"playbackService"),c(this,"radioController"),c(this,"unsubscribe",null),c(this,"radioUnsubscribe",null),c(this,"productState"),c(this,"radioState",null),c(this,"activeMode"),c(this,"narrowDesktopBottomProgress",Cr()),c(this,"progressIsActive",!1),c(this,"sampleNoticeActive",!1),c(this,"progressActiveScope",null),c(this,"expanded",!1),c(this,"expandedCloseTimer",null),c(this,"mobileTracklistOpen",!1),c(this,"mobileTracklistCloseTimer",null),c(this,"tracklistDrawerOpen",!1),c(this,"tracklistSignatures",{drawer:"",expanded:"",mobile:""}),c(this,"backCoverImages",[]),c(this,"selectedBackCoverImageUrl",null),c(this,"backCoverLightboxOpen",!1),c(this,"tracklistTabSignatures",new WeakMap),c(this,"renderedPlayPauseIcon",null),c(this,"titleMarqueeFrame",null),c(this,"tracklistStickyPaddingFrame",null),c(this,"tracklistStickyHeaderFrames",new WeakMap),c(this,"expandedTitleMarqueeSignature",""),c(this,"collapsedMarqueeSignatures",new WeakMap),c(this,"wishlistTargetKey",null),c(this,"wishlistResolved",null),c(this,"wishlistResolveToken",0),c(this,"wishlistPopupTimer",null),c(this,"renderedWishlistIcon","heart"),c(this,"handleWishlistChanged",()=>{this.elements&&this.renderWishlistButton()}),c(this,"pageScrollLocked",!1),c(this,"touchScrollPositions",new WeakMap),c(this,"handleContainedWheel",e2=>{e2.currentTarget instanceof HTMLElement&&this.containScrollDelta(e2,e2.currentTarget,e2.deltaY)}),c(this,"handleContainedTouchStart",e2=>{const t2=e2.touches[0];!t2||!e2.currentTarget||this.touchScrollPositions.set(e2.currentTarget,t2.clientY)}),c(this,"handleContainedTouchMove",e2=>{if(!(e2.currentTarget instanceof HTMLElement))return;const t2=e2.touches[0];if(!t2)return;const r2=this.touchScrollPositions.get(e2.currentTarget)??t2.clientY;this.touchScrollPositions.set(e2.currentTarget,t2.clientY),this.containScrollDelta(e2,e2.currentTarget,r2-t2.clientY)}),c(this,"handleDocumentKeyDown",e2=>{if(e2.key==="Escape"){if(this.backCoverLightboxOpen){this.closeBackCoverLightbox();return}if(this.mobileTracklistOpen){this.setMobileTracklistOpen(!1,"escape");return}if(this.expanded){this.setExpanded(!1,"escape");return}this.tracklistDrawerOpen&&this.setTracklistDrawerOpen(!1,"escape")}}),c(this,"handleWindowResize",()=>{const e2=Cr(),t2=e2!==this.narrowDesktopBottomProgress;this.narrowDesktopBottomProgress=e2,this.scheduleTitleMarqueeCheck(),this.scheduleTracklistStickyEndPaddingRefresh(),t2&&this.renderState()}),c(this,"elements",null);var t,r;this.mount=e.mount,this.playbackService=e.playbackService,this.radioController=e.radioController??null,this.productState=this.playbackService.getState(),this.radioState=((t=this.radioController)==null?void 0:t.getState())??null,this.activeMode=this.radioController?"radio":"product",this.renderShell(),this.bindControls(),this.unsubscribe=this.playbackService.subscribe(a=>{var o,l;const i=((o=this.productState.currentCatalogue)==null?void 0:o.catalogueNumber)??null,s=((l=a.currentCatalogue)==null?void 0:l.catalogueNumber)??null;this.productState=a,this.radioController&&s&&s!==i&&(this.activeMode="product"),this.renderState()}),this.radioUnsubscribe=((r=this.radioController)==null?void 0:r.subscribe(a=>{this.radioState=a,this.renderState()}))??null,document.addEventListener("keydown",this.handleDocumentKeyDown),window.addEventListener("resize",this.handleWindowResize),document.addEventListener("od:wishlist:changed",this.handleWishlistChanged)}destroy(){var e,t;(e=this.unsubscribe)==null||e.call(this),this.unsubscribe=null,(t=this.radioUnsubscribe)==null||t.call(this),this.radioUnsubscribe=null,document.removeEventListener("keydown",this.handleDocumentKeyDown),window.removeEventListener("resize",this.handleWindowResize),document.removeEventListener("od:wishlist:changed",this.handleWishlistChanged),this.clearTitleMarqueeFrame(),this.clearTracklistStickyPaddingFrame(),this.clearTracklistStickyHeaderFrames(),this.clearExpandedCloseTimer(),this.clearMobileTracklistCloseTimer(),this.hideWishlistPopup(),this.releasePageScrollLock(),this.renderedPlayPauseIcon=null,this.mount.replaceChildren()}setProductMode(e="manual"){var t;if(this.activeMode==="product"){this.applySampleNotice();return}this.activeMode="product",(t=this.radioController)==null||t.deactivate(),this.progressIsActive=!1,this.tracklistSignatures={drawer:"",expanded:"",mobile:""},this.renderState(),this.applySampleNotice()}setSampleNotice(e){this.sampleNoticeActive=e,this.applySampleNotice()}applySampleNotice(){const e=this.elements;if(!e)return;const t=this.sampleNoticeActive&&this.activeMode==="product";e.sampleNotice.hidden=!t,e.expandedSampleNotice.hidden=!t}setRadioMode(e="manual"){!this.radioController||this.activeMode==="radio"||(this.playbackService.pause(),this.activeMode="radio",this.radioController.activate(),this.progressIsActive=!1,this.tracklistSignatures={drawer:"",expanded:"",mobile:""},this.renderState(),this.applySampleNotice())}isRadioMode(){return this.radioController!==null&&this.activeMode==="radio"}renderShell(){this.mount.innerHTML=`
2      <section class="bottom-player" data-player-root aria-label="Opera Depot player">
3        <div class="bottom-player__bar" data-player-bar tabindex="0" aria-label="Expand player">
4          <button class="bottom-player__expand" type="button" data-player-expand aria-label="Expand player">
5            ${X("chevronUp")}
6          </button>
7
8          <div class="bottom-player__identity">
9            <div class="bottom-player__artwork" data-player-artwork>
10              <span>OD</span>
11            </div>
12
13            <div class="bottom-player__track">
14              <div class="bottom-player__title" data-player-title><span class="bottom-player__collapsed-marquee-text" data-player-collapsed-marquee-text>No track loaded</span></div>
15              <div class="bottom-player__subtitle" data-player-current-track><span class="bottom-player__collapsed-marquee-text" data-player-collapsed-marquee-text>No album loaded</span></div>
16              <div class="bottom-player__title bottom-player__title--mobile" data-player-mobile-title><span class="bottom-player__collapsed-marquee-text" data-player-collapsed-marquee-text>No track loaded</span></div>
17              <div class="bottom-player__subtitle bottom-player__subtitle--mobile" data-player-mobile-album><span class="bottom-player__collapsed-marquee-text" data-player-collapsed-marquee-text>No album loaded</span></div>
18              <div class="bottom-player__sample-notice" data-player-sample-notice hidden></div>
19            </div>
20          </div>
21
22          <div class="bottom-player__controls">
23            <button class="bottom-player__transport-button" type="button" data-player-previous aria-label="Previous">${le("previous")}</button>
24            <button class="bottom-player__transport-button bottom-player__transport-button--primary" type="button" data-player-play-pause aria-label="Play">${le("play")}</button>
25            <button class="bottom-player__transport-button" type="button" data-player-next aria-label="Next">${le("next")}</button>
26          </div>
27
28          <div class="bottom-player__progress">
29            <div class="bottom-player__progress-track">
30              <input class="bottom-player__range" type="range" min="0" step="1" value="0" data-player-progress />
31              <div class="bottom-player__act-markers" data-player-act-markers hidden aria-hidden="true"></div>
32            </div>
33            <div class="bottom-player__progress-times" aria-label="Playback time">
34              <span class="bottom-player__time" data-player-elapsed>0:00</span>
35              <span class="bottom-player__time-separator" aria-hidden="true">/</span>
36              <span class="bottom-player__time" data-player-duration>-:--</span>
37            </div>
38          </div>
39
40          ${el()}
41
42          <div class="bottom-player__actions">
43            ${xr("Lossless")}
44            <button class="bottom-player__button bottom-player__icon-button" type="button" data-player-tracklist aria-label="Tracklist" aria-expanded="false">
45              <span class="bottom-player__tracklist-icon" aria-hidden="true">
46                <span><i></i><b></b></span>
47                <span><i></i><b></b></span>
48                <span><i></i><b></b></span>
49              </span>
50            </button>
51            <span class="bottom-player__error" data-player-error hidden></span>
52          </div>
53
54          <div class="bottom-player__mobile-collapsed-progress" data-player-mobile-collapsed-progress hidden aria-hidden="true">
55            <div class="bottom-player__mobile-collapsed-progress-fill" data-player-mobile-collapsed-progress-fill></div>
56          </div>
57        </div>
58
59        <div class="bottom-player__tracklist-drawer" data-player-tracklist-drawer aria-hidden="true" hidden>
60          <div class="bottom-player__tracklist-head">
61            <button class="bottom-player__tracklist-close" type="button" data-player-tracklist-close aria-label="Close tracklist">
62              ${X("chevronDown")}
63            </button>
64            <div class="bottom-player__tracklist-head-copy">
65              <div class="bottom-player__tracklist-title" data-player-tracklist-title>Tracklist</div>
66              <div class="bottom-player__tracklist-summary" data-player-tracklist-summary>0 cues</div>
67            </div>
68          </div>
69          <div class="bottom-player__tracklist-items" data-player-tracklist-items></div>
70        </div>
71
72        <div class="bottom-player__expanded" data-player-expanded hidden aria-hidden="true">
73          <div class="bottom-player__expanded-panel">
74            <section class="bottom-player__expanded-card" aria-label="Expanded player">
75              <button class="bottom-player__collapse bottom-player__collapse--expanded" type="button" data-player-collapse aria-label="Close player">
76                <span class="bottom-player__collapse-arrow" aria-hidden="true">\u2193</span>
77                <span class="bottom-player__collapse-label">Close Player</span>
78              </button>
79
80              <div class="bottom-player__expanded-cover">
81                <div class="bottom-player__expanded-artwork" data-player-expanded-artwork>
82                  <span>OD</span>
83                </div>
84              </div>
85
86              <div class="bottom-player__expanded-copy">
87                <h2 class="bottom-player__expanded-title" data-player-expanded-title><span class="bottom-player__expanded-title-text" data-player-expanded-title-text>No track loaded</span></h2>
88                <div class="bottom-player__expanded-meta-line">
89                  <span class="bottom-player__expanded-composer" data-player-expanded-composer>Composer unavailable</span>
90                  <span class="bottom-player__expanded-meta-separator" data-player-expanded-meta-separator aria-hidden="true">\xB7</span>
91                  <span class="bottom-player__expanded-album" data-player-expanded-album-title>Album title unavailable</span>
92                </div>
93                <div class="bottom-player__expanded-artists" data-player-expanded-album-artists>Artists unavailable</div>
94                <div class="bottom-player__sample-notice bottom-player__sample-notice--expanded" data-player-sample-notice-expanded hidden></div>
95              </div>
96
97              <div class="bottom-player__expanded-progress">
98                <div class="bottom-player__progress-track bottom-player__progress-track--expanded">
99                  <input class="bottom-player__range" type="range" min="0" step="1" value="0" data-player-expanded-progress />
100                  <div class="bottom-player__act-markers" data-player-expanded-act-markers hidden aria-hidden="true"></div>
101                </div>
102                <div class="bottom-player__expanded-progress-times" aria-label="Playback time">
103                  <span class="bottom-player__time" data-player-expanded-elapsed>0:00</span>
104                  ${xr("Lossless","bottom-player__quality-badge--expanded")}
105                  <span class="bottom-player__time" data-player-expanded-duration>-:--</span>
106                </div>
107              </div>
108
109              <div class="bottom-player__expanded-controls">
110                <button class="bottom-player__transport-button bottom-player__transport-button--seek" type="button" data-player-expanded-rewind-10 aria-label="Rewind 10 seconds">${le("rewind10")}</button>
111                <button class="bottom-player__transport-button" type="button" data-player-expanded-previous aria-label="Previous">${le("previous")}</button>
112                <button class="bottom-player__transport-button bottom-player__transport-button--primary bottom-player__transport-button--hero" type="button" data-player-expanded-play-pause aria-label="Play">${le("play")}</button>
113                <button class="bottom-player__transport-button" type="button" data-player-expanded-next aria-label="Next">${le("next")}</button>
114                <button class="bottom-player__transport-button bottom-player__transport-button--seek" type="button" data-player-expanded-forward-10 aria-label="Forward 10 seconds">${le("forward10")}</button>
115              </div>
116
117              <div class="bottom-player__expanded-actions" aria-label="Player actions">
118                <button class="bottom-player__action-item bottom-player__action-item--wishlist" type="button" data-player-expanded-wishlist aria-label="Add to wishlist" aria-pressed="false" hidden aria-hidden="true">
119                  <span class="bottom-player__round-action" aria-hidden="true" data-player-wishlist-icon>
120                    ${X("heart")}
121                  </span>
122                  <span class="bottom-player__action-label" data-player-wishlist-label>Add to Wishlist</span>
123                  <span class="bottom-player__wishlist-popup" data-player-wishlist-popup aria-live="polite"></span>
124                </button>
125                <a
126                  class="bottom-player__action-item"
127                  data-player-expanded-product
128                  aria-label="View product"
129                  aria-disabled="true"
130                  x-element-transition-trigger:product.animate="{
131                    'productImg': $el.dataset.productImg || '',
132                    'title': $el.dataset.productTitle || '',
133                    'mediaCount': Number($el.dataset.mediaCount || 1),
134                    'isComingSoon': false
135                  }"
136                >
137                  <span class="bottom-player__round-action" aria-hidden="true">
138                    ${X("eye")}
139                  </span>
140                  <span class="bottom-player__action-label">View Product</span>
141                </a>
142                <button class="bottom-player__action-item" type="button" data-player-expanded-back-cover aria-label="Back Cover" hidden aria-hidden="true">
143                  <span class="bottom-player__round-action" aria-hidden="true">
144                    ${X("backCover")}
145                  </span>
146                  <span class="bottom-player__action-label">Back Cover</span>
147                </button>
148                <button class="bottom-player__action-item bottom-player__action-item--tracklist" type="button" data-player-expanded-tracklist aria-label="Tracklist">
149                  <span class="bottom-player__round-action" aria-hidden="true">
150                    ${X("tracklist")}
151                  </span>
152                  <span class="bottom-player__action-label" data-player-expanded-tracklist-label>Tracklist</span>
153                </button>
154              </div>
155            </section>
156
157            <aside class="bottom-player__expanded-tracklist" aria-label="Track list">
158              <div class="bottom-player__expanded-tracklist-head">
159                <div>
160                  <div class="bottom-player__tracklist-title" data-player-expanded-tracklist-title>Tracklist</div>
161                  <div class="bottom-player__tracklist-summary" data-player-expanded-tracklist-summary>0 cues</div>
162                </div>
163              </div>
164              <div class="bottom-player__tracklist-tabs" data-player-expanded-tracklist-tabs hidden></div>
165              <div class="bottom-player__tracklist-items bottom-player__tracklist-items--expanded" data-player-expanded-tracklist-items></div>
166            </aside>
167          </div>
168        </div>
169
170        <div class="bottom-player__mobile-tracklist" data-player-mobile-tracklist hidden aria-hidden="true">
171          <div class="bottom-player__mobile-tracklist-panel">
172            <div class="bottom-player__mobile-tracklist-head">
173              <button class="bottom-player__mobile-tracklist-back" type="button" data-player-mobile-tracklist-close aria-label="Back to player">
174                <span class="bottom-player__mobile-tracklist-back-arrow" aria-hidden="true">\u2190</span>
175                <span class="bottom-player__mobile-tracklist-back-label">Back to player</span>
176              </button>
177              <div class="bottom-player__mobile-tracklist-album">
178                <div class="bottom-player__mobile-tracklist-artwork" data-player-mobile-tracklist-artwork>
179                  <span>OD</span>
180                </div>
181                <div class="bottom-player__mobile-tracklist-copy">
182                  <div class="bottom-player__tracklist-title bottom-player__mobile-tracklist-now-playing-title" data-player-mobile-tracklist-now-playing-title hidden aria-hidden="true">Now Playing:</div>
183                  <div class="bottom-player__mobile-tracklist-title" data-player-mobile-tracklist-title>No track loaded</div>
184                  <div class="bottom-player__mobile-tracklist-subtitle" data-player-mobile-tracklist-album>Album title unavailable</div>
185                  <div class="bottom-player__tracklist-summary" data-player-mobile-tracklist-summary>0 cues</div>
186                </div>
187              </div>
188            </div>
189            <div class="bottom-player__tracklist-tabs" data-player-mobile-tracklist-tabs hidden></div>
190            <div class="bottom-player__tracklist-title bottom-player__mobile-tracklist-section-title" data-player-mobile-tracklist-section-title hidden aria-hidden="true">Tracklist</div>
191            <div class="bottom-player__tracklist-items bottom-player__tracklist-items--mobile" data-player-mobile-tracklist-items></div>
192          </div>
193        </div>
194
195        <div class="bottom-player__back-cover-lightbox" data-player-back-cover-lightbox role="dialog" aria-modal="true" aria-label="Back cover" aria-hidden="true" hidden>
196          <div class="bottom-player__back-cover-stage" data-player-back-cover-stage>
197            <img class="bottom-player__back-cover-image" data-player-back-cover-image alt="Back cover" />
198            <div class="bottom-player__back-cover-thumbnails" data-player-back-cover-thumbnails aria-label="Back cover gallery" hidden></div>
199            <button class="bottom-player__back-cover-close" type="button" data-player-back-cover-close aria-label="Close back cover">
200              ${X("x")}
201            </button>
202          </div>
203        </div>
204      </section>
205    `,this.elements={actMarkers:this.getElement("[data-player-act-markers]"),artwork:this.getElement("[data-player-artwork]"),bar:this.getElement("[data-player-bar]"),backCoverClose:this.getElement("[data-player-back-cover-close]"),backCoverImage:this.getElement("[data-player-back-cover-image]"),backCoverLightbox:this.getElement("[data-player-back-cover-lightbox]"),backCoverStage:this.getElement("[data-player-back-cover-stage]"),backCoverThumbnails:this.getElement("[data-player-back-cover-thumbnails]"),collapse:this.getElement("[data-player-collapse]"),currentTrack:this.getElement("[data-player-current-track]"),duration:this.getElement("[data-player-duration]"),elapsed:this.getElement("[data-player-elapsed]"),error:this.getElement("[data-player-error]"),expand:this.getElement("[data-player-expand]"),expanded:this.getElement("[data-player-expanded]"),expandedActMarkers:this.getElement("[data-player-expanded-act-markers]"),expandedAlbumArtists:this.getElement("[data-player-expanded-album-artists]"),expandedAlbumTitle:this.getElement("[data-player-expanded-album-title]"),expandedArtwork:this.getElement("[data-player-expanded-artwork]"),expandedComposer:this.getElement("[data-player-expanded-composer]"),expandedMetaSeparator:this.getElement("[data-player-expanded-meta-separator]"),expandedDuration:this.getElement("[data-player-expanded-duration]"),expandedElapsed:this.getElement("[data-player-expanded-elapsed]"),expandedForward10:this.getElement("[data-player-expanded-forward-10]"),expandedNext:this.getElement("[data-player-expanded-next]"),expandedPlayPause:this.getElement("[data-player-expanded-play-pause]"),expandedPrevious:this.getElement("[data-player-expanded-previous]"),expandedBackCover:this.getElement("[data-player-expanded-back-cover]"),expandedProduct:this.getElement("[data-player-expanded-product]"),expandedProgress:this.getElement("[data-player-expanded-progress]"),expandedSampleNotice:this.getElement("[data-player-sample-notice-expanded]"),expandedQualityBadge:this.getElement(".bottom-player__quality-badge--expanded"),expandedQualityBadgeLabel:this.getElement(".bottom-player__quality-badge--expanded [data-player-quality-label]"),expandedRewind10:this.getElement("[data-player-expanded-rewind-10]"),expandedTitle:this.getElement("[data-player-expanded-title]"),expandedTitleText:this.getElement("[data-player-expanded-title-text]"),expandedTracklist:this.getElement("[data-player-expanded-tracklist]"),expandedTracklistItems:this.getElement("[data-player-expanded-tracklist-items]"),expandedTracklistLabel:this.getElement("[data-player-expanded-tracklist-label]"),expandedTracklistSummary:this.getElement("[data-player-expanded-tracklist-summary]"),expandedTracklistTabs:this.getElement("[data-player-expanded-tracklist-tabs]"),expandedTracklistTitle:this.getElement("[data-player-expanded-tracklist-title]"),expandedWishlist:this.getElement("[data-player-expanded-wishlist]"),expandedWishlistIcon:this.getElement("[data-player-wishlist-icon]"),expandedWishlistLabel:this.getElement("[data-player-wishlist-label]"),expandedWishlistPopup:this.getElement("[data-player-wishlist-popup]"),mobileTracklist:this.getElement("[data-player-mobile-tracklist]"),mobileTracklistAlbum:this.getElement("[data-player-mobile-tracklist-album]"),mobileTracklistArtwork:this.getElement("[data-player-mobile-tracklist-artwork]"),mobileTracklistClose:this.getElement("[data-player-mobile-tracklist-close]"),mobileTracklistItems:this.getElement("[data-player-mobile-tracklist-items]"),mobileTracklistNowPlayingTitle:this.getElement("[data-player-mobile-tracklist-now-playing-title]"),mobileTracklistSectionTitle:this.getElement("[data-player-mobile-tracklist-section-title]"),mobileTracklistSummary:this.getElement("[data-player-mobile-tracklist-summary]"),mobileTracklistTabs:this.getElement("[data-player-mobile-tracklist-tabs]"),mobileTracklistTitle:this.getElement("[data-player-mobile-tracklist-title]"),mobileAlbum:this.getElement("[data-player-mobile-album]"),mobileCollapsedProgress:this.getElement("[data-player-mobile-collapsed-progress]"),mobileCollapsedProgressFill:this.getElement("[data-player-mobile-collapsed-progress-fill]"),mobileTitle:this.getElement("[data-player-mobile-title]"),next:this.getElement("[data-player-next]"),playPause:this.getElement("[data-player-play-pause]"),previous:this.getElement("[data-player-previous]"),progress:this.getElement("[data-player-progress]"),qual
205ityBadge:this.getElement(".bottom-player__actions .bottom-player__quality-badge"),qualityBadgeLabel:this.getElement(".bottom-player__actions [data-player-quality-label]"),root:this.getElement("[data-player-root]"),sampleNotice:this.getElement("[data-player-sample-notice]"),title:this.getElement("[data-player-title]"),tracklist:this.getElement("[data-player-tracklist]"),tracklistClose:this.getElement("[data-player-tracklist-close]"),tracklistDrawer:this.getElement("[data-player-tracklist-drawer]"),tracklistItems:this.getElement("[data-player-tracklist-items]"),tracklistSummary:this.getElement("[data-player-tracklist-summary]"),tracklistTitle:this.getElement("[data-player-tracklist-title]")}}bindControls(){const e=this.requireElements();e.expand.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),this.setExpanded(!0,"desktop-expand-button")}),e.bar.addEventListener("click",t=>{!qe()||wr(t.target)||this.setExpanded(!0,"mobile-bar-click")}),e.bar.addEventListener("keydown",t=>{!qe()||wr(t.target)||t.key!=="Enter"&&t.key!==" "||(t.preventDefault(),this.setExpanded(!0,"mobile-bar-keyboard"))}),this.bindTransportControls(e.previous,e.playPause,e.next),this.bindTransportControls(e.expandedPrevious,e.expandedPlayPause,e.expandedNext),e.expandedRewind10.addEventListener("click",()=>{this.seekExpandedBy(-10)}),e.expandedForward10.addEventListener("click",()=>{this.seekExpandedBy(10)}),e.collapse.addEventListener("click",()=>{this.setExpanded(!1,"collapse-button")}),e.tracklist.addEventListener("click",()=>{this.setTracklistDrawerOpen(!this.tracklistDrawerOpen,this.tracklistDrawerOpen?"button-close":"button-open")}),e.tracklistClose.addEventListener("click",()=>{this.setTracklistDrawerOpen(!1,"drawer-close-button")}),e.expandedTracklist.addEventListener("click",()=>{if(qe()){this.setMobileTracklistOpen(!0,"expanded-tracklist-button");return}e.expandedTracklistItems.scrollTo({top:0,behavior:"smooth"}),e.expandedTracklistItems.focus({preventScroll:!0})}),e.mobileTracklistClose.addEventListener("click",()=>{this.setMobileTracklistOpen(!1,"mobile-tracklist-close")}),e.expandedWishlist.addEventListener("click",()=>{this.toggleWishlist()}),e.expandedProduct.addEventListener("click",()=>{this.closeExpandedForProductNavigation()}),e.expandedBackCover.addEventListener("click",()=>{this.openBackCoverLightbox()}),e.backCoverClose.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),this.closeBackCoverLightbox()}),e.backCoverLightbox.addEventListener("click",t=>{t.target===e.backCoverLightbox&&this.closeBackCoverLightbox()}),e.backCoverThumbnails.addEventListener("click",t=>{const r=t.target,a=r instanceof Element?r.closest("[data-player-back-cover-thumbnail]"):null,i=a?.dataset.backCoverImageUrl??null;i&&(t.preventDefault(),t.stopPropagation(),this.selectBackCoverImage(i))}),this.bindProgressInput(e.progress,"bottom"),this.bindProgressInput(e.expandedProgress,"expanded"),this.bindScrollContainment(),this.bindTracklistTabs(e.expandedTracklistTabs,"expanded"),this.bindTracklistTabs(e.mobileTracklistTabs,"mobile"),this.bindTracklistOperaHeaders(e.tracklistItems,"drawer"),this.bindTracklistOperaHeaders(e.expandedTracklistItems,"expanded"),this.bindTracklistOperaHeaders(e.mobileTracklistItems,"mobile")}bindTransportControls(e,t,r){t.addEventListener("click",a=>{var i;if(Zt(a),this.shouldUseRadioControls()){(i=this.radioController)==null||i.togglePlayPause();return}this.playbackService.togglePlayPause()}),e.addEventListener("click",a=>{var i;if(Zt(a),this.shouldUseRadioControls()){(i=this.radioController)==null||i.previous();return}this.playbackService.previous()}),r.addEventListener("click",a=>{var i;if(Zt(a),this.shouldUseRadioControls()){(i=this.radioController)==null||i.next();return}this.playbackService.next()})}bindProgressInput(e,t){let r=null,a=null;const i=()=>{var l;const s=a??e.value;if(!this.progressIsActive&&r===s)return;const o=Number(s);if(!Number.isFinite(o)){this.progressIsActive=!1,this.progressActiveScope=null,a=null;return}this.shouldUseRadioControls()?(l=this.radioController)==null||l.seek(o):this.seekFromProgressInput(o,t),r=s,a=null,this.progressIsActive=!1,this.progressActiveScope=null};e.addEventListener("input",()=>{this.progressIsActive=!0,this.progressActiveScope=t,r=null,a=e.value;const s=Number(a);
205this.shouldUseRadioControls()?this.setElapsedText($(s)):t==="expanded"?this.setExpandedElapsedText($(s)):this.setBottomElapsedText($(s))}),e.addEventListener("change",i),e.addEventListener("pointerup",i),e.addEventListener("keyup",s=>{(s.key==="ArrowLeft"||s.key==="ArrowRight"||s.key==="ArrowUp"||s.key==="ArrowDown"||s.key==="Home"||s.key==="End"||s.key==="PageUp"||s.key==="PageDown")&&i()}),e.addEventListener("blur",()=>{if(this.progressIsActive){i();return}this.progressIsActive=!1,this.progressActiveScope=null})}seekFromProgressInput(e,t){if(t==="bottom"){const a=this.playbackService.getState();if(this.shouldUseTrackBasedBottomProgress(a)){const i=Ct(a);if(i){const s=Xe(e,i.durationSeconds);this.playbackService.seek(i.startTimeSeconds+s);return}}this.playbackService.seek(e);return}const r=Ct(this.playbackService.getState());if(r){const a=Xe(e,r.durationSeconds);this.playbackService.seek(r.startTimeSeconds+a);return}this.playbackService.seek(e)}seekExpandedBy(e){var s,o,l;if(this.shouldUseRadioControls()){(o=this.radioController)==null||o.seek((((s=this.radioState)==null?void 0:s.currentTimeSeconds)??0)+e);return}const t=this.playbackService.getState(),r=Ct(t);if(r){const u=Xe(r.elapsedSeconds+e,r.durationSeconds);this.playbackService.seek(r.startTimeSeconds+u);return}const a=t.durationSeconds??((l=t.currentTrack)==null?void 0:l.durationSeconds)??0;if(a<=0)return;const i=Math.min(a,Math.max(0,t.currentTimeSeconds+e));this.playbackService.seek(i)}bindTracklistTabs(e,t){e.addEventListener("click",r=>{var s;const a=(s=r.target)==null?void 0:s.closest("[data-tracklist-tab-opera]"),i=a?.dataset.tracklistTabOpera;i&&this.scrollTracklistToOpera(t,i)})}bindTracklistOperaHeaders(e,t){const r=a=>{var o;if(a.type==="keydown"){const l=a.key;if(l!=="Enter"&&l!==" ")return}const i=(o=a.target)==null?void 0:o.closest(".bottom-player__tracklist-header--opera[data-tracklist-opera]"),s=i?.dataset.tracklistOpera;!i||!e.contains(i)||!s||(a.preventDefault(),a.stopPropagation(),this.scrollTracklistToOpera(t,s))};e.addEventListener("click",r),e.addEventListener("keydown",r)}bindScrollContainment(){const e=this.requireElements();for(const t of[e.tracklistItems,e.expandedTracklistItems,e.mobileTracklistItems])t.addEventListener("wheel",this.handleContainedWheel,{passive:!1}),t.addEventListener("touchstart",this.handleContainedTouchStart,{passive:!0}),t.addEventListener("touchmove",this.handleContainedTouchMove,{passive:!1}),t.addEventListener("scroll",()=>this.scheduleTracklistStickyHeaderRefresh(t),{passive:!0})}renderState(){if(this.shouldRenderRadio()){this.renderRadioState(this.radioState);return}this.renderProductState(this.productState)}renderProductState(e){const t=this.requireElements();t.root.classList.remove("bottom-player--radio"),t.tracklistTitle.textContent="Tracklist",t.expandedTracklistTitle.textContent="Tracklist",t.expandedTracklistLabel.textContent="Tracklist",t.expandedTracklist.setAttribute("aria-label","Tracklist"),t.mobileTracklistNowPlayingTitle.textContent="Now Playing",t.mobileTracklistNowPlayingTitle.hidden=!0,t.mobileTracklistNowPlayingTitle.setAttribute("aria-hidden","true"),t.mobileTracklistSectionTitle.textContent="Tracklist",t.mobileTracklistSectionTitle.hidden=!0,t.mobileTracklistSectionTitle.setAttribute("aria-hidden","true");const r=e.currentCatalogue,a=e.currentTrack,i=e.durationSeconds??a?.durationSeconds??0,s=a!==null,o=Ao(r,a),l=a?Po(a):"No track loaded",u=o==="Album title unavailable"?l:o;this.updateWishlistTarget(Oo(r));const d=jo(e),h=[Xt(t.title,d,l),Ae(t.currentTrack,o),Xt(t.mobileTitle,d,l),Ae(t.mobileAlbum,o),Xt(t.expandedTitleText,d,l)].some(Boolean);this.renderArtwork(t.artwork,Je(e),u),h&&this.scheduleTitleMarqueeCheck(),this.renderExpandedAlbumMetadata(Ro(r,a),o),t.expandedAlbumArtists.textContent=Eo(r,a),t.mobileTracklistTitle.textContent=l,t.mobileTracklistAlbum.textContent=o,this.renderArtwork(t.mobileTracklistArtwork,Je(e),u);const p=e.isPlaying?"pause":"play";this.renderPlayPauseButtons(p,e.isPlaying);for(const Q of[t.previous,t.playPause,t.next,t.expandedPrevious,t.expandedPlayPause,t.expandedNext])Q.disabled=!s||e.isLoading;
205for(const Q of[t.expandedRewind10,t.expandedForward10])Q.disabled=!s||e.isLoading||i<=0;this.renderTracklist(e),this.renderExpandedProductArtwork(e,u),this.renderBackCoverAction($o(e));const g=Ct(e),k=this.shouldUseTrackBasedBottomProgress(e),T=k?g:null,w=T?T.durationSeconds:i,f=T?T.elapsedSeconds:e.currentTimeSeconds,C=g?g.durationSeconds:i,I=g?g.elapsedSeconds:e.currentTimeSeconds,v=!s||w<=0,_=!s||C<=0;t.progress.disabled=v,t.progress.max=String(Math.max(0,Math.floor(w))),t.expandedProgress.disabled=_,t.expandedProgress.max=String(Math.max(0,Math.floor(C))),(!this.progressIsActive||this.progressActiveScope!=="bottom")&&(t.progress.value=String(Math.floor(f)),this.setBottomElapsedText($(f))),(!this.progressIsActive||this.progressActiveScope!=="expanded")&&(t.expandedProgress.value=String(Math.floor(I)),this.setExpandedElapsedText($(I))),this.renderMobileCollapsedProgress({durationSeconds:C,elapsedSeconds:I,hasStarted:e.isPlaying||I>0,hasTrack:s}),t.duration.textContent=w>0?$(w):"-:--",t.expandedDuration.textContent=C>0?$(C):"-:--",this.renderActMarkers(t.actMarkers,k?[]:So(e,i)),this.renderActMarkers(t.expandedActMarkers,[]);const q=this.sampleNoticeActive&&this.activeMode==="product";this.renderQualityBadge(t.qualityBadge,t.qualityBadgeLabel,r,q),this.renderQualityBadge(t.expandedQualityBadge,t.expandedQualityBadgeLabel,r,q),this.renderProductLink(r),this.renderWishlistButton(),t.error.hidden=!e.error,t.error.textContent=e.error?tl(e.error.message):""}renderRadioState(e){const t=this.requireElements(),r=e?.currentItem??null,a=r!==null,i=e?.durationSeconds??r?.durationSeconds??0,s=r?.displayTitle??"Opera Depot Radio",o=r?.artist??r?.composer??(e?.status==="unavailable"?"Radio unavailable":"Opera Depot"),l=r?.albumTitle??"Opera Depot Radio",u=r?.albumTitle??s,d=e?.isLoading===!0,h=e?.isPlaying===!0;t.root.classList.add("bottom-player--radio"),t.tracklistTitle.textContent="Up Next:",t.expandedTracklistTitle.textContent="Up Next:",t.expandedTracklistLabel.textContent="Up Next",t.expandedTracklist.setAttribute("aria-label","Up Next"),t.mobileTracklistNowPlayingTitle.textContent="Now Playing:",t.mobileTracklistNowPlayingTitle.hidden=!1,t.mobileTracklistNowPlayingTitle.setAttribute("aria-hidden","false"),t.mobileTracklistSectionTitle.textContent="Up Next:",t.mobileTracklistSectionTitle.hidden=!1,t.mobileTracklistSectionTitle.setAttribute("aria-hidden","false"),this.updateWishlistTarget(No(r));const p=[Ae(t.title,s),Ae(t.currentTrack,o),Ae(t.mobileTitle,s),Ae(t.mobileAlbum,o),Ae(t.expandedTitleText,s)].some(Boolean);this.renderArtwork(t.artwork,r?.artworkUrl??null,u),this.renderArtwork(t.expandedArtwork,r?.artworkUrl??null,u),this.renderArtwork(t.mobileTracklistArtwork,r?.artworkUrl??null,u),p&&this.scheduleTitleMarqueeCheck(),this.renderExpandedAlbumMetadata(Mo(r),l),t.expandedAlbumArtists.textContent=Fo(r,o),t.mobileTracklistTitle.textContent=s,t.mobileTracklistAlbum.textContent=l,this.renderPlayPauseButtons(h?"pause":"play",h);for(const w of[t.previous,t.playPause,t.next,t.expandedPrevious,t.expandedPlayPause,t.expandedNext])w.disabled=!a||d;for(const w of[t.expandedRewind10,t.expandedForward10])w.disabled=!a||d||!i;this.renderBackCoverAction(fr(r)),this.renderRadioTracklist(e);const g=!a||!i;for(const w of[t.progress,t.expandedProgress])w.disabled=g,w.max=String(Math.max(0,Math.floor(i||0)));if(!this.progressIsActive){const w=String(Math.floor(e?.currentTimeSeconds??0));t.progress.value=w,t.expandedProgress.value=w,this.setElapsedText($(e?.currentTimeSeconds??0))}const k=e?.currentTimeSeconds??0;this.renderMobileCollapsedProgress({durationSeconds:i,elapsedSeconds:k,hasStarted:h||k>0,hasTrack:a});const T=i&&i>0?$(i):"-:--";t.duration.textContent=T,t.expandedDuration.textContent=T,this.renderActMarkers(t.actMarkers,[]),this.renderActMarkers(t.expandedActMarkers,[]),this.renderRadioQualityBadge(t.qualityBadge,t.qualityBadgeLabel,r),this.renderRadioQualityBadge(t.expandedQualityBadge,t.expandedQualityBadgeLabel,r),this.renderRadioProductLink(r),this.renderWishlistButton(),t.error.hidden=!0,t.error.textContent=""}shouldRenderRadio(){return this.radioController!==null&&this.activeMode==="radio"}
205shouldUseRadioControls(){return this.shouldRenderRadio()}getElement(e){const t=this.mount.querySelector(e);if(!t)throw new Error(`Missing bottom player element: ${e}`);return t}requireElements(){if(!this.elements)throw new Error("Bottom player elements are not initialized.");return this.elements}renderExpandedAlbumMetadata(e,t){const r=this.requireElements();if(r.expandedAlbumTitle.textContent=t,e){r.expandedComposer.textContent=e,r.expandedComposer.hidden=!1,r.expandedComposer.setAttribute("aria-hidden","false"),r.expandedMetaSeparator.hidden=!1;return}r.expandedComposer.textContent="",r.expandedComposer.hidden=!0,r.expandedComposer.setAttribute("aria-hidden","true"),r.expandedMetaSeparator.hidden=!0}setExpanded(e,t){const r=this.requireElements();e!==this.expanded&&(this.clearExpandedCloseTimer(),this.expanded=e,e?(r.root.classList.remove("bottom-player--expanded-closing"),r.root.classList.add("bottom-player--expanded"),r.bar.hidden=!0,r.expanded.hidden=!1,r.expanded.setAttribute("aria-hidden","false"),this.updatePageScrollLock(),this.setTracklistDrawerOpen(!1,`${t}:drawer-close`),this.tracklistSignatures.expanded=""):(this.closeBackCoverLightbox({restoreFocus:!1}),r.root.classList.add("bottom-player--expanded-closing"),this.setMobileTracklistOpen(!1,`${t}:mobile-tracklist-close`),this.expandedCloseTimer=window.setTimeout(()=>{this.expandedCloseTimer=null,r.root.classList.remove("bottom-player--expanded","bottom-player--expanded-closing"),r.bar.hidden=!1,r.expanded.hidden=!0,r.expanded.setAttribute("aria-hidden","true"),this.updatePageScrollLock(),this.scheduleTitleMarqueeCheck()},wt)),this.renderState(),this.scheduleTitleMarqueeCheck(),this.scheduleTracklistStickyEndPaddingRefresh(),e&&window.setTimeout(()=>this.scheduleTracklistStickyEndPaddingRefresh(),wt))}setMobileTracklistOpen(e,t){const r=this.requireElements();e!==this.mobileTracklistOpen&&(this.clearMobileTracklistCloseTimer(),this.mobileTracklistOpen=e,e?(r.root.classList.remove("bottom-player--mobile-tracklist-closing"),r.root.classList.add("bottom-player--mobile-tracklist-open"),r.mobileTracklist.hidden=!1,r.mobileTracklist.setAttribute("aria-hidden","false"),this.updatePageScrollLock()):(r.root.classList.add("bottom-player--mobile-tracklist-closing"),this.mobileTracklistCloseTimer=window.setTimeout(()=>{this.mobileTracklistCloseTimer=null,r.root.classList.remove("bottom-player--mobile-tracklist-open","bottom-player--mobile-tracklist-closing"),r.mobileTracklist.hidden=!0,r.mobileTracklist.setAttribute("aria-hidden","true"),this.updatePageScrollLock()},wt)),this.playbackService.setTracklistDrawerOpen(e,t),e&&(this.tracklistSignatures.mobile=""),this.renderState(),this.scheduleTracklistStickyEndPaddingRefresh(),e&&window.setTimeout(()=>this.scheduleTracklistStickyEndPaddingRefresh(),wt))}closeExpandedForProductNavigation(){const e=this.requireElements();!this.expanded&&!this.mobileTracklistOpen||(this.clearExpandedCloseTimer(),this.clearMobileTracklistCloseTimer(),this.closeBackCoverLightbox({restoreFocus:!1}),this.expanded=!1,this.mobileTracklistOpen=!1,e.root.classList.remove("bottom-player--expanded","bottom-player--expanded-closing","bottom-player--mobile-tracklist-open","bottom-player--mobile-tracklist-closing"),e.bar.hidden=!1,e.expanded.hidden=!0,e.expanded.setAttribute("aria-hidden","true"),e.mobileTracklist.hidden=!0,e.mobileTracklist.setAttribute("aria-hidden","true"),this.playbackService.setTracklistDrawerOpen(!1,"product-link"),this.updatePageScrollLock(),this.scheduleTitleMarqueeCheck())}clearExpandedCloseTimer(){this.expandedCloseTimer!==null&&(window.clearTimeout(this.expandedCloseTimer),this.expandedCloseTimer=null)}clearTitleMarqueeFrame(){this.titleMarqueeFrame!==null&&(window.cancelAnimationFrame(this.titleMarqueeFrame),this.titleMarqueeFrame=null)}clearTracklistStickyPaddingFrame(){this.tracklistStickyPaddingFrame!==null&&(window.cancelAnimationFrame(this.tracklistStickyPaddingFrame),this.tracklistStickyPaddingFrame=null)}clearTracklistStickyHeaderFrames(){const e=this.elements;if(e)for(const t of[e.tracklistItems,e.expandedTracklistItems,e.mobileTracklistItems]){const r=this.tracklistStickyHeaderFrames.get(t);r!==void 0&&(window.cancelAnimationFrame(r),this.tracklistStickyHeaderFrames.delete(t))}}scheduleTitleMarqueeCheck(){this.clearTitleMarqueeFrame(),this.titleMarqueeFrame=window.requestAnimationFrame(()=>{this.titleMarqueeFrame=null,this.updateTitleMarqueeState()})}scheduleTracklistStickyEndPaddingRefresh(){this.clearTracklistStickyPaddingFrame(),this.tracklistStickyPaddingFrame=window.requestAnimationFrame(()=>{this.tracklistStickyPaddingFrame=null,this.refreshVisibleTracklistStickyEndPadding()})}refreshVisibleTracklistStickyEndPadding(){const e=this.elements;e&&(this.expanded&&(this.updateTracklistStickyEndPadding(e.expandedTracklistItems),this.updateTracklistStickyOverlayHeader(e.expandedTracklistItems)),this.mobileTracklistOpen&&(this.updateTracklistStickyEndPadding(e.mobileTracklistItems),this.updateTracklistStickyOverlayHeader(e.mobileTracklistItems)))}scheduleTracklistStickyHeaderRefresh(e){if(this.tracklistStickyHeaderFrames.has(e))return;const t=window.requestAnimationFrame(()=>{this.tracklistStickyHeaderFrames.delete(e),this.updateTracklistStickyEndPadding(e),this.updateTracklistStickyOverlayHeader(e)});this.tracklistStickyHeaderFrames.set(e,t)}updateTitleMarqueeState(){const e=this.elements;if(!e)return;const t=qe(),r=!e.bar.hidden;xt(e.title,r&&!t,this.collapsedMarqueeSignatures),xt(e.currentTrack,r&&!t,this.collapsedMarqueeSignatures),xt(e.mobileTitle,r&&t,this.collapsedMarqueeSignatures),xt(e.mobileAlbum,r&&t,this.collapsedMarqueeSignatures),this.updateExpandedTitleMarquee()}updateExpandedTitleMarquee(){const e=this.elements;if(!e)return;const t=e.expandedTitle,r=e.expandedTitleText,a=!e.expanded.hidden,i=a?Math.
205ceil(t.clientWidth):0;if(!a||i<=0){(this.expandedTitleMarqueeSignature!==""||t.classList.contains("bottom-player__expanded-title--marquee"))&&(t.classList.remove("bottom-player__expanded-title--marquee"),t.style.removeProperty("--bottom-player-expanded-title-distance")),this.expandedTitleMarqueeSignature="";return}const s=r.textContent??"",o=Math.ceil(r.scrollWidth),l=`${s}|${i}|${o}`;if(l===this.expandedTitleMarqueeSignature)return;this.expandedTitleMarqueeSignature=l;const u=o-i,d=u>1;if(t.classList.toggle("bottom-player__expanded-title--marquee",d),d){t.style.setProperty("--bottom-player-expanded-title-distance",`${u+16}px`);return}t.style.removeProperty("--bottom-player-expanded-title-distance")}clearMobileTracklistCloseTimer(){this.mobileTracklistCloseTimer!==null&&(window.clearTimeout(this.mobileTracklistCloseTimer),this.mobileTracklistCloseTimer=null)}updatePageScrollLock(){const e=this.expanded||this.mobileTracklistOpen;if(e&&!this.pageScrollLocked){this.acquirePageScrollLock();return}!e&&this.pageScrollLocked&&this.releasePageScrollLock()}acquirePageScrollLock(){if(!this.pageScrollLocked){if(this.pageScrollLocked=!0,z2.pageScrollLockCount===0){const e=window.scrollY,t=!Xo();z2.pageScrollLockSnapshot={bodyOverflow:document.body.style.overflow,bodyPosition:document.body.style.position,bodyTop:document.body.style.top,bodyWidth:document.body.style.width,documentOverflow:document.documentElement.style.overflow,scrollY:e},document.documentElement.classList.add("opera-depot-player-scroll-locked"),document.body.classList.add("opera-depot-player-scroll-locked"),document.documentElement.style.overflow="hidden",document.body.style.overflow="hidden",t&&(document.body.style.position="fixed",document.body.style.top=`-${e}px`,document.body.style.width="100%")}z2.pageScrollLockCount+=1}}releasePageScrollLock(){if(!this.pageScrollLocked||(this.pageScrollLocked=!1,z2.pageScrollLockCount=Math.max(0,z2.pageScrollLockCount-1),z2.pageScrollLockCount!==0))return;const e=z2.pageScrollLockSnapshot;z2.pageScrollLockSnapshot=null,document.documentElement.classList.remove("opera-depot-player-scroll-locked"),document.body.classList.remove("opera-depot-player-scroll-locked"),e&&(document.documentElement.style.overflow=e.documentOverflow,document.body.style.overflow=e.bodyOverflow,document.body.style.position=e.bodyPosition,document.body.style.top=e.bodyTop,document.body.style.width=e.bodyWidth,window.scrollTo(0,e.scrollY))}containScrollDelta(e,t,r){if(!(t.scrollHeight>t.clientHeight+1)){e.preventDefault(),e.stopPropagation();return}const i=t.scrollTop<=0,s=Math.ceil(t.scrollTop+t.clientHeight)>=t.scrollHeight;(r<0&&i||r>0&&s)&&e.preventDefault(),e.stopPropagation()}setTracklistDrawerOpen(e,t){const r=this.requireElements();this.tracklistDrawerOpen=e,r.tracklist.setAttribute("aria-expanded",String(e)),r.tracklist.classList.toggle("bottom-player__button--active",e),r.tracklistDrawer.hidden=!1,r.tracklistDrawer.setAttribute("aria-hidden",String(!e)),r.tracklistDrawer.classList.toggle("bottom-player__tracklist-drawer--open",e),this.playbackService.setTracklistDrawerOpen(e,t),e&&(this.tracklistSignatures.drawer="",this.shouldRenderRadio()?this.renderRadioTracklist(this.radioState):this.renderTracklist(this.productState))}renderPlayPauseButtons(e,t){const r=this.requireElements();for(const a of[r.playPause,r.expandedPlayPause])a.setAttribute("aria-label",t?"Pause":"Play"),this.renderedPlayPauseIcon!==e&&a.replaceChildren(Jo(e));this.renderedPlayPauseIcon=e}setElapsedText(e){const t=this.requireElements();t.elapsed.textContent!==e&&(t.elapsed.textContent=e),t.expandedElapsed.textContent!==e&&(t.expandedElapsed.textContent=e)}setBottomElapsedText(e){const t=this.requireElements().elapsed;t.textContent!==e&&(t.textContent=e)}setExpandedElapsedText(e){const t=this.requireElements().expandedElapsed;t.textContent!==e&&(t.textContent=e)}renderQualityBadge(e,t,r,a=!1){this.renderQualityBadgeState(e,t,_o(r,a))}shouldUseTrackBasedBottomProgress(e){return vo(e)||this.narrowDesktopBottomProgress}renderRadioQualityBadge(e,t,r){this.renderQualityBadgeState(e,t,Lo(r))}renderQualityBadgeState(e,t,r){e.hidden=!r.visible,e.setAttribute("aria-hidden",String(!r.visible)),e.classList.toggle("bottom-player__quality-badge--lossless",r.visible),e.classList.toggle("bottom-player__quality-badge--sample",!!(r.visible&&r.isSample)),t.textContent=r.label||"Lossless"}renderMobileCollapsedProgress(e){const t=this.requireElements(),r=Number(e.durationSeconds),a=Number(e.elapsedSeconds),i=e.hasTrack&&e.hasStarted&&Number.isFinite(r)&&r>0;t.mobileCollapsedProgress.hidden!==!i&&(t.mobileCollapsedProgress.hidden=!i),t.mobileCollapsedProgress.getAttribute("aria-hidden")!=="true"&&t.mobileCollapsedProgress.setAttribute("aria-hidden","true");const o=`scaleX(${i?Ut(Xe(a,r)/r):0})`;t.mobileCollapsedProgressFill.style.transform!==o&&(t.mobileCollapsedProgressFill.style.transform=o)}renderWishlistButton(){const e=this.requireElements(),t=e.expandedWishlist,r=this.wishlistResolved,a=mr(),i=r!==null&&a!==null;if(t.hidden=!i,t.setAttribute("aria-hidden",String(!i)),!i||!r)return;const s=r.comingSoon?"bell":"heart";s!==this.renderedWishlistIcon&&(this.renderedWishlistIcon=s,e.expandedWishlistIcon.innerHTML=X(s==="bell"?"bell":"heart"),e.expandedWishlistLabel.textContent=s==="bell"?"Notify when available":"Add to Wishlist");const o=hr(a,r.variant.id);t.classList.toggle("bottom-player__action-item--active",o),t.setAttribute("aria-pressed",String(o)),t.setAttribute("aria-label",r.comingSoon?o?"Cancel availability notification":"Notify when available":o?"Remove from wishlist":"Add to wishlist")}updateWishlistTarget(e){const t=e?.key??null;if(t===this.wishlistTargetKey||(this.wishlistTargetKey=t,this.wishlistResolved=null,this.wishlistResolveToken+=1,this.hideWishlistPopup(),this.renderWishlistButton(),!e))return;const r=this.wishlistResolveToken;mo(e.handle,e.catalogueNumber).then(a=>{r!==this.wishlistResolveToken||!this.elements||(this.wishlistResolved=a,this.renderWishlistButton())})}showWishlistPopup(e){const t=this.requireElements().expandedWishlistPopup;this.wishlistPopupTimer!==null&&(window.clearTimeout(this.wishlistPopupTimer),this.wishlistPopupTimer=null),t.textContent=e,t.classList.remove("bottom-player__wishlist-popup--visible"),t.offsetWidth,t.classList.add("bottom-player__wishlist-popup--visible"),this.wishlistPopupTimer=window.setTimeout(()=>{this.wishlistPopupTimer=null,this.hideWishlistPopup()},fo+200)}hideWishlistPopup(){var t;this.wishlistPopupTimer!==null&&(window.clearTimeout(this.wishlistPopupTimer),this.wishlistPopupTimer=null);const e=(t=this.elements)==null?void 0:t.expandedWishlistPopup;e&&(e.classList.remove("bottom-player__wishlist-popup--visible"),e.textContent="")}renderExpandedProductArtwork(e,t){const r=this.requireElements(),a=Bo(e)??Je(e);this.renderArtwork(r.expandedArtwork,a,t)}renderBackCoverAction(e){const t=this.requireElements();this.backCoverImages=it(e);const r=this.backCoverImages.length>0;if(t.expandedBackCover.hidden=!r,t.expandedBackCover.setAttribute("aria-hidden",String(!r)),t.expandedBackCover.setAttribute("aria-disabled",r?"false":"true"),t.expandedBackCover.disabled=!r,!r&&this.backCoverLightboxOpen){this.closeBackCoverLightbox();return}if(r&&this.backCoverLightboxOpen){const a=this.selectedBackCoverImageUrl&&this.backCoverImages.includes(this.selectedBackCoverImageUrl)?this.selectedBackCoverImageUrl:this.backCoverImages[0];this.selectBackCoverImage(a),this.renderBackCoverThumbnails()}}openBackCoverLightbox(){const e=this.requireElements(),t=this.backCoverImages[0]??null;t&&(this.backCoverLightboxOpen=!0,this.selectBackCoverImage(t),this.renderBackCoverThumbnails(),e.backCoverLightbox.hidden=!1,e.backCoverLightbox.setAttribute("aria-hidden","false"),e.backCoverClose.focus({preventScroll:!0}))}selectBackCoverImage(e){const t=this.requireElements();this.backCoverImages.includes(e)&&(this.selectedBackCoverImageUrl=e,t.backCoverImage.src=e,t.backCoverImage.alt=`Back cover for ${this.getBackCoverTitle()}`,this.updateBackCoverThumbnailSelection())}renderBackCoverThumbnails(){const e=this.requireElements(),t=this.backCoverImages;if(t.length<=1){e.backCoverThumbnails.hidden=!0,e.backCoverStage.classList.remove("bottom-player__back-cover-stage--gallery"),e.backCoverThumbnails.replaceChildren();return}e.backCoverThumbnails.hidden=!1,e.backCoverStage.classList.add("bottom-player__back-cover-stage--gallery"),e.backCoverThumbnails.replaceChildren(...t.map((r,a)=>{const i=document.createElement("button");i.type="button",i.className="bottom-player__back-cover-thumbnail",i.dataset.backCoverImageUrl=r,i.dataset.playerBackCoverThumbnail="",i.setAttribute("aria-label",`Show product image ${a+2}`);const s=document.createElement("img");return s.src=r,s.alt="",s.loading="lazy",s.decoding="async",i.append(s),i})),this.updateBackCoverThumbnailSelection()}updateBackCoverThumbnailSelection(){const e=this.requireElements(),t=this.selectedBackCoverImageUrl;for(const r of e.backCoverThumbnails.querySelectorAll("[data-player-back-cover-thumbnail]")){const a=!!(t&&r.dataset.backCoverImageUrl===t);r.classList.toggle("bottom-player__back-cover-thumbnail--active",a),a?r.setAttribute("aria-current","true"):r.removeAttribute("aria-current")}}closeBackCoverLightbox(e={}){const t=this.requireElements(),r=this.backCoverLightboxOpen||!t.backCoverLightbox.hidden,a=e.restoreFocus??!0;this.backCoverLightboxOpen=!1,t.backCoverLightbox.hidden=!0,t.backCoverLightbox.setAttribute("aria-hidden","true"),t.backCoverImage.removeAttribute("src"),this.selectedBackCoverImageUrl=null,t.backCoverStage.classList.remove("bottom-player__back-cover-stage--gallery"),t.backCoverThumbnails.replaceChildren(),t.backCoverThumbnails.hidden=!0,a&&r&&!t.expandedBackCover.hidden&&t.expandedBackCover.focus({preventScroll:!0})}getBackCoverTitle(){var t,r;if(this.shouldRenderRadio()){const a=((t=this.radioState)==null?void 0:t.currentItem)??null;return a?.albumTitle||a?.displayTitle||a?.catalogueNumber||"Opera Depot Radio"}const e=this.playbackService.getState().currentCatalogue;return((r=e?.product)==null?void 0:r.title)||e?.catalogueNumber||"album"}renderRadioTracklist(e){const t=this.requireElements(),r=e?.upcomingItems??[],a=`${r.length} track${r.length===1?"":"s"}`,i=r.length>0;if(t.tracklist.disabled=!i,t.expandedTracklist.disabled=!i,t.tracklistSummary.textContent=a,t.expandedTracklistSummary.textContent=a,t.mobileTracklistSummary.textContent=a,this.renderTracklistTabs(t.expandedTracklistTabs,[],null),this.renderTracklistTabs(t.mobileTracklistTabs,[],null),t.tracklistDrawer.hidden=!1,t.tracklistDrawer.setAttribute("aria-hidden",String(!this.tracklistDrawerOpen)),t.tracklistDrawer.classList.toggle("bottom-player__tracklist-drawer--open",this.tracklistDrawerOpen),t.tracklistDrawer.classList.remove("bottom-player__tracklist-drawer--ring"),t.tracklist.setAttribute("aria-expanded",String(this.tracklistDrawerOpen)),t.tracklist.classList.toggle("bottom-player__button--active",this.tracklistDrawerOpen),!i){this.tracklistSignatures={drawer:"",expanded:"",mobile:""};for(const s of[t.tracklistItems,t.expandedTracklistItems,t.mobileTracklistItems])s.classList.remove("bottom-player__tracklist-items--ring","bottom-player__tracklist-items--normal"),s.replaceChildren(),this.updateTracklistStickyEndPadding(s),this.updateTracklistStickyOverlayHeader(s);return}this.tracklistDrawerOpen&&this.renderRadioTracklistContainer("drawer",r),this.expanded&&this.renderRadioTracklistContainer("expanded",r),this.mobileTracklistOpen&&this.renderRadioTracklistContainer("mobile",r)}renderRadioTracklistContainer(e,t){const r=this.requireElements(),a=["radio",t.map(s=>`${s.radioId}:${s.displayTitle}:${s.artist??""}:${s.durationSeconds??""}`).join("|")].join("::");if(a===this.tracklistSignatures[e])return;this.tracklistSignatures[e]=a;const i=e==="drawer"?r.tracklistItems:e==="expanded"?r.expandedTracklistItems:r.mobileTracklistItems;i.replaceChildren(...t.map((s,o)=>this.createRadioTracklistRow(s,o))),this.updateTracklistStickyEndPadding(i),this.updateTracklistStickyOverlayHeader(i)}createRadioTracklistRow(e,t){const r=document.createElement("div");r.className="bottom-player__tracklist-row",r.classList.toggle("bottom-player__tracklist-row--alt",t%2===1);const a=document.createElement("button");a.className="bottom-player__tracklist-play",a.type="button",a.innerHTML=X("playSmall"),a.ariaLabel=`Play ${e.displayTitle}`,a.addEventListener("click",()=>{var o;(o=this.radioController)==null||o.playUpcoming(e.radioId)});const i=document.createElement("div");if(e.artist){i.className="bottom-player__tracklist-copy bottom-player__tracklist-copy--radio";const o=document.createElement("div");o.className="bottom-player__tracklist-track-title",o.textContent=e.displayTitle;const l=document.createElement("div");l.className="bottom-player__tracklist-track-subtitle",l.textContent=e.artist,i.replaceChildren(o,l)}else i.className="bottom-player__tracklist-track-title",i.textContent=e.displayTitle;const s=document.createElement("div");return s.className="bottom-player__tracklist-duration",s.textContent=typeof e.durationSeconds=="number"&&e.durationSeconds>0?$(e.durationSeconds):"",r.replaceChildren(a,i,s),r}renderTracklist(e){const t=this.requireElements(),r=sa(e),a=e.engine.engineName==="continuous-cue"&&r.length>0;if(t.tracklist.disabled=!a,t.expandedTracklist.disabled=!a,!a){t.tracklistDrawer.hidden=!0,t.tracklistDrawer.setAttribute("aria-hidden","true"),t.tracklistDrawer.classList.remove("bottom-player__tracklist-drawer--open","bottom-player__tracklist-drawer--ring"),t.tracklist.setAttribute("aria-expanded","fal
205se"),t.tracklist.classList.remove("bottom-player__button--active"),this.tracklistDrawerOpen=!1,this.tracklistSignatures={drawer:"",expanded:"",mobile:""};for(const d of[t.tracklistItems,t.expandedTracklistItems,t.mobileTracklistItems])d.classList.remove("bottom-player__tracklist-items--ring","bottom-player__tracklist-items--normal"),d.replaceChildren(),this.updateTracklistStickyEndPadding(d),this.updateTracklistStickyOverlayHeader(d);t.tracklistSummary.textContent="0 cues",t.expandedTracklistSummary.textContent="0 cues",t.mobileTracklistSummary.textContent="0 cues",this.renderTracklistTabs(t.expandedTracklistTabs,r,null),this.renderTracklistTabs(t.mobileTracklistTabs,r,null);return}const i=yr(e,r),s=r.filter(d=>d.operaSlug).length,o=i&&s>0,l=[`${r.length} cue${r.length===1?"":"s"}`,o?`${s} Ring cue${s===1?"":"s"}`:null].filter(Boolean).join(" | ");t.tracklistSummary.textContent=l,t.expandedTracklistSummary.textContent=l,t.mobileTracklistSummary.textContent=l,t.tracklistDrawer.hidden=!1,t.tracklistDrawer.setAttribute("aria-hidden",String(!this.tracklistDrawerOpen)),t.tracklistDrawer.classList.toggle("bottom-player__tracklist-drawer--open",this.tracklistDrawerOpen),t.tracklistDrawer.classList.toggle("bottom-player__tracklist-drawer--ring",o);for(const d of[t.tracklistItems,t.expandedTracklistItems,t.mobileTracklistItems])d.classList.toggle("bottom-player__tracklist-items--ring",o),d.classList.toggle("bottom-player__tracklist-items--normal",!o);t.tracklist.setAttribute("aria-expanded",String(this.tracklistDrawerOpen)),t.tracklist.classList.toggle("bottom-player__button--active",this.tracklistDrawerOpen);const u=dn(e.currentTrack,["continuousCurrentOperaSlug","continuousOperaSlug"]);this.renderTracklistTabs(t.expandedTracklistTabs,r,u),this.renderTracklistTabs(t.mobileTracklistTabs,r,u),this.tracklistDrawerOpen&&this.renderTracklistContainer("drawer",e,r,o),this.expanded&&this.renderTracklistContainer("expanded",e,r,o),this.mobileTracklistOpen&&this.renderTracklistContainer("mobile",e,r,o)}renderTracklistContainer(e,t,r,a=yr(t,r)&&r.some(i=>i.operaSlug)){var d,h;const i=this.requireElements(),s=((d=t.currentQueueItem)==null?void 0:d.id)??null,o=((h=t.currentTrack)==null?void 0:h.id)??null,l=[a?"opera-header":"act-header-only",s,o,t.isPlaying?"playing":"idle",r.map(p=>`${p.queueItem.id}:${p.operaSlug??""}:${p.act??""}:${p.startTimeSeconds??""}:${p.track.durationSeconds??""}`).join("|")].join("::");if(l===this.tracklistSignatures[e])return;this.tracklistSignatures[e]=l;const u=e==="drawer"?i.tracklistItems:e==="expanded"?i.expandedTracklistItems:i.mobileTracklistItems;u.replaceChildren(...this.createTracklistNodes(r,s,o,t.isPlaying,e,a)),this.updateTracklistStickyEndPadding(u),this.updateTracklistStickyOverlayHeader(u)}renderTracklistTabs(e,t,r){const a=Wo(t),i=a.length<=1?"hidden":[r??"",...a.map(s=>`${s.slug}:${s.title}`)].join("|");if(i!==this.tracklistTabSignatures.get(e)){if(this.tracklistTabSignatures.set(e,i),e.hidden=a.length<=1,a.length<=1){e.replaceChildren();return}e.replaceChildren(...a.map(s=>{const o=document.createElement("button");return o.className="bottom-player__tracklist-tab",o.classList.toggle("bottom-player__tracklist-tab--active",s.slug===r),o.type="button",o.dataset.tracklistTabOpera=s.slug,o.textContent=Tr(s.title),o}))}}scrollTracklistToOpera(e,t){const r=this.requireElements(),a=e==="drawer"?r.tracklistItems:e==="mobile"?r.mobileTracklistItems:r.expandedTracklistItems,i=Array.from(a.querySelectorAll("[data-tracklist-opera]")).find(o=>o.dataset.tracklistOpera===t);if(!i)return;const s=this.getTracklistHeaderScrollTop(a,i);a.scrollTo({behavior:"smooth",top:s})}getTracklistHeaderScrollTop(e,t){const r=this.getTracklistHeaderContentTop(e,t);if(r!==null){const l=Number.parseFloat(getComputedStyle(e).paddingTop),u=r+(Number.isFinite(l)?l:0),d=Math.max(0,e.scrollHeight-e.clientHeight);return Math.max(0,Math.min(u,d))}const a=e.getBoundingClientRect(),i=t.getBoundingClientRect(),s=e.scrollTop+i.top-a.top,o=Math.max(0,e.scrollHeight-e.clientHeight);return Math.max(0,Math.min(s,o))}getTracklistHeaderContentTop(e,t){let r=0,a=e.firstElementChild;for(;a&&a!==t;)r+=a.getBoundingClientRect().height,a=a.nextElementSibling;return a===t?r:null}getTracklistHeaderDockScrollTop(e,t){const r=this.getTracklistHeaderContentTop(e,t);if(r===null)return null;const a=Number.parseFloat(getComputedStyle(e).paddingTop);return Math.max(0,r+(Number.isFinite(a)?a:0))}getTracklistSectionHeaders(e){return Array.from(e.children).filter(t=>t instanceof HTMLElement&&t.classList.contains("bottom-player__tracklist-header"))}getTracklistStickyOverlay(e){let t=Array.from(e.children).find(u=>u instanceof HTMLElement&&u.hasAttribute("data-player-tracklist-sticky-overlay"));if(!t){t=document.createElement("div"),t.className="bottom-player__tracklist-sticky-overlay",t.setAttribute("data-player-tracklist-sticky-overlay",""),t.setAttribute("aria-hidden","true");const u=document.createElement("div");u.className="bottom-player__tracklist-sticky-overlay-inner";const d=document.createElement("span");d.className="bottom-player__tracklist-sticky-overlay-label";const h=document.createElement("span");h.className="bottom-player__tracklist-sticky-overlay-duration";const p=document.createElement("div");p.className="bottom-player__tracklist-sticky-overlay-ring-act";const g=document.createElement("span");g.className="bottom-player__tracklist-sticky-overlay-ring-act-label";const k=document.createElement("span");k.className="bottom-player__tracklist-sticky-overlay-ring-act-duration",u.replaceChildren(d,h),p.replaceChildren(g,k),t.replaceChildren(u,p),e.prepend(t)}t!==e.firstElementChild&&e.prepend(t);const r=t.querySelector(".bottom-player__tracklist-sticky-overlay-inner"),a=t.querySelector(".bottom-player__tracklist-sticky-overlay-label"),i=t.querySelector(".bottom-player__tracklist-sticky-overlay-duration"),s=t.querySelector(".bottom-player__tracklist-sticky-overlay-ring-act"),o=t.querySelector(".bottom-player__tracklist-sticky-overlay-ring-act-label"),l=t.querySelector(".bottom-player__tracklist-sticky-overlay-ring-act-duration");if(!r||!a||!i||!s||!o||!l){t.replaceChildren();const u=document.createElement("div");u.className="bottom-player__tracklist-sticky-overlay-inner";const d=document.createElement("span");d.className="bottom-player__tracklist-sticky-overlay-label";const h=document.createElement("span");h.className="bottom-player__tracklist-sticky-overlay-duration";const p=document.createElement("div");p.className="bottom-player__tracklist-sticky-overlay-ring-act";const g=document.createElement("span");g.className="bottom-player__tracklist-sticky-overlay-ring-act-label";const k=document.createElement("span");return k.className="bottom-player__tracklist-sticky-overlay-ring-act-duration",u.replaceChildren(d,h),p.replaceChildren(g,k),t.replaceChildren(u,p),{overlay:t,inner:u,label:d,duration:h,ringAct:p,ringActLabel:g,ringActDuration:k}}return{overlay:t,inner:r,label:a,duration:i,ringAct:s,ringActLabel:o,ringActDuration:l}}getTracklistStickyEndSpacer(e){let t=Array.from(e.children).find(r=>r instanceof HTMLElement&&r.hasAttribute("data-player-tracklist-sticky-end-spacer"));return t||(t=document.createElement("div"),t.className="bottom-player__tracklist-end-spacer",t.setAttribute("data-player-tracklist-sticky-end-spacer",""),t.setAttribute("aria-hidden","true")),t!==e.lastElementChild&&e.a
205ppend(t),t}updateTracklistStickyEndPadding(e){const t=this.getTracklistStickyEndSpacer(e),r=this.getTracklistSectionHeaders(e),a=r.length>0?r[r.length-1]:null;if(!a||e.clientHeight<=0){e.style.setProperty("--bottom-player-tracklist-sticky-end-padding","0px");return}const i=this.getTracklistHeaderDockScrollTop(e,a);if(i===null){e.style.setProperty("--bottom-player-tracklist-sticky-end-padding","0px");return}const s=t.getBoundingClientRect().height,o=Math.max(0,e.scrollHeight-s),l=Math.max(0,Math.ceil(i+e.clientHeight-o)),u=l>0?`${l}px`:"0px";e.style.getPropertyValue("--bottom-player-tracklist-sticky-end-padding")!==u&&e.style.setProperty("--bottom-player-tracklist-sticky-end-padding",u)}updateTracklistStickyOverlayHeader(e){var v,_,q,Q,_e;const t=this.getTracklistSectionHeaders(e),{overlay:r,inner:a,label:i,duration:s,ringAct:o,ringActLabel:l,ringActDuration:u}=this.getTracklistStickyOverlay(e);let d=null,h=null,p=null;const g=e.classList.contains("bottom-player__tracklist-items--ring"),k=Number.parseFloat(getComputedStyle(e).paddingTop),T=Math.max(0,e.scrollTop-(Number.isFinite(k)?k:0))+1;for(const F of t){const pe=this.getTracklistHeaderContentTop(e,F);if(pe!==null){if(pe<=T){d=F,g&&(F.classList.contains("bottom-player__tracklist-header--opera")?(h=F,p=null):F.classList.contains("bottom-player__tracklist-header--act")&&(p=F));continue}break}}g&&(d=p??h);for(const F of t)F.classList.toggle("bottom-player__tracklist-header--overlay-active",g?F===h||F===p:F===d);if(!d){r.classList.remove("bottom-player__tracklist-sticky-overlay--visible"),a.classList.remove("bottom-player__tracklist-sticky-overlay-inner--act","bottom-player__tracklist-sticky-overlay-inner--opera"),i.textContent="",s.textContent="",s.hidden=!0,a.classList.remove("bottom-player__tracklist-sticky-overlay-inner--ring"),o.classList.remove("bottom-player__tracklist-sticky-overlay-ring-act--visible"),l.textContent="",u.textContent="",u.hidden=!0;return}if(g&&h){const F=h.querySelector(".bottom-player__tracklist-header-label"),pe=p?.querySelector(".bottom-player__tracklist-header-label"),je=p?.querySelector(".bottom-player__tracklist-header-duration"),gt=((v=je?.textContent)==null?void 0:v.trim())??"";i.textContent=((_=F?.textContent)==null?void 0:_.trim())??"",s.textContent="",s.hidden=!0,l.textContent=((q=pe?.textContent)==null?void 0:q.trim())??"",u.textContent=gt,u.hidden=gt.length===0,a.classList.add("bottom-player__tracklist-sticky-overlay-inner--ring"),a.classList.add("bottom-player__tracklist-sticky-overlay-inner--opera"),a.classList.remove("bottom-player__tracklist-sticky-overlay-inner--act"),o.classList.toggle("bottom-player__tracklist-sticky-overlay-ring-act--visible",!!p),r.classList.add("bottom-player__tracklist-sticky-overlay--visible");return}const w=d.querySelector(".bottom-player__tracklist-header-label"),f=d.querySelector(".bottom-player__tracklist-header-duration"),C=d.classList.contains("bottom-player__tracklist-header--opera"),I=((Q=f?.textContent)==null?void 0:Q.trim())??"";i.textContent=((_e=w?.textContent)==null?void 0:_e.trim())??"",s.textContent=I,s.hidden=I.length===0,a.classList.remove("bottom-player__tracklist-sticky-overlay-inner--ring"),a.classList.toggle("bottom-player__tracklist-sticky-overlay-inner--opera",C),a.classList.toggle("bottom-player__tracklist-sticky-overlay-inner--act",!C),o.classList.remove("bottom-player__tracklist-sticky-overlay-ring-act--visible"),l.textContent="",u.textContent="",u.hidden=!0,r.classList.add("bottom-player__tracklist-sticky-overlay--visible")}createTracklistNodes(e,t,r,a,i,s){var p;const o=[],l=new Map,u=Ko(e);let d=null,h=0;for(const g of e){const k=g.operaSlug??"__continuous";if(s&&g.operaSlug&&g.operaSlug!==d){const C=Tr(g.operaTitle??g.operaSlug),I=gr(C,"opera",{operaSlug:g.operaSlug});I.classList.add("bottom-player__tracklist-header--scroll-action"),I.tabIndex=0,I.setAttribute("role","button"),I.setAttribute("aria-label",`Scroll to ${C}`),o.push(I),d=g.operaSlug}const T=l.get(k)??new Set;l.set(k,T);const w=((p=g.act)==null?void 0:p.toLocaleLowerCase())??null;g.act&&w&&!T.has(w)&&(T.add(w),o.push(gr(g.act,"act",{durationSeconds:u.get(da(g))??null,displayLabel:s?Vo(g.act):null})));const f=g.queueItem.id===t||g.track.id===r;o.push(this.createTracklistRow(g,h,f,a,i)),h+=1}return o}createTracklistRow(e,t,r,a,i){const s=document.createElement("div");s.className="bottom-player__tracklist-row",s.classList.toggle("bottom-player__tracklist-row--alt",t%2===1),s.classList.toggle("bottom-player__tracklist-row--current",r);const o=document.createElement("button");o.className="bottom-player__tracklist-play",o.type="button";const l=r&&a;o.classList.toggle("bottom-player__tracklist-play--now-playing",l),o.innerHTML=X(r&&l?"nowPlaying":"playSmall"),o.ariaLabel=r?`${a?"Playing":"Play"} ${e.track.displayTitle||e.track.title}`:`Play ${e.track.displayTitle||e.track.title}`,o.addEventListener("click",()=>{this.playTracklistItem(e,i)});const u=document.createElement("div");u.className="bottom-player__tracklist-track-title",u.textContent=e.track.displayTitle||e.track.title;const d=document.createElement("div");return d.className="bottom-player__tracklist-duration",d.textContent=typeof e.track.durationSeconds=="number"&&e.track.durationSeconds>0?$(e.track.durationSeconds):"",s.replaceChildren(o,u,d),s}async playTracklistItem(e,t){try{await this.playbackService.playTrack(e.queueItem.trackId,{autoPlay:!0}),t==="drawer"?this.setTracklistDrawerOpen(!1,"select-track"):t==="mobile"?this.setMobileTracklistOpen(!1,"select-track"):(this.tracklistSignatures.expanded="",this.renderTracklist(this.playbackService.getState()))}catch{t==="drawer"?this.setTracklistDrawerOpen(this.tracklistDrawerOpen,"select-track-error"):t==="mobile"&&this.setMobileTracklistOpen(this.mobileTracklistOpen,"select-track-error")}}toggleWishlist(){const e=this.wishlistResolved,t=mr();if(!e||!t)return;const r=String(e.variant.id);if(hr(t,r)){typeof t.remove=="function"&&t.remove(r),this.renderWishlistButton();return}if(typeof t.add!="function")return;const i={variantId:r,productId:e.productId,productHandle:e.handle,productTitle:e.productTitle,variantTitle:e.variant.title,sku:e.variant.sku,priceCentsAtAdd:e.variant.price,imageUrl:e.imageUrl??"",itemType:e.comingSoon?"notify":"wishlist",source:"player"};t.add(i),this.renderWishlistButton(),this.showWishlistPopup(e.comingSoon?lo(t)?ko:bo:yo)}renderProductLink(e){const t=this.requireElements().expandedProduct,r=e?.product??null;if(!(r!=null&&r.url)){t.removeAttribute("href"),t.setAttribute("aria-disabled","true"),t.dataset.productImg="",t.dataset.productTitle="",t.dataset.mediaCount="1";return}t.setAttribute("href",vr(r.url)),t.setAttribute("aria-disabled","false"),t.dataset.productImg=r.imageUrl??r.images[0]??"",t.dataset.productTitle=r.title||e?.catalogueNumber||"",t.dataset.mediaCount=String(Math.max(1,ca(r).length+1))}renderRadioProductLink(e){const t=this.requireElements().expandedProduct;if(!(e!=null&&e.productUrl)){t.removeAttribute("href"),t.setAttribute("aria-disabled","true"),t.dataset.productImg="",t.dataset.productTitle="",t.dataset.mediaCount="1";return}t.setAttribute("href",vr(e.productUrl)),t.setAttribute("aria-disabled","false"),t.dataset.productImg=e.artworkUrl??"",t.dataset.productTitle=e.albumTitle||e.displayTitle||e.catalogueNumber||"",t.dataset.mediaCount=String(Math.max(1,fr(e).length+1))}renderArtwork(e,t,r){if(!t){if(e.querySelector("span"))return;const s=document.createElement("span");s.textContent="OD",e.replaceChildren(s);return}const a=e.querySelector("img");if(a?.src===t||a?.getAttribute("src")===t){a.alt=r;return}const i=document.createElement("img");i.src=t,i.alt=r,e.replaceChildren(i)}renderActMarkers(e,t){const r=t.map(a=>`${a.label}:${a.startTimeSeconds.toFixed(2)}:${a.position.toFixed(5)}`).join("|");r===e.dataset.actMarkersSignature&&(t.length===0||e.childElementCount>0)||(e.dataset.actMarkersSignature=r,e.hidden=t.length===0,e.replaceChildren(...t.map(a=>{const i=document.createElement("span");i.className="bottom-player__act-marker",i.style.left=`${(a.position*100).toFixed(4)}%`,i.title=`${a.label} at ${$(a.startTimeSeconds)}`,a.position<.04?i.classList.add("bottom-player__act-marker--start"):a.position>.96&&i.classList.add("bottom-player__act-marker--end");const s=document.createElement("span");s.className="bottom-player__act-marker-label",s.textContent=a.label;const o=document.createElement("span");return o.className="bottom-player__act-marker-tick",i.replaceChildren(s,o),i})))}};c(z,"pageScrollLockCount",0),c(z,"pageScrollLockSnapshot",null);let cn=z;
205function sa(n){if(n.engine.engineName!=="continuous-cue")return[];const e=n.queue.map(t=>{const r=t.track;return{act:oa(r.act),operaIndex:Nt(r,["continuousCurrentOperaIndex","operaIndex"]),operaSlug:dn(r,["continuousCurrentOperaSlug","continuousOperaSlug"]),operaTitle:dn(r,["continuousCurrentOperaTitle","continuousOperaTitle","operaTitle"]),queueItem:t,startTimeSeconds:Nt(r,["startTimeSeconds","continuousCurrentCueStart"]),track:r}});return e.some(t=>t.operaSlug)?e.sort((t,r)=>{const a=t.operaIndex??Number.MAX_SAFE_INTEGER,i=r.operaIndex??Number.MAX_SAFE_INTEGER;return a!==i?a-i:t.track.trackNumber-r.track.trackNumber}):e}function gr(n,e,t={}){const r=document.createElement("div");r.className=`bottom-player__tracklist-header bottom-player__tracklist-header--${e}`,t.operaSlug&&(r.dataset.tracklistOpera=t.operaSlug);const a=document.createElement("span");if(a.className="bottom-player__tracklist-header-label",a.textContent=t.displayLabel??(e==="opera"?n:pa(n)),e==="act"&&typeof t.durationSeconds=="number"&&t.durationSeconds>0){const i=document.createElement("span");return i.className="bottom-player__tracklist-header-duration",i.textContent=$(t.durationSeconds),r.replaceChildren(a,i),r}return r.replaceChildren(a),r}function So(n,e){var a;if(n.engine.engineName!=="continuous-cue"||e<=0)return[];const t=n.engine.continuousRingCycle===!0,r=To(n.engine.continuousActMarkers,t);return r.length>0?r:wo(((a=n.currentCatalogue)==null?void 0:a.tracks)??[],e,t)}function To(n,e){return Array.isArray(n)?n.map(t=>({label:ma(t.label||t.act,e),position:Ut(Number(t.position)),startTimeSeconds:Number(t.startTimeSeconds)})).filter(t=>t.label!==""&&Number.isFinite(t.position)&&Number.isFinite(t.startTimeSeconds)):[]}function wo(n,e,t){const r=new Set,a=[];for(const i of n){const s=oa(i.act);if(!s)continue;const o=s.toLocaleLowerCase(),l=!r.has(o);if(r.add(o),!i.startsNewAct&&!Co(i,"startsNewAct")&&!l)continue;const u=la(i,"startTimeSeconds");u!==null&&a.push({label:ma(s,t),position:Ut(u/e),startTimeSeconds:Math.max(0,u)})}return a}function oa(n){return typeof n=="string"&&n.trim()?n.trim():null}function Co(n,e){return n.metadata[e]===!0}function la(n,e){const t=n.metadata[e];if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t.trim()){const r=Number(t);return Number.isFinite(r)?r:null}return null}function Nt(n,e){for(const t of e){const r=la(n,t);if(r!==null)return r}return null}function Ct(n){if(n.engine.engineName!=="continuous-cue"||!n.currentTrack)return null;const e=n.currentTrack,t=Nt(e,["startTimeSeconds","continuousCurrentCueStart"]);if(t===null)return null;const r=Nt(e,["endTimeSeconds","continuousCurrentCueEnd"]),a=typeof e.durationSeconds=="number"&&Number.isFinite(e.durationSeconds)?e.durationSeconds:null,i=r!==null&&r>t?r-t:a!==null&&a>0?a:null;if(i===null||i<=0)return null;const s=Xe(n.currentTimeSeconds-t,i);return{durationSeconds:i,elapsedSeconds:s,endTimeSeconds:t+i,progress:Ut(s/i),startTimeSeconds:t,title:e.displayTitle||e.title||null,trackId:e.id??null}}function dn(n,e){if(!n)return null;for(const t of e){const r=n.metadata[t];if(typeof r=="string"&&r.trim())return r.trim()}return null}function vo(n){var e,t;return xo((t=(e=n.currentCatalogue)==null?void 0:e.product)==null?void 0:t.title)}function xo(n){return typeof n!="string"?!1:/^(compilation|recital|concert):/i.test(n.trim())}function Ao(n,e){var a,i;if(!n&&!e)return"No album loaded";const t=n?.catalogueNumber??null,r=[e?.album,(a=n?.tracks.find(s=>s.album))==null?void 0:a.album,(i=n?.product)==null?void 0:i.title];for(const s of r)if(typeof s=="string"&&s.trim()&&!Io(s,t))return s.trim();return"Album title unavailable"}function Io(n,e){const t=n.trim();return!t||e&&t===e.trim()?!0:/^\d{4,6}-\d{1,4}$/.test(t)}function Po(n){return n.displayTitle||n.title}function Ro(n,e){var t;return Et(e?.composer)??Et((t=n?.tracks.find(r=>Et(r.composer)))==null?void 0:t.composer)}function Eo(n,e){var t,r;return B(e?.artist)??B((t=n?.tracks.find(a=>a.artist))==null?void 0:t.artist)??B((r=n?.product)==null?void 0:r.vendor)??"Artists unavailable"}function Mo(n){return Et(n?.composer)}function Fo(n,e){const t=B(n?.composer),r=B(n?.artist);return r&&r!==t?r:B(n?.catalogueNumber)??B(n?.productHandle)??B(e)??"Opera Depot Radio"}function Oo(n){const e=n?.product??null;if(!e)return null;const t=B(e.handle)??ua(e.productUrl??e.url);if(!t)return null;const r=B(n?.catalogueNumber);return{key:`product:${t}:${r??""}`,mode:"product",handle:t,catalogueNumber:r}}function No(n){if(!n)return null;const e=B(n.productHandle)??ua(n.productUrl);if(!e)return null;const t=B(n.catalogueNumber);return{key:`radio:${e}:${t??""}`,mode:"radio",handle:e,catalogueNumber:t}}function ua(n){const e=B(n);if(!e)return null;
205try{const r=new URL(e,window.location.origin).pathname.match(/\/products\/([^/?#]+)/);return r?decodeURIComponent(r[1]):null}catch{return null}}function _o(n,e=!1){return e?{visible:!0,label:"Sample Quality",isSample:!0}:{visible:Uo(n?.resolvedFormat)}}function Lo(n){return{visible:Do(n?.format??null)}}function Uo(n){return n==="alac"||n==="flac"}function Do(n){var t;const e=((t=B(n))==null?void 0:t.toLocaleLowerCase())??"";return e.includes("lossless")||e.includes("flac")||e.includes("alac")||e.includes("aiff")||e.includes("aif")||e.includes("wav")||e.includes("pcm")}function B(n){return typeof n=="string"&&n.trim()?n.trim():null}function Et(n){const e=B(n);if(!e)return null;const t=e.toLocaleLowerCase();return t==="various"||t==="null"?null:e}function qo(n){var e,t,r,a;return Yo([((t=(e=n.currentCatalogue)==null?void 0:e.product)==null?void 0:t.imageUrl)??null,...((a=(r=n.currentCatalogue)==null?void 0:r.product)==null?void 0:a.images)??[]])}function Bo(n){return qo(n)[0]??null}function $o(n){var e;return ca(((e=n.currentCatalogue)==null?void 0:e.product)??null)}function fr(n){if(!n)return[];const e=it(n.backCoverImages??[]);return e.length>0?e:it([n.backCoverUrl])}function ca(n){if(!n)return[];const e=it(n.backCoverImages);return e.length>0?e:Ho(n.images,n.imageUrl)}function Ho(n,e){const t=pn(e)??pn(n[0]??null),r=new Set(t?[t.key]:[]);return it(n.slice(1,5),r)}function it(n,e=new Set){const t=new Set,r=[];for(const a of n){const i=pn(a);if(!(!i||e.has(i.key)||t.has(i.key))&&(t.add(i.key),r.push(i.url),r.length>=4))break}return r}function pn(n){if(!(n!=null&&n.trim()))return null;const e=n.trim(),t=e.startsWith("//")?`https:${e}`:e;if(!/^https?:\/\//i.test(t))return null;try{const r=new URL(t);return r.protocol!=="http:"&&r.protocol!=="https:"||(r.hash="",zo(r))?null:{key:Qo(r),url:r.href}}catch{return null}}function Qo(n){const e=n.pathname.toLocaleLowerCase().replace(/_(?:pico|icon|thumb|small|compact|medium|large|grande|master|\d+x\d*|\d*x\d+)(?=\.[a-z0-9]+$)/,"");return`${n.protocol.toLocaleLowerCase()}//${n.hostname.toLocaleLowerCase()}${e}`}function zo(n){const e=n.pathname.toLocaleLowerCase();return["imagenotfound","image-not-found","image_not_found","missingimage","missing-image","missing_image","noimage","no-image","no_image","placeholder","questionmark","question-mark","question_mark","fallback","default-image","default_image"].some(t=>e.includes(t))}function Wo(n){const e=new Set,t=[];for(const r of n)!r.operaSlug||e.has(r.operaSlug)||(e.add(r.operaSlug),t.push({slug:r.operaSlug,title:r.operaTitle??r.operaSlug}));return t}function yr(n,e){return n.engine.continuousRingCycle===!0?!0:new Set(e.map(r=>
205r.operaSlug).filter(Boolean)).size>1}function Ko(n){const e=new Map;for(const t of n){if(!t.act)continue;const r=t.track.durationSeconds;if(typeof r!="number"||r<=0)continue;const a=da(t);e.set(a,(e.get(a)??0)+r)}return e}function da(n){var e;return`${n.operaSlug??"__continuous"}::${((e=n.act)==null?void 0:e.toLocaleLowerCase())??""}`}function jo(n){const e=n.currentTrack;if(!e||!e.act||!e.act.trim())return null;const t=sa(n),r=t.findIndex(a=>a.track===e||a.track.id===e.id);if(r>=0){const a=t[r];return!a.act||r>0&&kr(t[r-1])===kr(a)?null:Sr(a.act,[a.operaTitle,a.operaSlug,e.album])}return e.startsNewAct?Sr(e.act,[e.album]):null}function kr(n){var e;return`${n.operaSlug??n.operaTitle??""}::${((e=n.act)==null?void 0:e.toLocaleLowerCase())??""}`}const br=new Set(["dasrheingold","diewalkure","siegfried","gotterdammerung"]);function vt(n){const t=n.split(" - ")[0].normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLocaleLowerCase().replace(/[^a-z]/g,"");return{dierheingold:"dasrheingold",therhinegold:"dasrheingold",rhinegold:"dasrheingold",diewalkuere:"diewalkure",thevalkyrie:"diewalkure",valkyrie:"diewalkure",thetwilightofthegods:"gotterdammerung",twilightofthegods:"gotterdammerung",goetterdaemmerung:"gotterdammerung"}[t]??t}function Sr(n,e){let t=n.trim();if(!t)return null;const r=e.filter(s=>typeof s=="string"&&s.trim()!==""),a=t.indexOf(":");if(a>0){const s=t.slice(0,a).trim(),o=t.slice(a+1).trim();if(s&&o){const l=vt(s);(r.some(u=>vt(u)===l)||br.has(l))&&(t=o)}}const i=vt(t);return r.some(s=>vt(s)===i)||br.has(i)?null:Go(t)}function Go(n){return n!==n.toLocaleUpperCase()?n:/^ACT[IVX]+$/.test(n)?`Act ${n.slice(3)}`:n.split(" ").map(e=>{const t=e.replace(/[^A-Za-z]/g,"");return t&&/^[IVX]+$/.test(t)?e:e.charAt(0).toLocaleUpperCase()+e.slice(1).toLocaleLowerCase()}).join(" ")}function Xt(n,e,t){const r=n.querySelector("[data-player-collapsed-marquee-text]")??n,a=`${e??""}\0${t}`,i=e?`${e} \xB7 ${t}`:t;if(r.dataset.actIntroSignature===a&&r.textContent===i)return!1;if(r.dataset.actIntroSignature=a,!e)return r.textContent=t,!0;const s=document.createElement("span");s.className="bottom-player__act-intro",s.textContent=e;const o=document.createElement("span");return o.className="bottom-player__act-intro-separator",o.setAttribute("aria-hidden","true"),o.textContent=" \xB7 ",r.replaceChildren(s,o,document.createTextNode(t)),!0}function Tr(n){const e=n.trim(),t={dasrheingold:"Das Rheingold",dierheingold:"Das Rheingold",diewalkure:"Die Walk\xFCre",diewalkuere:"Die Walk\xFCre",siegfried:"Siegfried",gotterdammerung:"G\xF6tterd\xE4mmerung",goetterdaemmerung:"G\xF6tterd\xE4mmerung"},r=e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z]/gi,"").toLocaleLowerCase();return t[r]??e}function Vo(n){const e=n.trim(),t=e.includes(":")?e.slice(e.indexOf(":")+1).trim():e,r=t.match(/^act\s+(.+)$/i);return r?`Act ${r[1].trim().toLocaleUpperCase()}`:t||e}function Yo(n){const e=new Set,t=[];for(const r of n){if(typeof r!="string"||!r.trim())continue;const a=r.trim();e.has(a)||(e.add(a),t.push(a))}return t}function pa(n){return n.trim().toLocaleUpperCase()}function ma(n,e){const t=pa(n);return!e||!t.includes(": ")?t:t.slice(t.indexOf(": ")+2).trim()||t}function Ut(n){return Number.isFinite(n)?Math.min(1,Math.max(0,n)):0}function Xe(n,e){return Number.isFinite(n)?Math.min(e,Math.max(0,n)):0}function wr(n){return n instanceof Element&&n.closest("button, input, a, select, textarea")!==null}function Zt(n){qe()&&n.currentTarget instanceof Element&&n.currentTarget.closest("[data-player-bar]")&&(n.preventDefault(),n.stopPropagation())}function qe(){return window.matchMedia("(max-width: 760px)").matches}function Xo(){return qe()||window.matchMedia("(hover: none) and (pointer: coarse)").matches}function Cr(){return window.matchMedia("(min-width: 761px) and (max-width: 1080px)").matches}function vr(n){var t;const e=n.trim();if(/^products\//.test(e))return`/${e}`;try{const r=new URL(e,window.location.origin);return`${((t=r.pathname.match(/\/products\/[^/?#]+/))==null?void 0:t[0])??r.pathname}${r.search}${r.hash}`}catch{const a=e.indexOf("/products/");return a>=0?e.slice(a):e}}function Ae(n,e){const t=n.querySelector("[data-player-collapsed-marquee-text]")??n;return t.textContent!==e?(t.textContent=e,!0):!1}function xt(n,e,t){const r=e?Math.ceil(n.clientWidth):0,a=e?Math.ceil(n.scrollWidth):0,i=[e?"enabled":"disabled",n.textContent??"",r,a].join("|");if(t.get(n)===i)return;t.set(n,i);const s=r>0?a-r:0,o=s>1,l=n.classList.contains("bottom-player__collapsed-marquee--active"),u=s+16,d=Zo(u),h=Number.parseFloat(n.style.getPropertyValue("--bottom-player-collapsed-marquee-distance")),p=Number.parseFloat(n.style.getPropertyValue("--bottom-player-collapsed-marquee-duration")),g=n.style.getPropertyValue("--bottom-player-collapsed-marquee-easing").trim();if(!(o&&l&&Number.isFinite(h)&&Math.abs(h-u)<=2&&Number.isFinite(p)&&g)){if(l!==o&&n.classList.toggle("bottom-player__collapsed-marquee--active",o),o){n.style.setProperty("--bottom-player-collapsed-marquee-distance",`${u}px`),n.style.setProperty("--bottom-player-collapsed-marquee-duration",`${d.durationSeconds.toFixed(3)}s`),n.style.setProperty("--bottom-player-collapsed-marquee-easing",d.easing);return}n.style.removeProperty("--bottom-player-collapsed-marquee-distance"),n.style.removeProperty("--bottom-player-collapsed-marquee-duration"),n.style.removeProperty("--bottom-player-collapsed-marquee-easing")}}function Zo(n){const e=n/go,t=Yt+e,r=Yt+ho+e*2,a=Yt/t*100;return{durationSeconds:r,easing:`linear(0 0%, 0 ${a.toFixed(3)}%, 1 100%)`}}function Jo(n){const e=document.createElement("span");return e.className="bottom-player__transport-icon",e.setAttribute("aria-hidden","true"),e.innerHTML=le(n),e}function le(n){return`<svg aria-hidden="true" viewBox="${n==="forward10"||n==="rewind10"?"0 0 48 48":"0 0 24 24"}" focusable="false">${{forward10:'<path d="M37.9 25.6A14 14 0 1 1 24 10.5" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" /><path d="M24 6.5L32 10.5L24 14.5Z" fill="currentColor" /><text x="24" y="30" text-anchor="middle" font-size="15" font-weight="800" fill="currentColor" font-family="Arial, Helvetica, sans-serif">10</text>',next:'<path d="M6 5v14l10-7L6 5Z" /><path d="M18 5v14" />',pause:'<path d="M8 5v14" /><path d="M16 5v14" />',play:'<path d="M8 5v14l11-7L8 5Z" />',previous:'<path d="M18 5v14L8 12l10-7Z" /><path d="M6 5v14" />',rewind10:'<path d="M10.1 25.6A14 14 0 1 0 24 10.5" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" /><path d="M24 6.5L16 10.5L24 14.5Z" fill="currentColor" /><text x="24" y="30" text-anchor="middle" font-size="15" font-weight="800" fill="currentColor" font-family="Arial, Helvetica, sans-serif">10</text>'}[n]}</svg>`}function X(n){return n==="backCover"?'<span class="bottom-player__action-icon bottom-player__action-icon--backCover" aria-hidden="true"><svg viewBox="0 0 1500 1500" focusable="false"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><rect x="205" y="160" width="1090" height="1090" rx="55" stroke-width="84"/><path d="M520 300 H980" stroke-width="54"/><path d="M360 470 H610" stroke-width="56"/><path d="M780 470 H1140" stroke-width="56"/><path d="M360 610 H610" stroke-width="56"/><path d="M780 610 H1140" stroke-width="56"/><path d="M360 750 H610" stroke-width="56"/><path d="M780 750 H1140" stroke-width="56"/><path d="M360 890 H610" stroke-width="56"/><path d="M780 890 H1140" stroke-width="56"/><path d="M470 1050 H1030" stroke-width="54"/><path d="M560 1160 H940" stroke-width="54"/></g></svg></span>':n==="nowPlaying"?'<span class="bottom-player__action-icon bottom-player__action-icon--nowPlaying bottom-player__now-playing-waveform" aria-hidden="true"><span class="bottom-player__now-playing-waveform-bar"></span><span class="bottom-player__now-playing-waveform-bar"></span><span class="bottom-player__now-playing-waveform-bar"></span><span class="bottom-player__now-playing-waveform-bar"></span></span>':`<span class="bottom-player__action-icon bottom-player__action-icon--${n}" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false">${{back:'<path d="M19 12H5" /><path d="M12 5l-7 7 7 7" />',bell:'<path d="M18.4 9.7c0-3-1.9-5.5-4.7-6.2v-.7a1.7 1.7 0 1 0-3.4 0v.7C7.5 4.2 5.6 6.7 5.6 9.7v4.2L4 15.5v1h16v-1l-1.6-1.6Z" /><path d="M9.7 20.2a2.3 2.3 0 0 0 4.6 0" />',backCover:'<defs><clipPath id="bottom-player-back-cover-clip-a"><path d="M 191.25 150 L 1308.75 150 L 1308.75 1267.5 L 191.25 1267.5 Z M 191.25 150 " clip-rule="nonzero"/></clipPath><clipPath id="bottom-player-back-cover-clip-b"><path d="M 238.5 150 L 1261.5 150 C 1287.59375 150 1308.75 171.15625 1308.75 197.25 L 1308.75 1220.25 C 1308.75 1246.34375 1287.59375 1267.5 1261.5 1267.5 L 238.5 1267.5 C 212.402344 1267.5 191.25 1246.34375 191.25 1220.25 L 191.25 197.25 C 191.25 171.15625 212.402344 150 238.5 150 Z M 238.5 150 " clip-rule="nonzero"/></clipPath></defs><g clip-path="url(#bottom-player-back-cover-clip-a)"><g clip-path="url(#bottom-player-back-cover-clip-b)"><path stroke-linecap="butt" transform="matrix(0.75, 0, 0, 0.75, 191.248289, 149.999967)" fill="none" stroke-linejoin="miter" d="M 63.002283 0.0000438933 L 1427.002313 0.0000438933 C 1461.793981 0.0000438933 1490.002314 28.208378 1490.002314 63.000045 L 1490.002314 1427.000075 C 1490.002314 1461.791743 1461.793981 1490.000077 1427.002313 1490.000077 L 63.002283 1490.000077 C 28.205407 1490.000077 0.0022815 1461.791743 0.0022815 1427.000075 L 0.0022815 63.000045 C 0.0022815 28.208378 28.205407 0.0000438933 63.002283 0.0000438933 Z M 63.002283 0.0000438933 " stroke="currentColor" stroke-width="84" stroke-opacity="1" stroke-miterlimit="4"/></g></g><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 494.851287, 325.3755)" fill="none" stroke-linejoin="miter" d="M 21.00037 20.999335 L 659.396258 20.999335 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 326.336724, 508.616072)" fill="none" stroke-linejoin="miter" d="M 20.998953 21.001489 L 444.165656 21.001489 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 326.336724, 417.11608)" fill="none" stroke-linejoin="miter" d="M 20.998953 21.001478 L 444.165656 21.001478 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 326.336724, 600.35664)" fill="none" stroke-linejoin="miter" d="M 20.998953 20.99844 L 444.165656 20.99844 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 326.336724, 692.09728)" fill="none" stroke-linejoin="miter" d="M 20.998953 21.000503 L 444.165656 21.000503 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 326.336724, 783.83792)" fill="none" stroke-linejoin="miter" d="M 20.998953 21.002566 L 444.165656 21.002566 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 326.336724, 875.578489)" fill="none" stroke-linejoin="miter" d="M 20.998953 20.999517 L 444.165656 20.999517 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 575.56304, 254.518933)" fill="none" stroke-linejoin="miter" d="M 20.999282 21.000799 L 444.165985 21.000799 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 813.538907, 508.616072)" fill="none" stroke-linejoin="miter" d="M 21.000209 21.001489 L 444.166912 21.001489 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 813.538907, 417.11608)" fill="none" stroke-linejoin="miter" d="M 21.000209 21.001478 L 444.166912 21.001478 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 813.538907, 600.34992)" fill="none" stroke-linejoin="miter" d="M 21.000209 21.002191 L 444.166912 21.002191 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 813.538907, 689.331137)" fill="none" stroke-linejoin="miter" d="M 21.000209 21.001195 L 444.166912 21.001195 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 813.538907, 783.83792)" fill="none" stroke-linejoin="miter" d="M 21.000209 21.002566 L 444.166912 21.002566 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 813.538907, 876.915912)" fill="none" stroke-linejoin="miter" d="M 21.000209 20.997535 L 444.166912 20.997535 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 575.56304, 969.994)" fill="none" stroke-linejoin="miter" d="M 20.999282 20.997585 L 444.165985 20.997585 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 558.671481, 1064.409488)" fill="none" stroke-linejoin="miter" d="M 21.000527 21.000892 L 489.2089 21.000892 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/><path stroke-linecap="round" transform="matrix(0.75, 0, 0, 0.75, 636.893114, 1158.825)" fill="none" stroke-linejoin="miter" d="M 21.001891 20.99896 L 280.616497 20.99896 " stroke="currentColor" stroke-width="42" stroke-opacity="1" stroke-miterlimit="4"/>',chevronDown:'<path d="M6 9l6 6 6-6" />',chevronUp:'<path d="M6 15l6-6 6 6" />',eye:'<path d="M2.5 12s3.5-6.5 9.5-6.5S21.5 12 21.5 12s-3.5 6.5-9.5 6.5S2.5 12 2.5 12Z" /><circle cx="12" cy="12" r="2.5" /><circle class="bottom-player__eye-pupil" cx="12" cy="12" r="0.85" />',heart:'<path d="M20.5 5.6c-1.6-1.8-4.3-1.9-6-.2L12 7.8 9.5 5.4c-1.7-1.7-4.4-1.6-6 .2-1.7 1.9-1.6 4.8.2 
2056.6L12 20l8.3-7.8c1.8-1.8 1.9-4.7.2-6.6Z" />',nowPlaying:'<path d="M6 18V9" /><path d="M12 18V6" /><path d="M18 18v-5" />',playSmall:'<path d="M8 5v14l11-7L8 5Z" />',tracklist:'<path d="M8 6h12" /><path d="M8 12h12" /><path d="M8 18h12" /><path d="M4 6h.01" /><path d="M4 12h.01" /><path d="M4 18h.01" />',x:'<path d="M6 6l12 12" /><path d="M18 6L6 18" />'}[n]}</svg></span>`}function xr(n,e=""){return`
206    <span class="${`bottom-player__quality-badge${e?` ${e}`:""}`}" data-player-quality-badge hidden>
207      <svg aria-hidden="true" viewBox="0 0 24 24" focusable="false">
208        <path d="M3 12h2l2-6 4 12 4-12 2 6h4" />
209      </svg>
210      <span data-player-quality-label>${n}</span>
211    </span>
212  `}function el(){return`
213    <div class="bottom-player__radio-identifier" data-player-radio-identifier aria-hidden="true">
214      <span class="bottom-player__radio-identifier-icon" aria-hidden="true">
215        <svg class="bottom-player__radio-identifier-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false">
216          <line x1="28" y1="8" x2="40" y2="16"/>
217          <rect x="10" y="16" width="44" height="32" rx="4"/>
218          <circle cx="24" cy="32" r="8"/>
219          <circle cx="24" cy="32" r="4"/>
220          <rect x="36" y="22" width="12" height="6" rx="1"/>
221          <line x1="36" y1="32" x2="48" y2="32"/>
222          <line x1="36" y1="36" x2="48" y2="36"/>
223          <circle cx="40" cy="42" r="3"/>
224          <circle cx="48" cy="42" r="3"/>
225        </svg>
226      </span>
227      <span class="bottom-player__radio-identifier-label">
228        <span>Opera Depot</span>
229        <span>Radio</span>
230      </span>
231    </div>
232  `}function $(n){const e=Math.max(0,Math.floor(n)),t=Math.floor(e/60),r=e%60;return`${t}:${r.toString().padStart(2,"0")}`}function tl(n){return n.length>80?`${n.slice(0,77)}...`:n}const ha="https://wnbkupdjhy.us-east-1.awsapprunner.com",nl="/api/radio/queue",st="shopify-analytics-content-category-2026-08-02-01",Ar="opera-depot-player-root",Ir="opera-depot-player-message",At="opera-depot-player:authorized-session",rl="opera-depot-player:start-radio",Pr="operaDepot.playerResumeIntent.v1",al=900*1e3,il="opera-depot-player:audio-startup-timing",sl="od_player_debug",ol="odPlayerDebug",An="OperaDepotPlayer startup timing",ga=3e4,ll=6e4,ul=1200,cl=/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/,dl=["mousemove","scroll","touchstart","keydown","pointerdown"],pl=/\b(?:adsbot|ahrefsbot|baiduspider|bingbot|bingpreview|bot|crawler|crawl|curl|discordbot|duckduckbot|facebookcatalog|facebookexternalhit|googlebot|headlesschrome|lighthouse|linkedinbot|mj12bot|mediapartners-google|node-fetch|pagespeed|phantomjs|pinterestbot|playwright|puppeteer|python-requests|selenium|semrushbot|slurp|spider|telegrambot|twitterbot|wget|whatsapp|yandexbot)\b/i,ml=new Set(["tokenendpointconfigured","tokenfetchstatus","tokenpresent","tokenrequested","purchasedaccessgranted","purchasedaccessreason","purchasedtokenconfigured","purchasedtokenmatched","purchasedtokenmismatchreason","purchasedtokenpresent","purchasedtokenreason","purchasedtokenrequested","purchasedtokenstatus","tokengranttype","warmuptokenrequested","warmuptokenstatus"]),hl=["opera-depot-player:membership-token-request-start","od-player:membership-token-request-start","od:playback-token-request-start"],gl=["opera-depot-player:membership-token-request-end","od-player:membership-token-request-end","od:playback-token-request-end"],mn="No continuous streaming version found for this recording.",fl="[OperaDepotPlayer]",yl=[{fileName:"ring-index.json",layoutKind:"ring"},{fileName:"index.json",layoutKind:"index"},{fileName:"sections-index.json",layoutKind:"sections"},{fileName:"parts-index.json",layoutKind:"parts"}],U=ni(),Be=zr(),N=qu(),Te=Ke(N.continuousMediaBaseUrl,We);let Rr=0,Er=!1,dt=!1,Ye=null;const D=oc(),P=ln.getInstance({debug:!1,engineFactory:()=>new Li({fetchImpl:(n,e)=>ht(String(n),e,kc(String(n),"audio-load")),mediaBaseUrl:Te}),engineName:"continuous-cue"}),kl=new Xs({endpoint:Qa(),fetchImpl:Ll,format:Oi(Bt())}),J=new ro({client:kl,logger:console}),ot=Ti({apiBaseUrl:$t(),debugMode:N.analyticsDebug,endpoint:N.analyticsEndpoint}),bl=new Ci({debug:ot.debugMode,endpoint:ot.endpoint}),Dt=new xi({debug:ot.debugMode,getCustomerId:Bu,transport:bl});let Ze=0,hn=null,G=null,$e=null,It=null,_t=new Map,Jt=new Map,R={automaticAttempted:!1,inFlight:null,inFlightHandle:null,scheduled:!1,userLaunchObserved:!1,warmed:null},gn=!1,lt=!1,fn=[],fa=null,Mr=0,Fr=!1,Or=0;const S=$u();S.loaded=!0,S.listenerRegistered=!1,S.version=st,S.lastFetch=null,S.lastFetchUrl=null,S.lastError=null,S.selectedFormat=null,S.selectedFolder=null,S.queueLength=null,S.detectedIndexedLayout=null,S.rootCueStatus=null,S.indexProbeSummary=null,S.cueSourceSelection=null,S.memberSessionAuth=null,S.productWarmup=null,S.radioWarmup=null,Hu(),Wu(),y("production bundle loaded",{...rt(),version:st}),Ne(!1);const ne=new cn({audioFormatSupport:U,mount:D,playbackService:P,radioController:J});
232y("bottom bar mounted",Me()),wl(),P.subscribe(n=>{var a,i,s;Dt.observeProduct(n);const e=ne.isRadioMode()&&dt,t=n.currentCatalogue!==null||n.isLoading||n.status==="loading"||n.status==="ready"||n.status==="playing"||n.status==="paused"||n.status==="error",r=e||t;Ju(n),Ne(r),y("playback state update",{catalogueNumber:((a=n.currentCatalogue)==null?void 0:a.catalogueNumber)??null,childCount:D.childElementCount,currentTrack:((i=n.currentTrack)==null?void 0:i.displayTitle)??((s=n.currentTrack)==null?void 0:s.title)??null,rootVisible:D.dataset.operaDepotPlayerVisible,status:n.status})}),J.subscribe(n=>{var e;Dt.observeRadio(n),ne.isRadioMode()&&(In(n,"radio-state"),dt&&Ne(!0)),y("radio state update",{currentRadioId:((e=n.currentItem)==null?void 0:e.radioId)??null,isPlaying:n.isPlaying,rootVisible:D.dataset.operaDepotPlayerVisible,status:n.status,upcomingCount:n.upcomingItems.length})}),window.OperaDepotPlayer={getState:()=>P.getState(),loadAuthorizedSession:qt,startRadio:Ta},y("runtime registered",Me()),y("runtime config",{analyticsDebug:ot.debugMode,analyticsEndpoint:ot.endpoint,apiBaseUrl:N.apiBaseUrl||ha,continuousMediaBaseUrl:Te,preferredFormat:N.preferredFormat??"auto",radioEndpoint:Qa(),version:st}),document.addEventListener("click",Rl,{capture:!0}),S.listenerRegistered=!0,y("launch listener registered",{capture:!0,selector:".opera-player-launch"}),Sl(),Tl(),sc(),Zl(),Pl();function Sl(){const n=e=>{var a;const t=e instanceof CustomEvent?e.detail:null,r=A(t)?t.session:null;A(t)&&ct(r)&&mt(r)?(y("session playable",{accessMode:r.accessMode??null,eventName:At,handle:m(t.handle),source:m(t.source),catalogueNumber:m((a=r.playback)==null?void 0:a.catalogueNumber)}),qt(r,{handle:m(t.handle),source:m(t.source)||At})):A(t)&&ct(r)&&r.authorized===!0&&y("session ignored because it is not playable",{accessMode:r.accessMode??null,accessReason:r.accessReason??null,eventName:At,handle:m(t.handle)})};document.addEventListener(At,n)}function Tl(){document.addEventListener(rl,()=>{Ta()})}function wl(){if(gn||lt||typeof window>"u"||typeof document>"u")return;const n=ka();if(n){ya(n);return}gn=!0,be({armed:!0,skippedReason:null,triggerSource:null});const e=(t,r,a,i)=>{const s=o=>{if(o.isTrusted===!1){be({ignoredUntrustedSource:a});return}Cl(a)};t.addEventListener(r,s,i),fn.push(()=>{t.removeEventListener(r,s,i)})};for(const t of dl)e(window,t,t,{capture:!0,passive:t!=="keydown"});e(D,"pointerenter","player-pointerenter",{passive:!0}),e(D,"mouseover","player-hover",{passive:!0}),e(D,"focusin","player-focus",{capture:!0})}function yn(){for(const n of fn)n();fn=[],gn=!1}async function Cl(n){if(lt)return;const e=ka();if(e){yn(),ya(e);return}lt=!0,yn(),be({completed:!1,skippedReason:null,started:!0,triggerSource:n});try{await El(n),be({completed:!0,error:null,triggerSource:n})}catch(t){be({completed:!1,error:Y(t),triggerSource:n})}}function ya(n){fa=n,be({armed:!1,completed:!1,skippedReason:n,started:!1})}function ka(){if(typeof navigator>"u")return null;if(navigator.webdriver===!0)return"navigator-webdriver";const n=m(navigator.userAgent);return vl(n)?"bot-like-user-agent":null}function vl(n){return pl.test(n)}function en(n,e){const t=m(n.getAttribute(e));if(t)return t;const r=n.closest(`[${e}]`);return m(r?.getAttribute(e))||null}function xl(n,e){const t=m(n.dataset.catalogueNumber)||en(n,"data-catalogue-number"),r=m(n.dataset.sku)||en(n,"data-sku")||t,a=K(n.dataset.purchasedTitle,!1)||K(en(n,"data-purchased-title"),!1);return{catalogueNumber:t||r||null,freeStreamingProduct:Ea(n),handle:e,purchasedTitle:a,sku:r||t||null}}function Al(n){const e=hn;if(!e)return null;const t=e.sku.trim().toLowerCase(),r=m(n).trim().toLowerCase();return!t||!r||t!==r?null:(hn=null,e)}function ba(){let n=null;try{n=window.sessionStorage.getItem(Pr),n!==null&&window.sessionStorage.removeItem(Pr)}catch{return null}if(!n)return null;let e;try{e=JSON.parse(n)}catch{return null}if(!A(e))return null;const t=Number(e.createdAt);if(!Number.isFinite(t)||Date.now()-t>al)return null;const r=m(e.sku),a=m(e.productHandle),i=Number(e.positionSeconds);return!r||!a||!Number.isFinite(i)?null:{sku:r,productHandle:a,trackId:m(e.trackId)||null,trackNumber:Number.isInteger(e.trackNumber)?e.trackNumber:null,positionSeconds:Math.max(0,i)}}function Sa(n){hn={sku:n.sku,trackId:n.trackId,trackNumber:n.trackNumber,positionSeconds:n.positionSeconds},y("resume intent armed",{positionSeconds:n.positionSeconds,productHandle:n.productHandle,sku:n.sku,trackNumber:n.trackNumber})}function Il(n){const e=ba();if(e){if(e.productHandle!==n){y("resume intent ignored because the launched product differs",{intentHandle:e.productHandle,launchedHandle:n});return}Sa(e)}}function Pl(){const n=()=>{const e=ba();if(!e)return;const t=document.querySelector(`.opera-player-launch[data-product-handle="${CSS.escape(e.productHandle)}"]`);if(!t){y("resume intent ignored because no launch button matches",{productHandle:e.productHandle});return}Sa(e),t.click()};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>n(),{once:!0}):n()}async function Rl(n){var s;const e=n.target instanceof Element?n.target:null,t=e?.closest(".opera-player-launch")??null;if(!t)return;n.preventDefault(),n.stopImmediatePropagation();const r={currentOrigin:typeof window<"u"?window.location.origin:null,handle:t.dataset.productHandle??null,targetTagName:e?.tagName??null,timestamp:new Date().toISOString()};if(S.lastClick=r,S.lastError=null,Ku({handle:t.dataset.productHandle??null,source:"direct-click"}),E("player-launch-click-received",r),y("launch click captured",r),t.dataset.operaPlayerState==="loading"){y("launch click ignored because button is already loading",{buttonState:t.dataset.operaPlayerState??null});return}const a=m(t.dataset.productHandle);if(!a){Qe(t,"error","Streaming product handle is missing."),Mt("Streaming product handle is missing.","error");return}Il(a);const i=xl(t,a);R.userLaunchObserved=!0,Qe(t,"loading","Checking streaming availability...");try{const o=i.purchasedTitle?null:await tu(a),l=o?.session??await Ca(i);if(!mt(l)){const u=Ka(l);Qe(t,"unavailable",u),Mt(u,"error");return}y("session playable",{accessMode:l.accessMode??null,eventName:"direct-click",handle:a,catalogueNumber:m((s=l.playback)==null?void 0:s.catalogueNumber)}),await qt(l,{button:t,catalogueSession:o?.catalogueSession??null,handle:a,source:o?"product-warmup":"direct-click",warmupReused:o!==null})}catch(o){const l=En(o);S.lastError=l,y("launch session failed",{error:l,handle:a,request:rt()});const u=o instanceof Error&&o.message?o.message:"Could not reach the streaming service. Please try again.";Qe(t,"error",u),Mt(u,"error")}}async function Ta(){lt||(lt=!0,yn(),be({completed:!1,skippedReason:null,started:!0,triggerSource:"explicit-radio-start"})),R.userLaunchObserved=!0,Ze+=1,ne.setSampleNotice(!1),Dt.prepareRadio(),P.pause(),ne.setRadioMode("header-radio-launch"),Ne(!!dt),y("radio launch requested",{root:Me(),status:J.getState().status}),await J.initialize(),be({completed:!0,error:null,triggerSource:"explicit-radio-start"}),await In(J.getState(),"header-radio-launch"),await J.play()}async function El(n){ke("radioInitStarted",{reason:n,status:J.getState().status}),await J.initialize({replenish:!1}),await In(J.getState(),n)}async function In(n,e){if(dt)return!0;
232if(Ye)return Ye;if(!ne.isRadioMode()||!wa(n))return!1;Ol(n,e);const t=n.currentItem;return t?(Ye=Ml(t,e).finally(()=>{Ye=null}),Ye):!1}async function Ml(n,e){var r;await Nl(n,e);const t=J.getState();return!ne.isRadioMode()||!wa(t)?!1:(dt=!0,Ne(!0),ke("radioPlayerRevealed",{currentRadioId:((r=t.currentItem)==null?void 0:r.radioId)??null,reason:e,status:t.status,upcomingCount:t.upcomingItems.length}),!0)}function wa(n){const e=n.currentItem;return e?n.isInitialized&&ye(e.displayTitle)&&ye(e.artworkUrl)&&Fl(e):!1}function Fl(n){return ye(n.albumTitle)&&(ye(n.artist)||ye(n.composer))}function ye(n){return typeof n=="string"&&n.trim().length>0}function Ol(n,e){Er||(Er=!0,ke("radioFirstItemReady",{...Ul(n),reason:e}))}async function Nl(n,e){const t=n.artworkUrl;if(!t)return;ke("radioArtworkPreloadStarted",{artworkUrl:t,radioId:n.radioId,reason:e});const r=j(),a=await _l(t,ul);ke("radioArtworkPreloadComplete",{artworkUrl:t,durationMs:Ee(j()-r),radioId:n.radioId,reason:e,status:a})}function _l(n,e){return new Promise(t=>{if(typeof Image>"u"){t("error");return}const r=new Image;let a=!1,i=null;const s=o=>{a||(a=!0,r.onload=null,r.onerror=null,i!==null&&window.clearTimeout(i),t(o))};r.onload=()=>s("loaded"),r.onerror=()=>s("error"),i=window.setTimeout(()=>s("timeout"),e),r.src=n,r.complete&&r.naturalWidth>0&&s("cached")})}async function Ll(n,e){const t=Rr+1;Rr=t,ke("radioQueueRequested",{endpoint:String(n),method:e?.method??"GET",requestId:t});try{const r=await ht(String(n),e,"radio-fetch");return ke("radioQueueReceived",{ok:r.ok,requestId:t,status:r.status}),r}catch(r){throw ke("radioQueueReceived",{error:r,ok:!1,requestId:t,status:null}),r}}function Ul(n){const e=n.currentItem;return{albumTitle:e?.albumTitle??null,artistPresent:ye(e?.artist),artworkUrl:e?.artworkUrl??null,composerPresent:ye(e?.composer),currentRadioId:e?.radioId??null,displayTitle:e?.displayTitle??null,format:e?.format??null,hasAudioUrl:ye(e?.audioUrl),upcomingCount:n.upcomingItems.length}}function ke(n,e){pt()&&y(n,e)}async function qt(n,e={}){var o,l,u,d,h,p,g,k,T,w;if(!mt(n))throw new Error(Ka(n));const t=Ze+1;Ze=t;const r=e.button??null;Dt.prepareProduct(n.accessMode==="preview"?"sample":"full",Dc(n.contentCategory)),ne.setSampleNotice(!1),ne.setProductMode("authorized-session"),J.deactivate(),P.restoreMediaSessionHandlers("product-mode"),Ne(!0),y("bottom bar visible",Me()),r&&Qe(r,"loading","Loading player..."),y("catalogue resolve started",{handle:e.handle??null,mediaBaseUrl:Te,source:e.source??"direct-click",catalogueNumber:m((o=n.playback)==null?void 0:o.catalogueNumber)}),y("session payload",n),y("session continuous object",((l=n.playback)==null?void 0:l.continuous)??null);let a;if(e.catalogueSession)a=e.catalogueSession,L({warmupDiscardReason:null,warmupReused:e.warmupReused===!0,warmupSkippedReason:null}),y("using warmed catalogue session",{catalogueNumber:a.catalogueNumber,resolvedFormat:a.resolvedFormat,source:e.source??"direct-click",trackCount:a.trackCount});else try{a=await Oa(n)}catch(f){throw Ya(f)||H("cue-parse",null,f,{catalogueNumber:m((u=n.playback)==null?void 0:u.catalogueNumber),continuous:((d=n.playback)==null?void 0:d.continuous)??null}),f}if(E("playback-session-built",{catalogueNumber:a.catalogueNumber,resolvedFormat:a.resolvedFormat,trackCount:a.trackCount,warmupReused:e.warmupReused===!0}),y("resolved catalogue",{availableFormats:a.availableFormats,catalogueNumber:a.catalogueNumber,resolvedFormat:a.resolvedFormat,sourceFolder:a.sourceFolder,trackCount:a.trackCount}),t!==Ze)return;ne.setSampleNotice(n.accessMode==="preview"),y("playback load started",{autoPlay:!1,catalogueNumber:a.catalogueNumber,firstCueUrl:m((h=a.tracks[0])==null?void 0:h.metadata.continuousCueUrl),firstAudioUrl:((p=a.tracks[0])==null?void 0:p.streamSource.url)??null,trackCount:a.trackCount}),E("engine-load-start",{catalogueNumber:a.catalogueNumber,resolvedFormat:a.resolvedFormat,trackCount:a.trackCount});const i=Al(a.catalogueNumber);try{await P.loadSession(a,{autoPlay:!1,...i?{...i.trackId?{startTrackId:i.trackId}:{},...typeof i.trackNumber=="number"?{startTrackNumber:i.trackNumber}:{},startPositionSeconds:i.positionSeconds}:{}})}catch(f){ne.setSampleNotice(!1),E("engine-load-end",{error:Y(f),playbackQueueLength:P.getState().queue.length});const C=m((g=a.tracks[0])==null?void 0:g.metadata.continuousCueUrl);throw H("bottom-bar-render",C||null,f,{playbackQueueLength:P.getState().queue.length,root:Me()}),y("playback load failed",{error:Y(f),playbackQueueLength:P.getState().queue.length,root:Me()}),f}if(E("engine-load-end",{playbackQueueLength:P.getState().queue.length,state:P.getState().status}),y("playback load succeeded",{playbackQueueLength:P.getState().queue.length,root:Me(),state:P.getState().status}),y("playback queue length",{queueLength:P.getState().queue.length}),t!==Ze)return;if(N.autoPlay!==!1||i)try{await P.play(),y("playback start succeeded",{playbackQueueLength:P.getState().queue.length,state:P.getState().status})}catch(f){H("audio-load",((k=a.tracks[0])==null?void 0:k.streamSource.url)??null,f,{playbackQueueLength:P.getState().queue.length,state:P.getState().status}),y("playback start failed",{error:Y(f),playbackQueueLength:P.getState().queue.length,state:P.getState().status})}const s=n.accessMode==="preview"?`Loaded ${((T=a.product)==null?void 0:T.title)||a.catalogueNumber} preview.`:`Loaded ${((w=a.product)==null?void 0:w.title)||a.catalogueNumber}.`;r&&Qe(r,"authorized",s),Mt(s,"info")}async function Ca(n){var d;const e=typeof n=="string"?{catalogueNumber:null,freeStreamingProduct:!1,handle:n,purchasedTitle:!1,sku:null}:n,t=e.handle,r=Pn(),a={handle:t,preferredFormat:N.preferredFormat??"auto"},i=await Dl(e),s={"Content-Type":"application/json"};i.token&&(s.Authorization=`Bearer ${i.token}`);const o={headerKeys:Object.keys(s),method:"POST",...pt()?i.diagnostics:{}};E("player-session-request-start",{handle:t,memberEligible:i.diagnostics.memberEligible,preferredFormat:a.preferredFormat,tokenPresent:!!i.token,url:r}),y("session request started",{...rt(r),handle:t,preferredFormat:a.preferredFormat}),y("session fetch options",o),S.lastRequestUrl=r,S.lastError=null;let l;try{l=await ht(r,{method:"POST",headers:s,body:JSON.stringify(a)},"session-fetch")}catch(h){const p=En(h);throw S.lastError=p,y("session fetch failed",{error:p,...rt(r)}),h}y("session response received",{contentType:l.headers.get("content-type"),ok:l.ok,status:l.status,statusText:l.statusText,...rt(r)});let u;
232try{u=await cu(l)}catch(h){throw H("session-parse",r,h,{contentType:l.headers.get("content-type"),status:l.status}),ie("session-parse",r,h)}return ct(u)?(Vl(u),y("session continuous object",((d=u.playback)==null?void 0:d.continuous)??null),u):{authorized:!1,error:"Streaming service returned an invalid session response."}}async function Dl(n){if(n.purchasedTitle){const t=await Ql(n,{});if(t.token)return t}return await ql(n)}async function ql(n){const e=Aa(),t=Ia(),r=Pa(t),a=t!=="",i=e.loggedIn&&e.memberStreamingEligible,s=n.freeStreamingProduct===!0&&!n.purchasedTitle,o={freeStreamingProduct:n.freeStreamingProduct,loggedIn:e.loggedIn,memberEligible:i,membershipStatus:e.membershipStatus,tokenEndpointConfigured:a,tokenProductHandle:n.handle,tokenFetchStatus:"not-requested",tokenPresent:!1,tokenRequested:!0};if(!a)return ae("playback token unavailable",{...o,tokenFetchStatus:"endpoint-missing"}),V({...o,tokenFetchStatus:"endpoint-missing"});if(!r)return ae("playback token unavailable",{...o,tokenFetchStatus:"endpoint-invalid"}),V({...o,tokenFetchStatus:"endpoint-invalid"});if(s)return Nr(r,o,n);const l=jl(r);return l?V({...o,tokenFetchStatus:"cached",tokenPresent:!0},l):(It||(It=Nr(r,o).finally(()=>{It=null})),It)}function Bl(n,e){return[n,e.handle,e.catalogueNumber??"",e.sku??""].join("|")}function $l(n,e){const t=_t.get(n);return!t||t.endpoint!==e||t.expiresAtMs<=Date.now()+ga?(t&&_t.delete(n),null):t.token}function Hl(n,e,t){if(!t.token||t.expiresAtMs===null){_t.delete(n);return}_t.set(n,{endpoint:e,expiresAtMs:t.expiresAtMs,token:t.token})}async function Ql(n,e){const t=Xl(),r=Pa(t),a=t!=="",i={...e,purchasedTokenConfigured:a,purchasedTokenPresent:!1,purchasedTokenReason:null,purchasedTokenRequested:!1,purchasedTokenStatus:"not-requested"};if(!a)return V({...i,purchasedTokenReason:"endpoint-missing",purchasedTokenStatus:"endpoint-missing"});if(!r)return V({...i,purchasedTokenReason:"endpoint-invalid",purchasedTokenStatus:"endpoint-invalid"});const s=Bl(r,n),o=$l(s,r);if(o)return V({...i,purchasedTokenPresent:!0,purchasedTokenReason:"cached-token",purchasedTokenStatus:"cached"},o);const l=Jt.get(s);if(l)return l;const u=zl(r,s,n,i).finally(()=>{Jt.delete(s)});return Jt.set(s,u),u}async function zl(n,e,t,r){const a={...r,purchasedTokenRequested:!0,purchasedTokenStatus:"requesting"};V(a),E("membership-token-request-start",a),ae("purchased playback token request started",a);try{const i=new URL(n);i.searchParams.set("handle",t.handle),t.catalogueNumber&&i.searchParams.set("catalogueNumber",t.catalogueNumber),t.sku&&i.searchParams.set("sku",t.sku);const s=await fetch(i.href,{credentials:"same-origin",headers:{Accept:"application/json"},method:"GET"}),o=await va(s),l=xa(o),u=l.token!==null&&s.ok,d=Wl(o)||(s.ok?"invalid-response":`http-${s.status}`),h={...r,httpStatus:s.status,purchasedTokenPresent:u,purchasedTokenReason:u?"token-issued":d,purchasedTokenRequested:!0,purchasedTokenStatus:u?"ok":s.ok?"invalid-response":"http-error"};return u?Hl(e,n,l):ae("purchased playback token request did not return a usable token",{...h,ok:s.ok}),E("membership-token-request-end",h,{overwrite:!0}),V(h,l.token)}catch(i){const s={...r,error:Y(i),purchasedTokenPresent:!1,purchasedTokenReason:"fetch-error",purchasedTokenRequested:!0,purchasedTokenStatus:"fetch-error"};return E("membership-token-request-end",s,{overwrite:!0}),ae("purchased playback token request failed",s),V(s)}}async function Nr(n,e,t){const r={...e,tokenFetchStatus:"requesting",tokenRequested:!0};V(r),E("membership-token-request-start",r),ae("playback token request started",r);try{const a=new URL(n);t&&(a.searchParams.set("handle",t.handle),t.freeStreamingProduct&&a.searchParams.set("freeStreamingProduct","true"));const i=await fetch(a.href,{credentials:"same-origin",headers:{Accept:"application/json"},method:"GET"}),s=await va(i),o=xa(s),l=o.token!==null&&i.ok,u={...e,httpStatus:i.status,tokenFetchStatus:l?"ok":i.ok?"invalid-response":"http-error",tokenPresent:l,tokenRequested:!0};return l?Gl(n,o):ae("playback token request did not return a usable token",{...u,ok:i.ok}),E("membership-token-request-end",u,{overwrite:!0}),V(u,o.token)}catch(a){const i={...e,error:Y(a),tokenFetchStatus:"fetch-error",tokenPresent:!1,tokenRequested:!0};return E("membership-token-request-end",i,{overwrite:!0}),ae("playback token request failed",i),V(i)}}async function va(n){return(n.headers.get("content-type")??"").includes("application/json")?n.json():n.text()}function xa(n){if(typeof n=="string")return{expiresAtMs:null,token:Pt(n)};if(!A(n))return{expiresAtMs:null,token:null};const e=Pt(n.token)||Pt(n.playbackToken)||Pt(n.jwt);return{expiresAtMs:Kl(n),token:e}}function Wl(n){if(A(n)){const e=m(n.purchasedTokenReason)||m(n.reason)||m(n.error)||m(n.message);return e?e.slice(0,180):null}return typeof n=="string"&&n.trim()?"non-json-response":null}function Pt(n){const e=m(n);return cl.test(e)?e:null}function Kl(n){const e=m(n.expiresAt)||m(n.expires_at)||m(n.expiration);if(e){const r=Date.parse(e);if(Number.isFinite(r))return r}const t=Re(n.expiresInSeconds)??Re(n.expires_in_seconds)??Re(n.expiresIn)??Re(n.expires_in);return t!==null&&t>0?Date.now()+t*1e3:null}function jl(n){return!$e||$e.endpoint!==n||$e.expiresAtMs<=Date.now()+ga?null:$e.token}function Gl(n,e){if(!e.token||e.expiresAtMs===null){$e=null;return}$e={endpoint:n,expiresAtMs:e.expiresAtMs,token:e.token}}function V(n,e=null){return S.memberSessionAuth=n,{diagnostics:n,token:e}}function Vl(n){const e=S.memberSessionAuth??{},t=A(n.diagnostics)?n.diagnostics:{},r=n.accessMode==="full"&&n.accessReason==="purchased-title";S.memberSessionAuth={...e,purchasedAccessGranted:r,purchasedAccessReason:m(n.accessReason)||null,purchasedTokenMatched:K(t.purchasedTokenMatched,!1),purchasedTokenMismatchReason:m(t.purchasedTokenMismatchReason)||null,tokenGrantType:m(t.tokenGrantType)||null}}function Aa(){const n=typeof window<"u"?window.ODMembershipAccess:void 0;let e=null;try{e=typeof n?.getState=="function"?n.getState():n?.state}catch{e=n?.state}const t=A(e)?e:{},r=A(t.customer)?t.customer:{},a=(m(t.membershipStatus)||m(t.membership_status)||m(t.status)||m(r.membershipStatus)||m(r.membership_status)).toLowerCase().trim(),i=K(t.loggedIn,K(t.logged_in,K(r.loggedIn,K(r.logged_in,!1)))),s=K(t.memberStreamingEligible,K(t.member_streaming_eligible,a==="active"||a==="trialing"));return{loggedIn:i,memberStreamingEligible:s,membershipStatus:a||null}}function Ia(){var t;const n=m(N.playbackTokenEndpoint);if(n)return n;const e=typeof window<"u"&&A((t=window.ODMembershipAccess)==null?void 0:t.config)?window.ODMembershipAccess.config:null;return m(e?.playbackTokenEndpoint)}function Yl(n){return n&&n.endsWith("/playback-token")?`${n.slice(0,-15)}/purchased-playback-token`:""}function Xl(){var r;const n=m(N.purchasedPlaybackTokenEndpoint);if(n)return n;const e=typeof window<"u"&&A((r=window.ODMembershipAccess)==null?void 0:r.config)?window.ODMembershipAccess.config:null;return m(e?.purchasedPlaybackTokenEndpoint)||Yl(Ia())}function Pa(n){if(!n||typeof window>"u")return null;try{const e=new URL(n,window.location.origin);return e.origin!==window.location.origin?null:e.href}catch{return null}}function K(n,e){if(typeof n=="boolean")return n;if(typeof n=="string"){const t=n.trim().toLowerCase();if(t==="true"||t==="1"||t==="yes")return!0;
232if(t==="false"||t==="0"||t==="no")return!1}return e}function ae(n,e){pt()&&y(n,e)}function Zl(){if(typeof window>"u"||typeof document>"u")return;const n=()=>{if(R.automaticAttempted)return;const e=Ra();if(R.automaticAttempted=!0,!e.eligible){L({warmupEligible:!1,warmupScheduled:!1,warmupSkippedReason:e.reason});return}R.scheduled=!0,L({handle:e.handle,warmupEligible:!0,warmupScheduled:!0,warmupSkippedReason:null}),Jl(()=>{eu(e.handle)})};if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",n,{once:!0});return}n()}function Jl(n){if(typeof window.requestIdleCallback=="function"){window.requestIdleCallback(()=>{n()},{timeout:3e3});return}window.setTimeout(n,750)}async function eu(n){if(R.inFlight||R.warmed)return;if(R.userLaunchObserved){L({handle:n,warmupCompleted:!1,warmupSkippedReason:"user-launch-observed"});return}const e=Ra();if(!e.eligible||e.handle!==n){const a=e.eligible?"handle-mismatch":e.reason;L({handle:n,warmupEligible:!1,warmupScheduled:R.scheduled,warmupSkippedReason:a});return}const t=j(),r=(async()=>
232{try{L({handle:n,warmupCompleted:!1,warmupElapsedMs:0,warmupStarted:!0,warmupSkippedReason:null}),L({handle:n,warmupSessionStart:!0});const a=await Ca(n),i=S.memberSessionAuth??{};L({handle:n,warmupSessionEnd:!0,warmupTokenRequested:K(i.tokenRequested,!1),warmupTokenStatus:m(i.tokenFetchStatus)||"unknown"});const s=ou(a);if(s){R.warmed=null,L({accessMode:a.accessMode??null,accessReason:a.accessReason??null,handle:n,warmupCompleted:!1,warmupElapsedMs:Ee(j()-t),warmupSkippedReason:s});return}const o=uu(a);if(o===null){R.warmed=null,L({handle:n,warmupCompleted:!1,warmupElapsedMs:Ee(j()-t),warmupSkippedReason:"session-expiry-missing"});return}const l=await Oa(a),u={accessMode:a.accessMode??null,accessReason:a.accessReason??null,browserPreferredFormat:Fa(),catalogueSession:l,completedAt:Date.now(),expiresAtMs:o,handle:n,preferredFormat:Ma(),resolvedFormat:l.resolvedFormat,session:a};R.warmed=u,L({accessMode:u.accessMode,accessReason:u.accessReason,handle:n,resolvedFormat:u.resolvedFormat,trackCount:l.trackCount,warmupCompleted:!0,warmupCuesReady:!0,warmupElapsedMs:Ee(j()-t),warmupSkippedReason:null})}catch(a){R.warmed=null,L({error:Y(a),handle:n,warmupCompleted:!1,warmupElapsedMs:Ee(j()-t),warmupSkippedReason:"error"})}finally{R.inFlight=null,R.inFlightHandle=null}})();R.inFlight=r,R.inFlightHandle=n,await r}async function tu(n){R.inFlight&&R.inFlightHandle===n&&(L({handle:n,warmupDiscardReason:null,warmupReused:!1,warmupSkippedReason:"awaiting-in-flight"}),await R.inFlight.catch(()=>{}));const e=R.warmed;if(!e)return L({handle:n,warmupDiscardReason:"missing",warmupReused:!1,warmupSkippedReason:null}),null;const t=lu(e,n);return t?(R.warmed=null,L({handle:n,warmupDiscardReason:t,warmupReused:!1,warmupSkippedReason:null}),null):(L({handle:n,resolvedFormat:e.resolvedFormat,warmupDiscardReason:null,warmupReused:!0,warmupSkippedReason:null}),e)}function Ra(){if(typeof document>"u")return{eligible:!1,handle:null,reason:"document-unavailable"};if(document.visibilityState!=="visible")return{eligible:!1,handle:null,reason:"page-hidden"};const n=Aa();if(!n.loggedIn)return{eligible:!1,handle:null,reason:"logged-out"};if(!n.memberStreamingEligible)return{eligible:!1,handle:null,reason:"member-not-eligible"};if(!iu())return{eligible:!1,handle:null,reason:"not-product-page"};const e=nu();if(e.length!==1)return{eligible:!1,handle:null,reason:`launch-button-count-${e.length}`};const t=e[0],r=m(t.dataset.productHandle);if(!r)return{eligible:!1,handle:null,reason:"launch-handle-missing"};const a=m(N.productHandle);return a&&a!==r?{eligible:!1,handle:r,reason:"configured-handle-mismatch"}:Ea(t)?{eligible:!1,handle:r,reason:"free-streaming-product"}:{eligible:!0,handle:r}}function nu(){return Array.from(document.querySelectorAll(".opera-player-launch[data-product-handle]")).filter(ru)}function ru(n){if(n instanceof HTMLButtonElement&&n.disabled||n.getAttribute("aria-disabled")==="true"||n.closest("[data-free-streaming-locked-trigger]")||n.closest("[data-locked-play-trigger]")||n.getClientRects().length===0)return!1;const e=window.getComputedStyle(n);return e.display!=="none"&&e.visibility!=="hidden"}function Ea(n){return!!(K(N.freeStreamingProduct,!1)||Cn(N.productCollectionHandles).some(au)||K(n.dataset.freeStreamingProduct,!1)||n.classList.contains("free-streaming-play-button")||n.closest(".free-streaming-card, [data-free-streaming-section], [data-free-streaming-collection-page]"))}function au(n){return n.trim().toLowerCase()==="free-streaming-titles"}function iu(){var r;const n=m(N.pageType);if(n)return n.toLowerCase()==="product";const e=su();if(e)return e.toLowerCase()==="product";if((r=document.body)!=null&&r.classList.contains("template-product"))return!0;const t=document.querySelector('meta[property="og:type"], meta[name="og:type"]');return m(t?.content).toLowerCase()==="product"?!0:/\/products\/[^/]+/i.test(window.location.pathname)}function su(){if(typeof window>"u")return null;const n=nt(window.ShopifyAnalytics),e=nt(n.meta),t=nt(e.page);return m(t.pageType)||m(e.pageType)||null}function ou(n){return mt(n)?n.accessReason==="free-streaming"?"free-streaming-session":n.authorized!==!0||n.accessMode!=="full"||n.accessReason!=="streaming-eligible"?"incompatible-access":null:"session-not-playable"}function lu(n,e){return n.handle!==e?"handle-mismatch":n.preferredFormat!==Ma()?"preferred-format-mismatch":n.browserPreferredFormat!==Fa()?"browser-format-mismatch":n.resolvedFormat!==n.catalogueSession.resolvedFormat?"resolved-format-mismatch":Date.now()>=n.expiresAtMs-ll?"expired":n.accessMode!=="full"||n.accessReason!=="streaming-eligible"||!ja(n.session)?"incompatible-access":null}function uu(n){const e=m(n.expiresAt);if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?t:null}function Ma(){return N.preferredFormat??"auto"}
232function Fa(){return He(Bt())}function L(n){const e={...S.productWarmup??{},...n};S.productWarmup=e,ae("product warm-up",e)}function be(n){const e={...S.radioWarmup??{},suppressedReason:fa,updatedAt:new Date().toISOString(),...n};S.radioWarmup=e,ae("radio warm-up",e)}async function cu(n){return(n.headers.get("content-type")??"").includes("application/json")?n.json():{authorized:!1,error:await n.text()}}async function Oa(n){var g,k,T,w;const e=m((g=n.playback)==null?void 0:g.catalogueNumber);if(!e)throw new Error("Streaming session is missing a catalogue number.");const t=await du(n,e),r=new Date().toISOString(),a=Se(t.cueDocument.artworkUrl,t.mediaSource)??((k=t.mediaSource)==null?void 0:k.coverUrl)??null,i=t.cueDocument.albumTitle??m((T=n.product)==null?void 0:T.title)??e,s=Du(n.product,{albumTitle:i,artworkUrl:a,catalogueNumber:e,cueDocument:t.cueDocument}),o=((w=t.ringIndex)==null?void 0:w.operas)??[],l=t.entries.length;Fe({cueSourceSelection:t.cueSourceSelection,selectedFormat:t.selectedFormat,selectedFolder:t.folderName,queueLength:l,detectedIndexedLayout:t.indexLayoutKind!==null,rootCueStatus:t.rootCueHttpStatus,indexProbeSummary:t.indexProbeStatuses});const u=He(t.selectedFormat),d=He(t.format),h=u!==d?{from:u,reason:"Browser-preferred lossless continuous format is unavailable for this catalogue; using AAC/M4A fallback.",to:d}:null,p=t.entries.map(f=>{const C=f.cueTrack,I=C.sourceFilename||C.originalFilename||f.cueDocument.audioFile,v=Se(C.artworkUrl,t.mediaSource),_=Se(gc(f.opera,f.cueUrl),t.mediaSource),q=v??_??a,Q=f.opera?`${t.folderName}/${f.opera.slug}`:t.folderName,_e=f.opera?{continuousCurrentOperaIndex:f.opera.index,continuousCurrentOperaSlug:f.opera.slug,continuousCurrentOperaTitle:f.opera.title,continuousNextOperaSlug:f.opera.nextOperaSlug,continuousPreviousOperaSlug:f.opera.previousOperaSlug,continuousSelectedOperaAudioFileRaw:f.audioFileRaw,continuousSelectedOperaAudioPathResolved:f.audioPathResolved,continuousSelectedOperaCueFileRaw:f.cueFileRaw,continuousSelectedOperaCuePathResolved:f.cuePathResolved,continuousTrackNumberOffset:f.trackNumberOffset}:{continuousCurrentOperaIndex:null,continuousCurrentOperaSlug:null,continuousCurrentOperaTitle:null,continuousNextOperaSlug:null,continuousPreviousOperaSlug:null,continuousSelectedOperaAudioFileRaw:null,continuousSelectedOperaAudioPathResolved:null,continuousSelectedOperaCueFileRaw:null,continuousSelectedOperaCuePathResolved:null,continuousTrackNumberOffset:0},F={...C,..._e,albumTitle:i,artworkUrl:q,catalogueNumber:e,continuousAudioUrl:f.audioUrl,continuousAvailableFormats:t.availableFormats,continuousCatalogueNumber:e,continuousCueDocument:f.cueDocument,continuousCueSourceSelection:t.cueSourceSelection,continuousCueUrl:f.cueUrl,continuousFallbackReason:t.selectedFormat===t.format?null:"Browser-preferred lossless continuous format is unavailable for this catalogue; using AAC/M4A fallback.",continuousCurrentCueArtworkUrl:v,continuousFormat:t.format,continuousHttpStatus:f.cueHttpStatus,continuousIndexedLayoutDetected:t.indexLayoutKind!==null,continuousIndexFileName:t.indexFileName,continuousIndexLayoutKind:t.indexLayoutKind,continuousResolvedArtworkUrl:q,continuousResolvedAudioFile:f.cueDocument.audioFile,continuousResolvedAudioUrl:f.audioUrl,continuousResolvedCueUrl:f.cueUrl,continuousResolvedFolder:t.folderName,continuousResolvedFormat:t.format,continuousDetectedAsRingFromIndex:t.detectedAsRing,continuousRootCueHttpStatus:t.rootCueHttpStatus,continuousDetectedAsRing:t.detectedAsRing,continuousRingCycle:t.detectedAsRing,continuousRingIndexHttpStatus:t.ringIndexHttpStatus,continuousRingIndexLoaded:t.detectedAsRing,continuousRingIndexUrl:t.ringIndexUrl,continuousRingOperaCount:o.length||null,continuousRingOperas:o,continuousRootCueUrl:t.rootCueUrl,continuousSelectedFolder:t.folderName,continuousSelectedFormat:t.selectedFormat,continuousTopLevelArtworkUrl:a,imageUrl:q,selectedArtworkUrl:q,startTimeSeconds:C.startTimeSeconds};return{act:C.act,album:C.album??i,artist:C.artist??t.cueDocument.artist,composer:C.composer??t.cueDocument.composer,displayTitle:C.displayTitle,durationSeconds:C.durationSeconds,id:C.id,metadata:F,source:{filename:I,folder:Q,key:`${Q}/${f.cueDocument.audioFile}#${C.id}`},sourceFilename:I,sourceFolder:Q,startsNewAct:C.startsNewAct,streamSource:{generatedAt:r,expires
232InSeconds:86400,metadata:F,url:f.audioUrl},title:C.title,trackNumber:C.trackNumber}});return{availableFormats:Qr(t.availableFormats.map(He)),catalogueNumber:e,formatAvailability:Uu(t.availableFormats,e,l),formatFallback:h,formatWarnings:[],generatedAt:r,playableFormats:Qr(t.availableFormats.filter(Ha).map(He)),product:s,requestedFormat:u,resolvedFormat:d,sourceFolder:t.folderName,streamUrlExpiresInSeconds:86400,trackCount:l,tracks:p}}async function du(n,e){const t=La(n);if(t.length===0)throw new Error(mn);const r=Lu(t);if(!r)throw y("selected production format",{advertisedFormats:t,browser:Lr(),catalogueNumber:e,fallbackFormat:"continuous-aac",selectedFormat:null}),new Error(mn);const a=t,{format:i,selectedFormat:s}=r,o=Ua(n,i),l=Da(n);l&&xu(o,{catalogueNumber:e,format:i,mediaProtectionMode:kn(n)});const u=Mu(Rt(e,Te,i),o),d=Ou(u.folderName,o);if(l){const v=[["audio",u.audioUrl],["cue",u.cueUrl],...d.map(_=>[`index:${_.fileName}`,_.url])];(o!=null&&o.coverUrl||o!=null&&o.coverFile)&&v.push(["cover",o.coverUrl]),qa(v,{catalogueNumber:e,format:i,mediaProtectionMode:kn(n)})}const h=d.find(v=>v.fileName==="ring-index.json")??d[0],p=h?.url??null,g=d.map(v=>({fileName:v.fileName,layoutKind:v.layoutKind,url:v.url}));y("selected production format",{advertisedFormats:t,availableFormats:a,audioUrl:u.audioUrl,browser:Lr(),catalogueNumber:e,cueUrl:u.cueUrl,fallbackReason:r.fallbackReason,format:i,indexUrls:g,productionSelectionReason:r.reason,productionSelectedFormat:i,ringIndexUrl:p,rootCueUrl:u.cueUrl,selectedFormat:s}),y("cue URL",u.cueUrl),y("audio URL",u.audioUrl),y("production format decision",{format:i,reason:r.reason,selectedFormat:s}),Fe({selectedFormat:s,selectedFolder:u.folderName,cueSourceSelection:null,queueLength:null,detectedIndexedLayout:null,rootCueStatus:null,indexProbeSummary:[]});let k=null;const T=(v,_,q)=>
232(k||(k=mu({availableFormats:a,catalogueNumber:e,fallbackOnError:_,format:i,indexProbes:d,mediaSource:o,reason:v,ringIndexUrl:p,rootCueHttpStatus:q,rootCueUrl:u.cueUrl,rootFolderName:u.folderName,rootAudioFile:u.audioFile,selectedFormat:s,signedMediaRequired:l})),k);if(pu(n,o)){const v=await T("ring-capability-advertised",!0,null);if(v)return v}const w=await _a(u.cueUrl,{audioFile:u.audioFile,audioUrl:u.audioUrl,format:i}),f=w.response.status;if(Fe({rootCueStatus:f}),w.cueDocument){const v=w.cueDocument;return y("production continuous detection",{cueSourceSelection:"root-cues",detectedAsRing:!1,detectedAsIndexed:!1,indexFileName:null,indexLayoutKind:null,indexProbeStatuses:[],productionSelectedFormat:i,queueLength:v.tracks.length,ringIndexHttpStatus:null,ringIndexUrl:p,rootCueHttpStatus:f,rootCueUrl:u.cueUrl,selectedOperaAudioUrl:null,selectedOperaCueUrl:null,selectedOperaSlug:null}),Fe({cueSourceSelection:"root-cues"}),{availableFormats:a,cueDocument:v,entries:v.tracks.map(_=>({audioFileRaw:null,audioPathResolved:null,audioUrl:u.audioUrl,cueDocument:v,cueFileRaw:null,cueHttpStatus:f,cuePathResolved:null,cueTrack:_,cueUrl:u.cueUrl,opera:null,trackNumberOffset:0})),detectedAsRing:!1,folderName:u.folderName,format:i,indexFileName:null,indexLayoutKind:null,ringIndex:null,ringIndexHttpStatus:null,ringIndexUrl:p,rootCueHttpStatus:f,rootCueUrl:u.cueUrl,selectedFormat:s,indexProbeStatuses:[],mediaSource:o,cueSourceSelection:"root-cues"}}const C=await T("root-cues-unavailable",!1,f);if(C)return C;const I=new Error(f===403||f===404?`Continuous root cues unavailable with HTTP ${f}, and no supported continuous index was available.`:`Continuous cues request failed with HTTP ${f}.`);throw H("cue-fetch",u.cueUrl,I,{detectedAsIndexed:!1,detectedAsRing:!1,indexProbeStatuses:[],ringIndexHttpStatus:null,ringIndexUrl:p,rootCueHttpStatus:f,rootCueUrl:u.cueUrl}),ie("cue-fetch",u.cueUrl,I)}function pu(n,e){var t,r;return((r=(t=n.playback)==null?void 0:t.continuous)==null?void 0:r.ringCycle)===!0||e?.ringIndexAvailable===!0}async function mu(n){var i,s,o;let e;try{e=await fu(n.indexProbes,{catalogueNumber:n.catalogueNumber,defaultAudioFile:n.rootAudioFile})}catch(l){if(y("production continuous index fallback",{error:Y(l),fallbackOnError:n.fallbackOnError,reason:n.reason,ringIndexUrl:n.ringIndexUrl,rootCueHttpStatus:n.rootCueHttpStatus,rootCueUrl:n.rootCueUrl}),Fe({cueSourceSelection:null,detectedIndexedLayout:!1,indexProbeSummary:[]}),n.fallbackOnError)return null;throw l}const t=e.map(l=>{var u,d;return{error:l.error,fileName:l.definition.fileName,layoutKind:((u=l.index)==null?void 0:u.layoutKind)??l.definition.layoutKind,status:((d=l.response)==null?void 0:d.status)??null,url:l.url}});Fe({cueSourceSelection:null,detectedIndexedLayout:t.some(l=>l.status===200&&l.error===null),indexProbeSummary:t});const r=e.find(l=>l.definition.fileName==="ring-index.json")??null,a=((i=r?.response)==null?void 0:i.status)??null;for(const l of e){const u=l.index;if(!u)continue;const d=((s=l.response)==null?void 0:s.status)??null,h={catalogueNumber:u.catalogueNumber,operas:u.parts}
232,p=await hu(n.catalogueNumber,n.format,u,n.rootFolderName,n.mediaSource,{signedMediaRequired:n.signedMediaRequired});if(p.length===0){const T=new Error("No playable indexed continuous cues were found.");throw H("cue-parse",l.url,T,{detectedAsIndexed:!0,detectedAsRing:u.layoutKind==="ring",indexFileName:u.fileName,indexHttpStatus:d,indexLayoutKind:u.layoutKind,rootCueHttpStatus:n.rootCueHttpStatus}),ie("cue-parse",l.url,T)}const g=u.layoutKind==="ring"?"ring-index":"continuous-index",k=p.find(T=>T.opera!==null)??null;return y("production continuous detection",{cueSourceSelection:g,detectedAsIndexed:!0,detectedAsRing:u.layoutKind==="ring",indexFileName:u.fileName,indexHttpStatus:d,indexLayoutKind:u.layoutKind,indexProbeStatuses:t,productionSelectedFormat:n.format,queueLength:p.length,reason:n.reason,ringIndexHttpStatus:a,ringIndexUrl:n.ringIndexUrl,rootCueHttpStatus:n.rootCueHttpStatus,rootCueUrl:n.rootCueUrl,selectedOperaAudioUrl:k?.audioUrl??null,selectedOperaCueUrl:k?.cueUrl??null,selectedOperaSlug:((o=k?.opera)==null?void 0:o.slug)??null}),Fe({cueSourceSelection:g}),{availableFormats:n.availableFormats,cueDocument:p[0].cueDocument,entries:p,cueSourceSelection:g,detectedAsRing:u.layoutKind==="ring",folderName:n.rootFolderName,format:n.format,indexFileName:u.fileName,indexLayoutKind:u.layoutKind,ringIndex:h,ringIndexHttpStatus:d,ringIndexUrl:l.url,rootCueHttpStatus:n.rootCueHttpStatus,rootCueUrl:n.rootCueUrl,selectedFormat:n.selectedFormat,indexProbeStatuses:t,mediaSource:n.mediaSource}}return y("production continuous index fallback",{fallbackOnError:n.fallbackOnError,indexProbeStatuses:t,reason:n.reason,ringIndexHttpStatus:a,ringIndexUrl:n.ringIndexUrl,rootCueHttpStatus:n.rootCueHttpStatus,rootCueUrl:n.rootCueUrl}),null}async function hu(n,e,t,r,a=null,i={}){const s=[];let o=0;for(const l of t.parts){const u=Fu(an(n,Te,e,l,l.audioFile??de(e).audioFile,r),a);i.signedMediaRequired===!0&&qa([["opera-audio",u.audioUrl],["opera-cue",u.cueUrl],["opera-ring-index",u.ringIndexUrl]],{catalogueNumber:n,format:e,mediaProtectionMode:"cloudfront-signed-url"});const d=await vu(u.cueUrl,{audioFile:u.audioFile,audioUrl:u.audioUrl,format:e,operaIndex:l.index,operaSlug:l.slug,operaTitle:l.title,trackNumberOffset:o}),h=d.tracks[0]??null,p=h&&h.localOperaTrackNumber!==null?h.trackNumber-h.localOperaTrackNumber:o;for(const k of d.tracks)s.push({audioFileRaw:u.audioFileRaw,audioPathResolved:u.audioPathResolved,audioUrl:u.audioUrl,cueDocument:d,cueFileRaw:u.cueFileRaw,cueHttpStatus:200,cuePathResolved:u.cuePathResolved,cueTrack:k,cueUrl:u.cueUrl,opera:l,trackNumberOffset:p});const g=d.tracks.reduce((k,T)=>Math.max(k,T.trackNumber),o);o=Math.max(o+d.tracks.length,g)}return s}function gu(n,e=null){const t=Ke(Te),r=encodeURIComponent(n);return yl.map(a=>{const i=`${t}/${r}/${Cu(a.fileName)}`;return{...a,url:Se(i,e)??i}})}async function fu(n,e){const t=[];for(const r of n)t.push(await yu(r,e));return y("continuous index probe summary",{results:t.map(r=>{var a,i,s;return{error:r.error,fileName:r.definition.fileName,layoutKind:((a=r.index)==null?void 0:a.layoutKind)??r.definition.layoutKind,partCount:((i=r.index)==null?void 0:i.parts.length)??0,status:((s=r.response)==null?void 0:s.status)??null,url:r.url}})}),t}async function yu(n,e){let t;try{t=await ht(n.url,{headers:{Accept:"application/json"},mode:"cors"},n.fileName==="ring-index.json"?"ring-index-fetch":"index-fetch")}catch(i){return{definition:n,error:Y(i),index:null,response:null,url:n.url}}if(y("continuous index fetch status",{fileName:n.fileName,layoutKind:n.layoutKind,ok:t.ok,status:t.status,url:n.url}),!t.ok)return{definition:n,error:null,index:null,response:t,url:n.url};let r;try{r=await t.json()}catch(i){throw H(n.fileName==="ring-index.json"?"ring-index-parse":"index-parse",n.url,i,{fileName:n.fileName,status:t.status}),ie(n.fileName==="ring-index.json"?"ring-index-parse":"index-parse",n.url,i)}const a=ku(r,n,e);return y("continuous index parsed",{entryKey:a?.entryKey??null,fileName:n.fileName,layoutKind:a?.layoutKind??n.layoutKind,partCount:a?.parts.length??0,url:n.url}),{definition:n,error:a?null:"Index file did not contain supported entries.",index:a,response:t,url:n.url}}function ku(n,e,t){if(e.layoutKind==="ring"){const s=Kr(n,{catalogueNumber:t.catalogueNumber,defaultAudioFile:t.defaultAudioFile});return{catalogueNumber:s.catalogueNumber,entryKey:"operas",fileName:e.fileName,layoutKind:"ring",parts:s.operas}}const r=A(n)?n:{},a=bu(r,e.layoutKind);
232if(a.entries.length===0)return null;const i=wu(a.entries.map((s,o)=>Tu(s,o,t.defaultAudioFile,a.layoutKind)).filter(s=>s!==null));return i.length===0?null:{catalogueNumber:ge(r,["catalogueNumber","catalogNumber"])??t.catalogueNumber,entryKey:a.entryKey,fileName:e.fileName,layoutKind:a.layoutKind,parts:i}}function bu(n,e){const t=[{keys:["operas","operaOrder","operaSlugs"],layoutKind:"ring"},{keys:["sections","sectionOrder","sectionSlugs"],layoutKind:"sections"},{keys:["parts","partOrder","partSlugs"],layoutKind:"parts"},{keys:["entries","items","segments"],layoutKind:e}];for(const r of t)for(const a of r.keys){const i=Su(n[a]);if(i.length>0)return{entries:i,entryKey:a,layoutKind:r.layoutKind}}return{entries:[],entryKey:null,layoutKind:e}}function Su(n){return Array.isArray(n)?n:A(n)?Object.entries(n).map(([e,t])=>A(t)?{slug:e,...t}:typeof t=="string"?{slug:e,title:t}:{slug:e}):[]}function Tu(n,e,t,r){const a=typeof n=="string"?{slug:n}:nt(n),i=ge(a,["cueFile","cuesFile","cuePath","cues"])??"cues.json",s=ge(a,["audioFile","audioPath","audio","file"])??t,o=ge(a,["slug","operaSlug","sectionSlug","partSlug","folder","folderName","directory"])??_r(i)??_r(s)??`${r==="sections"?"section":"part"}-${e+1}`,l=Na(o);return l?{artworkFile:ge(a,["artworkFile","coverFile","imageFile","artwork","image"])??"cover.jpg",audioFile:s,cueFile:i,index:e+1,nextOperaSlug:Lt(ge(a,["nextOperaSlug","nextSectionSlug","nextPartSlug","nextSlug"])),previousOperaSlug:Lt(ge(a,["previousOperaSlug","previousSectionSlug","previousPartSlug","previousSlug"])),slug:l,title:ge(a,["title","name","label","operaTitle","sectionTitle","partTitle"])??l}:null}function wu(n){return n.map((e,t)=>{var r,a;return{...e,index:t+1,nextOperaSlug:Lt(e.nextOperaSlug)??((r=n[t+1])==null?void 0:r.slug)??null,previousOperaSlug:Lt(e.previousOperaSlug)??((a=n[t-1])==null?void 0:a.slug)??null}})}function nt(n){return A(n)?n:{}}function ge(n,e){for(const t of e){const r=m(n[t]);if(r)return r}return null}function _r(n){if(!n)return null;const e=n.trim().replace(/^\/+/,"").split("/")[0];return e&&e!==n?e:null}function Lt(n){return n?Na(n):null}function Na(n){const e=n.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return{gotterdammerung:"gotterdammerung",goetterdaemmerung:"gotterdammerung",rheingold:"das-rheingold",walkure:"die-walkure","die-walkuere":"die-walkure"}[e]??e}function Cu(n){return n.split("/").filter(Boolean).map(e=>encodeURIComponent(e)).join("/")}async function vu(n,e){const t=await _a(n,e);if(!t.response.ok){const r=new Error(`Continuous cues request failed with HTTP ${t.response.status}.`);throw H("cue-fetch",n,r,{status:t.response.status}),ie("cue-fetch",n,r)}if(!t.cueDocument){const r=new Error("Continuous cues file did not include any tracks.");throw H("cue-parse",n,r,{format:e.format}),ie("cue-parse",n,r)}return t.cueDocument}async function _a(n,e){y("cues fetch started",{audioUrl:e.audioUrl??null,cueUrl:n,format:e.format});const t=await ht(n,{headers:{Accept:"application/json"},mode:"cors"},"cue-fetch");if(y("cues fetch status",{cueUrl:n,ok:t.ok,status:t.status}),!t.ok)return{cueDocument:null,response:t};let r;try{r=await t.json()}catch(i){throw H("cue-parse",n,i,{status:t.status}),ie("cue-parse",n,i)}let a;try{a=Wr(r,{audioFile:e.audioFile,cueUrl:n,format:e.format,operaIndex:e.operaIndex,operaSlug:e.operaSlug,operaTitle:e.operaTitle,trackNumberOffset:e.trackNumberOffset})}catch(i){throw H("cue-parse",n,i,{audioFile:e.audioFile,format:e.format}),ie("cue-parse",n,i)}if(a.tracks.length===0){const i=new Error("Continuous cues file did not include any tracks.");throw H("cue-parse",n,i,{format:e.format}),ie("cue-parse",n,i)}return y("cues parsed count",{cueUrl:n,trackCount:a.tracks.length}),{cueDocument:a,response:t}}function La(n){var r,a,i,s;const t=(Array.isArray((a=(r=n.playback)==null?void 0:r.continuous)==null?void 0:a.availableFormats)?(s=(i=n.playback)==null?void 0:i.continuous)==null?void 0:s.availableFormats:[]).map(Z).filter(o=>o!==null);return Uc(t)}function Ua(n,e){var r,a;const t=(a=(r=n.playback)==null?void 0:r.continuous)==null?void 0:a.mediaSources;if(!A(t))return null;for(const i of Au(e)){const s=Iu(t[i],e);if(s)return s}return null}function kn(n){var t,r;const e=(r=(t=n.playback)==null?void 0:t.continuous)==null?void 0:r.mediaProtection;return A(e)&&m(e.mode)||null}function Da(n){const e=kn(n);return e==="cloudfront-signed-url"||e==="cloudfront-preview-signed-url"}
232function xu(n,e){if(!n)throw y("protected continuous media source missing",e),new Error(`Protected media session is missing signed media source for ${e.catalogueNumber} ${e.format}.`)}function qa(n,e){for(const[t,r]of n)if(!r||!Ba(r))throw y("protected continuous media URL rejected",{...e,label:t,url:r}),new Error(`Protected media session would fetch unsigned ${t} URL for ${e.catalogueNumber} ${e.format}.`)}function Au(n){return n==="continuous-aac"?["continuous-aac","aac","m4a"]:n==="continuous-alac"?["continuous-alac","alac"]:["continuous-flac","flac"]}function Iu(n,e){var o;if(!A(n))return null;const t=Z(n.format)??e,r=m(n.audioUrl)||null,a=m(n.cueUrl)||null,i=Ru(n.indexUrls),s=m(n.ringIndexUrl)||((o=i.find(l=>l.fileName==="ring-index.json"))==null?void 0:o.url)||null;return!r&&!a&&i.length===0&&!s?null:{authorization:Pu(n.authorization),audioFile:m(n.audioFile)||null,audioUrl:r,coverFile:m(n.coverFile)||null,coverUrl:m(n.coverUrl)||null,cueFile:m(n.cueFile)||null,cueUrl:a,folder:m(n.folder)||null,format:t,indexUrls:i,mediaBaseUrl:m(n.mediaBaseUrl)||null,ringIndexAvailable:n.ringIndexAvailable===!0,ringIndexUrl:s}}function Pu(n){return A(n)?{expiresAt:m(n.expiresAt)||null,expiresInSeconds:Re(n.expiresInSeconds),generatedAt:m(n.generatedAt)||null,provider:m(n.provider)||null,queryString:$a(n.queryString)}:null}function Ru(n){return Array.isArray(n)?n.map(e=>{const t=A(e)?e:{},r=m(t.fileName),a=Eu(t.layoutKind),i=m(t.url);return!r||!a||!i?null:{fileName:r,layoutKind:a,url:i}}).filter(e=>e!==null):[]}function Eu(n){return n==="index"||n==="parts"||n==="ring"||n==="sections"?n:null}function Re(n){if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&n.trim()){const e=Number(n);return Number.isFinite(e)?e:null}return null}function Mu(n,e){return e?{...n,audioFile:e.audioFile??n.audioFile,audioUrl:e.audioUrl??Se(n.audioUrl,e)??n.audioUrl,cueUrl:e.cueUrl??Se(n.cueUrl,e)??n.cueUrl,folderName:e.folder??n.folderName}:n}function Fu(n,e){return e?{...n,audioUrl:Se(n.audioUrl,e)??n.audioUrl,cueUrl:Se(n.cueUrl,e)??n.cueUrl,ringIndexUrl:e.ringIndexUrl??n.ringIndexUrl}:n}function Ou(n,e){return e!=null&&e.indexUrls.length?e.indexUrls:gu(n,e)}function Se(n,e){var r;if(!n||!e)return n;const t=(r=e.authorization)==null?void 0:r.queryString;return!t||Ba(n)||!Nu(n,e)?n:_u(n,t)}function Nu(n,e){const t=e.folder;if(!t)return!1;try{return new URL(n,window.location.href).pathname.split("/").filter(Boolean).map(i=>decodeURIComponent(i)).includes(t)}catch{return!1}}function Ba(n){try{const e=new URL(n,window.location.href);return["Expires","Key-Pair-Id","Policy","Signature"].some(t=>e.searchParams.has(t))}catch{return!1}}function _u(n,e){const t=$a(e);if(!t)return n;const r=n.includes("?")?"&":"?";return`${n}${r}${t}`}function $a(n){return m(n).replace(/^\?/,"")||null}function Lu(n){const e=Bt();return n.includes(e)?{fallbackReason:null,format:e,reason:bn(e,!1),selectedFormat:e}:n.includes("continuous-aac")?{fallbackReason:`${de(e).label} continuous audio is not available for this catalogue; falling back to AAC/M4A.`,format:"continuous-aac",reason:bn(e,!0),selectedFormat:e}:null}function Bt(){return Fi({audioFormatSupport:U,browserEnvironment:Be})}function bn(n,e){const t=Be.resolvedBrowserFamily??"unknown";return e?`Browser preferred ${n} for ${t}, but it was unavailable; using AAC fallback.`:n==="continuous-alac"?`Safari/iOS WebKit environment detected (${t}); using ALAC.`:n==="continuous-flac"?`Non-iOS browser with FLAC support detected (${t}); using FLAC.`:`No browser-preferred lossless continuous format was detected (${t}); using AAC.`}function Lr(){return{audioSupport:{alac:U.alac,flac:U.flac,m4a:U.m4a},isIos:Be.isIos,isIosSafari:Be.isIosSafari,isSafari:Be.isSafari,resolvedBrowserFamily:Be.resolvedBrowserFamily}}function Ha(n){const e=He(n);return e==="alac"?U.alac:e==="flac"?U.flac:U.m4a}function He(n){return de(n).playbackFormat}function Uu(n,e,t){const r={};for(const a of rn){const i=n.includes(a.format);r[a.playbackFormat]={available:i,playable:i&&Ha(a.format),sourceFolder:`${e}${a.folderSuffix}`,trackCount:i?t:0}}return r}function Du(n,e){const t=Oc(n?.images),r=Ja([m(n?.imageUrl),Ga(n?.featuredImage),...t,e.artworkUrl,e.cueDocument.imageUrl]),a=Nc(t),i=m(n?.handle)||null,s=m(n?.productUrl)||m(n?.url)||(i?`/products/${encodeURIComponent(i)}`:null);return{collections:Cn(n?.collections),handle:i,backCoverImages:a,imageUrl:r[0]??null,images:r,productType:m(n?.productType)||null,sku:e.catalogueNumber,productUrl:s,shopifyProductId:m(n?.shopifyProductId)||null,shopifyVariantId:m(n?.shopifyVariantId)||null,tags:Cn(n?.tags),title:m(n?.title)||e.albumTitle,url:s,vendor:m(n?.vendor)||e.cueDocument.artist}}function Pn(){return new URL(N.sessionEndpoint||"/api/player/session",$t()).href}function Qa(){return new URL(N.radioEndpoint||nl,$t()).href}function $t(){return N.apiBaseUrl||ha}function rt(n=Pn()){return{apiBaseUrl:$t(),currentOrigin:typeof window<"u"?window.location.origin:null,sessionRequestUrl:n}}function qu(){return window.OperaDepotPlayerConfig??{}}function Bu(){var r;const n=m(N.analyticsCustomerId);if(n)return n;const e=A((r=window.ODMembershipAccess)==null?void 0:r.state)?window.ODMembershipAccess.state:null,t=e?.customerId;return typeof t=="string"?t.trim()||null:typeof t=="number"&&Number.isSafeInteger(t)?String(t):null}function $u(){const n=window.OperaDepotPlayerDebug;if(n){const t=n;return delete t.bottomBarPlayPauseClickCount,delete t.currentPlaybackState,delete t.launchClickCount,delete t.launchInProgress,delete t.listenerAttachCount,delete t.playerInstanceId,delete t.playPauseInProgress,delete t.previousPlayerInstanceId,delete t.stopInProgress,delete t.lastPlayPauseIntent,n.loaded=!!n.loaded,n.listenerRegistered=!!n.listenerRegistered,n.version=st,n.selectedFormat=n.selectedFormat??null,n.selectedFolder=n.selectedFolder??null,n.lastClick=n.lastClick??null,n.lastFetch=n.lastFetch??null,
232n.lastFetchUrl=n.lastFetchUrl??null,n.lastRequestUrl=n.lastRequestUrl??null,n.lastError=n.lastError??null,n.queueLength=n.queueLength??null,n.detectedIndexedLayout=n.detectedIndexedLayout??null,n.rootCueStatus=n.rootCueStatus??null,n.indexProbeSummary=n.indexProbeSummary??null,n.cueSourceSelection=n.cueSourceSelection??null,n.memberSessionAuth=n.memberSessionAuth??null,n.productWarmup=n.productWarmup??null,n.radioWarmup=n.radioWarmup??null,n}const e={loaded:!1,listenerRegistered:!1,version:st,selectedFormat:null,selectedFolder:null,lastClick:null,lastFetch:null,lastFetchUrl:null,lastRequestUrl:null,lastError:null,queueLength:null,detectedIndexedLayout:null,rootCueStatus:null,indexProbeSummary:null,cueSourceSelection:null,memberSessionAuth:null,productWarmup:null,radioWarmup:null};return window.OperaDepotPlayerDebug=e,e}function Fe(n){Object.assign(S,n)}function Hu(){if(typeof document>"u")return;const n=Ja([Sn(Pn()),Sn(Te)]);for(const e of n)Ur("preconnect",e,!0),Ur("dns-prefetch",e,!1)}function Ur(n,e,t){if(!document.head||Qu(n,e))return;const r=document.createElement("link");r.rel=n,r.href=e,t&&r.setAttribute("crossorigin",""),document.head.append(r)}function Qu(n,e){return Array.from(document.querySelectorAll(`link[rel~="${n}"]`)).some(r=>zu(r)===e)}function zu(n){const e=n.getAttribute("href")||n.href;return e?Sn(e):null}function Sn(n){if(!n)return null;try{return new URL(n,typeof window<"u"?window.location.href:void 0).origin}catch{return null}}function Wu(){if(!(Fr||typeof window>"u")){Fr=!0,window.addEventListener(il,Zu);for(const n of hl)window.addEventListener(n,Dr),document.addEventListener(n,Dr);for(const n of gl)window.addEventListener(n,qr),document.addEventListener(n,qr)}}function Ku(n){const e=G;e?.summaryTimer!==null&&e?.summaryTimer!==void 0&&window.clearTimeout(e.summaryTimer),G={fetches:[],handle:m(n.handle)||null,id:Or+1,marks:{},source:m(n.source)||null,startedAt:j(),summaryTimer:null},Or=G.id}function E(n,e=null,t={}){const r=G;r&&(r.marks[n]!==void 0&&t.overwrite!==!0||(r.marks[n]=j(),ju(r,n,e),n==="audio-playing"?tn("playing",750):n==="first-advancing-timeupdate"?tn("first advancing timeupdate",0):n==="engine-load-end"&&tn("engine loaded",2500)))}function ju(n,e,t){if(typeof performance>"u"||typeof performance.mark!="function")return;const r=Tn(n,e);try{performance.mark(r,{detail:ut(t)})}catch{try{performance.mark(r)}catch{}}}function Gu(n,e){const t=G;if(!t||!Xu(n))return null;const r=Mr+1;Mr=r;const a={endedAt:null,error:null,id:r,ok:null,phase:n,sanitizedUrl:wn(e),startedAt:j(),status:null};return t.fetches.push(a),n==="session-fetch"?E("player-session-request-start",{phase:n,url:e}):Ht(n)&&E("cue-index-fetch-start",{phase:n,url:e}),{fetchId:r,sessionId:t.id}}function Vu(n,e){const t=za(n);t&&(t.endedAt=j(),t.ok=e.ok,t.status=e.status,t.phase==="session-fetch"?E("player-session-request-end",{ok:e.ok,phase:t.phase,status:e.status,url:t.sanitizedUrl},{overwrite:!0}):Ht(t.phase)&&E("cue-index-fetch-end",{ok:e.ok,phase:t.phase,status:e.status,url:t.sanitizedUrl},{overwrite:!0}))}function Yu(n,e){const t=za(n);t&&(t.endedAt=j(),t.error=Y(e),t.phase==="session-fetch"?E("player-session-request-end",{error:t.error,phase:t.phase,url:t.sanitizedUrl},{overwrite:!0}):Ht(t.phase)&&E("cue-index-fetch-end",{error:t.error,phase:t.phase,url:t.sanitizedUrl},{overwrite:!0}))}function za(n){return!n||G?.id!==n.sessionId?null:G.fetches.find(e=>e.id===n.fetchId)??null}function Xu(n){return n==="session-fetch"||Ht(n)}function Ht(n){return n==="cue-fetch"||n==="index-fetch"||n==="ring-index-fetch"}function Zu(n){const e=Rn(n),t=m(e.eventName),r=ec(t);r&&E(r,e)}function Dr(n){E("membership-token-request-start",Rn(n))}function qr(n){E("membership-token-request-end",Rn(n))}function Ju(n){!G||n.status!=="playing"||E("audio-playing",{continuousCueSource:n.engine.continuousCueSource??null,playbackQueueLength:n.queue.length,source:"playback-service-state",status:n.status})}function Rn(n){return n instanceof CustomEvent&&A(n.detail)?n.detail:{}}function ec(n){return n==="audio-canplay"||n==="audio-loadedmetadata"||n==="audio-loadstart"||n==="audio-playing"||n==="audio-src-assigned"||n==="first-advancing-timeupdate"?n:null}function tn(n,e){const t=G;!t||!pt()||(t.summaryTimer!==null&&window.clearTimeout(t.summaryTimer),t.summaryTimer=window.setTimeout(()=>{t.summaryTimer=null,tc(n)},e))}function tc(n){const e=G;if(!e||!pt())return;const t=[oe(e,"click -> membership token start","player-launch-click-received","membership-token-request-start"),oe(e,"membership token start -> membership token end","membership-token-request-start","membership-token-request-end"),oe(e,"click -> session","player-launch-click-received","player-session-request-end"),oe(e,"cue/index fetch","cue-index-fetch-start","cue-index-fetch-end"),oe(e,"session -> cues","player-session-request-end","playback-session-built"),oe(e,"cues -> engine","playback-session-built","engine-load-end"),oe(e,"engine -> playing","engine-load-end","audio-playing"),oe(e,"click -> playing","player-launch-click-received","audio-playing"),oe(e,"click -> first advancing timeupdate","player-launch-click-received","first-advancing-timeupdate")].filter(o=>o!==null),r=e.fetches.map(o=>({durationMs:o.endedAt===null?null:Ee(o.endedAt-o.startedAt),error:o.error,ok:o.ok,phase:o.phase,status:o.status,url:o.sanitizedUrl})),a=nc(e.fetches),i=Wa(e.fetches),s=rc();console.group(An),console.info("Launch",ut({handle:e.handle,id:e.id,reason:n,source:e.source})),console.info("Playback",s),console.info("Fetch counts",a),typeof console.table=="function"?(console.table(t),r.length>0&&console.table(r),i.length>0&&console.table(i)):(console.info("Deltas",t),console.info("Fetches",r),console.info("Duplicate fetch URLs",i)),console.groupEnd()}function nc(n){const e=n.filter(t=>t.phase==="cue-fetch");return{cueFetches:e.length,duplicateCueUrls:ac(e),indexFetches:n.filter(t=>t.phase==="index-fetch").length,ringIndexFetches:n.filter(t=>t.phase==="ring-index-fetch").length,sessionFetches:n.filter(t=>t.phase==="session-fetch").length}}function rc(){var e,t,r,a;const n=P.getState();return{continuousCueSource:n.engine.continuousCueSource??null,cueSourceSelection:m((t=(e=n.currentTrack)==null?void 0:e.metadata)==null?void 0:t.continuousCueSourceSelection)||S.cueSourceSelection,currentTrack:((r=n.currentTrack)==null?void 0:r.displayTitle)??((a=n.currentTrack)==null?void 0:a.title)??null,engineName:n.engine.engineName,memberSessionAuth:S.memberSessionAuth,playbackQueueLength:n.queue.length,status:n.status}}function Wa(n){const e=new Map;for(const t of n){const r=`${t.phase}:${t.sanitizedUrl}`,a=e.get(r);a?a.count+=1:e.set(r,{count:1,phase:t.phase,url:t.sanitizedUrl})}return Array.from(e.values()).filter(t=>t.count>1)}function ac(n){return Wa(n).length}function oe(n,e,t,r){const a=n.marks[t],i=n.marks[r];return a===void 0||i===void 0?null:(ic(n,e,t,r),{elapsedMs:Ee(i-a),segment:e})}function ic(n,e,t,r){if(!(typeof performance>"u"||typeof performance.measure!="function"))try{performance.measure(`${An}: ${e} #${n.id}`,Tn(n,t),Tn(n,r))}catch{}}function Tn(n,e){return`${An}:${n.id}:${e}`}function j(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function Ee(n){return Math.round(n*10)/10}function pt(){if(typeof window>"u")return!1;try{const n=new URLSearchParams(window.location.search).get(sl);if(Br(n))return!0}catch{}try{return Br(window.localStorage.getItem(ol))}catch{return!1}}function Br(n){const e=n?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}function sc(){const n=window.__OperaDepotPlayerPendingSessions??[];if(n.length!==0){window.__OperaDepotPlayerPendingSessions=[],y("draining pending sessions",{count:n.length});for(const e of n)ct(e.session)&&mt(e.session)?qt(e.session,{handle:e.handle??null,source:e.source??"pending-session"}):ct(e.session)&&e.session.authorized===!0&&y("pending session ignored because it is not playable",{accessMode:e.session.accessMode??null,accessReason:e.session.accessReason??null,handle:e.handle??null,source:e.source??"pending-session"})}}function oc(){const n=document.getElementById(Ar);
232if(n)return n;const e=document.createElement("div");return e.id=Ar,document.body.append(e),e}function Ne(n){if(D.dataset.operaDepotPlayerVisible=n?"true":"false",n){D.hidden=!1,D.removeAttribute("aria-hidden");return}D.setAttribute("aria-hidden","true")}function Me(){const n=D.querySelector(".bottom-player"),e=typeof window<"u"?window.getComputedStyle(D):null,t=n&&typeof window<"u"?window.getComputedStyle(n):null;return{bottomPlayerDisplay:t?.display??null,bottomPlayerOpacity:t?.opacity??null,bottomPlayerTransform:t?.transform??null,bottomPlayerVisibility:t?.visibility??null,childCount:D.childElementCount,hasBottomPlayer:n!==null,rootDisplay:e?.display??null,rootHidden:D.hidden,rootVisibility:e?.visibility??null,visibleFlag:D.dataset.operaDepotPlayerVisible??null}}function lc(n){const e=n.closest("#stream-button-container")??n.parentElement;return e?.querySelector(".opera-player-launch-status")??null}function Qe(n,e,t){n.dataset.operaPlayerState=e,n.setAttribute("aria-busy",e==="loading"?"true":"false"),n instanceof HTMLButtonElement&&(n.disabled=e==="loading");const r=lc(n);r&&(r.textContent=t)}function Mt(n,e){const t=uc();t.textContent=n,t.classList.toggle("opera-depot-player-message--error",e==="error"),t.hidden=!1,window.setTimeout(()=>{t.textContent===n&&(t.hidden=!0)},e==="error"?6e3:3500)}function uc(){const n=document.getElementById(Ir);if(n)return n;const e=document.createElement("div");return e.id=Ir,e.className="opera-depot-player-message",e.setAttribute("role","status"),e.hidden=!0,document.body.append(e),e}function Ka(n){return n.accessReason==="no-continuous-version"?n.message||mn:n.accessMode==="preview"?n.message||"Sign in with streaming access to play the full recording.":n.error==="Product not found"?"Streaming product was not found.":n.message||n.error||"Streaming is unavailable for this recording."}function mt(n){return ja(n)||cc(n)}function ja(n){return n.authorized===!0&&n.accessMode==="full"}function cc(n){return n.authorized===!0&&n.accessMode==="preview"&&dc(n)!==null&&pc(n)}function dc(n){var a,i,s;if(n.accessMode!=="preview")return null;const e=mc((a=n.preview)==null?void 0:a.durationSeconds);if(e===null)return null;const t=Re((i=n.preview)==null?void 0:i.fadeStartSeconds),r=t!==null&&t>=0?Math.min(t,e):e;return{durationSeconds:e,fadeStartSeconds:r,replayAllowed:((s=n.preview)==null?void 0:s.replayAllowed)===!0}}function pc(n){return Da(n)?La(n).some(e=>Ua(n,e)!==null):!1}function mc(n){const e=Re(n);return e!==null&&e>0?e:null}function y(n,e){console.info(fl,n,ut(e??""))}function ut(n,e=new WeakSet){if(typeof n=="string")return nn(n);if(typeof n=="number"||typeof n=="boolean"||n===null||n===void 0)return n;if(n instanceof Error)return{message:nn(n.message),name:n.name,stack:n.stack?nn(n.stack):null};if(Array.isArray(n))return n.map(r=>ut(r,e));if(!A(n))return n;if(e.has(n))return"[circular]";e.add(n);const t={};for(const[r,a]of Object.entries(n))t[r]=hc(r)?"[redacted]":ut(a,e);return t}function hc(n){const e=n.toLowerCase();return ml.has(e)?!1:e==="authorization"||e==="authorizationheader"||e==="proxy-authorization"||e==="querystring"||e==="key-pair-id"||e==="keypairid"||e==="policy"||e==="signature"||e.includes("token")}function nn(n){const e=wn(n);return e!==n?e:n.replace(/https?:\/\/[^\s"'<>]+/g,t=>wn(t)).replace(/([?&](?:authorization|key-pair-id|keypairid|playbacktoken|policy|signature|token)=)[^&#\s]+/gi,"$1[redacted]")}function wn(n){const e=n.trim();if(!(/^https?:\/\//i.test(e)||/^\/\//.test(e)||/^\//.test(e)))return n;try{const r=new URL(e,typeof window<"u"?window.location.href:void 0);if(r.protocol!=="http:"&&r.protocol!=="https:")return n;const a=!/^[a-z][a-z\d+\-.]*:/i.test(e);return r.search="",r.hash="",a?r.pathname:r.href}catch{return n.split(/[?#]/)[0]||n}}function gc(n,e){if(!(n!=null&&n.artworkFile))return null;try{return new URL(n.artworkFile,e).href}catch{return null}}function Ga(n){return typeof n=="string"?n.trim()||null:A(n)&&m(n.url)||null}function m(n){return typeof n=="string"?n.trim():""}function Y(n){return n instanceof Error?n.message:String(n)}async function ht(n,e,t){var s;const r=fc(n,e,t),a=bc(n,r,t),i=Gu(t,n);S.lastFetch=a,S.lastFetchUrl=n,y("production fetch started",a),a.losslessBranchReached===!0&&y("lossless production fetch allowed",{phase:t,reached:!0,url:n});try{const o=await fetch(n,r),l={...a,...Cc(o),responseReceived:!0,signalAbortedAfterFetch:((s=r?.signal)==null?void 0:s.aborted)??!1};return S.lastFetch=l,Vu(i,o),y("production fetch response received",l),o}catch(o){const l={...a,...vc(o,r),responseReceived:!1};throw S.lastFetch=l,Yu(i,o),H(t,n,o,l),ie(t,n,o,l)}}function fc(n,e,t){return yc(n,t)?{...e,cache:e?.cache??"no-store",mode:e?.mode??"cors"}:e}function yc(n,e){if(e==="cue-fetch"||e==="index-fetch"||e==="radio-fetch"||e==="ring-index-fetch")return!0;const t=Va(n);return/\/(?:cues|ring-index|index|sections-index|parts-index)\.json$/i.test(t)}function kc(n,e){const t=Va(n);return/\/cues\.json$/i.test(t)?"cue-fetch":/\/ring-index\.json$/i.test(t)?"ring-index-fetch":/\/(?:index|sections-index|parts-index)\.json$/i.test(t)?"index-fetch":e}function bc(n,e,t){var o;const r=(e?.method??"GET").toUpperCase(),a=Ic(e?.headers),i=Rc(r,a),s=wc(n);return{...Tc(),...Sc(),...s,bodyPresent:e?.body!==void 0&&e.body!==null,cache:e?.cache??null,credentials:e?.credentials??null,corsSimpleRequest:i,headerKeys:a.map(([l])=>l).sort(),headers:Pc(a),hasSignal:e?.signal!==void 0&&e.signal!==null,integrity:e!=null&&e.integrity?"[present]":null,keepalive:e?.keepalive??null,method:r,mode:e?.mode??null,phase:t,preflightLikely:!i,redirect:e?.redirect??null,referrer:e?.referrer??null,referrerPolicy:e?.referrerPolicy??null,requestRetried:!1,responseReceived:!1,retryAttempt:0,cueSourceSelection:S.cueSourceSelection,selectedFolder:S.selectedFolder,selectedFormat:S.selectedFormat,signalAbortedBeforeFetch:((o=e?.signal)==null?void 0:o.aborted)??!1,timestamp:new Date().toISOString(),url:n}}
232function Sc(){const n=Bt();return{browserFormatReason:bn(n,!1),browserPreferredFormat:n,cueSourceSelection:S.cueSourceSelection,browserSelectedAlac:n==="continuous-alac"&&U.alac===!0,browserSelectedFlac:n==="continuous-flac"&&U.flac===!0,browserSupport:{alac:U.alac,flac:U.flac,flacCanPlayAudioFlac:U.details.flacCanPlayAudioFlac,flacCanPlayAudioXFlac:U.details.flacCanPlayAudioXFlac,flacCanPlayMp4Flac:U.details.flacCanPlayMp4Flac,m4a:U.m4a}}}function Tc(){return{continuousMediaBaseUrl:Te,currentHref:typeof window<"u"?window.location.href:null,currentOrigin:typeof window<"u"?window.location.origin:null,documentReferrer:typeof document<"u"&&document.referrer||null,documentVisibilityState:typeof document<"u"?document.visibilityState:null,inIframe:xc(),serviceWorkerControlled:Ac()}}function wc(n){try{const e=new URL(n,typeof window<"u"?window.location.href:void 0);return{isCloudFrontMediaUrl:e.hostname==="d3ehd4tdywukgy.cloudfront.net",isDirectS3MediaUrl:e.hostname==="operadepot-processed-audio.s3.us-east-1.amazonaws.com",losslessBranchReached:$r(e.href),requestHostname:e.hostname,requestOrigin:e.origin,requestPathname:e.pathname,requestSearchPresent:e.search.length>0}}catch{return{isCloudFrontMediaUrl:!1,isDirectS3MediaUrl:!1,losslessBranchReached:$r(n),requestHostname:null,requestOrigin:null,requestPathname:null,requestSearchPresent:null}}}function Cc(n){return{responseContentLength:n.headers.get("content-length"),responseContentRange:n.headers.get("content-range"),responseContentType:n.headers.get("content-type"),responseOk:n.ok,responseRedirected:n.redirected,responseStatus:n.status,responseStatusText:n.statusText,responseType:n.type,responseUrl:n.url,responseVary:n.headers.get("vary")}}function vc(n,e){var t,r;return{errorMessage:Y(n),errorName:Xa(n),errorStack:Za(n),requestAborted:Fc(n)||((t=e?.signal)==null?void 0:t.aborted)===!0,signalAbortedAfterError:((r=e?.signal)==null?void 0:r.aborted)??!1}}function xc(){if(typeof window>"u")return null;try{return window.self!==window.top}catch{return!0}}function Ac(){return typeof navigator>"u"||!("serviceWorker"in navigator)?null:navigator.serviceWorker.controller!==null}function Ic(n){return n?n instanceof Headers?Array.from(n.entries()).map(([e,t])=>[e.toLowerCase(),t]):Array.isArray(n)?n.map(([e,t])=>[String(e).toLowerCase(),String(t)]):Object.entries(n).map(([e,t])=>[e.toLowerCase(),String(t)]):[]}function Pc(n){const e={};for(const[t,r]of n){if(["accept","content-type"].includes(t)){e[t]=r;continue}e[t]="[present]"}return e}function Rc(n,e){return["GET","HEAD","POST"].includes(n)?e.every(([t,r])=>Ec(t,r)):!1}function Ec(n,e){const t=n.toLowerCase();if(["accept","accept-language","content-language"].includes(t))return!0;if(t!=="content-type")return!1;const r=e.split(";")[0].trim().toLowerCase();return["application/x-www-form-urlencoded","multipart/form-data","text/plain"].includes(r)}function $r(n){return/(?:CONT-ALAC|CONT-FLAC|audio\.flac)(?:[/?#]|$)/i.test(n)}function Va(n){try{return new URL(n,typeof window<"u"?window.location.href:void 0).pathname}catch{return n.split(/[?#]/)[0]??n}}function H(n,e,t,r={}){const a={...En(t),phase:n,url:e};S.lastError=a,y(`${n} failed`,{...r,error:a,phase:n,url:e})}function ie(n,e,t,r={}){const a=Mc(t),i=new Error(`${n} failed${e?` for ${e}`:""}: ${a}`);return Object.defineProperty(i,"operaDepotPhase",{value:n}),Object.defineProperty(i,"operaDepotUrl",{value:e}),Object.defineProperty(i,"operaDepotFetchDiagnostics",{value:r}),Object.defineProperty(i,"operaDepotOriginalErrorMessage",{value:Y(t)}),Object.defineProperty(i,"operaDepotOriginalErrorName",{value:Xa(t)}),Object.defineProperty(i,"operaDepotOriginalErrorStack",{value:Za(t)}),i}function Ya(n){if(!A(n))return null;const e=m(n.operaDepotPhase);return e?{fetchDiagnostics:nt(n.operaDepotFetchDiagnostics),phase:e,originalErrorMessage:m(n.operaDepotOriginalErrorMessage)||null,originalErrorName:m(n.operaDepotOriginalErrorName)||null,originalErrorStack:m(n.operaDepotOriginalErrorStack)||null,url:m(n.operaDepotUrl)||null}:null}function En(n){if(n instanceof Error){const e=Ya(n);return{message:n.message,name:n.name,stack:n.stack??null,...e?{fetchDiagnostics:e.fetchDiagnostics,originalErrorMessage:e.originalErrorMessage,originalErrorName:e.originalErrorName,originalErrorStack:e.originalErrorStack,phase:e.phase,url:e.url}:{}}}return{message:String(n),name:typeof n}}function Xa(n){return n instanceof Error?n.name:typeof n}function Za(n){return n instanceof Error?n.stack??null:null}function Mc(n){return n instanceof Error?`${n.name}: ${n.message}`:String(n)}function Fc(n){return n instanceof Error&&(n.name==="AbortError"||/aborted/i.test(n.message))}function Cn(n){return Array.isArray(n)?n.map(m).filter(e=>e.length>0):[]}function Oc(n){return Array.isArray(n)?n.map(Ga).filter(e=>e!==null):[]}function Ja(n){const e=new Set,t=[];for(const r of n)!r||e.has(r)||(e.add(r),t.push(r));return t}function Nc(n){const e=Hr(n[0]??null),t=new Set(e?[e.key]:[]),r=new Set,a=[];for(const i of n.slice(1,5)){const s=Hr(i);!s||t.has(s.key)||r.has(s.key)||(r.add(s.key),a.push(s.url))}return a}function Hr(n){if(!(n!=null&&n.trim()))return null;const e=n.trim(),t=e.startsWith("//")?`https:${e}`:e;if(!/^https?:\/\//i.test(t))return null;
232try{const r=new URL(t);return r.protocol!=="http:"&&r.protocol!=="https:"||(r.hash="",Lc(r))?null:{key:_c(r),url:r.href}}catch{return null}}function _c(n){const e=n.pathname.toLowerCase().replace(/_(?:pico|icon|thumb|small|compact|medium|large|grande|master|\d+x\d*|\d*x\d+)(?=\.[a-z0-9]+$)/,"");return`${n.protocol.toLowerCase()}//${n.hostname.toLowerCase()}${e}`}function Lc(n){const e=n.pathname.toLowerCase();return["imagenotfound","image-not-found","image_not_found","missingimage","missing-image","missing_image","noimage","no-image","no_image","placeholder","questionmark","question-mark","question_mark","fallback","default-image","default_image"].some(t=>e.includes(t))}function Qr(n){const e=new Set;return n.filter(t=>e.has(t)?!1:(e.add(t),!0))}function Uc(n){const e=new Set;return n.filter(t=>e.has(t)?!1:(e.add(t),!0))}function ct(n){return A(n)}function Dc(n){return n==="free_streaming"||n==="coming_soon"||n==="library"?n:"standard"}function A(n){return typeof n=="object"&&n!==null}
233//# sourceMappingURL=/cdn/shop/t/186/assets/opera-depot-player.js.map?od_build=act-intro-ring-rules-2026-09-17-02&v=137853722537836287521790032775

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.