From 7ca46bd5f40f57844b3bf71c94f4d12e4df02868 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Sat, 12 Oct 2024 12:07:24 -0500 Subject: [PATCH 01/12] Only download profile on start if connected --- .../ProfileService.cs | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/LANCommander.Launcher.Services/ProfileService.cs b/LANCommander.Launcher.Services/ProfileService.cs index 58eff093..7686d794 100644 --- a/LANCommander.Launcher.Services/ProfileService.cs +++ b/LANCommander.Launcher.Services/ProfileService.cs @@ -50,38 +50,41 @@ namespace LANCommander.Launcher.Services SettingService.SaveSettings(Settings); - var remoteProfile = await Client.Profile.GetAsync(); - - Settings.Profile.Id = remoteProfile.Id; - Settings.Profile.Alias = String.IsNullOrWhiteSpace(remoteProfile.Alias) ? remoteProfile.UserName : remoteProfile.Alias; - - try + if (Client.IsConnected()) { - var tempAvatarPath = await Client.Profile.DownloadAvatar(); + var remoteProfile = await Client.Profile.GetAsync(); - if (!String.IsNullOrWhiteSpace(tempAvatarPath)) + Settings.Profile.Id = remoteProfile.Id; + Settings.Profile.Alias = String.IsNullOrWhiteSpace(remoteProfile.Alias) ? remoteProfile.UserName : remoteProfile.Alias; + + try { - var media = new Media + var tempAvatarPath = await Client.Profile.DownloadAvatar(); + + if (!String.IsNullOrWhiteSpace(tempAvatarPath)) { - FileId = Guid.NewGuid(), - Type = SDK.Enums.MediaType.Avatar, - MimeType = MediaTypeNames.Image.Png, - Crc32 = SDK.Services.MediaService.CalculateChecksum(tempAvatarPath), - }; + var media = new Media + { + FileId = Guid.NewGuid(), + Type = SDK.Enums.MediaType.Avatar, + MimeType = MediaTypeNames.Image.Png, + Crc32 = SDK.Services.MediaService.CalculateChecksum(tempAvatarPath), + }; - media = await MediaService.Add(media); + media = await MediaService.Add(media); - var localPath = MediaService.GetImagePath(media); + var localPath = MediaService.GetImagePath(media); - if (File.Exists(tempAvatarPath)) - File.Move(tempAvatarPath, localPath); + if (File.Exists(tempAvatarPath)) + File.Move(tempAvatarPath, localPath); - Settings.Profile.AvatarId = media.Id; + Settings.Profile.AvatarId = media.Id; + } + } + catch (Exception ex) + { + Logger?.LogError(ex, "Could not download avatar"); } - } - catch (Exception ex) - { - Logger?.LogError(ex, "Could not download avatar"); } SettingService.SaveSettings(Settings); From 6c2eb1cd1c696ff4a4d77674152aa1aaffee7674 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Tue, 15 Oct 2024 02:00:54 -0500 Subject: [PATCH 02/12] Fix potential issue when downloading saves --- LANCommander.SDK/Services/SaveService.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/LANCommander.SDK/Services/SaveService.cs b/LANCommander.SDK/Services/SaveService.cs index 3b21c5b2..240cfd31 100644 --- a/LANCommander.SDK/Services/SaveService.cs +++ b/LANCommander.SDK/Services/SaveService.cs @@ -162,6 +162,10 @@ namespace LANCommander.SDK.Services if (File.Exists(entryPath)) { + var destinationDirectory = Path.GetDirectoryName(entryPath); + + Directory.CreateDirectory(destinationDirectory); + // Handle individual files that were saved as an entry in the path if (File.Exists(destinationPath)) File.Delete(destinationPath); @@ -175,6 +179,10 @@ namespace LANCommander.SDK.Services foreach (var entryFile in entryFiles) { + var destinationDirectory = Path.GetDirectoryName(entryFile); + + Directory.CreateDirectory(destinationDirectory); + var fileDestination = entryFile.Replace(entryPath, destinationPath); if (File.Exists(fileDestination)) From 41880c9a66f67ac91f02cb917664a1c5f9437d88 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Tue, 15 Oct 2024 02:01:30 -0500 Subject: [PATCH 03/12] Change function to call for sending import message --- LANCommander.Launcher/UI/MainLayout.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LANCommander.Launcher/UI/MainLayout.razor b/LANCommander.Launcher/UI/MainLayout.razor index 58746fa1..cfb95a68 100644 --- a/LANCommander.Launcher/UI/MainLayout.razor +++ b/LANCommander.Launcher/UI/MainLayout.razor @@ -131,7 +131,7 @@ { if (!_MainLayout.Importing) { - await _MainLayout.JS.InvokeVoidAsync("sendMessage", "import"); + await _MainLayout.JS.InvokeVoidAsync("window.external.sendMessage", "import"); _MainLayout.Importing = true; _MainLayout.StateHasChanged(); From a1c760b72e0433672acf48ffa77c68855de22b76 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Tue, 15 Oct 2024 02:16:50 -0500 Subject: [PATCH 04/12] Fix error importing servers with console defined --- LANCommander.Server/Services/ServerService.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LANCommander.Server/Services/ServerService.cs b/LANCommander.Server/Services/ServerService.cs index f21411be..31e882dc 100644 --- a/LANCommander.Server/Services/ServerService.cs +++ b/LANCommander.Server/Services/ServerService.cs @@ -72,6 +72,7 @@ namespace LANCommander.Server.Services if (manifestConsole != null) { + serverConsole.ServerId = server.Id; serverConsole.Name = manifestConsole.Name; serverConsole.Type = (ServerConsoleType)(int)manifestConsole.Type; serverConsole.Path = manifestConsole.Path; @@ -90,6 +91,7 @@ namespace LANCommander.Server.Services server.ServerConsoles.Add(new ServerConsole() { Id = manifestConsole.Id, + ServerId = server.Id, Name = manifestConsole.Name, Type = (ServerConsoleType)(int)manifestConsole.Type, Path = manifestConsole.Path, From 2c937d382f9b13f80ff5bd465f070e8a2b10f147 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Tue, 15 Oct 2024 02:19:03 -0500 Subject: [PATCH 05/12] Fix issue exporting servers --- LANCommander.Server/Controllers/ServerController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LANCommander.Server/Controllers/ServerController.cs b/LANCommander.Server/Controllers/ServerController.cs index 6d4e625a..1f16ff80 100644 --- a/LANCommander.Server/Controllers/ServerController.cs +++ b/LANCommander.Server/Controllers/ServerController.cs @@ -77,7 +77,7 @@ namespace LANCommander.Server.Controllers foreach (var file in files) { - var entryName = file.Substring(server.WorkingDirectory.Length, file.Length - server.WorkingDirectory.Length).Replace(Path.DirectorySeparatorChar, '/'); + var entryName = file.Substring(server.WorkingDirectory.Length, file.Length - server.WorkingDirectory.Length).Replace(Path.DirectorySeparatorChar, '/').TrimStart('/'); if (System.IO.File.Exists(file)) { From d13567a3ebfd48b9144eac4c51135648c01638e2 Mon Sep 17 00:00:00 2001 From: James Paussa Date: Mon, 21 Oct 2024 10:52:27 +0000 Subject: [PATCH 06/12] bumping Server csproj version to 1.0.3 --- LANCommander.Server/LANCommander.Server.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LANCommander.Server/LANCommander.Server.csproj b/LANCommander.Server/LANCommander.Server.csproj index 6d6ca973..fefdc939 100644 --- a/LANCommander.Server/LANCommander.Server.csproj +++ b/LANCommander.Server/LANCommander.Server.csproj @@ -6,7 +6,7 @@ aspnet-LANCommander-C1F79CFA-9767-4AD7-BD5A-2549F8328A2D wwwroot\favicon.ico none - 1.0.0 + 1.0.3 From 72717064a75cb644349262dd3ece2499a2d217ec Mon Sep 17 00:00:00 2001 From: James Paussa Date: Mon, 21 Oct 2024 10:52:27 +0000 Subject: [PATCH 07/12] bumping Server csproj version to 1.0.3 --- LANCommander.SDK/LANCommander.SDK.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LANCommander.SDK/LANCommander.SDK.csproj b/LANCommander.SDK/LANCommander.SDK.csproj index a937ca14..f74b2872 100644 --- a/LANCommander.SDK/LANCommander.SDK.csproj +++ b/LANCommander.SDK/LANCommander.SDK.csproj @@ -2,7 +2,7 @@ net8.0 - 1.0.0 + 1.0.3 pathartl LANCommander A .NET library for interacting with a LANCommander server From 2db74b569683f746adad09c8cd48d58159353a66 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Thu, 24 Oct 2024 19:18:00 -0500 Subject: [PATCH 08/12] Fix download queueing Fixes #131 --- LANCommander.Launcher.Models/DownloadQueueGame.cs | 2 +- LANCommander.Launcher.Services/DownloadService.cs | 11 +++++++---- LANCommander.SDK/Enums/InstallStatus.cs | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/LANCommander.Launcher.Models/DownloadQueueGame.cs b/LANCommander.Launcher.Models/DownloadQueueGame.cs index 56fc83ad..869f6e29 100644 --- a/LANCommander.Launcher.Models/DownloadQueueGame.cs +++ b/LANCommander.Launcher.Models/DownloadQueueGame.cs @@ -56,7 +56,7 @@ namespace LANCommander.Launcher.Models Title = game.Title; Version = game.Archives.OrderByDescending(a => a.CreatedOn).FirstOrDefault()?.Version; QueuedOn = DateTime.Now; - Status = GameInstallStatus.Idle; + Status = GameInstallStatus.Queued; var cover = game.Media.FirstOrDefault(m => m.Type == SDK.Enums.MediaType.Cover); diff --git a/LANCommander.Launcher.Services/DownloadService.cs b/LANCommander.Launcher.Services/DownloadService.cs index 71fd189f..23b1d04c 100644 --- a/LANCommander.Launcher.Services/DownloadService.cs +++ b/LANCommander.Launcher.Services/DownloadService.cs @@ -102,7 +102,8 @@ namespace LANCommander.Launcher.Services } } - if (!Queue.Any(i => i.Id == game.Id && i.Status == GameInstallStatus.Idle)) + // If not already queued + if (!Queue.Any(i => i.Id == game.Id && i.Status == GameInstallStatus.Queued)) { var queueItem = new DownloadQueueGame(gameInfo); @@ -114,8 +115,6 @@ namespace LANCommander.Launcher.Services { Logger?.LogTrace("Download queue is empty, starting the game download immediately"); - queueItem.Status = GameInstallStatus.Downloading; - Queue.Add(queueItem); await Install(); @@ -154,11 +153,15 @@ namespace LANCommander.Launcher.Services public async Task Install() { - var currentItem = Queue.FirstOrDefault(i => i.State); + var currentItem = Queue.FirstOrDefault(i => i.Status == GameInstallStatus.Queued); if (currentItem == null) return; + currentItem.Status = GameInstallStatus.Downloading; + + OnQueueChanged?.Invoke(); + Game game = null; SDK.Models.Game gameInfo = null; diff --git a/LANCommander.SDK/Enums/InstallStatus.cs b/LANCommander.SDK/Enums/InstallStatus.cs index ca475820..333ca0dd 100644 --- a/LANCommander.SDK/Enums/InstallStatus.cs +++ b/LANCommander.SDK/Enums/InstallStatus.cs @@ -9,7 +9,7 @@ namespace LANCommander.SDK.Enums { public enum GameInstallStatus { - Idle, + Queued, Downloading, [Display(Name = "Installing Redistributables")] InstallingRedistributables, From fe217703e67b57bd72ccb50e12648d31f5e1aaf7 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Thu, 24 Oct 2024 19:37:47 -0500 Subject: [PATCH 09/12] Fix views that use install status for queued --- LANCommander.Launcher/UI/Components/DownloadQueue.razor | 6 +++--- LANCommander.Launcher/UI/Library/Index.razor | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LANCommander.Launcher/UI/Components/DownloadQueue.razor b/LANCommander.Launcher/UI/Components/DownloadQueue.razor index 6b65ca79..ea01d8b8 100644 --- a/LANCommander.Launcher/UI/Components/DownloadQueue.razor +++ b/LANCommander.Launcher/UI/Components/DownloadQueue.razor @@ -24,7 +24,7 @@ }

Up Next

- @foreach (var queueItem in DownloadService.Queue.Where(qi => !qi.State && qi.Status == SDK.Enums.GameInstallStatus.Idle)) + @foreach (var queueItem in DownloadService.Queue.Where(qi => !qi.State && qi.Status == SDK.Enums.GameInstallStatus.Queued)) {
@@ -39,12 +39,12 @@
} - @if (!DownloadService.Queue.Any(qi => qi.Status == SDK.Enums.GameInstallStatus.Idle)) + @if (!DownloadService.Queue.Any(qi => qi.Status == SDK.Enums.GameInstallStatus.Queued)) { } - @if (DownloadService.Queue.Any(qi => !qi.State && qi.Status != SDK.Enums.GameInstallStatus.Idle && qi.Status != SDK.Enums.GameInstallStatus.Failed && qi.Status != SDK.Enums.GameInstallStatus.Canceled)) + @if (DownloadService.Queue.Any(qi => !qi.State && qi.Status != SDK.Enums.GameInstallStatus.Queued && qi.Status != SDK.Enums.GameInstallStatus.Failed && qi.Status != SDK.Enums.GameInstallStatus.Canceled)) {

Completed

@foreach (var queueItem in DownloadService.Queue.Where(qi => !qi.State)) diff --git a/LANCommander.Launcher/UI/Library/Index.razor b/LANCommander.Launcher/UI/Library/Index.razor index d8114db3..855799c0 100644 --- a/LANCommander.Launcher/UI/Library/Index.razor +++ b/LANCommander.Launcher/UI/Library/Index.razor @@ -238,7 +238,7 @@ SelectedItem.State = LibraryItemState.Installing; break; - case SDK.Enums.GameInstallStatus.Idle: + case SDK.Enums.GameInstallStatus.Queued: SelectedItem.State = LibraryItemState.Queued; break; From ce806973326447282bda7a18abca6b81ebea0592 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Thu, 24 Oct 2024 19:38:31 -0500 Subject: [PATCH 10/12] Throw exception on register if any --- LANCommander.SDK/Client.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/LANCommander.SDK/Client.cs b/LANCommander.SDK/Client.cs index 8e665c5c..8f1068a9 100644 --- a/LANCommander.SDK/Client.cs +++ b/LANCommander.SDK/Client.cs @@ -430,6 +430,13 @@ namespace LANCommander.SDK Password = password })); + if (response.ErrorException != null) + { + Logger?.LogError(response.ErrorException, "Authentication failed for user {UserName}", username); + + throw response.ErrorException; + } + switch (response.StatusCode) { case HttpStatusCode.OK: From 4b79df6c488834467eb095443630497877449e41 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Thu, 24 Oct 2024 19:44:20 -0500 Subject: [PATCH 11/12] Report correct error on registration Fixes #132 --- LANCommander.SDK/Client.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/LANCommander.SDK/Client.cs b/LANCommander.SDK/Client.cs index 8f1068a9..c2a9217c 100644 --- a/LANCommander.SDK/Client.cs +++ b/LANCommander.SDK/Client.cs @@ -106,8 +106,7 @@ namespace LANCommander.SDK BaseUrl = new Uri(baseUrl); ApiClient = new RestClient(new RestClientOptions { - BaseUrl = BaseUrl, - ThrowOnAnyError = true + BaseUrl = BaseUrl }); } } @@ -432,9 +431,16 @@ namespace LANCommander.SDK if (response.ErrorException != null) { - Logger?.LogError(response.ErrorException, "Authentication failed for user {UserName}", username); + Logger?.LogError(response.ErrorException, "Registration failed for user {UserName}", username); - throw response.ErrorException; + if (!String.IsNullOrWhiteSpace(response?.Data?.Message)) + { + Logger?.LogError(response.Data.Message); + + throw new Exception(response.Data.Message); + } + else + throw response.ErrorException; } switch (response.StatusCode) From e01b68b2ed1c4493e9995d3d636ee9f5faf659cb Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Fri, 25 Oct 2024 02:06:16 -0500 Subject: [PATCH 12/12] Fix padding for loading indicator on auth --- LANCommander.Launcher/Styles/_authentication.scss | 5 ++++- LANCommander.Launcher/wwwroot/css/app.css | 4 +++- LANCommander.Launcher/wwwroot/css/app.css.map | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/LANCommander.Launcher/Styles/_authentication.scss b/LANCommander.Launcher/Styles/_authentication.scss index 75697f06..ae798d55 100644 --- a/LANCommander.Launcher/Styles/_authentication.scss +++ b/LANCommander.Launcher/Styles/_authentication.scss @@ -40,9 +40,12 @@ } .login-form-pane { - padding: 24px; background: #000; + .ant-form { + padding: 24px; + } + .ant-form-item:last-child { margin-bottom: 0; } diff --git a/LANCommander.Launcher/wwwroot/css/app.css b/LANCommander.Launcher/wwwroot/css/app.css index e8536230..e852e873 100644 --- a/LANCommander.Launcher/wwwroot/css/app.css +++ b/LANCommander.Launcher/wwwroot/css/app.css @@ -276,9 +276,11 @@ footer { margin-bottom: 0; } .authentication-form .login-form-pane { - padding: 24px; background: #000; } +.authentication-form .login-form-pane .ant-form { + padding: 24px; +} .authentication-form .login-form-pane .ant-form-item:last-child { margin-bottom: 0; } diff --git a/LANCommander.Launcher/wwwroot/css/app.css.map b/LANCommander.Launcher/wwwroot/css/app.css.map index 9932fbab..2498d54c 100644 --- a/LANCommander.Launcher/wwwroot/css/app.css.map +++ b/LANCommander.Launcher/wwwroot/css/app.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../Styles/app.scss","../../Styles/_appbar.scss","../../Styles/_window.scss","../../Styles/_scrollbar.scss","../../Styles/_layout.scss","../../Styles/_footer.scss","../../Styles/_button.scss","../../Styles/_radio.scss","../../Styles/_modal.scss","../../Styles/_collapse.scss","../../Styles/_list.scss","../../Styles/_authentication.scss","../../Styles/_library.scss","../../Styles/_download-queue.scss","../../Styles/_game-actions-dialog.scss"],"names":[],"mappings":"AAAA;EACI;;;AAGJ;EACI;;;ACLJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EAEI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;;ACxCP;EACG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AC1DP;EACG;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;ACzBJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAGA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;AAIR;EACI;IACI;;;ACjDP;EACG;EACA;EACA;EACA;EACA;;;ACLH;AAAA;AAAA;EAGG;;;ACFA;AAAA;EAEI;;AAGJ;AAAA;EAEI;;;AAIR;EACI;;AAEA;AAAA;EAEI;;;ACjBP;AAAA;EAEG;;AAEA;AAAA;EACI;;;ACJJ;EACI;;;ACFR;EACI;EACA;EACA;;;AAIA;EACI;EACA;;AAEA;EAEI;;AAEA;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AC3BX;EACG;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;;AAKZ;EACI;EACA;;AAEA;EACI;;;AC9CZ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAIA;EACI;;AAGJ;EACI;;AAIR;EACI;;AAEA;EACI;EACA;EACA;EACA;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAIR;EACI;;AAIR;EACI;EACA;;;AAKJ;EACI;;AAGJ;EACI;;AAEA;EACI;;;AAKZ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAIA;EACI;;AAEA;EACI;;AAGJ;EACI;;;AAMR;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;ACxNR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;AAAA;AAAA;EAGI;;AAGJ;EACI;;AAGJ;EACI;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAIR;EACI;;AAGJ;EAEI;EACA;;AAGJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAEA;EACI;;AAIR;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;;;ACzGJ;EACI;;AAGJ;EACI","file":"app.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../Styles/app.scss","../../Styles/_appbar.scss","../../Styles/_window.scss","../../Styles/_scrollbar.scss","../../Styles/_layout.scss","../../Styles/_footer.scss","../../Styles/_button.scss","../../Styles/_radio.scss","../../Styles/_modal.scss","../../Styles/_collapse.scss","../../Styles/_list.scss","../../Styles/_authentication.scss","../../Styles/_library.scss","../../Styles/_download-queue.scss","../../Styles/_game-actions-dialog.scss"],"names":[],"mappings":"AAAA;EACI;;;AAGJ;EACI;;;ACLJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EAEI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;;ACxCP;EACG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AC1DP;EACG;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;ACzBJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAGA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;;AAIR;EACI;IACI;;;ACjDP;EACG;EACA;EACA;EACA;EACA;;;ACLH;AAAA;AAAA;EAGG;;;ACFA;AAAA;EAEI;;AAGJ;AAAA;EAEI;;;AAIR;EACI;;AAEA;AAAA;EAEI;;;ACjBP;AAAA;EAEG;;AAEA;AAAA;EACI;;;ACJJ;EACI;;;ACFR;EACI;EACA;EACA;;;AAIA;EACI;EACA;;AAEA;EAEI;;AAEA;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AC3BX;EACG;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;;AAKZ;EACI;;AAEA;EACI;;AAGJ;EACI;;;ACjDZ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAIA;EACI;;AAGJ;EACI;;AAIR;EACI;;AAEA;EACI;EACA;EACA;EACA;;AAKZ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAIR;EACI;;AAIR;EACI;EACA;;;AAKJ;EACI;;AAGJ;EACI;;AAEA;EACI;;;AAKZ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAIA;EACI;;AAEA;EACI;;AAGJ;EACI;;;AAMR;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;ACxNR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;AAAA;AAAA;EAGI;;AAGJ;EACI;;AAGJ;EACI;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAIR;EACI;;AAGJ;EAEI;EACA;;AAGJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAEA;EACI;;AAIR;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;;;ACzGJ;EACI;;AAGJ;EACI","file":"app.css"} \ No newline at end of file