!function(){"use strict";var customPaths,appMode=globalThis.appMode,isNativeTizen="tizen"===globalThis.appMode,isNativeLG="webos"===globalThis.appMode;function returnFirstDependency(obj){return obj}function returnFirstDependencyDefault(obj){return(null==(obj=Array.isArray(obj)?obj[0]:obj)?void 0:obj.default)||obj}function enableNativeGamepadKeyMapping(){return window.navigator&&"string"==typeof window.navigator.gamepadInputEmulation&&(window.navigator.gamepadInputEmulation="keyboard")}function loadPlugin(url){return Promise.all([importFromPath("./modules/common/pluginmanager.js")]).then(function(responses){var pluginManager=responses[0];return url.startsWith("./")&&url.endsWith(".js")?(console.log("Loading plugin module: "+url),getDynamicImport(url)().then(function(f){return pluginManager.loadPlugin(f,url)})):pluginManager.loadPluginFromUrl(url)})}function returnFalse(){return!1}function onApiClientCreated(e,apiClient){"ios"!==appMode&&"android"!==appMode||(apiClient._getAvailablePlugins=apiClient.getAvailablePlugins,apiClient.getAvailablePlugins=function(){var promises=[this._getAvailablePlugins(),importFromPath("./modules/common/pluginmanager.js")];return Promise.all(promises).then(function(responses){var plugins=responses[0],pluginManager=responses[1];return plugins.filter(function(p){return pluginManager.allowPluginPages(p.guid)})})}.bind(apiClient)),Promise.all([importFromPath("./modules/browser.js")]).then(function(responses){responses[0].operaTv&&(apiClient.isWebSocketSupported=returnFalse)})}function createConnectionManager(){return Promise.all([importFromPath("./modules/emby-apiclient/connectionmanager.js"),importFromPath("./modules/emby-apiclient/events.js"),importFromPath("./modules/common/servicelocator.js")]).then(function(outerResponses){var accessToken,userId,connectionManager=outerResponses[0],events=outerResponses[1],outerResponses=outerResponses[2].appHost;globalThis.Events=events,connectionManager.globalScopeApiClient=!0,connectionManager.devicePixelRatio=globalThis.devicePixelRatio,globalThis.ConnectionManager=connectionManager,events.on(connectionManager,"apiclientcreated",onApiClientCreated),outerResponses.supports("multiserver")||(connectionManager.enableServerAddressValidation=!1,window.location.search&&(accessToken=(events=new URLSearchParams(window.location.search)).get("accessToken"),userId=events.get("userId"),accessToken&&userId&&"1"===events.get("e")||(userId=accessToken=null)),console.log("creating ApiClient singleton"),connectionManager.validateServerIds=!1,outerResponses=window.location.href.toLowerCase(),outerResponses=-1!==(events=outerResponses.lastIndexOf("/web"))?outerResponses.substring(0,events):(events=(outerResponses=window.location).protocol+"//"+outerResponses.hostname,outerResponses.port&&(events+=":"+outerResponses.port),events),events=connectionManager.getApiClientFromServerInfo({ManualAddress:outerResponses,ManualAddressOnly:!0,IsLocalServer:!0,AccessToken:accessToken,UserId:userId},outerResponses),accessToken&&userId&&(window.location="index.html"),events.enableAutomaticNetworking=!1,console.log("loaded ApiClient singleton"))})}function getPluginPageContentPath(){return globalThis.ApiClient?globalThis.ApiClient.getUrl("web/ConfigurationPage"):null}function getDynamicImport(path){return function(){return require([""+path]).then(returnFirstDependencyDefault)}}function importFromPath(path){return getDynamicImport(path)()}function importFromPathWithoutExport(path){!function(path){return function(){return require([""+path])}}(path)()}function getNativeImport(objectName){objectName=globalThis[objectName];return Promise.resolve(objectName)}function loadAppStorage(){var promise;try{localStorage.setItem("_test","0"),localStorage.removeItem("_test"),promise=importFromPath("./modules/emby-apiclient/appstorage-localstorage.js")}catch(e){promise=importFromPath("./modules/emby-apiclient/appstorage-memory.js")}return promise.then(function(appStorage){return(appStorage.init?appStorage.init():Promise.resolve()).then(function(){return appStorage})})}function loadApiClient(){return console.log("loadApiClient"),getDynamicImport("./modules/common/servicelocator.js")().then(function(serviceLocator){return loadAppHost().then(function(appHost){return(appHost.supports("sync")?getDynamicImport("./modules/emby-apiclient/apiclientex.js"):getDynamicImport("./modules/emby-apiclient/apiclient.js"))()}).then(function(apiClientFactory){return serviceLocator.initialize({apiClientFactory:apiClientFactory}),apiClientFactory})})}function supportsTizenNaclSockets(){var v;if(globalThis.tizen&&globalThis.tizen.systeminfo)return v=globalThis.tizen.systeminfo.getCapability("http://tizen.org/feature/platform.version"),!supportsTizenWasmSockets()&&v&&parseFloat(v)>=parseFloat("2.4")}function supportsTizenWasmSockets(){var v;if(globalThis.tizen&&globalThis.tizen.systeminfo)return(v=globalThis.tizen.systeminfo.getCapability("http://tizen.org/feature/platform.version"))&&parseFloat(v)>=parseFloat("6.0")}function loadServerDiscovery(){return customPaths.serverdiscovery?getRequirePromise(addJsExtIfNeeded(customPaths.serverdiscovery)):isNativeTizen&&(supportsTizenNaclSockets()||supportsTizenWasmSockets())?getRequirePromise("native/tizen/serverdiscovery"):"android"===appMode?getRequirePromise("native/android/serverdiscovery"):"ios"===appMode?getRequirePromise("native/ios/serverdiscovery"):getDynamicImport("./modules/emby-apiclient/serverdiscovery.js")()}function loadShell(){return customPaths.shell?getRequirePromise(addJsExtIfNeeded(customPaths.shell)):"android"===appMode?getRequirePromise("native/android/shell"):getDynamicImport("./modules/shell.js")()}function loadWakeOnLan(){return customPaths.wakeonlan?getRequirePromise(addJsExtIfNeeded(customPaths.wakeonlan)):isNativeTizen&&(supportsTizenNaclSockets()||supportsTizenWasmSockets())?getRequirePromise("native/tizen/wakeonlan"):"ios"===appMode?getRequirePromise("native/ios/wakeonlan"):"android"===appMode?getRequirePromise("native/android/wakeonlan"):getDynamicImport("./modules/emby-apiclient/wakeonlan.js")()}function loadFullscreenManager(){return getDynamicImport("./modules/common/servicelocator.js")().then(function(serviceLocator){var promise=customPaths.fullscreenmanager?getRequirePromise(customPaths.fullscreenmanager):getDynamicImport("./modules/fullscreen/fullscreenmanager.js")();return promise.then(function(fullscreenManager){return serviceLocator.initialize({fullscreenManager:fullscreenManager}),fullscreenManager})})}function loadIap(){return console.log("loadIap"),("android"===appMode?getRequirePromise("native/android/iap"):"ios"===appMode?getRequirePromise("native/ios/iap"):getDynamicImport("./modules/iap.js")()).then(function(iapManager){return getDynamicImport("./modules/common/servicelocator.js")().then(function(serviceLocator){serviceLocator.initialize({iapManager:iapManager})})})}function loadServiceLocator(){return console.log("loadServiceLocator"),Promise.all([loadAppStorage(),loadAppHost(),loadShell(),loadFullscreenManager(),loadWakeOnLan(),loadServerDiscovery()]).then(function(responses){console.log("loadServiceLocator - inner load 1");var appStorage=responses[0],appHost=responses[1],shell=responses[2],wakeOnLan=responses[4],serverDiscovery=responses[5],responses=[getDynamicImport("./modules/common/servicelocator.js")()];return appHost.supports("sync")&&(responses.push(require(["filerepository"])),responses.push(require(["itemrepository"])),responses.push(require(["transfermanager"])),responses.push(require(["useractionrepository"])),responses.push(require(["localsync"]))),appHost.supports("cameraupload")&&responses.push(loadCameraUpload()),appHost.supports("applogger")&&responses.push(loadAppLogger()),Promise.all(responses).then(function(responsesInner){console.log("loadServiceLocator - inner load 2");var fileRepository,itemRepository,transferManager,userActionRepository,localSync,cameraUpload,appLogger,index=0,serviceLocator=responsesInner[index];return index++,appHost.supports("sync")&&(fileRepository=responsesInner[index][0],itemRepository=responsesInner[++index][0],transferManager=responsesInner[++index][0],userActionRepository=responsesInner[++index][0],localSync=responsesInner[++index][0],index++),appHost.supports("cameraupload")&&(cameraUpload=responsesInner[index],index++),appHost.supports("applogger")&&(appLogger=responsesInner[index],index++),console.log("loadServiceLocator - calling serviceLocator.initialize"),serviceLocator.initialize({appStorage:appStorage,appHost:appHost,shell:shell,wakeOnLan:wakeOnLan,serverDiscovery:serverDiscovery,fileRepository:fileRepository,itemRepository:itemRepository,transferManager:transferManager,userActionRepository:userActionRepository,cameraUpload:cameraUpload,appLogger:appLogger,localSync:localSync}),console.log("loadServiceLocator - calling appHost.init"),appHost.init().then(loadApiClient).then(loadIap)})})}function addJsExtIfNeeded(path){return path.endsWith(".js")||(path+=".js"),path}function getRequirePromise(dep){return new Promise(function(resolve,reject){require([dep],resolve)})}function loadAppLogger(){return"android"===appMode?getRequirePromise("native/android/applogger"):Promise.resolve({getLogFiles:function(query){var items=[],total=(items.push({Name:"currentlog.txt",Id:"currentlog.txt",DateCreated:(new Date).toISOString(),DateModified:(new Date).toISOString(),Type:"Log",CanDownload:!0,CanShare:!0}),items.length);return query.StartIndex&&(items=items.slice(query.StartIndex)),query.Limit&&(items.length=Math.min(query.Limit,items.length)),Promise.resolve({Items:items,TotalRecordCount:total})},getLogLines:function(query){for(var items=[],i=0;i<1e4;i++)items.push("line "+i);var total=items.length;return query.StartIndex&&(items=items.slice(query.StartIndex)),query.Limit&&(items.length=Math.min(query.Limit,items.length)),Promise.resolve({Items:items,TotalRecordCount:total})},downloadLog:function(name){return console.log("downloading dummy log file: "+name),Promise.resolve()},shareLog:function(name){return console.log("sharing dummy log file: "+name),Promise.resolve()}})}function loadCameraUpload(){return"ios"===appMode?getRequirePromise("native/ios/cameraupload"):"android"===appMode?getRequirePromise("native/android/cameraupload"):Promise.resolve({start:function(){},setProgressUpdatesEnabled:function(){},getAvailableFolders:function(){return Promise.resolve([{Id:"541C6607-9C45-4875-A292-5F89F742B2B3/L0/040",Name:"TestFolder1"},{Id:"773DFE72-F38F-4220-8F2F-C4A472DBBA75/L0/040",Name:"TestFolder2"}])}})}function loadAppHost(){return customPaths.apphost?getRequirePromise(addJsExtIfNeeded(customPaths.apphost)):"ios"===appMode?getRequirePromise("native/ios/apphost"):"android"===appMode?getRequirePromise("native/android/apphost"):importFromPath("./modules/apphost.js")}function initRequire(){for(var importMap=function(){var elem=document.querySelector('script[type="importmap"]');if(elem){elem=elem.innerHTML;if(elem)try{var obj=JSON.parse(elem);if(obj){var imports=obj.imports;if(imports)return imports}}catch(err){console.log("error parsing import map: "+err)}}return{}}(),entries=Object.entries(importMap),i=0,length=entries.length;i'),require(["css!modules/windowdrag.css"])),startInfo.plugins||[]);if(console.log("Loading installed plugins"),customPaths.pluginloader)return forcedPlugins=["./modules/common/playback/playbackvalidation.js","./modules/common/playback/playaccessvalidation.js","./modules/common/playback/experimentalwarnings.js","./modules/htmlaudioplayer/plugin.js","./modules/photoplayer/plugin.js","./modules/confirmstillplaying/plugin.js"],getRequirePromise(addJsExtIfNeeded(customPaths.pluginloader)).then(function(pluginloader){return pluginloader.loadPlugins(forcedPlugins)});var list=["./modules/common/playback/playbackvalidation.js","./modules/common/playback/playaccessvalidation.js","./modules/common/playback/experimentalwarnings.js"];if(appHost.supports("soundeffects")&&list.push("./modules/soundeffects/defaultsoundeffects/plugin.js"),appHost.supports("screensaver")&&(list.push("./modules/logoscreensaver/plugin.js"),list.push("./modules/backdropscreensaver/plugin.js"),list.push("./modules/photoscreensaver/plugin.js")),"android"===appMode?(list.push("native/android/mpvvideoplayer"),list.push("native/android/mpvaudioplayer")):"ios"===appMode&&(list.push("native/ios/mpvaudioplayer"),list.push("native/ios/mpvvideoplayer")),"android"!==appMode&&"ios"!==appMode&&list.push("./modules/htmlaudioplayer/plugin.js"),"ios"===appMode&&list.push("native/ios/chromecast"),"android"===appMode&&list.push("native/android/chromecast"),globalThis.webapis&&webapis.avplay?list.push("native/tizen/tizenavplayer/plugin"):"android"!==appMode&&"ios"!==appMode&&list.push("./modules/htmlvideoplayer/plugin.js"),appHost.supports("ebookplayer")&&list.push("./modules/ebookplayer/plugin.js"),list.push("./modules/photoplayer/plugin.js"),appHost.supports("pdfplayer")&&CSS.supports("color","var(--fake-var)")&&list.push("./modules/pdfplayer/plugin.js"),appHost.supports("remotecontrol")&&(list.push("./modules/sessionplayer.js"),globalThis.chrome)&&!responses.electron&&"android"!==appMode&&list.push("./modules/chromecast/chromecastplayer.js"),appHost.supports("youtube"))switch(appMode){case"android":case"tizen":case"webos":list.push("./modules/youtubeplayer/plugin_webview.js");break;default:list.push("./modules/youtubeplayer/plugin.js")}for(var i=0,length=externalPlugins.length;i